@limetech/lime-elements 37.0.0 → 37.1.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{checkbox.template-234f4813.js → checkbox.template-5603ad4a.js} +2 -2
- package/dist/cjs/{checkbox.template-234f4813.js.map → checkbox.template-5603ad4a.js.map} +1 -1
- package/dist/cjs/{index-aafa56ee.js → index-38eb64b5.js} +14 -1
- package/dist/cjs/index-38eb64b5.js.map +1 -0
- package/dist/cjs/lime-elements.cjs.js +1 -1
- package/dist/cjs/limel-action-bar-item_2.cjs.entry.js +2 -2
- package/dist/cjs/limel-action-bar.cjs.entry.js +1 -1
- package/dist/cjs/limel-badge.cjs.entry.js +1 -1
- package/dist/cjs/limel-banner.cjs.entry.js +1 -1
- package/dist/cjs/limel-button-group.cjs.entry.js +2 -2
- package/dist/cjs/limel-button.cjs.entry.js +58 -1
- package/dist/cjs/limel-button.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-callout.cjs.entry.js +1 -1
- package/dist/cjs/limel-checkbox.cjs.entry.js +3 -3
- package/dist/cjs/limel-chip-set.cjs.entry.js +1 -1
- package/dist/cjs/limel-circular-progress_2.cjs.entry.js +1 -1
- package/dist/cjs/limel-code-editor.cjs.entry.js +1 -1
- package/dist/cjs/limel-collapsible-section.cjs.entry.js +1 -1
- package/dist/cjs/limel-color-picker-palette.cjs.entry.js +1 -1
- package/dist/cjs/limel-color-picker.cjs.entry.js +1 -1
- package/dist/cjs/limel-config.cjs.entry.js +1 -1
- package/dist/cjs/limel-date-picker.cjs.entry.js +2 -2
- package/dist/cjs/limel-dialog.cjs.entry.js +2 -2
- package/dist/cjs/limel-dock-button.cjs.entry.js +2 -2
- package/dist/cjs/limel-dock.cjs.entry.js +1 -1
- package/dist/cjs/limel-file.cjs.entry.js +2 -2
- package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
- package/dist/cjs/limel-flex-container.cjs.entry.js +1 -1
- package/dist/cjs/limel-form.cjs.entry.js +2 -2
- package/dist/cjs/limel-grid.cjs.entry.js +1 -1
- package/dist/cjs/limel-header.cjs.entry.js +1 -1
- package/dist/cjs/limel-helper-line.cjs.entry.js +1 -1
- package/dist/cjs/limel-icon-button.cjs.entry.js +1 -1
- package/dist/cjs/limel-icon.cjs.entry.js +1 -1
- package/dist/cjs/limel-info-tile.cjs.entry.js +1 -1
- package/dist/cjs/limel-input-field.cjs.entry.js +11 -11
- package/dist/cjs/limel-input-field.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-list_2.cjs.entry.js +2 -2
- package/dist/cjs/limel-menu_2.cjs.entry.js +2 -2
- package/dist/cjs/limel-picker.cjs.entry.js +2 -2
- package/dist/cjs/limel-popover_2.cjs.entry.js +2 -2
- package/dist/cjs/limel-portal.cjs.entry.js +1 -1
- package/dist/cjs/limel-progress-flow-item.cjs.entry.js +1 -1
- package/dist/cjs/limel-progress-flow.cjs.entry.js +1 -1
- package/dist/cjs/limel-select.cjs.entry.js +2 -2
- package/dist/cjs/limel-shortcut.cjs.entry.js +1 -1
- package/dist/cjs/limel-slider.cjs.entry.js +2 -2
- package/dist/cjs/limel-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/limel-spinner.cjs.entry.js +1 -1
- package/dist/cjs/limel-split-button.cjs.entry.js +1 -1
- package/dist/cjs/limel-switch.cjs.entry.js +2 -2
- package/dist/cjs/limel-tab-bar.cjs.entry.js +1 -1
- package/dist/cjs/limel-tab-panel.cjs.entry.js +1 -1
- package/dist/cjs/limel-table.cjs.entry.js +1 -1
- package/dist/cjs/limel-tooltip_2.cjs.entry.js +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{random-string-4c3b7f1c.js → random-string-c8445652.js} +10 -2
- package/dist/cjs/random-string-c8445652.js.map +1 -0
- package/dist/collection/components/button/button.js +8 -0
- package/dist/collection/components/button/button.js.map +1 -1
- package/dist/collection/components/input-field/input-field.js +9 -9
- package/dist/collection/components/input-field/input-field.js.map +1 -1
- package/dist/collection/util/makeEnterClickable.js +51 -0
- package/dist/collection/util/makeEnterClickable.js.map +1 -0
- package/dist/collection/util/random-string.js +9 -1
- package/dist/collection/util/random-string.js.map +1 -1
- package/dist/esm/{checkbox.template-c838ee7b.js → checkbox.template-a5d8a2bc.js} +2 -2
- package/dist/esm/{checkbox.template-c838ee7b.js.map → checkbox.template-a5d8a2bc.js.map} +1 -1
- package/dist/esm/{index-9bd6d7c6.js → index-232e9616.js} +14 -2
- package/dist/{lime-elements/p-c8818b66.js.map → esm/index-232e9616.js.map} +1 -1
- package/dist/esm/lime-elements.js +2 -2
- package/dist/esm/limel-action-bar-item_2.entry.js +2 -2
- package/dist/esm/limel-action-bar.entry.js +1 -1
- package/dist/esm/limel-badge.entry.js +1 -1
- package/dist/esm/limel-banner.entry.js +1 -1
- package/dist/esm/limel-button-group.entry.js +2 -2
- package/dist/esm/limel-button.entry.js +58 -1
- package/dist/esm/limel-button.entry.js.map +1 -1
- package/dist/esm/limel-callout.entry.js +1 -1
- package/dist/esm/limel-checkbox.entry.js +3 -3
- package/dist/esm/limel-chip-set.entry.js +1 -1
- package/dist/esm/limel-circular-progress_2.entry.js +1 -1
- package/dist/esm/limel-code-editor.entry.js +1 -1
- package/dist/esm/limel-collapsible-section.entry.js +1 -1
- package/dist/esm/limel-color-picker-palette.entry.js +1 -1
- package/dist/esm/limel-color-picker.entry.js +1 -1
- package/dist/esm/limel-config.entry.js +1 -1
- package/dist/esm/limel-date-picker.entry.js +2 -2
- package/dist/esm/limel-dialog.entry.js +2 -2
- package/dist/esm/limel-dock-button.entry.js +2 -2
- package/dist/esm/limel-dock.entry.js +1 -1
- package/dist/esm/limel-file.entry.js +2 -2
- package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
- package/dist/esm/limel-flex-container.entry.js +1 -1
- package/dist/esm/limel-form.entry.js +2 -2
- package/dist/esm/limel-grid.entry.js +1 -1
- package/dist/esm/limel-header.entry.js +1 -1
- package/dist/esm/limel-helper-line.entry.js +1 -1
- package/dist/esm/limel-icon-button.entry.js +1 -1
- package/dist/esm/limel-icon.entry.js +1 -1
- package/dist/esm/limel-info-tile.entry.js +1 -1
- package/dist/esm/limel-input-field.entry.js +11 -11
- package/dist/esm/limel-input-field.entry.js.map +1 -1
- package/dist/esm/limel-list_2.entry.js +2 -2
- package/dist/esm/limel-menu_2.entry.js +2 -2
- package/dist/esm/limel-picker.entry.js +2 -2
- package/dist/esm/limel-popover_2.entry.js +2 -2
- package/dist/esm/limel-portal.entry.js +1 -1
- package/dist/esm/limel-progress-flow-item.entry.js +1 -1
- package/dist/esm/limel-progress-flow.entry.js +1 -1
- package/dist/esm/limel-select.entry.js +2 -2
- package/dist/esm/limel-shortcut.entry.js +1 -1
- package/dist/esm/limel-slider.entry.js +2 -2
- package/dist/esm/limel-snackbar.entry.js +1 -1
- package/dist/esm/limel-spinner.entry.js +1 -1
- package/dist/esm/limel-split-button.entry.js +1 -1
- package/dist/esm/limel-switch.entry.js +2 -2
- package/dist/esm/limel-tab-bar.entry.js +1 -1
- package/dist/esm/limel-tab-panel.entry.js +1 -1
- package/dist/esm/limel-table.entry.js +1 -1
- package/dist/esm/limel-tooltip_2.entry.js +2 -2
- package/dist/esm/loader.js +2 -2
- package/dist/esm/{random-string-2246b81e.js → random-string-812b1c35.js} +10 -2
- package/dist/esm/random-string-812b1c35.js.map +1 -0
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/{p-9aab2892.entry.js → p-095e03af.entry.js} +2 -2
- package/dist/lime-elements/{p-40b7d717.entry.js → p-0edcca0b.entry.js} +2 -2
- package/dist/lime-elements/{p-4ed75a11.entry.js → p-0f1a9472.entry.js} +2 -2
- package/dist/lime-elements/{p-896043d6.entry.js → p-149f2418.entry.js} +2 -2
- package/dist/lime-elements/{p-ca9b383b.entry.js → p-1754c5ae.entry.js} +2 -2
- package/dist/lime-elements/{p-a3bea367.entry.js → p-1bdc524d.entry.js} +2 -2
- package/dist/lime-elements/{p-c8818b66.js → p-3075aa67.js} +3 -3
- package/dist/lime-elements/p-3075aa67.js.map +1 -0
- package/dist/lime-elements/{p-13ed01eb.entry.js → p-32127a17.entry.js} +2 -2
- package/dist/lime-elements/p-3ccdc4a3.js +2 -0
- package/dist/lime-elements/p-3ccdc4a3.js.map +1 -0
- package/dist/lime-elements/{p-17ac8cca.entry.js → p-42f06b16.entry.js} +2 -2
- package/dist/lime-elements/{p-8b339748.entry.js → p-455edb30.entry.js} +2 -2
- package/dist/lime-elements/{p-9fe3bc64.entry.js → p-4a04ede1.entry.js} +2 -2
- package/dist/lime-elements/{p-a8714655.entry.js → p-4fc7e0df.entry.js} +2 -2
- package/dist/lime-elements/{p-1a80da5e.entry.js → p-550cae4a.entry.js} +2 -2
- package/dist/lime-elements/{p-623d09d9.entry.js → p-552fd521.entry.js} +2 -2
- package/dist/lime-elements/{p-30df2bb6.entry.js → p-5afea754.entry.js} +2 -2
- package/dist/lime-elements/{p-c647b197.entry.js → p-5fb4402e.entry.js} +2 -2
- package/dist/lime-elements/{p-3670f018.entry.js → p-6762616d.entry.js} +2 -2
- package/dist/lime-elements/{p-42a24572.entry.js → p-71210c65.entry.js} +2 -2
- package/dist/lime-elements/{p-2b0c6ccd.entry.js → p-7972528a.entry.js} +2 -2
- package/dist/lime-elements/{p-a40e05c3.entry.js → p-7d159ddf.entry.js} +2 -2
- package/dist/lime-elements/{p-0137d2fb.entry.js → p-8be4072e.entry.js} +2 -2
- package/dist/lime-elements/{p-6b952164.entry.js → p-8d44ea19.entry.js} +2 -2
- package/dist/lime-elements/{p-fb799569.entry.js → p-908640f6.entry.js} +2 -2
- package/dist/lime-elements/{p-848437f8.entry.js → p-94cb40fb.entry.js} +2 -2
- package/dist/lime-elements/{p-795079c9.entry.js → p-95ed1b9b.entry.js} +2 -2
- package/dist/lime-elements/{p-d228fd62.entry.js → p-9a5745e5.entry.js} +2 -2
- package/dist/lime-elements/{p-4114c214.entry.js → p-9c1db0e7.entry.js} +2 -2
- package/dist/lime-elements/{p-28da3c47.entry.js → p-9ceb4364.entry.js} +2 -2
- package/dist/lime-elements/{p-55a09930.entry.js → p-9f5250a0.entry.js} +2 -2
- package/dist/lime-elements/{p-461b5f85.entry.js → p-a4c39571.entry.js} +2 -2
- package/dist/lime-elements/{p-d07f1a1f.entry.js → p-add09e7d.entry.js} +2 -2
- package/dist/lime-elements/{p-e59e0040.entry.js → p-af374a0c.entry.js} +2 -2
- package/dist/lime-elements/{p-5b6d2d55.js → p-b2d4f3f0.js} +2 -2
- package/dist/lime-elements/{p-648d9057.entry.js → p-b3ff8fef.entry.js} +2 -2
- package/dist/lime-elements/{p-715d3252.entry.js → p-b70f517e.entry.js} +2 -2
- package/dist/lime-elements/{p-da25e94d.entry.js → p-b714596f.entry.js} +2 -2
- package/dist/lime-elements/{p-753f500b.entry.js → p-b897fe1f.entry.js} +2 -2
- package/dist/lime-elements/{p-2359d139.entry.js → p-b9698f79.entry.js} +2 -2
- package/dist/lime-elements/{p-d7c39d02.entry.js → p-bb1b12bb.entry.js} +2 -2
- package/dist/lime-elements/{p-5b374246.entry.js → p-bc23beb6.entry.js} +2 -2
- package/dist/lime-elements/{p-f1d9723a.entry.js → p-bd62071d.entry.js} +2 -2
- package/dist/lime-elements/{p-2565927b.entry.js → p-be492c93.entry.js} +2 -2
- package/dist/lime-elements/p-c018e82f.entry.js +2 -0
- package/dist/lime-elements/p-c018e82f.entry.js.map +1 -0
- package/dist/lime-elements/{p-e0fa49ca.entry.js → p-c6d57502.entry.js} +2 -2
- package/dist/lime-elements/{p-b8ed25b3.entry.js → p-ce1fca54.entry.js} +2 -2
- package/dist/lime-elements/p-ce1fca54.entry.js.map +1 -0
- package/dist/lime-elements/{p-a11a971e.entry.js → p-cf61ac34.entry.js} +2 -2
- package/dist/lime-elements/{p-9e78a21c.entry.js → p-d419c102.entry.js} +3 -3
- package/dist/lime-elements/{p-9e78a21c.entry.js.map → p-d419c102.entry.js.map} +1 -1
- package/dist/lime-elements/{p-7a3f58cd.entry.js → p-dd14b927.entry.js} +2 -2
- package/dist/lime-elements/{p-63111b62.entry.js → p-de4cb1ac.entry.js} +2 -2
- package/dist/lime-elements/{p-2118b9ae.entry.js → p-eae4f1ed.entry.js} +2 -2
- package/dist/types/components/button/button.d.ts +3 -0
- package/dist/types/components/input-field/input-field.d.ts +2 -0
- package/dist/types/util/makeEnterClickable.d.ts +2 -0
- package/package.json +2 -2
- package/dist/cjs/index-aafa56ee.js.map +0 -1
- package/dist/cjs/random-string-4c3b7f1c.js.map +0 -1
- package/dist/esm/index-9bd6d7c6.js.map +0 -1
- package/dist/esm/random-string-2246b81e.js.map +0 -1
- package/dist/lime-elements/p-1dc042e5.entry.js +0 -2
- package/dist/lime-elements/p-1dc042e5.entry.js.map +0 -1
- package/dist/lime-elements/p-6c094f3f.js +0 -2
- package/dist/lime-elements/p-6c094f3f.js.map +0 -1
- package/dist/lime-elements/p-b8ed25b3.entry.js.map +0 -1
- /package/dist/lime-elements/{p-9aab2892.entry.js.map → p-095e03af.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-40b7d717.entry.js.map → p-0edcca0b.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-4ed75a11.entry.js.map → p-0f1a9472.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-896043d6.entry.js.map → p-149f2418.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-ca9b383b.entry.js.map → p-1754c5ae.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-a3bea367.entry.js.map → p-1bdc524d.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-13ed01eb.entry.js.map → p-32127a17.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-17ac8cca.entry.js.map → p-42f06b16.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-8b339748.entry.js.map → p-455edb30.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-9fe3bc64.entry.js.map → p-4a04ede1.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-a8714655.entry.js.map → p-4fc7e0df.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-1a80da5e.entry.js.map → p-550cae4a.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-623d09d9.entry.js.map → p-552fd521.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-30df2bb6.entry.js.map → p-5afea754.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-c647b197.entry.js.map → p-5fb4402e.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-3670f018.entry.js.map → p-6762616d.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-42a24572.entry.js.map → p-71210c65.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-2b0c6ccd.entry.js.map → p-7972528a.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-a40e05c3.entry.js.map → p-7d159ddf.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-0137d2fb.entry.js.map → p-8be4072e.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-6b952164.entry.js.map → p-8d44ea19.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-fb799569.entry.js.map → p-908640f6.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-848437f8.entry.js.map → p-94cb40fb.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-795079c9.entry.js.map → p-95ed1b9b.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-d228fd62.entry.js.map → p-9a5745e5.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-4114c214.entry.js.map → p-9c1db0e7.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-28da3c47.entry.js.map → p-9ceb4364.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-55a09930.entry.js.map → p-9f5250a0.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-461b5f85.entry.js.map → p-a4c39571.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-d07f1a1f.entry.js.map → p-add09e7d.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-e59e0040.entry.js.map → p-af374a0c.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-5b6d2d55.js.map → p-b2d4f3f0.js.map} +0 -0
- /package/dist/lime-elements/{p-648d9057.entry.js.map → p-b3ff8fef.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-715d3252.entry.js.map → p-b70f517e.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-da25e94d.entry.js.map → p-b714596f.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-753f500b.entry.js.map → p-b897fe1f.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-2359d139.entry.js.map → p-b9698f79.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-d7c39d02.entry.js.map → p-bb1b12bb.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-5b374246.entry.js.map → p-bc23beb6.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-f1d9723a.entry.js.map → p-bd62071d.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-2565927b.entry.js.map → p-be492c93.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-e0fa49ca.entry.js.map → p-c6d57502.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-a11a971e.entry.js.map → p-cf61ac34.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-7a3f58cd.entry.js.map → p-dd14b927.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-63111b62.entry.js.map → p-de4cb1ac.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-2118b9ae.entry.js.map → p-eae4f1ed.entry.js.map} +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
6
|
|
|
7
7
|
const progressFlowItemCss = ".flow-item{--step-background:var(\n --progress-flow-step-background-color,\n rgb(var(--contrast-600))\n );--step-background--selected:var(\n --progress-flow-step-background-color--selected,\n var(--mdc-theme-primary)\n );--step-background--passed:var(\n --progress-flow-step-background-color--passed,\n var(--step-background--selected)\n );--step-text:var(\n --progress-flow-step-text-color,\n rgb(var(--contrast-1200))\n );--step-text--selected:var(\n --progress-flow-step-text-color--selected,\n var(--mdc-theme-on-primary)\n );--step-text--passed:var(\n --progress-flow-step-text-color--passed,\n var(--step-text--selected)\n );--step-divider-color:var(\n --progress-flow-step-divider-color,\n rgb(var(--contrast-100))\n );position:relative;width:100%;display:flex;flex-direction:column;align-items:stretch}.flow-item:not(.off-progress-item,.last) .divider:after{content:\"\"}.flow-item.off-progress-item{padding-left:0.5rem}.flow-item.first-off-progress-item{padding-left:1rem}.step{transition:background-color 0.2s ease, box-shadow 0.2s ease;display:flex;justify-content:center;align-items:center;position:relative;width:100%;height:var(--step-height);border:none;font-size:0.875rem}.step.disabled{cursor:not-allowed}.step.disabled.readonly{opacity:1;cursor:default}.step:focus{outline:none}.step:focus-visible{box-shadow:var(--shadow-depth-8-focused)}.flow-item:not(.off-progress-item,.first) .step{padding-left:calc(var(--step-height) / 2)}.flow-item:not(.selected) .step:not(.disabled){cursor:pointer}.flow-item:not(.selected) .step:not(.disabled):hover{box-shadow:var(--button-shadow-normal)}.flow-item:not(.selected) .step:not(.disabled):active{box-shadow:var(--button-shadow-pressed)}.off-progress-item .step{border-radius:0.25rem;padding:0 0.75rem}.off-progress-item .step .icon{margin-left:0}.flow-item.first .step{border-top-left-radius:var(--step-height);border-bottom-left-radius:var(--step-height);padding-left:1.25rem}.flow-item.last .step{border-top-right-radius:var(--step-height);border-bottom-right-radius:var(--step-height);padding-right:1.25rem}.divider{display:flex;align-items:center;justify-content:center;width:var(--step-height);height:var(--step-height);position:absolute;z-index:1;right:calc(var(--step-height) / 2 * -1);overflow:hidden}.divider:after{position:absolute;display:block;box-sizing:border-box;transition:background-color 0.2s ease;width:100%;height:100%;right:calc(var(--step-height) / 5);transform:rotate(45deg);border-style:solid;border-width:0.125rem 0.125rem 0 0;border-radius:0 0.5rem 0 0;border-color:var(--step-divider-color)}.flow-item.last .divider{width:0}.text,.secondary-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:var(--max-text-width);z-index:2}.secondary-text{font-size:0.75rem;margin:auto;padding-left:calc(var(--step-height) / 2)}.icon{margin:0 0.5rem 0 0.25rem;z-index:2}.step:before,.step:after{pointer-events:none;box-sizing:border-box;z-index:2;position:absolute;right:var(--selected-indicator-right);border-radius:50%}.last .step:before,.last .step:after{right:0.5rem}.flow-item:not(.off-progress-item) .step.selected:before,.flow-item:not(.off-progress-item) .step.selected:after{content:\"\";width:0.375rem;height:0.375rem}.flow-item:not(.off-progress-item) .step.selected:before{background-color:var(--step-divider-color);opacity:0.7}.flow-item:not(.off-progress-item) .step.disabled:before,.flow-item:not(.off-progress-item) .step.disabled:after{width:0.75rem;height:0.75rem}.flow-item:not(.off-progress-item) .step.disabled:after{content:\"\";background-image:url(\"data:image/svg+xml;charset=utf-8, <svg viewBox='0 0 40 40' xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill-rule='evenodd' clip-rule='evenodd' stroke-linejoin='round' stroke-miterlimit='2'><path fill='rgb(127,127,127)' d='M32.18 13.711c0-2.207-1.793-4-4.002-4H11.821c-2.208 0-4 1.793-4 4V28.29a4 4 0 0 0 4 4h16.357a4.002 4.002 0 0 0 4.001-4V13.711Z'/><path fill='rgb(127,127,127)' d='M11.211 9.758V7.673A7.489 7.489 0 0 1 18.696.188h2.608a7.489 7.489 0 0 1 7.485 7.485v2.085h-3V7.673a4.488 4.488 0 0 0-4.485-4.485h-2.608a4.488 4.488 0 0 0-4.485 4.485v2.085h-3Z'/></svg>\");background-size:90%;background-repeat:no-repeat;background-position:center;mix-blend-mode:multiply}.step{color:var(--step-text);background-color:var(--step-background)}.step .icon{color:var(--progress-flow-icon-color--inactive, var(--step-text))}.flow-item.selected .step{color:var(--step-text--selected);background-color:var(--step-background--selected)}.flow-item.selected .step .divider:after{background-color:var(--step-background--selected)}.flow-item.selected .step .icon{color:var(--step-text--selected)}.flow-item.passed .step{color:var(--step-text--passed);background-color:var(--step-background--passed)}.flow-item.passed .step .divider:after{background-color:var(--step-background--passed)}.flow-item.passed .step .icon{color:var(--step-text--passed)}.divider:after{border-color:var(--step-divider-color);background-color:var(--step-background)}";
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
6
|
|
|
7
7
|
const progressFlowCss = ":host{--step-height:2.5rem;--selected-indicator-right:-0.5rem;--max-text-width:10rem;isolation:isolate;box-sizing:border-box;width:100%;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;padding:0.25rem}:host::-webkit-scrollbar{display:none}:host(.is-narrow){--step-height:1.5rem;--selected-indicator-right:0}";
|
|
8
8
|
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
6
|
const device = require('./device-c5841113.js');
|
|
7
7
|
const keycodes = require('./keycodes-3949f425.js');
|
|
8
8
|
const multiple = require('./multiple-2af83b6d.js');
|
|
9
|
-
const randomString = require('./random-string-
|
|
9
|
+
const randomString = require('./random-string-c8445652.js');
|
|
10
10
|
const component$1 = require('./component-dd795ff0.js');
|
|
11
11
|
const component = require('./component-67144c1c.js');
|
|
12
12
|
require('./isArray-d188a04f.js');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
6
|
|
|
7
7
|
const shortcutCss = ":host(limel-shortcut){--badge-text-color:var(\n --shortcut-badge-text-color,\n rgb(var(--color-white))\n );--badge-background-color:var(\n --shortcut-badge-background-color,\n rgb(var(--color-red-default))\n );position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;row-gap:0.0625rem}:host(limel-shortcut) *{box-sizing:border-box}:host(limel-shortcut[disabled]) a{opacity:0.5;box-shadow:unset;cursor:not-allowed}a{all:unset;transition:color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;cursor:pointer;color:var(--mdc-theme-on-surface);background-color:var(--shortcut-background-color, var(--lime-elevated-surface-background-color));box-shadow:var(--button-shadow-normal);text-align:center;height:calc(100% - 1rem);width:calc(100% - 1rem);padding:0.5rem;border-radius:var(--shortcut-border-radius, 1rem)}a:hover{color:var(--mdc-theme-on-surface);background-color:var(--shortcut-background-color, var(--lime-elevated-surface-background-color));box-shadow:var(--button-shadow-hovered)}a:active{box-shadow:var(--button-shadow-pressed);transform:translate3d(0, 0.08rem, 0)}a:focus{outline:none}a:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}limel-icon{display:flex;height:100%;width:100%;justify-content:center;color:var(--shortcut-icon-color, rgb(var(--contrast-1000)));border-radius:var(--shortcut-border-radius, 1rem)}span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;color:var(--shortcut-label-color, rgb(var(--contrast-1100)));font-size:0.75rem;text-align:center}limel-badge{position:absolute;top:-0.25rem;right:0.125rem}";
|
|
8
8
|
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
6
|
-
const randomString = require('./random-string-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
|
+
const randomString = require('./random-string-c8445652.js');
|
|
7
7
|
const component = require('./component-67144c1c.js');
|
|
8
8
|
const component$1 = require('./component-cf490570.js');
|
|
9
9
|
const ponyfill = require('./ponyfill-98ca4766.js');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
6
|
const translations = require('./translations-f8080c48.js');
|
|
7
7
|
const component = require('./component-67144c1c.js');
|
|
8
8
|
const ponyfill = require('./ponyfill-98ca4766.js');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
6
|
|
|
7
7
|
const spinnerCss = ":host{--mdc-theme-primary:var(\n --lime-primary-color,\n rgb(var(--color-teal-default))\n );--mdc-theme-secondary:var(\n --lime-secondary-color,\n rgb(var(--contrast-1100))\n );--mdc-theme-on-primary:var(\n --lime-on-primary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-secondary:var(\n --lime-on-secondary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-text-disabled-on-background:var(\n --lime-text-disabled-on-background-color,\n rgba(var(--contrast-1700), 0.38)\n );--mdc-theme-text-primary-on-background:var(\n --lime-text-primary-on-background-color,\n rgba(var(--contrast-1700), 0.87)\n );--mdc-theme-text-secondary-on-background:var(\n --lime-text-secondary-on-background-color,\n rgba(var(--contrast-1700), 0.54)\n );--mdc-theme-error:var(\n --lime-error-background-color,\n rgb(var(--color-red-dark))\n );--lime-error-text-color:rgb(var(--color-red-darker));--mdc-theme-surface:var(\n --lime-surface-background-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-surface:var(\n --lime-on-surface-color,\n rgb(var(--contrast-1500))\n )}:host(limel-spinner){display:block}@keyframes spin{50%{transform:rotate(180deg)}100%{transform:rotate(720deg)}}@keyframes fade-in-the-spinner{0%{transform:scale(0.7);opacity:0}100%{transform:scale(1);opacity:1}}@keyframes animate-colored-circles{5%{stroke-dashoffset:0}10%,100%{stroke-dashoffset:63}}:host([hidden]){display:none}:host{box-sizing:border-box;display:flex;align-items:center;justify-content:center;height:1.5rem;width:1.5rem;transform:translate3d(0, 0, 0);animation:fade-in-the-spinner 0.5s ease forwards}:host([size=x-small]){height:2rem;width:2rem}:host([size=small]){height:2.125rem;width:2.125rem}:host([size=medium]){height:2.75rem;width:2.75rem}:host([size=large]){height:4rem;width:4rem}.spinner{animation:spin 1s linear infinite;transform-origin:center}.color{animation:animate-colored-circles 10s linear infinite;fill:none;stroke-dasharray:63;stroke-dashoffset:63;stroke-linecap:round;stroke-width:4}.color.thick{stroke-width:10}.color:nth-child(1){stroke:var(--spinner-color-1, rgb(var(--lime-brand-color-deep-red)))}.color:nth-child(2){stroke:var(--spinner-color-2, rgb(var(--lime-brand-color-sellable-orange)));animation-delay:1s}.color:nth-child(3){stroke:var(--spinner-color-3, rgb(var(--lime-brand-color-simple-blue)));animation-delay:2s}.color:nth-child(4){stroke:var(--spinner-color-4, rgb(var(--lime-brand-color-orange)));animation-delay:3s}.color:nth-child(5){stroke:var(--spinner-color-5, rgb(var(--lime-brand-color-lime-green)));animation-delay:4s}.color:nth-child(6){stroke:var(--spinner-color-6, rgb(var(--lime-brand-color-yellow)));animation-delay:5s}.color:nth-child(7){stroke:var(--spinner-color-7, rgb(var(--lime-brand-color-flexible-turquoise)));animation-delay:6s}.color:nth-child(8){stroke:var(--spinner-color-8, rgb(var(--lime-brand-color-loving-magenta)));animation-delay:7s}.color:nth-child(9){stroke:var(--spinner-color-9, rgb(var(--lime-brand-color-dark-blue)));animation-delay:8s}.color:nth-child(10){stroke:var(--spinner-color-9, rgb(var(--lime-brand-color-light-grey)));animation-delay:9s}.outline{stroke:rgba(var(--lime-brand-color-light-grey), 0.3);fill:none;stroke-linecap:round;stroke-width:4}.outline.thick{stroke-width:10}";
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
6
|
|
|
7
7
|
const splitButtonCss = ":host(limel-split-button.has-menu){--button-padding-right:2rem}:host(limel-split-button){display:inline-flex;isolation:isolate}:host(limel-split-button) *{box-sizing:border-box}:host([disabled]){pointer-events:none}limel-button{width:100%}limel-menu{display:flex;justify-content:flex-end;position:relative;z-index:1;padding:0.125rem;margin-left:calc(var(--button-padding-right) * -1);width:var(--button-padding-right)}limel-menu:before{transition:background-color 0.5s ease;content:\"\";position:absolute;inset:0.375rem auto 0.375rem 0.6875rem;width:1px;background-color:currentColor;opacity:0.2}limel-menu:not([disabled]){color:var(--mdc-theme-primary, rgb(var(--color-teal-default)))}limel-menu:not([disabled]).primary{color:var(--mdc-theme-on-primary, rgb(var(--color-white)))}limel-menu[disabled]{color:rgba(var(--contrast-1600), 0.37)}limel-menu:hover:before,limel-menu:focus-within:before{background-color:transparent}.menu-trigger{all:unset;text-align:center;font-weight:bold;border-radius:0.125rem;height:100%;width:1rem}.menu-trigger:not(:disabled){transition:color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;cursor:pointer;color:var(--mdc-theme-on-surface);background-color:transparent;cursor:pointer}.menu-trigger:not(:disabled):hover{color:var(--mdc-theme-on-surface);background-color:var(--lime-elevated-surface-background-color);box-shadow:var(--button-shadow-hovered)}.menu-trigger:not(:disabled):active{box-shadow:var(--button-shadow-pressed);transform:translate3d(0, 0.08rem, 0)}.menu-trigger:not(:disabled):focus{outline:none}.menu-trigger:not(:disabled):focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}.menu-trigger:not(:disabled):focus-visible,.menu-trigger:not(:disabled):hover{background-color:rgb(var(--color-white), 0.1)}.menu-trigger:before{content:\"\";position:absolute;inset:-0.25rem;z-index:-1}";
|
|
8
8
|
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
6
|
-
const randomString = require('./random-string-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
|
+
const randomString = require('./random-string-c8445652.js');
|
|
7
7
|
const component = require('./component-67144c1c.js');
|
|
8
8
|
const component$1 = require('./component-cf490570.js');
|
|
9
9
|
require('./ponyfill-98ca4766.js');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
6
|
const isEqual = require('./isEqual-d2a13a24.js');
|
|
7
7
|
const component = require('./component-67144c1c.js');
|
|
8
8
|
const component$1 = require('./component-cf490570.js');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
6
|
const dispatchResizeEvent = require('./dispatch-resize-event-4462d78f.js');
|
|
7
7
|
|
|
8
8
|
const tabPanelCss = ":host(limel-tab-panel){--tab-panel-background-color:rgb(var(--contrast-100));display:block;height:100%}.tab-panel{height:100%;position:relative;display:flex;flex-direction:column}.tab-content{height:100%;flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;background-color:var(--tab-panel-background-color)}";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
6
|
const pickBy = require('./pickBy-3ef47bf2.js');
|
|
7
7
|
const isEqual = require('./isEqual-d2a13a24.js');
|
|
8
8
|
require('./identity-6dc34885.js');
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
6
|
-
const randomString = require('./random-string-
|
|
5
|
+
const index = require('./index-38eb64b5.js');
|
|
6
|
+
const randomString = require('./random-string-c8445652.js');
|
|
7
7
|
|
|
8
8
|
const tooltipCss = ".trigger-anchor{position:relative}";
|
|
9
9
|
|
package/dist/cjs/loader.cjs.js
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const createRandomString = () => {
|
|
4
|
+
var _a;
|
|
5
|
+
if (!('crypto' in window) ||
|
|
6
|
+
typeof ((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) !== 'function') {
|
|
7
|
+
return legacyCreateRandomString();
|
|
8
|
+
}
|
|
9
|
+
return 'a_' + crypto.randomUUID(); // ids must start with letters
|
|
10
|
+
};
|
|
11
|
+
function legacyCreateRandomString() {
|
|
4
12
|
const USE_HEX = 36;
|
|
5
13
|
const SKIP_LEADING_ZERODOT = 2;
|
|
6
14
|
const ASCII_A = 97;
|
|
@@ -8,8 +16,8 @@ const createRandomString = () => {
|
|
|
8
16
|
return (String.fromCharCode(ASCII_A + Math.floor(Math.random() * NUMBER_OF_LETTERS)) +
|
|
9
17
|
Math.random().toString(USE_HEX).substring(SKIP_LEADING_ZERODOT) +
|
|
10
18
|
Math.random().toString(USE_HEX).substring(SKIP_LEADING_ZERODOT));
|
|
11
|
-
}
|
|
19
|
+
}
|
|
12
20
|
|
|
13
21
|
exports.createRandomString = createRandomString;
|
|
14
22
|
|
|
15
|
-
//# sourceMappingURL=random-string-
|
|
23
|
+
//# sourceMappingURL=random-string-c8445652.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"random-string-c8445652.js","mappings":";;MAAa,kBAAkB,GAAG;;EAC9B,IACI,EAAE,QAAQ,IAAI,MAAM,CAAC;IACrB,QAAO,MAAA,MAAM,CAAC,MAAM,0CAAE,UAAU,CAAA,KAAK,UAAU,EACjD;IACE,OAAO,wBAAwB,EAAE,CAAC;GACrC;EAED,OAAO,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AACtC,EAAE;AAEF,SAAS,wBAAwB;EAC7B,MAAM,OAAO,GAAG,EAAE,CAAC;EACnB,MAAM,oBAAoB,GAAG,CAAC,CAAC;EAC/B,MAAM,OAAO,GAAG,EAAE,CAAC;EACnB,MAAM,iBAAiB,GAAG,EAAE,CAAC;EAE7B,QACI,MAAM,CAAC,YAAY,CACf,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,iBAAiB,CAAC,CAC1D;IACD,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC;IAC/D,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,EACjE;AACN;;;;","names":[],"sources":["./src/util/random-string.ts"],"sourcesContent":["export const createRandomString = () => {\n if (\n !('crypto' in window) ||\n typeof window.crypto?.randomUUID !== 'function'\n ) {\n return legacyCreateRandomString();\n }\n\n return 'a_' + crypto.randomUUID(); // ids must start with letters\n};\n\nfunction legacyCreateRandomString() {\n const USE_HEX = 36;\n const SKIP_LEADING_ZERODOT = 2;\n const ASCII_A = 97;\n const NUMBER_OF_LETTERS = 26;\n\n return (\n String.fromCharCode(\n ASCII_A + Math.floor(Math.random() * NUMBER_OF_LETTERS)\n ) +\n Math.random().toString(USE_HEX).substring(SKIP_LEADING_ZERODOT) +\n Math.random().toString(USE_HEX).substring(SKIP_LEADING_ZERODOT)\n );\n}\n"],"version":3}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h } from '@stencil/core';
|
|
2
|
+
import { makeEnterClickable, removeEnterClickable, } from '../../util/makeEnterClickable';
|
|
2
3
|
/**
|
|
3
4
|
* @exampleComponent limel-example-button-basic
|
|
4
5
|
* @exampleComponent limel-example-button-primary
|
|
@@ -23,6 +24,12 @@ export class Button {
|
|
|
23
24
|
this.loadingFailed = false;
|
|
24
25
|
this.justLoaded = false;
|
|
25
26
|
}
|
|
27
|
+
componentWillLoad() {
|
|
28
|
+
makeEnterClickable(this.host);
|
|
29
|
+
}
|
|
30
|
+
disconnectedCallback() {
|
|
31
|
+
removeEnterClickable(this.host);
|
|
32
|
+
}
|
|
26
33
|
render() {
|
|
27
34
|
return (h("button", { class: {
|
|
28
35
|
'mdc-button': true,
|
|
@@ -212,6 +219,7 @@ export class Button {
|
|
|
212
219
|
"justLoaded": {}
|
|
213
220
|
};
|
|
214
221
|
}
|
|
222
|
+
static get elementRef() { return "host"; }
|
|
215
223
|
static get watchers() {
|
|
216
224
|
return [{
|
|
217
225
|
"propName": "loading",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/components/button/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/components/button/button.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, State, Watch, Element } from '@stencil/core';\nimport {\n makeEnterClickable,\n removeEnterClickable,\n} from '../../util/makeEnterClickable';\n\n/**\n * @exampleComponent limel-example-button-basic\n * @exampleComponent limel-example-button-primary\n * @exampleComponent limel-example-button-outlined\n * @exampleComponent limel-example-button-disabled\n * @exampleComponent limel-example-button-icon\n * @exampleComponent limel-example-button-loading\n * @exampleComponent limel-example-button-click-success\n * @exampleComponent limel-example-button-click-fail\n * @exampleComponent limel-example-button-reduce-presence\n * @exampleComponent limel-example-button-colors\n * @exampleComponent limel-example-button-composite\n */\n@Component({\n tag: 'limel-button',\n shadow: true,\n styleUrl: 'button.scss',\n})\nexport class Button {\n /**\n * The text to show on the button.\n */\n @Prop({ reflect: true })\n public label: string;\n\n /**\n * Set to `true` to make the button primary.\n */\n @Prop({ reflect: true })\n public primary = false;\n\n /**\n * Set to `true` to make the button outlined.\n */\n @Prop({ reflect: true })\n public outlined = false;\n\n /**\n * Set icon for the button\n */\n @Prop({ reflect: true })\n public icon: string;\n\n /**\n * Set to `true` to disable the button.\n */\n @Prop({ reflect: true })\n public disabled = false;\n\n /**\n * Set to `true` to put the button in the `loading` state.\n * This also disables the button.\n */\n @Prop({ reflect: true })\n public loading = false;\n\n /**\n * Set to `true` to indicate failure instead of success when the button is\n * no longer in the `loading` state.\n */\n @Prop({ reflect: true })\n public loadingFailed = false;\n\n @State()\n private justLoaded = false;\n\n @Element()\n private host: HTMLElement;\n\n private justLoadedTimeout?: number;\n\n public componentWillLoad() {\n makeEnterClickable(this.host);\n }\n\n public disconnectedCallback() {\n removeEnterClickable(this.host);\n }\n\n public render() {\n return (\n <button\n class={{\n 'mdc-button': true,\n loading: this.loading,\n 'just-loaded': this.justLoaded && !this.loadingFailed,\n 'just-failed': this.justLoaded && this.loadingFailed,\n 'mdc-button--outlined': this.outlined,\n }}\n disabled={this.disabled || this.loading}\n >\n {this.renderIcon()}\n <span class=\"label mdc-button__label\">{this.label}</span>\n <limel-spinner limeBranded={false} />\n <svg viewBox=\"0 0 30 30\">{this.renderLoadingIcons()}</svg>\n </button>\n );\n }\n\n @Watch('loading')\n protected loadingWatcher(newValue: boolean, oldValue: boolean) {\n if (oldValue && !newValue) {\n this.justLoaded = true;\n const TIMEOUT = 2000;\n this.justLoadedTimeout = window.setTimeout(() => {\n this.justLoaded = false;\n }, TIMEOUT);\n } else if (newValue) {\n this.justLoaded = false;\n window.clearTimeout(this.justLoadedTimeout);\n }\n }\n\n private renderLoadingIcons() {\n if (this.loadingFailed) {\n return [\n <line x1=\"9\" y1=\"9\" x2=\"21\" y2=\"21\"></line>,\n <line x1=\"21\" y1=\"9\" x2=\"9\" y2=\"21\"></line>,\n ];\n }\n\n return [\n <line x1=\"8\" y1=\"14\" x2=\"15\" y2=\"20\"></line>,\n <line x1=\"23\" y1=\"9\" x2=\"14\" y2=\"20\"></line>,\n ];\n }\n\n private renderIcon(): HTMLElement {\n if (!this.icon) {\n return;\n }\n\n let withoutLabelClass = '';\n if (!this.label) {\n withoutLabelClass = 'no-label';\n }\n\n return (\n <i class={`mdc-button__icon ${withoutLabelClass}`}>\n <limel-icon name={this.icon} />\n </i>\n );\n }\n}\n"]}
|
|
@@ -4,7 +4,6 @@ import { debounce } from 'lodash-es';
|
|
|
4
4
|
import { ARROW_DOWN, ARROW_DOWN_KEY_CODE, ARROW_UP, ARROW_UP_KEY_CODE, ENTER, ENTER_KEY_CODE, ESCAPE, ESCAPE_KEY_CODE, SPACE, SPACE_KEY_CODE, TAB, TAB_KEY_CODE, } from '../../util/keycodes';
|
|
5
5
|
import { getHref, getTarget } from '../../util/link-helper';
|
|
6
6
|
import { createRandomString } from '../../util/random-string';
|
|
7
|
-
const helperTextId = 'tf-helper-text';
|
|
8
7
|
/**
|
|
9
8
|
* @exampleComponent limel-example-input-field-text
|
|
10
9
|
* @exampleComponent limel-example-input-field-placeholder
|
|
@@ -116,7 +115,7 @@ export class InputField {
|
|
|
116
115
|
if (!this.maxlength && !this.hasHelperText()) {
|
|
117
116
|
return;
|
|
118
117
|
}
|
|
119
|
-
return (h("limel-helper-line", { helperTextId: helperTextId, helperText: this.helperText, length: length, maxLength: this.maxlength, invalid: this.isInvalid() }));
|
|
118
|
+
return (h("limel-helper-line", { helperTextId: this.helperTextId, helperText: this.helperText, length: length, maxLength: this.maxlength, invalid: this.isInvalid() }));
|
|
120
119
|
};
|
|
121
120
|
this.renderEmptyValueForReadonly = () => {
|
|
122
121
|
if (this.readonly && !this.value) {
|
|
@@ -177,7 +176,7 @@ export class InputField {
|
|
|
177
176
|
}
|
|
178
177
|
return this.limelInputField.shadowRoot.querySelector(elementName);
|
|
179
178
|
};
|
|
180
|
-
this.renderLabel = (
|
|
179
|
+
this.renderLabel = () => {
|
|
181
180
|
const labelClassList = {
|
|
182
181
|
'mdc-floating-label': true,
|
|
183
182
|
'mdc-floating-label--float-above': !!this.value || this.isFocused || this.readonly,
|
|
@@ -185,7 +184,7 @@ export class InputField {
|
|
|
185
184
|
if (!this.label) {
|
|
186
185
|
return;
|
|
187
186
|
}
|
|
188
|
-
return (h("span", { class: "mdc-notched-outline__notch" }, h("span", { class: labelClassList, id: labelId }, this.label)));
|
|
187
|
+
return (h("span", { class: "mdc-notched-outline__notch" }, h("span", { class: labelClassList, id: this.labelId }, this.label)));
|
|
189
188
|
};
|
|
190
189
|
this.renderLeadingIcon = () => {
|
|
191
190
|
if (this.type === 'textarea') {
|
|
@@ -437,6 +436,8 @@ export class InputField {
|
|
|
437
436
|
const debounceTimeout = 300;
|
|
438
437
|
this.changeEmitter = debounce(this.changeEmitter, debounceTimeout);
|
|
439
438
|
this.portalId = createRandomString();
|
|
439
|
+
this.helperTextId = createRandomString();
|
|
440
|
+
this.labelId = createRandomString();
|
|
440
441
|
}
|
|
441
442
|
connectedCallback() {
|
|
442
443
|
this.initialize();
|
|
@@ -457,9 +458,8 @@ export class InputField {
|
|
|
457
458
|
}
|
|
458
459
|
}
|
|
459
460
|
render() {
|
|
460
|
-
const labelId = 'tf-input-label';
|
|
461
461
|
const properties = this.getAdditionalProps();
|
|
462
|
-
properties['aria-labelledby'] = labelId;
|
|
462
|
+
properties['aria-labelledby'] = this.labelId;
|
|
463
463
|
properties.class = 'mdc-text-field__input';
|
|
464
464
|
properties.onInput = this.handleChange;
|
|
465
465
|
properties.onFocus = this.onFocus;
|
|
@@ -468,11 +468,11 @@ export class InputField {
|
|
|
468
468
|
properties.readonly = this.readonly;
|
|
469
469
|
properties.disabled = this.disabled || this.readonly;
|
|
470
470
|
if (this.hasHelperText()) {
|
|
471
|
-
properties['aria-controls'] = helperTextId;
|
|
472
|
-
properties['aria-describedby'] = helperTextId;
|
|
471
|
+
properties['aria-controls'] = this.helperTextId;
|
|
472
|
+
properties['aria-describedby'] = this.helperTextId;
|
|
473
473
|
}
|
|
474
474
|
return [
|
|
475
|
-
h("label", { class: this.getContainerClassList() }, h("span", { class: "mdc-notched-outline", tabindex: "-1" }, h("span", { class: "mdc-notched-outline__leading" }), this.renderLabel(
|
|
475
|
+
h("label", { class: this.getContainerClassList() }, h("span", { class: "mdc-notched-outline", tabindex: "-1" }, h("span", { class: "mdc-notched-outline__leading" }), this.renderLabel(), h("span", { class: "mdc-notched-outline__trailing" })), this.renderLeadingIcon(), this.renderEmptyValueForReadonly(), this.renderPrefix(), this.renderFormattedNumber(), this.renderInput(properties), this.renderSuffix(), this.renderTextarea(properties), this.renderTrailingLinkOrButton()),
|
|
476
476
|
this.renderHelperLine(),
|
|
477
477
|
this.renderAutocompleteList(),
|
|
478
478
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-field.js","sourceRoot":"","sources":["../../../src/components/input-field/input-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import { MDCTextField } from '@material/textfield';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { debounce } from 'lodash-es';\nimport {\n ARROW_DOWN,\n ARROW_DOWN_KEY_CODE,\n ARROW_UP,\n ARROW_UP_KEY_CODE,\n ENTER,\n ENTER_KEY_CODE,\n ESCAPE,\n ESCAPE_KEY_CODE,\n SPACE,\n SPACE_KEY_CODE,\n TAB,\n TAB_KEY_CODE,\n} from '../../util/keycodes';\nimport { InputType } from './input-field.types';\nimport { LimelListCustomEvent, ListItem } from '@limetech/lime-elements';\nimport { getHref, getTarget } from '../../util/link-helper';\nimport { JSXBase } from '@stencil/core/internal';\nimport { createRandomString } from '../../util/random-string';\n\ninterface LinkProperties {\n href: string;\n target?: string;\n}\n\nconst helperTextId = 'tf-helper-text';\n\n/**\n * @exampleComponent limel-example-input-field-text\n * @exampleComponent limel-example-input-field-placeholder\n * @exampleComponent limel-example-input-field-text-multiple\n * @exampleComponent limel-example-input-field-number\n * @exampleComponent limel-example-input-field-autocomplete\n * @exampleComponent limel-example-input-field-icon-leading\n * @exampleComponent limel-example-input-field-icon-trailing\n * @exampleComponent limel-example-input-field-icon-both\n * @exampleComponent limel-example-input-field-showlink\n * @exampleComponent limel-example-input-field-error-icon\n * @exampleComponent limel-example-input-field-textarea\n * @exampleComponent limel-example-input-field-suffix\n * @exampleComponent limel-example-input-field-prefix\n * @exampleComponent limel-example-input-field-search\n * @exampleComponent limel-example-input-field-pattern\n * @exampleComponent limel-example-input-field-focus\n */\n@Component({\n tag: 'limel-input-field',\n shadow: true,\n styleUrl: 'input-field.scss',\n})\nexport class InputField {\n /**\n * Set to `true` to disable the field.\n * Use `disabled` to indicate that the field can normally be interacted\n * with, but is currently disabled. This tells the user that if certain\n * requirements are met, the field may become enabled again.\n */\n @Prop({ reflect: true })\n public disabled = false;\n\n /**\n * Set to `true` to make the field read-only.\n * Use `readonly` when the field is only there to present the data it holds,\n * and will not become possible for the current user to edit.\n */\n @Prop({ reflect: true })\n public readonly = false;\n\n /**\n * Set to `true` to indicate that the current value of the input field is\n * invalid.\n */\n @Prop({ reflect: true })\n public invalid = false;\n\n /**\n * The input label.\n */\n @Prop({ reflect: true })\n public label: string;\n\n /**\n * The placeholder text shown inside the input field, when the field is focused and empty.\n */\n @Prop({ reflect: true })\n public placeholder: string;\n\n /**\n * Optional helper text to display below the input field when it has focus\n */\n @Prop({ reflect: true })\n public helperText: string;\n\n /**\n * A short piece of text to display before the value inside the input field.\n * Displayed for all types except `textarea`.\n */\n @Prop({ reflect: true })\n public prefix: string;\n\n /**\n * A short piece of text to display after the value inside the input field.\n * Displayed for all types except `textarea`.\n */\n @Prop({ reflect: true })\n public suffix: string;\n\n /**\n * Set to `true` to indicate that the field is required.\n */\n @Prop({ reflect: true })\n public required = false;\n\n /**\n * The value of the field.\n */\n @Prop({ reflect: true })\n public value: string;\n\n /**\n * Trailing icon to show to the far right in the field.\n */\n @Prop({ reflect: true })\n public trailingIcon: string;\n\n /**\n * Leading icon to show to the far left in the field.\n */\n @Prop({ reflect: true })\n public leadingIcon: string;\n\n /**\n * Regular expression that the current value of the input field must match.\n * No forward slashes should be specified around the pattern.\n * Only used if type is `text`, `tel`, `email`, `url`, `urlAsText`,\n * `password`, or `search`.\n */\n @Prop({ reflect: true })\n public pattern: string;\n\n /**\n * Type of input.\n *\n * Note** regarding type `url`: `limel-input` uses the native validation\n * built into the browser for many types of input fields. The native\n * validation for `url` is very strict, and does not allow relative urls,\n * nor any other formats that are not a \"fully qualified\" url. To allow\n * such urls, use the type `urlAsText` instead. `urlAsText` works exactly\n * like `text` in all regards, except that it enables use of the `showLink`\n * property.\n */\n @Prop({ reflect: true })\n public type: InputType = 'text';\n\n /**\n * Set to `true` to format the current value of the input field only\n * if the field is of type number.\n * The number format is determined by the current language of the browser.\n */\n @Prop({ reflect: true })\n public formatNumber = true;\n\n /**\n * Incremental values that are valid if the field type is `number`.\n */\n @Prop({ reflect: true })\n public step: number | 'any' = 'any';\n\n /**\n * Maximum allowed value if input type is `number`.\n */\n @Prop({ reflect: true })\n public max: number;\n\n /**\n * Minimum allowed value if input type is `number`.\n */\n @Prop({ reflect: true })\n public min: number;\n\n /**\n * Maximum length of the value if type is `password`, `search`, `tel`,\n * `text`, `url`, or `urlAsText`.\n */\n @Prop({ reflect: true })\n public maxlength: number;\n\n /**\n * Minimum length of the value if type is `password`, `search`, `tel`,\n * `text`, `url`, or `urlAsText`.\n */\n @Prop({ reflect: true })\n public minlength: number;\n\n /**\n * list of suggestions `value` can autocomplete to.\n */\n @Prop()\n public completions: string[] = [];\n\n /**\n * For inputs of type `email`, `tel`, `url`, and `urlAsText`, set this to\n * `true` to show a trailing icon with a `mailto:`,`tel:`, or normal link,\n * respectively. The default icon can be overridden using the `trailingIcon`\n * property.\n */\n @Prop({ reflect: true })\n public showLink = false;\n\n /**\n * Emitted when the input value is changed.\n */\n @Event()\n private change: EventEmitter<string>;\n\n /**\n * Emitted when `trailingIcon` or `leadingIcon` is set\n * and the icon is interacted with.\n */\n @Event()\n private action: EventEmitter<void>;\n\n @Element()\n private limelInputField: HTMLLimelInputFieldElement;\n\n @State()\n private isFocused: boolean = false;\n\n @State()\n private isModified: boolean = false;\n\n @State()\n public showCompletions: boolean = false;\n\n private mdcTextField: MDCTextField;\n private completionsList: ListItem[] = [];\n private portalId: string;\n\n constructor() {\n const debounceTimeout = 300;\n this.changeEmitter = debounce(this.changeEmitter, debounceTimeout);\n\n this.portalId = createRandomString();\n }\n\n public connectedCallback() {\n this.initialize();\n }\n\n public componentDidLoad() {\n this.initialize();\n }\n\n public disconnectedCallback() {\n if (this.mdcTextField) {\n this.mdcTextField.destroy();\n }\n\n window.removeEventListener('resize', this.layout);\n this.limelInputField.removeEventListener('focus', this.setFocus);\n }\n\n public componentDidUpdate() {\n if (this.invalid) {\n this.mdcTextField.valid = false;\n }\n }\n\n public render() {\n const labelId = 'tf-input-label';\n const properties = this.getAdditionalProps();\n properties['aria-labelledby'] = labelId;\n properties.class = 'mdc-text-field__input';\n properties.onInput = this.handleChange;\n properties.onFocus = this.onFocus;\n properties.onBlur = this.onBlur;\n properties.required = this.required;\n properties.readonly = this.readonly;\n properties.disabled = this.disabled || this.readonly;\n\n if (this.hasHelperText()) {\n properties['aria-controls'] = helperTextId;\n properties['aria-describedby'] = helperTextId;\n }\n\n return [\n <label class={this.getContainerClassList()}>\n <span class=\"mdc-notched-outline\" tabindex=\"-1\">\n <span class=\"mdc-notched-outline__leading\"></span>\n {this.renderLabel(labelId)}\n <span class=\"mdc-notched-outline__trailing\"></span>\n </span>\n {this.renderLeadingIcon()}\n {this.renderEmptyValueForReadonly()}\n {this.renderPrefix()}\n {this.renderFormattedNumber()}\n {this.renderInput(properties)}\n {this.renderSuffix()}\n {this.renderTextarea(properties)}\n {this.renderTrailingLinkOrButton()}\n </label>,\n this.renderHelperLine(),\n this.renderAutocompleteList(),\n ];\n }\n\n @Watch('value')\n protected valueWatcher(newValue: string) {\n if (!this.mdcTextField) {\n return;\n }\n\n if (newValue !== this.mdcTextField.value) {\n this.mdcTextField.value = newValue || '';\n }\n }\n\n private initialize = () => {\n const element =\n this.limelInputField.shadowRoot.querySelector('.mdc-text-field');\n if (!element) {\n return;\n }\n\n this.mdcTextField = new MDCTextField(element);\n\n this.completionsList = [...this.completions].map((item) => {\n return { text: item };\n });\n\n window.addEventListener('resize', this.layout, { passive: true });\n this.limelInputField.addEventListener('focus', this.setFocus);\n };\n\n private setFocus = () => {\n this.mdcTextField.focus();\n };\n\n private getContainerClassList = () => {\n const classList = {\n 'mdc-text-field': true,\n 'mdc-text-field--no-label': !this.label,\n 'mdc-text-field--outlined': true,\n 'mdc-text-field--invalid': this.isInvalid(),\n 'mdc-text-field--disabled': this.disabled || this.readonly,\n 'lime-text-field--readonly': this.readonly,\n 'mdc-text-field--required': this.required,\n 'lime-text-field--empty': !this.value,\n 'lime-has-prefix': this.hasPrefix(),\n 'lime-has-suffix': this.hasSuffix(),\n };\n\n if (this.type === 'textarea') {\n classList['mdc-text-field--textarea'] = true;\n classList['has-helper-line'] =\n !!this.helperText || !!this.maxlength;\n } else {\n classList['mdc-text-field--with-leading-icon'] = !!this.leadingIcon;\n classList['mdc-text-field--with-trailing-icon'] =\n !!this.getTrailingIcon();\n }\n\n return classList;\n };\n\n private renderInput = (\n properties: JSXBase.InputHTMLAttributes<HTMLInputElement>\n ) => {\n if (this.type === 'textarea') {\n return;\n }\n\n const type = this.type === 'urlAsText' ? 'text' : this.type;\n\n return (\n <input\n {...properties}\n type={type}\n pattern={this.pattern}\n onWheel={this.handleWheel}\n onKeyDown={this.onKeyDown}\n value={this.value}\n placeholder={this.placeholder}\n />\n );\n };\n\n private renderTextarea = (\n properties: JSXBase.TextareaHTMLAttributes<HTMLTextAreaElement>\n ) => {\n if (this.type !== 'textarea') {\n return;\n }\n\n return (\n <span class=\"mdc-text-field__resizer\">\n <textarea {...properties} placeholder={this.placeholder}>\n {this.value}\n </textarea>\n </span>\n );\n };\n\n private layout = () => {\n this.mdcTextField?.layout();\n };\n\n private getAdditionalProps = () => {\n const props: any = {};\n\n if (this.type === 'number') {\n props.step = this.step;\n }\n\n if (this.type === 'number' && Number.isInteger(this.min)) {\n props.min = this.min;\n }\n\n if (this.type === 'number' && Number.isInteger(this.max)) {\n props.max = this.max;\n }\n\n if (this.minlength) {\n props.minlength = this.minlength;\n }\n\n if (this.maxlength) {\n props.maxlength = this.maxlength;\n }\n\n return props;\n };\n\n private onFocus = () => {\n this.isFocused = true;\n this.showCompletions = true;\n };\n\n private onBlur = () => {\n this.isFocused = false;\n this.isModified = true;\n };\n\n private renderHelperLine = () => {\n const text: string = this.value || '';\n const length = text.length;\n\n if (!this.maxlength && !this.hasHelperText()) {\n return;\n }\n\n return (\n <limel-helper-line\n helperTextId={helperTextId}\n helperText={this.helperText}\n length={length}\n maxLength={this.maxlength}\n invalid={this.isInvalid()}\n />\n );\n };\n\n private renderEmptyValueForReadonly = () => {\n if (this.readonly && !this.value) {\n return (\n <span class=\"lime-empty-value-for-readonly lime-looks-like-input-value\">\n –\n </span>\n );\n }\n };\n\n private hasHelperText = () => {\n return this.helperText !== null && this.helperText !== undefined;\n };\n\n private renderSuffix = () => {\n if (!this.hasSuffix() || this.type === 'textarea') {\n return;\n }\n\n const classList = {\n 'mdc-text-field__affix': true,\n 'mdc-text-field__affix--suffix': true,\n };\n\n return <span class={classList}>{this.suffix}</span>;\n };\n\n private hasSuffix = () => {\n return this.suffix !== null && this.suffix !== undefined;\n };\n\n private renderPrefix = () => {\n if (!this.hasPrefix() || this.type === 'textarea') {\n return;\n }\n\n const classList = {\n 'mdc-text-field__affix': true,\n 'mdc-text-field__affix--prefix': true,\n };\n\n return <span class={classList}>{this.prefix}</span>;\n };\n\n private hasPrefix = () => {\n return this.prefix !== null && this.prefix !== undefined;\n };\n\n private isInvalid = () => {\n if (this.readonly) {\n // A readonly field can never be invalid.\n return false;\n }\n\n if (this.invalid) {\n // `this.invalid` is set by the consumer. If the consumer explicitly\n // told us to consider the field invalid, we consider it invalid\n // regardless of what our internal validation thinks, and regardless\n // of whether the field has been modified.\n return true;\n }\n\n if (!this.isModified) {\n return false;\n }\n\n const element = this.getInputElement();\n\n return !(element && element.checkValidity());\n };\n\n private getInputElement = (): HTMLInputElement | HTMLTextAreaElement => {\n let elementName = 'input';\n if (this.type === 'textarea') {\n elementName = 'textarea';\n }\n\n return this.limelInputField.shadowRoot.querySelector(elementName);\n };\n\n private renderLabel = (labelId: string) => {\n const labelClassList = {\n 'mdc-floating-label': true,\n 'mdc-floating-label--float-above':\n !!this.value || this.isFocused || this.readonly,\n };\n\n if (!this.label) {\n return;\n }\n\n return (\n <span class=\"mdc-notched-outline__notch\">\n <span class={labelClassList} id={labelId}>\n {this.label}\n </span>\n </span>\n );\n };\n\n private renderLeadingIcon = () => {\n if (this.type === 'textarea') {\n return;\n }\n\n if (this.leadingIcon) {\n return (\n <i class=\"material-icons mdc-text-field__icon mdc-text-field__icon--leading\">\n <limel-icon name={this.leadingIcon} />\n </i>\n );\n }\n };\n\n private renderTrailingLinkOrButton = () => {\n if (this.type === 'textarea') {\n return;\n }\n\n const html = [];\n\n const trailingIcon = this.getTrailingIcon();\n\n if (!this.isInvalid() && this.hasLink()) {\n html.push(this.renderLinkIcon(this.getLink(), trailingIcon));\n } else if (trailingIcon) {\n html.push(this.renderTrailingIcon(trailingIcon));\n }\n\n return html;\n };\n\n private hasLink = () => {\n return (\n this.showLink &&\n ['email', 'tel', 'url', 'urlAsText'].includes(this.type)\n );\n };\n\n private getLink = () => {\n const props: LinkProperties = { href: '' };\n switch (this.type) {\n case 'email':\n props.href = `mailto:${this.value}`;\n break;\n case 'tel':\n props.href = `tel:${this.value}`;\n break;\n default:\n props.href = getHref(this.value);\n props.target = getTarget(this.value);\n }\n\n return props;\n };\n\n private renderLinkIcon = (linkProps: LinkProperties, icon: string) => {\n // If the trailing icon uses the class `mdc-text-field__icon--trailing`,\n // MDC attaches a click handler to it, which apparently runs\n // `preventDefault()` on the event. For links, we don't want that,\n // so instead of `mdc-text-field__icon--trailing`, we use our own class\n // `lime-trailing-icon-for-link`, which uses all the same styling. /Ads\n return (\n <a\n {...linkProps}\n class=\"material-icons mdc-text-field__icon lime-trailing-icon-for-link\"\n tabindex={this.disabled || !this.value ? '-1' : '0'}\n role=\"button\"\n >\n <limel-icon name={icon} />\n </a>\n );\n };\n\n private renderTrailingIcon = (icon: string) => {\n const props: any = {\n tabIndex: this.isInvalid() ? '-1' : '0',\n };\n if (!this.isInvalid()) {\n props.onKeyPress = this.handleIconKeyPress;\n props.onClick = this.handleIconClick;\n props.role = 'button';\n }\n\n return (\n <i\n class=\"material-icons mdc-text-field__icon mdc-text-field__icon--trailing\"\n {...props}\n >\n <limel-icon name={icon} />\n </i>\n );\n };\n\n private getTrailingIcon = () => {\n if (this.isInvalid()) {\n return 'high_importance';\n }\n\n if (this.trailingIcon) {\n return this.trailingIcon;\n }\n\n if (this.showLink && this.type === 'email') {\n return 'filled_message';\n }\n\n if (this.showLink && this.type === 'tel') {\n return 'phone';\n }\n\n if (\n this.showLink &&\n (this.type === 'url' || this.type === 'urlAsText')\n ) {\n return 'external_link';\n }\n };\n\n private renderFormattedNumber = () => {\n if (this.type !== 'number') {\n return;\n }\n\n let renderValue = this.value;\n if (this.formatNumber && this.value) {\n renderValue = new Intl.NumberFormat(navigator.language).format(\n Number(this.value)\n );\n }\n\n return (\n <span class=\"lime-formatted-input lime-looks-like-input-value\">\n {renderValue}\n </span>\n );\n };\n\n /**\n * Key handler for the input field\n * Will change focus to the first/last item in the dropdown list to enable selection with the keyboard\n * @param {KeyboardEvent} event event\n * @returns {void}\n */\n\n private onKeyDown = (event: KeyboardEvent): void => {\n this.showCompletions = true;\n const isForwardTab =\n (event.key === TAB || event.keyCode === TAB_KEY_CODE) &&\n !event.altKey &&\n !event.metaKey &&\n !event.shiftKey;\n const isUp =\n event.key === ARROW_UP || event.keyCode === ARROW_UP_KEY_CODE;\n const isDown =\n event.key === ARROW_DOWN || event.keyCode === ARROW_DOWN_KEY_CODE;\n\n if (event.keyCode === TAB_KEY_CODE && event.shiftKey) {\n this.showCompletions = false;\n }\n\n if (!isForwardTab && !isUp && !isDown) {\n return;\n }\n\n const list = document.querySelector(` #${this.portalId} limel-list`);\n\n if (!list) {\n return;\n }\n\n event.preventDefault();\n if (isForwardTab || isDown) {\n const listElement: HTMLElement = list.shadowRoot.querySelector(\n '.mdc-deprecated-list-item:first-child'\n );\n listElement.focus();\n\n return;\n }\n\n if (isUp) {\n const listElement: HTMLElement = list.shadowRoot.querySelector(\n '.mdc-deprecated-list-item:last-child'\n );\n listElement.focus();\n }\n };\n\n private handleCompletionChange = (\n event: LimelListCustomEvent<ListItem>\n ) => {\n event.stopPropagation();\n if (!event.detail) {\n return;\n }\n\n this.showCompletions = false;\n\n /*\n This change event doesn't need to be debounced in itself, but we want\n to make absolutely sure that an earlier change event that *has* been\n debounced doesn't emit after this one. Therefore, we run this through\n the same debounced emitter function. /Ads\n */\n this.changeEmitter(event.detail.text);\n };\n\n private renderAutocompleteList = () => {\n if (this.type === 'textarea' || !this.completions.length) {\n return;\n }\n\n return this.renderDropdown();\n };\n\n private renderPortal = (content = null) => {\n const dropdownZIndex = getComputedStyle(\n this.limelInputField\n ).getPropertyValue('--dropdown-z-index');\n\n return (\n <limel-portal\n visible={this.showCompletions}\n containerId={this.portalId}\n inheritParentWidth={true}\n containerStyle={{ 'z-index': dropdownZIndex }}\n >\n <limel-menu-surface\n open={this.showCompletions}\n allowClicksElement={this.limelInputField}\n style={{\n '--mdc-menu-min-width': '100%',\n 'max-height': 'inherit',\n display: 'flex',\n }}\n onDismiss={this.handleCloseMenu}\n >\n {content}\n </limel-menu-surface>\n </limel-portal>\n );\n };\n\n private renderDropdown = () => {\n const content = this.renderListResult();\n\n return this.renderPortal(content);\n };\n\n private renderListResult = () => {\n const filteredCompletions: ListItem[] = this.filterCompletions(\n this.value\n );\n if (!filteredCompletions || filteredCompletions.length === 0) {\n return null;\n }\n\n return (\n <limel-list\n onChange={this.handleCompletionChange}\n onKeyDown={this.handleKeyDownInDropdown}\n type=\"selectable\"\n items={filteredCompletions}\n />\n );\n };\n\n private handleKeyDownInDropdown = (event: KeyboardEvent) => {\n const keyFound = [TAB, ESCAPE, ENTER].includes(event.key);\n const keyCodeFound = [\n TAB_KEY_CODE,\n ESCAPE_KEY_CODE,\n ENTER_KEY_CODE,\n ].includes(event.keyCode);\n if (keyFound || keyCodeFound) {\n this.setFocus();\n }\n };\n\n private handleCloseMenu = () => {\n this.showCompletions = false;\n };\n\n private filterCompletions = (filter: string) => {\n if (!filter) {\n return this.completionsList;\n }\n\n return this.completionsList.filter(\n (completion) =>\n completion.text.toLowerCase().indexOf(filter.toLowerCase()) > -1\n );\n };\n\n private handleChange = (event) => {\n event.stopPropagation();\n let value = event.target.value;\n\n if (this.type === 'number') {\n if (!value && event.data) {\n event.stopPropagation();\n\n return;\n }\n\n if (value) {\n value = Number(value);\n }\n }\n\n this.changeEmitter(value);\n };\n\n private changeEmitter = (value: string) => {\n this.change.emit(value);\n };\n\n private handleIconClick = () => {\n if (!this.isInvalid()) {\n this.action.emit();\n }\n };\n\n private handleIconKeyPress = (event: KeyboardEvent) => {\n const isEnter = event.key === ENTER || event.keyCode === ENTER_KEY_CODE;\n const isSpace = event.key === SPACE || event.keyCode === SPACE_KEY_CODE;\n\n if ((isSpace || isEnter) && !this.isInvalid()) {\n this.action.emit();\n }\n };\n\n private handleWheel = () => {\n // This empty event handler is here to circumvent a bug.\n // In some browsers (Chrome for example), hovering the input with\n // the input focused, and scrolling, will both change the value\n // AND scroll the page. We would prefer to never change the value\n // on scroll, instead always scrolling the page, but since we\n // haven't found a way to do that, this is the next best thing, as\n // it prevents the page from being scrolled, but only in the\n // circumstances when the value is changed by the scrolling.\n // Please test THOROUGHLY if you remove this event handler 😄\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"input-field.js","sourceRoot":"","sources":["../../../src/components/input-field/input-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import { MDCTextField } from '@material/textfield';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { debounce } from 'lodash-es';\nimport {\n ARROW_DOWN,\n ARROW_DOWN_KEY_CODE,\n ARROW_UP,\n ARROW_UP_KEY_CODE,\n ENTER,\n ENTER_KEY_CODE,\n ESCAPE,\n ESCAPE_KEY_CODE,\n SPACE,\n SPACE_KEY_CODE,\n TAB,\n TAB_KEY_CODE,\n} from '../../util/keycodes';\nimport { InputType } from './input-field.types';\nimport { LimelListCustomEvent, ListItem } from '@limetech/lime-elements';\nimport { getHref, getTarget } from '../../util/link-helper';\nimport { JSXBase } from '@stencil/core/internal';\nimport { createRandomString } from '../../util/random-string';\n\ninterface LinkProperties {\n href: string;\n target?: string;\n}\n\n/**\n * @exampleComponent limel-example-input-field-text\n * @exampleComponent limel-example-input-field-placeholder\n * @exampleComponent limel-example-input-field-text-multiple\n * @exampleComponent limel-example-input-field-number\n * @exampleComponent limel-example-input-field-autocomplete\n * @exampleComponent limel-example-input-field-icon-leading\n * @exampleComponent limel-example-input-field-icon-trailing\n * @exampleComponent limel-example-input-field-icon-both\n * @exampleComponent limel-example-input-field-showlink\n * @exampleComponent limel-example-input-field-error-icon\n * @exampleComponent limel-example-input-field-textarea\n * @exampleComponent limel-example-input-field-suffix\n * @exampleComponent limel-example-input-field-prefix\n * @exampleComponent limel-example-input-field-search\n * @exampleComponent limel-example-input-field-pattern\n * @exampleComponent limel-example-input-field-focus\n */\n@Component({\n tag: 'limel-input-field',\n shadow: true,\n styleUrl: 'input-field.scss',\n})\nexport class InputField {\n /**\n * Set to `true` to disable the field.\n * Use `disabled` to indicate that the field can normally be interacted\n * with, but is currently disabled. This tells the user that if certain\n * requirements are met, the field may become enabled again.\n */\n @Prop({ reflect: true })\n public disabled = false;\n\n /**\n * Set to `true` to make the field read-only.\n * Use `readonly` when the field is only there to present the data it holds,\n * and will not become possible for the current user to edit.\n */\n @Prop({ reflect: true })\n public readonly = false;\n\n /**\n * Set to `true` to indicate that the current value of the input field is\n * invalid.\n */\n @Prop({ reflect: true })\n public invalid = false;\n\n /**\n * The input label.\n */\n @Prop({ reflect: true })\n public label: string;\n\n /**\n * The placeholder text shown inside the input field, when the field is focused and empty.\n */\n @Prop({ reflect: true })\n public placeholder: string;\n\n /**\n * Optional helper text to display below the input field when it has focus\n */\n @Prop({ reflect: true })\n public helperText: string;\n\n /**\n * A short piece of text to display before the value inside the input field.\n * Displayed for all types except `textarea`.\n */\n @Prop({ reflect: true })\n public prefix: string;\n\n /**\n * A short piece of text to display after the value inside the input field.\n * Displayed for all types except `textarea`.\n */\n @Prop({ reflect: true })\n public suffix: string;\n\n /**\n * Set to `true` to indicate that the field is required.\n */\n @Prop({ reflect: true })\n public required = false;\n\n /**\n * The value of the field.\n */\n @Prop({ reflect: true })\n public value: string;\n\n /**\n * Trailing icon to show to the far right in the field.\n */\n @Prop({ reflect: true })\n public trailingIcon: string;\n\n /**\n * Leading icon to show to the far left in the field.\n */\n @Prop({ reflect: true })\n public leadingIcon: string;\n\n /**\n * Regular expression that the current value of the input field must match.\n * No forward slashes should be specified around the pattern.\n * Only used if type is `text`, `tel`, `email`, `url`, `urlAsText`,\n * `password`, or `search`.\n */\n @Prop({ reflect: true })\n public pattern: string;\n\n /**\n * Type of input.\n *\n * Note** regarding type `url`: `limel-input` uses the native validation\n * built into the browser for many types of input fields. The native\n * validation for `url` is very strict, and does not allow relative urls,\n * nor any other formats that are not a \"fully qualified\" url. To allow\n * such urls, use the type `urlAsText` instead. `urlAsText` works exactly\n * like `text` in all regards, except that it enables use of the `showLink`\n * property.\n */\n @Prop({ reflect: true })\n public type: InputType = 'text';\n\n /**\n * Set to `true` to format the current value of the input field only\n * if the field is of type number.\n * The number format is determined by the current language of the browser.\n */\n @Prop({ reflect: true })\n public formatNumber = true;\n\n /**\n * Incremental values that are valid if the field type is `number`.\n */\n @Prop({ reflect: true })\n public step: number | 'any' = 'any';\n\n /**\n * Maximum allowed value if input type is `number`.\n */\n @Prop({ reflect: true })\n public max: number;\n\n /**\n * Minimum allowed value if input type is `number`.\n */\n @Prop({ reflect: true })\n public min: number;\n\n /**\n * Maximum length of the value if type is `password`, `search`, `tel`,\n * `text`, `url`, or `urlAsText`.\n */\n @Prop({ reflect: true })\n public maxlength: number;\n\n /**\n * Minimum length of the value if type is `password`, `search`, `tel`,\n * `text`, `url`, or `urlAsText`.\n */\n @Prop({ reflect: true })\n public minlength: number;\n\n /**\n * list of suggestions `value` can autocomplete to.\n */\n @Prop()\n public completions: string[] = [];\n\n /**\n * For inputs of type `email`, `tel`, `url`, and `urlAsText`, set this to\n * `true` to show a trailing icon with a `mailto:`,`tel:`, or normal link,\n * respectively. The default icon can be overridden using the `trailingIcon`\n * property.\n */\n @Prop({ reflect: true })\n public showLink = false;\n\n /**\n * Emitted when the input value is changed.\n */\n @Event()\n private change: EventEmitter<string>;\n\n /**\n * Emitted when `trailingIcon` or `leadingIcon` is set\n * and the icon is interacted with.\n */\n @Event()\n private action: EventEmitter<void>;\n\n @Element()\n private limelInputField: HTMLLimelInputFieldElement;\n\n @State()\n private isFocused: boolean = false;\n\n @State()\n private isModified: boolean = false;\n\n @State()\n public showCompletions: boolean = false;\n\n private mdcTextField: MDCTextField;\n private completionsList: ListItem[] = [];\n private portalId: string;\n private helperTextId: string;\n private labelId: string;\n\n constructor() {\n const debounceTimeout = 300;\n this.changeEmitter = debounce(this.changeEmitter, debounceTimeout);\n\n this.portalId = createRandomString();\n this.helperTextId = createRandomString();\n this.labelId = createRandomString();\n }\n\n public connectedCallback() {\n this.initialize();\n }\n\n public componentDidLoad() {\n this.initialize();\n }\n\n public disconnectedCallback() {\n if (this.mdcTextField) {\n this.mdcTextField.destroy();\n }\n\n window.removeEventListener('resize', this.layout);\n this.limelInputField.removeEventListener('focus', this.setFocus);\n }\n\n public componentDidUpdate() {\n if (this.invalid) {\n this.mdcTextField.valid = false;\n }\n }\n\n public render() {\n const properties = this.getAdditionalProps();\n properties['aria-labelledby'] = this.labelId;\n properties.class = 'mdc-text-field__input';\n properties.onInput = this.handleChange;\n properties.onFocus = this.onFocus;\n properties.onBlur = this.onBlur;\n properties.required = this.required;\n properties.readonly = this.readonly;\n properties.disabled = this.disabled || this.readonly;\n\n if (this.hasHelperText()) {\n properties['aria-controls'] = this.helperTextId;\n properties['aria-describedby'] = this.helperTextId;\n }\n\n return [\n <label class={this.getContainerClassList()}>\n <span class=\"mdc-notched-outline\" tabindex=\"-1\">\n <span class=\"mdc-notched-outline__leading\"></span>\n {this.renderLabel()}\n <span class=\"mdc-notched-outline__trailing\"></span>\n </span>\n {this.renderLeadingIcon()}\n {this.renderEmptyValueForReadonly()}\n {this.renderPrefix()}\n {this.renderFormattedNumber()}\n {this.renderInput(properties)}\n {this.renderSuffix()}\n {this.renderTextarea(properties)}\n {this.renderTrailingLinkOrButton()}\n </label>,\n this.renderHelperLine(),\n this.renderAutocompleteList(),\n ];\n }\n\n @Watch('value')\n protected valueWatcher(newValue: string) {\n if (!this.mdcTextField) {\n return;\n }\n\n if (newValue !== this.mdcTextField.value) {\n this.mdcTextField.value = newValue || '';\n }\n }\n\n private initialize = () => {\n const element =\n this.limelInputField.shadowRoot.querySelector('.mdc-text-field');\n if (!element) {\n return;\n }\n\n this.mdcTextField = new MDCTextField(element);\n\n this.completionsList = [...this.completions].map((item) => {\n return { text: item };\n });\n\n window.addEventListener('resize', this.layout, { passive: true });\n this.limelInputField.addEventListener('focus', this.setFocus);\n };\n\n private setFocus = () => {\n this.mdcTextField.focus();\n };\n\n private getContainerClassList = () => {\n const classList = {\n 'mdc-text-field': true,\n 'mdc-text-field--no-label': !this.label,\n 'mdc-text-field--outlined': true,\n 'mdc-text-field--invalid': this.isInvalid(),\n 'mdc-text-field--disabled': this.disabled || this.readonly,\n 'lime-text-field--readonly': this.readonly,\n 'mdc-text-field--required': this.required,\n 'lime-text-field--empty': !this.value,\n 'lime-has-prefix': this.hasPrefix(),\n 'lime-has-suffix': this.hasSuffix(),\n };\n\n if (this.type === 'textarea') {\n classList['mdc-text-field--textarea'] = true;\n classList['has-helper-line'] =\n !!this.helperText || !!this.maxlength;\n } else {\n classList['mdc-text-field--with-leading-icon'] = !!this.leadingIcon;\n classList['mdc-text-field--with-trailing-icon'] =\n !!this.getTrailingIcon();\n }\n\n return classList;\n };\n\n private renderInput = (\n properties: JSXBase.InputHTMLAttributes<HTMLInputElement>\n ) => {\n if (this.type === 'textarea') {\n return;\n }\n\n const type = this.type === 'urlAsText' ? 'text' : this.type;\n\n return (\n <input\n {...properties}\n type={type}\n pattern={this.pattern}\n onWheel={this.handleWheel}\n onKeyDown={this.onKeyDown}\n value={this.value}\n placeholder={this.placeholder}\n />\n );\n };\n\n private renderTextarea = (\n properties: JSXBase.TextareaHTMLAttributes<HTMLTextAreaElement>\n ) => {\n if (this.type !== 'textarea') {\n return;\n }\n\n return (\n <span class=\"mdc-text-field__resizer\">\n <textarea {...properties} placeholder={this.placeholder}>\n {this.value}\n </textarea>\n </span>\n );\n };\n\n private layout = () => {\n this.mdcTextField?.layout();\n };\n\n private getAdditionalProps = () => {\n const props: any = {};\n\n if (this.type === 'number') {\n props.step = this.step;\n }\n\n if (this.type === 'number' && Number.isInteger(this.min)) {\n props.min = this.min;\n }\n\n if (this.type === 'number' && Number.isInteger(this.max)) {\n props.max = this.max;\n }\n\n if (this.minlength) {\n props.minlength = this.minlength;\n }\n\n if (this.maxlength) {\n props.maxlength = this.maxlength;\n }\n\n return props;\n };\n\n private onFocus = () => {\n this.isFocused = true;\n this.showCompletions = true;\n };\n\n private onBlur = () => {\n this.isFocused = false;\n this.isModified = true;\n };\n\n private renderHelperLine = () => {\n const text: string = this.value || '';\n const length = text.length;\n\n if (!this.maxlength && !this.hasHelperText()) {\n return;\n }\n\n return (\n <limel-helper-line\n helperTextId={this.helperTextId}\n helperText={this.helperText}\n length={length}\n maxLength={this.maxlength}\n invalid={this.isInvalid()}\n />\n );\n };\n\n private renderEmptyValueForReadonly = () => {\n if (this.readonly && !this.value) {\n return (\n <span class=\"lime-empty-value-for-readonly lime-looks-like-input-value\">\n –\n </span>\n );\n }\n };\n\n private hasHelperText = () => {\n return this.helperText !== null && this.helperText !== undefined;\n };\n\n private renderSuffix = () => {\n if (!this.hasSuffix() || this.type === 'textarea') {\n return;\n }\n\n const classList = {\n 'mdc-text-field__affix': true,\n 'mdc-text-field__affix--suffix': true,\n };\n\n return <span class={classList}>{this.suffix}</span>;\n };\n\n private hasSuffix = () => {\n return this.suffix !== null && this.suffix !== undefined;\n };\n\n private renderPrefix = () => {\n if (!this.hasPrefix() || this.type === 'textarea') {\n return;\n }\n\n const classList = {\n 'mdc-text-field__affix': true,\n 'mdc-text-field__affix--prefix': true,\n };\n\n return <span class={classList}>{this.prefix}</span>;\n };\n\n private hasPrefix = () => {\n return this.prefix !== null && this.prefix !== undefined;\n };\n\n private isInvalid = () => {\n if (this.readonly) {\n // A readonly field can never be invalid.\n return false;\n }\n\n if (this.invalid) {\n // `this.invalid` is set by the consumer. If the consumer explicitly\n // told us to consider the field invalid, we consider it invalid\n // regardless of what our internal validation thinks, and regardless\n // of whether the field has been modified.\n return true;\n }\n\n if (!this.isModified) {\n return false;\n }\n\n const element = this.getInputElement();\n\n return !(element && element.checkValidity());\n };\n\n private getInputElement = (): HTMLInputElement | HTMLTextAreaElement => {\n let elementName = 'input';\n if (this.type === 'textarea') {\n elementName = 'textarea';\n }\n\n return this.limelInputField.shadowRoot.querySelector(elementName);\n };\n\n private renderLabel = () => {\n const labelClassList = {\n 'mdc-floating-label': true,\n 'mdc-floating-label--float-above':\n !!this.value || this.isFocused || this.readonly,\n };\n\n if (!this.label) {\n return;\n }\n\n return (\n <span class=\"mdc-notched-outline__notch\">\n <span class={labelClassList} id={this.labelId}>\n {this.label}\n </span>\n </span>\n );\n };\n\n private renderLeadingIcon = () => {\n if (this.type === 'textarea') {\n return;\n }\n\n if (this.leadingIcon) {\n return (\n <i class=\"material-icons mdc-text-field__icon mdc-text-field__icon--leading\">\n <limel-icon name={this.leadingIcon} />\n </i>\n );\n }\n };\n\n private renderTrailingLinkOrButton = () => {\n if (this.type === 'textarea') {\n return;\n }\n\n const html = [];\n\n const trailingIcon = this.getTrailingIcon();\n\n if (!this.isInvalid() && this.hasLink()) {\n html.push(this.renderLinkIcon(this.getLink(), trailingIcon));\n } else if (trailingIcon) {\n html.push(this.renderTrailingIcon(trailingIcon));\n }\n\n return html;\n };\n\n private hasLink = () => {\n return (\n this.showLink &&\n ['email', 'tel', 'url', 'urlAsText'].includes(this.type)\n );\n };\n\n private getLink = () => {\n const props: LinkProperties = { href: '' };\n switch (this.type) {\n case 'email':\n props.href = `mailto:${this.value}`;\n break;\n case 'tel':\n props.href = `tel:${this.value}`;\n break;\n default:\n props.href = getHref(this.value);\n props.target = getTarget(this.value);\n }\n\n return props;\n };\n\n private renderLinkIcon = (linkProps: LinkProperties, icon: string) => {\n // If the trailing icon uses the class `mdc-text-field__icon--trailing`,\n // MDC attaches a click handler to it, which apparently runs\n // `preventDefault()` on the event. For links, we don't want that,\n // so instead of `mdc-text-field__icon--trailing`, we use our own class\n // `lime-trailing-icon-for-link`, which uses all the same styling. /Ads\n return (\n <a\n {...linkProps}\n class=\"material-icons mdc-text-field__icon lime-trailing-icon-for-link\"\n tabindex={this.disabled || !this.value ? '-1' : '0'}\n role=\"button\"\n >\n <limel-icon name={icon} />\n </a>\n );\n };\n\n private renderTrailingIcon = (icon: string) => {\n const props: any = {\n tabIndex: this.isInvalid() ? '-1' : '0',\n };\n if (!this.isInvalid()) {\n props.onKeyPress = this.handleIconKeyPress;\n props.onClick = this.handleIconClick;\n props.role = 'button';\n }\n\n return (\n <i\n class=\"material-icons mdc-text-field__icon mdc-text-field__icon--trailing\"\n {...props}\n >\n <limel-icon name={icon} />\n </i>\n );\n };\n\n private getTrailingIcon = () => {\n if (this.isInvalid()) {\n return 'high_importance';\n }\n\n if (this.trailingIcon) {\n return this.trailingIcon;\n }\n\n if (this.showLink && this.type === 'email') {\n return 'filled_message';\n }\n\n if (this.showLink && this.type === 'tel') {\n return 'phone';\n }\n\n if (\n this.showLink &&\n (this.type === 'url' || this.type === 'urlAsText')\n ) {\n return 'external_link';\n }\n };\n\n private renderFormattedNumber = () => {\n if (this.type !== 'number') {\n return;\n }\n\n let renderValue = this.value;\n if (this.formatNumber && this.value) {\n renderValue = new Intl.NumberFormat(navigator.language).format(\n Number(this.value)\n );\n }\n\n return (\n <span class=\"lime-formatted-input lime-looks-like-input-value\">\n {renderValue}\n </span>\n );\n };\n\n /**\n * Key handler for the input field\n * Will change focus to the first/last item in the dropdown list to enable selection with the keyboard\n * @param {KeyboardEvent} event event\n * @returns {void}\n */\n\n private onKeyDown = (event: KeyboardEvent): void => {\n this.showCompletions = true;\n const isForwardTab =\n (event.key === TAB || event.keyCode === TAB_KEY_CODE) &&\n !event.altKey &&\n !event.metaKey &&\n !event.shiftKey;\n const isUp =\n event.key === ARROW_UP || event.keyCode === ARROW_UP_KEY_CODE;\n const isDown =\n event.key === ARROW_DOWN || event.keyCode === ARROW_DOWN_KEY_CODE;\n\n if (event.keyCode === TAB_KEY_CODE && event.shiftKey) {\n this.showCompletions = false;\n }\n\n if (!isForwardTab && !isUp && !isDown) {\n return;\n }\n\n const list = document.querySelector(` #${this.portalId} limel-list`);\n\n if (!list) {\n return;\n }\n\n event.preventDefault();\n if (isForwardTab || isDown) {\n const listElement: HTMLElement = list.shadowRoot.querySelector(\n '.mdc-deprecated-list-item:first-child'\n );\n listElement.focus();\n\n return;\n }\n\n if (isUp) {\n const listElement: HTMLElement = list.shadowRoot.querySelector(\n '.mdc-deprecated-list-item:last-child'\n );\n listElement.focus();\n }\n };\n\n private handleCompletionChange = (\n event: LimelListCustomEvent<ListItem>\n ) => {\n event.stopPropagation();\n if (!event.detail) {\n return;\n }\n\n this.showCompletions = false;\n\n /*\n This change event doesn't need to be debounced in itself, but we want\n to make absolutely sure that an earlier change event that *has* been\n debounced doesn't emit after this one. Therefore, we run this through\n the same debounced emitter function. /Ads\n */\n this.changeEmitter(event.detail.text);\n };\n\n private renderAutocompleteList = () => {\n if (this.type === 'textarea' || !this.completions.length) {\n return;\n }\n\n return this.renderDropdown();\n };\n\n private renderPortal = (content = null) => {\n const dropdownZIndex = getComputedStyle(\n this.limelInputField\n ).getPropertyValue('--dropdown-z-index');\n\n return (\n <limel-portal\n visible={this.showCompletions}\n containerId={this.portalId}\n inheritParentWidth={true}\n containerStyle={{ 'z-index': dropdownZIndex }}\n >\n <limel-menu-surface\n open={this.showCompletions}\n allowClicksElement={this.limelInputField}\n style={{\n '--mdc-menu-min-width': '100%',\n 'max-height': 'inherit',\n display: 'flex',\n }}\n onDismiss={this.handleCloseMenu}\n >\n {content}\n </limel-menu-surface>\n </limel-portal>\n );\n };\n\n private renderDropdown = () => {\n const content = this.renderListResult();\n\n return this.renderPortal(content);\n };\n\n private renderListResult = () => {\n const filteredCompletions: ListItem[] = this.filterCompletions(\n this.value\n );\n if (!filteredCompletions || filteredCompletions.length === 0) {\n return null;\n }\n\n return (\n <limel-list\n onChange={this.handleCompletionChange}\n onKeyDown={this.handleKeyDownInDropdown}\n type=\"selectable\"\n items={filteredCompletions}\n />\n );\n };\n\n private handleKeyDownInDropdown = (event: KeyboardEvent) => {\n const keyFound = [TAB, ESCAPE, ENTER].includes(event.key);\n const keyCodeFound = [\n TAB_KEY_CODE,\n ESCAPE_KEY_CODE,\n ENTER_KEY_CODE,\n ].includes(event.keyCode);\n if (keyFound || keyCodeFound) {\n this.setFocus();\n }\n };\n\n private handleCloseMenu = () => {\n this.showCompletions = false;\n };\n\n private filterCompletions = (filter: string) => {\n if (!filter) {\n return this.completionsList;\n }\n\n return this.completionsList.filter(\n (completion) =>\n completion.text.toLowerCase().indexOf(filter.toLowerCase()) > -1\n );\n };\n\n private handleChange = (event) => {\n event.stopPropagation();\n let value = event.target.value;\n\n if (this.type === 'number') {\n if (!value && event.data) {\n event.stopPropagation();\n\n return;\n }\n\n if (value) {\n value = Number(value);\n }\n }\n\n this.changeEmitter(value);\n };\n\n private changeEmitter = (value: string) => {\n this.change.emit(value);\n };\n\n private handleIconClick = () => {\n if (!this.isInvalid()) {\n this.action.emit();\n }\n };\n\n private handleIconKeyPress = (event: KeyboardEvent) => {\n const isEnter = event.key === ENTER || event.keyCode === ENTER_KEY_CODE;\n const isSpace = event.key === SPACE || event.keyCode === SPACE_KEY_CODE;\n\n if ((isSpace || isEnter) && !this.isInvalid()) {\n this.action.emit();\n }\n };\n\n private handleWheel = () => {\n // This empty event handler is here to circumvent a bug.\n // In some browsers (Chrome for example), hovering the input with\n // the input focused, and scrolling, will both change the value\n // AND scroll the page. We would prefer to never change the value\n // on scroll, instead always scrolling the page, but since we\n // haven't found a way to do that, this is the next best thing, as\n // it prevents the page from being scrolled, but only in the\n // circumstances when the value is changed by the scrolling.\n // Please test THOROUGHLY if you remove this event handler 😄\n };\n}\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { forceUpdate } from '@stencil/core';
|
|
2
|
+
const eventHandlers = new WeakMap();
|
|
3
|
+
export function makeEnterClickable(element) {
|
|
4
|
+
if (eventHandlers.has(element)) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
let isActive = false;
|
|
8
|
+
let hasJustReleasedEnter = true;
|
|
9
|
+
const keydownHandler = (event) => {
|
|
10
|
+
if (event.key === 'Enter' && !isActive) {
|
|
11
|
+
isActive = true;
|
|
12
|
+
forceUpdate(element);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const keyupHandler = (event) => {
|
|
16
|
+
if (event.key === 'Enter' && isActive) {
|
|
17
|
+
isActive = false;
|
|
18
|
+
hasJustReleasedEnter = true;
|
|
19
|
+
forceUpdate(element);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const clickHandler = (event) => {
|
|
23
|
+
if (!isActive) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (hasJustReleasedEnter) {
|
|
27
|
+
hasJustReleasedEnter = false;
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
event.stopImmediatePropagation();
|
|
31
|
+
};
|
|
32
|
+
eventHandlers.set(element, {
|
|
33
|
+
keydownHandler: keydownHandler,
|
|
34
|
+
keyupHandler: keyupHandler,
|
|
35
|
+
clickHandler: clickHandler,
|
|
36
|
+
});
|
|
37
|
+
element.addEventListener('keydown', keydownHandler);
|
|
38
|
+
element.addEventListener('keyup', keyupHandler);
|
|
39
|
+
element.addEventListener('click', clickHandler, true);
|
|
40
|
+
}
|
|
41
|
+
export function removeEnterClickable(element) {
|
|
42
|
+
const callBacks = eventHandlers.get(element);
|
|
43
|
+
if (!callBacks || !eventHandlers.has(element)) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
element.removeEventListener('keydown', callBacks.keydownHandler);
|
|
47
|
+
element.removeEventListener('keyup', callBacks.keyupHandler);
|
|
48
|
+
element.removeEventListener('click', callBacks.clickHandler, true);
|
|
49
|
+
eventHandlers.delete(element);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=makeEnterClickable.js.map
|