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
|
@@ -8,94 +8,45 @@ const leBoxCss = () => `:host{display:block;box-sizing:border-box}:host([hidden]
|
|
|
8
8
|
const LeBox = class {
|
|
9
9
|
constructor(hostRef) {
|
|
10
10
|
index.registerInstance(this, hostRef);
|
|
11
|
+
/**
|
|
12
|
+
* Flex grow factor - how much the item should grow relative to siblings
|
|
13
|
+
* @min 0
|
|
14
|
+
*/
|
|
15
|
+
this.grow = 0;
|
|
16
|
+
/**
|
|
17
|
+
* Flex shrink factor - how much the item should shrink relative to siblings
|
|
18
|
+
* @min 0
|
|
19
|
+
*/
|
|
20
|
+
this.shrink = 1;
|
|
21
|
+
/**
|
|
22
|
+
* Flex basis - initial size before growing/shrinking (e.g., '200px', '25%', 'auto')
|
|
23
|
+
*/
|
|
24
|
+
this.basis = 'auto';
|
|
25
|
+
/**
|
|
26
|
+
* Self-alignment override for this item on the cross axis
|
|
27
|
+
* @allowedValues auto | start | center | end | stretch | baseline
|
|
28
|
+
*/
|
|
29
|
+
this.alignSelf = 'auto';
|
|
30
|
+
/**
|
|
31
|
+
* Internal horizontal alignment of content
|
|
32
|
+
* @allowedValues start | center | end | stretch
|
|
33
|
+
*/
|
|
34
|
+
this.alignContent = 'stretch';
|
|
35
|
+
/**
|
|
36
|
+
* Internal vertical alignment of content
|
|
37
|
+
* @allowedValues start | center | end | stretch
|
|
38
|
+
*/
|
|
39
|
+
this.justifyContent = 'start';
|
|
40
|
+
/**
|
|
41
|
+
* Whether to display box content as flex (for internal alignment)
|
|
42
|
+
*/
|
|
43
|
+
this.displayFlex = false;
|
|
44
|
+
/**
|
|
45
|
+
* Direction of internal flex layout when displayFlex is true
|
|
46
|
+
* @allowedValues horizontal | vertical
|
|
47
|
+
*/
|
|
48
|
+
this.innerDirection = 'vertical';
|
|
11
49
|
}
|
|
12
|
-
get el() { return index.getElement(this); }
|
|
13
|
-
/**
|
|
14
|
-
* Flex grow factor - how much the item should grow relative to siblings
|
|
15
|
-
* @min 0
|
|
16
|
-
*/
|
|
17
|
-
grow = 0;
|
|
18
|
-
/**
|
|
19
|
-
* Flex shrink factor - how much the item should shrink relative to siblings
|
|
20
|
-
* @min 0
|
|
21
|
-
*/
|
|
22
|
-
shrink = 1;
|
|
23
|
-
/**
|
|
24
|
-
* Flex basis - initial size before growing/shrinking (e.g., '200px', '25%', 'auto')
|
|
25
|
-
*/
|
|
26
|
-
basis = 'auto';
|
|
27
|
-
/**
|
|
28
|
-
* Width of the box (CSS value like '100px', '50%', 'auto')
|
|
29
|
-
*/
|
|
30
|
-
width;
|
|
31
|
-
/**
|
|
32
|
-
* Height of the box (CSS value)
|
|
33
|
-
*/
|
|
34
|
-
height;
|
|
35
|
-
/**
|
|
36
|
-
* Minimum width constraint
|
|
37
|
-
*/
|
|
38
|
-
minWidth;
|
|
39
|
-
/**
|
|
40
|
-
* Maximum width constraint
|
|
41
|
-
*/
|
|
42
|
-
maxWidth;
|
|
43
|
-
/**
|
|
44
|
-
* Minimum height constraint
|
|
45
|
-
*/
|
|
46
|
-
minHeight;
|
|
47
|
-
/**
|
|
48
|
-
* Maximum height constraint
|
|
49
|
-
*/
|
|
50
|
-
maxHeight;
|
|
51
|
-
/**
|
|
52
|
-
* Background color or CSS value (e.g., '#f0f0f0', 'var(--le-color-primary-light)')
|
|
53
|
-
*/
|
|
54
|
-
background;
|
|
55
|
-
/**
|
|
56
|
-
* Border radius (e.g., '8px', 'var(--le-radius-md)')
|
|
57
|
-
*/
|
|
58
|
-
borderRadius;
|
|
59
|
-
/**
|
|
60
|
-
* Border style (e.g., '1px solid #ccc', '2px dashed var(--le-color-border)')
|
|
61
|
-
*/
|
|
62
|
-
border;
|
|
63
|
-
/**
|
|
64
|
-
* Self-alignment override for this item on the cross axis
|
|
65
|
-
* @allowedValues auto | start | center | end | stretch | baseline
|
|
66
|
-
*/
|
|
67
|
-
alignSelf = 'auto';
|
|
68
|
-
/**
|
|
69
|
-
* Internal horizontal alignment of content
|
|
70
|
-
* @allowedValues start | center | end | stretch
|
|
71
|
-
*/
|
|
72
|
-
alignContent = 'stretch';
|
|
73
|
-
/**
|
|
74
|
-
* Internal vertical alignment of content
|
|
75
|
-
* @allowedValues start | center | end | stretch
|
|
76
|
-
*/
|
|
77
|
-
justifyContent = 'start';
|
|
78
|
-
/**
|
|
79
|
-
* Padding inside the box (CSS value like '8px', '1rem')
|
|
80
|
-
*/
|
|
81
|
-
padding;
|
|
82
|
-
/**
|
|
83
|
-
* Order in the flex container (lower values come first)
|
|
84
|
-
*/
|
|
85
|
-
order;
|
|
86
|
-
/**
|
|
87
|
-
* Whether to display box content as flex (for internal alignment)
|
|
88
|
-
*/
|
|
89
|
-
displayFlex = false;
|
|
90
|
-
/**
|
|
91
|
-
* Direction of internal flex layout when displayFlex is true
|
|
92
|
-
* @allowedValues horizontal | vertical
|
|
93
|
-
*/
|
|
94
|
-
innerDirection = 'vertical';
|
|
95
|
-
/**
|
|
96
|
-
* Gap between internal flex items when displayFlex is true
|
|
97
|
-
*/
|
|
98
|
-
innerGap;
|
|
99
50
|
getAlignSelf() {
|
|
100
51
|
const alignMap = {
|
|
101
52
|
auto: 'auto',
|
|
@@ -175,8 +126,9 @@ const LeBox = class {
|
|
|
175
126
|
'display-flex': this.displayFlex,
|
|
176
127
|
[`inner-${this.innerDirection}`]: this.displayFlex,
|
|
177
128
|
});
|
|
178
|
-
return (index.h(index.Host, { key: '
|
|
129
|
+
return (index.h(index.Host, { key: '7ff795b1c7e8947ec3c807d387d1bfd6eaec0e78', style: hostStyle, class: hostClass }, index.h("le-component", { key: 'f9d95344461ac913dcf2cbd653541f0f2ce961ea', component: "le-box" }, index.h("div", { key: '9c772c7fcca7f1401601eb8f730acd2edced6de2', class: "box", part: "box" }, index.h("div", { key: '62d77dadf5966a6bd73ef839281c20574460716d', class: "content", part: "content", style: contentStyle }, index.h("le-slot", { key: 'f4a02189f884db240cfc7070a600983e905aedfb', name: "", description: "Content inside this flex item", type: "slot", "allowed-components": "le-text,le-card,le-button,le-stack,le-box" }, index.h("slot", { key: '57857570d54c3c1144dff8989733e5ba07c5407e' })))))));
|
|
179
130
|
}
|
|
131
|
+
get el() { return index.getElement(this); }
|
|
180
132
|
};
|
|
181
133
|
LeBox.style = leBoxCss();
|
|
182
134
|
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-BzadfLTc.js');
|
|
4
|
+
var utils = require('./utils-Dxx9WhWK.js');
|
|
5
|
+
|
|
6
|
+
const leBreadcrumbsCss = () => `:host{display:block}.breadcrumbs{display:flex;align-items:center;gap:var(--le-space-xs);min-width:0}.list{display:flex;align-items:center;gap:var(--le-space-xs);min-width:0;flex:1}.list.wrap{flex-wrap:wrap}.list.scroll{overflow-x:auto;white-space:nowrap;scrollbar-width:none}.list.scroll::-webkit-scrollbar{display:none}.item{--le-button-padding-x:var(--le-spacing-2);--le-button-padding-y:var(--le-spacing-1)}.item.current{color:var(--le-color-text);font-weight:var(--le-font-weight-medium)}.item-popover{--le-popover-padding:var(--le-space-xs)}.separator{display:inline-flex;align-items:center;color:var(--le-color-text-tertiary, var(--le-color-text-secondary))}.separator ::slotted(*){display:inline-flex;align-items:center}.more-trigger{display:inline-flex;align-items:center;appearance:none;border:0;background:none;padding:0;color:inherit;cursor:pointer}.hidden-slot{display:none}`;
|
|
7
|
+
|
|
8
|
+
const LeBreadcrumbs = class {
|
|
9
|
+
constructor(hostRef) {
|
|
10
|
+
index.registerInstance(this, hostRef);
|
|
11
|
+
this.leBreadcrumbSelect = index.createEvent(this, "leBreadcrumbSelect");
|
|
12
|
+
/**
|
|
13
|
+
* Breadcrumb items (supports JSON string).
|
|
14
|
+
*/
|
|
15
|
+
this.items = [];
|
|
16
|
+
/**
|
|
17
|
+
* Accessible label for the breadcrumbs navigation.
|
|
18
|
+
*/
|
|
19
|
+
this.label = 'Breadcrumbs';
|
|
20
|
+
/**
|
|
21
|
+
* Separator icon name (used if no separator slot is provided).
|
|
22
|
+
*/
|
|
23
|
+
this.separatorIcon = 'chevron-right';
|
|
24
|
+
/**
|
|
25
|
+
* Overflow behavior: collapse (default), wrap, or scroll.
|
|
26
|
+
*/
|
|
27
|
+
this.overflowMode = 'collapse';
|
|
28
|
+
/**
|
|
29
|
+
* Minimum visible items before collapsing.
|
|
30
|
+
*/
|
|
31
|
+
this.minVisibleItems = 2;
|
|
32
|
+
this.hiddenIndices = [];
|
|
33
|
+
this.separatorTemplate = '';
|
|
34
|
+
this.instanceId = utils.generateId('le-breadcrumbs');
|
|
35
|
+
this.recomputeQueued = false;
|
|
36
|
+
this.handleSeparatorSlotChange = (ev) => {
|
|
37
|
+
const slot = ev.target;
|
|
38
|
+
const nodes = slot.assignedNodes({ flatten: true });
|
|
39
|
+
const html = nodes
|
|
40
|
+
.map(node => {
|
|
41
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
42
|
+
return node.textContent || '';
|
|
43
|
+
}
|
|
44
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
45
|
+
return node.outerHTML || '';
|
|
46
|
+
}
|
|
47
|
+
return '';
|
|
48
|
+
})
|
|
49
|
+
.join('')
|
|
50
|
+
.trim();
|
|
51
|
+
this.separatorTemplate = html;
|
|
52
|
+
this.scheduleOverflowRecompute();
|
|
53
|
+
};
|
|
54
|
+
this.handleItemClick = (item, id, ev) => {
|
|
55
|
+
const href = item.href || item.url;
|
|
56
|
+
this.leBreadcrumbSelect.emit({ item, id, href, originalEvent: ev });
|
|
57
|
+
};
|
|
58
|
+
this.handleKeyDown = (ev) => {
|
|
59
|
+
if (ev.key !== 'ArrowRight' && ev.key !== 'ArrowLeft')
|
|
60
|
+
return;
|
|
61
|
+
const focusables = Array.from(this.el.shadowRoot?.querySelectorAll('a,button,[tabindex="0"]') || []);
|
|
62
|
+
if (focusables.length === 0)
|
|
63
|
+
return;
|
|
64
|
+
const current = document.activeElement;
|
|
65
|
+
const idx = focusables.findIndex(el => el === current);
|
|
66
|
+
if (idx === -1)
|
|
67
|
+
return;
|
|
68
|
+
ev.preventDefault();
|
|
69
|
+
const nextIdx = ev.key === 'ArrowRight' ? idx + 1 : idx - 1;
|
|
70
|
+
const target = focusables[(nextIdx + focusables.length) % focusables.length];
|
|
71
|
+
target?.focus();
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
componentDidLoad() {
|
|
75
|
+
this.setupResizeObserver();
|
|
76
|
+
this.scheduleOverflowRecompute();
|
|
77
|
+
}
|
|
78
|
+
disconnectedCallback() {
|
|
79
|
+
this.resizeObserver?.disconnect();
|
|
80
|
+
}
|
|
81
|
+
handleInputsChange() {
|
|
82
|
+
this.scheduleOverflowRecompute();
|
|
83
|
+
}
|
|
84
|
+
setupResizeObserver() {
|
|
85
|
+
if (typeof window === 'undefined' || !('ResizeObserver' in window))
|
|
86
|
+
return;
|
|
87
|
+
this.resizeObserver = new ResizeObserver(() => this.scheduleOverflowRecompute());
|
|
88
|
+
this.resizeObserver.observe(this.el);
|
|
89
|
+
}
|
|
90
|
+
get parsedItems() {
|
|
91
|
+
if (typeof this.items === 'string') {
|
|
92
|
+
try {
|
|
93
|
+
return JSON.parse(this.items);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return this.items;
|
|
100
|
+
}
|
|
101
|
+
getItemId(item, index) {
|
|
102
|
+
return item.id ?? `${this.instanceId}:${index}`;
|
|
103
|
+
}
|
|
104
|
+
scheduleOverflowRecompute() {
|
|
105
|
+
if (this.overflowMode !== 'collapse') {
|
|
106
|
+
if (this.hiddenIndices.length) {
|
|
107
|
+
this.hiddenIndices = [];
|
|
108
|
+
}
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (this.recomputeQueued)
|
|
112
|
+
return;
|
|
113
|
+
this.recomputeQueued = true;
|
|
114
|
+
requestAnimationFrame(() => this.recomputeOverflow());
|
|
115
|
+
}
|
|
116
|
+
nextFrame() {
|
|
117
|
+
return new Promise(resolve => requestAnimationFrame(() => resolve()));
|
|
118
|
+
}
|
|
119
|
+
async recomputeOverflow() {
|
|
120
|
+
this.recomputeQueued = false;
|
|
121
|
+
if (this.overflowMode !== 'collapse') {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const items = this.parsedItems;
|
|
125
|
+
if (!this.listEl || items.length <= Math.max(2, this.minVisibleItems)) {
|
|
126
|
+
if (this.hiddenIndices.length) {
|
|
127
|
+
this.hiddenIndices = [];
|
|
128
|
+
}
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
// Reset hidden items first
|
|
132
|
+
if (this.hiddenIndices.length) {
|
|
133
|
+
this.hiddenIndices = [];
|
|
134
|
+
await this.nextFrame();
|
|
135
|
+
}
|
|
136
|
+
const containerWidth = this.listEl.clientWidth;
|
|
137
|
+
if (!containerWidth)
|
|
138
|
+
return;
|
|
139
|
+
const candidates = items.map((_, idx) => idx).slice(1, -1);
|
|
140
|
+
const hidden = [];
|
|
141
|
+
let attempts = 0;
|
|
142
|
+
while (this.listEl.scrollWidth > containerWidth &&
|
|
143
|
+
attempts < candidates.length &&
|
|
144
|
+
items.length - hidden.length > this.minVisibleItems) {
|
|
145
|
+
const next = candidates.shift();
|
|
146
|
+
if (next === undefined)
|
|
147
|
+
break;
|
|
148
|
+
hidden.push(next);
|
|
149
|
+
this.hiddenIndices = [...hidden];
|
|
150
|
+
await this.nextFrame();
|
|
151
|
+
attempts += 1;
|
|
152
|
+
}
|
|
153
|
+
// If still overflowing, hide first then last as a last resort
|
|
154
|
+
if (this.listEl.scrollWidth > containerWidth &&
|
|
155
|
+
items.length - hidden.length > this.minVisibleItems) {
|
|
156
|
+
if (!hidden.includes(0)) {
|
|
157
|
+
hidden.unshift(0);
|
|
158
|
+
this.hiddenIndices = [...hidden];
|
|
159
|
+
await this.nextFrame();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (this.listEl.scrollWidth > containerWidth &&
|
|
163
|
+
items.length - hidden.length > this.minVisibleItems) {
|
|
164
|
+
const lastIndex = items.length - 1;
|
|
165
|
+
if (!hidden.includes(lastIndex)) {
|
|
166
|
+
hidden.push(lastIndex);
|
|
167
|
+
this.hiddenIndices = [...hidden];
|
|
168
|
+
await this.nextFrame();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
renderSeparator() {
|
|
173
|
+
console.log('separatorTemplate', this.separatorTemplate || 'no-template', this.separatorIcon);
|
|
174
|
+
if (this.separatorTemplate) {
|
|
175
|
+
return index.h("span", { class: "separator", "aria-hidden": "true", innerHTML: this.separatorTemplate });
|
|
176
|
+
}
|
|
177
|
+
return (index.h("span", { class: "separator", "aria-hidden": "true" }, index.h("le-icon", { name: this.separatorIcon })));
|
|
178
|
+
}
|
|
179
|
+
renderItem(item, index$1) {
|
|
180
|
+
const id = this.getItemId(item, index$1);
|
|
181
|
+
const hasChildren = Array.isArray(item.children) && item.children.length > 0;
|
|
182
|
+
const isCurrent = !!item.selected;
|
|
183
|
+
const itemClass = utils.classnames('item', { current: isCurrent });
|
|
184
|
+
const icontent = item.icon || item.iconStart;
|
|
185
|
+
const content = (index.h("le-button", { slot: hasChildren ? 'trigger' : undefined, variant: "clear", color: "secondary", class: itemClass, onClick: ev => this.handleItemClick(item, id, ev), "aria-haspopup": "menu", "aria-current": isCurrent ? 'page' : null, part: item.part, iconStart: icontent }, index.h("span", { class: "item-label" }, item.label)));
|
|
186
|
+
if (hasChildren) {
|
|
187
|
+
return (index.h("le-popover", { position: "bottom", align: "start", "show-close": "false", class: "item-popover" }, content, index.h("le-navigation", { orientation: "vertical", items: item.children, style: { minWidth: '200px' } })));
|
|
188
|
+
}
|
|
189
|
+
return content;
|
|
190
|
+
}
|
|
191
|
+
renderMore(hiddenItems) {
|
|
192
|
+
if (hiddenItems.length === 0)
|
|
193
|
+
return null;
|
|
194
|
+
return (index.h("le-popover", { position: "bottom", align: "start", "show-close": "false" }, index.h("button", { slot: "trigger", class: "more-trigger", type: "button", "aria-haspopup": "menu" }, index.h("slot", { name: "more-trigger" }, index.h("le-icon", { name: "ellipsis-horizontal" }))), index.h("le-navigation", { orientation: "vertical", items: hiddenItems, style: { minWidth: '200px' } })));
|
|
195
|
+
}
|
|
196
|
+
render() {
|
|
197
|
+
const items = this.parsedItems;
|
|
198
|
+
const indexedItems = items.map((item, index) => ({ item, index }));
|
|
199
|
+
const hiddenSet = new Set(this.hiddenIndices);
|
|
200
|
+
const hiddenItems = indexedItems.filter(({ index }) => hiddenSet.has(index));
|
|
201
|
+
const visibleItems = indexedItems.filter(({ index }) => !hiddenSet.has(index));
|
|
202
|
+
const shouldCollapse = this.overflowMode === 'collapse' && hiddenItems.length > 0;
|
|
203
|
+
const firstVisible = visibleItems[0];
|
|
204
|
+
const remainingVisible = visibleItems.slice(1);
|
|
205
|
+
const firstHidden = hiddenSet.has(0);
|
|
206
|
+
return (index.h(index.Host, { key: '6da8c091e08c97f903d6e840d02bca6a321ed0ba', onKeyDown: this.handleKeyDown }, index.h("nav", { key: 'ddc78c68de5a49d59a3d7cfa446ce7a4dea02366', class: "breadcrumbs", "aria-label": this.label }, index.h("slot", { key: 'c76c6164b589bdad8715a8adbe94d39dab261e71', name: "start" }), index.h("div", { key: '80fecb4159d873e7d5994299229f80610f0ca1ed', class: utils.classnames('list', {
|
|
207
|
+
wrap: this.overflowMode === 'wrap',
|
|
208
|
+
scroll: this.overflowMode === 'scroll',
|
|
209
|
+
}), ref: el => (this.listEl = el) }, !firstHidden && firstVisible
|
|
210
|
+
? this.renderItem(firstVisible.item, firstVisible.index)
|
|
211
|
+
: null, shouldCollapse && !firstHidden && firstVisible ? this.renderSeparator() : null, shouldCollapse ? this.renderMore(hiddenItems.map(h => h.item)) : null, (firstHidden ? visibleItems : remainingVisible).map(({ item, index: index$1 }, i) => (index.h(index.Fragment, null, this.renderSeparator(), index.h("span", { class: "crumb", key: `${item.label}-${index$1}-${i}` }, this.renderItem(item, index$1)))))), index.h("slot", { key: 'cd9f1f1200554f43cd144f07870aa3063de9a843', name: "end" })), index.h("span", { key: '3bd953f8c8a4bae9d2e1b3bbe61977d92b1f0f50', class: "hidden-slot", "aria-hidden": "true" }, index.h("slot", { key: '5deeddaba836a0ac6c698d25ed799670231c3acd', name: "separator", onSlotchange: this.handleSeparatorSlotChange }))));
|
|
212
|
+
}
|
|
213
|
+
get el() { return index.getElement(this); }
|
|
214
|
+
static get watchers() { return {
|
|
215
|
+
"items": ["handleInputsChange"],
|
|
216
|
+
"overflowMode": ["handleInputsChange"],
|
|
217
|
+
"minVisibleItems": ["handleInputsChange"]
|
|
218
|
+
}; }
|
|
219
|
+
};
|
|
220
|
+
LeBreadcrumbs.style = leBreadcrumbsCss();
|
|
221
|
+
|
|
222
|
+
exports.le_breadcrumbs = LeBreadcrumbs;
|
|
223
|
+
//# sourceMappingURL=le-breadcrumbs.entry.cjs.js.map
|
|
@@ -8,20 +8,20 @@ const leCardCss = () => `:host{display:block;--le-card-bg:var(--le-color-surface
|
|
|
8
8
|
const LeCard = class {
|
|
9
9
|
constructor(hostRef) {
|
|
10
10
|
index.registerInstance(this, hostRef);
|
|
11
|
+
/**
|
|
12
|
+
* Card variant style
|
|
13
|
+
* @allowedValues default | outlined | elevated
|
|
14
|
+
*/
|
|
15
|
+
this.variant = 'default';
|
|
16
|
+
/**
|
|
17
|
+
* Whether the card is interactive (clickable)
|
|
18
|
+
*/
|
|
19
|
+
this.interactive = false;
|
|
11
20
|
}
|
|
12
|
-
get el() { return index.getElement(this); }
|
|
13
|
-
/**
|
|
14
|
-
* Card variant style
|
|
15
|
-
* @allowedValues default | outlined | elevated
|
|
16
|
-
*/
|
|
17
|
-
variant = 'default';
|
|
18
|
-
/**
|
|
19
|
-
* Whether the card is interactive (clickable)
|
|
20
|
-
*/
|
|
21
|
-
interactive = false;
|
|
22
21
|
render() {
|
|
23
|
-
return (index.h("le-component", { key: '
|
|
22
|
+
return (index.h("le-component", { key: '50b722661132acca9396539021caebd0beb99c13', component: "le-card", hostClass: utils.classnames(`variant-${this.variant}`, { 'interactive': this.interactive }) }, index.h("div", { key: '4fa7de6abb9460281b1a98a158b76dcd0ee9fe8d', class: "card", part: "card" }, index.h("div", { key: '60b67d4d7416628fbd07aae2623aebeb10e78366', class: "card-header", part: "header" }, index.h("le-slot", { key: '1ef59c336f43b1292eae242b00e92d1b90ec1fd1', name: "header", label: "Header", description: "Card title", type: "text", tag: "h3" }, index.h("slot", { key: 'cdbf9d8ee5b832a7c7314443e974b6f3fe0d6ffd', name: "header" }))), index.h("div", { key: '11290af7a2fc3f927e825e06f5ae51797013592e', class: "card-content", part: "content" }, index.h("le-slot", { key: '29d5890f7b841138910c84bf9017462edb90a851', name: "", label: "Content", description: "Card content", type: "textarea", tag: "p", required: true }, index.h("slot", { key: '6e30f0ca8881825cf474e9d28ca7f16cc9e2feb6' }))), index.h("div", { key: '6e4824adaafef5e440e7d9e26d29048841e3cdba', class: "card-footer", part: "footer" }, index.h("le-slot", { key: 'aa734bdb5f1166bae0868949225bfc50cdb6e898', name: "footer", label: "Footer", description: "Card footer with actions", "allowed-components": "le-button,le-link" }, index.h("slot", { key: '6d3bf34e9585b38ce19aaeacf8259543560856a4', name: "footer" }))))));
|
|
24
23
|
}
|
|
24
|
+
get el() { return index.getElement(this); }
|
|
25
25
|
};
|
|
26
26
|
LeCard.style = leCardCss();
|
|
27
27
|
|
|
@@ -12,70 +12,80 @@ const LeCodeInput = class {
|
|
|
12
12
|
this.leInput = index.createEvent(this, "leInput");
|
|
13
13
|
this.leFocus = index.createEvent(this, "leFocus");
|
|
14
14
|
this.leBlur = index.createEvent(this, "leBlur");
|
|
15
|
+
/**
|
|
16
|
+
* The value of the input
|
|
17
|
+
*/
|
|
18
|
+
this.value = '';
|
|
19
|
+
/**
|
|
20
|
+
* Length of the code (number of characters)
|
|
21
|
+
*/
|
|
22
|
+
this.length = 6;
|
|
23
|
+
/**
|
|
24
|
+
* The type of code (numeric or alphanumeric)
|
|
25
|
+
* This affects the keyboard layout on mobile devices.
|
|
26
|
+
*/
|
|
27
|
+
this.type = 'text';
|
|
28
|
+
/**
|
|
29
|
+
* Whether the input is disabled
|
|
30
|
+
*/
|
|
31
|
+
this.disabled = false;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the input is read-only
|
|
34
|
+
*/
|
|
35
|
+
this.readonly = false;
|
|
36
|
+
/**
|
|
37
|
+
* Internal validation state (can be set externally manually or via simple check)
|
|
38
|
+
*/
|
|
39
|
+
this.error = false;
|
|
40
|
+
this.isFocused = false;
|
|
41
|
+
this.selectionStart = 0;
|
|
42
|
+
this.selectionEnd = 0;
|
|
43
|
+
this.handleInput = (ev) => {
|
|
44
|
+
const input = ev.target;
|
|
45
|
+
let val = input.value;
|
|
46
|
+
// Enforce length limit
|
|
47
|
+
if (val.length > this.length) {
|
|
48
|
+
val = val.slice(0, this.length);
|
|
49
|
+
// We need to force update the input value if it exceeded length
|
|
50
|
+
// because Stencil prop update might not happen if value is same as prop but input is different
|
|
51
|
+
input.value = val;
|
|
52
|
+
}
|
|
53
|
+
this.value = val;
|
|
54
|
+
this.updateSelection(input);
|
|
55
|
+
this.leInput.emit({
|
|
56
|
+
value: this.value,
|
|
57
|
+
name: this.name,
|
|
58
|
+
externalId: this.externalId,
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
this.handleChange = () => {
|
|
62
|
+
this.leChange.emit({
|
|
63
|
+
value: this.value,
|
|
64
|
+
name: this.name,
|
|
65
|
+
externalId: this.externalId,
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
this.handleFocus = (ev) => {
|
|
69
|
+
this.isFocused = true;
|
|
70
|
+
const input = ev.target;
|
|
71
|
+
// Move cursor to the end on focus so typing appends to current value
|
|
72
|
+
window.requestAnimationFrame(() => {
|
|
73
|
+
const len = input.value.length;
|
|
74
|
+
input.setSelectionRange(len, len);
|
|
75
|
+
this.updateSelection(input);
|
|
76
|
+
});
|
|
77
|
+
this.leFocus.emit();
|
|
78
|
+
};
|
|
79
|
+
this.handleBlur = () => {
|
|
80
|
+
this.isFocused = false;
|
|
81
|
+
this.leBlur.emit();
|
|
82
|
+
// Trigger change on blur
|
|
83
|
+
this.handleChange();
|
|
84
|
+
};
|
|
85
|
+
this.handleSelect = (ev) => {
|
|
86
|
+
this.updateSelection(ev.target);
|
|
87
|
+
};
|
|
15
88
|
}
|
|
16
|
-
get el() { return index.getElement(this); }
|
|
17
|
-
/**
|
|
18
|
-
* The value of the input
|
|
19
|
-
*/
|
|
20
|
-
value = '';
|
|
21
|
-
/**
|
|
22
|
-
* The name of the input
|
|
23
|
-
*/
|
|
24
|
-
name;
|
|
25
|
-
/**
|
|
26
|
-
* Label for the input
|
|
27
|
-
*/
|
|
28
|
-
label;
|
|
29
|
-
/**
|
|
30
|
-
* Length of the code (number of characters)
|
|
31
|
-
*/
|
|
32
|
-
length = 6;
|
|
33
|
-
/**
|
|
34
|
-
* Description text displayed below the input
|
|
35
|
-
* in case there is a more complex markup,
|
|
36
|
-
* it can be provided via slot as well
|
|
37
|
-
*/
|
|
38
|
-
description;
|
|
39
|
-
/**
|
|
40
|
-
* The type of code (numeric or alphanumeric)
|
|
41
|
-
* This affects the keyboard layout on mobile devices.
|
|
42
|
-
*/
|
|
43
|
-
type = 'text';
|
|
44
|
-
/**
|
|
45
|
-
* Whether the input is disabled
|
|
46
|
-
*/
|
|
47
|
-
disabled = false;
|
|
48
|
-
/**
|
|
49
|
-
* Whether the input is read-only
|
|
50
|
-
*/
|
|
51
|
-
readonly = false;
|
|
52
|
-
/**
|
|
53
|
-
* External ID for linking with external systems
|
|
54
|
-
*/
|
|
55
|
-
externalId;
|
|
56
|
-
/**
|
|
57
|
-
* Internal validation state (can be set externally manually or via simple check)
|
|
58
|
-
*/
|
|
59
|
-
error = false;
|
|
60
|
-
/**
|
|
61
|
-
* Emitted when the value changes (on blur or Enter)
|
|
62
|
-
*/
|
|
63
|
-
leChange;
|
|
64
|
-
/**
|
|
65
|
-
* Emitted when the input value changes (on keystroke)
|
|
66
|
-
*/
|
|
67
|
-
leInput;
|
|
68
|
-
/**
|
|
69
|
-
* Emitted when the input is focused
|
|
70
|
-
*/
|
|
71
|
-
leFocus;
|
|
72
|
-
/**
|
|
73
|
-
* Emitted when the input is blurred
|
|
74
|
-
*/
|
|
75
|
-
leBlur;
|
|
76
|
-
isFocused = false;
|
|
77
|
-
selectionStart = 0;
|
|
78
|
-
selectionEnd = 0;
|
|
79
89
|
valueChanged(newValue) {
|
|
80
90
|
if (newValue && newValue.length > this.length) {
|
|
81
91
|
this.value = newValue.slice(0, this.length);
|
|
@@ -86,51 +96,6 @@ const LeCodeInput = class {
|
|
|
86
96
|
this.value = this.value.slice(0, this.length);
|
|
87
97
|
}
|
|
88
98
|
}
|
|
89
|
-
handleInput = (ev) => {
|
|
90
|
-
const input = ev.target;
|
|
91
|
-
let val = input.value;
|
|
92
|
-
// Enforce length limit
|
|
93
|
-
if (val.length > this.length) {
|
|
94
|
-
val = val.slice(0, this.length);
|
|
95
|
-
// We need to force update the input value if it exceeded length
|
|
96
|
-
// because Stencil prop update might not happen if value is same as prop but input is different
|
|
97
|
-
input.value = val;
|
|
98
|
-
}
|
|
99
|
-
this.value = val;
|
|
100
|
-
this.updateSelection(input);
|
|
101
|
-
this.leInput.emit({
|
|
102
|
-
value: this.value,
|
|
103
|
-
name: this.name,
|
|
104
|
-
externalId: this.externalId,
|
|
105
|
-
});
|
|
106
|
-
};
|
|
107
|
-
handleChange = () => {
|
|
108
|
-
this.leChange.emit({
|
|
109
|
-
value: this.value,
|
|
110
|
-
name: this.name,
|
|
111
|
-
externalId: this.externalId,
|
|
112
|
-
});
|
|
113
|
-
};
|
|
114
|
-
handleFocus = (ev) => {
|
|
115
|
-
this.isFocused = true;
|
|
116
|
-
const input = ev.target;
|
|
117
|
-
// Move cursor to the end on focus so typing appends to current value
|
|
118
|
-
window.requestAnimationFrame(() => {
|
|
119
|
-
const len = input.value.length;
|
|
120
|
-
input.setSelectionRange(len, len);
|
|
121
|
-
this.updateSelection(input);
|
|
122
|
-
});
|
|
123
|
-
this.leFocus.emit();
|
|
124
|
-
};
|
|
125
|
-
handleBlur = () => {
|
|
126
|
-
this.isFocused = false;
|
|
127
|
-
this.leBlur.emit();
|
|
128
|
-
// Trigger change on blur
|
|
129
|
-
this.handleChange();
|
|
130
|
-
};
|
|
131
|
-
handleSelect = (ev) => {
|
|
132
|
-
this.updateSelection(ev.target);
|
|
133
|
-
};
|
|
134
99
|
updateSelection(input) {
|
|
135
100
|
this.selectionStart = input.selectionStart || 0;
|
|
136
101
|
this.selectionEnd = input.selectionEnd || 0;
|
|
@@ -167,10 +132,11 @@ const LeCodeInput = class {
|
|
|
167
132
|
return boxes;
|
|
168
133
|
}
|
|
169
134
|
render() {
|
|
170
|
-
return (index.h("le-component", { key: '
|
|
135
|
+
return (index.h("le-component", { key: 'c9a4a92342645c54aee90091cd860fc439de6334', component: "le-code-input", hostClass: utils.classnames({ 'disabled': this.disabled, 'has-error': this.error }) }, index.h("div", { key: '50480c7c827ba801421c260c4e6fef88f22dcbd0', class: "le-code-input-wrapper" }, this.label && (index.h("label", { key: '316653c42c51ea0a443d8401c5adaf3e4821d7c8', class: "le-input-label", htmlFor: this.name }, this.label)), index.h("div", { key: '803789d07d538e1576dbb0ff7536110ab620632b', class: utils.classnames('input-group', { 'has-error': this.error }) }, index.h("input", { key: '7bbf221d32aa9363066d799b5b2a4aac2e9ae77f', class: "ghost-input", id: this.name, name: this.name, type: "text", inputMode: this.type === 'number' ? 'numeric' : 'text', pattern: this.type === 'number' ? '[0-9]*' : undefined, autocomplete: "one-time-code", value: this.value, maxLength: this.length, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput, onFocus: this.handleFocus, onBlur: this.handleBlur, onSelect: this.handleSelect,
|
|
171
136
|
// Prevent browser autofill background from messing up visual
|
|
172
|
-
spellcheck: false, autoCapitalize: "none", autoCorrect: "off" }), index.h("div", { key: '
|
|
137
|
+
spellcheck: false, autoCapitalize: "none", autoCorrect: "off" }), index.h("div", { key: '0ff57ab380039c4bbbbf0e347331eb6885f8ce63', class: "visual-container" }, this.renderBoxes())), !this.error && (index.h("div", { key: '7da46dfc052457588969a1c9631eb310d80030c4', class: "le-input-description" }, index.h("le-slot", { key: '7bcfa46fd981286736ea7ec490d65c962ef998d5', name: "description", type: "text", tag: "p", label: "Description" }, index.h("slot", { key: 'ee810bf920acc45c48b3cbc4ebf9598ac5937923', name: "description" }, this.description)))))));
|
|
173
138
|
}
|
|
139
|
+
get el() { return index.getElement(this); }
|
|
174
140
|
static get watchers() { return {
|
|
175
141
|
"value": ["valueChanged"]
|
|
176
142
|
}; }
|