aeico-components 0.1.4 → 0.1.6
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/LICENSE +21 -0
- package/README.md +0 -0
- package/dist/chunks/action-button.cjs +296 -0
- package/dist/chunks/action-button.cjs.map +1 -0
- package/dist/chunks/action-button.js +297 -0
- package/dist/chunks/action-button.js.map +1 -0
- package/dist/chunks/alert.cjs +4 -4
- package/dist/chunks/alert.cjs.map +1 -1
- package/dist/chunks/alert.js +5 -5
- package/dist/chunks/alert.js.map +1 -1
- package/dist/chunks/badge.cjs +1 -1
- package/dist/chunks/badge.cjs.map +1 -1
- package/dist/chunks/badge.js +2 -2
- package/dist/chunks/badge.js.map +1 -1
- package/dist/chunks/breadcrumb-item.cjs +2 -2
- package/dist/chunks/breadcrumb-item.cjs.map +1 -1
- package/dist/chunks/breadcrumb-item.js +3 -3
- package/dist/chunks/breadcrumb-item.js.map +1 -1
- package/dist/chunks/button-group.cjs +1 -1
- package/dist/chunks/button-group.cjs.map +1 -1
- package/dist/chunks/button-group.js +2 -2
- package/dist/chunks/button-group.js.map +1 -1
- package/dist/chunks/button.cjs +12 -15
- package/dist/chunks/button.cjs.map +1 -1
- package/dist/chunks/button.js +13 -16
- package/dist/chunks/button.js.map +1 -1
- package/dist/chunks/card.cjs +1 -1
- package/dist/chunks/card.cjs.map +1 -1
- package/dist/chunks/card.js +2 -2
- package/dist/chunks/card.js.map +1 -1
- package/dist/chunks/checkbox.cjs +18 -5
- package/dist/chunks/checkbox.cjs.map +1 -1
- package/dist/chunks/checkbox.js +18 -5
- package/dist/chunks/checkbox.js.map +1 -1
- package/dist/chunks/copy-button.cjs +168 -0
- package/dist/chunks/copy-button.cjs.map +1 -0
- package/dist/chunks/copy-button.js +169 -0
- package/dist/chunks/copy-button.js.map +1 -0
- package/dist/chunks/detail.cjs +7 -4
- package/dist/chunks/detail.cjs.map +1 -1
- package/dist/chunks/detail.js +8 -5
- package/dist/chunks/detail.js.map +1 -1
- package/dist/chunks/dialog.cjs +1 -1
- package/dist/chunks/dialog.cjs.map +1 -1
- package/dist/chunks/dialog.js +2 -2
- package/dist/chunks/dialog.js.map +1 -1
- package/dist/chunks/divider.cjs +1 -1
- package/dist/chunks/divider.cjs.map +1 -1
- package/dist/chunks/divider.js +2 -2
- package/dist/chunks/divider.js.map +1 -1
- package/dist/chunks/drawer.cjs +180 -0
- package/dist/chunks/drawer.cjs.map +1 -0
- package/dist/chunks/drawer.js +181 -0
- package/dist/chunks/drawer.js.map +1 -0
- package/dist/chunks/dropdown-button.cjs +2 -2
- package/dist/chunks/dropdown-button.cjs.map +1 -1
- package/dist/chunks/dropdown-button.js +6 -6
- package/dist/chunks/dropdown-button.js.map +1 -1
- package/dist/chunks/icon.cjs +31 -1
- package/dist/chunks/icon.cjs.map +1 -1
- package/dist/chunks/icon.js +32 -2
- package/dist/chunks/icon.js.map +1 -1
- package/dist/chunks/menu.cjs +396 -0
- package/dist/chunks/menu.cjs.map +1 -0
- package/dist/chunks/menu.js +397 -0
- package/dist/chunks/menu.js.map +1 -0
- package/dist/chunks/navbar.cjs +2 -3
- package/dist/chunks/navbar.cjs.map +1 -1
- package/dist/chunks/navbar.js +3 -4
- package/dist/chunks/navbar.js.map +1 -1
- package/dist/chunks/pagination.cjs +475 -0
- package/dist/chunks/pagination.cjs.map +1 -0
- package/dist/chunks/pagination.js +476 -0
- package/dist/chunks/pagination.js.map +1 -0
- package/dist/chunks/progress-bar.cjs +101 -0
- package/dist/chunks/progress-bar.cjs.map +1 -0
- package/dist/chunks/progress-bar.js +102 -0
- package/dist/chunks/progress-bar.js.map +1 -0
- package/dist/chunks/radio.cjs +11 -7
- package/dist/chunks/radio.cjs.map +1 -1
- package/dist/chunks/radio.js +11 -7
- package/dist/chunks/radio.js.map +1 -1
- package/dist/chunks/select.cjs +97 -66
- package/dist/chunks/select.cjs.map +1 -1
- package/dist/chunks/select.js +97 -66
- package/dist/chunks/select.js.map +1 -1
- package/dist/chunks/slider.cjs +9 -46
- package/dist/chunks/slider.cjs.map +1 -1
- package/dist/chunks/slider.js +9 -46
- package/dist/chunks/slider.js.map +1 -1
- package/dist/chunks/spinner.cjs +102 -0
- package/dist/chunks/spinner.cjs.map +1 -0
- package/dist/chunks/spinner.js +103 -0
- package/dist/chunks/spinner.js.map +1 -0
- package/dist/chunks/switch.cjs +110 -16
- package/dist/chunks/switch.cjs.map +1 -1
- package/dist/chunks/switch.js +111 -17
- package/dist/chunks/switch.js.map +1 -1
- package/dist/chunks/tab-panel.cjs +6 -7
- package/dist/chunks/tab-panel.cjs.map +1 -1
- package/dist/chunks/tab-panel.js +7 -8
- package/dist/chunks/tab-panel.js.map +1 -1
- package/dist/chunks/tag.cjs +1 -1
- package/dist/chunks/tag.cjs.map +1 -1
- package/dist/chunks/tag.js +2 -2
- package/dist/chunks/tag.js.map +1 -1
- package/dist/chunks/text-input.cjs +11 -16
- package/dist/chunks/text-input.cjs.map +1 -1
- package/dist/chunks/text-input.js +11 -16
- package/dist/chunks/text-input.js.map +1 -1
- package/dist/chunks/textarea.cjs +137 -0
- package/dist/chunks/textarea.cjs.map +1 -0
- package/dist/chunks/textarea.js +138 -0
- package/dist/chunks/textarea.js.map +1 -0
- package/dist/chunks/tooltip.cjs +293 -0
- package/dist/chunks/tooltip.cjs.map +1 -0
- package/dist/chunks/tooltip.js +294 -0
- package/dist/chunks/tooltip.js.map +1 -0
- package/dist/chunks/tree.cjs +468 -0
- package/dist/chunks/tree.cjs.map +1 -0
- package/dist/chunks/tree.js +469 -0
- package/dist/chunks/tree.js.map +1 -0
- package/dist/chunks/variables.cjs +2 -2
- package/dist/chunks/variables.js +2 -2
- package/dist/copy-button.cjs +6 -0
- package/dist/copy-button.cjs.map +1 -0
- package/dist/copy-button.js +6 -0
- package/dist/copy-button.js.map +1 -0
- package/dist/drawer.cjs +6 -0
- package/dist/drawer.cjs.map +1 -0
- package/dist/drawer.js +6 -0
- package/dist/drawer.js.map +1 -0
- package/dist/dropdown.js +4 -4
- package/dist/index.cjs +186 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +201 -15
- package/dist/index.js.map +1 -1
- package/dist/menu.cjs +6 -0
- package/dist/menu.cjs.map +1 -0
- package/dist/menu.js +6 -0
- package/dist/menu.js.map +1 -0
- package/dist/pagination.cjs +6 -0
- package/dist/pagination.cjs.map +1 -0
- package/dist/pagination.js +6 -0
- package/dist/pagination.js.map +1 -0
- package/dist/progress-bar.cjs +6 -0
- package/dist/progress-bar.cjs.map +1 -0
- package/dist/progress-bar.js +6 -0
- package/dist/progress-bar.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.cjs.map +1 -1
- package/dist/select.js +2 -2
- package/dist/select.js.map +1 -1
- package/dist/spinner.cjs +6 -0
- package/dist/spinner.cjs.map +1 -0
- package/dist/spinner.js +6 -0
- package/dist/spinner.js.map +1 -0
- package/dist/textarea.cjs +5 -0
- package/dist/textarea.cjs.map +1 -0
- package/dist/textarea.js +5 -0
- package/dist/textarea.js.map +1 -0
- package/dist/tooltip.cjs +6 -0
- package/dist/tooltip.cjs.map +1 -0
- package/dist/tooltip.js +6 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tree.cjs +6 -0
- package/dist/tree.cjs.map +1 -0
- package/dist/tree.js +6 -0
- package/dist/tree.js.map +1 -0
- package/dist/types/aeico-field.d.ts +57 -5
- package/dist/types/alert/alert.d.ts +1 -0
- package/dist/types/button/button.d.ts +2 -1
- package/dist/types/checkbox/checkbox.d.ts +5 -5
- package/dist/types/copy-button/copy-button.d.ts +32 -0
- package/dist/types/copy-button/defines.d.ts +1 -0
- package/dist/types/copy-button/index.d.ts +3 -0
- package/dist/types/detail/defines.d.ts +1 -0
- package/dist/types/detail/detail.d.ts +3 -1
- package/dist/types/detail/index.d.ts +1 -1
- package/dist/types/detail-group/detail-group.d.ts +39 -0
- package/dist/types/detail-group/index.d.ts +2 -0
- package/dist/types/drawer/defines.d.ts +1 -0
- package/dist/types/drawer/drawer.d.ts +31 -0
- package/dist/types/drawer/index.d.ts +3 -0
- package/dist/types/icon/built-in-icons.d.ts +1 -0
- package/dist/types/icon/icon.d.ts +1 -0
- package/dist/types/icon/registry.d.ts +8 -0
- package/dist/types/index.d.ts +19 -0
- package/dist/types/menu/defines.d.ts +15 -0
- package/dist/types/menu/index.d.ts +5 -0
- package/dist/types/menu/menu-item.d.ts +63 -0
- package/dist/types/menu/menu.d.ts +34 -0
- package/dist/types/number-input/index.d.ts +2 -0
- package/dist/types/number-input/number-input.d.ts +35 -0
- package/dist/types/pagination/defines.d.ts +2 -0
- package/dist/types/pagination/index.d.ts +3 -0
- package/dist/types/pagination/pagination.d.ts +77 -0
- package/dist/types/progress-bar/defines.d.ts +1 -0
- package/dist/types/progress-bar/index.d.ts +3 -0
- package/dist/types/progress-bar/progress-bar.d.ts +37 -0
- package/dist/types/radio-group/radio-group.d.ts +1 -1
- package/dist/types/select/select.d.ts +3 -3
- package/dist/types/spinner/defines.d.ts +3 -0
- package/dist/types/spinner/index.d.ts +3 -0
- package/dist/types/spinner/spinner.d.ts +35 -0
- package/dist/types/switch/defines.d.ts +1 -0
- package/dist/types/switch/switch.d.ts +13 -9
- package/dist/types/text-input/text-input.d.ts +0 -4
- package/dist/types/textarea/index.d.ts +1 -0
- package/dist/types/textarea/textarea.d.ts +26 -0
- package/dist/types/tooltip/defines.d.ts +2 -0
- package/dist/types/tooltip/index.d.ts +4 -0
- package/dist/types/tooltip/tooltip.d.ts +48 -0
- package/dist/types/tree/defines.d.ts +23 -0
- package/dist/types/tree/index.d.ts +5 -0
- package/dist/types/tree/tree-item.d.ts +54 -0
- package/dist/types/tree/tree.d.ts +64 -0
- package/package.json +6 -6
- package/src/aeico-field.ts +154 -15
- package/src/alert/alert.ts +3 -2
- package/src/button/button.ts +11 -13
- package/src/checkbox/checkbox.ts +21 -6
- package/src/copy-button/copy-button.ts +146 -0
- package/src/copy-button/defines.ts +5 -0
- package/src/copy-button/index.ts +3 -0
- package/src/detail/defines.ts +1 -0
- package/src/detail/detail.ts +5 -1
- package/src/detail/index.ts +1 -1
- package/src/detail-group/detail-group.ts +104 -0
- package/src/detail-group/index.ts +2 -0
- package/src/drawer/defines.ts +1 -0
- package/src/drawer/drawer.ts +157 -0
- package/src/drawer/index.ts +3 -0
- package/src/icon/built-in-icons.ts +21 -0
- package/src/icon/icon.ts +1 -0
- package/src/icon/registry.ts +22 -0
- package/src/index.ts +32 -0
- package/src/menu/defines.ts +17 -0
- package/src/menu/index.ts +5 -0
- package/src/menu/menu-item.ts +315 -0
- package/src/menu/menu.ts +81 -0
- package/src/navbar/navbar.ts +1 -3
- package/src/number-input/index.ts +2 -0
- package/src/number-input/number-input.ts +137 -0
- package/src/pagination/defines.ts +2 -0
- package/src/pagination/index.ts +3 -0
- package/src/pagination/pagination.ts +310 -0
- package/src/progress-bar/defines.ts +8 -0
- package/src/progress-bar/index.ts +3 -0
- package/src/progress-bar/progress-bar.ts +80 -0
- package/src/radio-group/radio-group.ts +12 -5
- package/src/select/select.ts +112 -71
- package/src/slider/slider.ts +9 -2
- package/src/spinner/defines.ts +12 -0
- package/src/spinner/index.ts +3 -0
- package/src/spinner/spinner.ts +81 -0
- package/src/styles/components/action-button.css +37 -0
- package/src/styles/components/checkbox.css +4 -26
- package/src/styles/components/copy-button.css +119 -0
- package/src/styles/components/detail-group.css +10 -0
- package/src/styles/components/detail.css +10 -1
- package/src/styles/components/drawer.css +161 -0
- package/src/styles/components/field-label.css +120 -0
- package/src/styles/components/menu-item.css +168 -0
- package/src/styles/components/menu.css +17 -0
- package/src/styles/components/number-input.css +167 -0
- package/src/styles/components/pagination.css +205 -0
- package/src/styles/components/progress-bar.css +44 -0
- package/src/styles/components/radio-group.css +0 -23
- package/src/styles/components/select.css +12 -39
- package/src/styles/components/slider.css +0 -42
- package/src/styles/components/spinner.css +80 -0
- package/src/styles/components/switch.css +68 -19
- package/src/styles/components/tab-panel.css +1 -1
- package/src/styles/components/tabs.css +1 -0
- package/src/styles/components/text-input.css +7 -45
- package/src/styles/components/textarea.css +75 -0
- package/src/styles/components/tooltip.css +103 -0
- package/src/styles/components/tree-item.css +152 -0
- package/src/styles/components/tree.css +10 -0
- package/src/styles/layout.css +457 -25
- package/src/switch/defines.ts +1 -0
- package/src/switch/switch.ts +65 -16
- package/src/tabs/tab.ts +1 -1
- package/src/tabs/tabs.ts +1 -2
- package/src/text-input/text-input.ts +10 -15
- package/src/textarea/index.ts +1 -0
- package/src/textarea/textarea.ts +107 -0
- package/src/tooltip/defines.ts +11 -0
- package/src/tooltip/index.ts +4 -0
- package/src/tooltip/tooltip.ts +183 -0
- package/src/tree/defines.ts +26 -0
- package/src/tree/index.ts +5 -0
- package/src/tree/tree-item.ts +258 -0
- package/src/tree/tree.ts +237 -0
- package/dist/chunks/aeico-field.cjs +0 -179
- package/dist/chunks/aeico-field.cjs.map +0 -1
- package/dist/chunks/aeico-field.js +0 -180
- package/dist/chunks/aeico-field.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.cjs","sources":["../../src/spinner/spinner.ts"],"sourcesContent":["import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport style from '../styles/components/spinner.css?inline';\nimport type { SpinnerColor, SpinnerSize, SpinnerVariant } from './defines';\n\n/**\n * Spinner — animated loading indicator.\n *\n * Supports two visual variants: a rotating ring (`border`, default) and\n * three bouncing dots (`dots`). Size and colour are driven by the shared\n * design-token system.\n *\n * @example\n * ```html\n * <ae-spinner></ae-spinner>\n * <ae-spinner variant=\"dots\" color=\"primary\" size=\"lg\"></ae-spinner>\n * <ae-spinner color=\"success\" speed=\"0.5s\" label=\"Saving…\"></ae-spinner>\n * ```\n */\nclass Spinner extends AeicoComponent {\n static tagName = 'spinner';\n\n @prop({ type: String })\n accessor variant: SpinnerVariant = 'border';\n\n @prop({ type: String })\n accessor size: SpinnerSize = 'md';\n\n @prop({ type: String })\n accessor color: SpinnerColor = 'default';\n\n @prop({ type: String })\n accessor label: string = 'Loading…';\n\n @prop({ type: String })\n accessor speed: string | undefined;\n\n protected static styles = [styleVariables, sizeCSS, colorCSS, style];\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'status');\n }\n\n protected render() {\n this.setAttribute('aria-label', this.label);\n\n if (this.speed) {\n this.style.setProperty('--spinner-speed', this.speed);\n } else {\n this.style.removeProperty('--spinner-speed');\n }\n\n const isDots = this.variant === 'dots';\n\n return html(({ span }) => {\n span({ part: 'track', className: 'track', 'aria-hidden': 'true' }, () => {\n if (isDots) {\n span({ className: 'dot' });\n span({ className: 'dot' });\n span({ className: 'dot' });\n }\n });\n });\n }\n}\n\nSpinner.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-spinner': Spinner;\n }\n}\n\nexport default Spinner;\nexport type SpinnerProps = InferProps<typeof Spinner>;\n"],"names":["AeicoComponent","prop","html","styleVariables","sizeCSS","colorCSS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,YAAA,YAAA,YAAA,WAAA,cAAA,IAAA,OAAA,UAAA,OAAA,QAAA,QAAA;AAuBA,MAAM,iBAAgB,KAAAA,+BAGpB,eAAA,CAACC,WAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,YAAA,CAACA,MAAAA,KAAK,EAAE,MAAM,QAAQ,IAGtB,aAAA,CAACA,MAAAA,KAAK,EAAE,MAAM,QAAQ,CAAA,GAGtB,aAAA,CAACA,MAAAA,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,cAACA,WAAK,EAAE,MAAM,OAAA,CAAQ,IAfF,IAAe;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAIE,iBAAA,MAAS,UAA0B,kBAAnC,OAAA,GAAA,MAAmC,QAAA,CAAA,GAAnC,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,OAAoB,kBAA7B,OAAA,IAAA,MAA6B,IAAA,CAAA,GAA7B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAAsB,kBAA/B,OAAA,IAAA,MAA+B,SAAA,CAAA,GAA/B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAAgB,kBAAzB,OAAA,IAAA,MAAyB,UAAA,CAAA,GAAzB,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAIA,oBAAoB;AAClB,UAAM,kBAAA;AACN,SAAK,aAAa,QAAQ,QAAQ;AAAA,EACpC;AAAA,EAEU,SAAS;AACjB,SAAK,aAAa,cAAc,KAAK,KAAK;AAE1C,QAAI,KAAK,OAAO;AACd,WAAK,MAAM,YAAY,mBAAmB,KAAK,KAAK;AAAA,IACtD,OAAO;AACL,WAAK,MAAM,eAAe,iBAAiB;AAAA,IAC7C;AAEA,UAAM,SAAS,KAAK,YAAY;AAEhC,WAAOC,MAAAA,KAAK,CAAC,EAAE,WAAW;AACxB,WAAK,EAAE,MAAM,SAAS,WAAW,SAAS,eAAe,OAAA,GAAU,MAAM;AACvE,YAAI,QAAQ;AACV,eAAK,EAAE,WAAW,OAAO;AACzB,eAAK,EAAE,WAAW,OAAO;AACzB,eAAK,EAAE,WAAW,OAAO;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AA9CA,QAAA,iBAAA,EAAA;AAIW,WAAA,oBAAA,QAAA;AAGA,QAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AAZT,kBAAA,OAAA,GAAS,WADT,cAHI,SAIK,QAAA;AAGT,kBAAA,OAAA,GAAS,QADT,WANI,SAOK,KAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YATI,SAUK,MAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YAZI,SAaK,MAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YAfI,SAgBK,MAAA;AAhBX,oBAAA,OAAM,OAAA;AACJ,cADI,SACG,WAAU,SAAA;AAiBjB,cAlBI,SAkBa,UAAS,CAACC,UAAAA,WAAgBC,KAAAA,SAASC,MAAAA,UAAU,KAAK,CAAA;AA8BrE,QAAQ,SAAA;;"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { A as AeicoComponent } from "./aeico-component.js";
|
|
2
|
+
import { prop, html } from "aeico";
|
|
3
|
+
import { v as variables } from "./variables.js";
|
|
4
|
+
import { s as sizeCSS } from "./size.js";
|
|
5
|
+
import { c as colorCSS } from "./color.js";
|
|
6
|
+
const style = ':host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n vertical-align: middle;\n --spinner-size: 1.75em;\n --spinner-thickness: 0.15em;\n --spinner-color: var(--color-solid);\n --spinner-track-color: var(--color-bg-subtle, rgba(0, 0, 0, 0.08));\n --spinner-speed: 0.75s;\n}\n\n:host([size="xs"]) { font-size: 0.75rem; }\n:host([size="sm"]) { font-size: 0.875rem; }\n:host([size="md"]) { font-size: 1rem; }\n:host([size="lg"]) { font-size: 1.5rem; }\n\n.track {\n display: inline-block;\n width: var(--spinner-size);\n height: var(--spinner-size);\n border-radius: 50%;\n border: var(--spinner-thickness) solid var(--spinner-track-color);\n border-top-color: var(--spinner-color);\n animation: ae-spin var(--spinner-speed) linear infinite;\n box-sizing: border-box;\n}\n\n:host([variant="dots"]) .track {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: calc(var(--spinner-size) * 0.2);\n width: auto;\n height: var(--spinner-size);\n border: none;\n border-radius: 0;\n animation: none;\n background: transparent;\n}\n\n:host([variant="dots"]) .dot {\n display: inline-block;\n width: calc(var(--spinner-size) * 0.28);\n height: calc(var(--spinner-size) * 0.28);\n border-radius: 50%;\n background: var(--spinner-color);\n animation: ae-bounce var(--spinner-speed) ease-in-out infinite;\n}\n\n:host([variant="dots"]) .dot:nth-child(2) {\n animation-delay: calc(var(--spinner-speed) / 6);\n}\n\n:host([variant="dots"]) .dot:nth-child(3) {\n animation-delay: calc(var(--spinner-speed) / 3);\n}\n\n@keyframes ae-spin {\n to { transform: rotate(360deg); }\n}\n\n@keyframes ae-bounce {\n 0%, 80%, 100% { transform: scale(0.6); opacity: 0.5; }\n 40% { transform: scale(1); opacity: 1; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .track {\n animation: none;\n border-top-color: var(--spinner-color);\n opacity: 0.6;\n }\n\n :host([variant="dots"]) .dot {\n animation: none;\n opacity: 0.6;\n }\n}\n';
|
|
7
|
+
var __create = Object.create;
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
11
|
+
var __typeError = (msg) => {
|
|
12
|
+
throw TypeError(msg);
|
|
13
|
+
};
|
|
14
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
15
|
+
var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
|
|
16
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
17
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
18
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
19
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
20
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
21
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
22
|
+
return value;
|
|
23
|
+
};
|
|
24
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
25
|
+
var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
|
|
26
|
+
var j = array.length + 1, key = __decoratorStrings[k + 5];
|
|
27
|
+
var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
|
|
28
|
+
var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
|
|
29
|
+
return __privateGet(this, extra);
|
|
30
|
+
}, set [name](x) {
|
|
31
|
+
return __privateSet(this, extra, x);
|
|
32
|
+
} }, name));
|
|
33
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
34
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
35
|
+
{
|
|
36
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
|
|
37
|
+
access.get = (x) => x[name];
|
|
38
|
+
access.set = (x, y) => x[name] = y;
|
|
39
|
+
}
|
|
40
|
+
it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
|
|
41
|
+
if (it === void 0) __expectFn(it) && (desc[key] = it);
|
|
42
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
43
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
44
|
+
}
|
|
45
|
+
return desc && __defProp(target, name, desc), target;
|
|
46
|
+
};
|
|
47
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
48
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
49
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
|
|
50
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
51
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
52
|
+
var _speed_dec, _label_dec, _color_dec, _size_dec, _variant_dec, _a, _init, _variant, _size, _color, _label, _speed;
|
|
53
|
+
class Spinner extends (_a = AeicoComponent, _variant_dec = [prop({ type: String })], _size_dec = [prop({ type: String })], _color_dec = [prop({ type: String })], _label_dec = [prop({ type: String })], _speed_dec = [prop({ type: String })], _a) {
|
|
54
|
+
constructor() {
|
|
55
|
+
super(...arguments);
|
|
56
|
+
__privateAdd(this, _variant, __runInitializers(_init, 8, this, "border")), __runInitializers(_init, 11, this);
|
|
57
|
+
__privateAdd(this, _size, __runInitializers(_init, 12, this, "md")), __runInitializers(_init, 15, this);
|
|
58
|
+
__privateAdd(this, _color, __runInitializers(_init, 16, this, "default")), __runInitializers(_init, 19, this);
|
|
59
|
+
__privateAdd(this, _label, __runInitializers(_init, 20, this, "Loading…")), __runInitializers(_init, 23, this);
|
|
60
|
+
__privateAdd(this, _speed, __runInitializers(_init, 24, this)), __runInitializers(_init, 27, this);
|
|
61
|
+
}
|
|
62
|
+
connectedCallback() {
|
|
63
|
+
super.connectedCallback();
|
|
64
|
+
this.setAttribute("role", "status");
|
|
65
|
+
}
|
|
66
|
+
render() {
|
|
67
|
+
this.setAttribute("aria-label", this.label);
|
|
68
|
+
if (this.speed) {
|
|
69
|
+
this.style.setProperty("--spinner-speed", this.speed);
|
|
70
|
+
} else {
|
|
71
|
+
this.style.removeProperty("--spinner-speed");
|
|
72
|
+
}
|
|
73
|
+
const isDots = this.variant === "dots";
|
|
74
|
+
return html(({ span }) => {
|
|
75
|
+
span({ part: "track", className: "track", "aria-hidden": "true" }, () => {
|
|
76
|
+
if (isDots) {
|
|
77
|
+
span({ className: "dot" });
|
|
78
|
+
span({ className: "dot" });
|
|
79
|
+
span({ className: "dot" });
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
_init = __decoratorStart(_a);
|
|
86
|
+
_variant = /* @__PURE__ */ new WeakMap();
|
|
87
|
+
_size = /* @__PURE__ */ new WeakMap();
|
|
88
|
+
_color = /* @__PURE__ */ new WeakMap();
|
|
89
|
+
_label = /* @__PURE__ */ new WeakMap();
|
|
90
|
+
_speed = /* @__PURE__ */ new WeakMap();
|
|
91
|
+
__decorateElement(_init, 4, "variant", _variant_dec, Spinner, _variant);
|
|
92
|
+
__decorateElement(_init, 4, "size", _size_dec, Spinner, _size);
|
|
93
|
+
__decorateElement(_init, 4, "color", _color_dec, Spinner, _color);
|
|
94
|
+
__decorateElement(_init, 4, "label", _label_dec, Spinner, _label);
|
|
95
|
+
__decorateElement(_init, 4, "speed", _speed_dec, Spinner, _speed);
|
|
96
|
+
__decoratorMetadata(_init, Spinner);
|
|
97
|
+
__publicField(Spinner, "tagName", "spinner");
|
|
98
|
+
__publicField(Spinner, "styles", [variables, sizeCSS, colorCSS, style]);
|
|
99
|
+
Spinner.register();
|
|
100
|
+
export {
|
|
101
|
+
Spinner as S
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","sources":["../../src/spinner/spinner.ts"],"sourcesContent":["import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport style from '../styles/components/spinner.css?inline';\nimport type { SpinnerColor, SpinnerSize, SpinnerVariant } from './defines';\n\n/**\n * Spinner — animated loading indicator.\n *\n * Supports two visual variants: a rotating ring (`border`, default) and\n * three bouncing dots (`dots`). Size and colour are driven by the shared\n * design-token system.\n *\n * @example\n * ```html\n * <ae-spinner></ae-spinner>\n * <ae-spinner variant=\"dots\" color=\"primary\" size=\"lg\"></ae-spinner>\n * <ae-spinner color=\"success\" speed=\"0.5s\" label=\"Saving…\"></ae-spinner>\n * ```\n */\nclass Spinner extends AeicoComponent {\n static tagName = 'spinner';\n\n @prop({ type: String })\n accessor variant: SpinnerVariant = 'border';\n\n @prop({ type: String })\n accessor size: SpinnerSize = 'md';\n\n @prop({ type: String })\n accessor color: SpinnerColor = 'default';\n\n @prop({ type: String })\n accessor label: string = 'Loading…';\n\n @prop({ type: String })\n accessor speed: string | undefined;\n\n protected static styles = [styleVariables, sizeCSS, colorCSS, style];\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'status');\n }\n\n protected render() {\n this.setAttribute('aria-label', this.label);\n\n if (this.speed) {\n this.style.setProperty('--spinner-speed', this.speed);\n } else {\n this.style.removeProperty('--spinner-speed');\n }\n\n const isDots = this.variant === 'dots';\n\n return html(({ span }) => {\n span({ part: 'track', className: 'track', 'aria-hidden': 'true' }, () => {\n if (isDots) {\n span({ className: 'dot' });\n span({ className: 'dot' });\n span({ className: 'dot' });\n }\n });\n });\n }\n}\n\nSpinner.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-spinner': Spinner;\n }\n}\n\nexport default Spinner;\nexport type SpinnerProps = InferProps<typeof Spinner>;\n"],"names":["styleVariables"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,YAAA,YAAA,YAAA,WAAA,cAAA,IAAA,OAAA,UAAA,OAAA,QAAA,QAAA;AAuBA,MAAM,iBAAgB,KAAA,gBAGpB,eAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,YAAA,CAAC,KAAK,EAAE,MAAM,QAAQ,IAGtB,aAAA,CAAC,KAAK,EAAE,MAAM,QAAQ,CAAA,GAGtB,aAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,cAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,IAfF,IAAe;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAIE,iBAAA,MAAS,UAA0B,kBAAnC,OAAA,GAAA,MAAmC,QAAA,CAAA,GAAnC,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,OAAoB,kBAA7B,OAAA,IAAA,MAA6B,IAAA,CAAA,GAA7B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAAsB,kBAA/B,OAAA,IAAA,MAA+B,SAAA,CAAA,GAA/B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAAgB,kBAAzB,OAAA,IAAA,MAAyB,UAAA,CAAA,GAAzB,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAIA,oBAAoB;AAClB,UAAM,kBAAA;AACN,SAAK,aAAa,QAAQ,QAAQ;AAAA,EACpC;AAAA,EAEU,SAAS;AACjB,SAAK,aAAa,cAAc,KAAK,KAAK;AAE1C,QAAI,KAAK,OAAO;AACd,WAAK,MAAM,YAAY,mBAAmB,KAAK,KAAK;AAAA,IACtD,OAAO;AACL,WAAK,MAAM,eAAe,iBAAiB;AAAA,IAC7C;AAEA,UAAM,SAAS,KAAK,YAAY;AAEhC,WAAO,KAAK,CAAC,EAAE,WAAW;AACxB,WAAK,EAAE,MAAM,SAAS,WAAW,SAAS,eAAe,OAAA,GAAU,MAAM;AACvE,YAAI,QAAQ;AACV,eAAK,EAAE,WAAW,OAAO;AACzB,eAAK,EAAE,WAAW,OAAO;AACzB,eAAK,EAAE,WAAW,OAAO;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AA9CA,QAAA,iBAAA,EAAA;AAIW,WAAA,oBAAA,QAAA;AAGA,QAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AAZT,kBAAA,OAAA,GAAS,WADT,cAHI,SAIK,QAAA;AAGT,kBAAA,OAAA,GAAS,QADT,WANI,SAOK,KAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YATI,SAUK,MAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YAZI,SAaK,MAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YAfI,SAgBK,MAAA;AAhBX,oBAAA,OAAM,OAAA;AACJ,cADI,SACG,WAAU,SAAA;AAiBjB,cAlBI,SAkBa,UAAS,CAACA,WAAgB,SAAS,UAAU,KAAK,CAAA;AA8BrE,QAAQ,SAAA;"}
|
package/dist/chunks/switch.cjs
CHANGED
|
@@ -1,21 +1,69 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
-
const aeicoField = require("./aeico-field.cjs");
|
|
2
|
+
const actionButton = require("./action-button.cjs");
|
|
6
3
|
const aeico = require("aeico");
|
|
7
4
|
const variables = require("./variables.cjs");
|
|
8
5
|
const size = require("./size.cjs");
|
|
9
6
|
const color = require("./color.cjs");
|
|
10
|
-
const styles = ":host {\n display: block;\n font-size: var(--size-base);\n\n --switch-field-gap: 4px;\n\n --toggle-width: 2.667em;\n --toggle-height: 1.333em;\n --toggle-slider-size: 1em;\n --toggle-gap: calc((var(--toggle-height) - var(--toggle-slider-size)) / 2);\n --toggle-border-radius: calc(var(--toggle-height) / 2);\n --toggle-bg: var(--color-gray);\n --toggle-bg-checked: var(--color-solid);\n --toggle-slider-bg: white;\n --toggle-transition: 0.2s;\n\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\n --color-solid: var(--color-primary);\n}\n\n.switch-container {\n display: flex;\n align-items: center;\n gap: var(--switch-field-gap);\n}\n\n.switch-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: var(--toggle-width);\n height: var(--toggle-height);\n flex-shrink: 0;\n}\n\n.field-input {\n position: absolute;\n opacity: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n margin: 0;\n z-index: 1;\n border: none;\n border-radius: 0;\n background: none;\n accent-color: unset;\n}\n\n.field-input:disabled {\n cursor: not-allowed;\n}\n\n.toggle-slider {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--toggle-bg);\n border-radius: var(--toggle-border-radius);\n transition: var(--toggle-transition);\n pointer-events: none;\n}\n\n.toggle-slider::before {\n content: '';\n position: absolute;\n height: var(--toggle-slider-size);\n width: var(--toggle-slider-size);\n left: var(--toggle-gap);\n top: var(--toggle-gap);\n background: var(--toggle-slider-bg);\n border-radius: 50%;\n transition: var(--toggle-transition);\n}\n\n.field-input:checked + .toggle-slider {\n background: var(--toggle-bg-checked);\n}\n\n.field-input:checked + .toggle-slider::before {\n transform: translateX(calc(var(--toggle-width) - var(--toggle-height)));\n}\n\n.field-input:disabled + .toggle-slider {\n opacity: 0.5;\n pointer-events: auto;\n}\n\n/*
|
|
11
|
-
|
|
7
|
+
const styles = ":host {\n display: block;\n font-size: var(--size-base);\n\n --switch-field-gap: 4px;\n\n --toggle-width: 2.667em;\n --toggle-height: 1.333em;\n --toggle-slider-size: 1em;\n --toggle-gap: calc((var(--toggle-height) - var(--toggle-slider-size)) / 2);\n --toggle-border-radius: calc(var(--toggle-height) / 2);\n --toggle-bg: var(--color-gray);\n --toggle-bg-checked: var(--color-solid);\n --toggle-slider-bg: white;\n --toggle-transition: 0.2s;\n\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\n --color-solid: var(--color-primary);\n}\n\n.switch-container {\n display: flex;\n align-items: center;\n gap: var(--switch-field-gap);\n}\n\n.switch-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: var(--toggle-width);\n height: var(--toggle-height);\n flex-shrink: 0;\n}\n\n.field-input {\n position: absolute;\n opacity: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n margin: 0;\n z-index: 1;\n border: none;\n border-radius: 0;\n background: none;\n accent-color: unset;\n}\n\n.field-input:disabled {\n cursor: not-allowed;\n}\n\n.toggle-slider {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--toggle-bg);\n border-radius: var(--toggle-border-radius);\n transition: var(--toggle-transition);\n pointer-events: none;\n}\n\n.toggle-slider::before {\n content: '';\n position: absolute;\n height: var(--toggle-slider-size);\n width: var(--toggle-slider-size);\n left: var(--toggle-gap);\n top: var(--toggle-gap);\n background: var(--toggle-slider-bg);\n border-radius: 50%;\n transition: var(--toggle-transition);\n}\n\n.field-input:checked + .toggle-slider {\n background: var(--toggle-bg-checked);\n}\n\n.field-input:checked + .toggle-slider::before {\n transform: translateX(calc(var(--toggle-width) - var(--toggle-height)));\n}\n\n.field-input:disabled + .toggle-slider {\n opacity: 0.5;\n pointer-events: auto;\n}\n\n/* ===== Icon size override ===== */\n/* ae-icon shadow DOM sets :host { font-size: 20px }, external styles beat it.\n Font-size on the CONTAINER span must NOT be set here — doing so causes\n double-multiplying (container 0.72× then ae-icon 0.72× again = tiny icons).\n Only the ae-icon element itself is targeted. */\n.toggle-knob-icon ae-icon,\n.track-icon ae-icon {\n font-size: var(--toggle-icon-size, calc(var(--toggle-slider-size) * 0.72));\n width: 1em;\n height: 1em;\n}\n\n/* ===== Knob icons ===== */\n.toggle-knob-icon {\n position: absolute;\n height: var(--toggle-slider-size);\n width: var(--toggle-slider-size);\n left: var(--toggle-gap);\n top: var(--toggle-gap);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n color: var(--toggle-knob-icon-color, rgba(0, 0, 0, 0.6));\n transition: var(--toggle-transition);\n}\n\n.field-input:checked + .toggle-slider .toggle-knob-icon {\n transform: translateX(calc(var(--toggle-width) - var(--toggle-height)));\n}\n\n.toggle-knob-icon.icon-checked {\n opacity: 0;\n}\n\n.field-input:checked + .toggle-slider .toggle-knob-icon.icon-checked {\n opacity: 1;\n}\n\n.field-input:checked + .toggle-slider .toggle-knob-icon.icon-unchecked {\n opacity: 0;\n}\n\n/* ===== Track icons ===== */\n/* Positioned at the same location as the knob in each state (the circular ends),\n so the icon appears to live inside the circle, not on the flat track sides. */\n.track-icon {\n position: absolute;\n top: var(--toggle-gap);\n width: var(--toggle-slider-size);\n height: var(--toggle-slider-size);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n color: var(--toggle-track-icon-color, white);\n transition: opacity var(--toggle-transition);\n}\n\n.track-icon-left {\n left: var(--toggle-gap);\n opacity: 0;\n}\n\n.track-icon-right {\n right: var(--toggle-gap);\n opacity: 1;\n}\n\n.field-input:checked + .toggle-slider .track-icon-left {\n opacity: 1;\n}\n\n.field-input:checked + .toggle-slider .track-icon-right {\n opacity: 0;\n}\n";
|
|
8
|
+
var __create = Object.create;
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
12
|
+
var __typeError = (msg) => {
|
|
13
|
+
throw TypeError(msg);
|
|
14
|
+
};
|
|
15
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
16
|
+
var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
|
|
17
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
18
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
19
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
20
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
21
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
22
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
23
|
+
return value;
|
|
24
|
+
};
|
|
25
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
26
|
+
var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
|
|
27
|
+
var j = array.length + 1, key = __decoratorStrings[k + 5];
|
|
28
|
+
var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
|
|
29
|
+
var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
|
|
30
|
+
return __privateGet(this, extra);
|
|
31
|
+
}, set [name](x) {
|
|
32
|
+
return __privateSet(this, extra, x);
|
|
33
|
+
} }, name));
|
|
34
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
35
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
36
|
+
{
|
|
37
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
|
|
38
|
+
access.get = (x) => x[name];
|
|
39
|
+
access.set = (x, y) => x[name] = y;
|
|
40
|
+
}
|
|
41
|
+
it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
|
|
42
|
+
if (it === void 0) __expectFn(it) && (desc[key] = it);
|
|
43
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
44
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
45
|
+
}
|
|
46
|
+
return desc && __defProp(target, name, desc), target;
|
|
47
|
+
};
|
|
48
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
49
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
50
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
|
|
51
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
52
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
53
|
+
var _iconPlacement_dec, _iconChecked_dec, _icon_dec, _defaultChecked_dec, _checked_dec, _a, _init, _checked, _defaultChecked, _icon, _iconChecked, _iconPlacement;
|
|
54
|
+
class Switch extends (_a = actionButton.AeicoField, _checked_dec = [aeico.prop({ type: Boolean })], _defaultChecked_dec = [aeico.prop({ type: Boolean })], _icon_dec = [aeico.prop({ type: String })], _iconChecked_dec = [aeico.prop({ type: String })], _iconPlacement_dec = [aeico.prop({ type: String })], _a) {
|
|
12
55
|
constructor() {
|
|
13
56
|
super(...arguments);
|
|
14
57
|
__publicField(this, "fieldElement", null);
|
|
58
|
+
__privateAdd(this, _checked, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
|
|
59
|
+
__privateAdd(this, _defaultChecked, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
|
|
60
|
+
__privateAdd(this, _icon, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
|
|
61
|
+
__privateAdd(this, _iconChecked, __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
|
|
62
|
+
__privateAdd(this, _iconPlacement, __runInitializers(_init, 24, this)), __runInitializers(_init, 27, this);
|
|
15
63
|
}
|
|
16
64
|
getValue() {
|
|
17
|
-
var
|
|
18
|
-
return ((
|
|
65
|
+
var _a2;
|
|
66
|
+
return ((_a2 = this.fieldElement) == null ? void 0 : _a2.checked) ?? false;
|
|
19
67
|
}
|
|
20
68
|
writeValue(checked) {
|
|
21
69
|
if (this.fieldElement) {
|
|
@@ -45,29 +93,75 @@ class Switch extends aeicoField.AeicoField {
|
|
|
45
93
|
this.setValue(false, { ...options, action: "clear" });
|
|
46
94
|
}
|
|
47
95
|
render() {
|
|
48
|
-
return aeico.html(({ div, input, span }) => {
|
|
49
|
-
|
|
96
|
+
return aeico.html(({ div, input, span, aeIcon }) => {
|
|
97
|
+
const id = this.getFieldId();
|
|
98
|
+
this.renderLabel(id);
|
|
99
|
+
div({ className: "switch-container field-body" }, () => {
|
|
50
100
|
div({ className: "switch-wrapper" }, () => {
|
|
51
101
|
this.fieldElement = input({
|
|
102
|
+
id,
|
|
52
103
|
type: "checkbox",
|
|
53
104
|
className: "field-input",
|
|
54
105
|
checked: Boolean(this.checked),
|
|
55
106
|
disabled: Boolean(this.disabled),
|
|
107
|
+
required: Boolean(this.required),
|
|
56
108
|
"@change": this.boundOnChange
|
|
57
109
|
});
|
|
58
|
-
|
|
110
|
+
const hasIcon = this.icon || this.iconChecked;
|
|
111
|
+
const placement = this.iconPlacement ?? "knob";
|
|
112
|
+
span({ className: "toggle-slider" }, () => {
|
|
113
|
+
if (!hasIcon) return;
|
|
114
|
+
if (placement === "track") {
|
|
115
|
+
span({ className: "track-icon track-icon-left" }, () => {
|
|
116
|
+
aeIcon({ name: this.iconChecked ?? this.icon });
|
|
117
|
+
});
|
|
118
|
+
span({ className: "track-icon track-icon-right" }, () => {
|
|
119
|
+
aeIcon({ name: this.icon ?? this.iconChecked });
|
|
120
|
+
});
|
|
121
|
+
} else {
|
|
122
|
+
if (this.icon && this.iconChecked) {
|
|
123
|
+
span({ className: "toggle-knob-icon icon-unchecked" }, () => {
|
|
124
|
+
aeIcon({ name: this.icon });
|
|
125
|
+
});
|
|
126
|
+
span({ className: "toggle-knob-icon icon-checked" }, () => {
|
|
127
|
+
aeIcon({ name: this.iconChecked });
|
|
128
|
+
});
|
|
129
|
+
} else {
|
|
130
|
+
span({ className: "toggle-knob-icon" }, () => {
|
|
131
|
+
aeIcon({ name: this.icon ?? this.iconChecked });
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
});
|
|
59
136
|
});
|
|
60
137
|
this.renderActionButtons();
|
|
61
138
|
});
|
|
139
|
+
this.renderHelperText();
|
|
140
|
+
this.renderError();
|
|
62
141
|
});
|
|
63
142
|
}
|
|
64
143
|
}
|
|
144
|
+
_init = __decoratorStart(_a);
|
|
145
|
+
_checked = /* @__PURE__ */ new WeakMap();
|
|
146
|
+
_defaultChecked = /* @__PURE__ */ new WeakMap();
|
|
147
|
+
_icon = /* @__PURE__ */ new WeakMap();
|
|
148
|
+
_iconChecked = /* @__PURE__ */ new WeakMap();
|
|
149
|
+
_iconPlacement = /* @__PURE__ */ new WeakMap();
|
|
150
|
+
__decorateElement(_init, 4, "checked", _checked_dec, Switch, _checked);
|
|
151
|
+
__decorateElement(_init, 4, "defaultChecked", _defaultChecked_dec, Switch, _defaultChecked);
|
|
152
|
+
__decorateElement(_init, 4, "icon", _icon_dec, Switch, _icon);
|
|
153
|
+
__decorateElement(_init, 4, "iconChecked", _iconChecked_dec, Switch, _iconChecked);
|
|
154
|
+
__decorateElement(_init, 4, "iconPlacement", _iconPlacement_dec, Switch, _iconPlacement);
|
|
155
|
+
__decoratorMetadata(_init, Switch);
|
|
65
156
|
__publicField(Switch, "tagName", "switch");
|
|
66
|
-
__publicField(Switch, "
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
157
|
+
__publicField(Switch, "styles", [
|
|
158
|
+
variables.variables,
|
|
159
|
+
size.sizeCSS,
|
|
160
|
+
color.colorCSS,
|
|
161
|
+
actionButton.fieldLabelCSS,
|
|
162
|
+
actionButton.actionButtonCSS,
|
|
163
|
+
styles
|
|
164
|
+
]);
|
|
71
165
|
Switch.register();
|
|
72
166
|
exports.Switch = Switch;
|
|
73
167
|
//# sourceMappingURL=switch.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.cjs","sources":["../../src/switch/switch.ts"],"sourcesContent":["import AeicoField from '../aeico-field';\nimport type { InferProps
|
|
1
|
+
{"version":3,"file":"switch.cjs","sources":["../../src/switch/switch.ts"],"sourcesContent":["import AeicoField, { type FieldAction } from '../aeico-field';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport type { SwitchIconPlacement } from './defines';\nimport '../icon/icon';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport fieldLabelCSS from '../styles/components/field-label.css?inline';\nimport actionButtonCSS from '../styles/components/action-button.css?inline';\nimport styles from '../styles/components/switch.css?inline';\n\nclass Switch extends AeicoField<boolean> {\n protected fieldElement: HTMLInputElement | null = null;\n\n static tagName = 'switch';\n\n @prop({ type: Boolean })\n accessor checked: boolean | undefined;\n\n @prop({ type: Boolean })\n accessor defaultChecked: boolean | undefined;\n\n @prop({ type: String })\n accessor icon: string | undefined;\n\n @prop({ type: String })\n accessor iconChecked: string | undefined;\n\n @prop({ type: String })\n accessor iconPlacement: SwitchIconPlacement | undefined;\n\n protected static styles = [\n styleVariables,\n sizeCSS,\n colorCSS,\n fieldLabelCSS,\n actionButtonCSS,\n styles,\n ];\n\n protected getValue(): boolean {\n return this.fieldElement?.checked ?? false;\n }\n\n protected writeValue(checked: boolean): void {\n if (this.fieldElement) {\n this.fieldElement.checked = Boolean(checked);\n }\n }\n\n protected getEventPayload(checked: boolean, oldChecked: boolean, action: FieldAction) {\n return { checked, oldChecked, action };\n }\n\n protected setValue(checked: boolean, options?: { silent?: boolean; action?: FieldAction }): void {\n const oldChecked = this.getValue();\n this.checked = checked;\n this.writeValue(checked);\n if (options?.silent === false) {\n this.emit('change', {\n detail: this.getEventPayload(checked, oldChecked, options.action || 'change'),\n });\n }\n }\n\n public reset(checked?: boolean, options?: { silent?: boolean }): void {\n this.setValue(checked !== undefined ? checked : (this.defaultChecked ?? false), {\n ...options,\n action: 'reset',\n });\n }\n\n public clear(options?: { silent?: boolean }): void {\n this.setValue(false, { ...options, action: 'clear' });\n }\n\n render() {\n return html(({ div, input, span, aeIcon }) => {\n const id = this.getFieldId();\n this.renderLabel(id);\n div({ className: 'switch-container field-body' }, () => {\n div({ className: 'switch-wrapper' }, () => {\n this.fieldElement = input({\n id,\n type: 'checkbox',\n className: 'field-input',\n checked: Boolean(this.checked),\n disabled: Boolean(this.disabled),\n required: Boolean(this.required),\n '@change': this.boundOnChange,\n });\n const hasIcon = this.icon || this.iconChecked;\n const placement = this.iconPlacement ?? 'knob';\n span({ className: 'toggle-slider' }, () => {\n if (!hasIcon) return;\n if (placement === 'track') {\n span({ className: 'track-icon track-icon-left' }, () => {\n aeIcon({ name: this.iconChecked ?? this.icon! });\n });\n span({ className: 'track-icon track-icon-right' }, () => {\n aeIcon({ name: this.icon ?? this.iconChecked! });\n });\n } else {\n if (this.icon && this.iconChecked) {\n span({ className: 'toggle-knob-icon icon-unchecked' }, () => {\n aeIcon({ name: this.icon! });\n });\n span({ className: 'toggle-knob-icon icon-checked' }, () => {\n aeIcon({ name: this.iconChecked! });\n });\n } else {\n span({ className: 'toggle-knob-icon' }, () => {\n aeIcon({ name: (this.icon ?? this.iconChecked)! });\n });\n }\n }\n });\n });\n this.renderActionButtons();\n });\n this.renderHelperText();\n this.renderError();\n });\n }\n}\n\nSwitch.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-switch': Switch;\n }\n}\n\nexport default Switch;\nexport type SwitchProps = InferProps<typeof Switch>;\n"],"names":["AeicoField","prop","_a","html","styleVariables","sizeCSS","colorCSS","fieldLabelCSS","actionButtonCSS"],"mappings":"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"}
|
package/dist/chunks/switch.js
CHANGED
|
@@ -1,20 +1,68 @@
|
|
|
1
|
+
import { A as AeicoField, f as fieldLabelCSS, a as actionButtonCSS } from "./action-button.js";
|
|
2
|
+
import { prop, html } from "aeico";
|
|
3
|
+
import { v as variables } from "./variables.js";
|
|
4
|
+
import { s as sizeCSS } from "./size.js";
|
|
5
|
+
import { c as colorCSS } from "./color.js";
|
|
6
|
+
const styles = ":host {\n display: block;\n font-size: var(--size-base);\n\n --switch-field-gap: 4px;\n\n --toggle-width: 2.667em;\n --toggle-height: 1.333em;\n --toggle-slider-size: 1em;\n --toggle-gap: calc((var(--toggle-height) - var(--toggle-slider-size)) / 2);\n --toggle-border-radius: calc(var(--toggle-height) / 2);\n --toggle-bg: var(--color-gray);\n --toggle-bg-checked: var(--color-solid);\n --toggle-slider-bg: white;\n --toggle-transition: 0.2s;\n\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\n --color-solid: var(--color-primary);\n}\n\n.switch-container {\n display: flex;\n align-items: center;\n gap: var(--switch-field-gap);\n}\n\n.switch-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: var(--toggle-width);\n height: var(--toggle-height);\n flex-shrink: 0;\n}\n\n.field-input {\n position: absolute;\n opacity: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n margin: 0;\n z-index: 1;\n border: none;\n border-radius: 0;\n background: none;\n accent-color: unset;\n}\n\n.field-input:disabled {\n cursor: not-allowed;\n}\n\n.toggle-slider {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--toggle-bg);\n border-radius: var(--toggle-border-radius);\n transition: var(--toggle-transition);\n pointer-events: none;\n}\n\n.toggle-slider::before {\n content: '';\n position: absolute;\n height: var(--toggle-slider-size);\n width: var(--toggle-slider-size);\n left: var(--toggle-gap);\n top: var(--toggle-gap);\n background: var(--toggle-slider-bg);\n border-radius: 50%;\n transition: var(--toggle-transition);\n}\n\n.field-input:checked + .toggle-slider {\n background: var(--toggle-bg-checked);\n}\n\n.field-input:checked + .toggle-slider::before {\n transform: translateX(calc(var(--toggle-width) - var(--toggle-height)));\n}\n\n.field-input:disabled + .toggle-slider {\n opacity: 0.5;\n pointer-events: auto;\n}\n\n/* ===== Icon size override ===== */\n/* ae-icon shadow DOM sets :host { font-size: 20px }, external styles beat it.\n Font-size on the CONTAINER span must NOT be set here — doing so causes\n double-multiplying (container 0.72× then ae-icon 0.72× again = tiny icons).\n Only the ae-icon element itself is targeted. */\n.toggle-knob-icon ae-icon,\n.track-icon ae-icon {\n font-size: var(--toggle-icon-size, calc(var(--toggle-slider-size) * 0.72));\n width: 1em;\n height: 1em;\n}\n\n/* ===== Knob icons ===== */\n.toggle-knob-icon {\n position: absolute;\n height: var(--toggle-slider-size);\n width: var(--toggle-slider-size);\n left: var(--toggle-gap);\n top: var(--toggle-gap);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n color: var(--toggle-knob-icon-color, rgba(0, 0, 0, 0.6));\n transition: var(--toggle-transition);\n}\n\n.field-input:checked + .toggle-slider .toggle-knob-icon {\n transform: translateX(calc(var(--toggle-width) - var(--toggle-height)));\n}\n\n.toggle-knob-icon.icon-checked {\n opacity: 0;\n}\n\n.field-input:checked + .toggle-slider .toggle-knob-icon.icon-checked {\n opacity: 1;\n}\n\n.field-input:checked + .toggle-slider .toggle-knob-icon.icon-unchecked {\n opacity: 0;\n}\n\n/* ===== Track icons ===== */\n/* Positioned at the same location as the knob in each state (the circular ends),\n so the icon appears to live inside the circle, not on the flat track sides. */\n.track-icon {\n position: absolute;\n top: var(--toggle-gap);\n width: var(--toggle-slider-size);\n height: var(--toggle-slider-size);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n color: var(--toggle-track-icon-color, white);\n transition: opacity var(--toggle-transition);\n}\n\n.track-icon-left {\n left: var(--toggle-gap);\n opacity: 0;\n}\n\n.track-icon-right {\n right: var(--toggle-gap);\n opacity: 1;\n}\n\n.field-input:checked + .toggle-slider .track-icon-left {\n opacity: 1;\n}\n\n.field-input:checked + .toggle-slider .track-icon-right {\n opacity: 0;\n}\n";
|
|
7
|
+
var __create = Object.create;
|
|
1
8
|
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
11
|
+
var __typeError = (msg) => {
|
|
12
|
+
throw TypeError(msg);
|
|
13
|
+
};
|
|
2
14
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
15
|
+
var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
|
|
16
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
17
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
18
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
19
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
20
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
21
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
22
|
+
return value;
|
|
23
|
+
};
|
|
24
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
25
|
+
var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
|
|
26
|
+
var j = array.length + 1, key = __decoratorStrings[k + 5];
|
|
27
|
+
var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
|
|
28
|
+
var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
|
|
29
|
+
return __privateGet(this, extra);
|
|
30
|
+
}, set [name](x) {
|
|
31
|
+
return __privateSet(this, extra, x);
|
|
32
|
+
} }, name));
|
|
33
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
34
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
35
|
+
{
|
|
36
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
|
|
37
|
+
access.get = (x) => x[name];
|
|
38
|
+
access.set = (x, y) => x[name] = y;
|
|
39
|
+
}
|
|
40
|
+
it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
|
|
41
|
+
if (it === void 0) __expectFn(it) && (desc[key] = it);
|
|
42
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
43
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
44
|
+
}
|
|
45
|
+
return desc && __defProp(target, name, desc), target;
|
|
46
|
+
};
|
|
3
47
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class Switch extends AeicoField {
|
|
48
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
49
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
|
|
50
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
51
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
52
|
+
var _iconPlacement_dec, _iconChecked_dec, _icon_dec, _defaultChecked_dec, _checked_dec, _a, _init, _checked, _defaultChecked, _icon, _iconChecked, _iconPlacement;
|
|
53
|
+
class Switch extends (_a = AeicoField, _checked_dec = [prop({ type: Boolean })], _defaultChecked_dec = [prop({ type: Boolean })], _icon_dec = [prop({ type: String })], _iconChecked_dec = [prop({ type: String })], _iconPlacement_dec = [prop({ type: String })], _a) {
|
|
11
54
|
constructor() {
|
|
12
55
|
super(...arguments);
|
|
13
56
|
__publicField(this, "fieldElement", null);
|
|
57
|
+
__privateAdd(this, _checked, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
|
|
58
|
+
__privateAdd(this, _defaultChecked, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
|
|
59
|
+
__privateAdd(this, _icon, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
|
|
60
|
+
__privateAdd(this, _iconChecked, __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
|
|
61
|
+
__privateAdd(this, _iconPlacement, __runInitializers(_init, 24, this)), __runInitializers(_init, 27, this);
|
|
14
62
|
}
|
|
15
63
|
getValue() {
|
|
16
|
-
var
|
|
17
|
-
return ((
|
|
64
|
+
var _a2;
|
|
65
|
+
return ((_a2 = this.fieldElement) == null ? void 0 : _a2.checked) ?? false;
|
|
18
66
|
}
|
|
19
67
|
writeValue(checked) {
|
|
20
68
|
if (this.fieldElement) {
|
|
@@ -44,29 +92,75 @@ class Switch extends AeicoField {
|
|
|
44
92
|
this.setValue(false, { ...options, action: "clear" });
|
|
45
93
|
}
|
|
46
94
|
render() {
|
|
47
|
-
return html(({ div, input, span }) => {
|
|
48
|
-
|
|
95
|
+
return html(({ div, input, span, aeIcon }) => {
|
|
96
|
+
const id = this.getFieldId();
|
|
97
|
+
this.renderLabel(id);
|
|
98
|
+
div({ className: "switch-container field-body" }, () => {
|
|
49
99
|
div({ className: "switch-wrapper" }, () => {
|
|
50
100
|
this.fieldElement = input({
|
|
101
|
+
id,
|
|
51
102
|
type: "checkbox",
|
|
52
103
|
className: "field-input",
|
|
53
104
|
checked: Boolean(this.checked),
|
|
54
105
|
disabled: Boolean(this.disabled),
|
|
106
|
+
required: Boolean(this.required),
|
|
55
107
|
"@change": this.boundOnChange
|
|
56
108
|
});
|
|
57
|
-
|
|
109
|
+
const hasIcon = this.icon || this.iconChecked;
|
|
110
|
+
const placement = this.iconPlacement ?? "knob";
|
|
111
|
+
span({ className: "toggle-slider" }, () => {
|
|
112
|
+
if (!hasIcon) return;
|
|
113
|
+
if (placement === "track") {
|
|
114
|
+
span({ className: "track-icon track-icon-left" }, () => {
|
|
115
|
+
aeIcon({ name: this.iconChecked ?? this.icon });
|
|
116
|
+
});
|
|
117
|
+
span({ className: "track-icon track-icon-right" }, () => {
|
|
118
|
+
aeIcon({ name: this.icon ?? this.iconChecked });
|
|
119
|
+
});
|
|
120
|
+
} else {
|
|
121
|
+
if (this.icon && this.iconChecked) {
|
|
122
|
+
span({ className: "toggle-knob-icon icon-unchecked" }, () => {
|
|
123
|
+
aeIcon({ name: this.icon });
|
|
124
|
+
});
|
|
125
|
+
span({ className: "toggle-knob-icon icon-checked" }, () => {
|
|
126
|
+
aeIcon({ name: this.iconChecked });
|
|
127
|
+
});
|
|
128
|
+
} else {
|
|
129
|
+
span({ className: "toggle-knob-icon" }, () => {
|
|
130
|
+
aeIcon({ name: this.icon ?? this.iconChecked });
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
});
|
|
58
135
|
});
|
|
59
136
|
this.renderActionButtons();
|
|
60
137
|
});
|
|
138
|
+
this.renderHelperText();
|
|
139
|
+
this.renderError();
|
|
61
140
|
});
|
|
62
141
|
}
|
|
63
142
|
}
|
|
143
|
+
_init = __decoratorStart(_a);
|
|
144
|
+
_checked = /* @__PURE__ */ new WeakMap();
|
|
145
|
+
_defaultChecked = /* @__PURE__ */ new WeakMap();
|
|
146
|
+
_icon = /* @__PURE__ */ new WeakMap();
|
|
147
|
+
_iconChecked = /* @__PURE__ */ new WeakMap();
|
|
148
|
+
_iconPlacement = /* @__PURE__ */ new WeakMap();
|
|
149
|
+
__decorateElement(_init, 4, "checked", _checked_dec, Switch, _checked);
|
|
150
|
+
__decorateElement(_init, 4, "defaultChecked", _defaultChecked_dec, Switch, _defaultChecked);
|
|
151
|
+
__decorateElement(_init, 4, "icon", _icon_dec, Switch, _icon);
|
|
152
|
+
__decorateElement(_init, 4, "iconChecked", _iconChecked_dec, Switch, _iconChecked);
|
|
153
|
+
__decorateElement(_init, 4, "iconPlacement", _iconPlacement_dec, Switch, _iconPlacement);
|
|
154
|
+
__decoratorMetadata(_init, Switch);
|
|
64
155
|
__publicField(Switch, "tagName", "switch");
|
|
65
|
-
__publicField(Switch, "
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
156
|
+
__publicField(Switch, "styles", [
|
|
157
|
+
variables,
|
|
158
|
+
sizeCSS,
|
|
159
|
+
colorCSS,
|
|
160
|
+
fieldLabelCSS,
|
|
161
|
+
actionButtonCSS,
|
|
162
|
+
styles
|
|
163
|
+
]);
|
|
70
164
|
Switch.register();
|
|
71
165
|
export {
|
|
72
166
|
Switch as S
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.js","sources":["../../src/switch/switch.ts"],"sourcesContent":["import AeicoField from '../aeico-field';\nimport type { InferProps
|
|
1
|
+
{"version":3,"file":"switch.js","sources":["../../src/switch/switch.ts"],"sourcesContent":["import AeicoField, { type FieldAction } from '../aeico-field';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport type { SwitchIconPlacement } from './defines';\nimport '../icon/icon';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport fieldLabelCSS from '../styles/components/field-label.css?inline';\nimport actionButtonCSS from '../styles/components/action-button.css?inline';\nimport styles from '../styles/components/switch.css?inline';\n\nclass Switch extends AeicoField<boolean> {\n protected fieldElement: HTMLInputElement | null = null;\n\n static tagName = 'switch';\n\n @prop({ type: Boolean })\n accessor checked: boolean | undefined;\n\n @prop({ type: Boolean })\n accessor defaultChecked: boolean | undefined;\n\n @prop({ type: String })\n accessor icon: string | undefined;\n\n @prop({ type: String })\n accessor iconChecked: string | undefined;\n\n @prop({ type: String })\n accessor iconPlacement: SwitchIconPlacement | undefined;\n\n protected static styles = [\n styleVariables,\n sizeCSS,\n colorCSS,\n fieldLabelCSS,\n actionButtonCSS,\n styles,\n ];\n\n protected getValue(): boolean {\n return this.fieldElement?.checked ?? false;\n }\n\n protected writeValue(checked: boolean): void {\n if (this.fieldElement) {\n this.fieldElement.checked = Boolean(checked);\n }\n }\n\n protected getEventPayload(checked: boolean, oldChecked: boolean, action: FieldAction) {\n return { checked, oldChecked, action };\n }\n\n protected setValue(checked: boolean, options?: { silent?: boolean; action?: FieldAction }): void {\n const oldChecked = this.getValue();\n this.checked = checked;\n this.writeValue(checked);\n if (options?.silent === false) {\n this.emit('change', {\n detail: this.getEventPayload(checked, oldChecked, options.action || 'change'),\n });\n }\n }\n\n public reset(checked?: boolean, options?: { silent?: boolean }): void {\n this.setValue(checked !== undefined ? checked : (this.defaultChecked ?? false), {\n ...options,\n action: 'reset',\n });\n }\n\n public clear(options?: { silent?: boolean }): void {\n this.setValue(false, { ...options, action: 'clear' });\n }\n\n render() {\n return html(({ div, input, span, aeIcon }) => {\n const id = this.getFieldId();\n this.renderLabel(id);\n div({ className: 'switch-container field-body' }, () => {\n div({ className: 'switch-wrapper' }, () => {\n this.fieldElement = input({\n id,\n type: 'checkbox',\n className: 'field-input',\n checked: Boolean(this.checked),\n disabled: Boolean(this.disabled),\n required: Boolean(this.required),\n '@change': this.boundOnChange,\n });\n const hasIcon = this.icon || this.iconChecked;\n const placement = this.iconPlacement ?? 'knob';\n span({ className: 'toggle-slider' }, () => {\n if (!hasIcon) return;\n if (placement === 'track') {\n span({ className: 'track-icon track-icon-left' }, () => {\n aeIcon({ name: this.iconChecked ?? this.icon! });\n });\n span({ className: 'track-icon track-icon-right' }, () => {\n aeIcon({ name: this.icon ?? this.iconChecked! });\n });\n } else {\n if (this.icon && this.iconChecked) {\n span({ className: 'toggle-knob-icon icon-unchecked' }, () => {\n aeIcon({ name: this.icon! });\n });\n span({ className: 'toggle-knob-icon icon-checked' }, () => {\n aeIcon({ name: this.iconChecked! });\n });\n } else {\n span({ className: 'toggle-knob-icon' }, () => {\n aeIcon({ name: (this.icon ?? this.iconChecked)! });\n });\n }\n }\n });\n });\n this.renderActionButtons();\n });\n this.renderHelperText();\n this.renderError();\n });\n }\n}\n\nSwitch.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-switch': Switch;\n }\n}\n\nexport default Switch;\nexport type SwitchProps = InferProps<typeof Switch>;\n"],"names":["_a","styleVariables"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
5
5
|
const variables = require("./variables.cjs");
|
|
6
6
|
const aeicoComponent = require("./aeico-component.cjs");
|
|
7
7
|
const aeico = require("aeico");
|
|
8
|
-
const tabsStyle = ':host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n[part="tab-nav"] {\n display: flex;\n flex-shrink: 0;\n border-bottom: 1px solid var(--ae-tabs-border-color, var(--border-default));\n}\n\n[part="panels"] {\n flex: 1;\n overflow: auto;\n}\n';
|
|
8
|
+
const tabsStyle = ':host {\n display: flex;\n flex-direction: column;\n gap: var(--ae-tabs-gap, 0);\n overflow: hidden;\n}\n\n[part="tab-nav"] {\n display: flex;\n flex-shrink: 0;\n border-bottom: 1px solid var(--ae-tabs-border-color, var(--border-default));\n}\n\n[part="panels"] {\n flex: 1;\n overflow: auto;\n}\n';
|
|
9
9
|
class Tabs extends aeicoComponent.AeicoComponent {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments);
|
|
@@ -57,7 +57,6 @@ class Tabs extends aeicoComponent.AeicoComponent {
|
|
|
57
57
|
}
|
|
58
58
|
connectedCallback() {
|
|
59
59
|
super.connectedCallback();
|
|
60
|
-
this.listen("_tab-click", this._handleTabClick);
|
|
61
60
|
this._observer = new MutationObserver(() => this.update());
|
|
62
61
|
this._observer.observe(this, { childList: true });
|
|
63
62
|
}
|
|
@@ -92,7 +91,7 @@ class Tabs extends aeicoComponent.AeicoComponent {
|
|
|
92
91
|
}
|
|
93
92
|
render() {
|
|
94
93
|
return aeico.html(({ nav, div, slot }) => {
|
|
95
|
-
nav({ part: "tab-nav", role: "tablist" }, () => {
|
|
94
|
+
nav({ part: "tab-nav", role: "tablist", "@_tab-click": this._handleTabClick }, () => {
|
|
96
95
|
slot({ name: "tab" });
|
|
97
96
|
});
|
|
98
97
|
div({ part: "panels" }, () => {
|
|
@@ -104,7 +103,7 @@ class Tabs extends aeicoComponent.AeicoComponent {
|
|
|
104
103
|
__publicField(Tabs, "props", {
|
|
105
104
|
activeIndex: { type: Number }
|
|
106
105
|
});
|
|
107
|
-
__publicField(Tabs, "styles", [variables.
|
|
106
|
+
__publicField(Tabs, "styles", [variables.variables, tabsStyle]);
|
|
108
107
|
Tabs.register();
|
|
109
108
|
const tabStyle = ":host {\n display: inline-flex;\n cursor: pointer;\n margin-bottom: -1px;\n}\n\nbutton {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: inherit;\n font-family: inherit;\n color: var(--ae-tab-color, #909090);\n font-size: var(--ae-tab-font-size, inherit);\n transition: color 0.15s, border-color 0.15s;\n outline: none;\n white-space: nowrap;\n user-select: none;\n}\n\nbutton:hover {\n color: var(--ae-tab-hover-color, var(--color-primary));\n}\n\nbutton:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: -2px;\n}\n\n:host([active]) button {\n color: var(--ae-tab-active-color, var(--color-primary));\n border-bottom-color: var(--ae-tab-active-color, var(--color-primary));\n}\n\n:host([disabled]) button {\n opacity: 0.4;\n cursor: not-allowed;\n pointer-events: none;\n}\n";
|
|
110
109
|
class Tab extends aeicoComponent.AeicoComponent {
|
|
@@ -123,7 +122,6 @@ class Tab extends aeicoComponent.AeicoComponent {
|
|
|
123
122
|
connectedCallback() {
|
|
124
123
|
this.setAttribute("slot", "tab");
|
|
125
124
|
super.connectedCallback();
|
|
126
|
-
this.listen("click", this._handleClick);
|
|
127
125
|
}
|
|
128
126
|
render() {
|
|
129
127
|
return aeico.html(({ button, slot }) => {
|
|
@@ -134,7 +132,8 @@ class Tab extends aeicoComponent.AeicoComponent {
|
|
|
134
132
|
role: "tab",
|
|
135
133
|
"aria-selected": this.active,
|
|
136
134
|
"aria-disabled": this.disabled,
|
|
137
|
-
disabled: this.disabled
|
|
135
|
+
disabled: this.disabled,
|
|
136
|
+
"@click": this._handleClick
|
|
138
137
|
},
|
|
139
138
|
() => {
|
|
140
139
|
slot();
|
|
@@ -150,7 +149,7 @@ __publicField(Tab, "props", {
|
|
|
150
149
|
});
|
|
151
150
|
__publicField(Tab, "styles", [tabStyle]);
|
|
152
151
|
Tab.register();
|
|
153
|
-
const tabPanelStyle = ":host {\n display: none;\n padding: 16px 0;\n}\n\n:host([active]) {\n display: block;\n}\n";
|
|
152
|
+
const tabPanelStyle = ":host {\n display: none;\n padding: var(--ae-tab-panel-padding, 16px 0);\n}\n\n:host([active]) {\n display: block;\n}\n";
|
|
154
153
|
class TabPanel extends aeicoComponent.AeicoComponent {
|
|
155
154
|
render() {
|
|
156
155
|
return aeico.html(({ slot }) => {
|