@nanoporetech-digital/components 2.15.0 → 2.16.0
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/CHANGELOG.md +17 -0
- package/dist/cjs/nano-datalist_3.cjs.entry.js +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +1 -1
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-nav-item_2.cjs.entry.js +1 -1
- package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
- package/dist/collection/components/datalist/datalist.js +1 -1
- package/dist/collection/components/datalist/datalist.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.css +3 -2
- package/dist/collection/components/input/input.css +3 -3
- package/dist/collection/components/select/select.css +1 -0
- package/dist/components/datalist.js +1 -1
- package/dist/components/datalist.js.map +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/nano-global-nav.js +1 -1
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/custom-elements/index.js +4 -4
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/nano-datalist_3.entry.js +1 -1
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +1 -1
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +1 -1
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-nav-item_2.entry.js +1 -1
- package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
- package/dist/esm-es5/nano-datalist_3.entry.js +1 -1
- package/dist/esm-es5/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm-es5/nano-global-nav.entry.js +1 -1
- package/dist/esm-es5/nano-global-nav.entry.js.map +1 -1
- package/dist/esm-es5/nano-input.entry.js +1 -1
- package/dist/esm-es5/nano-input.entry.js.map +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/p-1ef47604.entry.js +5 -0
- package/dist/nano-components/p-1ef47604.entry.js.map +1 -0
- package/dist/nano-components/{p-d187fa1e.entry.js → p-42a77642.entry.js} +2 -2
- package/dist/nano-components/{p-d187fa1e.entry.js.map → p-42a77642.entry.js.map} +1 -1
- package/dist/nano-components/p-495b3195.system.entry.js +5 -0
- package/dist/nano-components/p-495b3195.system.entry.js.map +1 -0
- package/dist/nano-components/{p-d74f4b9d.entry.js → p-65192b9b.entry.js} +2 -2
- package/dist/nano-components/p-65192b9b.entry.js.map +1 -0
- package/dist/nano-components/p-6b35560c.system.js +1 -1
- package/dist/nano-components/{p-ed44eb45.system.entry.js → p-80c6166e.system.entry.js} +2 -2
- package/dist/nano-components/{p-ed44eb45.system.entry.js.map → p-80c6166e.system.entry.js.map} +1 -1
- package/dist/nano-components/p-c8ff4172.entry.js +5 -0
- package/dist/nano-components/p-c8ff4172.entry.js.map +1 -0
- package/dist/nano-components/{p-5841bd7a.system.entry.js → p-db8aea7a.system.entry.js} +2 -2
- package/dist/nano-components/p-db8aea7a.system.entry.js.map +1 -0
- package/dist/nano-components/{p-1137929a.system.entry.js → p-de983c13.system.entry.js} +2 -2
- package/dist/nano-components/p-de983c13.system.entry.js.map +1 -0
- package/docs-json.json +1 -1
- package/package.json +2 -2
- package/dist/nano-components/p-1137929a.system.entry.js.map +0 -1
- package/dist/nano-components/p-3d9623ad.entry.js +0 -5
- package/dist/nano-components/p-3d9623ad.entry.js.map +0 -1
- package/dist/nano-components/p-5841bd7a.system.entry.js.map +0 -1
- package/dist/nano-components/p-70a54c01.entry.js +0 -5
- package/dist/nano-components/p-70a54c01.entry.js.map +0 -1
- package/dist/nano-components/p-7f5e58b5.system.entry.js +0 -5
- package/dist/nano-components/p-7f5e58b5.system.entry.js.map +0 -1
- package/dist/nano-components/p-d74f4b9d.entry.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"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"],"names":["datalistCss","findLabel","formCtrl","foundLabel","id","document","querySelector","closest","listIds","DataList","[object Object]","hostRef","this","isNanoInput","typeToSelect","listId","isFiltered","shouldFocus","_allOptEles","actvOptEles","canOpen","optionIds","selected","_dropDownConfig","skidding","options","type","open","disableFilter","disabled","optSelected","e","stopPropagation","changeInputValue","detail","raf","inputChange","shouldOpen","handleShow","async","listBox","setFocus","showActiveElement","handleHide","activeElement","getActiveElement","body","host","tagName","toLowerCase","connectedInput","focus","inputClick","manageDropdownDisplay","inputKeydown","ignoreKeys","includes","key","typeToSelectTimeout","test","clearTimeout","window","setTimeout","setOptStartsWith","preventDefault","optionKeyDown","deleteKeys","exactMatch","debounce","bind","allOptEles","opts","_a","value","forEach","opt","dropDownConfig","ddc","Object","assign","activeOptions","writeTask","nanoDropdown","setAttribute","toString","nanoInput","getInputElement","input","HTMLElement","length","mo","MutationObserver","processSlottedContent","observe","childList","subtree","disconnect","undefined","flatMap","option","i","label","createElement","ariaPosinset","ariaSetsize","textContent","slot","append","dwConfig","closeOnSelect","autocompleteType","readonly","placement","tetherTo","readOnly","newInput","oldInput","removeEventListener","inputLabel","removeAttribute","addEventListener","labels","item","c","val","optIds","hidden","isSelected","push","hasNoResult","openWatcher","nanoOptionsUpdated","emit","dropwdownOpen","find","nanoSelected","filter","nanoDeselect","nanoSelect","defaultPrevented","event","Event","dispatchEvent","attrFind","toFind","substring","foundEle","trim","filterMeta","Array","from","querySelectorAll","valStr","activeEles","indexOf","watchInputChange","manageSlotChangeListener","console","warn","h","Host","role","aria-owns","join","aria-label","ref","el","dialogTitle","class","dlist__dropdown","dlist--isfiltered","onNanoAfterShow","onNanoAfterHide","dlist__menu","dlist__menu--open","tabIndex","onNanoSelect","onKeyDown","name","aria-live","menuCss","Menu","ignoreMouseEvents","_hasFocus","handleFocus","setActiveFocusItem","selectedItem","getItems","nanoFocus","handleClick","target","handleKeyDown","ignoreMouseTimeout","activeItem","click","items","index","scrollIntoView","block","shadowRoot","getTextContent","handleMouseOver","hasFocus","menu","preventScroll","blur","map","opened","ctx","getDirectChildren","getAttribute","classList","contains","kev","found","composedPath","resetActiveItem","nanoBlur","onClick","onMouseOver","onFocus","part","menu--has-focus","optionCss","Option","optId","labelContent","valueChanged","labelChanged","aria-selected","aria-disabled","onMouseDown","option--selected","option--disabled","option--novalue","aria-hidden"],"mappings":"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","sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --padding-top: for all nested `nano-option` elements. Defaults to #{$spacing-small};\n * @prop --padding-bottom: for all nested `nano-option` elements. Defaults to #{$spacing-small};\n * @prop --padding-start: for all nested `nano-option` elements. Defaults to #{$spacing-xlarge};\n * @prop --padding-end: for all nested `nano-option` elements. Defaults to #{$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($colors, palegrey)};\n */\n\n --padding-top: #{$spacing-small};\n --padding-bottom: #{$spacing-small};\n --padding-start: #{$spacing-xlarge};\n --padding-end: #{$spacing-xlarge};\n --font-size: 0.8em;\n --color: #{map.get($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 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 h,\n Host,\n Element,\n State,\n Watch,\n Prop,\n Event,\n EventEmitter,\n writeTask,\n Build,\n} from '@stencil/core';\nimport { debounce, getActiveElement, raf } from '../../utils';\nimport type { Dropdown } from '../dropdown/dropdown';\nimport type { NanoMenuCustomEvent, OptionInterface } from '../../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 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('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 (this.input instanceof HTMLElement) {\n this.connectedInput = this.input;\n }\n }\n\n @Watch('options')\n manageSlotChangeListener() {\n if (!this.host) return;\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 // add imperative `options`\n writeTask(() => {\n this.allOptEles = this.options.flatMap((option, i) => {\n if (option.value || option.label) {\n const opt = Object.assign(document.createElement('nano-option'), {\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 this.host.append(opt);\n return opt;\n }\n });\n\n if (this.connectedInput?.value.length && this.type !== 'select') {\n this.inputChange();\n } else this.actvOptEles = [...this.allOptEles];\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('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 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('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 raf(() => 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 processSlottedContent() {\n raf(() => {\n this.allOptEles = Array.from(this.host.querySelectorAll('nano-option'));\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 (\n activeElement === document.body ||\n activeElement.closest(this.host.tagName.toLowerCase())\n ) {\n this.connectedInput.focus();\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-z0-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 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.manageSlotChangeListener();\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 render() {\n return (\n <Host\n role={this.actvOptEles.length ? 'listbox' : undefined}\n aria-owns={this.optionIds.join(' ')}\n aria-label=\"Select options from the list below\"\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 >\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 {!this.options.length && <slot />}\n {!!this.options.length && <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 aria-live=\"polite\" role=\"status\" 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 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/layers';\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($colors, blue--faded)};\n * @prop --bg-color-focus: bg focus color of nav-items. Defaults to #{map.get($colors, blue--faded)};\n * @prop --bg-color-selected: bg selected color of nav-items. Defaults to #{map.get($colors, blue--faded)};\n\n * @prop --color-hover: text hover color of nav-items. Defaults to #{map.get($colors, blue)}\n * @prop --color-selected: text selected color of nav-items. Defaults to #{map.get($colors, blue)}\n * @prop --color-focus: text focus color of nav-items. Defaults to #{map.get($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: #{$spacing-medium};\n --padding-end: #{$spacing-medium};\n --padding-top: #{$spacing-small};\n --padding-bottom: #{$spacing-small};\n --secondary-padding-top: 0;\n --secondary-padding-bottom: 0;\n --bg-color-hover: #{map.get($colors, blue--faded)};\n --bg-color-focus: #{map.get($colors, blue--faded)};\n --bg-color-selected: #{map.get($colors, blue--faded)};\n --color-hover: #{map.get($colors, blue)};\n --color-selected: #{map.get($colors, blue)};\n --color-focus: #{map.get($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-width: 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 h,\n Host,\n Element,\n Prop,\n Listen,\n} from '@stencil/core';\nimport {\n getTextContent,\n getDirectChildren,\n getActiveElement,\n} from '../../utils';\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() === '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('nano-nav-item.secondary-open');\n if (opened.length) {\n const ctx = opened[opened.length - 1] as HTMLNanoNavItemElement;\n items = Array.from(ctx.querySelectorAll('nano-nav-item, nano-option'));\n } else {\n items = getDirectChildren(\n this.el,\n 'nano-nav-item, nano-option',\n 'slot'\n ) as ValidElement[];\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 =\n !item || item.disabled ? items.find((i) => i.selected) || items[0] : item;\n\n items\n .filter((i) => i.tagName.toLowerCase() === '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 (activeItem as NNI).setFocus\n ? (activeItem as NNI).setFocus()\n : 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('nano-nav-item');\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 // 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 = item.shadowRoot.querySelector(\n 'slot:not([name])'\n ) as HTMLSlotElement;\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('nano-nav-item') || target.closest('nano-option');\n\n if (item && !this.ignoreMouseEvents) {\n this.setActiveFocusItem(item);\n }\n };\n\n // Component Lifecycle\n\n render() {\n return (\n <Host>\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 role={this.type}\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 >\n <slot />\n </div>\n </Host>\n );\n }\n}\n","@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --padding-top: Defaults to #{$spacing-small};\n * @prop --padding-bottom: Defaults to #{$spacing-small};\n * @prop --padding-start: Defaults to #{$spacing-small};\n * @prop --padding-end: Defaults to #{$spacing-small};\n\n * @prop --bg: default background. Defaults to none;\n * @prop --bg-selected: background when selected. Defaults to #{$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, #{$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($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: #{$select-opt-selected};\n --bg-focus: var(--nano-color-base, #{nano-color(primary, tint)});\n --bg-disabled: none;\n --color: var(--input-text-color, #{$input-text-color});\n --color-selected: var(--nano-color-base, #{nano-color(primary, base)});\n --color-focus: var(--nano-color-contrast, #{nano-color(primary, contrast)});\n --color-disabled: #{map.get($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 width: 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 h,\n Host,\n State,\n Watch,\n Element,\n Listen,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { OptionInterface } from '../../interface';\nimport { debounce, getDirectChildren } from '../../utils';\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.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 >\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"]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
var __awaiter=this&&this.__awaiter||function(e,t,n,o){function i(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,s){function a(e){try{l(o.next(e))}catch(t){s(t)}}function r(e){try{l(o["throw"](e))}catch(t){s(t)}}function l(e){e.done?n(e.value):i(e.value).then(a,r)}l((o=o.apply(e,t||[])).next())}))};var __generator=this&&this.__generator||function(e,t){var n={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},o,i,s,a;return a={next:r(0),throw:r(1),return:r(2)},typeof Symbol==="function"&&(a[Symbol.iterator]=function(){return this}),a;function r(e){return function(t){return l([e,t])}}function l(a){if(o)throw new TypeError("Generator is already executing.");while(n)try{if(o=1,i&&(s=a[0]&2?i["return"]:a[0]?i["throw"]||((s=i["return"])&&s.call(i),0):i.next)&&!(s=s.call(i,a[1])).done)return s;if(i=0,s)a=[a[0]&2,s.value];switch(a[0]){case 0:case 1:s=a;break;case 4:n.label++;return{value:a[1],done:false};case 5:n.label++;i=a[1];a=[0];continue;case 7:a=n.ops.pop();n.trys.pop();continue;default:if(!(s=n.trys,s=s.length>0&&s[s.length-1])&&(a[0]===6||a[0]===2)){n=0;continue}if(a[0]===3&&(!s||a[1]>s[0]&&a[1]<s[3])){n.label=a[1];break}if(a[0]===6&&n.label<s[1]){n.label=s[1];s=a;break}if(s&&n.label<s[2]){n.label=s[2];n.ops.push(a);break}if(s[2])n.ops.pop();n.trys.pop();continue}a=t.call(e,n)}catch(r){a=[6,r];i=0}finally{o=s=0}if(a[0]&5)throw a[1];return{value:a[0]?a[1]:void 0,done:true}}};var __spreadArray=this&&this.__spreadArray||function(e,t,n){if(n||arguments.length===2)for(var o=0,i=t.length,s;o<i;o++){if(s||!(o in t)){if(!s)s=Array.prototype.slice.call(t,0,o);s[o]=t[o]}}return e.concat(s||Array.prototype.slice.call(t))};
|
2
2
|
/*!
|
3
3
|
* Web Components for Nanopore digital Web Apps
|
4
|
-
*/System.register(["./p-f0e912f3.system.js","./p-08f7855e.system.js","./p-a504d182.system.js","./p-09d2d944.system.js","./p-e03f327b.system.js","./p-e5f5e017.system.js"],(function(e){"use strict";var t,n,o,i,s,a,r,l,c,u,p;return{setters:[function(e){t=e.r;n=e.c;o=e.f;i=e.h;s=e.e;a=e.g},function(e){r=e.r},function(e){l=e.d},function(e){c=e.g},function(e){u=e.g},function(e){p=e.g}],execute:function(){var d=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--padding-top:var(--nano-spacing-small, 8px);--padding-bottom:var(--nano-spacing-small, 8px);--padding-start:var(--nano-spacing-xlarge, 24px);--padding-end:var(--nano-spacing-xlarge, 24px);--font-size:0.8em;--color:#b5aea7;color:var(--color)}.dlist--isfiltered ::slotted(*:not(nano-option):not([slot=no-result]):not([slot=list-top]):not([slot=list-bottom])){display:none !important}.dlist__dropdown{--min-width:100%;--overflow:auto}.dlist__status{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.dlist__menu{--padding-top:inherit;--padding-bottom:inherit;--padding-start:inherit;--padding-end:inherit;--font-size:inherit}";function h(e){var t;if(e.id){t=document.querySelector("label[for='".concat(e.id,"']"))}if(!t){t=e.closest("label")}return t}var f=0;var b=e("nano_datalist",function(){function e(e){var o=this;t(this,e);this.nanoSelect=n(this,"nanoSelect",7);this.nanoDeselect=n(this,"nanoDeselect",7);this.nanoOptionsUpdated=n(this,"nanoOptionsUpdated",7);this.isNanoInput=false;this.typeToSelect="";this.listId="nano-datalist-".concat(f++);this.isFiltered=false;this.shouldFocus=false;this._allOptEles=[];this.actvOptEles=[];this.canOpen=true;this.optionIds=[];this.selected=[];this._dropDownConfig={skidding:-1};this.options=[];this.type="input";this.open=false;this.disableFilter=false;this.disabled=false;this.optSelected=function(e){e.stopPropagation();o.changeInputValue(e.detail);r((function(){return o.inputChange()}));if(o.type!=="selctMulti")o.shouldOpen=false};this.handleShow=function(){return __awaiter(o,void 0,void 0,(function(){return __generator(this,(function(e){if(this.shouldFocus){this.shouldFocus=false;this.listBox.setFocus()}else if(this.type==="select")this.listBox.showActiveElement();return[2]}))}))};this.handleHide=function(){o.open=false;var e=c();if(e===document.body||e.closest(o.host.tagName.toLowerCase())){o.connectedInput.focus()}};this.inputClick=function(){o.shouldOpen=true;o.manageDropdownDisplay()};this.inputKeydown=function(e){var t=["Shift","ArrowRight","ArrowLeft","Escape","Enter","Tab"];if(t.includes(e.key)){if(e.key==="Tab")o.shouldOpen=false;return}if(o.type==="select"&&!["ArrowDown","ArrowUp"].includes(e.key)&&(e.key!==" "||o.typeToSelectTimeout)){if(e.key===" "||/^[a-z0-9]+$/i.test(e.key)){clearTimeout(o.typeToSelectTimeout);o.typeToSelectTimeout=window.setTimeout((function(){o.typeToSelect="";o.typeToSelectTimeout=0}),750);o.typeToSelect+=e.key;o.setOptStartsWith()}return}o.shouldOpen=true;o.manageDropdownDisplay();if(["ArrowDown","ArrowUp"].includes(e.key)){e.preventDefault();o.shouldFocus=true}};this.optionKeyDown=function(e){var t=["Shift","ArrowUp","ArrowDown","Escape","Enter","Tab","Space","PageUp","PageDown","Home","End"," "];if(t.includes(e.key)){if(e.key==="Escape")o.connectedInput.focus();return}var n=["Delete","Backspace"];if(o.type!=="select"&&(!o.exactMatch||n.includes(e.key))){o.connectedInput.focus()}};this.inputChange=l(this.inputChange.bind(this),50)}Object.defineProperty(e.prototype,"allOptEles",{get:function(){return this._allOptEles},set:function(e){var t=this;var n;this._allOptEles=e;if((n=this.connectedInput)===null||n===void 0?void 0:n.value)return;e.forEach((function(e){if(e.selected&&!t.selected.includes(e.value)){t.changeInputValue(e)}}))},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"dropDownConfig",{get:function(){return this._dropDownConfig},set:function(e){this._dropDownConfig=Object.assign(Object.assign({},this._dropDownConfig),e)},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"activeOptions",{get:function(){return this.allOptEles},enumerable:false,configurable:true});e.prototype.openWatcher=function(){var e=this;o((function(){e.nanoDropdown.open=e.open;e.connectedInput.setAttribute("aria-expanded",e.open.toString())}))};e.prototype.watchInputChange=function(){return __awaiter(this,void 0,void 0,(function(){var e,t;return __generator(this,(function(n){switch(n.label){case 0:if(!(e=this.host.closest("nano-input")))return[3,2];this.isNanoInput=true;t=this;return[4,e.getInputElement()];case 1:t.connectedInput=n.sent();return[3,3];case 2:if(this.input&&typeof this.input==="string"&&(e=document.querySelector(this.input))){this.isNanoInput=false;this.connectedInput=e}else if(this.input instanceof HTMLElement){this.connectedInput=this.input}n.label=3;case 3:return[2]}}))}))};e.prototype.manageSlotChangeListener=function(){var e=this;var t;if(!this.host)return;if((!this.options||!this.options.length)&&!this.mo){{var n=this.mo=new MutationObserver((function(){return e.processSlottedContent()}));n.observe(this.host,{childList:true,subtree:true})}this.processSlottedContent();return}if((t=this.options)===null||t===void 0?void 0:t.length){if(!!this.mo){this.mo.disconnect();this.mo=undefined}o((function(){var t;e.allOptEles=e.options.flatMap((function(t,n){if(t.value||t.label){var o=Object.assign(document.createElement("nano-option"),{label:t.label,value:t.value,ariaPosinset:n,ariaSetsize:e.options.length,selected:t.selected,id:e.listId+"-option-"+n,textContent:t.label?t.label:t.value,slot:"internal-opts"});e.host.append(o);return o}}));if(((t=e.connectedInput)===null||t===void 0?void 0:t.value.length)&&e.type!=="select"){e.inputChange()}else e.actvOptEles=__spreadArray([],e.allOptEles,true)}))}};e.prototype.watchTypeChange=function(){if(!this.connectedInput)return;var e={closeOnSelect:false};var t="both";var n=false;switch(this.type){case"input":e={closeOnSelect:true};break;case"select":t="list";n=true;e={closeOnSelect:true,placement:"center"};break}if(!this.isNanoInput){e.tetherTo=this.connectedInput}this.dropDownConfig=Object.assign(Object.assign({},this.dropDownConfig),e);this.connectedInput.setAttribute("aria-autocomplete",t);this.connectedInput.readOnly=n};e.prototype.manageInputEvents=function(e,t){var n=this;var i;if(!!t){var s=t.closest("nano-input");if(s){s.removeEventListener("nanoChange",this.inputChange)}t.removeEventListener("change",this.inputChange);t.removeEventListener("click",this.inputClick);t.removeEventListener("keydown",this.inputKeydown);t.removeEventListener("input",this.inputChange);this.inputLabel=null;o((function(){t.removeAttribute("role");t.removeAttribute("aria-expanded");t.removeAttribute("aria-controls");t.removeAttribute("aria-owns");t.removeAttribute("aria-haspopup");t.removeAttribute("aria-autocomplete");t.removeAttribute("autocomplete")}))}if(!!e){var s=e.closest("nano-input");if(s){s.addEventListener("nanoChange",this.inputChange)}e.addEventListener("change",this.inputChange);e.addEventListener("click",this.inputClick);e.addEventListener("keydown",this.inputKeydown);e.addEventListener("input",this.inputChange);this.listId=this.host.id||this.listId;this.inputLabel=((i=e===null||e===void 0?void 0:e.labels)===null||i===void 0?void 0:i.item(0))||h(e);o((function(){n.host.id=n.listId;e.setAttribute("role","combobox");e.setAttribute("aria-expanded","false");e.setAttribute("aria-controls",n.listId);e.setAttribute("aria-owns",n.listId);e.setAttribute("aria-haspopup","listbox");e.setAttribute("autocomplete","off")}))}};e.prototype.watchActvOptChange=function(){var e=this;var t;var n=0;var i=((t=this.connectedInput)===null||t===void 0?void 0:t.value)||"";var s=[];o((function(){e.allOptEles.forEach((function(t,o){if(e.actvOptEles.includes(t)){n++;t.setAttribute("aria-posinset",n+"");t.setAttribute("aria-setsize",e.actvOptEles.length+"");t.hidden=false;e.isSelected(t,i)}else{t.removeAttribute("aria-posinset");t.removeAttribute("aria-setsize");t.hidden=true;t.selected=false}t.id=e.listId+"-option-"+o;s.push(t.id)}));e.optionIds=s}))};e.prototype.manageCanOpen=function(){if(this.actvOptEles.length||this.hasNoResult)this.canOpen=true;else this.canOpen=false};e.prototype.manageDropdownDisplay=function(){if(this.shouldOpen&&this.canOpen&&!this.disabled)this.open=true;if(!this.shouldOpen||!this.canOpen)this.open=false;this.openWatcher()};e.prototype.fireActiveOptsEvent=function(){this.nanoOptionsUpdated.emit(this.actvOptEles)};e.prototype.isSelected=function(e,t){if(t===e.value||this.selected.includes(e.value)){e.selected=true}else e.selected=false};Object.defineProperty(e.prototype,"dropwdownOpen",{get:function(){if(!this.nanoDropdown||!this.open)return false;return true},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"exactMatch",{get:function(){var e=this;return this.allOptEles.find((function(t){return e.connectedInput.value===t.value}))},enumerable:false,configurable:true});e.prototype.changeInputValue=function(e){var t;var n;if(this.selected.includes(e.value)){this.selected=this.selected.filter((function(t){return t!==e.value}));n=this.nanoDeselect.emit(e)}else{this.selected=__spreadArray([],this.selected,true);n=this.nanoSelect.emit(e)}if(!n.defaultPrevented){if(this.connectedInput)this.connectedInput.value=e.value;var o=new window.Event("change");(t=this.connectedInput)===null||t===void 0?void 0:t.dispatchEvent(o)}};e.prototype.setOptStartsWith=function(){var e=this;var t=function(t){return t.toLowerCase().substring(0,e.typeToSelect.length)===e.typeToSelect};var n=this.allOptEles.find((function(e){return e.value.trim().length>0&&!e.disabled&&(t(e.textContent)||t(e.value)||t(e.label)||t(e.filterMeta))}));if(n)this.changeInputValue(n)};e.prototype.processSlottedContent=function(){var e=this;r((function(){var t;e.allOptEles=Array.from(e.host.querySelectorAll("nano-option"));e.hasNoResult=!!e.host.querySelector('[slot="no-result"]');if(((t=e.connectedInput)===null||t===void 0?void 0:t.value.length)&&e.type!=="select"){e.inputChange()}else e.actvOptEles=e.allOptEles}))};e.prototype.inputChange=function(){var e=this;if(this.disableFilter){this.actvOptEles=this.allOptEles;return}var t=this.connectedInput.value;var n=t.trim().toLowerCase();var o=false;var i=[];var s=function(e){return e.toLowerCase().indexOf(n)>-1};this.allOptEles.forEach((function(n){if((t===n.value||t===n.label)&&e.type!=="selctMulti"){n.selected=true;o=true}else e.isSelected(n,t)}));this.allOptEles.forEach((function(e){if(!n.length||o){i.push(e)}else if(e.value.trim().length>0&&!e.disabled&&(s(e.textContent)||s(e.value)||s(e.label)||s(e.filterMeta))){i.push(e)}}));this.isFiltered=n.length&&!o;this.actvOptEles=i};e.prototype.connectedCallback=function(){this.watchInputChange()};e.prototype.componentDidLoad=function(){this.manageSlotChangeListener();this.openWatcher()};e.prototype.componentDidRender=function(){var e=this;setTimeout((function(){if(!e.connectedInput)console.warn("no `nano-input` found. `nano-datalist` should be nested within an `nano-input` or linked via `input` prop",e.host)}),500)};e.prototype.render=function(){var e=this;return i(s,{role:"listbox","aria-owns":this.optionIds.join(" "),"aria-label":"Select options from the list below"},i("nano-dropdown",Object.assign({},this.dropDownConfig,{ref:function(t){return e.nanoDropdown=t},dialogTitle:"Select options from the list below",class:{dlist__dropdown:true,"dlist--isfiltered":this.isFiltered},onNanoAfterShow:this.handleShow,onNanoAfterHide:this.handleHide}),i("nano-menu",{hidden:!this.actvOptEles.length,type:"listbox",label:this.inputLabel?this.inputLabel.textContent:undefined,class:{dlist__menu:true,"dlist__menu--open":this.dropwdownOpen},tabIndex:-1,onNanoSelect:this.optSelected,onKeyDown:this.optionKeyDown,ref:function(t){return e.listBox=t}},i("slot",{name:"list-top"}),!this.options.length&&i("slot",null),!!this.options.length&&i("slot",{name:"internal-opts"}),i("slot",{name:"list-bottom"})),i("nano-menu",{type:"listbox",label:"No results found",hidden:!!this.actvOptEles.length,class:{dlist__menu:true,"dlist__menu--open":this.dropwdownOpen}},i("slot",{name:"no-result"})),!!this.actvOptEles&&i("div",{"aria-live":"polite",role:"status",class:"dlist__status"},this.actvOptEles.length," result",this.actvOptEles.length>1?"s":""," available.")))};Object.defineProperty(e.prototype,"host",{get:function(){return a(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{open:["openWatcher"],input:["watchInputChange"],options:["manageSlotChangeListener"],type:["watchTypeChange"],connectedInput:["watchTypeChange","manageInputEvents"],selected:["watchActvOptChange"],actvOptEles:["watchActvOptChange","manageCanOpen","fireActiveOptsEvent"],hasNoResult:["manageCanOpen"],shouldOpen:["manageDropdownDisplay"],canOpen:["manageDropdownDisplay"]}},enumerable:false,configurable:true});return e}());b.style=d;var v=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--padding-start:var(--nano-spacing-medium, 16px);--padding-end:var(--nano-spacing-medium, 16px);--padding-top:var(--nano-spacing-small, 8px);--padding-bottom:var(--nano-spacing-small, 8px);--secondary-padding-top:0;--secondary-padding-bottom:0;--bg-color-hover:#f2f7f9;--bg-color-focus:#f2f7f9;--bg-color-selected:#f2f7f9;--color-hover:#007495;--color-selected:#007495;--color-focus:#007495;--focus-outline:none;--font-size:0.9em;display:block}.menu{font-size:var(--font-size, 0.9em);-ms-scroll-chaining:none;overscroll-behavior:none;min-width:var(--width);position:relative}.menu:focus{outline:none}::slotted(*:not(nano-nav-item):not(nano-option):not(hr):not(slot)){padding-inline:var(--padding-start) var(--padding-end);padding-block:var(--padding-top) var(--padding-bottom);display:block}";var g=e("nano_menu",function(){function e(e){var o=this;t(this,e);this.nanoFocus=n(this,"nanoFocus",7);this.nanoBlur=n(this,"nanoBlur",7);this.nanoSelect=n(this,"nanoSelect",7);this.ignoreMouseEvents=false;this.typeToSelect="";this._hasFocus=false;this.type="menu";this.handleFocus=function(){o.setActiveFocusItem(o.selectedItem||o.getItems[0]);o._hasFocus=true;o.nanoFocus.emit()};this.handleClick=function(e){var t=e.target;var n=t.closest("nano-nav-item");if(n&&!n.disabled){o.nanoSelect.emit(n)}};this.handleKeyDown=function(e){clearTimeout(o.ignoreMouseTimeout);o.ignoreMouseTimeout=setTimeout((function(){return o.ignoreMouseEvents=false}),500);o.ignoreMouseEvents=true;switch(e.key){case" ":if(o.activeItem)o.activeItem.click();break;case"ArrowDown":case"ArrowUp":case"PageDown":case"PageUp":case"Home":case"End":var t=o.getItems;var n=o.activeItem;var i=t.indexOf(n);if(t.length){e.preventDefault();if(e.key==="ArrowDown"){i++}else if(e.key==="ArrowUp"){i--}else if(e.key==="Home"||e.key==="PageUp"){i=0}else if(e.key==="End"||e.key==="PageDown"){i=t.length-1}if(i<0)i=t.length-1;if(i>t.length-1)i=0;o.setActiveFocusItem(t[i]);if(t[i])t[i].scrollIntoView({block:"nearest"});return}break}if(e.key===" "||/^[a-z0-9]+$/i.test(e.key)){clearTimeout(o.typeToSelectTimeout);o.typeToSelectTimeout=setTimeout((function(){return o.typeToSelect=""}),750);o.typeToSelect+=e.key;var t=o.getItems;for(var s=0,a=t;s<a.length;s++){var r=a[s];var l=r.shadowRoot.querySelector("slot:not([name])");var c=p(l).toLowerCase().trim();if(c.substring(0,o.typeToSelect.length)===o.typeToSelect){o.setActiveFocusItem(r);break}}}};this.handleMouseOver=function(e){var t=e.target;var n=t.closest("nano-nav-item")||t.closest("nano-option");if(n&&!o.ignoreMouseEvents){o.setActiveFocusItem(n)}}}Object.defineProperty(e.prototype,"hasFocus",{get:function(){return this._hasFocus},enumerable:false,configurable:true});e.prototype.setFocus=function(){return __awaiter(this,void 0,void 0,(function(){var e;return __generator(this,(function(t){if((e=this.menu)===null||e===void 0?void 0:e.focus)this.menu.focus({preventScroll:true});return[2]}))}))};e.prototype.removeFocus=function(){return __awaiter(this,void 0,void 0,(function(){var e;return __generator(this,(function(t){if((e=this.menu)===null||e===void 0?void 0:e.blur)this.menu.blur();return[2]}))}))};e.prototype.showActiveElement=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){if(this.selectedItem)this.selectedItem.scrollIntoView({block:"nearest"});return[2]}))}))};e.prototype.resetActiveItem=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){this.getItems.filter((function(e){return e.tagName.toLowerCase()==="nano-option"})).map((function(e){return e.setAttribute("tabindex","-1")}));return[2]}))}))};Object.defineProperty(e.prototype,"getItems",{get:function(){var e;var t=this.el.querySelectorAll("nano-nav-item.secondary-open");if(t.length){var n=t[t.length-1];e=Array.from(n.querySelectorAll("nano-nav-item, nano-option"))}else{e=u(this.el,"nano-nav-item, nano-option","slot")}return e.filter((function(e){return!e.disabled&&!e.hidden}))},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"activeItem",{get:function(){var e=c();return this.getItems.find((function(t){return t.getAttribute("tabindex")==="0"||t===e||t.classList.contains("has-focus")}))},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"selectedItem",{get:function(){return this.getItems.find((function(e){return e.selected}))},enumerable:false,configurable:true});e.prototype.setActiveFocusItem=function(e,t){if(t===void 0){t=true}return __awaiter(this,void 0,void 0,(function(){var n,o;return __generator(this,(function(i){n=this.getItems;o=!e||e.disabled?n.find((function(e){return e.selected}))||n[0]:e;n.filter((function(e){return e.tagName.toLowerCase()==="nano-option"})).map((function(e){return e.setAttribute("tabindex",e===o?"0":"-1")}));if(!t)return[2];if(o){o.setFocus?o.setFocus():o.focus()}else this.menu.focus();return[2]}))}))};e.prototype.handleBlur=function(e){var t=this;if(!this.hasFocus)return;var n=e;var o;if(n.key){if(n.key!=="Tab")return;o=c()&&c().closest(this.el.tagName.toLowerCase())===this.el}else o=!!e.composedPath().find((function(e){return e===t.el}));if(!o){this.resetActiveItem();this._hasFocus=false;this.nanoBlur.emit()}};e.prototype.render=function(){var e;var t=this;return i(s,null,i("div",{onClick:this.handleClick,onKeyDown:this.handleKeyDown,onMouseOver:this.handleMouseOver,onFocus:this.handleFocus,"aria-label":this.label?this.label:undefined,role:this.type,ref:function(e){return t.menu=e},part:"base",class:(e={menu:true},e["menu--"+this.type]=true,e["menu--has-focus"]=this.hasFocus,e),tabIndex:-1},i("slot",null)))};Object.defineProperty(e.prototype,"el",{get:function(){return a(this)},enumerable:false,configurable:true});return e}());g.style=v;var m=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--bg:none;--bg-selected:var(--nano-select-opt-bg, #f2f7f9);--bg-focus:var(--nano-color-base, var(--nano-color-primary-tint, #2689a5));--bg-disabled:none;--color:var(--input-text-color, var(--nano-input-text-color, #4a4a4a));--color-selected:var(--nano-color-base, var(--nano-color-primary, #007495));--color-focus:var(--nano-color-contrast, var(--nano-color-primary-contrast, #fff));--color-disabled:#b5aea7;--opt-icon-size:1.6em;display:block;color:var(--color);overflow:hidden;font-size:14px;font-size:clamp(12px, .9em, 16px)}:host(:focus){outline:none}.option{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%;background:var(--bg);padding-inline:var(--padding-start) var(--padding-end);padding-block:var(--padding-top) var(--padding-bottom)}:host(:focus) .option:not(.option--disabled),:host .option.option--selected{outline:none;background:var(--bg-selected);color:var(--color-selected)}:host(:focus) .option:not(.option--disabled){background:var(--bg-focus);color:var(--color-focus)}.option.option--disabled{outline:none;color:var(--color-disabled);cursor:not-allowed;background:var(--bg-disabled)}.option.option--novalue{font-style:italic;opacity:0.7}.option__label{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.option__start{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.option__start ::slotted(nano-icon){font-size:var(--opt-icon-size)}.option__start ::slotted(:last-child){-webkit-margin-end:0.5em;margin-inline-end:0.5em}.option__end{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.option__end ::slotted(nano-icon){font-size:var(--opt-icon-size)}.option__end ::slotted(:first-child){-webkit-margin-start:0.5em;margin-inline-start:0.5em}.option__check{visibility:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;position:absolute;inset-inline-start:0.6em;inset-block-start:calc(50% - 0.6em);-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:0.9em}.option--selected:not(.option--novalue) .option__check{visibility:visible}";var y=0;var w=e("nano_option",function(){function e(e){t(this,e);this.nanoSelect=n(this,"nanoSelect",7);this.optId="nano-option-".concat(y++);this.hasFocus=false;this.value="";this.label="";this.selected=false;this.disabled=false;this.filterMeta="";this.handleClick=l(this.handleClick.bind(this),5)}e.prototype.valueChanged=function(){if(!this.value||!this.value.length)this.value=this.labelContent};e.prototype.labelChanged=function(){if(!this.label||!this.label.length)this.label=this.labelContent.length?this.labelContent:this.value};e.prototype.handleKeyDown=function(e){if(e.key!==" "&&e.key!=="Enter")return;e.preventDefault();this.nanoSelect.emit(this.host)};e.prototype.handleClick=function(){if(this.disabled)return;this.nanoSelect.emit(this.host)};Object.defineProperty(e.prototype,"labelContent",{get:function(){return u(this.host,"*:not([slot])",false).map((function(e){return e.textContent})).join(" ").trim()},enumerable:false,configurable:true});e.prototype.componentWillLoad=function(){this.valueChanged();this.labelChanged()};e.prototype.render=function(){return i(s,{role:"option","aria-selected":this.selected?"true":"false","aria-disabled":this.disabled?"true":"false"},i("div",{onMouseDown:this.handleClick,id:this.optId,class:{option:true,"option--selected":this.selected,"option--disabled":this.disabled,"option--novalue":!this.value}},i("div",{part:"check-icon",class:"option__check"},i("slot",{name:"check-icon"},i("nano-icon",{name:"light/check","aria-hidden":"true"}))),i("div",{part:"start",class:"option__start"},i("slot",{name:"start"})),i("div",{part:"label",class:"option__label"},i("slot",null,this.label||this.value)),i("div",{part:"end",class:"option__end"},i("slot",{name:"end"}))))};Object.defineProperty(e.prototype,"host",{get:function(){return a(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{value:["valueChanged"],label:["labelChanged"]}},enumerable:false,configurable:true});return e}());w.style=m}}}));
|
5
|
-
//# sourceMappingURL=p-
|
4
|
+
*/System.register(["./p-f0e912f3.system.js","./p-08f7855e.system.js","./p-a504d182.system.js","./p-09d2d944.system.js","./p-e03f327b.system.js","./p-e5f5e017.system.js"],(function(e){"use strict";var t,n,o,i,s,a,r,l,c,u,p;return{setters:[function(e){t=e.r;n=e.c;o=e.f;i=e.h;s=e.e;a=e.g},function(e){r=e.r},function(e){l=e.d},function(e){c=e.g},function(e){u=e.g},function(e){p=e.g}],execute:function(){var d=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--padding-top:var(--nano-spacing-small, 8px);--padding-bottom:var(--nano-spacing-small, 8px);--padding-start:var(--nano-spacing-xlarge, 24px);--padding-end:var(--nano-spacing-xlarge, 24px);--font-size:0.8em;--color:#b5aea7;color:var(--color)}.dlist--isfiltered ::slotted(*:not(nano-option):not([slot=no-result]):not([slot=list-top]):not([slot=list-bottom])){display:none !important}.dlist__dropdown{--min-width:100%;--overflow:auto}.dlist__status{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.dlist__menu{--padding-top:inherit;--padding-bottom:inherit;--padding-start:inherit;--padding-end:inherit;--font-size:inherit}";function h(e){var t;if(e.id){t=document.querySelector("label[for='".concat(e.id,"']"))}if(!t){t=e.closest("label")}return t}var f=0;var b=e("nano_datalist",function(){function e(e){var o=this;t(this,e);this.nanoSelect=n(this,"nanoSelect",7);this.nanoDeselect=n(this,"nanoDeselect",7);this.nanoOptionsUpdated=n(this,"nanoOptionsUpdated",7);this.isNanoInput=false;this.typeToSelect="";this.listId="nano-datalist-".concat(f++);this.isFiltered=false;this.shouldFocus=false;this._allOptEles=[];this.actvOptEles=[];this.canOpen=true;this.optionIds=[];this.selected=[];this._dropDownConfig={skidding:-1};this.options=[];this.type="input";this.open=false;this.disableFilter=false;this.disabled=false;this.optSelected=function(e){e.stopPropagation();o.changeInputValue(e.detail);r((function(){return o.inputChange()}));if(o.type!=="selctMulti")o.shouldOpen=false};this.handleShow=function(){return __awaiter(o,void 0,void 0,(function(){return __generator(this,(function(e){if(this.shouldFocus){this.shouldFocus=false;this.listBox.setFocus()}else if(this.type==="select")this.listBox.showActiveElement();return[2]}))}))};this.handleHide=function(){o.open=false;var e=c();if(e===document.body||e.closest(o.host.tagName.toLowerCase())){o.connectedInput.focus()}};this.inputClick=function(){o.shouldOpen=true;o.manageDropdownDisplay()};this.inputKeydown=function(e){var t=["Shift","ArrowRight","ArrowLeft","Escape","Enter","Tab"];if(t.includes(e.key)){if(e.key==="Tab")o.shouldOpen=false;return}if(o.type==="select"&&!["ArrowDown","ArrowUp"].includes(e.key)&&(e.key!==" "||o.typeToSelectTimeout)){if(e.key===" "||/^[a-z0-9]+$/i.test(e.key)){clearTimeout(o.typeToSelectTimeout);o.typeToSelectTimeout=window.setTimeout((function(){o.typeToSelect="";o.typeToSelectTimeout=0}),750);o.typeToSelect+=e.key;o.setOptStartsWith()}return}o.shouldOpen=true;o.manageDropdownDisplay();if(["ArrowDown","ArrowUp"].includes(e.key)){e.preventDefault();o.shouldFocus=true}};this.optionKeyDown=function(e){var t=["Shift","ArrowUp","ArrowDown","Escape","Enter","Tab","Space","PageUp","PageDown","Home","End"," "];if(t.includes(e.key)){if(e.key==="Escape")o.connectedInput.focus();return}var n=["Delete","Backspace"];if(o.type!=="select"&&(!o.exactMatch||n.includes(e.key))){o.connectedInput.focus()}};this.inputChange=l(this.inputChange.bind(this),50)}Object.defineProperty(e.prototype,"allOptEles",{get:function(){return this._allOptEles},set:function(e){var t=this;var n;this._allOptEles=e;if((n=this.connectedInput)===null||n===void 0?void 0:n.value)return;e.forEach((function(e){if(e.selected&&!t.selected.includes(e.value)){t.changeInputValue(e)}}))},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"dropDownConfig",{get:function(){return this._dropDownConfig},set:function(e){this._dropDownConfig=Object.assign(Object.assign({},this._dropDownConfig),e)},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"activeOptions",{get:function(){return this.allOptEles},enumerable:false,configurable:true});e.prototype.openWatcher=function(){var e=this;o((function(){e.nanoDropdown.open=e.open;e.connectedInput.setAttribute("aria-expanded",e.open.toString())}))};e.prototype.watchInputChange=function(){return __awaiter(this,void 0,void 0,(function(){var e,t;return __generator(this,(function(n){switch(n.label){case 0:if(!(e=this.host.closest("nano-input")))return[3,2];this.isNanoInput=true;t=this;return[4,e.getInputElement()];case 1:t.connectedInput=n.sent();return[3,3];case 2:if(this.input&&typeof this.input==="string"&&(e=document.querySelector(this.input))){this.isNanoInput=false;this.connectedInput=e}else if(this.input instanceof HTMLElement){this.connectedInput=this.input}n.label=3;case 3:return[2]}}))}))};e.prototype.manageSlotChangeListener=function(){var e=this;var t;if(!this.host)return;if((!this.options||!this.options.length)&&!this.mo){{var n=this.mo=new MutationObserver((function(){return e.processSlottedContent()}));n.observe(this.host,{childList:true,subtree:true})}this.processSlottedContent();return}if((t=this.options)===null||t===void 0?void 0:t.length){if(!!this.mo){this.mo.disconnect();this.mo=undefined}o((function(){var t;e.allOptEles=e.options.flatMap((function(t,n){if(t.value||t.label){var o=Object.assign(document.createElement("nano-option"),{label:t.label,value:t.value,ariaPosinset:n,ariaSetsize:e.options.length,selected:t.selected,id:e.listId+"-option-"+n,textContent:t.label?t.label:t.value,slot:"internal-opts"});e.host.append(o);return o}}));if(((t=e.connectedInput)===null||t===void 0?void 0:t.value.length)&&e.type!=="select"){e.inputChange()}else e.actvOptEles=__spreadArray([],e.allOptEles,true)}))}};e.prototype.watchTypeChange=function(){if(!this.connectedInput)return;var e={closeOnSelect:false};var t="both";var n=false;switch(this.type){case"input":e={closeOnSelect:true};break;case"select":t="list";n=true;e={closeOnSelect:true,placement:"center"};break}if(!this.isNanoInput){e.tetherTo=this.connectedInput}this.dropDownConfig=Object.assign(Object.assign({},this.dropDownConfig),e);this.connectedInput.setAttribute("aria-autocomplete",t);this.connectedInput.readOnly=n};e.prototype.manageInputEvents=function(e,t){var n=this;var i;if(!!t){var s=t.closest("nano-input");if(s){s.removeEventListener("nanoChange",this.inputChange)}t.removeEventListener("change",this.inputChange);t.removeEventListener("click",this.inputClick);t.removeEventListener("keydown",this.inputKeydown);t.removeEventListener("input",this.inputChange);this.inputLabel=null;o((function(){t.removeAttribute("role");t.removeAttribute("aria-expanded");t.removeAttribute("aria-controls");t.removeAttribute("aria-owns");t.removeAttribute("aria-haspopup");t.removeAttribute("aria-autocomplete");t.removeAttribute("autocomplete")}))}if(!!e){var s=e.closest("nano-input");if(s){s.addEventListener("nanoChange",this.inputChange)}e.addEventListener("change",this.inputChange);e.addEventListener("click",this.inputClick);e.addEventListener("keydown",this.inputKeydown);e.addEventListener("input",this.inputChange);this.listId=this.host.id||this.listId;this.inputLabel=((i=e===null||e===void 0?void 0:e.labels)===null||i===void 0?void 0:i.item(0))||h(e);o((function(){n.host.id=n.listId;e.setAttribute("role","combobox");e.setAttribute("aria-expanded","false");e.setAttribute("aria-controls",n.listId);e.setAttribute("aria-owns",n.listId);e.setAttribute("aria-haspopup","listbox");e.setAttribute("autocomplete","off")}))}};e.prototype.watchActvOptChange=function(){var e=this;var t;var n=0;var i=((t=this.connectedInput)===null||t===void 0?void 0:t.value)||"";var s=[];o((function(){e.allOptEles.forEach((function(t,o){if(e.actvOptEles.includes(t)){n++;t.setAttribute("aria-posinset",n+"");t.setAttribute("aria-setsize",e.actvOptEles.length+"");t.hidden=false;e.isSelected(t,i)}else{t.removeAttribute("aria-posinset");t.removeAttribute("aria-setsize");t.hidden=true;t.selected=false}t.id=e.listId+"-option-"+o;s.push(t.id)}));e.optionIds=s}))};e.prototype.manageCanOpen=function(){if(this.actvOptEles.length||this.hasNoResult)this.canOpen=true;else this.canOpen=false};e.prototype.manageDropdownDisplay=function(){if(this.shouldOpen&&this.canOpen&&!this.disabled)this.open=true;if(!this.shouldOpen||!this.canOpen)this.open=false;this.openWatcher()};e.prototype.fireActiveOptsEvent=function(){this.nanoOptionsUpdated.emit(this.actvOptEles)};e.prototype.isSelected=function(e,t){if(t===e.value||this.selected.includes(e.value)){e.selected=true}else e.selected=false};Object.defineProperty(e.prototype,"dropwdownOpen",{get:function(){if(!this.nanoDropdown||!this.open)return false;return true},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"exactMatch",{get:function(){var e=this;return this.allOptEles.find((function(t){return e.connectedInput.value===t.value}))},enumerable:false,configurable:true});e.prototype.changeInputValue=function(e){var t;var n;if(this.selected.includes(e.value)){this.selected=this.selected.filter((function(t){return t!==e.value}));n=this.nanoDeselect.emit(e)}else{this.selected=__spreadArray([],this.selected,true);n=this.nanoSelect.emit(e)}if(!n.defaultPrevented){if(this.connectedInput)this.connectedInput.value=e.value;var o=new window.Event("change");(t=this.connectedInput)===null||t===void 0?void 0:t.dispatchEvent(o)}};e.prototype.setOptStartsWith=function(){var e=this;var t=function(t){return t.toLowerCase().substring(0,e.typeToSelect.length)===e.typeToSelect};var n=this.allOptEles.find((function(e){return e.value.trim().length>0&&!e.disabled&&(t(e.textContent)||t(e.value)||t(e.label)||t(e.filterMeta))}));if(n)this.changeInputValue(n)};e.prototype.processSlottedContent=function(){var e=this;r((function(){var t;e.allOptEles=Array.from(e.host.querySelectorAll("nano-option"));e.hasNoResult=!!e.host.querySelector('[slot="no-result"]');if(((t=e.connectedInput)===null||t===void 0?void 0:t.value.length)&&e.type!=="select"){e.inputChange()}else e.actvOptEles=e.allOptEles}))};e.prototype.inputChange=function(){var e=this;if(this.disableFilter){this.actvOptEles=this.allOptEles;return}var t=this.connectedInput.value;var n=t.trim().toLowerCase();var o=false;var i=[];var s=function(e){return e.toLowerCase().indexOf(n)>-1};this.allOptEles.forEach((function(n){if((t===n.value||t===n.label)&&e.type!=="selctMulti"){n.selected=true;o=true}else e.isSelected(n,t)}));this.allOptEles.forEach((function(e){if(!n.length||o){i.push(e)}else if(e.value.trim().length>0&&!e.disabled&&(s(e.textContent)||s(e.value)||s(e.label)||s(e.filterMeta))){i.push(e)}}));this.isFiltered=n.length&&!o;this.actvOptEles=i};e.prototype.connectedCallback=function(){this.watchInputChange()};e.prototype.componentDidLoad=function(){this.manageSlotChangeListener();this.openWatcher()};e.prototype.componentDidRender=function(){var e=this;setTimeout((function(){if(!e.connectedInput)console.warn("no `nano-input` found. `nano-datalist` should be nested within an `nano-input` or linked via `input` prop",e.host)}),500)};e.prototype.render=function(){var e=this;return i(s,{role:this.actvOptEles.length?"listbox":undefined,"aria-owns":this.optionIds.join(" "),"aria-label":"Select options from the list below"},i("nano-dropdown",Object.assign({},this.dropDownConfig,{ref:function(t){return e.nanoDropdown=t},dialogTitle:"Select options from the list below",class:{dlist__dropdown:true,"dlist--isfiltered":this.isFiltered},onNanoAfterShow:this.handleShow,onNanoAfterHide:this.handleHide}),i("nano-menu",{hidden:!this.actvOptEles.length,type:"listbox",label:this.inputLabel?this.inputLabel.textContent:undefined,class:{dlist__menu:true,"dlist__menu--open":this.dropwdownOpen},tabIndex:-1,onNanoSelect:this.optSelected,onKeyDown:this.optionKeyDown,ref:function(t){return e.listBox=t}},i("slot",{name:"list-top"}),!this.options.length&&i("slot",null),!!this.options.length&&i("slot",{name:"internal-opts"}),i("slot",{name:"list-bottom"})),i("nano-menu",{type:"listbox",label:"No results found",hidden:!!this.actvOptEles.length,class:{dlist__menu:true,"dlist__menu--open":this.dropwdownOpen}},i("slot",{name:"no-result"})),!!this.actvOptEles&&i("div",{"aria-live":"polite",role:"status",class:"dlist__status"},this.actvOptEles.length," result",this.actvOptEles.length>1?"s":""," available.")))};Object.defineProperty(e.prototype,"host",{get:function(){return a(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{open:["openWatcher"],input:["watchInputChange"],options:["manageSlotChangeListener"],type:["watchTypeChange"],connectedInput:["watchTypeChange","manageInputEvents"],selected:["watchActvOptChange"],actvOptEles:["watchActvOptChange","manageCanOpen","fireActiveOptsEvent"],hasNoResult:["manageCanOpen"],shouldOpen:["manageDropdownDisplay"],canOpen:["manageDropdownDisplay"]}},enumerable:false,configurable:true});return e}());b.style=d;var v=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--padding-start:var(--nano-spacing-medium, 16px);--padding-end:var(--nano-spacing-medium, 16px);--padding-top:var(--nano-spacing-small, 8px);--padding-bottom:var(--nano-spacing-small, 8px);--secondary-padding-top:0;--secondary-padding-bottom:0;--bg-color-hover:#f2f7f9;--bg-color-focus:#f2f7f9;--bg-color-selected:#f2f7f9;--color-hover:#007495;--color-selected:#007495;--color-focus:#007495;--focus-outline:none;--font-size:0.9em;display:block}.menu{font-size:var(--font-size, 0.9em);-ms-scroll-chaining:none;overscroll-behavior:none;min-width:var(--width);position:relative}.menu:focus{outline:none}::slotted(*:not(nano-nav-item):not(nano-option):not(hr):not(slot)){padding-inline:var(--padding-start) var(--padding-end);padding-block:var(--padding-top) var(--padding-bottom);display:block}";var g=e("nano_menu",function(){function e(e){var o=this;t(this,e);this.nanoFocus=n(this,"nanoFocus",7);this.nanoBlur=n(this,"nanoBlur",7);this.nanoSelect=n(this,"nanoSelect",7);this.ignoreMouseEvents=false;this.typeToSelect="";this._hasFocus=false;this.type="menu";this.handleFocus=function(){o.setActiveFocusItem(o.selectedItem||o.getItems[0]);o._hasFocus=true;o.nanoFocus.emit()};this.handleClick=function(e){var t=e.target;var n=t.closest("nano-nav-item");if(n&&!n.disabled){o.nanoSelect.emit(n)}};this.handleKeyDown=function(e){clearTimeout(o.ignoreMouseTimeout);o.ignoreMouseTimeout=setTimeout((function(){return o.ignoreMouseEvents=false}),500);o.ignoreMouseEvents=true;switch(e.key){case" ":if(o.activeItem)o.activeItem.click();break;case"ArrowDown":case"ArrowUp":case"PageDown":case"PageUp":case"Home":case"End":var t=o.getItems;var n=o.activeItem;var i=t.indexOf(n);if(t.length){e.preventDefault();if(e.key==="ArrowDown"){i++}else if(e.key==="ArrowUp"){i--}else if(e.key==="Home"||e.key==="PageUp"){i=0}else if(e.key==="End"||e.key==="PageDown"){i=t.length-1}if(i<0)i=t.length-1;if(i>t.length-1)i=0;o.setActiveFocusItem(t[i]);if(t[i])t[i].scrollIntoView({block:"nearest"});return}break}if(e.key===" "||/^[a-z0-9]+$/i.test(e.key)){clearTimeout(o.typeToSelectTimeout);o.typeToSelectTimeout=setTimeout((function(){return o.typeToSelect=""}),750);o.typeToSelect+=e.key;var t=o.getItems;for(var s=0,a=t;s<a.length;s++){var r=a[s];var l=r.shadowRoot.querySelector("slot:not([name])");var c=p(l).toLowerCase().trim();if(c.substring(0,o.typeToSelect.length)===o.typeToSelect){o.setActiveFocusItem(r);break}}}};this.handleMouseOver=function(e){var t=e.target;var n=t.closest("nano-nav-item")||t.closest("nano-option");if(n&&!o.ignoreMouseEvents){o.setActiveFocusItem(n)}}}Object.defineProperty(e.prototype,"hasFocus",{get:function(){return this._hasFocus},enumerable:false,configurable:true});e.prototype.setFocus=function(){return __awaiter(this,void 0,void 0,(function(){var e;return __generator(this,(function(t){if((e=this.menu)===null||e===void 0?void 0:e.focus)this.menu.focus({preventScroll:true});return[2]}))}))};e.prototype.removeFocus=function(){return __awaiter(this,void 0,void 0,(function(){var e;return __generator(this,(function(t){if((e=this.menu)===null||e===void 0?void 0:e.blur)this.menu.blur();return[2]}))}))};e.prototype.showActiveElement=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){if(this.selectedItem)this.selectedItem.scrollIntoView({block:"nearest"});return[2]}))}))};e.prototype.resetActiveItem=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){this.getItems.filter((function(e){return e.tagName.toLowerCase()==="nano-option"})).map((function(e){return e.setAttribute("tabindex","-1")}));return[2]}))}))};Object.defineProperty(e.prototype,"getItems",{get:function(){var e;var t=this.el.querySelectorAll("nano-nav-item.secondary-open");if(t.length){var n=t[t.length-1];e=Array.from(n.querySelectorAll("nano-nav-item, nano-option"))}else{e=u(this.el,"nano-nav-item, nano-option","slot")}return e.filter((function(e){return!e.disabled&&!e.hidden}))},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"activeItem",{get:function(){var e=c();return this.getItems.find((function(t){return t.getAttribute("tabindex")==="0"||t===e||t.classList.contains("has-focus")}))},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"selectedItem",{get:function(){return this.getItems.find((function(e){return e.selected}))},enumerable:false,configurable:true});e.prototype.setActiveFocusItem=function(e,t){if(t===void 0){t=true}return __awaiter(this,void 0,void 0,(function(){var n,o;return __generator(this,(function(i){n=this.getItems;o=!e||e.disabled?n.find((function(e){return e.selected}))||n[0]:e;n.filter((function(e){return e.tagName.toLowerCase()==="nano-option"})).map((function(e){return e.setAttribute("tabindex",e===o?"0":"-1")}));if(!t)return[2];if(o){o.setFocus?o.setFocus():o.focus()}else this.menu.focus();return[2]}))}))};e.prototype.handleBlur=function(e){var t=this;if(!this.hasFocus)return;var n=e;var o;if(n.key){if(n.key!=="Tab")return;o=c()&&c().closest(this.el.tagName.toLowerCase())===this.el}else o=!!e.composedPath().find((function(e){return e===t.el}));if(!o){this.resetActiveItem();this._hasFocus=false;this.nanoBlur.emit()}};e.prototype.render=function(){var e;var t=this;return i(s,null,i("div",{onClick:this.handleClick,onKeyDown:this.handleKeyDown,onMouseOver:this.handleMouseOver,onFocus:this.handleFocus,"aria-label":this.label?this.label:undefined,role:this.type,ref:function(e){return t.menu=e},part:"base",class:(e={menu:true},e["menu--"+this.type]=true,e["menu--has-focus"]=this.hasFocus,e),tabIndex:-1},i("slot",null)))};Object.defineProperty(e.prototype,"el",{get:function(){return a(this)},enumerable:false,configurable:true});return e}());g.style=v;var m=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--bg:none;--bg-selected:var(--nano-select-opt-bg, #f2f7f9);--bg-focus:var(--nano-color-base, var(--nano-color-primary-tint, #2689a5));--bg-disabled:none;--color:var(--input-text-color, var(--nano-input-text-color, #4a4a4a));--color-selected:var(--nano-color-base, var(--nano-color-primary, #007495));--color-focus:var(--nano-color-contrast, var(--nano-color-primary-contrast, #fff));--color-disabled:#b5aea7;--opt-icon-size:1.6em;display:block;color:var(--color);overflow:hidden;font-size:14px;font-size:clamp(12px, .9em, 16px)}:host(:focus){outline:none}.option{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%;background:var(--bg);padding-inline:var(--padding-start) var(--padding-end);padding-block:var(--padding-top) var(--padding-bottom)}:host(:focus) .option:not(.option--disabled),:host .option.option--selected{outline:none;background:var(--bg-selected);color:var(--color-selected)}:host(:focus) .option:not(.option--disabled){background:var(--bg-focus);color:var(--color-focus)}.option.option--disabled{outline:none;color:var(--color-disabled);cursor:not-allowed;background:var(--bg-disabled)}.option.option--novalue{font-style:italic;opacity:0.7}.option__label{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.option__start{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.option__start ::slotted(nano-icon){font-size:var(--opt-icon-size)}.option__start ::slotted(:last-child){-webkit-margin-end:0.5em;margin-inline-end:0.5em}.option__end{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.option__end ::slotted(nano-icon){font-size:var(--opt-icon-size)}.option__end ::slotted(:first-child){-webkit-margin-start:0.5em;margin-inline-start:0.5em}.option__check{visibility:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;position:absolute;inset-inline-start:0.6em;inset-block-start:calc(50% - 0.6em);-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:0.9em}.option--selected:not(.option--novalue) .option__check{visibility:visible}";var y=0;var w=e("nano_option",function(){function e(e){t(this,e);this.nanoSelect=n(this,"nanoSelect",7);this.optId="nano-option-".concat(y++);this.hasFocus=false;this.value="";this.label="";this.selected=false;this.disabled=false;this.filterMeta="";this.handleClick=l(this.handleClick.bind(this),5)}e.prototype.valueChanged=function(){if(!this.value||!this.value.length)this.value=this.labelContent};e.prototype.labelChanged=function(){if(!this.label||!this.label.length)this.label=this.labelContent.length?this.labelContent:this.value};e.prototype.handleKeyDown=function(e){if(e.key!==" "&&e.key!=="Enter")return;e.preventDefault();this.nanoSelect.emit(this.host)};e.prototype.handleClick=function(){if(this.disabled)return;this.nanoSelect.emit(this.host)};Object.defineProperty(e.prototype,"labelContent",{get:function(){return u(this.host,"*:not([slot])",false).map((function(e){return e.textContent})).join(" ").trim()},enumerable:false,configurable:true});e.prototype.componentWillLoad=function(){this.valueChanged();this.labelChanged()};e.prototype.render=function(){return i(s,{role:"option","aria-selected":this.selected?"true":"false","aria-disabled":this.disabled?"true":"false"},i("div",{onMouseDown:this.handleClick,id:this.optId,class:{option:true,"option--selected":this.selected,"option--disabled":this.disabled,"option--novalue":!this.value}},i("div",{part:"check-icon",class:"option__check"},i("slot",{name:"check-icon"},i("nano-icon",{name:"light/check","aria-hidden":"true"}))),i("div",{part:"start",class:"option__start"},i("slot",{name:"start"})),i("div",{part:"label",class:"option__label"},i("slot",null,this.label||this.value)),i("div",{part:"end",class:"option__end"},i("slot",{name:"end"}))))};Object.defineProperty(e.prototype,"host",{get:function(){return a(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{value:["valueChanged"],label:["labelChanged"]}},enumerable:false,configurable:true});return e}());w.style=m}}}));
|
5
|
+
//# sourceMappingURL=p-db8aea7a.system.entry.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"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"],"names":["datalistCss","findLabel","formCtrl","foundLabel","id","document","querySelector","concat","closest","listIds","DataList","exports","class_1","hostRef","_this","this","isNanoInput","typeToSelect","listId","isFiltered","shouldFocus","_allOptEles","actvOptEles","canOpen","optionIds","selected","_dropDownConfig","skidding","options","type","open","disableFilter","disabled","optSelected","e","stopPropagation","changeInputValue","detail","raf","inputChange","shouldOpen","handleShow","__awaiter","listBox","setFocus","showActiveElement","handleHide","activeElement","getActiveElement","body","host","tagName","toLowerCase","connectedInput","focus","inputClick","manageDropdownDisplay","inputKeydown","ignoreKeys","includes","key","typeToSelectTimeout","test","clearTimeout","window","setTimeout","setOptStartsWith","preventDefault","optionKeyDown","deleteKeys","exactMatch","debounce","bind","Object","defineProperty","prototype","opts","_a","value","forEach","opt","ddc","assign","allOptEles","openWatcher","writeTask","nanoDropdown","setAttribute","toString","watchInputChange","nanoInput","_b","getInputElement","_c","sent","input","HTMLElement","manageSlotChangeListener","length","mo","MutationObserver","processSlottedContent","observe","childList","subtree","disconnect","undefined","flatMap","option","i","label","createElement","ariaPosinset","ariaSetsize","textContent","slot","append","__spreadArray","watchTypeChange","dwConfig","closeOnSelect","autocompleteType","readonly","placement","tetherTo","dropDownConfig","readOnly","manageInputEvents","newInput","oldInput","removeEventListener","inputLabel","removeAttribute","addEventListener","labels","item","watchActvOptChange","c","val","optIds","hidden","isSelected","push","manageCanOpen","hasNoResult","fireActiveOptsEvent","nanoOptionsUpdated","emit","find","nanoSelected","filter","nanoDeselect","nanoSelect","defaultPrevented","event","Event","dispatchEvent","attrFind","toFind","substring","foundEle","trim","filterMeta","Array","from","querySelectorAll","valStr","activeEles","indexOf","connectedCallback","componentDidLoad","componentDidRender","console","warn","render","h","Host","role","aria-owns","join","aria-label","ref","el","dialogTitle","class","dlist__dropdown","dlist--isfiltered","onNanoAfterShow","onNanoAfterHide","dlist__menu","dlist__menu--open","dropwdownOpen","tabIndex","onNanoSelect","onKeyDown","name","aria-live","menuCss","Menu","class_2","ignoreMouseEvents","_hasFocus","handleFocus","setActiveFocusItem","selectedItem","getItems","nanoFocus","handleClick","target","handleKeyDown","ignoreMouseTimeout","activeItem","click","items","index","scrollIntoView","block","_i","items_1","shadowRoot","getTextContent","handleMouseOver","menu","preventScroll","removeFocus","blur","resetActiveItem","map","opened","ctx","getDirectChildren","getAttribute","classList","contains","handleBlur","hasFocus","kev","found","composedPath","nanoBlur","onClick","onMouseOver","onFocus","part","optionCss","Option","class_3","optId","valueChanged","labelContent","labelChanged","componentWillLoad","aria-selected","aria-disabled","onMouseDown","option--selected","option--disabled","option--novalue","aria-hidden"],"mappings":"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","sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --padding-top: for all nested `nano-option` elements. Defaults to #{$spacing-small};\n * @prop --padding-bottom: for all nested `nano-option` elements. Defaults to #{$spacing-small};\n * @prop --padding-start: for all nested `nano-option` elements. Defaults to #{$spacing-xlarge};\n * @prop --padding-end: for all nested `nano-option` elements. Defaults to #{$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($colors, palegrey)};\n */\n\n --padding-top: #{$spacing-small};\n --padding-bottom: #{$spacing-small};\n --padding-start: #{$spacing-xlarge};\n --padding-end: #{$spacing-xlarge};\n --font-size: 0.8em;\n --color: #{map.get($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 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 h,\n Host,\n Element,\n State,\n Watch,\n Prop,\n Event,\n EventEmitter,\n writeTask,\n Build,\n} from '@stencil/core';\nimport { debounce, getActiveElement, raf } from '../../utils';\nimport type { Dropdown } from '../dropdown/dropdown';\nimport type { NanoMenuCustomEvent, OptionInterface } from '../../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 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('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 (this.input instanceof HTMLElement) {\n this.connectedInput = this.input;\n }\n }\n\n @Watch('options')\n manageSlotChangeListener() {\n if (!this.host) return;\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 // add imperative `options`\n writeTask(() => {\n this.allOptEles = this.options.flatMap((option, i) => {\n if (option.value || option.label) {\n const opt = Object.assign(document.createElement('nano-option'), {\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 this.host.append(opt);\n return opt;\n }\n });\n\n if (this.connectedInput?.value.length && this.type !== 'select') {\n this.inputChange();\n } else this.actvOptEles = [...this.allOptEles];\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('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 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('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 raf(() => 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 processSlottedContent() {\n raf(() => {\n this.allOptEles = Array.from(this.host.querySelectorAll('nano-option'));\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 (\n activeElement === document.body ||\n activeElement.closest(this.host.tagName.toLowerCase())\n ) {\n this.connectedInput.focus();\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-z0-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 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.manageSlotChangeListener();\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 render() {\n return (\n <Host\n role={this.actvOptEles.length ? 'listbox' : undefined}\n aria-owns={this.optionIds.join(' ')}\n aria-label=\"Select options from the list below\"\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 >\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 {!this.options.length && <slot />}\n {!!this.options.length && <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 aria-live=\"polite\" role=\"status\" 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 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/layers';\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($colors, blue--faded)};\n * @prop --bg-color-focus: bg focus color of nav-items. Defaults to #{map.get($colors, blue--faded)};\n * @prop --bg-color-selected: bg selected color of nav-items. Defaults to #{map.get($colors, blue--faded)};\n\n * @prop --color-hover: text hover color of nav-items. Defaults to #{map.get($colors, blue)}\n * @prop --color-selected: text selected color of nav-items. Defaults to #{map.get($colors, blue)}\n * @prop --color-focus: text focus color of nav-items. Defaults to #{map.get($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: #{$spacing-medium};\n --padding-end: #{$spacing-medium};\n --padding-top: #{$spacing-small};\n --padding-bottom: #{$spacing-small};\n --secondary-padding-top: 0;\n --secondary-padding-bottom: 0;\n --bg-color-hover: #{map.get($colors, blue--faded)};\n --bg-color-focus: #{map.get($colors, blue--faded)};\n --bg-color-selected: #{map.get($colors, blue--faded)};\n --color-hover: #{map.get($colors, blue)};\n --color-selected: #{map.get($colors, blue)};\n --color-focus: #{map.get($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-width: 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 h,\n Host,\n Element,\n Prop,\n Listen,\n} from '@stencil/core';\nimport {\n getTextContent,\n getDirectChildren,\n getActiveElement,\n} from '../../utils';\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() === '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('nano-nav-item.secondary-open');\n if (opened.length) {\n const ctx = opened[opened.length - 1] as HTMLNanoNavItemElement;\n items = Array.from(ctx.querySelectorAll('nano-nav-item, nano-option'));\n } else {\n items = getDirectChildren(\n this.el,\n 'nano-nav-item, nano-option',\n 'slot'\n ) as ValidElement[];\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 =\n !item || item.disabled ? items.find((i) => i.selected) || items[0] : item;\n\n items\n .filter((i) => i.tagName.toLowerCase() === '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 (activeItem as NNI).setFocus\n ? (activeItem as NNI).setFocus()\n : 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('nano-nav-item');\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 // 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 = item.shadowRoot.querySelector(\n 'slot:not([name])'\n ) as HTMLSlotElement;\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('nano-nav-item') || target.closest('nano-option');\n\n if (item && !this.ignoreMouseEvents) {\n this.setActiveFocusItem(item);\n }\n };\n\n // Component Lifecycle\n\n render() {\n return (\n <Host>\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 role={this.type}\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 >\n <slot />\n </div>\n </Host>\n );\n }\n}\n","@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --padding-top: Defaults to #{$spacing-small};\n * @prop --padding-bottom: Defaults to #{$spacing-small};\n * @prop --padding-start: Defaults to #{$spacing-small};\n * @prop --padding-end: Defaults to #{$spacing-small};\n\n * @prop --bg: default background. Defaults to none;\n * @prop --bg-selected: background when selected. Defaults to #{$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, #{$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($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: #{$select-opt-selected};\n --bg-focus: var(--nano-color-base, #{nano-color(primary, tint)});\n --bg-disabled: none;\n --color: var(--input-text-color, #{$input-text-color});\n --color-selected: var(--nano-color-base, #{nano-color(primary, base)});\n --color-focus: var(--nano-color-contrast, #{nano-color(primary, contrast)});\n --color-disabled: #{map.get($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 width: 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 h,\n Host,\n State,\n Watch,\n Element,\n Listen,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { OptionInterface } from '../../interface';\nimport { debounce, getDirectChildren } from '../../utils';\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.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 >\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"]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
var __awaiter=this&&this.__awaiter||function(t,n,e,i){function a(t){return t instanceof e?t:new e((function(n){n(t)}))}return new(e||(e=Promise))((function(e,o){function r(t){try{s(i.next(t))}catch(n){o(n)}}function l(t){try{s(i["throw"](t))}catch(n){o(n)}}function s(t){t.done?e(t.value):a(t.value).then(r,l)}s((i=i.apply(t,n||[])).next())}))};var __generator=this&&this.__generator||function(t,n){var e={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},i,a,o,r;return r={next:l(0),throw:l(1),return:l(2)},typeof Symbol==="function"&&(r[Symbol.iterator]=function(){return this}),r;function l(t){return function(n){return s([t,n])}}function s(r){if(i)throw new TypeError("Generator is already executing.");while(e)try{if(i=1,a&&(o=r[0]&2?a["return"]:r[0]?a["throw"]||((o=a["return"])&&o.call(a),0):a.next)&&!(o=o.call(a,r[1])).done)return o;if(a=0,o)r=[r[0]&2,o.value];switch(r[0]){case 0:case 1:o=r;break;case 4:e.label++;return{value:r[1],done:false};case 5:e.label++;a=r[1];r=[0];continue;case 7:r=e.ops.pop();e.trys.pop();continue;default:if(!(o=e.trys,o=o.length>0&&o[o.length-1])&&(r[0]===6||r[0]===2)){e=0;continue}if(r[0]===3&&(!o||r[1]>o[0]&&r[1]<o[3])){e.label=r[1];break}if(r[0]===6&&e.label<o[1]){e.label=o[1];o=r;break}if(o&&e.label<o[2]){e.label=o[2];e.ops.push(r);break}if(o[2])e.ops.pop();e.trys.pop();continue}r=n.call(t,e)}catch(l){r=[6,l];a=0}finally{i=o=0}if(r[0]&5)throw r[1];return{value:r[0]?r[1]:void 0,done:true}}};
|
2
2
|
/*!
|
3
3
|
* Web Components for Nanopore digital Web Apps
|
4
|
-
*/System.register(["./p-f0e912f3.system.js","./p-08f7855e.system.js","./p-8e3dd9c1.system.js","./p-a504d182.system.js","./p-e03f327b.system.js","./p-9028b54e.system.js"],(function(t){"use strict";var n,e,i,a,o,r,l,s,c,p,u,d;return{setters:[function(t){n=t.r;e=t.c;i=t.h;a=t.e;o=t.g},function(t){r=t.r},function(t){l=t.F;s=t.a},function(t){c=t.d;p=t.a},function(t){u=t.c},function(t){d=t.c}],execute:function(){var h='.sc-nano-input-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-input,*.sc-nano-input::before,*.sc-nano-input::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-input{display:none !important}[disabled].sc-nano-input-h:not([disabled=false]){opacity:0.5}.form-ctrl.sc-nano-input{min-inline-size:100%;display:block}.form-ctrl.has-helper-end.sc-nano-input{display:-webkit-box;display:-ms-flexbox;display:flex;gap:1rem;opacity:0}.form-ctrl.has-helper-end.is-ready.sc-nano-input{opacity:1}.form-ctrl.has-helper-end.sc-nano-input .form-ctrl__wrapper.sc-nano-input{-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%}.form-ctrl.has-helper-end.sc-nano-input .form-ctrl__helper-end.sc-nano-input{display:none}.form-ctrl.has-helper-end.has-enough-width.sc-nano-input .form-ctrl__helper-end.sc-nano-input{display:block}.form-ctrl.has-helper-end.has-enough-width.sc-nano-input .form-ctrl__helper.sc-nano-input{display:none}.form-ctrl__wrapper.sc-nano-input{display:block}label.sc-nano-input,.form-ctrl__more.sc-nano-input,.form-ctrl__error.sc-nano-input,.form-ctrl__helper.sc-nano-input{display:block;inline-size:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}label.visually-hide.sc-nano-input,.form-ctrl__more.visually-hide.sc-nano-input,.form-ctrl__error.visually-hide.sc-nano-input,.form-ctrl__helper.visually-hide.sc-nano-input{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.form-ctrl__float-label.sc-nano-input{padding-block:0;-webkit-padding-end:0;padding-inline-end:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);color:var(--label-color);position:absolute;font-size:1.15em;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-transform-origin:top left;transform-origin:top left;inset-block-start:50%;-webkit-transition:0.125s ease-in;transition:0.125s ease-in;opacity:1}.has-focus.sc-nano-input-h .form-ctrl__float-label.sc-nano-input,.has-value.sc-nano-input-h .form-ctrl__float-label.sc-nano-input{-webkit-transform:translateY(-110%);transform:translateY(-110%);font-size:0.8em;opacity:0.7}.form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input{opacity:0;-webkit-transition:opacity 0.125s ease-in;transition:opacity 0.125s ease-in}.has-focus.sc-nano-input-h .form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input,.has-value.sc-nano-input-h .form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input{opacity:1}.form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input{inset-block-start:50%}.has-focus.sc-nano-input-h .form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input{inset-block-start:0;-webkit-transform:translateY(38%);transform:translateY(38%)}.has-value.sc-nano-input-h .form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input{inset-block-start:0;-webkit-transform:translateY(38%);transform:translateY(38%)}.form-ctrl__label.sc-nano-input{color:var(--label-color);font-size:var(--label-font-size);-webkit-padding-after:var(--padding-bottom);padding-block-end:var(--padding-bottom);line-height:1;display:-webkit-box;display:-ms-flexbox;display:flex}.form-ctrl__label.sc-nano-input .form-ctrl__label-wrap.sc-nano-input{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.form-ctrl__label.sc-nano-input .form-ctrl__label-placeholder.sc-nano-input{margin-block:unset;-webkit-margin-end:5px;margin-inline-end:5px;-webkit-margin-start:0;margin-inline-start:0;opacity:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-transition:0.3s ease opacity;transition:0.3s ease opacity;font-size:0.9em}.form-ctrl__label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input{margin-block:unset;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:auto;margin-inline-start:auto;font-size:0.9em;opacity:0.5}.has-value.sc-nano-input-h .form-ctrl__label.sc-nano-input .form-ctrl__label-placeholder.sc-nano-input{opacity:0.5}.has-focus.sc-nano-input-h .form-ctrl__label.sc-nano-input{color:var(--label-color--focus)}.is-invalid.sc-nano-input-h .form-ctrl__label.sc-nano-input{color:var(--label-color--invalid)}.has-float-label.sc-nano-input .select__multi-input.sc-nano-input,.has-float-label.sc-nano-input .select__native-input.sc-nano-input,.has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input{opacity:0;-webkit-transition:opacity 0.125s ease-in;transition:opacity 0.125s ease-in}.has-focus.sc-nano-input-h .has-float-label.sc-nano-input .select__multi-input.sc-nano-input,.has-value.sc-nano-input-h .has-float-label.sc-nano-input .select__multi-input.sc-nano-input,.has-focus.sc-nano-input-h .has-float-label.sc-nano-input .select__native-input.sc-nano-input,.has-value.sc-nano-input-h .has-float-label.sc-nano-input .select__native-input.sc-nano-input,.has-focus.sc-nano-input-h .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input,.has-value.sc-nano-input-h .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input{opacity:1}.form-ctrl__more.sc-nano-input{block-size:1em;position:relative;margin-block:4px var(--padding-bottom);margin-inline:3px 0}.form-ctrl__helper.sc-nano-input,.form-ctrl__error.sc-nano-input{inset-block-start:0;inset-inline-start:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;-webkit-transition:0.3s ease-out opacity;transition:0.3s ease-out opacity}.form-ctrl__helper.sc-nano-input{font-style:italic;color:var(--help-msg-color)}[show-inline-error].sc-nano-input-h:not([show-inline-error=false]).is-invalid .form-ctrl__helper.sc-nano-input{opacity:0}.form-ctrl__helper-end.sc-nano-input{-webkit-box-flex:1;-ms-flex:1 1 30%;flex:1 1 30%;min-inline-size:150px;font-size:var(--invalid-msg-font-size);color:var(--help-msg-color);font-style:italic}.form-ctrl__error.sc-nano-input{opacity:0;color:var(--invalid-msg-color);font-stretch:condensed}.is-invalid.sc-nano-input-h .form-ctrl__error.sc-nano-input{opacity:1}.form-ctrl__input.sc-nano-input{font-family:inherit;font-size: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;border-radius:var(--input-border-radius);inline-size:100%;padding:0 !important;position:relative;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;background:var(--input-bg-color);border:var(--input-border-style);border-width:var(--input-border-width);font-size:var(--input-font-size);-webkit-padding-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important;padding-inline-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important}.has-focus.sc-nano-input-h .form-ctrl__input.sc-nano-input{background:var(--input-bg-color--focus);border:var(--input-border-style--focus);border-width:var(--input-border-width);-webkit-padding-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important;padding-inline-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important}.is-invalid.sc-nano-input-h .form-ctrl__input.sc-nano-input{background:var(--input-bg-color--invalid);border:var(--input-border-style--invalid);border-width:var(--input-border-width);-webkit-border-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);border-inline-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);-webkit-padding-start:0 !important;padding-inline-start:0 !important}.is-invalid.has-focus.sc-nano-input-h .form-ctrl__input.sc-nano-input{background:var(--input-bg-color--invalid);border:var(--input-border-style--invalid-focus);border-width:var(--input-border-width);-webkit-border-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);border-inline-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);-webkit-padding-start:0 !important;padding-inline-start:0 !important}.form-ctrl__input-wrap.sc-nano-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex:1;flex:1;max-inline-size:100%}.form-ctrl__clear-btn.sc-nano-input,.form-ctrl__slot-end.sc-nano-input,.form-ctrl__slot-start.sc-nano-input,.form-ctrl__slot-value-end.sc-nano-input{--nano-icon-size:1.4em;margin-block:0;margin-inline:0;font-size:1em;border:0;outline:none;background-color:transparent;background-repeat:no-repeat;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;inline-size:auto}.has-float-label.sc-nano-input .form-ctrl__slot-start.sc-nano-input{display:none}.form-ctrl__slot-start.sc-nano-input-s>*,.form-ctrl__slot-start .sc-nano-input-s>*,.form-ctrl__slot-end.sc-nano-input-s>*,.form-ctrl__slot-end .sc-nano-input-s>*,.form-ctrl__slot-value-end.sc-nano-input-s>*,.form-ctrl__slot-value-end .sc-nano-input-s>*,.form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input{--nano-icon-size:1.4em;padding-inline:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);font-size:1em;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;block-size:100%;z-index:1}.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-start.sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-start .sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-end.sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-end .sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end .sc-nano-input-s>*,[disabled].sc-nano-input-h:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input{pointer-events:none}.form-ctrl__slot-value-end.sc-nano-input-s>*,.form-ctrl__slot-value-end .sc-nano-input-s>*,.form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input{pointer-events:none}.form-ctrl__clear-btn.sc-nano-input{color:var(--clear-btn-color);padding:0;opacity:0;inline-size:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden}.is-invalid.sc-nano-input-h .form-ctrl__clear-btn.sc-nano-input{color:var(--clear-btn-color--invalid)}.has-value.sc-nano-input-h .form-ctrl__clear-btn.sc-nano-input{padding-block:0;padding-inline:var(--padding-start) var(--padding-end);opacity:1;inline-size:auto}.form-ctrl__clear-btn.sc-nano-input:hover{color:var(--clear-btn-color--hover)}.sc-nano-input-h{--placeholder-color:var(--nano-input-placeholder-color, initial);--placeholder-font-style:var(--nano-input-placeholder-style, initial);--placeholder-font-weight:var(--nano-input-placeholder-weight, initial);--placeholder-opacity:var(--nano-input-placeholder-opacity, 0.5);--padding-top:var(--nano-input-padding-top, var(--nano-input-padding, 8px));--padding-end:var(--nano-input-padding-end, var(--nano-input-padding, 8px));--padding-bottom:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));--padding-start:var(--nano-input-padding-start, var(--nano-input-padding, 8px));--color-invalid:var(--nano-color-danger-rgb, 239, 65, 53);--color--focus-rgb:var(\n --nano-color-base-rgb,\n var(--nano-color-primary-rgb, 0, 116, 149)\n );--input-font-size:var(--nano-input-font-size, 0.87em);--input-text-color:var(--nano-input-text-color, #4a4a4a);--input-border-width:var(--nano-input-border-width, 1px);--input-border-hint-width:3px;--input-border-color:var(--nano-input-border-color, #e4e6e8);--input-border-radius:var(--nano-input-border-radius, 0);--input-border-style:var(--nano-input-border-style, solid) var(--nano-input-border-color, #e4e6e8);--input-border-style--focus:var(--nano-input-border-style, solid) var(--nano-input-border-color--focus, #90c6e7);--input-border-style--invalid:var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #e4e6e8);--input-border-style--invalid-focus:var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #ef4135);--input-bg-color:var(--nano-input-background-color, #fff);--input-bg-color--focus:var(--input-bg-color);--input-bg-color--invalid:var(--nano-input-background-color, white);--invalid-msg-color:rgba(var(--color-invalid), 1);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--clear-btn-color:var(--nano-clear-btn-color, rgba(0, 0, 0, 0.3));--clear-btn-color--hover:rgba(var(--color--focus-rgb), 1);--clear-btn-color--invalid:rgba(var(--color-invalid), 1);--label-color:var(--nano-input-label-color, "currentColor");--label-color--focus:var(--label-color);--label-color--invalid:var(--nano-input-label-color-invalid, "currentColor");--label-font-size:var(--nano-input-label-color, 1em);--multi-input-value-bg:var(--nano-input-tag-bg, 186, 220, 240);--multi-input-value-text-color:var(--nano-input-tag-color, #455556);--multi-input-value-border:var(--nano-input-tag-color, #badcf0);position:relative;inline-size:100%;padding:0 !important;color:currentColor;display:block}.nano-color.sc-nano-input-h{color:var(--nano-color-base);--input-border-style--focus:var(--nano-input-border-style, solid) var(--nano-color-tint, var(--nano-color-primary-tint, #2689a5))}.input__native-ctrl.sc-nano-input{font-family:inherit;font-size: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-block:logical unset;padding-inline:var(--padding-start) var(--padding-end);border-radius:var(--input-border-radius);text-overflow:ellipsis;color:var(--input-text-color);display:inline-block;-webkit-box-flex:1;-ms-flex:1;flex:1;inline-size:100%;max-inline-size:100%;max-block-size:100%;border:0;outline:none;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;resize:none;overflow:hidden;line-height:2.5em;min-block-size:2.5em}.has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input{line-height:2.1em;min-block-size:2.1em;-webkit-padding-before:1.4em;padding-block-start:1.4em}.input__native-ctrl.sc-nano-input::-webkit-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-block-size:inherit}.input__native-ctrl.sc-nano-input::-moz-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-block-size:inherit}.input__native-ctrl.sc-nano-input:-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-block-size:inherit}.input__native-ctrl.sc-nano-input::-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-block-size:inherit}.input__native-ctrl.sc-nano-input::placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-block-size:inherit}.input__native-ctrl.sc-nano-input::-moz-placeholder{line-height:2.8em;text-overflow:ellipsis}.input__native-ctrl.sc-nano-input:-webkit-autofill{background-color:transparent}.input__native-ctrl.sc-nano-input::-webkit-search-decoration,.input__native-ctrl.sc-nano-input::-webkit-search-cancel-button,.input__native-ctrl.sc-nano-input::-webkit-search-results-button,.input__native-ctrl.sc-nano-input::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none}.input__native-ctrl.sc-nano-input:invalid{-webkit-box-shadow:none;box-shadow:none}.input__native-ctrl.sc-nano-input::-ms-clear,.input__native-ctrl.sc-nano-input::-ms-reveal{display:none}.input__native-ctrl.input__resizable.sc-nano-input{resize:vertical;overflow:auto}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input{line-height:1.5em;padding-block:var(--padding-top) 0.25em;white-space:pre-wrap}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::-webkit-input-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::-moz-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input:-ms-input-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::-ms-input-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::placeholder{line-height:1.5em}.has-float-label.sc-nano-input .form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input{-webkit-padding-before:1.75em;padding-block-start:1.75em}[readonly].sc-nano-input-h:not([readonly=false]) .input__native-ctrl.sc-nano-input{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}';var f=0;var b=t("nano_input",function(){function t(t){var i=this;n(this,t);this.nanoInput=e(this,"nanoInput",7);this.nanoChange=e(this,"nanoChange",7);this.nanoBlur=e(this,"nanoBlur",7);this.nanoFocus=e(this,"nanoFocus",7);this.nanoDidLoad=e(this,"nanoDidLoad",7);this.nanoDidUnload=e(this,"nanoDidUnload",7);this.nanoValidate=e(this,"nanoValidate",7);this.inputId="nano-input-".concat(f++);this.didBlurAfterEdit=false;this.rtl=false;this.charCount=0;this.hasRendered=false;this.hasFocus=false;this.hasLabelSlot=false;this.hasHelperSlot=false;this.hasHelperEndSlot=false;this.errorMessage="";this.datalist=null;this._invalid=false;this.autocapitalise="none";this.autocomplete="off";this.autocorrect="off";this.autofocus=false;this.clearInput=false;this.debounce=0;this.disabled=false;this.validateOn="submitThenDirty";this.showInlineError=true;this.hideLabel=false;this.floatLabel=false;this.name=this.inputId;this.readonly=false;this.required=false;this.spellcheck=false;this.type="text";this.value="";this.resize="auto";this.rows=2;this.showCharCount=false;this.validate=function(t){if(i.validateOn==="submitThenDirty")i.validateOn="dirty";if(!i.nativeInput.validity.valid){if(i.showInlineError){if(t)t.preventDefault();i.errorMessage=i.nativeInput.validationMessage}i._invalid=true}else i._invalid=false;i.nanoValidate.emit({isValid:!i._invalid,errorMessage:i.nativeInput.validationMessage,originalEvent:t})};this.onInput=function(t){var n=t.target;i.value=(n===null||n===void 0?void 0:n.value)||"";i.nanoInput.emit(t)};this.onBlur=function(){i.hasFocus=false;i.focusChanged();if(i.validateOn==="dirty")i.validate();i.nanoBlur.emit()};this.onFocus=function(){i.hasFocus=true;i.focusChanged();i.nanoFocus.emit()};this.onKeydown=function(){if(i.shouldClearOnEdit()){if(i.didBlurAfterEdit&&i.hasValue()){i.clearTextInput()}i.didBlurAfterEdit=false}};this.clearTextInput=function(t){if(i.clearInput&&!i.readonly&&!i.disabled&&t){t.preventDefault();t.stopPropagation()}i.value="";i.nativeInput.value="";var n=new window.Event("change");i.nativeInput.dispatchEvent(n)};this.validate=c(this.validate,50);this.handleBlur=this.handleBlur.bind(this)}Object.defineProperty(t.prototype,"nativeInputWrap",{get:function(){return this._nativeInputWrap},set:function(t){if(this._nativeInputWrap===t)return;this._nativeInputWrap=t;this.setDataListOpts()},enumerable:false,configurable:true});t.prototype.setDataListOpts=function(){if(!this.datalist)return;var t=this.datalist.dropDownConfig||{};this.datalist.dropDownConfig=Object.assign(Object.assign({},t),{skidding:-1,tetherTo:this.nativeInputWrap})};Object.defineProperty(t.prototype,"invalid",{get:function(){return this._invalid},enumerable:false,configurable:true});Object.defineProperty(t.prototype,"validityMessage",{get:function(){if(!this.nativeInput)return"";return this.nativeInput.validationMessage},enumerable:false,configurable:true});t.prototype.shouldValidate=function(){var t=this;if(!this.hasRendered)return;requestAnimationFrame((function(){if(t.validateOn==="dirty")t.validate()}))};t.prototype.valueChanged=function(){var t=this;this.nanoChange.emit({value:this.value});this.charCount=this.value.length;if(this.type==="textarea"&&this.resize==="auto"){this.nativeInput.style.height="auto";if(this.value.length)this.nativeInput.style.height=this.nativeInput.scrollHeight+"px"}requestAnimationFrame((function(){if(t.validateOn==="dirty")t.validate()}))};t.prototype.debounceChanged=function(){this.nanoChange=p(this.nanoChange,this.debounce)};t.prototype.reportValidity=function(t){return __awaiter(this,void 0,void 0,(function(){var n=this;return __generator(this,(function(e){return[2,new Promise((function(e){if(t)n.validate();setTimeout((function(){e({isValid:!n._invalid,errorMessage:n.nativeInput.validationMessage})}),50)}))]}))}))};t.prototype.setFocus=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){if(this.nativeInput){this.nativeInput.focus();this.nativeInput.click()}return[2]}))}))};t.prototype.select=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){if(this.nativeInput){this.nativeInput.select()}return[2]}))}))};t.prototype.getInputElement=function(){return Promise.resolve(this.nativeInput)};t.prototype.showError=function(t){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){if(this.nativeInput){this.nativeInput.setCustomValidity(t);this.validate()}return[2]}))}))};t.prototype.onReset=function(t){var n=this.form?document.querySelector("#"+this.form):this.el.closest("form");if(!n||t.target!==this.el.closest("form"))return;this.value=""};t.prototype.handleBlur=function(t){var n=this;if(!this.hasFocus)return;var e=t;var i;r((function(){if(t instanceof KeyboardEvent&&e.key){if(e.key!=="Tab")return;i=document.activeElement}else if(t instanceof FocusEvent){i=document.activeElement}else i=t.target;if(u(n.el.tagName.toLowerCase(),i)!==n.el){n.onBlur()}}))};t.prototype.shouldClearOnEdit=function(){var t=this,n=t.type,e=t.clearOnEdit;return e===undefined?n==="password":e};t.prototype.getValue=function(){return this.value||""};t.prototype.focusChanged=function(){if(!this.hasFocus&&this.shouldClearOnEdit()&&this.hasValue()){this.didBlurAfterEdit=true}};t.prototype.hasValue=function(){return this.getValue().length>0};t.prototype.slotChangeObserver=function(){var t=this;if(this.mo)this.mo.disconnect();var n=this.mo=new MutationObserver((function(){return t.processSlottedContent()}));n.observe(this.el,{childList:true,subtree:true})};t.prototype.processSlottedContent=function(){this.hasLabelSlot=!!this.el.querySelectorAll('[slot="label"]');this.hasHelperSlot=!!this.el.querySelector('[slot="helper"]');this.hasHelperEndSlot=!!this.el.querySelector('[slot="helper-end"]');this.datalist=this.el.querySelector("nano-datalist:not([slot])");if(!!this.el.querySelector('[slot="inline-button"]')){console.warn("The `inline-button` slot was renamed to `end` in v2 - please update your code",this.el)}};t.prototype.connectedCallback=function(){this.debounceChanged();{this.el.dispatchEvent(new CustomEvent("nanoDidLoad",{detail:this.el}))}};t.prototype.disconnectedCallback=function(){{document.dispatchEvent(new CustomEvent("nanoDidUnload",{detail:this.el}))}if(this.mo)this.mo.disconnect()};t.prototype.componentDidLoad=function(){var t=this;this.slotChangeObserver();this.hasRendered=true;if(this.autofocus)setTimeout((function(n){return t.setFocus()}),300)};t.prototype.componentWillLoad=function(){this.processSlottedContent()};t.prototype.render=function(){var t=this;var n=this.getValue();var e=this.inputId+"-lbl";var o=this.showInlineError||this.hasHelperSlot?this.inputId+"-more":"";var r=this.hasHelperEndSlot?this.inputId+"-helper":"";this.rtl=this.el.ownerDocument.dir==="rtl";var c=function(t){var n=t.el,e=t.floatLabel,i=t.label,a=t.errorMessage,o=t.type,r=t.showInlineError,l=t.hasHelperSlot,s=t.hasLabelSlot,c=t.hideLabel,p=t.placeholder,u=t.maxlength,d=t.charCount,h=t.showCharCount,f=t.rtl,b=t.hasHelperEndSlot;return{el:n,floatLabel:e,label:i,errorMessage:a,type:o,showInlineError:r,hasHelperSlot:l,hasLabelSlot:s,hideLabel:c,placeholder:p,maxlength:u,charCount:d,showCharCount:h,rtl:f,hasHelperEndSlot:b}}(this);var p=Object.assign(Object.assign({},c),{labelId:e,moreId:o,helperEndId:r,hasValue:this.hasValue(),controlId:this.inputId});var u=function(n){var e=n.clearInput,i=n.readonly,a=n.disabled;return{clearInput:e,readonly:i,disabled:a,clearControl:t.clearInput}}(this);return i(a,{"aria-disabled":this.disabled?"true":null,dir:this.rtl?"rtl":null,class:Object.assign(Object.assign({},d(this.color)),{"has-value":this.hasValue(),"has-focus":this.hasFocus,"is-invalid":this._invalid})},i(l,Object.assign({},p),i(s,Object.assign({},u,{onClearText:this.clearTextInput,control:this.el,ref:function(n){return t.nativeInputWrap=n}}),this.type!=="textarea"&&i("input",{id:this.inputId,class:"input__native-ctrl",ref:function(n){return t.nativeInput=n},"aria-labelledby":e+" "+o+" "+r,disabled:this.disabled,accept:this.accept,autoCapitalize:this.autocapitalise,autoComplete:this.autocomplete,autoCorrect:this.autocorrect,autoFocus:this.autofocus,inputMode:this.inputmode,form:this.form,min:this.min,max:this.max,minLength:this.minlength,maxLength:this.maxlength,multiple:this.multiple,name:this.name,pattern:this.pattern,placeholder:this.placeholder,readOnly:this.readonly,required:this.required,spellcheck:this.spellcheck,step:this.step,size:this.size,type:this.type,value:n,onInput:this.onInput,onChange:this.onInput,onFocus:this.onFocus,onBlur:this.handleBlur,onKeyDown:this.onKeydown,onInvalid:this.validate}),this.type==="textarea"&&i("textarea",{rows:this.floatLabel?1:this.rows,id:this.inputId,class:{"input__native-ctrl":true,input__resizable:this.resize==="true"},ref:function(n){return t.nativeInput=n},"aria-labelledby":e+" "+o+" "+r,disabled:this.disabled,autoCapitalize:this.autocapitalise,autoCorrect:this.autocorrect,autoFocus:this.autofocus,inputMode:this.inputmode,form:this.form,minLength:this.minlength,maxLength:this.maxlength,name:this.name,placeholder:this.placeholder,readOnly:this.readonly,required:this.required,spellcheck:this.spellcheck,value:n,onInput:this.onInput,onChange:this.onInput,onFocus:this.onFocus,onKeyDown:this.onKeydown,onInvalid:this.validate,onBlur:this.handleBlur})),i("slot",null)))};Object.defineProperty(t.prototype,"el",{get:function(){return o(this)},enumerable:false,configurable:true});Object.defineProperty(t,"watchers",{get:function(){return{datalist:["setDataListOpts"],minlength:["shouldValidate"],maxlength:["shouldValidate"],min:["shouldValidate"],max:["shouldValidate"],required:["shouldValidate"],disabled:["shouldValidate"],readonly:["shouldValidate"],pattern:["shouldValidate"],inputmode:["shouldValidate"],value:["valueChanged"],debounce:["debounceChanged"]}},enumerable:false,configurable:true});return t}());b.style=h}}}));
|
5
|
-
//# sourceMappingURL=p-
|
4
|
+
*/System.register(["./p-f0e912f3.system.js","./p-08f7855e.system.js","./p-8e3dd9c1.system.js","./p-a504d182.system.js","./p-e03f327b.system.js","./p-9028b54e.system.js"],(function(t){"use strict";var n,e,i,a,o,r,l,s,c,p,u,d;return{setters:[function(t){n=t.r;e=t.c;i=t.h;a=t.e;o=t.g},function(t){r=t.r},function(t){l=t.F;s=t.a},function(t){c=t.d;p=t.a},function(t){u=t.c},function(t){d=t.c}],execute:function(){var h='.sc-nano-input-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-input,*.sc-nano-input::before,*.sc-nano-input::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-input{display:none !important}[disabled].sc-nano-input-h:not([disabled=false]){opacity:0.5}.form-ctrl.sc-nano-input{min-inline-size:100%;display:block}.form-ctrl.has-helper-end.sc-nano-input{display:-webkit-box;display:-ms-flexbox;display:flex;gap:1rem;opacity:0}.form-ctrl.has-helper-end.is-ready.sc-nano-input{opacity:1}.form-ctrl.has-helper-end.sc-nano-input .form-ctrl__wrapper.sc-nano-input{-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%}.form-ctrl.has-helper-end.sc-nano-input .form-ctrl__helper-end.sc-nano-input{display:none}.form-ctrl.has-helper-end.has-enough-width.sc-nano-input .form-ctrl__helper-end.sc-nano-input{display:block}.form-ctrl.has-helper-end.has-enough-width.sc-nano-input .form-ctrl__helper.sc-nano-input{display:none}.form-ctrl__wrapper.sc-nano-input{display:block}label.sc-nano-input,.form-ctrl__more.sc-nano-input,.form-ctrl__error.sc-nano-input,.form-ctrl__helper.sc-nano-input{display:block;inline-size:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}label.visually-hide.sc-nano-input,.form-ctrl__more.visually-hide.sc-nano-input,.form-ctrl__error.visually-hide.sc-nano-input,.form-ctrl__helper.visually-hide.sc-nano-input{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.form-ctrl__float-label.sc-nano-input{padding-block:0;-webkit-padding-end:0;padding-inline-end:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);color:var(--label-color);position:absolute;font-size:1.15em;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-transform-origin:top left;transform-origin:top left;inset-block-start:50%;-webkit-transition:0.125s ease-in;transition:0.125s ease-in;opacity:1}.has-focus.sc-nano-input-h .form-ctrl__float-label.sc-nano-input,.has-value.sc-nano-input-h .form-ctrl__float-label.sc-nano-input{-webkit-transform:translateY(-110%);transform:translateY(-110%);font-size:0.8em;opacity:0.7}.form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input{opacity:0;-webkit-transition:opacity 0.125s ease-in;transition:opacity 0.125s ease-in}.has-focus.sc-nano-input-h .form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input,.has-value.sc-nano-input-h .form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input{opacity:1}.form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input{inset-block-start:50%}.has-focus.sc-nano-input-h .form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input{inset-block-start:0;-webkit-transform:translateY(38%);transform:translateY(38%)}.has-value.sc-nano-input-h .form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input{inset-block-start:0;-webkit-transform:translateY(38%);transform:translateY(38%)}.form-ctrl__label.sc-nano-input{color:var(--label-color);font-size:var(--label-font-size);-webkit-padding-after:var(--padding-bottom);padding-block-end:var(--padding-bottom);line-height:1;display:-webkit-box;display:-ms-flexbox;display:flex}.form-ctrl__label.sc-nano-input .form-ctrl__label-wrap.sc-nano-input{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.form-ctrl__label.sc-nano-input .form-ctrl__label-placeholder.sc-nano-input{margin-block:unset;-webkit-margin-end:5px;margin-inline-end:5px;-webkit-margin-start:0;margin-inline-start:0;opacity:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-transition:0.3s ease opacity;transition:0.3s ease opacity;font-size:0.9em}.form-ctrl__label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input{margin-block:unset;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:auto;margin-inline-start:auto;font-size:0.9em;opacity:0.5}.has-value.sc-nano-input-h .form-ctrl__label.sc-nano-input .form-ctrl__label-placeholder.sc-nano-input{opacity:0.5}.has-focus.sc-nano-input-h .form-ctrl__label.sc-nano-input{color:var(--label-color--focus)}.is-invalid.sc-nano-input-h .form-ctrl__label.sc-nano-input{color:var(--label-color--invalid)}.has-float-label.sc-nano-input .select__multi-input.sc-nano-input,.has-float-label.sc-nano-input .select__native-input.sc-nano-input,.has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input{opacity:0;-webkit-transition:opacity 0.125s ease-in;transition:opacity 0.125s ease-in}.has-focus.sc-nano-input-h .has-float-label.sc-nano-input .select__multi-input.sc-nano-input,.has-value.sc-nano-input-h .has-float-label.sc-nano-input .select__multi-input.sc-nano-input,.has-focus.sc-nano-input-h .has-float-label.sc-nano-input .select__native-input.sc-nano-input,.has-value.sc-nano-input-h .has-float-label.sc-nano-input .select__native-input.sc-nano-input,.has-focus.sc-nano-input-h .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input,.has-value.sc-nano-input-h .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input{opacity:1}.form-ctrl__more.sc-nano-input{block-size:1em;position:relative;margin-block:4px var(--padding-bottom);margin-inline:3px 0}.form-ctrl__helper.sc-nano-input,.form-ctrl__error.sc-nano-input{inset-block-start:0;inset-inline-start:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;-webkit-transition:0.3s ease-out opacity;transition:0.3s ease-out opacity}.form-ctrl__helper.sc-nano-input{font-style:italic;color:var(--help-msg-color)}[show-inline-error].sc-nano-input-h:not([show-inline-error=false]).is-invalid .form-ctrl__helper.sc-nano-input{opacity:0}.form-ctrl__helper-end.sc-nano-input{-webkit-box-flex:1;-ms-flex:1 1 30%;flex:1 1 30%;min-inline-size:150px;font-size:var(--invalid-msg-font-size);color:var(--help-msg-color);font-style:italic}.form-ctrl__error.sc-nano-input{opacity:0;color:var(--invalid-msg-color);font-stretch:condensed}.is-invalid.sc-nano-input-h .form-ctrl__error.sc-nano-input{opacity:1}.form-ctrl__input.sc-nano-input{font-family:inherit;font-size: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;border-radius:var(--input-border-radius);inline-size:100%;padding:0 !important;position:relative;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;background:var(--input-bg-color);border:var(--input-border-style);border-width:var(--input-border-width);font-size:var(--input-font-size);-webkit-padding-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important;padding-inline-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important}.has-focus.sc-nano-input-h .form-ctrl__input.sc-nano-input{background:var(--input-bg-color--focus);border:var(--input-border-style--focus);border-width:var(--input-border-width);-webkit-padding-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important;padding-inline-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important}.is-invalid.sc-nano-input-h .form-ctrl__input.sc-nano-input{background:var(--input-bg-color--invalid);border:var(--input-border-style--invalid);border-width:var(--input-border-width);-webkit-border-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);border-inline-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);-webkit-padding-start:0 !important;padding-inline-start:0 !important}.is-invalid.has-focus.sc-nano-input-h .form-ctrl__input.sc-nano-input{background:var(--input-bg-color--invalid);border:var(--input-border-style--invalid-focus);border-width:var(--input-border-width);-webkit-border-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);border-inline-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);-webkit-padding-start:0 !important;padding-inline-start:0 !important}.form-ctrl__input-wrap.sc-nano-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex:1;flex:1;max-inline-size:100%}.form-ctrl__clear-btn.sc-nano-input,.form-ctrl__slot-end.sc-nano-input,.form-ctrl__slot-start.sc-nano-input,.form-ctrl__slot-value-end.sc-nano-input{--nano-icon-size:1.4em;margin-block:0;margin-inline:0;font-size:1em;border:0;outline:none;background-color:transparent;background-repeat:no-repeat;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;inline-size:auto}.has-float-label.sc-nano-input .form-ctrl__slot-start.sc-nano-input{display:none}.form-ctrl__slot-start.sc-nano-input-s>*,.form-ctrl__slot-start .sc-nano-input-s>*,.form-ctrl__slot-end.sc-nano-input-s>*,.form-ctrl__slot-end .sc-nano-input-s>*,.form-ctrl__slot-value-end.sc-nano-input-s>*,.form-ctrl__slot-value-end .sc-nano-input-s>*,.form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input{--nano-icon-size:1.4em;padding-inline:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);font-size:1em;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;block-size:100%;z-index:1}.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-start.sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-start .sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-end.sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-end .sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end .sc-nano-input-s>*,[disabled].sc-nano-input-h:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input{pointer-events:none}.form-ctrl__slot-value-end.sc-nano-input-s>*,.form-ctrl__slot-value-end .sc-nano-input-s>*,.form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input{pointer-events:none}.form-ctrl__clear-btn.sc-nano-input{color:var(--clear-btn-color);padding:0;opacity:0;inline-size:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden}.is-invalid.sc-nano-input-h .form-ctrl__clear-btn.sc-nano-input{color:var(--clear-btn-color--invalid)}.has-value.sc-nano-input-h .form-ctrl__clear-btn.sc-nano-input{padding-block:0;padding-inline:var(--padding-start) var(--padding-end);opacity:1;inline-size:auto}.form-ctrl__clear-btn.sc-nano-input:hover{color:var(--clear-btn-color--hover)}.sc-nano-input-h{--placeholder-color:var(--nano-input-placeholder-color, initial);--placeholder-font-style:var(--nano-input-placeholder-style, initial);--placeholder-font-weight:var(--nano-input-placeholder-weight, initial);--placeholder-opacity:var(--nano-input-placeholder-opacity, 0.5);--padding-top:var(--nano-input-padding-top, var(--nano-input-padding, 8px));--padding-end:var(--nano-input-padding-end, var(--nano-input-padding, 8px));--padding-bottom:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));--padding-start:var(--nano-input-padding-start, var(--nano-input-padding, 8px));--color-invalid:var(--nano-color-danger-rgb, 239, 65, 53);--color--focus-rgb:var(\n --nano-color-base-rgb,\n var(--nano-color-primary-rgb, 0, 116, 149)\n );--input-font-size:var(--nano-input-font-size, 0.87em);--input-text-color:var(--nano-input-text-color, #4a4a4a);--input-border-width:var(--nano-input-border-width, 1px);--input-border-hint-width:3px;--input-border-color:var(--nano-input-border-color, #e4e6e8);--input-border-radius:var(--nano-input-border-radius, 0);--input-border-style:var(--nano-input-border-style, solid) var(--nano-input-border-color, #e4e6e8);--input-border-style--focus:var(--nano-input-border-style, solid) var(--nano-input-border-color--focus, #90c6e7);--input-border-style--invalid:var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #e4e6e8);--input-border-style--invalid-focus:var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #ef4135);--input-bg-color:var(--nano-input-background-color, #fff);--input-bg-color--focus:var(--input-bg-color);--input-bg-color--invalid:var(--nano-input-background-color, white);--invalid-msg-color:rgba(var(--color-invalid), 1);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--clear-btn-color:var(--nano-clear-btn-color, rgba(0, 0, 0, 0.3));--clear-btn-color--hover:rgba(var(--color--focus-rgb), 1);--clear-btn-color--invalid:rgba(var(--color-invalid), 1);--label-color:var(--nano-input-label-color, "currentColor");--label-color--focus:var(--label-color);--label-color--invalid:var(--nano-input-label-color-invalid, "currentColor");--label-font-size:var(--nano-input-label-color, 1em);--multi-input-value-bg:var(--nano-input-tag-bg, 186, 220, 240);--multi-input-value-text-color:var(--nano-input-tag-color, #455556);--multi-input-value-border:var(--nano-input-tag-color, #badcf0);position:relative;inline-size:100%;padding:0 !important;color:currentColor;display:block}.nano-color.sc-nano-input-h{color:var(--nano-color-base);--input-border-style--focus:var(--nano-input-border-style, solid) var(--nano-color-tint, var(--nano-color-primary-tint, #2689a5))}.input__native-ctrl.sc-nano-input{font-family:inherit;font-size: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-block:0;padding-inline:var(--padding-start) var(--padding-end);border-radius:var(--input-border-radius);text-overflow:ellipsis;color:var(--input-text-color);display:inline-block;-webkit-box-flex:1;-ms-flex:1;flex:1;inline-size:100%;max-inline-size:100%;max-block-size:100%;border:0;outline:none;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;resize:none;overflow:hidden;line-height:2.5em;min-height:2.5em}.has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input{line-height:2.1em;min-height:2.1em;-webkit-padding-before:1.4em;padding-block-start:1.4em}.input__native-ctrl.sc-nano-input::-webkit-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-block-size:inherit}.input__native-ctrl.sc-nano-input::-moz-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-block-size:inherit}.input__native-ctrl.sc-nano-input:-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-block-size:inherit}.input__native-ctrl.sc-nano-input::-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-block-size:inherit}.input__native-ctrl.sc-nano-input::placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-block-size:inherit}.input__native-ctrl.sc-nano-input::-moz-placeholder{line-height:2.8em;text-overflow:ellipsis}.input__native-ctrl.sc-nano-input:-webkit-autofill{background-color:transparent}.input__native-ctrl.sc-nano-input::-webkit-search-decoration,.input__native-ctrl.sc-nano-input::-webkit-search-cancel-button,.input__native-ctrl.sc-nano-input::-webkit-search-results-button,.input__native-ctrl.sc-nano-input::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none}.input__native-ctrl.sc-nano-input:invalid{-webkit-box-shadow:none;box-shadow:none}.input__native-ctrl.sc-nano-input::-ms-clear,.input__native-ctrl.sc-nano-input::-ms-reveal{display:none}.input__native-ctrl.input__resizable.sc-nano-input{resize:vertical;overflow:auto}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input{line-height:1.5em;padding-block:var(--padding-top) 0.25em;white-space:pre-wrap}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::-webkit-input-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::-moz-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input:-ms-input-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::-ms-input-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::placeholder{line-height:1.5em}.has-float-label.sc-nano-input .form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input{-webkit-padding-before:1.75em;padding-block-start:1.75em}[readonly].sc-nano-input-h:not([readonly=false]) .input__native-ctrl.sc-nano-input{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}';var f=0;var b=t("nano_input",function(){function t(t){var i=this;n(this,t);this.nanoInput=e(this,"nanoInput",7);this.nanoChange=e(this,"nanoChange",7);this.nanoBlur=e(this,"nanoBlur",7);this.nanoFocus=e(this,"nanoFocus",7);this.nanoDidLoad=e(this,"nanoDidLoad",7);this.nanoDidUnload=e(this,"nanoDidUnload",7);this.nanoValidate=e(this,"nanoValidate",7);this.inputId="nano-input-".concat(f++);this.didBlurAfterEdit=false;this.rtl=false;this.charCount=0;this.hasRendered=false;this.hasFocus=false;this.hasLabelSlot=false;this.hasHelperSlot=false;this.hasHelperEndSlot=false;this.errorMessage="";this.datalist=null;this._invalid=false;this.autocapitalise="none";this.autocomplete="off";this.autocorrect="off";this.autofocus=false;this.clearInput=false;this.debounce=0;this.disabled=false;this.validateOn="submitThenDirty";this.showInlineError=true;this.hideLabel=false;this.floatLabel=false;this.name=this.inputId;this.readonly=false;this.required=false;this.spellcheck=false;this.type="text";this.value="";this.resize="auto";this.rows=2;this.showCharCount=false;this.validate=function(t){if(i.validateOn==="submitThenDirty")i.validateOn="dirty";if(!i.nativeInput.validity.valid){if(i.showInlineError){if(t)t.preventDefault();i.errorMessage=i.nativeInput.validationMessage}i._invalid=true}else i._invalid=false;i.nanoValidate.emit({isValid:!i._invalid,errorMessage:i.nativeInput.validationMessage,originalEvent:t})};this.onInput=function(t){var n=t.target;i.value=(n===null||n===void 0?void 0:n.value)||"";i.nanoInput.emit(t)};this.onBlur=function(){i.hasFocus=false;i.focusChanged();if(i.validateOn==="dirty")i.validate();i.nanoBlur.emit()};this.onFocus=function(){i.hasFocus=true;i.focusChanged();i.nanoFocus.emit()};this.onKeydown=function(){if(i.shouldClearOnEdit()){if(i.didBlurAfterEdit&&i.hasValue()){i.clearTextInput()}i.didBlurAfterEdit=false}};this.clearTextInput=function(t){if(i.clearInput&&!i.readonly&&!i.disabled&&t){t.preventDefault();t.stopPropagation()}i.value="";i.nativeInput.value="";var n=new window.Event("change");i.nativeInput.dispatchEvent(n)};this.validate=c(this.validate,50);this.handleBlur=this.handleBlur.bind(this)}Object.defineProperty(t.prototype,"nativeInputWrap",{get:function(){return this._nativeInputWrap},set:function(t){if(this._nativeInputWrap===t)return;this._nativeInputWrap=t;this.setDataListOpts()},enumerable:false,configurable:true});t.prototype.setDataListOpts=function(){if(!this.datalist)return;var t=this.datalist.dropDownConfig||{};this.datalist.dropDownConfig=Object.assign(Object.assign({},t),{skidding:-1,tetherTo:this.nativeInputWrap})};Object.defineProperty(t.prototype,"invalid",{get:function(){return this._invalid},enumerable:false,configurable:true});Object.defineProperty(t.prototype,"validityMessage",{get:function(){if(!this.nativeInput)return"";return this.nativeInput.validationMessage},enumerable:false,configurable:true});t.prototype.shouldValidate=function(){var t=this;if(!this.hasRendered)return;requestAnimationFrame((function(){if(t.validateOn==="dirty")t.validate()}))};t.prototype.valueChanged=function(){var t=this;this.nanoChange.emit({value:this.value});this.charCount=this.value.length;if(this.type==="textarea"&&this.resize==="auto"){this.nativeInput.style.height="auto";if(this.value.length)this.nativeInput.style.height=this.nativeInput.scrollHeight+"px"}requestAnimationFrame((function(){if(t.validateOn==="dirty")t.validate()}))};t.prototype.debounceChanged=function(){this.nanoChange=p(this.nanoChange,this.debounce)};t.prototype.reportValidity=function(t){return __awaiter(this,void 0,void 0,(function(){var n=this;return __generator(this,(function(e){return[2,new Promise((function(e){if(t)n.validate();setTimeout((function(){e({isValid:!n._invalid,errorMessage:n.nativeInput.validationMessage})}),50)}))]}))}))};t.prototype.setFocus=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){if(this.nativeInput){this.nativeInput.focus();this.nativeInput.click()}return[2]}))}))};t.prototype.select=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){if(this.nativeInput){this.nativeInput.select()}return[2]}))}))};t.prototype.getInputElement=function(){return Promise.resolve(this.nativeInput)};t.prototype.showError=function(t){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){if(this.nativeInput){this.nativeInput.setCustomValidity(t);this.validate()}return[2]}))}))};t.prototype.onReset=function(t){var n=this.form?document.querySelector("#"+this.form):this.el.closest("form");if(!n||t.target!==this.el.closest("form"))return;this.value=""};t.prototype.handleBlur=function(t){var n=this;if(!this.hasFocus)return;var e=t;var i;r((function(){if(t instanceof KeyboardEvent&&e.key){if(e.key!=="Tab")return;i=document.activeElement}else if(t instanceof FocusEvent){i=document.activeElement}else i=t.target;if(u(n.el.tagName.toLowerCase(),i)!==n.el){n.onBlur()}}))};t.prototype.shouldClearOnEdit=function(){var t=this,n=t.type,e=t.clearOnEdit;return e===undefined?n==="password":e};t.prototype.getValue=function(){return this.value||""};t.prototype.focusChanged=function(){if(!this.hasFocus&&this.shouldClearOnEdit()&&this.hasValue()){this.didBlurAfterEdit=true}};t.prototype.hasValue=function(){return this.getValue().length>0};t.prototype.slotChangeObserver=function(){var t=this;if(this.mo)this.mo.disconnect();var n=this.mo=new MutationObserver((function(){return t.processSlottedContent()}));n.observe(this.el,{childList:true,subtree:true})};t.prototype.processSlottedContent=function(){this.hasLabelSlot=!!this.el.querySelectorAll('[slot="label"]');this.hasHelperSlot=!!this.el.querySelector('[slot="helper"]');this.hasHelperEndSlot=!!this.el.querySelector('[slot="helper-end"]');this.datalist=this.el.querySelector("nano-datalist:not([slot])");if(!!this.el.querySelector('[slot="inline-button"]')){console.warn("The `inline-button` slot was renamed to `end` in v2 - please update your code",this.el)}};t.prototype.connectedCallback=function(){this.debounceChanged();{this.el.dispatchEvent(new CustomEvent("nanoDidLoad",{detail:this.el}))}};t.prototype.disconnectedCallback=function(){{document.dispatchEvent(new CustomEvent("nanoDidUnload",{detail:this.el}))}if(this.mo)this.mo.disconnect()};t.prototype.componentDidLoad=function(){var t=this;this.slotChangeObserver();this.hasRendered=true;if(this.autofocus)setTimeout((function(n){return t.setFocus()}),300)};t.prototype.componentWillLoad=function(){this.processSlottedContent()};t.prototype.render=function(){var t=this;var n=this.getValue();var e=this.inputId+"-lbl";var o=this.showInlineError||this.hasHelperSlot?this.inputId+"-more":"";var r=this.hasHelperEndSlot?this.inputId+"-helper":"";this.rtl=this.el.ownerDocument.dir==="rtl";var c=function(t){var n=t.el,e=t.floatLabel,i=t.label,a=t.errorMessage,o=t.type,r=t.showInlineError,l=t.hasHelperSlot,s=t.hasLabelSlot,c=t.hideLabel,p=t.placeholder,u=t.maxlength,d=t.charCount,h=t.showCharCount,f=t.rtl,b=t.hasHelperEndSlot;return{el:n,floatLabel:e,label:i,errorMessage:a,type:o,showInlineError:r,hasHelperSlot:l,hasLabelSlot:s,hideLabel:c,placeholder:p,maxlength:u,charCount:d,showCharCount:h,rtl:f,hasHelperEndSlot:b}}(this);var p=Object.assign(Object.assign({},c),{labelId:e,moreId:o,helperEndId:r,hasValue:this.hasValue(),controlId:this.inputId});var u=function(n){var e=n.clearInput,i=n.readonly,a=n.disabled;return{clearInput:e,readonly:i,disabled:a,clearControl:t.clearInput}}(this);return i(a,{"aria-disabled":this.disabled?"true":null,dir:this.rtl?"rtl":null,class:Object.assign(Object.assign({},d(this.color)),{"has-value":this.hasValue(),"has-focus":this.hasFocus,"is-invalid":this._invalid})},i(l,Object.assign({},p),i(s,Object.assign({},u,{onClearText:this.clearTextInput,control:this.el,ref:function(n){return t.nativeInputWrap=n}}),this.type!=="textarea"&&i("input",{id:this.inputId,class:"input__native-ctrl",ref:function(n){return t.nativeInput=n},"aria-labelledby":e+" "+o+" "+r,disabled:this.disabled,accept:this.accept,autoCapitalize:this.autocapitalise,autoComplete:this.autocomplete,autoCorrect:this.autocorrect,autoFocus:this.autofocus,inputMode:this.inputmode,form:this.form,min:this.min,max:this.max,minLength:this.minlength,maxLength:this.maxlength,multiple:this.multiple,name:this.name,pattern:this.pattern,placeholder:this.placeholder,readOnly:this.readonly,required:this.required,spellcheck:this.spellcheck,step:this.step,size:this.size,type:this.type,value:n,onInput:this.onInput,onChange:this.onInput,onFocus:this.onFocus,onBlur:this.handleBlur,onKeyDown:this.onKeydown,onInvalid:this.validate}),this.type==="textarea"&&i("textarea",{rows:this.floatLabel?1:this.rows,id:this.inputId,class:{"input__native-ctrl":true,input__resizable:this.resize==="true"},ref:function(n){return t.nativeInput=n},"aria-labelledby":e+" "+o+" "+r,disabled:this.disabled,autoCapitalize:this.autocapitalise,autoCorrect:this.autocorrect,autoFocus:this.autofocus,inputMode:this.inputmode,form:this.form,minLength:this.minlength,maxLength:this.maxlength,name:this.name,placeholder:this.placeholder,readOnly:this.readonly,required:this.required,spellcheck:this.spellcheck,value:n,onInput:this.onInput,onChange:this.onInput,onFocus:this.onFocus,onKeyDown:this.onKeydown,onInvalid:this.validate,onBlur:this.handleBlur})),i("slot",null)))};Object.defineProperty(t.prototype,"el",{get:function(){return o(this)},enumerable:false,configurable:true});Object.defineProperty(t,"watchers",{get:function(){return{datalist:["setDataListOpts"],minlength:["shouldValidate"],maxlength:["shouldValidate"],min:["shouldValidate"],max:["shouldValidate"],required:["shouldValidate"],disabled:["shouldValidate"],readonly:["shouldValidate"],pattern:["shouldValidate"],inputmode:["shouldValidate"],value:["valueChanged"],debounce:["debounceChanged"]}},enumerable:false,configurable:true});return t}());b.style=h}}}));
|
5
|
+
//# sourceMappingURL=p-de983c13.system.entry.js.map
|