@nanoporetech-digital/components 7.9.0 → 7.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-checkbox.cjs.entry.js +8 -4
- package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js +7 -6
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +9 -9
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.js +8 -4
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/datalist/datalist.js +9 -6
- package/dist/collection/components/datalist/datalist.js.map +1 -1
- package/dist/collection/components/select/select.js +9 -9
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/components/datalist.js +8 -6
- package/dist/components/datalist.js.map +1 -1
- package/dist/components/nano-checkbox.js +8 -4
- package/dist/components/nano-checkbox.js.map +1 -1
- package/dist/components/select.js +9 -9
- package/dist/components/select.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nano-checkbox.entry.js +8 -4
- package/dist/esm/nano-checkbox.entry.js.map +1 -1
- package/dist/esm/nano-components.js +1 -1
- package/dist/esm/nano-datalist_3.entry.js +7 -6
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +9 -9
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/nano-components/nano-checkbox.entry.js +1 -1
- package/dist/nano-components/nano-checkbox.entry.js.map +1 -1
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +1 -1
- package/dist/nano-components/nano-datalist_3.entry.js +1 -1
- package/dist/nano-components/nano-datalist_3.entry.js.map +1 -1
- package/dist/nano-components/nano-global-nav-user-profile_3.entry.js +1 -1
- package/dist/nano-components/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/docs-json.json +1 -1
- package/hydrate/index.js +24 -19
- package/hydrate/index.mjs +24 -19
- package/package.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["datalistCss","NanoDatalistStyle0","findLabel","formCtrl","foundLabel","id","document","querySelector","closest","listIds","DataList","isNanoInput","typeToSelect","typeToSelectTimeout","nanoDropdown","listBox","mo","listId","isFiltered","shouldFocus","allOptEles","this","_allOptEles","opts","connectedInput","value","forEach","opt","selected","includes","changeInputValue","actvOptEles","inputLabel","hasNoResult","shouldOpen","canOpen","optionIds","constructor","hostRef","inputChange","debounce","bind","dropDownConfig","_dropDownConfig","ddc","skidding","options","input","type","activeOptions","open","openWatcher","writeTask","setAttribute","toString","disableFilter","disabled","watchInputChange","nanoInput","host","transformTag","getInputElement","handleOptionsChange","getDirectChildren","el","length","MutationObserver","processSlottedContent","observe","childList","subtree","disconnect","undefined","previousOptions","querySelectorAll","internalOpt","remove","flatMap","option","i","label","Object","assign","createElement","ariaPosinset","ariaSetsize","textContent","slot","append","watchTypeChange","dwConfig","closeOnSelect","autocompleteType","readonly","placement","tetherTo","readOnly","manageInputEvents","newInput","oldInput","removeEventListener","removeEventListeners","removeAttribute","addEventListener","inputClick","inputKeydown","labels","item","watchActvOptChange","c","val","optIds","hidden","isSelected","push","manageCanOpen","manageDropdownDisplay","fireActiveOptsEvent","nanoOptionsUpdated","emit","nanoSelect","nanoDeselect","dropwdownOpen","exactMatch","find","nanoSelected","filter","defaultPrevented","event","window","Event","dispatchEvent","optSelected","e","stopPropagation","detail","requestAnimationFrame","setOptStartsWith","attrFind","toFind","toLowerCase","substring","foundEle","trim","filterMeta","Array","from","handleShow","async","setFocus","showActiveElement","handleHide","activeElement","getActiveElement","tagName","select","valStr","activeEles","indexOf","ignoreKeys","key","test","clearTimeout","setTimeout","preventDefault","optionKeyDown","focus","deleteKeys","connectedCallback","componentDidLoad","componentDidRender","console","warn","disconnectedCallback","render","h","Host","class","role","join","ref","dialogTitle","dlist__dropdown","onNanoAfterShow","onNanoAfterHide","dlist__menu","tabIndex","onNanoSelect","onKeyDown","name","menuCss","NanoMenuStyle0","Menu","ignoreMouseEvents","ignoreMouseTimeout","menu","hasFocus","_hasFocus","nanoFocus","nanoBlur","preventScroll","removeFocus","blur","selectedItem","scrollIntoView","block","resetActiveItem","getItems","map","items","opened","ctx","activeItem","getAttribute","classList","contains","setActiveFocusItem","handleBlur","kev","found","composedPath","handleFocus","handleClick","target","handleKeyDown","click","index","shadowRoot","getTextContent","handleMouseOver","onClick","onMouseOver","onFocus","part","optionCss","NanoOptionStyle0","Option","optId","valueChanged","labelContent","labelChanged","componentWillLoad","onMouseDown"],"sources":["src/components/datalist/datalist.scss?tag=nano-datalist&encapsulation=shadow","src/components/datalist/datalist.tsx","src/components/menu/menu.scss?tag=nano-menu&encapsulation=shadow","src/components/menu/menu.tsx","src/components/option/option.scss?tag=nano-option&encapsulation=shadow","src/components/option/option.tsx"],"sourcesContent":["@use 'sass:map';\n@use '../../global/style/utilities/mixins' as mx;\n@use '../../global/style/nano-theme/tokens';\n\n:host {\n /**\n * @prop --padding-top: for all nested `nano-option` elements. Defaults to #{tokens.$spacing-small};\n * @prop --padding-bottom: for all nested `nano-option` elements. Defaults to #{tokens.$spacing-small};\n * @prop --padding-start: for all nested `nano-option` elements. Defaults to #{tokens.$spacing-xlarge};\n * @prop --padding-end: for all nested `nano-option` elements. Defaults to #{tokens.$spacing-xlarge};\n * @prop --font-size: for all nested `nano-option` elements. Defaults to .8em;\n * @prop --color: default text color of content other than `nano-option`. Defaults to #{map.get(tokens.$colors, palegrey)};\n */\n\n --padding-top: #{tokens.$spacing-small};\n --padding-bottom: #{tokens.$spacing-small};\n --padding-start: #{tokens.$spacing-xlarge};\n --padding-end: #{tokens.$spacing-xlarge};\n --font-size: 0.8em;\n --color: #{map.get(tokens.$colors, palegrey)};\n\n color: var(--color);\n}\n\n.dlist {\n &--isfiltered {\n ::slotted(*:not(.nano-option):not([slot='no-result']):not([slot='list-top']):not([slot='list-bottom'])) {\n display: none !important;\n }\n }\n\n &__dropdown {\n --min-width: 100%;\n --overflow: auto;\n }\n\n &__status {\n @include mx.visually-hide();\n }\n\n &__menu {\n --padding-top: inherit;\n --padding-bottom: inherit;\n --padding-start: inherit;\n --padding-end: inherit;\n --font-size: inherit;\n }\n}\n","import {\n Component,\n ComponentInterface,\n Host,\n Element,\n State,\n Watch,\n Prop,\n Event,\n writeTask,\n Build,\n EventEmitter,\n} from '@stencil/core';\nimport { h, transformTag } from '../../utils/renderer';\nimport { getActiveElement } from '../../utils/active-element';\nimport { debounce } from '../../utils/throttle';\nimport { getDirectChildren } from '../../utils/dom';\nimport type { NanoMenuCustomEvent } from '../../components';\nimport type { Dropdown } from '../dropdown/dropdown';\nimport type { OptionInterface } from '../option/option-interface';\n\nfunction findLabel(formCtrl: Element) {\n let foundLabel: HTMLLabelElement;\n\n if (formCtrl.id) {\n foundLabel = document.querySelector(`label[for='${formCtrl.id}']`);\n }\n if (!foundLabel) {\n foundLabel = formCtrl.closest('label');\n }\n return foundLabel;\n}\n\nlet listIds = 0;\n\n/**\n * `nano-datalist` a visually consistent and more flexible replacement for a native\n * [datalist](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist). Can be nested within a `nano-input`\n * or linked to any input control via the `input` prop. Is used internally within `nano-select`.\n * Options can be defined declaratively by nesting `<nano-option>` elements or imperatively using the `options` prop\n *\n * @slot - use `<nano-option>` elements for more complex html. Alternatively use the `options` prop\n * @slot list-top - shows at the top of the list when there are options present\n * @slot list-bottom - shows at the bottom of the list when there are options present\n * @slot no-result - shown when there are no results otherwise nothing will be shown\n */\n@Component({\n tag: 'nano-datalist',\n styleUrl: 'datalist.scss',\n shadow: true,\n})\nexport class DataList implements ComponentInterface {\n // Private State\n\n private isNanoInput = false;\n private typeToSelect = '';\n private typeToSelectTimeout: number;\n private nanoDropdown: HTMLNanoDropdownElement;\n private listBox: HTMLNanoMenuElement;\n private mo?: MutationObserver;\n private listId = `nano-datalist-${listIds++}`;\n private isFiltered = false;\n private shouldFocus = false;\n // all potential option eles. Set via slot or `options` prop.\n // Some may get hidden due to filtering\n private get allOptEles() {\n return this._allOptEles;\n }\n private set allOptEles(opts) {\n // when allOptEles are initially set (on slot change / options) -\n // add options to 'selected' and fire selected event *if*\n // value isn't set on the input\n this._allOptEles = opts;\n if (this.connectedInput?.value) return;\n\n opts.forEach((opt) => {\n if (opt.selected && !this.selected.includes(opt.value)) {\n this.changeInputValue(opt);\n }\n });\n }\n private _allOptEles: HTMLNanoOptionElement[] = [];\n\n @Element() host: HTMLNanoDatalistElement;\n\n // active option eles that are not hidden.\n @State() actvOptEles: HTMLNanoOptionElement[] = [];\n @State() connectedInput: HTMLInputElement | HTMLTextAreaElement;\n @State() inputLabel: HTMLLabelElement;\n @State() hasNoResult: boolean;\n @State() shouldOpen: boolean;\n @State() canOpen: boolean = true;\n @State() optionIds: string[] = [];\n\n constructor() {\n this.inputChange = debounce(this.inputChange.bind(this), 50);\n }\n\n // Public API\n\n /** By default, items in the list will appear 'selected' when the value in the linked input control matches.\n * However you can add other selected options via the the selected prop. */\n @Prop({ mutable: true }) selected: string[] = [];\n\n /** nano-dropdown config options you can pass to the nested dropdown component */\n @Prop()\n get dropDownConfig() {\n return this._dropDownConfig;\n }\n set dropDownConfig(ddc: Partial<Dropdown>) {\n this._dropDownConfig = { ...this._dropDownConfig, ...ddc };\n }\n private _dropDownConfig: Partial<Dropdown> = {\n skidding: -1,\n };\n\n /** Provide an option list.\n * Options can be defined declaratively by nesting `<nano-option>` elements or imperatively using this prop */\n @Prop() options?: OptionInterface[] = [];\n\n /** A selector to a HTMLInputElement */\n @Prop() input?: string | HTMLInputElement;\n\n /** Tweaks the datalist behaviour and linked control semantics and behaviour.\n * e.g. 'select' will make the linked input control `readonly`.\n */\n @Prop() type: 'select' | 'selctMulti' | 'input' = 'input';\n\n /** return all the active options currently within the datalist. Can be useful for validation */\n @Prop()\n get activeOptions() {\n return this.allOptEles;\n }\n\n /** Force datalist open */\n @Prop({ mutable: true }) open: boolean = false;\n\n @Watch('open')\n openWatcher() {\n writeTask(() => {\n this.nanoDropdown.open = this.open;\n if (this.connectedInput)\n this.connectedInput.setAttribute('aria-expanded', this.open.toString());\n });\n }\n\n /** Use this option to disable to default filtering. This is useful if filtering happens\n * externally via another method (e.g. via ajax)\n */\n @Prop() disableFilter = false;\n\n /** Activate / deactivate the datalist control */\n @Prop() disabled = false;\n\n // State change watchers\n\n @Watch('input')\n async watchInputChange() {\n let nanoInput;\n if ((nanoInput = this.host.closest(transformTag('nano-input')))) {\n this.isNanoInput = true;\n this.connectedInput = await nanoInput.getInputElement();\n } else if (\n this.input &&\n typeof this.input === 'string' &&\n (nanoInput = document.querySelector(this.input))\n ) {\n this.isNanoInput = false;\n this.connectedInput = nanoInput;\n } else if (typeof this.input === 'object') {\n this.connectedInput = this.input;\n }\n }\n\n @Watch('options')\n handleOptionsChange() {\n if (!this.host) return;\n\n getDirectChildren(\n this.host,\n ':not(nano-nav-item):not(nano-option):not([role])',\n true\n ).forEach((el) => el.setAttribute('role', 'none'));\n\n // we're not using `options` - setup new MO\n if ((!this.options || !this.options.length) && !this.mo) {\n if (Build.isBrowser) {\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.host, { childList: true, subtree: true });\n }\n this.processSlottedContent();\n return;\n }\n\n // we're using `options` - trash current MO\n if (this.options?.length) {\n if (this.mo) {\n this.mo.disconnect();\n this.mo = undefined;\n }\n\n const previousOptions = this.host.querySelectorAll(\n transformTag('nano-option')\n );\n\n // add imperative `options`\n writeTask(() => {\n // clear all previous\n if (previousOptions?.length)\n previousOptions.forEach((internalOpt) => internalOpt.remove());\n\n this.allOptEles = this.options.flatMap((option, i) => {\n if (option.value || option.label) {\n const opt = Object.assign(\n document.createElement(\n transformTag('nano-option')\n ) as HTMLNanoOptionElement,\n {\n label: option.label,\n value: option.value,\n ariaPosinset: i,\n ariaSetsize: this.options.length,\n selected: option.selected,\n id: this.listId + '-option-' + i,\n textContent: option.label ? option.label : option.value,\n slot: 'internal-opts',\n }\n );\n this.host.append(opt);\n return opt;\n }\n });\n\n if (this.connectedInput?.value.length && this.type !== 'select') {\n this.inputChange();\n } else {\n this.actvOptEles = [...this.allOptEles];\n }\n });\n }\n // forceUpdate(this.host);\n }\n\n @Watch('type')\n @Watch('connectedInput')\n watchTypeChange() {\n if (!this.connectedInput) return;\n\n let dwConfig: Partial<Dropdown> = { closeOnSelect: false };\n let autocompleteType: 'list' | 'both' = 'both';\n let readonly = false;\n\n switch (this.type) {\n case 'input':\n dwConfig = { closeOnSelect: true };\n break;\n case 'select':\n autocompleteType = 'list';\n readonly = true;\n dwConfig = { closeOnSelect: true, placement: 'center' };\n break;\n }\n\n if (!this.isNanoInput) {\n dwConfig.tetherTo = this.connectedInput;\n }\n\n this.dropDownConfig = { ...this.dropDownConfig, ...dwConfig };\n this.connectedInput.setAttribute('aria-autocomplete', autocompleteType);\n this.connectedInput.readOnly = readonly;\n }\n\n @Watch('connectedInput')\n manageInputEvents(newInput?: HTMLInputElement, oldInput?: HTMLInputElement) {\n if (oldInput) {\n const nanoInput = oldInput.closest(transformTag('nano-input'));\n if (nanoInput) {\n nanoInput.removeEventListener('nanoChange', this.inputChange);\n }\n this.removeEventListeners(oldInput);\n\n this.inputLabel = null;\n\n writeTask(() => {\n oldInput.removeAttribute('role');\n oldInput.removeAttribute('aria-expanded');\n oldInput.removeAttribute('aria-controls');\n oldInput.removeAttribute('aria-owns');\n oldInput.removeAttribute('aria-haspopup');\n oldInput.removeAttribute('aria-autocomplete');\n oldInput.removeAttribute('autocomplete');\n });\n }\n if (newInput) {\n const nanoInput = newInput.closest(transformTag('nano-input'));\n if (nanoInput) {\n nanoInput.addEventListener('nanoChange', this.inputChange);\n }\n newInput.addEventListener('change', this.inputChange);\n newInput.addEventListener('click', this.inputClick);\n newInput.addEventListener('keydown', this.inputKeydown);\n newInput.addEventListener('input', this.inputChange);\n this.listId = this.host.id || this.listId;\n\n this.inputLabel = newInput?.labels?.item(0) || findLabel(newInput);\n\n writeTask(() => {\n this.host.id = this.listId;\n newInput.setAttribute('role', 'combobox');\n newInput.setAttribute('aria-expanded', 'false');\n newInput.setAttribute('aria-controls', this.listId);\n newInput.setAttribute('aria-owns', this.listId);\n newInput.setAttribute('aria-haspopup', 'listbox');\n newInput.setAttribute('autocomplete', 'off');\n });\n }\n }\n\n @Watch('selected')\n @Watch('actvOptEles')\n watchActvOptChange() {\n let c = 0;\n const val = this.connectedInput?.value || '';\n const optIds = [];\n\n writeTask(() => {\n this.allOptEles.forEach((opt, i) => {\n if (this.actvOptEles.includes(opt)) {\n c++;\n opt.setAttribute('aria-posinset', c + '');\n opt.setAttribute('aria-setsize', this.actvOptEles.length + '');\n opt.hidden = false;\n this.isSelected(opt, val);\n } else {\n opt.removeAttribute('aria-posinset');\n opt.removeAttribute('aria-setsize');\n opt.hidden = true;\n opt.selected = false;\n }\n opt.id = this.listId + '-option-' + i;\n optIds.push(opt.id);\n });\n this.optionIds = optIds;\n });\n }\n\n @Watch('actvOptEles')\n @Watch('hasNoResult')\n manageCanOpen() {\n if (this.actvOptEles.length || this.hasNoResult) this.canOpen = true;\n else this.canOpen = false;\n }\n\n /**\n * Opens the dropdown if it can, it should and there are items to display.\n */\n @Watch('shouldOpen')\n @Watch('canOpen')\n manageDropdownDisplay() {\n if (this.shouldOpen && this.canOpen && !this.disabled) this.open = true;\n if (!this.shouldOpen || !this.canOpen) this.open = false;\n this.openWatcher();\n }\n\n @Watch('actvOptEles')\n fireActiveOptsEvent() {\n this.nanoOptionsUpdated.emit(this.actvOptEles);\n }\n\n // Events\n\n /** Fired when an item is selected. */\n @Event() nanoSelect: EventEmitter<HTMLNanoOptionElement>;\n\n /** Fired when a currently selected item is reselected. */\n @Event() nanoDeselect: EventEmitter<HTMLNanoOptionElement>;\n\n /** Fired when active options change */\n @Event() nanoOptionsUpdated: EventEmitter<HTMLNanoOptionElement[]>;\n\n // Private logic\n\n private isSelected(opt: HTMLNanoOptionElement, val: string) {\n if (val === opt.value || this.selected.includes(opt.value)) {\n opt.selected = true;\n } else opt.selected = false;\n }\n\n private get dropwdownOpen() {\n if (!this.nanoDropdown || !this.open) return false;\n return true;\n }\n\n private get exactMatch() {\n return this.allOptEles.find(\n (opt) => this.connectedInput.value === opt.value\n );\n }\n\n /** reflect value back to the connected input unless the event is cancelled */\n private changeInputValue(opt: HTMLNanoOptionElement) {\n let nanoSelected;\n\n if (this.selected.includes(opt.value)) {\n // deselect option\n this.selected = this.selected.filter((val) => val !== opt.value);\n nanoSelected = this.nanoDeselect.emit(opt);\n } else {\n // select new option\n this.selected = [...this.selected];\n nanoSelected = this.nanoSelect.emit(opt);\n }\n\n if (!nanoSelected.defaultPrevented) {\n if (this.connectedInput) this.connectedInput.value = opt.value;\n\n const event = new window.Event('change');\n this.connectedInput?.dispatchEvent(event);\n }\n }\n\n // a new option has been picked\n private optSelected = (e: NanoMenuCustomEvent<HTMLNanoOptionElement>) => {\n e.stopPropagation();\n this.changeInputValue(e.detail);\n requestAnimationFrame(() => this.inputChange());\n\n if (this.type !== 'selctMulti') this.shouldOpen = false;\n };\n\n // this is for type=\"select\" only.\n // Filter options that start with text - aggregates letters (as opposed to getting the value from input)\n private setOptStartsWith() {\n const attrFind = (toFind: string) =>\n toFind.toLowerCase().substring(0, this.typeToSelect.length) ===\n this.typeToSelect;\n\n const foundEle = this.allOptEles.find(\n (opt) =>\n opt.value.trim().length > 0 &&\n !opt.disabled &&\n (attrFind(opt.textContent) ||\n attrFind(opt.value) ||\n attrFind(opt.label) ||\n attrFind(opt.filterMeta))\n );\n if (foundEle) this.changeInputValue(foundEle);\n }\n\n // Event handlers\n\n private removeEventListeners(\n oldInput: HTMLInputElement | HTMLTextAreaElement\n ) {\n const nanoInput = oldInput.closest(transformTag('nano-input'));\n if (nanoInput) {\n nanoInput.removeEventListener('nanoChange', this.inputChange);\n }\n oldInput.removeEventListener('change', this.inputChange);\n oldInput.removeEventListener('click', this.inputClick);\n oldInput.removeEventListener('keydown', this.inputKeydown);\n oldInput.removeEventListener('input', this.inputChange);\n }\n\n private processSlottedContent() {\n requestAnimationFrame(() => {\n this.allOptEles = Array.from(\n this.host.querySelectorAll(transformTag('nano-option'))\n );\n this.hasNoResult = !!this.host.querySelector('[slot=\"no-result\"]');\n\n if (this.connectedInput?.value.length && this.type !== 'select') {\n this.inputChange();\n } else this.actvOptEles = this.allOptEles;\n });\n }\n\n // sets focus immediately on open when 'select' - mirroring native behaviour\n private handleShow = async () => {\n if (this.shouldFocus) {\n this.shouldFocus = false;\n this.listBox.setFocus();\n } else if (this.type === 'select') this.listBox.showActiveElement();\n };\n\n private handleHide = () => {\n this.open = false;\n const activeElement = getActiveElement();\n if (activeElement.closest(this.host.tagName.toLowerCase())) {\n this.connectedInput.select();\n }\n };\n\n // any changes to the connected input value will filter the list of active options\n private inputChange() {\n if (this.disableFilter) {\n this.actvOptEles = this.allOptEles;\n return;\n }\n\n const val = this.connectedInput.value;\n const valStr = val.trim().toLowerCase();\n\n let exactMatch = false;\n const activeEles = [];\n const attrFind = (toFind: string) =>\n toFind.toLowerCase().indexOf(valStr) > -1;\n\n this.allOptEles.forEach((opt) => {\n if (\n (val === opt.value || val === opt.label) &&\n this.type !== 'selctMulti'\n ) {\n opt.selected = true;\n exactMatch = true;\n } else this.isSelected(opt, val);\n });\n\n this.allOptEles.forEach((opt) => {\n if (!valStr.length || exactMatch) {\n activeEles.push(opt);\n } else if (\n opt.value.trim().length > 0 &&\n !opt.disabled &&\n (attrFind(opt.textContent) ||\n attrFind(opt.value) ||\n attrFind(opt.label) ||\n attrFind(opt.filterMeta))\n ) {\n activeEles.push(opt);\n }\n });\n\n this.isFiltered = valStr.length && !exactMatch;\n this.actvOptEles = activeEles;\n }\n\n private inputClick = () => {\n this.shouldOpen = true;\n // open dropdown if possible\n this.manageDropdownDisplay();\n };\n\n private inputKeydown = (e: KeyboardEvent) => {\n const ignoreKeys = [\n 'Shift',\n 'ArrowRight',\n 'ArrowLeft',\n 'Escape',\n 'Enter',\n 'Tab',\n ];\n if (ignoreKeys.includes(e.key)) {\n if (e.key === 'Tab') this.shouldOpen = false;\n return;\n }\n\n // When select, mirror native select behaviour. Search on closed list\n if (\n this.type === 'select' &&\n !['ArrowDown', 'ArrowUp'].includes(e.key) &&\n (e.key !== ' ' || this.typeToSelectTimeout)\n ) {\n if (e.key === ' ' || /^[a-zA0-9]+$/i.test(e.key)) {\n clearTimeout(this.typeToSelectTimeout);\n this.typeToSelectTimeout = window.setTimeout(() => {\n this.typeToSelect = '';\n this.typeToSelectTimeout = 0;\n }, 750);\n this.typeToSelect += e.key;\n this.setOptStartsWith();\n }\n return;\n }\n\n if (this.open && ['ArrowDown', 'ArrowUp'].includes(e.key)) {\n this.listBox.setFocus();\n return;\n }\n\n this.shouldOpen = true;\n // open dropdown if possible\n this.manageDropdownDisplay();\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n this.shouldFocus = true;\n }\n };\n\n // handles key down on options. Either 'picks'\n // an option or passes event back to input for search / filter\n private optionKeyDown = (\n e: KeyboardEvent & { target: HTMLNanoOptionElement }\n ) => {\n const ignoreKeys = [\n 'Shift',\n 'ArrowUp',\n 'ArrowDown',\n 'Escape',\n 'Enter',\n 'Tab',\n 'Space',\n 'PageUp',\n 'PageDown',\n 'Home',\n 'End',\n ' ',\n ];\n if (ignoreKeys.includes(e.key)) {\n if (e.key === 'Escape') this.connectedInput.focus();\n return;\n }\n\n const deleteKeys = ['Delete', 'Backspace'];\n // this passes whatever's typed back to our input control\n if (\n this.type !== 'select' &&\n (!this.exactMatch || deleteKeys.includes(e.key))\n ) {\n this.connectedInput.focus();\n }\n };\n\n // Component lifecycle\n\n connectedCallback() {\n this.watchInputChange();\n }\n\n componentDidLoad() {\n this.handleOptionsChange();\n this.openWatcher();\n }\n\n componentDidRender(): void {\n setTimeout(() => {\n if (!this.connectedInput)\n console.warn(\n 'no `nano-input` found. `nano-datalist` should be nested within an `nano-input` or linked via `input` prop',\n this.host\n );\n }, 500);\n }\n\n disconnectedCallback(): void {\n if (this.mo) {\n this.mo.disconnect();\n this.mo = undefined;\n }\n if (this.connectedInput) this.removeEventListeners(this.connectedInput);\n }\n\n render() {\n return (\n <Host\n class=\"nano-datalist\"\n role={this.actvOptEles.length ? 'listbox' : undefined}\n aria-owns={this.optionIds.length ? this.optionIds.join(' ') : undefined}\n aria-label={\n this.optionIds.length\n ? 'Select options from the list below'\n : undefined\n }\n >\n <nano-dropdown\n {...this.dropDownConfig}\n ref={(el) => (this.nanoDropdown = el)}\n dialogTitle=\"Select options from the list below\"\n class={{\n dlist__dropdown: true,\n 'dlist--isfiltered': this.isFiltered,\n }}\n onNanoAfterShow={this.handleShow}\n onNanoAfterHide={this.handleHide}\n role=\"group\"\n >\n <nano-menu\n hidden={!this.actvOptEles.length}\n type=\"listbox\"\n label={this.inputLabel ? this.inputLabel.textContent : undefined}\n class={{\n dlist__menu: true,\n 'dlist__menu--open': this.dropwdownOpen,\n }}\n tabIndex={-1}\n onNanoSelect={this.optSelected}\n onKeyDown={this.optionKeyDown}\n ref={(el) => (this.listBox = el)}\n >\n <slot name=\"list-top\" />\n <slot />\n <slot name=\"internal-opts\" />\n <slot name=\"list-bottom\" />\n </nano-menu>\n <nano-menu\n type=\"listbox\"\n label=\"No results found\"\n hidden={!!this.actvOptEles.length}\n class={{\n dlist__menu: true,\n 'dlist__menu--open': this.dropwdownOpen,\n }}\n >\n <slot name=\"no-result\" />\n </nano-menu>\n {!!this.actvOptEles && (\n <div class=\"dlist__status\">\n {this.actvOptEles.length} result\n {this.actvOptEles.length > 1 ? 's' : ''} available.\n </div>\n )}\n </nano-dropdown>\n </Host>\n );\n }\n}\n","@use 'sass:map';\n@use '../../global/style/nano-theme/tokens';\n\n:host {\n /**\n * @prop --padding-start: padding at the start of nav-items (left r2l / right l2r). Defaults to '10px'\n * @prop --padding-end: padding at the end of nav-items (right r2l / left l2r). Defaults to '10px'\n * @prop --padding-top: padding at the top of nav-items. Defaults to '10px'\n * @prop --padding-bottom: padding at the bottom of nav-items. Defaults to '10px'\n\n * @prop --secondary-padding-top: padding at the top of nested nav-items. Defaults to 0\n * @prop --secondary-padding-bottom: padding at the bottom of nested nav-items. Defaults to 0\n\n * @prop --bg-color-hover: bg hover color of nav-items. Defaults to #{map.get(tokens.$colors, blue--faded)};\n * @prop --bg-color-focus: bg focus color of nav-items. Defaults to #{map.get(tokens.$colors, blue--faded)};\n * @prop --bg-color-selected: bg selected color of nav-items. Defaults to #{map.get(tokens.$colors, blue--faded)};\n\n * @prop --color-hover: text hover color of nav-items. Defaults to #{map.get(tokens.$colors, blue)}\n * @prop --color-selected: text selected color of nav-items. Defaults to #{map.get(tokens.$colors, blue)}\n * @prop --color-focus: text focus color of nav-items. Defaults to #{map.get(tokens.$colors, blue)}\n\n * @prop --focus-outline: the focus style of nav-items. Defaults to 'none'\n * @prop --font-size: default font-size for all items. Defaults .9em;\n */\n\n --padding-start: #{tokens.$spacing-medium};\n --padding-end: #{tokens.$spacing-medium};\n --padding-top: #{tokens.$spacing-small};\n --padding-bottom: #{tokens.$spacing-small};\n --secondary-padding-top: 0;\n --secondary-padding-bottom: 0;\n --bg-color-hover: #{map.get(tokens.$colors, blue--faded)};\n --bg-color-focus: #{map.get(tokens.$colors, blue--faded)};\n --bg-color-selected: #{map.get(tokens.$colors, blue--faded)};\n --color-hover: #{map.get(tokens.$colors, blue)};\n --color-selected: #{map.get(tokens.$colors, blue)};\n --color-focus: #{map.get(tokens.$colors, blue)};\n --focus-outline: none;\n --font-size: 0.9em;\n\n display: block;\n}\n\n.menu {\n font-size: var(--font-size, 0.9em);\n overscroll-behavior: none;\n min-inline-size: var(--width);\n position: relative;\n\n &:focus {\n outline: none;\n }\n}\n\n::slotted(*:not(.nano-nav-item):not(.nano-option):not(hr):not(slot)) {\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: var(--padding-top) var(--padding-bottom);\n display: block;\n}\n","import {\n Component,\n Event,\n EventEmitter,\n Method,\n Host,\n Element,\n Prop,\n Listen,\n Build,\n} from '@stencil/core';\nimport { h, transformTag } from '../../utils/renderer';\nimport { getActiveElement } from '../../utils/active-element';\nimport { getDirectChildren } from '../../utils/dom';\nimport { getTextContent } from '../../utils/slot';\n\ntype ValidElement = HTMLNanoNavItemElement | HTMLNanoOptionElement;\ntype NNI = HTMLNanoNavItemElement;\n\n/**\n * Menu element. Commonly wrapped by `nano-dropdown` with `nano-option` and `nano-nav-item` elements nested.\n * Manages focus state / active.\n * @slot - The menu's content; `nano-option`, `nano-nav-item` elements as well as <hr> and more.\n */\n@Component({\n tag: 'nano-menu',\n styleUrl: 'menu.scss',\n shadow: true,\n})\nexport class Menu {\n private ignoreMouseEvents = false;\n private ignoreMouseTimeout: any;\n private menu: HTMLElement;\n private typeToSelect = '';\n private typeToSelectTimeout: any;\n\n @Element() private el: HTMLNanoMenuElement;\n\n // Public API\n\n /** get the focus state of the menu @readonly */\n @Prop()\n get hasFocus() {\n return this._hasFocus;\n }\n private _hasFocus = false;\n\n /** changes the role of the underlying control - sometimes required for semantics */\n @Prop() type: 'menu' | 'listbox' = 'menu';\n\n /** an accessible label */\n @Prop() label: string;\n\n // Events\n\n /** Emitted when the menu gains focus. */\n @Event() nanoFocus: EventEmitter;\n\n /** Emitted when the menu loses focus. */\n @Event() nanoBlur: EventEmitter;\n\n /** Emitted when a menu item is selected. */\n @Event() nanoSelect: EventEmitter<\n HTMLNanoOptionElement | HTMLNanoNavItemElement\n >;\n\n // Public Methods\n\n /** Sets focus on the menu. */\n @Method()\n async setFocus() {\n if (this.menu?.focus) this.menu.focus({ preventScroll: true });\n }\n\n /** Removes focus from the menu. */\n @Method()\n async removeFocus() {\n if (this.menu?.blur) this.menu.blur();\n }\n\n /** Sets the current active item */\n @Method()\n async showActiveElement() {\n if (this.selectedItem)\n this.selectedItem.scrollIntoView({ block: 'nearest' });\n }\n\n /** Removes any active item's state */\n @Method()\n async resetActiveItem() {\n this.getItems\n .filter((i) => i.tagName.toLowerCase() === transformTag('nano-option'))\n .map((i) => i.setAttribute('tabindex', '-1'));\n }\n\n // Private methods\n\n get getItems() {\n let items: ValidElement[];\n const opened = this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}.secondary-open`\n );\n if (opened.length) {\n const ctx = opened[opened.length - 1] as HTMLNanoNavItemElement;\n items = Array.from(\n ctx.querySelectorAll(\n `${transformTag('nano-nav-item')}, ${transformTag('nano-option')}`\n )\n );\n } else {\n items = getDirectChildren(\n this.el,\n `${transformTag('nano-nav-item')}, ${transformTag('nano-option')}`,\n 'slot'\n );\n }\n return items.filter((el) => !el.disabled && !el.hidden);\n }\n\n get activeItem() {\n const activeElement = getActiveElement();\n return this.getItems.find(\n (i) =>\n i.getAttribute('tabindex') === '0' ||\n i === activeElement ||\n i.classList.contains('has-focus')\n );\n }\n\n get selectedItem() {\n return this.getItems.find((i) => i.selected);\n }\n\n private async setActiveFocusItem(item?: ValidElement, focus = true) {\n const items = this.getItems;\n const activeItem = !item ? items.find((i) => i.selected) || items[0] : item;\n\n items\n .filter((i) => i.tagName.toLowerCase() === transformTag('nano-option'))\n .map((i: HTMLNanoOptionElement) =>\n i.setAttribute('tabindex', i === activeItem ? '0' : '-1')\n );\n\n if (!focus) return;\n\n if (activeItem) {\n if ((activeItem as NNI).setFocus) (activeItem as NNI).setFocus();\n else activeItem.focus();\n } else this.menu.focus();\n }\n\n // Event Handlers\n\n @Listen('mousedown', { target: 'body' })\n @Listen('keydown')\n handleBlur(e: KeyboardEvent | MouseEvent) {\n if (!this.hasFocus) return;\n\n const kev = e as KeyboardEvent;\n let found: boolean;\n\n if (kev.key) {\n if (kev.key !== 'Tab') return;\n found =\n getActiveElement() &&\n getActiveElement().closest(this.el.tagName.toLowerCase()) === this.el;\n } else found = !!e.composedPath().find((el) => el === this.el);\n\n if (!found) {\n this.resetActiveItem();\n this._hasFocus = false;\n this.nanoBlur.emit();\n }\n }\n\n private handleFocus = () => {\n this.setActiveFocusItem(this.selectedItem || this.getItems[0]);\n\n this._hasFocus = true;\n this.nanoFocus.emit();\n };\n\n private handleClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const item = target.closest<HTMLNanoNavItemElement>(\n transformTag('nano-nav-item')\n );\n\n if (item && !item.disabled) {\n this.nanoSelect.emit(item);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n // When keying through the menu, if the mouse happens to be hovering over a menu item and the menu scrolls, the\n // mouseout/mouseover event will fire causing the selection to be different than what the user expects. This gives\n // us a way to temporarily ignore mouse events while the user is interacting with a keyboard.\n clearTimeout(this.ignoreMouseTimeout);\n this.ignoreMouseTimeout = setTimeout(\n () => (this.ignoreMouseEvents = false),\n 500\n );\n this.ignoreMouseEvents = true;\n\n // Make a selection when pressing enter\n switch (event.key) {\n case ' ':\n if (this.activeItem) this.activeItem.click();\n break;\n case 'ArrowDown':\n case 'ArrowUp':\n case 'PageDown':\n case 'PageUp':\n case 'Home':\n case 'End': {\n const items = this.getItems;\n const selectedItem = this.activeItem;\n let index = items.indexOf(selectedItem);\n\n if (items.length) {\n event.preventDefault();\n\n if (event.key === 'ArrowDown') {\n index++;\n } else if (event.key === 'ArrowUp') {\n index--;\n } else if (event.key === 'Home' || event.key === 'PageUp') {\n index = 0;\n } else if (event.key === 'End' || event.key === 'PageDown') {\n index = items.length - 1;\n }\n\n if (index < 0) index = items.length - 1;\n if (index > items.length - 1) index = 0;\n\n this.setActiveFocusItem(items[index]);\n if (items[index]) items[index].scrollIntoView({ block: 'nearest' });\n return;\n }\n break;\n }\n }\n\n // Handle type-to-search behavior when non-control characters are entered\n if (event.key === ' ' || /^[a-z0-9]+$/i.test(event.key)) {\n clearTimeout(this.typeToSelectTimeout);\n this.typeToSelectTimeout = setTimeout(\n () => (this.typeToSelect = ''),\n 750\n );\n this.typeToSelect += event.key;\n\n const items = this.getItems;\n for (const item of items) {\n const slot: HTMLSlotElement =\n item.shadowRoot.querySelector('slot:not([name])');\n const label = getTextContent(slot).toLowerCase().trim();\n if (\n label.substring(0, this.typeToSelect.length) === this.typeToSelect\n ) {\n this.setActiveFocusItem(item);\n break;\n }\n }\n }\n };\n\n private handleMouseOver = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const item =\n target.closest<HTMLNanoNavItemElement>(transformTag('nano-nav-item')) ||\n target.closest<HTMLNanoOptionElement>(transformTag('nano-option'));\n\n if (item && !this.ignoreMouseEvents) {\n this.setActiveFocusItem(item);\n }\n };\n\n // Component Lifecycle\n\n componentDidLoad() {\n if (Build.isBrowser) {\n getDirectChildren(\n this.el,\n ':not(nano-nav-item):not(nano-option):not([role])',\n true\n ).forEach((el) => el.setAttribute('role', 'none'));\n }\n }\n\n render() {\n return (\n <Host role={this.type === 'menu' ? 'menu' : 'group'} class=\"nano-menu\">\n <div\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n onMouseOver={this.handleMouseOver}\n onFocus={this.handleFocus}\n aria-label={this.label ? this.label : undefined}\n ref={(el) => (this.menu = el)}\n part=\"base\"\n class={{\n menu: true,\n ['menu--' + this.type]: true,\n 'menu--has-focus': this.hasFocus,\n }}\n tabIndex={-1}\n role=\"group\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n","@use 'sass:map';\n@use '../../global/style/nano-theme/tokens';\n\n:host {\n /**\n * @prop --padding-top: Defaults to #{tokens.$spacing-small};\n * @prop --padding-bottom: Defaults to #{tokens.$spacing-small};\n * @prop --padding-start: Defaults to #{tokens.$spacing-small};\n * @prop --padding-end: Defaults to #{tokens.$spacing-small};\n\n * @prop --bg: default background. Defaults to none;\n * @prop --bg-selected: background when selected. Defaults to #{tokens.$select-opt-selected};\n * @prop --bg-focus: background when focused. Defaults to var(--nano-color-base, #{nano-color(primary, tint)});\n * @prop --bg-disabled: background when disabled. Defaults to none;\n\n * @prop --color: default text color. Defaults to var(--input-text-color, #{tokens.$input-text-color});\n * @prop --color-selected: text color when selected. Defaults to var(--nano-color-base, #{nano-color(primary, base)});\n * @prop --color-focus: text color when focused. Defaults to var(--nano-color-base, #{nano-color(primary, contrast)});\n * @prop --color-disabled: text color when disabled. Defaults to #{map.get(tokens.$colors, palegrey)};\n\n * @prop --opt-icon-size: Sizes all icons within the option. Defaults to 1.4em;\n */\n\n --bg: none;\n --bg-selected: #{tokens.$select-opt-selected};\n --bg-focus: var(--nano-color-base, #{tokens.nano-color(primary, tint)});\n --bg-disabled: none;\n --color: var(--input-text-color, #{tokens.$input-text-color});\n --color-selected: var(--nano-color-base, #{tokens.nano-color(primary, base)});\n --color-focus: var(--nano-color-contrast, #{tokens.nano-color(primary, contrast)});\n --color-disabled: #{map.get(tokens.$colors, palegrey)};\n --opt-icon-size: 1.6em;\n\n display: block;\n color: var(--color);\n overflow: hidden;\n font-size: 14px;\n font-size: #{'clamp(12px, .9em, 16px)'};\n}\n\n:host(:focus) {\n outline: none;\n}\n\n.option {\n $self: &;\n\n position: relative;\n user-select: none;\n cursor: pointer;\n display: flex;\n align-items: stretch;\n inline-size: 100%;\n background: var(--bg);\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: var(--padding-top) var(--padding-bottom);\n\n // focus\n :host(:focus) &:not(.option--disabled),\n :host &.option--selected {\n outline: none;\n background: var(--bg-selected);\n color: var(--color-selected);\n }\n\n :host(:focus) &:not(.option--disabled) {\n background: var(--bg-focus);\n color: var(--color-focus);\n }\n\n // disabled\n &.option--disabled {\n outline: none;\n color: var(--color-disabled);\n cursor: not-allowed;\n background: var(--bg-disabled);\n }\n\n // no value\n &.option--novalue {\n font-style: italic;\n opacity: 0.7;\n }\n\n &__label {\n flex: 1 1 auto;\n display: flex;\n align-items: center;\n }\n\n &__start {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n\n ::slotted(.nano-icon) {\n font-size: var(--opt-icon-size);\n }\n\n ::slotted(:last-child) {\n margin-inline-end: 0.5em;\n }\n }\n\n &__end {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n\n ::slotted(.nano-icon) {\n font-size: var(--opt-icon-size);\n }\n\n ::slotted(:first-child) {\n margin-inline-start: 0.5em;\n }\n }\n\n &__check {\n visibility: hidden;\n display: flex;\n position: absolute;\n inset-inline-start: 0.6em;\n inset-block-start: calc(50% - 0.6em);\n align-items: center;\n font-size: 0.9em;\n\n #{$self}--selected:not(#{$self}--novalue) & {\n visibility: visible;\n }\n }\n}\n","import {\n Component,\n Prop,\n Host,\n State,\n Watch,\n Element,\n Listen,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { h } from '../../utils/renderer';\nimport { getDirectChildren } from '../../utils/dom';\nimport { debounce } from '../../utils/throttle';\nimport type { OptionInterface } from './option-interface';\n\nlet optIds = 0;\n\n/**\n * Select options to be used with [nano-select](/story/nano-components-select) or [nano-datalist](/story/nano-components-select)\n *\n * @slot - main label. Defaults to `label` or `value` prop\n * @slot checked-icon - icon to indicated checked / selected state. Defaults to fontawesome light/check\n * @slot start - suitable for an icon or content displayed at the start of the main label\n * @slot end - suitable for an icon or content displayed at the end of the main label\n */\n@Component({\n tag: 'nano-option',\n styleUrl: 'option.scss',\n shadow: true,\n})\nexport class Option implements OptionInterface {\n private optId = `nano-option-${optIds++}`;\n @Element() host: HTMLNanoOptionElement;\n @State() hasFocus = false;\n\n constructor() {\n this.handleClick = debounce(this.handleClick.bind(this), 5);\n }\n\n // Public API\n\n /**\n * Value of the option\n */\n @Prop({ mutable: true, reflect: true }) value: string = '';\n\n @Watch('value')\n valueChanged() {\n if ((!this.value || !this.value.length) && !this.label)\n this.value = this.labelContent;\n }\n\n /**\n * Label of the option\n */\n @Prop({ mutable: true, reflect: true }) label: string = '';\n\n @Watch('label')\n labelChanged() {\n if (!this.label || !this.label.length)\n this.label = this.labelContent.length ? this.labelContent : this.value;\n }\n\n /**\n * Whether this option is selected\n */\n @Prop({ reflect: true }) selected: boolean = false;\n\n /**\n * Whether this option should be disabled\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /** You can add extra meta for this option. When displayed in a list, users\n * search / filter via extra related terms. Another usecase is 'endonyms'\n */\n @Prop() filterMeta: string = '';\n\n /** Fired when an option is selected */\n @Event() nanoSelect!: EventEmitter<HTMLNanoOptionElement>;\n\n // Event handlers\n\n // stop scrolling on select\n @Listen('keydown')\n handleKeyDown(e: KeyboardEvent) {\n if (e.key !== ' ' && e.key !== 'Enter') return;\n e.preventDefault();\n this.nanoSelect.emit(this.host);\n }\n\n private handleClick() {\n if (this.disabled) return;\n this.nanoSelect.emit(this.host);\n }\n\n // Private logic\n\n private get labelContent() {\n return getDirectChildren(this.host, '*:not([slot])', false)\n .map((el) => el.textContent)\n .join(' ')\n .trim();\n }\n\n // Component lifecycle\n\n componentWillLoad() {\n this.valueChanged();\n this.labelChanged();\n }\n\n render() {\n return (\n <Host\n role=\"option\"\n aria-selected={this.selected ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n class=\"nano-option\"\n >\n <div\n onMouseDown={this.handleClick}\n id={this.optId}\n class={{\n option: true,\n 'option--selected': this.selected,\n 'option--disabled': this.disabled,\n 'option--novalue': !this.value,\n }}\n >\n <div part=\"check-icon\" class=\"option__check\">\n <slot name=\"check-icon\">\n <nano-icon name=\"light/check\" aria-hidden=\"true\" />\n </slot>\n </div>\n <div part=\"start\" class=\"option__start\">\n <slot name=\"start\"></slot>\n </div>\n <div part=\"label\" class=\"option__label\">\n <slot>{this.label || this.value}</slot>\n </div>\n <div part=\"end\" class=\"option__end\">\n <slot name=\"end\"></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["datalistCss","NanoDatalistStyle0","findLabel","formCtrl","foundLabel","id","document","querySelector","closest","listIds","DataList","isNanoInput","typeToSelect","typeToSelectTimeout","nanoDropdown","listBox","mo","listId","isFiltered","shouldFocus","allOptEles","this","_allOptEles","opts","connectedInput","value","forEach","opt","selected","includes","changeInputValue","actvOptEles","inputLabel","hasNoResult","shouldOpen","canOpen","optionIds","constructor","hostRef","inputChange","debounce","bind","dropDownConfig","_dropDownConfig","ddc","skidding","options","input","type","activeOptions","open","openWatcher","writeTask","setAttribute","toString","disableFilter","disabled","watchInputChange","nanoInput","host","transformTag","getInputElement","handleOptionsChange","getDirectChildren","el","length","MutationObserver","processSlottedContent","observe","childList","subtree","disconnect","undefined","previousOptions","querySelectorAll","internalOpt","remove","flatMap","option","i","label","Object","assign","createElement","ariaPosinset","ariaSetsize","textContent","slot","append","watchTypeChange","dwConfig","closeOnSelect","autocompleteType","readonly","placement","tetherTo","readOnly","manageInputEvents","newInput","oldInput","removeEventListener","removeEventListeners","removeAttribute","addEventListener","inputClick","inputKeydown","labels","item","watchActvOptChange","c","val","optIds","hidden","isSelected","push","manageCanOpen","manageDropdownDisplay","fireActiveOptsEvent","nanoOptionsUpdated","emit","nanoSelect","nanoDeselect","dropwdownOpen","exactMatch","find","nanoSelected","filter","defaultPrevented","event","window","Event","dispatchEvent","optSelected","e","stopPropagation","detail","requestAnimationFrame","setOptStartsWith","attrFind","toFind","toLowerCase","substring","foundEle","trim","filterMeta","Array","from","handleShow","async","setFocus","showActiveElement","handleHide","activeElement","getActiveElement","tagName","select","valStr","activeEles","indexOf","ignoreKeys","key","test","clearTimeout","setTimeout","preventDefault","optionKeyDown","focus","deleteKeys","connectedCallback","componentDidLoad","componentDidRender","console","warn","disconnectedCallback","render","h","Host","class","role","join","ref","dialogTitle","dlist__dropdown","onNanoAfterShow","onNanoAfterHide","dlist__menu","tabIndex","onNanoSelect","onKeyDown","name","menuCss","NanoMenuStyle0","Menu","ignoreMouseEvents","ignoreMouseTimeout","menu","hasFocus","_hasFocus","nanoFocus","nanoBlur","preventScroll","removeFocus","blur","selectedItem","scrollIntoView","block","resetActiveItem","getItems","map","items","opened","ctx","activeItem","getAttribute","classList","contains","setActiveFocusItem","handleBlur","kev","found","composedPath","handleFocus","handleClick","target","handleKeyDown","click","index","shadowRoot","getTextContent","handleMouseOver","onClick","onMouseOver","onFocus","part","optionCss","NanoOptionStyle0","Option","optId","valueChanged","labelContent","labelChanged","componentWillLoad","onMouseDown"],"sources":["src/components/datalist/datalist.scss?tag=nano-datalist&encapsulation=shadow","src/components/datalist/datalist.tsx","src/components/menu/menu.scss?tag=nano-menu&encapsulation=shadow","src/components/menu/menu.tsx","src/components/option/option.scss?tag=nano-option&encapsulation=shadow","src/components/option/option.tsx"],"sourcesContent":["@use 'sass:map';\n@use '../../global/style/utilities/mixins' as mx;\n@use '../../global/style/nano-theme/tokens';\n\n:host {\n /**\n * @prop --padding-top: for all nested `nano-option` elements. Defaults to #{tokens.$spacing-small};\n * @prop --padding-bottom: for all nested `nano-option` elements. Defaults to #{tokens.$spacing-small};\n * @prop --padding-start: for all nested `nano-option` elements. Defaults to #{tokens.$spacing-xlarge};\n * @prop --padding-end: for all nested `nano-option` elements. Defaults to #{tokens.$spacing-xlarge};\n * @prop --font-size: for all nested `nano-option` elements. Defaults to .8em;\n * @prop --color: default text color of content other than `nano-option`. Defaults to #{map.get(tokens.$colors, palegrey)};\n */\n\n --padding-top: #{tokens.$spacing-small};\n --padding-bottom: #{tokens.$spacing-small};\n --padding-start: #{tokens.$spacing-xlarge};\n --padding-end: #{tokens.$spacing-xlarge};\n --font-size: 0.8em;\n --color: #{map.get(tokens.$colors, palegrey)};\n\n color: var(--color);\n}\n\n.dlist {\n &--isfiltered {\n ::slotted(*:not(.nano-option):not([slot='no-result']):not([slot='list-top']):not([slot='list-bottom'])) {\n display: none !important;\n }\n }\n\n &__dropdown {\n --min-width: 100%;\n --overflow: auto;\n }\n\n &__status {\n @include mx.visually-hide();\n }\n\n &__menu {\n --padding-top: inherit;\n --padding-bottom: inherit;\n --padding-start: inherit;\n --padding-end: inherit;\n --font-size: inherit;\n }\n}\n","import {\n Component,\n ComponentInterface,\n Host,\n Element,\n State,\n Watch,\n Prop,\n Event,\n writeTask,\n Build,\n EventEmitter,\n} from '@stencil/core';\nimport { h, transformTag } from '../../utils/renderer';\nimport { getActiveElement } from '../../utils/active-element';\nimport { debounce } from '../../utils/throttle';\nimport { getDirectChildren } from '../../utils/dom';\nimport type { NanoMenuCustomEvent } from '../../components';\nimport type { Dropdown } from '../dropdown/dropdown';\nimport type { OptionInterface } from '../option/option-interface';\n\nfunction findLabel(formCtrl: Element) {\n let foundLabel: HTMLLabelElement;\n\n if (formCtrl.id) {\n foundLabel = document.querySelector(`label[for='${formCtrl.id}']`);\n }\n if (!foundLabel) {\n foundLabel = formCtrl.closest('label');\n }\n return foundLabel;\n}\n\nlet listIds = 0;\n\n/**\n * `nano-datalist` a visually consistent and more flexible replacement for a native\n * [datalist](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist). Can be nested within a `nano-input`\n * or linked to any input control via the `input` prop. Is used internally within `nano-select`.\n * Options can be defined declaratively by nesting `<nano-option>` elements or imperatively using the `options` prop\n *\n * @slot - use `<nano-option>` elements for more complex html. Alternatively use the `options` prop\n * @slot list-top - shows at the top of the list when there are options present\n * @slot list-bottom - shows at the bottom of the list when there are options present\n * @slot no-result - shown when there are no results otherwise nothing will be shown\n */\n@Component({\n tag: 'nano-datalist',\n styleUrl: 'datalist.scss',\n shadow: true,\n})\nexport class DataList implements ComponentInterface {\n // Private State\n\n private isNanoInput = false;\n private typeToSelect = '';\n private typeToSelectTimeout: number;\n private nanoDropdown: HTMLNanoDropdownElement;\n private listBox: HTMLNanoMenuElement;\n private mo?: MutationObserver;\n private listId = `nano-datalist-${listIds++}`;\n private isFiltered = false;\n private shouldFocus = false;\n // all potential option eles. Set via slot or `options` prop.\n // Some may get hidden due to filtering\n private get allOptEles() {\n return this._allOptEles;\n }\n private set allOptEles(opts) {\n // when allOptEles are initially set (on slot change / options) -\n // add options to 'selected' and fire selected event *if*\n // value isn't set on the input\n this._allOptEles = opts;\n if (this.connectedInput?.value) return;\n\n opts.forEach((opt) => {\n if (opt.selected && !this.selected.includes(opt.value)) {\n this.changeInputValue(opt);\n }\n });\n }\n private _allOptEles: HTMLNanoOptionElement[] = [];\n\n @Element() host: HTMLNanoDatalistElement;\n\n // active option eles that are not hidden.\n @State() actvOptEles: HTMLNanoOptionElement[] = [];\n @State() connectedInput: HTMLInputElement | HTMLTextAreaElement;\n @State() inputLabel: HTMLLabelElement;\n @State() hasNoResult: boolean;\n @State() shouldOpen: boolean;\n @State() canOpen: boolean = true;\n @State() optionIds: string[] = [];\n\n constructor() {\n this.inputChange = debounce(this.inputChange.bind(this), 50);\n }\n\n // Public API\n\n /** By default, items in the list will appear 'selected' when the value in the linked input control matches.\n * However you can add other selected options via the the selected prop. */\n @Prop({ mutable: true }) selected: string[] = [];\n\n /** nano-dropdown config options you can pass to the nested dropdown component */\n @Prop()\n get dropDownConfig() {\n return this._dropDownConfig;\n }\n set dropDownConfig(ddc: Partial<Dropdown>) {\n this._dropDownConfig = { ...this._dropDownConfig, ...ddc };\n }\n private _dropDownConfig: Partial<Dropdown> = {\n skidding: -1,\n };\n\n /** Provide an option list.\n * Options can be defined declaratively by nesting `<nano-option>` elements or imperatively using this prop */\n @Prop() options?: OptionInterface[] = [];\n\n /** A selector to a HTMLInputElement */\n @Prop() input?: string | HTMLInputElement;\n\n /** Tweaks the datalist behaviour and linked control semantics and behaviour.\n * e.g. 'select' will make the linked input control `readonly`.\n */\n @Prop() type: 'select' | 'selctMulti' | 'input' = 'input';\n\n /** return all the active options currently within the datalist. Can be useful for validation */\n @Prop()\n get activeOptions() {\n return this.allOptEles;\n }\n\n /** Force datalist open */\n @Prop({ mutable: true }) open: boolean = false;\n\n @Watch('open')\n openWatcher() {\n writeTask(() => {\n this.nanoDropdown.open = this.open;\n if (this.connectedInput)\n this.connectedInput.setAttribute('aria-expanded', this.open.toString());\n });\n }\n\n /** Use this option to disable to default filtering. This is useful if filtering happens\n * externally via another method (e.g. via ajax)\n */\n @Prop() disableFilter = false;\n\n /** Activate / deactivate the datalist control */\n @Prop() disabled = false;\n\n // State change watchers\n\n @Watch('input')\n async watchInputChange() {\n let nanoInput;\n if ((nanoInput = this.host.closest(transformTag('nano-input')))) {\n this.isNanoInput = true;\n this.connectedInput = await nanoInput.getInputElement();\n } else if (\n this.input &&\n typeof this.input === 'string' &&\n (nanoInput = document.querySelector(this.input))\n ) {\n this.isNanoInput = false;\n this.connectedInput = nanoInput;\n } else if (typeof this.input === 'object') {\n this.connectedInput = this.input;\n }\n }\n\n @Watch('options')\n handleOptionsChange() {\n if (!this.host) return;\n\n getDirectChildren(\n this.host,\n ':not(nano-nav-item):not(nano-option):not([role])',\n true\n ).forEach((el) => el.setAttribute('role', 'none'));\n\n // we're not using `options` - setup new MO\n if ((!this.options || !this.options.length) && !this.mo) {\n if (Build.isBrowser) {\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.host, { childList: true, subtree: true });\n }\n this.processSlottedContent();\n return;\n }\n\n // we're using `options` - trash current MO\n if (this.options?.length) {\n if (this.mo) {\n this.mo.disconnect();\n this.mo = undefined;\n }\n\n const previousOptions = this.host.querySelectorAll(\n transformTag('nano-option')\n );\n\n // add imperative `options`\n writeTask(() => {\n // clear all previous\n if (previousOptions?.length)\n previousOptions.forEach((internalOpt) => internalOpt.remove());\n\n this.allOptEles = this.options.flatMap((option, i) => {\n if (option.value || option.label) {\n const opt = Object.assign(\n document.createElement(\n transformTag('nano-option')\n ) as HTMLNanoOptionElement,\n {\n label: option.label,\n value: option.value,\n ariaPosinset: i,\n ariaSetsize: this.options.length,\n selected: option.selected,\n id: this.listId + '-option-' + i,\n textContent: option.label ? option.label : option.value,\n slot: 'internal-opts',\n }\n );\n this.host.append(opt);\n return opt;\n }\n });\n\n if (this.connectedInput?.value.length && this.type !== 'select') {\n this.inputChange();\n } else {\n this.actvOptEles = [...this.allOptEles];\n }\n });\n }\n // forceUpdate(this.host);\n }\n\n @Watch('type')\n @Watch('connectedInput')\n @Watch('disabled')\n watchTypeChange() {\n if (!this.connectedInput || this.disabled) return;\n\n let dwConfig: Partial<Dropdown> = { closeOnSelect: false };\n let autocompleteType: 'list' | 'both' = 'both';\n let readonly = false;\n\n switch (this.type) {\n case 'input':\n dwConfig = { closeOnSelect: true };\n break;\n case 'select':\n autocompleteType = 'list';\n readonly = true;\n dwConfig = { closeOnSelect: true, placement: 'center' };\n break;\n }\n\n if (!this.isNanoInput) {\n dwConfig.tetherTo = this.connectedInput;\n }\n\n this.dropDownConfig = { ...this.dropDownConfig, ...dwConfig };\n this.connectedInput.setAttribute('aria-autocomplete', autocompleteType);\n this.connectedInput.readOnly = readonly;\n }\n\n @Watch('connectedInput')\n manageInputEvents(newInput?: HTMLInputElement, oldInput?: HTMLInputElement) {\n if (oldInput) {\n const nanoInput = oldInput.closest(transformTag('nano-input'));\n if (nanoInput) {\n nanoInput.removeEventListener('nanoChange', this.inputChange);\n }\n this.removeEventListeners(oldInput);\n\n this.inputLabel = null;\n\n writeTask(() => {\n oldInput.removeAttribute('role');\n oldInput.removeAttribute('aria-expanded');\n oldInput.removeAttribute('aria-controls');\n oldInput.removeAttribute('aria-owns');\n oldInput.removeAttribute('aria-haspopup');\n oldInput.removeAttribute('aria-autocomplete');\n oldInput.removeAttribute('autocomplete');\n });\n }\n if (newInput) {\n const nanoInput = newInput.closest(transformTag('nano-input'));\n if (nanoInput) {\n nanoInput.addEventListener('nanoChange', this.inputChange);\n }\n newInput.addEventListener('change', this.inputChange);\n newInput.addEventListener('click', this.inputClick);\n newInput.addEventListener('keydown', this.inputKeydown);\n newInput.addEventListener('input', this.inputChange);\n this.listId = this.host.id || this.listId;\n\n this.inputLabel = newInput?.labels?.item(0) || findLabel(newInput);\n\n writeTask(() => {\n this.host.id = this.listId;\n newInput.setAttribute('role', 'combobox');\n newInput.setAttribute('aria-expanded', 'false');\n newInput.setAttribute('aria-controls', this.listId);\n newInput.setAttribute('aria-owns', this.listId);\n newInput.setAttribute('aria-haspopup', 'listbox');\n newInput.setAttribute('autocomplete', 'off');\n });\n }\n }\n\n @Watch('selected')\n @Watch('actvOptEles')\n watchActvOptChange() {\n let c = 0;\n const val = this.connectedInput?.value || '';\n const optIds = [];\n\n writeTask(() => {\n this.allOptEles.forEach((opt, i) => {\n if (this.actvOptEles.includes(opt)) {\n c++;\n opt.setAttribute('aria-posinset', c + '');\n opt.setAttribute('aria-setsize', this.actvOptEles.length + '');\n opt.hidden = false;\n this.isSelected(opt, val);\n } else {\n opt.removeAttribute('aria-posinset');\n opt.removeAttribute('aria-setsize');\n opt.hidden = true;\n opt.selected = false;\n }\n opt.id = this.listId + '-option-' + i;\n optIds.push(opt.id);\n });\n this.optionIds = optIds;\n });\n }\n\n @Watch('actvOptEles')\n @Watch('hasNoResult')\n manageCanOpen() {\n if (this.actvOptEles.length || this.hasNoResult) this.canOpen = true;\n else this.canOpen = false;\n }\n\n /**\n * Opens the dropdown if it can, it should and there are items to display.\n */\n @Watch('shouldOpen')\n @Watch('canOpen')\n manageDropdownDisplay() {\n if (this.shouldOpen && this.canOpen && !this.disabled) this.open = true;\n if (!this.shouldOpen || !this.canOpen) this.open = false;\n this.openWatcher();\n }\n\n @Watch('actvOptEles')\n fireActiveOptsEvent() {\n this.nanoOptionsUpdated.emit(this.actvOptEles);\n }\n\n // Events\n\n /** Fired when an item is selected. */\n @Event() nanoSelect: EventEmitter<HTMLNanoOptionElement>;\n\n /** Fired when a currently selected item is reselected. */\n @Event() nanoDeselect: EventEmitter<HTMLNanoOptionElement>;\n\n /** Fired when active options change */\n @Event() nanoOptionsUpdated: EventEmitter<HTMLNanoOptionElement[]>;\n\n // Private logic\n\n private isSelected(opt: HTMLNanoOptionElement, val: string) {\n if (val === opt.value || this.selected.includes(opt.value)) {\n opt.selected = true;\n } else opt.selected = false;\n }\n\n private get dropwdownOpen() {\n if (!this.nanoDropdown || !this.open) return false;\n return true;\n }\n\n private get exactMatch() {\n return this.allOptEles.find(\n (opt) => this.connectedInput.value === opt.value\n );\n }\n\n /** reflect value back to the connected input unless the event is cancelled */\n private changeInputValue(opt: HTMLNanoOptionElement) {\n let nanoSelected;\n\n if (this.selected.includes(opt.value)) {\n // deselect option\n this.selected = this.selected.filter((val) => val !== opt.value);\n nanoSelected = this.nanoDeselect.emit(opt);\n } else {\n // select new option\n this.selected = [...this.selected];\n nanoSelected = this.nanoSelect.emit(opt);\n }\n\n if (!nanoSelected.defaultPrevented) {\n if (this.connectedInput) this.connectedInput.value = opt.value;\n\n const event = new window.Event('change');\n this.connectedInput?.dispatchEvent(event);\n }\n }\n\n // a new option has been picked\n private optSelected = (e: NanoMenuCustomEvent<HTMLNanoOptionElement>) => {\n e.stopPropagation();\n this.changeInputValue(e.detail);\n requestAnimationFrame(() => this.inputChange());\n\n if (this.type !== 'selctMulti') this.shouldOpen = false;\n };\n\n // this is for type=\"select\" only.\n // Filter options that start with text - aggregates letters (as opposed to getting the value from input)\n private setOptStartsWith() {\n const attrFind = (toFind: string) =>\n toFind.toLowerCase().substring(0, this.typeToSelect.length) ===\n this.typeToSelect;\n\n const foundEle = this.allOptEles.find(\n (opt) =>\n opt.value.trim().length > 0 &&\n !opt.disabled &&\n (attrFind(opt.textContent) ||\n attrFind(opt.value) ||\n attrFind(opt.label) ||\n attrFind(opt.filterMeta))\n );\n if (foundEle) this.changeInputValue(foundEle);\n }\n\n // Event handlers\n\n private removeEventListeners(\n oldInput: HTMLInputElement | HTMLTextAreaElement\n ) {\n const nanoInput = oldInput.closest(transformTag('nano-input'));\n if (nanoInput) {\n nanoInput.removeEventListener('nanoChange', this.inputChange);\n }\n oldInput.removeEventListener('change', this.inputChange);\n oldInput.removeEventListener('click', this.inputClick);\n oldInput.removeEventListener('keydown', this.inputKeydown);\n oldInput.removeEventListener('input', this.inputChange);\n }\n\n private processSlottedContent() {\n requestAnimationFrame(() => {\n this.allOptEles = Array.from(\n this.host.querySelectorAll(transformTag('nano-option'))\n );\n this.hasNoResult = !!this.host.querySelector('[slot=\"no-result\"]');\n\n if (this.connectedInput?.value.length && this.type !== 'select') {\n this.inputChange();\n } else this.actvOptEles = this.allOptEles;\n });\n }\n\n // sets focus immediately on open when 'select' - mirroring native behaviour\n private handleShow = async () => {\n if (this.shouldFocus) {\n this.shouldFocus = false;\n this.listBox.setFocus();\n } else if (this.type === 'select') this.listBox.showActiveElement();\n };\n\n private handleHide = () => {\n this.open = false;\n const activeElement = getActiveElement();\n if (activeElement.closest(this.host.tagName.toLowerCase())) {\n this.connectedInput.select();\n }\n };\n\n // any changes to the connected input value will filter the list of active options\n private inputChange() {\n if (this.disableFilter) {\n this.actvOptEles = this.allOptEles;\n return;\n }\n\n const val = this.connectedInput.value;\n const valStr = val.trim().toLowerCase();\n\n let exactMatch = false;\n const activeEles = [];\n const attrFind = (toFind: string) =>\n toFind.toLowerCase().indexOf(valStr) > -1;\n\n this.allOptEles.forEach((opt) => {\n if (\n (val === opt.value || val === opt.label) &&\n this.type !== 'selctMulti'\n ) {\n opt.selected = true;\n exactMatch = true;\n } else this.isSelected(opt, val);\n });\n\n this.allOptEles.forEach((opt) => {\n if (!valStr.length || exactMatch) {\n activeEles.push(opt);\n } else if (\n opt.value.trim().length > 0 &&\n !opt.disabled &&\n (attrFind(opt.textContent) ||\n attrFind(opt.value) ||\n attrFind(opt.label) ||\n attrFind(opt.filterMeta))\n ) {\n activeEles.push(opt);\n }\n });\n\n this.isFiltered = valStr.length && !exactMatch;\n this.actvOptEles = activeEles;\n }\n\n private inputClick = () => {\n this.shouldOpen = true;\n // open dropdown if possible\n this.manageDropdownDisplay();\n };\n\n private inputKeydown = (e: KeyboardEvent) => {\n const ignoreKeys = [\n 'Shift',\n 'ArrowRight',\n 'ArrowLeft',\n 'Escape',\n 'Enter',\n 'Tab',\n ];\n if (ignoreKeys.includes(e.key)) {\n if (e.key === 'Tab') this.shouldOpen = false;\n return;\n }\n\n // When select, mirror native select behaviour. Search on closed list\n if (\n this.type === 'select' &&\n !['ArrowDown', 'ArrowUp'].includes(e.key) &&\n (e.key !== ' ' || this.typeToSelectTimeout)\n ) {\n if (e.key === ' ' || /^[a-zA0-9]+$/i.test(e.key)) {\n clearTimeout(this.typeToSelectTimeout);\n this.typeToSelectTimeout = window.setTimeout(() => {\n this.typeToSelect = '';\n this.typeToSelectTimeout = 0;\n }, 750);\n this.typeToSelect += e.key;\n this.setOptStartsWith();\n }\n return;\n }\n\n if (this.open && ['ArrowDown', 'ArrowUp'].includes(e.key)) {\n this.listBox.setFocus();\n return;\n }\n\n this.shouldOpen = true;\n // open dropdown if possible\n this.manageDropdownDisplay();\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n this.shouldFocus = true;\n }\n };\n\n // handles key down on options. Either 'picks'\n // an option or passes event back to input for search / filter\n private optionKeyDown = (\n e: KeyboardEvent & { target: HTMLNanoOptionElement }\n ) => {\n const ignoreKeys = [\n 'Shift',\n 'ArrowUp',\n 'ArrowDown',\n 'Escape',\n 'Enter',\n 'Tab',\n 'Space',\n 'PageUp',\n 'PageDown',\n 'Home',\n 'End',\n ' ',\n ];\n if (ignoreKeys.includes(e.key)) {\n if (e.key === 'Escape') this.connectedInput.focus();\n return;\n }\n\n const deleteKeys = ['Delete', 'Backspace'];\n // this passes whatever's typed back to our input control\n if (\n this.type !== 'select' &&\n (!this.exactMatch || deleteKeys.includes(e.key))\n ) {\n this.connectedInput.focus();\n }\n };\n\n // Component lifecycle\n\n connectedCallback() {\n this.watchInputChange();\n }\n\n componentDidLoad() {\n this.handleOptionsChange();\n this.openWatcher();\n }\n\n componentDidRender(): void {\n setTimeout(() => {\n if (!this.connectedInput)\n console.warn(\n 'no `nano-input` found. `nano-datalist` should be nested within an `nano-input` or linked via `input` prop',\n this.host\n );\n }, 500);\n }\n\n disconnectedCallback(): void {\n if (this.mo) {\n this.mo.disconnect();\n this.mo = undefined;\n }\n if (this.connectedInput) this.removeEventListeners(this.connectedInput);\n }\n\n render() {\n return (\n <Host\n class=\"nano-datalist\"\n role={this.actvOptEles.length ? 'listbox' : undefined}\n aria-owns={this.optionIds.length ? this.optionIds.join(' ') : undefined}\n aria-label={\n this.optionIds.length\n ? 'Select options from the list below'\n : undefined\n }\n >\n <nano-dropdown\n {...this.dropDownConfig}\n ref={(el) => (this.nanoDropdown = el)}\n dialogTitle=\"Select options from the list below\"\n class={{\n dlist__dropdown: true,\n 'dlist--isfiltered': this.isFiltered,\n }}\n onNanoAfterShow={this.handleShow}\n onNanoAfterHide={this.handleHide}\n role=\"group\"\n >\n <nano-menu\n hidden={!this.actvOptEles.length}\n type=\"listbox\"\n label={this.inputLabel ? this.inputLabel.textContent : undefined}\n class={{\n dlist__menu: true,\n 'dlist__menu--open': this.dropwdownOpen,\n }}\n tabIndex={-1}\n onNanoSelect={this.optSelected}\n onKeyDown={this.optionKeyDown}\n ref={(el) => (this.listBox = el)}\n >\n <slot name=\"list-top\" />\n <slot />\n <slot name=\"internal-opts\" />\n <slot name=\"list-bottom\" />\n </nano-menu>\n <nano-menu\n type=\"listbox\"\n label=\"No results found\"\n hidden={!!this.actvOptEles.length}\n class={{\n dlist__menu: true,\n 'dlist__menu--open': this.dropwdownOpen,\n }}\n >\n <slot name=\"no-result\" />\n </nano-menu>\n {!!this.actvOptEles && (\n <div class=\"dlist__status\">\n {this.actvOptEles.length} result\n {this.actvOptEles.length > 1 ? 's' : ''} available.\n </div>\n )}\n </nano-dropdown>\n </Host>\n );\n }\n}\n","@use 'sass:map';\n@use '../../global/style/nano-theme/tokens';\n\n:host {\n /**\n * @prop --padding-start: padding at the start of nav-items (left r2l / right l2r). Defaults to '10px'\n * @prop --padding-end: padding at the end of nav-items (right r2l / left l2r). Defaults to '10px'\n * @prop --padding-top: padding at the top of nav-items. Defaults to '10px'\n * @prop --padding-bottom: padding at the bottom of nav-items. Defaults to '10px'\n\n * @prop --secondary-padding-top: padding at the top of nested nav-items. Defaults to 0\n * @prop --secondary-padding-bottom: padding at the bottom of nested nav-items. Defaults to 0\n\n * @prop --bg-color-hover: bg hover color of nav-items. Defaults to #{map.get(tokens.$colors, blue--faded)};\n * @prop --bg-color-focus: bg focus color of nav-items. Defaults to #{map.get(tokens.$colors, blue--faded)};\n * @prop --bg-color-selected: bg selected color of nav-items. Defaults to #{map.get(tokens.$colors, blue--faded)};\n\n * @prop --color-hover: text hover color of nav-items. Defaults to #{map.get(tokens.$colors, blue)}\n * @prop --color-selected: text selected color of nav-items. Defaults to #{map.get(tokens.$colors, blue)}\n * @prop --color-focus: text focus color of nav-items. Defaults to #{map.get(tokens.$colors, blue)}\n\n * @prop --focus-outline: the focus style of nav-items. Defaults to 'none'\n * @prop --font-size: default font-size for all items. Defaults .9em;\n */\n\n --padding-start: #{tokens.$spacing-medium};\n --padding-end: #{tokens.$spacing-medium};\n --padding-top: #{tokens.$spacing-small};\n --padding-bottom: #{tokens.$spacing-small};\n --secondary-padding-top: 0;\n --secondary-padding-bottom: 0;\n --bg-color-hover: #{map.get(tokens.$colors, blue--faded)};\n --bg-color-focus: #{map.get(tokens.$colors, blue--faded)};\n --bg-color-selected: #{map.get(tokens.$colors, blue--faded)};\n --color-hover: #{map.get(tokens.$colors, blue)};\n --color-selected: #{map.get(tokens.$colors, blue)};\n --color-focus: #{map.get(tokens.$colors, blue)};\n --focus-outline: none;\n --font-size: 0.9em;\n\n display: block;\n}\n\n.menu {\n font-size: var(--font-size, 0.9em);\n overscroll-behavior: none;\n min-inline-size: var(--width);\n position: relative;\n\n &:focus {\n outline: none;\n }\n}\n\n::slotted(*:not(.nano-nav-item):not(.nano-option):not(hr):not(slot)) {\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: var(--padding-top) var(--padding-bottom);\n display: block;\n}\n","import {\n Component,\n Event,\n EventEmitter,\n Method,\n Host,\n Element,\n Prop,\n Listen,\n Build,\n} from '@stencil/core';\nimport { h, transformTag } from '../../utils/renderer';\nimport { getActiveElement } from '../../utils/active-element';\nimport { getDirectChildren } from '../../utils/dom';\nimport { getTextContent } from '../../utils/slot';\n\ntype ValidElement = HTMLNanoNavItemElement | HTMLNanoOptionElement;\ntype NNI = HTMLNanoNavItemElement;\n\n/**\n * Menu element. Commonly wrapped by `nano-dropdown` with `nano-option` and `nano-nav-item` elements nested.\n * Manages focus state / active.\n * @slot - The menu's content; `nano-option`, `nano-nav-item` elements as well as <hr> and more.\n */\n@Component({\n tag: 'nano-menu',\n styleUrl: 'menu.scss',\n shadow: true,\n})\nexport class Menu {\n private ignoreMouseEvents = false;\n private ignoreMouseTimeout: any;\n private menu: HTMLElement;\n private typeToSelect = '';\n private typeToSelectTimeout: any;\n\n @Element() private el: HTMLNanoMenuElement;\n\n // Public API\n\n /** get the focus state of the menu @readonly */\n @Prop()\n get hasFocus() {\n return this._hasFocus;\n }\n private _hasFocus = false;\n\n /** changes the role of the underlying control - sometimes required for semantics */\n @Prop() type: 'menu' | 'listbox' = 'menu';\n\n /** an accessible label */\n @Prop() label: string;\n\n // Events\n\n /** Emitted when the menu gains focus. */\n @Event() nanoFocus: EventEmitter;\n\n /** Emitted when the menu loses focus. */\n @Event() nanoBlur: EventEmitter;\n\n /** Emitted when a menu item is selected. */\n @Event() nanoSelect: EventEmitter<\n HTMLNanoOptionElement | HTMLNanoNavItemElement\n >;\n\n // Public Methods\n\n /** Sets focus on the menu. */\n @Method()\n async setFocus() {\n if (this.menu?.focus) this.menu.focus({ preventScroll: true });\n }\n\n /** Removes focus from the menu. */\n @Method()\n async removeFocus() {\n if (this.menu?.blur) this.menu.blur();\n }\n\n /** Sets the current active item */\n @Method()\n async showActiveElement() {\n if (this.selectedItem)\n this.selectedItem.scrollIntoView({ block: 'nearest' });\n }\n\n /** Removes any active item's state */\n @Method()\n async resetActiveItem() {\n this.getItems\n .filter((i) => i.tagName.toLowerCase() === transformTag('nano-option'))\n .map((i) => i.setAttribute('tabindex', '-1'));\n }\n\n // Private methods\n\n get getItems() {\n let items: ValidElement[];\n const opened = this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}.secondary-open`\n );\n if (opened.length) {\n const ctx = opened[opened.length - 1] as HTMLNanoNavItemElement;\n items = Array.from(\n ctx.querySelectorAll(\n `${transformTag('nano-nav-item')}, ${transformTag('nano-option')}`\n )\n );\n } else {\n items = getDirectChildren(\n this.el,\n `${transformTag('nano-nav-item')}, ${transformTag('nano-option')}`,\n 'slot'\n );\n }\n return items.filter((el) => !el.disabled && !el.hidden);\n }\n\n get activeItem() {\n const activeElement = getActiveElement();\n return this.getItems.find(\n (i) =>\n i.getAttribute('tabindex') === '0' ||\n i === activeElement ||\n i.classList.contains('has-focus')\n );\n }\n\n get selectedItem() {\n return this.getItems.find((i) => i.selected);\n }\n\n private async setActiveFocusItem(item?: ValidElement, focus = true) {\n const items = this.getItems;\n const activeItem = !item ? items.find((i) => i.selected) || items[0] : item;\n\n items\n .filter((i) => i.tagName.toLowerCase() === transformTag('nano-option'))\n .map((i: HTMLNanoOptionElement) =>\n i.setAttribute('tabindex', i === activeItem ? '0' : '-1')\n );\n\n if (!focus) return;\n\n if (activeItem) {\n if ((activeItem as NNI).setFocus) (activeItem as NNI).setFocus();\n else activeItem.focus();\n } else this.menu.focus();\n }\n\n // Event Handlers\n\n @Listen('mousedown', { target: 'body' })\n @Listen('keydown')\n handleBlur(e: KeyboardEvent | MouseEvent) {\n if (!this.hasFocus) return;\n\n const kev = e as KeyboardEvent;\n let found: boolean;\n\n if (kev.key) {\n if (kev.key !== 'Tab') return;\n found =\n getActiveElement() &&\n getActiveElement().closest(this.el.tagName.toLowerCase()) === this.el;\n } else found = !!e.composedPath().find((el) => el === this.el);\n\n if (!found) {\n this.resetActiveItem();\n this._hasFocus = false;\n this.nanoBlur.emit();\n }\n }\n\n private handleFocus = () => {\n this.setActiveFocusItem(this.selectedItem || this.getItems[0]);\n\n this._hasFocus = true;\n this.nanoFocus.emit();\n };\n\n private handleClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const item = target.closest<HTMLNanoNavItemElement>(\n transformTag('nano-nav-item')\n );\n\n if (item && !item.disabled) {\n this.nanoSelect.emit(item);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n // When keying through the menu, if the mouse happens to be hovering over a menu item and the menu scrolls, the\n // mouseout/mouseover event will fire causing the selection to be different than what the user expects. This gives\n // us a way to temporarily ignore mouse events while the user is interacting with a keyboard.\n clearTimeout(this.ignoreMouseTimeout);\n this.ignoreMouseTimeout = setTimeout(\n () => (this.ignoreMouseEvents = false),\n 500\n );\n this.ignoreMouseEvents = true;\n\n // Make a selection when pressing enter\n switch (event.key) {\n case ' ':\n if (this.activeItem) this.activeItem.click();\n break;\n case 'ArrowDown':\n case 'ArrowUp':\n case 'PageDown':\n case 'PageUp':\n case 'Home':\n case 'End': {\n const items = this.getItems;\n const selectedItem = this.activeItem;\n let index = items.indexOf(selectedItem);\n\n if (items.length) {\n event.preventDefault();\n\n if (event.key === 'ArrowDown') {\n index++;\n } else if (event.key === 'ArrowUp') {\n index--;\n } else if (event.key === 'Home' || event.key === 'PageUp') {\n index = 0;\n } else if (event.key === 'End' || event.key === 'PageDown') {\n index = items.length - 1;\n }\n\n if (index < 0) index = items.length - 1;\n if (index > items.length - 1) index = 0;\n\n this.setActiveFocusItem(items[index]);\n if (items[index]) items[index].scrollIntoView({ block: 'nearest' });\n return;\n }\n break;\n }\n }\n\n // Handle type-to-search behavior when non-control characters are entered\n if (event.key === ' ' || /^[a-z0-9]+$/i.test(event.key)) {\n clearTimeout(this.typeToSelectTimeout);\n this.typeToSelectTimeout = setTimeout(\n () => (this.typeToSelect = ''),\n 750\n );\n this.typeToSelect += event.key;\n\n const items = this.getItems;\n for (const item of items) {\n const slot: HTMLSlotElement =\n item.shadowRoot.querySelector('slot:not([name])');\n const label = getTextContent(slot).toLowerCase().trim();\n if (\n label.substring(0, this.typeToSelect.length) === this.typeToSelect\n ) {\n this.setActiveFocusItem(item);\n break;\n }\n }\n }\n };\n\n private handleMouseOver = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const item =\n target.closest<HTMLNanoNavItemElement>(transformTag('nano-nav-item')) ||\n target.closest<HTMLNanoOptionElement>(transformTag('nano-option'));\n\n if (item && !this.ignoreMouseEvents) {\n this.setActiveFocusItem(item);\n }\n };\n\n // Component Lifecycle\n\n componentDidLoad() {\n if (Build.isBrowser) {\n getDirectChildren(\n this.el,\n ':not(nano-nav-item):not(nano-option):not([role])',\n true\n ).forEach((el) => el.setAttribute('role', 'none'));\n }\n }\n\n render() {\n return (\n <Host role={this.type === 'menu' ? 'menu' : 'group'} class=\"nano-menu\">\n <div\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n onMouseOver={this.handleMouseOver}\n onFocus={this.handleFocus}\n aria-label={this.label ? this.label : undefined}\n ref={(el) => (this.menu = el)}\n part=\"base\"\n class={{\n menu: true,\n ['menu--' + this.type]: true,\n 'menu--has-focus': this.hasFocus,\n }}\n tabIndex={-1}\n role=\"group\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n","@use 'sass:map';\n@use '../../global/style/nano-theme/tokens';\n\n:host {\n /**\n * @prop --padding-top: Defaults to #{tokens.$spacing-small};\n * @prop --padding-bottom: Defaults to #{tokens.$spacing-small};\n * @prop --padding-start: Defaults to #{tokens.$spacing-small};\n * @prop --padding-end: Defaults to #{tokens.$spacing-small};\n\n * @prop --bg: default background. Defaults to none;\n * @prop --bg-selected: background when selected. Defaults to #{tokens.$select-opt-selected};\n * @prop --bg-focus: background when focused. Defaults to var(--nano-color-base, #{nano-color(primary, tint)});\n * @prop --bg-disabled: background when disabled. Defaults to none;\n\n * @prop --color: default text color. Defaults to var(--input-text-color, #{tokens.$input-text-color});\n * @prop --color-selected: text color when selected. Defaults to var(--nano-color-base, #{nano-color(primary, base)});\n * @prop --color-focus: text color when focused. Defaults to var(--nano-color-base, #{nano-color(primary, contrast)});\n * @prop --color-disabled: text color when disabled. Defaults to #{map.get(tokens.$colors, palegrey)};\n\n * @prop --opt-icon-size: Sizes all icons within the option. Defaults to 1.4em;\n */\n\n --bg: none;\n --bg-selected: #{tokens.$select-opt-selected};\n --bg-focus: var(--nano-color-base, #{tokens.nano-color(primary, tint)});\n --bg-disabled: none;\n --color: var(--input-text-color, #{tokens.$input-text-color});\n --color-selected: var(--nano-color-base, #{tokens.nano-color(primary, base)});\n --color-focus: var(--nano-color-contrast, #{tokens.nano-color(primary, contrast)});\n --color-disabled: #{map.get(tokens.$colors, palegrey)};\n --opt-icon-size: 1.6em;\n\n display: block;\n color: var(--color);\n overflow: hidden;\n font-size: 14px;\n font-size: #{'clamp(12px, .9em, 16px)'};\n}\n\n:host(:focus) {\n outline: none;\n}\n\n.option {\n $self: &;\n\n position: relative;\n user-select: none;\n cursor: pointer;\n display: flex;\n align-items: stretch;\n inline-size: 100%;\n background: var(--bg);\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: var(--padding-top) var(--padding-bottom);\n\n // focus\n :host(:focus) &:not(.option--disabled),\n :host &.option--selected {\n outline: none;\n background: var(--bg-selected);\n color: var(--color-selected);\n }\n\n :host(:focus) &:not(.option--disabled) {\n background: var(--bg-focus);\n color: var(--color-focus);\n }\n\n // disabled\n &.option--disabled {\n outline: none;\n color: var(--color-disabled);\n cursor: not-allowed;\n background: var(--bg-disabled);\n }\n\n // no value\n &.option--novalue {\n font-style: italic;\n opacity: 0.7;\n }\n\n &__label {\n flex: 1 1 auto;\n display: flex;\n align-items: center;\n }\n\n &__start {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n\n ::slotted(.nano-icon) {\n font-size: var(--opt-icon-size);\n }\n\n ::slotted(:last-child) {\n margin-inline-end: 0.5em;\n }\n }\n\n &__end {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n\n ::slotted(.nano-icon) {\n font-size: var(--opt-icon-size);\n }\n\n ::slotted(:first-child) {\n margin-inline-start: 0.5em;\n }\n }\n\n &__check {\n visibility: hidden;\n display: flex;\n position: absolute;\n inset-inline-start: 0.6em;\n inset-block-start: calc(50% - 0.6em);\n align-items: center;\n font-size: 0.9em;\n\n #{$self}--selected:not(#{$self}--novalue) & {\n visibility: visible;\n }\n }\n}\n","import {\n Component,\n Prop,\n Host,\n State,\n Watch,\n Element,\n Listen,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { h } from '../../utils/renderer';\nimport { getDirectChildren } from '../../utils/dom';\nimport { debounce } from '../../utils/throttle';\nimport type { OptionInterface } from './option-interface';\n\nlet optIds = 0;\n\n/**\n * Select options to be used with [nano-select](/story/nano-components-select) or [nano-datalist](/story/nano-components-select)\n *\n * @slot - main label. Defaults to `label` or `value` prop\n * @slot checked-icon - icon to indicated checked / selected state. Defaults to fontawesome light/check\n * @slot start - suitable for an icon or content displayed at the start of the main label\n * @slot end - suitable for an icon or content displayed at the end of the main label\n */\n@Component({\n tag: 'nano-option',\n styleUrl: 'option.scss',\n shadow: true,\n})\nexport class Option implements OptionInterface {\n private optId = `nano-option-${optIds++}`;\n @Element() host: HTMLNanoOptionElement;\n @State() hasFocus = false;\n\n constructor() {\n this.handleClick = debounce(this.handleClick.bind(this), 5);\n }\n\n // Public API\n\n /**\n * Value of the option\n */\n @Prop({ mutable: true, reflect: true }) value: string = '';\n\n @Watch('value')\n valueChanged() {\n if ((!this.value || !this.value.length) && !this.label)\n this.value = this.labelContent;\n }\n\n /**\n * Label of the option\n */\n @Prop({ mutable: true, reflect: true }) label: string = '';\n\n @Watch('label')\n labelChanged() {\n if (!this.label || !this.label.length)\n this.label = this.labelContent.length ? this.labelContent : this.value;\n }\n\n /**\n * Whether this option is selected\n */\n @Prop({ reflect: true }) selected: boolean = false;\n\n /**\n * Whether this option should be disabled\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /** You can add extra meta for this option. When displayed in a list, users\n * search / filter via extra related terms. Another usecase is 'endonyms'\n */\n @Prop() filterMeta: string = '';\n\n /** Fired when an option is selected */\n @Event() nanoSelect!: EventEmitter<HTMLNanoOptionElement>;\n\n // Event handlers\n\n // stop scrolling on select\n @Listen('keydown')\n handleKeyDown(e: KeyboardEvent) {\n if (e.key !== ' ' && e.key !== 'Enter') return;\n e.preventDefault();\n this.nanoSelect.emit(this.host);\n }\n\n private handleClick() {\n if (this.disabled) return;\n this.nanoSelect.emit(this.host);\n }\n\n // Private logic\n\n private get labelContent() {\n return getDirectChildren(this.host, '*:not([slot])', false)\n .map((el) => el.textContent)\n .join(' ')\n .trim();\n }\n\n // Component lifecycle\n\n componentWillLoad() {\n this.valueChanged();\n this.labelChanged();\n }\n\n render() {\n return (\n <Host\n role=\"option\"\n aria-selected={this.selected ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n class=\"nano-option\"\n >\n <div\n onMouseDown={this.handleClick}\n id={this.optId}\n class={{\n option: true,\n 'option--selected': this.selected,\n 'option--disabled': this.disabled,\n 'option--novalue': !this.value,\n }}\n >\n <div part=\"check-icon\" class=\"option__check\">\n <slot name=\"check-icon\">\n <nano-icon name=\"light/check\" aria-hidden=\"true\" />\n </slot>\n </div>\n <div part=\"start\" class=\"option__start\">\n <slot name=\"start\"></slot>\n </div>\n <div part=\"label\" class=\"option__label\">\n <slot>{this.label || this.value}</slot>\n </div>\n <div part=\"end\" class=\"option__end\">\n <slot name=\"end\"></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import{r as n,j as e,c as t,g as a,a as s}from"./index-6cc72cd9.js";import{h as o,t as i}from"./renderer-4bc3e2dc.js";import{b as l,g as r,c}from"./dom-fafdec9a.js";import{d}from"./transitions-c09bd7f6.js";import{g as h}from"./tabbable-44932eb7.js";import{g as u}from"./active-element-a2502948.js";import{c as b}from"./theme-d553c17a.js";import{d as f,a as p}from"./throttle-df960210.js";import{F as m,a as v}from"./form-control-f48fa873.js";const g=class{constructor(e){n(this,e)}myAccountUser;userProfileUrl;render(){return!!this.myAccountUser&&o("a",{key:"af80219c25fba785b6f7d18afef4a41b9ced4765",href:this.userProfileUrl,class:"user-profile"},o("div",{key:"6ae0f4f9b48782faadb43d1594159e3fad9ee63d",class:"left"},o("div",{key:"0bd20abade1f0fe5822aba9c2217d80124d62b20",class:"avatar-container"},o("img",{key:"1a7096bd20754f3faf5ab150da0ebe2fe2684188",class:"avatar",src:this.myAccountUser?.small_avatar_url,alt:"User Avatar",height:75,width:75}),this.myAccountUser.is_nanopore_user&&o("img",{key:"ad532ddde8267a7049820fb7ae39f0302f208db9",class:"logo-small",src:e(`../nano-assets/ont-wheel-light.svg`),alt:"Nanopore Logo"})),o("div",{key:"9521c0b57fcb9343a746b0d0243f111e0a014100",class:"user-details"},o("span",{key:"710b0ab535abe256c1d778f0e7deda1f23465fb9",class:"name"},this.myAccountUser.name),o("span",{key:"c4e782a0a9e70b7e160bfd466430126d6d77cb28",class:"bio"},this.myAccountUser.job_title," at ",this.myAccountUser.company))),o("div",{key:"3725605d921254382356a40da96c45a9cc54d401",class:"right"},o("div",{key:"fd99f869ee248ce594b5fef4fe310cfe9a127dd4",class:"chevron-right"},o("nano-icon",{key:"4e548bc839e06498c1f1641af7fe30715e572d97",slot:"icon-end",name:"light/chevron-right"}))))}};const _=':host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{opacity:inherit;display:block;color:var(--color) !important;margin:var(--margin);outline:none !important}:host .nav-item,:host .link{outline:none !important;border-radius:inherit}:host ::slotted(*),:host *{box-sizing:border-box}:host ::slotted(button),:host button{background:none;border:none;margin:0}:host ::slotted(button),:host ::slotted(a),:host ::slotted(a:visited),:host button,:host a,:host a:visited{font-family:inherit;font-size:inherit;font-stretch:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;padding-inline:var(--padding-start) var(--padding-end);padding-block:var(--padding-top) var(--padding-bottom);display:var(--display, block);white-space:nowrap;color:var(--color) !important;background-color:var(--bg-color);line-height:inherit;outline:none !important}:host ::slotted(.nano-icon[slot=icon-start]){padding-inline-end:var(--padding-end)}:host ::slotted(.nano-icon[slot=icon-end]){padding-inline-start:var(--padding-start)}:host .link ::slotted(.nano-icon[slot=icon-start]){padding-inline:var(--padding-start) 0}:host .link ::slotted(.nano-icon[slot=icon-end]){padding-inline:0 var(--padding-end)}:host .link,:host button,:host a{border-block-end:var(--border-bottom);display:flex;align-items:center;border-radius:inherit}:host .secondary-menu{display:none}:host ::slotted(a:hover),:host ::slotted(button:hover),:host .link:hover,:host button:hover,:host a:hover{text-decoration:inherit !important}:host button:focus-visible,:host a:focus-visible{color:var(--color-focus, var(--color-hover, var(--color))) !important;background-color:var(--bg-color-focus, var(--bg-color-hover, var(--bg-color)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}:host ::slotted(a:focus-visible),:host ::slotted(button:focus-visible){color:var(--color-focus, var(--color-hover, var(--color))) !important;background-color:var(--bg-color-focus, var(--bg-color-hover, var(--bg-color)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.nav-item.selected .link,.nav-item.selected button,.nav-item.selected a{color:var(--color-selected, var(--color-open, var(--color))) !important;background-color:var(--bg-color-selected, var(--bg-color-open, var(--bg-color)))}.nav-item.secondary-open button,.nav-item.secondary-open a{color:var(--color-open, var(--color-selected, var(--color))) !important;background-color:var(--bg-color-open, var(--secondary-bg-color, var(--bg-color-selected, var(--bg-color))))}.nav-item.disabled{opacity:0.6}.nav-item.disabled button,.nav-item.disabled a{color:var(--color-disabled, var(--color)) !important}.nav-item:not(.nano-menu) ::slotted(a:hover),.nav-item:not(.nano-menu) ::slotted(button:hover),.nav-item:not(.nano-menu) .link:hover,.nav-item:not(.nano-menu) button:hover,.nav-item:not(.nano-menu) a:hover{color:var(--color-hover, var(--color-hover, var(--color))) !important;background-color:var(--bg-color-hover, var(--bg-color-focus, var(--bg-color)))}:host(.has-focus) .link{color:var(--color-focus, var(--color-hover, var(--color))) !important;background-color:var(--bg-color-focus, var(--bg-color-hover, var(--bg-color)));outline:var(--focus-outline, 5px auto -webkit-focus-ring-color)}:host(.nano-global-nav-menu) a,:host(.nano-global-nav-menu) a:visited,:host(.nano-global-nav-menu) button,:host(.nano-global-nav-menu) .link,:host(.nano-menu) a,:host(.nano-menu) a:visited,:host(.nano-menu) button,:host(.nano-menu) .link{display:flex;justify-content:flex-start;flex-direction:row;align-items:center;color:currentcolor;text-decoration:inherit;white-space:normal;cursor:pointer;line-height:1.2;inline-size:100%}:host(.nano-global-nav-menu) .text,:host(.nano-menu) .text{padding-inline:0 var(--padding-end);flex:1}:host(.nano-global-nav-menu) ::slotted(a),:host(.nano-global-nav-menu) ::slotted(button),:host(.nano-menu) ::slotted(a),:host(.nano-menu) ::slotted(button){flex:1}:host(.nano-global-nav-menu) .secondary-menu,:host(.nano-menu) .secondary-menu{display:none;position:absolute;color:var(--secondary-color, currentcolor);min-block-size:100%;inset-block-start:0;inset-inline-start:0;inline-size:100%;z-index:1;opacity:0;transition:opacity 0.3s ease, transform 0.3s ease;background-color:var(--secondary-bg-color, white);transform:translate3d(100%, 0, 0)}:host(.nano-global-nav-menu) .secondary-menu:focus,:host(.nano-menu) .secondary-menu:focus{outline:none}:host(.nano-global-nav-menu) .secondary-menu.open,:host(.nano-menu) .secondary-menu.open{opacity:1;transform:translate3d(0, 0, 0);transition:opacity 0.3s ease, transform 0.3s ease}:host(.nano-global-nav-menu) ::slotted(.nano-icon[slot=icon-start]){padding-inline:0 var(--padding-end);padding-block:0}:host(.nano-global-nav-menu) ::slotted(.nano-icon[slot=icon-end]){padding-inline:0 var(--padding-end);padding-block:0;font-size:10px;flex:0 0 10px;pointer-events:none}:host(.nano-global-nav-menu) button ::slotted(.nano-icon[slot=icon-end]),:host(.nano-global-nav-menu) a ::slotted(.nano-icon[slot=icon-end]){padding:0}:host(.nano-global-nav-menu[dir=rtl]) .secondary-menu,:host(.nano-menu[dir=rtl]) .secondary-menu{transform:translateX(-100%)}:host(.nano-global-nav-menu[dir=rtl]) .secondary-menu.open,:host(.nano-menu[dir=rtl]) .secondary-menu.open{transform:translateX(0)}:host(.nano-menu) ::slotted(a:focus),:host(.nano-menu) ::slotted(button:focus){box-shadow:none}:host(.nano-menu) .secondary-menu-content{padding-inline:var(--secondary-padding-start) var(--secondary-padding-end);padding-block:var(--secondary-padding-top) var(--secondary-padding-bottom)}:host(.nano-global-nav-bar) .link,:host(.nano-global-nav-bar) a,:host(.nano-global-nav-bar) button{display:flex;align-items:center;cursor:pointer}:host(.nano-global-nav-bar) .text{flex:1 0 auto}:host(.nano-global-nav-bar) ::slotted(.nano-icon[slot=icon-end]){margin-inline:var(--padding-end) 0;margin-block:0}:host(.nano-global-nav-bar) ::slotted(.nano-icon[slot=icon-start]){margin-inline:0 var(--padding-start);margin-block:0}:host(.nano-global-nav-bar) ::slotted(a),:host(.nano-global-nav-bar) button{position:relative}:host(.nano-global-nav-bar) ::slotted(a)::before,:host(.nano-global-nav-bar) button::before{content:"";background-color:rgb(12, 90, 113);block-size:9px;inset-inline:0 5px;inset-block-end:-22px;position:absolute;transform:translateZ(0) scaleX(0);transform-origin:0;transition:transform 0.2s ease}:host(.nano-global-nav-bar) .secondary-open button::before{transform:translateZ(0) scaleX(1)}:host(.nano-global-nav-bar.selected) ::slotted(a)::before,:host(.nano-global-nav-bar.selected) button::before{transform:translateZ(0) scaleX(1)}:host(.nano-global-nav-bar.has-secondary) .secondary-open button::before{opacity:0.7}:host(.nano-global-nav-bar.has-secondary) .secondary-menu{display:none;transition:transform 0.3s ease;transform:translateY(-100%) translateZ(0);background-color:var(--secondary-bg-color, #196c82);color:var(--secondary-color);position:absolute;box-shadow:0 1px 25px 0 rgba(0, 0, 0, 0.15);inset-inline:0;z-index:-2;outline:none}:host(.nano-global-nav-bar.has-secondary) .secondary-menu.open{transform:translateY(12px) translateZ(0)}:host(.nano-menu-drawer) .link,:host(.nano-menu-drawer) a,:host(.nano-menu-drawer) button{padding-block:calc(var(--padding-top) / 2) calc(var(--padding-bottom) / 2);padding-inline:var(--padding-start) 0;display:flex;justify-content:flex-start;flex-direction:row;align-items:center;color:currentcolor;text-decoration:inherit;white-space:normal;border:none;cursor:pointer;line-height:1.2;inline-size:100%}:host(.nano-menu-drawer) .text{padding-inline:0 var(--padding-end);text-align:start;flex:0 1 auto;min-inline-size:130px;inline-size:130px}:host(.nano-menu-drawer) ::slotted(.nano-icon[slot=icon-start]){padding-inline:0 var(--padding-end);padding-block:0;font-size:var(--icon-size);inline-size:var(--icon-size);flex:0 0 var(--icon-size)}:host(.nano-menu-drawer) ::slotted(.nano-icon[slot=icon-end]){padding:0 var(--padding-end) 0 0;font-size:10px;flex:0 0 20px;min-inline-size:20px}:host(.nano-menu-drawer) .secondary-menu{display:none;position:absolute;background-color:var(--secondary-bg-color);color:var(--secondary-color);block-size:100vh;inset-inline:auto 0;inset-block:0;transform:translateX(0);z-index:-1;transition:transform 0.3s ease, opacity 0.2s ease;overflow-y:auto;inline-size:var(--secondary-width, 400px);max-inline-size:62vw;opacity:1;padding-inline:var(--secondary-padding-start, var(--padding-start)) var(--secondary-padding-end, var(--padding-end));padding-block:var(--secondary-padding-top, var(--padding-top)) var(--secondary-padding-bottom, var(--padding-bottom))}:host(.nano-menu-drawer) .secondary-menu:focus{outline:none}:host(.nano-menu-drawer) .secondary-menu.open{transform:translateX(100%)}:host(.nano-menu-drawer) .notification{position:relative}:host(.nano-menu-drawer) .notification::after{content:"";display:block;position:absolute;inline-size:6px;block-size:6px;background-color:#ef4135;inset-inline-start:10px;inset-block-start:7px;border-radius:50%}@media (width >= 52em){:host(.nano-menu-drawer) .notification::after{inline-size:7px;block-size:7px;inset-inline-start:8px;inset-block-start:5px}}:host(.nano-menu-drawer[dir=rtl]) .secondary-menu{transform:translateX(0%)}:host(.nano-menu-drawer[dir=rtl]) .secondary-menu.open{transform:translateX(-100%);opacity:1}';const y=_;const x=class{constructor(e){n(this,e);this.nanoClose=t(this,"nanoClose",7);this.nanoOpen=t(this,"nanoOpen",7);this.nanoOpening=t(this,"nanoOpening",7);this.nanoClosing=t(this,"nanoClosing",7);this.nanoBlur=t(this,"nanoBlur",7);this.nanoFocus=t(this,"nanoFocus",7)}hasSecondarySlot=false;btn;fromHover;animating=false;waitHide;waitShow;globalNavEle;secondaryDiv;hasAnchorEle=false;didOpen=false;isInGlobalNav=false;isInMenuDrawer=false;isInMenu=false;hasFocus=false;get el(){return a(this)}href=null;target="_self";disabled=false;open=false;selected=false;secondaryActiveWidth=0;secondaryFallback=()=>{};closeOnBlur=true;notification=false;nanoClose;nanoOpen;nanoOpening;nanoClosing;nanoBlur;nanoFocus;async setFocus(){if(!this.btn)return;this.btn.focus()}openChange(){if(this.open)this.openSecondary();else this.closeSecondary()}didOpenChange(){if(!this.hasSecondarySlot)return;if(!this.didOpen){setTimeout((()=>{if(!this.fromHover&&(!document.activeElement||document.activeElement===document.body))this.btn.focus({preventScroll:true});this.el.tabIndex=null;this.nanoClose.emit({secondaryMenu:this.secondaryDiv})}),50)}else{if(!this.fromHover){const n=new window.IntersectionObserver((e=>{if(e[0].boundingClientRect.top<0){this.secondaryDiv.scrollIntoView({behavior:"smooth"})}n.disconnect()}),{threshold:1});n.observe(this.secondaryDiv);this.secondaryDiv.focus({preventScroll:true});const e=h(this.secondaryDiv,true);if(e[0])e[0].focus();this.el.tabIndex=-1;this.nanoOpen.emit({secondaryMenu:this.secondaryDiv})}}}handleClose(n){if(!this.didOpen||!this.hasSecondarySlot||!this.closeOnBlur)return;if(!n.composedPath().some((n=>n===this.secondaryDiv)))this.toggleSecondary()}closeSecondary=async()=>{if(!this.hasSecondarySlot||!this.didOpen)return;this.open=false;await d(this.secondaryDiv,{className:"open",show:false});this.nanoClosing.emit({secondaryMenu:this.secondaryDiv});this.didOpen=false};openSecondary=async()=>{if(window.innerWidth<this.secondaryActiveWidth){this.secondaryFallback.call(this);return}if(!this.hasSecondarySlot||this.didOpen)return;this.open=true;await d(this.secondaryDiv,{className:"open",show:true});this.nanoOpening.emit({secondaryMenu:this.secondaryDiv});this.didOpen=true};toggleSecondary=()=>{if(!this.hasSecondarySlot)return;if(this.didOpen)this.closeSecondary();else this.openSecondary()};handleFocus=()=>{this.hasFocus=true;if(this.href&&!this.animating&&this.hasSecondarySlot)this.openSecondary();this.nanoFocus.emit()};handleHostBlur=()=>{if(this.animating)return;this.el.removeAttribute("tabindex");this.hasFocus=false;this.nanoBlur.emit()};handleHostClick=n=>{if(!this.hasAnchorEle)return;const e=n.target.closest("a, button");if(!e)this.btn.click()};handleMouseEnter=async()=>{if(!this.href||this.animating||!this.hasSecondarySlot||this.globalNavEle&&!this.globalNavEle.classList.contains("ready"))return;let n=0;if(l(this.el,".secondary-open.has-secondary").length)n=300;clearTimeout(this.waitHide);this.fromHover=true;this.animating=true;this.waitShow=window.setTimeout((async()=>await this.openSecondary()),n);this.animating=false};handleMouseLeave=()=>{if(!this.href)return;clearTimeout(this.waitShow);this.fromHover=true;this.animating=true;this.waitHide=window.setTimeout((async()=>await this.closeSecondary()),300);this.animating=false};handleClick=()=>{this.fromHover=false;if(this.hasSecondarySlot)this.toggleSecondary()};connectedCallback(){const n=this.el.querySelector('[slot="secondary"]');this.hasSecondarySlot=!!n;const e=r(this.el,"a, button")[0];this.hasAnchorEle=!!e;if(e){this.href=e.href?e.href:null;this.btn=e;if(this.hasSecondarySlot)this.btn.addEventListener("click",this.toggleSecondary);this.btn.addEventListener("focus",this.handleFocus);this.btn.addEventListener("blur",this.handleHostBlur)}this.isInGlobalNav=false;this.isInMenuDrawer=false;this.globalNavEle=this.el.closest(i("nano-global-nav"));this.isInMenuDrawer=!!this.el.closest(i("nano-menu-drawer"));this.isInMenu=!!this.el.closest(i("nano-menu"));this.isInGlobalNav=this.el.parentElement===this.globalNavEle||!!this.el.closest(".global-nav")}componentDidLoad(){this.openChange()}disconnectedCallback(){this.btn.removeEventListener("click",this.toggleSecondary);this.btn.removeEventListener("focus",this.handleFocus);this.btn.removeEventListener("blur",this.handleHostBlur)}render(){return o(s,{key:"5919fe6851a8132a0da2c592c6adf977113c3983",class:{"has-secondary":this.hasSecondarySlot,"secondary-open":this.open,selected:this.selected,"has-focus":this.hasFocus,disabled:this.disabled,"nano-global-nav":this.isInGlobalNav,"nano-menu-drawer":this.isInMenuDrawer,"nano-menu":this.isInMenu,"nano-nav-item":true},onBlur:this.handleHostBlur,dir:this.el.ownerDocument.dir==="rtl"?"rtl":null,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onClick:this.handleHostClick,role:this.el.closest('[role="menu"]')?"menuitem":undefined},o("div",{key:"a05002c6eae1e2107453b02f91f6d7467744bc94",class:{"nav-item":true,"secondary-open":this.open,selected:this.selected},part:"ctrl-wrapper"},this.href&&!this.hasAnchorEle&&!this.disabled&&o("a",{key:"7ee0a4a54692664dd7b9d1f9e3d20215542929b3",part:"ctrl ctrl--anchor",target:this.target,ref:n=>this.btn=n,href:this.href,onFocus:this.handleFocus,class:{notification:this.notification}},o("slot",{key:"7795fd5db028cd67ba1511619a5be68dc1f3ed51",name:"icon-start"}),o("span",{key:"e5373722117ca7adc74c0dc59fca8e20f6503099",class:"text"},o("slot",{key:"e1e1ebb8b1b18245fb1fff5795ba8c31c967d399"})),o("slot",{key:"63dc5d008a47f44c292ac17bb061944f488b176e",name:"icon-end"})),(!this.hasAnchorEle&&!this.href||this.disabled)&&o("button",{key:"cd84e3be0022646f164e52663b4b1266c08d582f",part:"ctrl ctrl--button",ref:n=>this.btn=n,onClick:this.handleClick,onFocus:this.handleFocus,disabled:this.disabled,class:{notification:this.notification}},o("slot",{key:"9ae194d22d839cf97257c01b1fca424bb4b8e6d1",name:"icon-start"}),o("span",{key:"eff83bc860b026e62a57b4eede50913d65eabf06",class:"text"},o("slot",{key:"41996ab72195124b483872ec231a5ca74fc73f9e"})),o("slot",{key:"1ef36027a860dfcf86e0f9f7c90ec49053fad9ff",name:"icon-end"})),this.hasAnchorEle&&!this.disabled&&o("div",{key:"5c9ab8780e84391ef3b2b1350a8b89e7343b635a",class:"link"},o("slot",{key:"a673392b8038993b07c9bcff7312ca63ce077738",name:"icon-start"}),o("slot",{key:"7678cd1e024dc47694849ef3fd2ab89138857675"}),o("slot",{key:"15cedad4ab1d11c4fc0ce7d1867db7bfd59cccd3",name:"icon-end"})),this.hasSecondarySlot&&!this.disabled&&o("div",{key:"8c274fc1b47d8365321105ed13233abaa77bf408",class:"secondary-menu",ref:n=>this.secondaryDiv=n,tabIndex:-1},o("div",{key:"f25ebc76515bdce5a8f04119da028b11acc0c9df",class:"secondary-menu-content",part:"secondary-wrapper"},o("slot",{key:"8d38f82ab2ebb96ec60d07716309ebc2b45d8f3b",name:"secondary"})),o("div",{key:"07404964bfdce1b0ed694308524f9eef30454efa",class:"secondary-menu-mask",onClick:this.closeSecondary,part:"secondary-mask"}))))}static get watchers(){return{open:["openChange"],didOpen:["didOpenChange"]}}};x.style=y;const k='.sc-nano-select-h {\n box-sizing: border-box;\n}\n\n*.sc-nano-select, *.sc-nano-select::before, *.sc-nano-select::after {\n box-sizing: border-box;\n}\n[hidden].sc-nano-select {\n display: none !important;\n}\n.sc-nano-select-h {\n box-sizing: border-box;\n}\n\n*.sc-nano-select, *.sc-nano-select::before, *.sc-nano-select::after {\n box-sizing: border-box;\n}\n[hidden].sc-nano-select {\n display: none !important;\n}\n[disabled].sc-nano-select-h:not([disabled=false]) {\n opacity: 0.5;\n}\n\n.form-ctrl.sc-nano-select {\n min-inline-size: 100%;\n display: block;\n}\n.form-ctrl.has-helper-end.sc-nano-select {\n display: flex;\n gap: 1rem;\n container-type: inline-size;\n}\n.form-ctrl.has-helper-end.sc-nano-select .form-ctrl__wrapper.sc-nano-select {\n flex: 1 1 100%;\n}\n.form-ctrl.has-helper-end.sc-nano-select .form-ctrl__helper-end.sc-nano-select {\n display: none;\n}\n@container (min-width: 350px) {\n .form-ctrl.has-helper-end .form-ctrl__helper-end {\n display: block !important;\n }\n .form-ctrl.has-helper-end .form-ctrl__helper {\n display: none !important;\n }\n}\n\n.form-ctrl__wrapper.sc-nano-select {\n display: block;\n}\n\nlabel.sc-nano-select, .form-ctrl__more.sc-nano-select, .form-ctrl__error.sc-nano-select, .form-ctrl__helper.sc-nano-select {\n display: block;\n inline-size: 100%;\n overflow: clip;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\nlabel.visually-hide.sc-nano-select, .form-ctrl__more.visually-hide.sc-nano-select, .form-ctrl__error.visually-hide.sc-nano-select, .form-ctrl__helper.visually-hide.sc-nano-select {\n clip: rect(1px, 1px, 1px, 1px);\n clip-path: inset(50%);\n block-size: 1px;\n inline-size: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n}\n\n.form-ctrl__float-label.sc-nano-select {\n padding-block: 0;\n padding-inline: var(--padding-start) 0;\n color: var(--label-color);\n position: absolute;\n font-size: 1.15em;\n transform: translateY(-50%);\n transform-origin: top left;\n inset-block-start: 50%;\n transition: all 0.125s ease-in;\n opacity: 1;\n}\n.has-focus.sc-nano-select-h .form-ctrl__float-label.sc-nano-select, .has-value.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(-110%);\n font-size: 0.8em;\n opacity: 0.7;\n}\n.form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-select-h .form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select, .has-value.sc-nano-select-h .form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n opacity: 1;\n}\n.form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 50%;\n}\n.has-focus.sc-nano-select-h .form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n.has-value.sc-nano-select-h .form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n\n.form-ctrl__label.sc-nano-select {\n color: var(--label-color);\n font-size: var(--label-font-size);\n padding-block-end: var(--padding-bottom);\n line-height: 1;\n display: flex;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-wrap.sc-nano-select {\n flex: 1;\n overflow-x: clip;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-placeholder.sc-nano-select {\n margin-block: unset;\n margin-inline: 0 5px;\n opacity: 0;\n appearance: none;\n transition: 0.3s ease opacity;\n font-size: 0.85em;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n margin-block: unset;\n margin-inline: auto 0;\n font-size: 0.9em;\n opacity: 0.5;\n}\n.has-value.sc-nano-select-h .form-ctrl__label.sc-nano-select .form-ctrl__label-placeholder.sc-nano-select {\n opacity: 0.5;\n}\n.has-focus.sc-nano-select-h .form-ctrl__label.sc-nano-select {\n color: var(--label-color--focus);\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__label.sc-nano-select {\n color: var(--label-color--invalid);\n}\n\n.has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-select-h .has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-focus.sc-nano-select-h .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-focus.sc-nano-select-h .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select {\n opacity: 1;\n}\n\n.form-ctrl__more.sc-nano-select {\n block-size: 1em;\n position: relative;\n margin-block: 4px var(--padding-bottom);\n margin-inline: 3px 0;\n}\n\n.form-ctrl__helper.sc-nano-select, .form-ctrl__error.sc-nano-select {\n inset-block-start: 0;\n inset-inline-start: 0;\n position: absolute;\n font-size: var(--invalid-msg-font-size);\n line-height: 1.2;\n transition: 0.3s ease-out opacity;\n}\n\n.form-ctrl__helper.sc-nano-select {\n font-style: italic;\n color: var(--help-msg-color);\n}\n[show-inline-error].sc-nano-select-h:not([show-inline-error=false]):not([disabled]).is-invalid .form-ctrl__helper.sc-nano-select {\n opacity: 0;\n}\n\n.form-ctrl__helper-end.sc-nano-select {\n flex: 1 1 30%;\n min-inline-size: 150px;\n font-size: var(--invalid-msg-font-size);\n color: var(--help-msg-color);\n font-style: italic;\n}\n\n.form-ctrl__error.sc-nano-select {\n opacity: 0;\n color: var(--invalid-msg-color);\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__error.sc-nano-select {\n opacity: 1;\n}\n\n.form-ctrl__input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n border-radius: var(--input-border-radius);\n inline-size: 100%;\n padding: 0 !important;\n position: relative;\n flex: 1 0 auto;\n display: flex;\n background: var(--input-bg-color);\n border: var(--input-border-style);\n border-width: var(--input-border-width);\n font-size: var(--input-font-size);\n padding-inline-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n}\n.has-focus.sc-nano-select-h .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--focus);\n border: var(--input-border-style--focus);\n border-width: var(--input-border-width);\n padding-inline-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--invalid);\n border: var(--input-border-style--invalid);\n border-width: var(--input-border-width);\n border-inline-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n padding-inline-start: 0 !important;\n}\n.is-invalid.has-focus.sc-nano-select-h:not([disabled]) .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--invalid);\n border: var(--input-border-style--invalid-focus);\n border-width: var(--input-border-width);\n border-inline-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n padding-inline-start: 0 !important;\n}\n\n.form-ctrl__input-wrap.sc-nano-select {\n display: flex;\n align-items: stretch;\n flex: 1;\n max-inline-size: 100%;\n}\n\n.form-ctrl__clear-btn.sc-nano-select, .form-ctrl__slot-end.sc-nano-select, .form-ctrl__slot-start.sc-nano-select, .form-ctrl__slot-value-end.sc-nano-select {\n --nano-icon-size: 1.4em;\n margin-block: 0;\n margin-inline: 0;\n font-size: 1em;\n border: 0;\n outline: none;\n background-color: transparent;\n background-repeat: no-repeat;\n display: flex;\n align-items: stretch;\n inline-size: auto;\n}\n\n.has-float-label.sc-nano-select .form-ctrl__slot-start.sc-nano-select {\n display: none;\n}\n\n.form-ctrl__slot-start.sc-nano-select-s > *, .form-ctrl__slot-start.sc-nano-select-s > *, .form-ctrl__slot-start .sc-nano-select-s > *, .form-ctrl__slot-end.sc-nano-select-s > *, .form-ctrl__slot-end.sc-nano-select-s > *, .form-ctrl__slot-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n --nano-icon-size: 1.4em;\n padding-inline: unset;\n padding-inline: var(--padding-start) var(--padding-end);\n font-size: 1em;\n align-items: center;\n display: flex;\n block-size: 100%;\n z-index: 1;\n}\n.sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-start.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-start.sc-nano-select-s > *, .form-ctrl__slot-start .sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-end.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-end.sc-nano-select-s > *, .form-ctrl__slot-end .sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end .sc-nano-select-s > *, [disabled].sc-nano-select-h:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n pointer-events: none;\n}\n\n.form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n pointer-events: none;\n}\n\n.form-ctrl__clear-btn.sc-nano-select {\n color: var(--clear-btn-color);\n padding: 0;\n opacity: 0;\n inline-size: 0;\n appearance: none;\n align-items: center;\n overflow: hidden;\n}\n.is-invalid.sc-nano-select-h .form-ctrl__clear-btn.sc-nano-select {\n color: var(--clear-btn-color--invalid);\n}\n.has-value.sc-nano-select-h .form-ctrl__clear-btn.sc-nano-select {\n padding-block: 0;\n padding-inline: var(--padding-start) var(--padding-end);\n opacity: 1;\n inline-size: auto;\n}\n.form-ctrl__clear-btn.sc-nano-select:hover {\n color: var(--clear-btn-color--hover);\n}\n\n.sc-nano-select-h {\n \n --placeholder-color: var(--nano-input-placeholder-color, initial);\n --placeholder-font-style: var(--nano-input-placeholder-style, initial);\n --placeholder-font-weight: var(--nano-input-placeholder-weight, initial);\n --placeholder-opacity: var(--nano-input-placeholder-opacity, 0.5);\n --padding-top: var(--nano-input-padding-top, var(--nano-input-padding, 8px));\n --padding-end: var(--nano-input-padding-end, var(--nano-input-padding, 8px));\n --padding-bottom: var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));\n --padding-start: var(--nano-input-padding-start, var(--nano-input-padding, 8px));\n --color-invalid: nano-color(danger, base, , true);\n --color--focus-rgb:\n var(\n --nano-color-base-rgb,\n nano-color(primary, base, , true)\n );\n --input-font-size: var(--nano-input-font-size, 0.87em);\n --input-text-color: var(--nano-input-text-color, #4a4a4a);\n --input-border-width: var(--nano-input-border-width, 1px);\n --input-border-hint-width: 3px;\n --input-border-color: var(--nano-input-border-color, #e4e6e8);\n --input-border-radius: var(--nano-input-border-radius, 0);\n --input-border-style: var(--nano-input-border-style, solid) var(--nano-input-border-color, #e4e6e8);\n --input-border-style--focus: var(--nano-input-border-style, solid) var(--nano-input-border-color--focus, #90c6e7);\n --input-border-style--invalid: var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #e4e6e8);\n --input-border-style--invalid-focus: var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #ef4135);\n --input-bg-color: var(--nano-input-background-color, #fff);\n --input-bg-color--focus: var(--input-bg-color);\n --input-bg-color--invalid: var(--nano-input-background-color, white);\n --invalid-msg-color: rgb(var(--color-invalid) / 100%);\n --invalid-msg-font-size: var(--nano-input-help-font-size, 0.75em);\n --help-msg-color: var(--nano-input-help-color, #616d6e);\n --clear-btn-color: var(--nano-clear-btn-color, rgba(0, 0, 0, 0.3));\n --clear-btn-color--hover: rgb(var(--color--focus-rgb) / 100%);\n --clear-btn-color--invalid: rgb(var(--color-invalid) / 100%);\n --label-color: var(--nano-input-label-color, "currentcolor");\n --label-color--focus: var(--label-color);\n --label-color--invalid: var(--nano-input-label-color-invalid, "currentcolor");\n --label-font-size: var(--nano-input-label-color, 1em);\n --multi-input-value-bg: var(--nano-input-tag-bg, 186 220 240);\n --multi-input-value-text-color: var(--nano-input-tag-color, #455556);\n --multi-input-value-border: var(--nano-input-tag-color, #badcf0);\n \n position: relative;\n inline-size: 100%;\n padding: 0 !important;\n font-family: var(--nano-font-family, inherit);\n display: block;\n}\n\n.nano-color.sc-nano-select-h {\n --input-border-style--focus:\n var(--nano-input-border-style, solid) var(\n --nano-color-tint,\n var(--nano-color-primary-tint, #2689a5)\n );\n --multi-input-value-bg: var(--nano-color-tint-rgb);\n --multi-input-value-border: var(--nano-color-shade);\n --multi-input-value-text-color: var(--nano-color-contrast);\n color: var(--nano-color-base);\n}\n\n[disabled].sc-nano-select-h:not([disabled=false]) *.sc-nano-select {\n pointer-events: none !important;\n}\n\nselect.sc-nano-select {\n display: none;\n}\n\n.select__native-input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding: unset;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: 0;\n border-radius: var(--input-border-radius);\n text-overflow: ellipsis;\n color: var(--input-text-color);\n display: inline-block;\n flex: 1;\n inline-size: 100%;\n max-inline-size: 100%;\n max-block-size: 100%;\n border: 0;\n outline: none;\n background: transparent;\n appearance: none;\n margin: 0;\n box-sizing: border-box;\n resize: none;\n overflow: hidden;\n cursor: default;\n line-height: 2.5em;\n \n \n}\n.has-float-label.sc-nano-select .select__native-input.sc-nano-select {\n line-height: 2.1em;\n min-block-size: 2.1em;\n padding-block-start: 1.4em;\n}\n.select__native-input.sc-nano-select::selection {\n background: transparent;\n}\n.select__native-input.sc-nano-select::-moz-selection {\n background: transparent;\n}\n.select__native-input.sc-nano-select::placeholder {\n color: var(--placeholder-color);\n font-family: inherit;\n font-style: var(--placeholder-font-style);\n font-weight: var(--placeholder-font-weight);\n opacity: var(--placeholder-opacity);\n line-height: inherit;\n min-block-size: initial;\n}\n.select__native-input.sc-nano-select::-moz-placeholder {\n line-height: 2.8em;\n text-overflow: ellipsis;\n}\n.select__native-input.sc-nano-select:-webkit-autofill {\n background-color: transparent;\n}\n.select__native-input.sc-nano-select::-webkit-search-decoration, .select__native-input.sc-nano-select::-webkit-search-cancel-button, .select__native-input.sc-nano-select::-webkit-search-results-button, .select__native-input.sc-nano-select::-webkit-search-results-decoration {\n appearance: none;\n}\n.select__native-input.sc-nano-select:invalid {\n box-shadow: none;\n}\n.select__native-input.sc-nano-select::-ms-clear, .select__native-input.sc-nano-select::-ms-reveal {\n display: none;\n}\n.select__native-input.resizable.sc-nano-select {\n resize: vertical;\n overflow: auto;\n}\n.form-ctrl__textarea.sc-nano-select .select__native-input.sc-nano-select {\n line-height: 1.5em;\n padding-block: var(--padding-top) var(--padding-bottom);\n white-space: pre-wrap;\n}\n.form-ctrl__textarea.sc-nano-select .select__native-input.sc-nano-select::placeholder {\n line-height: 1.5em;\n}\n.has-float-label.textarea.sc-nano-select .select__native-input.sc-nano-select {\n padding-block-start: 1.8em;\n}\n.masked.sc-nano-select-h .select__native-input.sc-nano-select {\n opacity: 0;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n}\n\n.select__mask.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: 0;\n border-radius: var(--input-border-radius);\n pointer-events: none;\n line-height: 2.5em;\n min-block-size: 2.5em;\n}\n\n.select__multi-wrap.sc-nano-select {\n padding-block: 0 var(--padding-bottom);\n padding-inline: 0;\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n overflow: hidden;\n align-items: flex-start;\n}\n.has-float-label.sc-nano-select-h .select__multi-wrap.sc-nano-select {\n padding-block-start: 1em;\n}\n.select__multi-input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: var(--padding-bottom) 0;\n min-inline-size: 50px;\n inline-size: 100%;\n max-block-size: 100%;\n appearance: none;\n border: 0;\n outline: none;\n display: inline-block;\n background: transparent;\n flex: 0;\n position: relative;\n box-sizing: border-box;\n line-height: calc(2.5em - var(--padding-bottom));\n block-size: calc(2.5em - var(--padding-bottom));\n}\n.select__multi-input.sc-nano-select:last-child {\n flex: 1;\n}\n.select__multi-value.sc-nano-select {\n margin-block: var(--padding-bottom) 0;\n margin-inline: var(--padding-start) -3px;\n background: rgb(var(--multi-input-value-bg)/80%);\n color: var(--multi-input-value-text-color);\n border: 1px solid;\n border-color: var(--multi-input-value-border);\n padding: 0.35em 0.5em;\n display: flex;\n align-items: center;\n font-size: var(--input-font-size);\n letter-spacing: 1px;\n max-block-size: calc(2.5em - 8px);\n max-inline-size: calc(100% - 8px);\n border-radius: 4px;\n}\n.select__multi-value--closable.sc-nano-select {\n padding-inline-end: 0;\n}\n.select__multi-value.sc-nano-select span.sc-nano-select {\n text-overflow: ellipsis;\n white-space: nowrap;\n max-inline-size: 100%;\n overflow: hidden;\n}\n.select__multi-value-remove.sc-nano-select {\n background-position: center;\n padding-inline-start: 0.5em;\n margin: 0;\n color: inherit;\n border: 0;\n outline: none;\n background-color: transparent;\n background-repeat: no-repeat;\n appearance: none;\n display: flex;\n align-items: center;\n inset-block-start: 0;\n font-size: 1em;\n}\n.select__multi-value-remove.sc-nano-select .nano-icon.sc-nano-select {\n --color: var(--multi-input-value-text-color);\n}\n\n.form-ctrl__float-label.sc-nano-select {\n inline-size: calc(100% - (1em + var(--padding-start) * 2));\n}\n.has-focus.has-multiple.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(-110%);\n font-size: 0.8em;\n}\n.has-value.has-multiple.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(21%);\n inset-block-start: 0;\n}\n\n.has-focus.sc-nano-select-h select.sc-nano-select, .has-focus.sc-nano-select-h a.sc-nano-select, .has-focus.sc-nano-select-h button.sc-nano-select {\n pointer-events: auto;\n}';const w=k;let z=0;const C=class{nativeSelect;valueItems=[];dragVal;mo;selectId=`nano-select-${z++}`;rtl=false;onInit=true;customError="";get inputCtrl(){return this._inputCtrl}set inputCtrl(n){if(n===this._inputCtrl)return;this._inputCtrl=n;this.setDataListOpts()}_inputCtrl;_selectWrap;get selectWrap(){return this._selectWrap}set selectWrap(n){if(this._selectWrap===n)return;this._selectWrap=n;this.setDataListOpts()}_datalist;get datalist(){return this._datalist}set datalist(n){if(this._datalist===n)return;this._datalist=n;this.setDataListOpts()}constructor(e){n(this,e);this.nanoChange=t(this,"nanoChange",7);this.nanoBlur=t(this,"nanoBlur",7);this.nanoFocus=t(this,"nanoFocus",7);this.nanoDidLoad=t(this,"nanoDidLoad",7);this.nanoDidUnload=t(this,"nanoDidUnload",7);this.nanoSearchChange=t(this,"nanoSearchChange",7);this.nanoValidate=t(this,"nanoValidate",7);this.showInlineValidation=f(this.showInlineValidation,50)}currInsertIndex=-1;showErrorMsg=false;errorMessage="";hasFocus=false;hasLabelSlot=false;hasHelperSlot=false;hasHelperEndSlot=false;inputSearchVal="";get el(){return a(this)}get invalid(){return this._invalid}_invalid=false;get validityMessage(){if(!this.nativeSelect)return"";return this.nativeSelect.validationMessage}color;autofocus=false;disabled=false;validateOn="submitThenDirty";showInlineError=true;label;hideLabel=false;floatLabel=false;multiple=false;maxValuesVisible=3;_maxValuesVisible;watchMaxValuesVisible(){if(!this.multiple)return;this._maxValuesVisible=this.maxValuesVisible===false?NaN:Number(this.maxValuesVisible);if(!Number.isNaN(this._maxValuesVisible)){if(this.currInsertIndex>this._maxValuesVisible){this.currInsertIndex=this._maxValuesVisible}}else{this.currInsertIndex=this.value.length-1}}name=this.selectId+"-name";placeholder;readonly=false;required=false;size;max;min;form;allowCustomValues=false;get value(){return this._value||(this.multiple?[]:"")}set value(n){if(!!n&&!!this._value){if(JSON.stringify(n)===JSON.stringify(this._value))return}if(typeof n==="string"){if(this.multiple)this._value=n.split(",");else this._value=n}else if(Array.isArray(n)){if(this.multiple)this._value=n;else this._value=n[0]}}_value;get options(){if(this._options.length)return this._options;if(!this.datalist||!this.datalist.activeOptions)return[];return this._elementOptions.map((n=>{const{value:e,selected:t,label:a,filterMeta:s}=n;return{value:e,selected:t,label:a,filterMeta:s}}))}set options(n){this._options=n.map((n=>{if(typeof n==="string")return{value:n,label:n};else return n}))}_options=[];_elementOptions=[];clearSelect=false;mask=false;debounce=0;debounceChanged(){this.nanoSearchChange=p(this.nanoSearchChange,this.debounce)}shouldValidate(){if(this.onInit)return;if(this.invalid)this.showErrorMsg=this._invalid=false;this.customValidate();if(this.validateOn!=="dirty")return;this.showInlineValidation()}valueChanged(){this.customValidate();if(this.onInit){if(this.multiple)this.currInsertIndex=this.value.length-1;return}requestAnimationFrame((()=>{this.shouldValidate();this.nanoChange.emit({value:this.value})}))}dropDownConfig={};setDataListOpts(){if(!this.datalist||!this.selectWrap)return;this.datalist.input=this.inputCtrl;const n=this.datalist.dropDownConfig||{};this.datalist.dropDownConfig={...n,...this.dropDownConfig,tetherTo:this.selectWrap}}valueTagTemplate;nanoChange;nanoBlur;nanoFocus;nanoDidLoad;nanoDidUnload;nanoSearchChange;nanoValidate;async reportValidity(n){return new Promise((e=>{if(n){this.customValidate();this.showInlineValidation()}setTimeout((()=>{e({isValid:!this._invalid,errorMessage:this.nativeSelect.validationMessage})}),50)}))}async setFocus(){if(!this.inputCtrl)return;this.inputCtrl.focus();setTimeout((()=>this.inputCtrl.click()),50)}getSelectElement(){return Promise.resolve(this.nativeSelect)}async showError(n){if(this.nativeSelect){this.customError=n;this.nativeSelect.setCustomValidity(n);this.showInlineValidation()}}get valArray(){return typeof this.value==="string"?this.value.length?[this.value]:[]:this.value}isValidValues(){return this.valArray.find((n=>this.options.find((e=>e.value===n))))}customValidate=()=>{if(!this.nativeSelect||!!this.customError||!this.nativeSelect["setCustomValidity"])return;this.nativeSelect.setCustomValidity("");if(this.required&&!this.valArray.length){this.nativeSelect.setCustomValidity("Please fill in this field.");return true}if(this.valArray.length&&!this.allowCustomValues&&!this.isValidValues()){this.nativeSelect.setCustomValidity("Please choose an item from this field.");return true}if(this.max&&this.valArray.length>this.max){this.nativeSelect.setCustomValidity(`Only up to ${this.max} values are allowed.`);return true}if(this.min&&this.valArray.length<this.min){this.nativeSelect.setCustomValidity(`You must select a minimum of ${this.min} values.`);return true}return false};showInlineValidation=n=>{if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this._invalid=false;this.showErrorMsg=false;this.errorMessage="";if(!this.nativeSelect.validity.valid){this.errorMessage=this.nativeSelect.validationMessage;this._invalid=true;this.showErrorMsg=true}this.nanoValidate.emit({isValid:!this.invalid,errorMessage:this.errorMessage,originalEvent:n})};handleInvalid=n=>{this._invalid=true;if(this.validateOn==="submit"){this._invalid=this.showErrorMsg=this.customValidate()}if(this.showInlineError)n.preventDefault();requestAnimationFrame((()=>this.showInlineValidation(n)))};setValue=n=>{n.preventDefault();if(!this.multiple){this.value=n.detail.value;return}if(this.value&&this.value.length&&this.value.includes(n.detail.value))return;if(this.max&&this.value.length===this.max)return;if(Number.isNaN(this._maxValuesVisible)||this.value.length<=this._maxValuesVisible){this.currInsertIndex++}this.value=[...this.value.slice(0,this.currInsertIndex),n.detail.value,...this.value.slice(this.currInsertIndex)];this.inputSearchVal=""};removeValue=n=>{if(!this.multiple||!this.value.length)return;if(!n)n=this.value[this.value.length-1];this.value=this.value.filter((e=>e!==n));if(Number.isNaN(this._maxValuesVisible)||this.value.length<=this._maxValuesVisible){this.currInsertIndex--}this.setFocus()};slotChangeObserver(){if(!window["MutationObserver"])return;const n=this.mo=new MutationObserver((()=>this.processSlottedContent()));n.observe(this.el,{childList:true,subtree:true})}processSlottedContent(){this.hasLabelSlot=!!this.el.querySelectorAll('[slot="label"]').length;this.hasHelperSlot=!!this.el.querySelector('[slot="helper"]');this.hasHelperEndSlot=!!this.el.querySelector('[slot="helper-end"]')}getOptionWithValue(n){let e;const t=this.datalist?.activeOptions?.length?this.datalist.activeOptions:this.options;const a=t.find(((t,a)=>{e=a;return!t.disabled&&t.value?.length&&t.value===n}));return[a,e]}getLabel(n){const e=this.getOptionWithValue(n)[0];return e&&e.label?e.label:n}onReset(n){const e=this.form?document.querySelector("#"+this.form):this.el.closest("form");if(!e||n.target!==this.el.closest("form"))return;this.clearSelectValue()}handleBlur(n){if(!this.hasFocus)return;const e=n;let t;requestAnimationFrame((()=>{if(e.key){if(e.key!=="Tab")return;t=u()}else t=n.target;if(c(this.el.tagName.toLowerCase(),t)!==this.el){this.onBlur()}}))}setOptions=()=>{if(!this.datalist||!this.datalist.activeOptions||!this.datalist.activeOptions.length)return;this._elementOptions=this.datalist.activeOptions.map((n=>{const{value:e,selected:t,label:a,filterMeta:s}=n;return{value:e,selected:t,label:a,filterMeta:s}}));this.customValidate()};handleDocumentKeyDown=n=>{if(!this.multiple||!this.hasFocus)return;if(!this.inputSearchVal){let e;switch(n.key){case"Backspace":if(this.inputCtrl.previousElementSibling)e=this.inputCtrl.previousElementSibling;else break;this.removeValue(e.dataset.value||null);break;case"Delete":if(this.inputCtrl.nextElementSibling)e=this.inputCtrl.nextElementSibling;else break;this.removeValue(e.dataset.value||null);break;case"ArrowLeft":case"ArrowRight":if(!this.value.length)break;if(n.key==="ArrowLeft"&&this.inputCtrl.previousSibling)this.currInsertIndex--;if(n.key==="ArrowRight"&&this.inputCtrl.nextSibling)this.currInsertIndex++;setTimeout((()=>{this.inputCtrl.focus()}),20);n.preventDefault();break}}};onBlur=()=>{this.hasFocus=false;requestAnimationFrame((()=>{if(this.validateOn==="dirty"&&!this.hasFocus)this.showInlineValidation()}));this.nanoBlur.emit();if(!this.allowCustomValues&&this.multiple){this.inputSearchVal="";const n=new window.Event("change");this.inputCtrl.dispatchEvent(n)}};onFocus=()=>{this.hasFocus=true;this.nanoFocus.emit()};clearSelectValue=n=>{if(this.clearSelect&&!this.readonly&&!this.disabled&&n){n.preventDefault();n.stopPropagation()}if(this.multiple){this.value=[];this.currInsertIndex=-1}else this.value="";this.inputCtrl.value="";const e=new window.Event("change");this.inputCtrl.dispatchEvent(e)};onClick=()=>{this.setFocus()};onDragStart=n=>{const e=n.target;this.dragVal=e.dataset.value};onDragEnd=n=>{this.dragVal=null;n.preventDefault()};onDragLeave=n=>{const e=n.target;const t=e.dataset&&e.dataset.value?e.dataset.value:null;if(!t||this.dragVal===t||!this.value.includes(this.dragVal)){n.preventDefault();return}const a=this.value.indexOf(t);const s=this.value.indexOf(this.dragVal);const o=this.value;const i=o[a];o[a]=o[s];o[s]=i;this.value=[...o]};onMultiInput=n=>{this.inputSearchVal=n.target.value.trim();this.nanoSearchChange.emit({value:n.target.value.trim()})};connectedCallback(){this.debounceChanged();this.watchMaxValuesVisible();this.el.dispatchEvent(new CustomEvent("nanoDidLoad",{detail:this.el}))}disconnectedCallback(){document.dispatchEvent(new CustomEvent("nanoDidUnload",{detail:this.el}));if(this.mo)this.mo.disconnect()}componentDidLoad(){this.slotChangeObserver();this.customValidate();this.setDataListOpts();requestAnimationFrame((()=>this.onInit=false))}componentWillLoad(){this.processSlottedContent()}render(){const n=this.selectId+"-lbl";const e=this.showInlineError||this.hasHelperSlot?this.selectId+"-moreId":"";const t=this.hasHelperEndSlot?this.selectId+"-helper":"";this.rtl=this.el.ownerDocument.dir==="rtl";this.valueItems=[];const a=(({el:n,floatLabel:e,label:t,errorMessage:a,showInlineError:s,hasHelperSlot:o,hasHelperEndSlot:i,hasLabelSlot:l,hideLabel:r,placeholder:c,rtl:d})=>({el:n,floatLabel:e,label:t,errorMessage:a,showInlineError:s,hasHelperSlot:o,hasHelperEndSlot:i,hasLabelSlot:l,hideLabel:r,placeholder:c,rtl:d}))(this);const i={...a,labelId:n,moreId:e,helperEndId:t,hasValue:!!this.value.length||!!this.inputSearchVal.length,controlId:this.selectId};const l=(({readonly:n,disabled:e})=>({readonly:n,disabled:e,clearControl:this.clearSelect}))(this);return o(s,{key:"536c9704da65bc7e7415e679382384c076696d51",type:this.multiple?"select-multiple":"select-one","aria-disabled":this.disabled?"true":null,class:{...b(this.color),"has-value":!!this.value.length||!!this.inputSearchVal.length,"has-focus":this.hasFocus,"is-invalid":this.invalid,"has-label":this.label!==null&&!this.floatLabel,"has-float-label":this.label!==null&&this.floatLabel,rtl:this.rtl,"has-multiple":this.multiple,"has-clr-btn":this.clearSelect,masked:this.mask,"nano-select":true}},o(m,{key:"c7fd0db291f3362fcdfca52f443899260a284490",...i},o(v,{key:"9ea819ba91334497b7ef3e5fddf9308acc1aded9",...l,onClearText:this.clearSelectValue,control:this.el,ref:n=>this.selectWrap=n,endValueSlot:o("slot",{name:"down-arrow"},o("nano-icon",{slot:"value-end",name:"light/chevron-down"}))},this.multiple&&o("div",{key:"f467f7b65f6edb3e98a5dcd99a4a4b275152b323",class:"select__multi-wrap select"},this.multipleValues(n,e,t)),!this.multiple&&[this.mask&&o("div",{key:"9f993b544220f7be26b9ed9d33fe1516c7652da5",class:"select__mask"},this.getLabel(this.value)),o("input",{key:"f3b4f85878ac17e3b9701a217a69e96bb68ea5e0",id:this.selectId,class:"select__native-input",ref:n=>this.inputCtrl=n,"aria-labelledby":n+" "+e+" "+t,disabled:this.disabled,form:this.form,placeholder:this.placeholder,readOnly:true,required:this.required,value:this.getLabel(this.value),onFocus:this.onFocus})])),!this.readonly&&!this.disabled&&o("nano-datalist",{key:"52a43b32040be9aad63e1f6975e0ab9e9202aacd",onNanoOptionsUpdated:this.setOptions,ref:n=>this.datalist=n,selected:this.valArray,type:this.multiple?"selctMulti":"select",onNanoSelect:this.setValue,onNanoDeselect:n=>{n.preventDefault();this.removeValue(n.detail.value)},options:this._options.length?this._options:undefined},this.allowCustomValues&&this.multiple&&!!this.inputSearchVal&&o("nano-option",{key:"8c051e25608cb6790bde692084c965bc064db0fa",slot:"list-top",value:this.inputSearchVal,selected:false,label:this.inputSearchVal,onNanoSelect:()=>this.inputCtrl.focus()},o("span",{key:"8f8b1abae976d352d71f3e74c9636ffc10800326",slot:"check-icon"}),"Add '",this.inputSearchVal,"'"),o("slot",{key:"139819ef432722a337fe9c9bb2c3713f8e1d4130"})),o("select",{key:"15f20b80edea9e26b60c3c6d494d928e4cc479cc",id:this.selectId+"-hidden",class:"select__native-ctrl",ref:n=>this.nativeSelect=n,"aria-labelledby":n+" "+e+" "+t,disabled:this.disabled,form:this.form,multiple:this.multiple,name:this.name,required:this.required,onInvalid:this.handleInvalid},this.allowCustomValues&&this.valArray.map((n=>o("option",{value:n,selected:true},n))),!this.allowCustomValues&&this.options.map((n=>o("option",{value:n.value,selected:this.valArray.includes(n.value),disabled:n.disabled,label:n.label},this.valArray.includes(n.value))))))}multipleValues(n,e,t){const a=o("input",{class:"select__multi-input",id:this.selectId,ref:n=>this.inputCtrl=n,readOnly:this.readonly,disabled:this.disabled,autoFocus:this.autofocus,autocomplete:"off",onKeyDown:this.handleDocumentKeyDown,onInput:this.onMultiInput,value:this.inputSearchVal,onTouchStart:this.onClick,onMouseDown:this.onClick,onFocus:this.onFocus,placeholder:this.placeholder&&!this.value.length?this.placeholder:"","aria-labelledby":n+" "+e+" "+t});if(!this.value.length)return a;const s=[];this.value.forEach(((n,e)=>{if(!Number.isNaN(this._maxValuesVisible)&&e>this._maxValuesVisible)return;let t;if(e===this._maxValuesVisible){t=o("span",{"data-value":n,class:"select__multi-value"},o("span",null,"+",this.value.length-this._maxValuesVisible))}else{t=o("span",{onDragStart:this.onDragStart,onDragLeave:this.onDragLeave,onDragEnd:this.onDragEnd,onDragOver:n=>n.preventDefault(),draggable:true,"data-value":n,ref:n=>this.valueItems.push(n),class:"select__multi-value select__multi-value--closable"},this.valueTagTemplate?o("span",{innerHTML:this.valueTagTemplate?this.valueTagTemplate(...this.getOptionWithValue(n)):undefined}):o("span",null,this.getLabel(n)),o("button",{class:"select__multi-value-remove",type:"button",tabindex:"-1",onTouchEnd:()=>{this.removeValue(n)},onMouseUp:()=>{this.removeValue(n)}},o("nano-icon",{name:"light/xmark"})))}if(e===0&&this.currInsertIndex<0){s.push(a,t)}else if(e===this.currInsertIndex){s.push(t,a)}else{s.push(t)}}));return s}static get watchers(){return{maxValuesVisible:["watchMaxValuesVisible"],debounce:["debounceChanged"],required:["shouldValidate"],disabled:["shouldValidate"],min:["shouldValidate"],max:["shouldValidate"],readonly:["shouldValidate"],value:["valueChanged"],dropDownConfig:["setDataListOpts"]}}};C.style=w;export{g as nano_global_nav_user_profile,x as nano_nav_item,C as nano_select};
|
4
|
+
import{r as n,j as e,c as t,g as a,a as s}from"./index-6cc72cd9.js";import{h as o,t as i}from"./renderer-4bc3e2dc.js";import{b as l,g as r,c}from"./dom-fafdec9a.js";import{d}from"./transitions-c09bd7f6.js";import{g as h}from"./tabbable-44932eb7.js";import{g as u}from"./active-element-a2502948.js";import{c as b}from"./theme-d553c17a.js";import{d as f,a as p}from"./throttle-df960210.js";import{F as m,a as v}from"./form-control-f48fa873.js";const g=class{constructor(e){n(this,e)}myAccountUser;userProfileUrl;render(){return!!this.myAccountUser&&o("a",{key:"af80219c25fba785b6f7d18afef4a41b9ced4765",href:this.userProfileUrl,class:"user-profile"},o("div",{key:"6ae0f4f9b48782faadb43d1594159e3fad9ee63d",class:"left"},o("div",{key:"0bd20abade1f0fe5822aba9c2217d80124d62b20",class:"avatar-container"},o("img",{key:"1a7096bd20754f3faf5ab150da0ebe2fe2684188",class:"avatar",src:this.myAccountUser?.small_avatar_url,alt:"User Avatar",height:75,width:75}),this.myAccountUser.is_nanopore_user&&o("img",{key:"ad532ddde8267a7049820fb7ae39f0302f208db9",class:"logo-small",src:e(`../nano-assets/ont-wheel-light.svg`),alt:"Nanopore Logo"})),o("div",{key:"9521c0b57fcb9343a746b0d0243f111e0a014100",class:"user-details"},o("span",{key:"710b0ab535abe256c1d778f0e7deda1f23465fb9",class:"name"},this.myAccountUser.name),o("span",{key:"c4e782a0a9e70b7e160bfd466430126d6d77cb28",class:"bio"},this.myAccountUser.job_title," at ",this.myAccountUser.company))),o("div",{key:"3725605d921254382356a40da96c45a9cc54d401",class:"right"},o("div",{key:"fd99f869ee248ce594b5fef4fe310cfe9a127dd4",class:"chevron-right"},o("nano-icon",{key:"4e548bc839e06498c1f1641af7fe30715e572d97",slot:"icon-end",name:"light/chevron-right"}))))}};const _=':host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{opacity:inherit;display:block;color:var(--color) !important;margin:var(--margin);outline:none !important}:host .nav-item,:host .link{outline:none !important;border-radius:inherit}:host ::slotted(*),:host *{box-sizing:border-box}:host ::slotted(button),:host button{background:none;border:none;margin:0}:host ::slotted(button),:host ::slotted(a),:host ::slotted(a:visited),:host button,:host a,:host a:visited{font-family:inherit;font-size:inherit;font-stretch:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;padding-inline:var(--padding-start) var(--padding-end);padding-block:var(--padding-top) var(--padding-bottom);display:var(--display, block);white-space:nowrap;color:var(--color) !important;background-color:var(--bg-color);line-height:inherit;outline:none !important}:host ::slotted(.nano-icon[slot=icon-start]){padding-inline-end:var(--padding-end)}:host ::slotted(.nano-icon[slot=icon-end]){padding-inline-start:var(--padding-start)}:host .link ::slotted(.nano-icon[slot=icon-start]){padding-inline:var(--padding-start) 0}:host .link ::slotted(.nano-icon[slot=icon-end]){padding-inline:0 var(--padding-end)}:host .link,:host button,:host a{border-block-end:var(--border-bottom);display:flex;align-items:center;border-radius:inherit}:host .secondary-menu{display:none}:host ::slotted(a:hover),:host ::slotted(button:hover),:host .link:hover,:host button:hover,:host a:hover{text-decoration:inherit !important}:host button:focus-visible,:host a:focus-visible{color:var(--color-focus, var(--color-hover, var(--color))) !important;background-color:var(--bg-color-focus, var(--bg-color-hover, var(--bg-color)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}:host ::slotted(a:focus-visible),:host ::slotted(button:focus-visible){color:var(--color-focus, var(--color-hover, var(--color))) !important;background-color:var(--bg-color-focus, var(--bg-color-hover, var(--bg-color)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.nav-item.selected .link,.nav-item.selected button,.nav-item.selected a{color:var(--color-selected, var(--color-open, var(--color))) !important;background-color:var(--bg-color-selected, var(--bg-color-open, var(--bg-color)))}.nav-item.secondary-open button,.nav-item.secondary-open a{color:var(--color-open, var(--color-selected, var(--color))) !important;background-color:var(--bg-color-open, var(--secondary-bg-color, var(--bg-color-selected, var(--bg-color))))}.nav-item.disabled{opacity:0.6}.nav-item.disabled button,.nav-item.disabled a{color:var(--color-disabled, var(--color)) !important}.nav-item:not(.nano-menu) ::slotted(a:hover),.nav-item:not(.nano-menu) ::slotted(button:hover),.nav-item:not(.nano-menu) .link:hover,.nav-item:not(.nano-menu) button:hover,.nav-item:not(.nano-menu) a:hover{color:var(--color-hover, var(--color-hover, var(--color))) !important;background-color:var(--bg-color-hover, var(--bg-color-focus, var(--bg-color)))}:host(.has-focus) .link{color:var(--color-focus, var(--color-hover, var(--color))) !important;background-color:var(--bg-color-focus, var(--bg-color-hover, var(--bg-color)));outline:var(--focus-outline, 5px auto -webkit-focus-ring-color)}:host(.nano-global-nav-menu) a,:host(.nano-global-nav-menu) a:visited,:host(.nano-global-nav-menu) button,:host(.nano-global-nav-menu) .link,:host(.nano-menu) a,:host(.nano-menu) a:visited,:host(.nano-menu) button,:host(.nano-menu) .link{display:flex;justify-content:flex-start;flex-direction:row;align-items:center;color:currentcolor;text-decoration:inherit;white-space:normal;cursor:pointer;line-height:1.2;inline-size:100%}:host(.nano-global-nav-menu) .text,:host(.nano-menu) .text{padding-inline:0 var(--padding-end);flex:1}:host(.nano-global-nav-menu) ::slotted(a),:host(.nano-global-nav-menu) ::slotted(button),:host(.nano-menu) ::slotted(a),:host(.nano-menu) ::slotted(button){flex:1}:host(.nano-global-nav-menu) .secondary-menu,:host(.nano-menu) .secondary-menu{display:none;position:absolute;color:var(--secondary-color, currentcolor);min-block-size:100%;inset-block-start:0;inset-inline-start:0;inline-size:100%;z-index:1;opacity:0;transition:opacity 0.3s ease, transform 0.3s ease;background-color:var(--secondary-bg-color, white);transform:translate3d(100%, 0, 0)}:host(.nano-global-nav-menu) .secondary-menu:focus,:host(.nano-menu) .secondary-menu:focus{outline:none}:host(.nano-global-nav-menu) .secondary-menu.open,:host(.nano-menu) .secondary-menu.open{opacity:1;transform:translate3d(0, 0, 0);transition:opacity 0.3s ease, transform 0.3s ease}:host(.nano-global-nav-menu) ::slotted(.nano-icon[slot=icon-start]){padding-inline:0 var(--padding-end);padding-block:0}:host(.nano-global-nav-menu) ::slotted(.nano-icon[slot=icon-end]){padding-inline:0 var(--padding-end);padding-block:0;font-size:10px;flex:0 0 10px;pointer-events:none}:host(.nano-global-nav-menu) button ::slotted(.nano-icon[slot=icon-end]),:host(.nano-global-nav-menu) a ::slotted(.nano-icon[slot=icon-end]){padding:0}:host(.nano-global-nav-menu[dir=rtl]) .secondary-menu,:host(.nano-menu[dir=rtl]) .secondary-menu{transform:translateX(-100%)}:host(.nano-global-nav-menu[dir=rtl]) .secondary-menu.open,:host(.nano-menu[dir=rtl]) .secondary-menu.open{transform:translateX(0)}:host(.nano-menu) ::slotted(a:focus),:host(.nano-menu) ::slotted(button:focus){box-shadow:none}:host(.nano-menu) .secondary-menu-content{padding-inline:var(--secondary-padding-start) var(--secondary-padding-end);padding-block:var(--secondary-padding-top) var(--secondary-padding-bottom)}:host(.nano-global-nav-bar) .link,:host(.nano-global-nav-bar) a,:host(.nano-global-nav-bar) button{display:flex;align-items:center;cursor:pointer}:host(.nano-global-nav-bar) .text{flex:1 0 auto}:host(.nano-global-nav-bar) ::slotted(.nano-icon[slot=icon-end]){margin-inline:var(--padding-end) 0;margin-block:0}:host(.nano-global-nav-bar) ::slotted(.nano-icon[slot=icon-start]){margin-inline:0 var(--padding-start);margin-block:0}:host(.nano-global-nav-bar) ::slotted(a),:host(.nano-global-nav-bar) button{position:relative}:host(.nano-global-nav-bar) ::slotted(a)::before,:host(.nano-global-nav-bar) button::before{content:"";background-color:rgb(12, 90, 113);block-size:9px;inset-inline:0 5px;inset-block-end:-22px;position:absolute;transform:translateZ(0) scaleX(0);transform-origin:0;transition:transform 0.2s ease}:host(.nano-global-nav-bar) .secondary-open button::before{transform:translateZ(0) scaleX(1)}:host(.nano-global-nav-bar.selected) ::slotted(a)::before,:host(.nano-global-nav-bar.selected) button::before{transform:translateZ(0) scaleX(1)}:host(.nano-global-nav-bar.has-secondary) .secondary-open button::before{opacity:0.7}:host(.nano-global-nav-bar.has-secondary) .secondary-menu{display:none;transition:transform 0.3s ease;transform:translateY(-100%) translateZ(0);background-color:var(--secondary-bg-color, #196c82);color:var(--secondary-color);position:absolute;box-shadow:0 1px 25px 0 rgba(0, 0, 0, 0.15);inset-inline:0;z-index:-2;outline:none}:host(.nano-global-nav-bar.has-secondary) .secondary-menu.open{transform:translateY(12px) translateZ(0)}:host(.nano-menu-drawer) .link,:host(.nano-menu-drawer) a,:host(.nano-menu-drawer) button{padding-block:calc(var(--padding-top) / 2) calc(var(--padding-bottom) / 2);padding-inline:var(--padding-start) 0;display:flex;justify-content:flex-start;flex-direction:row;align-items:center;color:currentcolor;text-decoration:inherit;white-space:normal;border:none;cursor:pointer;line-height:1.2;inline-size:100%}:host(.nano-menu-drawer) .text{padding-inline:0 var(--padding-end);text-align:start;flex:0 1 auto;min-inline-size:130px;inline-size:130px}:host(.nano-menu-drawer) ::slotted(.nano-icon[slot=icon-start]){padding-inline:0 var(--padding-end);padding-block:0;font-size:var(--icon-size);inline-size:var(--icon-size);flex:0 0 var(--icon-size)}:host(.nano-menu-drawer) ::slotted(.nano-icon[slot=icon-end]){padding:0 var(--padding-end) 0 0;font-size:10px;flex:0 0 20px;min-inline-size:20px}:host(.nano-menu-drawer) .secondary-menu{display:none;position:absolute;background-color:var(--secondary-bg-color);color:var(--secondary-color);block-size:100vh;inset-inline:auto 0;inset-block:0;transform:translateX(0);z-index:-1;transition:transform 0.3s ease, opacity 0.2s ease;overflow-y:auto;inline-size:var(--secondary-width, 400px);max-inline-size:62vw;opacity:1;padding-inline:var(--secondary-padding-start, var(--padding-start)) var(--secondary-padding-end, var(--padding-end));padding-block:var(--secondary-padding-top, var(--padding-top)) var(--secondary-padding-bottom, var(--padding-bottom))}:host(.nano-menu-drawer) .secondary-menu:focus{outline:none}:host(.nano-menu-drawer) .secondary-menu.open{transform:translateX(100%)}:host(.nano-menu-drawer) .notification{position:relative}:host(.nano-menu-drawer) .notification::after{content:"";display:block;position:absolute;inline-size:6px;block-size:6px;background-color:#ef4135;inset-inline-start:10px;inset-block-start:7px;border-radius:50%}@media (width >= 52em){:host(.nano-menu-drawer) .notification::after{inline-size:7px;block-size:7px;inset-inline-start:8px;inset-block-start:5px}}:host(.nano-menu-drawer[dir=rtl]) .secondary-menu{transform:translateX(0%)}:host(.nano-menu-drawer[dir=rtl]) .secondary-menu.open{transform:translateX(-100%);opacity:1}';const y=_;const x=class{constructor(e){n(this,e);this.nanoClose=t(this,"nanoClose",7);this.nanoOpen=t(this,"nanoOpen",7);this.nanoOpening=t(this,"nanoOpening",7);this.nanoClosing=t(this,"nanoClosing",7);this.nanoBlur=t(this,"nanoBlur",7);this.nanoFocus=t(this,"nanoFocus",7)}hasSecondarySlot=false;btn;fromHover;animating=false;waitHide;waitShow;globalNavEle;secondaryDiv;hasAnchorEle=false;didOpen=false;isInGlobalNav=false;isInMenuDrawer=false;isInMenu=false;hasFocus=false;get el(){return a(this)}href=null;target="_self";disabled=false;open=false;selected=false;secondaryActiveWidth=0;secondaryFallback=()=>{};closeOnBlur=true;notification=false;nanoClose;nanoOpen;nanoOpening;nanoClosing;nanoBlur;nanoFocus;async setFocus(){if(!this.btn)return;this.btn.focus()}openChange(){if(this.open)this.openSecondary();else this.closeSecondary()}didOpenChange(){if(!this.hasSecondarySlot)return;if(!this.didOpen){setTimeout((()=>{if(!this.fromHover&&(!document.activeElement||document.activeElement===document.body))this.btn.focus({preventScroll:true});this.el.tabIndex=null;this.nanoClose.emit({secondaryMenu:this.secondaryDiv})}),50)}else{if(!this.fromHover){const n=new window.IntersectionObserver((e=>{if(e[0].boundingClientRect.top<0){this.secondaryDiv.scrollIntoView({behavior:"smooth"})}n.disconnect()}),{threshold:1});n.observe(this.secondaryDiv);this.secondaryDiv.focus({preventScroll:true});const e=h(this.secondaryDiv,true);if(e[0])e[0].focus();this.el.tabIndex=-1;this.nanoOpen.emit({secondaryMenu:this.secondaryDiv})}}}handleClose(n){if(!this.didOpen||!this.hasSecondarySlot||!this.closeOnBlur)return;if(!n.composedPath().some((n=>n===this.secondaryDiv)))this.toggleSecondary()}closeSecondary=async()=>{if(!this.hasSecondarySlot||!this.didOpen)return;this.open=false;await d(this.secondaryDiv,{className:"open",show:false});this.nanoClosing.emit({secondaryMenu:this.secondaryDiv});this.didOpen=false};openSecondary=async()=>{if(window.innerWidth<this.secondaryActiveWidth){this.secondaryFallback.call(this);return}if(!this.hasSecondarySlot||this.didOpen)return;this.open=true;await d(this.secondaryDiv,{className:"open",show:true});this.nanoOpening.emit({secondaryMenu:this.secondaryDiv});this.didOpen=true};toggleSecondary=()=>{if(!this.hasSecondarySlot)return;if(this.didOpen)this.closeSecondary();else this.openSecondary()};handleFocus=()=>{this.hasFocus=true;if(this.href&&!this.animating&&this.hasSecondarySlot)this.openSecondary();this.nanoFocus.emit()};handleHostBlur=()=>{if(this.animating)return;this.el.removeAttribute("tabindex");this.hasFocus=false;this.nanoBlur.emit()};handleHostClick=n=>{if(!this.hasAnchorEle)return;const e=n.target.closest("a, button");if(!e)this.btn.click()};handleMouseEnter=async()=>{if(!this.href||this.animating||!this.hasSecondarySlot||this.globalNavEle&&!this.globalNavEle.classList.contains("ready"))return;let n=0;if(l(this.el,".secondary-open.has-secondary").length)n=300;clearTimeout(this.waitHide);this.fromHover=true;this.animating=true;this.waitShow=window.setTimeout((async()=>await this.openSecondary()),n);this.animating=false};handleMouseLeave=()=>{if(!this.href)return;clearTimeout(this.waitShow);this.fromHover=true;this.animating=true;this.waitHide=window.setTimeout((async()=>await this.closeSecondary()),300);this.animating=false};handleClick=()=>{this.fromHover=false;if(this.hasSecondarySlot)this.toggleSecondary()};connectedCallback(){const n=this.el.querySelector('[slot="secondary"]');this.hasSecondarySlot=!!n;const e=r(this.el,"a, button")[0];this.hasAnchorEle=!!e;if(e){this.href=e.href?e.href:null;this.btn=e;if(this.hasSecondarySlot)this.btn.addEventListener("click",this.toggleSecondary);this.btn.addEventListener("focus",this.handleFocus);this.btn.addEventListener("blur",this.handleHostBlur)}this.isInGlobalNav=false;this.isInMenuDrawer=false;this.globalNavEle=this.el.closest(i("nano-global-nav"));this.isInMenuDrawer=!!this.el.closest(i("nano-menu-drawer"));this.isInMenu=!!this.el.closest(i("nano-menu"));this.isInGlobalNav=this.el.parentElement===this.globalNavEle||!!this.el.closest(".global-nav")}componentDidLoad(){this.openChange()}disconnectedCallback(){this.btn.removeEventListener("click",this.toggleSecondary);this.btn.removeEventListener("focus",this.handleFocus);this.btn.removeEventListener("blur",this.handleHostBlur)}render(){return o(s,{key:"5919fe6851a8132a0da2c592c6adf977113c3983",class:{"has-secondary":this.hasSecondarySlot,"secondary-open":this.open,selected:this.selected,"has-focus":this.hasFocus,disabled:this.disabled,"nano-global-nav":this.isInGlobalNav,"nano-menu-drawer":this.isInMenuDrawer,"nano-menu":this.isInMenu,"nano-nav-item":true},onBlur:this.handleHostBlur,dir:this.el.ownerDocument.dir==="rtl"?"rtl":null,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onClick:this.handleHostClick,role:this.el.closest('[role="menu"]')?"menuitem":undefined},o("div",{key:"a05002c6eae1e2107453b02f91f6d7467744bc94",class:{"nav-item":true,"secondary-open":this.open,selected:this.selected},part:"ctrl-wrapper"},this.href&&!this.hasAnchorEle&&!this.disabled&&o("a",{key:"7ee0a4a54692664dd7b9d1f9e3d20215542929b3",part:"ctrl ctrl--anchor",target:this.target,ref:n=>this.btn=n,href:this.href,onFocus:this.handleFocus,class:{notification:this.notification}},o("slot",{key:"7795fd5db028cd67ba1511619a5be68dc1f3ed51",name:"icon-start"}),o("span",{key:"e5373722117ca7adc74c0dc59fca8e20f6503099",class:"text"},o("slot",{key:"e1e1ebb8b1b18245fb1fff5795ba8c31c967d399"})),o("slot",{key:"63dc5d008a47f44c292ac17bb061944f488b176e",name:"icon-end"})),(!this.hasAnchorEle&&!this.href||this.disabled)&&o("button",{key:"cd84e3be0022646f164e52663b4b1266c08d582f",part:"ctrl ctrl--button",ref:n=>this.btn=n,onClick:this.handleClick,onFocus:this.handleFocus,disabled:this.disabled,class:{notification:this.notification}},o("slot",{key:"9ae194d22d839cf97257c01b1fca424bb4b8e6d1",name:"icon-start"}),o("span",{key:"eff83bc860b026e62a57b4eede50913d65eabf06",class:"text"},o("slot",{key:"41996ab72195124b483872ec231a5ca74fc73f9e"})),o("slot",{key:"1ef36027a860dfcf86e0f9f7c90ec49053fad9ff",name:"icon-end"})),this.hasAnchorEle&&!this.disabled&&o("div",{key:"5c9ab8780e84391ef3b2b1350a8b89e7343b635a",class:"link"},o("slot",{key:"a673392b8038993b07c9bcff7312ca63ce077738",name:"icon-start"}),o("slot",{key:"7678cd1e024dc47694849ef3fd2ab89138857675"}),o("slot",{key:"15cedad4ab1d11c4fc0ce7d1867db7bfd59cccd3",name:"icon-end"})),this.hasSecondarySlot&&!this.disabled&&o("div",{key:"8c274fc1b47d8365321105ed13233abaa77bf408",class:"secondary-menu",ref:n=>this.secondaryDiv=n,tabIndex:-1},o("div",{key:"f25ebc76515bdce5a8f04119da028b11acc0c9df",class:"secondary-menu-content",part:"secondary-wrapper"},o("slot",{key:"8d38f82ab2ebb96ec60d07716309ebc2b45d8f3b",name:"secondary"})),o("div",{key:"07404964bfdce1b0ed694308524f9eef30454efa",class:"secondary-menu-mask",onClick:this.closeSecondary,part:"secondary-mask"}))))}static get watchers(){return{open:["openChange"],didOpen:["didOpenChange"]}}};x.style=y;const k='.sc-nano-select-h {\n box-sizing: border-box;\n}\n\n*.sc-nano-select, *.sc-nano-select::before, *.sc-nano-select::after {\n box-sizing: border-box;\n}\n[hidden].sc-nano-select {\n display: none !important;\n}\n.sc-nano-select-h {\n box-sizing: border-box;\n}\n\n*.sc-nano-select, *.sc-nano-select::before, *.sc-nano-select::after {\n box-sizing: border-box;\n}\n[hidden].sc-nano-select {\n display: none !important;\n}\n[disabled].sc-nano-select-h:not([disabled=false]) {\n opacity: 0.5;\n}\n\n.form-ctrl.sc-nano-select {\n min-inline-size: 100%;\n display: block;\n}\n.form-ctrl.has-helper-end.sc-nano-select {\n display: flex;\n gap: 1rem;\n container-type: inline-size;\n}\n.form-ctrl.has-helper-end.sc-nano-select .form-ctrl__wrapper.sc-nano-select {\n flex: 1 1 100%;\n}\n.form-ctrl.has-helper-end.sc-nano-select .form-ctrl__helper-end.sc-nano-select {\n display: none;\n}\n@container (min-width: 350px) {\n .form-ctrl.has-helper-end .form-ctrl__helper-end {\n display: block !important;\n }\n .form-ctrl.has-helper-end .form-ctrl__helper {\n display: none !important;\n }\n}\n\n.form-ctrl__wrapper.sc-nano-select {\n display: block;\n}\n\nlabel.sc-nano-select, .form-ctrl__more.sc-nano-select, .form-ctrl__error.sc-nano-select, .form-ctrl__helper.sc-nano-select {\n display: block;\n inline-size: 100%;\n overflow: clip;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\nlabel.visually-hide.sc-nano-select, .form-ctrl__more.visually-hide.sc-nano-select, .form-ctrl__error.visually-hide.sc-nano-select, .form-ctrl__helper.visually-hide.sc-nano-select {\n clip: rect(1px, 1px, 1px, 1px);\n clip-path: inset(50%);\n block-size: 1px;\n inline-size: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n}\n\n.form-ctrl__float-label.sc-nano-select {\n padding-block: 0;\n padding-inline: var(--padding-start) 0;\n color: var(--label-color);\n position: absolute;\n font-size: 1.15em;\n transform: translateY(-50%);\n transform-origin: top left;\n inset-block-start: 50%;\n transition: all 0.125s ease-in;\n opacity: 1;\n}\n.has-focus.sc-nano-select-h .form-ctrl__float-label.sc-nano-select, .has-value.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(-110%);\n font-size: 0.8em;\n opacity: 0.7;\n}\n.form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-select-h .form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select, .has-value.sc-nano-select-h .form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n opacity: 1;\n}\n.form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 50%;\n}\n.has-focus.sc-nano-select-h .form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n.has-value.sc-nano-select-h .form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n\n.form-ctrl__label.sc-nano-select {\n color: var(--label-color);\n font-size: var(--label-font-size);\n padding-block-end: var(--padding-bottom);\n line-height: 1;\n display: flex;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-wrap.sc-nano-select {\n flex: 1;\n overflow-x: clip;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-placeholder.sc-nano-select {\n margin-block: unset;\n margin-inline: 0 5px;\n opacity: 0;\n appearance: none;\n transition: 0.3s ease opacity;\n font-size: 0.85em;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n margin-block: unset;\n margin-inline: auto 0;\n font-size: 0.9em;\n opacity: 0.5;\n}\n.has-value.sc-nano-select-h .form-ctrl__label.sc-nano-select .form-ctrl__label-placeholder.sc-nano-select {\n opacity: 0.5;\n}\n.has-focus.sc-nano-select-h .form-ctrl__label.sc-nano-select {\n color: var(--label-color--focus);\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__label.sc-nano-select {\n color: var(--label-color--invalid);\n}\n\n.has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-select-h .has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-focus.sc-nano-select-h .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-focus.sc-nano-select-h .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select {\n opacity: 1;\n}\n\n.form-ctrl__more.sc-nano-select {\n block-size: 1em;\n position: relative;\n margin-block: 4px var(--padding-bottom);\n margin-inline: 3px 0;\n}\n\n.form-ctrl__helper.sc-nano-select, .form-ctrl__error.sc-nano-select {\n inset-block-start: 0;\n inset-inline-start: 0;\n position: absolute;\n font-size: var(--invalid-msg-font-size);\n line-height: 1.2;\n transition: 0.3s ease-out opacity;\n}\n\n.form-ctrl__helper.sc-nano-select {\n font-style: italic;\n color: var(--help-msg-color);\n}\n[show-inline-error].sc-nano-select-h:not([show-inline-error=false]):not([disabled]).is-invalid .form-ctrl__helper.sc-nano-select {\n opacity: 0;\n}\n\n.form-ctrl__helper-end.sc-nano-select {\n flex: 1 1 30%;\n min-inline-size: 150px;\n font-size: var(--invalid-msg-font-size);\n color: var(--help-msg-color);\n font-style: italic;\n}\n\n.form-ctrl__error.sc-nano-select {\n opacity: 0;\n color: var(--invalid-msg-color);\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__error.sc-nano-select {\n opacity: 1;\n}\n\n.form-ctrl__input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n border-radius: var(--input-border-radius);\n inline-size: 100%;\n padding: 0 !important;\n position: relative;\n flex: 1 0 auto;\n display: flex;\n background: var(--input-bg-color);\n border: var(--input-border-style);\n border-width: var(--input-border-width);\n font-size: var(--input-font-size);\n padding-inline-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n}\n.has-focus.sc-nano-select-h .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--focus);\n border: var(--input-border-style--focus);\n border-width: var(--input-border-width);\n padding-inline-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--invalid);\n border: var(--input-border-style--invalid);\n border-width: var(--input-border-width);\n border-inline-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n padding-inline-start: 0 !important;\n}\n.is-invalid.has-focus.sc-nano-select-h:not([disabled]) .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--invalid);\n border: var(--input-border-style--invalid-focus);\n border-width: var(--input-border-width);\n border-inline-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n padding-inline-start: 0 !important;\n}\n\n.form-ctrl__input-wrap.sc-nano-select {\n display: flex;\n align-items: stretch;\n flex: 1;\n max-inline-size: 100%;\n}\n\n.form-ctrl__clear-btn.sc-nano-select, .form-ctrl__slot-end.sc-nano-select, .form-ctrl__slot-start.sc-nano-select, .form-ctrl__slot-value-end.sc-nano-select {\n --nano-icon-size: 1.4em;\n margin-block: 0;\n margin-inline: 0;\n font-size: 1em;\n border: 0;\n outline: none;\n background-color: transparent;\n background-repeat: no-repeat;\n display: flex;\n align-items: stretch;\n inline-size: auto;\n}\n\n.has-float-label.sc-nano-select .form-ctrl__slot-start.sc-nano-select {\n display: none;\n}\n\n.form-ctrl__slot-start.sc-nano-select-s > *, .form-ctrl__slot-start.sc-nano-select-s > *, .form-ctrl__slot-start .sc-nano-select-s > *, .form-ctrl__slot-end.sc-nano-select-s > *, .form-ctrl__slot-end.sc-nano-select-s > *, .form-ctrl__slot-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n --nano-icon-size: 1.4em;\n padding-inline: unset;\n padding-inline: var(--padding-start) var(--padding-end);\n font-size: 1em;\n align-items: center;\n display: flex;\n block-size: 100%;\n z-index: 1;\n}\n.sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-start.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-start.sc-nano-select-s > *, .form-ctrl__slot-start .sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-end.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-end.sc-nano-select-s > *, .form-ctrl__slot-end .sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end .sc-nano-select-s > *, [disabled].sc-nano-select-h:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n pointer-events: none;\n}\n\n.form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n pointer-events: none;\n}\n\n.form-ctrl__clear-btn.sc-nano-select {\n color: var(--clear-btn-color);\n padding: 0;\n opacity: 0;\n inline-size: 0;\n appearance: none;\n align-items: center;\n overflow: hidden;\n}\n.is-invalid.sc-nano-select-h .form-ctrl__clear-btn.sc-nano-select {\n color: var(--clear-btn-color--invalid);\n}\n.has-value.sc-nano-select-h .form-ctrl__clear-btn.sc-nano-select {\n padding-block: 0;\n padding-inline: var(--padding-start) var(--padding-end);\n opacity: 1;\n inline-size: auto;\n}\n.form-ctrl__clear-btn.sc-nano-select:hover {\n color: var(--clear-btn-color--hover);\n}\n\n.sc-nano-select-h {\n \n --placeholder-color: var(--nano-input-placeholder-color, initial);\n --placeholder-font-style: var(--nano-input-placeholder-style, initial);\n --placeholder-font-weight: var(--nano-input-placeholder-weight, initial);\n --placeholder-opacity: var(--nano-input-placeholder-opacity, 0.5);\n --padding-top: var(--nano-input-padding-top, var(--nano-input-padding, 8px));\n --padding-end: var(--nano-input-padding-end, var(--nano-input-padding, 8px));\n --padding-bottom: var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));\n --padding-start: var(--nano-input-padding-start, var(--nano-input-padding, 8px));\n --color-invalid: nano-color(danger, base, , true);\n --color--focus-rgb:\n var(\n --nano-color-base-rgb,\n nano-color(primary, base, , true)\n );\n --input-font-size: var(--nano-input-font-size, 0.87em);\n --input-text-color: var(--nano-input-text-color, #4a4a4a);\n --input-border-width: var(--nano-input-border-width, 1px);\n --input-border-hint-width: 3px;\n --input-border-color: var(--nano-input-border-color, #e4e6e8);\n --input-border-radius: var(--nano-input-border-radius, 0);\n --input-border-style: var(--nano-input-border-style, solid) var(--nano-input-border-color, #e4e6e8);\n --input-border-style--focus: var(--nano-input-border-style, solid) var(--nano-input-border-color--focus, #90c6e7);\n --input-border-style--invalid: var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #e4e6e8);\n --input-border-style--invalid-focus: var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #ef4135);\n --input-bg-color: var(--nano-input-background-color, #fff);\n --input-bg-color--focus: var(--input-bg-color);\n --input-bg-color--invalid: var(--nano-input-background-color, white);\n --invalid-msg-color: rgb(var(--color-invalid) / 100%);\n --invalid-msg-font-size: var(--nano-input-help-font-size, 0.75em);\n --help-msg-color: var(--nano-input-help-color, #616d6e);\n --clear-btn-color: var(--nano-clear-btn-color, rgba(0, 0, 0, 0.3));\n --clear-btn-color--hover: rgb(var(--color--focus-rgb) / 100%);\n --clear-btn-color--invalid: rgb(var(--color-invalid) / 100%);\n --label-color: var(--nano-input-label-color, "currentcolor");\n --label-color--focus: var(--label-color);\n --label-color--invalid: var(--nano-input-label-color-invalid, "currentcolor");\n --label-font-size: var(--nano-input-label-color, 1em);\n --multi-input-value-bg: var(--nano-input-tag-bg, 186 220 240);\n --multi-input-value-text-color: var(--nano-input-tag-color, #455556);\n --multi-input-value-border: var(--nano-input-tag-color, #badcf0);\n \n position: relative;\n inline-size: 100%;\n padding: 0 !important;\n font-family: var(--nano-font-family, inherit);\n display: block;\n}\n\n.nano-color.sc-nano-select-h {\n --input-border-style--focus:\n var(--nano-input-border-style, solid) var(\n --nano-color-tint,\n var(--nano-color-primary-tint, #2689a5)\n );\n --multi-input-value-bg: var(--nano-color-tint-rgb);\n --multi-input-value-border: var(--nano-color-shade);\n --multi-input-value-text-color: var(--nano-color-contrast);\n color: var(--nano-color-base);\n}\n\n[disabled].sc-nano-select-h:not([disabled=false]) *.sc-nano-select {\n pointer-events: none !important;\n}\n\nselect.sc-nano-select {\n display: none;\n}\n\n.select__native-input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding: unset;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: 0;\n border-radius: var(--input-border-radius);\n text-overflow: ellipsis;\n color: var(--input-text-color);\n display: inline-block;\n flex: 1;\n inline-size: 100%;\n max-inline-size: 100%;\n max-block-size: 100%;\n border: 0;\n outline: none;\n background: transparent;\n appearance: none;\n margin: 0;\n box-sizing: border-box;\n resize: none;\n overflow: hidden;\n cursor: default;\n line-height: 2.5em;\n \n \n}\n.has-float-label.sc-nano-select .select__native-input.sc-nano-select {\n line-height: 2.1em;\n min-block-size: 2.1em;\n padding-block-start: 1.4em;\n}\n.select__native-input.sc-nano-select::selection {\n background: transparent;\n}\n.select__native-input.sc-nano-select::-moz-selection {\n background: transparent;\n}\n.select__native-input.sc-nano-select::placeholder {\n color: var(--placeholder-color);\n font-family: inherit;\n font-style: var(--placeholder-font-style);\n font-weight: var(--placeholder-font-weight);\n opacity: var(--placeholder-opacity);\n line-height: inherit;\n min-block-size: initial;\n}\n.select__native-input.sc-nano-select::-moz-placeholder {\n line-height: 2.8em;\n text-overflow: ellipsis;\n}\n.select__native-input.sc-nano-select:-webkit-autofill {\n background-color: transparent;\n}\n.select__native-input.sc-nano-select::-webkit-search-decoration, .select__native-input.sc-nano-select::-webkit-search-cancel-button, .select__native-input.sc-nano-select::-webkit-search-results-button, .select__native-input.sc-nano-select::-webkit-search-results-decoration {\n appearance: none;\n}\n.select__native-input.sc-nano-select:invalid {\n box-shadow: none;\n}\n.select__native-input.sc-nano-select::-ms-clear, .select__native-input.sc-nano-select::-ms-reveal {\n display: none;\n}\n.select__native-input.resizable.sc-nano-select {\n resize: vertical;\n overflow: auto;\n}\n.form-ctrl__textarea.sc-nano-select .select__native-input.sc-nano-select {\n line-height: 1.5em;\n padding-block: var(--padding-top) var(--padding-bottom);\n white-space: pre-wrap;\n}\n.form-ctrl__textarea.sc-nano-select .select__native-input.sc-nano-select::placeholder {\n line-height: 1.5em;\n}\n.has-float-label.textarea.sc-nano-select .select__native-input.sc-nano-select {\n padding-block-start: 1.8em;\n}\n.masked.sc-nano-select-h .select__native-input.sc-nano-select {\n opacity: 0;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n}\n\n.select__mask.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: 0;\n border-radius: var(--input-border-radius);\n pointer-events: none;\n line-height: 2.5em;\n min-block-size: 2.5em;\n}\n\n.select__multi-wrap.sc-nano-select {\n padding-block: 0 var(--padding-bottom);\n padding-inline: 0;\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n overflow: hidden;\n align-items: flex-start;\n}\n.has-float-label.sc-nano-select-h .select__multi-wrap.sc-nano-select {\n padding-block-start: 1em;\n}\n.select__multi-input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: var(--padding-bottom) 0;\n min-inline-size: 50px;\n inline-size: 100%;\n max-block-size: 100%;\n appearance: none;\n border: 0;\n outline: none;\n display: inline-block;\n background: transparent;\n flex: 0;\n position: relative;\n box-sizing: border-box;\n line-height: calc(2.5em - var(--padding-bottom));\n block-size: calc(2.5em - var(--padding-bottom));\n}\n.select__multi-input.sc-nano-select:last-child {\n flex: 1;\n}\n.select__multi-value.sc-nano-select {\n margin-block: var(--padding-bottom) 0;\n margin-inline: var(--padding-start) -3px;\n background: rgb(var(--multi-input-value-bg)/80%);\n color: var(--multi-input-value-text-color);\n border: 1px solid;\n border-color: var(--multi-input-value-border);\n padding: 0.35em 0.5em;\n display: flex;\n align-items: center;\n font-size: var(--input-font-size);\n letter-spacing: 1px;\n max-block-size: calc(2.5em - 8px);\n max-inline-size: calc(100% - 8px);\n border-radius: 4px;\n}\n.select__multi-value--closable.sc-nano-select {\n padding-inline-end: 0;\n}\n.select__multi-value.sc-nano-select span.sc-nano-select {\n text-overflow: ellipsis;\n white-space: nowrap;\n max-inline-size: 100%;\n overflow: hidden;\n}\n.select__multi-value-remove.sc-nano-select {\n background-position: center;\n padding-inline-start: 0.5em;\n margin: 0;\n color: inherit;\n border: 0;\n outline: none;\n background-color: transparent;\n background-repeat: no-repeat;\n appearance: none;\n display: flex;\n align-items: center;\n inset-block-start: 0;\n font-size: 1em;\n}\n.select__multi-value-remove.sc-nano-select .nano-icon.sc-nano-select {\n --color: var(--multi-input-value-text-color);\n}\n\n.form-ctrl__float-label.sc-nano-select {\n inline-size: calc(100% - (1em + var(--padding-start) * 2));\n}\n.has-focus.has-multiple.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(-110%);\n font-size: 0.8em;\n}\n.has-value.has-multiple.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(21%);\n inset-block-start: 0;\n}\n\n.has-focus.sc-nano-select-h select.sc-nano-select, .has-focus.sc-nano-select-h a.sc-nano-select, .has-focus.sc-nano-select-h button.sc-nano-select {\n pointer-events: auto;\n}';const w=k;let z=0;const C=class{nativeSelect;valueItems=[];dragVal;mo;selectId=`nano-select-${z++}`;rtl=false;onInit=true;customError="";get inputCtrl(){return this._inputCtrl}set inputCtrl(n){if(n===this._inputCtrl)return;this._inputCtrl=n;this.setDataListOpts()}_inputCtrl;_selectWrap;get selectWrap(){return this._selectWrap}set selectWrap(n){if(this._selectWrap===n)return;this._selectWrap=n;this.setDataListOpts()}_datalist;get datalist(){return this._datalist}set datalist(n){if(this._datalist===n)return;this._datalist=n;this.setDataListOpts()}constructor(e){n(this,e);this.nanoChange=t(this,"nanoChange",7);this.nanoBlur=t(this,"nanoBlur",7);this.nanoFocus=t(this,"nanoFocus",7);this.nanoDidLoad=t(this,"nanoDidLoad",7);this.nanoDidUnload=t(this,"nanoDidUnload",7);this.nanoSearchChange=t(this,"nanoSearchChange",7);this.nanoValidate=t(this,"nanoValidate",7);this.showInlineValidation=f(this.showInlineValidation,50)}currInsertIndex=-1;showErrorMsg=false;errorMessage="";hasFocus=false;hasLabelSlot=false;hasHelperSlot=false;hasHelperEndSlot=false;inputSearchVal="";get el(){return a(this)}get invalid(){return this._invalid}_invalid=false;get validityMessage(){if(!this.nativeSelect)return"";return this.nativeSelect.validationMessage}color;autofocus=false;disabled=false;validateOn="submitThenDirty";showInlineError=true;label;hideLabel=false;floatLabel=false;multiple=false;maxValuesVisible=3;_maxValuesVisible;watchMaxValuesVisible(){if(!this.multiple)return;this._maxValuesVisible=this.maxValuesVisible===false?NaN:Number(this.maxValuesVisible);if(!Number.isNaN(this._maxValuesVisible)){if(this.currInsertIndex>this._maxValuesVisible){this.currInsertIndex=this._maxValuesVisible}}else{this.currInsertIndex=this.value.length-1}}name=this.selectId+"-name";placeholder;readonly=false;required=false;size;max;min;form;allowCustomValues=false;get value(){return this._value||(this.multiple?[]:"")}set value(n){if(!!n&&!!this._value){if(JSON.stringify(n)===JSON.stringify(this._value))return}if(typeof n==="string"){if(this.multiple)this._value=n.split(",");else this._value=n}else if(Array.isArray(n)){if(this.multiple)this._value=n;else this._value=n[0]}}_value;get options(){if(this._options.length)return this._options;if(!this.datalist||!this.datalist.activeOptions)return[];return this._elementOptions.map((n=>{const{value:e,selected:t,label:a,filterMeta:s}=n;return{value:e,selected:t,label:a,filterMeta:s}}))}set options(n){this._options=n.map((n=>{if(typeof n==="string")return{value:n,label:n};else return n}))}_options=[];_elementOptions=[];clearSelect=false;mask=false;debounce=0;debounceChanged(){this.nanoSearchChange=p(this.nanoSearchChange,this.debounce)}shouldValidate(){if(this.onInit)return;if(this.invalid)this.showErrorMsg=this._invalid=false;this.customValidate();if(this.validateOn!=="dirty")return;this.showInlineValidation()}valueChanged(){this.customValidate();if(this.onInit){if(this.multiple)this.currInsertIndex=this.value.length-1;return}requestAnimationFrame((()=>{this.shouldValidate();this.nanoChange.emit({value:this.value})}))}dropDownConfig={};setDataListOpts(){if(!this.datalist||!this.selectWrap)return;this.datalist.input=this.inputCtrl;const n=this.datalist.dropDownConfig||{};this.datalist.dropDownConfig={...n,...this.dropDownConfig,tetherTo:this.selectWrap}}valueTagTemplate;nanoChange;nanoBlur;nanoFocus;nanoDidLoad;nanoDidUnload;nanoSearchChange;nanoValidate;async reportValidity(n){return new Promise((e=>{if(n){this.customValidate();this.showInlineValidation()}setTimeout((()=>{e({isValid:!this._invalid,errorMessage:this.nativeSelect.validationMessage})}),50)}))}async setFocus(){if(!this.inputCtrl)return;this.inputCtrl.focus();setTimeout((()=>this.inputCtrl.click()),50)}getSelectElement(){return Promise.resolve(this.nativeSelect)}async showError(n){if(this.nativeSelect){this.customError=n;this.nativeSelect.setCustomValidity(n);this.showInlineValidation()}}get valArray(){return typeof this.value==="string"?this.value.length?[this.value]:[]:this.value}isValidValues(){return this.valArray.find((n=>this.options.find((e=>e.value===n))))}customValidate=()=>{if(!this.nativeSelect||!!this.customError||!this.nativeSelect["setCustomValidity"])return;this.nativeSelect.setCustomValidity("");if(this.required&&!this.valArray.length){this.nativeSelect.setCustomValidity("Please fill in this field.");return true}if(this.valArray.length&&!this.allowCustomValues&&!this.isValidValues()){this.nativeSelect.setCustomValidity("Please choose an item from this field.");return true}if(this.max&&this.valArray.length>this.max){this.nativeSelect.setCustomValidity(`Only up to ${this.max} values are allowed.`);return true}if(this.min&&this.valArray.length<this.min){this.nativeSelect.setCustomValidity(`You must select a minimum of ${this.min} values.`);return true}return false};showInlineValidation=n=>{if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this._invalid=false;this.showErrorMsg=false;this.errorMessage="";if(!this.nativeSelect.validity.valid){this.errorMessage=this.nativeSelect.validationMessage;this._invalid=true;this.showErrorMsg=true}this.nanoValidate.emit({isValid:!this.invalid,errorMessage:this.errorMessage,originalEvent:n})};handleInvalid=n=>{this._invalid=true;if(this.validateOn==="submit"){this._invalid=this.showErrorMsg=this.customValidate()}if(this.showInlineError)n.preventDefault();requestAnimationFrame((()=>this.showInlineValidation(n)))};setValue=n=>{n.preventDefault();if(!this.multiple){this.value=n.detail.value;return}if(this.value&&this.value.length&&this.value.includes(n.detail.value))return;if(this.max&&this.value.length===this.max)return;if(Number.isNaN(this._maxValuesVisible)||this.value.length<=this._maxValuesVisible){this.currInsertIndex++}this.value=[...this.value.slice(0,this.currInsertIndex),n.detail.value,...this.value.slice(this.currInsertIndex)];this.inputSearchVal=""};removeValue=n=>{if(this.readonly||this.disabled)return;if(!this.multiple||!this.value.length)return;if(!n)n=this.value[this.value.length-1];this.value=this.value.filter((e=>e!==n));if(Number.isNaN(this._maxValuesVisible)||this.value.length<=this._maxValuesVisible){this.currInsertIndex--}this.setFocus()};slotChangeObserver(){if(!window["MutationObserver"])return;const n=this.mo=new MutationObserver((()=>this.processSlottedContent()));n.observe(this.el,{childList:true,subtree:true})}processSlottedContent(){this.hasLabelSlot=!!this.el.querySelectorAll('[slot="label"]').length;this.hasHelperSlot=!!this.el.querySelector('[slot="helper"]');this.hasHelperEndSlot=!!this.el.querySelector('[slot="helper-end"]')}getOptionWithValue(n){let e;const t=this.datalist?.activeOptions?.length?this.datalist.activeOptions:this.options;const a=t.find(((t,a)=>{e=a;return!t.disabled&&t.value?.length&&t.value===n}));return[a,e]}getLabel(n){const e=this.getOptionWithValue(n)[0];return e&&e.label?e.label:n}onReset(n){const e=this.form?document.querySelector("#"+this.form):this.el.closest("form");if(!e||n.target!==this.el.closest("form"))return;this.clearSelectValue()}handleBlur(n){if(!this.hasFocus)return;const e=n;let t;requestAnimationFrame((()=>{if(e.key){if(e.key!=="Tab")return;t=u()}else t=n.target;if(c(this.el.tagName.toLowerCase(),t)!==this.el){this.onBlur()}}))}setOptions=()=>{if(!this.datalist||!this.datalist.activeOptions||!this.datalist.activeOptions.length)return;this._elementOptions=this.datalist.activeOptions.map((n=>{const{value:e,selected:t,label:a,filterMeta:s}=n;return{value:e,selected:t,label:a,filterMeta:s}}));this.customValidate()};handleDocumentKeyDown=n=>{if(!this.multiple||!this.hasFocus)return;if(!this.inputSearchVal){let e;switch(n.key){case"Backspace":if(this.inputCtrl.previousElementSibling)e=this.inputCtrl.previousElementSibling;else break;this.removeValue(e.dataset.value||null);break;case"Delete":if(this.inputCtrl.nextElementSibling)e=this.inputCtrl.nextElementSibling;else break;this.removeValue(e.dataset.value||null);break;case"ArrowLeft":case"ArrowRight":if(!this.value.length)break;if(n.key==="ArrowLeft"&&this.inputCtrl.previousSibling)this.currInsertIndex--;if(n.key==="ArrowRight"&&this.inputCtrl.nextSibling)this.currInsertIndex++;setTimeout((()=>{this.inputCtrl.focus()}),20);n.preventDefault();break}}};onBlur=()=>{this.hasFocus=false;requestAnimationFrame((()=>{if(this.validateOn==="dirty"&&!this.hasFocus)this.showInlineValidation()}));this.nanoBlur.emit();if(!this.allowCustomValues&&this.multiple){this.inputSearchVal="";const n=new window.Event("change");this.inputCtrl.dispatchEvent(n)}};onFocus=()=>{this.hasFocus=true;this.nanoFocus.emit()};clearSelectValue=n=>{if(this.clearSelect&&!this.readonly&&!this.disabled&&n){n.preventDefault();n.stopPropagation()}if(this.multiple){this.value=[];this.currInsertIndex=-1}else this.value="";this.inputCtrl.value="";const e=new window.Event("change");this.inputCtrl.dispatchEvent(e)};onClick=()=>{this.setFocus()};onDragStart=n=>{const e=n.target;this.dragVal=e.dataset.value};onDragEnd=n=>{this.dragVal=null;n.preventDefault()};onDragLeave=n=>{const e=n.target;const t=e.dataset&&e.dataset.value?e.dataset.value:null;if(!t||this.dragVal===t||!this.value.includes(this.dragVal)){n.preventDefault();return}const a=this.value.indexOf(t);const s=this.value.indexOf(this.dragVal);const o=this.value;const i=o[a];o[a]=o[s];o[s]=i;this.value=[...o]};onMultiInput=n=>{this.inputSearchVal=n.target.value.trim();this.nanoSearchChange.emit({value:n.target.value.trim()})};connectedCallback(){this.debounceChanged();this.watchMaxValuesVisible();this.el.dispatchEvent(new CustomEvent("nanoDidLoad",{detail:this.el}))}disconnectedCallback(){document.dispatchEvent(new CustomEvent("nanoDidUnload",{detail:this.el}));if(this.mo)this.mo.disconnect()}componentDidLoad(){this.slotChangeObserver();this.customValidate();this.setDataListOpts();requestAnimationFrame((()=>this.onInit=false))}componentWillLoad(){this.processSlottedContent()}render(){const n=this.selectId+"-lbl";const e=this.showInlineError||this.hasHelperSlot?this.selectId+"-moreId":"";const t=this.hasHelperEndSlot?this.selectId+"-helper":"";this.rtl=this.el.ownerDocument.dir==="rtl";this.valueItems=[];const a=(({el:n,floatLabel:e,label:t,errorMessage:a,showInlineError:s,hasHelperSlot:o,hasHelperEndSlot:i,hasLabelSlot:l,hideLabel:r,placeholder:c,rtl:d})=>({el:n,floatLabel:e,label:t,errorMessage:a,showInlineError:s,hasHelperSlot:o,hasHelperEndSlot:i,hasLabelSlot:l,hideLabel:r,placeholder:c,rtl:d}))(this);const i={...a,labelId:n,moreId:e,helperEndId:t,hasValue:!!this.value.length||!!this.inputSearchVal.length,controlId:this.selectId};const l=(({readonly:n,disabled:e})=>({readonly:n,disabled:e,clearControl:this.clearSelect}))(this);return o(s,{key:"a8b87fdaaa377377dc9a9c3a6b4937ae854f43bb",type:this.multiple?"select-multiple":"select-one","aria-disabled":this.disabled?"true":null,class:{...b(this.color),"has-value":!!this.value.length||!!this.inputSearchVal.length,"has-focus":this.hasFocus,"is-invalid":this.invalid,"has-label":this.label!==null&&!this.floatLabel,"has-float-label":this.label!==null&&this.floatLabel,rtl:this.rtl,"has-multiple":this.multiple,"has-clr-btn":this.clearSelect,masked:this.mask,"nano-select":true}},o(m,{key:"6bb32ca83cc5d25f65510f938dbe79b43fa5c108",...i},o(v,{key:"c66fc73cb316399ecd7cf26eb1f34d30b40b4692",...l,onClearText:this.clearSelectValue,control:this.el,ref:n=>this.selectWrap=n,endValueSlot:o("slot",{name:"down-arrow"},o("nano-icon",{slot:"value-end",name:"light/chevron-down"}))},this.multiple&&o("div",{key:"5b26becd4bea50f2bbbd6545490517520bf54bf2",class:"select__multi-wrap select"},this.multipleValues(n,e,t)),!this.multiple&&[this.mask&&o("div",{key:"b01c76ac8e10f63b7bba076799fb70583f8f0b8f",class:"select__mask"},this.getLabel(this.value)),o("input",{key:"f030e89b72b594dde16b701c9ca07c65542162b2",id:this.selectId,class:"select__native-input",ref:n=>this.inputCtrl=n,"aria-labelledby":n+" "+e+" "+t,disabled:this.disabled,form:this.form,placeholder:this.placeholder,readonly:true,required:this.required,value:this.getLabel(this.value),onFocus:this.onFocus})])),o("nano-datalist",{key:"74dbc317d620eb13e4b3b82559fb8f19f6b3bda5",disabled:this.disabled||this.readonly,onNanoOptionsUpdated:this.setOptions,ref:n=>this.datalist=n,selected:this.valArray,type:this.multiple?"selctMulti":"select",onNanoSelect:this.setValue,onNanoDeselect:n=>{n.preventDefault();this.removeValue(n.detail.value)},options:this._options.length?this._options:undefined},this.allowCustomValues&&this.multiple&&!!this.inputSearchVal&&o("nano-option",{key:"3aba3b3160c0ab202782d54fbdb5c8fba8575319",slot:"list-top",value:this.inputSearchVal,selected:false,label:this.inputSearchVal,onNanoSelect:()=>this.inputCtrl.focus()},o("span",{key:"fee57aeb5bcce9ad2c30d4e208c11cf7aaebabc6",slot:"check-icon"}),"Add '",this.inputSearchVal,"'"),o("slot",{key:"922baf9809f37affb5c956f74b85bf727c4e40f4"})),o("select",{key:"9cdfe75682e7c7f4e9cd56123f07f8c195d2d47c",id:this.selectId+"-hidden",class:"select__native-ctrl",ref:n=>this.nativeSelect=n,"aria-labelledby":n+" "+e+" "+t,disabled:this.disabled,form:this.form,multiple:this.multiple,name:this.name,required:this.required,onInvalid:this.handleInvalid},this.allowCustomValues&&this.valArray.map((n=>o("option",{value:n,selected:true},n))),!this.allowCustomValues&&this.options.map((n=>o("option",{value:n.value,selected:this.valArray.includes(n.value),disabled:n.disabled,label:n.label},this.valArray.includes(n.value))))))}multipleValues(n,e,t){const a=o("input",{class:"select__multi-input",id:this.selectId,ref:n=>this.inputCtrl=n,readonly:this.readonly,disabled:this.disabled,autoFocus:this.autofocus,autocomplete:"off",onKeyDown:this.handleDocumentKeyDown,onInput:this.onMultiInput,value:this.inputSearchVal,onTouchStart:this.onClick,onMouseDown:this.onClick,onFocus:this.onFocus,placeholder:this.placeholder&&!this.value.length?this.placeholder:"","aria-labelledby":n+" "+e+" "+t});if(!this.value.length)return a;const s=[];this.value.forEach(((n,e)=>{if(!Number.isNaN(this._maxValuesVisible)&&e>this._maxValuesVisible)return;let t;if(e===this._maxValuesVisible){t=o("span",{"data-value":n,class:"select__multi-value"},o("span",null,"+",this.value.length-this._maxValuesVisible))}else{t=o("span",{onDragStart:this.onDragStart,onDragLeave:this.onDragLeave,onDragEnd:this.onDragEnd,onDragOver:n=>n.preventDefault(),draggable:true,"data-value":n,ref:n=>this.valueItems.push(n),class:"select__multi-value select__multi-value--closable"},this.valueTagTemplate?o("span",{innerHTML:this.valueTagTemplate?this.valueTagTemplate(...this.getOptionWithValue(n)):undefined}):o("span",null,this.getLabel(n)),o("button",{class:"select__multi-value-remove",type:"button",tabindex:"-1",onTouchEnd:()=>{this.removeValue(n)},onMouseUp:()=>{this.removeValue(n)}},o("nano-icon",{name:"light/xmark"})))}if(e===0&&this.currInsertIndex<0){s.push(a,t)}else if(e===this.currInsertIndex){s.push(t,a)}else{s.push(t)}}));return s}static get watchers(){return{maxValuesVisible:["watchMaxValuesVisible"],debounce:["debounceChanged"],required:["shouldValidate"],disabled:["shouldValidate"],min:["shouldValidate"],max:["shouldValidate"],readonly:["shouldValidate"],value:["valueChanged"],dropDownConfig:["setDataListOpts"]}}};C.style=w;export{g as nano_global_nav_user_profile,x as nano_nav_item,C as nano_select};
|
5
5
|
//# sourceMappingURL=nano-global-nav-user-profile_3.entry.js.map
|