@mattilsynet/design 1.3.13 → 2.0.1
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/mtds/alert/alert.js.map +1 -1
- package/mtds/app/app-observer.js +1 -1
- package/mtds/app/app-observer.js.map +1 -1
- package/mtds/app/app.js.map +1 -1
- package/mtds/avatar/avatar.js.map +1 -1
- package/mtds/breadcrumbs/breadcrumbs.js.map +1 -1
- package/mtds/card/card.js.map +1 -1
- package/mtds/chip/chip.js.map +1 -1
- package/mtds/external/@u-elements/u-combobox/dist/u-combobox.js +86 -86
- package/mtds/external/@u-elements/u-combobox/dist/u-combobox.js.map +1 -1
- package/mtds/external/@u-elements/u-datalist/dist/u-datalist.js +2 -2
- package/mtds/external/@u-elements/u-datalist/dist/u-datalist.js.map +1 -1
- package/mtds/field/field-observer.js +35 -33
- package/mtds/field/field-observer.js.map +1 -1
- package/mtds/field/field.d.ts +2 -0
- package/mtds/field/field.js +95 -89
- package/mtds/field/field.js.map +1 -1
- package/mtds/index.d.ts +2 -2
- package/mtds/index.iife.js +6 -6
- package/mtds/index.js +11 -11
- package/mtds/logo/logo.js.map +1 -1
- package/mtds/package.json.js +1 -1
- package/mtds/popover/popover-observer.js.map +1 -1
- package/mtds/popover/popover.js.map +1 -1
- package/mtds/skeleton/skeleton.js.map +1 -1
- package/mtds/styles.css +1 -1
- package/mtds/tag/tag.js.map +1 -1
- package/mtds/typography/typography.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"u-combobox.js","sources":["../../../../../node_modules/@u-elements/u-combobox/dist/u-combobox.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// ../utils.ts\nvar IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\nvar IS_ANDROID = IS_BROWSER && /android/i.test(navigator.userAgent);\nvar IS_FIREFOX = IS_BROWSER && /firefox/i.test(navigator.userAgent);\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar _a;\nIS_BROWSER && // @ts-expect-error Typescript has not implemented userAgentData yet https://stackoverflow.com/a/71392474\n/^Mac/i.test(((_a = navigator.userAgentData) == null ? void 0 : _a.platform) || navigator.platform);\nvar FOCUS_OUTLINE = \"outline: 1px dotted; outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color\";\nvar UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nfunction attr(el, name, value) {\n if (value === void 0) return el.getAttribute(name);\n if (value === null) el.removeAttribute(name);\n else if (el.getAttribute(name) !== value) el.setAttribute(name, value);\n return null;\n}\nvar events = (action, element, rest) => {\n for (const type of rest[0].split(\",\")) {\n rest[0] = type;\n Element.prototype[`${action}EventListener`].apply(element, rest);\n }\n};\nvar on = (element, ...rest) => events(\"add\", element, rest);\nvar off = (element, ...rest) => events(\"remove\", element, rest);\nvar observers = /* @__PURE__ */ new WeakMap();\nvar mutationObserver = (element, options) => {\n if (options === void 0) return observers.get(element);\n try {\n observers.get(element).disconnect();\n observers.delete(element);\n } catch (_err) {\n }\n if (options) {\n const observer = new MutationObserver(\n (detail) => element.handleEvent({ type: \"mutation\", detail })\n );\n observer.observe(element, options);\n observers.set(element, observer);\n }\n};\nvar asButton = (event) => {\n const isClick = \"key\" in event && (event.key === \" \" || event.key === \"Enter\");\n if (isClick) event.preventDefault();\n if (isClick && event.target instanceof HTMLElement) event.target.click();\n return isClick;\n};\nvar getRoot = (node) => {\n var _a2;\n const root = ((_a2 = node.getRootNode) == null ? void 0 : _a2.call(node)) || node.ownerDocument;\n return root instanceof Document || root instanceof ShadowRoot ? root : document;\n};\nvar id = 0;\nvar useId = (el) => {\n if (!el) return \"\";\n if (!el.id) el.id = `:${el.nodeName.toLowerCase()}${(++id).toString(32)}`;\n return el.id;\n};\nvar createElement = (tagName, text2, attrs) => {\n const el = document.createElement(tagName);\n if (text2) el.textContent = text2;\n if (attrs) for (const [key, val] of Object.entries(attrs)) attr(el, key, val);\n return el;\n};\nvar customElements = {\n define: (name, instance) => !IS_BROWSER || window.customElements.get(name) || window.customElements.define(name, instance)\n};\nvar LIVE;\nvar LIVE_SR_FIX = 0;\nvar speak = (text2) => {\n if (!LIVE) {\n LIVE = createElement(\"div\");\n LIVE.style.cssText = \"position:fixed;overflow:hidden;width:1px;white-space:nowrap\";\n attr(LIVE, \"aria-live\", \"assertive\");\n }\n if (!LIVE.isConnected) document.body.append(LIVE);\n if (text2) LIVE.textContent = `${text2}${LIVE_SR_FIX++ % 2 ? \"\\xA0\" : \"\"}`;\n};\nvar setValue = (input, data, type = \"\") => {\n var _a2, _b;\n const event = { bubbles: true, composed: true, data, inputType: type };\n const proto = HTMLInputElement.prototype;\n input.dispatchEvent(new InputEvent(\"beforeinput\", event));\n (_b = (_a2 = Object.getOwnPropertyDescriptor(proto, \"value\")) == null ? void 0 : _a2.set) == null ? void 0 : _b.call(input, data);\n input.dispatchEvent(new InputEvent(\"input\", event));\n input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n};\nvar IS_PRESS = false;\nvar isMouseDown = (event) => {\n if ((event == null ? void 0 : event.type) === \"mouseup\") IS_PRESS = false;\n if ((event == null ? void 0 : event.type) === \"mousedown\") {\n IS_PRESS = true;\n on(document, \"mouseup\", isMouseDown, { once: true });\n }\n return IS_PRESS;\n};\n\n// u-combobox.ts\nvar EVENTS = \"beforeinput,blur,focus,click,input,keydown,mousedown\";\nvar EVENT_ONCE = { once: true, passive: true };\nvar IS_FIREFOX_DESKTOP = IS_FIREFOX && !IS_ANDROID;\nvar IS_MOBILE = IS_ANDROID || IS_IOS;\nvar FALSE = \"false\";\nvar TEXTS = {\n added: \"Added\",\n empty: \"No selected\",\n found: \"Navigate left to find %d selected\",\n invalid: \"Invalid value\",\n of: \"of\",\n remove: \"Press to remove\",\n removed: \"Removed\"\n};\nvar UHTMLComboboxElement = class extends UHTMLElement {\n constructor() {\n super();\n this._item = \"\";\n this._speak = \"\";\n this._texts = __spreadValues({}, TEXTS);\n this._value = \"\";\n this.attachShadow({ mode: \"open\" }).append(\n createElement(\"slot\"),\n // Content slot\n createElement(\n \"style\",\n `:host(:not([hidden])) { display: block; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } /* Must be display block in Safari to allow focus inside */\n\t\t\t\t:host(:not([data-multiple])) ::slotted(data),\n\t\t\t\t:host([data-multiple=\"false\"]) ::slotted(data) { display: none } /* Hide data if not multiple */\n\t\t\t\t::slotted(input[inputmode=\"none\"]) { outline: none } /* Hide temporary foucs outline flash */\n\t\t\t\t::slotted(del) { text-decoration: none }\n\t\t\t\t::slotted(data:not([hidden])) { display: inline-block; pointer-events: none }\n ::slotted(data)::after { content: '\\\\00D7'; content: '\\\\00D7' / ''; padding-inline: .5ch; pointer-events: auto; cursor: pointer }\n ::slotted(data:focus) { ${FOCUS_OUTLINE} }`\n )\n );\n }\n // Locally store value to store value before input-click\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return Object.keys(TEXTS).map((key) => `data-sr-${key}`);\n }\n connectedCallback() {\n this._root = getRoot(this);\n on(this, EVENTS, this, true);\n mutationObserver(this, {\n attributeFilter: [\"value\", \"id\"],\n // Respond to changes in <data> value or change of id for <datalist> to reconnect with input\n attributes: true,\n characterData: true,\n // Respond to changes in <data> textContent\n childList: true,\n subtree: true\n });\n setTimeout(render, 0, this);\n setTimeout(syncInputValue, 0, this);\n }\n attributeChangedCallback(prop, _, val) {\n const text2 = prop.split(\"data-sr-\")[1];\n if (TEXTS[text2]) this._texts[text2] = val || TEXTS[text2];\n }\n disconnectedCallback() {\n mutationObserver(this, false);\n off(this, EVENTS, this, true);\n this._items = this._clear = this._focus = this._control = void 0;\n this._list = this._options = this._root = void 0;\n }\n handleEvent(event) {\n const target = event.target;\n if (isDisabled(this)) return;\n if (event.type === \"beforeinput\") this._value = (target == null ? void 0 : target.value) || \"\";\n if (event.type === \"blur\") onBlur(this);\n if (event.type === \"click\") onClick(this, event);\n if (event.type === \"focus\") onFocus(this, event);\n if (event.type === \"input\") onInput(this, event);\n if (event.type === \"keydown\") onKeyDown(this, event);\n if (event.type === \"mousedown\") isMouseDown(event);\n if (event.type === \"mutation\") render(this, event);\n }\n get multiple() {\n var _a2;\n return ((_a2 = attr(this, \"data-multiple\")) != null ? _a2 : FALSE) !== FALSE;\n }\n set multiple(value) {\n attr(this, \"data-multiple\", value ? \"\" : null);\n }\n get creatable() {\n var _a2;\n return ((_a2 = attr(this, \"data-creatable\")) != null ? _a2 : FALSE) !== FALSE;\n }\n set creatable(value) {\n attr(this, \"data-creatable\", value ? \"\" : null);\n }\n get control() {\n var _a2;\n if (!((_a2 = this._control) == null ? void 0 : _a2.isConnected))\n this._control = this.querySelector(\"input\");\n return this._control;\n }\n get list() {\n var _a2;\n if (!((_a2 = this._list) == null ? void 0 : _a2.isConnected))\n this._list = this.querySelector(\"u-datalist,datalist\");\n return this._list;\n }\n get clear() {\n var _a2;\n if (!((_a2 = this._clear) == null ? void 0 : _a2.isConnected)) this._clear = this.querySelector(\"del\");\n return this._clear;\n }\n get items() {\n if (!this._items) this._items = this.getElementsByTagName(\"data\");\n return this._items;\n }\n get options() {\n var _a2, _b;\n if (!this._options) {\n const tag = ((_a2 = this.list) == null ? void 0 : _a2.nodeName) === \"U-DATALIST\" ? \"u-option\" : \"option\";\n this._options = (_b = this.list) == null ? void 0 : _b.getElementsByTagName(tag);\n }\n return this._options;\n }\n get values() {\n return [...this.items].map(({ value }) => value);\n }\n};\nvar text = (el) => {\n var _a2;\n return ((_a2 = el == null ? void 0 : el.textContent) == null ? void 0 : _a2.trim()) || \"\";\n};\nvar isData = (el) => el instanceof HTMLDataElement;\nvar isDisabled = ({ control }) => (control == null ? void 0 : control.disabled) || (control == null ? void 0 : control.readOnly) || false;\nvar render = (self, event) => {\n var _a2, _b;\n const { _focus, _texts, items, control, list, multiple } = self;\n let label = `${text((_a2 = control == null ? void 0 : control.labels) == null ? void 0 : _a2[0])}, ${multiple ? items.length ? _texts.found.replace(\"%d\", `${items.length}`) : _texts.empty : \"\"}`;\n const edits = [];\n for (const { addedNodes, removedNodes } of (event == null ? void 0 : event.detail) || []) {\n for (const el of addedNodes) if (isData(el)) edits.unshift(el);\n for (const el of removedNodes) if (isData(el)) edits.push(el);\n }\n const shouldAnnounce = multiple ? edits.length === 1 : edits[0] === _focus;\n if (_focus && control && shouldAnnounce) {\n const inputMode = attr(control, \"inputmode\");\n const nextFocus = isData(_focus) ? control : _focus;\n self._speak = `${_texts[edits[0].isConnected ? \"added\" : \"removed\"]} ${text(edits[0])}, `;\n if (IS_MOBILE || _focus === control) speak(self._speak);\n if (control !== nextFocus) {\n attr(control, \"aria-expanded\", null);\n attr(control, \"inputmode\", \"none\");\n label = \"\\xA0\";\n control.focus();\n }\n setTimeout(() => {\n var _a3;\n attr(control, \"aria-expanded\", \"true\");\n attr(control, \"inputmode\", inputMode);\n (_a3 = nextFocus == null ? void 0 : nextFocus.focus) == null ? void 0 : _a3.call(nextFocus);\n self._speak = \"\";\n if (IS_FIREFOX_DESKTOP) on(self, \"blur\", () => render(self), EVENT_ONCE);\n else setTimeout(render, 100, self);\n }, 100);\n }\n let idx = 0;\n const select = self.querySelector(\"select\");\n const remove = isDisabled(self) ? \"\" : `${_texts.remove}, `;\n for (const item2 of items) {\n const option = select == null ? void 0 : select.options[idx];\n const label2 = text(item2);\n const value = item2.value || label2;\n const aria = `${self._speak}${label2}, ${remove}${++idx} ${_texts.of} ${items.length}`;\n attr(item2, \"role\", \"button\");\n attr(item2, \"value\", value);\n attr(item2, \"tabindex\", \"-1\");\n attr(item2, \"aria-label\", aria);\n if (option) Object.assign(option, { textContent: label2, value });\n else select == null ? void 0 : select.appendChild(new Option(label2, value, true, true));\n }\n if (select) attr(select, \"multiple\", multiple ? \"\" : null);\n for (const opt of [...(select == null ? void 0 : select.options) || []].slice(idx)) opt.remove();\n if (!multiple && idx > 1)\n console.warn(\"u-combobox: Multiple <data> found in single mode.\");\n if (list) attr(list, \"aria-multiselectable\", `${multiple}`);\n if (control) attr(control, \"list\", useId(list));\n if (control) attr(control, \"aria-label\", `${self._speak}${label}`);\n const item = text(items[0]);\n if (item !== self._item) syncInputValue(self);\n self._item = item;\n syncClearWithInput(self);\n syncOptionsWithItems(self);\n (_b = mutationObserver(self)) == null ? void 0 : _b.takeRecords();\n};\nvar syncClearWithInput = (self) => {\n var _a2;\n if (self.clear) attr(self.clear, \"role\", \"button\");\n if (self.clear) self.clear.hidden = !((_a2 = self.control) == null ? void 0 : _a2.value) || isDisabled(self);\n};\nvar syncOptionsWithItems = (self) => {\n var _a2;\n const { _speak, options = [], values } = self;\n for (const opt of options) {\n const value = (_a2 = attr(opt, \"value\")) != null ? _a2 : text(opt);\n attr(opt, \"aria-label\", _speak ? `${_speak}${text(opt)}` : null);\n attr(opt, \"selected\", values.includes(value) ? \"\" : null);\n }\n};\nvar syncInputValue = (self) => {\n const { multiple, control, items } = self;\n const value = text(items[0]);\n if (!multiple && control && value !== control.value)\n setValue(control, value, value ? \"insertText\" : \"deleteContent\");\n};\nvar dispatchMatch = (self, change = true) => {\n var _a2;\n const { _texts, options = [], creatable, control, items, multiple } = self;\n const value = ((_a2 = control == null ? void 0 : control.value) == null ? void 0 : _a2.trim()) || \"\";\n const query = value.toLowerCase() || null;\n let match = [...options].find(\n (opt) => (attr(opt, \"label\") || text(opt)).trim().toLowerCase() === query\n );\n const event = { bubbles: true, cancelable: true, detail: match };\n if (!self.dispatchEvent(new CustomEvent(\"beforematch\", event)))\n match = [...options].find((o) => o.selected);\n if (change) {\n syncOptionsWithItems(self);\n if (match) return dispatchChange(self, match, false);\n if (creatable && value) return dispatchChange(self, { value }, false);\n if (!multiple && !value && items[0]) dispatchChange(self, items[0]);\n else syncInputValue(self);\n return speak(_texts.invalid);\n }\n for (const opt of options) opt.selected = opt === match;\n};\nvar dispatchChange = (self, item, removable = true) => {\n const { control, items, multiple } = self;\n const add = createElement(\"data\", item.label || item.value, {\n value: item.value\n });\n const remove = [...items].find((i) => i.value === item.value);\n const event = { bubbles: true, cancelable: true, detail: remove || add };\n const skip = remove && !removable;\n if (skip) return syncInputValue(self);\n if (self.dispatchEvent(new CustomEvent(\"beforechange\", event))) {\n if (!multiple) for (const item2 of [...items]) item2.remove();\n if (remove) remove.remove();\n else control == null ? void 0 : control.insertAdjacentElement(\"beforebegin\", add);\n self.dispatchEvent(new CustomEvent(\"afterchange\", event));\n }\n};\nvar onFocus = (self, { target }) => {\n if (target instanceof HTMLElement) self._focus = target;\n speak();\n};\nvar onBlur = (self) => isMouseDown() || setTimeout(onBlurred, 0, self);\nvar onBlurred = (self) => {\n var _a2;\n if (!self._focus || self.contains((_a2 = self._root) == null ? void 0 : _a2.activeElement)) return;\n if (!self.multiple) dispatchMatch(self);\n self._focus = void 0;\n};\nvar onClick = (self, event) => {\n const { clientX: x, clientY: y, target } = event;\n const { clear, control, items } = self;\n if (clear == null ? void 0 : clear.contains(target)) {\n if (control) setValue(control, \"\", \"deleteContentBackward\");\n return control == null ? void 0 : control.focus();\n }\n for (const item of items) {\n const { top, right, bottom, left } = item.getBoundingClientRect();\n if (item.contains(target)) return dispatchChange(self, item);\n if (y >= top && y <= bottom && x >= left && x <= right) return item.focus();\n }\n if (target === self) control == null ? void 0 : control.focus();\n};\nvar onInput = (self, event) => {\n var _a2;\n const { options = [], control, multiple } = self;\n const value = ((_a2 = control == null ? void 0 : control.value) == null ? void 0 : _a2.trim()) || \"\";\n const isClick = event instanceof InputEvent ? !event.inputType || event.inputType === \"insertReplacementText\" : !!value;\n if (isClick) {\n event.stopImmediatePropagation();\n if (control) control.value = self._value;\n for (const opt of options)\n if (opt.value && opt.value === value)\n return dispatchChange(self, opt, multiple);\n } else if (!multiple) dispatchMatch(self, false);\n syncClearWithInput(self);\n};\nvar onKeyDown = (self, event) => {\n var _a2;\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n const { clear, control, items } = self;\n const { key, repeat, target } = event;\n const isControl = control && control === target;\n const inText = isControl && (control == null ? void 0 : control.selectionEnd);\n let index = isControl ? items.length : [...items].indexOf(target);\n if (isControl && key === \"Tab\" && clear && !clear.hidden) {\n event.preventDefault();\n clear.tabIndex = -1;\n clear.focus();\n on(clear, \"blur\", () => attr(clear, \"tabindex\", null), EVENT_ONCE);\n }\n if (!isControl && asButton(event) || index === -1) return;\n if (key === \"ArrowRight\" && !isControl) index += 1;\n else if (key === \"ArrowLeft\" && !inText) index -= 1;\n else if (key === \"Enter\" && isControl) {\n const form = attr(control, \"form\");\n attr(control, \"form\", \"#\");\n requestAnimationFrame(() => attr(control, \"form\", form));\n return dispatchMatch(self);\n } else if ((key === \"Backspace\" || key === \"Delete\") && !inText) {\n event.preventDefault();\n if (!repeat && items[index]) return dispatchChange(self, items[index]);\n if (isControl) index -= 1;\n } else return isControl || (control == null ? void 0 : control.focus());\n event.preventDefault();\n (_a2 = items[Math.max(0, index)] || control) == null ? void 0 : _a2.focus();\n};\ncustomElements.define(\"u-combobox\", UHTMLComboboxElement);\n\nexport { UHTMLComboboxElement };\n"],"names":["__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","IS_BROWSER","IS_ANDROID","IS_FIREFOX","IS_IOS","_a","FOCUS_OUTLINE","UHTMLElement","attr","el","name","events","action","element","rest","type","on","off","observers","mutationObserver","options","observer","detail","asButton","event","isClick","getRoot","node","_a2","root","id","useId","createElement","tagName","text2","attrs","val","customElements","instance","LIVE","LIVE_SR_FIX","speak","setValue","input","data","_b","proto","IS_PRESS","isMouseDown","EVENTS","EVENT_ONCE","IS_FIREFOX_DESKTOP","IS_MOBILE","FALSE","TEXTS","UHTMLComboboxElement","render","syncInputValue","_","target","isDisabled","onBlur","onClick","onFocus","onInput","onKeyDown","tag","text","isData","control","self","_focus","_texts","items","list","multiple","label","edits","addedNodes","removedNodes","shouldAnnounce","inputMode","nextFocus","_a3","idx","select","remove","item2","option","label2","aria","opt","item","syncClearWithInput","syncOptionsWithItems","_speak","values","dispatchMatch","change","creatable","query","match","o","dispatchChange","removable","add","i","onBlurred","x","y","clear","top","right","bottom","left","repeat","isControl","inText","index","form"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"u-combobox.js","sources":["../../../../../node_modules/@u-elements/u-combobox/dist/u-combobox.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// ../utils.ts\nvar IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\nvar IS_ANDROID = IS_BROWSER && /android/i.test(navigator.userAgent);\nvar IS_FIREFOX = IS_BROWSER && /firefox/i.test(navigator.userAgent);\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar _a;\nIS_BROWSER && // @ts-expect-error Typescript has not implemented userAgentData yet https://stackoverflow.com/a/71392474\n/^Mac/i.test(((_a = navigator.userAgentData) == null ? void 0 : _a.platform) || navigator.platform);\nvar FOCUS_OUTLINE = \"outline: 1px dotted; outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color\";\nvar UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nfunction attr(el, name, value) {\n if (value === void 0) return el.getAttribute(name);\n if (value === null) el.removeAttribute(name);\n else if (el.getAttribute(name) !== value) el.setAttribute(name, value);\n return null;\n}\nvar events = (action, element, rest) => {\n for (const type of rest[0].split(\",\")) {\n rest[0] = type;\n Element.prototype[`${action}EventListener`].apply(element, rest);\n }\n};\nvar on = (element, ...rest) => events(\"add\", element, rest);\nvar off = (element, ...rest) => events(\"remove\", element, rest);\nvar observers = /* @__PURE__ */ new WeakMap();\nvar mutationObserver = (element, options) => {\n if (options === void 0) return observers.get(element);\n try {\n observers.get(element).disconnect();\n observers.delete(element);\n } catch (_err) {\n }\n if (options) {\n const observer = new MutationObserver(\n (detail) => element.handleEvent({ type: \"mutation\", detail })\n );\n observer.observe(element, options);\n observers.set(element, observer);\n }\n};\nvar asButton = (event) => {\n const isClick = \"key\" in event && (event.key === \" \" || event.key === \"Enter\");\n if (isClick) event.preventDefault();\n if (isClick && event.target instanceof HTMLElement) event.target.click();\n return isClick;\n};\nvar getRoot = (node) => {\n var _a2;\n const root = ((_a2 = node.getRootNode) == null ? void 0 : _a2.call(node)) || node.ownerDocument;\n return root instanceof Document || root instanceof ShadowRoot ? root : document;\n};\nvar id = 0;\nvar useId = (el) => {\n if (!el) return \"\";\n if (!el.id) el.id = `:${el.nodeName.toLowerCase()}${(++id).toString(32)}`;\n return el.id;\n};\nvar createElement = (tagName, text2, attrs) => {\n const el = document.createElement(tagName);\n if (text2) el.textContent = text2;\n if (attrs) for (const [key, val] of Object.entries(attrs)) attr(el, key, val);\n return el;\n};\nvar customElements = {\n define: (name, instance) => !IS_BROWSER || window.customElements.get(name) || window.customElements.define(name, instance)\n};\nvar LIVE;\nvar LIVE_SR_FIX = 0;\nvar speak = (text2) => {\n if (!LIVE) {\n LIVE = createElement(\"div\");\n LIVE.style.cssText = \"position:fixed;overflow:hidden;width:1px;white-space:nowrap\";\n attr(LIVE, \"aria-live\", \"assertive\");\n }\n if (!LIVE.isConnected) document.body.append(LIVE);\n if (text2) LIVE.textContent = `${text2}${LIVE_SR_FIX++ % 2 ? \"\\xA0\" : \"\"}`;\n};\nvar setValue = (input, data, type = \"\") => {\n var _a2, _b;\n const event = { bubbles: true, composed: true, data, inputType: type };\n const proto = HTMLInputElement.prototype;\n input.dispatchEvent(new InputEvent(\"beforeinput\", event));\n (_b = (_a2 = Object.getOwnPropertyDescriptor(proto, \"value\")) == null ? void 0 : _a2.set) == null ? void 0 : _b.call(input, data);\n input.dispatchEvent(new InputEvent(\"input\", event));\n input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n};\nvar IS_PRESS = false;\nvar isMouseDown = (event) => {\n if ((event == null ? void 0 : event.type) === \"mouseup\") IS_PRESS = false;\n if ((event == null ? void 0 : event.type) === \"mousedown\") {\n IS_PRESS = true;\n on(document, \"mouseup\", isMouseDown, { once: true });\n }\n return IS_PRESS;\n};\n\n// u-combobox.ts\nvar EVENTS = \"beforeinput,blur,focus,click,input,keydown,mousedown\";\nvar EVENT_ONCE = { once: true, passive: true };\nvar IS_FIREFOX_DESKTOP = IS_FIREFOX && !IS_ANDROID;\nvar IS_MOBILE = IS_ANDROID || IS_IOS;\nvar FALSE = \"false\";\nvar TEXTS = {\n added: \"Added\",\n empty: \"No selected\",\n found: \"Navigate left to find %d selected\",\n invalid: \"Invalid value\",\n of: \"of\",\n remove: \"Press to remove\",\n removed: \"Removed\"\n};\nvar UHTMLComboboxElement = class extends UHTMLElement {\n constructor() {\n super();\n this._item = \"\";\n this._speak = \"\";\n this._texts = __spreadValues({}, TEXTS);\n this._value = \"\";\n this.attachShadow({ mode: \"open\" }).append(\n createElement(\"slot\"),\n // Content slot\n createElement(\n \"style\",\n `:host(:not([hidden])) { display: block; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } /* Must be display block in Safari to allow focus inside */\n\t\t\t\t:host(:not([data-multiple])) ::slotted(data),\n\t\t\t\t:host([data-multiple=\"false\"]) ::slotted(data) { display: none } /* Hide data if not multiple */\n\t\t\t\t::slotted(input[inputmode=\"none\"]) { outline: none } /* Hide temporary foucs outline flash */\n\t\t\t\t::slotted(del) { text-decoration: none }\n\t\t\t\t::slotted(data:not([hidden])) { display: inline-block; pointer-events: none }\n ::slotted(data)::after { content: '\\\\00D7'; content: '\\\\00D7' / ''; padding-inline: .5ch; pointer-events: auto; cursor: pointer }\n ::slotted(data:focus) { ${FOCUS_OUTLINE} }`\n )\n );\n }\n // Locally store value to store value before input-click\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return Object.keys(TEXTS).map((key) => `data-sr-${key}`);\n }\n connectedCallback() {\n this._root = getRoot(this);\n on(this, EVENTS, this, true);\n mutationObserver(this, {\n attributeFilter: [\"value\", \"id\"],\n // Respond to changes in <data> value or change of id for <datalist> to reconnect with input\n attributes: true,\n characterData: true,\n // Respond to changes in <data> textContent\n childList: true,\n subtree: true\n });\n setTimeout(render, 0, this);\n setTimeout(syncInputValue, 0, this);\n }\n attributeChangedCallback(prop, _, val) {\n const text2 = prop.split(\"data-sr-\")[1];\n if (TEXTS[text2]) this._texts[text2] = val || TEXTS[text2];\n }\n disconnectedCallback() {\n mutationObserver(this, false);\n off(this, EVENTS, this, true);\n this._items = this._clear = this._focus = this._control = void 0;\n this._list = this._options = this._root = void 0;\n }\n handleEvent(event) {\n const target = event.target;\n if (isDisabled(this)) return;\n if (event.type === \"beforeinput\") this._value = (target == null ? void 0 : target.value) || \"\";\n if (event.type === \"blur\") onBlur(this);\n if (event.type === \"click\") onClick(this, event);\n if (event.type === \"focus\") onFocus(this, event);\n if (event.type === \"input\") onInput(this, event);\n if (event.type === \"keydown\") onKeyDown(this, event);\n if (event.type === \"mousedown\") isMouseDown(event);\n if (event.type === \"mutation\") render(this, event);\n }\n get multiple() {\n var _a2;\n return ((_a2 = attr(this, \"data-multiple\")) != null ? _a2 : FALSE) !== FALSE;\n }\n set multiple(value) {\n attr(this, \"data-multiple\", value ? \"\" : null);\n }\n get creatable() {\n var _a2;\n return ((_a2 = attr(this, \"data-creatable\")) != null ? _a2 : FALSE) !== FALSE;\n }\n set creatable(value) {\n attr(this, \"data-creatable\", value ? \"\" : null);\n }\n get control() {\n var _a2;\n if (!((_a2 = this._control) == null ? void 0 : _a2.isConnected))\n this._control = this.querySelector(\"input\");\n return this._control;\n }\n get list() {\n var _a2;\n if (!((_a2 = this._list) == null ? void 0 : _a2.isConnected))\n this._list = this.querySelector(\"u-datalist,datalist\");\n return this._list;\n }\n get clear() {\n var _a2;\n if (!((_a2 = this._clear) == null ? void 0 : _a2.isConnected)) this._clear = this.querySelector(\"del\");\n return this._clear;\n }\n get items() {\n if (!this._items) this._items = this.getElementsByTagName(\"data\");\n return this._items;\n }\n get options() {\n var _a2, _b;\n if (!this._options) {\n const tag = ((_a2 = this.list) == null ? void 0 : _a2.nodeName) === \"U-DATALIST\" ? \"u-option\" : \"option\";\n this._options = (_b = this.list) == null ? void 0 : _b.getElementsByTagName(tag);\n }\n return this._options;\n }\n get values() {\n return [...this.items].map(({ value }) => value);\n }\n};\nvar text = (el) => {\n var _a2;\n return ((_a2 = el == null ? void 0 : el.textContent) == null ? void 0 : _a2.trim()) || \"\";\n};\nvar isData = (el) => el instanceof HTMLDataElement;\nvar isDisabled = ({ control }) => (control == null ? void 0 : control.disabled) || (control == null ? void 0 : control.readOnly) || false;\nvar render = (self, event) => {\n var _a2, _b;\n const { _focus, _texts, items, control, list, multiple } = self;\n let label = `${text((_a2 = control == null ? void 0 : control.labels) == null ? void 0 : _a2[0])}${multiple ? `, ${items.length ? _texts.found.replace(\"%d\", `${items.length}`) : _texts.empty}` : \"\"}`;\n const edits = [];\n for (const { addedNodes, removedNodes } of (event == null ? void 0 : event.detail) || []) {\n for (const el of addedNodes) if (isData(el)) edits.unshift(el);\n for (const el of removedNodes) if (isData(el)) edits.push(el);\n }\n const shouldAnnounce = multiple ? edits.length === 1 : edits[0] === _focus;\n if (_focus && control && shouldAnnounce) {\n const ariaExpanded = attr(control, \"aria-expanded\");\n const inputMode = attr(control, \"inputmode\");\n const nextFocus = isData(_focus) ? control : _focus;\n const isRemove = !edits[0].isConnected;\n self._speak = `${_texts[isRemove ? \"removed\" : \"added\"]} ${text(edits[0])}, `;\n if (IS_MOBILE || _focus === control) speak(self._speak);\n if (control !== nextFocus) {\n attr(control, \"aria-expanded\", null);\n attr(control, \"inputmode\", \"none\");\n label = \"\\xA0\";\n control.focus();\n }\n setTimeout(() => {\n var _a3;\n attr(control, \"aria-expanded\", ariaExpanded);\n attr(control, \"inputmode\", isRemove ? \"none\" : inputMode);\n (_a3 = nextFocus == null ? void 0 : nextFocus.focus) == null ? void 0 : _a3.call(nextFocus);\n attr(control, \"inputmode\", inputMode);\n self._speak = \"\";\n if (IS_FIREFOX_DESKTOP) on(self, \"blur\", () => render(self), EVENT_ONCE);\n else setTimeout(render, 100, self);\n }, 100);\n }\n let idx = 0;\n const select = self.querySelector(\"select\");\n const remove = isDisabled(self) ? \"\" : `${_texts.remove}, `;\n for (const item2 of items) {\n const option = select == null ? void 0 : select.options[idx];\n const label2 = text(item2);\n const value = item2.value || label2;\n const aria = `${self._speak}${label2}, ${remove}${++idx} ${_texts.of} ${items.length}`;\n attr(item2, \"role\", \"button\");\n attr(item2, \"value\", value);\n attr(item2, \"tabindex\", \"-1\");\n attr(item2, \"aria-label\", aria);\n if (option) Object.assign(option, { textContent: label2, value });\n else select == null ? void 0 : select.appendChild(new Option(label2, value, true, true));\n }\n if (select) attr(select, \"multiple\", multiple ? \"\" : null);\n for (const opt of [...(select == null ? void 0 : select.options) || []].slice(idx)) opt.remove();\n if (!multiple && idx > 1)\n console.warn(\"u-combobox: Multiple <data> found in single mode.\");\n if (list) attr(list, \"aria-multiselectable\", `${multiple}`);\n if (control) attr(control, \"list\", useId(list));\n if (control) attr(control, \"aria-label\", `${self._speak}${label}`);\n const item = text(items[0]);\n if (item !== self._item) syncInputValue(self);\n self._item = item;\n syncClearWithInput(self);\n syncOptionsWithItems(self);\n (_b = mutationObserver(self)) == null ? void 0 : _b.takeRecords();\n};\nvar syncClearWithInput = (self) => {\n var _a2;\n if (self.clear) attr(self.clear, \"role\", \"button\");\n if (self.clear) self.clear.hidden = !((_a2 = self.control) == null ? void 0 : _a2.value) || isDisabled(self);\n};\nvar syncOptionsWithItems = (self) => {\n var _a2;\n const { _speak, options = [], values } = self;\n for (const opt of options) {\n const value = (_a2 = attr(opt, \"value\")) != null ? _a2 : text(opt);\n attr(opt, \"aria-label\", _speak ? `${_speak}${text(opt)}` : null);\n attr(opt, \"selected\", values.includes(value) ? \"\" : null);\n }\n};\nvar syncInputValue = (self) => {\n const { multiple, control, items } = self;\n const value = text(items[0]);\n if (!multiple && control && value !== control.value)\n setValue(control, value, value ? \"insertText\" : \"deleteContent\");\n};\nvar dispatchMatch = (self, change = true) => {\n var _a2;\n const { _texts, options = [], creatable, control, items, multiple } = self;\n const value = ((_a2 = control == null ? void 0 : control.value) == null ? void 0 : _a2.trim()) || \"\";\n const query = value.toLowerCase() || null;\n let match = [...options].find(\n (opt) => (attr(opt, \"label\") || text(opt)).trim().toLowerCase() === query\n );\n const event = { bubbles: true, cancelable: true, detail: match };\n if (!self.dispatchEvent(new CustomEvent(\"comboboxbeforematch\", event)))\n match = [...options].find((o) => o.selected);\n if (change) {\n syncOptionsWithItems(self);\n if (match) return dispatchChange(self, match, false);\n if (creatable && value) return dispatchChange(self, { value }, false);\n if (!multiple && !value && items[0]) dispatchChange(self, items[0]);\n else syncInputValue(self);\n return speak(_texts.invalid);\n }\n for (const opt of options) opt.selected = opt === match;\n};\nvar dispatchChange = (self, item, removable = true) => {\n const { control, items, multiple } = self;\n const add = createElement(\"data\", item.label || item.value, {\n value: item.value\n });\n const remove = [...items].find((i) => i.value === item.value);\n const event = { bubbles: true, cancelable: true, detail: remove || add };\n const skip = remove && !removable;\n if (skip) return syncInputValue(self);\n if (self.dispatchEvent(new CustomEvent(\"comboboxbeforeselect\", event))) {\n if (!multiple) for (const item2 of [...items]) item2.remove();\n if (remove) remove.remove();\n else control == null ? void 0 : control.insertAdjacentElement(\"beforebegin\", add);\n self.dispatchEvent(new CustomEvent(\"comboboxafterselect\", event));\n }\n};\nvar onFocus = (self, { target }) => {\n if (target instanceof HTMLElement) self._focus = target;\n speak();\n};\nvar onBlur = (self) => isMouseDown() || setTimeout(onBlurred, 0, self);\nvar onBlurred = (self) => {\n var _a2;\n if (!self._focus || self.contains((_a2 = self._root) == null ? void 0 : _a2.activeElement)) return;\n if (!self.multiple) dispatchMatch(self);\n self._focus = void 0;\n};\nvar onClick = (self, event) => {\n const { clientX: x, clientY: y, target } = event;\n const { clear, control, items } = self;\n if (clear == null ? void 0 : clear.contains(target)) {\n if (control) setValue(control, \"\", \"deleteContentBackward\");\n return control == null ? void 0 : control.focus();\n }\n for (const item of items) {\n const { top, right, bottom, left } = item.getBoundingClientRect();\n if (item.contains(target)) return dispatchChange(self, item);\n if (y >= top && y <= bottom && x >= left && x <= right) return item.focus();\n }\n if (target === self) control == null ? void 0 : control.focus();\n};\nvar onInput = (self, event) => {\n var _a2;\n const { options = [], control, multiple } = self;\n const value = ((_a2 = control == null ? void 0 : control.value) == null ? void 0 : _a2.trim()) || \"\";\n const isClick = event instanceof InputEvent ? !event.inputType || event.inputType === \"insertReplacementText\" : !!value;\n if (isClick) {\n event.stopImmediatePropagation();\n if (control) control.value = self._value;\n for (const opt of options)\n if (opt.value && opt.value === value)\n return dispatchChange(self, opt, multiple);\n } else if (!multiple) dispatchMatch(self, false);\n syncClearWithInput(self);\n};\nvar onKeyDown = (self, event) => {\n var _a2;\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n const { clear, control, items } = self;\n const { key, repeat, target } = event;\n const isControl = control && control === target;\n const inText = isControl && (control == null ? void 0 : control.selectionEnd);\n let index = isControl ? items.length : [...items].indexOf(target);\n if (isControl && key === \"Tab\" && clear && !clear.hidden) {\n event.preventDefault();\n clear.tabIndex = -1;\n clear.focus();\n on(clear, \"blur\", () => attr(clear, \"tabindex\", null), EVENT_ONCE);\n }\n if (!isControl && asButton(event) || index === -1) return;\n if (key === \"ArrowRight\" && !isControl) index += 1;\n else if (key === \"ArrowLeft\" && !inText) index -= 1;\n else if (key === \"Enter\" && isControl) {\n const form = attr(control, \"form\");\n attr(control, \"form\", \"#\");\n requestAnimationFrame(() => attr(control, \"form\", form));\n return dispatchMatch(self);\n } else if ((key === \"Backspace\" || key === \"Delete\") && !inText) {\n event.preventDefault();\n if (!repeat && items[index]) return dispatchChange(self, items[index]);\n if (isControl) index -= 1;\n } else return isControl || (control == null ? void 0 : control.focus());\n event.preventDefault();\n (_a2 = items[Math.max(0, index)] || control) == null ? void 0 : _a2.focus();\n};\ncustomElements.define(\"u-combobox\", UHTMLComboboxElement);\n\nexport { UHTMLComboboxElement };\n"],"names":["__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","IS_BROWSER","IS_ANDROID","IS_FIREFOX","IS_IOS","_a","FOCUS_OUTLINE","UHTMLElement","attr","el","name","events","action","element","rest","type","on","off","observers","mutationObserver","options","observer","detail","asButton","event","isClick","getRoot","node","_a2","root","id","useId","createElement","tagName","text2","attrs","val","customElements","instance","LIVE","LIVE_SR_FIX","speak","setValue","input","data","_b","proto","IS_PRESS","isMouseDown","EVENTS","EVENT_ONCE","IS_FIREFOX_DESKTOP","IS_MOBILE","FALSE","TEXTS","UHTMLComboboxElement","render","syncInputValue","_","target","isDisabled","onBlur","onClick","onFocus","onInput","onKeyDown","tag","text","isData","control","self","_focus","_texts","items","list","multiple","label","edits","addedNodes","removedNodes","shouldAnnounce","ariaExpanded","inputMode","nextFocus","isRemove","_a3","idx","select","remove","item2","option","label2","aria","opt","item","syncClearWithInput","syncOptionsWithItems","_speak","values","dispatchMatch","change","creatable","query","match","o","dispatchChange","removable","add","i","onBlurred","x","y","clear","top","right","bottom","left","repeat","isControl","inText","index","form"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -175,7 +175,7 @@ var B, H = 0, at = P || y, K = "click,focusout,input,keydown,mousedown,mouseup",
|
|
|
175
175
|
}, st = (t, e) => {
|
|
176
176
|
var i;
|
|
177
177
|
const o = e.target instanceof HTMLInputElement;
|
|
178
|
-
o && e.isTrusted && e.stopImmediatePropagation(), t._input !== e.target && o && e.target.list === t && (t._input && A(t), t._input = e.target, t._input.dispatchEvent(new FocusEvent("focus")), t._input.dispatchEvent(new FocusEvent("focusin", { bubbles: !0 })), r(t, Q, C((i = t._input.labels) == null ? void 0 : i[0])), f(t._root || t, K, t), _(t,
|
|
178
|
+
o && e.isTrusted && e.stopImmediatePropagation(), t._input !== e.target && o && e.target.list === t && (t._input && A(t), t._input = e.target, t._input.dispatchEvent(new FocusEvent("focus")), t._input.dispatchEvent(new FocusEvent("focusin", { bubbles: !0 })), r(t, Q, C((i = t._input.labels) == null ? void 0 : i[0])), f(t._root || t, K, t), _(t, r(t._input, "inputmode") !== "none"), V());
|
|
179
179
|
}, dt = (t, e) => {
|
|
180
180
|
!y && !D() && t._input && setTimeout(X, 0, t), e.target === t._input && e.isTrusted && e.stopImmediatePropagation();
|
|
181
181
|
}, X = (t) => {
|
|
@@ -195,7 +195,7 @@ var B, H = 0, at = P || y, K = "click,focusout,input,keydown,mousedown,mouseup",
|
|
|
195
195
|
var i;
|
|
196
196
|
const { key: o, target: u, altKey: s, ctrlKey: l, shiftKey: I, metaKey: m } = e, c = o === "Escape" || o === "Esc";
|
|
197
197
|
if (s || l || m || I || o === "Tab") return;
|
|
198
|
-
c &&
|
|
198
|
+
c && !t.hidden && e?.preventDefault(), _(t, !c);
|
|
199
199
|
const a = [...t.options].filter(
|
|
200
200
|
(p) => r(p, "aria-hidden") !== "true" && p.offsetHeight
|
|
201
201
|
), n = a.indexOf(u);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"u-datalist.js","sources":["../../../../../node_modules/@u-elements/u-datalist/dist/u-datalist.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// ../utils.ts\nvar IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\nvar IS_ANDROID = IS_BROWSER && /android/i.test(navigator.userAgent);\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar _a;\nIS_BROWSER && // @ts-expect-error Typescript has not implemented userAgentData yet https://stackoverflow.com/a/71392474\n/^Mac/i.test(((_a = navigator.userAgentData) == null ? void 0 : _a.platform) || navigator.platform);\nvar SAFE_LABELLEDBY = `${IS_ANDROID ? \"data\" : \"aria\"}-labelledby`;\nvar DISPLAY_BLOCK = \":host(:not([hidden])) { display: block }\";\nvar FOCUS_OUTLINE = \"outline: 1px dotted; outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color\";\nvar UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nfunction attr(el, name, value) {\n if (value === void 0) return el.getAttribute(name);\n if (value === null) el.removeAttribute(name);\n else if (el.getAttribute(name) !== value) el.setAttribute(name, value);\n return null;\n}\nvar events = (action, element, rest) => {\n for (const type of rest[0].split(\",\")) {\n rest[0] = type;\n Element.prototype[`${action}EventListener`].apply(element, rest);\n }\n};\nvar on = (element, ...rest) => events(\"add\", element, rest);\nvar off = (element, ...rest) => events(\"remove\", element, rest);\nvar attachStyle = (element, css) => element.attachShadow({ mode: \"open\" }).append(\n createElement(\"slot\"),\n // Unnamed slot does automatically render all top element nodes\n createElement(\"style\", css)\n);\nvar observers = /* @__PURE__ */ new WeakMap();\nvar mutationObserver = (element, options) => {\n if (options === void 0) return observers.get(element);\n try {\n observers.get(element).disconnect();\n observers.delete(element);\n } catch (_err) {\n }\n if (options) {\n const observer = new MutationObserver(\n (detail) => element.handleEvent({ type: \"mutation\", detail })\n );\n observer.observe(element, options);\n observers.set(element, observer);\n }\n};\nvar getRoot = (node) => {\n var _a2;\n const root = ((_a2 = node.getRootNode) == null ? void 0 : _a2.call(node)) || node.ownerDocument;\n return root instanceof Document || root instanceof ShadowRoot ? root : document;\n};\nvar id = 0;\nvar useId = (el) => {\n if (!el) return \"\";\n if (!el.id) el.id = `:${el.nodeName.toLowerCase()}${(++id).toString(32)}`;\n return el.id;\n};\nvar createElement = (tagName, text, attrs) => {\n const el = document.createElement(tagName);\n if (text) el.textContent = text;\n return el;\n};\nvar customElements = {\n define: (name, instance) => !IS_BROWSER || window.customElements.get(name) || window.customElements.define(name, instance)\n};\nvar LIVE;\nvar LIVE_SR_FIX = 0;\nvar speak = (text) => {\n if (!LIVE) {\n LIVE = createElement(\"div\");\n LIVE.style.cssText = \"position:fixed;overflow:hidden;width:1px;white-space:nowrap\";\n attr(LIVE, \"aria-live\", \"assertive\");\n }\n if (!LIVE.isConnected) document.body.append(LIVE);\n if (text) LIVE.textContent = `${text}${LIVE_SR_FIX++ % 2 ? \"\\xA0\" : \"\"}`;\n};\nvar setValue = (input, data, type = \"\") => {\n var _a2, _b;\n const event = { bubbles: true, composed: true, data, inputType: type };\n const proto = HTMLInputElement.prototype;\n input.dispatchEvent(new InputEvent(\"beforeinput\", event));\n (_b = (_a2 = Object.getOwnPropertyDescriptor(proto, \"value\")) == null ? void 0 : _a2.set) == null ? void 0 : _b.call(input, data);\n input.dispatchEvent(new InputEvent(\"input\", event));\n input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n};\nvar IS_PRESS = false;\nvar isMouseDown = (event) => {\n if ((event == null ? void 0 : event.type) === \"mouseup\") IS_PRESS = false;\n if ((event == null ? void 0 : event.type) === \"mousedown\") {\n IS_PRESS = true;\n on(document, \"mouseup\", isMouseDown, { once: true });\n }\n return IS_PRESS;\n};\n\n// u-option.ts\nvar DISABLED = \"disabled\";\nvar SELECTED = \"selected\";\nvar UHTMLOptionElement = class extends UHTMLElement {\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return [DISABLED, SELECTED];\n }\n connectedCallback() {\n if (!IS_IOS) this.tabIndex = -1;\n if (!this.hasAttribute(\"role\")) attr(this, \"role\", \"option\");\n this.attributeChangedCallback();\n }\n attributeChangedCallback() {\n attr(this, \"aria-disabled\", `${this.disabled}`);\n attr(this, \"aria-selected\", `${this.selected}`);\n }\n /** Sets or retrieves whether the option in the list box is the default item. */\n get defaultSelected() {\n return this[SELECTED];\n }\n set defaultSelected(value) {\n this[SELECTED] = value;\n }\n get disabled() {\n return attr(this, DISABLED) !== null;\n }\n set disabled(value) {\n attr(this, DISABLED, value ? \"\" : null);\n }\n /** Retrieves a reference to the form that the object is embedded in. */\n get form() {\n return this.closest(\"form\");\n }\n /** Sets or retrieves the ordinal position of an option in a list box. */\n get index() {\n var _a2;\n return [\n ...((_a2 = this.parentElement) == null ? void 0 : _a2.options) || [this]\n ].indexOf(this);\n }\n /** Sets or retrieves a value that you can use to implement your own label functionality for the object. */\n get label() {\n var _a2;\n return (_a2 = attr(this, \"label\")) != null ? _a2 : this.text;\n }\n set label(value) {\n attr(this, \"label\", value);\n }\n get selected() {\n return attr(this, SELECTED) !== null;\n }\n set selected(value) {\n attr(this, SELECTED, value ? \"\" : null);\n }\n /** Sets or retrieves the text string specified by the option tag. */\n get text() {\n var _a2;\n return ((_a2 = this.textContent) == null ? void 0 : _a2.trim()) || \"\";\n }\n set text(text) {\n this.textContent = text;\n }\n /** Sets or retrieves the value which is returned to the server when the form control is submitted. */\n get value() {\n var _a2;\n return (_a2 = attr(this, \"value\")) != null ? _a2 : this.text;\n }\n set value(value) {\n attr(this, \"value\", value);\n }\n};\ncustomElements.define(\"u-option\", UHTMLOptionElement);\n\n// u-datalist.ts\nvar LIVE_TIMER;\nvar INPUT_DEBOUNCE = 0;\nvar IS_MOBILE = IS_IOS || IS_ANDROID;\nvar EVENTS = \"click,focusout,input,keydown,mousedown,mouseup\";\nvar EVENTS_INPUT = \"focus,focusin,blur,focusout\";\nvar TEXTS = {\n singular: \"%d hit\",\n plural: \"%d hits\"\n};\nvar UHTMLDataListElement = class extends UHTMLElement {\n constructor() {\n super();\n this._texts = __spreadValues({}, TEXTS);\n this._value = \"\";\n attachStyle(\n this,\n `${DISPLAY_BLOCK}\n\t\t\t::slotted(u-option) { display: block; cursor: pointer }\n\t\t\t::slotted(u-option:focus) { ${FOCUS_OUTLINE} }\n\t\t\t::slotted(u-option[aria-hidden=\"true\"]),\n\t\t\t::slotted(u-option[disabled]),\n\t\t\t::slotted(u-option[hidden]) { display: none !important }`\n );\n }\n // Used to prevent unnecessary announcements\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return [\"id\", ...Object.keys(TEXTS).map((key) => `data-sr-${key}`)];\n }\n connectedCallback() {\n this.hidden = true;\n this._root = getRoot(this);\n attr(this, \"role\", \"listbox\");\n attr(this, \"tabindex\", \"-1\");\n on(this._root, \"focusin\", this);\n on(this._root, \"focus\", this, true);\n mutationObserver(this, {\n attributeFilter: [\"disabled\", \"hidden\", \"label\", \"value\"],\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true\n });\n setTimeout(() => this.attributeChangedCallback());\n }\n disconnectedCallback() {\n off(this._root || this, \"focus\", this, true);\n off(this._root || this, \"focusin\", this);\n mutationObserver(this, false);\n disconnectInput(this);\n this._root = void 0;\n }\n attributeChangedCallback(prop, _prev, next) {\n const text = prop == null ? void 0 : prop.split(\"data-sr-\")[1];\n const css = `input[list=\"${this.id}\"]`;\n if (TEXTS[text]) this._texts[text] = next || TEXTS[text];\n else if (this._root) {\n if (this._input) setupInput(this, this._input);\n for (const input of this._root.querySelectorAll(css))\n setupInput(this, input);\n }\n }\n handleEvent(event) {\n const { target, type } = event;\n if (event.defaultPrevented) return;\n if (type === \"click\") onClick(this, event);\n if (type === \"focus\" || type === \"focusin\") onFocus(this, event);\n if (type === \"blur\" || type === \"focusout\") onBlur(this, event);\n if (type === \"keydown\") onKeyDown(this, event);\n if (type === \"mousedown\" && this.contains(target))\n isMouseDown(event);\n if (type === \"mutation\" || type === \"input\") {\n clearTimeout(INPUT_DEBOUNCE);\n INPUT_DEBOUNCE = setTimeout(onInput, 0, this, event);\n }\n }\n get options() {\n return this.getElementsByTagName(\"u-option\");\n }\n};\nvar isDisabled = (input) => (input == null ? void 0 : input.disabled) || (input == null ? void 0 : input.readOnly) || false;\nvar setExpanded = (self, open) => {\n var _a2, _b, _c;\n if (self.hidden !== open) return;\n self.hidden = isDisabled(self == null ? void 0 : self._input) || !open;\n (_a2 = mutationObserver(self)) == null ? void 0 : _a2.takeRecords();\n const isPopover = self.isConnected && self.popover && ((_b = self._input) == null ? void 0 : _b.isConnected) && ((_c = self._input) == null ? void 0 : _c.popoverTargetElement) === self;\n if (self._input) setupInput(self, self._input, open);\n if (isPopover) attr(self, \"popover\", \"manual\");\n if (isPopover) self.togglePopover(open);\n if (open) onInput(self);\n};\nvar disconnectInput = (self) => {\n if (!self._input) return;\n off(self._input || self, EVENTS_INPUT, self);\n off(self._root || self, EVENTS, self);\n setExpanded(self, false);\n self._input = void 0;\n};\nvar setupInput = (self, input, open = false) => {\n if (self.popover) attr(input, \"popovertarget\", useId(self));\n on(input, EVENTS_INPUT, self, true);\n attr(input, \"aria-autocomplete\", \"list\");\n attr(input, \"aria-controls\", useId(self));\n attr(input, \"aria-expanded\", `${!IS_MOBILE || open}`);\n attr(input, \"autocomplete\", \"off\");\n attr(input, \"role\", isDisabled(input) ? null : \"combobox\");\n};\nvar onFocus = (self, event) => {\n var _a2;\n const isInput = event.target instanceof HTMLInputElement;\n if (isInput && event.isTrusted) event.stopImmediatePropagation();\n if (self._input !== event.target && isInput && event.target.list === self) {\n if (self._input) disconnectInput(self);\n self._input = event.target;\n self._input.dispatchEvent(new FocusEvent(\"focus\"));\n self._input.dispatchEvent(new FocusEvent(\"focusin\", { bubbles: true }));\n attr(self, SAFE_LABELLEDBY, useId((_a2 = self._input.labels) == null ? void 0 : _a2[0]));\n on(self._root || self, EVENTS, self);\n setExpanded(self, true);\n speak();\n }\n};\nvar onBlur = (self, event) => {\n if (!IS_ANDROID && !isMouseDown() && self._input)\n setTimeout(onBlurred, 0, self);\n if (event.target === self._input && event.isTrusted)\n event.stopImmediatePropagation();\n};\nvar onBlurred = (self) => {\n var _a2;\n const relatedTarget = ((_a2 = self._root) == null ? void 0 : _a2.activeElement) || null;\n const input = self._input;\n if (input && input !== relatedTarget && !self.contains(relatedTarget)) {\n input.dispatchEvent(new FocusEvent(\"blur\", { relatedTarget }));\n input.dispatchEvent(\n new FocusEvent(\"focusout\", { bubbles: true, relatedTarget })\n );\n disconnectInput(self);\n }\n};\nvar onClick = (self, { target }) => {\n var _a2;\n if (!self._input || self._input === target) return setExpanded(self, true);\n for (const opt of self.options)\n if (opt.contains(target)) {\n if (attr(self, \"aria-multiselectable\") !== \"true\") {\n (_a2 = self._input) == null ? void 0 : _a2.focus();\n setExpanded(self, false);\n }\n return setValue(self._input, opt.value);\n }\n if (IS_ANDROID) onBlurred(self);\n};\nvar onKeyDown = (self, e) => {\n var _a2;\n const { key, target, altKey, ctrlKey, shiftKey, metaKey } = e;\n const isEscape = key === \"Escape\" || key === \"Esc\";\n if (altKey || ctrlKey || metaKey || shiftKey || key === \"Tab\") return;\n if (isEscape && target !== self._input) e == null ? void 0 : e.preventDefault();\n setExpanded(self, !isEscape);\n const options = [...self.options].filter(\n (el) => attr(el, \"aria-hidden\") !== \"true\" && el.offsetHeight\n );\n const prev = options.indexOf(target);\n let next = -1;\n if (key === \"ArrowDown\") next = (prev + 1) % options.length;\n if (key === \"ArrowUp\") next = (~prev ? prev : options.length) - 1;\n if (~prev) {\n if (key === \"Home\" || key === \"PageUp\") next = 0;\n if (key === \"End\" || key === \"PageDown\") next = options.length - 1;\n if (key === \"Enter\") {\n options[prev].click();\n return e.preventDefault();\n }\n }\n if (options[next]) for (const option of options) option.tabIndex = -1;\n if (options[next]) e.preventDefault();\n (_a2 = options[next] || self._input) == null ? void 0 : _a2.focus();\n if (!options[next] && key === \"ArrowUp\")\n setTimeout(() => {\n var _a3;\n return (_a3 = self._input) == null ? void 0 : _a3.setSelectionRange(999, 999);\n });\n};\nvar onInput = (self, e) => {\n const { _texts, _root, _input, options } = self;\n const value = (_input == null ? void 0 : _input.value.toLowerCase().trim()) || \"\";\n const filter = !self.hasAttribute(\"data-nofilter\");\n const hidden = [];\n const visible = [];\n for (const opt of options) {\n const hide = opt.disabled || opt.hidden || filter && !opt.label.toLowerCase().includes(value);\n (hide ? hidden : visible).push(opt);\n }\n for (const opt of hidden) attr(opt, \"aria-hidden\", \"true\");\n for (const opt of visible) attr(opt, \"aria-hidden\", \"false\");\n const total = visible.length;\n clearTimeout(LIVE_TIMER);\n if ((e == null ? void 0 : e.type) === \"input\" && value !== self._value)\n LIVE_TIMER = setTimeout(() => {\n const text = `${!total && self.innerText.trim() || `${_texts[total === 1 ? \"singular\" : \"plural\"]}`.replace(\"%d\", `${total}`)}`;\n if (!self.hidden && (_root == null ? void 0 : _root.activeElement) === _input) speak(text);\n self._value = value;\n }, 1e3);\n if (IS_IOS)\n visible.forEach((opt, idx) => attr(opt, \"title\", `${idx + 1}/${total}`));\n};\nif (IS_BROWSER)\n Object.defineProperty(HTMLInputElement.prototype, \"list\", {\n configurable: true,\n enumerable: true,\n get() {\n return getRoot(this).getElementById(attr(this, \"list\") || \"\");\n }\n });\ncustomElements.define(\"u-datalist\", UHTMLDataListElement);\n\nexport { UHTMLDataListElement };\n"],"names":["__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","IS_BROWSER","IS_ANDROID","IS_IOS","_a","SAFE_LABELLEDBY","DISPLAY_BLOCK","FOCUS_OUTLINE","UHTMLElement","attr","el","name","events","action","element","rest","type","on","off","attachStyle","css","createElement","observers","mutationObserver","options","observer","detail","getRoot","node","_a2","root","id","useId","tagName","text","attrs","customElements","instance","LIVE","LIVE_SR_FIX","speak","setValue","input","data","_b","event","proto","IS_PRESS","isMouseDown","DISABLED","SELECTED","UHTMLOptionElement","LIVE_TIMER","INPUT_DEBOUNCE","IS_MOBILE","EVENTS","EVENTS_INPUT","TEXTS","UHTMLDataListElement","disconnectInput","_prev","next","setupInput","target","onClick","onFocus","onBlur","onKeyDown","onInput","isDisabled","setExpanded","self","open","_c","isPopover","isInput","onBlurred","relatedTarget","opt","altKey","ctrlKey","shiftKey","metaKey","isEscape","prev","option","_a3","_texts","_root","_input","filter","hidden","visible","total","idx"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"u-datalist.js","sources":["../../../../../node_modules/@u-elements/u-datalist/dist/u-datalist.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// ../utils.ts\nvar IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\nvar IS_ANDROID = IS_BROWSER && /android/i.test(navigator.userAgent);\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar _a;\nIS_BROWSER && // @ts-expect-error Typescript has not implemented userAgentData yet https://stackoverflow.com/a/71392474\n/^Mac/i.test(((_a = navigator.userAgentData) == null ? void 0 : _a.platform) || navigator.platform);\nvar SAFE_LABELLEDBY = `${IS_ANDROID ? \"data\" : \"aria\"}-labelledby`;\nvar DISPLAY_BLOCK = \":host(:not([hidden])) { display: block }\";\nvar FOCUS_OUTLINE = \"outline: 1px dotted; outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color\";\nvar UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nfunction attr(el, name, value) {\n if (value === void 0) return el.getAttribute(name);\n if (value === null) el.removeAttribute(name);\n else if (el.getAttribute(name) !== value) el.setAttribute(name, value);\n return null;\n}\nvar events = (action, element, rest) => {\n for (const type of rest[0].split(\",\")) {\n rest[0] = type;\n Element.prototype[`${action}EventListener`].apply(element, rest);\n }\n};\nvar on = (element, ...rest) => events(\"add\", element, rest);\nvar off = (element, ...rest) => events(\"remove\", element, rest);\nvar attachStyle = (element, css) => element.attachShadow({ mode: \"open\" }).append(\n createElement(\"slot\"),\n // Unnamed slot does automatically render all top element nodes\n createElement(\"style\", css)\n);\nvar observers = /* @__PURE__ */ new WeakMap();\nvar mutationObserver = (element, options) => {\n if (options === void 0) return observers.get(element);\n try {\n observers.get(element).disconnect();\n observers.delete(element);\n } catch (_err) {\n }\n if (options) {\n const observer = new MutationObserver(\n (detail) => element.handleEvent({ type: \"mutation\", detail })\n );\n observer.observe(element, options);\n observers.set(element, observer);\n }\n};\nvar getRoot = (node) => {\n var _a2;\n const root = ((_a2 = node.getRootNode) == null ? void 0 : _a2.call(node)) || node.ownerDocument;\n return root instanceof Document || root instanceof ShadowRoot ? root : document;\n};\nvar id = 0;\nvar useId = (el) => {\n if (!el) return \"\";\n if (!el.id) el.id = `:${el.nodeName.toLowerCase()}${(++id).toString(32)}`;\n return el.id;\n};\nvar createElement = (tagName, text, attrs) => {\n const el = document.createElement(tagName);\n if (text) el.textContent = text;\n return el;\n};\nvar customElements = {\n define: (name, instance) => !IS_BROWSER || window.customElements.get(name) || window.customElements.define(name, instance)\n};\nvar LIVE;\nvar LIVE_SR_FIX = 0;\nvar speak = (text) => {\n if (!LIVE) {\n LIVE = createElement(\"div\");\n LIVE.style.cssText = \"position:fixed;overflow:hidden;width:1px;white-space:nowrap\";\n attr(LIVE, \"aria-live\", \"assertive\");\n }\n if (!LIVE.isConnected) document.body.append(LIVE);\n if (text) LIVE.textContent = `${text}${LIVE_SR_FIX++ % 2 ? \"\\xA0\" : \"\"}`;\n};\nvar setValue = (input, data, type = \"\") => {\n var _a2, _b;\n const event = { bubbles: true, composed: true, data, inputType: type };\n const proto = HTMLInputElement.prototype;\n input.dispatchEvent(new InputEvent(\"beforeinput\", event));\n (_b = (_a2 = Object.getOwnPropertyDescriptor(proto, \"value\")) == null ? void 0 : _a2.set) == null ? void 0 : _b.call(input, data);\n input.dispatchEvent(new InputEvent(\"input\", event));\n input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n};\nvar IS_PRESS = false;\nvar isMouseDown = (event) => {\n if ((event == null ? void 0 : event.type) === \"mouseup\") IS_PRESS = false;\n if ((event == null ? void 0 : event.type) === \"mousedown\") {\n IS_PRESS = true;\n on(document, \"mouseup\", isMouseDown, { once: true });\n }\n return IS_PRESS;\n};\n\n// u-option.ts\nvar DISABLED = \"disabled\";\nvar SELECTED = \"selected\";\nvar UHTMLOptionElement = class extends UHTMLElement {\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return [DISABLED, SELECTED];\n }\n connectedCallback() {\n if (!IS_IOS) this.tabIndex = -1;\n if (!this.hasAttribute(\"role\")) attr(this, \"role\", \"option\");\n this.attributeChangedCallback();\n }\n attributeChangedCallback() {\n attr(this, \"aria-disabled\", `${this.disabled}`);\n attr(this, \"aria-selected\", `${this.selected}`);\n }\n /** Sets or retrieves whether the option in the list box is the default item. */\n get defaultSelected() {\n return this[SELECTED];\n }\n set defaultSelected(value) {\n this[SELECTED] = value;\n }\n get disabled() {\n return attr(this, DISABLED) !== null;\n }\n set disabled(value) {\n attr(this, DISABLED, value ? \"\" : null);\n }\n /** Retrieves a reference to the form that the object is embedded in. */\n get form() {\n return this.closest(\"form\");\n }\n /** Sets or retrieves the ordinal position of an option in a list box. */\n get index() {\n var _a2;\n return [\n ...((_a2 = this.parentElement) == null ? void 0 : _a2.options) || [this]\n ].indexOf(this);\n }\n /** Sets or retrieves a value that you can use to implement your own label functionality for the object. */\n get label() {\n var _a2;\n return (_a2 = attr(this, \"label\")) != null ? _a2 : this.text;\n }\n set label(value) {\n attr(this, \"label\", value);\n }\n get selected() {\n return attr(this, SELECTED) !== null;\n }\n set selected(value) {\n attr(this, SELECTED, value ? \"\" : null);\n }\n /** Sets or retrieves the text string specified by the option tag. */\n get text() {\n var _a2;\n return ((_a2 = this.textContent) == null ? void 0 : _a2.trim()) || \"\";\n }\n set text(text) {\n this.textContent = text;\n }\n /** Sets or retrieves the value which is returned to the server when the form control is submitted. */\n get value() {\n var _a2;\n return (_a2 = attr(this, \"value\")) != null ? _a2 : this.text;\n }\n set value(value) {\n attr(this, \"value\", value);\n }\n};\ncustomElements.define(\"u-option\", UHTMLOptionElement);\n\n// u-datalist.ts\nvar LIVE_TIMER;\nvar INPUT_DEBOUNCE = 0;\nvar IS_MOBILE = IS_IOS || IS_ANDROID;\nvar EVENTS = \"click,focusout,input,keydown,mousedown,mouseup\";\nvar EVENTS_INPUT = \"focus,focusin,blur,focusout\";\nvar TEXTS = {\n singular: \"%d hit\",\n plural: \"%d hits\"\n};\nvar UHTMLDataListElement = class extends UHTMLElement {\n constructor() {\n super();\n this._texts = __spreadValues({}, TEXTS);\n this._value = \"\";\n attachStyle(\n this,\n `${DISPLAY_BLOCK}\n\t\t\t::slotted(u-option) { display: block; cursor: pointer }\n\t\t\t::slotted(u-option:focus) { ${FOCUS_OUTLINE} }\n\t\t\t::slotted(u-option[aria-hidden=\"true\"]),\n\t\t\t::slotted(u-option[disabled]),\n\t\t\t::slotted(u-option[hidden]) { display: none !important }`\n );\n }\n // Used to prevent unnecessary announcements\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return [\"id\", ...Object.keys(TEXTS).map((key) => `data-sr-${key}`)];\n }\n connectedCallback() {\n this.hidden = true;\n this._root = getRoot(this);\n attr(this, \"role\", \"listbox\");\n attr(this, \"tabindex\", \"-1\");\n on(this._root, \"focusin\", this);\n on(this._root, \"focus\", this, true);\n mutationObserver(this, {\n attributeFilter: [\"disabled\", \"hidden\", \"label\", \"value\"],\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true\n });\n setTimeout(() => this.attributeChangedCallback());\n }\n disconnectedCallback() {\n off(this._root || this, \"focus\", this, true);\n off(this._root || this, \"focusin\", this);\n mutationObserver(this, false);\n disconnectInput(this);\n this._root = void 0;\n }\n attributeChangedCallback(prop, _prev, next) {\n const text = prop == null ? void 0 : prop.split(\"data-sr-\")[1];\n const css = `input[list=\"${this.id}\"]`;\n if (TEXTS[text]) this._texts[text] = next || TEXTS[text];\n else if (this._root) {\n if (this._input) setupInput(this, this._input);\n for (const input of this._root.querySelectorAll(css))\n setupInput(this, input);\n }\n }\n handleEvent(event) {\n const { target, type } = event;\n if (event.defaultPrevented) return;\n if (type === \"click\") onClick(this, event);\n if (type === \"focus\" || type === \"focusin\") onFocus(this, event);\n if (type === \"blur\" || type === \"focusout\") onBlur(this, event);\n if (type === \"keydown\") onKeyDown(this, event);\n if (type === \"mousedown\" && this.contains(target))\n isMouseDown(event);\n if (type === \"mutation\" || type === \"input\") {\n clearTimeout(INPUT_DEBOUNCE);\n INPUT_DEBOUNCE = setTimeout(onInput, 0, this, event);\n }\n }\n get options() {\n return this.getElementsByTagName(\"u-option\");\n }\n};\nvar isDisabled = (input) => (input == null ? void 0 : input.disabled) || (input == null ? void 0 : input.readOnly) || false;\nvar setExpanded = (self, open) => {\n var _a2, _b, _c;\n if (self.hidden !== open) return;\n self.hidden = isDisabled(self == null ? void 0 : self._input) || !open;\n (_a2 = mutationObserver(self)) == null ? void 0 : _a2.takeRecords();\n const isPopover = self.isConnected && self.popover && ((_b = self._input) == null ? void 0 : _b.isConnected) && ((_c = self._input) == null ? void 0 : _c.popoverTargetElement) === self;\n if (self._input) setupInput(self, self._input, open);\n if (isPopover) attr(self, \"popover\", \"manual\");\n if (isPopover) self.togglePopover(open);\n if (open) onInput(self);\n};\nvar disconnectInput = (self) => {\n if (!self._input) return;\n off(self._input || self, EVENTS_INPUT, self);\n off(self._root || self, EVENTS, self);\n setExpanded(self, false);\n self._input = void 0;\n};\nvar setupInput = (self, input, open = false) => {\n if (self.popover) attr(input, \"popovertarget\", useId(self));\n on(input, EVENTS_INPUT, self, true);\n attr(input, \"aria-autocomplete\", \"list\");\n attr(input, \"aria-controls\", useId(self));\n attr(input, \"aria-expanded\", `${!IS_MOBILE || open}`);\n attr(input, \"autocomplete\", \"off\");\n attr(input, \"role\", isDisabled(input) ? null : \"combobox\");\n};\nvar onFocus = (self, event) => {\n var _a2;\n const isInput = event.target instanceof HTMLInputElement;\n if (isInput && event.isTrusted) event.stopImmediatePropagation();\n if (self._input !== event.target && isInput && event.target.list === self) {\n if (self._input) disconnectInput(self);\n self._input = event.target;\n self._input.dispatchEvent(new FocusEvent(\"focus\"));\n self._input.dispatchEvent(new FocusEvent(\"focusin\", { bubbles: true }));\n attr(self, SAFE_LABELLEDBY, useId((_a2 = self._input.labels) == null ? void 0 : _a2[0]));\n on(self._root || self, EVENTS, self);\n setExpanded(self, attr(self._input, \"inputmode\") !== \"none\");\n speak();\n }\n};\nvar onBlur = (self, event) => {\n if (!IS_ANDROID && !isMouseDown() && self._input)\n setTimeout(onBlurred, 0, self);\n if (event.target === self._input && event.isTrusted)\n event.stopImmediatePropagation();\n};\nvar onBlurred = (self) => {\n var _a2;\n const relatedTarget = ((_a2 = self._root) == null ? void 0 : _a2.activeElement) || null;\n const input = self._input;\n if (input && input !== relatedTarget && !self.contains(relatedTarget)) {\n input.dispatchEvent(new FocusEvent(\"blur\", { relatedTarget }));\n input.dispatchEvent(\n new FocusEvent(\"focusout\", { bubbles: true, relatedTarget })\n );\n disconnectInput(self);\n }\n};\nvar onClick = (self, { target }) => {\n var _a2;\n if (!self._input || self._input === target) return setExpanded(self, true);\n for (const opt of self.options)\n if (opt.contains(target)) {\n if (attr(self, \"aria-multiselectable\") !== \"true\") {\n (_a2 = self._input) == null ? void 0 : _a2.focus();\n setExpanded(self, false);\n }\n return setValue(self._input, opt.value);\n }\n if (IS_ANDROID) onBlurred(self);\n};\nvar onKeyDown = (self, e) => {\n var _a2;\n const { key, target, altKey, ctrlKey, shiftKey, metaKey } = e;\n const isEscape = key === \"Escape\" || key === \"Esc\";\n if (altKey || ctrlKey || metaKey || shiftKey || key === \"Tab\") return;\n if (isEscape && !self.hidden) e == null ? void 0 : e.preventDefault();\n setExpanded(self, !isEscape);\n const options = [...self.options].filter(\n (el) => attr(el, \"aria-hidden\") !== \"true\" && el.offsetHeight\n );\n const prev = options.indexOf(target);\n let next = -1;\n if (key === \"ArrowDown\") next = (prev + 1) % options.length;\n if (key === \"ArrowUp\") next = (~prev ? prev : options.length) - 1;\n if (~prev) {\n if (key === \"Home\" || key === \"PageUp\") next = 0;\n if (key === \"End\" || key === \"PageDown\") next = options.length - 1;\n if (key === \"Enter\") {\n options[prev].click();\n return e.preventDefault();\n }\n }\n if (options[next]) for (const option of options) option.tabIndex = -1;\n if (options[next]) e.preventDefault();\n (_a2 = options[next] || self._input) == null ? void 0 : _a2.focus();\n if (!options[next] && key === \"ArrowUp\")\n setTimeout(() => {\n var _a3;\n return (_a3 = self._input) == null ? void 0 : _a3.setSelectionRange(999, 999);\n });\n};\nvar onInput = (self, e) => {\n const { _texts, _root, _input, options } = self;\n const value = (_input == null ? void 0 : _input.value.toLowerCase().trim()) || \"\";\n const filter = !self.hasAttribute(\"data-nofilter\");\n const hidden = [];\n const visible = [];\n for (const opt of options) {\n const hide = opt.disabled || opt.hidden || filter && !opt.label.toLowerCase().includes(value);\n (hide ? hidden : visible).push(opt);\n }\n for (const opt of hidden) attr(opt, \"aria-hidden\", \"true\");\n for (const opt of visible) attr(opt, \"aria-hidden\", \"false\");\n const total = visible.length;\n clearTimeout(LIVE_TIMER);\n if ((e == null ? void 0 : e.type) === \"input\" && value !== self._value)\n LIVE_TIMER = setTimeout(() => {\n const text = `${!total && self.innerText.trim() || `${_texts[total === 1 ? \"singular\" : \"plural\"]}`.replace(\"%d\", `${total}`)}`;\n if (!self.hidden && (_root == null ? void 0 : _root.activeElement) === _input) speak(text);\n self._value = value;\n }, 1e3);\n if (IS_IOS)\n visible.forEach((opt, idx) => attr(opt, \"title\", `${idx + 1}/${total}`));\n};\nif (IS_BROWSER)\n Object.defineProperty(HTMLInputElement.prototype, \"list\", {\n configurable: true,\n enumerable: true,\n get() {\n return getRoot(this).getElementById(attr(this, \"list\") || \"\");\n }\n });\ncustomElements.define(\"u-datalist\", UHTMLDataListElement);\n\nexport { UHTMLDataListElement };\n"],"names":["__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","IS_BROWSER","IS_ANDROID","IS_IOS","_a","SAFE_LABELLEDBY","DISPLAY_BLOCK","FOCUS_OUTLINE","UHTMLElement","attr","el","name","events","action","element","rest","type","on","off","attachStyle","css","createElement","observers","mutationObserver","options","observer","detail","getRoot","node","_a2","root","id","useId","tagName","text","attrs","customElements","instance","LIVE","LIVE_SR_FIX","speak","setValue","input","data","_b","event","proto","IS_PRESS","isMouseDown","DISABLED","SELECTED","UHTMLOptionElement","LIVE_TIMER","INPUT_DEBOUNCE","IS_MOBILE","EVENTS","EVENTS_INPUT","TEXTS","UHTMLDataListElement","disconnectInput","_prev","next","setupInput","target","onClick","onFocus","onBlur","onKeyDown","onInput","isDisabled","setExpanded","self","open","_c","isPopover","isInput","onBlurred","relatedTarget","opt","altKey","ctrlKey","shiftKey","metaKey","isEscape","prev","option","_a3","_texts","_root","_input","filter","hidden","visible","total","idx"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { UHTMLComboboxElement as g } from "../external/@u-elements/u-combobox/dist/u-combobox.js";
|
|
2
|
-
import { UHTMLDataListElement as
|
|
2
|
+
import { UHTMLDataListElement as E } from "../external/@u-elements/u-datalist/dist/u-datalist.js";
|
|
3
3
|
import v from "../styles.module.css.js";
|
|
4
|
-
import { onLoaded as I, onMutation as A, on as f, QUICK_EVENT as p, isInputLike as x, attr as n, useId as
|
|
5
|
-
const
|
|
4
|
+
import { onLoaded as I, onMutation as A, on as f, QUICK_EVENT as p, isInputLike as x, attr as n, useId as b, anchorPosition as m } from "../utils.js";
|
|
5
|
+
const h = v.field.split(" ")[0], y = v.validation.split(" "), M = y[0], a = (t, o) => t.getPropertyValue(`--mtds-text-${o}`)?.slice(1, -1) || "";
|
|
6
6
|
function T(t, o) {
|
|
7
|
-
for (const
|
|
8
|
-
if (
|
|
9
|
-
const
|
|
10
|
-
let c = null,
|
|
11
|
-
for (const e of
|
|
12
|
-
e instanceof HTMLLabelElement ?
|
|
13
|
-
if (
|
|
14
|
-
for (const e of
|
|
15
|
-
if (o && n(
|
|
16
|
-
l =
|
|
7
|
+
for (const s of t)
|
|
8
|
+
if (s.isConnected) {
|
|
9
|
+
const i = [], r = [], u = [];
|
|
10
|
+
let c = null, d = null, l = !0;
|
|
11
|
+
for (const e of s.getElementsByTagName("*"))
|
|
12
|
+
e instanceof HTMLLabelElement ? i.push(e) : e instanceof g ? c = e : x(e) && !e.hidden ? d = e : e.hasAttribute("data-description") ? r.push(e) : e.classList.contains(M) ? (l = n(e, "data-color") === "success" || !e.clientHeight, u.push(e), r.unshift(e)) : e instanceof HTMLParagraphElement && (r.some((C) => C.contains(e)) || r.push(e));
|
|
13
|
+
if (d) {
|
|
14
|
+
for (const e of i) e.htmlFor = b(d);
|
|
15
|
+
if (o && n(s, "data-validation") === "form") {
|
|
16
|
+
l = d.matches(":valid");
|
|
17
17
|
for (const e of u) n(e, "hidden", l ? "" : null);
|
|
18
18
|
}
|
|
19
|
-
H(c),
|
|
19
|
+
H(c), S(d), L(d), n(d, "aria-describedby", r.map(b).join(" ") || null), n(d, "aria-invalid", `${!l}`);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -27,35 +27,37 @@ function L(t) {
|
|
|
27
27
|
));
|
|
28
28
|
}
|
|
29
29
|
function H(t) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
const { control: o, list: s } = t || {};
|
|
31
|
+
if (t && s && o && !t.hasAttribute("data-sr-added")) {
|
|
32
|
+
const i = window.getComputedStyle(t);
|
|
33
|
+
n(t, "data-sr-added", a(i, "combobox-added")), n(t, "data-sr-empty", a(i, "combobox-empty")), n(t, "data-sr-found", a(i, "combobox-found")), n(t, "data-sr-invalid", a(i, "combobox-invalid")), n(t, "data-sr-of", a(i, "combobox-of")), n(t, "data-sr-remove", a(i, "combobox-remove")), n(t, "data-sr-removed", a(i, "combobox-removed")), n(s, "data-sr-plural", a(i, "datalist-plural")), n(s, "data-sr-singular", a(i, "datalist-singular")), n(s, "popover", "manual"), n(o, "popovertarget", b(s));
|
|
34
|
+
}
|
|
33
35
|
}
|
|
34
|
-
function
|
|
35
|
-
const o = t?.nextElementSibling,
|
|
36
|
-
if (o &&
|
|
37
|
-
const
|
|
38
|
-
if (u !==
|
|
39
|
-
n(o, "aria-live",
|
|
40
|
-
for (const e of y) o.classList.toggle(e,
|
|
36
|
+
function S(t) {
|
|
37
|
+
const o = t?.nextElementSibling, s = o && n(o, "data-count");
|
|
38
|
+
if (o && s) {
|
|
39
|
+
const i = Number(s) - t.value.length, r = i < 0, u = n(o, "aria-live") === "polite", c = window.getComputedStyle(o || t), d = a(c, "count-over"), l = a(c, "count-under");
|
|
40
|
+
if (u !== r) {
|
|
41
|
+
n(o, "aria-live", r ? "polite" : "off");
|
|
42
|
+
for (const e of y) o.classList.toggle(e, r);
|
|
41
43
|
}
|
|
42
|
-
o.textContent = (
|
|
44
|
+
o.textContent = (r ? d : l).replace(
|
|
43
45
|
"%d",
|
|
44
|
-
`${Math.abs(
|
|
46
|
+
`${Math.abs(i)}`
|
|
45
47
|
);
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
function N({ target: t, newState: o }) {
|
|
49
|
-
if (t instanceof
|
|
50
|
-
const
|
|
51
|
+
if (t instanceof E) {
|
|
52
|
+
const i = t.getRootNode()?.querySelector(
|
|
51
53
|
`[popovertarget="${t.id}"]`
|
|
52
54
|
);
|
|
53
|
-
o === "closed" ? m(t, !1) :
|
|
55
|
+
o === "closed" ? m(t, !1) : i && (t.style.width = `${i.clientWidth}px`, m(t, i, n(t, "data-position") ?? "bottom", !0));
|
|
54
56
|
}
|
|
55
57
|
}
|
|
56
58
|
function $({ target: t }) {
|
|
57
59
|
if (x(t)) {
|
|
58
|
-
|
|
60
|
+
S(t), L(t);
|
|
59
61
|
const o = t.hasAttribute("list") && t.list;
|
|
60
62
|
o && setTimeout(() => {
|
|
61
63
|
m(o, t, n(o, "data-position") ?? "bottom", !0);
|
|
@@ -63,14 +65,14 @@ function $({ target: t }) {
|
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
67
|
function w(t) {
|
|
66
|
-
const o = t.target?.closest?.(`.${
|
|
67
|
-
t.type === "invalid" && o && t.preventDefault(), T(document.getElementsByClassName(
|
|
68
|
+
const o = t.target?.closest?.(`.${h}`);
|
|
69
|
+
t.type === "invalid" && o && t.preventDefault(), T(document.getElementsByClassName(h), !0);
|
|
68
70
|
}
|
|
69
71
|
function D({ target: t }) {
|
|
70
72
|
const o = t instanceof g && t.list;
|
|
71
73
|
o && !o?.hidden && setTimeout(() => m(o, t, 2, !0), 10);
|
|
72
74
|
}
|
|
73
75
|
I(() => {
|
|
74
|
-
A(document.documentElement,
|
|
76
|
+
A(document.documentElement, h, T), f(document, "comboboxbeforeselect", D, p), f(document, "input", $, p), f(document, "invalid,submit", w, !0), f(document, "toggle", N, p);
|
|
75
77
|
});
|
|
76
78
|
//# sourceMappingURL=field-observer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-observer.js","sources":["../../designsystem/field/field-observer.ts"],"sourcesContent":["import { UHTMLComboboxElement } from \"@u-elements/u-combobox\";\nimport { UHTMLDataListElement } from \"@u-elements/u-datalist\";\nimport styles from \"../styles.module.css\";\nimport {\n\tanchorPosition,\n\tattr,\n\tisInputLike,\n\ton,\n\tonLoaded,\n\tonMutation,\n\tQUICK_EVENT,\n\tuseId,\n} from \"../utils\";\n\nconst CSS_FIELD = styles.field.split(\" \")[0];\nconst CSS_VALIDATIONS = styles.validation.split(\" \");\nconst CSS_VALIDATION = CSS_VALIDATIONS[0];\n\nconst getText = (style: CSSStyleDeclaration, key: string) =>\n\tstyle.getPropertyValue(`--mtds-text-${key}`)?.slice(1, -1) || \"\"; // slice to trim quotes\n\nfunction handleMutation(fields: HTMLCollectionOf<Element>, validate?: boolean) {\n\tfor (const field of fields)\n\t\tif (field.isConnected) {\n\t\t\tconst labels: HTMLLabelElement[] = [];\n\t\t\tconst descs: Element[] = [];\n\t\t\tconst valids: Element[] = [];\n\t\t\tlet combobox: UHTMLComboboxElement | null = null;\n\t\t\tlet input: HTMLInputElement | null = null;\n\t\t\tlet valid = true;\n\n\t\t\tfor (const el of field.getElementsByTagName(\"*\")) {\n\t\t\t\tif (el instanceof HTMLLabelElement) labels.push(el);\n\t\t\t\telse if (el instanceof UHTMLComboboxElement) combobox = el;\n\t\t\t\telse if (isInputLike(el) && !el.hidden) input = el;\n\t\t\t\telse if (el.hasAttribute(\"data-description\")) descs.push(el);\n\t\t\t\telse if (el.classList.contains(CSS_VALIDATION)) {\n\t\t\t\t\tvalid = attr(el, \"data-color\") === \"success\" || !el.clientHeight; // Only set invalid if Validation is visible\n\t\t\t\t\tvalids.push(el);\n\t\t\t\t\tdescs.unshift(el);\n\t\t\t\t} else if (el instanceof HTMLParagraphElement)\n\t\t\t\t\tdescs.some((desc) => desc.contains(el)) || descs.push(el); // Only add if not already inside description\n\t\t\t}\n\n\t\t\tif (input) {\n\t\t\t\tfor (const label of labels) label.htmlFor = useId(input);\n\t\t\t\tif (validate && attr(field, \"data-validation\") === \"form\") {\n\t\t\t\t\tvalid = input.matches(\":valid\");\n\t\t\t\t\tfor (const el of valids) attr(el, \"hidden\", valid ? \"\" : null);\n\t\t\t\t}\n\t\t\t\trenderCombobox(combobox);\n\t\t\t\trenderCounter(input);\n\t\t\t\trenderTextareaSize(input);\n\t\t\t\tattr(input, \"aria-describedby\", descs.map(useId).join(\" \") || null); // Remove if empty\n\t\t\t\tattr(input, \"aria-invalid\", `${!valid}`);\n\t\t\t}\n\t\t}\n}\n\n// iOS does not support field-sizing: content, so we need to manually resize\nfunction renderTextareaSize(textarea: Element) {\n\tif (textarea instanceof HTMLTextAreaElement) {\n\t\ttextarea.style.setProperty(\"--mtds-textarea-height\", \"auto\");\n\t\ttextarea.style.setProperty(\n\t\t\t\"--mtds-textarea-height\",\n\t\t\t`${textarea.scrollHeight}px`,\n\t\t);\n\t}\n}\n\n// Setup translations from CSS custom properties\nfunction renderCombobox(el: UHTMLComboboxElement | null) {\n\tif (!el?.list || el.list?.hasAttribute(\"popover\")) return;\n\tconst style = window.getComputedStyle(el);\n\tattr(el, \"data-sr-added\", getText(style, \"combobox-added\"));\n\tattr(el, \"data-sr-empty\", getText(style, \"combobox-empty\"));\n\tattr(el, \"data-sr-found\", getText(style, \"combobox-found\"));\n\tattr(el, \"data-sr-invalid\", getText(style, \"combobox-invalid\"));\n\tattr(el, \"data-sr-of\", getText(style, \"combobox-of\"));\n\tattr(el, \"data-sr-remove\", getText(style, \"combobox-remove\"));\n\tattr(el, \"data-sr-removed\", getText(style, \"combobox-removed\"));\n\tattr(el.list, \"data-sr-plural\", getText(style, \"datalist-plural\"));\n\tattr(el.list, \"data-sr-singular\", getText(style, \"datalist-singular\"));\n\tattr(el.list, \"popover\", \"manual\");\n}\n\nfunction renderCounter(input: HTMLInputElement) {\n\tconst el = input?.nextElementSibling;\n\tconst limit = el && attr(el, \"data-count\");\n\n\tif (el && limit) {\n\t\tconst remainder = Number(limit) - input.value.length;\n\t\tconst nextInvalid = remainder < 0;\n\t\tconst prevInvalid = attr(el, \"aria-live\") === \"polite\";\n\t\tconst style = window.getComputedStyle(el || input);\n\t\tconst over = getText(style, \"count-over\");\n\t\tconst under = getText(style, \"count-under\");\n\n\t\tif (prevInvalid !== nextInvalid) {\n\t\t\tattr(el, \"aria-live\", nextInvalid ? \"polite\" : \"off\");\n\t\t\tfor (const css of CSS_VALIDATIONS) el.classList.toggle(css, nextInvalid);\n\t\t}\n\t\tel.textContent = (nextInvalid ? over : under).replace(\n\t\t\t\"%d\",\n\t\t\t`${Math.abs(remainder)}`,\n\t\t);\n\t}\n}\n\nfunction handleToggle({ target: el, newState }: Event & { newState?: string }) {\n\tif (el instanceof UHTMLDataListElement) {\n\t\tconst root = el.getRootNode() as ShadowRoot | null;\n\t\tconst anchor = root?.querySelector<HTMLElement>(\n\t\t\t`[popovertarget=\"${el.id}\"]`,\n\t\t);\n\n\t\tif (newState === \"closed\") anchorPosition(el, false);\n\t\telse if (anchor) {\n\t\t\tel.style.width = `${anchor.clientWidth}px`;\n\t\t\tanchorPosition(el, anchor, attr(el, \"data-position\") ?? \"bottom\", true);\n\t\t}\n\t}\n}\n// Update when typing\nfunction handleInput({ target: el }: Event) {\n\tif (isInputLike(el)) {\n\t\trenderCounter(el);\n\t\trenderTextareaSize(el);\n\n\t\t// Reposition list datalist // TODO Enhance by using style.bottom?\n\t\tconst list = el.hasAttribute(\"list\") && el.list;\n\t\tif (list)\n\t\t\tsetTimeout(() => {\n\t\t\t\tanchorPosition(list, el, attr(list, \"data-position\") ?? \"bottom\", true);\n\t\t\t}, 10);\n\t}\n}\n\nfunction handleValdiation(event: Event) {\n\tconst field = (event.target as Element)?.closest?.(`.${CSS_FIELD}`);\n\n\tif (event.type === \"invalid\" && field) event.preventDefault(); // Prevent browsers from showing default validation bubbles\n\thandleMutation(document.getElementsByClassName(CSS_FIELD), true); // Update state\n}\n\n// Position combobox when changing content\nfunction handleBeforeChange({ target: el }: Event) {\n\tconst list = el instanceof UHTMLComboboxElement && el.list;\n\tif (list && !list?.hidden)\n\t\tsetTimeout(() => anchorPosition(list, el, 2, true), 10); // Reposition list if not hidden\n}\n\nonLoaded(() => {\n\tonMutation(document.documentElement, CSS_FIELD, handleMutation);\n\ton(document, \"beforechange\", handleBeforeChange, QUICK_EVENT);\n\ton(document, \"input\", handleInput, QUICK_EVENT);\n\ton(document, \"invalid,submit\", handleValdiation, true); // Use capture as invalid and submit does not bubble\n\ton(document, \"toggle\", handleToggle, QUICK_EVENT); // Use capture since toggle does not bubble\n});\n"],"names":["CSS_FIELD","styles","CSS_VALIDATIONS","CSS_VALIDATION","getText","style","key","handleMutation","fields","validate","field","labels","descs","valids","combobox","input","valid","el","UHTMLComboboxElement","isInputLike","attr","desc","label","useId","renderCombobox","renderCounter","renderTextareaSize","textarea","limit","remainder","nextInvalid","prevInvalid","over","under","css","handleToggle","newState","UHTMLDataListElement","anchor","anchorPosition","handleInput","list","handleValdiation","event","handleBeforeChange","onLoaded","onMutation","on","QUICK_EVENT"],"mappings":";;;;AAcA,MAAMA,IAAYC,EAAO,MAAM,MAAM,GAAG,EAAE,CAAC,GACrCC,IAAkBD,EAAO,WAAW,MAAM,GAAG,GAC7CE,IAAiBD,EAAgB,CAAC,GAElCE,IAAU,CAACC,GAA4BC,MAC5CD,EAAM,iBAAiB,eAAeC,CAAG,EAAE,GAAG,MAAM,GAAG,EAAE,KAAK;AAE/D,SAASC,EAAeC,GAAmCC,GAAoB;AAC9E,aAAWC,KAASF;AACnB,QAAIE,EAAM,aAAa;AACtB,YAAMC,IAA6B,CAAC,GAC9BC,IAAmB,CAAC,GACpBC,IAAoB,CAAC;AAC3B,UAAIC,IAAwC,MACxCC,IAAiC,MACjCC,IAAQ;AAEZ,iBAAWC,KAAMP,EAAM,qBAAqB,GAAG;AAC9C,QAAIO,aAAc,mBAAyBN,EAAA,KAAKM,CAAE,IACzCA,aAAcC,IAAiCJ,IAAAG,IAC/CE,EAAYF,CAAE,KAAK,CAACA,EAAG,SAAgBF,IAAAE,IACvCA,EAAG,aAAa,kBAAkB,IAAGL,EAAM,KAAKK,CAAE,IAClDA,EAAG,UAAU,SAASd,CAAc,KAC5Ca,IAAQI,EAAKH,GAAI,YAAY,MAAM,aAAa,CAACA,EAAG,cACpDJ,EAAO,KAAKI,CAAE,GACdL,EAAM,QAAQK,CAAE,KACNA,aAAc,yBAClBL,EAAA,KAAK,CAACS,MAASA,EAAK,SAASJ,CAAE,CAAC,KAAKL,EAAM,KAAKK,CAAE;AAG1D,UAAIF,GAAO;AACV,mBAAWO,KAASX,EAAc,CAAAW,EAAA,UAAUC,EAAMR,CAAK;AACvD,YAAIN,KAAYW,EAAKV,GAAO,iBAAiB,MAAM,QAAQ;AAClD,UAAAM,IAAAD,EAAM,QAAQ,QAAQ;AAC9B,qBAAWE,KAAMJ,EAAQ,CAAAO,EAAKH,GAAI,UAAUD,IAAQ,KAAK,IAAI;AAAA,QAAA;AAE9D,QAAAQ,EAAeV,CAAQ,GACvBW,EAAcV,CAAK,GACnBW,EAAmBX,CAAK,GACnBK,EAAAL,GAAO,oBAAoBH,EAAM,IAAIW,CAAK,EAAE,KAAK,GAAG,KAAK,IAAI,GAClEH,EAAKL,GAAO,gBAAgB,GAAG,CAACC,CAAK,EAAE;AAAA,MAAA;AAAA,IACxC;AAEH;AAGA,SAASU,EAAmBC,GAAmB;AAC9C,EAAIA,aAAoB,wBACdA,EAAA,MAAM,YAAY,0BAA0B,MAAM,GAC3DA,EAAS,MAAM;AAAA,IACd;AAAA,IACA,GAAGA,EAAS,YAAY;AAAA,EACzB;AAEF;AAGA,SAASH,EAAeP,GAAiC;AACxD,MAAI,CAACA,GAAI,QAAQA,EAAG,MAAM,aAAa,SAAS,EAAG;AAC7C,QAAAZ,IAAQ,OAAO,iBAAiBY,CAAE;AACxC,EAAAG,EAAKH,GAAI,iBAAiBb,EAAQC,GAAO,gBAAgB,CAAC,GAC1De,EAAKH,GAAI,iBAAiBb,EAAQC,GAAO,gBAAgB,CAAC,GAC1De,EAAKH,GAAI,iBAAiBb,EAAQC,GAAO,gBAAgB,CAAC,GAC1De,EAAKH,GAAI,mBAAmBb,EAAQC,GAAO,kBAAkB,CAAC,GAC9De,EAAKH,GAAI,cAAcb,EAAQC,GAAO,aAAa,CAAC,GACpDe,EAAKH,GAAI,kBAAkBb,EAAQC,GAAO,iBAAiB,CAAC,GAC5De,EAAKH,GAAI,mBAAmBb,EAAQC,GAAO,kBAAkB,CAAC,GAC9De,EAAKH,EAAG,MAAM,kBAAkBb,EAAQC,GAAO,iBAAiB,CAAC,GACjEe,EAAKH,EAAG,MAAM,oBAAoBb,EAAQC,GAAO,mBAAmB,CAAC,GAChEe,EAAAH,EAAG,MAAM,WAAW,QAAQ;AAClC;AAEA,SAASQ,EAAcV,GAAyB;AAC/C,QAAME,IAAKF,GAAO,oBACZa,IAAQX,KAAMG,EAAKH,GAAI,YAAY;AAEzC,MAAIA,KAAMW,GAAO;AAChB,UAAMC,IAAY,OAAOD,CAAK,IAAIb,EAAM,MAAM,QACxCe,IAAcD,IAAY,GAC1BE,IAAcX,EAAKH,GAAI,WAAW,MAAM,UACxCZ,IAAQ,OAAO,iBAAiBY,KAAMF,CAAK,GAC3CiB,IAAO5B,EAAQC,GAAO,YAAY,GAClC4B,IAAQ7B,EAAQC,GAAO,aAAa;AAE1C,QAAI0B,MAAgBD,GAAa;AAChC,MAAAV,EAAKH,GAAI,aAAaa,IAAc,WAAW,KAAK;AACpD,iBAAWI,KAAOhC,EAAiB,CAAAe,EAAG,UAAU,OAAOiB,GAAKJ,CAAW;AAAA,IAAA;AAErE,IAAAb,EAAA,eAAea,IAAcE,IAAOC,GAAO;AAAA,MAC7C;AAAA,MACA,GAAG,KAAK,IAAIJ,CAAS,CAAC;AAAA,IACvB;AAAA,EAAA;AAEF;AAEA,SAASM,EAAa,EAAE,QAAQlB,GAAI,UAAAmB,KAA2C;AAC9E,MAAInB,aAAcoB,GAAsB;AAEvC,UAAMC,IADOrB,EAAG,YAAY,GACP;AAAA,MACpB,mBAAmBA,EAAG,EAAE;AAAA,IACzB;AAEA,IAAImB,MAAa,WAAyBG,EAAAtB,GAAI,EAAK,IAC1CqB,MACRrB,EAAG,MAAM,QAAQ,GAAGqB,EAAO,WAAW,MACtCC,EAAetB,GAAIqB,GAAQlB,EAAKH,GAAI,eAAe,KAAK,UAAU,EAAI;AAAA,EACvE;AAEF;AAEA,SAASuB,EAAY,EAAE,QAAQvB,KAAa;AACvC,MAAAE,EAAYF,CAAE,GAAG;AACpB,IAAAQ,EAAcR,CAAE,GAChBS,EAAmBT,CAAE;AAGrB,UAAMwB,IAAOxB,EAAG,aAAa,MAAM,KAAKA,EAAG;AACvC,IAAAwB,KACH,WAAW,MAAM;AAChB,MAAAF,EAAeE,GAAMxB,GAAIG,EAAKqB,GAAM,eAAe,KAAK,UAAU,EAAI;AAAA,OACpE,EAAE;AAAA,EAAA;AAER;AAEA,SAASC,EAAiBC,GAAc;AACvC,QAAMjC,IAASiC,EAAM,QAAoB,UAAU,IAAI3C,CAAS,EAAE;AAElE,EAAI2C,EAAM,SAAS,aAAajC,OAAa,eAAe,GAC5DH,EAAe,SAAS,uBAAuBP,CAAS,GAAG,EAAI;AAChE;AAGA,SAAS4C,EAAmB,EAAE,QAAQ3B,KAAa;AAC5C,QAAAwB,IAAOxB,aAAcC,KAAwBD,EAAG;AAClD,EAAAwB,KAAQ,CAACA,GAAM,UAClB,WAAW,MAAMF,EAAeE,GAAMxB,GAAI,GAAG,EAAI,GAAG,EAAE;AACxD;AAEA4B,EAAS,MAAM;AACH,EAAAC,EAAA,SAAS,iBAAiB9C,GAAWO,CAAc,GAC3DwC,EAAA,UAAU,gBAAgBH,GAAoBI,CAAW,GACzDD,EAAA,UAAU,SAASP,GAAaQ,CAAW,GAC3CD,EAAA,UAAU,kBAAkBL,GAAkB,EAAI,GAClDK,EAAA,UAAU,UAAUZ,GAAca,CAAW;AACjD,CAAC;"}
|
|
1
|
+
{"version":3,"file":"field-observer.js","sources":["../../designsystem/field/field-observer.ts"],"sourcesContent":["import { UHTMLComboboxElement } from \"@u-elements/u-combobox\";\nimport { UHTMLDataListElement } from \"@u-elements/u-datalist\";\nimport styles from \"../styles.module.css\";\nimport {\n\tanchorPosition,\n\tattr,\n\tisInputLike,\n\ton,\n\tonLoaded,\n\tonMutation,\n\tQUICK_EVENT,\n\tuseId,\n} from \"../utils\";\n\nconst CSS_FIELD = styles.field.split(\" \")[0];\nconst CSS_VALIDATIONS = styles.validation.split(\" \");\nconst CSS_VALIDATION = CSS_VALIDATIONS[0];\n\nconst getText = (style: CSSStyleDeclaration, key: string) =>\n\tstyle.getPropertyValue(`--mtds-text-${key}`)?.slice(1, -1) || \"\"; // slice to trim quotes\n\nfunction handleMutation(fields: HTMLCollectionOf<Element>, validate?: boolean) {\n\tfor (const field of fields)\n\t\tif (field.isConnected) {\n\t\t\tconst labels: HTMLLabelElement[] = [];\n\t\t\tconst descs: Element[] = [];\n\t\t\tconst valids: Element[] = [];\n\t\t\tlet combobox: UHTMLComboboxElement | null = null;\n\t\t\tlet input: HTMLInputElement | null = null;\n\t\t\tlet valid = true;\n\n\t\t\tfor (const el of field.getElementsByTagName(\"*\")) {\n\t\t\t\tif (el instanceof HTMLLabelElement) labels.push(el);\n\t\t\t\telse if (el instanceof UHTMLComboboxElement) combobox = el;\n\t\t\t\telse if (isInputLike(el) && !el.hidden) input = el;\n\t\t\t\telse if (el.hasAttribute(\"data-description\")) descs.push(el);\n\t\t\t\telse if (el.classList.contains(CSS_VALIDATION)) {\n\t\t\t\t\tvalid = attr(el, \"data-color\") === \"success\" || !el.clientHeight; // Only set invalid if Validation is visible\n\t\t\t\t\tvalids.push(el);\n\t\t\t\t\tdescs.unshift(el);\n\t\t\t\t} else if (el instanceof HTMLParagraphElement)\n\t\t\t\t\tdescs.some((desc) => desc.contains(el)) || descs.push(el); // Only add if not already inside description\n\t\t\t}\n\n\t\t\tif (input) {\n\t\t\t\tfor (const label of labels) label.htmlFor = useId(input);\n\t\t\t\tif (validate && attr(field, \"data-validation\") === \"form\") {\n\t\t\t\t\tvalid = input.matches(\":valid\");\n\t\t\t\t\tfor (const el of valids) attr(el, \"hidden\", valid ? \"\" : null);\n\t\t\t\t}\n\t\t\t\trenderCombobox(combobox);\n\t\t\t\trenderCounter(input);\n\t\t\t\trenderTextareaSize(input);\n\t\t\t\tattr(input, \"aria-describedby\", descs.map(useId).join(\" \") || null); // Remove if empty\n\t\t\t\tattr(input, \"aria-invalid\", `${!valid}`);\n\t\t\t}\n\t\t}\n}\n\n// iOS does not support field-sizing: content, so we need to manually resize\nfunction renderTextareaSize(textarea: Element) {\n\tif (textarea instanceof HTMLTextAreaElement) {\n\t\ttextarea.style.setProperty(\"--mtds-textarea-height\", \"auto\");\n\t\ttextarea.style.setProperty(\n\t\t\t\"--mtds-textarea-height\",\n\t\t\t`${textarea.scrollHeight}px`,\n\t\t);\n\t}\n}\n\n// Setup translations from CSS custom properties\nfunction renderCombobox(el: UHTMLComboboxElement | null) {\n\tconst { control, list } = el || {};\n\n\tif (el && list && control && !el.hasAttribute(\"data-sr-added\")) {\n\t\tconst style = window.getComputedStyle(el);\n\t\tattr(el, \"data-sr-added\", getText(style, \"combobox-added\"));\n\t\tattr(el, \"data-sr-empty\", getText(style, \"combobox-empty\"));\n\t\tattr(el, \"data-sr-found\", getText(style, \"combobox-found\"));\n\t\tattr(el, \"data-sr-invalid\", getText(style, \"combobox-invalid\"));\n\t\tattr(el, \"data-sr-of\", getText(style, \"combobox-of\"));\n\t\tattr(el, \"data-sr-remove\", getText(style, \"combobox-remove\"));\n\t\tattr(el, \"data-sr-removed\", getText(style, \"combobox-removed\"));\n\t\tattr(list, \"data-sr-plural\", getText(style, \"datalist-plural\"));\n\t\tattr(list, \"data-sr-singular\", getText(style, \"datalist-singular\"));\n\t\tattr(list, \"popover\", \"manual\");\n\t\tattr(control, \"popovertarget\", useId(list));\n\t}\n}\n\nfunction renderCounter(input: HTMLInputElement) {\n\tconst el = input?.nextElementSibling;\n\tconst limit = el && attr(el, \"data-count\");\n\n\tif (el && limit) {\n\t\tconst remainder = Number(limit) - input.value.length;\n\t\tconst nextInvalid = remainder < 0;\n\t\tconst prevInvalid = attr(el, \"aria-live\") === \"polite\";\n\t\tconst style = window.getComputedStyle(el || input);\n\t\tconst over = getText(style, \"count-over\");\n\t\tconst under = getText(style, \"count-under\");\n\n\t\tif (prevInvalid !== nextInvalid) {\n\t\t\tattr(el, \"aria-live\", nextInvalid ? \"polite\" : \"off\");\n\t\t\tfor (const css of CSS_VALIDATIONS) el.classList.toggle(css, nextInvalid);\n\t\t}\n\t\tel.textContent = (nextInvalid ? over : under).replace(\n\t\t\t\"%d\",\n\t\t\t`${Math.abs(remainder)}`,\n\t\t);\n\t}\n}\n\nfunction handleToggle({ target: el, newState }: Event & { newState?: string }) {\n\tif (el instanceof UHTMLDataListElement) {\n\t\tconst root = el.getRootNode() as ShadowRoot | null;\n\t\tconst anchor = root?.querySelector<HTMLElement>(\n\t\t\t`[popovertarget=\"${el.id}\"]`,\n\t\t);\n\n\t\tif (newState === \"closed\") anchorPosition(el, false);\n\t\telse if (anchor) {\n\t\t\tel.style.width = `${anchor.clientWidth}px`;\n\t\t\tanchorPosition(el, anchor, attr(el, \"data-position\") ?? \"bottom\", true);\n\t\t}\n\t}\n}\n// Update when typing\nfunction handleInput({ target: el }: Event) {\n\tif (isInputLike(el)) {\n\t\trenderCounter(el);\n\t\trenderTextareaSize(el);\n\n\t\t// Reposition list datalist // TODO Enhance by using style.bottom?\n\t\tconst list = el.hasAttribute(\"list\") && el.list;\n\t\tif (list)\n\t\t\tsetTimeout(() => {\n\t\t\t\tanchorPosition(list, el, attr(list, \"data-position\") ?? \"bottom\", true);\n\t\t\t}, 10);\n\t}\n}\n\nfunction handleValdiation(event: Event) {\n\tconst field = (event.target as Element)?.closest?.(`.${CSS_FIELD}`);\n\n\tif (event.type === \"invalid\" && field) event.preventDefault(); // Prevent browsers from showing default validation bubbles\n\thandleMutation(document.getElementsByClassName(CSS_FIELD), true); // Update state\n}\n\n// Position combobox when changing content\nfunction handleSelect({ target: el }: Event) {\n\tconst list = el instanceof UHTMLComboboxElement && el.list;\n\tif (list && !list?.hidden)\n\t\tsetTimeout(() => anchorPosition(list, el, 2, true), 10); // Reposition list if not hidden\n}\n\nonLoaded(() => {\n\tonMutation(document.documentElement, CSS_FIELD, handleMutation);\n\ton(document, \"comboboxbeforeselect\", handleSelect, QUICK_EVENT);\n\ton(document, \"input\", handleInput, QUICK_EVENT);\n\ton(document, \"invalid,submit\", handleValdiation, true); // Use capture as invalid and submit does not bubble\n\ton(document, \"toggle\", handleToggle, QUICK_EVENT); // Use capture since toggle does not bubble\n});\n"],"names":["CSS_FIELD","styles","CSS_VALIDATIONS","CSS_VALIDATION","getText","style","key","handleMutation","fields","validate","field","labels","descs","valids","combobox","input","valid","el","UHTMLComboboxElement","isInputLike","attr","desc","label","useId","renderCombobox","renderCounter","renderTextareaSize","textarea","control","list","limit","remainder","nextInvalid","prevInvalid","over","under","css","handleToggle","newState","UHTMLDataListElement","anchor","anchorPosition","handleInput","handleValdiation","event","handleSelect","onLoaded","onMutation","on","QUICK_EVENT"],"mappings":"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"}
|
package/mtds/field/field.d.ts
CHANGED
|
@@ -37,6 +37,8 @@ export type FieldComboboxProps = ReactUcombobox & {
|
|
|
37
37
|
"data-nofilter"?: boolean;
|
|
38
38
|
onAfterChange?: (e: CustomEvent<HTMLDataElement>) => void;
|
|
39
39
|
onBeforeChange?: (e: CustomEvent<HTMLDataElement>) => void;
|
|
40
|
+
onAfterSelect?: (e: CustomEvent<HTMLDataElement>) => void;
|
|
41
|
+
onBeforeSelect?: (e: CustomEvent<HTMLDataElement>) => void;
|
|
40
42
|
onBeforeMatch?: (e: CustomEvent<HTMLOptionElement>) => void;
|
|
41
43
|
onSelectedChange?: (selected: FieldComboboxSelected) => void;
|
|
42
44
|
disabled?: boolean;
|