@limetech/lime-elements 39.9.5 → 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.
Files changed (146) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/device-C9O7lYI9.js +50 -0
  3. package/dist/cjs/hotkeys-BtR8uxvl.js +219 -0
  4. package/dist/cjs/lime-elements.cjs.js +1 -1
  5. package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js +137 -15
  6. package/dist/cjs/limel-date-picker.cjs.entry.js +1 -1
  7. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
  8. package/dist/cjs/limel-helper-line_2.cjs.entry.js +1 -1
  9. package/dist/cjs/limel-hotkey.cjs.entry.js +128 -0
  10. package/dist/cjs/limel-icon-button.cjs.entry.js +1 -1
  11. package/dist/cjs/limel-icon.cjs.entry.js +1 -1
  12. package/dist/cjs/limel-info-tile.cjs.entry.js +2 -2
  13. package/dist/cjs/limel-list-item.cjs.entry.js +2 -2
  14. package/dist/cjs/limel-markdown.cjs.entry.js +1 -1
  15. package/dist/cjs/limel-menu-item-meta.cjs.entry.js +12 -1
  16. package/dist/cjs/limel-picker.cjs.entry.js +1 -1
  17. package/dist/cjs/limel-popover_2.cjs.entry.js +2 -2
  18. package/dist/cjs/limel-portal_3.cjs.entry.js +4 -4
  19. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +1 -1
  20. package/dist/cjs/limel-radio-button-group.cjs.entry.js +1 -1
  21. package/dist/cjs/limel-radio-button.cjs.entry.js +2 -2
  22. package/dist/cjs/limel-select.cjs.entry.js +2 -2
  23. package/dist/cjs/limel-shortcut.cjs.entry.js +1 -1
  24. package/dist/cjs/limel-slider.cjs.entry.js +1 -1
  25. package/dist/cjs/limel-snackbar.cjs.entry.js +2 -2
  26. package/dist/cjs/limel-split-button.cjs.entry.js +2 -2
  27. package/dist/cjs/limel-switch.cjs.entry.js +1 -1
  28. package/dist/cjs/limel-tab-bar.cjs.entry.js +2 -2
  29. package/dist/cjs/limel-tab-panel.cjs.entry.js +1 -1
  30. package/dist/cjs/limel-table.cjs.entry.js +3 -3
  31. package/dist/cjs/limel-text-editor-link-menu.cjs.entry.js +3 -3
  32. package/dist/cjs/limel-text-editor.cjs.entry.js +1 -1
  33. package/dist/cjs/loader.cjs.js +1 -1
  34. package/dist/collection/collection-manifest.json +1 -0
  35. package/dist/collection/components/hotkey/format-display-token.js +95 -0
  36. package/dist/collection/components/hotkey/hotkey.css +136 -0
  37. package/dist/collection/components/hotkey/hotkey.js +92 -0
  38. package/dist/collection/components/icon/icon.js +1 -1
  39. package/dist/collection/components/icon-button/icon-button.js +1 -1
  40. package/dist/collection/components/info-tile/info-tile.js +2 -2
  41. package/dist/collection/components/input-field/input-field.js +1 -1
  42. package/dist/collection/components/list/list.js +1 -1
  43. package/dist/collection/components/list-item/list-item.js +2 -2
  44. package/dist/collection/components/list-item/menu-item-meta/menu-item-meta.js +52 -2
  45. package/dist/collection/components/markdown/markdown.js +1 -1
  46. package/dist/collection/components/menu/menu.js +130 -10
  47. package/dist/collection/components/menu-list/menu-list-renderer.js +4 -1
  48. package/dist/collection/components/menu-list/menu-list.js +1 -1
  49. package/dist/collection/components/menu-surface/menu-surface.js +1 -1
  50. package/dist/collection/components/notched-outline/notched-outline.js +1 -1
  51. package/dist/collection/components/picker/picker.js +1 -1
  52. package/dist/collection/components/popover/popover.js +1 -1
  53. package/dist/collection/components/popover-surface/popover-surface.js +1 -1
  54. package/dist/collection/components/portal/portal.js +1 -1
  55. package/dist/collection/components/radio-button-group/radio-button-group.js +1 -1
  56. package/dist/collection/components/radio-button-group/radio-button.js +2 -2
  57. package/dist/collection/components/select/select.js +1 -1
  58. package/dist/collection/components/shortcut/shortcut.js +1 -1
  59. package/dist/collection/components/slider/slider.js +1 -1
  60. package/dist/collection/components/snackbar/snackbar.js +2 -2
  61. package/dist/collection/components/spinner/spinner.js +1 -1
  62. package/dist/collection/components/split-button/split-button.js +2 -2
  63. package/dist/collection/components/switch/switch.js +1 -1
  64. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  65. package/dist/collection/components/tab-panel/tab-panel.js +1 -1
  66. package/dist/collection/components/table/table.js +3 -3
  67. package/dist/collection/components/text-editor/link-menu/editor-link-menu.js +3 -3
  68. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +1 -1
  69. package/dist/collection/components/text-editor/text-editor.js +1 -1
  70. package/dist/collection/components/tooltip/tooltip-content.js +1 -1
  71. package/dist/collection/components/tooltip/tooltip.js +2 -2
  72. package/dist/esm/device-B-tmXAXV.js +45 -0
  73. package/dist/esm/hotkeys-BxrRWYts.js +215 -0
  74. package/dist/esm/lime-elements.js +1 -1
  75. package/dist/esm/limel-breadcrumbs_7.entry.js +137 -15
  76. package/dist/esm/limel-date-picker.entry.js +1 -1
  77. package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
  78. package/dist/esm/limel-helper-line_2.entry.js +1 -1
  79. package/dist/esm/limel-hotkey.entry.js +126 -0
  80. package/dist/esm/limel-icon-button.entry.js +1 -1
  81. package/dist/esm/limel-icon.entry.js +1 -1
  82. package/dist/esm/limel-info-tile.entry.js +2 -2
  83. package/dist/esm/limel-list-item.entry.js +2 -2
  84. package/dist/esm/limel-markdown.entry.js +1 -1
  85. package/dist/esm/limel-menu-item-meta.entry.js +12 -1
  86. package/dist/esm/limel-picker.entry.js +1 -1
  87. package/dist/esm/limel-popover_2.entry.js +2 -2
  88. package/dist/esm/limel-portal_3.entry.js +4 -4
  89. package/dist/esm/limel-prosemirror-adapter.entry.js +1 -1
  90. package/dist/esm/limel-radio-button-group.entry.js +1 -1
  91. package/dist/esm/limel-radio-button.entry.js +2 -2
  92. package/dist/esm/limel-select.entry.js +2 -2
  93. package/dist/esm/limel-shortcut.entry.js +1 -1
  94. package/dist/esm/limel-slider.entry.js +1 -1
  95. package/dist/esm/limel-snackbar.entry.js +2 -2
  96. package/dist/esm/limel-split-button.entry.js +2 -2
  97. package/dist/esm/limel-switch.entry.js +1 -1
  98. package/dist/esm/limel-tab-bar.entry.js +2 -2
  99. package/dist/esm/limel-tab-panel.entry.js +1 -1
  100. package/dist/esm/limel-table.entry.js +3 -3
  101. package/dist/esm/limel-text-editor-link-menu.entry.js +3 -3
  102. package/dist/esm/limel-text-editor.entry.js +1 -1
  103. package/dist/esm/loader.js +1 -1
  104. package/dist/lime-elements/lime-elements.esm.js +1 -1
  105. package/dist/lime-elements/{p-a30bf079.entry.js → p-12646794.entry.js} +1 -1
  106. package/dist/lime-elements/{p-c5b6ac7a.entry.js → p-1635ece7.entry.js} +1 -1
  107. package/dist/lime-elements/{p-86eebe44.entry.js → p-17e1d911.entry.js} +1 -1
  108. package/dist/lime-elements/{p-8c418a0b.entry.js → p-23c1033d.entry.js} +1 -1
  109. package/dist/lime-elements/{p-e2f1b070.entry.js → p-2750b828.entry.js} +1 -1
  110. package/dist/lime-elements/{p-1d4285b1.entry.js → p-3e68cbda.entry.js} +2 -2
  111. package/dist/lime-elements/{p-de1e5ad9.entry.js → p-438652d6.entry.js} +1 -1
  112. package/dist/lime-elements/{p-ef75eed9.entry.js → p-59716b48.entry.js} +1 -1
  113. package/dist/lime-elements/{p-b11751c9.entry.js → p-60260fa3.entry.js} +1 -1
  114. package/dist/lime-elements/{p-a2295fa6.entry.js → p-689770db.entry.js} +1 -1
  115. package/dist/lime-elements/{p-abdede40.entry.js → p-733ebba6.entry.js} +1 -1
  116. package/dist/lime-elements/{p-288aa326.entry.js → p-77f42eff.entry.js} +1 -1
  117. package/dist/lime-elements/{p-d5da5b05.entry.js → p-7bd71b2b.entry.js} +1 -1
  118. package/dist/lime-elements/{p-9d51583a.entry.js → p-8805080c.entry.js} +1 -1
  119. package/dist/lime-elements/{p-c6b9425b.entry.js → p-889a05e4.entry.js} +1 -1
  120. package/dist/lime-elements/{p-e14b7393.entry.js → p-8b106865.entry.js} +1 -1
  121. package/dist/lime-elements/{p-6e0078f1.entry.js → p-8e3cc9b0.entry.js} +1 -1
  122. package/dist/lime-elements/{p-62d6a350.entry.js → p-9015c90c.entry.js} +2 -2
  123. package/dist/lime-elements/{p-9859b556.entry.js → p-9abfb8ba.entry.js} +1 -1
  124. package/dist/lime-elements/{p-72a4841a.entry.js → p-9d629f5f.entry.js} +10 -10
  125. package/dist/lime-elements/p-B-tmXAXV.js +1 -0
  126. package/dist/lime-elements/p-BxrRWYts.js +1 -0
  127. package/dist/lime-elements/p-a026cc24.entry.js +1 -0
  128. package/dist/lime-elements/{p-95ed243e.entry.js → p-a243b8e2.entry.js} +1 -1
  129. package/dist/lime-elements/p-b64ae828.entry.js +1 -0
  130. package/dist/lime-elements/p-c20a620d.entry.js +1 -0
  131. package/dist/lime-elements/{p-1590b341.entry.js → p-c84911e6.entry.js} +1 -1
  132. package/dist/lime-elements/{p-6614bbfc.entry.js → p-c9591213.entry.js} +1 -1
  133. package/dist/lime-elements/{p-0e1c15c8.entry.js → p-e0716b51.entry.js} +1 -1
  134. package/dist/lime-elements/{p-bbaaf7c1.entry.js → p-e89dcf27.entry.js} +1 -1
  135. package/dist/types/components/hotkey/format-display-token.d.ts +15 -0
  136. package/dist/types/components/hotkey/hotkey.d.ts +27 -0
  137. package/dist/types/components/list-item/menu-item-meta/menu-item-meta.d.ts +8 -0
  138. package/dist/types/components/menu/menu.d.ts +13 -2
  139. package/dist/types/components/menu/menu.types.d.ts +14 -0
  140. package/dist/types/components.d.ts +107 -4
  141. package/package.json +1 -1
  142. package/dist/cjs/device-CDZCRYph.js +0 -30
  143. package/dist/esm/device-CY72JnWG.js +0 -26
  144. package/dist/lime-elements/p-5178cc39.entry.js +0 -1
  145. package/dist/lime-elements/p-7afe6c3e.entry.js +0 -1
  146. package/dist/lime-elements/p-CY72JnWG.js +0 -1
@@ -0,0 +1,15 @@
1
+ export interface DisplayToken {
2
+ display: string;
3
+ isGlyph: boolean;
4
+ ariaName: string;
5
+ }
6
+ /**
7
+ * Maps a single hotkey token to its display representation.
8
+ *
9
+ * @param token - A single token from `tokenizeHotkeyString` (e.g. `"meta"`, `"k"`, `"+"`).
10
+ * @param isApple - Whether the current device is an Apple device.
11
+ * @returns The display string, whether it is a glyph (for styling),
12
+ * and a human-readable name for screen readers.
13
+ */
14
+ export declare function formatDisplayToken(token: string, isApple: boolean): DisplayToken;
15
+ //# sourceMappingURL=format-display-token.d.ts.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * This is a display-only component used to visualize keyboard shortcuts.
3
+ * It renders hotkey strings as styled `<kbd>` elements with
4
+ * platform-aware glyphs (e.g. `⌘` on macOS, `⊞ Win` on Windows).
5
+ *
6
+ * It does **not** listen for or handle any keyboard events.
7
+ * Keyboard event handling is the responsibility of the parent component
8
+ * (e.g. `limel-menu` or `limel-select`).
9
+ *
10
+ * @exampleComponent limel-example-hotkey-basic
11
+ * @exampleComponent limel-example-hotkey-disabled
12
+ * @private
13
+ */
14
+ export declare class Hotkey {
15
+ private isApple;
16
+ /**
17
+ * The hotkey string to visualize, e.g. `"meta+c"` or `"shift+enter"`.
18
+ */
19
+ value: string;
20
+ /**
21
+ * When `true`, the hotkey is rendered in a visually disabled state.
22
+ */
23
+ disabled: boolean;
24
+ componentWillLoad(): void;
25
+ render(): any;
26
+ }
27
+ //# sourceMappingURL=hotkey.d.ts.map
@@ -13,6 +13,14 @@ export declare class MenuItemMeta {
13
13
  * Use to display optional keyboard shortcut or command hint, e.g. `⌘ + K`
14
14
  */
15
15
  commandText?: string;
16
+ /**
17
+ * Hotkey to display. When provided, `commandText` is ignored.
18
+ */
19
+ hotkey?: string;
20
+ /**
21
+ * Will be set to `true` when the menu item is disabled.
22
+ */
23
+ disabled: boolean;
16
24
  /**
17
25
  * Optional badge value
18
26
  */
@@ -12,13 +12,14 @@ import { OpenDirection, MenuItem, SurfaceWidth, MenuSearcher } from './menu.type
12
12
  * @exampleComponent limel-example-menu-icons
13
13
  * @exampleComponent limel-example-menu-badge-icons
14
14
  * @exampleComponent limel-example-menu-grid
15
- * @exampleComponent limel-example-menu-hotkeys
16
15
  * @exampleComponent limel-example-menu-secondary-text
17
16
  * @exampleComponent limel-example-menu-notification
18
17
  * @exampleComponent limel-example-menu-sub-menus
19
18
  * @exampleComponent limel-example-menu-sub-menu-lazy-loading
20
19
  * @exampleComponent limel-example-menu-sub-menu-lazy-loading-infinite
21
20
  * @exampleComponent limel-example-menu-searchable
21
+ * @exampleComponent limel-example-menu-hotkeys
22
+ * @exampleComponent limel-example-menu-searchable-hotkeys
22
23
  * @exampleComponent limel-example-menu-composite
23
24
  */
24
25
  export declare class Menu {
@@ -117,11 +118,22 @@ export declare class Menu {
117
118
  private triggerElement;
118
119
  private selectedMenuItem?;
119
120
  private shouldRestoreFocusOnClose;
121
+ private readonly normalizedHotkeyCache;
122
+ private cachedSubMenuSource;
123
+ private cachedSubMenuItems;
120
124
  constructor();
121
125
  componentDidRender(): void;
122
126
  render(): any;
123
127
  protected itemsWatcher(): void;
128
+ connectedCallback(): void;
129
+ disconnectedCallback(): void;
124
130
  protected openWatcher(newValue: boolean): void;
131
+ private readonly handleDocumentKeyDown;
132
+ private isFromTextInput;
133
+ private hasModifier;
134
+ private isReservedMenuHotkey;
135
+ private findMenuItemByHotkey;
136
+ private getNormalizedHotkey;
125
137
  private getBreadcrumbsItems;
126
138
  private readonly renderLoader;
127
139
  private readonly renderBreadcrumb;
@@ -139,7 +151,6 @@ export declare class Menu {
139
151
  private readonly goForward;
140
152
  private readonly goBack;
141
153
  private readonly setTriggerAttributes;
142
- private readonly handleEscapeCapture;
143
154
  private readonly onClose;
144
155
  private readonly onTriggerClick;
145
156
  private readonly handleSelect;
@@ -42,6 +42,20 @@ export interface MenuItem<T = any> {
42
42
  * The additional supporting text is used for shortcut commands and displayed in the menu item.
43
43
  */
44
44
  commandText?: string;
45
+ /**
46
+ * Hotkey(s) that can be used to select this item while the menu is open.
47
+ * This is for actual keyboard interaction. `commandText` is purely visual.
48
+ *
49
+ * Note: In a menu, some keys are reserved for built-in navigation and
50
+ * activation (e.g. `enter`, `escape`, `space`, `tab`, and arrow keys).
51
+ * These will be ignored as hotkeys, unless combined with other modifiers.
52
+ *
53
+ * Examples:
54
+ * - `"alt+c"`
55
+ * - `"ctrl+shift+p"`
56
+ * - `"cmd+k"` (alias for `meta+k`)
57
+ */
58
+ hotkey?: string;
45
59
  /**
46
60
  * Text to display in the menu item.
47
61
  */
@@ -2012,6 +2012,28 @@ export namespace Components {
2012
2012
  */
2013
2013
  "maxLength"?: number;
2014
2014
  }
2015
+ /**
2016
+ * This is a display-only component used to visualize keyboard shortcuts.
2017
+ * It renders hotkey strings as styled `<kbd>` elements with
2018
+ * platform-aware glyphs (e.g. `⌘` on macOS, `⊞ Win` on Windows).
2019
+ * It does **not** listen for or handle any keyboard events.
2020
+ * Keyboard event handling is the responsibility of the parent component
2021
+ * (e.g. `limel-menu` or `limel-select`).
2022
+ * @exampleComponent limel-example-hotkey-basic
2023
+ * @exampleComponent limel-example-hotkey-disabled
2024
+ * @private
2025
+ */
2026
+ interface LimelHotkey {
2027
+ /**
2028
+ * When `true`, the hotkey is rendered in a visually disabled state.
2029
+ * @default false
2030
+ */
2031
+ "disabled": boolean;
2032
+ /**
2033
+ * The hotkey string to visualize, e.g. `"meta+c"` or `"shift+enter"`.
2034
+ */
2035
+ "value": string;
2036
+ }
2015
2037
  /**
2016
2038
  * :::important
2017
2039
  * To install your icon set correctly, please read the [documentation here](#/).
@@ -2485,13 +2507,14 @@ export namespace Components {
2485
2507
  * @exampleComponent limel-example-menu-icons
2486
2508
  * @exampleComponent limel-example-menu-badge-icons
2487
2509
  * @exampleComponent limel-example-menu-grid
2488
- * @exampleComponent limel-example-menu-hotkeys
2489
2510
  * @exampleComponent limel-example-menu-secondary-text
2490
2511
  * @exampleComponent limel-example-menu-notification
2491
2512
  * @exampleComponent limel-example-menu-sub-menus
2492
2513
  * @exampleComponent limel-example-menu-sub-menu-lazy-loading
2493
2514
  * @exampleComponent limel-example-menu-sub-menu-lazy-loading-infinite
2494
2515
  * @exampleComponent limel-example-menu-searchable
2516
+ * @exampleComponent limel-example-menu-hotkeys
2517
+ * @exampleComponent limel-example-menu-searchable-hotkeys
2495
2518
  * @exampleComponent limel-example-menu-composite
2496
2519
  */
2497
2520
  interface LimelMenu {
@@ -2574,6 +2597,15 @@ export namespace Components {
2574
2597
  * Use to display optional keyboard shortcut or command hint, e.g. `⌘ + K`
2575
2598
  */
2576
2599
  "commandText"?: string;
2600
+ /**
2601
+ * Will be set to `true` when the menu item is disabled.
2602
+ * @default false
2603
+ */
2604
+ "disabled": boolean;
2605
+ /**
2606
+ * Hotkey to display. When provided, `commandText` is ignored.
2607
+ */
2608
+ "hotkey"?: string;
2577
2609
  /**
2578
2610
  * Shows a submenu chevron to indicate nested items
2579
2611
  * @default false
@@ -5241,6 +5273,23 @@ declare global {
5241
5273
  prototype: HTMLLimelHelperLineElement;
5242
5274
  new (): HTMLLimelHelperLineElement;
5243
5275
  };
5276
+ /**
5277
+ * This is a display-only component used to visualize keyboard shortcuts.
5278
+ * It renders hotkey strings as styled `<kbd>` elements with
5279
+ * platform-aware glyphs (e.g. `⌘` on macOS, `⊞ Win` on Windows).
5280
+ * It does **not** listen for or handle any keyboard events.
5281
+ * Keyboard event handling is the responsibility of the parent component
5282
+ * (e.g. `limel-menu` or `limel-select`).
5283
+ * @exampleComponent limel-example-hotkey-basic
5284
+ * @exampleComponent limel-example-hotkey-disabled
5285
+ * @private
5286
+ */
5287
+ interface HTMLLimelHotkeyElement extends Components.LimelHotkey, HTMLStencilElement {
5288
+ }
5289
+ var HTMLLimelHotkeyElement: {
5290
+ prototype: HTMLLimelHotkeyElement;
5291
+ new (): HTMLLimelHotkeyElement;
5292
+ };
5244
5293
  /**
5245
5294
  * :::important
5246
5295
  * To install your icon set correctly, please read the [documentation here](#/).
@@ -5465,13 +5514,14 @@ declare global {
5465
5514
  * @exampleComponent limel-example-menu-icons
5466
5515
  * @exampleComponent limel-example-menu-badge-icons
5467
5516
  * @exampleComponent limel-example-menu-grid
5468
- * @exampleComponent limel-example-menu-hotkeys
5469
5517
  * @exampleComponent limel-example-menu-secondary-text
5470
5518
  * @exampleComponent limel-example-menu-notification
5471
5519
  * @exampleComponent limel-example-menu-sub-menus
5472
5520
  * @exampleComponent limel-example-menu-sub-menu-lazy-loading
5473
5521
  * @exampleComponent limel-example-menu-sub-menu-lazy-loading-infinite
5474
5522
  * @exampleComponent limel-example-menu-searchable
5523
+ * @exampleComponent limel-example-menu-hotkeys
5524
+ * @exampleComponent limel-example-menu-searchable-hotkeys
5475
5525
  * @exampleComponent limel-example-menu-composite
5476
5526
  */
5477
5527
  interface HTMLLimelMenuElement extends Components.LimelMenu, HTMLStencilElement {
@@ -6326,6 +6376,7 @@ declare global {
6326
6376
  "limel-help": HTMLLimelHelpElement;
6327
6377
  "limel-help-content": HTMLLimelHelpContentElement;
6328
6378
  "limel-helper-line": HTMLLimelHelperLineElement;
6379
+ "limel-hotkey": HTMLLimelHotkeyElement;
6329
6380
  "limel-icon": HTMLLimelIconElement;
6330
6381
  "limel-icon-button": HTMLLimelIconButtonElement;
6331
6382
  "limel-info-tile": HTMLLimelInfoTileElement;
@@ -8426,6 +8477,28 @@ declare namespace LocalJSX {
8426
8477
  */
8427
8478
  "maxLength"?: number;
8428
8479
  }
8480
+ /**
8481
+ * This is a display-only component used to visualize keyboard shortcuts.
8482
+ * It renders hotkey strings as styled `<kbd>` elements with
8483
+ * platform-aware glyphs (e.g. `⌘` on macOS, `⊞ Win` on Windows).
8484
+ * It does **not** listen for or handle any keyboard events.
8485
+ * Keyboard event handling is the responsibility of the parent component
8486
+ * (e.g. `limel-menu` or `limel-select`).
8487
+ * @exampleComponent limel-example-hotkey-basic
8488
+ * @exampleComponent limel-example-hotkey-disabled
8489
+ * @private
8490
+ */
8491
+ interface LimelHotkey {
8492
+ /**
8493
+ * When `true`, the hotkey is rendered in a visually disabled state.
8494
+ * @default false
8495
+ */
8496
+ "disabled"?: boolean;
8497
+ /**
8498
+ * The hotkey string to visualize, e.g. `"meta+c"` or `"shift+enter"`.
8499
+ */
8500
+ "value"?: string;
8501
+ }
8429
8502
  /**
8430
8503
  * :::important
8431
8504
  * To install your icon set correctly, please read the [documentation here](#/).
@@ -8907,13 +8980,14 @@ declare namespace LocalJSX {
8907
8980
  * @exampleComponent limel-example-menu-icons
8908
8981
  * @exampleComponent limel-example-menu-badge-icons
8909
8982
  * @exampleComponent limel-example-menu-grid
8910
- * @exampleComponent limel-example-menu-hotkeys
8911
8983
  * @exampleComponent limel-example-menu-secondary-text
8912
8984
  * @exampleComponent limel-example-menu-notification
8913
8985
  * @exampleComponent limel-example-menu-sub-menus
8914
8986
  * @exampleComponent limel-example-menu-sub-menu-lazy-loading
8915
8987
  * @exampleComponent limel-example-menu-sub-menu-lazy-loading-infinite
8916
8988
  * @exampleComponent limel-example-menu-searchable
8989
+ * @exampleComponent limel-example-menu-hotkeys
8990
+ * @exampleComponent limel-example-menu-searchable-hotkeys
8917
8991
  * @exampleComponent limel-example-menu-composite
8918
8992
  */
8919
8993
  interface LimelMenu {
@@ -8999,6 +9073,15 @@ declare namespace LocalJSX {
8999
9073
  * Use to display optional keyboard shortcut or command hint, e.g. `⌘ + K`
9000
9074
  */
9001
9075
  "commandText"?: string;
9076
+ /**
9077
+ * Will be set to `true` when the menu item is disabled.
9078
+ * @default false
9079
+ */
9080
+ "disabled"?: boolean;
9081
+ /**
9082
+ * Hotkey to display. When provided, `commandText` is ignored.
9083
+ */
9084
+ "hotkey"?: string;
9002
9085
  /**
9003
9086
  * Shows a submenu chevron to indicate nested items
9004
9087
  * @default false
@@ -10738,6 +10821,10 @@ declare namespace LocalJSX {
10738
10821
  "invalid": boolean;
10739
10822
  "helperTextId": string;
10740
10823
  }
10824
+ interface LimelHotkeyAttributes {
10825
+ "value": string;
10826
+ "disabled": boolean;
10827
+ }
10741
10828
  interface LimelIconAttributes {
10742
10829
  "size": IconSize;
10743
10830
  "name": string;
@@ -10825,6 +10912,8 @@ declare namespace LocalJSX {
10825
10912
  }
10826
10913
  interface LimelMenuItemMetaAttributes {
10827
10914
  "commandText": string;
10915
+ "hotkey": string;
10916
+ "disabled": boolean;
10828
10917
  "badge": string;
10829
10918
  "showChevron": boolean;
10830
10919
  }
@@ -11061,6 +11150,7 @@ declare namespace LocalJSX {
11061
11150
  "limel-help": Omit<LimelHelp, keyof LimelHelpAttributes> & { [K in keyof LimelHelp & keyof LimelHelpAttributes]?: LimelHelp[K] } & { [K in keyof LimelHelp & keyof LimelHelpAttributes as `attr:${K}`]?: LimelHelpAttributes[K] } & { [K in keyof LimelHelp & keyof LimelHelpAttributes as `prop:${K}`]?: LimelHelp[K] };
11062
11151
  "limel-help-content": Omit<LimelHelpContent, keyof LimelHelpContentAttributes> & { [K in keyof LimelHelpContent & keyof LimelHelpContentAttributes]?: LimelHelpContent[K] } & { [K in keyof LimelHelpContent & keyof LimelHelpContentAttributes as `attr:${K}`]?: LimelHelpContentAttributes[K] } & { [K in keyof LimelHelpContent & keyof LimelHelpContentAttributes as `prop:${K}`]?: LimelHelpContent[K] };
11063
11152
  "limel-helper-line": Omit<LimelHelperLine, keyof LimelHelperLineAttributes> & { [K in keyof LimelHelperLine & keyof LimelHelperLineAttributes]?: LimelHelperLine[K] } & { [K in keyof LimelHelperLine & keyof LimelHelperLineAttributes as `attr:${K}`]?: LimelHelperLineAttributes[K] } & { [K in keyof LimelHelperLine & keyof LimelHelperLineAttributes as `prop:${K}`]?: LimelHelperLine[K] };
11153
+ "limel-hotkey": Omit<LimelHotkey, keyof LimelHotkeyAttributes> & { [K in keyof LimelHotkey & keyof LimelHotkeyAttributes]?: LimelHotkey[K] } & { [K in keyof LimelHotkey & keyof LimelHotkeyAttributes as `attr:${K}`]?: LimelHotkeyAttributes[K] } & { [K in keyof LimelHotkey & keyof LimelHotkeyAttributes as `prop:${K}`]?: LimelHotkey[K] };
11064
11154
  "limel-icon": Omit<LimelIcon, keyof LimelIconAttributes> & { [K in keyof LimelIcon & keyof LimelIconAttributes]?: LimelIcon[K] } & { [K in keyof LimelIcon & keyof LimelIconAttributes as `attr:${K}`]?: LimelIconAttributes[K] } & { [K in keyof LimelIcon & keyof LimelIconAttributes as `prop:${K}`]?: LimelIcon[K] };
11065
11155
  "limel-icon-button": Omit<LimelIconButton, keyof LimelIconButtonAttributes> & { [K in keyof LimelIconButton & keyof LimelIconButtonAttributes]?: LimelIconButton[K] } & { [K in keyof LimelIconButton & keyof LimelIconButtonAttributes as `attr:${K}`]?: LimelIconButtonAttributes[K] } & { [K in keyof LimelIconButton & keyof LimelIconButtonAttributes as `prop:${K}`]?: LimelIconButton[K] };
11066
11156
  "limel-info-tile": Omit<LimelInfoTile, keyof LimelInfoTileAttributes> & { [K in keyof LimelInfoTile & keyof LimelInfoTileAttributes]?: LimelInfoTile[K] } & { [K in keyof LimelInfoTile & keyof LimelInfoTileAttributes as `attr:${K}`]?: LimelInfoTileAttributes[K] } & { [K in keyof LimelInfoTile & keyof LimelInfoTileAttributes as `prop:${K}`]?: LimelInfoTile[K] };
@@ -11816,6 +11906,18 @@ declare module "@stencil/core" {
11816
11906
  * @private
11817
11907
  */
11818
11908
  "limel-helper-line": LocalJSX.IntrinsicElements["limel-helper-line"] & JSXBase.HTMLAttributes<HTMLLimelHelperLineElement>;
11909
+ /**
11910
+ * This is a display-only component used to visualize keyboard shortcuts.
11911
+ * It renders hotkey strings as styled `<kbd>` elements with
11912
+ * platform-aware glyphs (e.g. `⌘` on macOS, `⊞ Win` on Windows).
11913
+ * It does **not** listen for or handle any keyboard events.
11914
+ * Keyboard event handling is the responsibility of the parent component
11915
+ * (e.g. `limel-menu` or `limel-select`).
11916
+ * @exampleComponent limel-example-hotkey-basic
11917
+ * @exampleComponent limel-example-hotkey-disabled
11918
+ * @private
11919
+ */
11920
+ "limel-hotkey": LocalJSX.IntrinsicElements["limel-hotkey"] & JSXBase.HTMLAttributes<HTMLLimelHotkeyElement>;
11819
11921
  /**
11820
11922
  * :::important
11821
11923
  * To install your icon set correctly, please read the [documentation here](#/).
@@ -11970,13 +12072,14 @@ declare module "@stencil/core" {
11970
12072
  * @exampleComponent limel-example-menu-icons
11971
12073
  * @exampleComponent limel-example-menu-badge-icons
11972
12074
  * @exampleComponent limel-example-menu-grid
11973
- * @exampleComponent limel-example-menu-hotkeys
11974
12075
  * @exampleComponent limel-example-menu-secondary-text
11975
12076
  * @exampleComponent limel-example-menu-notification
11976
12077
  * @exampleComponent limel-example-menu-sub-menus
11977
12078
  * @exampleComponent limel-example-menu-sub-menu-lazy-loading
11978
12079
  * @exampleComponent limel-example-menu-sub-menu-lazy-loading-infinite
11979
12080
  * @exampleComponent limel-example-menu-searchable
12081
+ * @exampleComponent limel-example-menu-hotkeys
12082
+ * @exampleComponent limel-example-menu-searchable-hotkeys
11980
12083
  * @exampleComponent limel-example-menu-composite
11981
12084
  */
11982
12085
  "limel-menu": LocalJSX.IntrinsicElements["limel-menu"] & JSXBase.HTMLAttributes<HTMLLimelMenuElement>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@limetech/lime-elements",
3
- "version": "39.9.5",
3
+ "version": "39.10.0",
4
4
  "description": "Lime Elements",
5
5
  "author": "Lime Technologies",
6
6
  "license": "Apache-2.0",
@@ -1,30 +0,0 @@
1
- 'use strict';
2
-
3
- function getUserAgent() {
4
- var _a;
5
- return typeof navigator === 'undefined' ? '' : ((_a = navigator.userAgent) !== null && _a !== void 0 ? _a : '');
6
- }
7
- /**
8
- *
9
- */
10
- function isIOSDevice() {
11
- const userAgent = getUserAgent();
12
- return /iPad|iPhone|iPod/i.test(userAgent) && !globalThis.MSStream;
13
- }
14
- /**
15
- *
16
- */
17
- function isAndroidDevice() {
18
- const userAgent = getUserAgent();
19
- return /Android/i.test(userAgent);
20
- }
21
- /**
22
- *
23
- */
24
- function isMobileDevice() {
25
- return isAndroidDevice() || isIOSDevice();
26
- }
27
-
28
- exports.isAndroidDevice = isAndroidDevice;
29
- exports.isIOSDevice = isIOSDevice;
30
- exports.isMobileDevice = isMobileDevice;
@@ -1,26 +0,0 @@
1
- function getUserAgent() {
2
- var _a;
3
- return typeof navigator === 'undefined' ? '' : ((_a = navigator.userAgent) !== null && _a !== void 0 ? _a : '');
4
- }
5
- /**
6
- *
7
- */
8
- function isIOSDevice() {
9
- const userAgent = getUserAgent();
10
- return /iPad|iPhone|iPod/i.test(userAgent) && !globalThis.MSStream;
11
- }
12
- /**
13
- *
14
- */
15
- function isAndroidDevice() {
16
- const userAgent = getUserAgent();
17
- return /Android/i.test(userAgent);
18
- }
19
- /**
20
- *
21
- */
22
- function isMobileDevice() {
23
- return isAndroidDevice() || isIOSDevice();
24
- }
25
-
26
- export { isAndroidDevice as a, isMobileDevice as b, isIOSDevice as i };
@@ -1 +0,0 @@
1
- import{r as e,h as r,H as t}from"./p-DBTJNfo7.js";const o=class{constructor(r){e(this,r),this.showChevron=!1}render(){return r(t,{key:"9e84c6ecc29e50b5a4e871d646fb11539e5fe86f"},this.renderCommandText(),this.renderBadge(),this.renderChevron())}renderCommandText(){if(this.commandText)return r("span",{class:"command-text"},this.commandText)}renderBadge(){if(void 0!==this.badge)return r("limel-badge",{label:String(this.badge)})}renderChevron(){if(this.showChevron)return r("div",{class:"chevron","aria-hidden":"true"})}};o.style='@charset "UTF-8";:host(limel-menu-item-meta){order:4;transform:translateX(0.5rem);display:inline-flex;align-items:center;gap:0.5rem;max-width:50%}*{box-sizing:border-box}limel-badge{--badge-background-color:var( --notification-badge-background-color, rgb(var(--color-red-default)) );--badge-text-color:var( --notification-badge-text-color, rgb(var(--color-white)) )}.command-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;opacity:0.7;font-size:var(--limel-theme-default-small-font-size)}.chevron{flex-shrink:0;border-color:transparent;border-left-color:var(--limel-theme-text-secondary-on-background-color);border-width:0.25rem 0 0.25rem 0.375rem;border-style:solid}';export{o as limel_menu_item_meta}
@@ -1 +0,0 @@
1
- import{r as o,h as t,H as e,a}from"./p-DBTJNfo7.js";import{m as s,r as i}from"./p-BgTwPGeH.js";import{c as n}from"./p-JbKhhoXs.js";import{d as r,g as l}from"./p-CgNJbSP4.js";const d=class{constructor(t){o(this,t),this.elevated=!1,this.disabled=!1,this.tooltipId=n(),this.filterClickWhenDisabled=o=>{this.disabled&&o.preventDefault()}}connectedCallback(){this.initialize()}componentWillLoad(){s(this.host)}disconnectedCallback(){i(this.host)}componentDidLoad(){this.initialize()}initialize(){this.host.shadowRoot.querySelector(".mdc-icon-button")}render(){const o={};return this.host.hasAttribute("tabindex")&&(o.tabindex=this.host.getAttribute("tabindex")),t(e,{key:"75991185b5994f4fffb56a03031cfc0b570a3de4",onClick:this.filterClickWhenDisabled},t("button",Object.assign({key:"608c0abc14322e8b8755c4af5137880bb419824d",disabled:this.disabled,id:this.tooltipId},o),this.renderIcon(),this.renderTooltip(this.tooltipId)))}renderIcon(){var o,e;const a=l(this.icon),s=r(this.icon);return t("limel-icon",{name:a,"aria-label":s,"aria-hidden":s?null:"true",style:{color:`${null===(o=this.icon)||void 0===o?void 0:o.color}`,"--icon-background-color":`${null===(e=this.icon)||void 0===e?void 0:e.backgroundColor}`}})}renderTooltip(o){if(this.label)return t("limel-tooltip",{elementId:o,label:this.label,helperLabel:this.helperLabel})}static get delegatesFocus(){return!0}get host(){return a(this)}};d.style='@charset "UTF-8";:host([hidden]){display:none}:host([aria-expanded=true]) button,:host([aria-expanded]:not([aria-expanded=false])) button{box-shadow:var(--button-shadow-inset-pressed) !important}button{all:unset}button:not(:disabled){transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:var(--limel-theme-on-surface-color);background-color:var(--icon-background-color, transparent)}button:not(:disabled):hover,button:not(:disabled):focus,button:not(:disabled):focus-visible{will-change:color, background-color, box-shadow, transform}button:not(:disabled):hover,button:not(:disabled):focus-visible{transform:translate3d(0, 0.01rem, 0);color:var(--limel-theme-on-surface-color);background-color:var(--lime-elevated-surface-background-color)}button:not(:disabled):hover{box-shadow:var(--button-shadow-hovered)}button:not(:disabled):active{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 );transform:translate3d(0, 0.05rem, 0);box-shadow:var(--button-shadow-pressed)}button:not(:disabled):hover,button:not(:disabled):active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}button:not(:disabled):focus{outline:none}button:not(:disabled):focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}button{display:inline-flex;align-items:center;justify-content:center;height:2.25rem;width:2.25rem;border-radius:50%}button:disabled{cursor:not-allowed;color:var(--limel-theme-text-disabled-on-background-color)}:host([elevated]) button:not(:hover):not(:active):not(:disabled):not(:focus-visible){box-shadow:var(--button-shadow-normal)}:host([elevated]) button:disabled{box-shadow:var(--button-shadow-normal)}limel-icon{padding:0.25rem;width:1.75rem}';export{d as limel_icon_button}
@@ -1 +0,0 @@
1
- function n(){var n;return"undefined"==typeof navigator?"":null!==(n=navigator.userAgent)&&void 0!==n?n:""}function i(){const i=n();return/iPad|iPhone|iPod/i.test(i)&&!globalThis.MSStream}function o(){const i=n();return/Android/i.test(i)}function t(){return o()||i()}export{o as a,t as b,i}