@mattilsynet/design 2.1.1 → 2.1.3
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/analytics/analytics.js.map +1 -1
- package/mtds/app/app-observer.js +5 -5
- package/mtds/app/app-observer.js.map +1 -1
- package/mtds/app/app-toggle.js.map +1 -1
- package/mtds/app/app-toggle2.js.map +1 -1
- package/mtds/app/app.js.map +1 -1
- package/mtds/avatar/avatar.js.map +1 -1
- package/mtds/badge/badge.js.map +1 -1
- package/mtds/breadcrumbs/breadcrumbs-observer.js +8 -4
- package/mtds/breadcrumbs/breadcrumbs-observer.js.map +1 -1
- package/mtds/breadcrumbs/breadcrumbs.js.map +1 -1
- package/mtds/button/button.js.map +1 -1
- package/mtds/card/card.js.map +1 -1
- package/mtds/chip/chip.js.map +1 -1
- package/mtds/details/details.js.map +1 -1
- package/mtds/dialog/dialog-observer.js +7 -3
- package/mtds/dialog/dialog-observer.js.map +1 -1
- package/mtds/dialog/dialog.js.map +1 -1
- package/mtds/dialog/dialog.stories.d.ts +1 -0
- package/mtds/divider/divider.js.map +1 -1
- package/mtds/errorsummary/errorsummary-observer.js +6 -4
- package/mtds/errorsummary/errorsummary-observer.js.map +1 -1
- package/mtds/errorsummary/errorsummary.js.map +1 -1
- package/mtds/external/@floating-ui/core/dist/floating-ui.core.js +342 -0
- package/mtds/external/@floating-ui/core/dist/floating-ui.core.js.map +1 -0
- package/mtds/external/@floating-ui/dom/dist/floating-ui.dom.js +397 -0
- package/mtds/external/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -0
- package/mtds/external/@floating-ui/utils/dist/floating-ui.utils.dom.js +137 -0
- package/mtds/external/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -0
- package/mtds/external/@floating-ui/utils/dist/floating-ui.utils.js +130 -0
- package/mtds/external/@floating-ui/utils/dist/floating-ui.utils.js.map +1 -0
- 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.map +1 -1
- package/mtds/external/@u-elements/u-details/dist/u-details.js +27 -28
- package/mtds/external/@u-elements/u-details/dist/u-details.js.map +1 -1
- package/mtds/external/@u-elements/u-progress/dist/u-progress.js.map +1 -1
- package/mtds/external/@u-elements/u-tabs/dist/u-tabs.js.map +1 -1
- package/mtds/field/field-observer.js +54 -48
- package/mtds/field/field-observer.js.map +1 -1
- package/mtds/field/field.d.ts +3 -3
- package/mtds/field/field.js.map +1 -1
- package/mtds/fieldset/fieldset-observer.js +4 -4
- package/mtds/fieldset/fieldset-observer.js.map +1 -1
- package/mtds/fieldset/fieldset.js.map +1 -1
- package/mtds/helptext/helptext.js.map +1 -1
- package/mtds/index.iife.js +7 -7
- package/mtds/input/input.js.map +1 -1
- package/mtds/layout/layout.js.map +1 -1
- package/mtds/link/link.js.map +1 -1
- package/mtds/logo/logo-observer.js +4 -2
- package/mtds/logo/logo-observer.js.map +1 -1
- package/mtds/logo/logo.js.map +1 -1
- package/mtds/package.json.js +1 -1
- package/mtds/pagination/pagination-helper.js.map +1 -1
- package/mtds/pagination/pagination.js.map +1 -1
- package/mtds/popover/popover-observer.js +21 -14
- package/mtds/popover/popover-observer.js.map +1 -1
- package/mtds/popover/popover.d.ts +2 -2
- package/mtds/popover/popover.js.map +1 -1
- package/mtds/progress/progress.js.map +1 -1
- package/mtds/skeleton/skeleton.js.map +1 -1
- package/mtds/spinner/spinner.js.map +1 -1
- package/mtds/steps/steps.js.map +1 -1
- package/mtds/styles.css +1 -1
- package/mtds/styles.json +20 -20
- package/mtds/styles.module.css.js +86 -84
- package/mtds/styles.module.css.js.map +1 -1
- package/mtds/table/table-observer.js +10 -8
- package/mtds/table/table-observer.js.map +1 -1
- package/mtds/table/table.js.map +1 -1
- package/mtds/tabs/tabs.js.map +1 -1
- package/mtds/tag/tag.js.map +1 -1
- package/mtds/tailwind.css +1 -0
- package/mtds/togglegroup/togglegroup-observer.js +8 -8
- package/mtds/togglegroup/togglegroup-observer.js.map +1 -1
- package/mtds/togglegroup/togglegroup.js.map +1 -1
- package/mtds/tooltip/tooltip-observer.js +14 -10
- package/mtds/tooltip/tooltip-observer.js.map +1 -1
- package/mtds/typography/typography.js.map +1 -1
- package/mtds/utils.d.ts +2 -14
- package/mtds/utils.js +60 -71
- package/mtds/utils.js.map +1 -1
- package/mtds/validation/validation.js.map +1 -1
- package/package.json +13 -12
- package/mtds/toast/toast-observer.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"u-details.js","sources":["../../../../../node_modules/@u-elements/u-details/dist/u-details.js"],"sourcesContent":["// ../utils.ts\nvar IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\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 DISPLAY_BLOCK = \":host(:not([hidden])) { display: block }\";\nvar UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nfunction attr(el, name, value) {\n
|
|
1
|
+
{"version":3,"file":"u-details.js","sources":["../../../../../node_modules/@u-elements/u-details/dist/u-details.js"],"sourcesContent":["// ../utils.ts\nvar IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\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 DISPLAY_BLOCK = \":host(:not([hidden])) { display: block }\";\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 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 createElement = (tagName, text, attrs) => {\n const el = document.createElement(tagName);\n if (text) el.textContent = text;\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};\n\n// u-details.ts\nvar UHTMLDetailsElement = class extends UHTMLElement {\n constructor() {\n super();\n // Using underscore instead of private fields for backwards compatibility\n this._content = null;\n this.attachShadow({ mode: \"open\" }).append(\n createElement(\"slot\", null, { name: \"summary\" }),\n createElement(\"slot\", null, { part: \"details-content\" }),\n createElement(\n \"style\",\n `${DISPLAY_BLOCK}\n ::slotted(u-summary) { cursor: pointer; display: block }\n\t\t\t\t::slotted(u-summary)::before { content: ''; display: inline-block; vertical-align: middle; margin-inline: .05em .3125em; border-block: .3125em solid transparent; border-inline-start: .5em solid }\n\t\t\t\t::slotted(u-summary[aria-expanded=\"true\"])::before { rotate: 90deg }\n\t\t\t\t:host > [part=\"details-content\"]:not([hidden=\"\"]) { display: block }`\n )\n );\n }\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return [\"open\"];\n }\n connectedCallback() {\n var _a2;\n this._content = (_a2 = this.shadowRoot) == null ? void 0 : _a2.children[1];\n attr(this, \"role\", \"group\");\n on(this._content, \"beforematch\", this);\n on(this, \"click,keydown\", this);\n this.attributeChangedCallback();\n }\n disconnectedCallback() {\n if (this._content) off(this._content, \"beforematch\", this);\n off(this, \"click,keydown\", this);\n this._content = null;\n }\n attributeChangedCallback(prop, prev, next) {\n const hide = \"onbeforematch\" in this ? \"until-found\" : true;\n const open = this.open;\n for (const el of this.children)\n if (el.nodeName === \"U-SUMMARY\") attr(el, \"aria-expanded\", `${open}`);\n if (this._content) {\n attr(this._content, \"aria-hidden\", `${!open}`);\n this._content.hidden = open ? false : hide;\n }\n if (open && this.name) {\n const uDetailsList = getRoot(this).querySelectorAll(\n `${this.nodeName}[name=\"${this.name}\"]`\n );\n for (const uDetails of uDetailsList)\n if (uDetails !== this) uDetails.open = false;\n }\n if (prop === \"open\" && prev === null !== (next === null))\n this.dispatchEvent(new Event(\"toggle\"));\n }\n handleEvent(event) {\n const summary = this.querySelector(\":scope > u-summary\");\n const isSummary = summary == null ? void 0 : summary.contains(event.target);\n if (event.defaultPrevented) return;\n if (event.type === \"beforematch\") this.open = true;\n if (isSummary && event.type === \"keydown\") asButton(event);\n if (isSummary && event.type === \"click\") this.open = !this.open;\n }\n get open() {\n return this.hasAttribute(\"open\");\n }\n set open(value) {\n attr(this, \"open\", value ? \"\" : null);\n }\n get name() {\n return attr(this, \"name\") || \"\";\n }\n set name(value) {\n attr(this, \"name\", value);\n }\n};\nvar UHTMLSummaryElement = class extends UHTMLElement {\n connectedCallback() {\n attr(this, \"role\", \"button\");\n this.slot = \"summary\";\n this.tabIndex = 0;\n }\n};\ncustomElements.define(\"u-details\", UHTMLDetailsElement);\ncustomElements.define(\"u-summary\", UHTMLSummaryElement);\n\nexport { UHTMLDetailsElement, UHTMLSummaryElement };\n"],"names":["IS_BROWSER","_a","DISPLAY_BLOCK","UHTMLElement","attr","el","name","value","events","action","element","rest","type","on","off","asButton","event","isClick","getRoot","node","_a2","root","createElement","tagName","text","attrs","key","val","customElements","instance","UHTMLDetailsElement","prop","prev","next","hide","open","uDetailsList","uDetails","summary","isSummary","UHTMLSummaryElement"],"mappings":"AACA,IAAIA,IAAa,OAAO,SAAW,OAAe,OAAO,OAAO,WAAa,OAAe,OAAO,OAAO,YAAc,KACpHC;AACJD;AACA,QAAQ,OAAOC,IAAK,UAAU,kBAAkB,OAAO,SAASA,EAAG,aAAa,UAAU,QAAQ;AAClG,IAAIC,IAAgB,4CAChBC,IAAe,OAAO,cAAgB,MAAc,MAAM;AAC9D,IAAI;AACJ,SAASC,EAAKC,GAAIC,GAAMC,GAAO;AAC7B,SAAIA,MAAU,SAAeF,EAAG,aAAaC,CAAI,KAC7CC,MAAU,OAAMF,EAAG,gBAAgBC,CAAI,IAClCD,EAAG,aAAaC,CAAI,MAAMC,KAAOF,EAAG,aAAaC,GAAMC,CAAK,GAC9D;AACT;AACA,IAAIC,IAAS,CAACC,GAAQC,GAASC,MAAS;AACtC,aAAWC,KAAQD,EAAK,CAAC,EAAE,MAAM,GAAG;AAClC,IAAAA,EAAK,CAAC,IAAIC,GACV,QAAQ,UAAU,GAAGH,CAAM,eAAe,EAAE,MAAMC,GAASC,CAAI;AAEnE,GACIE,IAAK,CAACH,MAAYC,MAASH,EAAO,OAAOE,GAASC,CAAI,GACtDG,IAAM,CAACJ,MAAYC,MAASH,EAAO,UAAUE,GAASC,CAAI,GAC1DI,IAAW,CAACC,MAAU;AACxB,QAAMC,IAAU,SAASD,MAAUA,EAAM,QAAQ,OAAOA,EAAM,QAAQ;AACtE,SAAIC,KAASD,EAAM,eAAc,GAC7BC,KAAWD,EAAM,kBAAkB,eAAaA,EAAM,OAAO,MAAK,GAC/DC;AACT,GACIC,IAAU,CAACC,MAAS;AACtB,MAAIC;AACJ,QAAMC,MAASD,IAAMD,EAAK,gBAAgB,OAAO,SAASC,EAAI,KAAKD,CAAI,MAAMA,EAAK;AAClF,SAAOE,aAAgB,YAAYA,aAAgB,aAAaA,IAAO;AACzE,GACIC,IAAgB,CAACC,GAASC,GAAMC,MAAU;AAC5C,QAAMpB,IAAK,SAAS,cAAckB,CAAO;AAEzC,MADIC,MAAMnB,EAAG,cAAcmB,IACvBC,EAAO,YAAW,CAACC,GAAKC,CAAG,KAAK,OAAO,QAAQF,CAAK,EAAG,CAAArB,EAAKC,GAAIqB,GAAKC,CAAG;AAC5E,SAAOtB;AACT,GACIuB,IAAiB;AAAA,EACnB,QAAQ,CAACtB,GAAMuB,MAAa,CAAC7B,KAAc,OAAO,eAAe,IAAIM,CAAI,KAAK,OAAO,eAAe,OAAOA,GAAMuB,CAAQ;AAC3H,GAGIC,IAAsB,cAAc3B,EAAa;AAAA,EACnD,cAAc;AACZ,UAAK,GAEL,KAAK,WAAW,MAChB,KAAK,aAAa,EAAE,MAAM,OAAM,CAAE,EAAE;AAAA,MAClCmB,EAAc,QAAQ,MAAM,EAAE,MAAM,UAAS,CAAE;AAAA,MAC/CA,EAAc,QAAQ,MAAM,EAAE,MAAM,kBAAiB,CAAE;AAAA,MACvDA;AAAA,QACE;AAAA,QACA,GAAGpB,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA,MAKxB;AAAA,IACA;AAAA,EACE;AAAA;AAAA,EAEA,WAAW,qBAAqB;AAC9B,WAAO,CAAC,MAAM;AAAA,EAChB;AAAA,EACA,oBAAoB;AAClB,QAAIkB;AACJ,SAAK,YAAYA,IAAM,KAAK,eAAe,OAAO,SAASA,EAAI,SAAS,CAAC,GACzEhB,EAAK,MAAM,QAAQ,OAAO,GAC1BS,EAAG,KAAK,UAAU,eAAe,IAAI,GACrCA,EAAG,MAAM,iBAAiB,IAAI,GAC9B,KAAK,yBAAwB;AAAA,EAC/B;AAAA,EACA,uBAAuB;AACrB,IAAI,KAAK,YAAUC,EAAI,KAAK,UAAU,eAAe,IAAI,GACzDA,EAAI,MAAM,iBAAiB,IAAI,GAC/B,KAAK,WAAW;AAAA,EAClB;AAAA,EACA,yBAAyBiB,GAAMC,GAAMC,GAAM;AACzC,UAAMC,IAAO,mBAAmB,OAAO,gBAAgB,IACjDC,IAAO,KAAK;AAClB,eAAW9B,KAAM,KAAK;AACpB,MAAIA,EAAG,aAAa,eAAaD,EAAKC,GAAI,iBAAiB,GAAG8B,CAAI,EAAE;AAKtE,QAJI,KAAK,aACP/B,EAAK,KAAK,UAAU,eAAe,GAAG,CAAC+B,CAAI,EAAE,GAC7C,KAAK,SAAS,SAASA,IAAO,KAAQD,IAEpCC,KAAQ,KAAK,MAAM;AACrB,YAAMC,IAAelB,EAAQ,IAAI,EAAE;AAAA,QACjC,GAAG,KAAK,QAAQ,UAAU,KAAK,IAAI;AAAA,MAC3C;AACM,iBAAWmB,KAAYD;AACrB,QAAIC,MAAa,SAAMA,EAAS,OAAO;AAAA,IAC3C;AACA,IAAIN,MAAS,UAAUC,MAAS,SAAUC,MAAS,SACjD,KAAK,cAAc,IAAI,MAAM,QAAQ,CAAC;AAAA,EAC1C;AAAA,EACA,YAAYjB,GAAO;AACjB,UAAMsB,IAAU,KAAK,cAAc,oBAAoB,GACjDC,IAAuCD,GAAQ,SAAStB,EAAM,MAAM;AAC1E,IAAIA,EAAM,qBACNA,EAAM,SAAS,kBAAe,KAAK,OAAO,KAC1CuB,KAAavB,EAAM,SAAS,aAAWD,EAASC,CAAK,GACrDuB,KAAavB,EAAM,SAAS,YAAS,KAAK,OAAO,CAAC,KAAK;AAAA,EAC7D;AAAA,EACA,IAAI,OAAO;AACT,WAAO,KAAK,aAAa,MAAM;AAAA,EACjC;AAAA,EACA,IAAI,KAAKT,GAAO;AACd,IAAAH,EAAK,MAAM,QAAQG,IAAQ,KAAK,IAAI;AAAA,EACtC;AAAA,EACA,IAAI,OAAO;AACT,WAAOH,EAAK,MAAM,MAAM,KAAK;AAAA,EAC/B;AAAA,EACA,IAAI,KAAKG,GAAO;AACd,IAAAH,EAAK,MAAM,QAAQG,CAAK;AAAA,EAC1B;AACF,GACIiC,IAAsB,cAAcrC,EAAa;AAAA,EACnD,oBAAoB;AAClB,IAAAC,EAAK,MAAM,QAAQ,QAAQ,GAC3B,KAAK,OAAO,WACZ,KAAK,WAAW;AAAA,EAClB;AACF;AACAwB,EAAe,OAAO,aAAaE,CAAmB;AACtDF,EAAe,OAAO,aAAaY,CAAmB;","x_google_ignoreList":[0]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"u-progress.js","sources":["../../../../../node_modules/@u-elements/u-progress/dist/u-progress.js"],"sourcesContent":["// ../utils.ts\nvar IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\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 UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nfunction attr(el, name, value) {\n var _a2;\n if (value === void 0) return (_a2 = el.getAttribute(name)) != null ? _a2 : null;\n if (value === null) el.removeAttribute(name);\n else if (el.getAttribute(name) !== value) el.setAttribute(name, value);\n return null;\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 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 getLabel = (el) => {\n var _a2;\n const root = getRoot(el);\n const label = attr(el, \"aria-label\") || \"\";\n const labels = ((_a2 = attr(el, \"aria-labelledby\")) == null ? void 0 : _a2.trim().split(/\\s+/)) || [];\n return [\n ...labels.map((id2) => root == null ? void 0 : root.querySelector(`[id=\"${id2}\"]`)),\n // Get all labelledby elements\n ...Array.from(el.labels || [])\n // Get all <label> elements\n ].reduce((acc, el2) => {\n var _a3;\n return acc || ((_a3 = el2 == null ? void 0 : el2.innerText) == null ? void 0 : _a3.trim()) || \"\";\n }, label);\n};\n\n// u-progress.ts\nvar SKIP_ATTR_CHANGE = false;\nvar UHTMLProgressElement = class extends UHTMLElement {\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return [\"aria-label\", \"aria-labelledby\", \"value\", \"max\"];\n }\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" }).append(\n createElement(\"slot\", null, { hidden: \"\" }),\n // Slot hiding content allows legacy browser to display fallback text\n createElement(\n \"style\",\n `:host(:not([hidden])) { box-sizing: border-box; border: 1px solid; display: inline-block; height: .5em; width: 10em; overflow: hidden }\n :host::before { content: ''; display: block; height: 100%; background: currentColor; width: var(--percentage, 0%); transition: width .2s }\n :host(:not([value])) { background: linear-gradient(90deg,currentColor 25%, transparent 50%, currentColor 75%) 50%/400% }\n @media (prefers-reduced-motion: no-preference) { :host { animation: indeterminate 2s linear infinite } }\n @keyframes indeterminate { from { background-position-x: 100% } to { background-position-x: 0 } }`\n )\n );\n }\n connectedCallback() {\n this.attributeChangedCallback();\n }\n attributeChangedCallback() {\n if (SKIP_ATTR_CHANGE) return;\n SKIP_ATTR_CHANGE = true;\n const roleImage = IS_IOS || IS_FIREFOX;\n const percentage = Math.max(0, Math.round(this.position * 100));\n this.style.setProperty(\"--percentage\", `${percentage}%`);\n let label = getLabel(this);\n if (roleImage) label = `${label.replace(/\\d+%$/, \"\")} ${percentage}%`;\n if (IS_FIREFOX) for (const el of this.labels) attr(el, \"aria-label\", label);\n attr(this, \"aria-busy\", `${this.position === -1}`);\n attr(this, \"aria-label\", label.trim());\n attr(this, \"aria-labelledby\", null);\n attr(this, \"aria-valuemax\", \"100\");\n attr(this, \"aria-valuemin\", \"0\");\n attr(this, \"aria-valuenow\", `${percentage}`);\n attr(this, \"role\", roleImage ? \"img\" : \"progressbar\");\n SKIP_ATTR_CHANGE = false;\n }\n get labels() {\n const label = this.closest(\"label:not([for])\");\n const id2 = useId(this);\n if (label) label.htmlFor = id2;\n const el = getRoot(this).querySelectorAll(\n `label[for=\"${id2}\"]`\n );\n return el;\n }\n get position() {\n return this.value === null ? -1 : Math.min(this.value / this.max, 1);\n }\n get value() {\n return getNumber(this, \"value\");\n }\n set value(value) {\n setNumber(this, \"value\", value);\n }\n get max() {\n return getNumber(this, \"max\") || 1;\n }\n set max(max) {\n setNumber(this, \"max\", max);\n }\n};\n// Prevent Chrome DevTools warning about <label for=\"\"> pointing to <u-progress>\nUHTMLProgressElement.formAssociated = true;\nvar isNumeric = (value) => !Number.isNaN(Number.parseFloat(`${value}`)) && Number.isFinite(Number(value));\nvar getNumber = (el, key) => {\n const value = attr(el, key);\n return isNumeric(value) ? Math.max(0, Number.parseFloat(value)) : null;\n};\nvar setNumber = (el, key, val) => {\n if (val === null || isNumeric(val)) attr(el, key, `${val}`);\n else throw new Error(`Failed to set non-numeric '${attr}': '${val}'`);\n};\ncustomElements.define(\"u-progress\", UHTMLProgressElement);\n\nexport { UHTMLProgressElement };\n"],"names":["IS_BROWSER","IS_FIREFOX","IS_IOS","_a","UHTMLElement","attr","el","name","value","_a2","getRoot","node","root","id","useId","createElement","tagName","text","attrs","key","val","customElements","instance","getLabel","label","id2","acc","el2","_a3","SKIP_ATTR_CHANGE","UHTMLProgressElement","roleImage","percentage","getNumber","setNumber","max","isNumeric"],"mappings":"AACA,IAAIA,IAAa,OAAO,SAAW,OAAe,OAAO,OAAO,WAAa,OAAe,OAAO,OAAO,YAAc,KACpHC,IAAaD,KAAc,WAAW,KAAK,UAAU,SAAS,GAC9DE,IAASF,KAAc,mBAAmB,KAAK,UAAU,SAAS,GAClEG;AACJH;AACA,QAAQ,OAAOG,IAAK,UAAU,kBAAkB,OAAO,SAASA,EAAG,aAAa,UAAU,QAAQ;AAClG,IAAIC,IAAe,OAAO,cAAgB,MAAc,MAAM;AAC9D,IAAI;AACJ,SAASC,EAAKC,GAAIC,GAAMC,GAAO;AAC7B,MAAIC;AACJ,SAAID,MAAU,UAAgBC,IAAMH,EAAG,aAAaC,CAAI,MAAM,OAAOE,IAAM,QACvED,MAAU,OAAMF,EAAG,gBAAgBC,CAAI,IAClCD,EAAG,aAAaC,CAAI,MAAMC,KAAOF,EAAG,aAAaC,GAAMC,CAAK,GAC9D;AACT;AACA,IAAIE,IAAU,CAACC,MAAS;AACtB,MAAIF;AACJ,QAAMG,MAASH,IAAME,EAAK,gBAAgB,OAAO,SAASF,EAAI,KAAKE,CAAI,MAAMA,EAAK;AAClF,SAAOC,aAAgB,YAAYA,aAAgB,aAAaA,IAAO;AACzE,GACIC,IAAK,GACLC,IAAQ,CAACR,MACNA,KACAA,EAAG,OAAIA,EAAG,KAAK,IAAIA,EAAG,SAAS,YAAW,CAAE,IAAI,EAAEO,GAAI,SAAS,EAAE,CAAC,KAChEP,EAAG,MAFM,IAIdS,IAAgB,CAACC,GAASC,GAAMC,MAAU;AAC5C,QAAMZ,IAAK,SAAS,cAAcU,CAAO;AAEzC,MADIC,MAAMX,EAAG,cAAcW,IACvBC,EAAO,YAAW,CAACC,GAAKC,CAAG,KAAK,OAAO,QAAQF,CAAK,EAAG,CAAAb,EAAKC,GAAIa,GAAKC,CAAG;AAC5E,SAAOd;AACT,GACIe,IAAiB;AAAA,EACnB,QAAQ,CAACd,GAAMe,MAAa,CAACtB,KAAc,OAAO,eAAe,IAAIO,CAAI,KAAK,OAAO,eAAe,OAAOA,GAAMe,CAAQ;AAC3H,GACIC,IAAW,CAACjB,MAAO;AACrB,MAAIG;AACJ,QAAMG,IAAOF,EAAQJ,CAAE,GACjBkB,IAAQnB,EAAKC,GAAI,YAAY,KAAK;AAExC,SAAO;AAAA,IACL,MAFeG,IAAMJ,EAAKC,GAAI,iBAAiB,MAAM,OAAO,SAASG,EAAI,KAAI,EAAG,MAAM,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"u-progress.js","sources":["../../../../../node_modules/@u-elements/u-progress/dist/u-progress.js"],"sourcesContent":["// ../utils.ts\nvar IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\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 UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nfunction attr(el, name, value) {\n var _a2;\n if (value === void 0) return (_a2 = el.getAttribute(name)) != null ? _a2 : null;\n if (value === null) el.removeAttribute(name);\n else if (el.getAttribute(name) !== value) el.setAttribute(name, value);\n return null;\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 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 getLabel = (el) => {\n var _a2;\n const root = getRoot(el);\n const label = attr(el, \"aria-label\") || \"\";\n const labels = ((_a2 = attr(el, \"aria-labelledby\")) == null ? void 0 : _a2.trim().split(/\\s+/)) || [];\n return [\n ...labels.map((id2) => root == null ? void 0 : root.querySelector(`[id=\"${id2}\"]`)),\n // Get all labelledby elements\n ...Array.from(el.labels || [])\n // Get all <label> elements\n ].reduce((acc, el2) => {\n var _a3;\n return acc || ((_a3 = el2 == null ? void 0 : el2.innerText) == null ? void 0 : _a3.trim()) || \"\";\n }, label);\n};\n\n// u-progress.ts\nvar SKIP_ATTR_CHANGE = false;\nvar UHTMLProgressElement = class extends UHTMLElement {\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return [\"aria-label\", \"aria-labelledby\", \"value\", \"max\"];\n }\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" }).append(\n createElement(\"slot\", null, { hidden: \"\" }),\n // Slot hiding content allows legacy browser to display fallback text\n createElement(\n \"style\",\n `:host(:not([hidden])) { box-sizing: border-box; border: 1px solid; display: inline-block; height: .5em; width: 10em; overflow: hidden }\n :host::before { content: ''; display: block; height: 100%; background: currentColor; width: var(--percentage, 0%); transition: width .2s }\n :host(:not([value])) { background: linear-gradient(90deg,currentColor 25%, transparent 50%, currentColor 75%) 50%/400% }\n @media (prefers-reduced-motion: no-preference) { :host { animation: indeterminate 2s linear infinite } }\n @keyframes indeterminate { from { background-position-x: 100% } to { background-position-x: 0 } }`\n )\n );\n }\n connectedCallback() {\n this.attributeChangedCallback();\n }\n attributeChangedCallback() {\n if (SKIP_ATTR_CHANGE) return;\n SKIP_ATTR_CHANGE = true;\n const roleImage = IS_IOS || IS_FIREFOX;\n const percentage = Math.max(0, Math.round(this.position * 100));\n this.style.setProperty(\"--percentage\", `${percentage}%`);\n let label = getLabel(this);\n if (roleImage) label = `${label.replace(/\\d+%$/, \"\")} ${percentage}%`;\n if (IS_FIREFOX) for (const el of this.labels) attr(el, \"aria-label\", label);\n attr(this, \"aria-busy\", `${this.position === -1}`);\n attr(this, \"aria-label\", label.trim());\n attr(this, \"aria-labelledby\", null);\n attr(this, \"aria-valuemax\", \"100\");\n attr(this, \"aria-valuemin\", \"0\");\n attr(this, \"aria-valuenow\", `${percentage}`);\n attr(this, \"role\", roleImage ? \"img\" : \"progressbar\");\n SKIP_ATTR_CHANGE = false;\n }\n get labels() {\n const label = this.closest(\"label:not([for])\");\n const id2 = useId(this);\n if (label) label.htmlFor = id2;\n const el = getRoot(this).querySelectorAll(\n `label[for=\"${id2}\"]`\n );\n return el;\n }\n get position() {\n return this.value === null ? -1 : Math.min(this.value / this.max, 1);\n }\n get value() {\n return getNumber(this, \"value\");\n }\n set value(value) {\n setNumber(this, \"value\", value);\n }\n get max() {\n return getNumber(this, \"max\") || 1;\n }\n set max(max) {\n setNumber(this, \"max\", max);\n }\n};\n// Prevent Chrome DevTools warning about <label for=\"\"> pointing to <u-progress>\nUHTMLProgressElement.formAssociated = true;\nvar isNumeric = (value) => !Number.isNaN(Number.parseFloat(`${value}`)) && Number.isFinite(Number(value));\nvar getNumber = (el, key) => {\n const value = attr(el, key);\n return isNumeric(value) ? Math.max(0, Number.parseFloat(value)) : null;\n};\nvar setNumber = (el, key, val) => {\n if (val === null || isNumeric(val)) attr(el, key, `${val}`);\n else throw new Error(`Failed to set non-numeric '${attr}': '${val}'`);\n};\ncustomElements.define(\"u-progress\", UHTMLProgressElement);\n\nexport { UHTMLProgressElement };\n"],"names":["IS_BROWSER","IS_FIREFOX","IS_IOS","_a","UHTMLElement","attr","el","name","value","_a2","getRoot","node","root","id","useId","createElement","tagName","text","attrs","key","val","customElements","instance","getLabel","label","id2","acc","el2","_a3","SKIP_ATTR_CHANGE","UHTMLProgressElement","roleImage","percentage","getNumber","setNumber","max","isNumeric"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"u-tabs.js","sources":["../../../../../node_modules/@u-elements/u-tabs/dist/u-tabs.js"],"sourcesContent":["// ../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 _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 UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nfunction attr(el, name, value) {\n var _a2;\n if (value === void 0) return (_a2 = el.getAttribute(name)) != null ? _a2 : null;\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 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, 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};\n\n// u-tabs.ts\nvar ARIA_CONTROLS = \"aria-controls\";\nvar ARIA_SELECTED = \"aria-selected\";\nvar UHTMLTabsElement = class extends UHTMLElement {\n constructor() {\n super();\n attachStyle(this, DISPLAY_BLOCK);\n }\n get tabList() {\n return queryWithoutNested(\"u-tablist\", this)[0] || null;\n }\n get selectedIndex() {\n return getSelectedIndex(this.tabs);\n }\n set selectedIndex(index) {\n setSelected(this.tabs[index]);\n }\n get tabs() {\n return queryWithoutNested(\"u-tab\", this);\n }\n get panels() {\n return queryWithoutNested(\"u-tabpanel\", this);\n }\n};\nvar UHTMLTabListElement = class extends UHTMLElement {\n constructor() {\n super();\n attachStyle(this, DISPLAY_BLOCK);\n }\n connectedCallback() {\n attr(this, \"role\", \"tablist\");\n on(this, \"click,keydown\", this);\n mutationObserver(this, { childList: true });\n if (this.tabs.length) this.handleEvent();\n }\n disconnectedCallback() {\n off(this, \"click,keydown\", this);\n mutationObserver(this, false);\n }\n handleEvent(event) {\n if (!event || event.type === \"mutation\") {\n const tab = this.tabs[Math.max(this.selectedIndex, 0)];\n return tab == null ? void 0 : tab.setAttribute(ARIA_SELECTED, \"true\");\n }\n const { key } = event;\n const tabs = [...this.tabs];\n const prev = tabs.findIndex((tab) => tab.contains(event.target));\n let next = prev;\n if (event.defaultPrevented || prev === -1) return;\n if (event.type === \"click\") setSelected(tabs[prev]);\n if (event.type === \"keydown\" && !asButton(event)) {\n if (key === \"ArrowDown\" || key === \"ArrowRight\")\n next = (prev + 1) % tabs.length;\n else if (key === \"ArrowUp\" || key === \"ArrowLeft\")\n next = (prev || tabs.length) - 1;\n else if (key === \"End\") next = tabs.length - 1;\n else if (key === \"Home\") next = 0;\n else if (key === \"Tab\") next = getSelectedIndex(tabs);\n else return;\n setTimeout(() => {\n tabs[prev].tabIndex = -1;\n tabs[next].tabIndex = 0;\n });\n if (key !== \"Tab\") {\n event.preventDefault();\n tabs[next].focus();\n }\n }\n }\n get tabsElement() {\n return this.closest(\"u-tabs\");\n }\n get tabs() {\n return this.querySelectorAll(\"u-tab\");\n }\n get selectedIndex() {\n return getSelectedIndex(this.tabs);\n }\n set selectedIndex(index) {\n setSelected(this.tabs[index]);\n }\n};\nvar SKIP_ATTR_CHANGE = false;\nvar UHTMLTabElement = class extends UHTMLElement {\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return [\"id\", ARIA_SELECTED, ARIA_CONTROLS];\n }\n constructor() {\n super();\n attachStyle(\n this,\n \":host(:not([hidden])) { cursor: pointer; display: inline-block }\"\n );\n }\n connectedCallback() {\n attr(this, \"role\", \"tab\");\n this.tabIndex = this.selected ? 0 : -1;\n }\n attributeChangedCallback() {\n if (!SKIP_ATTR_CHANGE && this.selected && this.tabList) {\n SKIP_ATTR_CHANGE = true;\n const tabs = [...this.tabList.querySelectorAll(\"u-tab\")];\n const panels = queryWithoutNested(\"u-tabpanel\", this.tabsElement || this);\n const nextPanel = getPanel(this, panels[tabs.indexOf(this)]);\n if (nextPanel) attr(nextPanel, SAFE_LABELLEDBY, useId(this));\n tabs.forEach((tab, index) => {\n const panel = getPanel(tab, panels[index]);\n tab.tabIndex = tab === this ? 0 : -1;\n attr(tab, ARIA_SELECTED, `${tab === this}`);\n if (panel) panel.hidden = panel !== nextPanel;\n if (panel) attr(tab, ARIA_CONTROLS, panel.id);\n });\n SKIP_ATTR_CHANGE = false;\n }\n }\n get tabsElement() {\n return this.closest(\"u-tabs\");\n }\n get tabList() {\n const tablist = this.parentElement;\n return (tablist == null ? void 0 : tablist.nodeName) === \"U-TABLIST\" ? tablist : null;\n }\n get selected() {\n return attr(this, ARIA_SELECTED) === \"true\";\n }\n set selected(value) {\n attr(this, ARIA_SELECTED, `${!!value}`);\n }\n /** Retrieves the ordinal position of an tab in a tablist. */\n get index() {\n const tabList = this.tabList;\n return tabList ? [...tabList.querySelectorAll(\"u-tab\")].indexOf(this) : 0;\n }\n get panel() {\n return getPanel(this);\n }\n};\nvar UHTMLTabPanelElement = class extends UHTMLElement {\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return [\"hidden\"];\n }\n constructor() {\n super();\n attachStyle(this, DISPLAY_BLOCK);\n }\n connectedCallback() {\n attr(this, \"role\", \"tabpanel\");\n this.hidden = getSelectedIndex(this.tabs) === -1;\n this.attributeChangedCallback();\n }\n attributeChangedCallback() {\n if (this.hidden || isFocusable(this.firstChild))\n attr(this, \"tabindex\", null);\n else this.tabIndex = 0;\n }\n get tabsElement() {\n return this.closest(\"u-tabs\");\n }\n get tabs() {\n const css = `u-tab[${ARIA_CONTROLS}=\"${this.id}\"]`;\n return getRoot(this).querySelectorAll(css);\n }\n};\nvar queryWithoutNested = (tag, self) => self.querySelectorAll(`${tag}:not(:scope u-tabpanel ${tag})`);\nvar getPanel = (tab, panel) => {\n const id2 = attr(tab, ARIA_CONTROLS) || useId(panel);\n const el = getRoot(tab).getElementById(id2);\n return (el == null ? void 0 : el.nodeName) === \"U-TABPANEL\" ? el : null;\n};\nvar getSelectedIndex = (tabs) => [...tabs].findIndex((tab) => attr(tab, ARIA_SELECTED) === \"true\");\nvar setSelected = (tab) => tab && attr(tab, \"aria-selected\", \"true\");\nvar isFocusable = (el) => el instanceof Element && !el.matches(':disabled,[tabindex^=\"-\"]') && el.matches(\n `[contenteditable],[controls],[href],[tabindex],input:not([type=\"hidden\"]),select,textarea,button,summary,iframe`\n);\ncustomElements.define(\"u-tabs\", UHTMLTabsElement);\ncustomElements.define(\"u-tablist\", UHTMLTabListElement);\ncustomElements.define(\"u-tab\", UHTMLTabElement);\ncustomElements.define(\"u-tabpanel\", UHTMLTabPanelElement);\n\nexport { UHTMLTabElement, UHTMLTabListElement, UHTMLTabPanelElement, UHTMLTabsElement };\n"],"names":["IS_BROWSER","IS_ANDROID","_a","SAFE_LABELLEDBY","DISPLAY_BLOCK","UHTMLElement","attr","el","name","value","_a2","events","action","element","rest","type","on","off","attachStyle","css","createElement","observers","mutationObserver","options","observer","detail","asButton","event","isClick","getRoot","node","root","id","useId","tagName","text","attrs","customElements","instance","ARIA_CONTROLS","ARIA_SELECTED","UHTMLTabsElement","queryWithoutNested","getSelectedIndex","index","setSelected","UHTMLTabListElement","tab","key","tabs","prev","next","SKIP_ATTR_CHANGE","UHTMLTabElement","panels","nextPanel","getPanel","panel","tablist","tabList","UHTMLTabPanelElement","isFocusable","tag","self","id2"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"u-tabs.js","sources":["../../../../../node_modules/@u-elements/u-tabs/dist/u-tabs.js"],"sourcesContent":["// ../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 _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 UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nfunction attr(el, name, value) {\n var _a2;\n if (value === void 0) return (_a2 = el.getAttribute(name)) != null ? _a2 : null;\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 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, 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};\n\n// u-tabs.ts\nvar ARIA_CONTROLS = \"aria-controls\";\nvar ARIA_SELECTED = \"aria-selected\";\nvar UHTMLTabsElement = class extends UHTMLElement {\n constructor() {\n super();\n attachStyle(this, DISPLAY_BLOCK);\n }\n get tabList() {\n return queryWithoutNested(\"u-tablist\", this)[0] || null;\n }\n get selectedIndex() {\n return getSelectedIndex(this.tabs);\n }\n set selectedIndex(index) {\n setSelected(this.tabs[index]);\n }\n get tabs() {\n return queryWithoutNested(\"u-tab\", this);\n }\n get panels() {\n return queryWithoutNested(\"u-tabpanel\", this);\n }\n};\nvar UHTMLTabListElement = class extends UHTMLElement {\n constructor() {\n super();\n attachStyle(this, DISPLAY_BLOCK);\n }\n connectedCallback() {\n attr(this, \"role\", \"tablist\");\n on(this, \"click,keydown\", this);\n mutationObserver(this, { childList: true });\n if (this.tabs.length) this.handleEvent();\n }\n disconnectedCallback() {\n off(this, \"click,keydown\", this);\n mutationObserver(this, false);\n }\n handleEvent(event) {\n if (!event || event.type === \"mutation\") {\n const tab = this.tabs[Math.max(this.selectedIndex, 0)];\n return tab == null ? void 0 : tab.setAttribute(ARIA_SELECTED, \"true\");\n }\n const { key } = event;\n const tabs = [...this.tabs];\n const prev = tabs.findIndex((tab) => tab.contains(event.target));\n let next = prev;\n if (event.defaultPrevented || prev === -1) return;\n if (event.type === \"click\") setSelected(tabs[prev]);\n if (event.type === \"keydown\" && !asButton(event)) {\n if (key === \"ArrowDown\" || key === \"ArrowRight\")\n next = (prev + 1) % tabs.length;\n else if (key === \"ArrowUp\" || key === \"ArrowLeft\")\n next = (prev || tabs.length) - 1;\n else if (key === \"End\") next = tabs.length - 1;\n else if (key === \"Home\") next = 0;\n else if (key === \"Tab\") next = getSelectedIndex(tabs);\n else return;\n setTimeout(() => {\n tabs[prev].tabIndex = -1;\n tabs[next].tabIndex = 0;\n });\n if (key !== \"Tab\") {\n event.preventDefault();\n tabs[next].focus();\n }\n }\n }\n get tabsElement() {\n return this.closest(\"u-tabs\");\n }\n get tabs() {\n return this.querySelectorAll(\"u-tab\");\n }\n get selectedIndex() {\n return getSelectedIndex(this.tabs);\n }\n set selectedIndex(index) {\n setSelected(this.tabs[index]);\n }\n};\nvar SKIP_ATTR_CHANGE = false;\nvar UHTMLTabElement = class extends UHTMLElement {\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return [\"id\", ARIA_SELECTED, ARIA_CONTROLS];\n }\n constructor() {\n super();\n attachStyle(\n this,\n \":host(:not([hidden])) { cursor: pointer; display: inline-block }\"\n );\n }\n connectedCallback() {\n attr(this, \"role\", \"tab\");\n this.tabIndex = this.selected ? 0 : -1;\n }\n attributeChangedCallback() {\n if (!SKIP_ATTR_CHANGE && this.selected && this.tabList) {\n SKIP_ATTR_CHANGE = true;\n const tabs = [...this.tabList.querySelectorAll(\"u-tab\")];\n const panels = queryWithoutNested(\"u-tabpanel\", this.tabsElement || this);\n const nextPanel = getPanel(this, panels[tabs.indexOf(this)]);\n if (nextPanel) attr(nextPanel, SAFE_LABELLEDBY, useId(this));\n tabs.forEach((tab, index) => {\n const panel = getPanel(tab, panels[index]);\n tab.tabIndex = tab === this ? 0 : -1;\n attr(tab, ARIA_SELECTED, `${tab === this}`);\n if (panel) panel.hidden = panel !== nextPanel;\n if (panel) attr(tab, ARIA_CONTROLS, panel.id);\n });\n SKIP_ATTR_CHANGE = false;\n }\n }\n get tabsElement() {\n return this.closest(\"u-tabs\");\n }\n get tabList() {\n const tablist = this.parentElement;\n return (tablist == null ? void 0 : tablist.nodeName) === \"U-TABLIST\" ? tablist : null;\n }\n get selected() {\n return attr(this, ARIA_SELECTED) === \"true\";\n }\n set selected(value) {\n attr(this, ARIA_SELECTED, `${!!value}`);\n }\n /** Retrieves the ordinal position of an tab in a tablist. */\n get index() {\n const tabList = this.tabList;\n return tabList ? [...tabList.querySelectorAll(\"u-tab\")].indexOf(this) : 0;\n }\n get panel() {\n return getPanel(this);\n }\n};\nvar UHTMLTabPanelElement = class extends UHTMLElement {\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return [\"hidden\"];\n }\n constructor() {\n super();\n attachStyle(this, DISPLAY_BLOCK);\n }\n connectedCallback() {\n attr(this, \"role\", \"tabpanel\");\n this.hidden = getSelectedIndex(this.tabs) === -1;\n this.attributeChangedCallback();\n }\n attributeChangedCallback() {\n if (this.hidden || isFocusable(this.firstChild))\n attr(this, \"tabindex\", null);\n else this.tabIndex = 0;\n }\n get tabsElement() {\n return this.closest(\"u-tabs\");\n }\n get tabs() {\n const css = `u-tab[${ARIA_CONTROLS}=\"${this.id}\"]`;\n return getRoot(this).querySelectorAll(css);\n }\n};\nvar queryWithoutNested = (tag, self) => self.querySelectorAll(`${tag}:not(:scope u-tabpanel ${tag})`);\nvar getPanel = (tab, panel) => {\n const id2 = attr(tab, ARIA_CONTROLS) || useId(panel);\n const el = getRoot(tab).getElementById(id2);\n return (el == null ? void 0 : el.nodeName) === \"U-TABPANEL\" ? el : null;\n};\nvar getSelectedIndex = (tabs) => [...tabs].findIndex((tab) => attr(tab, ARIA_SELECTED) === \"true\");\nvar setSelected = (tab) => tab && attr(tab, \"aria-selected\", \"true\");\nvar isFocusable = (el) => el instanceof Element && !el.matches(':disabled,[tabindex^=\"-\"]') && el.matches(\n `[contenteditable],[controls],[href],[tabindex],input:not([type=\"hidden\"]),select,textarea,button,summary,iframe`\n);\ncustomElements.define(\"u-tabs\", UHTMLTabsElement);\ncustomElements.define(\"u-tablist\", UHTMLTabListElement);\ncustomElements.define(\"u-tab\", UHTMLTabElement);\ncustomElements.define(\"u-tabpanel\", UHTMLTabPanelElement);\n\nexport { UHTMLTabElement, UHTMLTabListElement, UHTMLTabPanelElement, UHTMLTabsElement };\n"],"names":["IS_BROWSER","IS_ANDROID","_a","SAFE_LABELLEDBY","DISPLAY_BLOCK","UHTMLElement","attr","el","name","value","_a2","events","action","element","rest","type","on","off","attachStyle","css","createElement","observers","mutationObserver","options","observer","detail","asButton","event","isClick","getRoot","node","root","id","useId","tagName","text","attrs","customElements","instance","ARIA_CONTROLS","ARIA_SELECTED","UHTMLTabsElement","queryWithoutNested","getSelectedIndex","index","setSelected","UHTMLTabListElement","tab","key","tabs","prev","next","SKIP_ATTR_CHANGE","UHTMLTabElement","panels","nextPanel","getPanel","panel","tablist","tabList","UHTMLTabPanelElement","isFocusable","tag","self","id2"],"mappings":"AACA,IAAIA,IAAa,OAAO,SAAW,OAAe,OAAO,OAAO,WAAa,OAAe,OAAO,OAAO,YAAc,KACpHC,IAAaD,KAAc,WAAW,KAAK,UAAU,SAAS,GAC9DE;AACJF;AACA,QAAQ,OAAOE,IAAK,UAAU,kBAAkB,OAAO,SAASA,EAAG,aAAa,UAAU,QAAQ;AAClG,IAAIC,IAAkB,GAAGF,IAAa,SAAS,MAAM,eACjDG,IAAgB,4CAChBC,IAAe,OAAO,cAAgB,MAAc,MAAM;AAC9D,IAAI;AACJ,SAASC,EAAKC,GAAIC,GAAMC,GAAO;AAC7B,MAAIC;AACJ,SAAID,MAAU,UAAgBC,IAAMH,EAAG,aAAaC,CAAI,MAAM,OAAOE,IAAM,QACvED,MAAU,OAAMF,EAAG,gBAAgBC,CAAI,IAClCD,EAAG,aAAaC,CAAI,MAAMC,KAAOF,EAAG,aAAaC,GAAMC,CAAK,GAC9D;AACT;AACA,IAAIE,IAAS,CAACC,GAAQC,GAASC,MAAS;AACtC,aAAWC,KAAQD,EAAK,CAAC,EAAE,MAAM,GAAG;AAClC,IAAAA,EAAK,CAAC,IAAIC,GACV,QAAQ,UAAU,GAAGH,CAAM,eAAe,EAAE,MAAMC,GAASC,CAAI;AAEnE,GACIE,IAAK,CAACH,MAAYC,MAASH,EAAO,OAAOE,GAASC,CAAI,GACtDG,IAAM,CAACJ,MAAYC,MAASH,EAAO,UAAUE,GAASC,CAAI,GAC1DI,IAAc,CAACL,GAASM,MAAQN,EAAQ,aAAa,EAAE,MAAM,OAAM,CAAE,EAAE;AAAA,EACzEO,EAAc,MAAM;AAAA;AAAA,EAEpBA,EAAc,SAASD,CAAG;AAC5B,GACIE,IAA4B,oBAAI,QAAO,GACvCC,IAAmB,CAACT,GAASU,MAAY;AAC3C,MAAIA,MAAY,OAAQ,QAAOF,EAAU,IAAIR,CAAO;AACpD,MAAI;AACF,IAAAQ,EAAU,IAAIR,CAAO,EAAE,WAAU,GACjCQ,EAAU,OAAOR,CAAO;AAAA,EAC1B,QAAc;AAAA,EACd;AACA,MAAIU,GAAS;AACX,UAAMC,IAAW,IAAI;AAAA,MACnB,CAACC,MAAWZ,EAAQ,YAAY,EAAE,MAAM,YAAY,QAAAY,EAAM,CAAE;AAAA,IAClE;AACI,IAAAD,EAAS,QAAQX,GAASU,CAAO,GACjCF,EAAU,IAAIR,GAASW,CAAQ;AAAA,EACjC;AACF,GACIE,IAAW,CAACC,MAAU;AACxB,QAAMC,IAAU,SAASD,MAAUA,EAAM,QAAQ,OAAOA,EAAM,QAAQ;AACtE,SAAIC,KAASD,EAAM,eAAc,GAC7BC,KAAWD,EAAM,kBAAkB,eAAaA,EAAM,OAAO,MAAK,GAC/DC;AACT,GACIC,IAAU,CAACC,MAAS;AACtB,MAAIpB;AACJ,QAAMqB,MAASrB,IAAMoB,EAAK,gBAAgB,OAAO,SAASpB,EAAI,KAAKoB,CAAI,MAAMA,EAAK;AAClF,SAAOC,aAAgB,YAAYA,aAAgB,aAAaA,IAAO;AACzE,GACIC,IAAK,GACLC,IAAQ,CAAC1B,MACNA,KACAA,EAAG,OAAIA,EAAG,KAAK,IAAIA,EAAG,SAAS,YAAW,CAAE,IAAI,EAAEyB,GAAI,SAAS,EAAE,CAAC,KAChEzB,EAAG,MAFM,IAIda,IAAgB,CAACc,GAASC,GAAMC,MAAU;AAC5C,QAAM7B,IAAK,SAAS,cAAc2B,CAAO;AACzC,SAAIC,MAAM5B,EAAG,cAAc4B,IACpB5B;AACT,GACI8B,IAAiB;AAAA,EACnB,QAAQ,CAAC7B,GAAM8B,MAAa,CAACtC,KAAc,OAAO,eAAe,IAAIQ,CAAI,KAAK,OAAO,eAAe,OAAOA,GAAM8B,CAAQ;AAC3H,GAGIC,IAAgB,iBAChBC,IAAgB,iBAChBC,IAAmB,cAAcpC,EAAa;AAAA,EAChD,cAAc;AACZ,UAAK,GACLa,EAAY,MAAMd,CAAa;AAAA,EACjC;AAAA,EACA,IAAI,UAAU;AACZ,WAAOsC,EAAmB,aAAa,IAAI,EAAE,CAAC,KAAK;AAAA,EACrD;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAOC,EAAiB,KAAK,IAAI;AAAA,EACnC;AAAA,EACA,IAAI,cAAcC,GAAO;AACvB,IAAAC,EAAY,KAAK,KAAKD,CAAK,CAAC;AAAA,EAC9B;AAAA,EACA,IAAI,OAAO;AACT,WAAOF,EAAmB,SAAS,IAAI;AAAA,EACzC;AAAA,EACA,IAAI,SAAS;AACX,WAAOA,EAAmB,cAAc,IAAI;AAAA,EAC9C;AACF,GACII,IAAsB,cAAczC,EAAa;AAAA,EACnD,cAAc;AACZ,UAAK,GACLa,EAAY,MAAMd,CAAa;AAAA,EACjC;AAAA,EACA,oBAAoB;AAClB,IAAAE,EAAK,MAAM,QAAQ,SAAS,GAC5BU,EAAG,MAAM,iBAAiB,IAAI,GAC9BM,EAAiB,MAAM,EAAE,WAAW,GAAI,CAAE,GACtC,KAAK,KAAK,UAAQ,KAAK,YAAW;AAAA,EACxC;AAAA,EACA,uBAAuB;AACrB,IAAAL,EAAI,MAAM,iBAAiB,IAAI,GAC/BK,EAAiB,MAAM,EAAK;AAAA,EAC9B;AAAA,EACA,YAAYK,GAAO;AACjB,QAAI,CAACA,KAASA,EAAM,SAAS,YAAY;AACvC,YAAMoB,IAAM,KAAK,KAAK,KAAK,IAAI,KAAK,eAAe,CAAC,CAAC;AACrD,aAA8BA,GAAI,aAAaP,GAAe,MAAM;AAAA,IACtE;AACA,UAAM,EAAE,KAAAQ,EAAG,IAAKrB,GACVsB,IAAO,CAAC,GAAG,KAAK,IAAI,GACpBC,IAAOD,EAAK,UAAU,CAACF,MAAQA,EAAI,SAASpB,EAAM,MAAM,CAAC;AAC/D,QAAIwB,IAAOD;AACX,QAAI,EAAAvB,EAAM,oBAAoBuB,MAAS,QACnCvB,EAAM,SAAS,WAASkB,EAAYI,EAAKC,CAAI,CAAC,GAC9CvB,EAAM,SAAS,aAAa,CAACD,EAASC,CAAK,IAAG;AAChD,UAAIqB,MAAQ,eAAeA,MAAQ;AACjC,QAAAG,KAAQD,IAAO,KAAKD,EAAK;AAAA,eAClBD,MAAQ,aAAaA,MAAQ;AACpC,QAAAG,KAAQD,KAAQD,EAAK,UAAU;AAAA,eACxBD,MAAQ,MAAO,CAAAG,IAAOF,EAAK,SAAS;AAAA,eACpCD,MAAQ,OAAQ,CAAAG,IAAO;AAAA,eACvBH,MAAQ,MAAO,CAAAG,IAAOR,EAAiBM,CAAI;AAAA,UAC/C;AACL,iBAAW,MAAM;AACf,QAAAA,EAAKC,CAAI,EAAE,WAAW,IACtBD,EAAKE,CAAI,EAAE,WAAW;AAAA,MACxB,CAAC,GACGH,MAAQ,UACVrB,EAAM,eAAc,GACpBsB,EAAKE,CAAI,EAAE,MAAK;AAAA,IAEpB;AAAA,EACF;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,KAAK,QAAQ,QAAQ;AAAA,EAC9B;AAAA,EACA,IAAI,OAAO;AACT,WAAO,KAAK,iBAAiB,OAAO;AAAA,EACtC;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAOR,EAAiB,KAAK,IAAI;AAAA,EACnC;AAAA,EACA,IAAI,cAAcC,GAAO;AACvB,IAAAC,EAAY,KAAK,KAAKD,CAAK,CAAC;AAAA,EAC9B;AACF,GACIQ,IAAmB,IACnBC,IAAkB,cAAchD,EAAa;AAAA;AAAA,EAE/C,WAAW,qBAAqB;AAC9B,WAAO,CAAC,MAAMmC,GAAeD,CAAa;AAAA,EAC5C;AAAA,EACA,cAAc;AACZ,UAAK,GACLrB;AAAA,MACE;AAAA,MACA;AAAA,IACN;AAAA,EACE;AAAA,EACA,oBAAoB;AAClB,IAAAZ,EAAK,MAAM,QAAQ,KAAK,GACxB,KAAK,WAAW,KAAK,WAAW,IAAI;AAAA,EACtC;AAAA,EACA,2BAA2B;AACzB,QAAI,CAAC8C,KAAoB,KAAK,YAAY,KAAK,SAAS;AACtD,MAAAA,IAAmB;AACnB,YAAMH,IAAO,CAAC,GAAG,KAAK,QAAQ,iBAAiB,OAAO,CAAC,GACjDK,IAASZ,EAAmB,cAAc,KAAK,eAAe,IAAI,GAClEa,IAAYC,EAAS,MAAMF,EAAOL,EAAK,QAAQ,IAAI,CAAC,CAAC;AAC3D,MAAIM,KAAWjD,EAAKiD,GAAWpD,GAAiB8B,EAAM,IAAI,CAAC,GAC3DgB,EAAK,QAAQ,CAACF,GAAKH,MAAU;AAC3B,cAAMa,IAAQD,EAAST,GAAKO,EAAOV,CAAK,CAAC;AACzC,QAAAG,EAAI,WAAWA,MAAQ,OAAO,IAAI,IAClCzC,EAAKyC,GAAKP,GAAe,GAAGO,MAAQ,IAAI,EAAE,GACtCU,MAAOA,EAAM,SAASA,MAAUF,IAChCE,KAAOnD,EAAKyC,GAAKR,GAAekB,EAAM,EAAE;AAAA,MAC9C,CAAC,GACDL,IAAmB;AAAA,IACrB;AAAA,EACF;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,KAAK,QAAQ,QAAQ;AAAA,EAC9B;AAAA,EACA,IAAI,UAAU;AACZ,UAAMM,IAAU,KAAK;AACrB,WAAmCA,GAAQ,aAAc,cAAcA,IAAU;AAAA,EACnF;AAAA,EACA,IAAI,WAAW;AACb,WAAOpD,EAAK,MAAMkC,CAAa,MAAM;AAAA,EACvC;AAAA,EACA,IAAI,SAAS/B,GAAO;AAClB,IAAAH,EAAK,MAAMkC,GAAe,GAAG,CAAC,CAAC/B,CAAK,EAAE;AAAA,EACxC;AAAA;AAAA,EAEA,IAAI,QAAQ;AACV,UAAMkD,IAAU,KAAK;AACrB,WAAOA,IAAU,CAAC,GAAGA,EAAQ,iBAAiB,OAAO,CAAC,EAAE,QAAQ,IAAI,IAAI;AAAA,EAC1E;AAAA,EACA,IAAI,QAAQ;AACV,WAAOH,EAAS,IAAI;AAAA,EACtB;AACF,GACII,IAAuB,cAAcvD,EAAa;AAAA;AAAA,EAEpD,WAAW,qBAAqB;AAC9B,WAAO,CAAC,QAAQ;AAAA,EAClB;AAAA,EACA,cAAc;AACZ,UAAK,GACLa,EAAY,MAAMd,CAAa;AAAA,EACjC;AAAA,EACA,oBAAoB;AAClB,IAAAE,EAAK,MAAM,QAAQ,UAAU,GAC7B,KAAK,SAASqC,EAAiB,KAAK,IAAI,MAAM,IAC9C,KAAK,yBAAwB;AAAA,EAC/B;AAAA,EACA,2BAA2B;AACzB,IAAI,KAAK,UAAUkB,EAAY,KAAK,UAAU,IAC5CvD,EAAK,MAAM,YAAY,IAAI,IACxB,KAAK,WAAW;AAAA,EACvB;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,KAAK,QAAQ,QAAQ;AAAA,EAC9B;AAAA,EACA,IAAI,OAAO;AACT,UAAMa,IAAM,SAASoB,CAAa,KAAK,KAAK,EAAE;AAC9C,WAAOV,EAAQ,IAAI,EAAE,iBAAiBV,CAAG;AAAA,EAC3C;AACF,GACIuB,IAAqB,CAACoB,GAAKC,MAASA,EAAK,iBAAiB,GAAGD,CAAG,0BAA0BA,CAAG,GAAG,GAChGN,IAAW,CAACT,GAAKU,MAAU;AAC7B,QAAMO,IAAM1D,EAAKyC,GAAKR,CAAa,KAAKN,EAAMwB,CAAK,GAC7ClD,IAAKsB,EAAQkB,CAAG,EAAE,eAAeiB,CAAG;AAC1C,SAA8BzD,GAAG,aAAc,eAAeA,IAAK;AACrE,GACIoC,IAAmB,CAACM,MAAS,CAAC,GAAGA,CAAI,EAAE,UAAU,CAACF,MAAQzC,EAAKyC,GAAKP,CAAa,MAAM,MAAM,GAC7FK,IAAc,CAACE,MAAQA,KAAOzC,EAAKyC,GAAK,iBAAiB,MAAM,GAC/Dc,IAAc,CAACtD,MAAOA,aAAc,WAAW,CAACA,EAAG,QAAQ,2BAA2B,KAAKA,EAAG;AAAA,EAChG;AACF;AACA8B,EAAe,OAAO,UAAUI,CAAgB;AAChDJ,EAAe,OAAO,aAAaS,CAAmB;AACtDT,EAAe,OAAO,SAASgB,CAAe;AAC9ChB,EAAe,OAAO,cAAcuB,CAAoB;","x_google_ignoreList":[0]}
|
|
@@ -1,76 +1,82 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { flip as C, shift as E, size as I } from "../external/@floating-ui/dom/dist/floating-ui.dom.js";
|
|
2
|
+
import { UHTMLComboboxElement as M } from "../external/@u-elements/u-combobox/dist/u-combobox.js";
|
|
3
|
+
import { UHTMLDataListElement as A } from "../external/@u-elements/u-datalist/dist/u-datalist.js";
|
|
4
|
+
import h from "../styles.module.css.js";
|
|
5
|
+
import { onLoaded as H, onMutation as $, on as m, QUICK_EVENT as b, isInputLike as v, attr as a, useId as u, anchorPosition as g } from "../utils.js";
|
|
6
|
+
const p = h.field.split(" ")[0], x = h.validation.split(" "), w = x[0], l = (t, o) => t.getPropertyValue(`--mtds-text-${o}`)?.slice(1, -1) || "";
|
|
7
|
+
function y(t, o) {
|
|
8
|
+
for (const n of t)
|
|
9
|
+
if (n.isConnected) {
|
|
10
|
+
const i = [], s = [], f = [];
|
|
11
|
+
let c = null, r = null, d = !0;
|
|
12
|
+
for (const e of n.getElementsByTagName("*"))
|
|
13
|
+
e instanceof HTMLLabelElement ? i.push(e) : e instanceof M ? c = e : v(e) && !e.hidden ? r = e : e.hasAttribute("data-description") ? s.push(e) : e.classList.contains(w) ? (d = a(e, "data-color") === "success" || !e.clientHeight, f.push(e), s.unshift(e)) : e instanceof HTMLParagraphElement && (s.some((T) => T.contains(e)) || s.push(e));
|
|
14
|
+
if (r) {
|
|
15
|
+
for (const e of i) e.htmlFor = u(r);
|
|
16
|
+
if (o && a(n, "data-validation") === "form") {
|
|
17
|
+
d = r.matches(":valid");
|
|
18
|
+
for (const e of f) a(e, "hidden", d ? "" : null);
|
|
18
19
|
}
|
|
19
|
-
N(c),
|
|
20
|
+
N(c), S(r), L(r), a(r, "aria-describedby", s.map(u).join(" ") || null), a(r, "aria-invalid", `${!d}`);
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
|
-
function
|
|
24
|
+
function L(t) {
|
|
24
25
|
t instanceof HTMLTextAreaElement && (t.style.setProperty("--mtds-textarea-height", "auto"), t.style.setProperty(
|
|
25
26
|
"--mtds-textarea-height",
|
|
26
27
|
`${t.scrollHeight}px`
|
|
27
28
|
));
|
|
28
29
|
}
|
|
29
30
|
function N(t) {
|
|
30
|
-
const { control: o, list:
|
|
31
|
-
if (t &&
|
|
31
|
+
const { control: o, list: n } = t || {};
|
|
32
|
+
if (t && n && !t.hasAttribute("data-sr-added")) {
|
|
32
33
|
const i = window.getComputedStyle(t);
|
|
33
|
-
|
|
34
|
+
a(t, "data-sr-added", l(i, "combobox-added")), a(t, "data-sr-empty", l(i, "combobox-empty")), a(t, "data-sr-found", l(i, "combobox-found")), a(t, "data-sr-invalid", l(i, "combobox-invalid")), a(t, "data-sr-of", l(i, "combobox-of")), a(t, "data-sr-remove", l(i, "combobox-remove")), a(t, "data-sr-removed", l(i, "combobox-removed")), a(n, "data-sr-plural", l(i, "datalist-plural")), a(n, "data-sr-singular", l(i, "datalist-singular"));
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
+
n && o && !n.hasAttribute("popover") && (a(n, "popover", "manual"), a(o, "popovertarget", u(n)));
|
|
36
37
|
}
|
|
37
|
-
function
|
|
38
|
-
const o = t?.nextElementSibling,
|
|
39
|
-
if (o &&
|
|
40
|
-
const i = Number(
|
|
41
|
-
if (f !==
|
|
42
|
-
|
|
43
|
-
for (const e of
|
|
38
|
+
function S(t) {
|
|
39
|
+
const o = t?.nextElementSibling, n = o && a(o, "data-count");
|
|
40
|
+
if (o && n) {
|
|
41
|
+
const i = Number(n) - t.value.length, s = i < 0, f = a(o, "aria-live") === "polite", c = window.getComputedStyle(o || t), r = l(c, "count-over"), d = l(c, "count-under");
|
|
42
|
+
if (f !== s) {
|
|
43
|
+
a(o, "aria-live", s ? "polite" : "off");
|
|
44
|
+
for (const e of x) o.classList.toggle(e, s);
|
|
44
45
|
}
|
|
45
|
-
o.textContent = (
|
|
46
|
+
o.textContent = (s ? r : d).replace(
|
|
46
47
|
"%d",
|
|
47
48
|
`${Math.abs(i)}`
|
|
48
49
|
);
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
function
|
|
52
|
-
if (t instanceof
|
|
53
|
-
const
|
|
54
|
-
`[popovertarget="${
|
|
52
|
+
function F(t) {
|
|
53
|
+
if (t.target instanceof A) {
|
|
54
|
+
const o = t.target, i = o.getRootNode()?.querySelector(
|
|
55
|
+
`[popovertarget="${o.id}"]`
|
|
55
56
|
);
|
|
56
|
-
|
|
57
|
+
t.newState === "closed" ? g(o, !1) : i && g(o, i, {
|
|
58
|
+
placement: a(o, "data-position") ?? "bottom",
|
|
59
|
+
middleware: [
|
|
60
|
+
C(),
|
|
61
|
+
E(),
|
|
62
|
+
I({
|
|
63
|
+
padding: 10,
|
|
64
|
+
apply({ availableHeight: s }) {
|
|
65
|
+
o.style.width = `${i.offsetWidth}px`, o.style.maxHeight = `${Math.max(50, s)}px`;
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
]
|
|
69
|
+
});
|
|
57
70
|
}
|
|
58
71
|
}
|
|
59
72
|
function D(t) {
|
|
60
|
-
|
|
73
|
+
v(t.target) && (S(t.target), L(t.target));
|
|
61
74
|
}
|
|
62
75
|
function P(t) {
|
|
63
|
-
const o = t.target?.closest?.(`.${
|
|
64
|
-
t.type === "invalid" && o && t.preventDefault(),
|
|
76
|
+
const o = t.target?.closest?.(`.${p}`);
|
|
77
|
+
t.type === "invalid" && o && t.preventDefault(), y(document.getElementsByClassName(p), !0);
|
|
65
78
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (o && !o?.hidden) {
|
|
69
|
-
const a = n(o, "data-position") ?? "bottom";
|
|
70
|
-
setTimeout(() => b(o, t, a, !0), 10);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
M(() => {
|
|
74
|
-
A(document.documentElement, g, L), m(document, "comboboxbeforeselect", C, u), m(document, "input", D, u), m(document, "invalid,submit", P, !0), m(document, "toggle", $, u);
|
|
79
|
+
H(() => {
|
|
80
|
+
$(document.documentElement, p, y), m(document, "input", D, b), m(document, "invalid,submit", P, !0), m(document, "toggle", F, b);
|
|
75
81
|
});
|
|
76
82
|
//# 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\tconst { control, list } = el || {};\n\n\tif (el && list && !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}\n\tif (list && control && !list.hasAttribute(\"popover\")) {\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(event: Event) {\n\tif (isInputLike(event.target)) {\n\t\trenderCounter(event.target);\n\t\trenderTextareaSize(event.target);\n\t\thandleDatalistPosition(event); // Reposition list datalist // TODO Enhance by using style.bottom?\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 handleDatalistPosition({ target: el }: Event) {\n\tconst list =\n\t\t(el instanceof UHTMLComboboxElement || el instanceof HTMLInputElement) &&\n\t\tel.list;\n\tif (list && !list?.hidden) {\n\t\tconst position = attr(list, \"data-position\") ?? \"bottom\";\n\t\tsetTimeout(() => anchorPosition(list, el, position, true), 10); // Reposition list if not hidden\n\t}\n}\n\nonLoaded(() => {\n\tonMutation(document.documentElement, CSS_FIELD, handleMutation);\n\ton(document, \"comboboxbeforeselect\", handleDatalistPosition, 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","event","handleDatalistPosition","handleValdiation","position","onLoaded","onMutation","on","QUICK_EVENT"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"field-observer.js","sources":["../../designsystem/field/field-observer.ts"],"sourcesContent":["import { flip, type Placement, shift, size } from \"@floating-ui/dom\";\nimport { 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 handleFieldMutation(\n\tfields: HTMLCollectionOf<Element>,\n\tvalidate?: boolean,\n) {\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 && !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}\n\tif (list && control && !list.hasAttribute(\"popover\")) {\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 handleFieldToggle(event: Event & { newState?: string }) {\n\tif (event.target instanceof UHTMLDataListElement) {\n\t\tconst list = event.target;\n\t\tconst root = list.getRootNode() as ShadowRoot | null;\n\t\tconst anchor = root?.querySelector<HTMLElement>(\n\t\t\t`[popovertarget=\"${list.id}\"]`,\n\t\t);\n\n\t\tif (event.newState === \"closed\") anchorPosition(list, false);\n\t\telse if (anchor)\n\t\t\tanchorPosition(list, anchor, {\n\t\t\t\tplacement: (attr(list, \"data-position\") ?? \"bottom\") as Placement,\n\t\t\t\tmiddleware: [\n\t\t\t\t\tflip(),\n\t\t\t\t\tshift(),\n\t\t\t\t\tsize({\n\t\t\t\t\t\tpadding: 10,\n\t\t\t\t\t\tapply({ availableHeight }) {\n\t\t\t\t\t\t\tlist.style.width = `${anchor.offsetWidth}px`;\n\t\t\t\t\t\t\tlist.style.maxHeight = `${Math.max(50, availableHeight)}px`;\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t});\n\t}\n}\n// Update when typing\nfunction handleFieldInput(event: Event) {\n\tif (isInputLike(event.target)) {\n\t\trenderCounter(event.target);\n\t\trenderTextareaSize(event.target);\n\t}\n}\n\nfunction handleFieldValdiation(event: Event) {\n\tconst field = (event.target as Element)?.closest?.(`.${CSS_FIELD}`);\n\tif (event.type === \"invalid\" && field) event.preventDefault(); // Prevent browsers from showing default validation bubbles\n\thandleFieldMutation(document.getElementsByClassName(CSS_FIELD), true); // Update state\n}\n\nonLoaded(() => {\n\tonMutation(document.documentElement, CSS_FIELD, handleFieldMutation);\n\ton(document, \"input\", handleFieldInput, QUICK_EVENT);\n\ton(document, \"invalid,submit\", handleFieldValdiation, true); // Use capture as invalid and submit does not bubble\n\ton(document, \"toggle\", handleFieldToggle, QUICK_EVENT); // Use capture since toggle does not bubble\n});\n"],"names":["CSS_FIELD","styles","CSS_VALIDATIONS","CSS_VALIDATION","getText","style","key","handleFieldMutation","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","handleFieldToggle","event","UHTMLDataListElement","anchor","anchorPosition","flip","shift","size","availableHeight","handleFieldInput","handleFieldValdiation","onLoaded","onMutation","on","QUICK_EVENT"],"mappings":"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"}
|
package/mtds/field/field.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { Placement } from '@floating-ui/dom';
|
|
1
2
|
import { ReactUcombobox, UHTMLComboboxElement } from '@u-elements/u-combobox';
|
|
2
3
|
import { JSX } from 'react';
|
|
3
4
|
import { InputProps } from '../react';
|
|
4
5
|
import { PolymorphicComponentPropWithRef } from '../react-types';
|
|
5
|
-
import { AnchorPosition } from '../utils';
|
|
6
6
|
type FieldBaseProps = {
|
|
7
7
|
count?: number;
|
|
8
8
|
description?: React.ReactNode;
|
|
@@ -24,7 +24,7 @@ export declare const FieldComp: FieldComponent;
|
|
|
24
24
|
export type FieldAffixProps = React.ComponentPropsWithoutRef<"div">;
|
|
25
25
|
export type FieldDatalistProps = React.ComponentPropsWithoutRef<"datalist"> & {
|
|
26
26
|
"data-nofilter"?: boolean;
|
|
27
|
-
"data-position"?:
|
|
27
|
+
"data-position"?: Placement;
|
|
28
28
|
};
|
|
29
29
|
export type FieldOptionProps = React.ComponentPropsWithoutRef<"option">;
|
|
30
30
|
export type FieldComboboxSelected = {
|
|
@@ -50,7 +50,7 @@ export declare const Field: FieldComponent & {
|
|
|
50
50
|
Combobox: React.ForwardRefExoticComponent<Omit<FieldComboboxProps, "ref"> & React.RefAttributes<UHTMLComboboxElement>>;
|
|
51
51
|
Datalist: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDataListElement>, HTMLDataListElement>, "ref"> & {
|
|
52
52
|
"data-nofilter"?: boolean;
|
|
53
|
-
"data-position"?:
|
|
53
|
+
"data-position"?: Placement;
|
|
54
54
|
} & React.RefAttributes<HTMLDataListElement>>;
|
|
55
55
|
Option: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.OptionHTMLAttributes<HTMLOptionElement>, HTMLOptionElement>, "ref"> & React.RefAttributes<HTMLOptionElement>>;
|
|
56
56
|
};
|
package/mtds/field/field.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.js","sources":["../../designsystem/field/field.tsx"],"sourcesContent":["import type {\n\tReactUcombobox,\n\tUHTMLComboboxElement,\n} from \"@u-elements/u-combobox\";\nimport clsx from \"clsx\";\nimport {\n\tforwardRef,\n\ttype JSX,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n} from \"react\";\nimport { HelpText, Input, type InputProps } from \"../react\";\nimport type {\n\tPolymorphicComponentPropWithRef,\n\tPolymorphicRef,\n} from \"../react-types\";\nimport styles from \"../styles.module.css\";\nimport { type AnchorPosition, toCustomElementProps } from \"../utils\";\n\ntype FieldBaseProps = {\n\tcount?: number;\n\tdescription?: React.ReactNode;\n\terror?: React.ReactNode; // Kept for backwards compatibility\n\thelpText?: React.ReactNode;\n\thelpTextLabel?: string;\n\tlabel?: React.ReactNode;\n\toptions?: string[] | FieldComboboxSelected;\n\tprefix?: string;\n\treadOnly?: boolean; // Allow readoOnly also on <select>\n\tsuffix?: string;\n\tvalidation?: React.ReactNode;\n\tvalue?: React.ComponentPropsWithRef<\"input\">[\"value\"];\n\tonInput?: (\n\t\te: React.ChangeEvent<\n\t\t\tHTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n\t\t>,\n\t) => void;\n};\n\nexport type FieldProps<As extends React.ElementType = \"div\"> =\n\tPolymorphicComponentPropWithRef<As, FieldBaseProps>;\n\ntype FieldComponent = <As extends React.ElementType = \"div\">(\n\tprops: FieldProps<As>,\n) => JSX.Element;\n\nconst toOption = (\n\to: FieldComboboxSelected[number] | string,\n): FieldComboboxSelected[number] =>\n\ttypeof o === \"string\" ? { label: o, value: o } : o;\n\nexport const FieldComp: FieldComponent = forwardRef<null>(function Field<\n\tAs extends React.ElementType = \"div\",\n>(\n\t{\n\t\t\"data-size\": size,\n\t\tas,\n\t\tclassName,\n\t\tcount,\n\t\tdescription,\n\t\terror,\n\t\thelpText,\n\t\thelpTextLabel,\n\t\tlabel,\n\t\tprefix,\n\t\tstyle,\n\t\tsuffix,\n\t\tvalidation,\n\t\t...rest\n\t}: FieldProps<As>,\n\tref?: PolymorphicRef<As>,\n) {\n\tconst Tag = as || \"div\";\n\tconst affixes = !!suffix || !!prefix;\n\tconst valid = validation || error; // error kept for backwards compatibility\n\tconst shared = {\n\t\t\"data-size\": size,\n\t\tclassName: clsx(styles.field, className),\n\t\tstyle,\n\t};\n\n\t// Render options if select\n\tif (as === \"select\" && !rest.children)\n\t\tObject.assign(rest, {\n\t\t\tchildren: (\n\t\t\t\t<>\n\t\t\t\t\t{(rest.options as FieldBaseProps[\"options\"])\n\t\t\t\t\t\t?.map(toOption)\n\t\t\t\t\t\t.map(({ label, value }) => (\n\t\t\t\t\t\t\t<option key={value} value={value}>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t))}\n\t\t\t\t</>\n\t\t\t),\n\t\t});\n\n\t// Using suppressHydrationWarning to avoid Next.js vs field-observer.ts hydration conflict\n\treturn as ? (\n\t\t<div {...shared}>\n\t\t\t{!!label && <label suppressHydrationWarning>{label}</label>}\n\t\t\t{!!helpText && <HelpText aria-label={helpTextLabel}>{helpText}</HelpText>}\n\t\t\t{!!description && <p suppressHydrationWarning>{description}</p>}\n\t\t\t{affixes ? (\n\t\t\t\t<FieldAffixes>\n\t\t\t\t\t{!!prefix && <span>{prefix}</span>}\n\t\t\t\t\t<Tag\n\t\t\t\t\t\tclassName={styles.input}\n\t\t\t\t\t\tsuppressHydrationWarning\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t{...rest}\n\t\t\t\t\t/>\n\t\t\t\t\t{!!suffix && <span>{suffix}</span>}\n\t\t\t\t</FieldAffixes>\n\t\t\t) : (\n\t\t\t\t<Tag\n\t\t\t\t\tclassName={typeof as === \"string\" ? styles.input : undefined}\n\t\t\t\t\tsuppressHydrationWarning\n\t\t\t\t\tref={ref}\n\t\t\t\t\t{...rest}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{!!valid && (\n\t\t\t\t<div suppressHydrationWarning className={styles.validation}>\n\t\t\t\t\t{valid}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!count && <p suppressHydrationWarning data-count={count} />}\n\t\t</div>\n\t) : (\n\t\t<div ref={ref} {...shared} {...rest} />\n\t);\n}) as FieldComponent; // Needed to tell Typescript this does not return ReactNode but acutally JSX.Element\n\nexport type FieldAffixProps = React.ComponentPropsWithoutRef<\"div\">;\nconst FieldAffixes = forwardRef<HTMLDivElement, FieldAffixProps>(\n\tfunction FieldAffixes({ className, ...rest }, ref) {\n\t\treturn (\n\t\t\t<div className={clsx(styles.affixes, className)} ref={ref} {...rest} />\n\t\t);\n\t},\n);\n\nexport type FieldDatalistProps = React.ComponentPropsWithoutRef<\"datalist\"> & {\n\t\"data-nofilter\"?: boolean;\n\t\"data-position\"?: AnchorPosition;\n};\n\nconst FieldDatalist = forwardRef<HTMLDataListElement, FieldDatalistProps>(\n\tfunction FieldDatalist({ \"data-nofilter\": filter, ...rest }, ref) {\n\t\treturn (\n\t\t\t<u-datalist\n\t\t\t\tdata-nofilter={!!filter || undefined} // Ensure data-nofilter is set correctly\n\t\t\t\tref={ref}\n\t\t\t\t{...toCustomElementProps(rest)}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nexport type FieldOptionProps = React.ComponentPropsWithoutRef<\"option\">;\nconst FieldOption = forwardRef<HTMLOptionElement, FieldOptionProps>(\n\tfunction FieldOption(props, ref) {\n\t\treturn <u-option ref={ref} {...toCustomElementProps(props)} />;\n\t},\n);\n\nexport type FieldComboboxSelected = {\n\tlabel: string;\n\tvalue: string;\n\tchildren?: React.ReactNode;\n}[];\nexport type FieldComboboxProps = ReactUcombobox & {\n\t\"data-creatable\"?: boolean;\n\t\"data-multiple\"?: boolean;\n\tonAfterChange?: (e: CustomEvent<HTMLDataElement>) => void; // deprecated\n\tonAfterSelect?: (e: CustomEvent<HTMLDataElement>) => void; // Custom event to handle before change\n\tonBeforeChange?: (e: CustomEvent<HTMLDataElement>) => void; // deprecated\n\tonBeforeMatch?: (e: CustomEvent<HTMLOptionElement>) => void; // Custom event to handle before change\n\tonBeforeSelect?: (e: CustomEvent<HTMLDataElement>) => void; // Custom event to handle before change\n\tonSelectedChange?: (selected: FieldComboboxSelected) => void; // Allow onChange to be a function that returns void\n\toptions?: FieldComboboxSelected;\n\tselected?: FieldComboboxSelected; // Allow value to be a string or an array of strings for multiple select\n} & Pick<\n\t\tInputProps,\n\t\t\"disabled\" | \"readOnly\" | \"placeholder\" | \"type\" | \"name\"\n\t> & // Allow input props to be passed down\n\tPick<FieldDatalistProps, \"data-position\" | \"data-nofilter\">; // Allow datalist props to be passed down\n\nconst FieldCombobox = forwardRef<UHTMLComboboxElement, FieldComboboxProps>(\n\tfunction FieldCombobox(\n\t\t{\n\t\t\t\"data-multiple\": multiple,\n\t\t\t\"data-nofilter\": nofilter,\n\t\t\t\"data-position\": position,\n\t\t\tonAfterChange,\n\t\t\tonAfterSelect,\n\t\t\tonBeforeChange,\n\t\t\tonBeforeMatch,\n\t\t\tonBeforeSelect,\n\t\t\tonSelectedChange,\n\t\t\tchildren,\n\t\t\tdisabled,\n\t\t\tname,\n\t\t\toptions,\n\t\t\tplaceholder,\n\t\t\treadOnly,\n\t\t\tselected,\n\t\t\ttype,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\tconst innerRef = useRef<UHTMLComboboxElement>(null);\n\t\tconst onSelected = useRef(onSelectedChange);\n\t\tonSelected.current = onSelectedChange; // Sync the latest onSelectedChange function\n\n\t\t// Deprecated props\n\t\tif (onAfterChange) {\n\t\t\tonAfterSelect = onAfterChange;\n\t\t\tconsole.warn(\n\t\t\t\t`Combobox onAfterChange is deprecated, use onAfterSelect instead.`,\n\t\t\t);\n\t\t}\n\t\tif (onBeforeChange) {\n\t\t\tonBeforeSelect = onBeforeChange;\n\t\t\tconsole.warn(\n\t\t\t\t`Combobox onBeforeChange is deprecated, use onBeforeSelect instead.`,\n\t\t\t);\n\t\t}\n\n\t\t// Using useEffect for React 18 and lower compatibility\n\t\tuseImperativeHandle(ref, () => innerRef.current as UHTMLComboboxElement); // Forward innerRef\n\t\tuseEffect(() => {\n\t\t\tconst self = innerRef.current;\n\t\t\tconst handleChange = (event: CustomEvent<HTMLDataElement>) => {\n\t\t\t\tconst handleSelected = onSelected.current;\n\t\t\t\tif (!onSelected) return; // No onSelectedChange function provided, let u-combobox handle it\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst { isConnected: remove, textContent, value } = event.detail;\n\t\t\t\tconst label = textContent?.trim() || \"\";\n\t\t\t\tconst prev = selected || [];\n\n\t\t\t\tif (remove) handleSelected?.(prev.filter((i) => i.value !== value));\n\t\t\t\telse if (multiple) handleSelected?.([...prev, { value, label }]);\n\t\t\t\telse handleSelected?.([{ value, label }]);\n\t\t\t};\n\n\t\t\tself?.addEventListener(\"comboboxbeforeselect\", handleChange);\n\t\t\treturn () =>\n\t\t\t\tself?.removeEventListener(\"comboboxbeforeselect\", handleChange);\n\t\t}, [multiple, selected]);\n\n\t\treturn (\n\t\t\t<u-combobox\n\t\t\t\tdata-multiple={multiple || undefined}\n\t\t\t\t{...toCustomElementProps({\n\t\t\t\t\toncomboboxbeforeselect: onBeforeSelect,\n\t\t\t\t\toncomboboxbeforematch: onBeforeMatch,\n\t\t\t\t\toncomboboxafterselect: onAfterSelect,\n\t\t\t\t\tref: innerRef,\n\t\t\t\t\t...props,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{selected?.map(({ children, label, value }) => (\n\t\t\t\t\t<data key={value} value={value} suppressHydrationWarning>\n\t\t\t\t\t\t{children ?? label}\n\t\t\t\t\t</data>\n\t\t\t\t))}\n\t\t\t\t{children || (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\treadOnly={readOnly}\n\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<del {...toCustomElementProps({ \"aria-label\": \"Fjern tekst\" })} />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{!!options && (\n\t\t\t\t\t<FieldDatalist data-nofilter={nofilter} data-position={position}>\n\t\t\t\t\t\t{options.map(toOption).map(({ children, label, value }) => (\n\t\t\t\t\t\t\t<FieldOption key={value} value={value} label={label}>\n\t\t\t\t\t\t\t\t{children ?? label}\n\t\t\t\t\t\t\t</FieldOption>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</FieldDatalist>\n\t\t\t\t)}\n\t\t\t</u-combobox>\n\t\t);\n\t},\n);\n\nexport const Field = Object.assign(FieldComp, {\n\tAffixes: FieldAffixes,\n\tCombobox: FieldCombobox,\n\tDatalist: FieldDatalist,\n\tOption: FieldOption,\n});\n"],"names":["toOption","o","FieldComp","forwardRef","size","as","className","count","description","error","helpText","helpTextLabel","label","prefix","style","suffix","validation","rest","ref","Tag","affixes","valid","shared","clsx","styles","value","jsx","jsxs","HelpText","FieldAffixes","FieldDatalist","filter","toCustomElementProps","FieldOption","props","FieldCombobox","multiple","nofilter","position","onAfterChange","onAfterSelect","onBeforeChange","onBeforeMatch","onBeforeSelect","onSelectedChange","children","disabled","name","options","placeholder","readOnly","selected","type","innerRef","useRef","onSelected","useImperativeHandle","useEffect","self","handleChange","event","handleSelected","remove","textContent","prev","i","Fragment","Input","Field"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"field.js","sources":["../../designsystem/field/field.tsx"],"sourcesContent":["import type { Placement } from \"@floating-ui/dom\";\nimport type {\n\tReactUcombobox,\n\tUHTMLComboboxElement,\n} from \"@u-elements/u-combobox\";\nimport clsx from \"clsx\";\nimport type { JSX } from \"react\";\nimport { forwardRef, useEffect, useImperativeHandle, useRef } from \"react\";\nimport { HelpText, Input, type InputProps } from \"../react\";\nimport type {\n\tPolymorphicComponentPropWithRef,\n\tPolymorphicRef,\n} from \"../react-types\";\nimport styles from \"../styles.module.css\";\nimport { toCustomElementProps } from \"../utils\";\n\ntype FieldBaseProps = {\n\tcount?: number;\n\tdescription?: React.ReactNode;\n\terror?: React.ReactNode; // Kept for backwards compatibility\n\thelpText?: React.ReactNode;\n\thelpTextLabel?: string;\n\tlabel?: React.ReactNode;\n\toptions?: string[] | FieldComboboxSelected;\n\tprefix?: string;\n\treadOnly?: boolean; // Allow readoOnly also on <select>\n\tsuffix?: string;\n\tvalidation?: React.ReactNode;\n\tvalue?: React.ComponentPropsWithRef<\"input\">[\"value\"];\n\tonInput?: (\n\t\te: React.ChangeEvent<\n\t\t\tHTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n\t\t>,\n\t) => void;\n};\n\nexport type FieldProps<As extends React.ElementType = \"div\"> =\n\tPolymorphicComponentPropWithRef<As, FieldBaseProps>;\n\ntype FieldComponent = <As extends React.ElementType = \"div\">(\n\tprops: FieldProps<As>,\n) => JSX.Element;\n\nconst toOption = (\n\to: FieldComboboxSelected[number] | string,\n): FieldComboboxSelected[number] =>\n\ttypeof o === \"string\" ? { label: o, value: o } : o;\n\nexport const FieldComp: FieldComponent = forwardRef<null>(function Field<\n\tAs extends React.ElementType = \"div\",\n>(\n\t{\n\t\t\"data-size\": size,\n\t\tas,\n\t\tclassName,\n\t\tcount,\n\t\tdescription,\n\t\terror,\n\t\thelpText,\n\t\thelpTextLabel,\n\t\tlabel,\n\t\tprefix,\n\t\tstyle,\n\t\tsuffix,\n\t\tvalidation,\n\t\t...rest\n\t}: FieldProps<As>,\n\tref?: PolymorphicRef<As>,\n) {\n\tconst Tag = as || \"div\";\n\tconst affixes = !!suffix || !!prefix;\n\tconst valid = validation || error; // error kept for backwards compatibility\n\tconst shared = {\n\t\t\"data-size\": size,\n\t\tclassName: clsx(styles.field, className),\n\t\tstyle,\n\t};\n\n\t// Render options if select\n\tif (as === \"select\" && !rest.children)\n\t\tObject.assign(rest, {\n\t\t\tchildren: (\n\t\t\t\t<>\n\t\t\t\t\t{(rest.options as FieldBaseProps[\"options\"])\n\t\t\t\t\t\t?.map(toOption)\n\t\t\t\t\t\t.map(({ label, value }) => (\n\t\t\t\t\t\t\t<option key={value} value={value}>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t))}\n\t\t\t\t</>\n\t\t\t),\n\t\t});\n\n\t// Using suppressHydrationWarning to avoid Next.js vs field-observer.ts hydration conflict\n\treturn as ? (\n\t\t<div {...shared}>\n\t\t\t{!!label && <label suppressHydrationWarning>{label}</label>}\n\t\t\t{!!helpText && <HelpText aria-label={helpTextLabel}>{helpText}</HelpText>}\n\t\t\t{!!description && <p suppressHydrationWarning>{description}</p>}\n\t\t\t{affixes ? (\n\t\t\t\t<FieldAffixes>\n\t\t\t\t\t{!!prefix && <span>{prefix}</span>}\n\t\t\t\t\t<Tag\n\t\t\t\t\t\tclassName={styles.input}\n\t\t\t\t\t\tsuppressHydrationWarning\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t{...rest}\n\t\t\t\t\t/>\n\t\t\t\t\t{!!suffix && <span>{suffix}</span>}\n\t\t\t\t</FieldAffixes>\n\t\t\t) : (\n\t\t\t\t<Tag\n\t\t\t\t\tclassName={typeof as === \"string\" ? styles.input : undefined}\n\t\t\t\t\tsuppressHydrationWarning\n\t\t\t\t\tref={ref}\n\t\t\t\t\t{...rest}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{!!valid && (\n\t\t\t\t<div suppressHydrationWarning className={styles.validation}>\n\t\t\t\t\t{valid}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!count && <p suppressHydrationWarning data-count={count} />}\n\t\t</div>\n\t) : (\n\t\t<div ref={ref} {...shared} {...rest} />\n\t);\n}) as FieldComponent; // Needed to tell Typescript this does not return ReactNode but acutally JSX.Element\n\nexport type FieldAffixProps = React.ComponentPropsWithoutRef<\"div\">;\nconst FieldAffixes = forwardRef<HTMLDivElement, FieldAffixProps>(\n\tfunction FieldAffixes({ className, ...rest }, ref) {\n\t\treturn (\n\t\t\t<div className={clsx(styles.affixes, className)} ref={ref} {...rest} />\n\t\t);\n\t},\n);\n\nexport type FieldDatalistProps = React.ComponentPropsWithoutRef<\"datalist\"> & {\n\t\"data-nofilter\"?: boolean;\n\t\"data-position\"?: Placement;\n};\n\nconst FieldDatalist = forwardRef<HTMLDataListElement, FieldDatalistProps>(\n\tfunction FieldDatalist({ \"data-nofilter\": filter, ...rest }, ref) {\n\t\treturn (\n\t\t\t<u-datalist\n\t\t\t\tdata-nofilter={!!filter || undefined} // Ensure data-nofilter is set correctly\n\t\t\t\tref={ref}\n\t\t\t\t{...toCustomElementProps(rest)}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nexport type FieldOptionProps = React.ComponentPropsWithoutRef<\"option\">;\nconst FieldOption = forwardRef<HTMLOptionElement, FieldOptionProps>(\n\tfunction FieldOption(props, ref) {\n\t\treturn <u-option ref={ref} {...toCustomElementProps(props)} />;\n\t},\n);\n\nexport type FieldComboboxSelected = {\n\tlabel: string;\n\tvalue: string;\n\tchildren?: React.ReactNode;\n}[];\nexport type FieldComboboxProps = ReactUcombobox & {\n\t\"data-creatable\"?: boolean;\n\t\"data-multiple\"?: boolean;\n\tonAfterChange?: (e: CustomEvent<HTMLDataElement>) => void; // deprecated\n\tonAfterSelect?: (e: CustomEvent<HTMLDataElement>) => void; // Custom event to handle before change\n\tonBeforeChange?: (e: CustomEvent<HTMLDataElement>) => void; // deprecated\n\tonBeforeMatch?: (e: CustomEvent<HTMLOptionElement>) => void; // Custom event to handle before change\n\tonBeforeSelect?: (e: CustomEvent<HTMLDataElement>) => void; // Custom event to handle before change\n\tonSelectedChange?: (selected: FieldComboboxSelected) => void; // Allow onChange to be a function that returns void\n\toptions?: FieldComboboxSelected;\n\tselected?: FieldComboboxSelected; // Allow value to be a string or an array of strings for multiple select\n} & Pick<\n\t\tInputProps,\n\t\t\"disabled\" | \"readOnly\" | \"placeholder\" | \"type\" | \"name\"\n\t> & // Allow input props to be passed down\n\tPick<FieldDatalistProps, \"data-position\" | \"data-nofilter\">; // Allow datalist props to be passed down\n\nconst FieldCombobox = forwardRef<UHTMLComboboxElement, FieldComboboxProps>(\n\tfunction FieldCombobox(\n\t\t{\n\t\t\t\"data-multiple\": multiple,\n\t\t\t\"data-nofilter\": nofilter,\n\t\t\t\"data-position\": position,\n\t\t\tonAfterChange,\n\t\t\tonAfterSelect,\n\t\t\tonBeforeChange,\n\t\t\tonBeforeMatch,\n\t\t\tonBeforeSelect,\n\t\t\tonSelectedChange,\n\t\t\tchildren,\n\t\t\tdisabled,\n\t\t\tname,\n\t\t\toptions,\n\t\t\tplaceholder,\n\t\t\treadOnly,\n\t\t\tselected,\n\t\t\ttype,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\tconst innerRef = useRef<UHTMLComboboxElement>(null);\n\t\tconst onSelected = useRef(onSelectedChange);\n\t\tonSelected.current = onSelectedChange; // Sync the latest onSelectedChange function\n\n\t\t// Deprecated props\n\t\tif (onAfterChange) {\n\t\t\tonAfterSelect = onAfterChange;\n\t\t\tconsole.warn(\n\t\t\t\t`Combobox onAfterChange is deprecated, use onAfterSelect instead.`,\n\t\t\t);\n\t\t}\n\t\tif (onBeforeChange) {\n\t\t\tonBeforeSelect = onBeforeChange;\n\t\t\tconsole.warn(\n\t\t\t\t`Combobox onBeforeChange is deprecated, use onBeforeSelect instead.`,\n\t\t\t);\n\t\t}\n\n\t\t// Using useEffect for React 18 and lower compatibility\n\t\tuseImperativeHandle(ref, () => innerRef.current as UHTMLComboboxElement); // Forward innerRef\n\t\tuseEffect(() => {\n\t\t\tconst self = innerRef.current;\n\t\t\tconst handleChange = (event: CustomEvent<HTMLDataElement>) => {\n\t\t\t\tconst handleSelected = onSelected.current;\n\t\t\t\tif (!onSelected) return; // No onSelectedChange function provided, let u-combobox handle it\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst { isConnected: remove, textContent, value } = event.detail;\n\t\t\t\tconst label = textContent?.trim() || \"\";\n\t\t\t\tconst prev = selected || [];\n\n\t\t\t\tif (remove) handleSelected?.(prev.filter((i) => i.value !== value));\n\t\t\t\telse if (multiple) handleSelected?.([...prev, { value, label }]);\n\t\t\t\telse handleSelected?.([{ value, label }]);\n\t\t\t};\n\n\t\t\tself?.addEventListener(\"comboboxbeforeselect\", handleChange);\n\t\t\treturn () =>\n\t\t\t\tself?.removeEventListener(\"comboboxbeforeselect\", handleChange);\n\t\t}, [multiple, selected]);\n\n\t\treturn (\n\t\t\t<u-combobox\n\t\t\t\tdata-multiple={multiple || undefined}\n\t\t\t\t{...toCustomElementProps({\n\t\t\t\t\toncomboboxbeforeselect: onBeforeSelect,\n\t\t\t\t\toncomboboxbeforematch: onBeforeMatch,\n\t\t\t\t\toncomboboxafterselect: onAfterSelect,\n\t\t\t\t\tref: innerRef,\n\t\t\t\t\t...props,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{selected?.map(({ children, label, value }) => (\n\t\t\t\t\t<data key={value} value={value} suppressHydrationWarning>\n\t\t\t\t\t\t{children ?? label}\n\t\t\t\t\t</data>\n\t\t\t\t))}\n\t\t\t\t{children || (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\treadOnly={readOnly}\n\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<del {...toCustomElementProps({ \"aria-label\": \"Fjern tekst\" })} />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{!!options && (\n\t\t\t\t\t<FieldDatalist data-nofilter={nofilter} data-position={position}>\n\t\t\t\t\t\t{options.map(toOption).map(({ children, label, value }) => (\n\t\t\t\t\t\t\t<FieldOption key={value} value={value} label={label}>\n\t\t\t\t\t\t\t\t{children ?? label}\n\t\t\t\t\t\t\t</FieldOption>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</FieldDatalist>\n\t\t\t\t)}\n\t\t\t</u-combobox>\n\t\t);\n\t},\n);\n\nexport const Field = Object.assign(FieldComp, {\n\tAffixes: FieldAffixes,\n\tCombobox: FieldCombobox,\n\tDatalist: FieldDatalist,\n\tOption: FieldOption,\n});\n"],"names":["toOption","o","FieldComp","forwardRef","size","as","className","count","description","error","helpText","helpTextLabel","label","prefix","style","suffix","validation","rest","ref","Tag","affixes","valid","shared","clsx","styles","value","jsx","jsxs","HelpText","FieldAffixes","FieldDatalist","filter","toCustomElementProps","FieldOption","props","FieldCombobox","multiple","nofilter","position","onAfterChange","onAfterSelect","onBeforeChange","onBeforeMatch","onBeforeSelect","onSelectedChange","children","disabled","name","options","placeholder","readOnly","selected","type","innerRef","useRef","onSelected","useImperativeHandle","useEffect","self","handleChange","event","handleSelected","remove","textContent","prev","i","Fragment","Input","Field"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import l from "../styles.module.css.js";
|
|
2
2
|
import { onLoaded as r, onMutation as f, attr as e, useId as u, isInputLike as m } from "../utils.js";
|
|
3
|
-
const I =
|
|
4
|
-
function L(
|
|
3
|
+
const I = l.fieldset.split(" ")[0], p = l.validation.split(" ")[0], a = "aria-describedby", A = "aria-invalid";
|
|
4
|
+
function L(c) {
|
|
5
5
|
requestAnimationFrame(() => {
|
|
6
|
-
for (const n of
|
|
6
|
+
for (const n of c)
|
|
7
7
|
if (n.isConnected) {
|
|
8
8
|
const o = [];
|
|
9
9
|
let i = null, s = !0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldset-observer.js","sources":["../../designsystem/fieldset/fieldset-observer.ts"],"sourcesContent":["import styles from \"../styles.module.css\";\nimport { attr, isInputLike, onLoaded, onMutation, useId } from \"../utils\";\n\nconst CSS_FIELDSET = styles.fieldset.split(\" \")[0];\nconst CSS_VALIDATION = styles.validation.split(\" \")[0];\nconst ARIA_DESC = \"aria-describedby\";\nconst ARIA_INVALID = \"aria-invalid\";\n\n// Using requestAnimationFrame to ensure it runs after field-observer\nfunction
|
|
1
|
+
{"version":3,"file":"fieldset-observer.js","sources":["../../designsystem/fieldset/fieldset-observer.ts"],"sourcesContent":["import styles from \"../styles.module.css\";\nimport { attr, isInputLike, onLoaded, onMutation, useId } from \"../utils\";\n\nconst CSS_FIELDSET = styles.fieldset.split(\" \")[0];\nconst CSS_VALIDATION = styles.validation.split(\" \")[0];\nconst ARIA_DESC = \"aria-describedby\";\nconst ARIA_INVALID = \"aria-invalid\";\n\n// Using requestAnimationFrame to ensure it runs after field-observer\nfunction handleFieldsetMutation(fieldsets: HTMLCollectionOf<Element>) {\n\trequestAnimationFrame(() => {\n\t\tfor (const fieldset of fieldsets)\n\t\t\tif (fieldset.isConnected) {\n\t\t\t\tconst inputs: HTMLInputElement[] = [];\n\t\t\t\tlet validId: string | null = null;\n\t\t\t\tlet valid = true;\n\n\t\t\t\tfor (const el of fieldset.getElementsByTagName(\"*\")) {\n\t\t\t\t\tif (el.classList.contains(CSS_VALIDATION)) {\n\t\t\t\t\t\tvalid = attr(el, \"data-color\") === \"success\" || !el.clientHeight; // Only set invalid if Validation is visible\n\t\t\t\t\t\tvalidId = useId(el);\n\t\t\t\t\t} else if (isInputLike(el)) inputs.push(el);\n\t\t\t\t}\n\n\t\t\t\tfor (const input of inputs) {\n\t\t\t\t\tconst desc = attr(input, ARIA_DESC)?.replace(validId || \"#\", \"\");\n\n\t\t\t\t\tattr(input, ARIA_DESC, `${validId || \"\"} ${desc || \"\"}`.trim());\n\t\t\t\t\tattr(input, ARIA_INVALID, `${!valid}`);\n\t\t\t\t}\n\t\t\t}\n\t});\n}\n\nonLoaded(() =>\n\tonMutation(document.documentElement, CSS_FIELDSET, handleFieldsetMutation),\n);\n"],"names":["CSS_FIELDSET","styles","CSS_VALIDATION","ARIA_DESC","ARIA_INVALID","handleFieldsetMutation","fieldsets","fieldset","inputs","validId","valid","el","attr","useId","isInputLike","input","desc","onLoaded","onMutation"],"mappings":";;AAGA,MAAMA,IAAeC,EAAO,SAAS,MAAM,GAAG,EAAE,CAAC,GAC3CC,IAAiBD,EAAO,WAAW,MAAM,GAAG,EAAE,CAAC,GAC/CE,IAAY,oBACZC,IAAe;AAGrB,SAASC,EAAuBC,GAAsC;AACrE,wBAAsB,MAAM;AAC3B,eAAWC,KAAYD;AACtB,UAAIC,EAAS,aAAa;AACzB,cAAMC,IAA6B,CAAA;AACnC,YAAIC,IAAyB,MACzBC,IAAQ;AAEZ,mBAAWC,KAAMJ,EAAS,qBAAqB,GAAG;AACjD,UAAII,EAAG,UAAU,SAAST,CAAc,KACvCQ,IAAQE,EAAKD,GAAI,YAAY,MAAM,aAAa,CAACA,EAAG,cACpDF,IAAUI,EAAMF,CAAE,KACRG,EAAYH,CAAE,KAAGH,EAAO,KAAKG,CAAE;AAG3C,mBAAWI,KAASP,GAAQ;AAC3B,gBAAMQ,IAAOJ,EAAKG,GAAOZ,CAAS,GAAG,QAAQM,KAAW,KAAK,EAAE;AAE/D,UAAAG,EAAKG,GAAOZ,GAAW,GAAGM,KAAW,EAAE,IAAIO,KAAQ,EAAE,GAAG,KAAA,CAAM,GAC9DJ,EAAKG,GAAOX,GAAc,GAAG,CAACM,CAAK,EAAE;AAAA,QACtC;AAAA,MACD;AAAA,EACF,CAAC;AACF;AAEAO;AAAA,EAAS,MACRC,EAAW,SAAS,iBAAiBlB,GAAcK,CAAsB;AAC1E;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldset.js","sources":["../../designsystem/fieldset/fieldset.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef } from \"react\";\nimport styles from \"../styles.module.css\";\n\nexport type FieldsetProps = React.ComponentPropsWithoutRef<\"fieldset\">;\n\nexport const Fieldset = forwardRef<HTMLFieldSetElement, FieldsetProps>(\n\tfunction Fieldset({ className, ...rest }, ref) {\n\t\treturn (\n\t\t\t<fieldset\n\t\t\t\tclassName={clsx(styles.fieldset, className)}\n\t\t\t\tref={ref}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t);\n\t},\n);\n"],"names":["Fieldset","forwardRef","className","rest","ref","jsx","clsx","styles"],"mappings":";;;;AAMO,MAAMA,IAAWC;AAAA,EACvB,SAAkB,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAAQC,GAAK;
|
|
1
|
+
{"version":3,"file":"fieldset.js","sources":["../../designsystem/fieldset/fieldset.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef } from \"react\";\nimport styles from \"../styles.module.css\";\n\nexport type FieldsetProps = React.ComponentPropsWithoutRef<\"fieldset\">;\n\nexport const Fieldset = forwardRef<HTMLFieldSetElement, FieldsetProps>(\n\tfunction Fieldset({ className, ...rest }, ref) {\n\t\treturn (\n\t\t\t<fieldset\n\t\t\t\tclassName={clsx(styles.fieldset, className)}\n\t\t\t\tref={ref}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t);\n\t},\n);\n"],"names":["Fieldset","forwardRef","className","rest","ref","jsx","clsx","styles"],"mappings":";;;;AAMO,MAAMA,IAAWC;AAAA,EACvB,SAAkB,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAAQC,GAAK;AAC9C,WACC,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAWC,EAAKC,EAAO,UAAUL,CAAS;AAAA,QAC1C,KAAAE;AAAA,QACC,GAAGD;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helptext.js","sources":["../../designsystem/helptext/helptext.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef, useId } from \"react\";\nimport styles from \"../styles.module.css\";\n\nexport type HelpTextProps = React.ComponentPropsWithoutRef<\"button\">;\n\nexport const HelpText = forwardRef<HTMLButtonElement, HelpTextProps>(\n\tfunction HelpText({ className, children, ...rest }, ref) {\n\t\tconst popoverId = useId();\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<button\n\t\t\t\t\taria-label=\"Hjelptekst\"\n\t\t\t\t\tclassName={clsx(styles.helptext, className)}\n\t\t\t\t\tpopoverTarget={popoverId}\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t{...rest}\n\t\t\t\t/>\n\t\t\t\t<div className={styles.popover} id={popoverId} popover=\"auto\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t},\n);\n"],"names":["HelpText","forwardRef","className","children","rest","ref","popoverId","useId","jsxs","Fragment","jsx","clsx","styles"],"mappings":";;;;AAMO,MAAMA,IAAWC;AAAA,EACvB,SAAkB,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,
|
|
1
|
+
{"version":3,"file":"helptext.js","sources":["../../designsystem/helptext/helptext.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef, useId } from \"react\";\nimport styles from \"../styles.module.css\";\n\nexport type HelpTextProps = React.ComponentPropsWithoutRef<\"button\">;\n\nexport const HelpText = forwardRef<HTMLButtonElement, HelpTextProps>(\n\tfunction HelpText({ className, children, ...rest }, ref) {\n\t\tconst popoverId = useId();\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<button\n\t\t\t\t\taria-label=\"Hjelptekst\"\n\t\t\t\t\tclassName={clsx(styles.helptext, className)}\n\t\t\t\t\tpopoverTarget={popoverId}\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t{...rest}\n\t\t\t\t/>\n\t\t\t\t<div className={styles.popover} id={popoverId} popover=\"auto\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t},\n);\n"],"names":["HelpText","forwardRef","className","children","rest","ref","popoverId","useId","jsxs","Fragment","jsx","clsx","styles"],"mappings":";;;;AAMO,MAAMA,IAAWC;AAAA,EACvB,SAAkB,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAAQC,GAAK;AACxD,UAAMC,IAAYC,EAAA;AAClB,WACC,gBAAAC,EAAAC,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,cAAW;AAAA,UACX,WAAWC,EAAKC,EAAO,UAAUV,CAAS;AAAA,UAC1C,eAAeI;AAAA,UACf,KAAAD;AAAA,UACA,MAAK;AAAA,UACJ,GAAGD;AAAA,QAAA;AAAA,MAAA;AAAA,MAEL,gBAAAM,EAAC,SAAI,WAAWE,EAAO,SAAS,IAAIN,GAAW,SAAQ,QACrD,UAAAH,EAAA,CACF;AAAA,IAAA,GACD;AAAA,EAEF;AACD;"}
|