@limetech/lime-elements 40.11.3 → 40.12.1

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 (73) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cjs/{checkbox.template-CoNVC4Nf.js → checkbox.template-_WUgtMJy.js} +2 -2
  3. package/dist/cjs/lime-elements.cjs.js +1 -1
  4. package/dist/cjs/limel-breadcrumbs_6.cjs.entry.js +5 -10
  5. package/dist/cjs/limel-checkbox.cjs.entry.js +1 -1
  6. package/dist/cjs/limel-chip-set.cjs.entry.js +8 -3
  7. package/dist/cjs/limel-code-editor.cjs.entry.js +1 -2
  8. package/dist/cjs/limel-color-picker.cjs.entry.js +1 -1
  9. package/dist/cjs/limel-file-viewer.cjs.entry.js +81 -47
  10. package/dist/cjs/limel-form.cjs.entry.js +7 -7
  11. package/dist/cjs/limel-helper-line_3.cjs.entry.js +3 -3
  12. package/dist/cjs/limel-list-item.cjs.entry.js +1 -1
  13. package/dist/cjs/limel-select.cjs.entry.js +8 -3
  14. package/dist/cjs/limel-side-panel.cjs.entry.js +72 -5
  15. package/dist/cjs/limel-text-editor.cjs.entry.js +2 -2
  16. package/dist/cjs/loader.cjs.js +1 -1
  17. package/dist/collection/components/checkbox/checkbox.template.js +2 -2
  18. package/dist/collection/components/chip-set/chip-set.js +8 -3
  19. package/dist/collection/components/code-editor/code-editor.js +1 -2
  20. package/dist/collection/components/color-picker/color-picker.js +3 -3
  21. package/dist/collection/components/date-picker/date-picker.js +2 -2
  22. package/dist/collection/components/helper-line/helper-line.css +10 -14
  23. package/dist/collection/components/helper-line/helper-line.js +9 -6
  24. package/dist/collection/components/input-field/input-field.js +7 -12
  25. package/dist/collection/components/select/select.template.js +8 -3
  26. package/dist/collection/components/side-panel/side-panel.css +118 -6
  27. package/dist/collection/components/side-panel/side-panel.js +120 -77
  28. package/dist/collection/components/text-editor/text-editor.js +2 -2
  29. package/dist/esm/{checkbox.template-IDyv2bgn.js → checkbox.template-BFL4SMzl.js} +2 -2
  30. package/dist/esm/lime-elements.js +1 -1
  31. package/dist/esm/limel-breadcrumbs_6.entry.js +5 -10
  32. package/dist/esm/limel-checkbox.entry.js +1 -1
  33. package/dist/esm/limel-chip-set.entry.js +8 -3
  34. package/dist/esm/limel-code-editor.entry.js +1 -2
  35. package/dist/esm/limel-color-picker.entry.js +1 -1
  36. package/dist/esm/limel-file-viewer.entry.js +81 -47
  37. package/dist/esm/limel-form.entry.js +7 -7
  38. package/dist/esm/limel-helper-line_3.entry.js +3 -3
  39. package/dist/esm/limel-list-item.entry.js +1 -1
  40. package/dist/esm/limel-select.entry.js +8 -3
  41. package/dist/esm/limel-side-panel.entry.js +72 -5
  42. package/dist/esm/limel-text-editor.entry.js +2 -2
  43. package/dist/esm/loader.js +1 -1
  44. package/dist/lime-elements/lime-elements.esm.js +1 -1
  45. package/dist/lime-elements/p-06850418.entry.js +1 -0
  46. package/dist/lime-elements/p-0e662a3c.entry.js +1 -0
  47. package/dist/lime-elements/p-1qqvOwzC.js +1 -0
  48. package/dist/lime-elements/p-236743f1.entry.js +1 -0
  49. package/dist/lime-elements/p-2528f75e.entry.js +159 -0
  50. package/dist/lime-elements/{p-cf6fab84.entry.js → p-43c36a02.entry.js} +1 -1
  51. package/dist/lime-elements/{p-ae2e5e87.entry.js → p-49eb2f64.entry.js} +1 -1
  52. package/dist/lime-elements/p-4f58c6b3.entry.js +1 -0
  53. package/dist/lime-elements/p-5a15606a.entry.js +1 -0
  54. package/dist/lime-elements/{p-7a2e0e18.entry.js → p-675a7469.entry.js} +1 -1
  55. package/dist/lime-elements/{p-9b1934fb.entry.js → p-90286e5c.entry.js} +1 -1
  56. package/dist/lime-elements/p-92fab922.entry.js +23 -0
  57. package/dist/lime-elements/{p-14aff731.entry.js → p-c492af1b.entry.js} +1 -1
  58. package/dist/types/components/chip-set/chip-set.d.ts +2 -0
  59. package/dist/types/components/color-picker/color-picker.d.ts +10 -3
  60. package/dist/types/components/date-picker/date-picker.d.ts +11 -2
  61. package/dist/types/components/helper-line/helper-line.d.ts +7 -3
  62. package/dist/types/components/input-field/input-field.d.ts +10 -2
  63. package/dist/types/components/side-panel/side-panel.d.ts +35 -73
  64. package/dist/types/components.d.ts +108 -260
  65. package/package.json +6 -6
  66. package/dist/lime-elements/p-25d0d06b.entry.js +0 -159
  67. package/dist/lime-elements/p-33b58741.entry.js +0 -1
  68. package/dist/lime-elements/p-732e7807.entry.js +0 -23
  69. package/dist/lime-elements/p-82c65f70.entry.js +0 -1
  70. package/dist/lime-elements/p-9ed21407.entry.js +0 -1
  71. package/dist/lime-elements/p-DqQOawxc.js +0 -1
  72. package/dist/lime-elements/p-b69af611.entry.js +0 -1
  73. package/dist/lime-elements/p-ec74a07a.entry.js +0 -1
@@ -1213,7 +1213,7 @@ export namespace Components {
1213
1213
  */
1214
1214
  "disabled": boolean;
1215
1215
  /**
1216
- * Helper text of the input field
1216
+ * Optional helper text to display below the input field when it has focus. Screen readers read it as the description of the field, so use it for what the user needs to know, such as the format of the value or a requirement.
1217
1217
  */
1218
1218
  "helperText": string;
1219
1219
  /**
@@ -1239,7 +1239,7 @@ export namespace Components {
1239
1239
  */
1240
1240
  "paletteColumnCount"?: number;
1241
1241
  /**
1242
- * The placeholder text shown inside the input field, when the field is focused and empty.
1242
+ * A hint about what to type, such as an example or the format of the value. It is shown inside the field when the field is focused and empty. Do not use it instead of a `label`, and do not put anything in it that the user needs to know. It disappears when the user starts to type, and some screen readers do not read it. Use `helperText` for that.
1243
1243
  */
1244
1244
  "placeholder": string;
1245
1245
  /**
@@ -1349,7 +1349,7 @@ export namespace Components {
1349
1349
  */
1350
1350
  "formatter"?: (date: Date) => string;
1351
1351
  /**
1352
- * Optional helper text to display below the input field when it has focus
1352
+ * Optional helper text to display below the input field when it has focus. Screen readers read it as the description of the field, so use it for what the user needs to know, such as the format of the value or a requirement.
1353
1353
  */
1354
1354
  "helperText": string;
1355
1355
  /**
@@ -1367,7 +1367,7 @@ export namespace Components {
1367
1367
  */
1368
1368
  "language": Languages;
1369
1369
  /**
1370
- * The placeholder text shown inside the input field, when the field is focused and empty
1370
+ * A hint about what to type, such as an example or the format of the value. It is shown inside the field when the field is focused and empty, but not on iOS and Android, where the native date picker is used. Do not use it instead of a `label`, and do not put anything in it that the user needs to know. It disappears when the user starts to type, and some screen readers do not read it. Use `helperText` for that.
1371
1371
  */
1372
1372
  "placeholder": string;
1373
1373
  /**
@@ -2059,8 +2059,12 @@ export namespace Components {
2059
2059
  * input field.
2060
2060
  * We created this to keep the visual styles the same everywhere
2061
2061
  * and to avoid importing styles separately.
2062
- * Also this enables us to open the helper line in limel-portal,
2063
- * more easily without having to send the styles to the portal.
2062
+ * :::note
2063
+ * The component has `shadow: false`, so that the helper text is part of the
2064
+ * DOM of the consumer. This way, the `id` of the helper text can be used in
2065
+ * the `aria-describedby` of the input element in the consumer, which is
2066
+ * not possible across a shadow root.
2067
+ * :::
2064
2068
  * @exampleComponent limel-example-helper-line-basic
2065
2069
  * @exampleComponent limel-example-helper-line-invalid
2066
2070
  * @exampleComponent limel-example-helper-line-long-text
@@ -2076,7 +2080,7 @@ export namespace Components {
2076
2080
  */
2077
2081
  "helperText"?: string;
2078
2082
  /**
2079
- * Used by `aria-controls` and `aria-describedby` in the parent component.
2083
+ * Used by `aria-describedby` in the parent component.
2080
2084
  */
2081
2085
  "helperTextId"?: string;
2082
2086
  /**
@@ -2295,7 +2299,7 @@ export namespace Components {
2295
2299
  */
2296
2300
  "getSelectionStart": () => Promise<number | null>;
2297
2301
  /**
2298
- * Optional helper text to display below the input field when it has focus
2302
+ * Optional helper text to display below the input field when it has focus. Screen readers read it as the description of the field, so use it for what the user needs to know, such as the format of the value or a requirement.
2299
2303
  */
2300
2304
  "helperText": string;
2301
2305
  /**
@@ -2337,7 +2341,7 @@ export namespace Components {
2337
2341
  */
2338
2342
  "pattern": string;
2339
2343
  /**
2340
- * The placeholder text shown inside the input field, when the field is focused and empty.
2344
+ * A hint about what to type, such as an example or the format of the value. It is shown inside the field when the field is focused and empty. Do not use it instead of a `label`, and do not put anything in it that the user needs to know. It disappears when the user starts to type, and some screen readers do not read it. Use `helperText` for that.
2341
2345
  */
2342
2346
  "placeholder": string;
2343
2347
  /**
@@ -3616,70 +3620,24 @@ export namespace Components {
3616
3620
  }
3617
3621
  /**
3618
3622
  * A resizable panel that is displayed on top of the right side of the page.
3619
- * The content is placed in the default slot, below a toolbar and a header.
3620
- * The panel is positioned relative to its nearest positioned ancestor. Set
3621
- * `position: relative` on that element. Use `--side-panel-top-inset`,
3622
- * `--side-panel-right-inset` and `--side-panel-bottom-inset` to keep parts of
3623
- * that element visible, for example a header.
3624
- * The CSS custom properties can be set on the panel or on any ancestor.
3625
- * The panel is a dialog that does not block the rest of the page. Set `label`
3626
- * to give it an accessible name, which screen readers announce. When the panel
3627
- * opens, focus moves into it. When the panel is removed, focus returns to the
3628
- * element that had it before, unless focus is somewhere else by then.
3629
- * The panel emits `close` when the user clicks the close button, or presses
3630
- * Escape. It does not remove itself. The consumer must remove it from the DOM.
3631
- * The user can resize the panel by dragging its left edge, or with the arrow
3632
- * keys. The panel emits `changeWidth` when a resize is finished.
3633
- * See the examples for how closing and resizing work in detail.
3634
- * ## Header
3635
- * The header shows the heading, subheading and icon of the last entry in
3636
- * `stack`. When the entry has a `color`, the header gets that background color,
3637
- * and the headings are white with a text shadow. When `stack` is empty, the
3638
- * panel has no header.
3639
- * Put controls for the header, for example a follow button or a menu, in the
3640
- * `header-actions` slot. They are shown at the right end of the header. When
3641
- * `stack` is empty, there is no header, and the slot content is not shown.
3642
- * The slot is for small controls. It is at most half as wide as the header,
3643
- * and at most as tall as the heading and subheading together. Larger content
3644
- * is cut off, so that the header keeps its size.
3645
- * The slot content is not tied to an entry in `stack`. When the last entry
3646
- * changes, the consumer must also change the slot content.
3647
- * The slot content keeps its own colors. Use `--side-panel-header-text-color`
3648
- * to match the text color of the header. It is white when the header has a
3649
- * `color`. It can also be used as the `color` of an `Icon`.
3650
- * ## Actions
3651
- * The toolbar has a close button on the left. Other buttons are set with
3652
- * `actions`, and are shown on the right. The `type` of an action decides its
3653
- * icon. When the user clicks an action, the panel emits `selectAction` with the
3654
- * `id` of the action and the click event. The consumer decides what the action
3655
- * does.
3656
- * An action with an `href` is a link, so the user can open it in a new tab.
3657
- * To handle the navigation in another way, for example with the router of the
3658
- * application, call `preventDefault` on the click event in `selectAction`. Do
3659
- * this only for a plain click with the primary button. Let the browser handle
3660
- * all other clicks, so that Ctrl-click and Cmd-click still open the link in a
3661
- * new tab:
3662
- * ```ts
3663
- * function handleSelectAction(event: CustomEvent<SidePanelActionSelect>) {
3664
- * const click = event.detail.event;
3665
- * const isPlainClick =
3666
- * click.button === 0 &&
3667
- * !click.metaKey &&
3668
- * !click.ctrlKey &&
3669
- * !click.shiftKey &&
3670
- * !click.altKey;
3671
- * if (!isPlainClick) {
3672
- * return;
3673
- * }
3674
- * click.preventDefault();
3675
- * router.navigate(event.detail.id);
3676
- * }
3677
- * ```
3623
+ * It does not block the rest of the page. Place it in an element with
3624
+ * `position: relative`.
3625
+ * The panel has:
3626
+ * - a toolbar with a close button, and buttons from `actions`
3627
+ * - a header that shows the last entry of `stack`, with a slot for controls
3628
+ * - backs behind its left edge, for the other entries of `stack`
3629
+ * - a handle on its left edge, to resize the panel
3630
+ * - a full screen mode, for small screens
3631
+ * The panel emits `close`, but does not remove itself. The consumer must
3632
+ * remove it from the DOM.
3633
+ * Each example shows one feature in detail, and when to use it.
3678
3634
  * @exampleComponent limel-example-side-panel-basic
3679
3635
  * @exampleComponent limel-example-side-panel-insets
3680
3636
  * @exampleComponent limel-example-side-panel-escape
3681
3637
  * @exampleComponent limel-example-side-panel-actions
3682
3638
  * @exampleComponent limel-example-side-panel-header-actions
3639
+ * @exampleComponent limel-example-side-panel-stacking
3640
+ * @exampleComponent limel-example-side-panel-full-screen
3683
3641
  * @private
3684
3642
  */
3685
3643
  interface LimelSidePanel {
@@ -3698,6 +3656,11 @@ export namespace Components {
3698
3656
  * @default true
3699
3657
  */
3700
3658
  "closeOnEscape": boolean;
3659
+ /**
3660
+ * Set to `true` when the screen is too narrow for the panel to be displayed on top of the page. The panel then covers the full width of the positioned ancestor. It cannot be resized, and the backs of the stack are not shown.
3661
+ * @default false
3662
+ */
3663
+ "fullScreen": boolean;
3701
3664
  /**
3702
3665
  * Accessible name of the panel. Screen readers announce it. Set it to something that tells the user what the panel is for.
3703
3666
  */
@@ -3708,7 +3671,7 @@ export namespace Components {
3708
3671
  */
3709
3672
  "resizeLabel": string;
3710
3673
  /**
3711
- * The panels in the stack, outermost first. The last entry is the panel that is displayed. Its heading, subheading and icon are shown in the header.
3674
+ * The panels in the stack, outermost first. The last entry is the panel that is displayed. Its heading, subheading and icon are shown in the header. The other entries are shown as backs behind the panel.
3712
3675
  * @default []
3713
3676
  */
3714
3677
  "stack": SidePanelEntry[];
@@ -5780,8 +5743,12 @@ declare global {
5780
5743
  * input field.
5781
5744
  * We created this to keep the visual styles the same everywhere
5782
5745
  * and to avoid importing styles separately.
5783
- * Also this enables us to open the helper line in limel-portal,
5784
- * more easily without having to send the styles to the portal.
5746
+ * :::note
5747
+ * The component has `shadow: false`, so that the helper text is part of the
5748
+ * DOM of the consumer. This way, the `id` of the helper text can be used in
5749
+ * the `aria-describedby` of the input element in the consumer, which is
5750
+ * not possible across a shadow root.
5751
+ * :::
5785
5752
  * @exampleComponent limel-example-helper-line-basic
5786
5753
  * @exampleComponent limel-example-helper-line-invalid
5787
5754
  * @exampleComponent limel-example-helper-line-long-text
@@ -6664,73 +6631,28 @@ declare global {
6664
6631
  "close": void;
6665
6632
  "selectAction": SidePanelActionSelect;
6666
6633
  "changeWidth": number;
6634
+ "selectStackEntry": number;
6667
6635
  }
6668
6636
  /**
6669
6637
  * A resizable panel that is displayed on top of the right side of the page.
6670
- * The content is placed in the default slot, below a toolbar and a header.
6671
- * The panel is positioned relative to its nearest positioned ancestor. Set
6672
- * `position: relative` on that element. Use `--side-panel-top-inset`,
6673
- * `--side-panel-right-inset` and `--side-panel-bottom-inset` to keep parts of
6674
- * that element visible, for example a header.
6675
- * The CSS custom properties can be set on the panel or on any ancestor.
6676
- * The panel is a dialog that does not block the rest of the page. Set `label`
6677
- * to give it an accessible name, which screen readers announce. When the panel
6678
- * opens, focus moves into it. When the panel is removed, focus returns to the
6679
- * element that had it before, unless focus is somewhere else by then.
6680
- * The panel emits `close` when the user clicks the close button, or presses
6681
- * Escape. It does not remove itself. The consumer must remove it from the DOM.
6682
- * The user can resize the panel by dragging its left edge, or with the arrow
6683
- * keys. The panel emits `changeWidth` when a resize is finished.
6684
- * See the examples for how closing and resizing work in detail.
6685
- * ## Header
6686
- * The header shows the heading, subheading and icon of the last entry in
6687
- * `stack`. When the entry has a `color`, the header gets that background color,
6688
- * and the headings are white with a text shadow. When `stack` is empty, the
6689
- * panel has no header.
6690
- * Put controls for the header, for example a follow button or a menu, in the
6691
- * `header-actions` slot. They are shown at the right end of the header. When
6692
- * `stack` is empty, there is no header, and the slot content is not shown.
6693
- * The slot is for small controls. It is at most half as wide as the header,
6694
- * and at most as tall as the heading and subheading together. Larger content
6695
- * is cut off, so that the header keeps its size.
6696
- * The slot content is not tied to an entry in `stack`. When the last entry
6697
- * changes, the consumer must also change the slot content.
6698
- * The slot content keeps its own colors. Use `--side-panel-header-text-color`
6699
- * to match the text color of the header. It is white when the header has a
6700
- * `color`. It can also be used as the `color` of an `Icon`.
6701
- * ## Actions
6702
- * The toolbar has a close button on the left. Other buttons are set with
6703
- * `actions`, and are shown on the right. The `type` of an action decides its
6704
- * icon. When the user clicks an action, the panel emits `selectAction` with the
6705
- * `id` of the action and the click event. The consumer decides what the action
6706
- * does.
6707
- * An action with an `href` is a link, so the user can open it in a new tab.
6708
- * To handle the navigation in another way, for example with the router of the
6709
- * application, call `preventDefault` on the click event in `selectAction`. Do
6710
- * this only for a plain click with the primary button. Let the browser handle
6711
- * all other clicks, so that Ctrl-click and Cmd-click still open the link in a
6712
- * new tab:
6713
- * ```ts
6714
- * function handleSelectAction(event: CustomEvent<SidePanelActionSelect>) {
6715
- * const click = event.detail.event;
6716
- * const isPlainClick =
6717
- * click.button === 0 &&
6718
- * !click.metaKey &&
6719
- * !click.ctrlKey &&
6720
- * !click.shiftKey &&
6721
- * !click.altKey;
6722
- * if (!isPlainClick) {
6723
- * return;
6724
- * }
6725
- * click.preventDefault();
6726
- * router.navigate(event.detail.id);
6727
- * }
6728
- * ```
6638
+ * It does not block the rest of the page. Place it in an element with
6639
+ * `position: relative`.
6640
+ * The panel has:
6641
+ * - a toolbar with a close button, and buttons from `actions`
6642
+ * - a header that shows the last entry of `stack`, with a slot for controls
6643
+ * - backs behind its left edge, for the other entries of `stack`
6644
+ * - a handle on its left edge, to resize the panel
6645
+ * - a full screen mode, for small screens
6646
+ * The panel emits `close`, but does not remove itself. The consumer must
6647
+ * remove it from the DOM.
6648
+ * Each example shows one feature in detail, and when to use it.
6729
6649
  * @exampleComponent limel-example-side-panel-basic
6730
6650
  * @exampleComponent limel-example-side-panel-insets
6731
6651
  * @exampleComponent limel-example-side-panel-escape
6732
6652
  * @exampleComponent limel-example-side-panel-actions
6733
6653
  * @exampleComponent limel-example-side-panel-header-actions
6654
+ * @exampleComponent limel-example-side-panel-stacking
6655
+ * @exampleComponent limel-example-side-panel-full-screen
6734
6656
  * @private
6735
6657
  */
6736
6658
  interface HTMLLimelSidePanelElement extends Components.LimelSidePanel, HTMLStencilElement {
@@ -8377,7 +8299,7 @@ declare namespace LocalJSX {
8377
8299
  */
8378
8300
  "disabled"?: boolean;
8379
8301
  /**
8380
- * Helper text of the input field
8302
+ * Optional helper text to display below the input field when it has focus. Screen readers read it as the description of the field, so use it for what the user needs to know, such as the format of the value or a requirement.
8381
8303
  */
8382
8304
  "helperText"?: string;
8383
8305
  /**
@@ -8407,7 +8329,7 @@ declare namespace LocalJSX {
8407
8329
  */
8408
8330
  "paletteColumnCount"?: number;
8409
8331
  /**
8410
- * The placeholder text shown inside the input field, when the field is focused and empty.
8332
+ * A hint about what to type, such as an example or the format of the value. It is shown inside the field when the field is focused and empty. Do not use it instead of a `label`, and do not put anything in it that the user needs to know. It disappears when the user starts to type, and some screen readers do not read it. Use `helperText` for that.
8411
8333
  */
8412
8334
  "placeholder"?: string;
8413
8335
  /**
@@ -8521,7 +8443,7 @@ declare namespace LocalJSX {
8521
8443
  */
8522
8444
  "formatter"?: (date: Date) => string;
8523
8445
  /**
8524
- * Optional helper text to display below the input field when it has focus
8446
+ * Optional helper text to display below the input field when it has focus. Screen readers read it as the description of the field, so use it for what the user needs to know, such as the format of the value or a requirement.
8525
8447
  */
8526
8448
  "helperText"?: string;
8527
8449
  /**
@@ -8543,7 +8465,7 @@ declare namespace LocalJSX {
8543
8465
  */
8544
8466
  "onChange"?: (event: LimelDatePickerCustomEvent<Date>) => void;
8545
8467
  /**
8546
- * The placeholder text shown inside the input field, when the field is focused and empty
8468
+ * A hint about what to type, such as an example or the format of the value. It is shown inside the field when the field is focused and empty, but not on iOS and Android, where the native date picker is used. Do not use it instead of a `label`, and do not put anything in it that the user needs to know. It disappears when the user starts to type, and some screen readers do not read it. Use `helperText` for that.
8547
8469
  */
8548
8470
  "placeholder"?: string;
8549
8471
  /**
@@ -9308,8 +9230,12 @@ declare namespace LocalJSX {
9308
9230
  * input field.
9309
9231
  * We created this to keep the visual styles the same everywhere
9310
9232
  * and to avoid importing styles separately.
9311
- * Also this enables us to open the helper line in limel-portal,
9312
- * more easily without having to send the styles to the portal.
9233
+ * :::note
9234
+ * The component has `shadow: false`, so that the helper text is part of the
9235
+ * DOM of the consumer. This way, the `id` of the helper text can be used in
9236
+ * the `aria-describedby` of the input element in the consumer, which is
9237
+ * not possible across a shadow root.
9238
+ * :::
9313
9239
  * @exampleComponent limel-example-helper-line-basic
9314
9240
  * @exampleComponent limel-example-helper-line-invalid
9315
9241
  * @exampleComponent limel-example-helper-line-long-text
@@ -9325,7 +9251,7 @@ declare namespace LocalJSX {
9325
9251
  */
9326
9252
  "helperText"?: string;
9327
9253
  /**
9328
- * Used by `aria-controls` and `aria-describedby` in the parent component.
9254
+ * Used by `aria-describedby` in the parent component.
9329
9255
  */
9330
9256
  "helperTextId"?: string;
9331
9257
  /**
@@ -9532,7 +9458,7 @@ declare namespace LocalJSX {
9532
9458
  */
9533
9459
  "formatNumber"?: boolean;
9534
9460
  /**
9535
- * Optional helper text to display below the input field when it has focus
9461
+ * Optional helper text to display below the input field when it has focus. Screen readers read it as the description of the field, so use it for what the user needs to know, such as the format of the value or a requirement.
9536
9462
  */
9537
9463
  "helperText"?: string;
9538
9464
  /**
@@ -9582,7 +9508,7 @@ declare namespace LocalJSX {
9582
9508
  */
9583
9509
  "pattern"?: string;
9584
9510
  /**
9585
- * The placeholder text shown inside the input field, when the field is focused and empty.
9511
+ * A hint about what to type, such as an example or the format of the value. It is shown inside the field when the field is focused and empty. Do not use it instead of a `label`, and do not put anything in it that the user needs to know. It disappears when the user starts to type, and some screen readers do not read it. Use `helperText` for that.
9586
9512
  */
9587
9513
  "placeholder"?: string;
9588
9514
  /**
@@ -10946,70 +10872,24 @@ declare namespace LocalJSX {
10946
10872
  }
10947
10873
  /**
10948
10874
  * A resizable panel that is displayed on top of the right side of the page.
10949
- * The content is placed in the default slot, below a toolbar and a header.
10950
- * The panel is positioned relative to its nearest positioned ancestor. Set
10951
- * `position: relative` on that element. Use `--side-panel-top-inset`,
10952
- * `--side-panel-right-inset` and `--side-panel-bottom-inset` to keep parts of
10953
- * that element visible, for example a header.
10954
- * The CSS custom properties can be set on the panel or on any ancestor.
10955
- * The panel is a dialog that does not block the rest of the page. Set `label`
10956
- * to give it an accessible name, which screen readers announce. When the panel
10957
- * opens, focus moves into it. When the panel is removed, focus returns to the
10958
- * element that had it before, unless focus is somewhere else by then.
10959
- * The panel emits `close` when the user clicks the close button, or presses
10960
- * Escape. It does not remove itself. The consumer must remove it from the DOM.
10961
- * The user can resize the panel by dragging its left edge, or with the arrow
10962
- * keys. The panel emits `changeWidth` when a resize is finished.
10963
- * See the examples for how closing and resizing work in detail.
10964
- * ## Header
10965
- * The header shows the heading, subheading and icon of the last entry in
10966
- * `stack`. When the entry has a `color`, the header gets that background color,
10967
- * and the headings are white with a text shadow. When `stack` is empty, the
10968
- * panel has no header.
10969
- * Put controls for the header, for example a follow button or a menu, in the
10970
- * `header-actions` slot. They are shown at the right end of the header. When
10971
- * `stack` is empty, there is no header, and the slot content is not shown.
10972
- * The slot is for small controls. It is at most half as wide as the header,
10973
- * and at most as tall as the heading and subheading together. Larger content
10974
- * is cut off, so that the header keeps its size.
10975
- * The slot content is not tied to an entry in `stack`. When the last entry
10976
- * changes, the consumer must also change the slot content.
10977
- * The slot content keeps its own colors. Use `--side-panel-header-text-color`
10978
- * to match the text color of the header. It is white when the header has a
10979
- * `color`. It can also be used as the `color` of an `Icon`.
10980
- * ## Actions
10981
- * The toolbar has a close button on the left. Other buttons are set with
10982
- * `actions`, and are shown on the right. The `type` of an action decides its
10983
- * icon. When the user clicks an action, the panel emits `selectAction` with the
10984
- * `id` of the action and the click event. The consumer decides what the action
10985
- * does.
10986
- * An action with an `href` is a link, so the user can open it in a new tab.
10987
- * To handle the navigation in another way, for example with the router of the
10988
- * application, call `preventDefault` on the click event in `selectAction`. Do
10989
- * this only for a plain click with the primary button. Let the browser handle
10990
- * all other clicks, so that Ctrl-click and Cmd-click still open the link in a
10991
- * new tab:
10992
- * ```ts
10993
- * function handleSelectAction(event: CustomEvent<SidePanelActionSelect>) {
10994
- * const click = event.detail.event;
10995
- * const isPlainClick =
10996
- * click.button === 0 &&
10997
- * !click.metaKey &&
10998
- * !click.ctrlKey &&
10999
- * !click.shiftKey &&
11000
- * !click.altKey;
11001
- * if (!isPlainClick) {
11002
- * return;
11003
- * }
11004
- * click.preventDefault();
11005
- * router.navigate(event.detail.id);
11006
- * }
11007
- * ```
10875
+ * It does not block the rest of the page. Place it in an element with
10876
+ * `position: relative`.
10877
+ * The panel has:
10878
+ * - a toolbar with a close button, and buttons from `actions`
10879
+ * - a header that shows the last entry of `stack`, with a slot for controls
10880
+ * - backs behind its left edge, for the other entries of `stack`
10881
+ * - a handle on its left edge, to resize the panel
10882
+ * - a full screen mode, for small screens
10883
+ * The panel emits `close`, but does not remove itself. The consumer must
10884
+ * remove it from the DOM.
10885
+ * Each example shows one feature in detail, and when to use it.
11008
10886
  * @exampleComponent limel-example-side-panel-basic
11009
10887
  * @exampleComponent limel-example-side-panel-insets
11010
10888
  * @exampleComponent limel-example-side-panel-escape
11011
10889
  * @exampleComponent limel-example-side-panel-actions
11012
10890
  * @exampleComponent limel-example-side-panel-header-actions
10891
+ * @exampleComponent limel-example-side-panel-stacking
10892
+ * @exampleComponent limel-example-side-panel-full-screen
11013
10893
  * @private
11014
10894
  */
11015
10895
  interface LimelSidePanel {
@@ -11028,6 +10908,11 @@ declare namespace LocalJSX {
11028
10908
  * @default true
11029
10909
  */
11030
10910
  "closeOnEscape"?: boolean;
10911
+ /**
10912
+ * Set to `true` when the screen is too narrow for the panel to be displayed on top of the page. The panel then covers the full width of the positioned ancestor. It cannot be resized, and the backs of the stack are not shown.
10913
+ * @default false
10914
+ */
10915
+ "fullScreen"?: boolean;
11031
10916
  /**
11032
10917
  * Accessible name of the panel. Screen readers announce it. Set it to something that tells the user what the panel is for.
11033
10918
  */
@@ -11044,13 +10929,17 @@ declare namespace LocalJSX {
11044
10929
  * Emitted when an action in the toolbar is clicked. The detail has the `id` of the action, or its `type` if it has no `id`, and the click event.
11045
10930
  */
11046
10931
  "onSelectAction"?: (event: LimelSidePanelCustomEvent<SidePanelActionSelect>) => void;
10932
+ /**
10933
+ * Emitted when a back of the stack is clicked. The detail is the index of its entry in `stack`.
10934
+ */
10935
+ "onSelectStackEntry"?: (event: LimelSidePanelCustomEvent<number>) => void;
11047
10936
  /**
11048
10937
  * Label of the resize handle. Used as the accessible name.
11049
10938
  * @default 'Resize'
11050
10939
  */
11051
10940
  "resizeLabel"?: string;
11052
10941
  /**
11053
- * The panels in the stack, outermost first. The last entry is the panel that is displayed. Its heading, subheading and icon are shown in the header.
10942
+ * The panels in the stack, outermost first. The last entry is the panel that is displayed. Its heading, subheading and icon are shown in the header. The other entries are shown as backs behind the panel.
11054
10943
  * @default []
11055
10944
  */
11056
10945
  "stack"?: SidePanelEntry[];
@@ -12335,6 +12224,7 @@ declare namespace LocalJSX {
12335
12224
  "closeLabel": string;
12336
12225
  "resizeLabel": string;
12337
12226
  "closeOnEscape": boolean;
12227
+ "fullScreen": boolean;
12338
12228
  }
12339
12229
  interface LimelSliderAttributes {
12340
12230
  "disabled": boolean;
@@ -13256,8 +13146,12 @@ declare module "@stencil/core" {
13256
13146
  * input field.
13257
13147
  * We created this to keep the visual styles the same everywhere
13258
13148
  * and to avoid importing styles separately.
13259
- * Also this enables us to open the helper line in limel-portal,
13260
- * more easily without having to send the styles to the portal.
13149
+ * :::note
13150
+ * The component has `shadow: false`, so that the helper text is part of the
13151
+ * DOM of the consumer. This way, the `id` of the helper text can be used in
13152
+ * the `aria-describedby` of the input element in the consumer, which is
13153
+ * not possible across a shadow root.
13154
+ * :::
13261
13155
  * @exampleComponent limel-example-helper-line-basic
13262
13156
  * @exampleComponent limel-example-helper-line-invalid
13263
13157
  * @exampleComponent limel-example-helper-line-long-text
@@ -13789,70 +13683,24 @@ declare module "@stencil/core" {
13789
13683
  "limel-shortcut": LocalJSX.IntrinsicElements["limel-shortcut"] & JSXBase.HTMLAttributes<HTMLLimelShortcutElement>;
13790
13684
  /**
13791
13685
  * A resizable panel that is displayed on top of the right side of the page.
13792
- * The content is placed in the default slot, below a toolbar and a header.
13793
- * The panel is positioned relative to its nearest positioned ancestor. Set
13794
- * `position: relative` on that element. Use `--side-panel-top-inset`,
13795
- * `--side-panel-right-inset` and `--side-panel-bottom-inset` to keep parts of
13796
- * that element visible, for example a header.
13797
- * The CSS custom properties can be set on the panel or on any ancestor.
13798
- * The panel is a dialog that does not block the rest of the page. Set `label`
13799
- * to give it an accessible name, which screen readers announce. When the panel
13800
- * opens, focus moves into it. When the panel is removed, focus returns to the
13801
- * element that had it before, unless focus is somewhere else by then.
13802
- * The panel emits `close` when the user clicks the close button, or presses
13803
- * Escape. It does not remove itself. The consumer must remove it from the DOM.
13804
- * The user can resize the panel by dragging its left edge, or with the arrow
13805
- * keys. The panel emits `changeWidth` when a resize is finished.
13806
- * See the examples for how closing and resizing work in detail.
13807
- * ## Header
13808
- * The header shows the heading, subheading and icon of the last entry in
13809
- * `stack`. When the entry has a `color`, the header gets that background color,
13810
- * and the headings are white with a text shadow. When `stack` is empty, the
13811
- * panel has no header.
13812
- * Put controls for the header, for example a follow button or a menu, in the
13813
- * `header-actions` slot. They are shown at the right end of the header. When
13814
- * `stack` is empty, there is no header, and the slot content is not shown.
13815
- * The slot is for small controls. It is at most half as wide as the header,
13816
- * and at most as tall as the heading and subheading together. Larger content
13817
- * is cut off, so that the header keeps its size.
13818
- * The slot content is not tied to an entry in `stack`. When the last entry
13819
- * changes, the consumer must also change the slot content.
13820
- * The slot content keeps its own colors. Use `--side-panel-header-text-color`
13821
- * to match the text color of the header. It is white when the header has a
13822
- * `color`. It can also be used as the `color` of an `Icon`.
13823
- * ## Actions
13824
- * The toolbar has a close button on the left. Other buttons are set with
13825
- * `actions`, and are shown on the right. The `type` of an action decides its
13826
- * icon. When the user clicks an action, the panel emits `selectAction` with the
13827
- * `id` of the action and the click event. The consumer decides what the action
13828
- * does.
13829
- * An action with an `href` is a link, so the user can open it in a new tab.
13830
- * To handle the navigation in another way, for example with the router of the
13831
- * application, call `preventDefault` on the click event in `selectAction`. Do
13832
- * this only for a plain click with the primary button. Let the browser handle
13833
- * all other clicks, so that Ctrl-click and Cmd-click still open the link in a
13834
- * new tab:
13835
- * ```ts
13836
- * function handleSelectAction(event: CustomEvent<SidePanelActionSelect>) {
13837
- * const click = event.detail.event;
13838
- * const isPlainClick =
13839
- * click.button === 0 &&
13840
- * !click.metaKey &&
13841
- * !click.ctrlKey &&
13842
- * !click.shiftKey &&
13843
- * !click.altKey;
13844
- * if (!isPlainClick) {
13845
- * return;
13846
- * }
13847
- * click.preventDefault();
13848
- * router.navigate(event.detail.id);
13849
- * }
13850
- * ```
13686
+ * It does not block the rest of the page. Place it in an element with
13687
+ * `position: relative`.
13688
+ * The panel has:
13689
+ * - a toolbar with a close button, and buttons from `actions`
13690
+ * - a header that shows the last entry of `stack`, with a slot for controls
13691
+ * - backs behind its left edge, for the other entries of `stack`
13692
+ * - a handle on its left edge, to resize the panel
13693
+ * - a full screen mode, for small screens
13694
+ * The panel emits `close`, but does not remove itself. The consumer must
13695
+ * remove it from the DOM.
13696
+ * Each example shows one feature in detail, and when to use it.
13851
13697
  * @exampleComponent limel-example-side-panel-basic
13852
13698
  * @exampleComponent limel-example-side-panel-insets
13853
13699
  * @exampleComponent limel-example-side-panel-escape
13854
13700
  * @exampleComponent limel-example-side-panel-actions
13855
13701
  * @exampleComponent limel-example-side-panel-header-actions
13702
+ * @exampleComponent limel-example-side-panel-stacking
13703
+ * @exampleComponent limel-example-side-panel-full-screen
13856
13704
  * @private
13857
13705
  */
13858
13706
  "limel-side-panel": LocalJSX.IntrinsicElements["limel-side-panel"] & JSXBase.HTMLAttributes<HTMLLimelSidePanelElement>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@limetech/lime-elements",
3
- "version": "40.11.3",
3
+ "version": "40.12.1",
4
4
  "description": "Lime Elements",
5
5
  "author": "Lime Technologies",
6
6
  "license": "Apache-2.0",
@@ -56,14 +56,14 @@
56
56
  "@commitlint/config-conventional": "^21.2.3",
57
57
  "@limetech/eslint-config": "^5.0.1",
58
58
  "@microsoft/api-extractor": "^7.59.4",
59
- "@playwright/test": "1.64.0",
59
+ "@playwright/test": "1.64.1",
60
60
  "@popperjs/core": "^2.11.8",
61
61
  "@rjsf/core": "^6.11.0",
62
62
  "@rjsf/utils": "^6.11.0",
63
63
  "@rjsf/validator-ajv8": "^6.11.0",
64
64
  "@stencil/core": "^4.43.5",
65
65
  "@stencil/sass": "^3.3.3",
66
- "@stencil/vitest": "^1.15.1",
66
+ "@stencil/vitest": "^1.16.1",
67
67
  "@types/codemirror": "^5.60.17",
68
68
  "@types/html-escaper": "^3.0.4",
69
69
  "@types/lodash-es": "^4.17.12",
@@ -93,7 +93,7 @@
93
93
  "morphdom": "^2.7.8",
94
94
  "number-abbreviate": "^2.0.0",
95
95
  "parse-css-color": "^0.2.1",
96
- "postal-mime": "^4.0.5",
96
+ "postal-mime": "^4.0.6",
97
97
  "prettier": "^3.9.10",
98
98
  "prosemirror-example-setup": "^1.2.3",
99
99
  "prosemirror-markdown": "^1.13.8",
@@ -101,8 +101,8 @@
101
101
  "prosemirror-schema-basic": "^1.2.5",
102
102
  "prosemirror-tables": "^1.8.5",
103
103
  "prosemirror-test-builder": "^1.1.1",
104
- "react": "^19.3.0",
105
- "react-dom": "^19.3.0",
104
+ "react": "^19.3.1",
105
+ "react-dom": "^19.3.1",
106
106
  "rehype-parse": "^9.0.1",
107
107
  "rehype-raw": "^7.0.0",
108
108
  "rehype-remark": "^10.0.1",