le-kit 0.5.3 → 0.5.4
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/LLM_CONTEXT.md +0 -33
- package/package.json +3 -1
- package/readme.md +2 -0
- package/dist/cjs/index-BzadfLTc.js +0 -1864
- package/dist/cjs/index-BzadfLTc.js.map +0 -1
- package/dist/cjs/index.cjs.js +0 -124
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/le-bar_16.cjs.entry.js +0 -3397
- package/dist/cjs/le-box.cjs.entry.js +0 -136
- package/dist/cjs/le-breadcrumbs.cjs.entry.js +0 -223
- package/dist/cjs/le-card.cjs.entry.js +0 -29
- package/dist/cjs/le-code-input.cjs.entry.js +0 -147
- package/dist/cjs/le-combobox.cjs.entry.js +0 -210
- package/dist/cjs/le-header-placeholder.cjs.entry.js +0 -18
- package/dist/cjs/le-kit.cjs.js +0 -27
- package/dist/cjs/le-kit.cjs.js.map +0 -1
- package/dist/cjs/le-multiselect.cjs.entry.js +0 -284
- package/dist/cjs/le-number-input.cjs.entry.js +0 -162
- package/dist/cjs/le-round-progress.cjs.entry.js +0 -101
- package/dist/cjs/le-segmented-control.cjs.entry.js +0 -235
- package/dist/cjs/le-side-panel-toggle.cjs.entry.js +0 -213
- package/dist/cjs/le-side-panel.cjs.entry.js +0 -539
- package/dist/cjs/le-stack.cjs.entry.js +0 -122
- package/dist/cjs/le-tab-bar.cjs.entry.js +0 -233
- package/dist/cjs/le-tab-panel.cjs.entry.js +0 -82
- package/dist/cjs/le-tab.cjs.entry.js +0 -98
- package/dist/cjs/le-tabs.cjs.entry.js +0 -297
- package/dist/cjs/le-tag.cjs.entry.js +0 -51
- package/dist/cjs/le-text.cjs.entry.js +0 -318
- package/dist/cjs/le-turntable.cjs.entry.js +0 -131
- package/dist/cjs/loader.cjs.js +0 -15
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/utils-Dxx9WhWK.js +0 -152
- package/dist/cjs/utils-Dxx9WhWK.js.map +0 -1
- package/dist/collection/collection-manifest.json +0 -48
- package/dist/collection/components/le-bar/le-bar.css +0 -255
- package/dist/collection/components/le-bar/le-bar.js +0 -673
- package/dist/collection/components/le-bar/le-bar.js.map +0 -1
- package/dist/collection/components/le-box/le-box.css +0 -37
- package/dist/collection/components/le-box/le-box.js +0 -567
- package/dist/collection/components/le-box/le-box.js.map +0 -1
- package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.css +0 -72
- package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.js +0 -372
- package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.js.map +0 -1
- package/dist/collection/components/le-button/le-button.css +0 -290
- package/dist/collection/components/le-button/le-button.js +0 -431
- package/dist/collection/components/le-button/le-button.js.map +0 -1
- package/dist/collection/components/le-card/le-card.css +0 -74
- package/dist/collection/components/le-card/le-card.js +0 -103
- package/dist/collection/components/le-card/le-card.js.map +0 -1
- package/dist/collection/components/le-checkbox/le-checkbox.css +0 -93
- package/dist/collection/components/le-checkbox/le-checkbox.js +0 -177
- package/dist/collection/components/le-checkbox/le-checkbox.js.map +0 -1
- package/dist/collection/components/le-code-input/le-code-input.css +0 -106
- package/dist/collection/components/le-code-input/le-code-input.js +0 -433
- package/dist/collection/components/le-code-input/le-code-input.js.map +0 -1
- package/dist/collection/components/le-collapse/le-collapse.css +0 -31
- package/dist/collection/components/le-collapse/le-collapse.js +0 -185
- package/dist/collection/components/le-collapse/le-collapse.js.map +0 -1
- package/dist/collection/components/le-combobox/le-combobox.css +0 -144
- package/dist/collection/components/le-combobox/le-combobox.js +0 -633
- package/dist/collection/components/le-combobox/le-combobox.js.map +0 -1
- package/dist/collection/components/le-component/le-component.css +0 -189
- package/dist/collection/components/le-component/le-component.js +0 -343
- package/dist/collection/components/le-component/le-component.js.map +0 -1
- package/dist/collection/components/le-current-heading/le-current-heading.css +0 -13
- package/dist/collection/components/le-current-heading/le-current-heading.js +0 -131
- package/dist/collection/components/le-current-heading/le-current-heading.js.map +0 -1
- package/dist/collection/components/le-dropdown-base/le-dropdown-base.css +0 -167
- package/dist/collection/components/le-dropdown-base/le-dropdown-base.js +0 -735
- package/dist/collection/components/le-dropdown-base/le-dropdown-base.js.map +0 -1
- package/dist/collection/components/le-header/le-header.css +0 -120
- package/dist/collection/components/le-header/le-header.js +0 -485
- package/dist/collection/components/le-header/le-header.js.map +0 -1
- package/dist/collection/components/le-header-placeholder/le-header-placeholder.js +0 -21
- package/dist/collection/components/le-header-placeholder/le-header-placeholder.js.map +0 -1
- package/dist/collection/components/le-icon/le-icon.css +0 -13
- package/dist/collection/components/le-icon/le-icon.js +0 -185
- package/dist/collection/components/le-icon/le-icon.js.map +0 -1
- package/dist/collection/components/le-multiselect/le-multiselect.css +0 -163
- package/dist/collection/components/le-multiselect/le-multiselect.js +0 -713
- package/dist/collection/components/le-multiselect/le-multiselect.js.map +0 -1
- package/dist/collection/components/le-navigation/le-navigation.css +0 -330
- package/dist/collection/components/le-navigation/le-navigation.js +0 -690
- package/dist/collection/components/le-navigation/le-navigation.js.map +0 -1
- package/dist/collection/components/le-number-input/le-number-input.css +0 -135
- package/dist/collection/components/le-number-input/le-number-input.js +0 -476
- package/dist/collection/components/le-number-input/le-number-input.js.map +0 -1
- package/dist/collection/components/le-popover/le-popover.css +0 -164
- package/dist/collection/components/le-popover/le-popover.js +0 -828
- package/dist/collection/components/le-popover/le-popover.js.map +0 -1
- package/dist/collection/components/le-popup/le-popup.api.js +0 -102
- package/dist/collection/components/le-popup/le-popup.api.js.map +0 -1
- package/dist/collection/components/le-popup/le-popup.css +0 -222
- package/dist/collection/components/le-popup/le-popup.js +0 -600
- package/dist/collection/components/le-popup/le-popup.js.map +0 -1
- package/dist/collection/components/le-round-progress/le-round-progress.css +0 -34
- package/dist/collection/components/le-round-progress/le-round-progress.js +0 -179
- package/dist/collection/components/le-round-progress/le-round-progress.js.map +0 -1
- package/dist/collection/components/le-scroll-progress/le-scroll-progress.css +0 -29
- package/dist/collection/components/le-scroll-progress/le-scroll-progress.js +0 -185
- package/dist/collection/components/le-scroll-progress/le-scroll-progress.js.map +0 -1
- package/dist/collection/components/le-segmented-control/le-segmented-control.css +0 -78
- package/dist/collection/components/le-segmented-control/le-segmented-control.js +0 -436
- package/dist/collection/components/le-segmented-control/le-segmented-control.js.map +0 -1
- package/dist/collection/components/le-select/le-select.css +0 -121
- package/dist/collection/components/le-select/le-select.js +0 -556
- package/dist/collection/components/le-select/le-select.js.map +0 -1
- package/dist/collection/components/le-side-panel/le-side-panel.css +0 -202
- package/dist/collection/components/le-side-panel/le-side-panel.js +0 -948
- package/dist/collection/components/le-side-panel/le-side-panel.js.map +0 -1
- package/dist/collection/components/le-side-panel-toggle/le-side-panel-toggle.js +0 -595
- package/dist/collection/components/le-side-panel-toggle/le-side-panel-toggle.js.map +0 -1
- package/dist/collection/components/le-slot/le-slot.default.css +0 -222
- package/dist/collection/components/le-slot/le-slot.js +0 -590
- package/dist/collection/components/le-slot/le-slot.js.map +0 -1
- package/dist/collection/components/le-stack/le-stack.default.css +0 -37
- package/dist/collection/components/le-stack/le-stack.js +0 -377
- package/dist/collection/components/le-stack/le-stack.js.map +0 -1
- package/dist/collection/components/le-string-input/le-string-input.css +0 -83
- package/dist/collection/components/le-string-input/le-string-input.js +0 -370
- package/dist/collection/components/le-string-input/le-string-input.js.map +0 -1
- package/dist/collection/components/le-tab/le-tab.css +0 -289
- package/dist/collection/components/le-tab/le-tab.js +0 -528
- package/dist/collection/components/le-tab/le-tab.js.map +0 -1
- package/dist/collection/components/le-tab-bar/le-tab-bar.css +0 -89
- package/dist/collection/components/le-tab-bar/le-tab-bar.js +0 -459
- package/dist/collection/components/le-tab-bar/le-tab-bar.js.map +0 -1
- package/dist/collection/components/le-tab-panel/le-tab-panel.css +0 -30
- package/dist/collection/components/le-tab-panel/le-tab-panel.js +0 -285
- package/dist/collection/components/le-tab-panel/le-tab-panel.js.map +0 -1
- package/dist/collection/components/le-tabs/le-tabs.css +0 -146
- package/dist/collection/components/le-tabs/le-tabs.js +0 -579
- package/dist/collection/components/le-tabs/le-tabs.js.map +0 -1
- package/dist/collection/components/le-tag/le-tag.css +0 -139
- package/dist/collection/components/le-tag/le-tag.js +0 -251
- package/dist/collection/components/le-tag/le-tag.js.map +0 -1
- package/dist/collection/components/le-text/le-text.css +0 -169
- package/dist/collection/components/le-text/le-text.js +0 -459
- package/dist/collection/components/le-text/le-text.js.map +0 -1
- package/dist/collection/components/le-turntable/le-turntable.css +0 -10
- package/dist/collection/components/le-turntable/le-turntable.js +0 -202
- package/dist/collection/components/le-turntable/le-turntable.js.map +0 -1
- package/dist/collection/dist/components/assets/custom-elements.json +0 -12263
- package/dist/collection/dist/components/assets/icons/arrow-left.json +0 -21
- package/dist/collection/dist/components/assets/icons/arrow-right.json +0 -21
- package/dist/collection/dist/components/assets/icons/check.json +0 -12
- package/dist/collection/dist/components/assets/icons/chevron-down.json +0 -12
- package/dist/collection/dist/components/assets/icons/chevron-left.json +0 -12
- package/dist/collection/dist/components/assets/icons/chevron-right.json +0 -12
- package/dist/collection/dist/components/assets/icons/chevron-up.json +0 -12
- package/dist/collection/dist/components/assets/icons/ellipsis-horizontal.json +0 -14
- package/dist/collection/dist/components/assets/icons/ellipsis-vertical.json +0 -14
- package/dist/collection/dist/components/assets/icons/hamburger.json +0 -14
- package/dist/collection/dist/components/assets/icons/side-panel.json +0 -61
- package/dist/collection/dist/themes/base.css +0 -89
- package/dist/collection/dist/themes/dark.css +0 -104
- package/dist/collection/dist/themes/default.css +0 -112
- package/dist/collection/dist/themes/gradient.css +0 -104
- package/dist/collection/dist/themes/index.css +0 -76
- package/dist/collection/dist/themes/minimal.css +0 -104
- package/dist/collection/dist/themes/warm.css +0 -104
- package/dist/collection/global/app.js +0 -177
- package/dist/collection/global/app.js.map +0 -1
- package/dist/collection/index.js +0 -16
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/types/blocks.js +0 -115
- package/dist/collection/types/blocks.js.map +0 -1
- package/dist/collection/types/options.js +0 -2
- package/dist/collection/types/options.js.map +0 -1
- package/dist/collection/utils/utils.js +0 -141
- package/dist/collection/utils/utils.js.map +0 -1
- package/dist/components/app.js +0 -180
- package/dist/components/app.js.map +0 -1
- package/dist/components/assets/custom-elements.json +0 -12263
- package/dist/components/assets/icons/arrow-left.json +0 -21
- package/dist/components/assets/icons/arrow-right.json +0 -21
- package/dist/components/assets/icons/check.json +0 -12
- package/dist/components/assets/icons/chevron-down.json +0 -12
- package/dist/components/assets/icons/chevron-left.json +0 -12
- package/dist/components/assets/icons/chevron-right.json +0 -12
- package/dist/components/assets/icons/chevron-up.json +0 -12
- package/dist/components/assets/icons/ellipsis-horizontal.json +0 -14
- package/dist/components/assets/icons/ellipsis-vertical.json +0 -14
- package/dist/components/assets/icons/hamburger.json +0 -14
- package/dist/components/assets/icons/side-panel.json +0 -61
- package/dist/components/index.d.ts +0 -33
- package/dist/components/index.js +0 -12
- package/dist/components/index.js.map +0 -1
- package/dist/components/le-bar.d.ts +0 -11
- package/dist/components/le-bar.js +0 -9
- package/dist/components/le-bar.js.map +0 -1
- package/dist/components/le-bar2.js +0 -498
- package/dist/components/le-bar2.js.map +0 -1
- package/dist/components/le-box.d.ts +0 -11
- package/dist/components/le-box.js +0 -225
- package/dist/components/le-box.js.map +0 -1
- package/dist/components/le-breadcrumbs.d.ts +0 -11
- package/dist/components/le-breadcrumbs.js +0 -327
- package/dist/components/le-breadcrumbs.js.map +0 -1
- package/dist/components/le-button.d.ts +0 -11
- package/dist/components/le-button.js +0 -9
- package/dist/components/le-button.js.map +0 -1
- package/dist/components/le-button2.js +0 -1577
- package/dist/components/le-button2.js.map +0 -1
- package/dist/components/le-card.d.ts +0 -11
- package/dist/components/le-card.js +0 -100
- package/dist/components/le-card.js.map +0 -1
- package/dist/components/le-checkbox.d.ts +0 -11
- package/dist/components/le-checkbox.js +0 -9
- package/dist/components/le-checkbox.js.map +0 -1
- package/dist/components/le-code-input.d.ts +0 -11
- package/dist/components/le-code-input.js +0 -231
- package/dist/components/le-code-input.js.map +0 -1
- package/dist/components/le-collapse.d.ts +0 -11
- package/dist/components/le-collapse.js +0 -9
- package/dist/components/le-collapse.js.map +0 -1
- package/dist/components/le-collapse2.js +0 -138
- package/dist/components/le-collapse2.js.map +0 -1
- package/dist/components/le-combobox.d.ts +0 -11
- package/dist/components/le-combobox.js +0 -299
- package/dist/components/le-combobox.js.map +0 -1
- package/dist/components/le-component.d.ts +0 -11
- package/dist/components/le-component.js +0 -9
- package/dist/components/le-component.js.map +0 -1
- package/dist/components/le-current-heading.d.ts +0 -11
- package/dist/components/le-current-heading.js +0 -93
- package/dist/components/le-current-heading.js.map +0 -1
- package/dist/components/le-dropdown-base.d.ts +0 -11
- package/dist/components/le-dropdown-base.js +0 -9
- package/dist/components/le-dropdown-base.js.map +0 -1
- package/dist/components/le-dropdown-base2.js +0 -366
- package/dist/components/le-dropdown-base2.js.map +0 -1
- package/dist/components/le-header-placeholder.d.ts +0 -11
- package/dist/components/le-header-placeholder.js +0 -37
- package/dist/components/le-header-placeholder.js.map +0 -1
- package/dist/components/le-header.d.ts +0 -11
- package/dist/components/le-header.js +0 -325
- package/dist/components/le-header.js.map +0 -1
- package/dist/components/le-icon.d.ts +0 -11
- package/dist/components/le-icon.js +0 -9
- package/dist/components/le-icon.js.map +0 -1
- package/dist/components/le-icon2.js +0 -149
- package/dist/components/le-icon2.js.map +0 -1
- package/dist/components/le-multiselect.d.ts +0 -11
- package/dist/components/le-multiselect.js +0 -383
- package/dist/components/le-multiselect.js.map +0 -1
- package/dist/components/le-navigation.d.ts +0 -11
- package/dist/components/le-navigation.js +0 -9
- package/dist/components/le-navigation.js.map +0 -1
- package/dist/components/le-navigation2.js +0 -488
- package/dist/components/le-navigation2.js.map +0 -1
- package/dist/components/le-number-input.d.ts +0 -11
- package/dist/components/le-number-input.js +0 -248
- package/dist/components/le-number-input.js.map +0 -1
- package/dist/components/le-popover.d.ts +0 -11
- package/dist/components/le-popover.js +0 -9
- package/dist/components/le-popover.js.map +0 -1
- package/dist/components/le-popover2.js +0 -642
- package/dist/components/le-popover2.js.map +0 -1
- package/dist/components/le-popup.api.js +0 -106
- package/dist/components/le-popup.api.js.map +0 -1
- package/dist/components/le-popup.d.ts +0 -11
- package/dist/components/le-popup.js +0 -9
- package/dist/components/le-popup.js.map +0 -1
- package/dist/components/le-round-progress.d.ts +0 -11
- package/dist/components/le-round-progress.js +0 -130
- package/dist/components/le-round-progress.js.map +0 -1
- package/dist/components/le-scroll-progress.d.ts +0 -11
- package/dist/components/le-scroll-progress.js +0 -140
- package/dist/components/le-scroll-progress.js.map +0 -1
- package/dist/components/le-segmented-control.d.ts +0 -11
- package/dist/components/le-segmented-control.js +0 -321
- package/dist/components/le-segmented-control.js.map +0 -1
- package/dist/components/le-select.d.ts +0 -11
- package/dist/components/le-select.js +0 -9
- package/dist/components/le-select.js.map +0 -1
- package/dist/components/le-side-panel-toggle.d.ts +0 -11
- package/dist/components/le-side-panel-toggle.js +0 -9
- package/dist/components/le-side-panel-toggle.js.map +0 -1
- package/dist/components/le-side-panel-toggle2.js +0 -295
- package/dist/components/le-side-panel-toggle2.js.map +0 -1
- package/dist/components/le-side-panel.d.ts +0 -11
- package/dist/components/le-side-panel.js +0 -654
- package/dist/components/le-side-panel.js.map +0 -1
- package/dist/components/le-slot.d.ts +0 -11
- package/dist/components/le-slot.js +0 -9
- package/dist/components/le-slot.js.map +0 -1
- package/dist/components/le-stack.d.ts +0 -11
- package/dist/components/le-stack.js +0 -202
- package/dist/components/le-stack.js.map +0 -1
- package/dist/components/le-string-input.d.ts +0 -11
- package/dist/components/le-string-input.js +0 -9
- package/dist/components/le-string-input.js.map +0 -1
- package/dist/components/le-tab-bar.d.ts +0 -11
- package/dist/components/le-tab-bar.js +0 -321
- package/dist/components/le-tab-bar.js.map +0 -1
- package/dist/components/le-tab-panel.d.ts +0 -11
- package/dist/components/le-tab-panel.js +0 -164
- package/dist/components/le-tab-panel.js.map +0 -1
- package/dist/components/le-tab.d.ts +0 -11
- package/dist/components/le-tab.js +0 -9
- package/dist/components/le-tab.js.map +0 -1
- package/dist/components/le-tab2.js +0 -182
- package/dist/components/le-tab2.js.map +0 -1
- package/dist/components/le-tabs.d.ts +0 -11
- package/dist/components/le-tabs.js +0 -387
- package/dist/components/le-tabs.js.map +0 -1
- package/dist/components/le-tag.d.ts +0 -11
- package/dist/components/le-tag.js +0 -9
- package/dist/components/le-tag.js.map +0 -1
- package/dist/components/le-tag2.js +0 -124
- package/dist/components/le-tag2.js.map +0 -1
- package/dist/components/le-text.d.ts +0 -11
- package/dist/components/le-text.js +0 -398
- package/dist/components/le-text.js.map +0 -1
- package/dist/components/le-turntable.d.ts +0 -11
- package/dist/components/le-turntable.js +0 -156
- package/dist/components/le-turntable.js.map +0 -1
- package/dist/components/utils.js +0 -146
- package/dist/components/utils.js.map +0 -1
- package/dist/docs.d.ts +0 -443
- package/dist/docs.json +0 -14581
- package/dist/esm/index-DFTm5BqT.js +0 -1844
- package/dist/esm/index-DFTm5BqT.js.map +0 -1
- package/dist/esm/index.js +0 -109
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/le-bar_16.entry.js +0 -3380
- package/dist/esm/le-box.entry.js +0 -134
- package/dist/esm/le-box.entry.js.map +0 -1
- package/dist/esm/le-breadcrumbs.entry.js +0 -221
- package/dist/esm/le-breadcrumbs.entry.js.map +0 -1
- package/dist/esm/le-card.entry.js +0 -27
- package/dist/esm/le-card.entry.js.map +0 -1
- package/dist/esm/le-code-input.entry.js +0 -145
- package/dist/esm/le-code-input.entry.js.map +0 -1
- package/dist/esm/le-combobox.entry.js +0 -208
- package/dist/esm/le-combobox.entry.js.map +0 -1
- package/dist/esm/le-header-placeholder.entry.js +0 -16
- package/dist/esm/le-header-placeholder.entry.js.map +0 -1
- package/dist/esm/le-kit.js +0 -23
- package/dist/esm/le-kit.js.map +0 -1
- package/dist/esm/le-multiselect.entry.js +0 -282
- package/dist/esm/le-multiselect.entry.js.map +0 -1
- package/dist/esm/le-number-input.entry.js +0 -160
- package/dist/esm/le-number-input.entry.js.map +0 -1
- package/dist/esm/le-round-progress.entry.js +0 -99
- package/dist/esm/le-round-progress.entry.js.map +0 -1
- package/dist/esm/le-segmented-control.entry.js +0 -233
- package/dist/esm/le-segmented-control.entry.js.map +0 -1
- package/dist/esm/le-side-panel-toggle.entry.js +0 -211
- package/dist/esm/le-side-panel-toggle.entry.js.map +0 -1
- package/dist/esm/le-side-panel.entry.js +0 -537
- package/dist/esm/le-side-panel.entry.js.map +0 -1
- package/dist/esm/le-stack.entry.js +0 -120
- package/dist/esm/le-stack.entry.js.map +0 -1
- package/dist/esm/le-tab-bar.entry.js +0 -231
- package/dist/esm/le-tab-bar.entry.js.map +0 -1
- package/dist/esm/le-tab-panel.entry.js +0 -80
- package/dist/esm/le-tab-panel.entry.js.map +0 -1
- package/dist/esm/le-tab.entry.js +0 -96
- package/dist/esm/le-tab.entry.js.map +0 -1
- package/dist/esm/le-tabs.entry.js +0 -295
- package/dist/esm/le-tabs.entry.js.map +0 -1
- package/dist/esm/le-tag.entry.js +0 -49
- package/dist/esm/le-tag.entry.js.map +0 -1
- package/dist/esm/le-text.entry.js +0 -316
- package/dist/esm/le-text.entry.js.map +0 -1
- package/dist/esm/le-turntable.entry.js +0 -129
- package/dist/esm/le-turntable.entry.js.map +0 -1
- package/dist/esm/loader.js +0 -13
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/utils-DZYCZLrF.js +0 -146
- package/dist/esm/utils-DZYCZLrF.js.map +0 -1
- package/dist/index.cjs.js +0 -1
- package/dist/index.js +0 -1
- package/dist/le-kit/dist/components/assets/custom-elements.json +0 -12263
- package/dist/le-kit/dist/components/assets/icons/arrow-left.json +0 -21
- package/dist/le-kit/dist/components/assets/icons/arrow-right.json +0 -21
- package/dist/le-kit/dist/components/assets/icons/check.json +0 -12
- package/dist/le-kit/dist/components/assets/icons/chevron-down.json +0 -12
- package/dist/le-kit/dist/components/assets/icons/chevron-left.json +0 -12
- package/dist/le-kit/dist/components/assets/icons/chevron-right.json +0 -12
- package/dist/le-kit/dist/components/assets/icons/chevron-up.json +0 -12
- package/dist/le-kit/dist/components/assets/icons/ellipsis-horizontal.json +0 -14
- package/dist/le-kit/dist/components/assets/icons/ellipsis-vertical.json +0 -14
- package/dist/le-kit/dist/components/assets/icons/hamburger.json +0 -14
- package/dist/le-kit/dist/components/assets/icons/side-panel.json +0 -61
- package/dist/le-kit/dist/themes/base.css +0 -89
- package/dist/le-kit/dist/themes/dark.css +0 -104
- package/dist/le-kit/dist/themes/default.css +0 -112
- package/dist/le-kit/dist/themes/gradient.css +0 -104
- package/dist/le-kit/dist/themes/index.css +0 -76
- package/dist/le-kit/dist/themes/minimal.css +0 -104
- package/dist/le-kit/dist/themes/warm.css +0 -104
- package/dist/le-kit/index.esm.js +0 -2
- package/dist/le-kit/index.esm.js.map +0 -1
- package/dist/le-kit/le-kit.css +0 -1
- package/dist/le-kit/le-kit.esm.js +0 -2
- package/dist/le-kit/le-kit.esm.js.map +0 -1
- package/dist/le-kit/loader.esm.js.map +0 -1
- package/dist/le-kit/p-3067b18f.entry.js +0 -2
- package/dist/le-kit/p-3067b18f.entry.js.map +0 -1
- package/dist/le-kit/p-34c4d97d.entry.js +0 -2
- package/dist/le-kit/p-34c4d97d.entry.js.map +0 -1
- package/dist/le-kit/p-45182541.entry.js +0 -2
- package/dist/le-kit/p-45182541.entry.js.map +0 -1
- package/dist/le-kit/p-52a41c96.entry.js +0 -2
- package/dist/le-kit/p-52a41c96.entry.js.map +0 -1
- package/dist/le-kit/p-55fb5dd2.entry.js +0 -2
- package/dist/le-kit/p-55fb5dd2.entry.js.map +0 -1
- package/dist/le-kit/p-649025f4.entry.js +0 -2
- package/dist/le-kit/p-649025f4.entry.js.map +0 -1
- package/dist/le-kit/p-67930309.entry.js +0 -2
- package/dist/le-kit/p-67930309.entry.js.map +0 -1
- package/dist/le-kit/p-6d222705.entry.js +0 -2
- package/dist/le-kit/p-6d222705.entry.js.map +0 -1
- package/dist/le-kit/p-8049e0c2.entry.js +0 -2
- package/dist/le-kit/p-8049e0c2.entry.js.map +0 -1
- package/dist/le-kit/p-884f57bd.entry.js +0 -2
- package/dist/le-kit/p-884f57bd.entry.js.map +0 -1
- package/dist/le-kit/p-88c70f9d.entry.js +0 -2
- package/dist/le-kit/p-88c70f9d.entry.js.map +0 -1
- package/dist/le-kit/p-96610729.entry.js +0 -2
- package/dist/le-kit/p-96610729.entry.js.map +0 -1
- package/dist/le-kit/p-D8RYDS9p.js +0 -2
- package/dist/le-kit/p-D8RYDS9p.js.map +0 -1
- package/dist/le-kit/p-DFTm5BqT.js +0 -3
- package/dist/le-kit/p-DFTm5BqT.js.map +0 -1
- package/dist/le-kit/p-a34054e0.entry.js +0 -2
- package/dist/le-kit/p-a34054e0.entry.js.map +0 -1
- package/dist/le-kit/p-a388e46a.entry.js +0 -2
- package/dist/le-kit/p-a388e46a.entry.js.map +0 -1
- package/dist/le-kit/p-c0c53650.entry.js +0 -2
- package/dist/le-kit/p-c0c53650.entry.js.map +0 -1
- package/dist/le-kit/p-cbf17514.entry.js +0 -2
- package/dist/le-kit/p-cbf17514.entry.js.map +0 -1
- package/dist/le-kit/p-d934de74.entry.js +0 -2
- package/dist/le-kit/p-d934de74.entry.js.map +0 -1
- package/dist/le-kit/p-de72c8b5.entry.js +0 -2
- package/dist/le-kit/p-de72c8b5.entry.js.map +0 -1
- package/dist/le-kit/p-e3dd0f2a.entry.js +0 -2
- package/dist/le-kit/p-e3dd0f2a.entry.js.map +0 -1
- package/dist/le-kit/p-ee170967.entry.js +0 -2
- package/dist/le-kit/p-ee170967.entry.js.map +0 -1
- package/dist/le-kit/p-eedb2f75.entry.js +0 -2
- package/dist/le-kit/p-eedb2f75.entry.js.map +0 -1
- package/dist/themes/base.css +0 -89
- package/dist/themes/dark.css +0 -104
- package/dist/themes/default.css +0 -112
- package/dist/themes/gradient.css +0 -104
- package/dist/themes/index.css +0 -76
- package/dist/themes/minimal.css +0 -104
- package/dist/themes/warm.css +0 -104
- package/dist/types/components/le-bar/le-bar.d.ts +0 -131
- package/dist/types/components/le-box/le-box.d.ts +0 -111
- package/dist/types/components/le-breadcrumbs/le-breadcrumbs.d.ts +0 -57
- package/dist/types/components/le-button/le-button.d.ts +0 -93
- package/dist/types/components/le-card/le-card.d.ts +0 -37
- package/dist/types/components/le-checkbox/le-checkbox.d.ts +0 -46
- package/dist/types/components/le-code-input/le-code-input.d.ts +0 -102
- package/dist/types/components/le-collapse/le-collapse.d.ts +0 -43
- package/dist/types/components/le-combobox/le-combobox.d.ts +0 -128
- package/dist/types/components/le-component/le-component.d.ts +0 -115
- package/dist/types/components/le-current-heading/le-current-heading.d.ts +0 -25
- package/dist/types/components/le-dropdown-base/le-dropdown-base.d.ts +0 -118
- package/dist/types/components/le-header/le-header.d.ts +0 -115
- package/dist/types/components/le-header-placeholder/le-header-placeholder.d.ts +0 -13
- package/dist/types/components/le-icon/le-icon.d.ts +0 -28
- package/dist/types/components/le-multiselect/le-multiselect.d.ts +0 -143
- package/dist/types/components/le-navigation/le-navigation.d.ts +0 -125
- package/dist/types/components/le-number-input/le-number-input.d.ts +0 -106
- package/dist/types/components/le-popover/le-popover.d.ts +0 -129
- package/dist/types/components/le-popup/le-popup.api.d.ts +0 -73
- package/dist/types/components/le-popup/le-popup.d.ts +0 -127
- package/dist/types/components/le-round-progress/le-round-progress.d.ts +0 -37
- package/dist/types/components/le-scroll-progress/le-scroll-progress.d.ts +0 -40
- package/dist/types/components/le-segmented-control/le-segmented-control.d.ts +0 -82
- package/dist/types/components/le-select/le-select.d.ts +0 -125
- package/dist/types/components/le-side-panel/le-side-panel.d.ts +0 -102
- package/dist/types/components/le-side-panel-toggle/le-side-panel-toggle.d.ts +0 -48
- package/dist/types/components/le-slot/le-slot.d.ts +0 -149
- package/dist/types/components/le-stack/le-stack.d.ts +0 -73
- package/dist/types/components/le-string-input/le-string-input.d.ts +0 -91
- package/dist/types/components/le-tab/le-tab.d.ts +0 -116
- package/dist/types/components/le-tab-bar/le-tab-bar.d.ts +0 -88
- package/dist/types/components/le-tab-panel/le-tab-panel.d.ts +0 -75
- package/dist/types/components/le-tabs/le-tabs.d.ts +0 -108
- package/dist/types/components/le-tag/le-tag.d.ts +0 -78
- package/dist/types/components/le-text/le-text.d.ts +0 -141
- package/dist/types/components/le-turntable/le-turntable.d.ts +0 -55
- package/dist/types/components.d.ts +0 -5800
- package/dist/types/global/app.d.ts +0 -96
- package/dist/types/index.d.ts +0 -16
- package/dist/types/stencil-public-runtime.d.ts +0 -1799
- package/dist/types/types/blocks.d.ts +0 -136
- package/dist/types/types/options.d.ts +0 -143
- package/dist/types/utils/utils.d.ts +0 -54
- package/loader/cdn.js +0 -1
- package/loader/index.cjs.js +0 -1
- package/loader/index.d.ts +0 -24
- package/loader/index.es2017.js +0 -1
- package/loader/index.js +0 -2
|
@@ -1,1577 +0,0 @@
|
|
|
1
|
-
import { proxyCustomElement, HTMLElement, createEvent, h, transformTag, getAssetPath, Host, Fragment } from '@stencil/core/internal/client';
|
|
2
|
-
import { c as classnames, o as observeModeChanges } from './utils.js';
|
|
3
|
-
import { d as getLeKitConfig } from './app.js';
|
|
4
|
-
import { a as leConfirm } from './le-popup.api.js';
|
|
5
|
-
import { d as defineCustomElement$8 } from './le-dropdown-base2.js';
|
|
6
|
-
import { d as defineCustomElement$7 } from './le-popover2.js';
|
|
7
|
-
|
|
8
|
-
const leStringInputCss = () => `:host{display:block;--le-input-bg:var(--le-color-surface, #ffffff);--le-input-color:var(--le-color-text-primary, #333333);--le-input-border:var(--le-border-width, 2px) solid var(--le-color-border-input, #007bff);--le-input-radius:var(--le-radius-sm, 4px);--le-input-padding:2px 6px;--le-input-height:1.5rem;--le-input-label-color:var(--le-color-text-primary, #333333);--le-input-desc-color:var(--le-color-text-secondary, #666666);--le-input-placeholder-color:#999999}.le-input-wrapper{display:flex;flex-direction:column;gap:2px}.le-input-label{display:block;font-size:0.9em;font-weight:500;color:var(--le-input-label-color);margin-bottom:2px}.le-input-container{position:relative;display:flex;align-items:center;background:var(--le-input-bg);border:var(--le-input-border);border-radius:var(--le-input-radius);transition:border-color 0.2s}.le-input-container:focus-within{outline:2px solid var(--le-color-focus);outline-offset:2px}:host([disabled]) .le-input-container{opacity:0.6;background-color:rgba(0,0,0,0.05);cursor:not-allowed}input{flex:1;min-height:var(--le-input-height);padding:var(--le-input-padding);border:none;background:transparent;color:var(--le-input-color);font-family:inherit;font-size:inherit;outline:none;width:100%}input::placeholder{color:var(--le-input-placeholder-color)}.icon-start,.icon-end{display:flex;align-items:center;justify-content:center;padding:0 8px;color:var(--le-input-desc-color)}.le-input-description{font-size:0.85em;color:var(--le-input-desc-color);margin-top:2px}.le-input-description::has(le-slot>slot[name=description]:empty){display:none}`;
|
|
9
|
-
|
|
10
|
-
const LeStringInput = /*@__PURE__*/ proxyCustomElement(class LeStringInput extends HTMLElement {
|
|
11
|
-
constructor(registerHost) {
|
|
12
|
-
super();
|
|
13
|
-
if (registerHost !== false) {
|
|
14
|
-
this.__registerHost();
|
|
15
|
-
}
|
|
16
|
-
this.__attachShadow();
|
|
17
|
-
this.leChange = createEvent(this, "change", 7);
|
|
18
|
-
this.leInput = createEvent(this, "input", 7);
|
|
19
|
-
/**
|
|
20
|
-
* The type of the input (text, email, password, etc.)
|
|
21
|
-
*/
|
|
22
|
-
this.type = 'text';
|
|
23
|
-
/**
|
|
24
|
-
* Hide description slot
|
|
25
|
-
*/
|
|
26
|
-
this.hideDescription = false;
|
|
27
|
-
/**
|
|
28
|
-
* Whether the input is disabled
|
|
29
|
-
*/
|
|
30
|
-
this.disabled = false;
|
|
31
|
-
/**
|
|
32
|
-
* Whether the input is read-only
|
|
33
|
-
*/
|
|
34
|
-
this.readonly = false;
|
|
35
|
-
this.handleInput = (ev) => {
|
|
36
|
-
const input = ev.target;
|
|
37
|
-
this.value = input.value;
|
|
38
|
-
this.leInput.emit({
|
|
39
|
-
value: this.value,
|
|
40
|
-
name: this.name,
|
|
41
|
-
externalId: this.externalId,
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
this.handleChange = (ev) => {
|
|
45
|
-
const input = ev.target;
|
|
46
|
-
this.value = input.value;
|
|
47
|
-
this.leChange.emit({
|
|
48
|
-
value: this.value,
|
|
49
|
-
name: this.name,
|
|
50
|
-
externalId: this.externalId,
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
this.handleClick = (ev) => {
|
|
54
|
-
ev.stopPropagation();
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
render() {
|
|
58
|
-
return (h("le-component", { key: 'b7d315a0bbe587dae606fec9ee3da32c16b773cb', component: "le-string-input", hostClass: classnames({ disabled: this.disabled }) }, h("div", { key: 'cfefdea8ce0625417cef62d0f432e13df652ab44', class: "le-input-wrapper" }, this.label && (h("label", { key: 'bfc0f2c440e00f2212c1ae9b0d3dd5b484ed0c5d', class: "le-input-label", htmlFor: this.name }, this.label)), h("div", { key: '324d58a4e798c4cd4d44c4f23760e38a24bfa4f6', class: "le-input-container", part: "container" }, this.iconStart && h("span", { key: '7851e3d9a30a304f2472e8de3dea1d6ce703b9ea', class: "icon-start" }, this.iconStart), h("input", { key: 'e51b775e8a9f8f55279ea91f04efbb0c5fdb4d1a', ref: el => {
|
|
59
|
-
if (this.inputRef) {
|
|
60
|
-
this.inputRef(el);
|
|
61
|
-
}
|
|
62
|
-
}, id: this.name, type: this.type, name: this.name, value: this.value, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput, onChange: this.handleChange, onClick: this.handleClick }), this.iconEnd && h("span", { key: '7018ada874d6b1c85e88a93ba695d00c118c4a6a', class: "icon-end" }, this.iconEnd)), !this.hideDescription && (h("div", { key: '826a2853561ab428e82d879012bc7bfdad4b1dfe', class: "le-input-description" }, h("le-slot", { key: '3a6fc7a46fffacbef6e44fcaa7a80af365754d1c', name: "description", type: "text", tag: "p", label: "Description" }, h("slot", { key: 'b6bbe4efe29c88b1910a53f6704846bfd4280307', name: "description" })))))));
|
|
63
|
-
}
|
|
64
|
-
get el() { return this; }
|
|
65
|
-
static get style() { return leStringInputCss(); }
|
|
66
|
-
}, [257, "le-string-input", {
|
|
67
|
-
"inputRef": [16],
|
|
68
|
-
"mode": [1537],
|
|
69
|
-
"value": [1537],
|
|
70
|
-
"name": [1],
|
|
71
|
-
"type": [1],
|
|
72
|
-
"label": [1],
|
|
73
|
-
"iconStart": [1, "icon-start"],
|
|
74
|
-
"iconEnd": [1, "icon-end"],
|
|
75
|
-
"placeholder": [1],
|
|
76
|
-
"hideDescription": [4, "hide-description"],
|
|
77
|
-
"disabled": [4],
|
|
78
|
-
"readonly": [4],
|
|
79
|
-
"externalId": [1, "external-id"]
|
|
80
|
-
}]);
|
|
81
|
-
function defineCustomElement$6() {
|
|
82
|
-
if (typeof customElements === "undefined") {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
const components = ["le-string-input", "le-button", "le-checkbox", "le-component", "le-popover", "le-popup", "le-select", "le-slot", "le-string-input"];
|
|
86
|
-
components.forEach(tagName => { switch (tagName) {
|
|
87
|
-
case "le-string-input":
|
|
88
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
89
|
-
customElements.define(transformTag(tagName), LeStringInput);
|
|
90
|
-
}
|
|
91
|
-
break;
|
|
92
|
-
case "le-button":
|
|
93
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
94
|
-
defineCustomElement();
|
|
95
|
-
}
|
|
96
|
-
break;
|
|
97
|
-
case "le-checkbox":
|
|
98
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
99
|
-
defineCustomElement$1();
|
|
100
|
-
}
|
|
101
|
-
break;
|
|
102
|
-
case "le-component":
|
|
103
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
104
|
-
defineCustomElement$2();
|
|
105
|
-
}
|
|
106
|
-
break;
|
|
107
|
-
case "le-popover":
|
|
108
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
109
|
-
defineCustomElement$7();
|
|
110
|
-
}
|
|
111
|
-
break;
|
|
112
|
-
case "le-popup":
|
|
113
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
114
|
-
defineCustomElement$3();
|
|
115
|
-
}
|
|
116
|
-
break;
|
|
117
|
-
case "le-select":
|
|
118
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
119
|
-
defineCustomElement$4();
|
|
120
|
-
}
|
|
121
|
-
break;
|
|
122
|
-
case "le-slot":
|
|
123
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
124
|
-
defineCustomElement$5();
|
|
125
|
-
}
|
|
126
|
-
break;
|
|
127
|
-
case "le-string-input":
|
|
128
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
129
|
-
defineCustomElement$6();
|
|
130
|
-
}
|
|
131
|
-
break;
|
|
132
|
-
} });
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
const leSlotDefaultCss = () => `:host{display:contents;--le-slot-border-color:#0088ff;--le-slot-bg-color:rgba(0, 136, 255, 0.05);--le-slot-header-bg:rgb(218, 238, 255);--le-slot-label-color:#0066cc;--le-slot-description-color:#666;--le-slot-required-color:#e53935;--le-slot-dropzone-min-height:20px;--le-slot-dropzone-border-color:#ccc}.le-slot-container,.le-slot-header,.le-slot-description,.le-slot-dropzone,.le-slot-input{display:none}.hidden-slot{display:none}:host(.admin-mode){display:block;flex:1}:host(.admin-mode) .le-slot-container{position:relative;display:flex;flex-direction:column;border:2px dashed var(--le-slot-border-color);border-radius:4px;background:var(--le-slot-bg-color);margin:4px 0}:host(.admin-mode) .le-slot-header{display:flex;align-items:center;gap:4px;padding:0 0 0 var(--le-spacing-1, 4px);background:var(--le-slot-header-bg);border-bottom:1px solid var(--le-slot-border-color);font-size:var(--le-font-size-xs, 11px);font-weight:400;text-transform:capitalize}:host(.admin-mode) .le-slot-header-no-label{justify-content:flex-end;height:16px;border:none;background-color:transparent}.le-slot-label{color:var(--le-slot-label-color);text-align:start;overflow:hidden;width:0;flex:1 1 0%}.le-slot-required{color:var(--le-slot-required-color);font-weight:bold}:host(.admin-mode) .le-slot-description{display:block;padding:4px 8px;font-size:12px;color:var(--le-slot-description-color);font-style:italic}:host(.admin-mode) .le-slot-description-icon{display:inline-block;font-size:9px;line-height:1;cursor:pointer;color:var(--le-slot-description-color)}:host(.admin-mode) .le-slot-dropzone{display:block;min-height:var(--le-slot-dropzone-min-height);padding:var(--le-spacing-1, 4px);position:relative}:host(.admin-mode) .le-slot-dropzone:empty::before{content:'Drop content here';display:flex;align-items:center;justify-content:center;position:absolute;inset:8px;border:2px dashed var(--le-slot-dropzone-border-color);border-radius:4px;color:#999;font-size:12px;pointer-events:none}:host(.admin-mode.drag-over) .le-slot-container{border-color:#00cc66;background:rgba(0, 204, 102, 0.1)}:host(.admin-mode.drag-over) .le-slot-dropzone:empty::before{border-color:#00cc66;color:#00cc66;content:'Release to drop'}:host(.admin-mode) .le-slot-input{display:block;padding:var(--le-spacing-1, 4px)}:host(.admin-mode) .le-slot-input input,:host(.admin-mode) .le-slot-input textarea{display:block;width:100%;padding:8px 10px;border:1px solid var(--le-slot-dropzone-border-color);border-radius:4px;font-family:inherit;font-size:14px;line-height:1.4;background:#fff;color:#333;box-sizing:border-box;transition:border-color 0.2s, box-shadow 0.2s}:host(.admin-mode) .le-slot-input input:focus,:host(.admin-mode) .le-slot-input textarea:focus{outline:none;border-color:var(--le-slot-border-color);box-shadow:0 0 0 3px rgba(0, 136, 255, 0.15)}:host(.admin-mode) .le-slot-input input::placeholder,:host(.admin-mode) .le-slot-input textarea::placeholder{color:#999}:host(.admin-mode) .le-slot-input textarea{resize:vertical;min-height:60px}:host(.admin-mode) .le-slot-input slot{display:none}.le-slot-invalid{color:var(--le-slot-required-color);font-size:10px;margin-left:auto;font-weight:normal;text-transform:none}:host(.admin-mode) .le-slot-input.has-error input,:host(.admin-mode) .le-slot-input.has-error textarea{border-color:var(--le-slot-required-color);background:rgba(229, 57, 53, 0.05)}:host(.admin-mode) .le-slot-input.has-error input:focus,:host(.admin-mode) .le-slot-input.has-error textarea:focus{border-color:var(--le-slot-required-color);box-shadow:0 0 0 3px rgba(229, 57, 53, 0.15)}.le-slot-add-btn{font-size:24px;line-height:0px;width:12px;height:12px}.le-slot-header-no-label .le-slot-add-btn{font-size:16px}.le-slot-button{width:20px;height:20px}:host(.admin-mode) .le-slot-header-no-label.le-slot-header-text{height:0}`;
|
|
136
|
-
|
|
137
|
-
const LeSlot = /*@__PURE__*/ proxyCustomElement(class LeSlot extends HTMLElement {
|
|
138
|
-
constructor(registerHost) {
|
|
139
|
-
super();
|
|
140
|
-
if (registerHost !== false) {
|
|
141
|
-
this.__registerHost();
|
|
142
|
-
}
|
|
143
|
-
this.__attachShadow();
|
|
144
|
-
this.leSlotChange = createEvent(this, "leSlotChange", 7);
|
|
145
|
-
/**
|
|
146
|
-
* The type of slot content.
|
|
147
|
-
* - `slot`: Default, shows a dropzone for components (default)
|
|
148
|
-
* - `text`: Shows a single-line text input
|
|
149
|
-
* - `textarea`: Shows a multi-line text area
|
|
150
|
-
*/
|
|
151
|
-
this.type = 'slot';
|
|
152
|
-
/**
|
|
153
|
-
* The name of the slot this placeholder represents.
|
|
154
|
-
* Should match the slot name in the parent component.
|
|
155
|
-
*/
|
|
156
|
-
this.name = '';
|
|
157
|
-
/**
|
|
158
|
-
* Whether multiple components can be dropped in this slot.
|
|
159
|
-
*/
|
|
160
|
-
this.multiple = true;
|
|
161
|
-
/**
|
|
162
|
-
* Whether this slot is required to have content.
|
|
163
|
-
*/
|
|
164
|
-
this.required = false;
|
|
165
|
-
/**
|
|
166
|
-
* Internal state to track admin mode
|
|
167
|
-
*/
|
|
168
|
-
this.adminMode = false;
|
|
169
|
-
/**
|
|
170
|
-
* Internal state for text input value (synced from slot content)
|
|
171
|
-
*/
|
|
172
|
-
this.textValue = '';
|
|
173
|
-
/**
|
|
174
|
-
* Whether the current textValue contains valid HTML
|
|
175
|
-
*/
|
|
176
|
-
this.isValidHtml = true;
|
|
177
|
-
/**
|
|
178
|
-
* Available components loaded from Custom Elements Manifest
|
|
179
|
-
*/
|
|
180
|
-
this.availableComponents = [];
|
|
181
|
-
/**
|
|
182
|
-
* Whether the component picker popover is open
|
|
183
|
-
*/
|
|
184
|
-
this.pickerOpen = false;
|
|
185
|
-
/**
|
|
186
|
-
* Flag to prevent re-reading content right after we updated it
|
|
187
|
-
*/
|
|
188
|
-
this.isUpdating = false;
|
|
189
|
-
this.handleTextInput = (event) => {
|
|
190
|
-
const target = event.target;
|
|
191
|
-
this.textValue = target.value;
|
|
192
|
-
this.isValidHtml = this.validateHtml(this.textValue);
|
|
193
|
-
if (this.isValidHtml) {
|
|
194
|
-
// Set flag to prevent slotchange from re-reading what we just wrote
|
|
195
|
-
this.isUpdating = true;
|
|
196
|
-
console.log('Updating text value:', this.textValue, 'slottedElement:', this.slottedElement);
|
|
197
|
-
if (this.slottedElement) {
|
|
198
|
-
// Update existing slotted element's innerHTML
|
|
199
|
-
this.slottedElement.innerHTML = this.textValue;
|
|
200
|
-
}
|
|
201
|
-
else if (this.tag && this.textValue) {
|
|
202
|
-
// No slotted element exists
|
|
203
|
-
// If the slot doesn't have a name, then it's the default slot
|
|
204
|
-
// remove the existing non-slotted content (text nodes and elements without slot attribute)
|
|
205
|
-
const rootNode = this.el.getRootNode();
|
|
206
|
-
if (!this.name && rootNode instanceof ShadowRoot) {
|
|
207
|
-
const hostComponent = rootNode.host;
|
|
208
|
-
Array.from(hostComponent.childNodes).forEach(node => {
|
|
209
|
-
if (node.nodeType === Node.TEXT_NODE || (node.nodeType === Node.ELEMENT_NODE && !node.hasAttribute('slot'))) {
|
|
210
|
-
node.remove();
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
// create one using the specified tag
|
|
215
|
-
this.createSlottedElement();
|
|
216
|
-
}
|
|
217
|
-
else if (this.textValue) {
|
|
218
|
-
// no tag specified - just replace everything in the host component
|
|
219
|
-
const rootNode = this.el.getRootNode();
|
|
220
|
-
if (rootNode instanceof ShadowRoot) {
|
|
221
|
-
const hostComponent = rootNode.host;
|
|
222
|
-
hostComponent.innerHTML = this.textValue;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
this.leSlotChange.emit({
|
|
227
|
-
name: this.name,
|
|
228
|
-
value: this.textValue,
|
|
229
|
-
isValid: this.isValidHtml,
|
|
230
|
-
});
|
|
231
|
-
};
|
|
232
|
-
/**
|
|
233
|
-
* Handle slot change event to re-read content when nodes are assigned
|
|
234
|
-
*/
|
|
235
|
-
this.handleSlotChange = () => {
|
|
236
|
-
this.readSlottedContent();
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
connectedCallback() {
|
|
240
|
-
this.disconnectModeObserver = observeModeChanges(this.el, mode => {
|
|
241
|
-
const wasAdmin = this.adminMode;
|
|
242
|
-
this.adminMode = mode === 'admin';
|
|
243
|
-
// When entering admin mode, read content from slotted elements
|
|
244
|
-
if (this.adminMode && !wasAdmin) {
|
|
245
|
-
// Need to wait for render to access slot ref
|
|
246
|
-
requestAnimationFrame(() => this.readSlottedContent());
|
|
247
|
-
// Load available components for the component picker
|
|
248
|
-
if (this.type === 'slot') {
|
|
249
|
-
this.loadAvailableComponents();
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
disconnectedCallback() {
|
|
255
|
-
this.disconnectModeObserver?.();
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Read content from slotted elements via assignedNodes()
|
|
259
|
-
*/
|
|
260
|
-
readSlottedContent() {
|
|
261
|
-
if (!this.slotRef)
|
|
262
|
-
return;
|
|
263
|
-
// Skip if we just updated the content ourselves
|
|
264
|
-
if (this.isUpdating) {
|
|
265
|
-
this.isUpdating = false;
|
|
266
|
-
return;
|
|
267
|
-
}
|
|
268
|
-
const assignedNodes = this.slotRef.assignedNodes({ flatten: true });
|
|
269
|
-
// For text/textarea types, we want to edit the innerHTML of slotted elements
|
|
270
|
-
if (this.type === 'text' || this.type === 'textarea') {
|
|
271
|
-
// Find the first element node (skip text nodes that are just whitespace)
|
|
272
|
-
const elementNode = assignedNodes.find(node => node.nodeType === Node.ELEMENT_NODE);
|
|
273
|
-
if (elementNode) {
|
|
274
|
-
// Only update textValue if slotted element changed or we don't have one yet
|
|
275
|
-
if (this.slottedElement !== elementNode) {
|
|
276
|
-
this.slottedElement = elementNode;
|
|
277
|
-
this.textValue = elementNode.innerHTML?.trim() || '';
|
|
278
|
-
// console.log(`[le-slot "${this.name}"] Read slotted content:`, this.textValue);
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
else {
|
|
282
|
-
// No element, check for direct text content
|
|
283
|
-
const textContent = assignedNodes
|
|
284
|
-
.filter(node => node.nodeType === Node.TEXT_NODE)
|
|
285
|
-
.map(node => node.textContent)
|
|
286
|
-
.join('')
|
|
287
|
-
.trim();
|
|
288
|
-
if (textContent && !this.textValue) {
|
|
289
|
-
this.textValue = textContent;
|
|
290
|
-
// console.log(`[le-slot "${this.name}"] Read text content:`, this.textValue);
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Validates if a string contains valid HTML
|
|
297
|
-
*/
|
|
298
|
-
validateHtml(html) {
|
|
299
|
-
// Empty string is valid
|
|
300
|
-
if (!html.trim())
|
|
301
|
-
return true;
|
|
302
|
-
// Create a template element to parse the HTML
|
|
303
|
-
const template = document.createElement('template');
|
|
304
|
-
template.innerHTML = html;
|
|
305
|
-
// Check that we don't have obviously broken HTML
|
|
306
|
-
// Count opening and closing tags for common elements
|
|
307
|
-
const openTags = (html.match(/<[a-z][^>]*(?<!\/)>/gi) || []).length;
|
|
308
|
-
const closeTags = (html.match(/<\/[a-z][^>]*>/gi) || []).length;
|
|
309
|
-
const selfClosing = (html.match(/<[a-z][^>]*\/>/gi) || []).length;
|
|
310
|
-
// Simple validation: opening tags (minus self-closing) should roughly match closing tags
|
|
311
|
-
// Allow some tolerance for void elements like <br>, <img>, etc.
|
|
312
|
-
const voidElements = (html.match(/<(br|hr|img|input|meta|link|area|base|col|embed|param|source|track|wbr)[^>]*>/gi) || []).length;
|
|
313
|
-
const effectiveOpenTags = openTags - selfClosing - voidElements;
|
|
314
|
-
// If difference is too large, HTML is likely broken
|
|
315
|
-
if (Math.abs(effectiveOpenTags - closeTags) > 1) {
|
|
316
|
-
return false;
|
|
317
|
-
}
|
|
318
|
-
return true;
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Create a new slotted element when none exists.
|
|
322
|
-
* The element is appended to the host component's light DOM.
|
|
323
|
-
*/
|
|
324
|
-
createSlottedElement() {
|
|
325
|
-
if (!this.tag)
|
|
326
|
-
return;
|
|
327
|
-
// Find the host component (le-card, etc.) by traversing up through shadow DOM
|
|
328
|
-
// le-slot is inside le-card's shadow DOM, so we need to find le-card's host
|
|
329
|
-
const rootNode = this.el.getRootNode();
|
|
330
|
-
if (!(rootNode instanceof ShadowRoot))
|
|
331
|
-
return;
|
|
332
|
-
const hostComponent = rootNode.host;
|
|
333
|
-
if (!hostComponent)
|
|
334
|
-
return;
|
|
335
|
-
// Create the new element
|
|
336
|
-
const newElement = document.createElement(this.tag);
|
|
337
|
-
newElement.innerHTML = this.textValue;
|
|
338
|
-
// Set the slot attribute if this is a named slot
|
|
339
|
-
if (this.name) {
|
|
340
|
-
newElement.setAttribute('slot', this.name);
|
|
341
|
-
}
|
|
342
|
-
// Append to the host component's light DOM
|
|
343
|
-
hostComponent.appendChild(newElement);
|
|
344
|
-
// Store reference to the new element
|
|
345
|
-
this.slottedElement = newElement;
|
|
346
|
-
// console.log(`[le-slot "${this.name}"] Created new <${this.tag}> element`);
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
* Load available components from Custom Elements Manifest
|
|
350
|
-
*/
|
|
351
|
-
async loadAvailableComponents() {
|
|
352
|
-
try {
|
|
353
|
-
const { manifestFile } = getLeKitConfig();
|
|
354
|
-
const manifestFileResolved = getAssetPath(`./assets/${manifestFile}`);
|
|
355
|
-
const response = await fetch(manifestFileResolved);
|
|
356
|
-
const manifest = await response.json();
|
|
357
|
-
const components = [];
|
|
358
|
-
const allowedList = this.allowedComponents?.split(',').map(s => s.trim()) || [];
|
|
359
|
-
for (const module of manifest.modules) {
|
|
360
|
-
for (const declaration of module.declarations || []) {
|
|
361
|
-
if (declaration.tagName && declaration.customElement) {
|
|
362
|
-
// Skip internal components (le-slot, le-component, le-popover)
|
|
363
|
-
const isInternal = ['le-slot', 'le-component', 'le-popover'].includes(declaration.tagName);
|
|
364
|
-
if (isInternal)
|
|
365
|
-
continue;
|
|
366
|
-
// If allowedComponents is specified, filter by it
|
|
367
|
-
if (allowedList.length > 0 && !allowedList.includes(declaration.tagName)) {
|
|
368
|
-
continue;
|
|
369
|
-
}
|
|
370
|
-
components.push({
|
|
371
|
-
tagName: declaration.tagName,
|
|
372
|
-
name: this.formatComponentName(declaration.tagName),
|
|
373
|
-
description: declaration.description || '',
|
|
374
|
-
});
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
this.availableComponents = components || [];
|
|
379
|
-
}
|
|
380
|
-
catch (error) {
|
|
381
|
-
console.warn('[le-slot] Failed to load component manifest:', error);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
/**
|
|
385
|
-
* Format a tag name into a display name
|
|
386
|
-
* e.g., 'le-card' -> 'Card'
|
|
387
|
-
*/
|
|
388
|
-
formatComponentName(tagName) {
|
|
389
|
-
return tagName
|
|
390
|
-
.replace(/^le-/, '')
|
|
391
|
-
.split('-')
|
|
392
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
393
|
-
.join(' ');
|
|
394
|
-
}
|
|
395
|
-
/**
|
|
396
|
-
* Add a new component to the slot
|
|
397
|
-
*/
|
|
398
|
-
addComponent(tagName) {
|
|
399
|
-
// Find the host component by traversing up through shadow DOM
|
|
400
|
-
const rootNode = this.el.getRootNode();
|
|
401
|
-
if (!(rootNode instanceof ShadowRoot))
|
|
402
|
-
return;
|
|
403
|
-
const hostComponent = rootNode.host;
|
|
404
|
-
if (!hostComponent)
|
|
405
|
-
return;
|
|
406
|
-
// Create the new component element
|
|
407
|
-
const newElement = document.createElement(tagName);
|
|
408
|
-
// Set the slot attribute if this is a named slot
|
|
409
|
-
if (this.name) {
|
|
410
|
-
newElement.setAttribute('slot', this.name);
|
|
411
|
-
}
|
|
412
|
-
// Append to the host component's light DOM
|
|
413
|
-
hostComponent.appendChild(newElement);
|
|
414
|
-
// Emit change event so the page can save
|
|
415
|
-
this.leSlotChange.emit({
|
|
416
|
-
name: this.name,
|
|
417
|
-
value: hostComponent.innerHTML,
|
|
418
|
-
isValid: true,
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
|
-
render() {
|
|
422
|
-
const displayLabel = this.label || this.name;
|
|
423
|
-
// Always render the same structure, CSS handles visibility via .admin-mode class
|
|
424
|
-
return (h(Host, { key: 'fb2a01670291a714608bc59069991a8ef65dc3e9', class: {
|
|
425
|
-
'admin-mode': this.adminMode,
|
|
426
|
-
'invalid-html': !this.isValidHtml,
|
|
427
|
-
}, role: this.adminMode ? 'region' : undefined, "aria-label": this.adminMode ? `Slot: ${displayLabel}` : undefined, "data-slot-name": this.name, "data-slot-type": this.type, "data-allowed": this.allowedComponents, "data-multiple": this.multiple, "data-required": this.required }, this.adminMode ? (h("div", { class: "le-slot-container" }, h("div", { class: classnames('le-slot-header', {
|
|
428
|
-
'le-slot-header-no-label': !displayLabel,
|
|
429
|
-
'le-slot-header-text': this.type === 'text',
|
|
430
|
-
'le-slot-header-error': !this.isValidHtml,
|
|
431
|
-
}) }, displayLabel && (h("span", { class: "le-slot-label" }, displayLabel, this.required && h("span", { class: "le-slot-required" }, "*"))), !this.isValidHtml && h("span", { class: "le-slot-invalid" }, "\u26A0 Invalid HTML"), this.type === 'slot' && this.adminMode && (h("le-popover", { mode: "default", showClose: true, align: "start", position: "right", popoverTitle: "Add Component", open: this.pickerOpen, onLePopoverOpen: () => (this.pickerOpen = true), onLePopoverClose: () => (this.pickerOpen = false) }, h("le-button", { type: "button", class: "le-slot-button", slot: "trigger", variant: "clear", size: "small", "aria-label": "Add component", "icon-only": true }, h("span", { class: "le-slot-add-btn", slot: "icon-only" }, "+")), h("div", { class: "le-slot-picker" }, this.availableComponents.length > 0 ? (h("ul", { class: "le-slot-picker-list" }, this.availableComponents.map(component => (h("li", { key: component.tagName }, h("button", { class: "le-slot-picker-item", onClick: () => {
|
|
432
|
-
this.addComponent(component.tagName);
|
|
433
|
-
this.pickerOpen = false;
|
|
434
|
-
} }, h("span", { class: "le-slot-picker-name" }, component.name), component.description && h("span", { class: "le-slot-picker-desc" }, component.description))))))) : (h("div", { class: "le-slot-picker-empty" }, "No components available")))))), this.renderContent())) : (
|
|
435
|
-
// In default mode, just pass through the slot - slotted content renders naturally
|
|
436
|
-
// Note: We use unnamed slot here because named slots from parent component
|
|
437
|
-
// are passed as le-slot's light DOM children
|
|
438
|
-
h("slot", null))));
|
|
439
|
-
}
|
|
440
|
-
renderContent() {
|
|
441
|
-
// Create the slot element with ref for reading assignedNodes
|
|
442
|
-
// Wrap in a hidden div since slot elements can't have style prop in Stencil
|
|
443
|
-
// Note: We use unnamed slot here because named slots from parent component
|
|
444
|
-
// are passed as le-slot's light DOM children
|
|
445
|
-
const slotElement = (h("div", { class: "hidden-slot" }, h("slot", { ref: el => (this.slotRef = el), onSlotchange: this.handleSlotChange })));
|
|
446
|
-
switch (this.type) {
|
|
447
|
-
case 'text':
|
|
448
|
-
return (h("div", { class: { 'le-slot-input': true, 'has-error': !this.isValidHtml } }, h("le-string-input", { mode: "default", value: this.textValue, placeholder: this.placeholder || `Enter ${this.label || this.name || 'text'}...`, onChange: this.handleTextInput }), slotElement));
|
|
449
|
-
case 'textarea':
|
|
450
|
-
return (h("div", { class: { 'le-slot-input': true, 'has-error': !this.isValidHtml } }, h("textarea", { value: this.textValue, placeholder: this.placeholder || `Enter ${this.label || this.name || 'text'}...`, onInput: this.handleTextInput, required: this.required, rows: 3 }), slotElement));
|
|
451
|
-
case 'slot':
|
|
452
|
-
default:
|
|
453
|
-
// Parse slotStyle string into style object if provided
|
|
454
|
-
const dropzoneStyle = {};
|
|
455
|
-
if (this.slotStyle) {
|
|
456
|
-
this.slotStyle.split(';').forEach(rule => {
|
|
457
|
-
const [prop, value] = rule.split(':').map(s => s.trim());
|
|
458
|
-
if (prop && value) {
|
|
459
|
-
// Convert kebab-case to camelCase for style object
|
|
460
|
-
const camelProp = prop.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
461
|
-
dropzoneStyle[camelProp] = value;
|
|
462
|
-
}
|
|
463
|
-
});
|
|
464
|
-
}
|
|
465
|
-
return (h("div", { class: "le-slot-dropzone", style: dropzoneStyle }, h("slot", { ref: el => (this.slotRef = el), onSlotchange: this.handleSlotChange })));
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
get el() { return this; }
|
|
469
|
-
static get style() { return leSlotDefaultCss(); }
|
|
470
|
-
}, [257, "le-slot", {
|
|
471
|
-
"type": [1],
|
|
472
|
-
"name": [1],
|
|
473
|
-
"label": [1],
|
|
474
|
-
"description": [1],
|
|
475
|
-
"allowedComponents": [1, "allowed-components"],
|
|
476
|
-
"multiple": [4],
|
|
477
|
-
"required": [4],
|
|
478
|
-
"placeholder": [1],
|
|
479
|
-
"tag": [1],
|
|
480
|
-
"slotStyle": [1, "slot-style"],
|
|
481
|
-
"adminMode": [32],
|
|
482
|
-
"textValue": [32],
|
|
483
|
-
"isValidHtml": [32],
|
|
484
|
-
"availableComponents": [32],
|
|
485
|
-
"pickerOpen": [32]
|
|
486
|
-
}]);
|
|
487
|
-
function defineCustomElement$5() {
|
|
488
|
-
if (typeof customElements === "undefined") {
|
|
489
|
-
return;
|
|
490
|
-
}
|
|
491
|
-
const components = ["le-slot", "le-button", "le-checkbox", "le-component", "le-popover", "le-popup", "le-select", "le-slot", "le-string-input"];
|
|
492
|
-
components.forEach(tagName => { switch (tagName) {
|
|
493
|
-
case "le-slot":
|
|
494
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
495
|
-
customElements.define(transformTag(tagName), LeSlot);
|
|
496
|
-
}
|
|
497
|
-
break;
|
|
498
|
-
case "le-button":
|
|
499
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
500
|
-
defineCustomElement();
|
|
501
|
-
}
|
|
502
|
-
break;
|
|
503
|
-
case "le-checkbox":
|
|
504
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
505
|
-
defineCustomElement$1();
|
|
506
|
-
}
|
|
507
|
-
break;
|
|
508
|
-
case "le-component":
|
|
509
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
510
|
-
defineCustomElement$2();
|
|
511
|
-
}
|
|
512
|
-
break;
|
|
513
|
-
case "le-popover":
|
|
514
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
515
|
-
defineCustomElement$7();
|
|
516
|
-
}
|
|
517
|
-
break;
|
|
518
|
-
case "le-popup":
|
|
519
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
520
|
-
defineCustomElement$3();
|
|
521
|
-
}
|
|
522
|
-
break;
|
|
523
|
-
case "le-select":
|
|
524
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
525
|
-
defineCustomElement$4();
|
|
526
|
-
}
|
|
527
|
-
break;
|
|
528
|
-
case "le-slot":
|
|
529
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
530
|
-
defineCustomElement$5();
|
|
531
|
-
}
|
|
532
|
-
break;
|
|
533
|
-
case "le-string-input":
|
|
534
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
535
|
-
defineCustomElement$6();
|
|
536
|
-
}
|
|
537
|
-
break;
|
|
538
|
-
} });
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
const leSelectCss = () => `:host{display:inline-block;min-width:150px;--le-select-color:var(--le-color-text, #1f2937);--le-select-border-radius:var(--le-radius-md);--le-select-content-padding:var(--le-spacing-2)}:host([disabled]){opacity:0.5;pointer-events:none}:host([full-width]){width:100%}.select-trigger{display:flex;align-items:center;gap:0.5rem;width:100%;padding:0;--le-button-padding:var(--le-spacing-1) var(--le-spacing-1) var(--le-spacing-1) var(--le-spacing-2);font-size:var(--le-select-font-size, 0.875rem);font-family:inherit;line-height:1.4;color:var(--le-select-color);background:var(--le-select-bg, var(--le-color-surface, #fff));border-radius:var(--le-select-border-radius);cursor:pointer;text-align:left;transition:border-color 0.15s ease, box-shadow 0.15s ease}.select-trigger:focus{outline:2px solid var(--le-color-focus);outline-offset:2px}.select-trigger:not(.has-value) .trigger-label{color:color-mix(in srgb, var(--le-color-text-secondary) 66%, transparent)}.trigger-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:1.25rem;height:1.25rem}.trigger-icon-end{width:16px;height:16px}.trigger-icon img{width:100%;height:100%;object-fit:contain}.trigger-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--le-color-text)}.trigger-label::not(.has-value){color:var(--le-color-text-disabled, #9ca3af)}le-button::part(icon-end){display:flex;align-items:center;justify-content:center;flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;transition:transform 0.2s ease}le-button::part(icon-end) svg{width:1rem;height:1rem}le-button.is-open::part(icon-end){transform:rotate(180deg)}.search-input::part(container):focus-within{outline:none !important}.search-input{--le-input-radius:var(--le-radius-md)}`;
|
|
542
|
-
|
|
543
|
-
const LeSelect = /*@__PURE__*/ proxyCustomElement(class LeSelect extends HTMLElement {
|
|
544
|
-
constructor(registerHost) {
|
|
545
|
-
super();
|
|
546
|
-
if (registerHost !== false) {
|
|
547
|
-
this.__registerHost();
|
|
548
|
-
}
|
|
549
|
-
this.__attachShadow();
|
|
550
|
-
this.leChange = createEvent(this, "change", 7);
|
|
551
|
-
this.leOpen = createEvent(this, "leOpen", 7);
|
|
552
|
-
this.leClose = createEvent(this, "leClose", 7);
|
|
553
|
-
/**
|
|
554
|
-
* The options to display in the dropdown.
|
|
555
|
-
*/
|
|
556
|
-
this.options = [];
|
|
557
|
-
/**
|
|
558
|
-
* Placeholder text when no option is selected.
|
|
559
|
-
*/
|
|
560
|
-
this.placeholder = 'Select an option';
|
|
561
|
-
/**
|
|
562
|
-
* Whether the select is disabled.
|
|
563
|
-
*/
|
|
564
|
-
this.disabled = false;
|
|
565
|
-
/**
|
|
566
|
-
* Whether selection is required.
|
|
567
|
-
*/
|
|
568
|
-
this.required = false;
|
|
569
|
-
/**
|
|
570
|
-
* Whether the select should take full width of its container.
|
|
571
|
-
*/
|
|
572
|
-
this.fullWidth = false;
|
|
573
|
-
/**
|
|
574
|
-
* Size variant of the select.
|
|
575
|
-
*/
|
|
576
|
-
this.size = 'medium';
|
|
577
|
-
/**
|
|
578
|
-
* Visual variant of the select.
|
|
579
|
-
*/
|
|
580
|
-
this.variant = 'default';
|
|
581
|
-
/**
|
|
582
|
-
* Whether the input is searchable.
|
|
583
|
-
*/
|
|
584
|
-
this.searchable = false;
|
|
585
|
-
/**
|
|
586
|
-
* Text to show when no options match the search.
|
|
587
|
-
*/
|
|
588
|
-
this.emptyText = 'No results found';
|
|
589
|
-
/**
|
|
590
|
-
* Whether the dropdown is currently open.
|
|
591
|
-
*/
|
|
592
|
-
this.open = false;
|
|
593
|
-
this.searchQuery = '';
|
|
594
|
-
this.filterOption = (option, query) => {
|
|
595
|
-
if (!query)
|
|
596
|
-
return true;
|
|
597
|
-
const searchLower = query.toLowerCase();
|
|
598
|
-
return (option.label.toLowerCase().includes(searchLower) ||
|
|
599
|
-
(option.description?.toLowerCase().includes(searchLower) ?? false));
|
|
600
|
-
};
|
|
601
|
-
this.handleOptionSelect = (e) => {
|
|
602
|
-
this.value = e.detail.value;
|
|
603
|
-
this.selectedOption = e.detail.option;
|
|
604
|
-
this.leChange.emit(e.detail);
|
|
605
|
-
};
|
|
606
|
-
this.handleDropdownOpen = () => {
|
|
607
|
-
this.open = true;
|
|
608
|
-
this.leOpen.emit();
|
|
609
|
-
// Focus search input if searchable
|
|
610
|
-
if (this.searchable) {
|
|
611
|
-
setTimeout(() => {
|
|
612
|
-
this.inputEl?.focus();
|
|
613
|
-
}, 50);
|
|
614
|
-
}
|
|
615
|
-
};
|
|
616
|
-
this.handleDropdownClose = () => {
|
|
617
|
-
this.open = false;
|
|
618
|
-
this.leClose.emit();
|
|
619
|
-
};
|
|
620
|
-
this.handleTriggerClick = () => {
|
|
621
|
-
if (!this.disabled) {
|
|
622
|
-
this.dropdownEl?.toggle();
|
|
623
|
-
}
|
|
624
|
-
};
|
|
625
|
-
this.handleTriggerKeyDown = (e) => {
|
|
626
|
-
if (this.disabled)
|
|
627
|
-
return;
|
|
628
|
-
if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {
|
|
629
|
-
e.preventDefault();
|
|
630
|
-
this.dropdownEl?.show();
|
|
631
|
-
}
|
|
632
|
-
};
|
|
633
|
-
this.handleSearchInput = (e) => {
|
|
634
|
-
const target = e.target;
|
|
635
|
-
this.searchQuery = target.value;
|
|
636
|
-
};
|
|
637
|
-
}
|
|
638
|
-
handleValueChange() {
|
|
639
|
-
this.updateSelectedOption();
|
|
640
|
-
}
|
|
641
|
-
handleOptionsChange() {
|
|
642
|
-
this.updateSelectedOption();
|
|
643
|
-
}
|
|
644
|
-
componentWillLoad() {
|
|
645
|
-
this.updateSelectedOption();
|
|
646
|
-
}
|
|
647
|
-
get parsedOptions() {
|
|
648
|
-
if (typeof this.options === 'string') {
|
|
649
|
-
try {
|
|
650
|
-
return JSON.parse(this.options);
|
|
651
|
-
}
|
|
652
|
-
catch {
|
|
653
|
-
return [];
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
return this.options;
|
|
657
|
-
}
|
|
658
|
-
updateSelectedOption() {
|
|
659
|
-
if (this.value !== undefined) {
|
|
660
|
-
this.selectedOption = this.parsedOptions.find(opt => (opt.value ?? opt.label) === this.value);
|
|
661
|
-
}
|
|
662
|
-
else {
|
|
663
|
-
this.selectedOption = undefined;
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
/**
|
|
667
|
-
* Opens the dropdown.
|
|
668
|
-
*/
|
|
669
|
-
async showDropdown() {
|
|
670
|
-
await this.dropdownEl?.show();
|
|
671
|
-
}
|
|
672
|
-
/**
|
|
673
|
-
* Closes the dropdown.
|
|
674
|
-
*/
|
|
675
|
-
async hideDropdown() {
|
|
676
|
-
await this.dropdownEl?.hide();
|
|
677
|
-
}
|
|
678
|
-
renderIcon(icon) {
|
|
679
|
-
if (!icon)
|
|
680
|
-
return null;
|
|
681
|
-
if (icon.startsWith('http') || icon.startsWith('/')) {
|
|
682
|
-
return h("img", { class: "trigger-icon", src: icon, alt: "" });
|
|
683
|
-
}
|
|
684
|
-
return h("span", { class: "trigger-icon" }, icon);
|
|
685
|
-
}
|
|
686
|
-
render() {
|
|
687
|
-
const hasValue = this.selectedOption !== undefined;
|
|
688
|
-
return (h("le-component", { key: 'cd0d10eb7ee1cc6f52fcb32bc3675e2f74219d9b', component: "le-select" }, h("le-dropdown-base", { key: '200e03a079caaa6c091f82d0384134a3e2d0154d', ref: el => (this.dropdownEl = el), options: this.parsedOptions, value: this.value, disabled: this.disabled, filterFn: this.searchable ? this.filterOption : undefined, filterQuery: this.searchQuery, onLeOptionSelect: this.handleOptionSelect, onLeDropdownOpen: this.handleDropdownOpen, onLeDropdownClose: this.handleDropdownClose, fullWidth: this.fullWidth }, h("le-button", { key: '0fa315cceaf6f18a5e370351027f27167fe64ce0', variant: this.variant && this.variant !== 'default' ? this.variant : 'outlined', slot: "trigger", align: "space-between", class: {
|
|
689
|
-
'select-trigger': true,
|
|
690
|
-
'has-value': hasValue,
|
|
691
|
-
'is-open': this.open,
|
|
692
|
-
}, mode: "default", size: this.size, disabled: this.disabled, "aria-haspopup": "listbox", "aria-expanded": this.open ? 'true' : 'false', onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown, fullWidth: this.fullWidth, iconStart: hasValue && this.selectedOption?.iconStart
|
|
693
|
-
? this.renderIcon(this.selectedOption.iconStart)
|
|
694
|
-
: null, iconEnd: h("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("path", { d: "M4 6l4 4 4-4" })) }, h("span", { key: 'aae9bb220fb206622dbf6959f125c78adfb13e00', class: "trigger-label" }, hasValue ? this.selectedOption.label : this.placeholder)), this.searchable && this.open && (h("div", { key: '0e7e360672e2e7ce7d32dc726a450ccff245cee0', class: "multiselect-search", slot: "header" }, h("le-string-input", { key: 'a2a36fc139d4b477d35910541fab6071eddc3de5', mode: "default", inputRef: el => (this.inputEl = el), class: "search-input", placeholder: "Search...", value: this.searchQuery, onInput: this.handleSearchInput })))), this.name && h("input", { key: '9555b72d2f433ce9ee3803d0bb3ceb0dae1c37e3', type: "hidden", name: this.name, value: this.value?.toString() ?? '' })));
|
|
695
|
-
}
|
|
696
|
-
get el() { return this; }
|
|
697
|
-
static get watchers() { return {
|
|
698
|
-
"value": ["handleValueChange"],
|
|
699
|
-
"options": ["handleOptionsChange"]
|
|
700
|
-
}; }
|
|
701
|
-
static get style() { return leSelectCss(); }
|
|
702
|
-
}, [257, "le-select", {
|
|
703
|
-
"options": [1],
|
|
704
|
-
"value": [1032],
|
|
705
|
-
"placeholder": [1],
|
|
706
|
-
"disabled": [516],
|
|
707
|
-
"required": [4],
|
|
708
|
-
"name": [1],
|
|
709
|
-
"fullWidth": [4, "full-width"],
|
|
710
|
-
"size": [513],
|
|
711
|
-
"variant": [513],
|
|
712
|
-
"searchable": [4],
|
|
713
|
-
"emptyText": [1, "empty-text"],
|
|
714
|
-
"open": [1540],
|
|
715
|
-
"selectedOption": [32],
|
|
716
|
-
"searchQuery": [32],
|
|
717
|
-
"showDropdown": [64],
|
|
718
|
-
"hideDropdown": [64]
|
|
719
|
-
}, undefined, {
|
|
720
|
-
"value": ["handleValueChange"],
|
|
721
|
-
"options": ["handleOptionsChange"]
|
|
722
|
-
}]);
|
|
723
|
-
function defineCustomElement$4() {
|
|
724
|
-
if (typeof customElements === "undefined") {
|
|
725
|
-
return;
|
|
726
|
-
}
|
|
727
|
-
const components = ["le-select", "le-button", "le-checkbox", "le-component", "le-dropdown-base", "le-popover", "le-popup", "le-select", "le-slot", "le-string-input"];
|
|
728
|
-
components.forEach(tagName => { switch (tagName) {
|
|
729
|
-
case "le-select":
|
|
730
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
731
|
-
customElements.define(transformTag(tagName), LeSelect);
|
|
732
|
-
}
|
|
733
|
-
break;
|
|
734
|
-
case "le-button":
|
|
735
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
736
|
-
defineCustomElement();
|
|
737
|
-
}
|
|
738
|
-
break;
|
|
739
|
-
case "le-checkbox":
|
|
740
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
741
|
-
defineCustomElement$1();
|
|
742
|
-
}
|
|
743
|
-
break;
|
|
744
|
-
case "le-component":
|
|
745
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
746
|
-
defineCustomElement$2();
|
|
747
|
-
}
|
|
748
|
-
break;
|
|
749
|
-
case "le-dropdown-base":
|
|
750
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
751
|
-
defineCustomElement$8();
|
|
752
|
-
}
|
|
753
|
-
break;
|
|
754
|
-
case "le-popover":
|
|
755
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
756
|
-
defineCustomElement$7();
|
|
757
|
-
}
|
|
758
|
-
break;
|
|
759
|
-
case "le-popup":
|
|
760
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
761
|
-
defineCustomElement$3();
|
|
762
|
-
}
|
|
763
|
-
break;
|
|
764
|
-
case "le-select":
|
|
765
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
766
|
-
defineCustomElement$4();
|
|
767
|
-
}
|
|
768
|
-
break;
|
|
769
|
-
case "le-slot":
|
|
770
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
771
|
-
defineCustomElement$5();
|
|
772
|
-
}
|
|
773
|
-
break;
|
|
774
|
-
case "le-string-input":
|
|
775
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
776
|
-
defineCustomElement$6();
|
|
777
|
-
}
|
|
778
|
-
break;
|
|
779
|
-
} });
|
|
780
|
-
}
|
|
781
|
-
|
|
782
|
-
const lePopupCss = () => `:host{display:contents}.le-popup-dialog{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;padding:0;border:none;background:transparent;max-width:none;max-height:none;overflow:visible;--_popup-min-width:var(--le-popup-min-width, 320px);--_popup-max-width:var(--le-popup-max-width, min(500px, 90vw));--_popup-min-height:var(--le-popup-min-height, auto)}.le-popup-dialog::backdrop{background:var(--le-popup-backdrop-color, rgba(0, 0, 0, 0.5));animation:le-popup-backdrop-fade 0.2s ease-out}@keyframes le-popup-backdrop-fade{from{opacity:0}to{opacity:1}}.le-popup-position-center{margin:auto}.le-popup-position-top{margin:var(--le-space-2xl, 48px) auto auto auto}.le-popup-position-top-left{margin:var(--le-space-lg, 24px) auto auto var(--le-space-lg, 24px)}.le-popup-position-top-right{margin:var(--le-space-lg, 24px) var(--le-space-lg, 24px) auto auto}.le-popup-position-bottom{margin:auto auto var(--le-space-2xl, 48px) auto}.le-popup-position-bottom-left{margin:auto auto var(--le-space-lg, 24px) var(--le-space-lg, 24px)}.le-popup-position-bottom-right{margin:auto var(--le-space-lg, 24px) var(--le-space-lg, 24px) auto}.le-popup-container{display:flex;flex-direction:column;min-width:var(--_popup-min-width);max-width:var(--_popup-max-width);min-height:var(--_popup-min-height);max-height:calc(100vh - var(--le-space-2xl, 48px) * 2);background:var(--le-color-surface, #ffffff);border:1px solid var(--le-color-border, #e0e0e0);border-radius:var(--le-radius-lg, 12px);box-shadow:var(--le-shadow-xl, 0 8px 32px rgba(0, 0, 0, 0.15));overflow:hidden;font-family:var(--le-font-family, system-ui, -apple-system, sans-serif);color:var(--le-color-text, #333);animation:le-popup-appear 0.2s ease-out}@keyframes le-popup-appear{from{opacity:0;transform:scale(0.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.le-popup-header{flex-shrink:0;padding:var(--le-space-md, 16px) var(--le-space-lg, 24px);border-bottom:1px solid var(--le-color-border, #e0e0e0);background:var(--le-color-surface-alt, #f9f9f9);font-size:var(--le-font-size-lg, 1.125rem);font-weight:var(--le-font-weight-semibold, 600);color:var(--le-color-text, #333)}.le-popup-body{flex:1;padding:var(--le-space-lg, 24px);overflow-y:auto}.le-popup-message{margin:0;font-size:var(--le-font-size-md, 1rem);line-height:var(--le-line-height-relaxed, 1.6);color:var(--le-color-text, #333)}.le-popup-message+::slotted(*){margin-top:var(--le-space-md, 16px)}.le-popup-input{display:block;width:100%;margin-top:var(--le-space-md, 16px);padding:var(--le-space-sm, 8px) var(--le-space-md, 16px);font-family:inherit;font-size:var(--le-font-size-md, 1rem);color:var(--le-color-text, #333);background:var(--le-color-background, #fff);border:1px solid var(--le-color-border, #e0e0e0);border-radius:var(--le-radius-md, 8px);outline:none;transition:border-color var(--le-transition-fast, 0.15s ease),
|
|
783
|
-
box-shadow var(--le-transition-fast, 0.15s ease);box-sizing:border-box}.le-popup-input:focus{border-color:var(--le-color-primary, #2196f3);box-shadow:0 0 0 3px var(--le-color-primary-light, rgba(33, 150, 243, 0.2))}.le-popup-input::placeholder{color:var(--le-color-text-muted, #999)}.le-popup-footer{flex-shrink:0;display:flex;justify-content:flex-end;gap:var(--le-space-sm, 8px);padding:var(--le-space-md, 16px) var(--le-space-lg, 24px);border-top:1px solid var(--le-color-border, #e0e0e0);background:var(--le-color-surface-alt, #f9f9f9)}.le-popup-btn{min-width:80px}@media (max-width: 480px){.le-popup-container{min-width:calc(100vw - var(--le-space-md, 16px) * 2);max-width:calc(100vw - var(--le-space-md, 16px) * 2)}.le-popup-footer{flex-direction:column-reverse}.le-popup-btn{width:100%}}`;
|
|
784
|
-
|
|
785
|
-
const LePopup = /*@__PURE__*/ proxyCustomElement(class LePopup extends HTMLElement {
|
|
786
|
-
constructor(registerHost) {
|
|
787
|
-
super();
|
|
788
|
-
if (registerHost !== false) {
|
|
789
|
-
this.__registerHost();
|
|
790
|
-
}
|
|
791
|
-
this.__attachShadow();
|
|
792
|
-
this.leConfirm = createEvent(this, "leConfirm", 7);
|
|
793
|
-
this.leCancel = createEvent(this, "leCancel", 7);
|
|
794
|
-
this.leOpen = createEvent(this, "leOpen", 7);
|
|
795
|
-
this.leClose = createEvent(this, "leClose", 7);
|
|
796
|
-
/**
|
|
797
|
-
* The mode of the Le Kit (e.g., 'default' or 'admin')
|
|
798
|
-
*/
|
|
799
|
-
this.mode = 'default';
|
|
800
|
-
/**
|
|
801
|
-
* Whether the popup is currently visible
|
|
802
|
-
*/
|
|
803
|
-
this.open = false;
|
|
804
|
-
/**
|
|
805
|
-
* Type of popup: alert (OK only), confirm (OK/Cancel), prompt (input + OK/Cancel), custom
|
|
806
|
-
*/
|
|
807
|
-
this.type = 'alert';
|
|
808
|
-
/**
|
|
809
|
-
* Whether the popup is modal (blocks interaction with page behind)
|
|
810
|
-
*/
|
|
811
|
-
this.modal = true;
|
|
812
|
-
/**
|
|
813
|
-
* Position of the popup on screen
|
|
814
|
-
*/
|
|
815
|
-
this.position = 'center';
|
|
816
|
-
/**
|
|
817
|
-
* Text for the confirm/OK button
|
|
818
|
-
*/
|
|
819
|
-
this.confirmText = 'OK';
|
|
820
|
-
/**
|
|
821
|
-
* Text for the cancel button
|
|
822
|
-
*/
|
|
823
|
-
this.cancelText = 'Cancel';
|
|
824
|
-
/**
|
|
825
|
-
* Placeholder text for prompt input
|
|
826
|
-
*/
|
|
827
|
-
this.placeholder = '';
|
|
828
|
-
/**
|
|
829
|
-
* Default value for prompt input
|
|
830
|
-
*/
|
|
831
|
-
this.defaultValue = '';
|
|
832
|
-
/**
|
|
833
|
-
* Whether clicking the backdrop closes the popup (modal only)
|
|
834
|
-
*/
|
|
835
|
-
this.closeOnBackdrop = true;
|
|
836
|
-
/**
|
|
837
|
-
* Internal state for prompt input value
|
|
838
|
-
*/
|
|
839
|
-
this.inputValue = '';
|
|
840
|
-
this.handleDialogCancel = (e) => {
|
|
841
|
-
e.preventDefault(); // Prevent default close to handle it ourselves
|
|
842
|
-
this.handleCancel();
|
|
843
|
-
};
|
|
844
|
-
this.handleConfirm = () => {
|
|
845
|
-
const result = {
|
|
846
|
-
confirmed: true,
|
|
847
|
-
value: this.type === 'prompt' ? this.inputValue : undefined,
|
|
848
|
-
};
|
|
849
|
-
this.leConfirm.emit(result);
|
|
850
|
-
this.hide(true);
|
|
851
|
-
};
|
|
852
|
-
this.handleCancel = () => {
|
|
853
|
-
const result = {
|
|
854
|
-
confirmed: false,
|
|
855
|
-
value: undefined,
|
|
856
|
-
};
|
|
857
|
-
this.leCancel.emit(result);
|
|
858
|
-
this.hide(false);
|
|
859
|
-
};
|
|
860
|
-
this.handleBackdropClick = (e) => {
|
|
861
|
-
// Check if click was on the dialog backdrop (outside the dialog box)
|
|
862
|
-
if (this.closeOnBackdrop && e.target === this.dialogEl) {
|
|
863
|
-
const rect = this.dialogEl.getBoundingClientRect();
|
|
864
|
-
const clickedInDialog = e.clientX >= rect.left &&
|
|
865
|
-
e.clientX <= rect.right &&
|
|
866
|
-
e.clientY >= rect.top &&
|
|
867
|
-
e.clientY <= rect.bottom;
|
|
868
|
-
if (!clickedInDialog) {
|
|
869
|
-
this.handleCancel();
|
|
870
|
-
}
|
|
871
|
-
}
|
|
872
|
-
};
|
|
873
|
-
this.handleInputChange = (e) => {
|
|
874
|
-
this.inputValue = e.target.value;
|
|
875
|
-
};
|
|
876
|
-
this.handleKeyDown = (e) => {
|
|
877
|
-
if (e.key === 'Enter' && this.type !== 'custom') {
|
|
878
|
-
e.preventDefault();
|
|
879
|
-
this.handleConfirm();
|
|
880
|
-
}
|
|
881
|
-
};
|
|
882
|
-
}
|
|
883
|
-
componentWillLoad() {
|
|
884
|
-
this.inputValue = this.defaultValue;
|
|
885
|
-
}
|
|
886
|
-
componentDidLoad() {
|
|
887
|
-
// Native dialog handles Escape key automatically when modal
|
|
888
|
-
// We just need to listen for the cancel event
|
|
889
|
-
this.dialogEl?.addEventListener('cancel', this.handleDialogCancel);
|
|
890
|
-
}
|
|
891
|
-
disconnectedCallback() {
|
|
892
|
-
this.dialogEl?.removeEventListener('cancel', this.handleDialogCancel);
|
|
893
|
-
}
|
|
894
|
-
/**
|
|
895
|
-
* Opens the popup and returns a promise that resolves when closed
|
|
896
|
-
*/
|
|
897
|
-
async show() {
|
|
898
|
-
return new Promise(resolve => {
|
|
899
|
-
this.resolvePromise = resolve;
|
|
900
|
-
this.inputValue = this.defaultValue;
|
|
901
|
-
this.open = true;
|
|
902
|
-
// Use requestAnimationFrame to ensure the dialog element is rendered
|
|
903
|
-
requestAnimationFrame(() => {
|
|
904
|
-
if (this.dialogEl) {
|
|
905
|
-
if (this.modal) {
|
|
906
|
-
this.dialogEl.showModal();
|
|
907
|
-
}
|
|
908
|
-
else {
|
|
909
|
-
this.dialogEl.show();
|
|
910
|
-
}
|
|
911
|
-
this.leOpen.emit();
|
|
912
|
-
// Focus input for prompt type
|
|
913
|
-
if (this.type === 'prompt' && this.inputEl) {
|
|
914
|
-
this.inputEl.focus();
|
|
915
|
-
this.inputEl.select();
|
|
916
|
-
}
|
|
917
|
-
}
|
|
918
|
-
});
|
|
919
|
-
});
|
|
920
|
-
}
|
|
921
|
-
/**
|
|
922
|
-
* Closes the popup with a result
|
|
923
|
-
*/
|
|
924
|
-
async hide(confirmed = false) {
|
|
925
|
-
const result = {
|
|
926
|
-
confirmed,
|
|
927
|
-
value: this.type === 'prompt' ? this.inputValue : undefined,
|
|
928
|
-
};
|
|
929
|
-
this.dialogEl?.close();
|
|
930
|
-
this.open = false;
|
|
931
|
-
this.leClose.emit(result);
|
|
932
|
-
if (this.resolvePromise) {
|
|
933
|
-
this.resolvePromise(result);
|
|
934
|
-
this.resolvePromise = undefined;
|
|
935
|
-
}
|
|
936
|
-
}
|
|
937
|
-
hasSlot(name) {
|
|
938
|
-
return !!this.el.querySelector(`[slot="${name}"]`);
|
|
939
|
-
}
|
|
940
|
-
renderHeader() {
|
|
941
|
-
if (this.hasSlot('header')) {
|
|
942
|
-
return (h("div", { class: "le-popup-header", part: "header" }, h("slot", { name: "header" })));
|
|
943
|
-
}
|
|
944
|
-
if (this.popupTitle) {
|
|
945
|
-
return (h("div", { class: "le-popup-header", part: "header" }, this.popupTitle));
|
|
946
|
-
}
|
|
947
|
-
return null;
|
|
948
|
-
}
|
|
949
|
-
renderBody() {
|
|
950
|
-
return (h("div", { class: "le-popup-body", part: "body" }, this.message && h("p", { class: "le-popup-message" }, this.message), this.type === 'prompt' && (h("input", { type: "text", class: "le-popup-input", part: "input", placeholder: this.placeholder, value: this.inputValue, onInput: this.handleInputChange, onKeyDown: this.handleKeyDown, ref: el => (this.inputEl = el) })), h("le-slot", { name: "", tag: "div", description: "Custom popup content", type: "slot" }, h("slot", null))));
|
|
951
|
-
}
|
|
952
|
-
renderFooter() {
|
|
953
|
-
if (this.hasSlot('footer')) {
|
|
954
|
-
return (h("div", { class: "le-popup-footer", part: "footer" }, h("slot", { name: "footer" })));
|
|
955
|
-
}
|
|
956
|
-
// For custom type without footer slot, don't render default buttons
|
|
957
|
-
if (this.type === 'custom') {
|
|
958
|
-
return null;
|
|
959
|
-
}
|
|
960
|
-
return (h("div", { class: "le-popup-footer", part: "footer" }, (this.type === 'confirm' || this.type === 'prompt') && (h("le-button", { variant: "outlined", part: "button-cancel", class: "le-popup-btn", onClick: this.handleCancel }, this.cancelText)), h("le-button", { variant: "solid", part: "button-confirm", class: "le-popup-btn", onClick: this.handleConfirm }, this.confirmText)));
|
|
961
|
-
}
|
|
962
|
-
render() {
|
|
963
|
-
const positionClass = `le-popup-position-${this.position}`;
|
|
964
|
-
return (h("dialog", { key: '9a42c63b24b521264654847ff45ea026000a642d', class: `le-popup-dialog ${positionClass}`, part: "dialog", ref: el => (this.dialogEl = el), onClick: this.handleBackdropClick }, h("le-component", { key: 'a3f086d20a9e611f3907f039bbcf9f7054927fa5', component: "le-popup" }, h("div", { key: 'b2ee2bc7d9eb42f457541c8ffb20af52b7cde8e9', class: "le-popup-container", part: "container" }, this.renderHeader(), this.renderBody(), this.renderFooter()))));
|
|
965
|
-
}
|
|
966
|
-
get el() { return this; }
|
|
967
|
-
static get style() { return lePopupCss(); }
|
|
968
|
-
}, [257, "le-popup", {
|
|
969
|
-
"mode": [1537],
|
|
970
|
-
"open": [1540],
|
|
971
|
-
"type": [1],
|
|
972
|
-
"popupTitle": [1, "popup-title"],
|
|
973
|
-
"message": [1],
|
|
974
|
-
"modal": [4],
|
|
975
|
-
"position": [1],
|
|
976
|
-
"confirmText": [1, "confirm-text"],
|
|
977
|
-
"cancelText": [1, "cancel-text"],
|
|
978
|
-
"placeholder": [1],
|
|
979
|
-
"defaultValue": [1, "default-value"],
|
|
980
|
-
"closeOnBackdrop": [4, "close-on-backdrop"],
|
|
981
|
-
"inputValue": [32],
|
|
982
|
-
"show": [64],
|
|
983
|
-
"hide": [64]
|
|
984
|
-
}]);
|
|
985
|
-
function defineCustomElement$3() {
|
|
986
|
-
if (typeof customElements === "undefined") {
|
|
987
|
-
return;
|
|
988
|
-
}
|
|
989
|
-
const components = ["le-popup", "le-button", "le-checkbox", "le-component", "le-popover", "le-popup", "le-select", "le-slot", "le-string-input"];
|
|
990
|
-
components.forEach(tagName => { switch (tagName) {
|
|
991
|
-
case "le-popup":
|
|
992
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
993
|
-
customElements.define(transformTag(tagName), LePopup);
|
|
994
|
-
}
|
|
995
|
-
break;
|
|
996
|
-
case "le-button":
|
|
997
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
998
|
-
defineCustomElement();
|
|
999
|
-
}
|
|
1000
|
-
break;
|
|
1001
|
-
case "le-checkbox":
|
|
1002
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1003
|
-
defineCustomElement$1();
|
|
1004
|
-
}
|
|
1005
|
-
break;
|
|
1006
|
-
case "le-component":
|
|
1007
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1008
|
-
defineCustomElement$2();
|
|
1009
|
-
}
|
|
1010
|
-
break;
|
|
1011
|
-
case "le-popover":
|
|
1012
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1013
|
-
defineCustomElement$7();
|
|
1014
|
-
}
|
|
1015
|
-
break;
|
|
1016
|
-
case "le-popup":
|
|
1017
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1018
|
-
defineCustomElement$3();
|
|
1019
|
-
}
|
|
1020
|
-
break;
|
|
1021
|
-
case "le-select":
|
|
1022
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1023
|
-
defineCustomElement$4();
|
|
1024
|
-
}
|
|
1025
|
-
break;
|
|
1026
|
-
case "le-slot":
|
|
1027
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1028
|
-
defineCustomElement$5();
|
|
1029
|
-
}
|
|
1030
|
-
break;
|
|
1031
|
-
case "le-string-input":
|
|
1032
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1033
|
-
defineCustomElement$6();
|
|
1034
|
-
}
|
|
1035
|
-
break;
|
|
1036
|
-
} });
|
|
1037
|
-
}
|
|
1038
|
-
|
|
1039
|
-
const leComponentCss = () => `:host{display:contents}:host(.admin-mode){display:block}.le-component-wrapper{position:relative;border:2px dashed var(--le-admin-border-color, #90caf9);border-radius:var(--le-radius-md, 8px);background:var(--le-admin-bg, rgba(144, 202, 249, 0.05));transition:border-color 0.2s ease, box-shadow 0.2s ease}.le-component-wrapper:hover{border-color:var(--le-admin-border-hover, #42a5f5);box-shadow:0 0 0 2px var(--le-admin-glow, rgba(66, 165, 245, 0.2))}.le-component-header{display:flex;align-items:center;justify-content:space-between;gap:var(--le-spacing-1, 4px);padding:0 0 0 var(--le-spacing-1, 4px);background:var(--le-admin-header-bg, rgba(144, 202, 249, 0.15));border-bottom:1px solid var(--le-admin-border-color, #90caf9);border-radius:var(--le-radius-md, 8px) var(--le-radius-md, 8px) 0 0;font-size:var(--le-font-size-xs, 11px)}.le-component-name{font-weight:var(--le-font-weight-medium, 500);color:var(--le-admin-text, #1976d2);text-transform:capitalize;text-align:start;overflow:hidden;width:0;flex:1 1 0%}.le-component-content{padding:var(--le-space-xs, 4px)}.le-component-trigger{font-size:24px;line-height:0px;width:12px;height:12px}.le-component-button{width:20px}.property-editor{display:flex;flex-direction:column;gap:var(--le-space-sm, 8px);max-width:380px}.property-field{display:flex;flex-direction:column;gap:var(--le-space-xs, 4px)}.property-field label{display:flex;flex-direction:column;gap:2px;font-size:var(--le-font-size-sm, 13px);font-weight:var(--le-font-weight-medium, 500);color:var(--le-color-text, #333)}.property-hint{font-size:var(--le-font-size-xs, 11px);font-weight:normal;color:var(--le-color-text-secondary, #666);line-height:1.3}.property-field input[type="text"],.property-field input[type="number"],.property-field select{padding:var(--le-space-xs, 4px) var(--le-space-sm, 8px);border:1px solid var(--le-color-border, #ddd);border-radius:var(--le-radius-md, 7px);font-size:var(--le-font-size-sm, 13px);font-family:inherit;background:var(--le-color-surface, #fff);color:var(--le-color-text, #333);transition:border-color 0.15s ease, box-shadow 0.15s ease}.property-field input:focus,.property-field select:focus{outline:none;border-color:var(--le-color-primary, #1976d2);box-shadow:0 0 0 2px var(--le-color-primary-light, rgba(25, 118, 210, 0.2))}.property-field--checkbox{flex-direction:column}.property-field--checkbox label{flex-direction:row;align-items:center;gap:var(--le-space-sm, 8px);cursor:pointer}.property-field--checkbox input[type="checkbox"]{width:16px;height:16px;margin:0;cursor:pointer;accent-color:var(--le-color-primary, #1976d2)}.property-field--checkbox .property-hint{margin-left:24px}.no-properties{margin:0;padding:var(--le-space-sm, 8px);font-size:var(--le-font-size-sm, 13px);color:var(--le-color-text-secondary, #666);text-align:center}.property-editor-container{display:flex;flex-direction:column;gap:var(--le-space-md, 12px)}.property-editor-actions{padding-top:var(--le-space-sm, 8px);border-top:1px solid var(--le-color-border, #e5e5e5)}.delete-component-btn{display:flex;align-items:center;justify-content:center;gap:var(--le-space-xs, 4px);width:100%;padding:var(--le-space-sm, 8px) var(--le-space-md, 12px);border:1px solid var(--le-color-danger, #e53935);border-radius:var(--le-radius-md, 6px);background:transparent;color:var(--le-color-danger, #e53935);font-size:var(--le-font-size-sm, 13px);font-weight:500;cursor:pointer;transition:background-color 0.15s, color 0.15s}.delete-component-btn:hover{background:var(--le-color-danger, #e53935);color:white}.delete-component-btn:active{opacity:0.9}`;
|
|
1040
|
-
|
|
1041
|
-
const LeComponent = /*@__PURE__*/ proxyCustomElement(class LeComponent extends HTMLElement {
|
|
1042
|
-
constructor(registerHost) {
|
|
1043
|
-
super();
|
|
1044
|
-
if (registerHost !== false) {
|
|
1045
|
-
this.__registerHost();
|
|
1046
|
-
}
|
|
1047
|
-
this.__attachShadow();
|
|
1048
|
-
/**
|
|
1049
|
-
* Internal state to track admin mode
|
|
1050
|
-
*/
|
|
1051
|
-
this.adminMode = false;
|
|
1052
|
-
/**
|
|
1053
|
-
* Component metadata loaded from Custom Elements Manifest
|
|
1054
|
-
*/
|
|
1055
|
-
this.componentMeta = null;
|
|
1056
|
-
/**
|
|
1057
|
-
* Current property values of the host component
|
|
1058
|
-
*/
|
|
1059
|
-
this.propertyValues = {};
|
|
1060
|
-
}
|
|
1061
|
-
connectedCallback() {
|
|
1062
|
-
// Find the host element - le-component is rendered inside the component's shadow DOM,
|
|
1063
|
-
// so we need to find the shadow root's host element
|
|
1064
|
-
this.findHostElement();
|
|
1065
|
-
this.disconnectModeObserver = observeModeChanges(this.el, mode => {
|
|
1066
|
-
this.adminMode = mode === 'admin';
|
|
1067
|
-
// Load metadata and refresh property values only when entering admin mode
|
|
1068
|
-
if (this.adminMode) {
|
|
1069
|
-
if (!this.componentMeta) {
|
|
1070
|
-
this.loadComponentMetadata();
|
|
1071
|
-
}
|
|
1072
|
-
else {
|
|
1073
|
-
this.readPropertyValues();
|
|
1074
|
-
}
|
|
1075
|
-
}
|
|
1076
|
-
});
|
|
1077
|
-
}
|
|
1078
|
-
/**
|
|
1079
|
-
* Find the host element by traversing up through shadow DOM
|
|
1080
|
-
*/
|
|
1081
|
-
findHostElement() {
|
|
1082
|
-
// Get the shadow root that contains this le-component
|
|
1083
|
-
const rootNode = this.el.getRootNode();
|
|
1084
|
-
if (rootNode instanceof ShadowRoot) {
|
|
1085
|
-
// The host of this shadow root is our target component (e.g., le-card)
|
|
1086
|
-
this.hostElement = rootNode.host;
|
|
1087
|
-
}
|
|
1088
|
-
}
|
|
1089
|
-
componentDidLoad() {
|
|
1090
|
-
// Read initial property values from the host element
|
|
1091
|
-
this.readPropertyValues();
|
|
1092
|
-
}
|
|
1093
|
-
disconnectedCallback() {
|
|
1094
|
-
this.disconnectModeObserver?.();
|
|
1095
|
-
}
|
|
1096
|
-
/**
|
|
1097
|
-
* Formats a tag name into a display name
|
|
1098
|
-
* e.g., 'le-card' -> 'Card'
|
|
1099
|
-
*/
|
|
1100
|
-
formatDisplayName(tagName) {
|
|
1101
|
-
if (!tagName || typeof tagName !== 'string')
|
|
1102
|
-
return 'unknown';
|
|
1103
|
-
return tagName
|
|
1104
|
-
.replace(/^le-/, '') // Remove 'le-' prefix
|
|
1105
|
-
.split('-')
|
|
1106
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
1107
|
-
.join(' ');
|
|
1108
|
-
}
|
|
1109
|
-
/**
|
|
1110
|
-
* Load component metadata from the Custom Elements Manifest
|
|
1111
|
-
*/
|
|
1112
|
-
async loadComponentMetadata() {
|
|
1113
|
-
try {
|
|
1114
|
-
// Fetch the manifest from configured URL
|
|
1115
|
-
const { manifestFile } = getLeKitConfig();
|
|
1116
|
-
const manifestFileResolved = getAssetPath(`./assets/${manifestFile}`);
|
|
1117
|
-
const response = await fetch(manifestFileResolved);
|
|
1118
|
-
const manifest = await response.json();
|
|
1119
|
-
// Find the component definition
|
|
1120
|
-
for (const module of manifest.modules) {
|
|
1121
|
-
for (const declaration of module.declarations || []) {
|
|
1122
|
-
if (declaration.tagName === this.component) {
|
|
1123
|
-
const attributes = (declaration.attributes || []).filter((attr) => !this.isInternalAttribute(attr.name));
|
|
1124
|
-
this.componentMeta = {
|
|
1125
|
-
tagName: declaration.tagName,
|
|
1126
|
-
description: declaration.description,
|
|
1127
|
-
attributes,
|
|
1128
|
-
};
|
|
1129
|
-
// console.log(`[le-component] Loaded metadata for ${this.component}:`, this.componentMeta);
|
|
1130
|
-
// Read property values after metadata is loaded
|
|
1131
|
-
this.readPropertyValues();
|
|
1132
|
-
return;
|
|
1133
|
-
}
|
|
1134
|
-
}
|
|
1135
|
-
}
|
|
1136
|
-
// console.warn(`[le-component] No metadata found for component: ${this.component}`);
|
|
1137
|
-
}
|
|
1138
|
-
catch (error) {
|
|
1139
|
-
// console.warn(`[le-component] Failed to load metadata for component: ${this.component}`, error);
|
|
1140
|
-
}
|
|
1141
|
-
}
|
|
1142
|
-
/**
|
|
1143
|
-
* Check if an attribute is internal (should not be shown in editor)
|
|
1144
|
-
*/
|
|
1145
|
-
isInternalAttribute(name) {
|
|
1146
|
-
const internalAttrs = ['mode', 'theme', 'class', 'style', 'id', 'slot'];
|
|
1147
|
-
return internalAttrs.includes(name);
|
|
1148
|
-
}
|
|
1149
|
-
/**
|
|
1150
|
-
* Read current property values from the host element
|
|
1151
|
-
*/
|
|
1152
|
-
readPropertyValues() {
|
|
1153
|
-
if (!this.hostElement || !this.componentMeta)
|
|
1154
|
-
return;
|
|
1155
|
-
const values = {};
|
|
1156
|
-
for (const attr of this.componentMeta.attributes) {
|
|
1157
|
-
const value = this.hostElement.getAttribute(attr.name);
|
|
1158
|
-
values[attr.name] = this.parseAttributeValue(value, attr.type?.text);
|
|
1159
|
-
}
|
|
1160
|
-
this.propertyValues = values;
|
|
1161
|
-
}
|
|
1162
|
-
/**
|
|
1163
|
-
* Parse an attribute value based on its type
|
|
1164
|
-
*/
|
|
1165
|
-
parseAttributeValue(value, type) {
|
|
1166
|
-
if (value === null)
|
|
1167
|
-
return undefined;
|
|
1168
|
-
if (type === 'boolean') {
|
|
1169
|
-
return value !== null && value !== 'false';
|
|
1170
|
-
}
|
|
1171
|
-
if (type === 'number') {
|
|
1172
|
-
return parseFloat(value);
|
|
1173
|
-
}
|
|
1174
|
-
return value;
|
|
1175
|
-
}
|
|
1176
|
-
/**
|
|
1177
|
-
* Handle property value changes from the editor
|
|
1178
|
-
*/
|
|
1179
|
-
handlePropertyChange(attrName, value, type) {
|
|
1180
|
-
if (!this.hostElement)
|
|
1181
|
-
return;
|
|
1182
|
-
// Update the host element's attribute
|
|
1183
|
-
if (type === 'boolean') {
|
|
1184
|
-
if (value) {
|
|
1185
|
-
this.hostElement.setAttribute(attrName, '');
|
|
1186
|
-
}
|
|
1187
|
-
else {
|
|
1188
|
-
this.hostElement.removeAttribute(attrName);
|
|
1189
|
-
}
|
|
1190
|
-
}
|
|
1191
|
-
else if (value === undefined || value === '') {
|
|
1192
|
-
this.hostElement.removeAttribute(attrName);
|
|
1193
|
-
}
|
|
1194
|
-
else {
|
|
1195
|
-
this.hostElement.setAttribute(attrName, String(value));
|
|
1196
|
-
}
|
|
1197
|
-
// Update local state
|
|
1198
|
-
this.propertyValues = { ...this.propertyValues, [attrName]: value };
|
|
1199
|
-
// update the host element the way the parent element mutation observer would catch it?
|
|
1200
|
-
}
|
|
1201
|
-
/**
|
|
1202
|
-
* Delete this component from the DOM
|
|
1203
|
-
*/
|
|
1204
|
-
deleteComponent() {
|
|
1205
|
-
if (!this.hostElement)
|
|
1206
|
-
return;
|
|
1207
|
-
// Confirm deletion
|
|
1208
|
-
const name = this.displayName || this.formatDisplayName(this.component);
|
|
1209
|
-
if (!leConfirm(`Delete this ${name}?`))
|
|
1210
|
-
return;
|
|
1211
|
-
// Remove the host element from its parent
|
|
1212
|
-
const parent = this.hostElement.parentElement;
|
|
1213
|
-
if (parent) {
|
|
1214
|
-
this.hostElement.remove();
|
|
1215
|
-
}
|
|
1216
|
-
}
|
|
1217
|
-
/**
|
|
1218
|
-
* Render the property editor form
|
|
1219
|
-
*/
|
|
1220
|
-
renderPropertyEditor() {
|
|
1221
|
-
const hasProperties = this.componentMeta && this.componentMeta.attributes.length > 0;
|
|
1222
|
-
return (h("div", { class: "property-editor-container" }, hasProperties ? (h("form", { class: "property-editor", onSubmit: e => e.preventDefault() }, this.componentMeta.attributes.map(attr => this.renderPropertyField(attr)))) : (h("p", { class: "no-properties" }, "No editable properties")), h("div", { class: "property-editor-actions" }, h("le-button", { type: "button", variant: "outlined", color: "danger", "full-width": true, onClick: () => this.deleteComponent() }, h("span", { slot: "icon-start" }, "\uD83D\uDDD1\uFE0F"), h("span", null, "Delete Component")))));
|
|
1223
|
-
}
|
|
1224
|
-
/**
|
|
1225
|
-
* Render a single property field based on its type
|
|
1226
|
-
*/
|
|
1227
|
-
renderPropertyField(attr) {
|
|
1228
|
-
const value = this.propertyValues[attr.name];
|
|
1229
|
-
const type = attr.type?.text || 'string';
|
|
1230
|
-
// Check if type is a union of string literals (e.g., "'default' | 'outlined' | 'elevated'")
|
|
1231
|
-
const enumMatch = type.match(/^'[^']+'/);
|
|
1232
|
-
if (enumMatch) {
|
|
1233
|
-
const options = type.split('|').map(opt => opt.trim().replace(/'/g, ''));
|
|
1234
|
-
return (h("div", { class: "property-field" }, h("label", { htmlFor: `prop-${attr.name}` }, attr.name, attr.description && h("span", { class: "property-hint" }, attr.description)), h("le-select", { options: [...options.map(opt => ({ label: opt, value: opt }))], "full-width": true, value: value ?? attr.default?.replace(/'/g, ''), placeholder: attr.default?.replace(/'/g, ''), onChange: (e) => this.handlePropertyChange(attr.name, e.detail.value, type) })));
|
|
1235
|
-
}
|
|
1236
|
-
// Boolean type
|
|
1237
|
-
if (type === 'boolean') {
|
|
1238
|
-
return (h("div", { class: "property-field property-field--checkbox" }, h("le-checkbox", { name: `prop-${attr.name}`, checked: value === true || value === '', onChange: e => this.handlePropertyChange(attr.name, e.target.checked, type) }, attr.name, attr.description && h("div", { slot: "description" }, attr.description))));
|
|
1239
|
-
}
|
|
1240
|
-
// Number type
|
|
1241
|
-
if (type === 'number') {
|
|
1242
|
-
return (h("div", { class: "property-field" }, h("label", { htmlFor: `prop-${attr.name}` }, attr.name, attr.description && h("span", { class: "property-hint" }, attr.description)), h("input", { type: "number", id: `prop-${attr.name}`, value: value ?? '', placeholder: attr.default, onChange: e => this.handlePropertyChange(attr.name, e.target.value, type) })));
|
|
1243
|
-
}
|
|
1244
|
-
// Default: string/text input
|
|
1245
|
-
return (h("div", { class: "property-field" }, h("le-string-input", { name: `prop-${attr.name}`, label: attr.name, value: value ?? '', placeholder: attr.default?.replace(/'/g, ''), onChange: (e) => this.handlePropertyChange(attr.name, e.detail.value, type) }, h("span", { slot: "description" }, attr.description))));
|
|
1246
|
-
}
|
|
1247
|
-
render() {
|
|
1248
|
-
const name = this.displayName || this.formatDisplayName(this.component);
|
|
1249
|
-
// In default mode, just pass through content with host classes
|
|
1250
|
-
if (!this.adminMode) {
|
|
1251
|
-
return (h(Host, { class: classnames(this.component, this.hostClass), style: this.hostStyle }, h("slot", null)));
|
|
1252
|
-
}
|
|
1253
|
-
// In admin mode, show wrapper with header and settings
|
|
1254
|
-
return (h(Host, { class: classnames(this.component, this.hostClass, 'admin-mode'), style: this.hostStyle }, h("div", { class: "le-component-wrapper" }, h("div", { class: "le-component-header" }, h("span", { class: "le-component-name" }, name), h("le-popover", { popoverTitle: `${name} Settings`, position: "right", align: "start", "min-width": "300px", mode: "default" }, h("le-button", { type: "button", class: "le-component-button", slot: "trigger", variant: "clear", size: "small", "aria-label": "Edit component properties", "icon-only": true }, h("span", { class: "le-component-trigger", slot: "icon-only" }, "\u2699")), this.renderPropertyEditor())), h("div", { class: "le-component-content" }, h("slot", null)))));
|
|
1255
|
-
}
|
|
1256
|
-
static get assetsDirs() { return ["assets"]; }
|
|
1257
|
-
get el() { return this; }
|
|
1258
|
-
static get style() { return leComponentCss(); }
|
|
1259
|
-
}, [257, "le-component", {
|
|
1260
|
-
"component": [1],
|
|
1261
|
-
"displayName": [1, "display-name"],
|
|
1262
|
-
"hostClass": [1, "host-class"],
|
|
1263
|
-
"hostStyle": [16],
|
|
1264
|
-
"adminMode": [32],
|
|
1265
|
-
"componentMeta": [32],
|
|
1266
|
-
"propertyValues": [32]
|
|
1267
|
-
}]);
|
|
1268
|
-
function defineCustomElement$2() {
|
|
1269
|
-
if (typeof customElements === "undefined") {
|
|
1270
|
-
return;
|
|
1271
|
-
}
|
|
1272
|
-
const components = ["le-component", "le-button", "le-checkbox", "le-component", "le-dropdown-base", "le-popover", "le-popup", "le-select", "le-slot", "le-string-input"];
|
|
1273
|
-
components.forEach(tagName => { switch (tagName) {
|
|
1274
|
-
case "le-component":
|
|
1275
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1276
|
-
customElements.define(transformTag(tagName), LeComponent);
|
|
1277
|
-
}
|
|
1278
|
-
break;
|
|
1279
|
-
case "le-button":
|
|
1280
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1281
|
-
defineCustomElement();
|
|
1282
|
-
}
|
|
1283
|
-
break;
|
|
1284
|
-
case "le-checkbox":
|
|
1285
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1286
|
-
defineCustomElement$1();
|
|
1287
|
-
}
|
|
1288
|
-
break;
|
|
1289
|
-
case "le-component":
|
|
1290
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1291
|
-
defineCustomElement$2();
|
|
1292
|
-
}
|
|
1293
|
-
break;
|
|
1294
|
-
case "le-dropdown-base":
|
|
1295
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1296
|
-
defineCustomElement$8();
|
|
1297
|
-
}
|
|
1298
|
-
break;
|
|
1299
|
-
case "le-popover":
|
|
1300
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1301
|
-
defineCustomElement$7();
|
|
1302
|
-
}
|
|
1303
|
-
break;
|
|
1304
|
-
case "le-popup":
|
|
1305
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1306
|
-
defineCustomElement$3();
|
|
1307
|
-
}
|
|
1308
|
-
break;
|
|
1309
|
-
case "le-select":
|
|
1310
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1311
|
-
defineCustomElement$4();
|
|
1312
|
-
}
|
|
1313
|
-
break;
|
|
1314
|
-
case "le-slot":
|
|
1315
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1316
|
-
defineCustomElement$5();
|
|
1317
|
-
}
|
|
1318
|
-
break;
|
|
1319
|
-
case "le-string-input":
|
|
1320
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1321
|
-
defineCustomElement$6();
|
|
1322
|
-
}
|
|
1323
|
-
break;
|
|
1324
|
-
} });
|
|
1325
|
-
}
|
|
1326
|
-
|
|
1327
|
-
const leCheckboxCss = () => `:host{display:block;--le-checkbox-size:18px;--le-checkbox-color:var(--le-color-primary, #007bff);--le-checkbox-label-color:var(--le-color-text-primary, #333);--le-checkbox-desc-color:var(--le-color-text-secondary, #666);--le-checkbox-border-radius:var(--le-radius-sm, 2px);--le-checkbox-marker-color:var(--le-color-surface, #fff)}.le-checkbox-wrapper{display:flex;flex-direction:column;gap:4px}.le-checkbox-label{display:inline-flex;align-items:flex-start;gap:8px;cursor:pointer;user-select:none}:host([disabled]) .le-checkbox-label{cursor:not-allowed;opacity:0.6}.le-checkbox-input{display:flex;align-items:center;justify-content:center;min-height:1.4em}input[type="checkbox"]{appearance:none;-webkit-appearance:none;width:var(--le-checkbox-size);height:var(--le-checkbox-size);border:var(--le-border-width, 2px) solid var(--le-checkbox-color);border-radius:var(--le-checkbox-border-radius);margin:0;margin-top:2px;position:relative;cursor:inherit;background-color:transparent;transition:background-color 0.2s, border-color 0.2s}input[type="checkbox"]:checked{background-color:var(--le-checkbox-color)}input[type="checkbox"]:checked::after{content:'';position:absolute;left:0;top:0;bottom:calc(var(--le-checkbox-size) / 5);right:0;margin:auto;width:calc(var(--le-checkbox-size) / 4);height:calc(var(--le-checkbox-size) / 2);border:solid var(--le-checkbox-marker-color, #fff);border-width:0 calc(var(--le-checkbox-size) / 10) calc(var(--le-checkbox-size) / 10) 0;transform:rotate(45deg)}input[type="checkbox"]:focus-visible{outline:2px solid var(--le-color-focus);outline-offset:2px}.le-checkbox-text{flex:1;flex-wrap:wrap;color:var(--le-checkbox-label-color);line-height:1.5;text-align:start}.le-checkbox-description{margin-left:calc(var(--le-checkbox-size) + 8px);font-size:0.875em;color:var(--le-checkbox-desc-color);line-height:1.4}:host [slot="description"]{margin:0}`;
|
|
1328
|
-
|
|
1329
|
-
const LeCheckbox = /*@__PURE__*/ proxyCustomElement(class LeCheckbox extends HTMLElement {
|
|
1330
|
-
constructor(registerHost) {
|
|
1331
|
-
super();
|
|
1332
|
-
if (registerHost !== false) {
|
|
1333
|
-
this.__registerHost();
|
|
1334
|
-
}
|
|
1335
|
-
this.__attachShadow();
|
|
1336
|
-
this.leChange = createEvent(this, "change", 7);
|
|
1337
|
-
/**
|
|
1338
|
-
* Whether the checkbox is checked
|
|
1339
|
-
*/
|
|
1340
|
-
this.checked = false;
|
|
1341
|
-
/**
|
|
1342
|
-
* Whether the checkbox is disabled
|
|
1343
|
-
*/
|
|
1344
|
-
this.disabled = false;
|
|
1345
|
-
this.handleChange = (event) => {
|
|
1346
|
-
// We stop the internal button click from bubbling up
|
|
1347
|
-
event.stopPropagation();
|
|
1348
|
-
if (this.disabled) {
|
|
1349
|
-
event.preventDefault();
|
|
1350
|
-
return;
|
|
1351
|
-
}
|
|
1352
|
-
const input = event.target;
|
|
1353
|
-
this.checked = input.checked;
|
|
1354
|
-
this.leChange.emit({
|
|
1355
|
-
checked: this.checked,
|
|
1356
|
-
value: this.value,
|
|
1357
|
-
name: this.name,
|
|
1358
|
-
externalId: this.externalId
|
|
1359
|
-
});
|
|
1360
|
-
};
|
|
1361
|
-
}
|
|
1362
|
-
render() {
|
|
1363
|
-
return (h("le-component", { key: '8b4541e96816b6e69ee790779971981b9d112484', component: "le-checkbox", hostClass: classnames({ 'disabled': this.disabled }) }, h("div", { key: 'c5e3a8692e59fa59a46bc90302e80f20dc700f04', class: "le-checkbox-wrapper" }, h("label", { key: 'b72abfbd39434a2c8be951a933e57ce70e9c922c', class: "le-checkbox-label" }, h("span", { key: '624ebbd37e6ea6a0800d702cbcea5ab8fe78b59e', class: "le-checkbox-input" }, h("input", { key: '182dc9549cc3494fc61e7779242ff14c304c3d97', type: "checkbox", name: this.name, value: this.value, checked: this.checked, disabled: this.disabled, onChange: this.handleChange })), h("span", { key: 'f14dc486329d8375b47ca75bedd2ac31f04273a7', class: "le-checkbox-text" }, h("le-slot", { key: '3be69ca148e121e8970bd3950fcbdee12613c775', name: "", type: "text", tag: "span" }, h("slot", { key: '2a258f7ce0331b9d08df5ac23a5ec492493974ca' })))), h("div", { key: '2deeab5d1d7c6b4046b5b4f54cd92061fc5f7383', class: "le-checkbox-description" }, h("le-slot", { key: '3ec3ca85d9f472d209084c4d95d46d2c114133e8', name: "description", type: "text", tag: "div", label: "Description" }, h("slot", { key: 'e1043ec4613df078446e7a6a5550646bbbe7d8be', name: "description" }))))));
|
|
1364
|
-
}
|
|
1365
|
-
get el() { return this; }
|
|
1366
|
-
static get style() { return leCheckboxCss(); }
|
|
1367
|
-
}, [257, "le-checkbox", {
|
|
1368
|
-
"checked": [1540],
|
|
1369
|
-
"disabled": [4],
|
|
1370
|
-
"name": [1],
|
|
1371
|
-
"value": [1],
|
|
1372
|
-
"externalId": [1, "external-id"]
|
|
1373
|
-
}]);
|
|
1374
|
-
function defineCustomElement$1() {
|
|
1375
|
-
if (typeof customElements === "undefined") {
|
|
1376
|
-
return;
|
|
1377
|
-
}
|
|
1378
|
-
const components = ["le-checkbox", "le-button", "le-checkbox", "le-component", "le-popover", "le-popup", "le-select", "le-slot", "le-string-input"];
|
|
1379
|
-
components.forEach(tagName => { switch (tagName) {
|
|
1380
|
-
case "le-checkbox":
|
|
1381
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1382
|
-
customElements.define(transformTag(tagName), LeCheckbox);
|
|
1383
|
-
}
|
|
1384
|
-
break;
|
|
1385
|
-
case "le-button":
|
|
1386
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1387
|
-
defineCustomElement();
|
|
1388
|
-
}
|
|
1389
|
-
break;
|
|
1390
|
-
case "le-checkbox":
|
|
1391
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1392
|
-
defineCustomElement$1();
|
|
1393
|
-
}
|
|
1394
|
-
break;
|
|
1395
|
-
case "le-component":
|
|
1396
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1397
|
-
defineCustomElement$2();
|
|
1398
|
-
}
|
|
1399
|
-
break;
|
|
1400
|
-
case "le-popover":
|
|
1401
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1402
|
-
defineCustomElement$7();
|
|
1403
|
-
}
|
|
1404
|
-
break;
|
|
1405
|
-
case "le-popup":
|
|
1406
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1407
|
-
defineCustomElement$3();
|
|
1408
|
-
}
|
|
1409
|
-
break;
|
|
1410
|
-
case "le-select":
|
|
1411
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1412
|
-
defineCustomElement$4();
|
|
1413
|
-
}
|
|
1414
|
-
break;
|
|
1415
|
-
case "le-slot":
|
|
1416
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1417
|
-
defineCustomElement$5();
|
|
1418
|
-
}
|
|
1419
|
-
break;
|
|
1420
|
-
case "le-string-input":
|
|
1421
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1422
|
-
defineCustomElement$6();
|
|
1423
|
-
}
|
|
1424
|
-
break;
|
|
1425
|
-
} });
|
|
1426
|
-
}
|
|
1427
|
-
|
|
1428
|
-
const leButtonCss = () => `:host{display:inline-block;--le-button-border-radius:var(--le-radius-md);--le-button-padding-x:var(--le-spacing-3);--le-button-padding-y:var(--le-spacing-1);--le-button-padding:var(--le-button-padding-y) var(--le-button-padding-x);--le-button-small-padding:0.25rem;--le-button-font-size:var(--le-font-size-md);--le-button-font-weight:var(--le-font-weight-medium);--le-button-transition:var(--le-transition-fast);--le-transition-easing:ease-in-out;--le-button-icon-aspect-ratio:1;--le-button-color:var(--le-color-primary-contrast);--_btn-bg:var(--le-color-primary);--_btn-bg-hover:var(--le-color-primary-dark);--_btn-bg-system:var(--le-color-black);--_btn-color:var(--le-button-color);--_btn-border-color:var(--le-color-primary)}:host([full-width]){display:block;width:100%}.le-button-container{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--le-spacing-3);width:100%;padding:var(--le-button-padding);border:1px solid var(--_btn-border-color);border-radius:var(--le-button-border-radius);background:var(--_btn-bg);color:var(--_btn-color);font-family:var(--le-font-family-base);font-size:var(--le-button-font-size);font-weight:var(--le-button-font-weight);line-height:var(--le-line-height-tight);text-decoration:none;cursor:pointer;transition:background-color var(--le-button-transition) var(--le-transition-easing),
|
|
1429
|
-
border-color var(--le-button-transition) var(--le-transition-easing),
|
|
1430
|
-
box-shadow var(--le-button-transition) var(--le-transition-easing),
|
|
1431
|
-
transform var(--le-button-transition) var(--le-transition-easing)}.le-button-container:hover:not(:disabled){background:var(--_btn-bg-hover);border-color:var(--_btn-bg-hover)}.le-button-container:active:not(:disabled){box-shadow:inset 0 0 5px color-mix(in srgb, var(--_btn-bg) 50%, transparent)}.le-button-container:focus-visible{outline:2px solid var(--le-color-focus);outline-offset:2px}.le-button-container:disabled{opacity:0.5;cursor:not-allowed}.le-button-label{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--le-spacing-2)}:host(.color-primary){--_btn-bg:var(--le-color-primary);--_btn-bg-hover:var(--le-color-primary-dark);--_btn-color:var(--le-button-color);--_btn-border-color:var(--le-color-primary)}:host(.color-secondary){--_btn-bg:var(--le-color-secondary);--_btn-bg-hover:var(--le-color-secondary-dark);--_btn-color:var(--le-color-secondary-contrast);--_btn-border-color:var(--le-color-secondary)}:host(.color-success){--_btn-bg:var(--le-color-success);--_btn-bg-hover:var(--le-color-success-dark);--_btn-color:var(--le-color-success-contrast);--_btn-border-color:var(--le-color-success)}:host(.color-warning){--_btn-bg:var(--le-color-warning);--_btn-bg-hover:var(--le-color-warning-dark);--_btn-color:var(--le-color-warning-contrast);--_btn-border-color:var(--le-color-warning)}:host(.color-danger){--_btn-bg:var(--le-color-danger);--_btn-bg-hover:var(--le-color-danger-dark);--_btn-color:var(--le-color-danger-contrast);--_btn-border-color:var(--le-color-danger)}:host(.color-info){--_btn-bg:var(--le-color-info);--_btn-bg-hover:var(--le-color-info-dark);--_btn-color:var(--le-color-info-contrast);--_btn-border-color:var(--le-color-info)}:host(.variant-solid) .le-button-container{box-shadow:var(--le-shadow-sm)}:host(.variant-solid) .le-button-container:hover:not(:disabled){box-shadow:var(--le-shadow-md)}:host(.variant-outlined) .le-button-container{background:transparent;color:var(--_btn-bg);border-color:color-mix(in srgb, var(--_btn-border-color) 33%, transparent)}:host(.variant-outlined) .le-button-container:hover:not(:disabled){border-color:var(--_btn-border-color)}:host(.variant-clear) .le-button-container{background:transparent;color:var(--_btn-bg);border-color:transparent}:host(.variant-clear) .le-button-container:hover:not(:disabled){background:var(--le-color-gray-100);border-color:transparent}:host(.variant-system) .le-button-container{background:transparent;color:var(--_btn-bg-system);border-color:transparent}:host(.size-small){--le-button-padding-x:0.4rem;--le-button-padding-y:0.3rem;--le-button-padding-top:0.35rem;--le-button-font-size:var(--le-button-small-font-size, var(--le-font-size-xs))}:host(.size-large){--le-button-padding-x:0.9rem;--le-button-padding-y:0.6rem;--le-button-font-size:var(--le-font-size-xl)}:host(.full-width){display:block;width:100%}:host(.selected) .le-button-container{box-shadow:inset 0 0 4px var(--le-color-shadow)}:host(.variant-outlined.selected) .le-button-container,:host(.variant-clear.selected) .le-button-container{background:var(--_btn-bg);color:var(--_btn-color)}:host(.icon-only) .le-button-container{padding:var(--le-button-icon-only-padding, 0.5rem);padding-bottom:var(--le-button-icon-only-padding, 0.6rem);aspect-ratio:var(--le-button-icon-aspect-ratio, 1)}:host(.icon-only.size-small) .le-button-container{padding:var(--le-button-small-padding, 0.25rem)}:host(.icon-only.size-large) .le-button-container{padding:0.75rem}:host(.icon-only) .content{display:none}.content{display:inline}.content:empty{display:none}.icon-start,.icon-only,.icon-end{display:flex;align-items:center;justify-content:center}.icon-start:empty,.icon-only:empty,.icon-end:empty{display:none}::slotted([slot="icon-start"]),::slotted([slot="icon-only"]),::slotted([slot="icon-end"]){display:flex;align-items:center;justify-content:center;width:1.125em;height:1.125em}.le-button-align-start{justify-content:flex-start}.le-button-align-center{justify-content:center}.le-button-align-space-between{justify-content:space-between}.le-button-align-end{justify-content:flex-end}`;
|
|
1432
|
-
|
|
1433
|
-
const LeButton = /*@__PURE__*/ proxyCustomElement(class LeButton extends HTMLElement {
|
|
1434
|
-
constructor(registerHost) {
|
|
1435
|
-
super();
|
|
1436
|
-
if (registerHost !== false) {
|
|
1437
|
-
this.__registerHost();
|
|
1438
|
-
}
|
|
1439
|
-
this.__attachShadow();
|
|
1440
|
-
this.leClick = createEvent(this, "click", 7);
|
|
1441
|
-
/**
|
|
1442
|
-
* Button variant style
|
|
1443
|
-
* @allowedValues solid | outlined | clear
|
|
1444
|
-
*/
|
|
1445
|
-
this.variant = 'solid';
|
|
1446
|
-
/**
|
|
1447
|
-
* Button color theme (uses theme semantic colors)
|
|
1448
|
-
* @allowedValues primary | secondary | success | warning | danger | info
|
|
1449
|
-
*/
|
|
1450
|
-
this.color = 'primary';
|
|
1451
|
-
/**
|
|
1452
|
-
* Button size
|
|
1453
|
-
* @allowedValues small | medium | large
|
|
1454
|
-
*/
|
|
1455
|
-
this.size = 'medium';
|
|
1456
|
-
/**
|
|
1457
|
-
* Whether the button is in a selected/active state
|
|
1458
|
-
*/
|
|
1459
|
-
this.selected = false;
|
|
1460
|
-
/**
|
|
1461
|
-
* Whether the button takes full width of its container
|
|
1462
|
-
*/
|
|
1463
|
-
this.fullWidth = false;
|
|
1464
|
-
/**
|
|
1465
|
-
* Whether the button is disabled
|
|
1466
|
-
*/
|
|
1467
|
-
this.disabled = false;
|
|
1468
|
-
/**
|
|
1469
|
-
* The button type attribute
|
|
1470
|
-
* @allowedValues button | submit | reset
|
|
1471
|
-
*/
|
|
1472
|
-
this.type = 'button';
|
|
1473
|
-
/**
|
|
1474
|
-
* Alignment of the button label without the end icon
|
|
1475
|
-
* @allowedValues start | center | space-between | end
|
|
1476
|
-
*/
|
|
1477
|
-
this.align = 'center';
|
|
1478
|
-
this.handleClick = (event) => {
|
|
1479
|
-
// We stop the internal button click from bubbling up
|
|
1480
|
-
event.stopPropagation();
|
|
1481
|
-
if (this.disabled) {
|
|
1482
|
-
event.preventDefault();
|
|
1483
|
-
return;
|
|
1484
|
-
}
|
|
1485
|
-
// And emit our own click event from the host element
|
|
1486
|
-
this.leClick.emit(event);
|
|
1487
|
-
};
|
|
1488
|
-
}
|
|
1489
|
-
render() {
|
|
1490
|
-
const classes = classnames(`variant-${this.variant}`, `color-${this.color}`, `size-${this.size}`, {
|
|
1491
|
-
'selected': this.selected,
|
|
1492
|
-
'full-width': this.fullWidth,
|
|
1493
|
-
'icon-only': this.iconOnly,
|
|
1494
|
-
'disabled': this.disabled,
|
|
1495
|
-
});
|
|
1496
|
-
const TagType = this.href ? 'a' : 'button';
|
|
1497
|
-
const attrs = this.href
|
|
1498
|
-
? { href: this.href, target: this.target, role: 'button' }
|
|
1499
|
-
: { type: this.type, disabled: this.disabled };
|
|
1500
|
-
return (h(Host, { key: '4bf9fb21e9bf0ca5a19193d977ad9fab90b519a0', class: classes }, h("le-component", { key: '8e0edefabbe9196eba935a1e8cce788c686c170c', component: "le-button" }, h(TagType, { key: '30f88ea834a9029c0f8ec24819107ba318dc6397', class: classnames('le-button-container', `le-button-align-${this.align}`), part: "button", ...attrs, onClick: this.handleClick }, this.iconOnly !== undefined ? (h("slot", { name: "icon-only" }, typeof this.iconOnly === 'string' ? this.iconOnly : null)) : (h(Fragment, null, h("span", { class: "le-button-label" }, this.iconStart && (h("span", { class: "icon-start", part: "icon-start" }, this.iconStart)), h("le-slot", { name: "", description: "Button text", type: "text", class: "content", part: "content" }, h("slot", null))), this.iconEnd && (h("span", { class: "icon-end", part: "icon-end" }, this.iconEnd))))))));
|
|
1501
|
-
}
|
|
1502
|
-
get el() { return this; }
|
|
1503
|
-
static get style() { return leButtonCss(); }
|
|
1504
|
-
}, [257, "le-button", {
|
|
1505
|
-
"mode": [1537],
|
|
1506
|
-
"variant": [1],
|
|
1507
|
-
"color": [1],
|
|
1508
|
-
"size": [1],
|
|
1509
|
-
"selected": [4],
|
|
1510
|
-
"fullWidth": [516, "full-width"],
|
|
1511
|
-
"iconOnly": [1, "icon-only"],
|
|
1512
|
-
"iconStart": [1, "icon-start"],
|
|
1513
|
-
"iconEnd": [1, "icon-end"],
|
|
1514
|
-
"disabled": [4],
|
|
1515
|
-
"type": [1],
|
|
1516
|
-
"href": [1],
|
|
1517
|
-
"target": [1],
|
|
1518
|
-
"align": [1]
|
|
1519
|
-
}]);
|
|
1520
|
-
function defineCustomElement() {
|
|
1521
|
-
if (typeof customElements === "undefined") {
|
|
1522
|
-
return;
|
|
1523
|
-
}
|
|
1524
|
-
const components = ["le-button", "le-button", "le-checkbox", "le-component", "le-popover", "le-popup", "le-select", "le-slot", "le-string-input"];
|
|
1525
|
-
components.forEach(tagName => { switch (tagName) {
|
|
1526
|
-
case "le-button":
|
|
1527
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1528
|
-
customElements.define(transformTag(tagName), LeButton);
|
|
1529
|
-
}
|
|
1530
|
-
break;
|
|
1531
|
-
case "le-button":
|
|
1532
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1533
|
-
defineCustomElement();
|
|
1534
|
-
}
|
|
1535
|
-
break;
|
|
1536
|
-
case "le-checkbox":
|
|
1537
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1538
|
-
defineCustomElement$1();
|
|
1539
|
-
}
|
|
1540
|
-
break;
|
|
1541
|
-
case "le-component":
|
|
1542
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1543
|
-
defineCustomElement$2();
|
|
1544
|
-
}
|
|
1545
|
-
break;
|
|
1546
|
-
case "le-popover":
|
|
1547
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1548
|
-
defineCustomElement$7();
|
|
1549
|
-
}
|
|
1550
|
-
break;
|
|
1551
|
-
case "le-popup":
|
|
1552
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1553
|
-
defineCustomElement$3();
|
|
1554
|
-
}
|
|
1555
|
-
break;
|
|
1556
|
-
case "le-select":
|
|
1557
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1558
|
-
defineCustomElement$4();
|
|
1559
|
-
}
|
|
1560
|
-
break;
|
|
1561
|
-
case "le-slot":
|
|
1562
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1563
|
-
defineCustomElement$5();
|
|
1564
|
-
}
|
|
1565
|
-
break;
|
|
1566
|
-
case "le-string-input":
|
|
1567
|
-
if (!customElements.get(transformTag(tagName))) {
|
|
1568
|
-
defineCustomElement$6();
|
|
1569
|
-
}
|
|
1570
|
-
break;
|
|
1571
|
-
} });
|
|
1572
|
-
}
|
|
1573
|
-
|
|
1574
|
-
export { LeButton as L, defineCustomElement$5 as a, defineCustomElement$4 as b, defineCustomElement$3 as c, defineCustomElement$6 as d, defineCustomElement$2 as e, defineCustomElement$1 as f, defineCustomElement as g, LeCheckbox as h, LeComponent as i, LePopup as j, LeSelect as k, LeSlot as l, LeStringInput as m };
|
|
1575
|
-
//# sourceMappingURL=le-button2.js.map
|
|
1576
|
-
|
|
1577
|
-
//# sourceMappingURL=le-button2.js.map
|