@limetech/lime-elements 39.9.4 → 39.10.0
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/CHANGELOG.md +16 -0
- package/dist/cjs/device-C9O7lYI9.js +50 -0
- package/dist/cjs/hotkeys-BtR8uxvl.js +219 -0
- package/dist/cjs/lime-elements.cjs.js +1 -1
- package/dist/cjs/limel-badge.cjs.entry.js +2 -2
- package/dist/cjs/limel-banner.cjs.entry.js +1 -1
- package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js +143 -9
- package/dist/cjs/limel-button-group.cjs.entry.js +1 -1
- package/dist/cjs/limel-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
- package/dist/cjs/limel-circular-progress.cjs.entry.js +1 -1
- package/dist/cjs/limel-code-editor.cjs.entry.js +1 -1
- package/dist/cjs/limel-date-picker.cjs.entry.js +1 -1
- package/dist/cjs/limel-dialog.cjs.entry.js +2 -2
- package/dist/cjs/limel-file-dropzone_2.cjs.entry.js +2 -2
- package/dist/cjs/limel-file.cjs.entry.js +1 -1
- package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
- package/dist/cjs/limel-header.cjs.entry.js +1 -1
- package/dist/cjs/limel-help.cjs.entry.js +2 -2
- package/dist/cjs/limel-helper-line_2.cjs.entry.js +3 -3
- package/dist/cjs/limel-hotkey.cjs.entry.js +128 -0
- 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 +2 -2
- package/dist/cjs/limel-list-item.cjs.entry.js +2 -2
- package/dist/cjs/limel-markdown.cjs.entry.js +1 -1
- package/dist/cjs/limel-menu-item-meta.cjs.entry.js +12 -1
- package/dist/cjs/limel-picker.cjs.entry.js +1 -1
- package/dist/cjs/limel-popover_2.cjs.entry.js +5 -5
- package/dist/cjs/limel-portal_3.cjs.entry.js +4 -4
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +1 -1
- package/dist/cjs/limel-radio-button-group.cjs.entry.js +1 -1
- package/dist/cjs/limel-radio-button.cjs.entry.js +2 -2
- 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 +1 -1
- package/dist/cjs/limel-snackbar.cjs.entry.js +2 -2
- package/dist/cjs/limel-split-button.cjs.entry.js +2 -2
- package/dist/cjs/limel-switch.cjs.entry.js +1 -1
- package/dist/cjs/limel-tab-bar.cjs.entry.js +2 -2
- package/dist/cjs/limel-tab-panel.cjs.entry.js +1 -1
- package/dist/cjs/limel-table.cjs.entry.js +3 -3
- package/dist/cjs/limel-text-editor-link-menu.cjs.entry.js +3 -3
- package/dist/cjs/limel-text-editor.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/badge/badge.js +3 -3
- package/dist/collection/components/banner/banner.js +2 -2
- package/dist/collection/components/button-group/button-group.js +2 -2
- package/dist/collection/components/checkbox/checkbox.js +2 -2
- package/dist/collection/components/chip-set/chip-set.js +2 -2
- package/dist/collection/components/circular-progress/circular-progress.js +2 -2
- package/dist/collection/components/code-editor/code-editor.js +2 -2
- package/dist/collection/components/dialog/dialog.js +3 -3
- package/dist/collection/components/dynamic-label/dynamic-label.js +1 -1
- package/dist/collection/components/file/file.js +2 -2
- package/dist/collection/components/file-dropzone/file-dropzone.js +2 -2
- package/dist/collection/components/file-input/file-input.js +2 -2
- package/dist/collection/components/header/header.js +2 -2
- package/dist/collection/components/help/help.js +3 -3
- package/dist/collection/components/helper-line/helper-line.js +3 -3
- package/dist/collection/components/hotkey/format-display-token.js +95 -0
- package/dist/collection/components/hotkey/hotkey.css +136 -0
- package/dist/collection/components/hotkey/hotkey.js +92 -0
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/icon-button/icon-button.js +1 -1
- package/dist/collection/components/info-tile/info-tile.js +3 -3
- package/dist/collection/components/input-field/input-field.js +1 -1
- package/dist/collection/components/linear-progress/linear-progress.js +1 -1
- package/dist/collection/components/list/list.js +2 -2
- package/dist/collection/components/list-item/list-item.js +2 -2
- package/dist/collection/components/list-item/menu-item-meta/menu-item-meta.js +52 -2
- package/dist/collection/components/markdown/markdown.js +1 -1
- package/dist/collection/components/menu/menu.js +137 -5
- package/dist/collection/components/menu-list/menu-list-renderer.js +4 -1
- package/dist/collection/components/menu-list/menu-list.js +1 -1
- package/dist/collection/components/menu-surface/menu-surface.js +1 -1
- package/dist/collection/components/notched-outline/notched-outline.js +1 -1
- package/dist/collection/components/picker/picker.js +1 -1
- package/dist/collection/components/popover/popover.js +4 -4
- package/dist/collection/components/popover-surface/popover-surface.js +1 -1
- package/dist/collection/components/portal/portal.js +1 -1
- package/dist/collection/components/radio-button-group/radio-button-group.js +1 -1
- package/dist/collection/components/radio-button-group/radio-button.js +2 -2
- package/dist/collection/components/select/select.js +2 -2
- package/dist/collection/components/shortcut/shortcut.js +2 -2
- package/dist/collection/components/slider/slider.js +1 -1
- package/dist/collection/components/snackbar/snackbar.js +3 -3
- package/dist/collection/components/spinner/spinner.js +2 -2
- package/dist/collection/components/split-button/split-button.js +2 -2
- package/dist/collection/components/switch/switch.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +3 -3
- package/dist/collection/components/tab-panel/tab-panel.js +2 -2
- package/dist/collection/components/table/table.js +4 -4
- package/dist/collection/components/text-editor/link-menu/editor-link-menu.js +3 -3
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +1 -1
- package/dist/collection/components/text-editor/text-editor.js +1 -1
- package/dist/collection/components/tooltip/tooltip-content.js +1 -1
- package/dist/collection/components/tooltip/tooltip.js +2 -2
- package/dist/esm/device-B-tmXAXV.js +45 -0
- package/dist/esm/hotkeys-BxrRWYts.js +215 -0
- package/dist/esm/lime-elements.js +1 -1
- package/dist/esm/limel-badge.entry.js +2 -2
- package/dist/esm/limel-banner.entry.js +1 -1
- package/dist/esm/limel-breadcrumbs_7.entry.js +143 -9
- package/dist/esm/limel-button-group.entry.js +1 -1
- package/dist/esm/limel-checkbox.entry.js +1 -1
- package/dist/esm/limel-chip_2.entry.js +1 -1
- package/dist/esm/limel-circular-progress.entry.js +1 -1
- package/dist/esm/limel-code-editor.entry.js +1 -1
- package/dist/esm/limel-date-picker.entry.js +1 -1
- package/dist/esm/limel-dialog.entry.js +2 -2
- package/dist/esm/limel-file-dropzone_2.entry.js +2 -2
- package/dist/esm/limel-file.entry.js +1 -1
- package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
- package/dist/esm/limel-header.entry.js +1 -1
- package/dist/esm/limel-help.entry.js +2 -2
- package/dist/esm/limel-helper-line_2.entry.js +3 -3
- package/dist/esm/limel-hotkey.entry.js +126 -0
- 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 +2 -2
- package/dist/esm/limel-list-item.entry.js +2 -2
- package/dist/esm/limel-markdown.entry.js +1 -1
- package/dist/esm/limel-menu-item-meta.entry.js +12 -1
- package/dist/esm/limel-picker.entry.js +1 -1
- package/dist/esm/limel-popover_2.entry.js +5 -5
- package/dist/esm/limel-portal_3.entry.js +4 -4
- package/dist/esm/limel-prosemirror-adapter.entry.js +1 -1
- package/dist/esm/limel-radio-button-group.entry.js +1 -1
- package/dist/esm/limel-radio-button.entry.js +2 -2
- 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 +1 -1
- package/dist/esm/limel-snackbar.entry.js +2 -2
- package/dist/esm/limel-split-button.entry.js +2 -2
- package/dist/esm/limel-switch.entry.js +1 -1
- package/dist/esm/limel-tab-bar.entry.js +2 -2
- package/dist/esm/limel-tab-panel.entry.js +1 -1
- package/dist/esm/limel-table.entry.js +3 -3
- package/dist/esm/limel-text-editor-link-menu.entry.js +3 -3
- package/dist/esm/limel-text-editor.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/{p-a30bf079.entry.js → p-12646794.entry.js} +1 -1
- package/dist/lime-elements/{p-f70b8487.entry.js → p-1635ece7.entry.js} +1 -1
- package/dist/lime-elements/{p-86eebe44.entry.js → p-17e1d911.entry.js} +1 -1
- package/dist/lime-elements/{p-8c418a0b.entry.js → p-23c1033d.entry.js} +1 -1
- package/dist/lime-elements/{p-57c53ed4.entry.js → p-268d2a30.entry.js} +1 -1
- package/dist/lime-elements/{p-e2f1b070.entry.js → p-2750b828.entry.js} +1 -1
- package/dist/lime-elements/{p-1a3a7374.entry.js → p-30e54f05.entry.js} +1 -1
- package/dist/lime-elements/{p-1d4285b1.entry.js → p-3e68cbda.entry.js} +2 -2
- package/dist/lime-elements/{p-de1e5ad9.entry.js → p-438652d6.entry.js} +1 -1
- package/dist/lime-elements/{p-ef75eed9.entry.js → p-59716b48.entry.js} +1 -1
- package/dist/lime-elements/{p-b11751c9.entry.js → p-60260fa3.entry.js} +1 -1
- package/dist/lime-elements/{p-444c7966.entry.js → p-607ad3b7.entry.js} +1 -1
- package/dist/lime-elements/{p-b6ccc921.entry.js → p-61253dea.entry.js} +1 -1
- package/dist/lime-elements/{p-a2295fa6.entry.js → p-689770db.entry.js} +1 -1
- package/dist/lime-elements/{p-08d1b87a.entry.js → p-6fd84e57.entry.js} +1 -1
- package/dist/lime-elements/{p-1547b9c8.entry.js → p-733ebba6.entry.js} +1 -1
- package/dist/lime-elements/{p-288aa326.entry.js → p-77f42eff.entry.js} +1 -1
- package/dist/lime-elements/{p-d5da5b05.entry.js → p-7bd71b2b.entry.js} +1 -1
- package/dist/lime-elements/{p-266c228c.entry.js → p-86a001e2.entry.js} +1 -1
- package/dist/lime-elements/{p-aeebf410.entry.js → p-87c5e951.entry.js} +1 -1
- package/dist/lime-elements/p-8805080c.entry.js +1 -0
- package/dist/lime-elements/{p-c6b9425b.entry.js → p-889a05e4.entry.js} +1 -1
- package/dist/lime-elements/{p-e14b7393.entry.js → p-8b106865.entry.js} +1 -1
- package/dist/lime-elements/{p-b3622713.entry.js → p-8e3cc9b0.entry.js} +1 -1
- package/dist/lime-elements/{p-f59590f1.entry.js → p-9015c90c.entry.js} +2 -2
- package/dist/lime-elements/{p-287c4fb1.entry.js → p-9abfb8ba.entry.js} +1 -1
- package/dist/lime-elements/{p-da9f1fc4.entry.js → p-9d629f5f.entry.js} +10 -10
- package/dist/lime-elements/p-B-tmXAXV.js +1 -0
- package/dist/lime-elements/p-BxrRWYts.js +1 -0
- package/dist/lime-elements/p-a026cc24.entry.js +1 -0
- package/dist/lime-elements/{p-74cd80a9.entry.js → p-a243b8e2.entry.js} +1 -1
- package/dist/lime-elements/p-b64ae828.entry.js +1 -0
- package/dist/lime-elements/{p-bb38bb3c.entry.js → p-b91b1aed.entry.js} +1 -1
- package/dist/lime-elements/{p-d6d177bc.entry.js → p-be0cbddb.entry.js} +1 -1
- package/dist/lime-elements/p-c20a620d.entry.js +1 -0
- package/dist/lime-elements/{p-1590b341.entry.js → p-c84911e6.entry.js} +1 -1
- package/dist/lime-elements/{p-2af214de.entry.js → p-c9591213.entry.js} +1 -1
- package/dist/lime-elements/{p-268a695b.entry.js → p-ce20d720.entry.js} +1 -1
- package/dist/lime-elements/{p-eaac5ad2.entry.js → p-e0716b51.entry.js} +1 -1
- package/dist/lime-elements/{p-37b41bad.entry.js → p-e89dcf27.entry.js} +1 -1
- package/dist/lime-elements/{p-3683e2e2.entry.js → p-f92f4f00.entry.js} +1 -1
- package/dist/lime-elements/{p-ef9bb368.entry.js → p-f9cfcd03.entry.js} +1 -1
- package/dist/types/components/badge/badge.d.ts +1 -1
- package/dist/types/components/banner/banner.d.ts +1 -1
- package/dist/types/components/button-group/button-group.d.ts +1 -1
- package/dist/types/components/checkbox/checkbox.d.ts +1 -1
- package/dist/types/components/chip-set/chip-set.d.ts +1 -1
- package/dist/types/components/circular-progress/circular-progress.d.ts +1 -1
- package/dist/types/components/code-editor/code-editor.d.ts +1 -1
- package/dist/types/components/dialog/dialog.d.ts +1 -1
- package/dist/types/components/dynamic-label/dynamic-label.d.ts +1 -1
- package/dist/types/components/file/file.d.ts +1 -1
- package/dist/types/components/file-dropzone/file-dropzone.d.ts +1 -1
- package/dist/types/components/file-input/file-input.d.ts +1 -1
- package/dist/types/components/header/header.d.ts +1 -1
- package/dist/types/components/help/help.d.ts +1 -1
- package/dist/types/components/helper-line/helper-line.d.ts +1 -1
- package/dist/types/components/hotkey/format-display-token.d.ts +15 -0
- package/dist/types/components/hotkey/hotkey.d.ts +27 -0
- package/dist/types/components/info-tile/info-tile.d.ts +1 -1
- package/dist/types/components/linear-progress/linear-progress.d.ts +1 -1
- package/dist/types/components/list/list.d.ts +1 -1
- package/dist/types/components/list-item/menu-item-meta/menu-item-meta.d.ts +8 -0
- package/dist/types/components/menu/menu.d.ts +14 -1
- package/dist/types/components/menu/menu.types.d.ts +14 -0
- package/dist/types/components/select/select.d.ts +1 -1
- package/dist/types/components/shortcut/shortcut.d.ts +1 -1
- package/dist/types/components/snackbar/snackbar.d.ts +1 -1
- package/dist/types/components/spinner/spinner.d.ts +1 -1
- package/dist/types/components/switch/switch.d.ts +1 -1
- package/dist/types/components/tab-bar/tab-bar.d.ts +1 -1
- package/dist/types/components/tab-panel/tab-panel.d.ts +1 -1
- package/dist/types/components/table/table.d.ts +1 -1
- package/dist/types/components.d.ts +211 -108
- package/package.json +1 -1
- package/dist/cjs/device-CDZCRYph.js +0 -30
- package/dist/esm/device-CY72JnWG.js +0 -26
- package/dist/lime-elements/p-3e9a1f2b.entry.js +0 -1
- package/dist/lime-elements/p-5178cc39.entry.js +0 -1
- package/dist/lime-elements/p-7afe6c3e.entry.js +0 -1
- package/dist/lime-elements/p-CY72JnWG.js +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
|
+
import { normalizeHotkeyString } from "../../../util/hotkeys";
|
|
2
3
|
/**
|
|
3
4
|
* Meta content for menu list items
|
|
4
5
|
*
|
|
@@ -11,15 +12,25 @@ import { Host, h } from "@stencil/core";
|
|
|
11
12
|
*/
|
|
12
13
|
export class MenuItemMeta {
|
|
13
14
|
constructor() {
|
|
15
|
+
/**
|
|
16
|
+
* Will be set to `true` when the menu item is disabled.
|
|
17
|
+
*/
|
|
18
|
+
this.disabled = false;
|
|
14
19
|
/**
|
|
15
20
|
* Shows a submenu chevron to indicate nested items
|
|
16
21
|
*/
|
|
17
22
|
this.showChevron = false;
|
|
18
23
|
}
|
|
19
24
|
render() {
|
|
20
|
-
return (h(Host, { key: '
|
|
25
|
+
return (h(Host, { key: '4341b1cd34952fdd2dc40bc3c4b7eb909646d880' }, this.renderCommandText(), this.renderBadge(), this.renderChevron()));
|
|
21
26
|
}
|
|
22
27
|
renderCommandText() {
|
|
28
|
+
if (this.hotkey) {
|
|
29
|
+
const hotkey = normalizeHotkeyString(this.hotkey);
|
|
30
|
+
if (hotkey) {
|
|
31
|
+
return h("limel-hotkey", { value: hotkey, disabled: this.disabled });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
23
34
|
if (!this.commandText) {
|
|
24
35
|
return;
|
|
25
36
|
}
|
|
@@ -67,9 +78,48 @@ export class MenuItemMeta {
|
|
|
67
78
|
},
|
|
68
79
|
"getter": false,
|
|
69
80
|
"setter": false,
|
|
70
|
-
"reflect":
|
|
81
|
+
"reflect": true,
|
|
71
82
|
"attribute": "command-text"
|
|
72
83
|
},
|
|
84
|
+
"hotkey": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"mutable": false,
|
|
87
|
+
"complexType": {
|
|
88
|
+
"original": "string",
|
|
89
|
+
"resolved": "string",
|
|
90
|
+
"references": {}
|
|
91
|
+
},
|
|
92
|
+
"required": false,
|
|
93
|
+
"optional": true,
|
|
94
|
+
"docs": {
|
|
95
|
+
"tags": [],
|
|
96
|
+
"text": "Hotkey to display. When provided, `commandText` is ignored."
|
|
97
|
+
},
|
|
98
|
+
"getter": false,
|
|
99
|
+
"setter": false,
|
|
100
|
+
"reflect": true,
|
|
101
|
+
"attribute": "hotkey"
|
|
102
|
+
},
|
|
103
|
+
"disabled": {
|
|
104
|
+
"type": "boolean",
|
|
105
|
+
"mutable": false,
|
|
106
|
+
"complexType": {
|
|
107
|
+
"original": "boolean",
|
|
108
|
+
"resolved": "boolean",
|
|
109
|
+
"references": {}
|
|
110
|
+
},
|
|
111
|
+
"required": false,
|
|
112
|
+
"optional": false,
|
|
113
|
+
"docs": {
|
|
114
|
+
"tags": [],
|
|
115
|
+
"text": "Will be set to `true` when the menu item is disabled."
|
|
116
|
+
},
|
|
117
|
+
"getter": false,
|
|
118
|
+
"setter": false,
|
|
119
|
+
"reflect": true,
|
|
120
|
+
"attribute": "disabled",
|
|
121
|
+
"defaultValue": "false"
|
|
122
|
+
},
|
|
73
123
|
"badge": {
|
|
74
124
|
"type": "any",
|
|
75
125
|
"mutable": false,
|
|
@@ -119,7 +119,7 @@ export class Markdown {
|
|
|
119
119
|
this.cleanupImageIntersectionObserver();
|
|
120
120
|
}
|
|
121
121
|
render() {
|
|
122
|
-
return (h(Host, { key: '
|
|
122
|
+
return (h(Host, { key: 'd3c5e71466ad7fa2723a0a44bc6ba6742e597ca1' }, h("div", { key: 'ff45056e1a3ad465bdea9026b0c9674d911607a2', id: "markdown", ref: (el) => (this.rootElement = el) })));
|
|
123
123
|
}
|
|
124
124
|
setupImageIntersectionObserver() {
|
|
125
125
|
if (this.lazyLoadImages) {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { h, } from "@stencil/core";
|
|
2
2
|
import { createRandomString } from "../../util/random-string";
|
|
3
3
|
import { zipObject, isFunction } from "lodash-es";
|
|
4
|
-
import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, TAB, } from "../../util/keycodes";
|
|
4
|
+
import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ESCAPE, TAB, } from "../../util/keycodes";
|
|
5
5
|
import { focusTriggerElement } from "../../util/focus-trigger-element";
|
|
6
|
+
import { hotkeyFromKeyboardEvent, normalizeHotkeyString, tokenizeHotkeyString, } from "../../util/hotkeys";
|
|
6
7
|
const DEFAULT_ROOT_BREADCRUMBS_ITEM = {
|
|
7
8
|
text: '',
|
|
8
9
|
icon: {
|
|
@@ -20,13 +21,14 @@ const DEFAULT_ROOT_BREADCRUMBS_ITEM = {
|
|
|
20
21
|
* @exampleComponent limel-example-menu-icons
|
|
21
22
|
* @exampleComponent limel-example-menu-badge-icons
|
|
22
23
|
* @exampleComponent limel-example-menu-grid
|
|
23
|
-
* @exampleComponent limel-example-menu-hotkeys
|
|
24
24
|
* @exampleComponent limel-example-menu-secondary-text
|
|
25
25
|
* @exampleComponent limel-example-menu-notification
|
|
26
26
|
* @exampleComponent limel-example-menu-sub-menus
|
|
27
27
|
* @exampleComponent limel-example-menu-sub-menu-lazy-loading
|
|
28
28
|
* @exampleComponent limel-example-menu-sub-menu-lazy-loading-infinite
|
|
29
29
|
* @exampleComponent limel-example-menu-searchable
|
|
30
|
+
* @exampleComponent limel-example-menu-hotkeys
|
|
31
|
+
* @exampleComponent limel-example-menu-searchable-hotkeys
|
|
30
32
|
* @exampleComponent limel-example-menu-composite
|
|
31
33
|
*/
|
|
32
34
|
export class Menu {
|
|
@@ -75,6 +77,35 @@ export class Menu {
|
|
|
75
77
|
* Clicking it navigates back from a sub-menu to the root menu.
|
|
76
78
|
*/
|
|
77
79
|
this.rootItem = DEFAULT_ROOT_BREADCRUMBS_ITEM;
|
|
80
|
+
this.shouldRestoreFocusOnClose = false;
|
|
81
|
+
this.normalizedHotkeyCache = new Map();
|
|
82
|
+
this.cachedSubMenuSource = null;
|
|
83
|
+
this.cachedSubMenuItems = null;
|
|
84
|
+
this.handleDocumentKeyDown = (event) => {
|
|
85
|
+
if (event.key === ESCAPE && this.open) {
|
|
86
|
+
this.shouldRestoreFocusOnClose = true;
|
|
87
|
+
}
|
|
88
|
+
if (!this.open || event.defaultPrevented || event.repeat) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (this.isFromTextInput(event) && !this.hasModifier(event)) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const pressedHotkey = hotkeyFromKeyboardEvent(event);
|
|
95
|
+
if (!pressedHotkey) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (this.isReservedMenuHotkey(pressedHotkey)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const matchedItem = this.findMenuItemByHotkey(pressedHotkey);
|
|
102
|
+
if (!matchedItem) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
event.stopPropagation();
|
|
106
|
+
event.preventDefault();
|
|
107
|
+
this.handleSelect(matchedItem);
|
|
108
|
+
};
|
|
78
109
|
this.renderLoader = () => {
|
|
79
110
|
if (!this.loadingSubItems && !this.loading) {
|
|
80
111
|
return;
|
|
@@ -164,6 +195,9 @@ export class Menu {
|
|
|
164
195
|
// Will change focus to breadcrumbs (if present) or the first/last item
|
|
165
196
|
// in the dropdown list to enable selection with the keyboard
|
|
166
197
|
this.handleInputKeyDown = (event) => {
|
|
198
|
+
if (event.defaultPrevented) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
167
201
|
const isForwardTab = event.key === TAB &&
|
|
168
202
|
!event.altKey &&
|
|
169
203
|
!event.metaKey &&
|
|
@@ -330,10 +364,14 @@ export class Menu {
|
|
|
330
364
|
}
|
|
331
365
|
};
|
|
332
366
|
this.onClose = () => {
|
|
367
|
+
const restoreFocus = this.shouldRestoreFocusOnClose;
|
|
368
|
+
this.shouldRestoreFocusOnClose = false;
|
|
333
369
|
this.cancel.emit();
|
|
334
370
|
this.open = false;
|
|
335
371
|
this.currentSubMenu = null;
|
|
336
|
-
|
|
372
|
+
if (restoreFocus) {
|
|
373
|
+
setTimeout(this.focusTrigger, 0);
|
|
374
|
+
}
|
|
337
375
|
};
|
|
338
376
|
this.onTriggerClick = (event) => {
|
|
339
377
|
event.stopPropagation();
|
|
@@ -519,23 +557,113 @@ export class Menu {
|
|
|
519
557
|
const cssProperties = this.getCssProperties();
|
|
520
558
|
const dropdownZIndex = getComputedStyle(this.host).getPropertyValue('--dropdown-z-index');
|
|
521
559
|
const menuSurfaceWidth = this.getMenuSurfaceWidth(cssProperties['--menu-surface-width']);
|
|
522
|
-
return (h("div", { key: '
|
|
560
|
+
return (h("div", { key: '720330cf7d07c491a5a9e58a2567896f5526c45a', class: "mdc-menu-surface--anchor", onClick: this.onTriggerClick }, h("slot", { key: 'd3db72fa9e12bafbb039e6a94a1052edf64e060e', ref: this.setTriggerRef, name: "trigger" }), this.renderNotificationBadge(), h("limel-portal", { key: '591f97a745488fbff7eb8fc06b14d2f6e0d21fa6', visible: this.open, containerId: this.portalId, openDirection: this.openDirection, position: "absolute", containerStyle: { 'z-index': dropdownZIndex } }, h("limel-menu-surface", { key: '829a9578894165b28100c4cab519ced0cb7689a0', open: this.open, onDismiss: this.onClose, style: Object.assign(Object.assign({}, cssProperties), { '--menu-surface-width': menuSurfaceWidth, '--limel-menu-surface-display': 'flex', '--limel-menu-surface-flex-direction': 'column' }), class: {
|
|
523
561
|
'has-grid-layout': this.gridLayout,
|
|
524
562
|
} }, this.renderSearchField(), this.renderBreadcrumb(), this.renderLoader(), this.renderEmptyMessage(), this.renderMenuList()))));
|
|
525
563
|
}
|
|
526
564
|
itemsWatcher() {
|
|
527
565
|
this.clearSearch();
|
|
566
|
+
this.normalizedHotkeyCache.clear();
|
|
528
567
|
this.setFocus();
|
|
529
568
|
}
|
|
569
|
+
connectedCallback() {
|
|
570
|
+
if (this.open) {
|
|
571
|
+
document.addEventListener('keydown', this.handleDocumentKeyDown, true);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
disconnectedCallback() {
|
|
575
|
+
document.removeEventListener('keydown', this.handleDocumentKeyDown, true);
|
|
576
|
+
}
|
|
530
577
|
openWatcher(newValue) {
|
|
531
578
|
const opened = newValue;
|
|
532
579
|
if (opened) {
|
|
580
|
+
document.addEventListener('keydown', this.handleDocumentKeyDown, true);
|
|
533
581
|
this.setFocus();
|
|
534
582
|
}
|
|
535
583
|
else {
|
|
584
|
+
document.removeEventListener('keydown', this.handleDocumentKeyDown, true);
|
|
536
585
|
this.clearSearch();
|
|
537
586
|
}
|
|
538
587
|
}
|
|
588
|
+
isFromTextInput(event) {
|
|
589
|
+
const path = typeof event.composedPath === 'function'
|
|
590
|
+
? event.composedPath()
|
|
591
|
+
: [];
|
|
592
|
+
for (const node of path) {
|
|
593
|
+
if (!(node instanceof HTMLElement)) {
|
|
594
|
+
continue;
|
|
595
|
+
}
|
|
596
|
+
if (node.isContentEditable) {
|
|
597
|
+
return true;
|
|
598
|
+
}
|
|
599
|
+
const tagName = node.tagName;
|
|
600
|
+
if (tagName === 'INPUT' ||
|
|
601
|
+
tagName === 'TEXTAREA' ||
|
|
602
|
+
tagName === 'SELECT') {
|
|
603
|
+
return true;
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
return false;
|
|
607
|
+
}
|
|
608
|
+
// Only Ctrl and Meta count as "real" modifiers for the text-input bypass.
|
|
609
|
+
// Alt/Option is intentionally excluded because it is used for typing
|
|
610
|
+
// special characters on international keyboards and macOS (e.g. Option+e
|
|
611
|
+
// for é, AltGr+e for € on Windows). This means alt-only hotkeys like
|
|
612
|
+
// "alt+x" will NOT fire while a text input (e.g. the search field) is
|
|
613
|
+
// focused — only Ctrl/Meta combos will. AltGraph is also explicitly
|
|
614
|
+
// rejected because Windows synthesizes ctrlKey=true for AltGr keypresses.
|
|
615
|
+
hasModifier(event) {
|
|
616
|
+
var _a;
|
|
617
|
+
if ((_a = event.getModifierState) === null || _a === void 0 ? void 0 : _a.call(event, 'AltGraph')) {
|
|
618
|
+
return false;
|
|
619
|
+
}
|
|
620
|
+
return event.ctrlKey || event.metaKey;
|
|
621
|
+
}
|
|
622
|
+
isReservedMenuHotkey(hotkey) {
|
|
623
|
+
const tokens = tokenizeHotkeyString(hotkey);
|
|
624
|
+
const key = tokens.at(-1);
|
|
625
|
+
if (!key) {
|
|
626
|
+
return false;
|
|
627
|
+
}
|
|
628
|
+
const hasModifiers = tokens.length > 1;
|
|
629
|
+
if (hasModifiers) {
|
|
630
|
+
return false;
|
|
631
|
+
}
|
|
632
|
+
return (key === 'arrowup' ||
|
|
633
|
+
key === 'arrowdown' ||
|
|
634
|
+
key === 'arrowleft' ||
|
|
635
|
+
key === 'arrowright' ||
|
|
636
|
+
key === 'tab' ||
|
|
637
|
+
key === 'enter' ||
|
|
638
|
+
key === 'space' ||
|
|
639
|
+
key === 'escape');
|
|
640
|
+
}
|
|
641
|
+
findMenuItemByHotkey(pressedHotkey) {
|
|
642
|
+
for (const item of this.visibleItems) {
|
|
643
|
+
if (!this.isMenuItem(item) || item.disabled) {
|
|
644
|
+
continue;
|
|
645
|
+
}
|
|
646
|
+
const rawHotkey = item.hotkey;
|
|
647
|
+
if (!rawHotkey) {
|
|
648
|
+
continue;
|
|
649
|
+
}
|
|
650
|
+
const normalized = this.getNormalizedHotkey(rawHotkey);
|
|
651
|
+
if (normalized && normalized === pressedHotkey) {
|
|
652
|
+
return item;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
return null;
|
|
656
|
+
}
|
|
657
|
+
getNormalizedHotkey(raw) {
|
|
658
|
+
var _a;
|
|
659
|
+
const cacheKey = raw.trim();
|
|
660
|
+
if (this.normalizedHotkeyCache.has(cacheKey)) {
|
|
661
|
+
return (_a = this.normalizedHotkeyCache.get(cacheKey)) !== null && _a !== void 0 ? _a : null;
|
|
662
|
+
}
|
|
663
|
+
const normalized = normalizeHotkeyString(cacheKey);
|
|
664
|
+
this.normalizedHotkeyCache.set(cacheKey, normalized);
|
|
665
|
+
return normalized;
|
|
666
|
+
}
|
|
539
667
|
getBreadcrumbsItems() {
|
|
540
668
|
const breadCrumbItems = [];
|
|
541
669
|
let currentItem = this.currentSubMenu;
|
|
@@ -598,7 +726,11 @@ export class Menu {
|
|
|
598
726
|
return this.searchResults;
|
|
599
727
|
}
|
|
600
728
|
else if (Array.isArray((_a = this.currentSubMenu) === null || _a === void 0 ? void 0 : _a.items)) {
|
|
601
|
-
|
|
729
|
+
if (this.cachedSubMenuSource !== this.currentSubMenu) {
|
|
730
|
+
this.cachedSubMenuSource = this.currentSubMenu;
|
|
731
|
+
this.cachedSubMenuItems = this.currentSubMenu.items.map((item) => (Object.assign(Object.assign({}, item), { parentItem: this.currentSubMenu })));
|
|
732
|
+
}
|
|
733
|
+
return this.cachedSubMenuItems;
|
|
602
734
|
}
|
|
603
735
|
return this.items;
|
|
604
736
|
}
|
|
@@ -59,12 +59,15 @@ export class MenuListRenderer {
|
|
|
59
59
|
const hasSubMenu = this.hasSubItems(item);
|
|
60
60
|
const hasMeta = hasSubMenu ||
|
|
61
61
|
item.badge !== undefined ||
|
|
62
|
-
|
|
62
|
+
!!item.hotkey ||
|
|
63
|
+
!!item.commandText;
|
|
63
64
|
const primaryComponent = hasMeta
|
|
64
65
|
? {
|
|
65
66
|
name: 'limel-menu-item-meta',
|
|
66
67
|
props: {
|
|
67
68
|
commandText: item.commandText,
|
|
69
|
+
hotkey: item.hotkey,
|
|
70
|
+
disabled: !!item.disabled,
|
|
68
71
|
badge: item.badge,
|
|
69
72
|
showChevron: hasSubMenu,
|
|
70
73
|
},
|
|
@@ -88,7 +88,7 @@ export class MenuList {
|
|
|
88
88
|
iconSize: this.iconSize,
|
|
89
89
|
};
|
|
90
90
|
const html = this.MenuListRenderer.render(this.items, this.config);
|
|
91
|
-
return h("div", { key: '
|
|
91
|
+
return h("div", { key: '1c044c711555d155c5559f8b787a3bbad09b7526', class: "mdc-menu mdc-menu-surface" }, html);
|
|
92
92
|
}
|
|
93
93
|
itemsChanged() {
|
|
94
94
|
setTimeout(() => {
|
|
@@ -105,7 +105,7 @@ export class MenuSurface {
|
|
|
105
105
|
'mdc-elevation-transition': true,
|
|
106
106
|
'mdc-elevation--z4': true,
|
|
107
107
|
};
|
|
108
|
-
return (h("div", { key: '
|
|
108
|
+
return (h("div", { key: '254247a3cd25908f96e55028df567663dd4d736a', class: classList, tabindex: "-1" }, h("slot", { key: 'eb7d1042a28585242d212cf40a34018240cb0502' })));
|
|
109
109
|
}
|
|
110
110
|
static get is() { return "limel-menu-surface"; }
|
|
111
111
|
static get encapsulation() { return "shadow"; }
|
|
@@ -59,7 +59,7 @@ export class NotchedOutline {
|
|
|
59
59
|
this.hasFloatingLabel = false;
|
|
60
60
|
}
|
|
61
61
|
render() {
|
|
62
|
-
return (h("div", { key: '
|
|
62
|
+
return (h("div", { key: '5dd66f7356821043d750963f18ef8f39889e65cc', class: "limel-notched-outline" }, h("slot", { key: '1b2072f7acd112137188b570229470677458ace7', name: "content" }), h("span", { key: '3d1d04a75ff0459b53294a2b2bbb4f15192409cd', class: "limel-notched-outline--outlines", "aria-hidden": "true" }, h("span", { key: '9677d3b3bc1f37e954c3ab2907e98db8b9122466', class: "limel-notched-outline--leading-outline" }), this.renderLabel(), h("span", { key: '62a494be847b2181cdd00f20e50cffbbc121bfd2', class: "limel-notched-outline--trailing-outline" }), this.renderEmptyReadonlyValue())));
|
|
63
63
|
}
|
|
64
64
|
renderLabel() {
|
|
65
65
|
if (!this.label) {
|
|
@@ -188,7 +188,7 @@ export class Picker {
|
|
|
188
188
|
props.maxItems = 1;
|
|
189
189
|
}
|
|
190
190
|
return [
|
|
191
|
-
h("limel-chip-set", Object.assign({ key: '
|
|
191
|
+
h("limel-chip-set", Object.assign({ key: 'e20f22b6907ad1d28f8b8c0847e5080faca09b3b', type: "input", inputType: "search", label: this.label, helperText: this.helperText, leadingIcon: this.leadingIcon, value: this.chips, disabled: this.disabled, invalid: this.invalid, delimiter: this.renderDelimiter(), readonly: this.readonly, required: this.required, searchLabel: this.searchLabel, onInput: this.handleTextInput, onKeyDown: this.handleInputKeyDown, onChange: this.handleChange, onInteract: this.handleInteract, onStartEdit: this.handleInputFieldFocus, onStopEdit: this.handleStopEditAndBlur, emptyInputOnBlur: false, clearAllButton: this.multiple && !this.chipSetEditMode }, props)),
|
|
192
192
|
this.renderDropdown(),
|
|
193
193
|
];
|
|
194
194
|
}
|
|
@@ -117,17 +117,17 @@ export class Popover {
|
|
|
117
117
|
document.addEventListener('click', this.globalClickListener, {
|
|
118
118
|
capture: true,
|
|
119
119
|
});
|
|
120
|
-
document.addEventListener('
|
|
120
|
+
document.addEventListener('keydown', this.handleGlobalKeyPress);
|
|
121
121
|
}
|
|
122
122
|
else {
|
|
123
123
|
document.removeEventListener('click', this.globalClickListener);
|
|
124
|
-
document.removeEventListener('
|
|
124
|
+
document.removeEventListener('keydown', this.handleGlobalKeyPress);
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
render() {
|
|
128
128
|
const cssProperties = this.getCssProperties();
|
|
129
129
|
const popoverZIndex = getComputedStyle(this.host).getPropertyValue('--popover-z-index');
|
|
130
|
-
return (h("div", { key: '
|
|
130
|
+
return (h("div", { key: '53e64435fa661015fbbf2e449890864c8008c329', class: "trigger-anchor" }, h("slot", { key: '85336e8f76377921850ffc7704c7588707c45066', name: "trigger", ref: this.setTriggerRef }), h("limel-portal", { key: 'a40bfde87375a494ac5404911b4b1f058a55becf', visible: this.open, containerId: this.portalId, containerStyle: { 'z-index': popoverZIndex }, openDirection: this.openDirection }, h("limel-popover-surface", { key: '396e369ae3e61a79bfd2f520e05187a6ff85f834', contentCollection: this.host.children, style: cssProperties }))));
|
|
131
131
|
}
|
|
132
132
|
globalClickListener(event) {
|
|
133
133
|
const element = event.target;
|
|
@@ -135,7 +135,7 @@ export class Popover {
|
|
|
135
135
|
if (this.open && !clickedInside) {
|
|
136
136
|
event.stopPropagation();
|
|
137
137
|
event.preventDefault();
|
|
138
|
-
this.
|
|
138
|
+
this.close.emit();
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
getCssProperties() {
|
|
@@ -8,7 +8,7 @@ export class PopoverSurface {
|
|
|
8
8
|
this.appendElement();
|
|
9
9
|
}
|
|
10
10
|
render() {
|
|
11
|
-
return h("div", { key: '
|
|
11
|
+
return h("div", { key: '72e73b254be6cebbd27332329b10a58210ae0352', class: "limel-popover-surface", tabindex: "0" });
|
|
12
12
|
}
|
|
13
13
|
appendElement() {
|
|
14
14
|
const portalContainer = this.host.shadowRoot.querySelector('.limel-popover-surface');
|
|
@@ -120,7 +120,7 @@ export class Portal {
|
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
render() {
|
|
123
|
-
return h("slot", { key: '
|
|
123
|
+
return h("slot", { key: 'd6ed0d276afec19ba5ffd4d6a6fcf96937127d6a' });
|
|
124
124
|
}
|
|
125
125
|
onVisible() {
|
|
126
126
|
if (!this.container && this.visible) {
|
|
@@ -37,7 +37,7 @@ export class RadioButtonGroup {
|
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
render() {
|
|
40
|
-
return (h("limel-list", { key: '
|
|
40
|
+
return (h("limel-list", { key: 'd42e6342d4fd79d34cb2c6a9d25d3dfe577e9a99', items: this.createItems(), type: "radio", badgeIcons: this.badgeIcons, maxLinesSecondaryText: this.maxLinesSecondaryText, onChange: this.handleChange }));
|
|
41
41
|
}
|
|
42
42
|
createItems() {
|
|
43
43
|
return this.items.map((option) => {
|
|
@@ -31,12 +31,12 @@ import { Host, h } from "@stencil/core";
|
|
|
31
31
|
*/
|
|
32
32
|
export class RadioButtonComponent {
|
|
33
33
|
render() {
|
|
34
|
-
return (h(Host, { key: '
|
|
34
|
+
return (h(Host, { key: '64623e09534c5b4e457029cbed4865d97d3cc19e', class: {
|
|
35
35
|
'boolean-input': true,
|
|
36
36
|
'radio-button': true,
|
|
37
37
|
checked: this.checked,
|
|
38
38
|
disabled: this.disabled,
|
|
39
|
-
} }, h("input", { key: '
|
|
39
|
+
} }, h("input", { key: '4eb816e8031d20bbfa5beb32798e50e5d3747895', type: "radio", id: this.id, checked: this.checked, disabled: this.disabled, onChange: this.onChange }), h("div", { key: '9e7d7db22981a16b4655d7cbcd7c3eb2462a7953', class: "box" }), h("label", { key: '4b2061d351b2d4d03d6e5763bc132be46d146e48', class: "boolean-input-label", htmlFor: this.id }, this.label)));
|
|
40
40
|
}
|
|
41
41
|
static get is() { return "limel-radio-button"; }
|
|
42
42
|
static get originalStyleUrls() {
|
|
@@ -7,7 +7,7 @@ import { isMultiple } from "../../util/multiple";
|
|
|
7
7
|
import { createRandomString } from "../../util/random-string";
|
|
8
8
|
import { SelectTemplate, triggerIconColorWarning } from "./select.template";
|
|
9
9
|
/**
|
|
10
|
-
* @exampleComponent limel-example-select
|
|
10
|
+
* @exampleComponent limel-example-select-basic
|
|
11
11
|
* @exampleComponent limel-example-select-with-icons
|
|
12
12
|
* @exampleComponent limel-example-select-with-separators
|
|
13
13
|
* @exampleComponent limel-example-select-with-secondary-text
|
|
@@ -104,7 +104,7 @@ export class Select {
|
|
|
104
104
|
}
|
|
105
105
|
render() {
|
|
106
106
|
const dropdownZIndex = getComputedStyle(this.host).getPropertyValue('--dropdown-z-index');
|
|
107
|
-
return (h(SelectTemplate, { key: '
|
|
107
|
+
return (h(SelectTemplate, { key: '0bc73012998fd97b022c0bdbab31e6806a3ddfd3', id: this.portalId, disabled: this.disabled || this.readonly, readonly: this.readonly, required: this.required, invalid: this.invalid, label: this.label, helperText: this.helperText, value: this.value, options: this.options, onMenuChange: this.handleMenuChange, onNativeChange: this.handleNativeChange, onTriggerPress: this.handleMenuTriggerKeyPress, multiple: this.multiple, isOpen: this.menuOpen, open: this.openMenu, close: this.closeMenu, checkValid: this.checkValid, native: this.isMobileDevice && !this.multiple, dropdownZIndex: dropdownZIndex, anchor: this.getAnchorElement() }));
|
|
108
108
|
}
|
|
109
109
|
watchOpen(newValue, oldValue) {
|
|
110
110
|
if (this.checkValid) {
|
|
@@ -10,7 +10,7 @@ import { getMouseEventHandlers } from "../../util/3d-tilt-hover-effect";
|
|
|
10
10
|
* However, it is possible to override that behavior, by specifying a `target`
|
|
11
11
|
* for the `link` property
|
|
12
12
|
*
|
|
13
|
-
* @exampleComponent limel-example-shortcut
|
|
13
|
+
* @exampleComponent limel-example-shortcut-basic
|
|
14
14
|
* @exampleComponent limel-example-shortcut-notification
|
|
15
15
|
* @exampleComponent limel-example-shortcut-styling
|
|
16
16
|
* @exampleComponent limel-example-shortcut-with-click-handler
|
|
@@ -56,7 +56,7 @@ export class Shortcut {
|
|
|
56
56
|
render() {
|
|
57
57
|
var _a, _b, _c, _d, _e;
|
|
58
58
|
const rel = getRel((_a = this.link) === null || _a === void 0 ? void 0 : _a.target, (_b = this.link) === null || _b === void 0 ? void 0 : _b.rel);
|
|
59
|
-
return (h(Host, { key: '
|
|
59
|
+
return (h(Host, { key: '68fa485e1c6552337de3e8304dcb14bd2056f3cc', onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, h("a", { key: 'e83e54fcd7776e92938795a2f623e23df14985b0', "aria-disabled": this.disabled, href: (_c = this.link) === null || _c === void 0 ? void 0 : _c.href, target: (_d = this.link) === null || _d === void 0 ? void 0 : _d.target, rel: rel, tabindex: "0", "aria-label": this.getAriaLabel(), title: (_e = this.link) === null || _e === void 0 ? void 0 : _e.title }, h("limel-icon", { key: 'b1aa7fec058ef958c71b0a01fc3c1340e66a0422', name: this.icon }), h("limel-3d-hover-effect-glow", { key: '59132d5f6b5d99f38bba8143a2ff39166dce8648' })), this.renderLabel(), this.renderNotification()));
|
|
60
60
|
}
|
|
61
61
|
static get is() { return "limel-shortcut"; }
|
|
62
62
|
static get encapsulation() { return "shadow"; }
|
|
@@ -243,7 +243,7 @@ export class Slider {
|
|
|
243
243
|
if (this.disabled || this.readonly) {
|
|
244
244
|
inputProps.disabled = true;
|
|
245
245
|
}
|
|
246
|
-
return (h(Host, { key: '
|
|
246
|
+
return (h(Host, { key: '4d8742b0c40d836b9cab61988cafc42e90843e31', class: this.getContainerClassList() }, h("limel-notched-outline", { key: 'a775070fe819f15542ad3ba4a2a3839bcf392051', labelId: this.labelId, label: this.label, required: this.required, invalid: this.invalid, disabled: this.disabled, readonly: this.readonly, hasValue: !!this.value, hasFloatingLabel: true }, h("div", { key: 'f01ca4b8c2f71ef4ea7466aff58d821c484e20bc', slot: "content" }, this.renderRangeContainer(), this.renderSliderContainer(inputProps))), this.renderHelperLine()));
|
|
247
247
|
}
|
|
248
248
|
watchDisabled() {
|
|
249
249
|
this.updateDisabledState();
|
|
@@ -26,7 +26,7 @@ const hideAnimationDuration = 300;
|
|
|
26
26
|
* [Dialog](#/component/limel-dialog/) is a better choice.
|
|
27
27
|
* :::
|
|
28
28
|
*
|
|
29
|
-
* @exampleComponent limel-example-snackbar
|
|
29
|
+
* @exampleComponent limel-example-snackbar-basic
|
|
30
30
|
* @exampleComponent limel-example-snackbar-with-action
|
|
31
31
|
* @exampleComponent limel-example-snackbar-with-changing-messages
|
|
32
32
|
* @exampleComponent limel-example-snackbar-dismissible
|
|
@@ -121,14 +121,14 @@ export class Snackbar {
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
render() {
|
|
124
|
-
return (h("aside", { key: '
|
|
124
|
+
return (h("aside", { key: 'ea6276745563c7dd62d3061da0b1c6a41b3d1243', popover: "manual", style: {
|
|
125
125
|
'--snackbar-timeout': `${Math.max(this.timeout || 0, 0)}ms`,
|
|
126
126
|
'--snackbar-distance-to-top-edge': `${this.offset}px`,
|
|
127
127
|
}, class: {
|
|
128
128
|
open: this.open,
|
|
129
129
|
'is-closing': this.closing,
|
|
130
130
|
'limel-portal--parent': true,
|
|
131
|
-
}, id: this.snackbarId, role: this.setAriaRoles(), "aria-atomic": this.open ? 'true' : undefined, "aria-relevant": this.open ? 'additions' : undefined }, h("div", { key: '
|
|
131
|
+
}, id: this.snackbarId, role: this.setAriaRoles(), "aria-atomic": this.open ? 'true' : undefined, "aria-relevant": this.open ? 'additions' : undefined }, h("div", { key: 'd5c42448d07093b5df96a44a9bdf2842b4bf9a9f', class: "surface" }, h("div", { key: '93a9ea81726b0e309ae54ab23270562702b59104', class: "label" }, this.message), this.renderActions(this.actionText), this.renderDismissButton(this.dismissible))));
|
|
132
132
|
}
|
|
133
133
|
setAriaRoles() {
|
|
134
134
|
if (!this.open) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
/**
|
|
3
|
-
* @exampleComponent limel-example-spinner
|
|
3
|
+
* @exampleComponent limel-example-spinner-basic
|
|
4
4
|
* @exampleComponent limel-example-spinner-color
|
|
5
5
|
* @exampleComponent limel-example-spinner-size
|
|
6
6
|
*/
|
|
@@ -16,7 +16,7 @@ export class Spinner {
|
|
|
16
16
|
this.limeBranded = false;
|
|
17
17
|
}
|
|
18
18
|
render() {
|
|
19
|
-
return (h(Host, { key: '
|
|
19
|
+
return (h(Host, { key: '5d7275ec64f2e3b07c7e25065d8d115de772324e' }, h("svg", { key: '41e5110dc29d6112261bea4afbd8cffde213cde0', viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, this.renderSpinner())));
|
|
20
20
|
}
|
|
21
21
|
renderSpinner() {
|
|
22
22
|
if (!this.limeBranded) {
|
|
@@ -55,9 +55,9 @@ export class SplitButton {
|
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
render() {
|
|
58
|
-
return (h(Host, { key: '
|
|
58
|
+
return (h(Host, { key: 'c36360c226a10f303158e13033451541d4e232fd', class: {
|
|
59
59
|
'has-menu': this.items.length > 0,
|
|
60
|
-
}, onClick: this.filterClickWhenDisabled }, h("limel-button", { key: '
|
|
60
|
+
}, onClick: this.filterClickWhenDisabled }, h("limel-button", { key: 'bc63b91941bfb71d090a04ff7dc46cf97d0c18e7', label: this.label, primary: this.primary, icon: this.icon, disabled: this.disabled, loading: this.loading, loadingFailed: this.loadingFailed }), this.renderMenu()));
|
|
61
61
|
}
|
|
62
62
|
static get is() { return "limel-split-button"; }
|
|
63
63
|
static get encapsulation() { return "shadow"; }
|
|
@@ -15,7 +15,7 @@ import { makeEnterClickable, removeEnterClickable, } from "../../util/make-enter
|
|
|
15
15
|
* But there is an important difference between the two! Please read our guidelines about
|
|
16
16
|
* [Switch vs. Checkbox](#/DesignGuidelines/switch-vs-checkbox.md/).
|
|
17
17
|
*
|
|
18
|
-
* @exampleComponent limel-example-switch
|
|
18
|
+
* @exampleComponent limel-example-switch-basic
|
|
19
19
|
* @exampleComponent limel-example-switch-helper-text
|
|
20
20
|
* @exampleComponent limel-example-switch-readonly
|
|
21
21
|
*/
|
|
@@ -78,7 +78,7 @@ export class Switch {
|
|
|
78
78
|
removeEnterClickable(this.host);
|
|
79
79
|
}
|
|
80
80
|
render() {
|
|
81
|
-
return (h(Host, { key: '
|
|
81
|
+
return (h(Host, { key: '4b90d19763474c8a9f54364091797a3eb537fbc9' }, this.readonly
|
|
82
82
|
? this.renderReadonly()
|
|
83
83
|
: this.renderInteractive(), this.renderHelperLine()));
|
|
84
84
|
}
|
|
@@ -25,7 +25,7 @@ const OVERLAP_PERCENTAGE = 20;
|
|
|
25
25
|
* A tab will never be removed or get disabled, even if there is no content under it.
|
|
26
26
|
* :::
|
|
27
27
|
*
|
|
28
|
-
* @exampleComponent limel-example-tab-bar
|
|
28
|
+
* @exampleComponent limel-example-tab-bar-basic
|
|
29
29
|
* @exampleComponent limel-example-tab-bar-with-dynamic-tab-width
|
|
30
30
|
* @exampleComponent limel-example-tab-bar-with-equal-tab-width
|
|
31
31
|
*/
|
|
@@ -62,11 +62,11 @@ export class TabBar {
|
|
|
62
62
|
this.tearDown();
|
|
63
63
|
}
|
|
64
64
|
render() {
|
|
65
|
-
return (h("div", { key: '
|
|
65
|
+
return (h("div", { key: '764d28d7417c3c2801491c54d6c5db36b022adda', class: "mdc-tab-bar", role: "tablist" }, h("div", { key: 'ee7a869e13069c2baac39b6abb8ac9f7353f8655', class: {
|
|
66
66
|
'mdc-tab-scroller': true,
|
|
67
67
|
'can-scroll-left': this.canScrollLeft,
|
|
68
68
|
'can-scroll-right': this.canScrollRight,
|
|
69
|
-
} }, h("div", { key: '
|
|
69
|
+
} }, h("div", { key: '55a955d4686181d2ded9ae24b525e863a9c9514c', class: "mdc-tab-scroller__scroll-area lime-hide-scrollbars" }, h("div", { key: '005a0150e3f03b9f8ca4facd767e7e05b17b5689', class: "mdc-tab-scroller__scroll-content" }, this.tabs.map(this.renderTab))), h("div", { key: '68956d9c7c9d17e9b572014e4e865e20680fbc98', class: "scroll-fade left" }), h("div", { key: '268c2616ff24edf6959931a324f9b242eec28a87', class: "scroll-button left" }, h("button", { key: '4a7f75826b7344ba6f88de784a2c9928c0779cd0', type: "button", tabindex: "-1", "aria-hidden": "true", disabled: !this.canScrollLeft, onClick: this.handleLeftScrollClick }, h("limel-icon", { key: '7d2e61ed0001a17a51aa71064f58f5c40692c4b7', name: "angle_left" }))), h("div", { key: 'dce1d143623bcdf84607428e205dc88d7b9a16d7', class: "scroll-fade right" }), h("div", { key: 'bc6f06e98950256a67748095999d676173871b2f', class: "scroll-button right" }, h("button", { key: '1b5aac1ebd4dea1d2eff4d88b154c62d87a353c1', type: "button", tabindex: "-1", "aria-hidden": "true", disabled: !this.canScrollRight, onClick: this.handleRightScrollClick }, h("limel-icon", { key: '022f900f20506369ffa79a045e144fcb213f4006', name: "angle_right" }))))));
|
|
70
70
|
}
|
|
71
71
|
tabsChanged(newTabs = [], oldTabs = []) {
|
|
72
72
|
const newIds = newTabs.map((tab) => tab.id);
|
|
@@ -17,7 +17,7 @@ import { dispatchResizeEvent } from "../../util/dispatch-resize-event";
|
|
|
17
17
|
*
|
|
18
18
|
* @slot - Content to put inside the `limel-tab-panel`. Each slotted element
|
|
19
19
|
* must have the `id` attribute equal to the id of the tab it belongs to.
|
|
20
|
-
* @exampleComponent limel-example-tab-panel
|
|
20
|
+
* @exampleComponent limel-example-tab-panel-basic
|
|
21
21
|
*/
|
|
22
22
|
export class TabPanel {
|
|
23
23
|
constructor() {
|
|
@@ -56,7 +56,7 @@ export class TabPanel {
|
|
|
56
56
|
this.tabs.forEach(this.setTabStatus);
|
|
57
57
|
}
|
|
58
58
|
render() {
|
|
59
|
-
return (h(Host, { key: '
|
|
59
|
+
return (h(Host, { key: '831b5534fb89f2892ede144fdbdd9747e4e8ef83', onChangeTab: this.handleChangeTabs }, h("div", { key: '7215d031f6558985ce6d7b3b5ee0d0d57b546e4b', class: "tab-panel" }, h("limel-tab-bar", { key: '4891c70a6aa19357a19c8a08c207ffae1ee1ce73', tabs: this.tabs }), h("div", { key: 'e682144fba03c72a220e57de4668f83690b54572', class: "tab-content" }, h("slot", { key: '192b28283d6aa49d27fbe31395728441e34cb252' })))));
|
|
60
60
|
}
|
|
61
61
|
setSlotElements() {
|
|
62
62
|
const slot = this.getSlot();
|