@leanix/components 0.4.818 → 0.4.820

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 +1744 -124
  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'
@@ -2674,7 +2965,8 @@ const ICON_MAP = {
2674
2965
  'fa-users': ['family-care'],
2675
2966
  'fa-window': ['lx-icons/window'], // ['tnt/subject'],
2676
2967
  'fa-wrench': ['wrench'],
2677
- 'fa-yen-sign': ['lx-icons/yen-sign']
2968
+ 'fa-yen-sign': ['lx-icons/yen-sign'],
2969
+ 'fa-sigma': ['sum']
2678
2970
  };
2679
2971
  /**
2680
2972
  * Retrieves the SAP icon for a given Font Awesome icon name.
@@ -2697,7 +2989,8 @@ const FA_MODIFIER_REGEX = /\s*\b(fas|far|fal|fad|fab)\b\s*/g;
2697
2989
  * Useful for scenarios in which icon names need to be mapped at runtime,
2698
2990
  * e.g. because they are stored in the backend.
2699
2991
  *
2700
- * @example ```html
2992
+ * @example
2993
+ * ```html
2701
2994
  * <ui5-icon [name]="fontAwesomeIcon() | lxFaToSapIcon" />
2702
2995
  * ```
2703
2996
  */
@@ -2798,11 +3091,35 @@ const AVATAR_COLORS = [
2798
3091
  '#fc9785'
2799
3092
  ];
2800
3093
 
3094
+ /**
3095
+ * Avatar component displays a user's profile picture or a placeholder icon for technical users.
3096
+ * Optionally includes a mailto link when an email is provided.
3097
+ *
3098
+ * ### Example
3099
+ * @example
3100
+ * ```html
3101
+ * <lx-avatar [user]="currentUser" size="M" />
3102
+ * <lx-avatar [user]="{ displayName: 'Bot', technicalUser: true }" [showMailToLink]="false" />
3103
+ * <lx-avatar [user]="inactiveUser" [disabled]="true" size="S" />
3104
+ * ```
3105
+ */
2801
3106
  class AvatarComponent {
2802
3107
  constructor(imageReader) {
2803
3108
  this.imageReader = imageReader;
3109
+ /**
3110
+ * The size of the avatar.
3111
+ * @default 'M'
3112
+ */
2804
3113
  this.size = 'M';
3114
+ /**
3115
+ * Whether to show a mailto link when clicking on the avatar.
3116
+ * @default true
3117
+ */
2805
3118
  this.showMailToLink = true;
3119
+ /**
3120
+ * Whether the avatar should appear in a disabled state.
3121
+ * @default false
3122
+ */
2806
3123
  this.disabled = false;
2807
3124
  this.NAME = 'AvatarComponent';
2808
3125
  this.imageURL = this.imageReader.getAvatar(DEFAULT_IMAGE_ID, this.size, this.user?.displayName);
@@ -2833,6 +3150,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
2833
3150
  type: Input
2834
3151
  }] } });
2835
3152
 
3153
+ /**
3154
+ * Avatar group component displays multiple user avatars in a compact layout.
3155
+ * Supports automatic overflow handling with a "+N" indicator and overlay expansion.
3156
+ * Includes tooltip showing all user names on hover and click-to-expand functionality.
3157
+ *
3158
+ * ### Example
3159
+ * @example
3160
+ * ```html
3161
+ * <lx-avatar-group [users]="teamMembers" size="M" />
3162
+ * <lx-avatar-group [users]="assignees" type="individual" [maxLength]="5" />
3163
+ * <lx-avatar-group
3164
+ * [users]="participants"
3165
+ * [title]="'Project Team'"
3166
+ * [disabledUserIds]="inactiveUserIds"
3167
+ * [autoScale]="true"
3168
+ * />
3169
+ * ```
3170
+ */
2836
3171
  class AvatarGroupComponent {
2837
3172
  get userNames() {
2838
3173
  return this.users
@@ -2845,11 +3180,35 @@ class AvatarGroupComponent {
2845
3180
  this.zone = zone;
2846
3181
  this.resizeObserverService = resizeObserverService;
2847
3182
  this.NAME = 'AvatarGroupComponent';
3183
+ /**
3184
+ * Array of user objects to display as avatars.
3185
+ * @default []
3186
+ */
2848
3187
  this.users = [];
3188
+ /**
3189
+ * The size of all avatars in the group.
3190
+ * @default 'M'
3191
+ */
2849
3192
  this.size = 'M';
3193
+ /**
3194
+ * The display type: 'individual' for separate avatars or 'group' for overlapping.
3195
+ * @default 'group'
3196
+ */
2850
3197
  this.type = 'group';
3198
+ /**
3199
+ * Maximum number of avatars to display before showing "+N" indicator.
3200
+ * @default 0
3201
+ */
2851
3202
  this.maxLength = 0;
3203
+ /**
3204
+ * Whether to automatically scale down avatars to fit container width.
3205
+ * @default false
3206
+ */
2852
3207
  this.autoScale = false;
3208
+ /**
3209
+ * Array of user IDs that should be displayed in a disabled state.
3210
+ * @default []
3211
+ */
2853
3212
  this.disabledUserIds = [];
2854
3213
  this.overlayVisible = false;
2855
3214
  }
@@ -2923,7 +3282,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
2923
3282
  *
2924
3283
  *
2925
3284
  * ### Example
2926
- * @example ```html
3285
+ * @example
3286
+ * ```html
2927
3287
  * <lx-page-header [pageTitle]="'Agile Tracking'">
2928
3288
  * <ui5-breadcrumbs>
2929
3289
  * <ui5-breadcrumbs-item routerLink="/">Root Page</ui5-breadcrumbs-item>
@@ -2995,11 +3355,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
2995
3355
  * Use skeleton loaders for pages or sections that load content progressively, like text and images. The component can
2996
3356
  * be used to compose various scenarios like placeholders for thumbnails, lists, and avatars. See the example
2997
3357
  * [patterns](?path=/docs/skeleton-patterns--docs) for more details.
3358
+ *
3359
+ * ### Example
3360
+ * @example
3361
+ * ```html
3362
+ * <lx-skeleton width="100%" height="20px" />
3363
+ * <lx-skeleton width="200px" height="200px" borderRadius="50%" />
3364
+ * <lx-skeleton width="80%" height="16px" color="dark" />
3365
+ * ```
2998
3366
  */
2999
3367
  class SkeletonComponent {
3000
3368
  constructor() {
3001
3369
  /**
3002
- * Color of the skeleton element. 'dark' or 'light' are supported. Default is 'light'.
3370
+ * Color of the skeleton element. 'dark' or 'light' are supported.
3371
+ * @default 'light'
3003
3372
  */
3004
3373
  this.color = 'light';
3005
3374
  }
@@ -3031,6 +3400,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3031
3400
  type: Input
3032
3401
  }] } });
3033
3402
 
3403
+ /**
3404
+ * A token wrapper component used within `lx-tokenizer` to represent individual items.
3405
+ * The tokenizer manages visibility of tokens based on available space.
3406
+ *
3407
+ * ### Projection slots
3408
+ * - Default slot: The content to display inside the token (text, icons, badges, etc.)
3409
+ *
3410
+ * ### Example
3411
+ * @example
3412
+ * ```html
3413
+ * <lx-tokenizer>
3414
+ * <lx-token>Token One</lx-token>
3415
+ * <lx-token>Token Two</lx-token>
3416
+ * </lx-tokenizer>
3417
+ * ```
3418
+ */
3034
3419
  class TokenComponent {
3035
3420
  constructor(elementRef) {
3036
3421
  this.elementRef = elementRef;
@@ -3049,13 +3434,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3049
3434
  args: [{ selector: 'lx-token', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content />\n" }]
3050
3435
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
3051
3436
 
3437
+ /**
3438
+ * A companion component for `lx-tokenizer` that displays overflowing tokens in a popover.
3439
+ * Automatically listens to the tokenizer's overflow events and shows a popover anchored to the counter button.
3440
+ *
3441
+ * ### Projection slots
3442
+ * - `popoverTemplate`: Template to render inside the popover. Receives the `startIndex` of overflowing tokens as context.
3443
+ *
3444
+ * ### Example
3445
+ * @example
3446
+ * ```html
3447
+ * <lx-tokenizer #tokenizer [active]="true">
3448
+ * <lx-token>Item 1</lx-token>
3449
+ * <lx-token>Item 2</lx-token>
3450
+ * <lx-token>Item 3</lx-token>
3451
+ * </lx-tokenizer>
3452
+ *
3453
+ * <lx-tokenizer-overflow-popover [tokenizer]="tokenizer">
3454
+ * <ng-template #popoverTemplate let-startIndex>
3455
+ * <div class="overflow-items">
3456
+ * @for (item of getOverflowItems(startIndex); track item) {
3457
+ * <div>{{ item }}</div>
3458
+ * }
3459
+ * </div>
3460
+ * </ng-template>
3461
+ * </lx-tokenizer-overflow-popover>
3462
+ * ```
3463
+ */
3052
3464
  class TokenizerOverflowPopoverComponent {
3053
3465
  constructor() {
3054
3466
  this.destroyRef = inject(DestroyRef);
3055
3467
  this.startIndex = signal(0);
3056
3468
  this.changeDetectorRef = inject(ChangeDetectorRef);
3469
+ /**
3470
+ * Reference to the tokenizer component to listen for overflow events.
3471
+ */
3057
3472
  this.tokenizer = input.required();
3473
+ /**
3474
+ * Horizontal alignment of the popover relative to the counter button.
3475
+ * @default 'after'
3476
+ */
3058
3477
  this.horizontalAlign = input('after');
3478
+ /**
3479
+ * Vertical alignment of the popover relative to the counter button.
3480
+ * @default 'start'
3481
+ */
3059
3482
  this.verticalAlign = input('start');
3060
3483
  effect(() => {
3061
3484
  this.overflowClickSubscription?.unsubscribe();
@@ -3087,7 +3510,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3087
3510
  }] } });
3088
3511
 
3089
3512
  /**
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").
3513
+ * Renders a list of items (`lx-token`) into a container and hides overflowing items behind a counter (e.g., "+4").
3514
+ * Automatically calculates how many tokens fit based on available width and responds to container resize events.
3515
+ *
3516
+ * ### Projection slots
3517
+ * - `lx-token`: Individual token items to be managed by the tokenizer
3518
+ *
3519
+ * ### Example
3520
+ * @example
3521
+ * ```html
3522
+ * <lx-tokenizer [active]="true" (overflowPlaceholderClick)="onOverflowClick($event)">
3523
+ * <lx-token>Item 1</lx-token>
3524
+ * <lx-token>Item 2</lx-token>
3525
+ * <lx-token>Item 3</lx-token>
3526
+ * <lx-token>Item 4</lx-token>
3527
+ * </lx-tokenizer>
3528
+ * ```
3091
3529
  *
3092
3530
  * ## Usage
3093
3531
  *
@@ -3135,14 +3573,16 @@ class TokenizerComponent {
3135
3573
  this.overflowItems = signal([]);
3136
3574
  this.overflowItemCount = computed(() => this.overflowItems().length);
3137
3575
  this.showCounter = computed(() => this.active() && this.overflowItemCount() > 0);
3138
- /** Can be used to activate & deactivate tokenization */
3576
+ /**
3577
+ * Enables or disables tokenization. When false, all tokens are shown regardless of available space.
3578
+ * @default true
3579
+ */
3139
3580
  this.active = input(true);
3140
3581
  this.active$ = toObservable(this.active);
3141
3582
  this.overflowStartIndex = signal(null);
3142
3583
  /**
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
3584
+ * Emitted when the overflow counter button (e.g., "+4") is clicked.
3585
+ * Provides the index of the first hidden token and the counter button element for positioning popovers.
3146
3586
  */
3147
3587
  this.overflowPlaceholderClick = new EventEmitter();
3148
3588
  afterRenderEffect(() => {
@@ -3350,9 +3790,37 @@ function isSupportedNode(node) {
3350
3790
  return node.nodeType === Node.ELEMENT_NODE && node.nodeName !== 'SCRIPT' && node.nodeName !== 'STYLE';
3351
3791
  }
3352
3792
 
3793
+ /**
3794
+ * Renders a dropdown item with label and optional description.
3795
+ * Supports text highlighting and custom styling options.
3796
+ *
3797
+ * ### Projection slots
3798
+ * - `optionLabelSuffix`: Template to append to the label (e.g., badges, icons)
3799
+ *
3800
+ * ### Example
3801
+ * @example
3802
+ * ```html
3803
+ * <lx-basic-dropdown-item
3804
+ * label="Option Name"
3805
+ * description="Additional details"
3806
+ * highlightTerm="search">
3807
+ * <ng-template #optionLabelSuffix>
3808
+ * <span class="badge">New</span>
3809
+ * </ng-template>
3810
+ * </lx-basic-dropdown-item>
3811
+ * ```
3812
+ */
3353
3813
  class BasicDropdownItemComponent {
3354
3814
  constructor() {
3815
+ /**
3816
+ * Font weight for the label text.
3817
+ * @default 'bold'
3818
+ */
3355
3819
  this.labelFontWeight = 'bold';
3820
+ /**
3821
+ * Font style for the description text.
3822
+ * @default 'normal'
3823
+ */
3356
3824
  this.descriptionFontStyle = 'normal';
3357
3825
  }
3358
3826
  get hasDescription() {
@@ -3560,6 +4028,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3560
4028
  args: ['keyboardSelectContainer', { static: true }]
3561
4029
  }] } });
3562
4030
 
4031
+ /**
4032
+ * A simple dropdown component for selecting a single value from a flat list of options.
4033
+ * Supports keyboard navigation, custom templates, infinite scrolling, and the ability to create new options.
4034
+ * Uses Angular CDK overlay for positioning and supports both top and bottom dropdown placement.
4035
+ *
4036
+ * ### Projection slots
4037
+ * - `optionTemplate`: Custom template for rendering each option
4038
+ * - `createNewOptionTemplate`: Custom template for the "create new option" button
4039
+ * - `descriptionTemplateRef`: Custom template for additional description content
4040
+ *
4041
+ * ### Example
4042
+ * @example
4043
+ * ```html
4044
+ * <lx-basic-dropdown
4045
+ * [options]="items"
4046
+ * [labelKey]="'name'"
4047
+ * [itemKey]="'id'"
4048
+ * [placeholder]="'Select an item'"
4049
+ * (onItemSelected)="handleSelection($event)">
4050
+ * </lx-basic-dropdown>
4051
+ * ```
4052
+ */
3563
4053
  class BasicDropdownComponent extends KeyboardSelectDirective {
3564
4054
  static isNewItem(items, term, key) {
3565
4055
  if (!term) {
@@ -3574,17 +4064,59 @@ class BasicDropdownComponent extends KeyboardSelectDirective {
3574
4064
  constructor() {
3575
4065
  super();
3576
4066
  this.NAME = 'BasicDropdownComponent';
4067
+ /**
4068
+ * Array of options to display in the dropdown.
4069
+ */
3577
4070
  this.options = [];
4071
+ /**
4072
+ * Index of the option to be selected initially.
4073
+ * @default -1
4074
+ */
3578
4075
  this.initiallySelectedIndex = -1;
4076
+ /**
4077
+ * Whether the dropdown is in a loading state.
4078
+ * @default false
4079
+ */
3579
4080
  this.loading = false;
4081
+ /**
4082
+ * Padding variant for the dropdown items.
4083
+ * @default 'default'
4084
+ */
3580
4085
  this.padding = 'default';
4086
+ /**
4087
+ * Whether to show the "create new option" button.
4088
+ * @default false
4089
+ */
3581
4090
  this.showCreateNewOption = false;
4091
+ /**
4092
+ * Map of disabled options, keyed by the item's unique identifier.
4093
+ */
3582
4094
  this.disabledOptions = {};
4095
+ /**
4096
+ * Whether to use CDK overlay positioning.
4097
+ * @default false
4098
+ */
3583
4099
  this.overlayPositioning = false;
4100
+ /**
4101
+ * Whether to truncate long option text.
4102
+ * @default false
4103
+ */
3584
4104
  this.truncateOptions = false;
4105
+ /**
4106
+ * Event emitted when an option is selected.
4107
+ */
3585
4108
  this.onItemSelected = new EventEmitter();
4109
+ /**
4110
+ * Event emitted when the user scrolls to the bottom, triggering a request for more entries (infinite scroll).
4111
+ */
3586
4112
  this.triggerRequestForMoreEntries = new EventEmitter();
4113
+ /**
4114
+ * Event emitted when a new option label is selected (for creating new items).
4115
+ */
3587
4116
  this.newOptionLabelSelected = new EventEmitter();
4117
+ /**
4118
+ * Event emitted when the "create new option" button is clicked.
4119
+ */
3588
4120
  this.createNewOptionSelected = new EventEmitter();
3589
4121
  this.isTopDropdown = false;
3590
4122
  }
@@ -3761,13 +4293,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3761
4293
  }]
3762
4294
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
3763
4295
 
4296
+ /**
4297
+ * Groups options under a labeled section inside dropdowns.
4298
+ * Used to organize related options within OptionsDropdownComponent, SingleSelectComponent, or MultiSelectComponent.
4299
+ *
4300
+ * ### Projection slots
4301
+ * - Default slot: Option components (`lx-option`) to group together.
4302
+ *
4303
+ * ### Example
4304
+ * @example
4305
+ * ```html
4306
+ * <lx-option-group label="Recent Items" [hasSelectedState]="true">
4307
+ * <lx-option [value]="1">Item 1</lx-option>
4308
+ * <lx-option [value]="2">Item 2</lx-option>
4309
+ * </lx-option-group>
4310
+ * ```
4311
+ */
3764
4312
  class OptionGroupComponent {
3765
4313
  constructor() {
3766
4314
  /**
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'.
4315
+ * Whether option children have a selected state.
4316
+ * When true, aligns the padding of the group label with the options.
4317
+ * @default true
3769
4318
  */
3770
4319
  this.hasSelectedState = true;
4320
+ /**
4321
+ * Event emitted when an option within the group is selected.
4322
+ * Emits the selected option's value.
4323
+ */
3771
4324
  this.select = new EventEmitter();
3772
4325
  }
3773
4326
  selectOption(value) {
@@ -3787,6 +4340,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
3787
4340
  type: Output
3788
4341
  }] } });
3789
4342
 
4343
+ /**
4344
+ * Individual option used inside OptionsDropdownComponent, SingleSelectComponent, or MultiSelectComponent.
4345
+ * Can be used standalone or grouped within an OptionGroupComponent for organized selections.
4346
+ */
3790
4347
  class OptionComponent {
3791
4348
  selectOption(event) {
3792
4349
  if (this.disabled || this.hasSubdropdown) {
@@ -3807,8 +4364,20 @@ class OptionComponent {
3807
4364
  constructor(group, elementRef) {
3808
4365
  this.group = group;
3809
4366
  this.elementRef = elementRef;
4367
+ /**
4368
+ * Whether the option is currently selected.
4369
+ * @default false
4370
+ */
3810
4371
  this.selected = false;
4372
+ /**
4373
+ * Whether the option is currently highlighted (e.g., via keyboard navigation).
4374
+ * @default false
4375
+ */
3811
4376
  this.isHighlighted = false;
4377
+ /**
4378
+ * Whether the option is disabled and cannot be interacted with.
4379
+ * @default false
4380
+ */
3812
4381
  this.disabled = false;
3813
4382
  /**
3814
4383
  * Is true when option has a selection nature like sorting.
@@ -3816,16 +4385,37 @@ class OptionComponent {
3816
4385
  *
3817
4386
  * Is false when option represents a one time action like printing.
3818
4387
  * Cannot have selectedState when Option has dropdown
4388
+ * @default true
3819
4389
  */
3820
4390
  this.hasSelectedState = true;
3821
4391
  /**
4392
+ * The icon used to indicate selection state.
4393
+ * @default 'check'
3822
4394
  * @deprecated Use the default `'check'` value. The `'circle'` option is deprecated and will be removed in a future release.
3823
4395
  */
3824
4396
  this.selectIcon = 'check';
4397
+ /**
4398
+ * Event emitted when the option is selected.
4399
+ * Emits the option's value.
4400
+ */
3825
4401
  this.select = new EventEmitter();
4402
+ /**
4403
+ * Event emitted when the option's highlight state changes.
4404
+ * Emits a boolean indicating the new highlight state.
4405
+ */
3826
4406
  this.highlight = new EventEmitter();
4407
+ /**
4408
+ * Event emitted when an already selected option is clicked.
4409
+ */
3827
4410
  this.selectedClick = new EventEmitter();
4411
+ /**
4412
+ * Event emitted when a keyboard event occurs on the option.
4413
+ * Emits the KeyboardEvent for parent handling.
4414
+ */
3828
4415
  this.keyDownAction = new EventEmitter();
4416
+ /**
4417
+ * Event emitted when the mouse enters the option area.
4418
+ */
3829
4419
  this.mouseEnter = new EventEmitter();
3830
4420
  this.hasSubdropdown = false;
3831
4421
  this.isSuboption = false;
@@ -3915,6 +4505,24 @@ const TOP_RIGHT_POSITION$1 = {
3915
4505
  };
3916
4506
  const LEFT_ALIGN_POSITIONS$1 = [BOTTOM_LEFT_POSITION$1, TOP_LEFT_POSITION$1, BOTTOM_RIGHT_POSITION$1, TOP_RIGHT_POSITION$1];
3917
4507
  const RIGHT_ALIGN_POSITIONS$1 = [BOTTOM_RIGHT_POSITION$1, TOP_RIGHT_POSITION$1, BOTTOM_LEFT_POSITION$1, TOP_LEFT_POSITION$1];
4508
+ /**
4509
+ * A dropdown component using CDK Overlay with keyboard navigation support.
4510
+ * Manages option selection, highlighting, and sub-dropdown interactions.
4511
+ *
4512
+ * ### Projection slots
4513
+ * - `[lxKeyboardActionSource]`: The trigger element (e.g., button) that opens the dropdown.
4514
+ * - Default slot: Dropdown options (`lx-option` components).
4515
+ *
4516
+ * ### Example
4517
+ * @example
4518
+ * ```html
4519
+ * <lx-cdk-options-dropdown [open]="isOpen" align="left" maxHeight="300px">
4520
+ * <button lxKeyboardActionSource>Select Option</button>
4521
+ * <lx-option [value]="1">Option 1</lx-option>
4522
+ * <lx-option [value]="2">Option 2</lx-option>
4523
+ * </lx-cdk-options-dropdown>
4524
+ * ```
4525
+ */
3918
4526
  class CdkOptionsDropdownComponent {
3919
4527
  set open(value) {
3920
4528
  if (this.disabled) {
@@ -3939,9 +4547,25 @@ class CdkOptionsDropdownComponent {
3939
4547
  }
3940
4548
  constructor(changeDetection) {
3941
4549
  this.changeDetection = changeDetection;
4550
+ /**
4551
+ * Horizontal alignment of the dropdown relative to its trigger.
4552
+ * @default 'right'
4553
+ */
3942
4554
  this.align = 'right';
4555
+ /**
4556
+ * Whether to close the dropdown when the window is scrolled.
4557
+ * @default false
4558
+ */
3943
4559
  this.closeOnScroll = false;
4560
+ /**
4561
+ * Whether the dropdown trigger is disabled.
4562
+ * @default false
4563
+ */
3944
4564
  this.disabled = false;
4565
+ /**
4566
+ * Maximum height of the dropdown container. Use 'none' for no limit.
4567
+ * @default 'none'
4568
+ */
3945
4569
  this.maxHeight = 'none';
3946
4570
  this.highlightedOptionIndex$ = new BehaviorSubject(0);
3947
4571
  this._open = false;
@@ -4101,12 +4725,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
4101
4725
  /**
4102
4726
  * @deprecated Use the `ui5-breadcrumbs` instead.
4103
4727
  *
4104
- * Breadcrumb component is used to show a list of labels, usually to show the path of user's navigation.
4728
+ * Breadcrumb component displays a list of labels showing the navigation path.
4729
+ * Supports ellipsing consecutive items into a dropdown for space efficiency.
4730
+ *
4731
+ * ### Example
4732
+ * @example
4733
+ * ```html
4734
+ * <lx-breadcrumb [breadcrumbs]="breadcrumbs"></lx-breadcrumb>
4735
+ * ```
4736
+ *
4737
+ * ```ts
4738
+ * breadcrumbs: Breadcrumb[] = [
4739
+ * { label: 'Home', onClick: (b) => this.navigate(b) },
4740
+ * { label: 'Products', onClick: (b) => this.navigate(b) },
4741
+ * { label: 'Category', ellipsed: true },
4742
+ * { label: 'Subcategory', ellipsed: true },
4743
+ * { label: 'Item Details' }
4744
+ * ];
4745
+ * ```
4105
4746
  */
4106
4747
  class BreadcrumbComponent {
4107
4748
  constructor() {
4108
4749
  /**
4109
- * Breadcrumbs array to build the component.
4750
+ * Array of breadcrumb items to display. Consecutive items with `ellipsed: true` are grouped into a dropdown.
4751
+ * @default []
4110
4752
  */
4111
4753
  this.breadcrumbs = [];
4112
4754
  /** @internal */
@@ -4179,9 +4821,29 @@ const TOP_RIGHT_POSITION = {
4179
4821
  };
4180
4822
  const LEFT_ALIGN_POSITIONS = [BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION, BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION];
4181
4823
  const RIGHT_ALIGN_POSITIONS = [BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION, BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION];
4824
+ /**
4825
+ * A nested sub-dropdown that appears next to a parent option.
4826
+ * Opens on hover or keyboard navigation and supports both mouse and keyboard interactions.
4827
+ *
4828
+ * ### Projection slots
4829
+ * - Default slot: Nested dropdown options (`lx-option` components).
4830
+ *
4831
+ * ### Example
4832
+ * @example
4833
+ * ```html
4834
+ * <lx-cdk-options-sub-dropdown [trigger]="parentOption" align="right">
4835
+ * <lx-option [value]="1">Sub-option 1</lx-option>
4836
+ * <lx-option [value]="2">Sub-option 2</lx-option>
4837
+ * </lx-cdk-options-sub-dropdown>
4838
+ * ```
4839
+ */
4182
4840
  class CdkOptionsSubDropdownComponent {
4183
4841
  constructor(changeDetection) {
4184
4842
  this.changeDetection = changeDetection;
4843
+ /**
4844
+ * Horizontal alignment of the sub-dropdown relative to the trigger option.
4845
+ * @default 'right'
4846
+ */
4185
4847
  this.align = 'right';
4186
4848
  this.open = false;
4187
4849
  this.isPositionComputed = true;
@@ -4412,6 +5074,18 @@ const CURRENCY_SYMBOL_MAP = {
4412
5074
  ZWD: 'ZWD'
4413
5075
  };
4414
5076
 
5077
+ /**
5078
+ * Displays a currency symbol based on an ISO currency code.
5079
+ *
5080
+ * Converts currency codes (e.g., 'USD', 'EUR') to their symbolic representations ($, €).
5081
+ *
5082
+ * ### Example
5083
+ * @example
5084
+ * ```html
5085
+ * <lx-currency-symbol [code]="'USD'"></lx-currency-symbol>
5086
+ * <lx-currency-symbol [code]="'EUR'"></lx-currency-symbol>
5087
+ * ```
5088
+ */
4415
5089
  class CurrencySymbolComponent {
4416
5090
  ngOnInit() {
4417
5091
  this.currency$ = this.code$.pipe(map((code) => CURRENCY_SYMBOL_MAP[code] || code));
@@ -4429,20 +5103,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
4429
5103
  type: Input
4430
5104
  }], code$: [] } });
4431
5105
 
5106
+ /**
5107
+ * Currency input field with locale-aware formatting and validation.
5108
+ *
5109
+ * Supports both view and edit modes with configurable currency symbols, decimal separators, and number types.
5110
+ *
5111
+ * ### Example
5112
+ * @example
5113
+ * ```html
5114
+ * <lx-currency-input
5115
+ * [code]="'USD'"
5116
+ * [data]="1234.56"
5117
+ * [mode]="'edit'"
5118
+ * [fieldDefinitionType]="'DOUBLE'"
5119
+ * [decimalSeparator]="'.'"
5120
+ * [iconPosition]="'first'"
5121
+ * (onChange)="handleValueChange($event)"
5122
+ * ></lx-currency-input>
5123
+ * ```
5124
+ */
4432
5125
  class CurrencyInputComponent {
4433
5126
  get allowedCharacters() {
4434
5127
  return this.fieldDefinitionType === 'DOUBLE' ? new RegExp(`[0-9\e\\${this.decimalSeparator}\]`) : /[0-9\e\\]/;
4435
5128
  }
4436
5129
  constructor(changeDetector) {
4437
5130
  this.changeDetector = changeDetector;
5131
+ /**
5132
+ * Character used as decimal separator in input.
5133
+ * @default '.'
5134
+ */
4438
5135
  this.decimalSeparator = '.';
5136
+ /**
5137
+ * The numeric value of the input.
5138
+ * @default 0
5139
+ */
4439
5140
  this.data = 0;
5141
+ /**
5142
+ * Whether the input is disabled.
5143
+ * @default false
5144
+ */
4440
5145
  this.disabled = false;
5146
+ /**
5147
+ * Display mode of the component.
5148
+ * @default 'edit'
5149
+ */
4441
5150
  this.mode = 'edit';
5151
+ /**
5152
+ * Position of the currency symbol relative to the value.
5153
+ * @default 'first'
5154
+ */
4442
5155
  this.iconPosition = 'first';
5156
+ /**
5157
+ * Angular decimal pipe format string.
5158
+ * @default '1.2-2'
5159
+ */
4443
5160
  this.format = '1.2-2';
5161
+ /**
5162
+ * Whether to visually mark the input as invalid.
5163
+ * @default false
5164
+ */
4444
5165
  this.markInvalid = false;
5166
+ /** Emitted when the input loses focus. */
4445
5167
  this.onFocusLost = new EventEmitter();
5168
+ /** Emitted when the numeric value changes. */
4446
5169
  this.onChange = new EventEmitter();
4447
5170
  /** @internal */
4448
5171
  this.showCurrencyInput = false;
@@ -4622,10 +5345,22 @@ class DateFormatter {
4622
5345
  }
4623
5346
 
4624
5347
  /* tslint:disable: max-file-line-count */
5348
+ /**
5349
+ * Core datepicker component managing date selection logic.
5350
+ *
5351
+ * Provides the underlying logic for day, month, and year selection modes.
5352
+ * Used internally by DatePickerComponent.
5353
+ *
5354
+ * ### Projection slots
5355
+ * - Default slot: Child picker components (daypicker, monthpicker, yearpicker).
5356
+ */
4625
5357
  class DatePickerInnerComponent {
4626
5358
  constructor() {
5359
+ /** Emitted when a date is selected. */
4627
5360
  this.selectionDone = new EventEmitter(undefined);
5361
+ /** Emitted when active date is updated. */
4628
5362
  this.update = new EventEmitter(false);
5363
+ /** Emitted when active date changes. */
4629
5364
  this.activeDateChange = new EventEmitter(undefined);
4630
5365
  /* tslint:disable-next-line: no-any*/
4631
5366
  this.stepDay = {};
@@ -4933,6 +5668,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
4933
5668
 
4934
5669
  const isBs3 = () => true;
4935
5670
 
5671
+ /**
5672
+ * Day selection view for the datepicker.
5673
+ *
5674
+ * Displays a calendar grid for selecting individual days within a month.
5675
+ * Used internally by DatePickerInnerComponent.
5676
+ */
4936
5677
  class DayPickerComponent {
4937
5678
  constructor(datePicker) {
4938
5679
  this.labels = [];
@@ -5233,6 +5974,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
5233
5974
  `, 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
5975
  }], ctorParameters: () => [{ type: DatePickerInnerComponent }] });
5235
5976
 
5977
+ /**
5978
+ * Month selection view for the datepicker.
5979
+ *
5980
+ * Displays a grid of months for selecting a month within a year.
5981
+ * Used internally by DatePickerInnerComponent.
5982
+ */
5236
5983
  class MonthPickerComponent {
5237
5984
  constructor(datePicker) {
5238
5985
  this.rows = [];
@@ -5397,6 +6144,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
5397
6144
 
5398
6145
  // @deprecated
5399
6146
  // tslint:disable
6147
+ /**
6148
+ * Year selection view for the datepicker.
6149
+ *
6150
+ * Displays a grid of years for selecting a year within a range.
6151
+ * Used internally by DatePickerInnerComponent.
6152
+ */
5400
6153
  class YearPickerComponent {
5401
6154
  constructor(datePicker) {
5402
6155
  this.rows = [];
@@ -5788,74 +6541,176 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
5788
6541
  const DEFAULT_MIN_DATE = new Date('0000-01-01');
5789
6542
  const DEFAULT_MAX_DATE = new Date('9999-12-31');
5790
6543
  /**
5791
- * This is a date input component that can be used to select a date.
6544
+ * Date input with integrated datepicker dropdown.
6545
+ *
6546
+ * Supports multiple rendering styles (input, link, button) and flexible date range restrictions.
6547
+ *
6548
+ * ### Projection slots
6549
+ * - `dateStringTemplate`: Custom template for displaying the date string when `renderingStyle` is 'BUTTON'.
6550
+ *
6551
+ * ### Example
6552
+ * @example
6553
+ * ```html
6554
+ * <lx-date-input
6555
+ * [(date)]="selectedDate"
6556
+ * [minDate]="minDate"
6557
+ * [maxDate]="maxDate"
6558
+ * [renderingStyle]="'INPUT'"
6559
+ * [placeholder]="'Select a date'"
6560
+ * (dateChange)="onDateSelected($event)"
6561
+ * ></lx-date-input>
6562
+ * ```
5792
6563
  */
5793
6564
  class DateInputComponent {
5794
6565
  constructor(cd, dateFormatsProvider, getDateFnLocale) {
5795
6566
  this.cd = cd;
5796
6567
  this.dateFormatsProvider = dateFormatsProvider;
5797
6568
  this.getDateFnLocale = getDateFnLocale;
5798
- /** The initial date value for the date input field. This is used for `ngModel` and `formControl`. */
6569
+ /**
6570
+ * The initial date value for the date input field. This is used for `ngModel` and `formControl`.
6571
+ * @default null
6572
+ */
5799
6573
  this.date = null;
5800
- /** Secondary, alternative input with date string */
6574
+ /**
6575
+ * Secondary, alternative input with date string (format: 'yyyy-mm-dd').
6576
+ * @default null
6577
+ */
5801
6578
  this.dateString = null;
5802
- /** Determine whether formGroup's value accessor is accessing the selected IDs or the selected objects */
6579
+ /**
6580
+ * Determines whether formGroup's value accessor uses Date objects or date strings.
6581
+ * @default 'date'
6582
+ */
5803
6583
  this.valueAccessor = 'date';
5804
- /** ID to be set on input to correspond to outside label */
6584
+ /**
6585
+ * ID to be set on input to correspond to outside label.
6586
+ * @default ''
6587
+ */
5805
6588
  this.inputId = '';
5806
- /** The rendering style of the date input component. Can be one of "LINK", "BUTTON", or "INPUT". */
6589
+ /**
6590
+ * The rendering style of the date input component.
6591
+ * @default 'INPUT'
6592
+ */
5807
6593
  this.renderingStyle = 'INPUT';
5808
- /** The placeholder text to show in the date input field when there is no date selected */
6594
+ /**
6595
+ * The placeholder text to show in the date input field when there is no date selected.
6596
+ * @default 'yyyy-mm-dd'
6597
+ */
5809
6598
  this.placeholder = 'yyyy-mm-dd';
5810
- /** Deactivate to use old date picker */
6599
+ /**
6600
+ * Use CDK overlay for datepicker positioning. Set to false to use legacy positioning.
6601
+ * @default true
6602
+ */
5811
6603
  this.cdk = true;
5812
- /** Sets datepicker mode, supports: day, month, year */
6604
+ /**
6605
+ * Sets datepicker mode, supports: 'day', 'month', 'year'.
6606
+ * @default 'day'
6607
+ */
5813
6608
  this.datepickerMode = 'day';
5814
- /** Oldest selectable date */
6609
+ /**
6610
+ * Oldest selectable date.
6611
+ * @default new Date('0000-01-01')
6612
+ */
5815
6613
  this.minDate = DEFAULT_MIN_DATE;
5816
- /** Latest selectable date */
6614
+ /**
6615
+ * Latest selectable date.
6616
+ * @default new Date('9999-12-31')
6617
+ */
5817
6618
  this.maxDate = DEFAULT_MAX_DATE;
5818
- /** Set lower datepicker mode, supports: day, month, year */
6619
+ /**
6620
+ * Set lower datepicker mode, supports: 'day', 'month', 'year'.
6621
+ * @default 'day'
6622
+ */
5819
6623
  this.minMode = 'day';
5820
- /** Sets upper datepicker mode, supports: day, month, year */
6624
+ /**
6625
+ * Sets upper datepicker mode, supports: 'day', 'month', 'year'.
6626
+ * @default 'year'
6627
+ */
5821
6628
  this.maxMode = 'year';
5822
- /** If false week numbers will be hidden */
6629
+ /**
6630
+ * If false week numbers will be hidden in day picker.
6631
+ * @default true
6632
+ */
5823
6633
  this.showWeeks = true;
5824
- /** Format of day in month */
6634
+ /**
6635
+ * Format of day in month (date-fns format).
6636
+ * @default 'dd'
6637
+ */
5825
6638
  this.formatDay = 'dd';
5826
- /** Format of month in year */
6639
+ /**
6640
+ * Format of month in year (date-fns format).
6641
+ * @default 'MMMM'
6642
+ */
5827
6643
  this.formatMonth = 'MMMM';
5828
- /** Format of year in year range */
6644
+ /**
6645
+ * Format of year in year range (date-fns format).
6646
+ * @default 'yyyy'
6647
+ */
5829
6648
  this.formatYear = 'yyyy';
5830
- /** Format of day in week header */
6649
+ /**
6650
+ * Format of day in week header (date-fns format).
6651
+ * @default 'EE'
6652
+ */
5831
6653
  this.formatDayHeader = 'EE';
5832
- /** Format of title when selecting day */
6654
+ /**
6655
+ * Format of title when selecting day (date-fns format).
6656
+ * @default 'MMMM yyyy'
6657
+ */
5833
6658
  this.formatDayTitle = 'MMMM yyyy';
5834
- /** Format of title when selecting month */
6659
+ /**
6660
+ * Format of title when selecting month (date-fns format).
6661
+ * @default 'yyyy'
6662
+ */
5835
6663
  this.formatMonthTitle = 'yyyy';
5836
- /** Starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) public */
6664
+ /**
6665
+ * Starting day of the week from 0-6 (0=Sunday, 6=Saturday).
6666
+ * @default 0
6667
+ */
5837
6668
  this.startingDay = 0;
5838
- /** Number of years displayed in year selection */
6669
+ /**
6670
+ * Number of years displayed in year selection.
6671
+ * @default 20
6672
+ */
5839
6673
  this.yearRange = 20;
5840
- /** If true only dates from the currently displayed month will be shown */
6674
+ /**
6675
+ * If true only dates from the currently displayed month will be shown.
6676
+ * @default false
6677
+ */
5841
6678
  this.onlyCurrentMonth = false;
5842
- /** If true shortcut`s event propagation will be disabled */
6679
+ /**
6680
+ * If true shortcut event propagation will be disabled.
6681
+ * @default false
6682
+ */
5843
6683
  this.shortcutPropagation = false;
5844
- /** Array of custom css classes to be applied to */
6684
+ /**
6685
+ * Array of custom css classes to be applied to specific dates.
6686
+ * @default []
6687
+ */
5845
6688
  this.customClass = [];
5846
- /** Array of disabled dates if mode is day, or years, etc. */
6689
+ /**
6690
+ * Array of disabled dates with mode specification.
6691
+ * @default []
6692
+ */
5847
6693
  this.dateDisabled = [];
5848
- /** If true, the date input field will be auto-focused when the component is first rendered. */
6694
+ /**
6695
+ * If true, the date input field will be auto-focused when the component is first rendered.
6696
+ * @default false
6697
+ */
5849
6698
  this.autoFocus = false;
5850
- /** If true, the date input field will be marked as invalid. */
6699
+ /**
6700
+ * If true, the date input field will be marked as invalid.
6701
+ * @default false
6702
+ */
5851
6703
  this.markInvalid = false;
5852
- /** Also emit on invalid date string */
6704
+ /**
6705
+ * Also emit dateStringChange on invalid date string.
6706
+ * @default false
6707
+ */
5853
6708
  this.alwaysEmitDateString = false;
5854
- /** Triggered whenever the datepicker is closed */
6709
+ /** Emitted whenever the datepicker is closed. */
5855
6710
  this.closeDateInput = new EventEmitter();
5856
- /** Triggered whenever the date changes */
6711
+ /** Emitted whenever the date string changes. */
5857
6712
  this.dateStringChange = new EventEmitter();
5858
- /** Triggered whenever the date changes. */
6713
+ /** Emitted whenever the date changes. */
5859
6714
  this.dateChange = new EventEmitter();
5860
6715
  /** @internal */
5861
6716
  this.showDatepicker = false;
@@ -6138,6 +6993,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6138
6993
  }]
6139
6994
  }] });
6140
6995
 
6996
+ /**
6997
+ * Individual item within a drag-and-drop list.
6998
+ *
6999
+ * Supports custom templates and optional action buttons.
7000
+ *
7001
+ * ### Projection slots
7002
+ * - `customTemplate`: Custom template for the item content. If not provided, displays the item string with a drag handle.
7003
+ *
7004
+ * ### Example
7005
+ * @example
7006
+ * ```html
7007
+ * <lx-drag-and-drop-list-item
7008
+ * [item]="'Task 1'"
7009
+ * [draggable]="true"
7010
+ * [actions]="[{ id: 'delete', label: 'Delete', icon: 'delete', showOnlyOnHover: true }]"
7011
+ * (action)="handleAction($event)"
7012
+ * ></lx-drag-and-drop-list-item>
7013
+ * ```
7014
+ */
6141
7015
  class DragAndDropListItemComponent {
6142
7016
  get draggingDisabled() {
6143
7017
  return !this.draggable;
@@ -6148,7 +7022,12 @@ class DragAndDropListItemComponent {
6148
7022
  constructor(element) {
6149
7023
  this.element = element;
6150
7024
  this.NAME = 'DragAndDropListItemComponent';
7025
+ /**
7026
+ * Whether the item can be dragged.
7027
+ * @default true
7028
+ */
6151
7029
  this.draggable = true;
7030
+ /** Emitted when an action button is clicked. */
6152
7031
  this.action = new EventEmitter();
6153
7032
  this.customTemplateRef = null;
6154
7033
  }
@@ -6343,21 +7222,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6343
7222
  type: Input
6344
7223
  }] } });
6345
7224
 
7225
+ /**
7226
+ * Sortable list with drag-and-drop and keyboard navigation support.
7227
+ *
7228
+ * Items can be reordered via mouse drag or keyboard controls (Arrow keys, Space).
7229
+ *
7230
+ * ### Example
7231
+ * @example
7232
+ * ```html
7233
+ * <lx-drag-and-drop-list
7234
+ * [label]="'My Tasks'"
7235
+ * (moveToIndex)="handleReorder($event)"
7236
+ * >
7237
+ * @for (task of tasks; track $index) {
7238
+ * <lx-drag-and-drop-list-item
7239
+ * [item]="task.name"
7240
+ * [draggable]="true"
7241
+ * />
7242
+ * }
7243
+ * </lx-drag-and-drop-list>
7244
+ * ```
7245
+ */
6346
7246
  class DragAndDropListComponent {
6347
7247
  constructor() {
6348
7248
  /** @internal */
6349
7249
  this.NAME = DRAG_AND_DROP_LIST_TRANSLATION_NAME;
6350
7250
  /**
6351
- * Override the global label font weight of 700
7251
+ * Override the global label font weight.
7252
+ * @default 700
6352
7253
  */
6353
7254
  this.labelFontWeight = 700;
7255
+ /**
7256
+ * Color theme of the list items.
7257
+ * @default 'light'
7258
+ */
6354
7259
  this.color = 'light';
7260
+ /**
7261
+ * Font size of the list items.
7262
+ * @default 'normal'
7263
+ */
6355
7264
  this.fontSize = 'normal';
6356
7265
  /**
6357
- * Use the moveToIndex Output in favor of moveItem,
6358
- * when moving is restricted to one item through this.draggableItem.
7266
+ * Emitted when an item is moved, providing the new and previous index.
7267
+ * Use this when you need index-based reordering.
6359
7268
  */
6360
7269
  this.moveToIndex = new EventEmitter();
7270
+ /**
7271
+ * Emitted when an item is moved, providing the item data and new index.
7272
+ */
6361
7273
  this.moveItem = new EventEmitter();
6362
7274
  /**
6363
7275
  * TODO: extract state about keyboard sorting into KeyboardSortableListDirective
@@ -6475,8 +7387,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6475
7387
  }]
6476
7388
  }] });
6477
7389
 
7390
+ /**
7391
+ * Displays form validation error messages.
7392
+ *
7393
+ * Shows either projected content or a programmatically set error message.
7394
+ *
7395
+ * ### Projection slots
7396
+ * - Default slot: Static error message text. Hidden but captured for display.
7397
+ *
7398
+ * ### Example
7399
+ * @example
7400
+ * ```html
7401
+ * <lx-error-message>This field is required</lx-error-message>
7402
+ * ```
7403
+ */
6478
7404
  class ErrorMessageComponent {
6479
7405
  constructor() {
7406
+ /** Signal for setting error message programmatically. */
6480
7407
  this.dynamicErrorMessage = signal('');
6481
7408
  this.wrapper = viewChild.required('contentWrapper');
6482
7409
  this.computedErrorMessage = computed(() => this.dynamicErrorMessage() || this.wrapper().nativeElement.innerText);
@@ -6489,6 +7416,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6489
7416
  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
7417
  }] });
6491
7418
 
7419
+ /**
7420
+ * Displays translated form validation errors for a specific form control.
7421
+ *
7422
+ * Automatically updates when form errors change.
7423
+ *
7424
+ * ### Example
7425
+ * @example
7426
+ * ```html
7427
+ * <lx-form-error
7428
+ * [form]="myFormGroup"
7429
+ * [controlName]="'email'"
7430
+ * [namespace]="'USER_FORM'"
7431
+ * ></lx-form-error>
7432
+ * ```
7433
+ */
6492
7434
  class FormErrorComponent {
6493
7435
  constructor() {
6494
7436
  /** @internal */
@@ -6532,10 +7474,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6532
7474
  type: Input
6533
7475
  }] } });
6534
7476
 
7477
+ /**
7478
+ * A directive applied to native `<input>` elements to provide consistent styling and automatic error state handling.
7479
+ * Integrates with Angular's `NgControl` to automatically apply error and disabled classes based on form control state.
7480
+ * The directive listens to form control status changes and updates the visual state accordingly.
7481
+ *
7482
+ * ### Example
7483
+ * @example
7484
+ * ```html
7485
+ * <input lx-input type="text" [formControl]="nameControl" />
7486
+ * ```
7487
+ *
7488
+ * ### Example
7489
+ * @example
7490
+ * ```html
7491
+ * <input lx-input type="email" [error]="true" [disabled]="false" />
7492
+ * ```
7493
+ */
6535
7494
  class InputComponent {
6536
7495
  constructor(ngControl) {
6537
7496
  this.ngControl = ngControl;
7497
+ /**
7498
+ * Whether to display the input in an error state (applies 'error' CSS class).
7499
+ * Automatically updated when used with `NgControl` based on validation state.
7500
+ * @default false
7501
+ */
6538
7502
  this.error = false;
7503
+ /**
7504
+ * Whether the input is disabled (applies 'disabled' CSS class).
7505
+ * Automatically updated when used with `NgControl` based on control state.
7506
+ * @default false
7507
+ */
6539
7508
  this.disabled = false;
6540
7509
  this.destroyed$ = new Subject();
6541
7510
  }
@@ -6780,10 +7749,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6780
7749
  args: [KeyboardSelectDirective, { static: false, descendants: true }]
6781
7750
  }] } });
6782
7751
 
7752
+ /**
7753
+ * Input that dynamically adjusts its width based on content length.
7754
+ *
7755
+ * Useful for inline editing or space-constrained layouts.
7756
+ *
7757
+ * ### Example
7758
+ * @example
7759
+ * ```html
7760
+ * <lx-responsive-input
7761
+ * [(ngModel)]="searchTerm"
7762
+ * [inputId]="'search'"
7763
+ * (focus)="onFocus()"
7764
+ * (blur)="onBlur()"
7765
+ * ></lx-responsive-input>
7766
+ * ```
7767
+ */
6783
7768
  class ResponsiveInputComponent {
6784
7769
  constructor() {
7770
+ /** Emitted when the input receives focus. */
6785
7771
  this.focus = new EventEmitter();
7772
+ /** Emitted when the input receives focus via Tab key. */
6786
7773
  this.focusViaTab = new EventEmitter();
7774
+ /** Emitted when the input loses focus. */
6787
7775
  this.blur = new EventEmitter();
6788
7776
  this.inputWidth$ = new BehaviorSubject('1px');
6789
7777
  this.inputControl = new UntypedFormControl();
@@ -6874,11 +7862,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6874
7862
  args: ['inputWidth', { static: true }]
6875
7863
  }] } });
6876
7864
 
7865
+ /**
7866
+ * Displays selected items in a multi-select component.
7867
+ *
7868
+ * Items can be rendered as tokens or custom templates.
7869
+ *
7870
+ * ### Projection slots
7871
+ * - `innerSelectionTemplate`: Custom template for rendering each selected item.
7872
+ *
7873
+ * ### Example
7874
+ * @example
7875
+ * ```html
7876
+ * <lx-multi-select-selection
7877
+ * [selection]="selectedItems"
7878
+ * [tokenize]="true"
7879
+ * (removeItem)="handleRemove($event)"
7880
+ * >
7881
+ * <ng-template #innerSelectionTemplate let-item>
7882
+ * {{ item.name }}
7883
+ * </ng-template>
7884
+ * </lx-multi-select-selection>
7885
+ * ```
7886
+ */
6877
7887
  class MultiSelectSelectionComponent extends KeyboardSelectDirective {
6878
7888
  constructor() {
6879
7889
  super(...arguments);
7890
+ /**
7891
+ * Array of selected items to display.
7892
+ */
6880
7893
  this.selection = input();
7894
+ /**
7895
+ * Whether to render items as tokens (pills).
7896
+ * @default true
7897
+ */
6881
7898
  this.tokenize = input(true);
7899
+ /** Emitted when an item is clicked for removal. */
6882
7900
  this.removeItem = new EventEmitter();
6883
7901
  this.selectionTemplate = null;
6884
7902
  }
@@ -6895,6 +7913,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
6895
7913
  args: ['innerSelectionTemplate', { read: TemplateRef, static: true }]
6896
7914
  }] } });
6897
7915
 
7916
+ /**
7917
+ * A dropdown component for selecting multiple values from a list of options.
7918
+ * Implements `ControlValueAccessor` for seamless integration with Angular reactive forms.
7919
+ * Supports keyboard navigation, custom templates, and various sizing options.
7920
+ *
7921
+ * ### Projection slots
7922
+ * - `.pills`: Contains the pill list for selected items (`lx-pill-list`).
7923
+ * The pill list shows removable pills for each selected item.
7924
+ * Use `lx-pill-item` inside a `#pillTemplate` for custom pill rendering.
7925
+ * - `.dropdownComponent`: Contains the dropdown (`lx-basic-dropdown`)
7926
+ *
7927
+ * Alternatively, use `lxSelectDropdown` directive on `<ng-template>` for the dropdown,
7928
+ * and `#selectionTemplate` on `<ng-template>` for tokenized selection display.
7929
+ *
7930
+ * ### Example — with pill list and basic dropdown
7931
+ * @example
7932
+ * ```html
7933
+ * <lx-multi-select
7934
+ * #multiSelect
7935
+ * [(selection)]="selectedItems"
7936
+ * (query)="searchTerm = $event">
7937
+ * <lx-pill-list
7938
+ * class="pills"
7939
+ * [keyboardSelectAction]="multiSelect.selectionKeyboardSelectAction$"
7940
+ * [pills]="selectedItems"
7941
+ * labelKey="name"
7942
+ * itemKey="id"
7943
+ * (remove)="multiSelect.removeItem($event)">
7944
+ * </lx-pill-list>
7945
+ * <lx-basic-dropdown
7946
+ * class="dropdownComponent"
7947
+ * [keyboardSelectAction]="multiSelect.optionsKeyboardSelectAction$"
7948
+ * [options]="options | lxFilterBySelection: selectedItems | lxFilterByTerm: { term: searchTerm }"
7949
+ * labelKey="name"
7950
+ * (onItemSelected)="multiSelect.addItemToSelection($event)">
7951
+ * </lx-basic-dropdown>
7952
+ * </lx-multi-select>
7953
+ * ```
7954
+ *
7955
+ * ### Example — with custom pill template
7956
+ * @example
7957
+ * ```html
7958
+ * <lx-multi-select #multiSelect [(selection)]="selectedItems">
7959
+ * <lx-pill-list
7960
+ * class="pills"
7961
+ * [keyboardSelectAction]="multiSelect.selectionKeyboardSelectAction$"
7962
+ * [pills]="selectedItems"
7963
+ * itemKey="id"
7964
+ * (remove)="multiSelect.removeItem($event)">
7965
+ * <ng-template #pillTemplate let-pill>
7966
+ * <lx-pill-item [label]="pill.name" [item]="pill" [class.readOnly]="pill.readOnly" />
7967
+ * </ng-template>
7968
+ * </lx-pill-list>
7969
+ * <!-- dropdown omitted for brevity -->
7970
+ * </lx-multi-select>
7971
+ * ```
7972
+ */
6898
7973
  class MultiSelectComponent extends BaseSelectDirective {
6899
7974
  /** @internal */
6900
7975
  static isStillPossibleMoveToLeft(eventSet) {
@@ -6950,11 +8025,31 @@ class MultiSelectComponent extends BaseSelectDirective {
6950
8025
  constructor(cd) {
6951
8026
  super();
6952
8027
  this.cd = cd;
8028
+ /**
8029
+ * Whether to visually mark the input as invalid.
8030
+ */
6953
8031
  this.markInvalid = false;
8032
+ /**
8033
+ * Array of currently selected items.
8034
+ */
6954
8035
  this.selection = [];
8036
+ /**
8037
+ * Visual size variant of the multi-select component.
8038
+ * @default 'default'
8039
+ */
6955
8040
  this.size = 'default';
8041
+ /**
8042
+ * Whether pressing Tab should close the dropdown.
8043
+ * @default true
8044
+ */
6956
8045
  this.closeDropdownOnTab = true;
8046
+ /**
8047
+ * Event emitted when the selection changes.
8048
+ */
6957
8049
  this.selectionChange = new EventEmitter();
8050
+ /**
8051
+ * Event emitted when the input loses focus.
8052
+ */
6958
8053
  this.blur = new EventEmitter();
6959
8054
  /** @internal */
6960
8055
  this.destroyed$ = new Subject();
@@ -7211,23 +8306,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
7211
8306
  }] } });
7212
8307
 
7213
8308
  /**
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`.
8309
+ * Dropdown component that displays options grouped by categories.
8310
+ * Supports keyboard navigation, infinite scroll, custom templates, and creating new options.
8311
+ * Used standalone or with SingleSelectComponent/MultiSelectComponent.
8312
+ *
8313
+ * ### Projection slots
8314
+ * - `optionTemplate`: Template for custom option rendering (context: `$implicit`, `index`, `groupIndex`).
8315
+ * - `noResultsOptionTemplateRef`: Template for custom "no results" message (context: `group`, `groupIndex`).
8316
+ *
8317
+ * ### Example
8318
+ * @example
8319
+ * ```html
8320
+ * <lx-option-group-dropdown
8321
+ * [optionGroups]="groups"
8322
+ * [highlightTerm]="searchTerm"
8323
+ * (onItemSelected)="handleSelection($event)">
8324
+ * <ng-template #optionTemplate let-option>
8325
+ * <span>{{ option.label }}</span>
8326
+ * </ng-template>
8327
+ * </lx-option-group-dropdown>
8328
+ * ```
7217
8329
  */
7218
8330
  class OptionGroupDropdownComponent extends KeyboardSelectDirective {
7219
8331
  constructor() {
7220
8332
  super(...arguments);
7221
8333
  /** @internal */
7222
8334
  this.NAME = 'OptionGroupDropdownComponent';
8335
+ /**
8336
+ * Array of option groups to display in the dropdown.
8337
+ * @default []
8338
+ */
7223
8339
  this.optionGroups = [];
8340
+ /**
8341
+ * Whether to show a "create new option" entry at the top of the dropdown.
8342
+ * @default false
8343
+ */
7224
8344
  this.showCreateNewOption = false;
8345
+ /**
8346
+ * Property name to use as the label for each option.
8347
+ * @default 'label'
8348
+ */
7225
8349
  this.labelKey = 'label';
8350
+ /**
8351
+ * Whether the dropdown is in a loading state.
8352
+ * @default false
8353
+ */
7226
8354
  this.loading = false;
8355
+ /**
8356
+ * Whether to show "no results" message when a group has no options.
8357
+ * @default false
8358
+ */
7227
8359
  this.showNoResultsIfGroupIsEmpty = false;
8360
+ /**
8361
+ * Whether to use CDK overlay positioning for the dropdown.
8362
+ * @default false
8363
+ */
7228
8364
  this.overlayPositioning = false;
8365
+ /** Event emitted when an option is selected. */
7229
8366
  this.onItemSelected = new EventEmitter();
8367
+ /** Event emitted when the dropdown container is scrolled (for infinite scroll). */
7230
8368
  this.containerScrolled = new EventEmitter();
8369
+ /** Event emitted when the user requests to create a new option. */
7231
8370
  this.createNewOption = new EventEmitter();
7232
8371
  /** @internal */
7233
8372
  this.isTopDropdown = false;
@@ -7317,6 +8456,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
7317
8456
  args: ['selectOrigin', { static: false }]
7318
8457
  }] } });
7319
8458
 
8459
+ /**
8460
+ * A dropdown component that displays a list of selectable options.
8461
+ * The dropdown opens when triggered and provides keyboard navigation support for accessible option selection.
8462
+ * It supports nested option groups and sub-dropdowns with full ARIA compliance.
8463
+ *
8464
+ * ### Projection slots
8465
+ * - Default (trigger): The button or element that triggers the dropdown (must have `lxKeyboardActionSource` directive)
8466
+ * - `lx-option`: Individual selectable options within the dropdown
8467
+ * - `lx-option-group`: Optional groups of options with labels
8468
+ *
8469
+ * ### Example
8470
+ * @example
8471
+ * ```html
8472
+ * <lx-options-dropdown [disabled]="disabled" [maxHeight]="maxHeight">
8473
+ * <button lxKeyboardActionSource lx-button [disabled]="disabled" endIcon="slim-arrow-down">
8474
+ * <span>{{ activeView?.label }}</span>
8475
+ * </button>
8476
+ * @for (viewGroup of viewGroups; track viewGroup.groupKey) {
8477
+ * <lx-option-group [label]="'viewGroups.' + viewGroup.groupKey | translate">
8478
+ * @for (view of viewGroup.views; track view.key) {
8479
+ * <lx-option
8480
+ * [selected]="view === activeView"
8481
+ * (select)="applyView.emit(view.key)"
8482
+ * >{{ view.label }}</lx-option>
8483
+ * }
8484
+ * </lx-option-group>
8485
+ * }
8486
+ * </lx-options-dropdown>
8487
+ * ```
8488
+ */
7320
8489
  class OptionsDropdownComponent {
7321
8490
  /** @internal */
7322
8491
  get displayStyle() {
@@ -7381,18 +8550,61 @@ class OptionsDropdownComponent {
7381
8550
  this.renderer = renderer;
7382
8551
  /** @internal */
7383
8552
  this.NAME = 'OptionsDropdownComponent';
8553
+ /**
8554
+ * The alignment of the dropdown relative to the trigger element.
8555
+ * @default 'right'
8556
+ */
7384
8557
  this.align = 'right';
8558
+ /**
8559
+ * Whether the dropdown should close when the page is scrolled.
8560
+ * @default false
8561
+ */
7385
8562
  this.closeOnScroll = false;
8563
+ /**
8564
+ * Whether the dropdown is disabled and cannot be opened.
8565
+ * @default false
8566
+ */
7386
8567
  this.disabled = false;
8568
+ /**
8569
+ * The maximum height of the dropdown. Can be any valid CSS height value.
8570
+ * @default 'none'
8571
+ */
7387
8572
  this.maxHeight = 'none';
8573
+ /**
8574
+ * Whether the dropdown should close automatically when an option is selected.
8575
+ * @default true
8576
+ */
7388
8577
  this.closeOnSelect = true;
8578
+ /**
8579
+ * Whether to enable advanced overlay positioning using CDK overlay.
8580
+ * Use when the dropdown is wider than its trigger or positioned near a viewport edge —
8581
+ * enables CDK overlay positioning with automatic boundary detection to prevent off-screen clipping
8582
+ * @default false
8583
+ */
7389
8584
  this.overlayPositioning = false;
8585
+ /**
8586
+ * Additional CSS class to apply to the dropdown overlay.
8587
+ * @default ''
8588
+ */
7390
8589
  this.dropdownClass = '';
8590
+ /**
8591
+ * Whether the trigger container should use display flex instead of inline-block.
8592
+ * @default false
8593
+ */
7391
8594
  this.isFlexEnabledTriggerContainer = false;
7392
8595
  /** @internal */
7393
8596
  this.overlayScrollStrategy = this.closeOnScroll ? this.scrollStrategies.close() : this.scrollStrategies.reposition();
8597
+ /**
8598
+ * Event emitted when the dropdown is opened.
8599
+ */
7394
8600
  this.opened = new EventEmitter();
8601
+ /**
8602
+ * Event emitted when the dropdown is closed for any reason.
8603
+ */
7395
8604
  this.closed = new EventEmitter();
8605
+ /**
8606
+ * Event emitted when the dropdown is closed without an option being selected (e.g., by pressing Escape or clicking outside).
8607
+ */
7396
8608
  this.closedWithoutSelection = new EventEmitter();
7397
8609
  this.highlightedOptionIndex$ = new BehaviorSubject(0);
7398
8610
  this._open = false;
@@ -7611,9 +8823,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
7611
8823
  args: ['style.display']
7612
8824
  }] } });
7613
8825
 
8826
+ /**
8827
+ * A nested sub-dropdown that appears next to a parent option.
8828
+ * Opens on hover or keyboard navigation with debounced interactions.
8829
+ * Automatically adjusts max height to fit viewport.
8830
+ *
8831
+ * ### Projection slots
8832
+ * - Default slot: Nested dropdown options (`lx-option` components).
8833
+ *
8834
+ * ### Example
8835
+ * @example
8836
+ * ```html
8837
+ * <lx-options-sub-dropdown [trigger]="parentOption" align="left">
8838
+ * <lx-option [value]="1">Sub-option 1</lx-option>
8839
+ * <lx-option [value]="2">Sub-option 2</lx-option>
8840
+ * </lx-options-sub-dropdown>
8841
+ * ```
8842
+ */
7614
8843
  class OptionsSubDropdownComponent {
7615
8844
  constructor(changeDetection) {
7616
8845
  this.changeDetection = changeDetection;
8846
+ /**
8847
+ * Horizontal alignment of the sub-dropdown relative to the trigger option.
8848
+ * @default 'right'
8849
+ */
7617
8850
  this.align = 'right';
7618
8851
  this.hidden = true;
7619
8852
  this.mouseInside$ = new BehaviorSubject(false);
@@ -7696,6 +8929,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
7696
8929
  args: ['mouseleave']
7697
8930
  }] } });
7698
8931
 
8932
+ /**
8933
+ * Individual option within a picker dropdown.
8934
+ *
8935
+ * Must be a direct child of lx-picker.
8936
+ *
8937
+ * ### Projection slots
8938
+ * - Default slot: Option content (text, icons, or custom elements). Hidden when `isClearOption` is true.
8939
+ *
8940
+ * ### Example
8941
+ * @example
8942
+ * ```html
8943
+ * <lx-picker>
8944
+ * <button lxPickerTrigger>Select</button>
8945
+ * <li lx-picker-option [optionId]="'opt1'" [value]="'option1'" [ariaLabel]="'Option 1'">
8946
+ * Option 1
8947
+ * </li>
8948
+ * <li lx-picker-option [optionId]="'opt2'" [value]="'option2'" [ariaLabel]="'Option 2'">
8949
+ * Option 2
8950
+ * </li>
8951
+ * </lx-picker>
8952
+ * ```
8953
+ */
7699
8954
  class PickerOptionComponent {
7700
8955
  get ariaLabelValue() {
7701
8956
  if (this.isClearOption) {
@@ -7731,11 +8986,17 @@ class PickerOptionComponent {
7731
8986
  this.NAME = 'PickerOptionComponent';
7732
8987
  this.role = 'option';
7733
8988
  this.ariaSelected = false;
8989
+ /**
8990
+ * Whether this option is currently selected.
8991
+ * @default false
8992
+ */
7734
8993
  this.selected = false;
7735
- this.isClearOption = false;
7736
8994
  /**
7737
- * Emits the value.
8995
+ * Whether this is a special "clear selection" option.
8996
+ * @default false
7738
8997
  */
8998
+ this.isClearOption = false;
8999
+ /** Emitted when the option is selected. */
7739
9000
  this.select = new EventEmitter();
7740
9001
  this._highlighted = false;
7741
9002
  }
@@ -7852,22 +9113,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
7852
9113
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
7853
9114
 
7854
9115
  /**
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.
9116
+ * A dropdown picker for selecting a value from a list of options.
9117
+ * Supports keyboard navigation, `ControlValueAccessor` for reactive forms, and custom trigger elements.
7859
9118
  *
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.
9119
+ * ### Projection slots
9120
+ * - `lxPickerTrigger`: A button element used to open the dropdown on click or Enter
9121
+ * - `li[lx-picker-option]`: List items representing selectable options
7861
9122
  *
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>
9123
+ * ### Example
9124
+ * @example
9125
+ * ```html
9126
+ * <lx-picker listBoxAriaLabel="Color picker">
9127
+ * <button lxPickerTrigger lx-button mode="outline" size="large" [square]="true">
9128
+ * {{ selection.label }}
9129
+ * </button>
9130
+ * @for (option of options; track option.id) {
9131
+ * <li lx-picker-option [value]="option.value" [selected]="selection === option"
9132
+ * (select)="selection = option" [optionId]="option.id">
9133
+ * {{ option.label }}
9134
+ * </li>
9135
+ * }
7871
9136
  * </lx-picker>
7872
9137
  * ```
7873
9138
  */
@@ -7901,6 +9166,10 @@ class PickerComponent {
7901
9166
  constructor(dir, cdRef) {
7902
9167
  this.dir = dir;
7903
9168
  this.cdRef = cdRef;
9169
+ /**
9170
+ * Direction the picker options dropdown opens.
9171
+ * @default 'right'
9172
+ */
7904
9173
  this.openDirection = 'right';
7905
9174
  /** @internal */
7906
9175
  this._isFormControl = false;
@@ -8058,10 +9327,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
8058
9327
  args: ['document:keydown', ['$event']]
8059
9328
  }] } });
8060
9329
 
9330
+ /**
9331
+ * An individual pill/tag item with a remove button.
9332
+ * Typically used within `lx-pill-list` to display selected items.
9333
+ *
9334
+ * ### Example
9335
+ * @example
9336
+ * ```html
9337
+ * <lx-pill-item [item]="selectedItem"
9338
+ * [label]="'Option A'"
9339
+ * (remove)="onRemove($event)">
9340
+ * </lx-pill-item>
9341
+ * ```
9342
+ */
8061
9343
  class PillItemComponent {
8062
9344
  constructor() {
8063
9345
  this.NAME = 'PillItemComponent';
9346
+ /**
9347
+ * When set to true, disables the pill and prevents removal.
9348
+ */
8064
9349
  this.disabled = false;
9350
+ /**
9351
+ * Event emitted when the pill is removed.
9352
+ */
8065
9353
  this.remove = new EventEmitter();
8066
9354
  }
8067
9355
  removePill(item, isMouse = false) {
@@ -8088,11 +9376,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
8088
9376
  type: Output
8089
9377
  }] } });
8090
9378
 
9379
+ /**
9380
+ * A container for displaying a list of removable pill/tag items.
9381
+ * Commonly used inside `lx-multi-select` to show selected items.
9382
+ *
9383
+ * When used inside `lx-multi-select`, apply `class="pills"` for proper projection
9384
+ * and wire up `[keyboardSelectAction]` for keyboard navigation.
9385
+ *
9386
+ * ### Projection slots
9387
+ * - `#pillTemplate`: Optional custom template for rendering individual pills.
9388
+ * Receives each pill as implicit context. Use when you need custom styling
9389
+ * or attributes on individual pills.
9390
+ *
9391
+ * ### Example — Basic usage inside multi-select
9392
+ * @example
9393
+ * ```html
9394
+ * <lx-pill-list
9395
+ * class="pills"
9396
+ * [keyboardSelectAction]="multiSelect.selectionKeyboardSelectAction$"
9397
+ * [pills]="selectedItems"
9398
+ * labelKey="name"
9399
+ * itemKey="id"
9400
+ * (remove)="multiSelect.removeItem($event)">
9401
+ * </lx-pill-list>
9402
+ * ```
9403
+ *
9404
+ * ### Example — Custom pill template
9405
+ * @example
9406
+ * ```html
9407
+ * <lx-pill-list
9408
+ * class="pills"
9409
+ * [keyboardSelectAction]="multiSelect.selectionKeyboardSelectAction$"
9410
+ * [pills]="selectedItems"
9411
+ * itemKey="id"
9412
+ * (remove)="multiSelect.removeItem($event)">
9413
+ * <ng-template #pillTemplate let-pill>
9414
+ * <lx-pill-item
9415
+ * [label]="pill.name"
9416
+ * [item]="pill"
9417
+ * [class.readOnly]="pill.readOnly">
9418
+ * </lx-pill-item>
9419
+ * </ng-template>
9420
+ * </lx-pill-list>
9421
+ * ```
9422
+ */
8091
9423
  class PillListComponent extends KeyboardSelectDirective {
8092
9424
  constructor() {
8093
9425
  super(...arguments);
9426
+ /**
9427
+ * Array of items to display as pills.
9428
+ */
8094
9429
  this.pills = [];
9430
+ /**
9431
+ * When set to true, disables removal of pills.
9432
+ */
8095
9433
  this.disabled = false;
9434
+ /**
9435
+ * Event emitted when a pill is removed.
9436
+ */
8096
9437
  this.remove = new EventEmitter();
8097
9438
  }
8098
9439
  ngAfterViewInit() {
@@ -8199,6 +9540,34 @@ function stopKeyboardEventPropagation(evt) {
8199
9540
  evt.stopImmediatePropagation();
8200
9541
  }
8201
9542
 
9543
+ /**
9544
+ * A dropdown component for selecting a single value from a list of options.
9545
+ * Implements `ControlValueAccessor` for seamless integration with Angular reactive forms.
9546
+ *
9547
+ * ### Projection slots
9548
+ * - `.selectedOption`: Displays the currently selected value in the input field
9549
+ * - `.dropdownComponent`: Contains the dropdown (typically `lx-basic-dropdown`)
9550
+ *
9551
+ * Alternatively, use `lxSelectDropdown` and `lxSelectedOption` directives on `<ng-template>`.
9552
+ *
9553
+ * ### Example
9554
+ * @example
9555
+ * ```html
9556
+ * <lx-single-select
9557
+ * #select
9558
+ * [formControl]="control"
9559
+ * (query)="searchTerm = $event">
9560
+ * <span class="selectedOption">{{ control.value?.name }}</span>
9561
+ * <lx-basic-dropdown
9562
+ * class="dropdownComponent"
9563
+ * [keyboardSelectAction]="select.optionsKeyboardSelectAction$"
9564
+ * [options]="options | lxFilterByTerm: { term: searchTerm }"
9565
+ * labelKey="name"
9566
+ * (onItemSelected)="select.selectOption($event)">
9567
+ * </lx-basic-dropdown>
9568
+ * </lx-single-select>
9569
+ * ```
9570
+ */
8202
9571
  class SingleSelectComponent extends BaseSelectDirective {
8203
9572
  /** @internal */
8204
9573
  static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition, keyCode) {
@@ -8239,16 +9608,25 @@ class SingleSelectComponent extends BaseSelectDirective {
8239
9608
  constructor(cd) {
8240
9609
  super();
8241
9610
  this.cd = cd;
9611
+ /** Background color of the selection input field. */
8242
9612
  this.selectionBackground = 'white';
9613
+ /** Size variant of the select component. */
8243
9614
  this.size = 'default';
8244
9615
  /** @deprecated To keep different inputs aligned, we should use the default padding */
8245
9616
  this.padding = 'default';
9617
+ /** Whether the select field is required. */
8246
9618
  this.required = false;
9619
+ /** Whether to close the dropdown when the Tab key is pressed. */
8247
9620
  this.closeDropdownOnTab = true;
9621
+ /** Event emitted when the selection changes. */
8248
9622
  this.selectionChange = new EventEmitter();
9623
+ /** Event emitted when the input loses focus. */
8249
9624
  this.blur = new EventEmitter();
9625
+ /** Whether to show a clear button to remove the selection. */
8250
9626
  this.allowClear = true;
9627
+ /** Tab index of the input element for keyboard navigation. */
8251
9628
  this.tabIndex = 0;
9629
+ /** Whether to visually mark the input as invalid. */
8252
9630
  this.markInvalid = false;
8253
9631
  /** @internal */
8254
9632
  this.destroyed$ = new Subject();
@@ -8486,8 +9864,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
8486
9864
  args: ['queryInput', { static: true }]
8487
9865
  }] } });
8488
9866
 
9867
+ /**
9868
+ * Trigger button for the sorting dropdown.
9869
+ * Displays the current sorting mode with a dropdown chevron icon.
9870
+ *
9871
+ * ### Example
9872
+ * @example
9873
+ * ```html
9874
+ * <lx-sorting-dropdown-trigger
9875
+ * label="Sort by"
9876
+ * currentSortingLabel="Name"
9877
+ * [disabled]="false">
9878
+ * </lx-sorting-dropdown-trigger>
9879
+ * ```
9880
+ */
8489
9881
  class SortingDropdownTriggerComponent {
8490
9882
  constructor() {
9883
+ /**
9884
+ * Whether the trigger button is disabled.
9885
+ * @default false
9886
+ */
8491
9887
  this.disabled = false;
8492
9888
  }
8493
9889
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: SortingDropdownTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -8510,10 +9906,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
8510
9906
  * score will be used for sorting.
8511
9907
  */
8512
9908
  const RELEVANCE_SORTING_KEY = 'lx-relevance';
9909
+ /**
9910
+ * Dropdown for selecting sorting mode and direction.
9911
+ * Displays available sorting options and allows toggling between ascending/descending order.
9912
+ *
9913
+ * ### Example
9914
+ * @example
9915
+ * ```html
9916
+ * <lx-sorting-dropdown
9917
+ * [currentSorting]="{ key: 'name', order: 'asc' }"
9918
+ * [sortingOptions]="sortOptions"
9919
+ * (apply)="handleSortChange($event)">
9920
+ * </lx-sorting-dropdown>
9921
+ * ```
9922
+ */
8513
9923
  class SortingDropdownComponent {
8514
9924
  constructor() {
9925
+ /**
9926
+ * Available sorting options to choose from.
9927
+ * @default []
9928
+ */
8515
9929
  this.sortingOptions = [];
9930
+ /**
9931
+ * Whether to show ascending/descending direction options.
9932
+ * @default true
9933
+ */
8516
9934
  this.showDirectionOptions = true;
9935
+ /** Event emitted when a new sorting configuration is applied. */
8517
9936
  this.apply = new EventEmitter();
8518
9937
  this.NAME = 'SortingDropdownComponent';
8519
9938
  this.sortingDirections = ['asc', 'desc'];
@@ -8564,17 +9983,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
8564
9983
  }] } });
8565
9984
 
8566
9985
  /**
8567
- * Switch component is a toggle switch that can be used to switch between two states.
9986
+ * A toggle switch component for selecting between two states (on/off, true/false).
9987
+ * Provides a visual toggle with optional label and supports disabled states.
9988
+ *
9989
+ * ### Example
9990
+ * @example
9991
+ * ```html
9992
+ * <lx-switch
9993
+ * [value]="isEnabled"
9994
+ * [label]="'Enable notifications'"
9995
+ * [labelInFront]="true"
9996
+ * (toggle)="handleToggle($event)">
9997
+ * </lx-switch>
9998
+ * ```
8568
9999
  */
8569
10000
  class SwitchComponent {
8570
10001
  constructor() {
8571
- /** Size of the switch */
10002
+ /**
10003
+ * Visual size variant of the switch.
10004
+ * @default 'small'
10005
+ */
8572
10006
  this.size = 'small';
8573
- /** Whether the switch is disabled */
10007
+ /**
10008
+ * Whether the switch is disabled and cannot be toggled.
10009
+ * @default false
10010
+ */
8574
10011
  this.disabled = false;
8575
- /** Whether the label is in front of the switch */
10012
+ /**
10013
+ * Whether the label should appear before (left of) the switch.
10014
+ * @default true
10015
+ */
8576
10016
  this.labelInFront = true;
8577
- /** Event that is emitted when the switch is toggled */
10017
+ /**
10018
+ * Event emitted when the switch is toggled, returning the new boolean value.
10019
+ */
8578
10020
  this.toggle = new EventEmitter();
8579
10021
  }
8580
10022
  /** @internal */
@@ -9600,6 +11042,20 @@ const isRowSelectorActive = (params) => {
9600
11042
  return isSelectorActive({ ...params, selectorType: 'selector-row' });
9601
11043
  };
9602
11044
 
11045
+ /**
11046
+ * Contextual bubble menu for table editing in the rich text editor.
11047
+ *
11048
+ * Provides three context-sensitive menus that appear when interacting with tables:
11049
+ * - Row menu: appears when a table row selector is active
11050
+ * - Column menu: appears when a table column selector is active
11051
+ * - Table menu: appears when the entire table is selected
11052
+ *
11053
+ * ### Example
11054
+ * @example
11055
+ * ```html
11056
+ * <lx-table-bubble-menu [editor]="editor" />
11057
+ * ```
11058
+ */
9603
11059
  class TableBubbleMenuComponent {
9604
11060
  constructor() {
9605
11061
  this.NAME = 'RichTextEditorTableActions';
@@ -10170,8 +11626,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
10170
11626
  }]
10171
11627
  }] });
10172
11628
 
11629
+ /**
11630
+ * Footer component for modals with content projection for action buttons.
11631
+ *
11632
+ * ### Projection slots
11633
+ * - Default slot: Action buttons or footer content
11634
+ *
11635
+ * ### Example
11636
+ * @example
11637
+ * ```html
11638
+ * <lx-modal-footer [border]="true">
11639
+ * <button lx-button (click)="cancel()">Cancel</button>
11640
+ * <button lx-button color="primary" (click)="save()">Save</button>
11641
+ * </lx-modal-footer>
11642
+ * ```
11643
+ */
10173
11644
  class ModalFooterComponent {
10174
11645
  constructor() {
11646
+ /**
11647
+ * Whether to show a top border on the footer.
11648
+ * @default false
11649
+ */
10175
11650
  this.border = false;
10176
11651
  }
10177
11652
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ModalFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -10184,9 +11659,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
10184
11659
  type: Input
10185
11660
  }] } });
10186
11661
 
11662
+ /**
11663
+ * Header component for modals with optional title and content projection.
11664
+ *
11665
+ * ### Projection slots
11666
+ * - Default slot: Custom header content displayed before the title
11667
+ *
11668
+ * ### Example
11669
+ * @example
11670
+ * ```html
11671
+ * <lx-modal-header [title]="'Create New Item'" [bottomBorder]="true">
11672
+ * <button class="close-button">×</button>
11673
+ * </lx-modal-header>
11674
+ * ```
11675
+ */
10187
11676
  class ModalHeaderComponent {
10188
11677
  constructor() {
11678
+ /**
11679
+ * The title text to display in the header.
11680
+ * @default ''
11681
+ */
10189
11682
  this.title = '';
11683
+ /**
11684
+ * Whether to show a bottom border on the header.
11685
+ * @default true
11686
+ */
10190
11687
  this.bottomBorder = true;
10191
11688
  }
10192
11689
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ModalHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -10504,6 +12001,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
10504
12001
  }]
10505
12002
  }] });
10506
12003
 
12004
+ /**
12005
+ * Modal dialog for creating and editing hyperlinks in the rich text editor.
12006
+ *
12007
+ * Provides a form to input link text and URL with validation. Supports creating new links
12008
+ * and editing existing ones. The modal state is managed by the link plugin.
12009
+ *
12010
+ * ### Example
12011
+ * @example
12012
+ * ```html
12013
+ * <lx-link-modal [editor]="editor" />
12014
+ * ```
12015
+ */
10507
12016
  class LinkModalComponent {
10508
12017
  constructor() {
10509
12018
  this.NAME = 'LinkModalComponent';
@@ -10575,9 +12084,32 @@ const ensureHttpProtocol = (url) => {
10575
12084
  return url.startsWith('http://') || url.startsWith('https://') ? url : `http://${url}`;
10576
12085
  };
10577
12086
 
12087
+ /**
12088
+ * Toolbar component for the rich text editor providing formatting controls.
12089
+ *
12090
+ * Displays formatting buttons based on enabled Tiptap extensions, including text styles,
12091
+ * bold/italic/underline, lists, alignment, links, code blocks, and table insertion.
12092
+ * The toolbar visibility is controlled by the `isVisible` input and link modal state.
12093
+ *
12094
+ * ### Projection slots
12095
+ * - `.diagram-btn`: Custom diagram button when `lxDiagram` extension is enabled
12096
+ *
12097
+ * ### Example
12098
+ * @example
12099
+ * ```html
12100
+ * <lx-rich-text-editor-toolbar [editor]="editor" [isVisible]="true">
12101
+ * <button class="diagram-btn" lx-button>Insert Diagram</button>
12102
+ * </lx-rich-text-editor-toolbar>
12103
+ * ```
12104
+ */
10578
12105
  class RichTextEditorToolbarComponent {
10579
12106
  constructor() {
10580
12107
  this.NAME = 'RichTextEditorToolbarComponent';
12108
+ /**
12109
+ * Controls the visibility of the toolbar.
12110
+ *
12111
+ * @default true
12112
+ */
10581
12113
  this.isVisible = input(true);
10582
12114
  this.headingLevels = [];
10583
12115
  this.isLinkModalOpen = signal(false);
@@ -10785,16 +12317,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
10785
12317
  }]
10786
12318
  }], ctorParameters: () => [] });
10787
12319
 
12320
+ /**
12321
+ * Base component for custom Tiptap node views in Angular.
12322
+ *
12323
+ * Extend this component to create custom node views for the rich text editor.
12324
+ * Provides all Tiptap NodeViewProps as required input signals.
12325
+ */
10788
12326
  // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection
10789
12327
  class AngularNodeViewComponent {
10790
12328
  constructor() {
12329
+ /** The Tiptap editor instance. */
10791
12330
  this.editor = input.required();
12331
+ /** The ProseMirror node being rendered. */
10792
12332
  this.node = input.required();
12333
+ /** Array of decorations for this node. */
10793
12334
  this.decorations = input.required();
12335
+ /** Whether the node is currently selected. */
10794
12336
  this.selected = input.required();
12337
+ /** The Tiptap extension that created this node. */
10795
12338
  this.extension = input.required();
12339
+ /** Function to get the node's position in the document. */
10796
12340
  this.getPos = input.required();
12341
+ /** Function to update the node's attributes. */
10797
12342
  this.updateAttributes = input.required();
12343
+ /** Function to delete the node from the document. */
10798
12344
  this.deleteNode = input.required();
10799
12345
  }
10800
12346
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: AngularNodeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -11236,25 +12782,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
11236
12782
  }] });
11237
12783
 
11238
12784
  /**
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.
12785
+ * A floating overlay component anchored to a trigger element.
12786
+ * Based on the [ncstate-sat/popover](https://github.com/ncstate-sat/popover) library.
11245
12787
  *
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.
12788
+ * The popover requires one of the trigger directives:
12789
+ * - `lxPopoverHover`: Shows on hover (both anchor and popover body)
12790
+ * - `lxPopoverClick`: Shows on click (stays open while hovering popover body)
11249
12791
  *
11250
- * For use case 1. you would use the lxPopoverHover directive, which exports as hoverAnchor.
11251
- *
11252
- * ### Example:
12792
+ * ### Example with hover trigger
12793
+ * @example
11253
12794
  * ```html
11254
12795
  * <div lxPopoverHover
11255
12796
  * hoverAnchor
11256
12797
  * satPopoverAnchor
11257
- * #anchor="hoverAnchor"></div>
12798
+ * #anchor="hoverAnchor">Hover me</div>
11258
12799
  * <lx-popover [trigger]="anchor"
11259
12800
  * horizontalAlign="after"
11260
12801
  * verticalAlign="center">
@@ -11262,18 +12803,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
11262
12803
  * </lx-popover>
11263
12804
  * ```
11264
12805
  *
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:
12806
+ * ### Example with click trigger
12807
+ * @example
11271
12808
  * ```html
11272
12809
  * <div lxPopoverClick
11273
12810
  * clickAnchor
11274
12811
  * satPopoverAnchor
11275
12812
  * #anchor="clickAnchor"
11276
- * (click)="popover.open()">Click Me!</div>
12813
+ * (click)="popover.open()">Click me</div>
11277
12814
  * <lx-popover [trigger]="anchor"
11278
12815
  * horizontalAlign="after"
11279
12816
  * verticalAlign="center"
@@ -11282,10 +12819,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
11282
12819
  * </lx-popover>
11283
12820
  * ```
11284
12821
  *
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:
12822
+ * ### With strict templates
12823
+ * When using `strictTemplates=true`, bind `satPopoverAnchor` to the popover's internal reference:
12824
+ * ### Example
12825
+ * @example
11289
12826
  * ```html
11290
12827
  * <div [satPopoverAnchor]="popover.satPopover"></div>
11291
12828
  * <lx-popover #popover>
@@ -11700,6 +13237,27 @@ var LxTabGroupKeyCode;
11700
13237
  LxTabGroupKeyCode["End"] = "End";
11701
13238
  })(LxTabGroupKeyCode || (LxTabGroupKeyCode = {}));
11702
13239
 
13240
+ /**
13241
+ * Individual tab component used inside `lx-tab-group`.
13242
+ * Supports icons, counters, router links, and keyboard navigation.
13243
+ * Content is projected and rendered by the parent tab group when the tab is active.
13244
+ *
13245
+ * ### Example
13246
+ * @example
13247
+ * ```html
13248
+ * <lx-tab-group>
13249
+ * <lx-tab [label]="'General'" [icon]="'settings'" [disabled]="false">
13250
+ * <p>General content</p>
13251
+ * </lx-tab>
13252
+ * <lx-tab [label]="'Notifications'" [counter]="3">
13253
+ * <p>Notification content</p>
13254
+ * </lx-tab>
13255
+ * <lx-tab [label]="'Settings'" [tabLink]="['/settings']">
13256
+ * <p>Settings content</p>
13257
+ * </lx-tab>
13258
+ * </lx-tab-group>
13259
+ * ```
13260
+ */
11703
13261
  class TabComponent {
11704
13262
  set isActive(value) {
11705
13263
  this._isActive = value;
@@ -11716,18 +13274,52 @@ class TabComponent {
11716
13274
  this.router = router;
11717
13275
  this.activatedRoute = activatedRoute;
11718
13276
  /**
11719
- * The `design` of the icon.
13277
+ * The design of the icon.
11720
13278
  * @default NonInteractive
11721
13279
  */
11722
13280
  this.iconDesign = 'NonInteractive';
13281
+ /**
13282
+ * The label text displayed for the tab.
13283
+ * @default ''
13284
+ */
11723
13285
  this.label = '';
13286
+ /**
13287
+ * Options for the RouterLinkActive directive.
13288
+ * @default { exact: true }
13289
+ */
11724
13290
  this.routerLinkActiveOptions = { exact: true };
13291
+ /**
13292
+ * Size of the counter badge.
13293
+ * @default 'default'
13294
+ */
11725
13295
  this.counterBadgeSize = 'default';
13296
+ /**
13297
+ * Whether to remove margin from the tab.
13298
+ * @default false
13299
+ */
11726
13300
  this.noMargin = false;
13301
+ /**
13302
+ * Whether to remove left margin for the first tab.
13303
+ * @default false
13304
+ */
11727
13305
  this.noLeftMarginForFirstTab = false;
13306
+ /**
13307
+ * Background color of the tab.
13308
+ * @default 'white'
13309
+ */
11728
13310
  this.background = 'white';
13311
+ /**
13312
+ * Whether the tab is disabled and cannot be selected.
13313
+ * @default false
13314
+ */
11729
13315
  this.disabled = false;
13316
+ /**
13317
+ * Event emitted when the tab is selected.
13318
+ */
11730
13319
  this.switch = new EventEmitter();
13320
+ /**
13321
+ * Event emitted when a keyboard key is pressed on the tab.
13322
+ */
11731
13323
  this.keyDownAction = new EventEmitter();
11732
13324
  this._isActive = false;
11733
13325
  this.tabId = uniqueId$1('tab');
@@ -11812,6 +13404,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
11812
13404
  args: [RouterLinkActive]
11813
13405
  }] } });
11814
13406
 
13407
+ /**
13408
+ * Container for tab navigation that manages active tab state and keyboard interactions.
13409
+ * Supports both static tabs and router-linked tabs with keyboard navigation (arrow keys, Home, End).
13410
+ *
13411
+ * ### Content Projection
13412
+ * - Project `lx-tab` components as children
13413
+ *
13414
+ * ### Example
13415
+ * @example
13416
+ * ```html
13417
+ * <lx-tab-group [selectedIndex]="0" (indexChange)="onTabChange($event)">
13418
+ * <lx-tab [label]="'General'" [icon]="'settings'">
13419
+ * <p>General content</p>
13420
+ * </lx-tab>
13421
+ * <lx-tab [label]="'Notifications'" [counter]="3">
13422
+ * <p>Notification content</p>
13423
+ * </lx-tab>
13424
+ * </lx-tab-group>
13425
+ * ```
13426
+ */
11815
13427
  class TabGroupComponent {
11816
13428
  /** @internal */
11817
13429
  get tabIds() {
@@ -11826,11 +13438,19 @@ class TabGroupComponent {
11826
13438
  }
11827
13439
  constructor(cd) {
11828
13440
  this.cd = cd;
13441
+ /**
13442
+ * Whether the tabs should be centered.
13443
+ * @default false
13444
+ */
11829
13445
  this.isCentered = false;
11830
13446
  /**
11831
- * The tab whose content should be displayed.
13447
+ * The index of the tab whose content should be displayed.
13448
+ * @default 0
11832
13449
  */
11833
13450
  this.selectedIndex = 0;
13451
+ /**
13452
+ * Event emitted when the selected tab index changes.
13453
+ */
11834
13454
  this.indexChange = new EventEmitter();
11835
13455
  /**
11836
13456
  * The tab that is currently focused via keyboard.