le-kit 0.5.1 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LLM_CONTEXT.md +22 -0
- package/dist/cjs/le-bar_16.cjs.entry.js +945 -1257
- package/dist/cjs/le-box.cjs.entry.js +40 -88
- package/dist/cjs/le-breadcrumbs.cjs.entry.js +223 -0
- package/dist/cjs/le-card.cjs.entry.js +11 -11
- package/dist/cjs/le-code-input.cjs.entry.js +76 -110
- package/dist/cjs/le-combobox.cjs.entry.js +126 -153
- package/dist/cjs/le-header-placeholder.cjs.entry.js +1 -1
- package/dist/cjs/le-kit.cjs.js +1 -1
- package/dist/cjs/le-multiselect.cjs.entry.js +149 -171
- package/dist/cjs/le-number-input.cjs.entry.js +89 -129
- package/dist/cjs/le-round-progress.cjs.entry.js +6 -11
- package/dist/cjs/le-segmented-control.cjs.entry.js +77 -87
- package/dist/cjs/le-side-panel-toggle.cjs.entry.js +59 -75
- package/dist/cjs/le-side-panel.cjs.entry.js +130 -137
- package/dist/cjs/le-stack.cjs.entry.js +38 -51
- package/dist/cjs/le-tab-bar.cjs.entry.js +80 -89
- package/dist/cjs/le-tab-panel.cjs.entry.js +21 -39
- package/dist/cjs/le-tab.cjs.entry.js +53 -91
- package/dist/cjs/le-tabs.cjs.entry.js +112 -122
- package/dist/cjs/le-tag.cjs.entry.js +23 -40
- package/dist/cjs/le-text.cjs.entry.js +131 -148
- package/dist/cjs/le-turntable.cjs.entry.js +17 -25
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/le-bar/le-bar.js +132 -139
- package/dist/collection/components/le-bar/le-bar.js.map +1 -1
- package/dist/collection/components/le-box/le-box.js +41 -88
- package/dist/collection/components/le-box/le-box.js.map +1 -1
- package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.css +72 -0
- package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.js +372 -0
- package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.js.map +1 -0
- package/dist/collection/components/le-button/le-button.js +50 -79
- package/dist/collection/components/le-button/le-button.js.map +1 -1
- package/dist/collection/components/le-card/le-card.js +12 -11
- package/dist/collection/components/le-card/le-card.js.map +1 -1
- package/dist/collection/components/le-checkbox/le-checkbox.js +27 -42
- package/dist/collection/components/le-checkbox/le-checkbox.js.map +1 -1
- package/dist/collection/components/le-code-input/le-code-input.js +77 -110
- package/dist/collection/components/le-code-input/le-code-input.js.map +1 -1
- package/dist/collection/components/le-collapse/le-collapse.js +15 -14
- package/dist/collection/components/le-collapse/le-collapse.js.map +1 -1
- package/dist/collection/components/le-combobox/le-combobox.js +127 -153
- package/dist/collection/components/le-combobox/le-combobox.js.map +1 -1
- package/dist/collection/components/le-component/le-component.js +14 -38
- package/dist/collection/components/le-component/le-component.js.map +1 -1
- package/dist/collection/components/le-current-heading/le-current-heading.js +6 -5
- package/dist/collection/components/le-current-heading/le-current-heading.js.map +1 -1
- package/dist/collection/components/le-dropdown-base/le-dropdown-base.js +139 -165
- package/dist/collection/components/le-dropdown-base/le-dropdown-base.js.map +1 -1
- package/dist/collection/components/le-header/le-header.js +22 -45
- package/dist/collection/components/le-header/le-header.js.map +1 -1
- package/dist/collection/components/le-header-placeholder/le-header-placeholder.js +1 -1
- package/dist/collection/components/le-icon/le-icon.js +14 -14
- package/dist/collection/components/le-icon/le-icon.js.map +1 -1
- package/dist/collection/components/le-multiselect/le-multiselect.js +150 -171
- package/dist/collection/components/le-multiselect/le-multiselect.js.map +1 -1
- package/dist/collection/components/le-navigation/le-navigation.js +118 -128
- package/dist/collection/components/le-navigation/le-navigation.js.map +1 -1
- package/dist/collection/components/le-number-input/le-number-input.js +90 -129
- package/dist/collection/components/le-number-input/le-number-input.js.map +1 -1
- package/dist/collection/components/le-popover/le-popover.css +2 -1
- package/dist/collection/components/le-popover/le-popover.js +101 -126
- package/dist/collection/components/le-popover/le-popover.js.map +1 -1
- package/dist/collection/components/le-popup/le-popup.js +89 -115
- package/dist/collection/components/le-popup/le-popup.js.map +1 -1
- package/dist/collection/components/le-round-progress/le-round-progress.js +7 -12
- package/dist/collection/components/le-round-progress/le-round-progress.js.map +1 -1
- package/dist/collection/components/le-scroll-progress/le-scroll-progress.js +6 -7
- package/dist/collection/components/le-scroll-progress/le-scroll-progress.js.map +1 -1
- package/dist/collection/components/le-segmented-control/le-segmented-control.js +78 -87
- package/dist/collection/components/le-segmented-control/le-segmented-control.js.map +1 -1
- package/dist/collection/components/le-select/le-select.js +88 -110
- package/dist/collection/components/le-select/le-select.js.map +1 -1
- package/dist/collection/components/le-side-panel/le-side-panel.css +10 -1
- package/dist/collection/components/le-side-panel/le-side-panel.js +131 -136
- package/dist/collection/components/le-side-panel/le-side-panel.js.map +1 -1
- package/dist/collection/components/le-side-panel-toggle/le-side-panel-toggle.js +60 -75
- package/dist/collection/components/le-side-panel-toggle/le-side-panel-toggle.js.map +1 -1
- package/dist/collection/components/le-slot/le-slot.js +96 -144
- package/dist/collection/components/le-slot/le-slot.js.map +1 -1
- package/dist/collection/components/le-stack/le-stack.js +39 -51
- package/dist/collection/components/le-stack/le-stack.js.map +1 -1
- package/dist/collection/components/le-string-input/le-string-input.js +41 -84
- package/dist/collection/components/le-string-input/le-string-input.js.map +1 -1
- package/dist/collection/components/le-tab/le-tab.js +54 -91
- package/dist/collection/components/le-tab/le-tab.js.map +1 -1
- package/dist/collection/components/le-tab-bar/le-tab-bar.js +81 -89
- package/dist/collection/components/le-tab-bar/le-tab-bar.js.map +1 -1
- package/dist/collection/components/le-tab-panel/le-tab-panel.js +22 -39
- package/dist/collection/components/le-tab-panel/le-tab-panel.js.map +1 -1
- package/dist/collection/components/le-tabs/le-tabs.js +113 -122
- package/dist/collection/components/le-tabs/le-tabs.js.map +1 -1
- package/dist/collection/components/le-tag/le-tag.js +25 -40
- package/dist/collection/components/le-tag/le-tag.js.map +1 -1
- package/dist/collection/components/le-text/le-text.js +132 -148
- package/dist/collection/components/le-text/le-text.js.map +1 -1
- package/dist/collection/components/le-turntable/le-turntable.js +18 -26
- package/dist/collection/components/le-turntable/le-turntable.js.map +1 -1
- package/dist/collection/dist/components/assets/custom-elements.json +1371 -1043
- package/dist/collection/dist/components/assets/icons/arrow-left.json +21 -0
- package/dist/collection/dist/components/assets/icons/arrow-right.json +21 -0
- package/dist/collection/dist/components/assets/icons/check.json +12 -0
- package/dist/collection/dist/components/assets/icons/chevron-down.json +1 -2
- package/dist/collection/dist/components/assets/icons/chevron-left.json +12 -0
- package/dist/collection/dist/components/assets/icons/chevron-right.json +12 -0
- package/dist/collection/dist/components/assets/icons/chevron-up.json +12 -0
- package/dist/components/assets/custom-elements.json +1371 -1043
- package/dist/components/assets/icons/arrow-left.json +21 -0
- package/dist/components/assets/icons/arrow-right.json +21 -0
- package/dist/components/assets/icons/check.json +12 -0
- package/dist/components/assets/icons/chevron-down.json +1 -2
- package/dist/components/assets/icons/chevron-left.json +12 -0
- package/dist/components/assets/icons/chevron-right.json +12 -0
- package/dist/components/assets/icons/chevron-up.json +12 -0
- package/dist/components/le-bar2.js +132 -140
- package/dist/components/le-bar2.js.map +1 -1
- package/dist/components/le-box.js +41 -89
- package/dist/components/le-box.js.map +1 -1
- package/dist/components/le-breadcrumbs.d.ts +11 -0
- package/dist/components/le-breadcrumbs.js +327 -0
- package/dist/components/le-breadcrumbs.js.map +1 -0
- package/dist/components/le-button2.js +405 -619
- package/dist/components/le-button2.js.map +1 -1
- package/dist/components/le-card.js +12 -12
- package/dist/components/le-card.js.map +1 -1
- package/dist/components/le-code-input.js +77 -111
- package/dist/components/le-code-input.js.map +1 -1
- package/dist/components/le-collapse2.js +15 -15
- package/dist/components/le-collapse2.js.map +1 -1
- package/dist/components/le-combobox.js +127 -154
- package/dist/components/le-combobox.js.map +1 -1
- package/dist/components/le-current-heading.js +6 -6
- package/dist/components/le-current-heading.js.map +1 -1
- package/dist/components/le-dropdown-base2.js +139 -166
- package/dist/components/le-dropdown-base2.js.map +1 -1
- package/dist/components/le-header-placeholder.js +1 -1
- package/dist/components/le-header.js +22 -46
- package/dist/components/le-header.js.map +1 -1
- package/dist/components/le-icon2.js +14 -15
- package/dist/components/le-icon2.js.map +1 -1
- package/dist/components/le-multiselect.js +150 -172
- package/dist/components/le-multiselect.js.map +1 -1
- package/dist/components/le-navigation.js +1 -494
- package/dist/components/le-navigation.js.map +1 -1
- package/dist/components/le-navigation2.js +488 -0
- package/dist/components/le-navigation2.js.map +1 -0
- package/dist/components/le-number-input.js +90 -130
- package/dist/components/le-number-input.js.map +1 -1
- package/dist/components/le-popover2.js +103 -128
- package/dist/components/le-popover2.js.map +1 -1
- package/dist/components/le-round-progress.js +7 -12
- package/dist/components/le-round-progress.js.map +1 -1
- package/dist/components/le-scroll-progress.js +6 -8
- package/dist/components/le-scroll-progress.js.map +1 -1
- package/dist/components/le-segmented-control.js +78 -88
- package/dist/components/le-segmented-control.js.map +1 -1
- package/dist/components/le-side-panel-toggle2.js +60 -76
- package/dist/components/le-side-panel-toggle2.js.map +1 -1
- package/dist/components/le-side-panel.js +133 -139
- package/dist/components/le-side-panel.js.map +1 -1
- package/dist/components/le-stack.js +39 -52
- package/dist/components/le-stack.js.map +1 -1
- package/dist/components/le-tab-bar.js +81 -90
- package/dist/components/le-tab-bar.js.map +1 -1
- package/dist/components/le-tab-panel.js +22 -40
- package/dist/components/le-tab-panel.js.map +1 -1
- package/dist/components/le-tab2.js +54 -92
- package/dist/components/le-tab2.js.map +1 -1
- package/dist/components/le-tabs.js +113 -123
- package/dist/components/le-tabs.js.map +1 -1
- package/dist/components/le-tag2.js +24 -41
- package/dist/components/le-tag2.js.map +1 -1
- package/dist/components/le-text.js +132 -149
- package/dist/components/le-text.js.map +1 -1
- package/dist/components/le-turntable.js +18 -26
- package/dist/components/le-turntable.js.map +1 -1
- package/dist/docs.json +294 -2
- package/dist/esm/le-bar_16.entry.js +946 -1258
- package/dist/esm/le-box.entry.js +41 -89
- package/dist/esm/le-box.entry.js.map +1 -1
- package/dist/esm/le-breadcrumbs.entry.js +221 -0
- package/dist/esm/le-breadcrumbs.entry.js.map +1 -0
- package/dist/esm/le-card.entry.js +12 -12
- package/dist/esm/le-card.entry.js.map +1 -1
- package/dist/esm/le-code-input.entry.js +77 -111
- package/dist/esm/le-code-input.entry.js.map +1 -1
- package/dist/esm/le-combobox.entry.js +127 -154
- package/dist/esm/le-combobox.entry.js.map +1 -1
- package/dist/esm/le-header-placeholder.entry.js +1 -1
- package/dist/esm/le-kit.js +1 -1
- package/dist/esm/le-multiselect.entry.js +150 -172
- package/dist/esm/le-multiselect.entry.js.map +1 -1
- package/dist/esm/le-number-input.entry.js +90 -130
- package/dist/esm/le-number-input.entry.js.map +1 -1
- package/dist/esm/le-round-progress.entry.js +7 -12
- package/dist/esm/le-round-progress.entry.js.map +1 -1
- package/dist/esm/le-segmented-control.entry.js +78 -88
- package/dist/esm/le-segmented-control.entry.js.map +1 -1
- package/dist/esm/le-side-panel-toggle.entry.js +60 -76
- package/dist/esm/le-side-panel-toggle.entry.js.map +1 -1
- package/dist/esm/le-side-panel.entry.js +131 -138
- package/dist/esm/le-side-panel.entry.js.map +1 -1
- package/dist/esm/le-stack.entry.js +39 -52
- package/dist/esm/le-stack.entry.js.map +1 -1
- package/dist/esm/le-tab-bar.entry.js +81 -90
- package/dist/esm/le-tab-bar.entry.js.map +1 -1
- package/dist/esm/le-tab-panel.entry.js +22 -40
- package/dist/esm/le-tab-panel.entry.js.map +1 -1
- package/dist/esm/le-tab.entry.js +54 -92
- package/dist/esm/le-tab.entry.js.map +1 -1
- package/dist/esm/le-tabs.entry.js +113 -123
- package/dist/esm/le-tabs.entry.js.map +1 -1
- package/dist/esm/le-tag.entry.js +23 -40
- package/dist/esm/le-tag.entry.js.map +1 -1
- package/dist/esm/le-text.entry.js +132 -149
- package/dist/esm/le-text.entry.js.map +1 -1
- package/dist/esm/le-turntable.entry.js +18 -26
- package/dist/esm/le-turntable.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/le-kit/dist/components/assets/custom-elements.json +1371 -1043
- package/dist/le-kit/dist/components/assets/icons/arrow-left.json +21 -0
- package/dist/le-kit/dist/components/assets/icons/arrow-right.json +21 -0
- package/dist/le-kit/dist/components/assets/icons/check.json +12 -0
- package/dist/le-kit/dist/components/assets/icons/chevron-down.json +1 -2
- package/dist/le-kit/dist/components/assets/icons/chevron-left.json +12 -0
- package/dist/le-kit/dist/components/assets/icons/chevron-right.json +12 -0
- package/dist/le-kit/dist/components/assets/icons/chevron-up.json +12 -0
- package/dist/le-kit/le-kit.esm.js +1 -1
- package/dist/le-kit/p-3067b18f.entry.js +2 -0
- package/dist/le-kit/p-3067b18f.entry.js.map +1 -0
- package/dist/le-kit/p-34c4d97d.entry.js +2 -0
- package/dist/le-kit/p-34c4d97d.entry.js.map +1 -0
- package/dist/le-kit/p-45182541.entry.js +2 -0
- package/dist/le-kit/p-45182541.entry.js.map +1 -0
- package/dist/le-kit/p-52a41c96.entry.js +2 -0
- package/dist/le-kit/p-52a41c96.entry.js.map +1 -0
- package/dist/le-kit/p-55fb5dd2.entry.js +2 -0
- package/dist/le-kit/p-55fb5dd2.entry.js.map +1 -0
- package/dist/le-kit/{p-ab6c1def.entry.js → p-649025f4.entry.js} +2 -2
- package/dist/le-kit/p-649025f4.entry.js.map +1 -0
- package/dist/le-kit/p-67930309.entry.js +2 -0
- package/dist/le-kit/p-67930309.entry.js.map +1 -0
- package/dist/le-kit/p-6d222705.entry.js +2 -0
- package/dist/le-kit/p-6d222705.entry.js.map +1 -0
- package/dist/le-kit/p-8049e0c2.entry.js +2 -0
- package/dist/le-kit/p-8049e0c2.entry.js.map +1 -0
- package/dist/le-kit/p-884f57bd.entry.js +2 -0
- package/dist/le-kit/p-88c70f9d.entry.js +2 -0
- package/dist/le-kit/p-88c70f9d.entry.js.map +1 -0
- package/dist/le-kit/p-96610729.entry.js +2 -0
- package/dist/le-kit/p-96610729.entry.js.map +1 -0
- package/dist/le-kit/p-a34054e0.entry.js +2 -0
- package/dist/le-kit/p-a34054e0.entry.js.map +1 -0
- package/dist/le-kit/p-a388e46a.entry.js +2 -0
- package/dist/le-kit/p-a388e46a.entry.js.map +1 -0
- package/dist/le-kit/p-c0c53650.entry.js +2 -0
- package/dist/le-kit/p-c0c53650.entry.js.map +1 -0
- package/dist/le-kit/p-cbf17514.entry.js +2 -0
- package/dist/le-kit/p-cbf17514.entry.js.map +1 -0
- package/dist/le-kit/p-d934de74.entry.js +2 -0
- package/dist/le-kit/p-d934de74.entry.js.map +1 -0
- package/dist/le-kit/p-de72c8b5.entry.js +2 -0
- package/dist/le-kit/p-de72c8b5.entry.js.map +1 -0
- package/dist/le-kit/p-e3dd0f2a.entry.js +2 -0
- package/dist/le-kit/p-e3dd0f2a.entry.js.map +1 -0
- package/dist/le-kit/p-ee170967.entry.js +2 -0
- package/dist/le-kit/p-ee170967.entry.js.map +1 -0
- package/dist/le-kit/p-eedb2f75.entry.js +2 -0
- package/dist/le-kit/p-eedb2f75.entry.js.map +1 -0
- package/dist/types/components/le-breadcrumbs/le-breadcrumbs.d.ts +57 -0
- package/dist/types/components/le-side-panel/le-side-panel.d.ts +2 -0
- package/dist/types/components.d.ts +84 -0
- package/package.json +1 -1
- package/dist/collection/assets/icons/chevron-down.svg +0 -3
- package/dist/collection/dist/components/assets/icons/chevron-down.svg +0 -3
- package/dist/components/assets/icons/chevron-down.svg +0 -3
- package/dist/le-kit/dist/components/assets/icons/chevron-down.svg +0 -3
- package/dist/le-kit/p-221d379a.entry.js +0 -2
- package/dist/le-kit/p-221d379a.entry.js.map +0 -1
- package/dist/le-kit/p-24112ca3.entry.js +0 -2
- package/dist/le-kit/p-24112ca3.entry.js.map +0 -1
- package/dist/le-kit/p-2c6d080d.entry.js +0 -2
- package/dist/le-kit/p-2c6d080d.entry.js.map +0 -1
- package/dist/le-kit/p-46276e77.entry.js +0 -2
- package/dist/le-kit/p-46276e77.entry.js.map +0 -1
- package/dist/le-kit/p-516c8531.entry.js +0 -2
- package/dist/le-kit/p-6b69f9a2.entry.js +0 -2
- package/dist/le-kit/p-6b69f9a2.entry.js.map +0 -1
- package/dist/le-kit/p-6d14306f.entry.js +0 -2
- package/dist/le-kit/p-6d14306f.entry.js.map +0 -1
- package/dist/le-kit/p-7bcdf2d4.entry.js +0 -2
- package/dist/le-kit/p-7bcdf2d4.entry.js.map +0 -1
- package/dist/le-kit/p-7cf1e23c.entry.js +0 -2
- package/dist/le-kit/p-7cf1e23c.entry.js.map +0 -1
- package/dist/le-kit/p-85f2fd4d.entry.js +0 -2
- package/dist/le-kit/p-85f2fd4d.entry.js.map +0 -1
- package/dist/le-kit/p-98242429.entry.js +0 -2
- package/dist/le-kit/p-98242429.entry.js.map +0 -1
- package/dist/le-kit/p-ab6c1def.entry.js.map +0 -1
- package/dist/le-kit/p-ae4ead64.entry.js +0 -2
- package/dist/le-kit/p-ae4ead64.entry.js.map +0 -1
- package/dist/le-kit/p-b05d4511.entry.js +0 -2
- package/dist/le-kit/p-b05d4511.entry.js.map +0 -1
- package/dist/le-kit/p-b6ac02ff.entry.js +0 -2
- package/dist/le-kit/p-b6ac02ff.entry.js.map +0 -1
- package/dist/le-kit/p-c24769e2.entry.js +0 -2
- package/dist/le-kit/p-c24769e2.entry.js.map +0 -1
- package/dist/le-kit/p-dc0445ad.entry.js +0 -2
- package/dist/le-kit/p-dc0445ad.entry.js.map +0 -1
- package/dist/le-kit/p-eb5286f2.entry.js +0 -2
- package/dist/le-kit/p-eb5286f2.entry.js.map +0 -1
- package/dist/le-kit/p-eb710c8e.entry.js +0 -2
- package/dist/le-kit/p-eb710c8e.entry.js.map +0 -1
- package/dist/le-kit/p-f78b1ee6.entry.js +0 -2
- package/dist/le-kit/p-f78b1ee6.entry.js.map +0 -1
- /package/dist/le-kit/{p-516c8531.entry.js.map → p-884f57bd.entry.js.map} +0 -0
|
@@ -16,98 +16,54 @@ const LeStringInput = /*@__PURE__*/ proxyCustomElement(class LeStringInput exten
|
|
|
16
16
|
this.__attachShadow();
|
|
17
17
|
this.leChange = createEvent(this, "change", 7);
|
|
18
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
|
+
};
|
|
19
56
|
}
|
|
20
|
-
get el() { return this; }
|
|
21
|
-
/**
|
|
22
|
-
* Pass the ref of the input element to the parent component
|
|
23
|
-
*/
|
|
24
|
-
inputRef;
|
|
25
|
-
/**
|
|
26
|
-
* Mode of the popover should be 'default' for internal use
|
|
27
|
-
*/
|
|
28
|
-
mode;
|
|
29
|
-
/**
|
|
30
|
-
* The value of the input
|
|
31
|
-
*/
|
|
32
|
-
value;
|
|
33
|
-
/**
|
|
34
|
-
* The name of the input
|
|
35
|
-
*/
|
|
36
|
-
name;
|
|
37
|
-
/**
|
|
38
|
-
* The type of the input (text, email, password, etc.)
|
|
39
|
-
*/
|
|
40
|
-
type = 'text';
|
|
41
|
-
/**
|
|
42
|
-
* Label for the input
|
|
43
|
-
*/
|
|
44
|
-
label;
|
|
45
|
-
/**
|
|
46
|
-
* Icon for the start icon
|
|
47
|
-
*/
|
|
48
|
-
iconStart;
|
|
49
|
-
/**
|
|
50
|
-
* Icon for the end icon
|
|
51
|
-
*/
|
|
52
|
-
iconEnd;
|
|
53
|
-
/**
|
|
54
|
-
* Placeholder text
|
|
55
|
-
*/
|
|
56
|
-
placeholder;
|
|
57
|
-
/**
|
|
58
|
-
* Hide description slot
|
|
59
|
-
*/
|
|
60
|
-
hideDescription = false;
|
|
61
|
-
/**
|
|
62
|
-
* Whether the input is disabled
|
|
63
|
-
*/
|
|
64
|
-
disabled = false;
|
|
65
|
-
/**
|
|
66
|
-
* Whether the input is read-only
|
|
67
|
-
*/
|
|
68
|
-
readonly = false;
|
|
69
|
-
/**
|
|
70
|
-
* External ID for linking with external systems
|
|
71
|
-
*/
|
|
72
|
-
externalId;
|
|
73
|
-
/**
|
|
74
|
-
* Emitted when the value changes (on blur or Enter)
|
|
75
|
-
*/
|
|
76
|
-
leChange;
|
|
77
|
-
/**
|
|
78
|
-
* Emitted when the input value changes (on keystroke)
|
|
79
|
-
*/
|
|
80
|
-
leInput;
|
|
81
|
-
handleInput = (ev) => {
|
|
82
|
-
const input = ev.target;
|
|
83
|
-
this.value = input.value;
|
|
84
|
-
this.leInput.emit({
|
|
85
|
-
value: this.value,
|
|
86
|
-
name: this.name,
|
|
87
|
-
externalId: this.externalId,
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
handleChange = (ev) => {
|
|
91
|
-
const input = ev.target;
|
|
92
|
-
this.value = input.value;
|
|
93
|
-
this.leChange.emit({
|
|
94
|
-
value: this.value,
|
|
95
|
-
name: this.name,
|
|
96
|
-
externalId: this.externalId,
|
|
97
|
-
});
|
|
98
|
-
};
|
|
99
|
-
handleClick = (ev) => {
|
|
100
|
-
ev.stopPropagation();
|
|
101
|
-
};
|
|
102
57
|
render() {
|
|
103
|
-
return (h("le-component", { key: '
|
|
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 => {
|
|
104
59
|
if (this.inputRef) {
|
|
105
60
|
this.inputRef(el);
|
|
106
61
|
}
|
|
107
|
-
}, 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: '
|
|
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" })))))));
|
|
108
63
|
}
|
|
64
|
+
get el() { return this; }
|
|
109
65
|
static get style() { return leStringInputCss(); }
|
|
110
|
-
}, [
|
|
66
|
+
}, [257, "le-string-input", {
|
|
111
67
|
"inputRef": [16],
|
|
112
68
|
"mode": [1537],
|
|
113
69
|
"value": [1537],
|
|
@@ -186,97 +142,100 @@ const LeSlot = /*@__PURE__*/ proxyCustomElement(class LeSlot extends HTMLElement
|
|
|
186
142
|
}
|
|
187
143
|
this.__attachShadow();
|
|
188
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
|
+
};
|
|
189
238
|
}
|
|
190
|
-
get el() { return this; }
|
|
191
|
-
/**
|
|
192
|
-
* The type of slot content.
|
|
193
|
-
* - `slot`: Default, shows a dropzone for components (default)
|
|
194
|
-
* - `text`: Shows a single-line text input
|
|
195
|
-
* - `textarea`: Shows a multi-line text area
|
|
196
|
-
*/
|
|
197
|
-
type = 'slot';
|
|
198
|
-
/**
|
|
199
|
-
* The name of the slot this placeholder represents.
|
|
200
|
-
* Should match the slot name in the parent component.
|
|
201
|
-
*/
|
|
202
|
-
name = '';
|
|
203
|
-
/**
|
|
204
|
-
* Label to display in admin mode.
|
|
205
|
-
* If not provided, the slot name will be used.
|
|
206
|
-
*/
|
|
207
|
-
label;
|
|
208
|
-
/**
|
|
209
|
-
* Description of what content this slot accepts.
|
|
210
|
-
* Shown in admin mode to guide content editors.
|
|
211
|
-
*/
|
|
212
|
-
description;
|
|
213
|
-
/**
|
|
214
|
-
* Comma-separated list of allowed component tags for this slot.
|
|
215
|
-
* Used by CMS to filter available components.
|
|
216
|
-
*
|
|
217
|
-
* @example "le-card,le-button,le-text"
|
|
218
|
-
*/
|
|
219
|
-
allowedComponents;
|
|
220
|
-
/**
|
|
221
|
-
* Whether multiple components can be dropped in this slot.
|
|
222
|
-
*/
|
|
223
|
-
multiple = true;
|
|
224
|
-
/**
|
|
225
|
-
* Whether this slot is required to have content.
|
|
226
|
-
*/
|
|
227
|
-
required = false;
|
|
228
|
-
/**
|
|
229
|
-
* Placeholder text for text/textarea inputs in admin mode.
|
|
230
|
-
*/
|
|
231
|
-
placeholder;
|
|
232
|
-
/**
|
|
233
|
-
* The HTML tag to create when there's no slotted element.
|
|
234
|
-
* Used with type="text" or type="textarea" to auto-create elements.
|
|
235
|
-
*
|
|
236
|
-
* @example "h3" - creates <h3 slot="header">content</h3>
|
|
237
|
-
* @example "p" - creates <p slot="content">content</p>
|
|
238
|
-
*/
|
|
239
|
-
tag;
|
|
240
|
-
/**
|
|
241
|
-
* CSS styles for the slot dropzone container.
|
|
242
|
-
* Useful for layouts - e.g., "flex-direction: row" for horizontal stacks.
|
|
243
|
-
* Only applies in admin mode for type="slot".
|
|
244
|
-
*/
|
|
245
|
-
slotStyle;
|
|
246
|
-
/**
|
|
247
|
-
* Internal state to track admin mode
|
|
248
|
-
*/
|
|
249
|
-
adminMode = false;
|
|
250
|
-
/**
|
|
251
|
-
* Internal state for text input value (synced from slot content)
|
|
252
|
-
*/
|
|
253
|
-
textValue = '';
|
|
254
|
-
/**
|
|
255
|
-
* Whether the current textValue contains valid HTML
|
|
256
|
-
*/
|
|
257
|
-
isValidHtml = true;
|
|
258
|
-
/**
|
|
259
|
-
* Available components loaded from Custom Elements Manifest
|
|
260
|
-
*/
|
|
261
|
-
availableComponents = [];
|
|
262
|
-
/**
|
|
263
|
-
* Whether the component picker popover is open
|
|
264
|
-
*/
|
|
265
|
-
pickerOpen = false;
|
|
266
|
-
/**
|
|
267
|
-
* Reference to the slot element to access assignedNodes
|
|
268
|
-
*/
|
|
269
|
-
slotRef;
|
|
270
|
-
/**
|
|
271
|
-
* The original slotted element (e.g., <h3 slot="header">)
|
|
272
|
-
*/
|
|
273
|
-
slottedElement;
|
|
274
|
-
/**
|
|
275
|
-
* Emitted when text content changes in admin mode.
|
|
276
|
-
* The event detail contains the new text value and validity.
|
|
277
|
-
*/
|
|
278
|
-
leSlotChange;
|
|
279
|
-
disconnectModeObserver;
|
|
280
239
|
connectedCallback() {
|
|
281
240
|
this.disconnectModeObserver = observeModeChanges(this.el, mode => {
|
|
282
241
|
const wasAdmin = this.adminMode;
|
|
@@ -295,10 +254,6 @@ const LeSlot = /*@__PURE__*/ proxyCustomElement(class LeSlot extends HTMLElement
|
|
|
295
254
|
disconnectedCallback() {
|
|
296
255
|
this.disconnectModeObserver?.();
|
|
297
256
|
}
|
|
298
|
-
/**
|
|
299
|
-
* Flag to prevent re-reading content right after we updated it
|
|
300
|
-
*/
|
|
301
|
-
isUpdating = false;
|
|
302
257
|
/**
|
|
303
258
|
* Read content from slotted elements via assignedNodes()
|
|
304
259
|
*/
|
|
@@ -362,49 +317,6 @@ const LeSlot = /*@__PURE__*/ proxyCustomElement(class LeSlot extends HTMLElement
|
|
|
362
317
|
}
|
|
363
318
|
return true;
|
|
364
319
|
}
|
|
365
|
-
handleTextInput = (event) => {
|
|
366
|
-
const target = event.target;
|
|
367
|
-
this.textValue = target.value;
|
|
368
|
-
this.isValidHtml = this.validateHtml(this.textValue);
|
|
369
|
-
if (this.isValidHtml) {
|
|
370
|
-
// Set flag to prevent slotchange from re-reading what we just wrote
|
|
371
|
-
this.isUpdating = true;
|
|
372
|
-
console.log('Updating text value:', this.textValue, 'slottedElement:', this.slottedElement);
|
|
373
|
-
if (this.slottedElement) {
|
|
374
|
-
// Update existing slotted element's innerHTML
|
|
375
|
-
this.slottedElement.innerHTML = this.textValue;
|
|
376
|
-
}
|
|
377
|
-
else if (this.tag && this.textValue) {
|
|
378
|
-
// No slotted element exists
|
|
379
|
-
// If the slot doesn't have a name, then it's the default slot
|
|
380
|
-
// remove the existing non-slotted content (text nodes and elements without slot attribute)
|
|
381
|
-
const rootNode = this.el.getRootNode();
|
|
382
|
-
if (!this.name && rootNode instanceof ShadowRoot) {
|
|
383
|
-
const hostComponent = rootNode.host;
|
|
384
|
-
Array.from(hostComponent.childNodes).forEach(node => {
|
|
385
|
-
if (node.nodeType === Node.TEXT_NODE || (node.nodeType === Node.ELEMENT_NODE && !node.hasAttribute('slot'))) {
|
|
386
|
-
node.remove();
|
|
387
|
-
}
|
|
388
|
-
});
|
|
389
|
-
}
|
|
390
|
-
// create one using the specified tag
|
|
391
|
-
this.createSlottedElement();
|
|
392
|
-
}
|
|
393
|
-
else if (this.textValue) {
|
|
394
|
-
// no tag specified - just replace everything in the host component
|
|
395
|
-
const rootNode = this.el.getRootNode();
|
|
396
|
-
if (rootNode instanceof ShadowRoot) {
|
|
397
|
-
const hostComponent = rootNode.host;
|
|
398
|
-
hostComponent.innerHTML = this.textValue;
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
this.leSlotChange.emit({
|
|
403
|
-
name: this.name,
|
|
404
|
-
value: this.textValue,
|
|
405
|
-
isValid: this.isValidHtml,
|
|
406
|
-
});
|
|
407
|
-
};
|
|
408
320
|
/**
|
|
409
321
|
* Create a new slotted element when none exists.
|
|
410
322
|
* The element is appended to the host component's light DOM.
|
|
@@ -506,16 +418,10 @@ const LeSlot = /*@__PURE__*/ proxyCustomElement(class LeSlot extends HTMLElement
|
|
|
506
418
|
isValid: true,
|
|
507
419
|
});
|
|
508
420
|
}
|
|
509
|
-
/**
|
|
510
|
-
* Handle slot change event to re-read content when nodes are assigned
|
|
511
|
-
*/
|
|
512
|
-
handleSlotChange = () => {
|
|
513
|
-
this.readSlottedContent();
|
|
514
|
-
};
|
|
515
421
|
render() {
|
|
516
422
|
const displayLabel = this.label || this.name;
|
|
517
423
|
// Always render the same structure, CSS handles visibility via .admin-mode class
|
|
518
|
-
return (h(Host, { key: '
|
|
424
|
+
return (h(Host, { key: 'fb2a01670291a714608bc59069991a8ef65dc3e9', class: {
|
|
519
425
|
'admin-mode': this.adminMode,
|
|
520
426
|
'invalid-html': !this.isValidHtml,
|
|
521
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', {
|
|
@@ -559,8 +465,9 @@ const LeSlot = /*@__PURE__*/ proxyCustomElement(class LeSlot extends HTMLElement
|
|
|
559
465
|
return (h("div", { class: "le-slot-dropzone", style: dropzoneStyle }, h("slot", { ref: el => (this.slotRef = el), onSlotchange: this.handleSlotChange })));
|
|
560
466
|
}
|
|
561
467
|
}
|
|
468
|
+
get el() { return this; }
|
|
562
469
|
static get style() { return leSlotDefaultCss(); }
|
|
563
|
-
}, [
|
|
470
|
+
}, [257, "le-slot", {
|
|
564
471
|
"type": [1],
|
|
565
472
|
"name": [1],
|
|
566
473
|
"label": [1],
|
|
@@ -643,72 +550,91 @@ const LeSelect = /*@__PURE__*/ proxyCustomElement(class LeSelect extends HTMLEle
|
|
|
643
550
|
this.leChange = createEvent(this, "change", 7);
|
|
644
551
|
this.leOpen = createEvent(this, "leOpen", 7);
|
|
645
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
|
+
};
|
|
646
637
|
}
|
|
647
|
-
get el() { return this; }
|
|
648
|
-
/**
|
|
649
|
-
* The options to display in the dropdown.
|
|
650
|
-
*/
|
|
651
|
-
options = [];
|
|
652
|
-
/**
|
|
653
|
-
* The currently selected value.
|
|
654
|
-
*/
|
|
655
|
-
value;
|
|
656
|
-
/**
|
|
657
|
-
* Placeholder text when no option is selected.
|
|
658
|
-
*/
|
|
659
|
-
placeholder = 'Select an option';
|
|
660
|
-
/**
|
|
661
|
-
* Whether the select is disabled.
|
|
662
|
-
*/
|
|
663
|
-
disabled = false;
|
|
664
|
-
/**
|
|
665
|
-
* Whether selection is required.
|
|
666
|
-
*/
|
|
667
|
-
required = false;
|
|
668
|
-
/**
|
|
669
|
-
* Name attribute for form submission.
|
|
670
|
-
*/
|
|
671
|
-
name;
|
|
672
|
-
/**
|
|
673
|
-
* Whether the select should take full width of its container.
|
|
674
|
-
*/
|
|
675
|
-
fullWidth = false;
|
|
676
|
-
/**
|
|
677
|
-
* Size variant of the select.
|
|
678
|
-
*/
|
|
679
|
-
size = 'medium';
|
|
680
|
-
/**
|
|
681
|
-
* Visual variant of the select.
|
|
682
|
-
*/
|
|
683
|
-
variant = 'default';
|
|
684
|
-
/**
|
|
685
|
-
* Whether the input is searchable.
|
|
686
|
-
*/
|
|
687
|
-
searchable = false;
|
|
688
|
-
/**
|
|
689
|
-
* Text to show when no options match the search.
|
|
690
|
-
*/
|
|
691
|
-
emptyText = 'No results found';
|
|
692
|
-
/**
|
|
693
|
-
* Whether the dropdown is currently open.
|
|
694
|
-
*/
|
|
695
|
-
open = false;
|
|
696
|
-
/**
|
|
697
|
-
* Emitted when the selected value changes.
|
|
698
|
-
*/
|
|
699
|
-
leChange;
|
|
700
|
-
/**
|
|
701
|
-
* Emitted when the dropdown opens.
|
|
702
|
-
*/
|
|
703
|
-
leOpen;
|
|
704
|
-
/**
|
|
705
|
-
* Emitted when the dropdown closes.
|
|
706
|
-
*/
|
|
707
|
-
leClose;
|
|
708
|
-
selectedOption;
|
|
709
|
-
searchQuery = '';
|
|
710
|
-
dropdownEl;
|
|
711
|
-
inputEl;
|
|
712
638
|
handleValueChange() {
|
|
713
639
|
this.updateSelectedOption();
|
|
714
640
|
}
|
|
@@ -737,49 +663,6 @@ const LeSelect = /*@__PURE__*/ proxyCustomElement(class LeSelect extends HTMLEle
|
|
|
737
663
|
this.selectedOption = undefined;
|
|
738
664
|
}
|
|
739
665
|
}
|
|
740
|
-
filterOption = (option, query) => {
|
|
741
|
-
if (!query)
|
|
742
|
-
return true;
|
|
743
|
-
const searchLower = query.toLowerCase();
|
|
744
|
-
return (option.label.toLowerCase().includes(searchLower) ||
|
|
745
|
-
(option.description?.toLowerCase().includes(searchLower) ?? false));
|
|
746
|
-
};
|
|
747
|
-
handleOptionSelect = (e) => {
|
|
748
|
-
this.value = e.detail.value;
|
|
749
|
-
this.selectedOption = e.detail.option;
|
|
750
|
-
this.leChange.emit(e.detail);
|
|
751
|
-
};
|
|
752
|
-
handleDropdownOpen = () => {
|
|
753
|
-
this.open = true;
|
|
754
|
-
this.leOpen.emit();
|
|
755
|
-
// Focus search input if searchable
|
|
756
|
-
if (this.searchable) {
|
|
757
|
-
setTimeout(() => {
|
|
758
|
-
this.inputEl?.focus();
|
|
759
|
-
}, 50);
|
|
760
|
-
}
|
|
761
|
-
};
|
|
762
|
-
handleDropdownClose = () => {
|
|
763
|
-
this.open = false;
|
|
764
|
-
this.leClose.emit();
|
|
765
|
-
};
|
|
766
|
-
handleTriggerClick = () => {
|
|
767
|
-
if (!this.disabled) {
|
|
768
|
-
this.dropdownEl?.toggle();
|
|
769
|
-
}
|
|
770
|
-
};
|
|
771
|
-
handleTriggerKeyDown = (e) => {
|
|
772
|
-
if (this.disabled)
|
|
773
|
-
return;
|
|
774
|
-
if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {
|
|
775
|
-
e.preventDefault();
|
|
776
|
-
this.dropdownEl?.show();
|
|
777
|
-
}
|
|
778
|
-
};
|
|
779
|
-
handleSearchInput = (e) => {
|
|
780
|
-
const target = e.target;
|
|
781
|
-
this.searchQuery = target.value;
|
|
782
|
-
};
|
|
783
666
|
/**
|
|
784
667
|
* Opens the dropdown.
|
|
785
668
|
*/
|
|
@@ -802,20 +685,21 @@ const LeSelect = /*@__PURE__*/ proxyCustomElement(class LeSelect extends HTMLEle
|
|
|
802
685
|
}
|
|
803
686
|
render() {
|
|
804
687
|
const hasValue = this.selectedOption !== undefined;
|
|
805
|
-
return (h("le-component", { key: '
|
|
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: {
|
|
806
689
|
'select-trigger': true,
|
|
807
690
|
'has-value': hasValue,
|
|
808
691
|
'is-open': this.open,
|
|
809
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
|
|
810
693
|
? this.renderIcon(this.selectedOption.iconStart)
|
|
811
|
-
: 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: '
|
|
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() ?? '' })));
|
|
812
695
|
}
|
|
696
|
+
get el() { return this; }
|
|
813
697
|
static get watchers() { return {
|
|
814
698
|
"value": ["handleValueChange"],
|
|
815
699
|
"options": ["handleOptionsChange"]
|
|
816
700
|
}; }
|
|
817
701
|
static get style() { return leSelectCss(); }
|
|
818
|
-
}, [
|
|
702
|
+
}, [257, "le-select", {
|
|
819
703
|
"options": [1],
|
|
820
704
|
"value": [1032],
|
|
821
705
|
"placeholder": [1],
|
|
@@ -909,79 +793,93 @@ const LePopup = /*@__PURE__*/ proxyCustomElement(class LePopup extends HTMLEleme
|
|
|
909
793
|
this.leCancel = createEvent(this, "leCancel", 7);
|
|
910
794
|
this.leOpen = createEvent(this, "leOpen", 7);
|
|
911
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
|
+
};
|
|
912
882
|
}
|
|
913
|
-
get el() { return this; }
|
|
914
|
-
/**
|
|
915
|
-
* The mode of the Le Kit (e.g., 'default' or 'admin')
|
|
916
|
-
*/
|
|
917
|
-
mode = 'default';
|
|
918
|
-
/**
|
|
919
|
-
* Whether the popup is currently visible
|
|
920
|
-
*/
|
|
921
|
-
open = false;
|
|
922
|
-
/**
|
|
923
|
-
* Type of popup: alert (OK only), confirm (OK/Cancel), prompt (input + OK/Cancel), custom
|
|
924
|
-
*/
|
|
925
|
-
type = 'alert';
|
|
926
|
-
/**
|
|
927
|
-
* Optional title for the popup header
|
|
928
|
-
*/
|
|
929
|
-
popupTitle;
|
|
930
|
-
/**
|
|
931
|
-
* Message text to display (for alert/confirm/prompt types)
|
|
932
|
-
*/
|
|
933
|
-
message;
|
|
934
|
-
/**
|
|
935
|
-
* Whether the popup is modal (blocks interaction with page behind)
|
|
936
|
-
*/
|
|
937
|
-
modal = true;
|
|
938
|
-
/**
|
|
939
|
-
* Position of the popup on screen
|
|
940
|
-
*/
|
|
941
|
-
position = 'center';
|
|
942
|
-
/**
|
|
943
|
-
* Text for the confirm/OK button
|
|
944
|
-
*/
|
|
945
|
-
confirmText = 'OK';
|
|
946
|
-
/**
|
|
947
|
-
* Text for the cancel button
|
|
948
|
-
*/
|
|
949
|
-
cancelText = 'Cancel';
|
|
950
|
-
/**
|
|
951
|
-
* Placeholder text for prompt input
|
|
952
|
-
*/
|
|
953
|
-
placeholder = '';
|
|
954
|
-
/**
|
|
955
|
-
* Default value for prompt input
|
|
956
|
-
*/
|
|
957
|
-
defaultValue = '';
|
|
958
|
-
/**
|
|
959
|
-
* Whether clicking the backdrop closes the popup (modal only)
|
|
960
|
-
*/
|
|
961
|
-
closeOnBackdrop = true;
|
|
962
|
-
/**
|
|
963
|
-
* Internal state for prompt input value
|
|
964
|
-
*/
|
|
965
|
-
inputValue = '';
|
|
966
|
-
/**
|
|
967
|
-
* Emitted when the popup is confirmed (OK clicked)
|
|
968
|
-
*/
|
|
969
|
-
leConfirm;
|
|
970
|
-
/**
|
|
971
|
-
* Emitted when the popup is cancelled (Cancel clicked or dismissed)
|
|
972
|
-
*/
|
|
973
|
-
leCancel;
|
|
974
|
-
/**
|
|
975
|
-
* Emitted when the popup opens
|
|
976
|
-
*/
|
|
977
|
-
leOpen;
|
|
978
|
-
/**
|
|
979
|
-
* Emitted when the popup closes
|
|
980
|
-
*/
|
|
981
|
-
leClose;
|
|
982
|
-
dialogEl;
|
|
983
|
-
inputEl;
|
|
984
|
-
resolvePromise;
|
|
985
883
|
componentWillLoad() {
|
|
986
884
|
this.inputValue = this.defaultValue;
|
|
987
885
|
}
|
|
@@ -993,10 +891,6 @@ const LePopup = /*@__PURE__*/ proxyCustomElement(class LePopup extends HTMLEleme
|
|
|
993
891
|
disconnectedCallback() {
|
|
994
892
|
this.dialogEl?.removeEventListener('cancel', this.handleDialogCancel);
|
|
995
893
|
}
|
|
996
|
-
handleDialogCancel = (e) => {
|
|
997
|
-
e.preventDefault(); // Prevent default close to handle it ourselves
|
|
998
|
-
this.handleCancel();
|
|
999
|
-
};
|
|
1000
894
|
/**
|
|
1001
895
|
* Opens the popup and returns a promise that resolves when closed
|
|
1002
896
|
*/
|
|
@@ -1040,44 +934,6 @@ const LePopup = /*@__PURE__*/ proxyCustomElement(class LePopup extends HTMLEleme
|
|
|
1040
934
|
this.resolvePromise = undefined;
|
|
1041
935
|
}
|
|
1042
936
|
}
|
|
1043
|
-
handleConfirm = () => {
|
|
1044
|
-
const result = {
|
|
1045
|
-
confirmed: true,
|
|
1046
|
-
value: this.type === 'prompt' ? this.inputValue : undefined,
|
|
1047
|
-
};
|
|
1048
|
-
this.leConfirm.emit(result);
|
|
1049
|
-
this.hide(true);
|
|
1050
|
-
};
|
|
1051
|
-
handleCancel = () => {
|
|
1052
|
-
const result = {
|
|
1053
|
-
confirmed: false,
|
|
1054
|
-
value: undefined,
|
|
1055
|
-
};
|
|
1056
|
-
this.leCancel.emit(result);
|
|
1057
|
-
this.hide(false);
|
|
1058
|
-
};
|
|
1059
|
-
handleBackdropClick = (e) => {
|
|
1060
|
-
// Check if click was on the dialog backdrop (outside the dialog box)
|
|
1061
|
-
if (this.closeOnBackdrop && e.target === this.dialogEl) {
|
|
1062
|
-
const rect = this.dialogEl.getBoundingClientRect();
|
|
1063
|
-
const clickedInDialog = e.clientX >= rect.left &&
|
|
1064
|
-
e.clientX <= rect.right &&
|
|
1065
|
-
e.clientY >= rect.top &&
|
|
1066
|
-
e.clientY <= rect.bottom;
|
|
1067
|
-
if (!clickedInDialog) {
|
|
1068
|
-
this.handleCancel();
|
|
1069
|
-
}
|
|
1070
|
-
}
|
|
1071
|
-
};
|
|
1072
|
-
handleInputChange = (e) => {
|
|
1073
|
-
this.inputValue = e.target.value;
|
|
1074
|
-
};
|
|
1075
|
-
handleKeyDown = (e) => {
|
|
1076
|
-
if (e.key === 'Enter' && this.type !== 'custom') {
|
|
1077
|
-
e.preventDefault();
|
|
1078
|
-
this.handleConfirm();
|
|
1079
|
-
}
|
|
1080
|
-
};
|
|
1081
937
|
hasSlot(name) {
|
|
1082
938
|
return !!this.el.querySelector(`[slot="${name}"]`);
|
|
1083
939
|
}
|
|
@@ -1105,10 +961,11 @@ const LePopup = /*@__PURE__*/ proxyCustomElement(class LePopup extends HTMLEleme
|
|
|
1105
961
|
}
|
|
1106
962
|
render() {
|
|
1107
963
|
const positionClass = `le-popup-position-${this.position}`;
|
|
1108
|
-
return (h("dialog", { key: '
|
|
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()))));
|
|
1109
965
|
}
|
|
966
|
+
get el() { return this; }
|
|
1110
967
|
static get style() { return lePopupCss(); }
|
|
1111
|
-
}, [
|
|
968
|
+
}, [257, "le-popup", {
|
|
1112
969
|
"mode": [1537],
|
|
1113
970
|
"open": [1540],
|
|
1114
971
|
"type": [1],
|
|
@@ -1188,45 +1045,19 @@ const LeComponent = /*@__PURE__*/ proxyCustomElement(class LeComponent extends H
|
|
|
1188
1045
|
this.__registerHost();
|
|
1189
1046
|
}
|
|
1190
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 = {};
|
|
1191
1060
|
}
|
|
1192
|
-
get el() { return this; }
|
|
1193
|
-
/**
|
|
1194
|
-
* The tag name of the component (e.g., 'le-card').
|
|
1195
|
-
* Used to look up property metadata and display the component name.
|
|
1196
|
-
*/
|
|
1197
|
-
component;
|
|
1198
|
-
/**
|
|
1199
|
-
* Optional display name for the component.
|
|
1200
|
-
* If not provided, the tag name will be formatted as the display name.
|
|
1201
|
-
*/
|
|
1202
|
-
displayName;
|
|
1203
|
-
/**
|
|
1204
|
-
* Classes to apply to the host element.
|
|
1205
|
-
* Allows parent components to pass their styling classes.
|
|
1206
|
-
*/
|
|
1207
|
-
hostClass;
|
|
1208
|
-
/**
|
|
1209
|
-
* Inline styles to apply to the host element.
|
|
1210
|
-
* Allows parent components to pass dynamic styles (e.g., flex properties).
|
|
1211
|
-
*/
|
|
1212
|
-
hostStyle;
|
|
1213
|
-
/**
|
|
1214
|
-
* Reference to the host element (found automatically from parent)
|
|
1215
|
-
*/
|
|
1216
|
-
hostElement;
|
|
1217
|
-
/**
|
|
1218
|
-
* Internal state to track admin mode
|
|
1219
|
-
*/
|
|
1220
|
-
adminMode = false;
|
|
1221
|
-
/**
|
|
1222
|
-
* Component metadata loaded from Custom Elements Manifest
|
|
1223
|
-
*/
|
|
1224
|
-
componentMeta = null;
|
|
1225
|
-
/**
|
|
1226
|
-
* Current property values of the host component
|
|
1227
|
-
*/
|
|
1228
|
-
propertyValues = {};
|
|
1229
|
-
disconnectModeObserver;
|
|
1230
1061
|
connectedCallback() {
|
|
1231
1062
|
// Find the host element - le-component is rendered inside the component's shadow DOM,
|
|
1232
1063
|
// so we need to find the shadow root's host element
|
|
@@ -1423,8 +1254,9 @@ const LeComponent = /*@__PURE__*/ proxyCustomElement(class LeComponent extends H
|
|
|
1423
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)))));
|
|
1424
1255
|
}
|
|
1425
1256
|
static get assetsDirs() { return ["assets"]; }
|
|
1257
|
+
get el() { return this; }
|
|
1426
1258
|
static get style() { return leComponentCss(); }
|
|
1427
|
-
}, [
|
|
1259
|
+
}, [257, "le-component", {
|
|
1428
1260
|
"component": [1],
|
|
1429
1261
|
"displayName": [1, "display-name"],
|
|
1430
1262
|
"hostClass": [1, "host-class"],
|
|
@@ -1502,53 +1334,37 @@ const LeCheckbox = /*@__PURE__*/ proxyCustomElement(class LeCheckbox extends HTM
|
|
|
1502
1334
|
}
|
|
1503
1335
|
this.__attachShadow();
|
|
1504
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
|
+
};
|
|
1505
1361
|
}
|
|
1506
|
-
get el() { return this; }
|
|
1507
|
-
/**
|
|
1508
|
-
* Whether the checkbox is checked
|
|
1509
|
-
*/
|
|
1510
|
-
checked = false;
|
|
1511
|
-
/**
|
|
1512
|
-
* Whether the checkbox is disabled
|
|
1513
|
-
*/
|
|
1514
|
-
disabled = false;
|
|
1515
|
-
/**
|
|
1516
|
-
* The name of the checkbox input
|
|
1517
|
-
*/
|
|
1518
|
-
name;
|
|
1519
|
-
/**
|
|
1520
|
-
* The value of the checkbox input
|
|
1521
|
-
*/
|
|
1522
|
-
value;
|
|
1523
|
-
/**
|
|
1524
|
-
* External ID for linking with external systems (e.g. database ID, PDF form field ID)
|
|
1525
|
-
*/
|
|
1526
|
-
externalId;
|
|
1527
|
-
/**
|
|
1528
|
-
* Emitted when the checked state changes
|
|
1529
|
-
*/
|
|
1530
|
-
leChange;
|
|
1531
|
-
handleChange = (event) => {
|
|
1532
|
-
// We stop the internal button click from bubbling up
|
|
1533
|
-
event.stopPropagation();
|
|
1534
|
-
if (this.disabled) {
|
|
1535
|
-
event.preventDefault();
|
|
1536
|
-
return;
|
|
1537
|
-
}
|
|
1538
|
-
const input = event.target;
|
|
1539
|
-
this.checked = input.checked;
|
|
1540
|
-
this.leChange.emit({
|
|
1541
|
-
checked: this.checked,
|
|
1542
|
-
value: this.value,
|
|
1543
|
-
name: this.name,
|
|
1544
|
-
externalId: this.externalId
|
|
1545
|
-
});
|
|
1546
|
-
};
|
|
1547
1362
|
render() {
|
|
1548
|
-
return (h("le-component", { key: '
|
|
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" }))))));
|
|
1549
1364
|
}
|
|
1365
|
+
get el() { return this; }
|
|
1550
1366
|
static get style() { return leCheckboxCss(); }
|
|
1551
|
-
}, [
|
|
1367
|
+
}, [257, "le-checkbox", {
|
|
1552
1368
|
"checked": [1540],
|
|
1553
1369
|
"disabled": [4],
|
|
1554
1370
|
"name": [1],
|
|
@@ -1622,85 +1438,54 @@ const LeButton = /*@__PURE__*/ proxyCustomElement(class LeButton extends HTMLEle
|
|
|
1622
1438
|
}
|
|
1623
1439
|
this.__attachShadow();
|
|
1624
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
|
+
};
|
|
1625
1488
|
}
|
|
1626
|
-
get el() { return this; }
|
|
1627
|
-
/**
|
|
1628
|
-
* Mode of the popover should be 'default' for internal use
|
|
1629
|
-
*/
|
|
1630
|
-
mode;
|
|
1631
|
-
/**
|
|
1632
|
-
* Button variant style
|
|
1633
|
-
* @allowedValues solid | outlined | clear
|
|
1634
|
-
*/
|
|
1635
|
-
variant = 'solid';
|
|
1636
|
-
/**
|
|
1637
|
-
* Button color theme (uses theme semantic colors)
|
|
1638
|
-
* @allowedValues primary | secondary | success | warning | danger | info
|
|
1639
|
-
*/
|
|
1640
|
-
color = 'primary';
|
|
1641
|
-
/**
|
|
1642
|
-
* Button size
|
|
1643
|
-
* @allowedValues small | medium | large
|
|
1644
|
-
*/
|
|
1645
|
-
size = 'medium';
|
|
1646
|
-
/**
|
|
1647
|
-
* Whether the button is in a selected/active state
|
|
1648
|
-
*/
|
|
1649
|
-
selected = false;
|
|
1650
|
-
/**
|
|
1651
|
-
* Whether the button takes full width of its container
|
|
1652
|
-
*/
|
|
1653
|
-
fullWidth = false;
|
|
1654
|
-
/**
|
|
1655
|
-
* Icon only button image or emoji
|
|
1656
|
-
* if this prop is set, the button will render only the icon slot
|
|
1657
|
-
*/
|
|
1658
|
-
iconOnly;
|
|
1659
|
-
/**
|
|
1660
|
-
* Start icon image or emoji
|
|
1661
|
-
*/
|
|
1662
|
-
iconStart;
|
|
1663
|
-
/**
|
|
1664
|
-
* End icon image or emoji
|
|
1665
|
-
*/
|
|
1666
|
-
iconEnd;
|
|
1667
|
-
/**
|
|
1668
|
-
* Whether the button is disabled
|
|
1669
|
-
*/
|
|
1670
|
-
disabled = false;
|
|
1671
|
-
/**
|
|
1672
|
-
* The button type attribute
|
|
1673
|
-
* @allowedValues button | submit | reset
|
|
1674
|
-
*/
|
|
1675
|
-
type = 'button';
|
|
1676
|
-
/**
|
|
1677
|
-
* Optional href to make the button act as a link
|
|
1678
|
-
*/
|
|
1679
|
-
href;
|
|
1680
|
-
/**
|
|
1681
|
-
* Link target when href is set
|
|
1682
|
-
*/
|
|
1683
|
-
target;
|
|
1684
|
-
/**
|
|
1685
|
-
* Alignment of the button label without the end icon
|
|
1686
|
-
* @allowedValues start | center | space-between | end
|
|
1687
|
-
*/
|
|
1688
|
-
align = 'center';
|
|
1689
|
-
/**
|
|
1690
|
-
* Emitted when the button is clicked.
|
|
1691
|
-
* This is a custom event that wraps the native click but ensures the target is the le-button.
|
|
1692
|
-
*/
|
|
1693
|
-
leClick;
|
|
1694
|
-
handleClick = (event) => {
|
|
1695
|
-
// We stop the internal button click from bubbling up
|
|
1696
|
-
event.stopPropagation();
|
|
1697
|
-
if (this.disabled) {
|
|
1698
|
-
event.preventDefault();
|
|
1699
|
-
return;
|
|
1700
|
-
}
|
|
1701
|
-
// And emit our own click event from the host element
|
|
1702
|
-
this.leClick.emit(event);
|
|
1703
|
-
};
|
|
1704
1489
|
render() {
|
|
1705
1490
|
const classes = classnames(`variant-${this.variant}`, `color-${this.color}`, `size-${this.size}`, {
|
|
1706
1491
|
'selected': this.selected,
|
|
@@ -1712,10 +1497,11 @@ const LeButton = /*@__PURE__*/ proxyCustomElement(class LeButton extends HTMLEle
|
|
|
1712
1497
|
const attrs = this.href
|
|
1713
1498
|
? { href: this.href, target: this.target, role: 'button' }
|
|
1714
1499
|
: { type: this.type, disabled: this.disabled };
|
|
1715
|
-
return (h(Host, { key: '
|
|
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))))))));
|
|
1716
1501
|
}
|
|
1502
|
+
get el() { return this; }
|
|
1717
1503
|
static get style() { return leButtonCss(); }
|
|
1718
|
-
}, [
|
|
1504
|
+
}, [257, "le-button", {
|
|
1719
1505
|
"mode": [1537],
|
|
1720
1506
|
"variant": [1],
|
|
1721
1507
|
"color": [1],
|