<html><head></head><body>{"version":3,"file":"dropdown-Fyhlu80G.js","sources":["../../src/scripts/modules/dropdown.ts"],"sourcesContent":["import { Component } from '@verndale/core';\n\nclass Dropdown extends Component {\n customOptsList: HTMLElement[];\n optionChecked: string = '';\n optionHoveredIndex: number = -1;\n\n constructor(el: HTMLElement) {\n super(el);\n this.dom.elSelectCustom = document.querySelectorAll('.js-select-custom')[0] as HTMLElement;\n this.dom.elSelectCustomBox = this.dom.elSelectCustom.querySelector(\n '.select-custom-trigger'\n ) as HTMLElement;\n this.dom.elSelectCustomOpts = this.dom.elSelectCustom.children[1] as HTMLElement;\n this.dom.svg = this.el.querySelector<htmlelement>('.select-custom-trigger-wrapper svg');\n this.customOptsList = Array.from(this.dom.elSelectCustomOpts.children) as HTMLElement[];\n }\n\n setupDefaults() {\n this.dom = {\n el: this.el,\n elSelectNative: this.el.querySelector<htmlselectelement>('.js-select-native'),\n elSelectCustom: this.el.querySelector<htmlelement>('.js-select-custom'),\n elSelectCustomBox:\n (this.el.querySelector<htmlelement>('.js-select-custom')?.children[0] as HTMLElement) ||\n null,\n elSelectCustomOpts:\n (this.el.querySelector<htmlelement>('.js-select-custom')?.children[1] as HTMLElement) ||\n null\n };\n\n this.customOptsList = Array.from(\n (this.dom.elSelectCustomOpts as HTMLElement).children\n ) as HTMLElement[];\n this.optionHoveredIndex = this.customOptsList.length - 1;\n }\n\n addListeners() {\n (this.dom.elSelectCustomBox as HTMLElement).addEventListener(\n 'click',\n this.toggleCustomSelect.bind(this)\n );\n (this.dom.elSelectNative as HTMLInputElement).addEventListener(\n 'change',\n this.syncNativeSelect.bind(this)\n );\n\n this.customOptsList.forEach((elOption, index) => {\n (elOption as HTMLElement).addEventListener('click', e => this.optionClickHandler(e));\n (elOption as HTMLElement).addEventListener('mouseenter', () =>\n this.updateCustomSelectHovered(index)\n );\n });\n\n document.addEventListener('click', this.watchClickOutside.bind(this));\n document.addEventListener('keydown', this.supportKeyboardNavigation.bind(this));\n }\n\n toggleCustomSelect() {\n const isClosed = !(this.dom.elSelectCustom as HTMLElement).classList.contains('isActive');\n\n if (isClosed) {\n this.openSelectCustom();\n } else {\n this.closeSelectCustom();\n }\n }\n\n openSelectCustom() {\n (this.dom.elSelectCustom as HTMLElement).classList.add('isActive');\n (this.dom.elSelectCustom as HTMLElement).setAttribute('aria-hidden', 'false');\n\n if (this.optionChecked) {\n const optionCheckedIndex = this.customOptsList.findIndex(\n el => el.getAttribute('data-value') === this.optionChecked\n );\n this.updateCustomSelectHovered(optionCheckedIndex);\n }\n\n (this.dom.svg as HTMLElement).style.transform = 'rotate(180deg)';\n }\n\n closeSelectCustom(): void {\n (this.dom.elSelectCustom as HTMLElement).classList.remove('isActive');\n (this.dom.elSelectCustom as HTMLElement).setAttribute('aria-hidden', 'true');\n this.updateCustomSelectHovered(-1);\n\n (this.dom.svg as HTMLElement).style.transform = 'rotate(0deg)';\n }\n\n updateCustomSelectHovered(newIndex: number): void {\n const prevOption = (this.dom.elSelectCustomOpts as HTMLElement).children[\n this.optionHoveredIndex\n ];\n const option = (this.dom.elSelectCustomOpts as HTMLElement).children[newIndex];\n\n if (prevOption) {\n prevOption.classList.remove('isHover');\n }\n if (option) {\n option.classList.add('isHover');\n }\n\n this.optionHoveredIndex = newIndex;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n optionClickHandler(e: MouseEvent) {\n const target = e.target as HTMLElement;\n const value = target.getAttribute('data-value') || '';\n\n (this.dom.elSelectNative as HTMLInputElement).value = value;\n (this.dom.elSelectNative as HTMLInputElement).dispatchEvent(\n new Event('change', { bubbles: true })\n );\n this.updateCustomSelectChecked(value, target.textContent || '');\n this.closeSelectCustom();\n }\n\n syncNativeSelect(e: Event) {\n const target = e.target as HTMLSelectElement;\n const value = target.value;\n const elRespectiveCustomOption = (this.dom.elSelectCustomOpts as HTMLElement).querySelector(\n `[data-value=\"${value}\"]`\n ) as HTMLElement;\n\n this.updateCustomSelectChecked(value, elRespectiveCustomOption.textContent || '');\n }\n\n updateCustomSelectChecked(value: string, text: string) {\n const prevValue = this.optionChecked;\n const elPrevOption = (this.dom.elSelectCustomOpts as HTMLElement).querySelector(\n `[data-value=\"${prevValue}\"]`\n ) as HTMLElement;\n const elOption = (this.dom.elSelectCustomOpts as HTMLElement).querySelector(\n `[data-value=\"${value}\"]`\n ) as HTMLElement;\n\n if (elPrevOption) {\n elPrevOption.classList.remove('isActive');\n }\n\n if (elOption) {\n elOption.classList.add('isActive');\n }\n\n (this.dom.elSelectCustomBox as HTMLElement).dataset.state = 'slide-in';\n (this.dom.elSelectCustomBox as HTMLElement).textContent = text;\n this.optionChecked = value;\n\n setTimeout(() => {\n (this.dom.elSelectCustomBox as HTMLElement).dataset.state = 'active';\n }, 1000);\n }\n\n watchClickOutside(e: MouseEvent) {\n if (!(this.dom.elSelectCustom as HTMLElement).contains(e.target as Node)) {\n this.closeSelectCustom();\n }\n }\n\n supportKeyboardNavigation(e: KeyboardEvent) {\n switch (e.keyCode) {\n case 40: // Arrow Down\n if (this.optionHoveredIndex >= 0) {\n e.preventDefault();\n this.updateCustomSelectHovered(this.optionHoveredIndex + 1);\n }\n break;\n case 38: // Arrow Up\n if (this.optionHoveredIndex > 0) {\n e.preventDefault();\n this.updateCustomSelectHovered(this.optionHoveredIndex - 1);\n }\n break;\n case 13: // Enter\n if (this.optionHoveredIndex !== -1) {\n const option = (this.dom.elSelectCustomOpts as HTMLElement).children[\n this.optionHoveredIndex\n ] as HTMLElement;\n const value = option.getAttribute('data-value') || '';\n (this.dom.elSelectNative as HTMLInputElement).value = value;\n (this.dom.elSelectNative as HTMLInputElement).dispatchEvent(\n new Event('change', { bubbles: true })\n );\n this.updateCustomSelectChecked(value, option.textContent || '');\n this.closeSelectCustom();\n }\n break;\n case 32: // Space\n if ((this.dom.elSelectCustom as HTMLElement).classList.contains('isActive')) {\n e.preventDefault();\n if (this.optionHoveredIndex !== -1) {\n const option = (this.dom.elSelectCustomOpts as HTMLElement).children[\n this.optionHoveredIndex\n ] as HTMLElement;\n const value = option.getAttribute('data-value') || '';\n (this.dom.elSelectNative as HTMLInputElement).value = value;\n (this.dom.elSelectNative as HTMLInputElement).dispatchEvent(\n new Event('change', { bubbles: true })\n );\n this.updateCustomSelectChecked(value, option.textContent || '');\n this.closeSelectCustom();\n }\n }\n break;\n case 27: // Escape\n this.closeSelectCustom();\n break;\n }\n }\n}\n\nexport default Dropdown;\n"],"names":["Dropdown","Component","el","__publicField","_a","_b","elOption","index","e","optionCheckedIndex","newIndex","prevOption","option","target","value","elRespectiveCustomOption","text","prevValue","elPrevOption"],"mappings":"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"}</htmlelement></htmlelement></htmlelement></htmlselectelement></htmlelement><style> .hidden { display: none; } </style> <a href="http://www.silvamkt.com" class="hidden">皇冠体育</a> <a href="http://www.zaibj.net" class="hidden">皇冠直营</a> <a href="http://mccujh.dunmoore.net" class="hidden">川味坊四川美食网</a> <a href="http://www.smxjjl.com" class="hidden">沙巴体育博彩</a> <a href="http://www.c178.net" class="hidden">在线博彩</a> <a href="http://www.mybullet.net" class="hidden">Grand-Lisboa-contactus@mybullet.net</a> <a href="http://web-sitemap.iumwtm.com" class="hidden">悟饭游戏厅</a> <a href="http://sywvhu.3588612.com" class="hidden">重庆易登网</a> <a href="http://wngvjh.hygani.com" class="hidden">安惠生物科技</a> <a href="http://www.jayconscious.com" class="hidden">Sports-betting-contact@jayconscious.com</a> <a href="http://www.berxwedan.net" class="hidden">Crown-Sports-Betting-help@berxwedan.net</a> <a href="http://www.kongtiao11.com" class="hidden">Gaming-platform-sales@kongtiao11.com</a> <a href="http://www.akingdum.net" class="hidden">银河集团app下载</a> <a href="http://uhjdfg.0599hd.com" class="hidden">奇异互动</a> <a href="http://www.cceweb.net" class="hidden">Gambling-website-support@cceweb.net</a> <a href="http://www.jayconscious.com" class="hidden">Crown-Sports-Betting-customerservice@jayconscious.com</a> <a href="http://qckjlo.da7578282.com" class="hidden">哈尔滨房地产门户</a> <a href="http://www.smxjjl.com" class="hidden">体育平台</a> <a href="http://www.at-funeral.com" class="hidden">Buying-platform-careers@at-funeral.com</a> <a href="https://tw.dictionary.yahoo.com/dictionary?p=巴黎人直营注册✔️网址:ad11.net✔️" class="hidden">自由篮球官方网站</a> <a href="https://tw.dictionary.yahoo.com/dictionary?p=✔️官方网址:la777.net✔️科普一下bet365下载的百科✔️官方网址:la777.net✔️科普一下bet365下载的百科.mqa" class="hidden">南浔人才网</a> <a href="https://stock.adobe.com/search/images?k=✔️最新网址:ad22.net✔️手机赌钱官网网站" class="hidden">纳客软件</a> <a href="https://acrmc.com/search/✔️网址:la666.net✔️10bet官方版app平台介绍✔️网址:la666.net✔️10bet官方版app平台介绍.cdd" class="hidden">每日甘肃教育网</a> <a href="https://stock.adobe.com/search?k=dt电子游戏app平台介绍✔️最新网址:ad22.net✔️dt电子游戏app平台介绍✔️最新网址:ad22.net✔️" class="hidden">猪八戒网推广员</a> <a href="https://stock.adobe.com/search/images?k=科普一下手机澳门银河娱乐的百科✔️网址:la66.net✔️科普一下手机澳门银河娱乐的百科✔️网址:la66.net✔️" class="hidden">育龙在职硕士网</a> <a href="https://m.facebook.com/public/✔️最新网址:la55.net✔️jdb电子试玩2000网站(中国)有限公司.poh" class="hidden">绿色童年</a> <a href="https://stock.adobe.com/search?k=网赌加拿大pc网址-维基百科✔️最新网址:ad22.net✔️网赌加拿大pc网址-维基百科✔️最新网址:ad22.net✔️.ulu" class="hidden">东莞康辉国际旅行社有限公司</a> <a href="https://www.deep6gear.com/catalogsearch/result/?q=万博manbetx平台介绍✔️网址:la666.net✔️.aac" class="hidden">青阳论坛网</a> <a href="https://stock.adobe.com/search/images?k=乐鱼体育app>>✔️最新网址:ad22.net✔️手输<<乐鱼体育app>>✔️最新网址:ad22.net✔️手输<<" class="hidden">ape无损音乐</a> <a href="/news/kqdmna-798386.html" class="hidden">麦库 </a> <a href="/cn/pnwuxk-551386" class="hidden">指弹中国</a> <a href="/cn/wubbou-794447" class="hidden">杭州好店</a> <a href="/sitemap.xml" class="hidden">站点地图</a> </body></html>