le-kit 0.1.14 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{core/cjs/index-B0mg71He.js → cjs/index-CHzu3ydp.js} +10 -3
- package/dist/cjs/index-CHzu3ydp.js.map +1 -0
- package/dist/{core/cjs → cjs}/index.cjs.js +4 -3
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/{core/cjs → cjs}/le-box.cjs.entry.js +3 -3
- package/dist/cjs/le-box.entry.cjs.js.map +1 -0
- package/dist/cjs/le-button.le-checkbox.le-collapse.le-component.le-current-heading.le-dropdown-base.le-header.le-popover.le-popup.le-scroll-progress.le-select.le-slot.le-string-input.entry.cjs.js.map +1 -0
- package/dist/cjs/le-button_13.cjs.entry.js +2579 -0
- package/dist/cjs/le-card.cjs.entry.js +29 -0
- package/dist/cjs/le-card.entry.cjs.js.map +1 -0
- package/dist/cjs/le-combobox.cjs.entry.js +237 -0
- package/dist/cjs/le-combobox.entry.cjs.js.map +1 -0
- package/dist/cjs/le-header-placeholder.cjs.entry.js +18 -0
- package/dist/cjs/le-header-placeholder.entry.cjs.js.map +1 -0
- package/dist/cjs/le-kit.cjs.js +25 -0
- package/dist/cjs/le-multiselect.cjs.entry.js +306 -0
- package/dist/cjs/le-multiselect.entry.cjs.js.map +1 -0
- package/dist/{core/cjs → cjs}/le-number-input.cjs.entry.js +3 -3
- package/dist/cjs/le-number-input.entry.cjs.js.map +1 -0
- package/dist/{core/cjs → cjs}/le-round-progress.cjs.entry.js +2 -2
- package/dist/cjs/le-round-progress.entry.cjs.js.map +1 -0
- package/dist/cjs/le-segmented-control.cjs.entry.js +245 -0
- package/dist/cjs/le-segmented-control.entry.cjs.js.map +1 -0
- package/dist/{core/cjs → cjs}/le-stack.cjs.entry.js +4 -4
- package/dist/cjs/le-stack.entry.cjs.js.map +1 -0
- package/dist/cjs/le-tab-bar.cjs.entry.js +242 -0
- package/dist/cjs/le-tab-bar.entry.cjs.js.map +1 -0
- package/dist/cjs/le-tab-panel.cjs.entry.js +100 -0
- package/dist/cjs/le-tab-panel.entry.cjs.js.map +1 -0
- package/dist/cjs/le-tab.cjs.entry.js +133 -0
- package/dist/cjs/le-tab.entry.cjs.js.map +1 -0
- package/dist/cjs/le-tabs.cjs.entry.js +307 -0
- package/dist/cjs/le-tabs.entry.cjs.js.map +1 -0
- package/dist/cjs/le-tag.cjs.entry.js +68 -0
- package/dist/cjs/le-tag.entry.cjs.js.map +1 -0
- package/dist/{core/cjs → cjs}/le-text.cjs.entry.js +3 -3
- package/dist/cjs/le-text.entry.cjs.js.map +1 -0
- package/dist/{core/cjs → cjs}/le-turntable.cjs.entry.js +2 -2
- package/dist/cjs/le-turntable.entry.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +13 -0
- package/dist/{core/cjs/utils-jdqP71LP.js → cjs/utils-CYOKcOW8.js} +3 -3
- package/dist/cjs/utils-CYOKcOW8.js.map +1 -0
- package/dist/collection/collection-manifest.json +41 -0
- package/dist/{core/collection → collection}/components/le-box/le-box.js +1 -1
- package/dist/collection/components/le-box/le-box.js.map +1 -0
- package/dist/{core/collection/components/le-button/le-button.default.css → collection/components/le-button/le-button.css} +65 -38
- package/dist/{core/collection → collection}/components/le-button/le-button.js +106 -16
- package/dist/collection/components/le-button/le-button.js.map +1 -0
- package/dist/{core/collection → collection}/components/le-card/le-card.default.css +6 -6
- package/dist/{core/collection → collection}/components/le-card/le-card.js +2 -2
- package/dist/collection/components/le-card/le-card.js.map +1 -0
- package/dist/{core/collection → collection}/components/le-checkbox/le-checkbox.js +2 -2
- package/dist/collection/components/le-checkbox/le-checkbox.js.map +1 -0
- package/dist/collection/components/le-collapse/le-collapse.css +31 -0
- package/dist/collection/components/le-collapse/le-collapse.js +188 -0
- package/dist/collection/components/le-collapse/le-collapse.js.map +1 -0
- package/dist/collection/components/le-combobox/le-combobox.css +144 -0
- package/dist/collection/components/le-combobox/le-combobox.js +659 -0
- package/dist/collection/components/le-combobox/le-combobox.js.map +1 -0
- package/dist/collection/components/le-component/le-component.css +189 -0
- package/dist/{le-kit/le-component.entry.js → collection/components/le-component/le-component.js} +137 -17
- package/dist/collection/components/le-component/le-component.js.map +1 -0
- package/dist/collection/components/le-current-heading/le-current-heading.css +12 -0
- package/dist/collection/components/le-current-heading/le-current-heading.js +130 -0
- package/dist/collection/components/le-current-heading/le-current-heading.js.map +1 -0
- package/dist/collection/components/le-dropdown-base/le-dropdown-base.css +167 -0
- package/dist/collection/components/le-dropdown-base/le-dropdown-base.js +761 -0
- package/dist/collection/components/le-dropdown-base/le-dropdown-base.js.map +1 -0
- package/dist/collection/components/le-header/le-header.css +120 -0
- package/dist/collection/components/le-header/le-header.js +508 -0
- package/dist/collection/components/le-header/le-header.js.map +1 -0
- package/dist/collection/components/le-header-placeholder/le-header-placeholder.js +21 -0
- package/dist/collection/components/le-header-placeholder/le-header-placeholder.js.map +1 -0
- package/dist/collection/components/le-multiselect/le-multiselect.css +163 -0
- package/dist/collection/components/le-multiselect/le-multiselect.js +734 -0
- package/dist/collection/components/le-multiselect/le-multiselect.js.map +1 -0
- package/dist/{core/collection → collection}/components/le-number-input/le-number-input.js +2 -2
- package/dist/collection/components/le-number-input/le-number-input.js.map +1 -0
- package/dist/{core/collection → collection}/components/le-popover/le-popover.css +20 -0
- package/dist/{core/collection → collection}/components/le-popover/le-popover.js +180 -20
- package/dist/collection/components/le-popover/le-popover.js.map +1 -0
- package/dist/{core/collection → collection}/components/le-popup/le-popup.api.js +2 -1
- package/dist/collection/components/le-popup/le-popup.api.js.map +1 -0
- package/dist/{core/collection → collection}/components/le-popup/le-popup.js +49 -19
- package/dist/collection/components/le-popup/le-popup.js.map +1 -0
- package/dist/{core/collection → collection}/components/le-round-progress/le-round-progress.js +1 -1
- package/dist/collection/components/le-round-progress/le-round-progress.js.map +1 -0
- package/dist/collection/components/le-scroll-progress/le-scroll-progress.css +29 -0
- package/dist/collection/components/le-scroll-progress/le-scroll-progress.js +186 -0
- package/dist/collection/components/le-scroll-progress/le-scroll-progress.js.map +1 -0
- package/dist/collection/components/le-segmented-control/le-segmented-control.css +78 -0
- package/dist/collection/components/le-segmented-control/le-segmented-control.js +445 -0
- package/dist/collection/components/le-segmented-control/le-segmented-control.js.map +1 -0
- package/dist/collection/components/le-select/le-select.css +121 -0
- package/dist/collection/components/le-select/le-select.js +578 -0
- package/dist/collection/components/le-select/le-select.js.map +1 -0
- package/dist/collection/components/le-slot/le-slot.default.css +222 -0
- package/dist/{le-kit/le-slot.entry.js → collection/components/le-slot/le-slot.js} +268 -17
- package/dist/collection/components/le-slot/le-slot.js.map +1 -0
- package/dist/{core/collection → collection}/components/le-stack/le-stack.js +2 -2
- package/dist/collection/components/le-stack/le-stack.js.map +1 -0
- package/dist/{core/collection → collection}/components/le-string-input/le-string-input.css +1 -1
- package/dist/{core/collection → collection}/components/le-string-input/le-string-input.js +60 -6
- package/dist/collection/components/le-string-input/le-string-input.js.map +1 -0
- package/dist/collection/components/le-tab/le-tab.css +289 -0
- package/dist/collection/components/le-tab/le-tab.js +565 -0
- package/dist/collection/components/le-tab/le-tab.js.map +1 -0
- package/dist/collection/components/le-tab-bar/le-tab-bar.css +89 -0
- package/dist/collection/components/le-tab-bar/le-tab-bar.js +467 -0
- package/dist/collection/components/le-tab-bar/le-tab-bar.js.map +1 -0
- package/dist/collection/components/le-tab-panel/le-tab-panel.css +30 -0
- package/dist/collection/components/le-tab-panel/le-tab-panel.js +302 -0
- package/dist/collection/components/le-tab-panel/le-tab-panel.js.map +1 -0
- package/dist/collection/components/le-tabs/le-tabs.css +146 -0
- package/dist/collection/components/le-tabs/le-tabs.js +588 -0
- package/dist/collection/components/le-tabs/le-tabs.js.map +1 -0
- package/dist/collection/components/le-tag/le-tag.css +139 -0
- package/dist/collection/components/le-tag/le-tag.js +266 -0
- package/dist/collection/components/le-tag/le-tag.js.map +1 -0
- package/dist/{core/collection → collection}/components/le-text/le-text.js +1 -1
- package/dist/collection/components/le-text/le-text.js.map +1 -0
- package/dist/{core/collection → collection}/components/le-turntable/le-turntable.js +1 -1
- package/dist/collection/components/le-turntable/le-turntable.js.map +1 -0
- package/dist/collection/dist/components/assets/.gitkeep +1 -0
- package/dist/collection/dist/components/assets/custom-elements.json +9234 -0
- package/dist/collection/dist/components/themes/base.css +89 -0
- package/dist/collection/dist/components/themes/dark.css +103 -0
- package/dist/collection/dist/components/themes/default.css +111 -0
- package/dist/collection/dist/components/themes/gradient.css +103 -0
- package/dist/collection/dist/components/themes/index.css +76 -0
- package/dist/collection/dist/components/themes/minimal.css +103 -0
- package/dist/collection/dist/components/themes/warm.css +103 -0
- package/dist/collection/global/app.js.map +1 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/types/blocks.js.map +1 -0
- package/dist/collection/types/options.js.map +1 -0
- package/dist/collection/utils/utils.js.map +1 -0
- package/dist/components/assets/.gitkeep +1 -0
- package/dist/components/assets/custom-elements.json +9234 -0
- package/dist/components/index.js +11 -0
- package/dist/components/index.js.map +1 -0
- package/dist/{core/components → components}/le-box.js +22 -6
- package/dist/components/le-box.js.map +1 -0
- package/dist/{core/components → components}/le-button.js +1 -1
- package/dist/{core/components → components}/le-button2.js +671 -35
- package/dist/components/le-button2.js.map +1 -0
- package/dist/{core/components → components}/le-card.js +22 -6
- package/dist/components/le-card.js.map +1 -0
- package/dist/{core/components → components}/le-checkbox.js +1 -1
- package/dist/components/le-collapse.d.ts +11 -0
- package/dist/components/le-collapse.js +144 -0
- package/dist/components/le-collapse.js.map +1 -0
- package/dist/components/le-combobox.d.ts +11 -0
- package/dist/components/le-combobox.js +326 -0
- package/dist/components/le-combobox.js.map +1 -0
- package/dist/{core/components → components}/le-component.js +1 -1
- package/dist/components/le-current-heading.d.ts +11 -0
- package/dist/components/le-current-heading.js +93 -0
- package/dist/components/le-current-heading.js.map +1 -0
- package/dist/components/le-dropdown-base.d.ts +11 -0
- package/dist/components/le-dropdown-base.js +9 -0
- package/dist/components/le-dropdown-base.js.map +1 -0
- package/dist/components/le-dropdown-base2.js +393 -0
- package/dist/components/le-dropdown-base2.js.map +1 -0
- package/dist/components/le-header-placeholder.d.ts +11 -0
- package/dist/components/le-header-placeholder.js +37 -0
- package/dist/components/le-header-placeholder.js.map +1 -0
- package/dist/components/le-header.d.ts +11 -0
- package/dist/components/le-header.js +347 -0
- package/dist/components/le-header.js.map +1 -0
- package/dist/components/le-multiselect.d.ts +11 -0
- package/dist/components/le-multiselect.js +405 -0
- package/dist/components/le-multiselect.js.map +1 -0
- package/dist/{core/components → components}/le-number-input.js +23 -7
- package/dist/components/le-number-input.js.map +1 -0
- package/dist/{core/components → components}/le-popover2.js +143 -21
- package/dist/components/le-popover2.js.map +1 -0
- package/dist/{core/components/index.js → components/le-popup.api.js} +5 -12
- package/dist/components/le-popup.api.js.map +1 -0
- package/dist/components/le-popup.js +9 -0
- package/dist/components/le-popup.js.map +1 -0
- package/dist/{core/components → components}/le-round-progress.js +1 -1
- package/dist/components/le-scroll-progress.d.ts +11 -0
- package/dist/components/le-scroll-progress.js +142 -0
- package/dist/components/le-scroll-progress.js.map +1 -0
- package/dist/components/le-segmented-control.d.ts +11 -0
- package/dist/components/le-segmented-control.js +331 -0
- package/dist/components/le-segmented-control.js.map +1 -0
- package/dist/components/le-select.d.ts +11 -0
- package/dist/components/le-select.js +9 -0
- package/dist/components/le-select.js.map +1 -0
- package/dist/{core/components → components}/le-slot.js +1 -1
- package/dist/{core/components → components}/le-stack.js +23 -7
- package/dist/components/le-stack.js.map +1 -0
- package/dist/{core/components → components}/le-string-input.js +1 -1
- package/dist/components/le-tab-bar.d.ts +11 -0
- package/dist/components/le-tab-bar.js +330 -0
- package/dist/components/le-tab-bar.js.map +1 -0
- package/dist/components/le-tab-panel.d.ts +11 -0
- package/dist/components/le-tab-panel.js +182 -0
- package/dist/components/le-tab-panel.js.map +1 -0
- package/dist/components/le-tab.d.ts +11 -0
- package/dist/components/le-tab.js +9 -0
- package/dist/components/le-tab.js.map +1 -0
- package/dist/components/le-tab2.js +217 -0
- package/dist/components/le-tab2.js.map +1 -0
- package/dist/components/le-tabs.d.ts +11 -0
- package/dist/components/le-tabs.js +397 -0
- package/dist/components/le-tabs.js.map +1 -0
- package/dist/components/le-tag.d.ts +11 -0
- package/dist/components/le-tag.js +9 -0
- package/dist/components/le-tag.js.map +1 -0
- package/dist/components/le-tag2.js +141 -0
- package/dist/components/le-tag2.js.map +1 -0
- package/dist/{core/components → components}/le-text.js +22 -6
- package/dist/components/le-text.js.map +1 -0
- package/dist/{core/components → components}/le-turntable.js +1 -1
- package/dist/components/themes/base.css +4 -4
- package/dist/components/themes/dark.css +4 -1
- package/dist/components/themes/default.css +4 -1
- package/dist/components/themes/gradient.css +4 -1
- package/dist/components/themes/index.css +4 -341
- package/dist/components/themes/minimal.css +4 -1
- package/dist/components/themes/warm.css +4 -1
- package/dist/docs.d.ts +443 -0
- package/dist/docs.json +11547 -0
- package/dist/{core/esm/index-SKsXnjWI.js → esm/index-hmBwv43R.js} +10 -4
- package/dist/esm/index-hmBwv43R.js.map +1 -0
- package/dist/{core/esm → esm}/index.js +4 -3
- package/dist/esm/index.js.map +1 -0
- package/dist/{le-kit → esm}/le-box.entry.js +3 -3
- package/dist/esm/le-box.entry.js.map +1 -0
- package/dist/esm/le-button.le-checkbox.le-collapse.le-component.le-current-heading.le-dropdown-base.le-header.le-popover.le-popup.le-scroll-progress.le-select.le-slot.le-string-input.entry.js.map +1 -0
- package/dist/esm/le-button_13.entry.js +2565 -0
- package/dist/{le-kit → esm}/le-card.entry.js +3 -3
- package/dist/esm/le-card.entry.js.map +1 -0
- package/dist/esm/le-combobox.entry.js +235 -0
- package/dist/esm/le-combobox.entry.js.map +1 -0
- package/dist/esm/le-header-placeholder.entry.js +16 -0
- package/dist/esm/le-header-placeholder.entry.js.map +1 -0
- package/dist/esm/le-kit.js +21 -0
- package/dist/esm/le-multiselect.entry.js +304 -0
- package/dist/esm/le-multiselect.entry.js.map +1 -0
- package/dist/{le-kit → esm}/le-number-input.entry.js +6 -6
- package/dist/esm/le-number-input.entry.js.map +1 -0
- package/dist/{core/esm → esm}/le-round-progress.entry.js +2 -2
- package/dist/esm/le-round-progress.entry.js.map +1 -0
- package/dist/esm/le-segmented-control.entry.js +243 -0
- package/dist/esm/le-segmented-control.entry.js.map +1 -0
- package/dist/{le-kit → esm}/le-stack.entry.js +4 -4
- package/dist/esm/le-stack.entry.js.map +1 -0
- package/dist/esm/le-tab-bar.entry.js +240 -0
- package/dist/esm/le-tab-bar.entry.js.map +1 -0
- package/dist/esm/le-tab-panel.entry.js +98 -0
- package/dist/esm/le-tab-panel.entry.js.map +1 -0
- package/dist/esm/le-tab.entry.js +131 -0
- package/dist/esm/le-tab.entry.js.map +1 -0
- package/dist/esm/le-tabs.entry.js +305 -0
- package/dist/esm/le-tabs.entry.js.map +1 -0
- package/dist/esm/le-tag.entry.js +66 -0
- package/dist/esm/le-tag.entry.js.map +1 -0
- package/dist/{le-kit → esm}/le-text.entry.js +3 -3
- package/dist/esm/le-text.entry.js.map +1 -0
- package/dist/{core/esm → esm}/le-turntable.entry.js +2 -2
- package/dist/esm/le-turntable.entry.js.map +1 -0
- package/dist/esm/loader.js +11 -0
- package/dist/{le-kit/utils-cwSNy7ZS.js → esm/utils-DRTFlnxz.js} +3 -3
- package/dist/{le-kit/utils-cwSNy7ZS.js.map → esm/utils-DRTFlnxz.js.map} +1 -1
- package/dist/le-kit/dist/components/assets/.gitkeep +1 -0
- package/dist/le-kit/dist/components/assets/custom-elements.json +9234 -0
- package/dist/le-kit/dist/components/themes/base.css +4 -4
- package/dist/le-kit/dist/components/themes/dark.css +4 -1
- package/dist/le-kit/dist/components/themes/default.css +4 -1
- package/dist/le-kit/dist/components/themes/gradient.css +4 -1
- package/dist/le-kit/dist/components/themes/index.css +4 -341
- package/dist/le-kit/dist/components/themes/minimal.css +4 -1
- package/dist/le-kit/dist/components/themes/warm.css +4 -1
- package/dist/le-kit/index.esm.js +2 -116
- package/dist/le-kit/index.esm.js.map +1 -1
- package/dist/le-kit/le-button.le-checkbox.le-collapse.le-component.le-current-heading.le-dropdown-base.le-header.le-popover.le-popup.le-scroll-progress.le-select.le-slot.le-string-input.entry.esm.js.map +1 -0
- package/dist/le-kit/le-combobox.entry.esm.js.map +1 -0
- package/dist/le-kit/le-header-placeholder.entry.esm.js.map +1 -0
- package/dist/le-kit/le-kit.css +1 -1010
- package/dist/le-kit/le-kit.esm.js +2 -48
- package/dist/le-kit/le-kit.esm.js.map +1 -1
- package/dist/le-kit/le-multiselect.entry.esm.js.map +1 -0
- package/dist/le-kit/le-segmented-control.entry.esm.js.map +1 -0
- package/dist/le-kit/le-tab-bar.entry.esm.js.map +1 -0
- package/dist/le-kit/le-tab-panel.entry.esm.js.map +1 -0
- package/dist/le-kit/le-tab.entry.esm.js.map +1 -0
- package/dist/le-kit/le-tabs.entry.esm.js.map +1 -0
- package/dist/le-kit/le-tag.entry.esm.js.map +1 -0
- package/dist/le-kit/p-13a4dc1d.entry.js +2 -0
- package/dist/le-kit/p-13a4dc1d.entry.js.map +1 -0
- package/dist/{core/le-kit/p-55f70091.entry.js → le-kit/p-1a9e65d0.entry.js} +2 -2
- package/dist/le-kit/p-1a9e65d0.entry.js.map +1 -0
- package/dist/le-kit/p-2708dc65.entry.js +2 -0
- package/dist/le-kit/p-2708dc65.entry.js.map +1 -0
- package/dist/le-kit/p-2b96a5bd.entry.js +2 -0
- package/dist/le-kit/p-2b96a5bd.entry.js.map +1 -0
- package/dist/le-kit/p-32cbb683.entry.js +2 -0
- package/dist/le-kit/p-32cbb683.entry.js.map +1 -0
- package/dist/le-kit/p-476e1886.entry.js +2 -0
- package/dist/le-kit/p-476e1886.entry.js.map +1 -0
- package/dist/le-kit/p-67d702f9.entry.js +2 -0
- package/dist/le-kit/p-67d702f9.entry.js.map +1 -0
- package/dist/{core/le-kit/p-6e414a5c.entry.js → le-kit/p-6884e3e8.entry.js} +2 -2
- package/dist/le-kit/p-6884e3e8.entry.js.map +1 -0
- package/dist/le-kit/p-704ad5e0.entry.js +2 -0
- package/dist/le-kit/p-704ad5e0.entry.js.map +1 -0
- package/dist/le-kit/p-88f9aa40.entry.js +2 -0
- package/dist/le-kit/p-88f9aa40.entry.js.map +1 -0
- package/dist/le-kit/p-8dd8a487.entry.js +2 -0
- package/dist/le-kit/p-8dd8a487.entry.js.map +1 -0
- package/dist/le-kit/p-97b7658a.entry.js +2 -0
- package/dist/le-kit/p-97b7658a.entry.js.map +1 -0
- package/dist/le-kit/p-c0925e92.entry.js +2 -0
- package/dist/le-kit/p-c0925e92.entry.js.map +1 -0
- package/dist/le-kit/p-c2494a0d.entry.js +2 -0
- package/dist/le-kit/p-c2494a0d.entry.js.map +1 -0
- package/dist/le-kit/p-ded51018.entry.js +2 -0
- package/dist/le-kit/p-ded51018.entry.js.map +1 -0
- package/dist/{core/le-kit/p-a9d05ef6.entry.js → le-kit/p-e3db7974.entry.js} +2 -2
- package/dist/le-kit/p-e3db7974.entry.js.map +1 -0
- package/dist/{core/le-kit/p-4f133e72.entry.js → le-kit/p-f9b03aec.entry.js} +2 -2
- package/dist/le-kit/p-f9b03aec.entry.js.map +1 -0
- package/dist/le-kit/p-hmBwv43R.js +3 -0
- package/dist/le-kit/p-hmBwv43R.js.map +1 -0
- package/dist/le-kit/p-txKmCJHv.js +2 -0
- package/dist/le-kit/p-txKmCJHv.js.map +1 -0
- package/dist/themes/base.css +89 -0
- package/dist/themes/dark.css +103 -0
- package/dist/themes/default.css +111 -0
- package/dist/themes/gradient.css +103 -0
- package/dist/themes/index.css +76 -0
- package/dist/themes/minimal.css +103 -0
- package/dist/themes/warm.css +103 -0
- package/dist/types/components/le-button/le-button.d.ts +19 -4
- package/dist/types/components/le-collapse/le-collapse.d.ts +41 -0
- package/dist/types/components/le-combobox/le-combobox.d.ts +128 -0
- package/dist/types/components/le-current-heading/le-current-heading.d.ts +25 -0
- package/dist/types/components/le-dropdown-base/le-dropdown-base.d.ts +118 -0
- package/dist/types/components/le-header/le-header.d.ts +115 -0
- package/dist/types/components/le-header-placeholder/le-header-placeholder.d.ts +13 -0
- package/dist/types/components/le-multiselect/le-multiselect.d.ts +143 -0
- package/dist/types/components/le-popover/le-popover.d.ts +22 -2
- package/dist/types/components/le-popup/le-popup.d.ts +5 -0
- package/dist/types/components/le-scroll-progress/le-scroll-progress.d.ts +40 -0
- package/dist/types/components/le-segmented-control/le-segmented-control.d.ts +82 -0
- package/dist/types/components/le-select/le-select.d.ts +125 -0
- package/dist/types/components/le-string-input/le-string-input.d.ts +8 -0
- package/dist/types/components/le-tab/le-tab.d.ts +116 -0
- package/dist/types/components/le-tab-bar/le-tab-bar.d.ts +88 -0
- package/dist/types/components/le-tab-panel/le-tab-panel.d.ts +75 -0
- package/dist/types/components/le-tabs/le-tabs.d.ts +108 -0
- package/dist/types/components/le-tag/le-tag.d.ts +78 -0
- package/dist/types/components.d.ts +3061 -273
- package/dist/types/types/options.d.ts +9 -0
- package/package.json +3 -18
- package/dist/core/cjs/index-B0mg71He.js.map +0 -1
- package/dist/core/cjs/index.cjs.js.map +0 -1
- package/dist/core/cjs/le-box.entry.cjs.js.map +0 -1
- package/dist/core/cjs/le-button.cjs.entry.js +0 -92
- package/dist/core/cjs/le-button.entry.cjs.js.map +0 -1
- package/dist/core/cjs/le-card.cjs.entry.js +0 -29
- package/dist/core/cjs/le-card.entry.cjs.js.map +0 -1
- package/dist/core/cjs/le-checkbox.cjs.entry.js +0 -61
- package/dist/core/cjs/le-checkbox.entry.cjs.js.map +0 -1
- package/dist/core/cjs/le-kit.cjs.js +0 -25
- package/dist/core/cjs/le-number-input.entry.cjs.js.map +0 -1
- package/dist/core/cjs/le-popover.cjs.entry.js +0 -348
- package/dist/core/cjs/le-popover.entry.cjs.js.map +0 -1
- package/dist/core/cjs/le-popup.cjs.entry.js +0 -212
- package/dist/core/cjs/le-popup.entry.cjs.js.map +0 -1
- package/dist/core/cjs/le-round-progress.entry.cjs.js.map +0 -1
- package/dist/core/cjs/le-stack.entry.cjs.js.map +0 -1
- package/dist/core/cjs/le-string-input.cjs.entry.js +0 -95
- package/dist/core/cjs/le-string-input.entry.cjs.js.map +0 -1
- package/dist/core/cjs/le-text.entry.cjs.js.map +0 -1
- package/dist/core/cjs/le-turntable.entry.cjs.js.map +0 -1
- package/dist/core/cjs/loader.cjs.js +0 -13
- package/dist/core/cjs/utils-jdqP71LP.js.map +0 -1
- package/dist/core/collection/collection-manifest.json +0 -24
- package/dist/core/collection/components/le-box/le-box.js.map +0 -1
- package/dist/core/collection/components/le-button/le-button.js.map +0 -1
- package/dist/core/collection/components/le-card/le-card.js.map +0 -1
- package/dist/core/collection/components/le-checkbox/le-checkbox.js.map +0 -1
- package/dist/core/collection/components/le-number-input/le-number-input.js.map +0 -1
- package/dist/core/collection/components/le-popover/le-popover.js.map +0 -1
- package/dist/core/collection/components/le-popup/le-popup.api.js.map +0 -1
- package/dist/core/collection/components/le-popup/le-popup.js.map +0 -1
- package/dist/core/collection/components/le-round-progress/le-round-progress.js.map +0 -1
- package/dist/core/collection/components/le-stack/le-stack.js.map +0 -1
- package/dist/core/collection/components/le-string-input/le-string-input.js.map +0 -1
- package/dist/core/collection/components/le-text/le-text.js.map +0 -1
- package/dist/core/collection/components/le-turntable/le-turntable.js.map +0 -1
- package/dist/core/collection/global/app.js.map +0 -1
- package/dist/core/collection/index.js.map +0 -1
- package/dist/core/collection/types/blocks.js.map +0 -1
- package/dist/core/collection/types/options.js.map +0 -1
- package/dist/core/collection/utils/utils.js.map +0 -1
- package/dist/core/components/index.d.ts +0 -33
- package/dist/core/components/index.js.map +0 -1
- package/dist/core/components/le-box.d.ts +0 -11
- package/dist/core/components/le-box.js.map +0 -1
- package/dist/core/components/le-button.d.ts +0 -11
- package/dist/core/components/le-button2.js.map +0 -1
- package/dist/core/components/le-card.d.ts +0 -11
- package/dist/core/components/le-card.js.map +0 -1
- package/dist/core/components/le-checkbox.d.ts +0 -11
- package/dist/core/components/le-component.d.ts +0 -11
- package/dist/core/components/le-number-input.d.ts +0 -11
- package/dist/core/components/le-number-input.js.map +0 -1
- package/dist/core/components/le-popover.d.ts +0 -11
- package/dist/core/components/le-popover2.js.map +0 -1
- package/dist/core/components/le-popup.d.ts +0 -11
- package/dist/core/components/le-popup.js +0 -279
- package/dist/core/components/le-popup.js.map +0 -1
- package/dist/core/components/le-round-progress.d.ts +0 -11
- package/dist/core/components/le-slot.d.ts +0 -11
- package/dist/core/components/le-stack.d.ts +0 -11
- package/dist/core/components/le-stack.js.map +0 -1
- package/dist/core/components/le-string-input.d.ts +0 -11
- package/dist/core/components/le-text.d.ts +0 -11
- package/dist/core/components/le-text.js.map +0 -1
- package/dist/core/components/le-turntable.d.ts +0 -11
- package/dist/core/esm/index-SKsXnjWI.js.map +0 -1
- package/dist/core/esm/index.js.map +0 -1
- package/dist/core/esm/le-box.entry.js +0 -182
- package/dist/core/esm/le-box.entry.js.map +0 -1
- package/dist/core/esm/le-button.entry.js +0 -90
- package/dist/core/esm/le-button.entry.js.map +0 -1
- package/dist/core/esm/le-card.entry.js +0 -27
- package/dist/core/esm/le-card.entry.js.map +0 -1
- package/dist/core/esm/le-checkbox.entry.js +0 -59
- package/dist/core/esm/le-checkbox.entry.js.map +0 -1
- package/dist/core/esm/le-kit.js +0 -21
- package/dist/core/esm/le-number-input.entry.js +0 -200
- package/dist/core/esm/le-number-input.entry.js.map +0 -1
- package/dist/core/esm/le-popover.entry.js +0 -346
- package/dist/core/esm/le-popover.entry.js.map +0 -1
- package/dist/core/esm/le-popup.entry.js +0 -210
- package/dist/core/esm/le-popup.entry.js.map +0 -1
- package/dist/core/esm/le-round-progress.entry.js.map +0 -1
- package/dist/core/esm/le-stack.entry.js +0 -133
- package/dist/core/esm/le-stack.entry.js.map +0 -1
- package/dist/core/esm/le-string-input.entry.js +0 -93
- package/dist/core/esm/le-string-input.entry.js.map +0 -1
- package/dist/core/esm/le-text.entry.js +0 -333
- package/dist/core/esm/le-text.entry.js.map +0 -1
- package/dist/core/esm/le-turntable.entry.js.map +0 -1
- package/dist/core/esm/loader.js +0 -11
- package/dist/core/esm/utils-DZdP1JiG.js +0 -146
- package/dist/core/esm/utils-DZdP1JiG.js.map +0 -1
- package/dist/core/le-kit/index.esm.js +0 -2
- package/dist/core/le-kit/index.esm.js.map +0 -1
- package/dist/core/le-kit/le-box.entry.esm.js.map +0 -1
- package/dist/core/le-kit/le-button.entry.esm.js.map +0 -1
- package/dist/core/le-kit/le-card.entry.esm.js.map +0 -1
- package/dist/core/le-kit/le-checkbox.entry.esm.js.map +0 -1
- package/dist/core/le-kit/le-kit.css +0 -1
- package/dist/core/le-kit/le-kit.esm.js +0 -2
- package/dist/core/le-kit/le-kit.esm.js.map +0 -1
- package/dist/core/le-kit/le-number-input.entry.esm.js.map +0 -1
- package/dist/core/le-kit/le-popover.entry.esm.js.map +0 -1
- package/dist/core/le-kit/le-popup.entry.esm.js.map +0 -1
- package/dist/core/le-kit/le-round-progress.entry.esm.js.map +0 -1
- package/dist/core/le-kit/le-stack.entry.esm.js.map +0 -1
- package/dist/core/le-kit/le-string-input.entry.esm.js.map +0 -1
- package/dist/core/le-kit/le-text.entry.esm.js.map +0 -1
- package/dist/core/le-kit/le-turntable.entry.esm.js.map +0 -1
- package/dist/core/le-kit/loader.esm.js.map +0 -1
- package/dist/core/le-kit/p--VxUdzYV.js +0 -2
- package/dist/core/le-kit/p--VxUdzYV.js.map +0 -1
- package/dist/core/le-kit/p-189cb775.entry.js +0 -2
- package/dist/core/le-kit/p-189cb775.entry.js.map +0 -1
- package/dist/core/le-kit/p-35c1d413.entry.js +0 -2
- package/dist/core/le-kit/p-35c1d413.entry.js.map +0 -1
- package/dist/core/le-kit/p-4f133e72.entry.js.map +0 -1
- package/dist/core/le-kit/p-55f70091.entry.js.map +0 -1
- package/dist/core/le-kit/p-5fd7b23a.entry.js +0 -2
- package/dist/core/le-kit/p-5fd7b23a.entry.js.map +0 -1
- package/dist/core/le-kit/p-6e414a5c.entry.js.map +0 -1
- package/dist/core/le-kit/p-7b121ca7.entry.js +0 -2
- package/dist/core/le-kit/p-7b121ca7.entry.js.map +0 -1
- package/dist/core/le-kit/p-8c81fa95.entry.js +0 -2
- package/dist/core/le-kit/p-8c81fa95.entry.js.map +0 -1
- package/dist/core/le-kit/p-9aa81442.entry.js +0 -2
- package/dist/core/le-kit/p-9aa81442.entry.js.map +0 -1
- package/dist/core/le-kit/p-SKsXnjWI.js +0 -3
- package/dist/core/le-kit/p-SKsXnjWI.js.map +0 -1
- package/dist/core/le-kit/p-a9d05ef6.entry.js.map +0 -1
- package/dist/core/le-kit/p-b2bd2a80.entry.js +0 -2
- package/dist/core/le-kit/p-b2bd2a80.entry.js.map +0 -1
- package/dist/core/le-kit/p-ccac9611.entry.js +0 -2
- package/dist/core/le-kit/p-ccac9611.entry.js.map +0 -1
- package/dist/core/loader/cdn.js +0 -1
- package/dist/core/loader/index.cjs.js +0 -1
- package/dist/core/loader/index.d.ts +0 -24
- package/dist/core/loader/index.es2017.js +0 -1
- package/dist/core/loader/index.js +0 -2
- package/dist/core/types/components/le-box/le-box.d.ts +0 -111
- package/dist/core/types/components/le-button/le-button.d.ts +0 -78
- package/dist/core/types/components/le-card/le-card.d.ts +0 -37
- package/dist/core/types/components/le-checkbox/le-checkbox.d.ts +0 -46
- package/dist/core/types/components/le-number-input/le-number-input.d.ts +0 -106
- package/dist/core/types/components/le-popover/le-popover.d.ts +0 -109
- package/dist/core/types/components/le-popup/le-popup.api.d.ts +0 -73
- package/dist/core/types/components/le-popup/le-popup.d.ts +0 -122
- package/dist/core/types/components/le-round-progress/le-round-progress.d.ts +0 -37
- package/dist/core/types/components/le-stack/le-stack.d.ts +0 -73
- package/dist/core/types/components/le-string-input/le-string-input.d.ts +0 -83
- package/dist/core/types/components/le-text/le-text.d.ts +0 -141
- package/dist/core/types/components/le-turntable/le-turntable.d.ts +0 -55
- package/dist/core/types/components.d.ts +0 -1752
- package/dist/core/types/global/app.d.ts +0 -73
- package/dist/core/types/index.d.ts +0 -15
- package/dist/core/types/stencil-public-runtime.d.ts +0 -1756
- package/dist/core/types/types/blocks.d.ts +0 -136
- package/dist/core/types/types/options.d.ts +0 -124
- package/dist/core/types/utils/utils.d.ts +0 -54
- package/dist/le-kit/assets/custom-elements.json +0 -4305
- package/dist/le-kit/index-CAY3Hk_i.js +0 -4559
- package/dist/le-kit/index-CAY3Hk_i.js.map +0 -1
- package/dist/le-kit/le-button.entry.esm.js.map +0 -1
- package/dist/le-kit/le-button.entry.js +0 -90
- package/dist/le-kit/le-checkbox.entry.esm.js.map +0 -1
- package/dist/le-kit/le-checkbox.entry.js +0 -59
- package/dist/le-kit/le-component.entry.esm.js.map +0 -1
- package/dist/le-kit/le-popover.entry.esm.js.map +0 -1
- package/dist/le-kit/le-popover.entry.js +0 -346
- package/dist/le-kit/le-popup.entry.esm.js.map +0 -1
- package/dist/le-kit/le-popup.entry.js +0 -210
- package/dist/le-kit/le-round-progress.entry.js +0 -104
- package/dist/le-kit/le-slot.entry.esm.js.map +0 -1
- package/dist/le-kit/le-string-input.entry.esm.js.map +0 -1
- package/dist/le-kit/le-string-input.entry.js +0 -93
- package/dist/le-kit/le-turntable.entry.js +0 -137
- /package/dist/{core/cjs → cjs}/le-kit.cjs.js.map +0 -0
- /package/dist/{core/cjs → cjs}/loader.cjs.js.map +0 -0
- /package/dist/{core/collection → collection}/components/le-box/le-box.default.css +0 -0
- /package/dist/{core/collection → collection}/components/le-checkbox/le-checkbox.css +0 -0
- /package/dist/{core/collection → collection}/components/le-number-input/le-number-input.css +0 -0
- /package/dist/{core/collection → collection}/components/le-popup/le-popup.css +0 -0
- /package/dist/{core/collection → collection}/components/le-round-progress/le-round-progress.css +0 -0
- /package/dist/{core/collection → collection}/components/le-stack/le-stack.default.css +0 -0
- /package/dist/{core/collection → collection}/components/le-text/le-text.default.css +0 -0
- /package/dist/{core/collection → collection}/components/le-turntable/le-turntable.css +0 -0
- /package/dist/{core/collection → collection}/global/app.js +0 -0
- /package/dist/{core/collection → collection}/index.js +0 -0
- /package/dist/{core/collection → collection}/types/blocks.js +0 -0
- /package/dist/{core/collection → collection}/types/options.js +0 -0
- /package/dist/{core/collection → collection}/utils/utils.js +0 -0
- /package/dist/{core/components → components}/le-button.js.map +0 -0
- /package/dist/{core/components → components}/le-checkbox.js.map +0 -0
- /package/dist/{core/components → components}/le-component.js.map +0 -0
- /package/dist/{core/components → components}/le-popover.js +0 -0
- /package/dist/{core/components → components}/le-popover.js.map +0 -0
- /package/dist/{core/components → components}/le-round-progress.js.map +0 -0
- /package/dist/{core/components → components}/le-slot.js.map +0 -0
- /package/dist/{core/components → components}/le-string-input.js.map +0 -0
- /package/dist/{core/components → components}/le-turntable.js.map +0 -0
- /package/dist/{core/components → components}/utils.js +0 -0
- /package/dist/{core/components → components}/utils.js.map +0 -0
- /package/dist/{core/esm → esm}/le-kit.js.map +0 -0
- /package/dist/{core/esm → esm}/loader.js.map +0 -0
- /package/dist/{core/index.cjs.js → index.cjs.js} +0 -0
- /package/dist/{core/index.js → index.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"le-multiselect.js","sourceRoot":"","sources":["../../../src/components/le-multiselect/le-multiselect.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n Method,\n Element,\n Watch,\n h,\n} from '@stencil/core';\nimport {\n LeOption,\n LeOptionValue,\n LeMultiOptionSelectDetail,\n LeOptionSelectDetail,\n} from '../../types/options';\n\n/**\n * A multiselect component for selecting multiple options.\n *\n * Displays selected items as tags with optional search filtering.\n *\n * @cmsEditable true\n * @cmsCategory Form\n *\n * @example Basic multiselect\n * ```html\n * <le-multiselect\n * placeholder=\"Select options...\"\n * options='[{\"label\": \"Red\"}, {\"label\": \"Green\"}, {\"label\": \"Blue\"}]'\n * ></le-multiselect>\n * ```\n *\n * @example With max selections\n * ```html\n * <le-multiselect\n * max-selections=\"3\"\n * options='[{\"label\": \"Option 1\"}, {\"label\": \"Option 2\"}, {\"label\": \"Option 3\"}, {\"label\": \"Option 4\"}]'\n * ></le-multiselect>\n * ```\n *\n * @example With search\n * ```html\n * <le-multiselect\n * searchable\n * placeholder=\"Search and select...\"\n * options='[{\"label\": \"Apple\"}, {\"label\": \"Banana\"}, {\"label\": \"Cherry\"}]'\n * ></le-multiselect>\n * ```\n */\n@Component({\n tag: 'le-multiselect',\n styleUrl: 'le-multiselect.css',\n shadow: true,\n})\nexport class LeMultiselect {\n @Element() el: HTMLElement;\n\n /**\n * The options to display in the dropdown.\n */\n @Prop() options: LeOption[] | string = [];\n\n /**\n * The currently selected values.\n */\n @Prop({ mutable: true }) value: LeOptionValue[] = [];\n\n /**\n * Placeholder text when no options are selected.\n */\n @Prop() placeholder: string = 'Select options...';\n\n /**\n * Whether the multiselect is disabled.\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * Whether selection is required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Name attribute for form submission.\n */\n @Prop() name?: string;\n\n /**\n * Whether the multiselect should take full width of its container.\n */\n @Prop({ reflect: true }) fullWidth: boolean = false;\n\n /**\n * Size variant of the multiselect.\n */\n @Prop({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Maximum number of selections allowed.\n */\n @Prop() maxSelections?: number;\n\n /**\n * Labels for the \"Select All\" option.\n */\n @State() private selectAllLabel: string = 'Select All';\n @State() private deselectAllLabel: string = 'Deselect All';\n\n /**\n * Whether to show a \"Select All\" option.\n * Also accepts a string or array of strings to customize the label(s).\n */\n @Prop({ mutable: true }) showSelectAll: boolean | string | string[] = false;\n\n /**\n * Whether the input is searchable.\n */\n @Prop() searchable: boolean = false;\n\n /**\n * Text to show when no options match the search.\n */\n @Prop() emptyText: string = 'No results found';\n\n /**\n * Whether the dropdown is currently open.\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Emitted when the selected values change.\n */\n @Event() leChange: EventEmitter<LeMultiOptionSelectDetail>;\n\n /**\n * Emitted when the dropdown opens.\n */\n @Event() leOpen: EventEmitter<void>;\n\n /**\n * Emitted when the dropdown closes.\n */\n @Event() leClose: EventEmitter<void>;\n\n @State() private selectedOptions: LeOption[] = [];\n @State() private searchQuery: string = '';\n\n private dropdownEl?: HTMLLeDropdownBaseElement;\n private inputEl?: HTMLInputElement;\n\n @Watch('value')\n handleValueChange() {\n this.updateSelectedOptions();\n }\n\n @Watch('options')\n handleOptionsChange() {\n this.updateSelectedOptions();\n }\n\n @Watch('showSelectAll')\n handleShowSelectAllChange(newValue: boolean | string | string[]) {\n if (typeof newValue !== 'boolean' && typeof newValue !== 'string') {\n this.showSelectAll = false;\n } else if (typeof newValue === 'boolean') {\n this.showSelectAll = newValue;\n } else if (Array.isArray(newValue)) {\n this.showSelectAll = true;\n this.selectAllLabel = newValue[0];\n this.deselectAllLabel = newValue[1] || newValue[0];\n } else if (typeof newValue === 'string') {\n this.showSelectAll = true;\n try {\n const parsed = JSON.parse(newValue);\n if (Array.isArray(parsed) && parsed.every(item => typeof item === 'string')) {\n this.selectAllLabel = parsed[0];\n this.deselectAllLabel = parsed[1] || parsed[0];\n } else {\n this.selectAllLabel = newValue;\n this.deselectAllLabel = newValue;\n }\n } catch {\n this.selectAllLabel = newValue;\n this.deselectAllLabel = newValue;\n }\n }\n }\n\n componentWillLoad() {\n this.updateSelectedOptions();\n this.handleShowSelectAllChange(this.showSelectAll);\n }\n\n private get parsedOptions(): LeOption[] {\n if (typeof this.options === 'string') {\n try {\n return JSON.parse(this.options);\n } catch {\n return [];\n }\n }\n return this.options;\n }\n\n private get effectiveOptions(): LeOption[] {\n let options = [...this.parsedOptions];\n\n // Add \"Select All\" option if enabled\n if (this.showSelectAll && options.length > 0) {\n const allSelected =\n this.selectedOptions.length === this.parsedOptions.filter(opt => !opt.disabled).length;\n options = [\n {\n label: allSelected ? this.deselectAllLabel : this.selectAllLabel,\n value: '__select_all__',\n iconStart: allSelected ? '✕' : '⇣',\n },\n ...options,\n ];\n }\n\n return options;\n }\n\n private updateSelectedOptions() {\n const valueArray = Array.isArray(this.value) ? this.value : [];\n this.selectedOptions = this.parsedOptions.filter(opt =>\n valueArray.includes(opt.value ?? opt.label),\n );\n }\n\n private filterOption = (option: LeOption, query: string): boolean => {\n if (!query) return true;\n // Always show \"Select All\" option\n if (option.value === '__select_all__') return true;\n\n const searchLower = query.toLowerCase();\n return (\n option.label.toLowerCase().includes(searchLower) ||\n (option.description?.toLowerCase().includes(searchLower) ?? false)\n );\n };\n\n private handleOptionSelect = (e: CustomEvent<LeOptionSelectDetail>) => {\n const { value } = e.detail;\n\n const enabledOptions = this.parsedOptions.filter(opt => !opt.disabled);\n if (enabledOptions.length === 0) return;\n\n // Handle \"Select All\" option\n if (value === '__select_all__') {\n if (this.selectedOptions.length === enabledOptions.length) {\n // Deselect all\n this.value = [];\n } else {\n // Select all (respect maxSelections)\n const selectableOptions = this.maxSelections\n ? enabledOptions.slice(0, this.maxSelections)\n : enabledOptions;\n this.value = selectableOptions.map(opt => opt.value ?? opt.label);\n }\n this.emitChange();\n return;\n }\n\n const isSelected = this.value.includes(value);\n\n if (isSelected) {\n // Remove from selection\n this.value = this.value.filter(v => v !== value);\n this.selectedOptions = this.selectedOptions.filter(opt => (opt.value ?? opt.label) !== value);\n } else {\n // Add to selection (if not at max)\n if (this.maxSelections && this.value.length >= this.maxSelections) {\n return; // Don't add more\n }\n this.value = [...this.value, value];\n }\n\n this.emitChange();\n\n // Clear search after szelection\n this.searchQuery = '';\n };\n\n private emitChange() {\n this.leChange.emit({\n values: this.value,\n options: this.selectedOptions,\n });\n }\n\n private handleDropdownOpen = () => {\n this.open = true;\n this.leOpen.emit();\n\n // Focus search input if searchable\n if (this.searchable) {\n setTimeout(() => {\n this.inputEl?.focus();\n }, 50);\n }\n };\n\n private handleDropdownClose = () => {\n this.open = false;\n this.searchQuery = '';\n this.leClose.emit();\n };\n\n private handleTriggerClick = () => {\n if (!this.disabled) {\n this.dropdownEl?.toggle();\n }\n };\n\n private handleTriggerKeyDown = (e: KeyboardEvent) => {\n if (this.disabled) return;\n\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault();\n this.dropdownEl?.show();\n }\n };\n\n private handleTagDismiss = (option: LeOption, e: CustomEvent) => {\n e.stopPropagation();\n const value = option.value ?? option.label;\n this.value = this.value.filter(v => v !== value);\n this.selectedOptions = this.selectedOptions.filter(opt => opt !== option);\n this.emitChange();\n };\n\n private handleSearchInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this.searchQuery = target.value;\n };\n\n private handleClearAll = (e: MouseEvent) => {\n e.stopPropagation();\n this.value = [];\n this.selectedOptions = [];\n this.emitChange();\n };\n\n /**\n * Opens the dropdown.\n */\n @Method()\n async showDropdown() {\n await this.dropdownEl?.show();\n }\n\n /**\n * Closes the dropdown.\n */\n @Method()\n async hideDropdown() {\n await this.dropdownEl?.hide();\n }\n\n /**\n * Clears all selections.\n */\n @Method()\n async clearSelection() {\n this.value = [];\n this.selectedOptions = [];\n this.emitChange();\n }\n\n private renderTags() {\n if (this.selectedOptions.length === 0) {\n return <span class=\"multiselect-placeholder\">{this.placeholder}</span>;\n }\n\n return (\n <div class=\"multiselect-tags\">\n {this.selectedOptions.map(option => (\n <le-tag\n key={option.value ?? option.label}\n label={option.label}\n icon={option.iconStart}\n size={this.size === 'large' ? 'medium' : 'small'}\n dismissible\n disabled={this.disabled}\n onLeDismiss={e => this.handleTagDismiss(option, e)}\n mode=\"default\"\n />\n ))}\n </div>\n );\n }\n\n render() {\n const hasSelections = this.selectedOptions.length > 0;\n const atMaxSelections = this.maxSelections && this.value.length >= this.maxSelections;\n\n return (\n <le-component component=\"le-multiselect\">\n <le-dropdown-base\n ref={el => (this.dropdownEl = el)}\n options={this.effectiveOptions}\n value={this.value}\n multiple={true}\n disabled={this.disabled}\n filterFn={this.searchable ? this.filterOption : undefined}\n filterQuery={this.searchQuery}\n emptyText={this.emptyText}\n showCheckboxes={true}\n fullWidth={this.fullWidth}\n onLeOptionSelect={this.handleOptionSelect}\n onLeDropdownOpen={this.handleDropdownOpen}\n onLeDropdownClose={this.handleDropdownClose}\n >\n <div\n slot=\"trigger\"\n class={{\n 'multiselect-trigger': true,\n 'has-selections': hasSelections,\n 'is-open': this.open,\n 'is-disabled': this.disabled,\n }}\n tabIndex={this.disabled ? -1 : 0}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : undefined}\n onClick={this.handleTriggerClick}\n onKeyDown={this.handleTriggerKeyDown}\n >\n {this.renderTags()}\n\n <div class=\"multiselect-actions\">\n {hasSelections && !this.disabled && (\n <button\n type=\"button\"\n class=\"multiselect-clear\"\n onClick={this.handleClearAll}\n aria-label=\"Clear all\"\n tabIndex={-1}\n >\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M4 4l8 8M12 4l-8 8\" />\n </svg>\n </button>\n )}\n <span class=\"multiselect-arrow\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n </span>\n </div>\n </div>\n\n {/* Search input shown in dropdown header */}\n {this.searchable && this.open && (\n <div class=\"multiselect-search\" slot=\"header\">\n <le-string-input\n mode=\"default\"\n inputRef={el => (this.inputEl = el)}\n class=\"search-input\"\n placeholder=\"Search...\"\n value={this.searchQuery}\n onInput={this.handleSearchInput}\n />\n </div>\n )}\n </le-dropdown-base>\n\n {/* Hidden inputs for form submission */}\n {this.name &&\n this.value.map(val => (\n <input type=\"hidden\" name={this.name} value={val.toString()} key={val.toString()} />\n ))}\n\n {/* Status message */}\n {atMaxSelections && (\n <span class=\"multiselect-status\">Maximum {this.maxSelections} selections</span>\n )}\n </le-component>\n );\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
2
|
import { classnames } from "../../utils/utils";
|
|
3
3
|
/**
|
|
4
4
|
* A number input component with validation, keyboard controls, and custom spinners.
|
|
@@ -195,7 +195,7 @@ export class LeNumberInput {
|
|
|
195
195
|
this.emitChange();
|
|
196
196
|
};
|
|
197
197
|
render() {
|
|
198
|
-
return (h(
|
|
198
|
+
return (h("le-component", { key: '4e0c27dc62fb9190a1fd17afb159af9873313963', component: "le-number-input", hostClass: classnames({ 'disabled': this.disabled }) }, h("div", { key: 'fb7ec5fa5958fd1a4abfae7b89bfcc94d679f8a4', class: "le-input-wrapper" }, this.label && (h("label", { key: 'a83bbb79bc1771e585d6c5a92054faa4aa5106d9', class: "le-input-label", htmlFor: this.name }, this.label)), h("div", { key: '15f6b1590d24ed43ded72e41c8a76d9721c9abf1', class: classnames('le-input-container', { 'has-error': !this.isValid }) }, this.iconStart && (h("span", { key: '94349e7cdf26fd18bd169978cbbf623c4d82ba09', class: "icon-start" }, this.iconStart)), h("input", { key: '41359099690b61152883bc18ddbbb933fe297e4b', id: this.name, type: "number", name: this.name, placeholder: this.placeholder, min: this.min, max: this.max, step: this.step, value: this.value, disabled: this.disabled, readOnly: this.readonly, required: this.required, onInput: this.handleInput, onChange: this.handleChange, onKeyDown: this.handleKeyDown, onWheel: this.handleWheel }), this.showSpinners && (h("div", { key: '40ca2eec8b9ab809e8c7d94638c04f126a86439a', class: "le-input-controls" }, h("le-button", { key: 'f166a5b85e57a357e529d448c58578e0eb1f47e8', mode: "default", variant: "clear", size: "small", "icon-only": true, class: "le-input-control-btn", onClick: this.increment, disabled: this.disabled || this.readonly || (this.max !== undefined && this.value >= this.max), tabindex: "-1" }, h("span", { key: '5b1e3f5d7f2f73616a903c254d684e3cd25f7b4b', slot: "icon-only" }, "\u2191")), h("le-button", { key: 'cc5b1a747aa371642050ec7aa3e314eae8803e5a', mode: "default", variant: "clear", size: "small", "icon-only": true, class: "le-input-control-btn", onClick: this.decrement, disabled: this.disabled || this.readonly || (this.min !== undefined && this.value <= this.min), tabindex: "-1" }, h("span", { key: '642ce963cd73e1e15a18fa098d68217700d77f7e', slot: "icon-only" }, "\u2193"))))), !this.isValid && h("div", { key: 'f8cfd149278a97749c65fe91556f16b9866123c8', class: "le-input-error" }, this.validationMessage), h("div", { key: '3c0139decd7366071870610866d15de4adbebd12', class: "le-input-description" }, h("le-slot", { key: '33e38439cacbcbc1abb30b788dc8d8eca46d4100', name: "description", type: "text", tag: "p", label: "Description" }, h("slot", { key: '8e6ff005d573cddc590c8251c4df89190dd318d8', name: "description" }))))));
|
|
199
199
|
}
|
|
200
200
|
static get is() { return "le-number-input"; }
|
|
201
201
|
static get encapsulation() { return "shadow"; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"le-number-input.js","sourceRoot":"","sources":["../../../src/components/le-number-input/le-number-input.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, Event, EventEmitter, State, h, Element, Watch } from '@stencil/core';\nimport { classnames } from '../../utils/utils';\n\n/**\n * A number input component with validation, keyboard controls, and custom spinners.\n *\n * @slot - The label text for the input\n * @slot description - Additional description text displayed below the input\n * @slot icon-start - Icon to display at the start of the input\n *\n * @cssprop --le-input-bg - Input background color\n * @cssprop --le-input-color - Input text color\n * @cssprop --le-input-border - Input border style\n * @cssprop --le-input-border-focus - Input border style when focused\n * @cssprop --le-input-border-error - Input border style when invalid\n * @cssprop --le-input-radius - Input border radius\n * @cssprop --le-input-padding - Input padding\n */\n@Component({\n tag: 'le-number-input',\n styleUrl: 'le-number-input.css',\n shadow: true,\n})\nexport class LeNumberInput {\n @Element() el: HTMLElement;\n\n /**\n * The value of the input\n */\n @Prop({ mutable: true, reflect: true }) value: number;\n\n /**\n * The name of the input\n */\n @Prop() name: string;\n\n /**\n * Label for the input\n */\n @Prop() label: string;\n\n /**\n * Placeholder text\n */\n @Prop() placeholder: string;\n\n /**\n * Minimum allowed value\n */\n @Prop() min?: number;\n\n /**\n * Maximum allowed value\n */\n @Prop() max?: number;\n\n /**\n * Step value for increment/decrement\n */\n @Prop() step: number = 1;\n\n /**\n * Whether the input is required\n */\n @Prop() required: boolean = false;\n\n /**\n * Whether the input is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the input is read-only\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Icon for the start icon\n */\n @Prop() iconStart?: string;\n\n /**\n * Whether to show the spinner controls\n */\n @Prop() showSpinners: boolean = true;\n\n /**\n * External ID for linking with external systems\n */\n @Prop() externalId: string;\n\n /**\n * Internal validation state\n */\n @State() private isValid: boolean = true;\n @State() private validationMessage: string = '';\n\n /**\n * Emitted when the value changes (on blur or Enter)\n */\n @Event() leChange: EventEmitter<{ value: number; name: string; externalId: string; isValid: boolean }>;\n\n /**\n * Emitted when the input value changes (on keystroke/spin)\n */\n @Event() leInput: EventEmitter<{ value: number; name: string; externalId: string; isValid: boolean }>;\n\n @Watch('value')\n valueChanged() {\n this.validate();\n }\n\n private validate() {\n if (this.required && (this.value === undefined || this.value === null || isNaN(this.value))) {\n this.isValid = false;\n this.validationMessage = 'This field is required';\n return;\n }\n\n if (this.value !== undefined && this.value !== null && !isNaN(this.value)) {\n if (this.min !== undefined && this.value < this.min) {\n this.isValid = false;\n this.validationMessage = `Value must be at least ${this.min}`;\n return;\n }\n if (this.max !== undefined && this.value > this.max) {\n this.isValid = false;\n this.validationMessage = `Value must be at most ${this.max}`;\n return;\n }\n }\n\n this.isValid = true;\n this.validationMessage = '';\n }\n\n private emitChange() {\n this.leChange.emit({\n value: this.value,\n name: this.name,\n externalId: this.externalId,\n isValid: this.isValid\n });\n }\n\n private emitInput() {\n this.leInput.emit({\n value: this.value,\n name: this.name,\n externalId: this.externalId,\n isValid: this.isValid\n });\n }\n\n private updateValue(newValue: number) {\n if (this.disabled || this.readonly) return;\n \n // Round to avoid floating point errors\n const precision = this.step.toString().split('.')[1]?.length || 0;\n const rounded = parseFloat(newValue.toFixed(precision));\n \n this.value = rounded;\n this.validate();\n this.emitInput();\n }\n\n private handleInput = (ev: Event) => {\n const input = ev.target as HTMLInputElement;\n const val = parseFloat(input.value);\n \n if (input.value === '') {\n this.value = undefined;\n } else if (!isNaN(val)) {\n this.value = val;\n }\n \n this.validate();\n this.emitInput();\n };\n\n private handleChange = () => {\n this.validate();\n this.emitChange();\n };\n\n private handleKeyDown = (ev: KeyboardEvent) => {\n if (this.disabled || this.readonly) return;\n\n let multiplier = 1;\n if (ev.shiftKey) multiplier = 10;\n if (ev.altKey) multiplier = 0.1;\n\n const current = this.value || 0;\n\n if (ev.key === 'ArrowUp') {\n ev.preventDefault();\n this.updateValue(current + (this.step * multiplier));\n } else if (ev.key === 'ArrowDown') {\n ev.preventDefault();\n this.updateValue(current - (this.step * multiplier));\n }\n };\n\n private handleWheel = (ev: WheelEvent) => {\n if (this.disabled || this.readonly) return;\n // Only handle if input is focused to prevent accidental scrolling\n if (document.activeElement !== ev.target) return;\n\n ev.preventDefault();\n const current = this.value || 0;\n \n if (ev.deltaY < 0) {\n this.updateValue(current + this.step);\n } else {\n this.updateValue(current - this.step);\n }\n };\n\n private increment = (ev: Event) => {\n ev.preventDefault(); // Prevent focus loss\n const current = this.value || 0;\n this.updateValue(current + this.step);\n // Trigger change event for buttons as they are \"final\" actions usually\n this.emitChange();\n };\n\n private decrement = (ev: Event) => {\n ev.preventDefault();\n const current = this.value || 0;\n this.updateValue(current - this.step);\n this.emitChange();\n };\n\n render() {\n return (\n <le-component component=\"le-number-input\" hostClass={classnames({ 'disabled': this.disabled })}>\n <div class=\"le-input-wrapper\">\n {this.label && (\n <label class=\"le-input-label\" htmlFor={this.name}>{this.label}</label>\n )}\n \n <div class={classnames('le-input-container', { 'has-error': !this.isValid })}>\n {this.iconStart && (\n <span class=\"icon-start\">{this.iconStart}</span>\n )}\n \n <input\n id={this.name}\n type=\"number\"\n name={this.name}\n placeholder={this.placeholder}\n min={this.min}\n max={this.max}\n step={this.step}\n value={this.value}\n disabled={this.disabled}\n readOnly={this.readonly}\n required={this.required}\n onInput={this.handleInput}\n onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onWheel={this.handleWheel}\n />\n \n {this.showSpinners && (\n <div class=\"le-input-controls\">\n <le-button\n mode=\"default\"\n variant=\"clear\" \n size=\"small\"\n icon-only\n class=\"le-input-control-btn\" \n onClick={this.increment}\n disabled={this.disabled || this.readonly || (this.max !== undefined && this.value >= this.max)}\n tabindex=\"-1\"\n >\n <span slot=\"icon-only\">↑</span>\n </le-button>\n <le-button\n mode=\"default\"\n variant=\"clear\" \n size=\"small\" \n icon-only \n class=\"le-input-control-btn\" \n onClick={this.decrement}\n disabled={this.disabled || this.readonly || (this.min !== undefined && this.value <= this.min)}\n tabindex=\"-1\"\n >\n <span slot=\"icon-only\">↓</span>\n </le-button>\n </div>\n )}\n </div>\n\n {!this.isValid && <div class=\"le-input-error\">{this.validationMessage}</div>}\n\n <div class=\"le-input-description\">\n <le-slot name=\"description\" type=\"text\" tag=\"p\" label=\"Description\">\n <slot name=\"description\"></slot>\n </le-slot>\n </div>\n </div>\n </le-component>\n );\n }\n}\n"]}
|
|
@@ -8,6 +8,11 @@
|
|
|
8
8
|
position: relative;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
:host([trigger-full-width]) {
|
|
12
|
+
display: block;
|
|
13
|
+
width: 100%;
|
|
14
|
+
}
|
|
15
|
+
|
|
11
16
|
/* ============================================
|
|
12
17
|
Trigger
|
|
13
18
|
============================================ */
|
|
@@ -17,6 +22,11 @@
|
|
|
17
22
|
cursor: pointer;
|
|
18
23
|
}
|
|
19
24
|
|
|
25
|
+
.le-popover-trigger-full-width {
|
|
26
|
+
display: flex;
|
|
27
|
+
width: 100%;
|
|
28
|
+
}
|
|
29
|
+
|
|
20
30
|
.le-popover-default-trigger {
|
|
21
31
|
display: flex;
|
|
22
32
|
align-items: center;
|
|
@@ -76,6 +86,16 @@
|
|
|
76
86
|
transform: scale(1);
|
|
77
87
|
}
|
|
78
88
|
|
|
89
|
+
/* Fallback for browsers without the Popover API */
|
|
90
|
+
.le-popover-content[data-fallback-open="false"] {
|
|
91
|
+
display: none;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.le-popover-content[data-fallback-open="true"] {
|
|
95
|
+
opacity: 1;
|
|
96
|
+
transform: scale(1);
|
|
97
|
+
}
|
|
98
|
+
|
|
79
99
|
/* Starting style for animation (CSS Anchor Positioning spec) */
|
|
80
100
|
@starting-style {
|
|
81
101
|
.le-popover-content:popover-open {
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import { h } from "@stencil/core";
|
|
1
|
+
import { h, Host, } from "@stencil/core";
|
|
2
|
+
import { classnames } from "../../utils/utils";
|
|
3
|
+
// Keep a simple stack so Escape closes the most recently opened popover first.
|
|
4
|
+
// This also helps nested popovers behave naturally.
|
|
5
|
+
const openPopoverStack = [];
|
|
2
6
|
/**
|
|
3
7
|
* A popover component for displaying floating content.
|
|
4
8
|
*
|
|
@@ -8,6 +12,9 @@ import { h } from "@stencil/core";
|
|
|
8
12
|
* @slot - Content to display inside the popover
|
|
9
13
|
* @slot trigger - Element that triggers the popover (optional)
|
|
10
14
|
*
|
|
15
|
+
* @csspart trigger - The popover trigger element
|
|
16
|
+
* @csspart content - The popover content wrapper
|
|
17
|
+
*
|
|
11
18
|
* @cmsInternal true
|
|
12
19
|
* @cmsCategory System
|
|
13
20
|
*/
|
|
@@ -61,6 +68,10 @@ export class LePopover {
|
|
|
61
68
|
* Maximum width for the popover (e.g., '400px', '25rem')
|
|
62
69
|
*/
|
|
63
70
|
maxWidth;
|
|
71
|
+
/**
|
|
72
|
+
* Should the popover's trigger take full width of its container
|
|
73
|
+
*/
|
|
74
|
+
triggerFullWidth = false;
|
|
64
75
|
/**
|
|
65
76
|
* Emitted when the popover opens
|
|
66
77
|
*/
|
|
@@ -69,22 +80,96 @@ export class LePopover {
|
|
|
69
80
|
* Emitted when the popover closes
|
|
70
81
|
*/
|
|
71
82
|
lePopoverClose;
|
|
83
|
+
/**
|
|
84
|
+
* Method to update the popover position from a parent component
|
|
85
|
+
*/
|
|
86
|
+
async updatePosition() {
|
|
87
|
+
this._updatePosition();
|
|
88
|
+
}
|
|
72
89
|
isPositioned = false;
|
|
73
90
|
triggerEl;
|
|
74
91
|
popoverEl;
|
|
75
92
|
uniqueId = `le-popover-${Math.random().toString(36).substr(2, 9)}`;
|
|
76
93
|
scrollParents = [];
|
|
94
|
+
isListeningForDismiss = false;
|
|
95
|
+
get supportsPopoverApi() {
|
|
96
|
+
return typeof HTMLElement.prototype.showPopover === 'function';
|
|
97
|
+
}
|
|
98
|
+
shadowContains(container, node) {
|
|
99
|
+
let current = node;
|
|
100
|
+
while (current) {
|
|
101
|
+
if (current === container)
|
|
102
|
+
return true;
|
|
103
|
+
if (current instanceof ShadowRoot) {
|
|
104
|
+
current = current.host;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (current.parentNode) {
|
|
108
|
+
current = current.parentNode;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const root = current.getRootNode?.();
|
|
112
|
+
if (root instanceof ShadowRoot) {
|
|
113
|
+
current = root.host;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
77
120
|
componentDidLoad() {
|
|
78
121
|
// Listen for toggle events from the native popover API
|
|
79
122
|
this.popoverEl?.addEventListener('toggle', this.handlePopoverToggle);
|
|
80
123
|
// Listen for other popovers opening to close this one
|
|
81
124
|
document.addEventListener('le-popover-will-open', this.handleOtherPopoverOpen);
|
|
125
|
+
// If the popover is initially open (unlikely, but possible), wire listeners.
|
|
126
|
+
if (this.open) {
|
|
127
|
+
this.addDismissListeners();
|
|
128
|
+
}
|
|
82
129
|
}
|
|
83
130
|
disconnectedCallback() {
|
|
84
131
|
this.popoverEl?.removeEventListener('toggle', this.handlePopoverToggle);
|
|
85
132
|
document.removeEventListener('le-popover-will-open', this.handleOtherPopoverOpen);
|
|
86
133
|
this.removeScrollListeners();
|
|
134
|
+
this.removeDismissListeners();
|
|
135
|
+
}
|
|
136
|
+
addDismissListeners() {
|
|
137
|
+
if (this.isListeningForDismiss)
|
|
138
|
+
return;
|
|
139
|
+
// Use capture so clicks inside the trigger (which stops propagation) are still observed.
|
|
140
|
+
document.addEventListener('pointerdown', this.handleDocumentPointerDown, true);
|
|
141
|
+
document.addEventListener('keydown', this.handleDocumentKeyDown, true);
|
|
142
|
+
this.isListeningForDismiss = true;
|
|
143
|
+
}
|
|
144
|
+
removeDismissListeners() {
|
|
145
|
+
if (!this.isListeningForDismiss)
|
|
146
|
+
return;
|
|
147
|
+
document.removeEventListener('pointerdown', this.handleDocumentPointerDown, true);
|
|
148
|
+
document.removeEventListener('keydown', this.handleDocumentKeyDown, true);
|
|
149
|
+
this.isListeningForDismiss = false;
|
|
87
150
|
}
|
|
151
|
+
handleDocumentPointerDown = (event) => {
|
|
152
|
+
if (!this.open || !this.closeOnClickOutside)
|
|
153
|
+
return;
|
|
154
|
+
// If the click happens inside this popover component (trigger OR content), don't close.
|
|
155
|
+
const path = (event.composedPath?.() ?? []);
|
|
156
|
+
if (path.includes(this.el))
|
|
157
|
+
return;
|
|
158
|
+
this.hide();
|
|
159
|
+
};
|
|
160
|
+
handleDocumentKeyDown = (event) => {
|
|
161
|
+
if (!this.open || !this.closeOnEscape)
|
|
162
|
+
return;
|
|
163
|
+
if (event.key !== 'Escape')
|
|
164
|
+
return;
|
|
165
|
+
// Only the top-most opened popover handles Escape.
|
|
166
|
+
const top = openPopoverStack[openPopoverStack.length - 1];
|
|
167
|
+
if (top !== this.el)
|
|
168
|
+
return;
|
|
169
|
+
event.preventDefault();
|
|
170
|
+
event.stopPropagation();
|
|
171
|
+
this.hide();
|
|
172
|
+
};
|
|
88
173
|
/**
|
|
89
174
|
* Find all scrollable parent elements
|
|
90
175
|
*/
|
|
@@ -130,27 +215,52 @@ export class LePopover {
|
|
|
130
215
|
}
|
|
131
216
|
handleScroll = () => {
|
|
132
217
|
if (this.open) {
|
|
133
|
-
this.
|
|
218
|
+
this._updatePosition();
|
|
134
219
|
}
|
|
135
220
|
};
|
|
221
|
+
handleOpened() {
|
|
222
|
+
this.open = true;
|
|
223
|
+
// Track stack order for Escape handling.
|
|
224
|
+
const existingIndex = openPopoverStack.indexOf(this.el);
|
|
225
|
+
if (existingIndex >= 0)
|
|
226
|
+
openPopoverStack.splice(existingIndex, 1);
|
|
227
|
+
openPopoverStack.push(this.el);
|
|
228
|
+
this.addDismissListeners();
|
|
229
|
+
this.addScrollListeners();
|
|
230
|
+
this._updatePosition();
|
|
231
|
+
this.lePopoverOpen.emit();
|
|
232
|
+
}
|
|
233
|
+
handleClosed() {
|
|
234
|
+
this.open = false;
|
|
235
|
+
this.isPositioned = false;
|
|
236
|
+
this.removeScrollListeners();
|
|
237
|
+
this.removeDismissListeners();
|
|
238
|
+
const index = openPopoverStack.indexOf(this.el);
|
|
239
|
+
if (index >= 0)
|
|
240
|
+
openPopoverStack.splice(index, 1);
|
|
241
|
+
this.lePopoverClose.emit();
|
|
242
|
+
}
|
|
136
243
|
handlePopoverToggle = (event) => {
|
|
137
244
|
if (event.newState === 'open') {
|
|
138
|
-
this.
|
|
139
|
-
this.addScrollListeners();
|
|
140
|
-
this.updatePosition();
|
|
141
|
-
this.lePopoverOpen.emit();
|
|
245
|
+
this.handleOpened();
|
|
142
246
|
}
|
|
143
247
|
else {
|
|
144
|
-
this.
|
|
145
|
-
this.isPositioned = false;
|
|
146
|
-
this.removeScrollListeners();
|
|
147
|
-
this.lePopoverClose.emit();
|
|
248
|
+
this.handleClosed();
|
|
148
249
|
}
|
|
149
250
|
};
|
|
150
251
|
handleOtherPopoverOpen = (event) => {
|
|
151
252
|
const customEvent = event;
|
|
152
|
-
|
|
253
|
+
const openingPopover = customEvent.detail?.popover;
|
|
254
|
+
if (!openingPopover)
|
|
255
|
+
return;
|
|
256
|
+
if (openingPopover === this.el)
|
|
257
|
+
return;
|
|
258
|
+
// Allow nested popovers (e.g., le-select inside another popover).
|
|
259
|
+
// Use a shadow-DOM-aware containment check.
|
|
260
|
+
if (this.shadowContains(this.el, openingPopover) ||
|
|
261
|
+
this.shadowContains(openingPopover, this.el)) {
|
|
153
262
|
return;
|
|
263
|
+
}
|
|
154
264
|
if (this.open) {
|
|
155
265
|
this.hide();
|
|
156
266
|
}
|
|
@@ -160,15 +270,25 @@ export class LePopover {
|
|
|
160
270
|
*/
|
|
161
271
|
async show() {
|
|
162
272
|
document.dispatchEvent(new CustomEvent('le-popover-will-open', {
|
|
163
|
-
detail: { popover: this.el }
|
|
273
|
+
detail: { popover: this.el },
|
|
164
274
|
}));
|
|
165
|
-
this.
|
|
275
|
+
if (this.supportsPopoverApi) {
|
|
276
|
+
this.popoverEl?.showPopover();
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
this.handleOpened();
|
|
280
|
+
}
|
|
166
281
|
}
|
|
167
282
|
/**
|
|
168
283
|
* Closes the popover
|
|
169
284
|
*/
|
|
170
285
|
async hide() {
|
|
171
|
-
this.
|
|
286
|
+
if (this.supportsPopoverApi) {
|
|
287
|
+
this.popoverEl?.hidePopover();
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
this.handleClosed();
|
|
291
|
+
}
|
|
172
292
|
}
|
|
173
293
|
/**
|
|
174
294
|
* Toggles the popover
|
|
@@ -185,7 +305,7 @@ export class LePopover {
|
|
|
185
305
|
event.stopPropagation();
|
|
186
306
|
this.toggle();
|
|
187
307
|
};
|
|
188
|
-
|
|
308
|
+
_updatePosition() {
|
|
189
309
|
if (!this.triggerEl || !this.popoverEl)
|
|
190
310
|
return;
|
|
191
311
|
const triggerRect = this.triggerEl.getBoundingClientRect();
|
|
@@ -227,7 +347,8 @@ export class LePopover {
|
|
|
227
347
|
}
|
|
228
348
|
// Adjust alignment for horizontal overflow
|
|
229
349
|
if (position === 'top' || position === 'bottom') {
|
|
230
|
-
if (align === 'start' &&
|
|
350
|
+
if (align === 'start' &&
|
|
351
|
+
triggerRect.left + popoverRect.width > viewportWidth - viewportPadding) {
|
|
231
352
|
align = 'end';
|
|
232
353
|
}
|
|
233
354
|
else if (align === 'end' && triggerRect.right - popoverRect.width < viewportPadding) {
|
|
@@ -338,10 +459,12 @@ export class LePopover {
|
|
|
338
459
|
popoverStyles.minWidth = this.minWidth;
|
|
339
460
|
if (this.maxWidth)
|
|
340
461
|
popoverStyles.maxWidth = this.maxWidth;
|
|
341
|
-
return
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
462
|
+
return (h(Host, { key: '9bbb6c41436ac051529650ef0fbf5e152ec82901', "trigger-full-width": this.triggerFullWidth }, h("div", { key: '600f4d8a367e2b52cb6eca2c6bf4d77a3851b078', class: classnames('le-popover-trigger', {
|
|
463
|
+
'le-popover-trigger-full-width': this.triggerFullWidth,
|
|
464
|
+
}), ref: el => (this.triggerEl = el), onClick: this.handleTriggerClick, part: "trigger" }, h("slot", { key: '6cfc71e93c2ea7552157398ac4aa12507ba55cc3', name: "trigger" }, h("button", { key: '06f35fffce2a5e2129733daf5fda9a35762ff586', type: "button", class: "le-popover-default-trigger" }, h("span", { key: 'c7dcb2074e40851db8cb9cc9d5ff42d90be479c2' }, "\u2295")))), h("div", { key: '5cc7278cc388bd057df4311a5082f8ad29eaf756', id: this.uniqueId, class: "le-popover-content",
|
|
465
|
+
// Always use manual mode so nested popovers can be open together.
|
|
466
|
+
// We implement click-outside and Escape handling ourselves.
|
|
467
|
+
popover: "manual", ref: el => (this.popoverEl = el), style: popoverStyles, "data-fallback-open": this.supportsPopoverApi ? undefined : String(this.open) }, (this.popoverTitle || this.showClose) && (h("div", { key: '56b803332842e42387160ab6ab7df3a8b20f00fc', class: "le-popover-header" }, this.popoverTitle && h("span", { key: '034c0acc4c08fb5eb7f10f9e9b310874eafada3e', class: "le-popover-title" }, this.popoverTitle), this.showClose && (h("button", { key: '29546e93795dc7aefca86b9d8d8ceef109c230c8', type: "button", class: "le-popover-close", onClick: () => this.hide(), "aria-label": "Close" }, "\u00D7")))), h("div", { key: 'dbacc49cf8c8198048443f0b8acfdc795eb72b31', class: "le-popover-body", part: "content" }, h("slot", { key: 'ca3ceed750c50ba33c58d0cb99ce8378cc358872' })))));
|
|
345
468
|
}
|
|
346
469
|
static get is() { return "le-popover"; }
|
|
347
470
|
static get encapsulation() { return "shadow"; }
|
|
@@ -592,6 +715,26 @@ export class LePopover {
|
|
|
592
715
|
"setter": false,
|
|
593
716
|
"reflect": false,
|
|
594
717
|
"attribute": "max-width"
|
|
718
|
+
},
|
|
719
|
+
"triggerFullWidth": {
|
|
720
|
+
"type": "boolean",
|
|
721
|
+
"mutable": false,
|
|
722
|
+
"complexType": {
|
|
723
|
+
"original": "boolean",
|
|
724
|
+
"resolved": "boolean",
|
|
725
|
+
"references": {}
|
|
726
|
+
},
|
|
727
|
+
"required": false,
|
|
728
|
+
"optional": false,
|
|
729
|
+
"docs": {
|
|
730
|
+
"tags": [],
|
|
731
|
+
"text": "Should the popover's trigger take full width of its container"
|
|
732
|
+
},
|
|
733
|
+
"getter": false,
|
|
734
|
+
"setter": false,
|
|
735
|
+
"reflect": false,
|
|
736
|
+
"attribute": "trigger-full-width",
|
|
737
|
+
"defaultValue": "false"
|
|
595
738
|
}
|
|
596
739
|
};
|
|
597
740
|
}
|
|
@@ -635,6 +778,23 @@ export class LePopover {
|
|
|
635
778
|
}
|
|
636
779
|
static get methods() {
|
|
637
780
|
return {
|
|
781
|
+
"updatePosition": {
|
|
782
|
+
"complexType": {
|
|
783
|
+
"signature": "() => Promise<void>",
|
|
784
|
+
"parameters": [],
|
|
785
|
+
"references": {
|
|
786
|
+
"Promise": {
|
|
787
|
+
"location": "global",
|
|
788
|
+
"id": "global::Promise"
|
|
789
|
+
}
|
|
790
|
+
},
|
|
791
|
+
"return": "Promise<void>"
|
|
792
|
+
},
|
|
793
|
+
"docs": {
|
|
794
|
+
"text": "Method to update the popover position from a parent component",
|
|
795
|
+
"tags": []
|
|
796
|
+
}
|
|
797
|
+
},
|
|
638
798
|
"show": {
|
|
639
799
|
"complexType": {
|
|
640
800
|
"signature": "() => Promise<void>",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"le-popover.js","sourceRoot":"","sources":["../../../src/components/le-popover/le-popover.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n Method,\n Event,\n EventEmitter,\n State,\n h,\n Element,\n Host,\n} from '@stencil/core';\nimport { classnames } from '../../utils/utils';\n\n// Keep a simple stack so Escape closes the most recently opened popover first.\n// This also helps nested popovers behave naturally.\nconst openPopoverStack: HTMLElement[] = [];\n\n/**\n * A popover component for displaying floating content.\n *\n * Uses the native HTML Popover API for proper layering with dialogs\n * and other top-layer elements. Falls back gracefully in older browsers.\n *\n * @slot - Content to display inside the popover\n * @slot trigger - Element that triggers the popover (optional)\n *\n * @csspart trigger - The popover trigger element\n * @csspart content - The popover content wrapper\n *\n * @cmsInternal true\n * @cmsCategory System\n */\n@Component({\n tag: 'le-popover',\n styleUrl: 'le-popover.css',\n shadow: true,\n})\nexport class LePopover {\n @Element() el: HTMLElement;\n\n /**\n * Mode of the popover should be 'default' for internal use\n */\n @Prop({ mutable: true, reflect: true }) mode: 'default' | 'admin';\n\n /**\n * Whether the popover is currently open\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Position of the popover relative to its trigger\n */\n @Prop() position: 'top' | 'bottom' | 'left' | 'right' | 'auto' = 'bottom';\n\n /**\n * Alignment of the popover\n */\n @Prop() align: 'start' | 'center' | 'end' = 'start';\n\n /**\n * Optional title for the popover header\n */\n @Prop() popoverTitle?: string;\n\n /**\n * Whether to show a close button in the header\n */\n @Prop() showClose: boolean = true;\n\n /**\n * Whether clicking outside closes the popover\n */\n @Prop() closeOnClickOutside: boolean = true;\n\n /**\n * Whether pressing Escape closes the popover\n */\n @Prop() closeOnEscape: boolean = true;\n\n /**\n * Offset from the trigger element (in pixels)\n */\n @Prop() offset: number = 8;\n\n /**\n * Fixed width for the popover (e.g., '300px', '20rem')\n */\n @Prop() width?: string;\n\n /**\n * Minimum width for the popover (e.g., '200px', '15rem')\n */\n @Prop() minWidth?: string = '200px';\n\n /**\n * Maximum width for the popover (e.g., '400px', '25rem')\n */\n @Prop() maxWidth?: string;\n\n /**\n * Should the popover's trigger take full width of its container\n */\n @Prop() triggerFullWidth: boolean = false;\n\n /**\n * Emitted when the popover opens\n */\n @Event() lePopoverOpen: EventEmitter<void>;\n\n /**\n * Emitted when the popover closes\n */\n @Event() lePopoverClose: EventEmitter<void>;\n\n /**\n * Method to update the popover position from a parent component\n */\n @Method()\n async updatePosition() {\n this._updatePosition();\n }\n\n @State() private isPositioned: boolean = false;\n\n private triggerEl?: HTMLElement;\n private popoverEl?: HTMLElement;\n private uniqueId: string = `le-popover-${Math.random().toString(36).substr(2, 9)}`;\n private scrollParents: Element[] = [];\n\n private isListeningForDismiss: boolean = false;\n\n private get supportsPopoverApi(): boolean {\n return typeof (HTMLElement.prototype as any).showPopover === 'function';\n }\n\n private shadowContains(container: HTMLElement, node: HTMLElement): boolean {\n let current: Node | null = node;\n while (current) {\n if (current === container) return true;\n\n if (current instanceof ShadowRoot) {\n current = current.host;\n continue;\n }\n\n if (current.parentNode) {\n current = current.parentNode;\n continue;\n }\n\n const root = current.getRootNode?.();\n if (root instanceof ShadowRoot) {\n current = root.host;\n continue;\n }\n\n break;\n }\n\n return false;\n }\n\n componentDidLoad() {\n // Listen for toggle events from the native popover API\n this.popoverEl?.addEventListener('toggle', this.handlePopoverToggle as EventListener);\n\n // Listen for other popovers opening to close this one\n document.addEventListener('le-popover-will-open', this.handleOtherPopoverOpen);\n\n // If the popover is initially open (unlikely, but possible), wire listeners.\n if (this.open) {\n this.addDismissListeners();\n }\n }\n\n disconnectedCallback() {\n this.popoverEl?.removeEventListener('toggle', this.handlePopoverToggle as EventListener);\n document.removeEventListener('le-popover-will-open', this.handleOtherPopoverOpen);\n this.removeScrollListeners();\n this.removeDismissListeners();\n }\n\n private addDismissListeners() {\n if (this.isListeningForDismiss) return;\n\n // Use capture so clicks inside the trigger (which stops propagation) are still observed.\n document.addEventListener('pointerdown', this.handleDocumentPointerDown, true);\n document.addEventListener('keydown', this.handleDocumentKeyDown, true);\n this.isListeningForDismiss = true;\n }\n\n private removeDismissListeners() {\n if (!this.isListeningForDismiss) return;\n document.removeEventListener('pointerdown', this.handleDocumentPointerDown, true);\n document.removeEventListener('keydown', this.handleDocumentKeyDown, true);\n this.isListeningForDismiss = false;\n }\n\n private handleDocumentPointerDown = (event: PointerEvent) => {\n if (!this.open || !this.closeOnClickOutside) return;\n\n // If the click happens inside this popover component (trigger OR content), don't close.\n const path = (event.composedPath?.() ?? []) as EventTarget[];\n if (path.includes(this.el)) return;\n\n this.hide();\n };\n\n private handleDocumentKeyDown = (event: KeyboardEvent) => {\n if (!this.open || !this.closeOnEscape) return;\n if (event.key !== 'Escape') return;\n\n // Only the top-most opened popover handles Escape.\n const top = openPopoverStack[openPopoverStack.length - 1];\n if (top !== this.el) return;\n\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n };\n\n /**\n * Find all scrollable parent elements\n */\n private getScrollParents(element: Element): Element[] {\n const scrollParents: Element[] = [];\n let parent = element.parentElement;\n\n while (parent) {\n const style = getComputedStyle(parent);\n const overflow = style.overflow + style.overflowY + style.overflowX;\n if (/(auto|scroll)/.test(overflow)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n\n // Always include window for page scroll\n return scrollParents;\n }\n\n /**\n * Add scroll listeners to all scrollable parents\n */\n private addScrollListeners() {\n if (!this.triggerEl) return;\n\n this.scrollParents = this.getScrollParents(this.triggerEl);\n\n // Listen to each scroll parent\n this.scrollParents.forEach(parent => {\n parent.addEventListener('scroll', this.handleScroll, { passive: true });\n });\n\n // Also listen to window scroll and resize\n window.addEventListener('scroll', this.handleScroll, { passive: true });\n window.addEventListener('resize', this.handleScroll, { passive: true });\n }\n\n /**\n * Remove scroll listeners\n */\n private removeScrollListeners() {\n this.scrollParents.forEach(parent => {\n parent.removeEventListener('scroll', this.handleScroll);\n });\n window.removeEventListener('scroll', this.handleScroll);\n window.removeEventListener('resize', this.handleScroll);\n this.scrollParents = [];\n }\n\n private handleScroll = () => {\n if (this.open) {\n this._updatePosition();\n }\n };\n\n private handleOpened() {\n this.open = true;\n\n // Track stack order for Escape handling.\n const existingIndex = openPopoverStack.indexOf(this.el);\n if (existingIndex >= 0) openPopoverStack.splice(existingIndex, 1);\n openPopoverStack.push(this.el);\n\n this.addDismissListeners();\n this.addScrollListeners();\n this._updatePosition();\n this.lePopoverOpen.emit();\n }\n\n private handleClosed() {\n this.open = false;\n this.isPositioned = false;\n this.removeScrollListeners();\n this.removeDismissListeners();\n\n const index = openPopoverStack.indexOf(this.el);\n if (index >= 0) openPopoverStack.splice(index, 1);\n\n this.lePopoverClose.emit();\n }\n\n private handlePopoverToggle = (event: ToggleEvent) => {\n if (event.newState === 'open') {\n this.handleOpened();\n } else {\n this.handleClosed();\n }\n };\n\n private handleOtherPopoverOpen = (event: Event) => {\n const customEvent = event as CustomEvent;\n const openingPopover = customEvent.detail?.popover as HTMLElement | undefined;\n if (!openingPopover) return;\n if (openingPopover === this.el) return;\n\n // Allow nested popovers (e.g., le-select inside another popover).\n // Use a shadow-DOM-aware containment check.\n if (\n this.shadowContains(this.el, openingPopover) ||\n this.shadowContains(openingPopover, this.el)\n ) {\n return;\n }\n\n if (this.open) {\n this.hide();\n }\n };\n\n /**\n * Opens the popover\n */\n @Method()\n async show() {\n document.dispatchEvent(\n new CustomEvent('le-popover-will-open', {\n detail: { popover: this.el },\n }),\n );\n\n if (this.supportsPopoverApi) {\n this.popoverEl?.showPopover();\n } else {\n this.handleOpened();\n }\n }\n\n /**\n * Closes the popover\n */\n @Method()\n async hide() {\n if (this.supportsPopoverApi) {\n this.popoverEl?.hidePopover();\n } else {\n this.handleClosed();\n }\n }\n\n /**\n * Toggles the popover\n */\n @Method()\n async toggle() {\n if (this.open) {\n await this.hide();\n } else {\n await this.show();\n }\n }\n\n private handleTriggerClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.toggle();\n };\n\n private _updatePosition() {\n if (!this.triggerEl || !this.popoverEl) return;\n\n const triggerRect = this.triggerEl.getBoundingClientRect();\n const popoverRect = this.popoverEl.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const viewportPadding = 8;\n\n let position = this.position;\n let align = this.align;\n\n // Auto-position logic\n const spaceBelow = viewportHeight - triggerRect.bottom - viewportPadding;\n const spaceAbove = triggerRect.top - viewportPadding;\n const spaceRight = viewportWidth - triggerRect.right - viewportPadding;\n const spaceLeft = triggerRect.left - viewportPadding;\n\n if (position === 'auto') {\n if (spaceBelow >= popoverRect.height + this.offset) {\n position = 'bottom';\n } else if (spaceAbove >= popoverRect.height + this.offset) {\n position = 'top';\n } else if (spaceRight >= popoverRect.width + this.offset) {\n position = 'right';\n } else if (spaceLeft >= popoverRect.width + this.offset) {\n position = 'left';\n } else {\n const maxSpace = Math.max(spaceBelow, spaceAbove, spaceRight, spaceLeft);\n if (maxSpace === spaceBelow) position = 'bottom';\n else if (maxSpace === spaceAbove) position = 'top';\n else if (maxSpace === spaceRight) position = 'right';\n else position = 'left';\n }\n }\n\n // Adjust alignment for horizontal overflow\n if (position === 'top' || position === 'bottom') {\n if (\n align === 'start' &&\n triggerRect.left + popoverRect.width > viewportWidth - viewportPadding\n ) {\n align = 'end';\n } else if (align === 'end' && triggerRect.right - popoverRect.width < viewportPadding) {\n align = 'start';\n } else if (align === 'center') {\n const triggerCenter = triggerRect.left + triggerRect.width / 2;\n if (triggerCenter - popoverRect.width / 2 < viewportPadding) {\n align = 'start';\n } else if (triggerCenter + popoverRect.width / 2 > viewportWidth - viewportPadding) {\n align = 'end';\n }\n }\n }\n\n // Calculate position\n let top: number = 0;\n let left: number = 0;\n let maxHeight: number | null = null;\n\n switch (position) {\n case 'top':\n top = triggerRect.top - popoverRect.height - this.offset;\n if (top < viewportPadding) {\n maxHeight = triggerRect.top - this.offset - viewportPadding * 2;\n top = viewportPadding;\n }\n break;\n case 'bottom':\n top = triggerRect.bottom + this.offset;\n if (top + popoverRect.height > viewportHeight - viewportPadding) {\n maxHeight = viewportHeight - top - viewportPadding;\n }\n break;\n case 'left':\n left = triggerRect.left - popoverRect.width - this.offset;\n top = triggerRect.top;\n if (left < viewportPadding) left = viewportPadding;\n break;\n case 'right':\n left = triggerRect.right + this.offset;\n top = triggerRect.top;\n if (left + popoverRect.width > viewportWidth - viewportPadding) {\n left = viewportWidth - popoverRect.width - viewportPadding;\n }\n break;\n }\n\n // Calculate horizontal alignment for top/bottom\n if (position === 'top' || position === 'bottom') {\n switch (align) {\n case 'start':\n left = triggerRect.left;\n break;\n case 'center':\n left = triggerRect.left + triggerRect.width / 2 - popoverRect.width / 2;\n break;\n case 'end':\n left = triggerRect.right - popoverRect.width;\n break;\n }\n\n // Constrain to viewport\n if (left < viewportPadding) {\n left = viewportPadding;\n } else if (left + popoverRect.width > viewportWidth - viewportPadding) {\n left = viewportWidth - popoverRect.width - viewportPadding;\n }\n }\n\n // Calculate vertical alignment for left/right\n if (position === 'left' || position === 'right') {\n switch (align) {\n case 'start':\n top = triggerRect.top;\n break;\n case 'center':\n top = triggerRect.top + triggerRect.height / 2 - popoverRect.height / 2;\n break;\n case 'end':\n top = triggerRect.bottom - popoverRect.height;\n break;\n }\n\n if (top < viewportPadding) top = viewportPadding;\n if (top + popoverRect.height > viewportHeight - viewportPadding) {\n maxHeight = viewportHeight - top - viewportPadding;\n }\n }\n\n // Apply styles\n this.popoverEl.style.top = `${top}px`;\n this.popoverEl.style.left = `${left}px`;\n\n if (maxHeight !== null && maxHeight > 100) {\n this.popoverEl.style.maxHeight = `${maxHeight}px`;\n this.popoverEl.style.overflowY = 'auto';\n } else {\n this.popoverEl.style.maxHeight = '';\n this.popoverEl.style.overflowY = '';\n }\n\n this.isPositioned = true;\n }\n\n render() {\n const popoverStyles: Record<string, string> = {\n visibility: this.isPositioned ? 'visible' : 'hidden',\n };\n\n if (this.width) popoverStyles.width = this.width;\n if (this.minWidth) popoverStyles.minWidth = this.minWidth;\n if (this.maxWidth) popoverStyles.maxWidth = this.maxWidth;\n\n return (\n <Host trigger-full-width={this.triggerFullWidth}>\n <div\n class={classnames('le-popover-trigger', {\n 'le-popover-trigger-full-width': this.triggerFullWidth,\n })}\n ref={el => (this.triggerEl = el)}\n onClick={this.handleTriggerClick}\n part=\"trigger\"\n >\n <slot name=\"trigger\">\n <button type=\"button\" class=\"le-popover-default-trigger\">\n <span>⊕</span>\n </button>\n </slot>\n </div>\n <div\n id={this.uniqueId}\n class=\"le-popover-content\"\n // Always use manual mode so nested popovers can be open together.\n // We implement click-outside and Escape handling ourselves.\n popover=\"manual\"\n ref={el => (this.popoverEl = el)}\n style={popoverStyles}\n data-fallback-open={this.supportsPopoverApi ? undefined : String(this.open)}\n >\n {(this.popoverTitle || this.showClose) && (\n <div class=\"le-popover-header\">\n {this.popoverTitle && <span class=\"le-popover-title\">{this.popoverTitle}</span>}\n {this.showClose && (\n <button\n type=\"button\"\n class=\"le-popover-close\"\n onClick={() => this.hide()}\n aria-label=\"Close\"\n >\n ×\n </button>\n )}\n </div>\n )}\n <div class=\"le-popover-body\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -71,7 +71,7 @@ export async function lePrompt(message, options = {}) {
|
|
|
71
71
|
document.body.appendChild(popup);
|
|
72
72
|
const result = await popup.show();
|
|
73
73
|
popup.remove();
|
|
74
|
-
return result.confirmed ?
|
|
74
|
+
return result.confirmed ? result.value ?? '' : null;
|
|
75
75
|
}
|
|
76
76
|
/**
|
|
77
77
|
* Create a popup element with the given configuration
|
|
@@ -80,6 +80,7 @@ function createPopupElement(message, options) {
|
|
|
80
80
|
const popup = document.createElement('le-popup');
|
|
81
81
|
popup.message = message;
|
|
82
82
|
popup.type = options.type || 'alert';
|
|
83
|
+
popup.mode = 'default';
|
|
83
84
|
if (options.title)
|
|
84
85
|
popup.popupTitle = options.title;
|
|
85
86
|
if (options.modal !== undefined)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"le-popup.api.js","sourceRoot":"","sources":["../../../src/components/le-popup/le-popup.api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAuCH;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,UAAwB,EAAE;IACvE,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACzE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACnB,KAAK,CAAC,MAAM,EAAE,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe,EAAE,UAAwB,EAAE;IACzE,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,CAAC;IAEf,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAe,EACf,UAAwB,EAAE;IAE1B,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,CAAC;IAEf,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAe,EAAE,OAAqB;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAuB,CAAC;IAEvE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC;IACrC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IAEvB,IAAI,OAAO,CAAC,KAAK;QAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;IACpD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC7D,IAAI,OAAO,CAAC,QAAQ;QAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACxD,IAAI,OAAO,CAAC,WAAW;QAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACjE,IAAI,OAAO,CAAC,UAAU;QAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC9D,IAAI,OAAO,CAAC,WAAW;QAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACjE,IAAI,OAAO,CAAC,YAAY;QAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IACpE,IAAI,OAAO,CAAC,KAAK;QAAE,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9D,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/**\n * Programmatic API for le-popup component\n *\n * These functions allow you to show popups without manually creating elements.\n *\n * @example\n * // Alert\n * await leAlert('Something happened!');\n *\n * // Confirm\n * const confirmed = await leConfirm('Are you sure?');\n * if (confirmed) { ... }\n *\n * // Prompt\n * const name = await lePrompt('What is your name?');\n * if (name !== null) { ... }\n */\n\nimport { LeKitMode } from '../..';\nimport type { PopupType, PopupPosition, PopupResult } from './le-popup';\n\n/**\n * Options for programmatic popup functions\n */\nexport interface PopupOptions {\n title?: string;\n type?: PopupType;\n modal?: boolean;\n position?: PopupPosition;\n confirmText?: string;\n cancelText?: string;\n placeholder?: string;\n defaultValue?: string;\n theme?: string;\n}\n\n/**\n * Interface for the le-popup custom element\n */\ninterface HTMLLePopupElement extends HTMLElement {\n open: boolean;\n type: PopupType;\n mode: LeKitMode;\n popupTitle?: string;\n message?: string;\n modal: boolean;\n position: PopupPosition;\n confirmText: string;\n cancelText: string;\n placeholder: string;\n defaultValue: string;\n show(): Promise<PopupResult>;\n hide(confirmed?: boolean): Promise<void>;\n}\n\n/**\n * Show an alert popup with a message\n * @param message - The message to display\n * @param options - Optional configuration\n * @returns Promise that resolves when closed\n *\n * @example\n * await leAlert('File saved successfully!');\n * await leAlert('Error occurred', { title: 'Error', theme: 'dark' });\n */\nexport async function leAlert(message: string, options: PopupOptions = {}): Promise<void> {\n const popup = createPopupElement(message, { ...options, type: 'alert' });\n document.body.appendChild(popup);\n\n await popup.show();\n popup.remove();\n}\n\n/**\n * Show a confirm popup with OK/Cancel buttons\n * @param message - The message to display\n * @param options - Optional configuration\n * @returns Promise that resolves to true (confirmed) or false (cancelled)\n *\n * @example\n * const confirmed = await leConfirm('Delete this item?');\n * if (confirmed) {\n * deleteItem();\n * }\n */\nexport async function leConfirm(message: string, options: PopupOptions = {}): Promise<boolean> {\n const popup = createPopupElement(message, { ...options, type: 'confirm' });\n document.body.appendChild(popup);\n\n const result = await popup.show();\n popup.remove();\n\n return result.confirmed;\n}\n\n/**\n * Show a prompt popup with an input field\n * @param message - The message to display\n * @param options - Optional configuration (including defaultValue, placeholder)\n * @returns Promise that resolves to the input value or null if cancelled\n *\n * @example\n * const name = await lePrompt('Enter your name:', {\n * title: 'Welcome',\n * placeholder: 'John Doe',\n * defaultValue: 'Guest'\n * });\n * if (name !== null) {\n * greetUser(name);\n * }\n */\nexport async function lePrompt(\n message: string,\n options: PopupOptions = {},\n): Promise<string | null> {\n const popup = createPopupElement(message, { ...options, type: 'prompt' });\n document.body.appendChild(popup);\n\n const result = await popup.show();\n popup.remove();\n\n return result.confirmed ? result.value ?? '' : null;\n}\n\n/**\n * Create a popup element with the given configuration\n */\nfunction createPopupElement(message: string, options: PopupOptions): HTMLLePopupElement {\n const popup = document.createElement('le-popup') as HTMLLePopupElement;\n\n popup.message = message;\n popup.type = options.type || 'alert';\n popup.mode = 'default';\n\n if (options.title) popup.popupTitle = options.title;\n if (options.modal !== undefined) popup.modal = options.modal;\n if (options.position) popup.position = options.position;\n if (options.confirmText) popup.confirmText = options.confirmText;\n if (options.cancelText) popup.cancelText = options.cancelText;\n if (options.placeholder) popup.placeholder = options.placeholder;\n if (options.defaultValue) popup.defaultValue = options.defaultValue;\n if (options.theme) popup.setAttribute('theme', options.theme);\n\n return popup;\n}\n"]}
|