@leanix/components 0.4.818 → 0.4.819

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 (67) hide show
  1. package/fesm2022/leanix-components.mjs +1742 -123
  2. package/fesm2022/leanix-components.mjs.map +1 -1
  3. package/lib/core-ui/components/avatar/avatar.component.d.ts +27 -0
  4. package/lib/core-ui/components/avatar-group/avatar-group.component.d.ts +45 -0
  5. package/lib/core-ui/components/badge/badge.component.d.ts +10 -0
  6. package/lib/core-ui/components/banner/banner.component.d.ts +18 -0
  7. package/lib/core-ui/components/button/button.component.d.ts +22 -0
  8. package/lib/core-ui/components/button-group/button-group.component.d.ts +26 -0
  9. package/lib/core-ui/components/card/card.component.d.ts +16 -3
  10. package/lib/core-ui/components/collapsible/collapsible.component.d.ts +39 -0
  11. package/lib/core-ui/components/counter/counter.component.d.ts +20 -3
  12. package/lib/core-ui/components/ellipsis/ellipsis.component.d.ts +13 -0
  13. package/lib/core-ui/components/empty-state/empty-state.component.d.ts +38 -15
  14. package/lib/core-ui/components/page-header/page-header.component.d.ts +2 -1
  15. package/lib/core-ui/components/skeleton/skeleton.component.d.ts +16 -4
  16. package/lib/core-ui/components/spinner/spinner.component.d.ts +15 -0
  17. package/lib/core-ui/components/stepper/stepper.component.d.ts +23 -0
  18. package/lib/core-ui/components/table/table-header/table-header.component.d.ts +26 -5
  19. package/lib/core-ui/components/table/table.component.d.ts +25 -2
  20. package/lib/core-ui/components/tokenizer/token/token.component.d.ts +16 -0
  21. package/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.d.ts +38 -0
  22. package/lib/core-ui/components/tokenizer/tokenizer.component.d.ts +22 -5
  23. package/lib/core-ui/icon/fa-to-sap-icon.pipe.d.ts +2 -1
  24. package/lib/core-ui/tooltip/tooltip.component.d.ts +30 -0
  25. package/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.d.ts +79 -0
  26. package/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.d.ts +36 -0
  27. package/lib/forms-ui/components/breadcrumb/breadcrumb.component.d.ts +20 -2
  28. package/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.d.ts +34 -0
  29. package/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.d.ts +21 -0
  30. package/lib/forms-ui/components/currency/currency-input.component.d.ts +53 -0
  31. package/lib/forms-ui/components/currency/currency-symbol.component.d.ts +16 -0
  32. package/lib/forms-ui/components/date-input/date-input.component.d.ts +135 -33
  33. package/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.d.ts +35 -0
  34. package/lib/forms-ui/components/date-picker-ui/daypicker.component.d.ts +6 -0
  35. package/lib/forms-ui/components/date-picker-ui/monthpicker.component.d.ts +6 -0
  36. package/lib/forms-ui/components/date-picker-ui/yearpicker.component.d.ts +6 -0
  37. package/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.d.ts +27 -2
  38. package/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.d.ts +37 -6
  39. package/lib/forms-ui/components/error-message/error-message.component.d.ts +15 -0
  40. package/lib/forms-ui/components/form-error/form-error.component.d.ts +18 -0
  41. package/lib/forms-ui/components/input/input.component.d.ts +27 -0
  42. package/lib/forms-ui/components/multi-select/multi-select-selection/multi-select-selection.component.d.ts +30 -0
  43. package/lib/forms-ui/components/multi-select/multi-select.component.d.ts +80 -0
  44. package/lib/forms-ui/components/option/option.component.d.ts +41 -0
  45. package/lib/forms-ui/components/option-group/option-group.component.d.ts +24 -2
  46. package/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.d.ts +51 -4
  47. package/lib/forms-ui/components/options-dropdown/options-dropdown.component.d.ts +73 -0
  48. package/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.d.ts +22 -0
  49. package/lib/forms-ui/components/picker/picker.component.d.ts +25 -17
  50. package/lib/forms-ui/components/picker-option/picker-option.component.d.ts +34 -5
  51. package/lib/forms-ui/components/pill-item/pill-item.component.d.ts +25 -0
  52. package/lib/forms-ui/components/pill-list/pill-list.component.d.ts +58 -2
  53. package/lib/forms-ui/components/responsive-input/responsive-input.component.d.ts +20 -0
  54. package/lib/forms-ui/components/rich-text-editor/components/rich-text-editor-toolbar/rich-text-editor-toolbar.component.d.ts +26 -0
  55. package/lib/forms-ui/components/rich-text-editor/extensions/link/components/link-modal/link-modal.component.d.ts +15 -0
  56. package/lib/forms-ui/components/rich-text-editor/extensions/table/table-bubble-menu/table-bubble-menu.component.d.ts +17 -0
  57. package/lib/forms-ui/components/rich-text-editor/ngx-tiptap/node-view.component.d.ts +14 -0
  58. package/lib/forms-ui/components/single-select/single-select.component.d.ts +39 -0
  59. package/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.d.ts +24 -0
  60. package/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.d.ts +20 -0
  61. package/lib/forms-ui/components/switch/switch.component.d.ts +37 -8
  62. package/lib/modal-ui/components/modal-footer/modal-footer.component.d.ts +19 -0
  63. package/lib/modal-ui/components/modal-header/modal-header.component.d.ts +22 -0
  64. package/lib/popover-ui/components/popover/popover.component.d.ts +15 -24
  65. package/lib/tab-ui/components/tab/tab.component.d.ts +66 -5
  66. package/lib/tab-ui/components/tab-group/tab-group.component.d.ts +29 -1
  67. package/package.json +1 -1
@@ -84,11 +84,21 @@ const GLOBAL_TRANSLATION_OPTIONS = new InjectionToken('GLOBAL_TRANSLATION_OPTION
84
84
 
85
85
  /**
86
86
  * Badge component is used to show a small piece of information in a colored badge.
87
+ * Commonly used for status indicators, counts, or labels.
88
+ *
89
+ * ### Example
90
+ * @example
91
+ * ```html
92
+ * <lx-badge [content]="42" color="blue" />
93
+ * <lx-badge [content]="'New'" color="green" />
94
+ * <lx-badge [content]="errorCount" color="red" />
95
+ * ```
87
96
  */
88
97
  class BadgeComponent {
89
98
  constructor() {
90
99
  /**
91
100
  * The color of the badge component
101
+ * @default 'blue'
92
102
  */
93
103
  this.color = 'blue';
94
104
  }
@@ -121,15 +131,33 @@ const BANNER_SIZE = {
121
131
 
122
132
  /**
123
133
  * Banner can be used to display important information to the user. It allows for any type of content to be displayed in a banner.
134
+ * Banners automatically display an icon based on the type when using the 'big' size.
135
+ *
136
+ * ### Projection slots
137
+ * - Default slot: Main content of the banner (text, links, actions)
138
+ *
139
+ * ### Example
140
+ * @example
141
+ * ```html
142
+ * <lx-banner [type]="'warning'" [size]="'big'">
143
+ * <p>Your session will expire in 5 minutes.</p>
144
+ * </lx-banner>
145
+ *
146
+ * <lx-banner [type]="'success'" [size]="'small'">
147
+ * Changes saved successfully!
148
+ * </lx-banner>
149
+ * ```
124
150
  */
125
151
  class BannerComponent {
126
152
  constructor() {
127
153
  /**
128
154
  * The type of the banner
155
+ * @default BANNER_TYPE.WARNING
129
156
  */
130
157
  this.type = input(BANNER_TYPE.WARNING);
131
158
  /**
132
159
  * The size of the banner
160
+ * @default BANNER_SIZE.BIG
133
161
  */
134
162
  this.size = input(BANNER_SIZE.BIG);
135
163
  this.showIcon = computed(() => this.size() === BANNER_SIZE.BIG);
@@ -175,8 +203,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
175
203
  }, imports: [IconComponent$1], template: "<div class=\"banner-wrapper\">\n @if (showIcon()) {\n <ui5-icon [name]=\"iconName()\" [design]=\"iconDesign()\" />\n }\n <div class=\"banner-content\">\n <ng-content />\n </div>\n</div>\n", styles: [":host{display:block;border-left:2px solid}:host[type=success]{background-color:color-mix(in srgb,#33cc58 10%,white);border-color:#33cc58}:host[type=info]{background-color:color-mix(in srgb,#2889ff 10%,white);border-color:#2889ff}:host[type=warning]{background-color:color-mix(in srgb,#ffb62a 10%,white);border-color:#ffb62a}:host[type=danger]{background-color:color-mix(in srgb,#f96464 10%,white);border-color:#f96464}:host[size=big]{margin-bottom:12px}:host[size=big] .banner-wrapper{position:relative;padding:.75rem}:host[size=big] .banner-content{padding-left:2rem}:host[size=big] ui5-icon{position:absolute;top:.875rem;left:.75rem}:host[size=small]{margin-bottom:6px}:host[size=small] .banner-wrapper{padding:.5rem}:host ::ng-deep .banner-content h4{margin-top:0;color:inherit}:host ::ng-deep .banner-content .alert-link{font-weight:700}:host ::ng-deep .banner-content>p,:host ::ng-deep .banner-content>ul{margin-bottom:0}:host ::ng-deep .banner-content p+p{margin-bottom:5px}:host ::ng-deep .banner-content p:last-child{margin-bottom:0}\n"] }]
176
204
  }] });
177
205
 
206
+ /**
207
+ * Button group component arranges multiple buttons in a horizontal layout with configurable separators.
208
+ * Use 'margin' for spaced buttons or 'border' for connected buttons with dividing lines.
209
+ *
210
+ * ### Projection slots
211
+ * - Default slot: Button elements to display in the group
212
+ *
213
+ * ### Example
214
+ * @example
215
+ * ```html
216
+ * <lx-button-group separator="margin">
217
+ * <button lx-button color="primary">Save</button>
218
+ * <button lx-button>Cancel</button>
219
+ * </lx-button-group>
220
+ *
221
+ * <lx-button-group separator="border">
222
+ * <button lx-button mode="outline">View</button>
223
+ * <button lx-button mode="outline">Edit</button>
224
+ * <button lx-button mode="outline">Delete</button>
225
+ * </lx-button-group>
226
+ * ```
227
+ */
178
228
  class ButtonGroupComponent {
179
229
  constructor() {
230
+ /**
231
+ * The type of separator between buttons: 'margin' for spacing or 'border' for dividing lines.
232
+ * @default 'margin'
233
+ */
180
234
  this.separator = 'margin';
181
235
  }
182
236
  get hasMarginSeperator() {
@@ -204,39 +258,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
204
258
  /**
205
259
  * Button component is used to create a button with different styles and sizes. This uses native button element and
206
260
  * only provides styling and some additional features like loading spinner.
261
+ *
262
+ * ### Projection slots
263
+ * - Default slot: Button label or content
264
+ *
265
+ * ### Example
266
+ * @example
267
+ * ```html
268
+ * <button lx-button color="primary" size="medium">Save</button>
269
+ * <button lx-button icon="delete" color="danger" mode="outline">Delete</button>
270
+ * <button lx-button [showSpinner]="isLoading" [disabled]="isLoading">Submit</button>
271
+ * <button lx-button icon="download" endIcon="slim-arrow-down" mode="ghost">Export</button>
272
+ * <button lx-button icon="action-settings" [square]="true" [circle]="true" mode="ghost"></button>
273
+ * ```
207
274
  */
208
275
  class ButtonComponent {
209
276
  constructor() {
210
277
  /**
211
278
  * The size of the button.
279
+ * @default 'medium'
212
280
  */
213
281
  this.size = 'medium';
214
282
  /**
215
283
  * The color of the button.
284
+ * @default 'default'
216
285
  */
217
286
  this.color = 'default';
218
287
  /**
219
288
  * The mode of the button.
289
+ * @default 'solid'
220
290
  */
221
291
  this.mode = 'solid';
222
292
  /**
223
293
  * The pressed state of the button. This simulates the `:active` state of the button.
294
+ * @default false
224
295
  */
225
296
  this.pressed = false;
226
297
  /**
227
298
  * The selected state of the button. This simulates the `:hover` state of the button.
299
+ * @default false
228
300
  */
229
301
  this.selected = false;
230
302
  /**
231
303
  * This makes the button square.
304
+ * @default false
232
305
  */
233
306
  this.square = false;
234
307
  /**
235
308
  * This makes corners rounded. Use with `square` for a true circle.
309
+ * @default false
236
310
  */
237
311
  this.circle = false;
238
312
  /**
239
313
  * This disables the button.
314
+ * @default false
240
315
  */
241
316
  this.disabled = false;
242
317
  /**
@@ -269,6 +344,7 @@ class ButtonComponent {
269
344
  this.endIconKind = computed(() => (isFontAwesomeIcon(this.endIconName()) ? 'fa' : 'sap'));
270
345
  /**
271
346
  * This shows a spinner inside the button.
347
+ * @default false
272
348
  */
273
349
  this.showSpinner = false;
274
350
  }
@@ -361,13 +437,26 @@ function removeFontAwesomeVariant(iconName) {
361
437
  }
362
438
 
363
439
  /**
364
- * Card component is a container component that can be used to display content in a card-like style.
365
- * This documentation provides details on the usage and configuration of the Card Component.
440
+ * A simple container component for displaying content in a card-like style.
441
+ * Provides consistent styling and layout for grouped content.
442
+ *
443
+ * ### Projection slots
444
+ * - Default slot: All card content including title, body, and any other elements
445
+ *
446
+ * ### Example
447
+ * @example
448
+ * ```html
449
+ * <lx-card [dataStyle]="'white'">
450
+ * <h3>Card Title</h3>
451
+ * <p>Card content goes here.</p>
452
+ * </lx-card>
453
+ * ```
366
454
  */
367
455
  class CardComponent {
368
456
  constructor() {
369
457
  /**
370
- * The style of the card.
458
+ * The visual style variant of the card.
459
+ * @default 'white'
371
460
  */
372
461
  this.dataStyle = 'white';
373
462
  }
@@ -384,14 +473,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
384
473
  args: ['attr.data-style']
385
474
  }] } });
386
475
 
476
+ /**
477
+ * An expandable and collapsible section container with a toggle button.
478
+ * Useful for organizing content that can be shown or hidden on demand.
479
+ *
480
+ * ### Projection slots
481
+ * - Default slot: The title or header content that is always visible. The entire component is clickable to toggle.
482
+ *
483
+ * ### Example
484
+ * @example
485
+ * ```html
486
+ * <lx-collapsible [toggleTitle]="'Show Details'" [(collapsed)]="isCollapsed">
487
+ * <h3>Section Title</h3>
488
+ * <span class="subtitle">Additional info</span>
489
+ * </lx-collapsible>
490
+ * ```
491
+ */
387
492
  class CollapsibleComponent {
388
493
  constructor() {
389
494
  this.NAME = 'CollapsibleComponent';
495
+ /**
496
+ * When true, prevents the section from being toggled. The toggle button remains visible but disabled.
497
+ * @default false
498
+ */
390
499
  this.disableSectionToggle = false;
500
+ /**
501
+ * When true, hides the toggle button entirely. The section cannot be collapsed/expanded.
502
+ * @default false
503
+ */
391
504
  this.hideSectionToggle = false;
505
+ /**
506
+ * Size of the toggle button (arrow icon).
507
+ * @default 'small'
508
+ */
392
509
  this.toggleSize = 'small';
510
+ /**
511
+ * Text label displayed as the title attribute of the toggle button for accessibility.
512
+ * @default ''
513
+ */
393
514
  this.toggleTitle = '';
515
+ /**
516
+ * Whether the section is currently collapsed. Can be used with two-way binding.
517
+ * @default false
518
+ */
394
519
  this.collapsed = false;
520
+ /**
521
+ * Emitted when the collapsed state changes, either through user interaction or programmatic changes.
522
+ */
395
523
  this.collapsedChange = new EventEmitter();
396
524
  }
397
525
  get notClickable() {
@@ -435,12 +563,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
435
563
 
436
564
  /**
437
565
  * Counter component is used to create a counter with different styles and sizes.
566
+ * Useful for displaying notification counts, item quantities, or numeric indicators.
567
+ *
568
+ * ### Example
569
+ * @example
570
+ * ```html
571
+ * <lx-counter [content]="5" color="primary" size="default" />
572
+ * <lx-counter [content]="99" color="red" size="small" />
573
+ * <lx-counter [content]="unreadCount" color="green" />
574
+ * ```
438
575
  */
439
576
  class CounterComponent {
440
577
  constructor() {
441
- /** The size of the counter. */
578
+ /**
579
+ * The size of the counter.
580
+ * @default 'default'
581
+ */
442
582
  this.size = 'default';
443
- /** The color of the counter. */
583
+ /**
584
+ * The color of the counter.
585
+ * @default 'primary'
586
+ */
444
587
  this.color = 'primary';
445
588
  }
446
589
  get classes() {
@@ -613,6 +756,14 @@ const LX_ELLIPSIS_DEBOUNCE_ON_RESIZE = new InjectionToken('LX_ELLIPSIS_DEBOUNCE_
613
756
  });
614
757
  /**
615
758
  * You can set `max-width` CSS property on your `lx-ellipsis` host element or the parent element if you want its content to never exceed a specific width.
759
+ * The component automatically truncates overflowing text and provides a "Show more" / "Show less" toggle button.
760
+ *
761
+ * ### Example
762
+ * @example
763
+ * ```html
764
+ * <lx-ellipsis [content]="longDescription" style="max-width: 300px;" />
765
+ * <lx-ellipsis [content]="userInput" [escapeHtmlInContent]="true" />
766
+ * ```
616
767
  */
617
768
  class EllipsisComponent {
618
769
  /** @internal */
@@ -623,10 +774,15 @@ class EllipsisComponent {
623
774
  this.hostEl = hostEl;
624
775
  this.resizeObserverService = resizeObserverService;
625
776
  this.translateService = translateService;
777
+ /**
778
+ * The text content to display and potentially truncate.
779
+ * @default ''
780
+ */
626
781
  this.content = '';
627
782
  /**
628
783
  * Only set this to false if the content is not a user provided string
629
784
  * or if you sanitize the provided content yourself.
785
+ * @default true
630
786
  */
631
787
  this.escapeHtmlInContent = true;
632
788
  /** @internal */
@@ -739,59 +895,82 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
739
895
  args: ['showMoreButton', { read: ElementRef }]
740
896
  }], content$: [] } });
741
897
 
898
+ /**
899
+ * Displays an empty state with an optional icon, title, description, action buttons, and a more link.
900
+ * Useful for showing initial states before data is loaded or when no data is available.
901
+ *
902
+ * ### Projection slots
903
+ * - Default slot: Description text or additional content to display below the title
904
+ *
905
+ * ### Example
906
+ * @example
907
+ * ```html
908
+ * <lx-empty-state
909
+ * [title]="'No items found'"
910
+ * [icon]="'inbox'"
911
+ * [buttonLabel]="'Add Item'"
912
+ * [secondaryButtonLabel]="'Import'"
913
+ * [moreLinkLabel]="'Learn more'"
914
+ * [moreLink]="'https://docs.example.com'"
915
+ * (buttonClicked)="onAddItem()"
916
+ * (secondaryButtonClicked)="onImport()"
917
+ * >
918
+ * <p>Start by adding your first item or importing existing data.</p>
919
+ * </lx-empty-state>
920
+ * ```
921
+ */
742
922
  class EmptyStateComponent {
743
923
  constructor() {
744
924
  /**
745
- * The title to be displayed
925
+ * The title to be displayed. Can contain HTML.
746
926
  */
747
927
  this.title = input.required();
748
928
  /**
749
- * The SAP icon to show in the empty state.
929
+ * The SAP icon name to show in the empty state (e.g., 'inbox', 'add-document').
750
930
  */
751
931
  this.icon = input();
752
932
  /**
753
- * The main call-to-action button label
933
+ * The main call-to-action button label. If not provided, the button will not be shown.
754
934
  */
755
935
  this.buttonLabel = input();
756
936
  /**
757
- * The secondary call-to-action button label
937
+ * The secondary call-to-action button label. If not provided, the button will not be shown.
758
938
  */
759
939
  this.secondaryButtonLabel = input();
760
940
  /**
761
- * Whether the empty state is in a loading state. If true, main call-to-action button will show a spinner
941
+ * Whether the empty state is in a loading state. If true, action buttons will show a spinner.
942
+ * @default false
762
943
  */
763
944
  this.loading = input(false);
764
945
  /**
765
- * The more link label
946
+ * The text label for the more link.
766
947
  */
767
948
  this.moreLinkLabel = input();
768
949
  /**
769
- * The URL of the more link
950
+ * The URL of the more link. Can be a string for external links or an array for Angular router links.
770
951
  */
771
952
  this.moreLink = input();
772
953
  /**
773
- * Whether the more link should be opened in a new tab
774
- *
954
+ * Whether the more link should be opened in a new tab.
775
955
  * @default true
776
956
  */
777
957
  this.openMoreLinkInNewTab = input(true);
778
958
  /**
779
- * The size of the empty state
780
- *
781
- * @default medium
959
+ * The size of the empty state.
960
+ * @default 'medium'
782
961
  */
783
962
  this.size = input('medium');
784
963
  this.useRouterLink = computed(() => Array.isArray(this.moreLink()));
785
964
  /**
786
- * Emitted when the main call-to-action button is clicked
965
+ * Emitted when the main call-to-action button is clicked.
787
966
  */
788
967
  this.buttonClicked = new EventEmitter();
789
968
  /**
790
- * Emitted when the secondary call-to-action button is clicked
969
+ * Emitted when the secondary call-to-action button is clicked.
791
970
  */
792
971
  this.secondaryButtonClicked = new EventEmitter();
793
972
  /**
794
- * Emitted when the more link is clicked
973
+ * Emitted when the more link is clicked.
795
974
  */
796
975
  this.moreLinkClicked = new EventEmitter();
797
976
  }
@@ -822,10 +1001,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
822
1001
  * (or ancestor with new rendering context, created, for example, with `transform: translate(0, 0)`
823
1002
  * - `fadeBackground`: Sets background to 60% transparent white. TODO: Always use for fullSpace* classes and remove.
824
1003
  *
1004
+ * ### Projection slots
1005
+ * - Default slot: Optional text or content to display below the spinner
1006
+ *
825
1007
  * @deprecated Use the `ui5-busy-indicator` component instead.
1008
+ *
1009
+ * ### Example
1010
+ * @example
1011
+ * ```html
1012
+ * <lx-spinner class="fullSpace fadeBackground">Loading...</lx-spinner>
1013
+ * <lx-spinner [fadeBackground]="true" />
1014
+ * ```
826
1015
  */
827
1016
  class SpinnerComponent {
828
1017
  constructor() {
1018
+ /**
1019
+ * Applies a semi-transparent white background.
1020
+ * @default false
1021
+ * @deprecated Use the `fadeBackground` CSS class instead.
1022
+ */
829
1023
  this.fadeBackground = false;
830
1024
  }
831
1025
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -845,6 +1039,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
845
1039
  * Stepper component is a wrapper around the Angular CDK Stepper component. It provides a way to create a linear
846
1040
  * sequence of steps that guide users through a process.
847
1041
  *
1042
+ * ### Projection slots
1043
+ * Each `cdk-step` element projects its content into the stepper's content area when that step is active.
1044
+ *
1045
+ * ### Example
1046
+ * @example
1047
+ * ```html
1048
+ * <lx-stepper [selectedIndex]="currentStep">
1049
+ * <cdk-step label="Personal Info">
1050
+ * <form>
1051
+ * <input type="text" placeholder="Name" />
1052
+ * </form>
1053
+ * </cdk-step>
1054
+ * <cdk-step label="Contact Details">
1055
+ * <form>
1056
+ * <input type="email" placeholder="Email" />
1057
+ * </form>
1058
+ * </cdk-step>
1059
+ * <cdk-step label="Review">
1060
+ * <p>Review your information</p>
1061
+ * </cdk-step>
1062
+ * </lx-stepper>
1063
+ * ```
1064
+ *
848
1065
  * ## Usage
849
1066
  *
850
1067
  * 1. Import `LxCoreUiModule` module from `@leanix/components` and `CdkStepperModule` module from `@angular/cdk/stepper` in your module where you want to use the component, or in case of a standalone parent component, import the
@@ -910,6 +1127,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
910
1127
  * The `lx-table` directive can be applied to `<table>` elements to provide a common styling.
911
1128
  * Furthermore it supports column sorting in combination with `<lx-th>` for table headers.
912
1129
  *
1130
+ * ### Example
1131
+ * @example
1132
+ * ```html
1133
+ * <table lx-table [isSortable]="true" [(sort)]="sort">
1134
+ * <thead>
1135
+ * <tr>
1136
+ * <lx-th column="name">Name</lx-th>
1137
+ * <lx-th column="status" [disableSortClear]="true">Status</lx-th>
1138
+ * <lx-th column="actions" [disableSort]="true">Actions</lx-th>
1139
+ * </tr>
1140
+ * </thead>
1141
+ * <tbody>
1142
+ * <tr>
1143
+ * <td>Item 1</td>
1144
+ * <td>Active</td>
1145
+ * <td><button>Edit</button></td>
1146
+ * </tr>
1147
+ * </tbody>
1148
+ * </table>
1149
+ * ```
913
1150
  *
914
1151
  * ## Usage
915
1152
  *
@@ -951,11 +1188,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
951
1188
  class TableComponent {
952
1189
  constructor() {
953
1190
  /**
954
- * This enables or disables the sortability of the table.
1191
+ * Enables or disables the sortability of the table. When enabled, `<lx-th>` elements with a `column` attribute become sortable.
1192
+ * @default false
955
1193
  */
956
1194
  this.isSortable = input(false);
957
1195
  /**
958
- * The sort state of the table. Which column is sorted in what order.
1196
+ * The sort state of the table containing the column key and sort order (ASC, DESC, or undefined).
1197
+ * Can be used with two-way binding to control and react to sort changes.
1198
+ * @default {}
959
1199
  */
960
1200
  this.sort = model({});
961
1201
  }
@@ -1020,22 +1260,43 @@ registerIcon('sort-asc', {
1020
1260
  });
1021
1261
  /**
1022
1262
  * The `lx-th` can be used in combination with `lx-table` to implement sortable `<table>` elements.
1263
+ * Renders a table header cell with optional sorting functionality.
1264
+ *
1265
+ * ### Projection slots
1266
+ * - Default slot: The header text content
1267
+ *
1268
+ * ### Example
1269
+ * @example
1270
+ * ```html
1271
+ * <table lx-table [isSortable]="true" [(sort)]="sort">
1272
+ * <thead>
1273
+ * <tr>
1274
+ * <lx-th column="name">Name</lx-th>
1275
+ * <lx-th column="date" [disableSortClear]="true">Date</lx-th>
1276
+ * <lx-th column="actions" [disableSort]="true">Actions</lx-th>
1277
+ * </tr>
1278
+ * </thead>
1279
+ * </table>
1280
+ * ```
1023
1281
  */
1024
1282
  class TableHeaderComponent {
1025
1283
  #sort;
1026
1284
  constructor(parentTable) {
1027
1285
  this.parentTable = parentTable;
1028
1286
  /**
1029
- * Indicates that the column is not sortable (default `false`).
1287
+ * Disables sorting for this column even when the table has sorting enabled.
1288
+ * @default false
1030
1289
  */
1031
1290
  this.disableSort = false;
1032
1291
  /**
1033
- * Prevents the user from clearing the sort.
1034
- * Only allowing to toggle between asc & desc.
1292
+ * Prevents the user from clearing the sort state.
1293
+ * When true, only allows toggling between ascending and descending order.
1294
+ * @default false
1035
1295
  */
1036
1296
  this.disableSortClear = false;
1037
1297
  /**
1038
- * Triggers whenever the user changes the sort order.
1298
+ * Emitted whenever the user changes the sort order by clicking the header.
1299
+ * Provides the new sort state with column key and order.
1039
1300
  */
1040
1301
  this.sortChange = new EventEmitter();
1041
1302
  this.sortable = computed(() => (this.parentTable?.isSortable() && !this.disableSort) ?? false);
@@ -2129,10 +2390,40 @@ function isValidY(y) {
2129
2390
  return ['top', 'center', 'bottom'].includes(y);
2130
2391
  }
2131
2392
 
2393
+ /**
2394
+ * Tooltip component for displaying contextual information on hover.
2395
+ *
2396
+ * Supports plain text or HTML content with configurable positioning.
2397
+ * Typically used via the `lxTooltip` directive rather than directly.
2398
+ *
2399
+ * ### Example
2400
+ * @example
2401
+ * ```html
2402
+ * <button [lxTooltip]="'Save changes'">Save</button>
2403
+ *
2404
+ * <button [lxTooltip]="'<strong>Warning:</strong> Cannot be undone'" [lxTooltipHtml]="true">Delete</button>
2405
+ * ```
2406
+ */
2132
2407
  class TooltipComponent {
2133
2408
  constructor() {
2409
+ /**
2410
+ * The tooltip content to display as plain text or HTML.
2411
+ *
2412
+ * @default ''
2413
+ */
2134
2414
  this.content = '';
2415
+ /**
2416
+ * Whether the content should be rendered as HTML.
2417
+ * When false, content is displayed as plain text.
2418
+ *
2419
+ * @default false
2420
+ */
2135
2421
  this.isHtmlContent = false;
2422
+ /**
2423
+ * The position of the tooltip relative to the target element.
2424
+ *
2425
+ * @default { x: 'center', y: 'top' }
2426
+ */
2136
2427
  this.position = {
2137
2428
  x: 'center',
2138
2429
  y: 'top'
@@ -2697,7 +2988,8 @@ const FA_MODIFIER_REGEX = /\s*\b(fas|far|fal|fad|fab)\b\s*/g;
2697
2988
  * Useful for scenarios in which icon names need to be mapped at runtime,
2698
2989
  * e.g. because they are stored in the backend.
2699
2990
  *
2700
- * @example ```html
2991
+ * @example
2992
+ * ```html
2701
2993
  * <ui5-icon [name]="fontAwesomeIcon() | lxFaToSapIcon" />
2702
2994
  * ```
2703
2995
  */
@@ -2798,11 +3090,35 @@ const AVATAR_COLORS = [
2798
3090
  '#fc9785'
2799
3091
  ];
2800
3092
 
3093
+ /**
3094
+ * Avatar component displays a user's profile picture or a placeholder icon for technical users.
3095
+ * Optionally includes a mailto link when an email is provided.
3096
+ *
3097
+ * ### Example
3098
+ * @example
3099
+ * ```html
3100
+ * <lx-avatar [user]="currentUser" size="M" />
3101
+ * <lx-avatar [user]="{ displayName: 'Bot', technicalUser: true }" [showMailToLink]="false" />
3102
+ * <lx-avatar [user]="inactiveUser" [disabled]="true" size="S" />
3103
+ * ```
3104
+ */
2801
3105
  class AvatarComponent {
2802
3106
  constructor(imageReader) {
2803
3107
  this.imageReader = imageReader;
3108
+ /**
3109
+ * The size of the avatar.
3110
+ * @default 'M'
3111
+ */
2804
3112
  this.size = 'M';
3113
+ /**
3114
+ * Whether to show a mailto link when clicking on the avatar.
3115
+ * @default true
3116
+ */
2805
3117
  this.showMailToLink = true;
3118
+ /**
3119
+ * Whether the avatar should appear in a disabled state.
3120
+ * @default false
3121
+ */
2806
3122
  this.disabled = false;
2807
3123
  this.NAME = 'AvatarComponent';
2808
3124
  this.imageURL = this.imageReader.getAvatar(DEFAULT_IMAGE_ID, this.size, this.user?.displayName);
@@ -2833,6 +3149,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
2833
3149
  type: Input
2834
3150
  }] } });
2835
3151
 
3152
+ /**
3153
+ * Avatar group component displays multiple user avatars in a compact layout.
3154
+ * Supports automatic overflow handling with a "+N" indicator and overlay expansion.
3155
+ * Includes tooltip showing all user names on hover and click-to-expand functionality.
3156
+ *
3157
+ * ### Example
3158
+ * @example
3159
+ * ```html
3160
+ * <lx-avatar-group [users]="teamMembers" size="M" />
3161
+ * <lx-avatar-group [users]="assignees" type="individual" [maxLength]="5" />
3162
+ * <lx-avatar-group
3163
+ * [users]="participants"
3164
+ * [title]="'Project Team'"
3165
+ * [disabledUserIds]="inactiveUserIds"
3166
+ * [autoScale]="true"
3167
+ * />
3168
+ * ```
3169
+ */
2836
3170
  class AvatarGroupComponent {
2837
3171
  get userNames() {
2838
3172
  return this.users
@@ -2845,11 +3179,35 @@ class AvatarGroupComponent {
2845
3179
  this.zone = zone;
2846
3180
  this.resizeObserverService = resizeObserverService;
2847
3181
  this.NAME = 'AvatarGroupComponent';
3182
+ /**
3183
+ * Array of user objects to display as avatars.
3184
+ * @default []
3185
+ */
2848
3186
  this.users = [];
3187
+ /**
3188
+ * The size of all avatars in the group.
3189
+ * @default 'M'
3190
+ */
2849
3191
  this.size = 'M';
3192
+ /**
3193
+ * The display type: 'individual' for separate avatars or 'group' for overlapping.
3194
+ * @default 'group'
3195
+ */
2850
3196
  this.type = 'group';
3197
+ /**
3198
+ * Maximum number of avatars to display before showing "+N" indicator.
3199
+ * @default 0
3200
+ */
2851
3201
  this.maxLength = 0;
3202
+ /**
3203
+ * Whether to automatically scale down avatars to fit container width.
3204
+ * @default false
3205
+ */
2852
3206
  this.autoScale = false;
3207
+ /**
3208
+ * Array of user IDs that should be displayed in a disabled state.
3209
+ * @default []
3210
+ */
2853
3211
  this.disabledUserIds = [];
2854
3212
  this.overlayVisible = false;
2855
3213
  }
@@ -2923,7 +3281,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
2923
3281
  *
2924
3282
  *
2925
3283
  * ### Example
2926
- * @example ```html
3284
+ * @example
3285
+ * ```html
2927
3286
  * <lx-page-header [pageTitle]="'Agile Tracking'">
2928
3287
  * <ui5-breadcrumbs>
2929
3288
  * <ui5-breadcrumbs-item routerLink="/">Root Page</ui5-breadcrumbs-item>
@@ -2995,11 +3354,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
2995
3354
  * Use skeleton loaders for pages or sections that load content progressively, like text and images. The component can
2996
3355
  * be used to compose various scenarios like placeholders for thumbnails, lists, and avatars. See the example
2997
3356
  * [patterns](?path=/docs/skeleton-patterns--docs) for more details.
3357
+ *
3358
+ * ### Example
3359
+ * @example
3360
+ * ```html
3361
+ * <lx-skeleton width="100%" height="20px" />
3362
+ * <lx-skeleton width="200px" height="200px" borderRadius="50%" />
3363
+ * <lx-skeleton width="80%" height="16px" color="dark" />
3364
+ * ```
2998
3365
  */
2999
3366
  class SkeletonComponent {
3000
3367
  constructor() {
3001
3368
  /**
3002
- * Color of the skeleton element. 'dark' or 'light' are supported. Default is 'light'.
3369
+ * Color of the skeleton element. 'dark' or 'light' are supported.
3370
+ * @default 'light'
3003
3371
  */
3004
3372
  this.color = 'light';
3005
3373
  }
@@ -3031,6 +3399,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3031
3399
  type: Input
3032
3400
  }] } });
3033
3401
 
3402
+ /**
3403
+ * A token wrapper component used within `lx-tokenizer` to represent individual items.
3404
+ * The tokenizer manages visibility of tokens based on available space.
3405
+ *
3406
+ * ### Projection slots
3407
+ * - Default slot: The content to display inside the token (text, icons, badges, etc.)
3408
+ *
3409
+ * ### Example
3410
+ * @example
3411
+ * ```html
3412
+ * <lx-tokenizer>
3413
+ * <lx-token>Token One</lx-token>
3414
+ * <lx-token>Token Two</lx-token>
3415
+ * </lx-tokenizer>
3416
+ * ```
3417
+ */
3034
3418
  class TokenComponent {
3035
3419
  constructor(elementRef) {
3036
3420
  this.elementRef = elementRef;
@@ -3049,13 +3433,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3049
3433
  args: [{ selector: 'lx-token', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content />\n" }]
3050
3434
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
3051
3435
 
3436
+ /**
3437
+ * A companion component for `lx-tokenizer` that displays overflowing tokens in a popover.
3438
+ * Automatically listens to the tokenizer's overflow events and shows a popover anchored to the counter button.
3439
+ *
3440
+ * ### Projection slots
3441
+ * - `popoverTemplate`: Template to render inside the popover. Receives the `startIndex` of overflowing tokens as context.
3442
+ *
3443
+ * ### Example
3444
+ * @example
3445
+ * ```html
3446
+ * <lx-tokenizer #tokenizer [active]="true">
3447
+ * <lx-token>Item 1</lx-token>
3448
+ * <lx-token>Item 2</lx-token>
3449
+ * <lx-token>Item 3</lx-token>
3450
+ * </lx-tokenizer>
3451
+ *
3452
+ * <lx-tokenizer-overflow-popover [tokenizer]="tokenizer">
3453
+ * <ng-template #popoverTemplate let-startIndex>
3454
+ * <div class="overflow-items">
3455
+ * @for (item of getOverflowItems(startIndex); track item) {
3456
+ * <div>{{ item }}</div>
3457
+ * }
3458
+ * </div>
3459
+ * </ng-template>
3460
+ * </lx-tokenizer-overflow-popover>
3461
+ * ```
3462
+ */
3052
3463
  class TokenizerOverflowPopoverComponent {
3053
3464
  constructor() {
3054
3465
  this.destroyRef = inject(DestroyRef);
3055
3466
  this.startIndex = signal(0);
3056
3467
  this.changeDetectorRef = inject(ChangeDetectorRef);
3468
+ /**
3469
+ * Reference to the tokenizer component to listen for overflow events.
3470
+ */
3057
3471
  this.tokenizer = input.required();
3472
+ /**
3473
+ * Horizontal alignment of the popover relative to the counter button.
3474
+ * @default 'after'
3475
+ */
3058
3476
  this.horizontalAlign = input('after');
3477
+ /**
3478
+ * Vertical alignment of the popover relative to the counter button.
3479
+ * @default 'start'
3480
+ */
3059
3481
  this.verticalAlign = input('start');
3060
3482
  effect(() => {
3061
3483
  this.overflowClickSubscription?.unsubscribe();
@@ -3087,7 +3509,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3087
3509
  }] } });
3088
3510
 
3089
3511
  /**
3090
- * The tokenizer component (`lx-tokenizer`) is responsible for rendering a list of items into a container and hiding those that do not fit behind a placeholder. The items are represented as `lx-token`. Each `lx-token` allows to project any content into it, so anything can become a token. The tokenizer calculates how many items fit into the container (based on width), hiding those items that are overflowing and showing a overflow placeholder instead (e.g. "+4").
3512
+ * Renders a list of items (`lx-token`) into a container and hides overflowing items behind a counter (e.g., "+4").
3513
+ * Automatically calculates how many tokens fit based on available width and responds to container resize events.
3514
+ *
3515
+ * ### Projection slots
3516
+ * - `lx-token`: Individual token items to be managed by the tokenizer
3517
+ *
3518
+ * ### Example
3519
+ * @example
3520
+ * ```html
3521
+ * <lx-tokenizer [active]="true" (overflowPlaceholderClick)="onOverflowClick($event)">
3522
+ * <lx-token>Item 1</lx-token>
3523
+ * <lx-token>Item 2</lx-token>
3524
+ * <lx-token>Item 3</lx-token>
3525
+ * <lx-token>Item 4</lx-token>
3526
+ * </lx-tokenizer>
3527
+ * ```
3091
3528
  *
3092
3529
  * ## Usage
3093
3530
  *
@@ -3135,14 +3572,16 @@ class TokenizerComponent {
3135
3572
  this.overflowItems = signal([]);
3136
3573
  this.overflowItemCount = computed(() => this.overflowItems().length);
3137
3574
  this.showCounter = computed(() => this.active() && this.overflowItemCount() > 0);
3138
- /** Can be used to activate & deactivate tokenization */
3575
+ /**
3576
+ * Enables or disables tokenization. When false, all tokens are shown regardless of available space.
3577
+ * @default true
3578
+ */
3139
3579
  this.active = input(true);
3140
3580
  this.active$ = toObservable(this.active);
3141
3581
  this.overflowStartIndex = signal(null);
3142
3582
  /**
3143
- * Emitted when the counter button is clicked
3144
- * @param startIndex The index of the first overflowing element
3145
- * @param counterElement The counter button element
3583
+ * Emitted when the overflow counter button (e.g., "+4") is clicked.
3584
+ * Provides the index of the first hidden token and the counter button element for positioning popovers.
3146
3585
  */
3147
3586
  this.overflowPlaceholderClick = new EventEmitter();
3148
3587
  afterRenderEffect(() => {
@@ -3350,9 +3789,37 @@ function isSupportedNode(node) {
3350
3789
  return node.nodeType === Node.ELEMENT_NODE && node.nodeName !== 'SCRIPT' && node.nodeName !== 'STYLE';
3351
3790
  }
3352
3791
 
3792
+ /**
3793
+ * Renders a dropdown item with label and optional description.
3794
+ * Supports text highlighting and custom styling options.
3795
+ *
3796
+ * ### Projection slots
3797
+ * - `optionLabelSuffix`: Template to append to the label (e.g., badges, icons)
3798
+ *
3799
+ * ### Example
3800
+ * @example
3801
+ * ```html
3802
+ * <lx-basic-dropdown-item
3803
+ * label="Option Name"
3804
+ * description="Additional details"
3805
+ * highlightTerm="search">
3806
+ * <ng-template #optionLabelSuffix>
3807
+ * <span class="badge">New</span>
3808
+ * </ng-template>
3809
+ * </lx-basic-dropdown-item>
3810
+ * ```
3811
+ */
3353
3812
  class BasicDropdownItemComponent {
3354
3813
  constructor() {
3814
+ /**
3815
+ * Font weight for the label text.
3816
+ * @default 'bold'
3817
+ */
3355
3818
  this.labelFontWeight = 'bold';
3819
+ /**
3820
+ * Font style for the description text.
3821
+ * @default 'normal'
3822
+ */
3356
3823
  this.descriptionFontStyle = 'normal';
3357
3824
  }
3358
3825
  get hasDescription() {
@@ -3560,6 +4027,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3560
4027
  args: ['keyboardSelectContainer', { static: true }]
3561
4028
  }] } });
3562
4029
 
4030
+ /**
4031
+ * A simple dropdown component for selecting a single value from a flat list of options.
4032
+ * Supports keyboard navigation, custom templates, infinite scrolling, and the ability to create new options.
4033
+ * Uses Angular CDK overlay for positioning and supports both top and bottom dropdown placement.
4034
+ *
4035
+ * ### Projection slots
4036
+ * - `optionTemplate`: Custom template for rendering each option
4037
+ * - `createNewOptionTemplate`: Custom template for the "create new option" button
4038
+ * - `descriptionTemplateRef`: Custom template for additional description content
4039
+ *
4040
+ * ### Example
4041
+ * @example
4042
+ * ```html
4043
+ * <lx-basic-dropdown
4044
+ * [options]="items"
4045
+ * [labelKey]="'name'"
4046
+ * [itemKey]="'id'"
4047
+ * [placeholder]="'Select an item'"
4048
+ * (onItemSelected)="handleSelection($event)">
4049
+ * </lx-basic-dropdown>
4050
+ * ```
4051
+ */
3563
4052
  class BasicDropdownComponent extends KeyboardSelectDirective {
3564
4053
  static isNewItem(items, term, key) {
3565
4054
  if (!term) {
@@ -3574,17 +4063,59 @@ class BasicDropdownComponent extends KeyboardSelectDirective {
3574
4063
  constructor() {
3575
4064
  super();
3576
4065
  this.NAME = 'BasicDropdownComponent';
4066
+ /**
4067
+ * Array of options to display in the dropdown.
4068
+ */
3577
4069
  this.options = [];
4070
+ /**
4071
+ * Index of the option to be selected initially.
4072
+ * @default -1
4073
+ */
3578
4074
  this.initiallySelectedIndex = -1;
4075
+ /**
4076
+ * Whether the dropdown is in a loading state.
4077
+ * @default false
4078
+ */
3579
4079
  this.loading = false;
4080
+ /**
4081
+ * Padding variant for the dropdown items.
4082
+ * @default 'default'
4083
+ */
3580
4084
  this.padding = 'default';
4085
+ /**
4086
+ * Whether to show the "create new option" button.
4087
+ * @default false
4088
+ */
3581
4089
  this.showCreateNewOption = false;
4090
+ /**
4091
+ * Map of disabled options, keyed by the item's unique identifier.
4092
+ */
3582
4093
  this.disabledOptions = {};
4094
+ /**
4095
+ * Whether to use CDK overlay positioning.
4096
+ * @default false
4097
+ */
3583
4098
  this.overlayPositioning = false;
4099
+ /**
4100
+ * Whether to truncate long option text.
4101
+ * @default false
4102
+ */
3584
4103
  this.truncateOptions = false;
4104
+ /**
4105
+ * Event emitted when an option is selected.
4106
+ */
3585
4107
  this.onItemSelected = new EventEmitter();
4108
+ /**
4109
+ * Event emitted when the user scrolls to the bottom, triggering a request for more entries (infinite scroll).
4110
+ */
3586
4111
  this.triggerRequestForMoreEntries = new EventEmitter();
4112
+ /**
4113
+ * Event emitted when a new option label is selected (for creating new items).
4114
+ */
3587
4115
  this.newOptionLabelSelected = new EventEmitter();
4116
+ /**
4117
+ * Event emitted when the "create new option" button is clicked.
4118
+ */
3588
4119
  this.createNewOptionSelected = new EventEmitter();
3589
4120
  this.isTopDropdown = false;
3590
4121
  }
@@ -3761,13 +4292,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3761
4292
  }]
3762
4293
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
3763
4294
 
4295
+ /**
4296
+ * Groups options under a labeled section inside dropdowns.
4297
+ * Used to organize related options within OptionsDropdownComponent, SingleSelectComponent, or MultiSelectComponent.
4298
+ *
4299
+ * ### Projection slots
4300
+ * - Default slot: Option components (`lx-option`) to group together.
4301
+ *
4302
+ * ### Example
4303
+ * @example
4304
+ * ```html
4305
+ * <lx-option-group label="Recent Items" [hasSelectedState]="true">
4306
+ * <lx-option [value]="1">Item 1</lx-option>
4307
+ * <lx-option [value]="2">Item 2</lx-option>
4308
+ * </lx-option-group>
4309
+ * ```
4310
+ */
3764
4311
  class OptionGroupComponent {
3765
4312
  constructor() {
3766
4313
  /**
3767
- * Is true when option children have a selected state.
3768
- * In this case we want to align the padding of the group label with the lx-options'.
4314
+ * Whether option children have a selected state.
4315
+ * When true, aligns the padding of the group label with the options.
4316
+ * @default true
3769
4317
  */
3770
4318
  this.hasSelectedState = true;
4319
+ /**
4320
+ * Event emitted when an option within the group is selected.
4321
+ * Emits the selected option's value.
4322
+ */
3771
4323
  this.select = new EventEmitter();
3772
4324
  }
3773
4325
  selectOption(value) {
@@ -3787,6 +4339,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3787
4339
  type: Output
3788
4340
  }] } });
3789
4341
 
4342
+ /**
4343
+ * Individual option used inside OptionsDropdownComponent, SingleSelectComponent, or MultiSelectComponent.
4344
+ * Can be used standalone or grouped within an OptionGroupComponent for organized selections.
4345
+ */
3790
4346
  class OptionComponent {
3791
4347
  selectOption(event) {
3792
4348
  if (this.disabled || this.hasSubdropdown) {
@@ -3807,8 +4363,20 @@ class OptionComponent {
3807
4363
  constructor(group, elementRef) {
3808
4364
  this.group = group;
3809
4365
  this.elementRef = elementRef;
4366
+ /**
4367
+ * Whether the option is currently selected.
4368
+ * @default false
4369
+ */
3810
4370
  this.selected = false;
4371
+ /**
4372
+ * Whether the option is currently highlighted (e.g., via keyboard navigation).
4373
+ * @default false
4374
+ */
3811
4375
  this.isHighlighted = false;
4376
+ /**
4377
+ * Whether the option is disabled and cannot be interacted with.
4378
+ * @default false
4379
+ */
3812
4380
  this.disabled = false;
3813
4381
  /**
3814
4382
  * Is true when option has a selection nature like sorting.
@@ -3816,16 +4384,37 @@ class OptionComponent {
3816
4384
  *
3817
4385
  * Is false when option represents a one time action like printing.
3818
4386
  * Cannot have selectedState when Option has dropdown
4387
+ * @default true
3819
4388
  */
3820
4389
  this.hasSelectedState = true;
3821
4390
  /**
4391
+ * The icon used to indicate selection state.
4392
+ * @default 'check'
3822
4393
  * @deprecated Use the default `'check'` value. The `'circle'` option is deprecated and will be removed in a future release.
3823
4394
  */
3824
4395
  this.selectIcon = 'check';
4396
+ /**
4397
+ * Event emitted when the option is selected.
4398
+ * Emits the option's value.
4399
+ */
3825
4400
  this.select = new EventEmitter();
4401
+ /**
4402
+ * Event emitted when the option's highlight state changes.
4403
+ * Emits a boolean indicating the new highlight state.
4404
+ */
3826
4405
  this.highlight = new EventEmitter();
4406
+ /**
4407
+ * Event emitted when an already selected option is clicked.
4408
+ */
3827
4409
  this.selectedClick = new EventEmitter();
4410
+ /**
4411
+ * Event emitted when a keyboard event occurs on the option.
4412
+ * Emits the KeyboardEvent for parent handling.
4413
+ */
3828
4414
  this.keyDownAction = new EventEmitter();
4415
+ /**
4416
+ * Event emitted when the mouse enters the option area.
4417
+ */
3829
4418
  this.mouseEnter = new EventEmitter();
3830
4419
  this.hasSubdropdown = false;
3831
4420
  this.isSuboption = false;
@@ -3915,6 +4504,24 @@ const TOP_RIGHT_POSITION$1 = {
3915
4504
  };
3916
4505
  const LEFT_ALIGN_POSITIONS$1 = [BOTTOM_LEFT_POSITION$1, TOP_LEFT_POSITION$1, BOTTOM_RIGHT_POSITION$1, TOP_RIGHT_POSITION$1];
3917
4506
  const RIGHT_ALIGN_POSITIONS$1 = [BOTTOM_RIGHT_POSITION$1, TOP_RIGHT_POSITION$1, BOTTOM_LEFT_POSITION$1, TOP_LEFT_POSITION$1];
4507
+ /**
4508
+ * A dropdown component using CDK Overlay with keyboard navigation support.
4509
+ * Manages option selection, highlighting, and sub-dropdown interactions.
4510
+ *
4511
+ * ### Projection slots
4512
+ * - `[lxKeyboardActionSource]`: The trigger element (e.g., button) that opens the dropdown.
4513
+ * - Default slot: Dropdown options (`lx-option` components).
4514
+ *
4515
+ * ### Example
4516
+ * @example
4517
+ * ```html
4518
+ * <lx-cdk-options-dropdown [open]="isOpen" align="left" maxHeight="300px">
4519
+ * <button lxKeyboardActionSource>Select Option</button>
4520
+ * <lx-option [value]="1">Option 1</lx-option>
4521
+ * <lx-option [value]="2">Option 2</lx-option>
4522
+ * </lx-cdk-options-dropdown>
4523
+ * ```
4524
+ */
3918
4525
  class CdkOptionsDropdownComponent {
3919
4526
  set open(value) {
3920
4527
  if (this.disabled) {
@@ -3939,9 +4546,25 @@ class CdkOptionsDropdownComponent {
3939
4546
  }
3940
4547
  constructor(changeDetection) {
3941
4548
  this.changeDetection = changeDetection;
4549
+ /**
4550
+ * Horizontal alignment of the dropdown relative to its trigger.
4551
+ * @default 'right'
4552
+ */
3942
4553
  this.align = 'right';
4554
+ /**
4555
+ * Whether to close the dropdown when the window is scrolled.
4556
+ * @default false
4557
+ */
3943
4558
  this.closeOnScroll = false;
4559
+ /**
4560
+ * Whether the dropdown trigger is disabled.
4561
+ * @default false
4562
+ */
3944
4563
  this.disabled = false;
4564
+ /**
4565
+ * Maximum height of the dropdown container. Use 'none' for no limit.
4566
+ * @default 'none'
4567
+ */
3945
4568
  this.maxHeight = 'none';
3946
4569
  this.highlightedOptionIndex$ = new BehaviorSubject(0);
3947
4570
  this._open = false;
@@ -4101,12 +4724,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
4101
4724
  /**
4102
4725
  * @deprecated Use the `ui5-breadcrumbs` instead.
4103
4726
  *
4104
- * Breadcrumb component is used to show a list of labels, usually to show the path of user's navigation.
4727
+ * Breadcrumb component displays a list of labels showing the navigation path.
4728
+ * Supports ellipsing consecutive items into a dropdown for space efficiency.
4729
+ *
4730
+ * ### Example
4731
+ * @example
4732
+ * ```html
4733
+ * <lx-breadcrumb [breadcrumbs]="breadcrumbs"></lx-breadcrumb>
4734
+ * ```
4735
+ *
4736
+ * ```ts
4737
+ * breadcrumbs: Breadcrumb[] = [
4738
+ * { label: 'Home', onClick: (b) => this.navigate(b) },
4739
+ * { label: 'Products', onClick: (b) => this.navigate(b) },
4740
+ * { label: 'Category', ellipsed: true },
4741
+ * { label: 'Subcategory', ellipsed: true },
4742
+ * { label: 'Item Details' }
4743
+ * ];
4744
+ * ```
4105
4745
  */
4106
4746
  class BreadcrumbComponent {
4107
4747
  constructor() {
4108
4748
  /**
4109
- * Breadcrumbs array to build the component.
4749
+ * Array of breadcrumb items to display. Consecutive items with `ellipsed: true` are grouped into a dropdown.
4750
+ * @default []
4110
4751
  */
4111
4752
  this.breadcrumbs = [];
4112
4753
  /** @internal */
@@ -4179,9 +4820,29 @@ const TOP_RIGHT_POSITION = {
4179
4820
  };
4180
4821
  const LEFT_ALIGN_POSITIONS = [BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION, BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION];
4181
4822
  const RIGHT_ALIGN_POSITIONS = [BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION, BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION];
4823
+ /**
4824
+ * A nested sub-dropdown that appears next to a parent option.
4825
+ * Opens on hover or keyboard navigation and supports both mouse and keyboard interactions.
4826
+ *
4827
+ * ### Projection slots
4828
+ * - Default slot: Nested dropdown options (`lx-option` components).
4829
+ *
4830
+ * ### Example
4831
+ * @example
4832
+ * ```html
4833
+ * <lx-cdk-options-sub-dropdown [trigger]="parentOption" align="right">
4834
+ * <lx-option [value]="1">Sub-option 1</lx-option>
4835
+ * <lx-option [value]="2">Sub-option 2</lx-option>
4836
+ * </lx-cdk-options-sub-dropdown>
4837
+ * ```
4838
+ */
4182
4839
  class CdkOptionsSubDropdownComponent {
4183
4840
  constructor(changeDetection) {
4184
4841
  this.changeDetection = changeDetection;
4842
+ /**
4843
+ * Horizontal alignment of the sub-dropdown relative to the trigger option.
4844
+ * @default 'right'
4845
+ */
4185
4846
  this.align = 'right';
4186
4847
  this.open = false;
4187
4848
  this.isPositionComputed = true;
@@ -4412,6 +5073,18 @@ const CURRENCY_SYMBOL_MAP = {
4412
5073
  ZWD: 'ZWD'
4413
5074
  };
4414
5075
 
5076
+ /**
5077
+ * Displays a currency symbol based on an ISO currency code.
5078
+ *
5079
+ * Converts currency codes (e.g., 'USD', 'EUR') to their symbolic representations ($, €).
5080
+ *
5081
+ * ### Example
5082
+ * @example
5083
+ * ```html
5084
+ * <lx-currency-symbol [code]="'USD'"></lx-currency-symbol>
5085
+ * <lx-currency-symbol [code]="'EUR'"></lx-currency-symbol>
5086
+ * ```
5087
+ */
4415
5088
  class CurrencySymbolComponent {
4416
5089
  ngOnInit() {
4417
5090
  this.currency$ = this.code$.pipe(map((code) => CURRENCY_SYMBOL_MAP[code] || code));
@@ -4429,20 +5102,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
4429
5102
  type: Input
4430
5103
  }], code$: [] } });
4431
5104
 
5105
+ /**
5106
+ * Currency input field with locale-aware formatting and validation.
5107
+ *
5108
+ * Supports both view and edit modes with configurable currency symbols, decimal separators, and number types.
5109
+ *
5110
+ * ### Example
5111
+ * @example
5112
+ * ```html
5113
+ * <lx-currency-input
5114
+ * [code]="'USD'"
5115
+ * [data]="1234.56"
5116
+ * [mode]="'edit'"
5117
+ * [fieldDefinitionType]="'DOUBLE'"
5118
+ * [decimalSeparator]="'.'"
5119
+ * [iconPosition]="'first'"
5120
+ * (onChange)="handleValueChange($event)"
5121
+ * ></lx-currency-input>
5122
+ * ```
5123
+ */
4432
5124
  class CurrencyInputComponent {
4433
5125
  get allowedCharacters() {
4434
5126
  return this.fieldDefinitionType === 'DOUBLE' ? new RegExp(`[0-9\e\\${this.decimalSeparator}\]`) : /[0-9\e\\]/;
4435
5127
  }
4436
5128
  constructor(changeDetector) {
4437
5129
  this.changeDetector = changeDetector;
5130
+ /**
5131
+ * Character used as decimal separator in input.
5132
+ * @default '.'
5133
+ */
4438
5134
  this.decimalSeparator = '.';
5135
+ /**
5136
+ * The numeric value of the input.
5137
+ * @default 0
5138
+ */
4439
5139
  this.data = 0;
5140
+ /**
5141
+ * Whether the input is disabled.
5142
+ * @default false
5143
+ */
4440
5144
  this.disabled = false;
5145
+ /**
5146
+ * Display mode of the component.
5147
+ * @default 'edit'
5148
+ */
4441
5149
  this.mode = 'edit';
5150
+ /**
5151
+ * Position of the currency symbol relative to the value.
5152
+ * @default 'first'
5153
+ */
4442
5154
  this.iconPosition = 'first';
5155
+ /**
5156
+ * Angular decimal pipe format string.
5157
+ * @default '1.2-2'
5158
+ */
4443
5159
  this.format = '1.2-2';
5160
+ /**
5161
+ * Whether to visually mark the input as invalid.
5162
+ * @default false
5163
+ */
4444
5164
  this.markInvalid = false;
5165
+ /** Emitted when the input loses focus. */
4445
5166
  this.onFocusLost = new EventEmitter();
5167
+ /** Emitted when the numeric value changes. */
4446
5168
  this.onChange = new EventEmitter();
4447
5169
  /** @internal */
4448
5170
  this.showCurrencyInput = false;
@@ -4622,10 +5344,22 @@ class DateFormatter {
4622
5344
  }
4623
5345
 
4624
5346
  /* tslint:disable: max-file-line-count */
5347
+ /**
5348
+ * Core datepicker component managing date selection logic.
5349
+ *
5350
+ * Provides the underlying logic for day, month, and year selection modes.
5351
+ * Used internally by DatePickerComponent.
5352
+ *
5353
+ * ### Projection slots
5354
+ * - Default slot: Child picker components (daypicker, monthpicker, yearpicker).
5355
+ */
4625
5356
  class DatePickerInnerComponent {
4626
5357
  constructor() {
5358
+ /** Emitted when a date is selected. */
4627
5359
  this.selectionDone = new EventEmitter(undefined);
5360
+ /** Emitted when active date is updated. */
4628
5361
  this.update = new EventEmitter(false);
5362
+ /** Emitted when active date changes. */
4629
5363
  this.activeDateChange = new EventEmitter(undefined);
4630
5364
  /* tslint:disable-next-line: no-any*/
4631
5365
  this.stepDay = {};
@@ -4933,6 +5667,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
4933
5667
 
4934
5668
  const isBs3 = () => true;
4935
5669
 
5670
+ /**
5671
+ * Day selection view for the datepicker.
5672
+ *
5673
+ * Displays a calendar grid for selecting individual days within a month.
5674
+ * Used internally by DatePickerInnerComponent.
5675
+ */
4936
5676
  class DayPickerComponent {
4937
5677
  constructor(datePicker) {
4938
5678
  this.labels = [];
@@ -5233,6 +5973,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
5233
5973
  `, imports: [NgClass, ButtonComponent], styles: [":host .btn-secondary:not([lx-button]){color:#292b2c;background-color:#fff;border-color:#ccc}:host .btn-info .text-muted{color:#292b2c!important}\n"] }]
5234
5974
  }], ctorParameters: () => [{ type: DatePickerInnerComponent }] });
5235
5975
 
5976
+ /**
5977
+ * Month selection view for the datepicker.
5978
+ *
5979
+ * Displays a grid of months for selecting a month within a year.
5980
+ * Used internally by DatePickerInnerComponent.
5981
+ */
5236
5982
  class MonthPickerComponent {
5237
5983
  constructor(datePicker) {
5238
5984
  this.rows = [];
@@ -5397,6 +6143,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
5397
6143
 
5398
6144
  // @deprecated
5399
6145
  // tslint:disable
6146
+ /**
6147
+ * Year selection view for the datepicker.
6148
+ *
6149
+ * Displays a grid of years for selecting a year within a range.
6150
+ * Used internally by DatePickerInnerComponent.
6151
+ */
5400
6152
  class YearPickerComponent {
5401
6153
  constructor(datePicker) {
5402
6154
  this.rows = [];
@@ -5788,74 +6540,176 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
5788
6540
  const DEFAULT_MIN_DATE = new Date('0000-01-01');
5789
6541
  const DEFAULT_MAX_DATE = new Date('9999-12-31');
5790
6542
  /**
5791
- * This is a date input component that can be used to select a date.
6543
+ * Date input with integrated datepicker dropdown.
6544
+ *
6545
+ * Supports multiple rendering styles (input, link, button) and flexible date range restrictions.
6546
+ *
6547
+ * ### Projection slots
6548
+ * - `dateStringTemplate`: Custom template for displaying the date string when `renderingStyle` is 'BUTTON'.
6549
+ *
6550
+ * ### Example
6551
+ * @example
6552
+ * ```html
6553
+ * <lx-date-input
6554
+ * [(date)]="selectedDate"
6555
+ * [minDate]="minDate"
6556
+ * [maxDate]="maxDate"
6557
+ * [renderingStyle]="'INPUT'"
6558
+ * [placeholder]="'Select a date'"
6559
+ * (dateChange)="onDateSelected($event)"
6560
+ * ></lx-date-input>
6561
+ * ```
5792
6562
  */
5793
6563
  class DateInputComponent {
5794
6564
  constructor(cd, dateFormatsProvider, getDateFnLocale) {
5795
6565
  this.cd = cd;
5796
6566
  this.dateFormatsProvider = dateFormatsProvider;
5797
6567
  this.getDateFnLocale = getDateFnLocale;
5798
- /** The initial date value for the date input field. This is used for `ngModel` and `formControl`. */
6568
+ /**
6569
+ * The initial date value for the date input field. This is used for `ngModel` and `formControl`.
6570
+ * @default null
6571
+ */
5799
6572
  this.date = null;
5800
- /** Secondary, alternative input with date string */
6573
+ /**
6574
+ * Secondary, alternative input with date string (format: 'yyyy-mm-dd').
6575
+ * @default null
6576
+ */
5801
6577
  this.dateString = null;
5802
- /** Determine whether formGroup's value accessor is accessing the selected IDs or the selected objects */
6578
+ /**
6579
+ * Determines whether formGroup's value accessor uses Date objects or date strings.
6580
+ * @default 'date'
6581
+ */
5803
6582
  this.valueAccessor = 'date';
5804
- /** ID to be set on input to correspond to outside label */
6583
+ /**
6584
+ * ID to be set on input to correspond to outside label.
6585
+ * @default ''
6586
+ */
5805
6587
  this.inputId = '';
5806
- /** The rendering style of the date input component. Can be one of "LINK", "BUTTON", or "INPUT". */
6588
+ /**
6589
+ * The rendering style of the date input component.
6590
+ * @default 'INPUT'
6591
+ */
5807
6592
  this.renderingStyle = 'INPUT';
5808
- /** The placeholder text to show in the date input field when there is no date selected */
6593
+ /**
6594
+ * The placeholder text to show in the date input field when there is no date selected.
6595
+ * @default 'yyyy-mm-dd'
6596
+ */
5809
6597
  this.placeholder = 'yyyy-mm-dd';
5810
- /** Deactivate to use old date picker */
6598
+ /**
6599
+ * Use CDK overlay for datepicker positioning. Set to false to use legacy positioning.
6600
+ * @default true
6601
+ */
5811
6602
  this.cdk = true;
5812
- /** Sets datepicker mode, supports: day, month, year */
6603
+ /**
6604
+ * Sets datepicker mode, supports: 'day', 'month', 'year'.
6605
+ * @default 'day'
6606
+ */
5813
6607
  this.datepickerMode = 'day';
5814
- /** Oldest selectable date */
6608
+ /**
6609
+ * Oldest selectable date.
6610
+ * @default new Date('0000-01-01')
6611
+ */
5815
6612
  this.minDate = DEFAULT_MIN_DATE;
5816
- /** Latest selectable date */
6613
+ /**
6614
+ * Latest selectable date.
6615
+ * @default new Date('9999-12-31')
6616
+ */
5817
6617
  this.maxDate = DEFAULT_MAX_DATE;
5818
- /** Set lower datepicker mode, supports: day, month, year */
6618
+ /**
6619
+ * Set lower datepicker mode, supports: 'day', 'month', 'year'.
6620
+ * @default 'day'
6621
+ */
5819
6622
  this.minMode = 'day';
5820
- /** Sets upper datepicker mode, supports: day, month, year */
6623
+ /**
6624
+ * Sets upper datepicker mode, supports: 'day', 'month', 'year'.
6625
+ * @default 'year'
6626
+ */
5821
6627
  this.maxMode = 'year';
5822
- /** If false week numbers will be hidden */
6628
+ /**
6629
+ * If false week numbers will be hidden in day picker.
6630
+ * @default true
6631
+ */
5823
6632
  this.showWeeks = true;
5824
- /** Format of day in month */
6633
+ /**
6634
+ * Format of day in month (date-fns format).
6635
+ * @default 'dd'
6636
+ */
5825
6637
  this.formatDay = 'dd';
5826
- /** Format of month in year */
6638
+ /**
6639
+ * Format of month in year (date-fns format).
6640
+ * @default 'MMMM'
6641
+ */
5827
6642
  this.formatMonth = 'MMMM';
5828
- /** Format of year in year range */
6643
+ /**
6644
+ * Format of year in year range (date-fns format).
6645
+ * @default 'yyyy'
6646
+ */
5829
6647
  this.formatYear = 'yyyy';
5830
- /** Format of day in week header */
6648
+ /**
6649
+ * Format of day in week header (date-fns format).
6650
+ * @default 'EE'
6651
+ */
5831
6652
  this.formatDayHeader = 'EE';
5832
- /** Format of title when selecting day */
6653
+ /**
6654
+ * Format of title when selecting day (date-fns format).
6655
+ * @default 'MMMM yyyy'
6656
+ */
5833
6657
  this.formatDayTitle = 'MMMM yyyy';
5834
- /** Format of title when selecting month */
6658
+ /**
6659
+ * Format of title when selecting month (date-fns format).
6660
+ * @default 'yyyy'
6661
+ */
5835
6662
  this.formatMonthTitle = 'yyyy';
5836
- /** Starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) public */
6663
+ /**
6664
+ * Starting day of the week from 0-6 (0=Sunday, 6=Saturday).
6665
+ * @default 0
6666
+ */
5837
6667
  this.startingDay = 0;
5838
- /** Number of years displayed in year selection */
6668
+ /**
6669
+ * Number of years displayed in year selection.
6670
+ * @default 20
6671
+ */
5839
6672
  this.yearRange = 20;
5840
- /** If true only dates from the currently displayed month will be shown */
6673
+ /**
6674
+ * If true only dates from the currently displayed month will be shown.
6675
+ * @default false
6676
+ */
5841
6677
  this.onlyCurrentMonth = false;
5842
- /** If true shortcut`s event propagation will be disabled */
6678
+ /**
6679
+ * If true shortcut event propagation will be disabled.
6680
+ * @default false
6681
+ */
5843
6682
  this.shortcutPropagation = false;
5844
- /** Array of custom css classes to be applied to */
6683
+ /**
6684
+ * Array of custom css classes to be applied to specific dates.
6685
+ * @default []
6686
+ */
5845
6687
  this.customClass = [];
5846
- /** Array of disabled dates if mode is day, or years, etc. */
6688
+ /**
6689
+ * Array of disabled dates with mode specification.
6690
+ * @default []
6691
+ */
5847
6692
  this.dateDisabled = [];
5848
- /** If true, the date input field will be auto-focused when the component is first rendered. */
6693
+ /**
6694
+ * If true, the date input field will be auto-focused when the component is first rendered.
6695
+ * @default false
6696
+ */
5849
6697
  this.autoFocus = false;
5850
- /** If true, the date input field will be marked as invalid. */
6698
+ /**
6699
+ * If true, the date input field will be marked as invalid.
6700
+ * @default false
6701
+ */
5851
6702
  this.markInvalid = false;
5852
- /** Also emit on invalid date string */
6703
+ /**
6704
+ * Also emit dateStringChange on invalid date string.
6705
+ * @default false
6706
+ */
5853
6707
  this.alwaysEmitDateString = false;
5854
- /** Triggered whenever the datepicker is closed */
6708
+ /** Emitted whenever the datepicker is closed. */
5855
6709
  this.closeDateInput = new EventEmitter();
5856
- /** Triggered whenever the date changes */
6710
+ /** Emitted whenever the date string changes. */
5857
6711
  this.dateStringChange = new EventEmitter();
5858
- /** Triggered whenever the date changes. */
6712
+ /** Emitted whenever the date changes. */
5859
6713
  this.dateChange = new EventEmitter();
5860
6714
  /** @internal */
5861
6715
  this.showDatepicker = false;
@@ -6138,6 +6992,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6138
6992
  }]
6139
6993
  }] });
6140
6994
 
6995
+ /**
6996
+ * Individual item within a drag-and-drop list.
6997
+ *
6998
+ * Supports custom templates and optional action buttons.
6999
+ *
7000
+ * ### Projection slots
7001
+ * - `customTemplate`: Custom template for the item content. If not provided, displays the item string with a drag handle.
7002
+ *
7003
+ * ### Example
7004
+ * @example
7005
+ * ```html
7006
+ * <lx-drag-and-drop-list-item
7007
+ * [item]="'Task 1'"
7008
+ * [draggable]="true"
7009
+ * [actions]="[{ id: 'delete', label: 'Delete', icon: 'delete', showOnlyOnHover: true }]"
7010
+ * (action)="handleAction($event)"
7011
+ * ></lx-drag-and-drop-list-item>
7012
+ * ```
7013
+ */
6141
7014
  class DragAndDropListItemComponent {
6142
7015
  get draggingDisabled() {
6143
7016
  return !this.draggable;
@@ -6148,7 +7021,12 @@ class DragAndDropListItemComponent {
6148
7021
  constructor(element) {
6149
7022
  this.element = element;
6150
7023
  this.NAME = 'DragAndDropListItemComponent';
7024
+ /**
7025
+ * Whether the item can be dragged.
7026
+ * @default true
7027
+ */
6151
7028
  this.draggable = true;
7029
+ /** Emitted when an action button is clicked. */
6152
7030
  this.action = new EventEmitter();
6153
7031
  this.customTemplateRef = null;
6154
7032
  }
@@ -6343,21 +7221,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6343
7221
  type: Input
6344
7222
  }] } });
6345
7223
 
7224
+ /**
7225
+ * Sortable list with drag-and-drop and keyboard navigation support.
7226
+ *
7227
+ * Items can be reordered via mouse drag or keyboard controls (Arrow keys, Space).
7228
+ *
7229
+ * ### Example
7230
+ * @example
7231
+ * ```html
7232
+ * <lx-drag-and-drop-list
7233
+ * [label]="'My Tasks'"
7234
+ * (moveToIndex)="handleReorder($event)"
7235
+ * >
7236
+ * @for (task of tasks; track $index) {
7237
+ * <lx-drag-and-drop-list-item
7238
+ * [item]="task.name"
7239
+ * [draggable]="true"
7240
+ * />
7241
+ * }
7242
+ * </lx-drag-and-drop-list>
7243
+ * ```
7244
+ */
6346
7245
  class DragAndDropListComponent {
6347
7246
  constructor() {
6348
7247
  /** @internal */
6349
7248
  this.NAME = DRAG_AND_DROP_LIST_TRANSLATION_NAME;
6350
7249
  /**
6351
- * Override the global label font weight of 700
7250
+ * Override the global label font weight.
7251
+ * @default 700
6352
7252
  */
6353
7253
  this.labelFontWeight = 700;
7254
+ /**
7255
+ * Color theme of the list items.
7256
+ * @default 'light'
7257
+ */
6354
7258
  this.color = 'light';
7259
+ /**
7260
+ * Font size of the list items.
7261
+ * @default 'normal'
7262
+ */
6355
7263
  this.fontSize = 'normal';
6356
7264
  /**
6357
- * Use the moveToIndex Output in favor of moveItem,
6358
- * when moving is restricted to one item through this.draggableItem.
7265
+ * Emitted when an item is moved, providing the new and previous index.
7266
+ * Use this when you need index-based reordering.
6359
7267
  */
6360
7268
  this.moveToIndex = new EventEmitter();
7269
+ /**
7270
+ * Emitted when an item is moved, providing the item data and new index.
7271
+ */
6361
7272
  this.moveItem = new EventEmitter();
6362
7273
  /**
6363
7274
  * TODO: extract state about keyboard sorting into KeyboardSortableListDirective
@@ -6475,8 +7386,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6475
7386
  }]
6476
7387
  }] });
6477
7388
 
7389
+ /**
7390
+ * Displays form validation error messages.
7391
+ *
7392
+ * Shows either projected content or a programmatically set error message.
7393
+ *
7394
+ * ### Projection slots
7395
+ * - Default slot: Static error message text. Hidden but captured for display.
7396
+ *
7397
+ * ### Example
7398
+ * @example
7399
+ * ```html
7400
+ * <lx-error-message>This field is required</lx-error-message>
7401
+ * ```
7402
+ */
6478
7403
  class ErrorMessageComponent {
6479
7404
  constructor() {
7405
+ /** Signal for setting error message programmatically. */
6480
7406
  this.dynamicErrorMessage = signal('');
6481
7407
  this.wrapper = viewChild.required('contentWrapper');
6482
7408
  this.computedErrorMessage = computed(() => this.dynamicErrorMessage() || this.wrapper().nativeElement.innerText);
@@ -6489,6 +7415,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6489
7415
  args: [{ selector: 'lx-error-message', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span #contentWrapper hidden>\n <ng-content />\n</span>\n\n@if (computedErrorMessage()) {\n <div class=\"error\">\n {{ computedErrorMessage() }}\n </div>\n}\n", styles: [".error{color:#f96464;padding:4px}\n"] }]
6490
7416
  }] });
6491
7417
 
7418
+ /**
7419
+ * Displays translated form validation errors for a specific form control.
7420
+ *
7421
+ * Automatically updates when form errors change.
7422
+ *
7423
+ * ### Example
7424
+ * @example
7425
+ * ```html
7426
+ * <lx-form-error
7427
+ * [form]="myFormGroup"
7428
+ * [controlName]="'email'"
7429
+ * [namespace]="'USER_FORM'"
7430
+ * ></lx-form-error>
7431
+ * ```
7432
+ */
6492
7433
  class FormErrorComponent {
6493
7434
  constructor() {
6494
7435
  /** @internal */
@@ -6532,10 +7473,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6532
7473
  type: Input
6533
7474
  }] } });
6534
7475
 
7476
+ /**
7477
+ * A directive applied to native `<input>` elements to provide consistent styling and automatic error state handling.
7478
+ * Integrates with Angular's `NgControl` to automatically apply error and disabled classes based on form control state.
7479
+ * The directive listens to form control status changes and updates the visual state accordingly.
7480
+ *
7481
+ * ### Example
7482
+ * @example
7483
+ * ```html
7484
+ * <input lx-input type="text" [formControl]="nameControl" />
7485
+ * ```
7486
+ *
7487
+ * ### Example
7488
+ * @example
7489
+ * ```html
7490
+ * <input lx-input type="email" [error]="true" [disabled]="false" />
7491
+ * ```
7492
+ */
6535
7493
  class InputComponent {
6536
7494
  constructor(ngControl) {
6537
7495
  this.ngControl = ngControl;
7496
+ /**
7497
+ * Whether to display the input in an error state (applies 'error' CSS class).
7498
+ * Automatically updated when used with `NgControl` based on validation state.
7499
+ * @default false
7500
+ */
6538
7501
  this.error = false;
7502
+ /**
7503
+ * Whether the input is disabled (applies 'disabled' CSS class).
7504
+ * Automatically updated when used with `NgControl` based on control state.
7505
+ * @default false
7506
+ */
6539
7507
  this.disabled = false;
6540
7508
  this.destroyed$ = new Subject();
6541
7509
  }
@@ -6780,10 +7748,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6780
7748
  args: [KeyboardSelectDirective, { static: false, descendants: true }]
6781
7749
  }] } });
6782
7750
 
7751
+ /**
7752
+ * Input that dynamically adjusts its width based on content length.
7753
+ *
7754
+ * Useful for inline editing or space-constrained layouts.
7755
+ *
7756
+ * ### Example
7757
+ * @example
7758
+ * ```html
7759
+ * <lx-responsive-input
7760
+ * [(ngModel)]="searchTerm"
7761
+ * [inputId]="'search'"
7762
+ * (focus)="onFocus()"
7763
+ * (blur)="onBlur()"
7764
+ * ></lx-responsive-input>
7765
+ * ```
7766
+ */
6783
7767
  class ResponsiveInputComponent {
6784
7768
  constructor() {
7769
+ /** Emitted when the input receives focus. */
6785
7770
  this.focus = new EventEmitter();
7771
+ /** Emitted when the input receives focus via Tab key. */
6786
7772
  this.focusViaTab = new EventEmitter();
7773
+ /** Emitted when the input loses focus. */
6787
7774
  this.blur = new EventEmitter();
6788
7775
  this.inputWidth$ = new BehaviorSubject('1px');
6789
7776
  this.inputControl = new UntypedFormControl();
@@ -6874,11 +7861,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6874
7861
  args: ['inputWidth', { static: true }]
6875
7862
  }] } });
6876
7863
 
7864
+ /**
7865
+ * Displays selected items in a multi-select component.
7866
+ *
7867
+ * Items can be rendered as tokens or custom templates.
7868
+ *
7869
+ * ### Projection slots
7870
+ * - `innerSelectionTemplate`: Custom template for rendering each selected item.
7871
+ *
7872
+ * ### Example
7873
+ * @example
7874
+ * ```html
7875
+ * <lx-multi-select-selection
7876
+ * [selection]="selectedItems"
7877
+ * [tokenize]="true"
7878
+ * (removeItem)="handleRemove($event)"
7879
+ * >
7880
+ * <ng-template #innerSelectionTemplate let-item>
7881
+ * {{ item.name }}
7882
+ * </ng-template>
7883
+ * </lx-multi-select-selection>
7884
+ * ```
7885
+ */
6877
7886
  class MultiSelectSelectionComponent extends KeyboardSelectDirective {
6878
7887
  constructor() {
6879
7888
  super(...arguments);
7889
+ /**
7890
+ * Array of selected items to display.
7891
+ */
6880
7892
  this.selection = input();
7893
+ /**
7894
+ * Whether to render items as tokens (pills).
7895
+ * @default true
7896
+ */
6881
7897
  this.tokenize = input(true);
7898
+ /** Emitted when an item is clicked for removal. */
6882
7899
  this.removeItem = new EventEmitter();
6883
7900
  this.selectionTemplate = null;
6884
7901
  }
@@ -6895,6 +7912,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6895
7912
  args: ['innerSelectionTemplate', { read: TemplateRef, static: true }]
6896
7913
  }] } });
6897
7914
 
7915
+ /**
7916
+ * A dropdown component for selecting multiple values from a list of options.
7917
+ * Implements `ControlValueAccessor` for seamless integration with Angular reactive forms.
7918
+ * Supports keyboard navigation, custom templates, and various sizing options.
7919
+ *
7920
+ * ### Projection slots
7921
+ * - `.pills`: Contains the pill list for selected items (`lx-pill-list`).
7922
+ * The pill list shows removable pills for each selected item.
7923
+ * Use `lx-pill-item` inside a `#pillTemplate` for custom pill rendering.
7924
+ * - `.dropdownComponent`: Contains the dropdown (`lx-basic-dropdown`)
7925
+ *
7926
+ * Alternatively, use `lxSelectDropdown` directive on `<ng-template>` for the dropdown,
7927
+ * and `#selectionTemplate` on `<ng-template>` for tokenized selection display.
7928
+ *
7929
+ * ### Example — with pill list and basic dropdown
7930
+ * @example
7931
+ * ```html
7932
+ * <lx-multi-select
7933
+ * #multiSelect
7934
+ * [(selection)]="selectedItems"
7935
+ * (query)="searchTerm = $event">
7936
+ * <lx-pill-list
7937
+ * class="pills"
7938
+ * [keyboardSelectAction]="multiSelect.selectionKeyboardSelectAction$"
7939
+ * [pills]="selectedItems"
7940
+ * labelKey="name"
7941
+ * itemKey="id"
7942
+ * (remove)="multiSelect.removeItem($event)">
7943
+ * </lx-pill-list>
7944
+ * <lx-basic-dropdown
7945
+ * class="dropdownComponent"
7946
+ * [keyboardSelectAction]="multiSelect.optionsKeyboardSelectAction$"
7947
+ * [options]="options | lxFilterBySelection: selectedItems | lxFilterByTerm: { term: searchTerm }"
7948
+ * labelKey="name"
7949
+ * (onItemSelected)="multiSelect.addItemToSelection($event)">
7950
+ * </lx-basic-dropdown>
7951
+ * </lx-multi-select>
7952
+ * ```
7953
+ *
7954
+ * ### Example — with custom pill template
7955
+ * @example
7956
+ * ```html
7957
+ * <lx-multi-select #multiSelect [(selection)]="selectedItems">
7958
+ * <lx-pill-list
7959
+ * class="pills"
7960
+ * [keyboardSelectAction]="multiSelect.selectionKeyboardSelectAction$"
7961
+ * [pills]="selectedItems"
7962
+ * itemKey="id"
7963
+ * (remove)="multiSelect.removeItem($event)">
7964
+ * <ng-template #pillTemplate let-pill>
7965
+ * <lx-pill-item [label]="pill.name" [item]="pill" [class.readOnly]="pill.readOnly" />
7966
+ * </ng-template>
7967
+ * </lx-pill-list>
7968
+ * <!-- dropdown omitted for brevity -->
7969
+ * </lx-multi-select>
7970
+ * ```
7971
+ */
6898
7972
  class MultiSelectComponent extends BaseSelectDirective {
6899
7973
  /** @internal */
6900
7974
  static isStillPossibleMoveToLeft(eventSet) {
@@ -6950,11 +8024,31 @@ class MultiSelectComponent extends BaseSelectDirective {
6950
8024
  constructor(cd) {
6951
8025
  super();
6952
8026
  this.cd = cd;
8027
+ /**
8028
+ * Whether to visually mark the input as invalid.
8029
+ */
6953
8030
  this.markInvalid = false;
8031
+ /**
8032
+ * Array of currently selected items.
8033
+ */
6954
8034
  this.selection = [];
8035
+ /**
8036
+ * Visual size variant of the multi-select component.
8037
+ * @default 'default'
8038
+ */
6955
8039
  this.size = 'default';
8040
+ /**
8041
+ * Whether pressing Tab should close the dropdown.
8042
+ * @default true
8043
+ */
6956
8044
  this.closeDropdownOnTab = true;
8045
+ /**
8046
+ * Event emitted when the selection changes.
8047
+ */
6957
8048
  this.selectionChange = new EventEmitter();
8049
+ /**
8050
+ * Event emitted when the input loses focus.
8051
+ */
6958
8052
  this.blur = new EventEmitter();
6959
8053
  /** @internal */
6960
8054
  this.destroyed$ = new Subject();
@@ -7211,23 +8305,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
7211
8305
  }] } });
7212
8306
 
7213
8307
  /**
7214
- * `OptionGroupDropdownComponent` is a dropdown component that displays a list of options grouped by categories.
7215
- * By itself it is only used to display a list of options, to be used in an input dropdown it can be used in
7216
- * combination with the `SingleSelectComponent` or `MultiSelectComponent`.
8308
+ * Dropdown component that displays options grouped by categories.
8309
+ * Supports keyboard navigation, infinite scroll, custom templates, and creating new options.
8310
+ * Used standalone or with SingleSelectComponent/MultiSelectComponent.
8311
+ *
8312
+ * ### Projection slots
8313
+ * - `optionTemplate`: Template for custom option rendering (context: `$implicit`, `index`, `groupIndex`).
8314
+ * - `noResultsOptionTemplateRef`: Template for custom "no results" message (context: `group`, `groupIndex`).
8315
+ *
8316
+ * ### Example
8317
+ * @example
8318
+ * ```html
8319
+ * <lx-option-group-dropdown
8320
+ * [optionGroups]="groups"
8321
+ * [highlightTerm]="searchTerm"
8322
+ * (onItemSelected)="handleSelection($event)">
8323
+ * <ng-template #optionTemplate let-option>
8324
+ * <span>{{ option.label }}</span>
8325
+ * </ng-template>
8326
+ * </lx-option-group-dropdown>
8327
+ * ```
7217
8328
  */
7218
8329
  class OptionGroupDropdownComponent extends KeyboardSelectDirective {
7219
8330
  constructor() {
7220
8331
  super(...arguments);
7221
8332
  /** @internal */
7222
8333
  this.NAME = 'OptionGroupDropdownComponent';
8334
+ /**
8335
+ * Array of option groups to display in the dropdown.
8336
+ * @default []
8337
+ */
7223
8338
  this.optionGroups = [];
8339
+ /**
8340
+ * Whether to show a "create new option" entry at the top of the dropdown.
8341
+ * @default false
8342
+ */
7224
8343
  this.showCreateNewOption = false;
8344
+ /**
8345
+ * Property name to use as the label for each option.
8346
+ * @default 'label'
8347
+ */
7225
8348
  this.labelKey = 'label';
8349
+ /**
8350
+ * Whether the dropdown is in a loading state.
8351
+ * @default false
8352
+ */
7226
8353
  this.loading = false;
8354
+ /**
8355
+ * Whether to show "no results" message when a group has no options.
8356
+ * @default false
8357
+ */
7227
8358
  this.showNoResultsIfGroupIsEmpty = false;
8359
+ /**
8360
+ * Whether to use CDK overlay positioning for the dropdown.
8361
+ * @default false
8362
+ */
7228
8363
  this.overlayPositioning = false;
8364
+ /** Event emitted when an option is selected. */
7229
8365
  this.onItemSelected = new EventEmitter();
8366
+ /** Event emitted when the dropdown container is scrolled (for infinite scroll). */
7230
8367
  this.containerScrolled = new EventEmitter();
8368
+ /** Event emitted when the user requests to create a new option. */
7231
8369
  this.createNewOption = new EventEmitter();
7232
8370
  /** @internal */
7233
8371
  this.isTopDropdown = false;
@@ -7317,6 +8455,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
7317
8455
  args: ['selectOrigin', { static: false }]
7318
8456
  }] } });
7319
8457
 
8458
+ /**
8459
+ * A dropdown component that displays a list of selectable options.
8460
+ * The dropdown opens when triggered and provides keyboard navigation support for accessible option selection.
8461
+ * It supports nested option groups and sub-dropdowns with full ARIA compliance.
8462
+ *
8463
+ * ### Projection slots
8464
+ * - Default (trigger): The button or element that triggers the dropdown (must have `lxKeyboardActionSource` directive)
8465
+ * - `lx-option`: Individual selectable options within the dropdown
8466
+ * - `lx-option-group`: Optional groups of options with labels
8467
+ *
8468
+ * ### Example
8469
+ * @example
8470
+ * ```html
8471
+ * <lx-options-dropdown [disabled]="disabled" [maxHeight]="maxHeight">
8472
+ * <button lxKeyboardActionSource lx-button [disabled]="disabled" endIcon="slim-arrow-down">
8473
+ * <span>{{ activeView?.label }}</span>
8474
+ * </button>
8475
+ * @for (viewGroup of viewGroups; track viewGroup.groupKey) {
8476
+ * <lx-option-group [label]="'viewGroups.' + viewGroup.groupKey | translate">
8477
+ * @for (view of viewGroup.views; track view.key) {
8478
+ * <lx-option
8479
+ * [selected]="view === activeView"
8480
+ * (select)="applyView.emit(view.key)"
8481
+ * >{{ view.label }}</lx-option>
8482
+ * }
8483
+ * </lx-option-group>
8484
+ * }
8485
+ * </lx-options-dropdown>
8486
+ * ```
8487
+ */
7320
8488
  class OptionsDropdownComponent {
7321
8489
  /** @internal */
7322
8490
  get displayStyle() {
@@ -7381,18 +8549,61 @@ class OptionsDropdownComponent {
7381
8549
  this.renderer = renderer;
7382
8550
  /** @internal */
7383
8551
  this.NAME = 'OptionsDropdownComponent';
8552
+ /**
8553
+ * The alignment of the dropdown relative to the trigger element.
8554
+ * @default 'right'
8555
+ */
7384
8556
  this.align = 'right';
8557
+ /**
8558
+ * Whether the dropdown should close when the page is scrolled.
8559
+ * @default false
8560
+ */
7385
8561
  this.closeOnScroll = false;
8562
+ /**
8563
+ * Whether the dropdown is disabled and cannot be opened.
8564
+ * @default false
8565
+ */
7386
8566
  this.disabled = false;
8567
+ /**
8568
+ * The maximum height of the dropdown. Can be any valid CSS height value.
8569
+ * @default 'none'
8570
+ */
7387
8571
  this.maxHeight = 'none';
8572
+ /**
8573
+ * Whether the dropdown should close automatically when an option is selected.
8574
+ * @default true
8575
+ */
7388
8576
  this.closeOnSelect = true;
8577
+ /**
8578
+ * Whether to enable advanced overlay positioning using CDK overlay.
8579
+ * Use when the dropdown is wider than its trigger or positioned near a viewport edge —
8580
+ * enables CDK overlay positioning with automatic boundary detection to prevent off-screen clipping
8581
+ * @default false
8582
+ */
7389
8583
  this.overlayPositioning = false;
8584
+ /**
8585
+ * Additional CSS class to apply to the dropdown overlay.
8586
+ * @default ''
8587
+ */
7390
8588
  this.dropdownClass = '';
8589
+ /**
8590
+ * Whether the trigger container should use display flex instead of inline-block.
8591
+ * @default false
8592
+ */
7391
8593
  this.isFlexEnabledTriggerContainer = false;
7392
8594
  /** @internal */
7393
8595
  this.overlayScrollStrategy = this.closeOnScroll ? this.scrollStrategies.close() : this.scrollStrategies.reposition();
8596
+ /**
8597
+ * Event emitted when the dropdown is opened.
8598
+ */
7394
8599
  this.opened = new EventEmitter();
8600
+ /**
8601
+ * Event emitted when the dropdown is closed for any reason.
8602
+ */
7395
8603
  this.closed = new EventEmitter();
8604
+ /**
8605
+ * Event emitted when the dropdown is closed without an option being selected (e.g., by pressing Escape or clicking outside).
8606
+ */
7396
8607
  this.closedWithoutSelection = new EventEmitter();
7397
8608
  this.highlightedOptionIndex$ = new BehaviorSubject(0);
7398
8609
  this._open = false;
@@ -7611,9 +8822,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
7611
8822
  args: ['style.display']
7612
8823
  }] } });
7613
8824
 
8825
+ /**
8826
+ * A nested sub-dropdown that appears next to a parent option.
8827
+ * Opens on hover or keyboard navigation with debounced interactions.
8828
+ * Automatically adjusts max height to fit viewport.
8829
+ *
8830
+ * ### Projection slots
8831
+ * - Default slot: Nested dropdown options (`lx-option` components).
8832
+ *
8833
+ * ### Example
8834
+ * @example
8835
+ * ```html
8836
+ * <lx-options-sub-dropdown [trigger]="parentOption" align="left">
8837
+ * <lx-option [value]="1">Sub-option 1</lx-option>
8838
+ * <lx-option [value]="2">Sub-option 2</lx-option>
8839
+ * </lx-options-sub-dropdown>
8840
+ * ```
8841
+ */
7614
8842
  class OptionsSubDropdownComponent {
7615
8843
  constructor(changeDetection) {
7616
8844
  this.changeDetection = changeDetection;
8845
+ /**
8846
+ * Horizontal alignment of the sub-dropdown relative to the trigger option.
8847
+ * @default 'right'
8848
+ */
7617
8849
  this.align = 'right';
7618
8850
  this.hidden = true;
7619
8851
  this.mouseInside$ = new BehaviorSubject(false);
@@ -7696,6 +8928,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
7696
8928
  args: ['mouseleave']
7697
8929
  }] } });
7698
8930
 
8931
+ /**
8932
+ * Individual option within a picker dropdown.
8933
+ *
8934
+ * Must be a direct child of lx-picker.
8935
+ *
8936
+ * ### Projection slots
8937
+ * - Default slot: Option content (text, icons, or custom elements). Hidden when `isClearOption` is true.
8938
+ *
8939
+ * ### Example
8940
+ * @example
8941
+ * ```html
8942
+ * <lx-picker>
8943
+ * <button lxPickerTrigger>Select</button>
8944
+ * <li lx-picker-option [optionId]="'opt1'" [value]="'option1'" [ariaLabel]="'Option 1'">
8945
+ * Option 1
8946
+ * </li>
8947
+ * <li lx-picker-option [optionId]="'opt2'" [value]="'option2'" [ariaLabel]="'Option 2'">
8948
+ * Option 2
8949
+ * </li>
8950
+ * </lx-picker>
8951
+ * ```
8952
+ */
7699
8953
  class PickerOptionComponent {
7700
8954
  get ariaLabelValue() {
7701
8955
  if (this.isClearOption) {
@@ -7731,11 +8985,17 @@ class PickerOptionComponent {
7731
8985
  this.NAME = 'PickerOptionComponent';
7732
8986
  this.role = 'option';
7733
8987
  this.ariaSelected = false;
8988
+ /**
8989
+ * Whether this option is currently selected.
8990
+ * @default false
8991
+ */
7734
8992
  this.selected = false;
7735
- this.isClearOption = false;
7736
8993
  /**
7737
- * Emits the value.
8994
+ * Whether this is a special "clear selection" option.
8995
+ * @default false
7738
8996
  */
8997
+ this.isClearOption = false;
8998
+ /** Emitted when the option is selected. */
7739
8999
  this.select = new EventEmitter();
7740
9000
  this._highlighted = false;
7741
9001
  }
@@ -7852,22 +9112,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
7852
9112
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
7853
9113
 
7854
9114
  /**
7855
- * How to use:
7856
- * Provide the lx-picker with two kinds of ContentChildren:
7857
- * 1. A lxPickerTrigger, preferably a button element, which we use to open the dropdown on click or enter.
7858
- * 2. A list of `<li>` elements with an lx-picker-option attribute that own the option template as content children.
9115
+ * A dropdown picker for selecting a value from a list of options.
9116
+ * Supports keyboard navigation, `ControlValueAccessor` for reactive forms, and custom trigger elements.
7859
9117
  *
7860
- * You can use this component as part of a FormGroup or wire it up yourself by listening on the (select) output of the options.
9118
+ * ### Projection slots
9119
+ * - `lxPickerTrigger`: A button element used to open the dropdown on click or Enter
9120
+ * - `li[lx-picker-option]`: List items representing selectable options
7861
9121
  *
7862
- * Example usage (non FormGroup style):
7863
- * ```
7864
- * <lx-picker listBoxAriaLabel="Awesome picker">
7865
- * <button lxPickerTrigger lx-button mode="outline" size="large" [square]="true" aria-label="Awesome picker" title="Awesome picker">
7866
- * <lx-icon [name]="selection.label" [color]="selection.value" fontAwsomeStyle="solid"></lx-icon>
7867
- * </button>
7868
- * <li *ngFor="let option of options" lx-picker-option [value]="option.value" [selected]="selection === option" (select)="selection = option" [optionId]="option.id">
7869
- * <lx-icon lx-picker-option [name]="option.label" [color]="option.value" fontAwsomeStyle="solid"></lx-icon>
7870
- * </li>
9122
+ * ### Example
9123
+ * @example
9124
+ * ```html
9125
+ * <lx-picker listBoxAriaLabel="Color picker">
9126
+ * <button lxPickerTrigger lx-button mode="outline" size="large" [square]="true">
9127
+ * {{ selection.label }}
9128
+ * </button>
9129
+ * @for (option of options; track option.id) {
9130
+ * <li lx-picker-option [value]="option.value" [selected]="selection === option"
9131
+ * (select)="selection = option" [optionId]="option.id">
9132
+ * {{ option.label }}
9133
+ * </li>
9134
+ * }
7871
9135
  * </lx-picker>
7872
9136
  * ```
7873
9137
  */
@@ -7901,6 +9165,10 @@ class PickerComponent {
7901
9165
  constructor(dir, cdRef) {
7902
9166
  this.dir = dir;
7903
9167
  this.cdRef = cdRef;
9168
+ /**
9169
+ * Direction the picker options dropdown opens.
9170
+ * @default 'right'
9171
+ */
7904
9172
  this.openDirection = 'right';
7905
9173
  /** @internal */
7906
9174
  this._isFormControl = false;
@@ -8058,10 +9326,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
8058
9326
  args: ['document:keydown', ['$event']]
8059
9327
  }] } });
8060
9328
 
9329
+ /**
9330
+ * An individual pill/tag item with a remove button.
9331
+ * Typically used within `lx-pill-list` to display selected items.
9332
+ *
9333
+ * ### Example
9334
+ * @example
9335
+ * ```html
9336
+ * <lx-pill-item [item]="selectedItem"
9337
+ * [label]="'Option A'"
9338
+ * (remove)="onRemove($event)">
9339
+ * </lx-pill-item>
9340
+ * ```
9341
+ */
8061
9342
  class PillItemComponent {
8062
9343
  constructor() {
8063
9344
  this.NAME = 'PillItemComponent';
9345
+ /**
9346
+ * When set to true, disables the pill and prevents removal.
9347
+ */
8064
9348
  this.disabled = false;
9349
+ /**
9350
+ * Event emitted when the pill is removed.
9351
+ */
8065
9352
  this.remove = new EventEmitter();
8066
9353
  }
8067
9354
  removePill(item, isMouse = false) {
@@ -8088,11 +9375,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
8088
9375
  type: Output
8089
9376
  }] } });
8090
9377
 
9378
+ /**
9379
+ * A container for displaying a list of removable pill/tag items.
9380
+ * Commonly used inside `lx-multi-select` to show selected items.
9381
+ *
9382
+ * When used inside `lx-multi-select`, apply `class="pills"` for proper projection
9383
+ * and wire up `[keyboardSelectAction]` for keyboard navigation.
9384
+ *
9385
+ * ### Projection slots
9386
+ * - `#pillTemplate`: Optional custom template for rendering individual pills.
9387
+ * Receives each pill as implicit context. Use when you need custom styling
9388
+ * or attributes on individual pills.
9389
+ *
9390
+ * ### Example — Basic usage inside multi-select
9391
+ * @example
9392
+ * ```html
9393
+ * <lx-pill-list
9394
+ * class="pills"
9395
+ * [keyboardSelectAction]="multiSelect.selectionKeyboardSelectAction$"
9396
+ * [pills]="selectedItems"
9397
+ * labelKey="name"
9398
+ * itemKey="id"
9399
+ * (remove)="multiSelect.removeItem($event)">
9400
+ * </lx-pill-list>
9401
+ * ```
9402
+ *
9403
+ * ### Example — Custom pill template
9404
+ * @example
9405
+ * ```html
9406
+ * <lx-pill-list
9407
+ * class="pills"
9408
+ * [keyboardSelectAction]="multiSelect.selectionKeyboardSelectAction$"
9409
+ * [pills]="selectedItems"
9410
+ * itemKey="id"
9411
+ * (remove)="multiSelect.removeItem($event)">
9412
+ * <ng-template #pillTemplate let-pill>
9413
+ * <lx-pill-item
9414
+ * [label]="pill.name"
9415
+ * [item]="pill"
9416
+ * [class.readOnly]="pill.readOnly">
9417
+ * </lx-pill-item>
9418
+ * </ng-template>
9419
+ * </lx-pill-list>
9420
+ * ```
9421
+ */
8091
9422
  class PillListComponent extends KeyboardSelectDirective {
8092
9423
  constructor() {
8093
9424
  super(...arguments);
9425
+ /**
9426
+ * Array of items to display as pills.
9427
+ */
8094
9428
  this.pills = [];
9429
+ /**
9430
+ * When set to true, disables removal of pills.
9431
+ */
8095
9432
  this.disabled = false;
9433
+ /**
9434
+ * Event emitted when a pill is removed.
9435
+ */
8096
9436
  this.remove = new EventEmitter();
8097
9437
  }
8098
9438
  ngAfterViewInit() {
@@ -8199,6 +9539,34 @@ function stopKeyboardEventPropagation(evt) {
8199
9539
  evt.stopImmediatePropagation();
8200
9540
  }
8201
9541
 
9542
+ /**
9543
+ * A dropdown component for selecting a single value from a list of options.
9544
+ * Implements `ControlValueAccessor` for seamless integration with Angular reactive forms.
9545
+ *
9546
+ * ### Projection slots
9547
+ * - `.selectedOption`: Displays the currently selected value in the input field
9548
+ * - `.dropdownComponent`: Contains the dropdown (typically `lx-basic-dropdown`)
9549
+ *
9550
+ * Alternatively, use `lxSelectDropdown` and `lxSelectedOption` directives on `<ng-template>`.
9551
+ *
9552
+ * ### Example
9553
+ * @example
9554
+ * ```html
9555
+ * <lx-single-select
9556
+ * #select
9557
+ * [formControl]="control"
9558
+ * (query)="searchTerm = $event">
9559
+ * <span class="selectedOption">{{ control.value?.name }}</span>
9560
+ * <lx-basic-dropdown
9561
+ * class="dropdownComponent"
9562
+ * [keyboardSelectAction]="select.optionsKeyboardSelectAction$"
9563
+ * [options]="options | lxFilterByTerm: { term: searchTerm }"
9564
+ * labelKey="name"
9565
+ * (onItemSelected)="select.selectOption($event)">
9566
+ * </lx-basic-dropdown>
9567
+ * </lx-single-select>
9568
+ * ```
9569
+ */
8202
9570
  class SingleSelectComponent extends BaseSelectDirective {
8203
9571
  /** @internal */
8204
9572
  static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition, keyCode) {
@@ -8239,16 +9607,25 @@ class SingleSelectComponent extends BaseSelectDirective {
8239
9607
  constructor(cd) {
8240
9608
  super();
8241
9609
  this.cd = cd;
9610
+ /** Background color of the selection input field. */
8242
9611
  this.selectionBackground = 'white';
9612
+ /** Size variant of the select component. */
8243
9613
  this.size = 'default';
8244
9614
  /** @deprecated To keep different inputs aligned, we should use the default padding */
8245
9615
  this.padding = 'default';
9616
+ /** Whether the select field is required. */
8246
9617
  this.required = false;
9618
+ /** Whether to close the dropdown when the Tab key is pressed. */
8247
9619
  this.closeDropdownOnTab = true;
9620
+ /** Event emitted when the selection changes. */
8248
9621
  this.selectionChange = new EventEmitter();
9622
+ /** Event emitted when the input loses focus. */
8249
9623
  this.blur = new EventEmitter();
9624
+ /** Whether to show a clear button to remove the selection. */
8250
9625
  this.allowClear = true;
9626
+ /** Tab index of the input element for keyboard navigation. */
8251
9627
  this.tabIndex = 0;
9628
+ /** Whether to visually mark the input as invalid. */
8252
9629
  this.markInvalid = false;
8253
9630
  /** @internal */
8254
9631
  this.destroyed$ = new Subject();
@@ -8486,8 +9863,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
8486
9863
  args: ['queryInput', { static: true }]
8487
9864
  }] } });
8488
9865
 
9866
+ /**
9867
+ * Trigger button for the sorting dropdown.
9868
+ * Displays the current sorting mode with a dropdown chevron icon.
9869
+ *
9870
+ * ### Example
9871
+ * @example
9872
+ * ```html
9873
+ * <lx-sorting-dropdown-trigger
9874
+ * label="Sort by"
9875
+ * currentSortingLabel="Name"
9876
+ * [disabled]="false">
9877
+ * </lx-sorting-dropdown-trigger>
9878
+ * ```
9879
+ */
8489
9880
  class SortingDropdownTriggerComponent {
8490
9881
  constructor() {
9882
+ /**
9883
+ * Whether the trigger button is disabled.
9884
+ * @default false
9885
+ */
8491
9886
  this.disabled = false;
8492
9887
  }
8493
9888
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: SortingDropdownTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -8510,10 +9905,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
8510
9905
  * score will be used for sorting.
8511
9906
  */
8512
9907
  const RELEVANCE_SORTING_KEY = 'lx-relevance';
9908
+ /**
9909
+ * Dropdown for selecting sorting mode and direction.
9910
+ * Displays available sorting options and allows toggling between ascending/descending order.
9911
+ *
9912
+ * ### Example
9913
+ * @example
9914
+ * ```html
9915
+ * <lx-sorting-dropdown
9916
+ * [currentSorting]="{ key: 'name', order: 'asc' }"
9917
+ * [sortingOptions]="sortOptions"
9918
+ * (apply)="handleSortChange($event)">
9919
+ * </lx-sorting-dropdown>
9920
+ * ```
9921
+ */
8513
9922
  class SortingDropdownComponent {
8514
9923
  constructor() {
9924
+ /**
9925
+ * Available sorting options to choose from.
9926
+ * @default []
9927
+ */
8515
9928
  this.sortingOptions = [];
9929
+ /**
9930
+ * Whether to show ascending/descending direction options.
9931
+ * @default true
9932
+ */
8516
9933
  this.showDirectionOptions = true;
9934
+ /** Event emitted when a new sorting configuration is applied. */
8517
9935
  this.apply = new EventEmitter();
8518
9936
  this.NAME = 'SortingDropdownComponent';
8519
9937
  this.sortingDirections = ['asc', 'desc'];
@@ -8564,17 +9982,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
8564
9982
  }] } });
8565
9983
 
8566
9984
  /**
8567
- * Switch component is a toggle switch that can be used to switch between two states.
9985
+ * A toggle switch component for selecting between two states (on/off, true/false).
9986
+ * Provides a visual toggle with optional label and supports disabled states.
9987
+ *
9988
+ * ### Example
9989
+ * @example
9990
+ * ```html
9991
+ * <lx-switch
9992
+ * [value]="isEnabled"
9993
+ * [label]="'Enable notifications'"
9994
+ * [labelInFront]="true"
9995
+ * (toggle)="handleToggle($event)">
9996
+ * </lx-switch>
9997
+ * ```
8568
9998
  */
8569
9999
  class SwitchComponent {
8570
10000
  constructor() {
8571
- /** Size of the switch */
10001
+ /**
10002
+ * Visual size variant of the switch.
10003
+ * @default 'small'
10004
+ */
8572
10005
  this.size = 'small';
8573
- /** Whether the switch is disabled */
10006
+ /**
10007
+ * Whether the switch is disabled and cannot be toggled.
10008
+ * @default false
10009
+ */
8574
10010
  this.disabled = false;
8575
- /** Whether the label is in front of the switch */
10011
+ /**
10012
+ * Whether the label should appear before (left of) the switch.
10013
+ * @default true
10014
+ */
8576
10015
  this.labelInFront = true;
8577
- /** Event that is emitted when the switch is toggled */
10016
+ /**
10017
+ * Event emitted when the switch is toggled, returning the new boolean value.
10018
+ */
8578
10019
  this.toggle = new EventEmitter();
8579
10020
  }
8580
10021
  /** @internal */
@@ -9600,6 +11041,20 @@ const isRowSelectorActive = (params) => {
9600
11041
  return isSelectorActive({ ...params, selectorType: 'selector-row' });
9601
11042
  };
9602
11043
 
11044
+ /**
11045
+ * Contextual bubble menu for table editing in the rich text editor.
11046
+ *
11047
+ * Provides three context-sensitive menus that appear when interacting with tables:
11048
+ * - Row menu: appears when a table row selector is active
11049
+ * - Column menu: appears when a table column selector is active
11050
+ * - Table menu: appears when the entire table is selected
11051
+ *
11052
+ * ### Example
11053
+ * @example
11054
+ * ```html
11055
+ * <lx-table-bubble-menu [editor]="editor" />
11056
+ * ```
11057
+ */
9603
11058
  class TableBubbleMenuComponent {
9604
11059
  constructor() {
9605
11060
  this.NAME = 'RichTextEditorTableActions';
@@ -10170,8 +11625,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
10170
11625
  }]
10171
11626
  }] });
10172
11627
 
11628
+ /**
11629
+ * Footer component for modals with content projection for action buttons.
11630
+ *
11631
+ * ### Projection slots
11632
+ * - Default slot: Action buttons or footer content
11633
+ *
11634
+ * ### Example
11635
+ * @example
11636
+ * ```html
11637
+ * <lx-modal-footer [border]="true">
11638
+ * <button lx-button (click)="cancel()">Cancel</button>
11639
+ * <button lx-button color="primary" (click)="save()">Save</button>
11640
+ * </lx-modal-footer>
11641
+ * ```
11642
+ */
10173
11643
  class ModalFooterComponent {
10174
11644
  constructor() {
11645
+ /**
11646
+ * Whether to show a top border on the footer.
11647
+ * @default false
11648
+ */
10175
11649
  this.border = false;
10176
11650
  }
10177
11651
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ModalFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -10184,9 +11658,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
10184
11658
  type: Input
10185
11659
  }] } });
10186
11660
 
11661
+ /**
11662
+ * Header component for modals with optional title and content projection.
11663
+ *
11664
+ * ### Projection slots
11665
+ * - Default slot: Custom header content displayed before the title
11666
+ *
11667
+ * ### Example
11668
+ * @example
11669
+ * ```html
11670
+ * <lx-modal-header [title]="'Create New Item'" [bottomBorder]="true">
11671
+ * <button class="close-button">×</button>
11672
+ * </lx-modal-header>
11673
+ * ```
11674
+ */
10187
11675
  class ModalHeaderComponent {
10188
11676
  constructor() {
11677
+ /**
11678
+ * The title text to display in the header.
11679
+ * @default ''
11680
+ */
10189
11681
  this.title = '';
11682
+ /**
11683
+ * Whether to show a bottom border on the header.
11684
+ * @default true
11685
+ */
10190
11686
  this.bottomBorder = true;
10191
11687
  }
10192
11688
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ModalHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -10504,6 +12000,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
10504
12000
  }]
10505
12001
  }] });
10506
12002
 
12003
+ /**
12004
+ * Modal dialog for creating and editing hyperlinks in the rich text editor.
12005
+ *
12006
+ * Provides a form to input link text and URL with validation. Supports creating new links
12007
+ * and editing existing ones. The modal state is managed by the link plugin.
12008
+ *
12009
+ * ### Example
12010
+ * @example
12011
+ * ```html
12012
+ * <lx-link-modal [editor]="editor" />
12013
+ * ```
12014
+ */
10507
12015
  class LinkModalComponent {
10508
12016
  constructor() {
10509
12017
  this.NAME = 'LinkModalComponent';
@@ -10575,9 +12083,32 @@ const ensureHttpProtocol = (url) => {
10575
12083
  return url.startsWith('http://') || url.startsWith('https://') ? url : `http://${url}`;
10576
12084
  };
10577
12085
 
12086
+ /**
12087
+ * Toolbar component for the rich text editor providing formatting controls.
12088
+ *
12089
+ * Displays formatting buttons based on enabled Tiptap extensions, including text styles,
12090
+ * bold/italic/underline, lists, alignment, links, code blocks, and table insertion.
12091
+ * The toolbar visibility is controlled by the `isVisible` input and link modal state.
12092
+ *
12093
+ * ### Projection slots
12094
+ * - `.diagram-btn`: Custom diagram button when `lxDiagram` extension is enabled
12095
+ *
12096
+ * ### Example
12097
+ * @example
12098
+ * ```html
12099
+ * <lx-rich-text-editor-toolbar [editor]="editor" [isVisible]="true">
12100
+ * <button class="diagram-btn" lx-button>Insert Diagram</button>
12101
+ * </lx-rich-text-editor-toolbar>
12102
+ * ```
12103
+ */
10578
12104
  class RichTextEditorToolbarComponent {
10579
12105
  constructor() {
10580
12106
  this.NAME = 'RichTextEditorToolbarComponent';
12107
+ /**
12108
+ * Controls the visibility of the toolbar.
12109
+ *
12110
+ * @default true
12111
+ */
10581
12112
  this.isVisible = input(true);
10582
12113
  this.headingLevels = [];
10583
12114
  this.isLinkModalOpen = signal(false);
@@ -10785,16 +12316,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
10785
12316
  }]
10786
12317
  }], ctorParameters: () => [] });
10787
12318
 
12319
+ /**
12320
+ * Base component for custom Tiptap node views in Angular.
12321
+ *
12322
+ * Extend this component to create custom node views for the rich text editor.
12323
+ * Provides all Tiptap NodeViewProps as required input signals.
12324
+ */
10788
12325
  // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection
10789
12326
  class AngularNodeViewComponent {
10790
12327
  constructor() {
12328
+ /** The Tiptap editor instance. */
10791
12329
  this.editor = input.required();
12330
+ /** The ProseMirror node being rendered. */
10792
12331
  this.node = input.required();
12332
+ /** Array of decorations for this node. */
10793
12333
  this.decorations = input.required();
12334
+ /** Whether the node is currently selected. */
10794
12335
  this.selected = input.required();
12336
+ /** The Tiptap extension that created this node. */
10795
12337
  this.extension = input.required();
12338
+ /** Function to get the node's position in the document. */
10796
12339
  this.getPos = input.required();
12340
+ /** Function to update the node's attributes. */
10797
12341
  this.updateAttributes = input.required();
12342
+ /** Function to delete the node from the document. */
10798
12343
  this.deleteNode = input.required();
10799
12344
  }
10800
12345
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: AngularNodeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -11236,25 +12781,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
11236
12781
  }] });
11237
12782
 
11238
12783
  /**
11239
- * The Popover component is based on the [ncstate-sat/popover](https://github.com/ncstate-sat/popover) library.
11240
- *
11241
- * ## Examples
11242
-
11243
- * This popover encapsulates this open source library: https://github.com/ncstate-sat/popover,
11244
- * make sure to also check out the docs over there.
12784
+ * A floating overlay component anchored to a trigger element.
12785
+ * Based on the [ncstate-sat/popover](https://github.com/ncstate-sat/popover) library.
11245
12786
  *
11246
- * As of today they are two trigger strategies to display a popover.
11247
- * 1. Show on hovering the anchor and while hovering the popover body.
11248
- * 2. Show on click and while hovering the popover body.
12787
+ * The popover requires one of the trigger directives:
12788
+ * - `lxPopoverHover`: Shows on hover (both anchor and popover body)
12789
+ * - `lxPopoverClick`: Shows on click (stays open while hovering popover body)
11249
12790
  *
11250
- * For use case 1. you would use the lxPopoverHover directive, which exports as hoverAnchor.
11251
- *
11252
- * ### Example:
12791
+ * ### Example with hover trigger
12792
+ * @example
11253
12793
  * ```html
11254
12794
  * <div lxPopoverHover
11255
12795
  * hoverAnchor
11256
12796
  * satPopoverAnchor
11257
- * #anchor="hoverAnchor"></div>
12797
+ * #anchor="hoverAnchor">Hover me</div>
11258
12798
  * <lx-popover [trigger]="anchor"
11259
12799
  * horizontalAlign="after"
11260
12800
  * verticalAlign="center">
@@ -11262,18 +12802,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
11262
12802
  * </lx-popover>
11263
12803
  * ```
11264
12804
  *
11265
- * For use case 2. you would use the lxPopoverClick directive, which exports as clickAnchor.
11266
- * Note: Since the only component where we use the lxPopoverClick directive (ReportComponent)
11267
- * needs to fetch some data before opening it, we do not register a click EventListener in this directive,
11268
- * but require the developer to implement that in the component, where the popover is used.
11269
- *
11270
- * ### Example:
12805
+ * ### Example with click trigger
12806
+ * @example
11271
12807
  * ```html
11272
12808
  * <div lxPopoverClick
11273
12809
  * clickAnchor
11274
12810
  * satPopoverAnchor
11275
12811
  * #anchor="clickAnchor"
11276
- * (click)="popover.open()">Click Me!</div>
12812
+ * (click)="popover.open()">Click me</div>
11277
12813
  * <lx-popover [trigger]="anchor"
11278
12814
  * horizontalAlign="after"
11279
12815
  * verticalAlign="center"
@@ -11282,10 +12818,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
11282
12818
  * </lx-popover>
11283
12819
  * ```
11284
12820
  *
11285
- * If this component is used with angularCompilerOptions strictTemplates=true,
11286
- * satPopoverAnchor must be set to the reference to the SatPopover inside lx-popover.
11287
- *
11288
- * ### Example:
12821
+ * ### With strict templates
12822
+ * When using `strictTemplates=true`, bind `satPopoverAnchor` to the popover's internal reference:
12823
+ * ### Example
12824
+ * @example
11289
12825
  * ```html
11290
12826
  * <div [satPopoverAnchor]="popover.satPopover"></div>
11291
12827
  * <lx-popover #popover>
@@ -11700,6 +13236,27 @@ var LxTabGroupKeyCode;
11700
13236
  LxTabGroupKeyCode["End"] = "End";
11701
13237
  })(LxTabGroupKeyCode || (LxTabGroupKeyCode = {}));
11702
13238
 
13239
+ /**
13240
+ * Individual tab component used inside `lx-tab-group`.
13241
+ * Supports icons, counters, router links, and keyboard navigation.
13242
+ * Content is projected and rendered by the parent tab group when the tab is active.
13243
+ *
13244
+ * ### Example
13245
+ * @example
13246
+ * ```html
13247
+ * <lx-tab-group>
13248
+ * <lx-tab [label]="'General'" [icon]="'settings'" [disabled]="false">
13249
+ * <p>General content</p>
13250
+ * </lx-tab>
13251
+ * <lx-tab [label]="'Notifications'" [counter]="3">
13252
+ * <p>Notification content</p>
13253
+ * </lx-tab>
13254
+ * <lx-tab [label]="'Settings'" [tabLink]="['/settings']">
13255
+ * <p>Settings content</p>
13256
+ * </lx-tab>
13257
+ * </lx-tab-group>
13258
+ * ```
13259
+ */
11703
13260
  class TabComponent {
11704
13261
  set isActive(value) {
11705
13262
  this._isActive = value;
@@ -11716,18 +13273,52 @@ class TabComponent {
11716
13273
  this.router = router;
11717
13274
  this.activatedRoute = activatedRoute;
11718
13275
  /**
11719
- * The `design` of the icon.
13276
+ * The design of the icon.
11720
13277
  * @default NonInteractive
11721
13278
  */
11722
13279
  this.iconDesign = 'NonInteractive';
13280
+ /**
13281
+ * The label text displayed for the tab.
13282
+ * @default ''
13283
+ */
11723
13284
  this.label = '';
13285
+ /**
13286
+ * Options for the RouterLinkActive directive.
13287
+ * @default { exact: true }
13288
+ */
11724
13289
  this.routerLinkActiveOptions = { exact: true };
13290
+ /**
13291
+ * Size of the counter badge.
13292
+ * @default 'default'
13293
+ */
11725
13294
  this.counterBadgeSize = 'default';
13295
+ /**
13296
+ * Whether to remove margin from the tab.
13297
+ * @default false
13298
+ */
11726
13299
  this.noMargin = false;
13300
+ /**
13301
+ * Whether to remove left margin for the first tab.
13302
+ * @default false
13303
+ */
11727
13304
  this.noLeftMarginForFirstTab = false;
13305
+ /**
13306
+ * Background color of the tab.
13307
+ * @default 'white'
13308
+ */
11728
13309
  this.background = 'white';
13310
+ /**
13311
+ * Whether the tab is disabled and cannot be selected.
13312
+ * @default false
13313
+ */
11729
13314
  this.disabled = false;
13315
+ /**
13316
+ * Event emitted when the tab is selected.
13317
+ */
11730
13318
  this.switch = new EventEmitter();
13319
+ /**
13320
+ * Event emitted when a keyboard key is pressed on the tab.
13321
+ */
11731
13322
  this.keyDownAction = new EventEmitter();
11732
13323
  this._isActive = false;
11733
13324
  this.tabId = uniqueId$1('tab');
@@ -11812,6 +13403,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
11812
13403
  args: [RouterLinkActive]
11813
13404
  }] } });
11814
13405
 
13406
+ /**
13407
+ * Container for tab navigation that manages active tab state and keyboard interactions.
13408
+ * Supports both static tabs and router-linked tabs with keyboard navigation (arrow keys, Home, End).
13409
+ *
13410
+ * ### Content Projection
13411
+ * - Project `lx-tab` components as children
13412
+ *
13413
+ * ### Example
13414
+ * @example
13415
+ * ```html
13416
+ * <lx-tab-group [selectedIndex]="0" (indexChange)="onTabChange($event)">
13417
+ * <lx-tab [label]="'General'" [icon]="'settings'">
13418
+ * <p>General content</p>
13419
+ * </lx-tab>
13420
+ * <lx-tab [label]="'Notifications'" [counter]="3">
13421
+ * <p>Notification content</p>
13422
+ * </lx-tab>
13423
+ * </lx-tab-group>
13424
+ * ```
13425
+ */
11815
13426
  class TabGroupComponent {
11816
13427
  /** @internal */
11817
13428
  get tabIds() {
@@ -11826,11 +13437,19 @@ class TabGroupComponent {
11826
13437
  }
11827
13438
  constructor(cd) {
11828
13439
  this.cd = cd;
13440
+ /**
13441
+ * Whether the tabs should be centered.
13442
+ * @default false
13443
+ */
11829
13444
  this.isCentered = false;
11830
13445
  /**
11831
- * The tab whose content should be displayed.
13446
+ * The index of the tab whose content should be displayed.
13447
+ * @default 0
11832
13448
  */
11833
13449
  this.selectedIndex = 0;
13450
+ /**
13451
+ * Event emitted when the selected tab index changes.
13452
+ */
11834
13453
  this.indexChange = new EventEmitter();
11835
13454
  /**
11836
13455
  * The tab that is currently focused via keyboard.