1/* 2 veltra-footer.js â VELTRA Drive å ±éã°ãã¼ãã«ããã¿ã¼ï¼å ¨ Drive ã¦ã¼ã¶ã¼åããã¼ã¸å ±éã»ã¬ã¹ãã³ã·ãï¼ 3 ä½¿ãæ¹ï¼home / place / theme / search / detail / legal ãªã©å ¨ãã¼ã¸å ±éï¼: 4 <div data-vw-footer></div> 5 <script src="veltra-footer.js" defer></script> 6 ã»mount: [data-vw-footer] ãããã°ããã¸ãç¡ããã° <body> æ«å°¾ã¸èªå追å ã 7 ã»CSS 㯠.vw-footer åå空é + ãã©ã³ããã¼ã¯ã³ fallback å èµ â åä½ã§ããã¹ãåãè¾¼ã¿ã§ãå´©ããªãã 8 9 æ£å¼çï¼FOOTER-1ã»uxagent ChangeSpec ï¼ mock footer-v1.htmlã»user äºæ¨ æ¿èª 2026-07-08ã»bd uxagent-h9mtï¼: 10 䏿®µï¼ãµã¼ãã¹å°ç· 4 群ï¼é¡§å®¢ã®å©ç¨åªå 度é ï¼: Support / Other Services / Partnerships / Companyã 11 ã¿ãæåï¼æ¬çª base=www.veltra.com/en åæã§ãé¢è±ãã©ãããã§å¤å®: veltra åå ï¼www.veltra.com/*ã» 12 support/feature/corp ãµããã¡ã¤ã³ï¼ã¯åä¸ã¿ããå¥ãµã¼ãã¹ã® Hawaii Activities ã®ã¿å¥ã¿ãï¼blank:trueï¼ã 13 å¤é¨ææ¨ã¢ã¤ã³ã³ï¼âï¼ã¯ä»ããªãï¼åå ãªã³ã¯ã«é¢è±æãåºããªãï¼ã 14 䏿®µï¼èãåºåãç·ã®ä¸ã«æ³å 3 ãªã³ã¯ï¼ä¸å¤®ã»æ·¡ã縦æ£åºåãã»drive å é¨ /legal/{type} åä¸ãµã¤ãé·ç§»ï¼ 15 ï¼ã³ãã¼ã©ã¤ãã© {ç¾å¨å¹´} VELTRA Corporation or its affiliatesãï¼å¹´ã¯èªåæ´æ°ã»ä¸å¤®ï¼ã 16 ã¬ã¹ãã³ã·ã: PC(â¥761)=4 åå ¨å±éï¼chevron ãªãï¼ãã¢ãã¤ã«(â¤760)=æ è¡è ã使ã Support/Other Services 㯠17 常æå±éãæ è¡è ã«ç¡é¢ä¿ãª Partnershipsï¼åºåè åãï¼/Companyï¼ä¼ç¤¾ã»IRï¼ã¯ã¢ã³ã¼ãã£ãªã³ï¼æ¢å®=éã» 18 chevronã»ã¿ããå±éã»ç¾¤ç¬ç«ï¼ï¼åªå é ä½ã®è¡¨æã 19 æ£æ¬ã«ã¼ã« = veltra/design/veltra-brand-core/CHANGES.md §FOOTER-1ã 20*/ 21(function () { 22 'use strict'; 23 24 // ---- 1) CSSï¼.vw-footer åå空éã»ãã¼ã¯ã³ fallback ã¯ãã©ã³ãæ¢å®å¤ï¼---- 25 var css = '' + 26 '.vw-footer{background:var(--footer-bg,#F7F7F7);color:var(--ink,#2D1C21);border-top:1px solid var(--line,#ece5d8);font-family:var(--body,\'Inter\',\'Noto Sans JP\',system-ui,sans-serif);line-height:1.55}' + 27 '.vw-footer *{box-sizing:border-box}' + 28 '.vw-footer .vwf-wrap{max-width:1200px;margin:0 auto;padding:48px 32px 30px}' + 29 // 䏿®µ: ãµã¼ãã¹å°ç· 4 群 30 '.vw-footer .vwf-cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px 48px}' + 31 '.vw-footer .vwf-h{font-family:var(--en,\'Inter\',sans-serif);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--label,#6b625a);margin:0 0 14px;overflow-wrap:anywhere}' + 32 '.vw-footer .vwf-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}' + 33 '.vw-footer .vwf-links a{color:var(--ink,#2D1C21);text-decoration:none;font-size:14px;line-height:1.35;overflow-wrap:anywhere}' + 34 '.vw-footer .vwf-links a:hover{color:var(--blue-deep,#5B86A8);text-decoration:underline;text-underline-offset:2px}' + 35 // 䏿®µ: æ³åï¼å é¨ã»åä¸ãµã¤ãé·ç§»ï¼ï¼ ã³ãã¼ã©ã¤ã 36 '.vw-footer .vwf-bar{margin-top:38px;padding-top:22px;border-top:1px solid var(--line,#ece5d8);text-align:center}' + 37 '.vw-footer .vwf-legal{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:0 4px;margin:0}' + 38 '.vw-footer .vwf-legal a{color:var(--ink,#2D1C21);text-decoration:none;font-size:13px;line-height:1.9;padding:0 10px}' + 39 '.vw-footer .vwf-legal a:hover{color:var(--blue-deep,#5B86A8);text-decoration:underline;text-underline-offset:2px}' + 40 '.vw-footer .vwf-legal .sep{color:var(--line,#ece5d8);font-size:12px;user-select:none}' + 41 '.vw-footer .vwf-copy{margin-top:12px;font-family:var(--en,\'Inter\',sans-serif);font-size:11.5px;color:var(--muted,#8a8077);letter-spacing:.01em}' + 42 // ã¢ãã¤ã«(â¤760): å ¨ç¾¤ã縦ç©ã¿ãSupport/Other Services ã¯å¸¸æå±éãPartnerships/Company(.vwf-collapsible)ã¯ã¢ã³ã¼ãã£ãªã³(æ¢å®=é)ã 43 '@media(max-width:760px){' + 44 '.vw-footer .vwf-wrap{padding:22px 20px 26px}' + 45 '.vw-footer .vwf-cols{grid-template-columns:1fr;gap:0}' + 46 '.vw-footer .vwf-col{border-bottom:1px solid var(--line,#ece5d8);padding:16px 2px}' + 47 '.vw-footer .vwf-col:first-child{padding-top:0}' + 48 '.vw-footer .vwf-col:last-child{border-bottom:none}' + 49 '.vw-footer .vwf-h{margin:0 0 12px}' + 50 '.vw-footer .vwf-links{gap:12px}' + 51 '.vw-footer .vwf-collapsible .vwf-h{display:flex;align-items:center;justify-content:space-between;margin:0;cursor:pointer}' + 52 '.vw-footer .vwf-collapsible .vwf-h::after{content:\'\';width:8px;height:8px;border-right:2px solid var(--muted,#8a8077);border-bottom:2px solid var(--muted,#8a8077);transform:rotate(45deg);transition:transform .18s;margin:-4px 4px 0 8px;flex:none}' +
53 '.vw-footer .vwf-collapsible.open .vwf-h::after{transform:rotate(225deg);margin-top:3px}' + 54 '.vw-footer .vwf-collapsible .vwf-links{display:none;padding-top:14px}' + 55 '.vw-footer .vwf-collapsible.open .vwf-links{display:flex}' + 56 '.vw-footer .vwf-bar{margin-top:22px;padding-top:20px}' + 57 '.vw-footer .vwf-legal a{padding:0 8px;font-size:13px}' + 58 '}'; 59 60 // ---- 2) ãªã³ã¯å®ç¾©ï¼ãããå·®ãæ¿ããã°å ¨ãã¼ã¸ä¸æ¬åæ ï¼å ±éã¢ã¸ã¥ã¼ã«ã®èï¼---- 61 // 䏿®µ 4 群ï¼å©ç¨åªå 度é ï¼ãmcol=ã¢ãã¤ã«ã§ã¢ã³ã¼ãã£ãªã³ç³ã¿å¯¾è±¡ï¼æ è¡è ã«ç´æ¥é¢ä¿ãªã群ï¼ã 62 // blank=å¥ã¿ãï¼å¥ãµã¼ãã¹ã® Hawaii Activities ã®ã¿ã»ä»ã¯ veltra åå ã§åä¸ã¿ãã»âææ¨ãªãï¼ã 63 var COLS = [ 64 { h: 'Support', links: [ 65 { t: 'Help Center', href: 'https://support.veltra.com/en/support/' } 66 ] }, 67 { h: 'Other Services', links: [ 68 // #72-4: æ¥æ¬èªãµã¤ãã¸ã®å°ç·ã¯å ¬éã« ja ãããéã ãåºãï¼en åç¬å ¬éã®éã¯é表示ã»è¤æ°å ¬éã§èªå復活ï¼ã 69 { t: 'VELTRA (Japanese Site)', href: 'https://www.veltra.com/jp/', needsLocale: 'ja' }, 70 // è¡ãå 㯠www.veltra.com å´ã®å ¥å£ï¼core ãä¸ç¶ï¼ããã¡ã¤ã³ãã¾ããããªãã®ã¯ãTAï¼ãã©ãã«ã¨ã¼ã¸ã§ã³ãï¼ã 71 // ãã°ã¤ã³ä¸ã«è¸ãã¨ã»ãã·ã§ã³ãåãã¦ææ°æã®ç´ä»ããè½ã¡ããããä¸è¬ã®ã客æ§ã¯ core å´ã® 301 ã§ 72 // 徿¥ã©ãã hawaiiactivities.com ã¸çãï¼ï¼å°éå ã¯å¤ãããªãï¼ã 73 { t: 'Hawaii Activities', href: 'https://www.veltra.com/en/hawaii/', blank: true } 74 ] }, 75 { h: 'Partnerships', mcol: true, links: [ 76 { t: 'Supplier Sign-in', href: 'https://www.veltra.com/ptr/' }, 77 { t: 'Add Your Activity', href: 'https://feature.veltra.com/en/partner/' } 78 ] }, 79 { h: 'Company', mcol: true, links: [ 80 { t: 'About Us', href: 'https://corp.veltra.com/en' }, 81 { t: 'Investor Relations', href: 'https://corp.veltra.com/en/ir.html' } 82 ] } 83 ]; 84 // 䏿®µ æ³å 3 ãªã³ã¯ï¼drive å é¨ã»åä¸ãµã¤ãé·ç§»ï¼ãtype=commons æ³å API ã®ãã¼ï¼/{locale}/legal/{type} ã«ã¼ãã¨ä¸è´ï¼ã 85 // ã©ãã«ã¯ commons ã®æ£åãURL 㯠locale prefixï¼ãµã¤ãã® /{locale}/ æ£æºã»å¤è¨èª readyï¼ï¼ç¾ãã¼ã¸ã® locale ã path å é ããå°åºã 86 var LEGAL = [ 87 { t: 'Conditions of Use', type: 'terms-of-service' }, 88 { t: 'Privacy Notice', type: 'privacy' }, 89 { t: 'Cookie Policy', type: 'cookie-policy' } 90 ]; 91 // ç¾ãã¼ã¸ã® localeï¼path å é 2 æåã»ä¾ /en/... â 'en'ï¼ãfooter 㯠/{locale}/... ã®ãã¼ã¸ã«ã®ã¿åºãã®ã§å é ï¼localeãæ¢å® enã 92 // â 2 æåããè¦ã¦ããã /zh-tw /zh-cn ã§å¿ ã 'en' ã«è½ã¡ã¦ããï¼äºæ¨æ§ 2026-07-28ãç§»åãã度ã«è±èªã«æ»ããã® 93 // çå ã® 1 ã¤ï¼ããã¿ã¼ã®æ³åãªã³ã¯ãè±èªé¢ã¸é£ãã§ããï¼ããããã¼å´ã¨åãè¦åã«æããã 94 function pageLocale(){ var m=(location.pathname||'').match(/^\/([a-z]{2}(?:-[a-z]+)?)(?:\/|$)/); return m ? m[1] : 'en'; } 95 // #72-4: ä¸è¬å ¬éãã¦ãã localeï¼å ¬éé¢å¥ç´ DRIVE_PUBLISHED_LOCALESï¼ã <html data-vw-langs> ããèªãï¼header ã¨åè¦ç´ï¼ã 96 // 屿§ä¸å¨æã¯ ['en']ï¼å®å ¨å´ï¼è¨èªãªã³ã¯é表示ï¼ãå䏿ºï¼SSR ã <html data-vw-langs> ã«ç¼ã DRIVE_PUBLISHED_LOCALESã 97 function pubLocales(){ 98 var raw = (document.documentElement.getAttribute('data-vw-langs') || 'en'); 99 var a = raw.split(',').map(function(s){ return s.trim(); }).filter(Boolean); 100 return a.length ? a : ['en']; 101 } 102 // client JS gettextï¼è±èªã½ã¼ã¹âjaï¼ãè¾æ¸å¤ï¼Hawaii Activities çã®ãµã¼ãã¹/ãã©ã³ãåã»æ³äººåï¼ã¯è±èªæ®ç½®ï¼en 㯠byte ä¸å¤ã 103 // â 2026-07-28: æ¥æ¬èªããç¡ããç¹ä½å/ç°¡ä½å/éå½èªã®ããã¿ã¼ã¯è±èªã®ã¾ã¾åºã¦ããã 104 // ããã¿ã¼ã¯ç»é¢ä¸ã§çµã¿ç«ã¦ãã®ã§ãé ä¿¡ããã HTML ãè¦ãæ¤æ»ã§ã¯**è¦ãã
104ªã**ï¼å®æ¸¬ã®æ»è§ã ã£ãï¼ã 105 // â æ³åææ¸ã®ã©ãã«ï¼å©ç¨è¦ç´ã»ãã©ã¤ãã·ã¼ã»Cookieï¼ã¯ **ããã«æ¸ããªã**ãæ£æ¬ã¯ commons ã§ã 106 // ãµã¼ãã <html data-vw-legal> ã«è¼ãããã®ãèªãï¼è¨³ã2ãæã«æã¤ã¨å¿ ãçæ¹ãè ãããï¼ã 107 // ja ã® 3 è¡ã ã㯠commons æªä¾çµ¦æã®ç¸®éç¨ã¨ãã¦å¾æ¥ããæ®ã£ã¦ããã 108 var I18N = { 109 ja: { 110 'Support': 'ãµãã¼ã', 'Help Center': 'ãã«ãã»ã³ã¿ã¼', 111 'Other Services': 'ãã®ä»ã®ãµã¼ãã¹', 'VELTRA (Japanese Site)': 'VELTRAï¼æ¥æ¬èªãµã¤ãï¼', 112 'Partnerships': 'ãã¼ããã¼', 'Supplier Sign-in': 'ãµãã©ã¤ã¤ã¼ãã°ã¤ã³', 'Add Your Activity': 'ã¢ã¯ãã£ããã£ãæ²è¼', 113 'Company': 'ä¼ç¤¾æ å ±', 'About Us': 'ä¼ç¤¾æ¦è¦', 'Investor Relations': 'æè³å®¶æ å ±', 114 'Conditions of Use': 'å©ç¨è¦ç´', 'Privacy Notice': 'ãã©ã¤ãã·ã¼ããªã·ã¼', 'Cookie Policy': 'Cookieããªã·ã¼', 115 'VELTRA Corporation or its affiliates': 'VELTRA Corporation ããã³ãã®é¢é£ä¼ç¤¾', 116 'Legal': 'æ³å' 117 }, 118 'zh-tw': { 119 'Support': 'å®¢æ¶æå', 'Help Center': '幫å©ä¸å¿', 120 'Other Services': 'å ¶ä»æå', 'VELTRA (Japanese Site)': 'VELTRAï¼æ¥æç¶²ç«ï¼', 121 'Partnerships': 'åä½å¤¥ä¼´', 'Supplier Sign-in': '便åç»å ¥', 'Add Your Activity': 'åç»æ¨çé«é©', 122 'Company': 'å ¬å¸è³è¨', 'About Us': 'éæ¼æå', 'Investor Relations': 'æè³äººéä¿',
123 'VELTRA Corporation or its affiliates': 'VELTRA Corporation æå ¶éè¯å ¬å¸', 124 'Legal': 'æ³å¾è³è¨' 125 }, 126 'zh-cn': { 127 'Support': 'å®¢æ·æå¡', 'Help Center': '帮å©ä¸å¿', 128 'Other Services': 'å ¶ä»æå¡', 'VELTRA (Japanese Site)': 'VELTRAï¼æ¥æç½ç«ï¼', 129 'Partnerships': 'åä½ä¼ä¼´', 'Supplier Sign-in': 'ä¾åºåç»å½', 'Add Your Activity': 'åç»æ¨çä½éª', 130 'Company': 'å ¬å¸ä¿¡æ¯', 'About Us': 'å ³äºæä»¬', 'Investor Relations': 'æèµè å ³ç³»', 131 'VELTRA Corporation or its affiliates': 'VELTRA Corporation æå ¶å ³èå ¬å¸', 132 'Legal': 'æ³å¾ä¿¡æ¯' 133 }, 134 ko: { 135 'Support': 'ê³ ê° ì§ì', 'Help Center': 'í¬í ì¼í°', 136 'Other Services': '기í ìë¹ì¤', 'VELTRA (Japanese Site)': 'VELTRA (ì¼ë³¸ì´ ì¬ì´í¸)', 137 'Partnerships': 'íí¸ë', 'Supplier Sign-in': 'ê³µê¸ì ì²´ ë¡ê·¸ì¸', 'Add Your Activity': 'ì²´í ë±ë¡í기', 138 'Company': 'íì¬ ì ë³´', 'About Us': 'íì¬ ìê°', 'Investor Relations': 'í¬ìì ì ë³´',
139 'VELTRA Corporation or its affiliates': 'VELTRA Corporation ëë ê·¸ ê³ì´ì¬', 140 'Legal': 'ë²ì ê³ ì§' 141 } 142 }; 143; 144 function tr(s){ var d = I18N[pageLocale()]; return (d && d[s]) || s; } 145 146 // ---- 3) markup çæ ---- 147 function esc(s){ return String(s).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"'); } 148 function colHTML(c){ 149 var pub = pubLocales(); 150 var items = c.links.map(function(l){ 151 var tab = l.blank ? ' target="_blank" rel="noopener"' : ''; 152 // #72-4: è¨èªãªã³ã¯(needsLocale)ã¯ãåé¤ãããããã® locale ãéå ¬éã®éã ã <li> ã display:none ã§é ã 153 // ï¼æ§é 温åã»å¤è¨èªåé㯠display ãæ»ãã ãï¼ãå ¬éãããã°èªåã§è¡¨ç¤ºã«æ»ãã 154 var hidden = l.needsLocale && pub.indexOf(l.needsLocale) < 0; 155 return '<li' + (hidden ? ' style="display:none"' : '') + '><a href="' + esc(l.href) + '"' + tab + '>' + esc(tr(l.t)) + '</a></li>'; 156 }).join(''); 157 return '<div class="vwf-col' + (c.mcol ? ' vwf-collapsible' : '') + '"><h3 class="vwf-h">' + esc(tr(c.h)) + '</h3><ul class="vwf-links">' + items + '</ul></div>'; 158 } 159 // æ³åãªã³ã¯ã®ã©ãã«ã¯ **commons ã®æ£å**ï¼è¨³ã®æ£æ¬ã¯ commonsã»ããã«è¨³ãæ¸ãåããªãï¼äºé管çã«ããªãï¼ã 160 // ãµã¼ããç¾ãã¼ã¸ã® locale ã§å¼ãã {type: title} ã <html data-vw-legal='{"â¦"}'> ã«è¼ãã¦ãããï¼å ¨ãã¼ã¸ 1 ç®æï¼ã 161 // â æ°ããéä¿¡ã¯è¶³ããªãï¼ããã¿ã¼ã¯ JS å¾è¿½ãæç»ãªã®ã§ãããã§ fetch ããã¨ãã¡ã¼ã¹ããã¥ã¼ãæºããï¼ã 162 // ä¾çµ¦ãç¡ãæã¯å¾æ¥ã©ããå èµã©ãã«ï¼è±èª / æ¥æ¬èªï¼ã¸ç¸®éï¼å£ããªãã 163 function legalLabels(){ 164 try { 165 var raw = document.documentElement.getAttribute('data-vw-legal'); 166 return raw ? JSON.parse(raw) : null; 167 } catch (e) { return null; } 168 } 169 function legalHTML(){ 170 var loc = pageLocale(); 171 var supplied = legalLabels(); 172 var parts = []; 173 for (var i = 0; i < LEGAL.length; i++) { 174 if (i) parts.push('<span class="sep" aria-hidden="true">|</span>'); 175 var label = (supplied && supplied[LEGAL[i].type]) || tr(LEGAL[i].t); 176 parts.push('<a href="/' + loc + '/legal/' + esc(LEGAL[i].type) + '">' + esc(label) + '</a>'); 177 } 178 return '<nav class="vwf-legal" aria-label="' + esc(tr('Legal')) + '">' + parts.join('') + '</nav>'; 179 } 180 function footerHTML(){ 181 var year = new Date().getFullYear(); // å¹´ã¯èªåæ´æ° 182 return '<footer class="vw-footer"><div class="vwf-wrap">' + 183 '<div class="vwf-cols">' + COLS.map(colHTML).join('') + '</div>' + 184 '<div class="vwf-bar">' + legalHTML() + 185 '<div class="vwf-copy">© ' + year + ' ' + esc(tr('VELTRA Corporation or its affiliates')) + '</div>' + // yyzyn-c: ©è¡ãè¾æ¸çµç±ï¼æ³äººå VELTRA Corporation ã¯åºæåï¼ç¿»è¨³ããªãï¼ 186 '</div>' + 187 '</div></footer>'; 188 } 189 190 // ---- 4) mount ---- 191 function mount(){ 192 if (!document.getElementById('vw-footer-style')) { 193 var st = document.createElement('style'); 194 st.id = 'vw-footer-style'; 195 st.textContent = css; 196 document.head.appendChild(st); 197 } 198 var slot = document.querySelector('[data-vw-footer]'); 199 var wrap = document.createElement('div'); 200 wrap.innerHTML = footerHTML(); 201 var node = wrap.firstChild; 202 if (slot) { slot.replaceWith(node); } else { document.body.appendChild(node); } 203 204 // ã¢ãã¤ã«(â¤760)ã®ã¿: Partnerships/Company(.vwf-collapsible)ãã¢ã³ã¼ãã£ãªã³ééï¼ç¾¤ç¬ç«ã»æ¢å®=éï¼ã 205 // Support/Other Services ã¯å¸¸æå±éãPC ã¯å ¨ç¾¤ 4 åå±éã»chevron ãªããa11y=role=button + aria-expanded é£åã 206 var mq = window.matchMedia('(max-width:760px)'); 207 node.querySelectorAll('.vwf-col.vwf-collapsible').forEach(function(col){ 208 var h = col.querySelector('.vwf-h'); 209 h.setAttribute('role', 'button'); 210 h.setAttribute('aria-expanded', 'false'); 211 h.addEventListener('click', function(){ 212 if (!mq.matches) return; 213 var open = col.classList.toggle('open'); 214 h.setAttribute('aria-expanded', open ? 'true' : 'false'); 215 }); 216 }); 217 // ãã¹ã¯ãããã¸åºãããç³ã¿ç¶æ ããªã»ããï¼ä¸éå端㪠open ãæ®ããªãï¼ 218 mq.addEventListener('change', function(e){ 219 if (!e.matches) node.querySelectorAll('.vwf-col.vwf-collapsible.o
219pen').forEach(function(c){ 220 c.classList.remove('open'); 221 c.querySelector('.vwf-h').setAttribute('aria-expanded', 'false'); 222 }); 223 }); 224 } 225 226 if (document.readyState === 'loading') { 227 document.addEventListener('DOMContentLoaded', mount); 228 } else { 229 mount(); 230 } 231})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.