@progress-chef/platform-shared-components 0.0.154 → 0.0.155

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 (32) hide show
  1. package/assets/icons/IconFont.css +6 -3
  2. package/assets/icons/IconFont.scss +6 -3
  3. package/assets/icons/IconFont.ttf +0 -0
  4. package/assets/icons/IconFont.woff +0 -0
  5. package/assets/icons/IconFont.woff2 +0 -0
  6. package/esm2022/lib/atoms/atoms.module.mjs +15 -1
  7. package/esm2022/lib/atoms/drag-and-drop/drag-and-drop.component.mjs +31 -3
  8. package/esm2022/lib/atoms/markdown-display/markdown-display.component.mjs +39 -0
  9. package/esm2022/lib/atoms/markdown-display/markdown-display.module.mjs +26 -0
  10. package/esm2022/lib/atoms/markdown-display/markdown-display.service.mjs +53 -0
  11. package/esm2022/lib/atoms/tree-list/tree-list.component.mjs +404 -0
  12. package/esm2022/lib/atoms/tree-list/tree-list.interfaces.mjs +2 -0
  13. package/esm2022/lib/atoms/tree-list/tree-list.module.mjs +44 -0
  14. package/esm2022/lib/atoms/tree-view/tree-view.component.mjs +521 -0
  15. package/esm2022/lib/atoms/tree-view/tree-view.interfaces.mjs +2 -0
  16. package/esm2022/lib/atoms/tree-view/tree-view.module.mjs +44 -0
  17. package/esm2022/public-api.mjs +7 -1
  18. package/fesm2022/progress-chef-platform-shared-components.mjs +1139 -13
  19. package/fesm2022/progress-chef-platform-shared-components.mjs.map +1 -1
  20. package/lib/atoms/atoms.module.d.ts +5 -3
  21. package/lib/atoms/drag-and-drop/drag-and-drop.component.d.ts +10 -1
  22. package/lib/atoms/markdown-display/markdown-display.component.d.ts +22 -0
  23. package/lib/atoms/markdown-display/markdown-display.module.d.ts +8 -0
  24. package/lib/atoms/markdown-display/markdown-display.service.d.ts +23 -0
  25. package/lib/atoms/tree-list/tree-list.component.d.ts +288 -0
  26. package/lib/atoms/tree-list/tree-list.interfaces.d.ts +31 -0
  27. package/lib/atoms/tree-list/tree-list.module.d.ts +13 -0
  28. package/lib/atoms/tree-view/tree-view.component.d.ts +279 -0
  29. package/lib/atoms/tree-view/tree-view.interfaces.d.ts +23 -0
  30. package/lib/atoms/tree-view/tree-view.module.d.ts +13 -0
  31. package/package.json +2 -1
  32. package/public-api.d.ts +6 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, EventEmitter, HostBinding, Output, NgModule, ViewChild, HostListener, ViewChildren, ContentChild, ViewEncapsulation, Pipe, Directive, booleanAttribute, ContentChildren, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
2
+ import { Component, Input, EventEmitter, HostBinding, Output, NgModule, ViewChild, HostListener, ViewChildren, ContentChild, ViewEncapsulation, Pipe, Directive, booleanAttribute, ContentChildren, CUSTOM_ELEMENTS_SCHEMA, SecurityContext, Injectable } from '@angular/core';
3
3
  import * as i2 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i3$2 from '@angular/forms';
@@ -19,7 +19,7 @@ import * as i2$5 from '@progress/kendo-angular-dropdowns';
19
19
  import { DropDownsModule, AutoCompleteModule } from '@progress/kendo-angular-dropdowns';
20
20
  import * as i2$2 from '@progress/kendo-angular-inputs';
21
21
  import { InputsModule } from '@progress/kendo-angular-inputs';
22
- import * as i2$8 from '@progress/kendo-angular-icons';
22
+ import * as i2$a from '@progress/kendo-angular-icons';
23
23
  import { IconsModule } from '@progress/kendo-angular-icons';
24
24
  import * as i3$3 from '@progress/kendo-angular-label';
25
25
  import { LabelModule, FloatingLabelModule } from '@progress/kendo-angular-label';
@@ -36,19 +36,25 @@ import { LoaderModule as LoaderModule$1, IndicatorsModule } from '@progress/kend
36
36
  import { trigger, transition, style, animate } from '@angular/animations';
37
37
  import * as i2$6 from '@progress/kendo-angular-progressbar';
38
38
  import { ProgressBarModule } from '@progress/kendo-angular-progressbar';
39
- import { Subject, Subscription, tap, map } from 'rxjs';
39
+ import { Subject, Subscription, tap, map, of } from 'rxjs';
40
40
  import { debounceTime } from 'rxjs/operators';
41
+ import * as i2$7 from '@progress/kendo-angular-treelist';
42
+ import { TreeListModule as TreeListModule$1 } from '@progress/kendo-angular-treelist';
43
+ import * as i2$8 from '@progress/kendo-angular-treeview';
44
+ import { TreeViewModule as TreeViewModule$1 } from '@progress/kendo-angular-treeview';
41
45
  import * as i1$5 from '@progress/kendo-angular-upload';
42
46
  import { UploadsModule } from '@progress/kendo-angular-upload';
43
47
  import { HttpClientModule } from '@angular/common/http';
44
- import * as i2$7 from '@progress/kendo-angular-dialog';
48
+ import * as i2$9 from '@progress/kendo-angular-dialog';
45
49
  import { DialogsModule, DialogModule as DialogModule$1 } from '@progress/kendo-angular-dialog';
46
50
  import * as i1$6 from '@progress/kendo-angular-grid';
47
51
  import { GridModule, GridComponent } from '@progress/kendo-angular-grid';
48
52
  import { Keys } from '@progress/kendo-angular-common';
49
- import * as i2$9 from '@progress/kendo-angular-pager';
53
+ import * as i2$b from '@progress/kendo-angular-pager';
50
54
  import { KENDO_PAGER, PagerModule } from '@progress/kendo-angular-pager';
51
55
  import { orderBy } from '@progress/kendo-data-query';
56
+ import { marked } from 'marked';
57
+ import * as i1$7 from '@angular/platform-browser';
52
58
 
53
59
  class SharedComponent {
54
60
  constructor() { }
@@ -1548,6 +1554,11 @@ class DragAndDropComponent {
1548
1554
  this.dragDropItemIndexAttribute = 'data-kendo-listview-item-index';
1549
1555
  this.dragHandleClassSelector = '.reorder-icon';
1550
1556
  this.emitListChangeEv = new EventEmitter();
1557
+ this.dragEnter = new EventEmitter();
1558
+ this.dragLeave = new EventEmitter();
1559
+ this.dropDone = new EventEmitter();
1560
+ this.dragStart = new EventEmitter();
1561
+ this.dragRelease = new EventEmitter();
1551
1562
  this.dragData = ({ dragTarget }) => {
1552
1563
  return {
1553
1564
  fromElement: this.setElement(dragTarget, this.dragDropContainerClassSelector, this.dragDropContainerIndexAttribute),
@@ -1572,6 +1583,18 @@ class DragAndDropComponent {
1572
1583
  this.dropTargetContainer.notify();
1573
1584
  }
1574
1585
  }
1586
+ onDragEnter(e) {
1587
+ this.dragEnter.emit(e);
1588
+ }
1589
+ onDragLeave(e) {
1590
+ this.dragLeave.emit(e);
1591
+ }
1592
+ onRelease(e) {
1593
+ this.dragRelease.emit(e);
1594
+ }
1595
+ onDragStart(e) {
1596
+ this.dragStart.emit(e);
1597
+ }
1575
1598
  onDrop(e) {
1576
1599
  const { fromIndex } = e.dragData;
1577
1600
  let destinationIndex = 0;
@@ -1581,6 +1604,7 @@ class DragAndDropComponent {
1581
1604
  }
1582
1605
  this._listData = [...this._listData];
1583
1606
  this.emitListChangeEv.emit(this._listData);
1607
+ this.dropDone.emit(e);
1584
1608
  this.dragTargetContainer.notify();
1585
1609
  this.dropTargetContainer.notify();
1586
1610
  }
@@ -1605,11 +1629,11 @@ class DragAndDropComponent {
1605
1629
  }
1606
1630
  ;
1607
1631
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DragAndDropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1608
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DragAndDropComponent, isStandalone: true, selector: "lib-drag-and-drop", inputs: { dragDropContainerClassSelector: "dragDropContainerClassSelector", dragDropItemClassSelector: "dragDropItemClassSelector", dragDropContainerIndexAttribute: "dragDropContainerIndexAttribute", dragDropItemIndexAttribute: "dragDropItemIndexAttribute", dragHandleClassSelector: "dragHandleClassSelector", listData: "listData" }, outputs: { emitListChangeEv: "emitListChangeEv" }, viewQueries: [{ propertyName: "dragTargetContainer", first: true, predicate: ["wrapper"], descendants: true, read: DragTargetContainerDirective }, { propertyName: "dropTargetContainer", first: true, predicate: ["wrapper"], descendants: true, read: DropTargetContainerDirective }], ngImport: i0, template: "<div class=\"demo-container\" #wrapper kendoDragTargetContainer kendoDropTargetContainer\n [dragTargetFilter]=\"dragDropItemClassSelector\" [dropTargetFilter]=\"dragDropItemClassSelector\" [dragData]=\"dragData\"\n [hint]=\"{ hintClass: 'rowHint' }\" (onDrop)=\"onDrop($event)\" [dragHandle]=\"dragHandleClassSelector\">\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: DragAndDropModule$1 }, { kind: "directive", type: i1$2.DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode", "cursorStyle", "hintContext"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { kind: "directive", type: i1$2.DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }] }); }
1632
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DragAndDropComponent, isStandalone: true, selector: "lib-drag-and-drop", inputs: { dragDropContainerClassSelector: "dragDropContainerClassSelector", dragDropItemClassSelector: "dragDropItemClassSelector", dragDropContainerIndexAttribute: "dragDropContainerIndexAttribute", dragDropItemIndexAttribute: "dragDropItemIndexAttribute", dragHandleClassSelector: "dragHandleClassSelector", listData: "listData" }, outputs: { emitListChangeEv: "emitListChangeEv", dragEnter: "dragEnter", dragLeave: "dragLeave", dropDone: "dropDone", dragStart: "dragStart", dragRelease: "dragRelease" }, viewQueries: [{ propertyName: "dragTargetContainer", first: true, predicate: ["wrapper"], descendants: true, read: DragTargetContainerDirective }, { propertyName: "dropTargetContainer", first: true, predicate: ["wrapper"], descendants: true, read: DropTargetContainerDirective }], ngImport: i0, template: "<div class=\"demo-container\" #wrapper kendoDragTargetContainer kendoDropTargetContainer\n [dragTargetFilter]=\"dragDropItemClassSelector\" [dropTargetFilter]=\"dragDropItemClassSelector\" [dragData]=\"dragData\"\n [hint]=\"{ hintClass: 'rowHint' }\" (onDrop)=\"onDrop($event)\" (onDragEnter)=\"onDragEnter($event)\"\n (onDragLeave)=\"onDragLeave($event)\" (onRelease)=\"onRelease($event)\" (onDragStart)=\"onDragStart($event)\" [dragHandle]=\"dragHandleClassSelector\">\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: DragAndDropModule$1 }, { kind: "directive", type: i1$2.DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode", "cursorStyle", "hintContext"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { kind: "directive", type: i1$2.DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }] }); }
1609
1633
  }
1610
1634
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DragAndDropComponent, decorators: [{
1611
1635
  type: Component,
1612
- args: [{ standalone: true, selector: 'lib-drag-and-drop', imports: [DragAndDropModule$1], template: "<div class=\"demo-container\" #wrapper kendoDragTargetContainer kendoDropTargetContainer\n [dragTargetFilter]=\"dragDropItemClassSelector\" [dropTargetFilter]=\"dragDropItemClassSelector\" [dragData]=\"dragData\"\n [hint]=\"{ hintClass: 'rowHint' }\" (onDrop)=\"onDrop($event)\" [dragHandle]=\"dragHandleClassSelector\">\n <ng-content></ng-content>\n</div>\n" }]
1636
+ args: [{ standalone: true, selector: 'lib-drag-and-drop', imports: [DragAndDropModule$1], template: "<div class=\"demo-container\" #wrapper kendoDragTargetContainer kendoDropTargetContainer\n [dragTargetFilter]=\"dragDropItemClassSelector\" [dropTargetFilter]=\"dragDropItemClassSelector\" [dragData]=\"dragData\"\n [hint]=\"{ hintClass: 'rowHint' }\" (onDrop)=\"onDrop($event)\" (onDragEnter)=\"onDragEnter($event)\"\n (onDragLeave)=\"onDragLeave($event)\" (onRelease)=\"onRelease($event)\" (onDragStart)=\"onDragStart($event)\" [dragHandle]=\"dragHandleClassSelector\">\n <ng-content></ng-content>\n</div>\n" }]
1613
1637
  }], propDecorators: { dragDropContainerClassSelector: [{
1614
1638
  type: Input
1615
1639
  }], dragDropItemClassSelector: [{
@@ -1624,6 +1648,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
1624
1648
  type: Input
1625
1649
  }], emitListChangeEv: [{
1626
1650
  type: Output
1651
+ }], dragEnter: [{
1652
+ type: Output
1653
+ }], dragLeave: [{
1654
+ type: Output
1655
+ }], dropDone: [{
1656
+ type: Output
1657
+ }], dragStart: [{
1658
+ type: Output
1659
+ }], dragRelease: [{
1660
+ type: Output
1627
1661
  }], dragTargetContainer: [{
1628
1662
  type: ViewChild,
1629
1663
  args: ['wrapper', { read: DragTargetContainerDirective, static: false }]
@@ -4147,6 +4181,980 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
4147
4181
  }]
4148
4182
  }] });
4149
4183
 
4184
+ /**
4185
+ * Custom TreeList component that wraps Kendo's TreeList with design system styling.
4186
+ *
4187
+ * This component provides a hierarchical data grid for displaying and editing tabular data.
4188
+ * It supports selection, sorting, filtering, editing, and custom column templates.
4189
+ */
4190
+ class TreeListComponent {
4191
+ constructor() {
4192
+ /**
4193
+ * The data source for the tree list
4194
+ */
4195
+ this.data = [];
4196
+ /**
4197
+ * Column definitions for the tree list
4198
+ */
4199
+ this.columns = [];
4200
+ /**
4201
+ * Field name that contains the unique identifier for each node
4202
+ */
4203
+ this.idField = 'id';
4204
+ /**
4205
+ * Field name that contains the child nodes array (for hierarchical binding)
4206
+ */
4207
+ this.childrenField = 'children';
4208
+ /**
4209
+ * Field name that contains the parent identifier (for flat binding)
4210
+ */
4211
+ this.parentIdField = 'parentId';
4212
+ /**
4213
+ * Binding type: 'hierarchy' for nested data with children, 'flat' for parent-child relationship data
4214
+ */
4215
+ this.bindingType = 'hierarchy';
4216
+ /**
4217
+ * Enable selection functionality
4218
+ */
4219
+ this.selectable = false;
4220
+ /**
4221
+ * Enable sorting functionality
4222
+ */
4223
+ this.sortable = false;
4224
+ /**
4225
+ * Enable filtering functionality
4226
+ */
4227
+ this.filterable = false;
4228
+ /**
4229
+ * Enable resizing functionality
4230
+ */
4231
+ this.resizable = false;
4232
+ /**
4233
+ * Enable reordering functionality
4234
+ */
4235
+ this.reorderable = false;
4236
+ /**
4237
+ * Enable editing functionality
4238
+ */
4239
+ this.editable = false;
4240
+ /**
4241
+ * Loading state - shows loading indicator when true
4242
+ */
4243
+ this.loading = false;
4244
+ /**
4245
+ * Height of the tree list container
4246
+ */
4247
+ this.height = 'auto';
4248
+ /**
4249
+ * Enable virtual scrolling
4250
+ */
4251
+ this.scrollable = true;
4252
+ /**
4253
+ * Page size for pagination
4254
+ */
4255
+ this.pageSize = 0;
4256
+ /**
4257
+ * Enable pagination
4258
+ */
4259
+ this.pageable = false;
4260
+ /**
4261
+ * Current sort configuration
4262
+ */
4263
+ this.sort = [];
4264
+ this.selectionChange = new EventEmitter();
4265
+ this.expand = new EventEmitter();
4266
+ this.collapse = new EventEmitter();
4267
+ this.sortChange = new EventEmitter();
4268
+ this.filterChange = new EventEmitter();
4269
+ this.pageChange = new EventEmitter();
4270
+ this.add = new EventEmitter();
4271
+ this.edit = new EventEmitter();
4272
+ this.cancelEvent = new EventEmitter();
4273
+ this.save = new EventEmitter();
4274
+ this.remove = new EventEmitter();
4275
+ this.cellClick = new EventEmitter();
4276
+ this.cellClose = new EventEmitter();
4277
+ }
4278
+ /**
4279
+ * Generates CSS classes for the tree-list container element based on current state.
4280
+ * Applies conditional classes for loading state and editing mode to enable appropriate styling.
4281
+ *
4282
+ * @returns A space-separated string of CSS class names to apply to the container
4283
+ */
4284
+ getTreeListClasses() {
4285
+ const classes = ['lib-tree-list'];
4286
+ if (this.loading) {
4287
+ classes.push('lib-tree-list--loading');
4288
+ }
4289
+ if (this.editable) {
4290
+ classes.push('lib-tree-list--editable');
4291
+ }
4292
+ return classes.join(' ');
4293
+ }
4294
+ /**
4295
+ * Handles selection state changes when users select or deselect tree-list rows.
4296
+ * Propagates the selection event to parent components for external handling.
4297
+ *
4298
+ * @param event - The selection change event containing selected items and metadata
4299
+ */
4300
+ onSelectionChange(event) {
4301
+ this.selectionChange.emit(event);
4302
+ }
4303
+ /**
4304
+ * Handles node expansion events when users expand collapsed hierarchical tree nodes.
4305
+ * Emits the expand event to notify parent components of the state change for potential data loading.
4306
+ *
4307
+ * @param event - The expand event containing the expanded node data and index information
4308
+ */
4309
+ onExpand(event) {
4310
+ this.expand.emit(event);
4311
+ }
4312
+ /**
4313
+ * Handles node collapse events when users collapse expanded hierarchical tree nodes.
4314
+ * Emits the collapse event to notify parent components of the state change for cleanup or optimization.
4315
+ *
4316
+ * @param event - The collapse event containing the collapsed node data and index information
4317
+ */
4318
+ onCollapse(event) {
4319
+ this.collapse.emit(event);
4320
+ }
4321
+ /**
4322
+ * Handles column sorting changes when users click on sortable column headers.
4323
+ * Updates the internal sort state and propagates the change to parent components for data reordering.
4324
+ *
4325
+ * @param sort - Array of sort descriptors defining field names and sort directions (asc/desc)
4326
+ */
4327
+ onSortChange(sort) {
4328
+ this.sort = sort;
4329
+ this.sortChange.emit(sort);
4330
+ }
4331
+ /**
4332
+ * Handles filter criteria changes when users interact with column filters or search functionality.
4333
+ * Propagates filter events to parent components for server-side or client-side data filtering.
4334
+ *
4335
+ * @param filter - The filter object containing criteria, operators, and field specifications
4336
+ */
4337
+ onFilterChange(filter) {
4338
+ this.filterChange.emit(filter);
4339
+ }
4340
+ /**
4341
+ * Handles pagination navigation when users interact with pager controls.
4342
+ * Propagates page change events to parent components for data loading of the requested page.
4343
+ *
4344
+ * @param event - The page change event containing skip, take, and page size information
4345
+ */
4346
+ onPageChange(event) {
4347
+ this.pageChange.emit(event);
4348
+ }
4349
+ /**
4350
+ * Handles add/create events when users initiate creation of new tree-list items.
4351
+ * Propagates the add event to parent components for handling new item creation logic and validation.
4352
+ *
4353
+ * @param event - The add event containing parent item context and position information for insertion
4354
+ */
4355
+ onAdd(event) {
4356
+ this.add.emit(event);
4357
+ }
4358
+ /**
4359
+ * Handles edit mode activation when users enter editing mode for tree-list items.
4360
+ * Propagates the edit event to parent components for setting up edit state and validation rules.
4361
+ *
4362
+ * @param event - The edit event containing the item data being edited and row context
4363
+ */
4364
+ onEdit(event) {
4365
+ this.edit.emit(event);
4366
+ }
4367
+ /**
4368
+ * Handles edit cancellation when users discard changes and exit editing mode without saving.
4369
+ * Propagates the cancel event to parent components for cleanup and restoring original data state.
4370
+ *
4371
+ * @param event - The cancel event containing the item data that was being edited
4372
+ */
4373
+ onCancel(event) {
4374
+ this.cancelEvent.emit(event);
4375
+ }
4376
+ /**
4377
+ * Handles save operations when users commit changes after editing tree-list items.
4378
+ * Propagates the save event to parent components for validation, persistence, and data refresh.
4379
+ *
4380
+ * @param event - The save event containing the modified item data and original values for comparison
4381
+ */
4382
+ onSave(event) {
4383
+ this.save.emit(event);
4384
+ }
4385
+ /**
4386
+ * Handles delete/removal operations when users confirm deletion of tree-list items.
4387
+ * Propagates the remove event to parent components for confirmation dialogs and data deletion.
4388
+ *
4389
+ * @param event - The remove event containing the item data to be deleted and hierarchical context
4390
+ */
4391
+ onRemove(event) {
4392
+ this.remove.emit(event);
4393
+ }
4394
+ /**
4395
+ * Handles individual cell click events within the tree-list for custom interaction handling.
4396
+ * Propagates cell click events to parent components for custom actions, navigation, or cell-specific logic.
4397
+ *
4398
+ * @param event - The cell click event containing cell data, coordinates, and column information
4399
+ */
4400
+ onCellClick(event) {
4401
+ this.cellClick.emit(event);
4402
+ }
4403
+ /**
4404
+ * Handles cell editor close events when users exit cell editing mode.
4405
+ * Propagates cell close events to parent components for cleanup and state management.
4406
+ *
4407
+ * @param event - The cell close event containing editor state and any pending changes
4408
+ */
4409
+ onCellClose(event) {
4410
+ this.cellClose.emit(event);
4411
+ }
4412
+ /**
4413
+ * Handles edit button clicks from command column or custom templates to initiate item editing.
4414
+ * Creates and emits a properly formatted EditEvent to notify parent components of edit intention.
4415
+ * This method bridges custom UI elements with the standard Kendo TreeList editing workflow.
4416
+ *
4417
+ * @param dataItem - The tree-list item data object to be edited
4418
+ */
4419
+ onEditButtonClick(dataItem) {
4420
+ // Emit the edit event to let parent component handle the editing logic
4421
+ this.edit.emit({ dataItem });
4422
+ }
4423
+ /**
4424
+ * Handles remove button clicks from command column or custom templates to initiate item deletion.
4425
+ * Creates and emits a properly formatted RemoveEvent to notify parent components of deletion request.
4426
+ * This method bridges custom UI elements with the standard Kendo TreeList removal workflow.
4427
+ *
4428
+ * @param dataItem - The tree-list item data object to be deleted
4429
+ */
4430
+ onRemoveButtonClick(dataItem) {
4431
+ // Emit the remove event to let parent component handle the removal logic
4432
+ this.remove.emit({ dataItem });
4433
+ }
4434
+ /**
4435
+ * Recursively expands all collapsible nodes in the tree-list hierarchy.
4436
+ * Iterates through all top-level data items and uses the Kendo TreeList API to expand each node,
4437
+ * which triggers cascading expansion of all child nodes. Safely handles cases where the
4438
+ * TreeList element is not yet initialized.
4439
+ */
4440
+ expandAll() {
4441
+ if (this.treeListElement) {
4442
+ // TreeList doesn't have expandAll, so we implement custom logic
4443
+ this.data.forEach(item => {
4444
+ if (this.treeListElement) {
4445
+ this.treeListElement.expand(item);
4446
+ }
4447
+ });
4448
+ }
4449
+ }
4450
+ /**
4451
+ * Recursively collapses all expandable nodes in the tree-list hierarchy.
4452
+ * Iterates through all top-level data items and uses the Kendo TreeList API to collapse each node,
4453
+ * which triggers cascading collapse of all child nodes. Safely handles cases where the
4454
+ * TreeList element is not yet initialized.
4455
+ */
4456
+ collapseAll() {
4457
+ if (this.treeListElement) {
4458
+ // TreeList doesn't have collapseAll, so we implement custom logic
4459
+ this.data.forEach(item => {
4460
+ if (this.treeListElement) {
4461
+ this.treeListElement.collapse(item);
4462
+ }
4463
+ });
4464
+ }
4465
+ }
4466
+ /**
4467
+ * Provides a tracking function for Angular's ngFor optimization when rendering column definitions.
4468
+ * Returns a unique identifier for each column to help Angular efficiently track and update
4469
+ * column elements during re-rendering. Falls back to array index if no field property exists.
4470
+ *
4471
+ * @param index - The array index of the column in the columns collection
4472
+ * @param column - The column configuration object containing field and other properties
4473
+ * @returns A unique identifier for the column (field name or array index)
4474
+ */
4475
+ trackByColumn(index, column) {
4476
+ return column.field || index;
4477
+ }
4478
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4479
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: TreeListComponent, isStandalone: true, selector: "lib-tree-list", inputs: { data: "data", columns: "columns", idField: "idField", childrenField: "childrenField", parentIdField: "parentIdField", bindingType: "bindingType", fetchChildren: "fetchChildren", hasChildren: "hasChildren", isExpanded: "isExpanded", selectable: "selectable", sortable: "sortable", filterable: "filterable", resizable: "resizable", reorderable: "reorderable", editable: "editable", loading: "loading", height: "height", scrollable: "scrollable", pageSize: "pageSize", pageable: "pageable", sort: "sort", cellTemplate: "cellTemplate", headerTemplate: "headerTemplate", footerTemplate: "footerTemplate", editTemplate: "editTemplate", commandTemplate: "commandTemplate", noRecordsTemplate: "noRecordsTemplate", loadingTemplate: "loadingTemplate" }, outputs: { selectionChange: "selectionChange", expand: "expand", collapse: "collapse", sortChange: "sortChange", filterChange: "filterChange", pageChange: "pageChange", add: "add", edit: "edit", cancelEvent: "cancelEvent", save: "save", remove: "remove", cellClick: "cellClick", cellClose: "cellClose" }, viewQueries: [{ propertyName: "treeListElement", first: true, predicate: ["treeListElement"], descendants: true }], ngImport: i0, template: "<div [class]=\"getTreeListClasses()\">\n <!-- Enhanced TreeList with Hierarchy Binding -->\n <kendo-treelist *ngIf=\"bindingType === 'hierarchy'\" [kendoTreeListHierarchyBinding]=\"data\"\n [childrenField]=\"childrenField\" [idField]=\"idField\" class=\"lib-tree-list__kendo-treelist\" [selectable]=\"selectable\"\n (selectionChange)=\"onSelectionChange($event)\" [sortable]=\"sortable\" [sort]=\"sort\"\n (sortChange)=\"onSortChange($event)\" [filterable]=\"filterable\" (filterChange)=\"onFilterChange($event)\"\n [pageable]=\"pageable\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\" [resizable]=\"resizable\"\n [reorderable]=\"reorderable\" [height]=\"height\" [scrollable]=\"scrollable\" [navigable]=\"editable\"\n (expand)=\"onExpand($event)\" (collapse)=\"onCollapse($event)\" (cellClick)=\"onCellClick($event)\"\n (cellClose)=\"onCellClose($event)\" (add)=\"onAdd($event)\" (edit)=\"onEdit($event)\" (cancel)=\"onCancel($event)\"\n (save)=\"onSave($event)\" (remove)=\"onRemove($event)\" kendoTreeListExpandable [initiallyExpanded]=\"true\"\n kendoTreeListSelectable>\n\n <!-- Dynamic columns with templates -->\n <kendo-treelist-column *ngFor=\"let column of columns; trackBy: trackByColumn; let i = index\" [field]=\"column.field\"\n [title]=\"column.title || column.field\" [width]=\"column.width\" [locked]=\"column.locked\" [hidden]=\"column.hidden\"\n [sortable]=\"column.sortable !== undefined ? column.sortable : sortable\"\n [filterable]=\"column.filterable !== undefined ? column.filterable : filterable\"\n [editable]=\"column.editable !== undefined ? column.editable : editable\" [format]=\"column.format\"\n [expandable]=\"i === 0\">\n\n <!-- Custom cell template -->\n <ng-template *ngIf=\"column.template\" kendoTreeListCellTemplate let-dataItem=\"dataItem\" let-rowIndex=\"rowIndex\"\n let-columnIndex=\"columnIndex\">\n <ng-container [ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem, \n rowIndex: rowIndex, \n columnIndex: columnIndex,\n field: column.field,\n value: dataItem[column.field]\n }\">\n </ng-container>\n </ng-template>\n\n <!-- Custom header template -->\n <ng-template *ngIf=\"column.headerTemplate\" kendoTreeListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"column.headerTemplate\" [ngTemplateOutletContext]=\"{ column: column }\">\n </ng-container>\n </ng-template>\n\n <!-- Custom footer template -->\n <ng-template *ngIf=\"column.footerTemplate\" kendoTreeListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"column.footerTemplate\" [ngTemplateOutletContext]=\"{ column: column }\">\n </ng-container>\n </ng-template>\n\n <!-- Edit template for inline editing -->\n <ng-template *ngIf=\"editable && column.editTemplate\" kendoTreeListEditTemplate let-dataItem=\"dataItem\"\n let-formGroup=\"formGroup\">\n <ng-container [ngTemplateOutlet]=\"column.editTemplate\" [ngTemplateOutletContext]=\"{ \n dataItem: dataItem, \n formGroup: formGroup,\n field: column.field\n }\">\n </ng-container>\n </ng-template>\n </kendo-treelist-column>\n\n <!-- Command column for editing actions -->\n <kendo-treelist-command-column *ngIf=\"editable\" title=\"Actions\" width=\"150\" [locked]=\"false\">\n <ng-template kendoTreeListCellTemplate let-isNew=\"isNew\" let-dataItem=\"dataItem\" let-cellContext=\"cellContext\">\n <lib-button *ngIf=\"!isNew\" label=\"\" iconName=\"edit\" size=\"medium\" fillMode=\"flat\" themeColor=\"primary\"\n [iconButton]=\"true\" (buttonClick)=\"onEditButtonClick(dataItem)\" [attr.aria-label]=\"'Edit ' + dataItem.name\">\n </lib-button>\n <lib-button *ngIf=\"!isNew\" label=\"\" iconName=\"delete\" size=\"medium\" fillMode=\"flat\" themeColor=\"error\"\n [iconButton]=\"true\" (buttonClick)=\"onRemoveButtonClick(dataItem)\"\n [attr.aria-label]=\"'Delete ' + dataItem.name\">\n </lib-button>\n </ng-template>\n </kendo-treelist-command-column>\n </kendo-treelist>\n\n <!-- Enhanced TreeList with Flat Binding -->\n <kendo-treelist *ngIf=\"bindingType === 'flat'\" [kendoTreeListFlatBinding]=\"data\" [parentIdField]=\"parentIdField\"\n [idField]=\"idField\" class=\"lib-tree-list__kendo-treelist\" [selectable]=\"selectable\"\n (selectionChange)=\"onSelectionChange($event)\" [sortable]=\"sortable\" [sort]=\"sort\"\n (sortChange)=\"onSortChange($event)\" [filterable]=\"filterable\" (filterChange)=\"onFilterChange($event)\"\n [pageable]=\"pageable\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\" [resizable]=\"resizable\"\n [reorderable]=\"reorderable\" [height]=\"height\" [scrollable]=\"scrollable\" [navigable]=\"editable\"\n (expand)=\"onExpand($event)\" (collapse)=\"onCollapse($event)\" (cellClick)=\"onCellClick($event)\"\n (cellClose)=\"onCellClose($event)\" (add)=\"onAdd($event)\" (edit)=\"onEdit($event)\" (cancel)=\"onCancel($event)\"\n (save)=\"onSave($event)\" (remove)=\"onRemove($event)\">\n\n <!-- Dynamic columns with templates for flat binding -->\n <kendo-treelist-column *ngFor=\"let column of columns; trackBy: trackByColumn; let i = index\" [field]=\"column.field\"\n [title]=\"column.title || column.field\" [width]=\"column.width\" [locked]=\"column.locked\" [hidden]=\"column.hidden\"\n [sortable]=\"column.sortable !== undefined ? column.sortable : sortable\"\n [filterable]=\"column.filterable !== undefined ? column.filterable : filterable\"\n [editable]=\"column.editable !== undefined ? column.editable : editable\" [format]=\"column.format\"\n [expandable]=\"i === 0\">\n\n <!-- Custom cell template -->\n <ng-template *ngIf=\"column.template\" kendoTreeListCellTemplate let-dataItem=\"dataItem\" let-rowIndex=\"rowIndex\"\n let-columnIndex=\"columnIndex\">\n <ng-container [ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem, \n rowIndex: rowIndex, \n columnIndex: columnIndex,\n field: column.field,\n value: dataItem[column.field]\n }\">\n </ng-container>\n </ng-template>\n\n <!-- Custom header template -->\n <ng-template *ngIf=\"column.headerTemplate\" kendoTreeListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"column.headerTemplate\" [ngTemplateOutletContext]=\"{ column: column }\">\n </ng-container>\n </ng-template>\n\n <!-- Custom footer template -->\n <ng-template *ngIf=\"column.footerTemplate\" kendoTreeListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"column.footerTemplate\" [ngTemplateOutletContext]=\"{ column: column }\">\n </ng-container>\n </ng-template>\n\n <!-- Edit template for inline editing -->\n <ng-template *ngIf=\"editable && column.editTemplate\" kendoTreeListEditTemplate let-dataItem=\"dataItem\"\n let-formGroup=\"formGroup\">\n <ng-container [ngTemplateOutlet]=\"column.editTemplate\" [ngTemplateOutletContext]=\"{ \n dataItem: dataItem, \n formGroup: formGroup,\n field: column.field\n }\">\n </ng-container>\n </ng-template>\n </kendo-treelist-column>\n\n <!-- Command column for editing actions -->\n <kendo-treelist-command-column *ngIf=\"editable\" title=\"Actions\" width=\"150\" [locked]=\"false\">\n <ng-template kendoTreeListCellTemplate let-isNew=\"isNew\" let-dataItem=\"dataItem\">\n <lib-button *ngIf=\"!isNew\" label=\"\" iconName=\"edit\" size=\"medium\" fillMode=\"flat\" themeColor=\"primary\"\n [iconButton]=\"true\" (buttonClick)=\"onEditButtonClick(dataItem)\" [attr.aria-label]=\"'Edit ' + dataItem.name\">\n </lib-button>\n <lib-button *ngIf=\"!isNew\" label=\"\" iconName=\"delete\" size=\"medium\" fillMode=\"flat\" themeColor=\"error\"\n [iconButton]=\"true\" (buttonClick)=\"onRemoveButtonClick(dataItem)\"\n [attr.aria-label]=\"'Delete ' + dataItem.name\">\n </lib-button>\n </ng-template>\n </kendo-treelist-command-column>\n </kendo-treelist>\n\n <!-- Loading indicator -->\n <div *ngIf=\"loading\" class=\"lib-tree-list__loading\">\n <lib-loader size=\"medium\" type=\"pulsing\" themeColor=\"primary\"></lib-loader>\n </div>\n</div>\n", styles: [".lib-tree-list{position:relative;width:100%}::ng-deep .k-grid tr{height:50px}::ng-deep .pagination-wrapper{display:flex;width:100%}::ng-deep .pagination-disabled{color:#6c6f72!important;pointer-events:none}::ng-deep .lib-grid-select-all-message-container{height:2rem;display:none;gap:.25rem;justify-content:center;align-items:center;background-color:#eceff5!important;font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important}::ng-deep .lib-grid-select-all-message-container .select-all-handler{cursor:pointer}::ng-deep .lib-grid-select-all-message-container .lib-grid-select-all-message{display:flex;gap:.25rem}::ng-deep .lib-grid-select-all-message-container .lib-grid-select-all-message .all-selected-icon{color:#198038}::ng-deep .disabled{cursor:none!important;pointer-events:none;opacity:.5}::ng-deep .lib-grid-select-all-message-show{display:flex!important}::ng-deep .k-grid .k-table-th,::ng-deep .k-grid .k-table-th.k-sorted{font-family:Inter,sans-serif!important;font-weight:600!important;font-style:normal!important;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important;background-color:#dee6f7!important;border-bottom-color:#ebecec!important;border-bottom-style:solid!important;border-bottom-width:2px!important;border-right:0px!important;border-left:0px!important;cursor:default!important}::ng-deep .k-grid .k-table-th .k-cell-inner,::ng-deep .k-grid .k-table-th.k-sorted .k-cell-inner{padding-right:.5rem;border-right:2px solid #C2D2F3!important}::ng-deep .k-grid .k-table-th .k-cell-inner .k-link,::ng-deep .k-grid .k-table-th.k-sorted .k-cell-inner .k-link{cursor:default!important}::ng-deep .k-grid .k-table-th:focus,::ng-deep .k-grid .k-table-th.k-sorted:focus{box-shadow:none!important}::ng-deep .k-grid .k-table-th.k-sorted{font-family:Inter,sans-serif!important;font-weight:600!important;font-style:normal!important;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important;background-color:#dee6f7!important}::ng-deep .k-grid tbody>tr:not(.k-detail-row):hover{background-color:#d0dcf5!important}::ng-deep .k-grid .k-table-row.k-selected>.k-table-td{background-color:#c9d7f4!important}::ng-deep .k-grid .k-table-row.k-disabled>.k-table-td{background-color:#fff!important}::ng-deep .k-grid .k-table-td{border-bottom-color:#ebecec!important;border-bottom-style:solid!important;border-bottom-width:1px!important;border-right:0px!important;border-left:0px!important}::ng-deep .k-grid td,::ng-deep .k-grid .k-table-td{white-space:nowrap!important}::ng-deep .k-table-alt-row{background-color:inherit!important}::ng-deep .k-grid .k-table-td{font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important}::ng-deep .k-grid-norecords{text-align:center!important;opacity:.4}::ng-deep .k-grid-norecords td{padding:14px 0 14px 24px!important}::ng-deep kendo-pager.k-pager-wrap.k-grid-pager{font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal!important;font-size:14px!important;line-height:20px!important;letter-spacing:.25px!important}::ng-deep .k-pager{border-style:none!important}::ng-deep .k-input-value-text{overflow:unset!important}::ng-deep .k-grid th.k-header{vertical-align:middle!important;padding-left:16px;padding-right:.5rem}::ng-deep .grid-column,::ng-deep .kebab-column,::ng-deep .delete-column{padding:0!important}::ng-deep .grid-column kendo-button,::ng-deep .kebab-column kendo-button,::ng-deep .delete-column kendo-button{align-items:center!important;justify-content:center!important;display:flex!important}::ng-deep .k-checkbox{width:20px!important;height:20px!important;border-radius:0!important}::ng-deep .k-grid .k-hierarchy-cell,::ng-deep .k-grid .k-hierarchy-col{width:0;display:none}::ng-deep .k-grid .k-detail-row .k-detail-cell{background-color:#f4f8fa!important;padding:16px!important}::ng-deep .delete-icon{color:#dc267f!important;padding-left:12px;cursor:pointer}::ng-deep .remove-tooltip kendo-tooltip.k-tooltip{background-color:#fff;color:#000}::ng-deep .hide-header .k-grid-header{border:0px!important}::ng-deep .k-grouping-header{background-color:#eceff5!important}::ng-deep .k-grid-toolbar{padding:4px 16px!important;height:54px;background-color:#eceff5!important}::ng-deep .k-grid td:not(.kebab-column):not(.expand-column){padding-left:16px!important;padding-right:16px!important}::ng-deep .view-header .k-table-thead tr{height:50px}::ng-deep .hide-header .k-table-thead tr{height:0px;padding:0;display:block}::ng-deep td.kebab-column{display:flex;justify-content:center;align-items:center;height:inherit}::ng-deep .k-grid .k-table-td>.k-checkbox{vertical-align:middle!important}::ng-deep .kebab .k-button,::ng-deep .expand-column .k-button{border:0px}::ng-deep .expand-column{pointer-events:all!important}::ng-deep .expand-column-text{margin-right:32px}::ng-deep .expand-row{display:flex;align-items:center;justify-content:flex-end}::ng-deep .column-cursor-pointer{cursor:pointer}::ng-deep .column-content-nowrap .k-grid .k-table-th,::ng-deep .column-content-nowrap .k-grid td,::ng-deep .column-content-nowrap .k-grid .k-table-td{white-space:nowrap;text-overflow:clip}::ng-deep kendo-grid.k-grid .k-table-alt-row .k-grid-content-sticky,::ng-deep kendo-grid.k-grid .k-grid-row-sticky.k-table-alt-row td,::ng-deep kendo-grid.k-grid .k-grid-row-sticky.k-table-alt-row .k-table-td,::ng-deep .k-master-row.k-table-alt-row .k-grid-content-sticky,::ng-deep .k-master-row.k-table-alt-row .k-grid-row-sticky{background-color:#fff}::ng-deep kendo-grid.k-grid .k-grid-content-sticky:hover,::ng-deep kendo-grid.k-grid .k-grid-content-sticky.k-hover,::ng-deep kendo-grid.k-grid .k-table-row:hover .k-grid-content-sticky{background-color:#d0dcf5!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TreeListModule$1 }, { kind: "component", type: i2$7.TreeListComponent, selector: "kendo-treelist", inputs: ["aria-label", "data", "pageSize", "height", "rowHeight", "skip", "scrollable", "sort", "trackBy", "filter", "virtualColumns", "filterable", "sortable", "pageable", "navigable", "autoSize", "rowClass", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "idField", "selectable", "isSelected", "rowReorderable", "columns", "fetchChildren", "hasChildren", "isExpanded"], outputs: ["selectionChange", "filterChange", "pageChange", "sortChange", "dataStateChange", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "scrollBottom", "contentScroll", "expand", "collapse", "expandStateChange", "rowReorder"], exportAs: ["kendoTreeList"] }, { kind: "directive", type: i2$7.HierarchyBindingDirective, selector: "[kendoTreeListHierarchyBinding]", inputs: ["childrenField", "kendoTreeListHierarchyBinding"], exportAs: ["kendoTreeListHierarchyBinding"] }, { kind: "directive", type: i2$7.FlatBindingDirective, selector: "[kendoTreeListFlatBinding]", inputs: ["parentIdField", "idField", "kendoTreeListFlatBinding"], exportAs: ["kendoTreeListFlatBinding"] }, { kind: "directive", type: i2$7.ExpandableDirective, selector: "[kendoTreeListExpandable]", inputs: ["expandedKeys", "initiallyExpanded", "expandBy"], outputs: ["expandedKeysChange"], exportAs: ["kendoTreeListExpandable"] }, { kind: "directive", type: i2$7.SelectableDirective, selector: "[kendoTreeListSelectable]", inputs: ["selectable", "selectedItems", "itemKey", "columnKey"], outputs: ["selectedItemsChange"], exportAs: ["kendoTreeListSelectable"] }, { kind: "component", type: i2$7.ColumnComponent, selector: "kendo-treelist-column", inputs: ["expandable", "field", "format", "sortable", "editor", "filter", "filterable", "editable"] }, { kind: "component", type: i2$7.CommandColumnComponent, selector: "kendo-treelist-command-column" }, { kind: "directive", type: i2$7.CellTemplateDirective, selector: "[kendoTreeListCellTemplate]" }, { kind: "directive", type: i2$7.EditTemplateDirective, selector: "[kendoTreeListEditTemplate]" }, { kind: "directive", type: i2$7.FooterTemplateDirective, selector: "[kendoTreeListFooterTemplate]" }, { kind: "directive", type: i2$7.HeaderTemplateDirective, selector: "[kendoTreeListHeaderTemplate]" }, { kind: "ngmodule", type: IconsModule }, { kind: "component", type: ButtonComponent, selector: "lib-button", inputs: ["size", "rounded", "fillMode", "themeColor", "label", "iconName", "disabled", "toggleable", "iconPosition", "fontType", "width", "iconButton", "projectedIcon", "formatFn", "iconFontSize"], outputs: ["buttonClick"] }, { kind: "component", type: LoaderComponent, selector: "lib-loader", inputs: ["size", "type", "themeColor"] }] }); }
4480
+ }
4481
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeListComponent, decorators: [{
4482
+ type: Component,
4483
+ args: [{ standalone: true, selector: 'lib-tree-list', imports: [
4484
+ CommonModule,
4485
+ TreeListModule$1,
4486
+ IconsModule,
4487
+ ButtonComponent,
4488
+ IconComponent,
4489
+ LoaderComponent
4490
+ ], template: "<div [class]=\"getTreeListClasses()\">\n <!-- Enhanced TreeList with Hierarchy Binding -->\n <kendo-treelist *ngIf=\"bindingType === 'hierarchy'\" [kendoTreeListHierarchyBinding]=\"data\"\n [childrenField]=\"childrenField\" [idField]=\"idField\" class=\"lib-tree-list__kendo-treelist\" [selectable]=\"selectable\"\n (selectionChange)=\"onSelectionChange($event)\" [sortable]=\"sortable\" [sort]=\"sort\"\n (sortChange)=\"onSortChange($event)\" [filterable]=\"filterable\" (filterChange)=\"onFilterChange($event)\"\n [pageable]=\"pageable\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\" [resizable]=\"resizable\"\n [reorderable]=\"reorderable\" [height]=\"height\" [scrollable]=\"scrollable\" [navigable]=\"editable\"\n (expand)=\"onExpand($event)\" (collapse)=\"onCollapse($event)\" (cellClick)=\"onCellClick($event)\"\n (cellClose)=\"onCellClose($event)\" (add)=\"onAdd($event)\" (edit)=\"onEdit($event)\" (cancel)=\"onCancel($event)\"\n (save)=\"onSave($event)\" (remove)=\"onRemove($event)\" kendoTreeListExpandable [initiallyExpanded]=\"true\"\n kendoTreeListSelectable>\n\n <!-- Dynamic columns with templates -->\n <kendo-treelist-column *ngFor=\"let column of columns; trackBy: trackByColumn; let i = index\" [field]=\"column.field\"\n [title]=\"column.title || column.field\" [width]=\"column.width\" [locked]=\"column.locked\" [hidden]=\"column.hidden\"\n [sortable]=\"column.sortable !== undefined ? column.sortable : sortable\"\n [filterable]=\"column.filterable !== undefined ? column.filterable : filterable\"\n [editable]=\"column.editable !== undefined ? column.editable : editable\" [format]=\"column.format\"\n [expandable]=\"i === 0\">\n\n <!-- Custom cell template -->\n <ng-template *ngIf=\"column.template\" kendoTreeListCellTemplate let-dataItem=\"dataItem\" let-rowIndex=\"rowIndex\"\n let-columnIndex=\"columnIndex\">\n <ng-container [ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem, \n rowIndex: rowIndex, \n columnIndex: columnIndex,\n field: column.field,\n value: dataItem[column.field]\n }\">\n </ng-container>\n </ng-template>\n\n <!-- Custom header template -->\n <ng-template *ngIf=\"column.headerTemplate\" kendoTreeListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"column.headerTemplate\" [ngTemplateOutletContext]=\"{ column: column }\">\n </ng-container>\n </ng-template>\n\n <!-- Custom footer template -->\n <ng-template *ngIf=\"column.footerTemplate\" kendoTreeListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"column.footerTemplate\" [ngTemplateOutletContext]=\"{ column: column }\">\n </ng-container>\n </ng-template>\n\n <!-- Edit template for inline editing -->\n <ng-template *ngIf=\"editable && column.editTemplate\" kendoTreeListEditTemplate let-dataItem=\"dataItem\"\n let-formGroup=\"formGroup\">\n <ng-container [ngTemplateOutlet]=\"column.editTemplate\" [ngTemplateOutletContext]=\"{ \n dataItem: dataItem, \n formGroup: formGroup,\n field: column.field\n }\">\n </ng-container>\n </ng-template>\n </kendo-treelist-column>\n\n <!-- Command column for editing actions -->\n <kendo-treelist-command-column *ngIf=\"editable\" title=\"Actions\" width=\"150\" [locked]=\"false\">\n <ng-template kendoTreeListCellTemplate let-isNew=\"isNew\" let-dataItem=\"dataItem\" let-cellContext=\"cellContext\">\n <lib-button *ngIf=\"!isNew\" label=\"\" iconName=\"edit\" size=\"medium\" fillMode=\"flat\" themeColor=\"primary\"\n [iconButton]=\"true\" (buttonClick)=\"onEditButtonClick(dataItem)\" [attr.aria-label]=\"'Edit ' + dataItem.name\">\n </lib-button>\n <lib-button *ngIf=\"!isNew\" label=\"\" iconName=\"delete\" size=\"medium\" fillMode=\"flat\" themeColor=\"error\"\n [iconButton]=\"true\" (buttonClick)=\"onRemoveButtonClick(dataItem)\"\n [attr.aria-label]=\"'Delete ' + dataItem.name\">\n </lib-button>\n </ng-template>\n </kendo-treelist-command-column>\n </kendo-treelist>\n\n <!-- Enhanced TreeList with Flat Binding -->\n <kendo-treelist *ngIf=\"bindingType === 'flat'\" [kendoTreeListFlatBinding]=\"data\" [parentIdField]=\"parentIdField\"\n [idField]=\"idField\" class=\"lib-tree-list__kendo-treelist\" [selectable]=\"selectable\"\n (selectionChange)=\"onSelectionChange($event)\" [sortable]=\"sortable\" [sort]=\"sort\"\n (sortChange)=\"onSortChange($event)\" [filterable]=\"filterable\" (filterChange)=\"onFilterChange($event)\"\n [pageable]=\"pageable\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\" [resizable]=\"resizable\"\n [reorderable]=\"reorderable\" [height]=\"height\" [scrollable]=\"scrollable\" [navigable]=\"editable\"\n (expand)=\"onExpand($event)\" (collapse)=\"onCollapse($event)\" (cellClick)=\"onCellClick($event)\"\n (cellClose)=\"onCellClose($event)\" (add)=\"onAdd($event)\" (edit)=\"onEdit($event)\" (cancel)=\"onCancel($event)\"\n (save)=\"onSave($event)\" (remove)=\"onRemove($event)\">\n\n <!-- Dynamic columns with templates for flat binding -->\n <kendo-treelist-column *ngFor=\"let column of columns; trackBy: trackByColumn; let i = index\" [field]=\"column.field\"\n [title]=\"column.title || column.field\" [width]=\"column.width\" [locked]=\"column.locked\" [hidden]=\"column.hidden\"\n [sortable]=\"column.sortable !== undefined ? column.sortable : sortable\"\n [filterable]=\"column.filterable !== undefined ? column.filterable : filterable\"\n [editable]=\"column.editable !== undefined ? column.editable : editable\" [format]=\"column.format\"\n [expandable]=\"i === 0\">\n\n <!-- Custom cell template -->\n <ng-template *ngIf=\"column.template\" kendoTreeListCellTemplate let-dataItem=\"dataItem\" let-rowIndex=\"rowIndex\"\n let-columnIndex=\"columnIndex\">\n <ng-container [ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem, \n rowIndex: rowIndex, \n columnIndex: columnIndex,\n field: column.field,\n value: dataItem[column.field]\n }\">\n </ng-container>\n </ng-template>\n\n <!-- Custom header template -->\n <ng-template *ngIf=\"column.headerTemplate\" kendoTreeListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"column.headerTemplate\" [ngTemplateOutletContext]=\"{ column: column }\">\n </ng-container>\n </ng-template>\n\n <!-- Custom footer template -->\n <ng-template *ngIf=\"column.footerTemplate\" kendoTreeListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"column.footerTemplate\" [ngTemplateOutletContext]=\"{ column: column }\">\n </ng-container>\n </ng-template>\n\n <!-- Edit template for inline editing -->\n <ng-template *ngIf=\"editable && column.editTemplate\" kendoTreeListEditTemplate let-dataItem=\"dataItem\"\n let-formGroup=\"formGroup\">\n <ng-container [ngTemplateOutlet]=\"column.editTemplate\" [ngTemplateOutletContext]=\"{ \n dataItem: dataItem, \n formGroup: formGroup,\n field: column.field\n }\">\n </ng-container>\n </ng-template>\n </kendo-treelist-column>\n\n <!-- Command column for editing actions -->\n <kendo-treelist-command-column *ngIf=\"editable\" title=\"Actions\" width=\"150\" [locked]=\"false\">\n <ng-template kendoTreeListCellTemplate let-isNew=\"isNew\" let-dataItem=\"dataItem\">\n <lib-button *ngIf=\"!isNew\" label=\"\" iconName=\"edit\" size=\"medium\" fillMode=\"flat\" themeColor=\"primary\"\n [iconButton]=\"true\" (buttonClick)=\"onEditButtonClick(dataItem)\" [attr.aria-label]=\"'Edit ' + dataItem.name\">\n </lib-button>\n <lib-button *ngIf=\"!isNew\" label=\"\" iconName=\"delete\" size=\"medium\" fillMode=\"flat\" themeColor=\"error\"\n [iconButton]=\"true\" (buttonClick)=\"onRemoveButtonClick(dataItem)\"\n [attr.aria-label]=\"'Delete ' + dataItem.name\">\n </lib-button>\n </ng-template>\n </kendo-treelist-command-column>\n </kendo-treelist>\n\n <!-- Loading indicator -->\n <div *ngIf=\"loading\" class=\"lib-tree-list__loading\">\n <lib-loader size=\"medium\" type=\"pulsing\" themeColor=\"primary\"></lib-loader>\n </div>\n</div>\n", styles: [".lib-tree-list{position:relative;width:100%}::ng-deep .k-grid tr{height:50px}::ng-deep .pagination-wrapper{display:flex;width:100%}::ng-deep .pagination-disabled{color:#6c6f72!important;pointer-events:none}::ng-deep .lib-grid-select-all-message-container{height:2rem;display:none;gap:.25rem;justify-content:center;align-items:center;background-color:#eceff5!important;font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important}::ng-deep .lib-grid-select-all-message-container .select-all-handler{cursor:pointer}::ng-deep .lib-grid-select-all-message-container .lib-grid-select-all-message{display:flex;gap:.25rem}::ng-deep .lib-grid-select-all-message-container .lib-grid-select-all-message .all-selected-icon{color:#198038}::ng-deep .disabled{cursor:none!important;pointer-events:none;opacity:.5}::ng-deep .lib-grid-select-all-message-show{display:flex!important}::ng-deep .k-grid .k-table-th,::ng-deep .k-grid .k-table-th.k-sorted{font-family:Inter,sans-serif!important;font-weight:600!important;font-style:normal!important;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important;background-color:#dee6f7!important;border-bottom-color:#ebecec!important;border-bottom-style:solid!important;border-bottom-width:2px!important;border-right:0px!important;border-left:0px!important;cursor:default!important}::ng-deep .k-grid .k-table-th .k-cell-inner,::ng-deep .k-grid .k-table-th.k-sorted .k-cell-inner{padding-right:.5rem;border-right:2px solid #C2D2F3!important}::ng-deep .k-grid .k-table-th .k-cell-inner .k-link,::ng-deep .k-grid .k-table-th.k-sorted .k-cell-inner .k-link{cursor:default!important}::ng-deep .k-grid .k-table-th:focus,::ng-deep .k-grid .k-table-th.k-sorted:focus{box-shadow:none!important}::ng-deep .k-grid .k-table-th.k-sorted{font-family:Inter,sans-serif!important;font-weight:600!important;font-style:normal!important;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important;background-color:#dee6f7!important}::ng-deep .k-grid tbody>tr:not(.k-detail-row):hover{background-color:#d0dcf5!important}::ng-deep .k-grid .k-table-row.k-selected>.k-table-td{background-color:#c9d7f4!important}::ng-deep .k-grid .k-table-row.k-disabled>.k-table-td{background-color:#fff!important}::ng-deep .k-grid .k-table-td{border-bottom-color:#ebecec!important;border-bottom-style:solid!important;border-bottom-width:1px!important;border-right:0px!important;border-left:0px!important}::ng-deep .k-grid td,::ng-deep .k-grid .k-table-td{white-space:nowrap!important}::ng-deep .k-table-alt-row{background-color:inherit!important}::ng-deep .k-grid .k-table-td{font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important}::ng-deep .k-grid-norecords{text-align:center!important;opacity:.4}::ng-deep .k-grid-norecords td{padding:14px 0 14px 24px!important}::ng-deep kendo-pager.k-pager-wrap.k-grid-pager{font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal!important;font-size:14px!important;line-height:20px!important;letter-spacing:.25px!important}::ng-deep .k-pager{border-style:none!important}::ng-deep .k-input-value-text{overflow:unset!important}::ng-deep .k-grid th.k-header{vertical-align:middle!important;padding-left:16px;padding-right:.5rem}::ng-deep .grid-column,::ng-deep .kebab-column,::ng-deep .delete-column{padding:0!important}::ng-deep .grid-column kendo-button,::ng-deep .kebab-column kendo-button,::ng-deep .delete-column kendo-button{align-items:center!important;justify-content:center!important;display:flex!important}::ng-deep .k-checkbox{width:20px!important;height:20px!important;border-radius:0!important}::ng-deep .k-grid .k-hierarchy-cell,::ng-deep .k-grid .k-hierarchy-col{width:0;display:none}::ng-deep .k-grid .k-detail-row .k-detail-cell{background-color:#f4f8fa!important;padding:16px!important}::ng-deep .delete-icon{color:#dc267f!important;padding-left:12px;cursor:pointer}::ng-deep .remove-tooltip kendo-tooltip.k-tooltip{background-color:#fff;color:#000}::ng-deep .hide-header .k-grid-header{border:0px!important}::ng-deep .k-grouping-header{background-color:#eceff5!important}::ng-deep .k-grid-toolbar{padding:4px 16px!important;height:54px;background-color:#eceff5!important}::ng-deep .k-grid td:not(.kebab-column):not(.expand-column){padding-left:16px!important;padding-right:16px!important}::ng-deep .view-header .k-table-thead tr{height:50px}::ng-deep .hide-header .k-table-thead tr{height:0px;padding:0;display:block}::ng-deep td.kebab-column{display:flex;justify-content:center;align-items:center;height:inherit}::ng-deep .k-grid .k-table-td>.k-checkbox{vertical-align:middle!important}::ng-deep .kebab .k-button,::ng-deep .expand-column .k-button{border:0px}::ng-deep .expand-column{pointer-events:all!important}::ng-deep .expand-column-text{margin-right:32px}::ng-deep .expand-row{display:flex;align-items:center;justify-content:flex-end}::ng-deep .column-cursor-pointer{cursor:pointer}::ng-deep .column-content-nowrap .k-grid .k-table-th,::ng-deep .column-content-nowrap .k-grid td,::ng-deep .column-content-nowrap .k-grid .k-table-td{white-space:nowrap;text-overflow:clip}::ng-deep kendo-grid.k-grid .k-table-alt-row .k-grid-content-sticky,::ng-deep kendo-grid.k-grid .k-grid-row-sticky.k-table-alt-row td,::ng-deep kendo-grid.k-grid .k-grid-row-sticky.k-table-alt-row .k-table-td,::ng-deep .k-master-row.k-table-alt-row .k-grid-content-sticky,::ng-deep .k-master-row.k-table-alt-row .k-grid-row-sticky{background-color:#fff}::ng-deep kendo-grid.k-grid .k-grid-content-sticky:hover,::ng-deep kendo-grid.k-grid .k-grid-content-sticky.k-hover,::ng-deep kendo-grid.k-grid .k-table-row:hover .k-grid-content-sticky{background-color:#d0dcf5!important}\n"] }]
4491
+ }], propDecorators: { treeListElement: [{
4492
+ type: ViewChild,
4493
+ args: ['treeListElement', { static: false }]
4494
+ }], data: [{
4495
+ type: Input
4496
+ }], columns: [{
4497
+ type: Input
4498
+ }], idField: [{
4499
+ type: Input
4500
+ }], childrenField: [{
4501
+ type: Input
4502
+ }], parentIdField: [{
4503
+ type: Input
4504
+ }], bindingType: [{
4505
+ type: Input
4506
+ }], fetchChildren: [{
4507
+ type: Input
4508
+ }], hasChildren: [{
4509
+ type: Input
4510
+ }], isExpanded: [{
4511
+ type: Input
4512
+ }], selectable: [{
4513
+ type: Input
4514
+ }], sortable: [{
4515
+ type: Input
4516
+ }], filterable: [{
4517
+ type: Input
4518
+ }], resizable: [{
4519
+ type: Input
4520
+ }], reorderable: [{
4521
+ type: Input
4522
+ }], editable: [{
4523
+ type: Input
4524
+ }], loading: [{
4525
+ type: Input
4526
+ }], height: [{
4527
+ type: Input
4528
+ }], scrollable: [{
4529
+ type: Input
4530
+ }], pageSize: [{
4531
+ type: Input
4532
+ }], pageable: [{
4533
+ type: Input
4534
+ }], sort: [{
4535
+ type: Input
4536
+ }], cellTemplate: [{
4537
+ type: Input
4538
+ }], headerTemplate: [{
4539
+ type: Input
4540
+ }], footerTemplate: [{
4541
+ type: Input
4542
+ }], editTemplate: [{
4543
+ type: Input
4544
+ }], commandTemplate: [{
4545
+ type: Input
4546
+ }], noRecordsTemplate: [{
4547
+ type: Input
4548
+ }], loadingTemplate: [{
4549
+ type: Input
4550
+ }], selectionChange: [{
4551
+ type: Output
4552
+ }], expand: [{
4553
+ type: Output
4554
+ }], collapse: [{
4555
+ type: Output
4556
+ }], sortChange: [{
4557
+ type: Output
4558
+ }], filterChange: [{
4559
+ type: Output
4560
+ }], pageChange: [{
4561
+ type: Output
4562
+ }], add: [{
4563
+ type: Output
4564
+ }], edit: [{
4565
+ type: Output
4566
+ }], cancelEvent: [{
4567
+ type: Output
4568
+ }], save: [{
4569
+ type: Output
4570
+ }], remove: [{
4571
+ type: Output
4572
+ }], cellClick: [{
4573
+ type: Output
4574
+ }], cellClose: [{
4575
+ type: Output
4576
+ }] } });
4577
+
4578
+ class TreeListModule {
4579
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4580
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: TreeListModule, imports: [TreeListComponent,
4581
+ CommonModule,
4582
+ TreeListModule$1,
4583
+ IconsModule,
4584
+ ButtonModule,
4585
+ IconModule,
4586
+ LoaderModule], exports: [TreeListComponent] }); }
4587
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeListModule, imports: [TreeListComponent,
4588
+ CommonModule,
4589
+ TreeListModule$1,
4590
+ IconsModule,
4591
+ ButtonModule,
4592
+ IconModule,
4593
+ LoaderModule] }); }
4594
+ }
4595
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeListModule, decorators: [{
4596
+ type: NgModule,
4597
+ args: [{
4598
+ imports: [
4599
+ TreeListComponent,
4600
+ CommonModule,
4601
+ TreeListModule$1,
4602
+ IconsModule,
4603
+ ButtonModule,
4604
+ IconModule,
4605
+ LoaderModule
4606
+ ],
4607
+ exports: [
4608
+ TreeListComponent
4609
+ ]
4610
+ }]
4611
+ }] });
4612
+
4613
+ /**
4614
+ * Custom TreeView component that wraps Kendo's TreeView with design system styling.
4615
+ *
4616
+ * This component provides a hierarchical tree structure for displaying and navigating data.
4617
+ * It supports selection, expansion, icons, and custom templates.
4618
+ */
4619
+ class TreeViewComponent {
4620
+ constructor() {
4621
+ /**
4622
+ * The data source for the tree view
4623
+ */
4624
+ this.data = [];
4625
+ // Basic Properties
4626
+ this.selectable = false;
4627
+ this.filterable = false;
4628
+ this.checkboxes = false;
4629
+ this.checkable = false;
4630
+ this.dragAndDrop = false;
4631
+ this.expandable = true;
4632
+ this.loading = false;
4633
+ this.animate = true;
4634
+ this.size = 'medium';
4635
+ // Field Configuration
4636
+ this.textField = 'text';
4637
+ this.childrenField = 'children';
4638
+ this.hasChildrenField = 'hasChildren';
4639
+ this.expandedField = 'expanded';
4640
+ this.selectedField = 'selected';
4641
+ this.disabledField = 'disabled';
4642
+ this.checkedField = 'checked';
4643
+ this.iconClassField = 'iconClass';
4644
+ this.iconField = 'icon';
4645
+ this.imageUrlField = 'imageUrl';
4646
+ this.spriteCssClassField = 'spriteCssClass';
4647
+ // Selection and Expansion
4648
+ this.disabledKeys = [];
4649
+ this.expandBy = ''; //if expandBy is empty, expandedKeys will use index to track expansion. Otherwise, it will use the field name to decide the expandedKeys.
4650
+ this.expandedKeys = [];
4651
+ this.selectedKeys = [];
4652
+ this.checkedKeys = [];
4653
+ this.expandDisabledNodes = false;
4654
+ this.disableNodes = false;
4655
+ // Checkbox Configuration
4656
+ this.enableCheck = false;
4657
+ this.checkChildren = false;
4658
+ this.checkDisabledChildren = false;
4659
+ this.checkParents = false;
4660
+ this.checkOnClick = false;
4661
+ this.uncheckCollapsedChildren = false;
4662
+ this.checkMode = "multiple";
4663
+ this.pageSize = 0;
4664
+ this.loadOnDemand = false;
4665
+ // Filtering
4666
+ this.filter = '';
4667
+ // Keyboard Navigation
4668
+ this.navigable = true;
4669
+ // Basic Events
4670
+ this.selectionChange = new EventEmitter();
4671
+ this.expand = new EventEmitter();
4672
+ this.collapse = new EventEmitter();
4673
+ this.checkedChange = new EventEmitter();
4674
+ this.nodeClick = new EventEmitter();
4675
+ this.nodeDblClick = new EventEmitter();
4676
+ // Drag and Drop Events
4677
+ this.nodeDragStart = new EventEmitter();
4678
+ this.nodeDrag = new EventEmitter();
4679
+ this.nodeDrop = new EventEmitter();
4680
+ this.nodeDragEnd = new EventEmitter();
4681
+ this.addItem = new EventEmitter();
4682
+ this.removeItem = new EventEmitter();
4683
+ // Key Change Events (Two-way binding support)
4684
+ this.expandedKeysChange = new EventEmitter();
4685
+ this.selectedKeysChange = new EventEmitter();
4686
+ this.checkedKeysChange = new EventEmitter();
4687
+ // Filter Events
4688
+ this.filterChange = new EventEmitter();
4689
+ // Load More Events
4690
+ this.loadMore = new EventEmitter();
4691
+ // Children Loading Events
4692
+ this.childrenLoaded = new EventEmitter();
4693
+ /**
4694
+ * Currently selected items
4695
+ */
4696
+ this.selectedItems = [];
4697
+ /**
4698
+ * Currently checked items
4699
+ */
4700
+ this.checkedItems = [];
4701
+ /**
4702
+ * Extracts and returns child items from a tree node using the configured children field.
4703
+ * Provides a standardized way for the Kendo TreeView to access hierarchical child data
4704
+ * regardless of the actual field name used in the data structure.
4705
+ *
4706
+ * @param dataItem - The tree node data item to extract children from
4707
+ * @returns Observable array of child items or empty array if no children exist
4708
+ */
4709
+ this.children = (dataItem) => of(dataItem[this.childrenField]);
4710
+ /**
4711
+ * Determines whether a tree node has child items for proper expand/collapse icon display.
4712
+ * Checks for the existence of children property and logs the result for debugging purposes.
4713
+ * Used by the TreeView to decide whether to show expansion indicators for each node.
4714
+ *
4715
+ * @param dataItem - The tree node data item to check for children
4716
+ * @returns Boolean indicating whether the node has children that can be expanded
4717
+ */
4718
+ this.hasChildren = (dataItem) => { return !!dataItem[this.childrenField]; };
4719
+ }
4720
+ /**
4721
+ * Generates CSS classes for the tree-view container element based on current component state.
4722
+ * Applies conditional styling classes to reflect loading states and enable appropriate visual feedback.
4723
+ *
4724
+ * @returns A space-separated string of CSS class names to apply to the tree-view container
4725
+ */
4726
+ getTreeViewClasses() {
4727
+ const classes = ['lib-tree-view'];
4728
+ if (this.loading) {
4729
+ classes.push('lib-tree-view--loading');
4730
+ }
4731
+ return classes.join(' ');
4732
+ }
4733
+ /**
4734
+ * Provides comprehensive checkable settings configuration for the Kendo TreeView component.
4735
+ * Aggregates all checkbox-related input properties into a single configuration object
4736
+ * that controls checkbox behavior including parent-child relationships and interaction modes.
4737
+ *
4738
+ * @returns CheckableSettings object with all checkbox configuration options
4739
+ */
4740
+ get checkableSettings() {
4741
+ return {
4742
+ checkChildren: this.checkChildren,
4743
+ checkDisabledChildren: this.checkDisabledChildren,
4744
+ checkParents: this.checkParents,
4745
+ enabled: this.enableCheck,
4746
+ mode: this.checkMode,
4747
+ checkOnClick: this.checkOnClick,
4748
+ uncheckCollapsedChildren: this.uncheckCollapsedChildren,
4749
+ };
4750
+ }
4751
+ // Event Handlers
4752
+ /**
4753
+ * Handles tree node selection changes when users select or deselect nodes.
4754
+ * Updates the internal selected items state and propagates the selection event
4755
+ * to parent components for external handling and synchronization.
4756
+ *
4757
+ * @param event - The selection change event containing the newly selected items array
4758
+ */
4759
+ onSelectionChange(event) {
4760
+ this.selectedItems = event;
4761
+ this.selectionChange.emit(event);
4762
+ }
4763
+ /**
4764
+ * Handles checkbox state changes when users check or uncheck tree nodes.
4765
+ * Updates the internal checked items state and emits the change event to notify
4766
+ * parent components of the new checkbox selections for form validation or data processing.
4767
+ *
4768
+ * @param event - The checked change event containing the newly checked items array
4769
+ */
4770
+ onCheckedChange(event) {
4771
+ this.checkedItems = event;
4772
+ this.checkedChange.emit(event);
4773
+ }
4774
+ /**
4775
+ * Handles tree node expansion events when users click expand icons or use keyboard navigation.
4776
+ * Updates the node's expanded state in the data model and emits the expand event
4777
+ * for parent components to handle lazy loading of child data or state persistence.
4778
+ *
4779
+ * @param event - The expand event containing the expanded node data and context information
4780
+ */
4781
+ onExpand(event) {
4782
+ if (event.dataItem) {
4783
+ event.dataItem[this.expandedField] = true;
4784
+ }
4785
+ this.expand.emit(event);
4786
+ }
4787
+ /**
4788
+ * Handles tree node collapse events when users click collapse icons or use keyboard navigation.
4789
+ * Updates the node's expanded state in the data model and emits the collapse event
4790
+ * for parent components to handle state cleanup or memory optimization.
4791
+ *
4792
+ * @param event - The collapse event containing the collapsed node data and context information
4793
+ */
4794
+ onCollapse(event) {
4795
+ if (event.dataItem) {
4796
+ event.dataItem[this.expandedField] = false;
4797
+ }
4798
+ this.collapse.emit(event);
4799
+ }
4800
+ /**
4801
+ * Handles single-click events on tree nodes for custom interaction handling.
4802
+ * Propagates click events to parent components for navigation, selection logic,
4803
+ * or custom actions based on the clicked node's data and context.
4804
+ *
4805
+ * @param event - The node click event containing clicked node data and mouse event details
4806
+ */
4807
+ onNodeClick(event) {
4808
+ this.nodeClick.emit(event);
4809
+ }
4810
+ /**
4811
+ * Handles double-click events on tree nodes for enhanced interaction patterns.
4812
+ * Typically used for opening detailed views, editing modes, or quick actions
4813
+ * that differ from single-click behavior. Emits event for parent component handling.
4814
+ *
4815
+ * @param event - The node double-click event containing node data and mouse event details
4816
+ */
4817
+ onNodeDblClick(event) {
4818
+ this.nodeDblClick.emit(event);
4819
+ }
4820
+ /**
4821
+ * Handles the initiation of drag operations when users start dragging tree nodes.
4822
+ * Validates that drag-and-drop functionality is enabled before proceeding and
4823
+ * emits the drag start event for parent components to handle drag state setup.
4824
+ *
4825
+ * @param event - The tree item drag start event containing source node and drag context
4826
+ */
4827
+ onNodeDragStart(event) {
4828
+ if (!this.dragAndDrop) {
4829
+ return;
4830
+ }
4831
+ this.nodeDragStart.emit(event);
4832
+ }
4833
+ /**
4834
+ * Handles ongoing drag operations as users move nodes during drag-and-drop actions.
4835
+ * Provides real-time feedback and validation during the drag process, allowing
4836
+ * parent components to update UI indicators or validate drop targets.
4837
+ *
4838
+ * @param event - The tree item drag event containing current drag position and target information
4839
+ */
4840
+ onNodeDrag(event) {
4841
+ this.nodeDrag.emit(event);
4842
+ }
4843
+ /**
4844
+ * Handles the completion of drag operations when users finish dragging nodes.
4845
+ * Provides cleanup and final processing for drag-and-drop operations, allowing
4846
+ * parent components to finalize data updates and reset drag-related UI states.
4847
+ *
4848
+ * @param event - The tree item drag end event containing final drag state and completion context
4849
+ */
4850
+ onNodeDragEnd(event) {
4851
+ this.nodeDragEnd.emit(event);
4852
+ }
4853
+ /**
4854
+ * Handles item addition events when new nodes are added to the tree structure.
4855
+ * Propagates add events to parent components for data persistence, validation,
4856
+ * and tree structure updates to maintain data integrity.
4857
+ *
4858
+ * @param event - The tree item add event containing new item data and insertion context
4859
+ */
4860
+ onAddItem(event) {
4861
+ this.addItem.emit(event);
4862
+ }
4863
+ /**
4864
+ * Handles item removal events when nodes are deleted from the tree structure.
4865
+ * Propagates remove events to parent components for confirmation dialogs, data cleanup,
4866
+ * and cascading deletions of child nodes when necessary.
4867
+ *
4868
+ * @param event - The tree item remove event containing deleted item data and context
4869
+ */
4870
+ onRemoveItem(event) {
4871
+ this.removeItem.emit(event);
4872
+ }
4873
+ /**
4874
+ * Handles expanded keys changes for two-way binding support with parent components.
4875
+ * Synchronizes internal expanded state with external data binding, enabling
4876
+ * programmatic control of tree expansion and state persistence across component updates.
4877
+ *
4878
+ * @param keys - Array of string keys representing currently expanded tree nodes
4879
+ */
4880
+ onExpandedKeysChange(keys) {
4881
+ this.expandedKeys = keys;
4882
+ this.expandedKeysChange.emit(keys);
4883
+ }
4884
+ /**
4885
+ * Handles selected keys changes for two-way binding support with parent components.
4886
+ * Synchronizes internal selection state with external data binding, enabling
4887
+ * programmatic control of tree selection and form integration capabilities.
4888
+ *
4889
+ * @param keys - Array of string keys representing currently selected tree nodes
4890
+ */
4891
+ onSelectedKeysChange(keys) {
4892
+ this.selectedKeys = keys;
4893
+ this.selectedKeysChange.emit(keys);
4894
+ }
4895
+ /**
4896
+ * Handles checked keys changes for two-way binding support with parent components.
4897
+ * Synchronizes internal checkbox state with external data binding, enabling
4898
+ * programmatic control of checkbox selections and form validation integration.
4899
+ *
4900
+ * @param keys - Array of string keys representing currently checked tree nodes
4901
+ */
4902
+ onCheckedKeysChange(keys) {
4903
+ this.checkedKeys = keys;
4904
+ this.checkedKeysChange.emit(keys);
4905
+ }
4906
+ /**
4907
+ * Handles filter text changes when users type in search fields or apply filtering criteria.
4908
+ * Updates the internal filter state and propagates changes to parent components
4909
+ * for server-side filtering or custom search logic implementation.
4910
+ *
4911
+ * @param filter - The filter string entered by the user for tree node searching
4912
+ */
4913
+ onFilterChange(filter) {
4914
+ this.filter = filter;
4915
+ this.filterChange.emit(filter);
4916
+ }
4917
+ /**
4918
+ * Handle load more event
4919
+ */
4920
+ onLoadMore(event) {
4921
+ this.loadMore.emit(event);
4922
+ }
4923
+ /**
4924
+ * Handle children loaded event
4925
+ */
4926
+ onChildrenLoaded(event) {
4927
+ this.childrenLoaded.emit(event);
4928
+ }
4929
+ // Utility Methods
4930
+ /**
4931
+ * Expand all nodes
4932
+ */
4933
+ expandAll() {
4934
+ if (this.treeViewElement) {
4935
+ // Implementation depends on Kendo TreeView API
4936
+ }
4937
+ }
4938
+ /**
4939
+ * Get item from lookup
4940
+ */
4941
+ itemLookup(index) {
4942
+ if (this.treeViewElement) {
4943
+ return this.treeViewElement.itemLookup(index);
4944
+ }
4945
+ return undefined;
4946
+ }
4947
+ /**
4948
+ * Log function for debugging events
4949
+ */
4950
+ log(eventName, event) {
4951
+ console.log(`${eventName}:`, event);
4952
+ }
4953
+ /**
4954
+ * Handle drop event with custom logic
4955
+ */
4956
+ handleDrop(event) {
4957
+ console.log('handleDrop:', event);
4958
+ // Add custom drop handling logic here
4959
+ this.nodeDrop.emit(event);
4960
+ }
4961
+ /**
4962
+ * Handle node drag start event
4963
+ */
4964
+ onDragStart(event) {
4965
+ if (!this.dragAndDrop) {
4966
+ event.preventDefault();
4967
+ }
4968
+ }
4969
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4970
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: TreeViewComponent, isStandalone: true, selector: "lib-tree-view", inputs: { data: "data", selectable: "selectable", filterable: "filterable", checkboxes: "checkboxes", checkable: "checkable", dragAndDrop: "dragAndDrop", expandable: "expandable", loading: "loading", animate: "animate", size: "size", textField: "textField", childrenField: "childrenField", hasChildrenField: "hasChildrenField", expandedField: "expandedField", selectedField: "selectedField", disabledField: "disabledField", checkedField: "checkedField", iconClassField: "iconClassField", iconField: "iconField", imageUrlField: "imageUrlField", spriteCssClassField: "spriteCssClassField", disabledKeys: "disabledKeys", expandBy: "expandBy", expandedKeys: "expandedKeys", selectedKeys: "selectedKeys", checkedKeys: "checkedKeys", expandDisabledNodes: "expandDisabledNodes", disableNodes: "disableNodes", enableCheck: "enableCheck", checkChildren: "checkChildren", checkDisabledChildren: "checkDisabledChildren", checkParents: "checkParents", checkOnClick: "checkOnClick", uncheckCollapsedChildren: "uncheckCollapsedChildren", checkMode: "checkMode", fetchChildren: "fetchChildren", isChecked: "isChecked", isDisabled: "isDisabled", isExpanded: "isExpanded", isSelected: "isSelected", isVisible: "isVisible", nodeTemplate: "nodeTemplate", loadMoreButtonTemplate: "loadMoreButtonTemplate", loadMoreService: "loadMoreService", pageSize: "pageSize", loadOnDemand: "loadOnDemand", filter: "filter", filterSettings: "filterSettings", navigable: "navigable", trackBy: "trackBy" }, outputs: { selectionChange: "selectionChange", expand: "expand", collapse: "collapse", checkedChange: "checkedChange", nodeClick: "nodeClick", nodeDblClick: "nodeDblClick", nodeDragStart: "nodeDragStart", nodeDrag: "nodeDrag", nodeDrop: "nodeDrop", nodeDragEnd: "nodeDragEnd", addItem: "addItem", removeItem: "removeItem", expandedKeysChange: "expandedKeysChange", selectedKeysChange: "selectedKeysChange", checkedKeysChange: "checkedKeysChange", filterChange: "filterChange", loadMore: "loadMore", childrenLoaded: "childrenLoaded" }, viewQueries: [{ propertyName: "treeViewElement", first: true, predicate: ["treeViewElement"], descendants: true }], ngImport: i0, template: "<div [class]=\"getTreeViewClasses()\">\n\n <div class=\"treeview-panel\">\n\n <ng-container [ngSwitch]=\"checkable\">\n\n <kendo-treeview #treeViewElement *ngSwitchCase=\"true\" [children]=\"children\" kendoTreeViewHierarchyBinding\n kendoTreeViewExpandable [kendoTreeViewCheckable]=\"checkableSettings\" kendoTreeViewDragAndDrop\n kendoTreeViewDragAndDropEditing [nodes]=\"data\" [textField]=\"textField\" [childrenField]=\"childrenField\"\n [filterable]=\"filterable\" [expandBy]=\"expandBy\" [(expandedKeys)]=\"expandedKeys\"\n [expandDisabledNodes]=\"expandDisabledNodes\" (selectionChange)=\"onSelectionChange($event)\"\n (checkedChange)=\"onCheckedChange($event)\" (expand)=\"onExpand($event)\" (collapse)=\"onCollapse($event)\"\n (nodeClick)=\"onNodeClick($event)\" (expandedKeysChange)=\"onExpandedKeysChange($event)\"\n (nodeDragStart)=\"onDragStart($event)\" (nodeDrop)=\"handleDrop($event)\" (addItem)=\"log('addItem', $event)\"\n (removeItem)=\"log('removeItem', $event)\" (nodeDragEnd)=\"log('nodeDragEnd', $event)\"\n (nodeDrag)=\"onNodeDrag($event)\" class=\"lib-tree-view__kendo-tree\" [kendoTreeViewSelectable]=\"selectable\"\n [filter]=\"filter\" [size]=\"size\" [navigable]=\"navigable\" [loadOnDemand]=\"loadOnDemand\" [trackBy]=\"trackBy\"\n [hasChildren]=\"hasChildren\" [(selectedKeys)]=\"selectedKeys\" (filterChange)=\"onFilterChange($event)\">\n\n <!-- Custom Node Template -->\n <ng-template *ngIf=\"nodeTemplate\" kendoTreeViewNodeTemplate let-dataItem=\"dataItem\" let-index=\"index\">\n <ng-container [ngTemplateOutlet]=\"nodeTemplate\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem, \n index: index \n }\">\n </ng-container>\n </ng-template>\n\n <!-- Load More Button Template -->\n <ng-template *ngIf=\"loadMoreButtonTemplate\" kendoTreeViewLoadMoreButtonTemplate let-dataItem=\"dataItem\">\n <ng-container [ngTemplateOutlet]=\"loadMoreButtonTemplate\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem \n }\">\n </ng-container>\n </ng-template>\n\n </kendo-treeview>\n\n <!-- TreeView without checkable functionality -->\n <kendo-treeview #treeViewElement *ngSwitchDefault kendoTreeViewHierarchyBinding kendoTreeViewExpandable\n kendoTreeViewDragAndDrop kendoTreeViewDragAndDropEditing [nodes]=\"data\" [textField]=\"textField\"\n [childrenField]=\"childrenField\" [filterable]=\"filterable\" [expandBy]=\"expandBy\" [(expandedKeys)]=\"expandedKeys\"\n [expandDisabledNodes]=\"expandDisabledNodes\" (selectionChange)=\"onSelectionChange($event)\"\n (checkedChange)=\"onCheckedChange($event)\" (expand)=\"onExpand($event)\" (collapse)=\"onCollapse($event)\"\n (nodeClick)=\"onNodeClick($event)\" (expandedKeysChange)=\"onExpandedKeysChange($event)\"\n (nodeDragStart)=\"onDragStart($event)\" (nodeDrag)=\"onNodeDrag($event)\" (nodeDrop)=\"handleDrop($event)\"\n (addItem)=\"log('addItem', $event)\" (removeItem)=\"log('removeItem', $event)\"\n (nodeDragEnd)=\"log('nodeDragEnd', $event)\" class=\"lib-tree-view__kendo-tree\"\n [kendoTreeViewSelectable]=\"selectable\" [size]=\"size\" [navigable]=\"navigable\" [loadOnDemand]=\"loadOnDemand\"\n [trackBy]=\"trackBy\" [hasChildren]=\"hasChildren\" [(selectedKeys)]=\"selectedKeys\"\n (filterChange)=\"onFilterChange($event)\">\n\n <!-- Custom Node Template -->\n <ng-template *ngIf=\"nodeTemplate\" kendoTreeViewNodeTemplate let-dataItem=\"dataItem\" let-index=\"index\">\n <ng-container [ngTemplateOutlet]=\"nodeTemplate\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem, \n index: index \n }\">\n </ng-container>\n </ng-template>\n\n <!-- Load More Button Template -->\n <ng-template *ngIf=\"loadMoreButtonTemplate\" kendoTreeViewLoadMoreButtonTemplate let-dataItem=\"dataItem\">\n <ng-container [ngTemplateOutlet]=\"loadMoreButtonTemplate\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem \n }\">\n </ng-container>\n </ng-template>\n\n </kendo-treeview>\n </ng-container>\n\n <!-- Loading indicator -->\n <div *ngIf=\"loading\" class=\"lib-tree-view__loading\">\n <lib-loader size=\"medium\" type=\"pulsing\" themeColor=\"primary\"></lib-loader>\n </div>\n </div>\n", styles: [".lib-tree-view{position:relative;width:100%}.lib-tree-view__loading{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background-color:#fffc}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: TreeViewModule$1 }, { kind: "component", type: i2$8.TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { kind: "directive", type: i2$8.NodeTemplateDirective, selector: "[kendoTreeViewNodeTemplate]" }, { kind: "directive", type: i2$8.CheckDirective, selector: "[kendoTreeViewCheckable]", inputs: ["isChecked", "checkBy", "checkedKeys", "kendoTreeViewCheckable"], outputs: ["checkedKeysChange"] }, { kind: "directive", type: i2$8.ExpandDirective, selector: "[kendoTreeViewExpandable]", inputs: ["isExpanded", "expandBy", "expandOnFilter", "expandedKeys"], outputs: ["expandedKeysChange"] }, { kind: "directive", type: i2$8.SelectDirective, selector: "[kendoTreeViewSelectable]", inputs: ["isSelected", "selectBy", "kendoTreeViewSelectable", "selectedKeys"], outputs: ["selectedKeysChange"] }, { kind: "directive", type: i2$8.HierarchyBindingDirective, selector: "[kendoTreeViewHierarchyBinding]", inputs: ["childrenField", "nodes", "isVisible", "loadOnDemand"] }, { kind: "directive", type: i2$8.DragAndDropDirective, selector: "[kendoTreeViewDragAndDrop]", inputs: ["allowCopy", "dropZoneTreeViews", "startDragAfter", "autoScroll"] }, { kind: "directive", type: i2$8.DragAndDropEditingDirective, selector: "[kendoTreeViewDragAndDropEditing]", inputs: ["editService"] }, { kind: "directive", type: i2$8.LoadMoreButtonTemplateDirective, selector: "[kendoTreeViewLoadMoreButtonTemplate]" }, { kind: "ngmodule", type: IconsModule }, { kind: "component", type: LoaderComponent, selector: "lib-loader", inputs: ["size", "type", "themeColor"] }] }); }
4971
+ }
4972
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeViewComponent, decorators: [{
4973
+ type: Component,
4974
+ args: [{ standalone: true, selector: 'lib-tree-view', imports: [
4975
+ CommonModule,
4976
+ TreeViewModule$1,
4977
+ IconsModule,
4978
+ ButtonComponent,
4979
+ IconComponent,
4980
+ LoaderComponent
4981
+ ], template: "<div [class]=\"getTreeViewClasses()\">\n\n <div class=\"treeview-panel\">\n\n <ng-container [ngSwitch]=\"checkable\">\n\n <kendo-treeview #treeViewElement *ngSwitchCase=\"true\" [children]=\"children\" kendoTreeViewHierarchyBinding\n kendoTreeViewExpandable [kendoTreeViewCheckable]=\"checkableSettings\" kendoTreeViewDragAndDrop\n kendoTreeViewDragAndDropEditing [nodes]=\"data\" [textField]=\"textField\" [childrenField]=\"childrenField\"\n [filterable]=\"filterable\" [expandBy]=\"expandBy\" [(expandedKeys)]=\"expandedKeys\"\n [expandDisabledNodes]=\"expandDisabledNodes\" (selectionChange)=\"onSelectionChange($event)\"\n (checkedChange)=\"onCheckedChange($event)\" (expand)=\"onExpand($event)\" (collapse)=\"onCollapse($event)\"\n (nodeClick)=\"onNodeClick($event)\" (expandedKeysChange)=\"onExpandedKeysChange($event)\"\n (nodeDragStart)=\"onDragStart($event)\" (nodeDrop)=\"handleDrop($event)\" (addItem)=\"log('addItem', $event)\"\n (removeItem)=\"log('removeItem', $event)\" (nodeDragEnd)=\"log('nodeDragEnd', $event)\"\n (nodeDrag)=\"onNodeDrag($event)\" class=\"lib-tree-view__kendo-tree\" [kendoTreeViewSelectable]=\"selectable\"\n [filter]=\"filter\" [size]=\"size\" [navigable]=\"navigable\" [loadOnDemand]=\"loadOnDemand\" [trackBy]=\"trackBy\"\n [hasChildren]=\"hasChildren\" [(selectedKeys)]=\"selectedKeys\" (filterChange)=\"onFilterChange($event)\">\n\n <!-- Custom Node Template -->\n <ng-template *ngIf=\"nodeTemplate\" kendoTreeViewNodeTemplate let-dataItem=\"dataItem\" let-index=\"index\">\n <ng-container [ngTemplateOutlet]=\"nodeTemplate\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem, \n index: index \n }\">\n </ng-container>\n </ng-template>\n\n <!-- Load More Button Template -->\n <ng-template *ngIf=\"loadMoreButtonTemplate\" kendoTreeViewLoadMoreButtonTemplate let-dataItem=\"dataItem\">\n <ng-container [ngTemplateOutlet]=\"loadMoreButtonTemplate\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem \n }\">\n </ng-container>\n </ng-template>\n\n </kendo-treeview>\n\n <!-- TreeView without checkable functionality -->\n <kendo-treeview #treeViewElement *ngSwitchDefault kendoTreeViewHierarchyBinding kendoTreeViewExpandable\n kendoTreeViewDragAndDrop kendoTreeViewDragAndDropEditing [nodes]=\"data\" [textField]=\"textField\"\n [childrenField]=\"childrenField\" [filterable]=\"filterable\" [expandBy]=\"expandBy\" [(expandedKeys)]=\"expandedKeys\"\n [expandDisabledNodes]=\"expandDisabledNodes\" (selectionChange)=\"onSelectionChange($event)\"\n (checkedChange)=\"onCheckedChange($event)\" (expand)=\"onExpand($event)\" (collapse)=\"onCollapse($event)\"\n (nodeClick)=\"onNodeClick($event)\" (expandedKeysChange)=\"onExpandedKeysChange($event)\"\n (nodeDragStart)=\"onDragStart($event)\" (nodeDrag)=\"onNodeDrag($event)\" (nodeDrop)=\"handleDrop($event)\"\n (addItem)=\"log('addItem', $event)\" (removeItem)=\"log('removeItem', $event)\"\n (nodeDragEnd)=\"log('nodeDragEnd', $event)\" class=\"lib-tree-view__kendo-tree\"\n [kendoTreeViewSelectable]=\"selectable\" [size]=\"size\" [navigable]=\"navigable\" [loadOnDemand]=\"loadOnDemand\"\n [trackBy]=\"trackBy\" [hasChildren]=\"hasChildren\" [(selectedKeys)]=\"selectedKeys\"\n (filterChange)=\"onFilterChange($event)\">\n\n <!-- Custom Node Template -->\n <ng-template *ngIf=\"nodeTemplate\" kendoTreeViewNodeTemplate let-dataItem=\"dataItem\" let-index=\"index\">\n <ng-container [ngTemplateOutlet]=\"nodeTemplate\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem, \n index: index \n }\">\n </ng-container>\n </ng-template>\n\n <!-- Load More Button Template -->\n <ng-template *ngIf=\"loadMoreButtonTemplate\" kendoTreeViewLoadMoreButtonTemplate let-dataItem=\"dataItem\">\n <ng-container [ngTemplateOutlet]=\"loadMoreButtonTemplate\" [ngTemplateOutletContext]=\"{ \n $implicit: dataItem, \n dataItem: dataItem \n }\">\n </ng-container>\n </ng-template>\n\n </kendo-treeview>\n </ng-container>\n\n <!-- Loading indicator -->\n <div *ngIf=\"loading\" class=\"lib-tree-view__loading\">\n <lib-loader size=\"medium\" type=\"pulsing\" themeColor=\"primary\"></lib-loader>\n </div>\n </div>\n", styles: [".lib-tree-view{position:relative;width:100%}.lib-tree-view__loading{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background-color:#fffc}\n"] }]
4982
+ }], propDecorators: { treeViewElement: [{
4983
+ type: ViewChild,
4984
+ args: ['treeViewElement', { static: false }]
4985
+ }], data: [{
4986
+ type: Input
4987
+ }], selectable: [{
4988
+ type: Input
4989
+ }], filterable: [{
4990
+ type: Input
4991
+ }], checkboxes: [{
4992
+ type: Input
4993
+ }], checkable: [{
4994
+ type: Input
4995
+ }], dragAndDrop: [{
4996
+ type: Input
4997
+ }], expandable: [{
4998
+ type: Input
4999
+ }], loading: [{
5000
+ type: Input
5001
+ }], animate: [{
5002
+ type: Input
5003
+ }], size: [{
5004
+ type: Input
5005
+ }], textField: [{
5006
+ type: Input
5007
+ }], childrenField: [{
5008
+ type: Input
5009
+ }], hasChildrenField: [{
5010
+ type: Input
5011
+ }], expandedField: [{
5012
+ type: Input
5013
+ }], selectedField: [{
5014
+ type: Input
5015
+ }], disabledField: [{
5016
+ type: Input
5017
+ }], checkedField: [{
5018
+ type: Input
5019
+ }], iconClassField: [{
5020
+ type: Input
5021
+ }], iconField: [{
5022
+ type: Input
5023
+ }], imageUrlField: [{
5024
+ type: Input
5025
+ }], spriteCssClassField: [{
5026
+ type: Input
5027
+ }], disabledKeys: [{
5028
+ type: Input
5029
+ }], expandBy: [{
5030
+ type: Input
5031
+ }], expandedKeys: [{
5032
+ type: Input
5033
+ }], selectedKeys: [{
5034
+ type: Input
5035
+ }], checkedKeys: [{
5036
+ type: Input
5037
+ }], expandDisabledNodes: [{
5038
+ type: Input
5039
+ }], disableNodes: [{
5040
+ type: Input
5041
+ }], enableCheck: [{
5042
+ type: Input
5043
+ }], checkChildren: [{
5044
+ type: Input
5045
+ }], checkDisabledChildren: [{
5046
+ type: Input
5047
+ }], checkParents: [{
5048
+ type: Input
5049
+ }], checkOnClick: [{
5050
+ type: Input
5051
+ }], uncheckCollapsedChildren: [{
5052
+ type: Input
5053
+ }], checkMode: [{
5054
+ type: Input
5055
+ }], fetchChildren: [{
5056
+ type: Input
5057
+ }], isChecked: [{
5058
+ type: Input
5059
+ }], isDisabled: [{
5060
+ type: Input
5061
+ }], isExpanded: [{
5062
+ type: Input
5063
+ }], isSelected: [{
5064
+ type: Input
5065
+ }], isVisible: [{
5066
+ type: Input
5067
+ }], nodeTemplate: [{
5068
+ type: Input
5069
+ }], loadMoreButtonTemplate: [{
5070
+ type: Input
5071
+ }], loadMoreService: [{
5072
+ type: Input
5073
+ }], pageSize: [{
5074
+ type: Input
5075
+ }], loadOnDemand: [{
5076
+ type: Input
5077
+ }], filter: [{
5078
+ type: Input
5079
+ }], filterSettings: [{
5080
+ type: Input
5081
+ }], navigable: [{
5082
+ type: Input
5083
+ }], trackBy: [{
5084
+ type: Input
5085
+ }], selectionChange: [{
5086
+ type: Output
5087
+ }], expand: [{
5088
+ type: Output
5089
+ }], collapse: [{
5090
+ type: Output
5091
+ }], checkedChange: [{
5092
+ type: Output
5093
+ }], nodeClick: [{
5094
+ type: Output
5095
+ }], nodeDblClick: [{
5096
+ type: Output
5097
+ }], nodeDragStart: [{
5098
+ type: Output
5099
+ }], nodeDrag: [{
5100
+ type: Output
5101
+ }], nodeDrop: [{
5102
+ type: Output
5103
+ }], nodeDragEnd: [{
5104
+ type: Output
5105
+ }], addItem: [{
5106
+ type: Output
5107
+ }], removeItem: [{
5108
+ type: Output
5109
+ }], expandedKeysChange: [{
5110
+ type: Output
5111
+ }], selectedKeysChange: [{
5112
+ type: Output
5113
+ }], checkedKeysChange: [{
5114
+ type: Output
5115
+ }], filterChange: [{
5116
+ type: Output
5117
+ }], loadMore: [{
5118
+ type: Output
5119
+ }], childrenLoaded: [{
5120
+ type: Output
5121
+ }] } });
5122
+
5123
+ class TreeViewModule {
5124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5125
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: TreeViewModule, imports: [TreeViewComponent,
5126
+ CommonModule,
5127
+ TreeViewModule$1,
5128
+ IconsModule,
5129
+ ButtonModule,
5130
+ IconModule,
5131
+ LoaderModule], exports: [TreeViewComponent] }); }
5132
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeViewModule, imports: [TreeViewComponent,
5133
+ CommonModule,
5134
+ TreeViewModule$1,
5135
+ IconsModule,
5136
+ ButtonModule,
5137
+ IconModule,
5138
+ LoaderModule] }); }
5139
+ }
5140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeViewModule, decorators: [{
5141
+ type: NgModule,
5142
+ args: [{
5143
+ imports: [
5144
+ TreeViewComponent,
5145
+ CommonModule,
5146
+ TreeViewModule$1,
5147
+ IconsModule,
5148
+ ButtonModule,
5149
+ IconModule,
5150
+ LoaderModule
5151
+ ],
5152
+ exports: [
5153
+ TreeViewComponent
5154
+ ]
5155
+ }]
5156
+ }] });
5157
+
4150
5158
  class UploaderComponent {
4151
5159
  constructor(renderer, elRef) {
4152
5160
  this.renderer = renderer;
@@ -4456,6 +5464,8 @@ class AtomsModule {
4456
5464
  TimePickerModule,
4457
5465
  TimeschedulerModule,
4458
5466
  TooltipModule,
5467
+ TreeListModule,
5468
+ TreeViewModule,
4459
5469
  TypographyModule,
4460
5470
  UploaderModule], exports: [AlertModule,
4461
5471
  AngularPopupModule,
@@ -4494,6 +5504,8 @@ class AtomsModule {
4494
5504
  TimePickerModule,
4495
5505
  TimeschedulerModule,
4496
5506
  TooltipModule,
5507
+ TreeListModule,
5508
+ TreeViewModule,
4497
5509
  TypographyModule,
4498
5510
  UploaderModule] }); }
4499
5511
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AtomsModule, imports: [CommonModule,
@@ -4536,6 +5548,8 @@ class AtomsModule {
4536
5548
  TimePickerModule,
4537
5549
  TimeschedulerModule,
4538
5550
  TooltipModule,
5551
+ TreeListModule,
5552
+ TreeViewModule,
4539
5553
  TypographyModule,
4540
5554
  UploaderModule, AlertModule,
4541
5555
  AngularPopupModule,
@@ -4574,6 +5588,8 @@ class AtomsModule {
4574
5588
  TimePickerModule,
4575
5589
  TimeschedulerModule,
4576
5590
  TooltipModule,
5591
+ TreeListModule,
5592
+ TreeViewModule,
4577
5593
  TypographyModule,
4578
5594
  UploaderModule] }); }
4579
5595
  }
@@ -4621,6 +5637,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
4621
5637
  TimePickerModule,
4622
5638
  TimeschedulerModule,
4623
5639
  TooltipModule,
5640
+ TreeListModule,
5641
+ TreeViewModule,
4624
5642
  TypographyModule,
4625
5643
  UploaderModule
4626
5644
  ],
@@ -4662,6 +5680,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
4662
5680
  TimePickerModule,
4663
5681
  TimeschedulerModule,
4664
5682
  TooltipModule,
5683
+ TreeListModule,
5684
+ TreeViewModule,
4665
5685
  TypographyModule,
4666
5686
  UploaderModule
4667
5687
  ]
@@ -4852,7 +5872,7 @@ class DialogComponent {
4852
5872
  }
4853
5873
  }
4854
5874
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DialogComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
4855
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DialogComponent, isStandalone: true, selector: "lib-dialog", inputs: { width: "width", height: "height", minWidth: "minWidth", maxWidth: "maxWidth", minHeight: "minHeight", maxHeight: "maxHeight", opened: "opened" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentRef"], descendants: true }, { propertyName: "dialogRef", first: true, predicate: ["dialogRef"], descendants: true }], ngImport: i0, template: "<div #dialogRef>\n <kendo-dialog\n *ngIf=\"opened\"\n [width]=\"width\"\n [height]=\"height\"\n [minWidth]=\"minWidth\"\n [maxWidth]=\"maxWidth\"\n [minHeight]=\"minHeight\"\n [maxHeight]=\"maxHeight\">\n <div #contentRef>\n <ng-content></ng-content>\n </div>\n </kendo-dialog>\n</div>\n", styles: [":host ::ng-deep .dialog-title .k-dialog-titlebar-action{display:none!important}:host ::ng-deep .k-window-content,:host ::ng-deep .k-prompt-container{padding:1.5rem}:host ::ng-deep .k-window-titlebar{padding:1rem 1.5rem}:host ::ng-deep .k-window-actions{margin:0;border-width:1px 0 0;padding:1rem 1.5rem;position:sticky;z-index:100;gap:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DialogsModule }, { kind: "component", type: i2$7.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "ngmodule", type: IconsModule }] }); }
5875
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DialogComponent, isStandalone: true, selector: "lib-dialog", inputs: { width: "width", height: "height", minWidth: "minWidth", maxWidth: "maxWidth", minHeight: "minHeight", maxHeight: "maxHeight", opened: "opened" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentRef"], descendants: true }, { propertyName: "dialogRef", first: true, predicate: ["dialogRef"], descendants: true }], ngImport: i0, template: "<div #dialogRef>\n <kendo-dialog\n *ngIf=\"opened\"\n [width]=\"width\"\n [height]=\"height\"\n [minWidth]=\"minWidth\"\n [maxWidth]=\"maxWidth\"\n [minHeight]=\"minHeight\"\n [maxHeight]=\"maxHeight\">\n <div #contentRef>\n <ng-content></ng-content>\n </div>\n </kendo-dialog>\n</div>\n", styles: [":host ::ng-deep .dialog-title .k-dialog-titlebar-action{display:none!important}:host ::ng-deep .k-window-content,:host ::ng-deep .k-prompt-container{padding:1.5rem}:host ::ng-deep .k-window-titlebar{padding:1rem 1.5rem}:host ::ng-deep .k-window-actions{margin:0;border-width:1px 0 0;padding:1rem 1.5rem;position:sticky;z-index:100;gap:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DialogsModule }, { kind: "component", type: i2$9.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "ngmodule", type: IconsModule }] }); }
4856
5876
  }
4857
5877
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DialogComponent, decorators: [{
4858
5878
  type: Component,
@@ -4899,7 +5919,7 @@ class DialogTitlebarComponent {
4899
5919
  return this.hideCloseIcon ? 'dialog-title' : undefined;
4900
5920
  }
4901
5921
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DialogTitlebarComponent, deps: [{ token: DialogComponent }], target: i0.ɵɵFactoryTarget.Component }); }
4902
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.17", type: DialogTitlebarComponent, isStandalone: true, selector: "lib-dialog-titlebar", inputs: { title: "title", titleFont: "titleFont", hideCloseIcon: ["hideCloseIcon", "hideCloseIcon", (value) => value === true || value === 'true'] }, outputs: { closeDialog: "closeDialog" }, ngImport: i0, template: "<kendo-dialog-titlebar (close)=\"close()\" [ngClass]=\"closeBtn()\">\n <lib-typography\n [defaultText]=\"title\"\n [type]=\"titleFont\"\n ></lib-typography>\n</kendo-dialog-titlebar>\n", styles: [".random-css-to-not-keep-this-file-empty{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DialogModule$1 }, { kind: "component", type: i2$7.DialogTitleBarComponent, selector: "kendo-dialog-titlebar", inputs: ["id", "closeTitle"], outputs: ["close"] }, { kind: "ngmodule", type: IconsModule }, { kind: "component", type: TypographyComponent, selector: "lib-typography", inputs: ["type", "defaultText", "isLabel", "hiddenLabel"] }] }); }
5922
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.17", type: DialogTitlebarComponent, isStandalone: true, selector: "lib-dialog-titlebar", inputs: { title: "title", titleFont: "titleFont", hideCloseIcon: ["hideCloseIcon", "hideCloseIcon", (value) => value === true || value === 'true'] }, outputs: { closeDialog: "closeDialog" }, ngImport: i0, template: "<kendo-dialog-titlebar (close)=\"close()\" [ngClass]=\"closeBtn()\">\n <lib-typography\n [defaultText]=\"title\"\n [type]=\"titleFont\"\n ></lib-typography>\n</kendo-dialog-titlebar>\n", styles: [".random-css-to-not-keep-this-file-empty{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DialogModule$1 }, { kind: "component", type: i2$9.DialogTitleBarComponent, selector: "kendo-dialog-titlebar", inputs: ["id", "closeTitle"], outputs: ["close"] }, { kind: "ngmodule", type: IconsModule }, { kind: "component", type: TypographyComponent, selector: "lib-typography", inputs: ["type", "defaultText", "isLabel", "hiddenLabel"] }] }); }
4903
5923
  }
4904
5924
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DialogTitlebarComponent, decorators: [{
4905
5925
  type: Component,
@@ -4925,7 +5945,7 @@ class DialogActionsComponent {
4925
5945
  this.buttonLayout = 'start';
4926
5946
  }
4927
5947
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DialogActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4928
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DialogActionsComponent, isStandalone: true, selector: "lib-dialog-actions", inputs: { buttonLayout: "buttonLayout" }, ngImport: i0, template: "<kendo-dialog-actions [layout]=\"buttonLayout\">\n <ng-content></ng-content>\n</kendo-dialog-actions>\n", styles: [".random-css-to-not-keep-this-file-empty{display:none}\n"], dependencies: [{ kind: "ngmodule", type: DialogModule$1 }, { kind: "component", type: i2$7.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }] }); }
5948
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DialogActionsComponent, isStandalone: true, selector: "lib-dialog-actions", inputs: { buttonLayout: "buttonLayout" }, ngImport: i0, template: "<kendo-dialog-actions [layout]=\"buttonLayout\">\n <ng-content></ng-content>\n</kendo-dialog-actions>\n", styles: [".random-css-to-not-keep-this-file-empty{display:none}\n"], dependencies: [{ kind: "ngmodule", type: DialogModule$1 }, { kind: "component", type: i2$9.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }] }); }
4929
5949
  }
4930
5950
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DialogActionsComponent, decorators: [{
4931
5951
  type: Component,
@@ -5173,7 +6193,7 @@ class GridFormComponent {
5173
6193
  this.formGroup = undefined;
5174
6194
  }
5175
6195
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: GridFormComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
5176
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.17", type: GridFormComponent, isStandalone: true, selector: "lib-grid-form", inputs: { showToolbar: ["showToolbar", "showToolbar", (value) => value === true || value === 'true'], noRecordsContent: "noRecordsContent", gridData: "gridData", columnData: "columnData", controls: "controls" }, outputs: { addOrUpdateRow: "addOrUpdateRow", deletedRow: "deletedRow", removeRow: "removeRow", saveRow: "saveRow" }, queries: [{ propertyName: "templateRef1", first: true, predicate: ["tmp1"], descendants: true }, { propertyName: "templateRef2", first: true, predicate: ["tmp2"], descendants: true }], ngImport: i0, template: "<kendo-grid [kendoGridBinding]=\"gridData\" (dataStateChange)=\"onStateChange($event)\" (edit)=\"editHandler($event)\"\n (cancel)=\"cancelHandler($event)\" (save)=\"saveHandler($event)\" (remove)=\"removeHandler($event)\"\n (add)=\"addHandler($event)\" [navigable]=\"true\">\n <ng-template kendoGridToolbarTemplate>\n <ng-content select=\"header\"></ng-content>\n <lib-grid-pagination-spacer></lib-grid-pagination-spacer>\n <button kendoGridAddCommand themeColor=\"primary\">\n <ng-content select=\"div.header-add-btn\"></ng-content>\n </button>\n </ng-template>\n <ng-template *ngIf=\"!showColumns\" kendoGridNoRecordsTemplate>\n <lib-typography [defaultText]=\"noRecordsContent\" type=\"BODY_MEDIUM\"></lib-typography>\n </ng-template>\n <ng-container *ngIf=\"showColumns\">\n <kendo-grid-column *ngFor=\"let item of columnData\" [field]=\"item.field\" [title]=\"item.title\" [editor]=\"item.editor\">\n <ng-template *ngIf=\"item.custom\" kendoGridEditTemplate let-dataItem=\"dataItem\" let-formGroup=\"formGroup\">\n <ng-container\n *ngTemplateOutlet=\"templateRef1; context: {$implicit: dataItem, formGroup: formGroup}\"></ng-container>\n </ng-template>\n <ng-template *ngIf=\"item.custom\" kendoGridCellTemplate let-dataItem>\n <ng-container *ngTemplateOutlet=\"templateRef2; context: {$implicit: dataItem}\"></ng-container>\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-command-column [width]=\"120\">\n <ng-template kendoGridCellTemplate let-isNew=\"isNew\">\n <div class=\"command-column\">\n <lib-tooltip position=\"top\" showOn=\"hover\">\n <div class=\"tooltip-content\">Edit</div>\n <button kendoGridEditCommand fillMode=\"clear\" themeColor=\"primary\">\n <kendo-icon name=\"pencil\"></kendo-icon>\n </button>\n </lib-tooltip>\n <lib-tooltip position=\"top\" showOn=\"hover\">\n <div class=\"tooltip-content\">Remove</div>\n <button kendoGridRemoveCommand fillMode=\"clear\" themeColor=\"error\">\n <kendo-icon name=\"trash\"></kendo-icon>\n </button>\n </lib-tooltip>\n </div>\n <div class=\"command-column\">\n <button kendoGridSaveCommand [disabled]=\"formGroup && formGroup.invalid\" fillMode=\"clear\" themeColor=\"primary\">\n <lib-tooltip position=\"top\" showOn=\"hover\">\n <div class=\"tooltip-content\">Save</div>\n <kendo-icon name=\"save\"></kendo-icon>\n </lib-tooltip>\n </button>\n <button kendoGridCancelCommand fillMode=\"clear\" themeColor=\"error\">\n <lib-tooltip position=\"top\" showOn=\"hover\">\n <div class=\"tooltip-content\">Cancel</div>\n <lib-icon name=\"close\" [fontSize]=\"20\"></lib-icon>\n </lib-tooltip>\n </button>\n </div>\n </ng-template>\n </kendo-grid-command-column>\n </ng-container>\n</kendo-grid>\n", styles: [".command-column{display:flex;justify-content:space-between}::ng-deep .k-grid-header{border-bottom-width:0px}\n"], dependencies: [{ kind: "ngmodule", type: GridModule }, { kind: "component", type: i1$6.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "adaptiveMode", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "showInactiveTools", "isDetailExpanded", "isGroupExpanded", "dataLayoutMode"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i1$6.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { kind: "directive", type: i1$6.DataBindingDirective, selector: "[kendoGridBinding]", inputs: ["skip", "sort", "filter", "pageSize", "group", "kendoGridBinding"], exportAs: ["kendoGridBinding"] }, { kind: "directive", type: i1$6.GridToolbarFocusableDirective, selector: " [kendoGridToolbarFocusable], [kendoGridAddCommand], [kendoGridCancelCommand], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridExcelCommand], [kendoGridPDFCommand] " }, { kind: "component", type: i1$6.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterVariant", "filterable", "editable"] }, { kind: "directive", type: i1$6.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: i1$6.CommandColumnComponent, selector: "kendo-grid-command-column" }, { kind: "directive", type: i1$6.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "directive", type: i1$6.EditTemplateDirective, selector: "[kendoGridEditTemplate]" }, { kind: "directive", type: i1$6.NoRecordsTemplateDirective, selector: "[kendoGridNoRecordsTemplate]" }, { kind: "component", type: i1$6.EditCommandDirective, selector: "[kendoGridEditCommand]" }, { kind: "component", type: i1$6.CancelCommandDirective, selector: "[kendoGridCancelCommand]" }, { kind: "component", type: i1$6.SaveCommandDirective, selector: "[kendoGridSaveCommand]" }, { kind: "component", type: i1$6.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { kind: "component", type: i1$6.AddCommandDirective, selector: "[kendoGridAddCommand]" }, { kind: "ngmodule", type: IconsModule }, { kind: "component", type: i2$8.IconComponent, selector: "kendo-icon", inputs: ["name"], exportAs: ["kendoIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TypographyComponent, selector: "lib-typography", inputs: ["type", "defaultText", "isLabel", "hiddenLabel"] }, { kind: "component", type: IconComponent, selector: "lib-icon", inputs: ["name", "projectedIcon", "fontSize", "type"] }, { kind: "component", type: TooltipComponent, selector: "lib-tooltip", inputs: ["position", "tooltipWidth", "tooltipHeight", "showOn", "closable", "title", "callout"] }, { kind: "component", type: GridPaginationSpacerComponent, selector: "lib-grid-pagination-spacer" }] }); }
6196
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.17", type: GridFormComponent, isStandalone: true, selector: "lib-grid-form", inputs: { showToolbar: ["showToolbar", "showToolbar", (value) => value === true || value === 'true'], noRecordsContent: "noRecordsContent", gridData: "gridData", columnData: "columnData", controls: "controls" }, outputs: { addOrUpdateRow: "addOrUpdateRow", deletedRow: "deletedRow", removeRow: "removeRow", saveRow: "saveRow" }, queries: [{ propertyName: "templateRef1", first: true, predicate: ["tmp1"], descendants: true }, { propertyName: "templateRef2", first: true, predicate: ["tmp2"], descendants: true }], ngImport: i0, template: "<kendo-grid [kendoGridBinding]=\"gridData\" (dataStateChange)=\"onStateChange($event)\" (edit)=\"editHandler($event)\"\n (cancel)=\"cancelHandler($event)\" (save)=\"saveHandler($event)\" (remove)=\"removeHandler($event)\"\n (add)=\"addHandler($event)\" [navigable]=\"true\">\n <ng-template kendoGridToolbarTemplate>\n <ng-content select=\"header\"></ng-content>\n <lib-grid-pagination-spacer></lib-grid-pagination-spacer>\n <button kendoGridAddCommand themeColor=\"primary\">\n <ng-content select=\"div.header-add-btn\"></ng-content>\n </button>\n </ng-template>\n <ng-template *ngIf=\"!showColumns\" kendoGridNoRecordsTemplate>\n <lib-typography [defaultText]=\"noRecordsContent\" type=\"BODY_MEDIUM\"></lib-typography>\n </ng-template>\n <ng-container *ngIf=\"showColumns\">\n <kendo-grid-column *ngFor=\"let item of columnData\" [field]=\"item.field\" [title]=\"item.title\" [editor]=\"item.editor\">\n <ng-template *ngIf=\"item.custom\" kendoGridEditTemplate let-dataItem=\"dataItem\" let-formGroup=\"formGroup\">\n <ng-container\n *ngTemplateOutlet=\"templateRef1; context: {$implicit: dataItem, formGroup: formGroup}\"></ng-container>\n </ng-template>\n <ng-template *ngIf=\"item.custom\" kendoGridCellTemplate let-dataItem>\n <ng-container *ngTemplateOutlet=\"templateRef2; context: {$implicit: dataItem}\"></ng-container>\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-command-column [width]=\"120\">\n <ng-template kendoGridCellTemplate let-isNew=\"isNew\">\n <div class=\"command-column\">\n <lib-tooltip position=\"top\" showOn=\"hover\">\n <div class=\"tooltip-content\">Edit</div>\n <button kendoGridEditCommand fillMode=\"clear\" themeColor=\"primary\">\n <kendo-icon name=\"pencil\"></kendo-icon>\n </button>\n </lib-tooltip>\n <lib-tooltip position=\"top\" showOn=\"hover\">\n <div class=\"tooltip-content\">Remove</div>\n <button kendoGridRemoveCommand fillMode=\"clear\" themeColor=\"error\">\n <kendo-icon name=\"trash\"></kendo-icon>\n </button>\n </lib-tooltip>\n </div>\n <div class=\"command-column\">\n <button kendoGridSaveCommand [disabled]=\"formGroup && formGroup.invalid\" fillMode=\"clear\" themeColor=\"primary\">\n <lib-tooltip position=\"top\" showOn=\"hover\">\n <div class=\"tooltip-content\">Save</div>\n <kendo-icon name=\"save\"></kendo-icon>\n </lib-tooltip>\n </button>\n <button kendoGridCancelCommand fillMode=\"clear\" themeColor=\"error\">\n <lib-tooltip position=\"top\" showOn=\"hover\">\n <div class=\"tooltip-content\">Cancel</div>\n <lib-icon name=\"close\" [fontSize]=\"20\"></lib-icon>\n </lib-tooltip>\n </button>\n </div>\n </ng-template>\n </kendo-grid-command-column>\n </ng-container>\n</kendo-grid>\n", styles: [".command-column{display:flex;justify-content:space-between}::ng-deep .k-grid-header{border-bottom-width:0px}\n"], dependencies: [{ kind: "ngmodule", type: GridModule }, { kind: "component", type: i1$6.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "adaptiveMode", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "showInactiveTools", "isDetailExpanded", "isGroupExpanded", "dataLayoutMode"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i1$6.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { kind: "directive", type: i1$6.DataBindingDirective, selector: "[kendoGridBinding]", inputs: ["skip", "sort", "filter", "pageSize", "group", "kendoGridBinding"], exportAs: ["kendoGridBinding"] }, { kind: "directive", type: i1$6.GridToolbarFocusableDirective, selector: " [kendoGridToolbarFocusable], [kendoGridAddCommand], [kendoGridCancelCommand], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridExcelCommand], [kendoGridPDFCommand] " }, { kind: "component", type: i1$6.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterVariant", "filterable", "editable"] }, { kind: "directive", type: i1$6.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: i1$6.CommandColumnComponent, selector: "kendo-grid-command-column" }, { kind: "directive", type: i1$6.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "directive", type: i1$6.EditTemplateDirective, selector: "[kendoGridEditTemplate]" }, { kind: "directive", type: i1$6.NoRecordsTemplateDirective, selector: "[kendoGridNoRecordsTemplate]" }, { kind: "component", type: i1$6.EditCommandDirective, selector: "[kendoGridEditCommand]" }, { kind: "component", type: i1$6.CancelCommandDirective, selector: "[kendoGridCancelCommand]" }, { kind: "component", type: i1$6.SaveCommandDirective, selector: "[kendoGridSaveCommand]" }, { kind: "component", type: i1$6.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { kind: "component", type: i1$6.AddCommandDirective, selector: "[kendoGridAddCommand]" }, { kind: "ngmodule", type: IconsModule }, { kind: "component", type: i2$a.IconComponent, selector: "kendo-icon", inputs: ["name"], exportAs: ["kendoIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TypographyComponent, selector: "lib-typography", inputs: ["type", "defaultText", "isLabel", "hiddenLabel"] }, { kind: "component", type: IconComponent, selector: "lib-icon", inputs: ["name", "projectedIcon", "fontSize", "type"] }, { kind: "component", type: TooltipComponent, selector: "lib-tooltip", inputs: ["position", "tooltipWidth", "tooltipHeight", "showOn", "closable", "title", "callout"] }, { kind: "component", type: GridPaginationSpacerComponent, selector: "lib-grid-pagination-spacer" }] }); }
5177
6197
  }
5178
6198
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: GridFormComponent, decorators: [{
5179
6199
  type: Component,
@@ -5870,7 +6890,7 @@ class GridPaginationComponent {
5870
6890
  if (value === undefined || value === null)
5871
6891
  return 56;
5872
6892
  return typeof value === 'string' ? parseInt(value, 10) || 56 : value;
5873
- }], sizes: "sizes", pageCount: "pageCount", showDeleteColumn: "showDeleteColumn", hideKebabRowIndex: "hideKebabRowIndex", loading: ["loading", "loading", (value) => value === true || value === 'true'], loaderType: "loaderType", loaderSize: "loaderSize", loaderTheme: "loaderTheme", disablePreSelectedRows: "disablePreSelectedRows", allowEditingCell: "allowEditingCell", columnContentNoWrap: "columnContentNoWrap", infiniteScrollLoader: "infiniteScrollLoader", isInfiniteScrollGrid: ["isInfiniteScrollGrid", "isInfiniteScrollGrid", (value) => value === true || value === 'true'], gridLoading: ["gridLoading", "gridLoading", (value) => value === true || value === 'true'], minResizableWidth: "minResizableWidth", showRefresh: "showRefresh", isKebabColumnSticky: "isKebabColumnSticky", isCheckBoxColumnSticky: "isCheckBoxColumnSticky", isDeleteColumnSticky: "isDeleteColumnSticky", isSelectAllCheckboxRequired: "isSelectAllCheckboxRequired" }, outputs: { onSelectAllAcrossPages: "onSelectAllAcrossPages", selectedRowData: "selectedRowData", rowDetails: "rowDetails", kebabItemClick: "kebabItemClick", rowDataOfClickedCell: "rowDataOfClickedCell", onPageChange: "onPageChange", sortDirection: "sortDirection", deletedRowData: "deletedRowData", updatedData: "updatedData", onscrollBottom: "onscrollBottom", emitRefreshEvt: "emitRefreshEvt" }, queries: [{ propertyName: "templateRef", first: true, predicate: ["multiColumnData"], descendants: true }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true }, { propertyName: "impactColumn", first: true, predicate: ["impactColumn"], descendants: true }, { propertyName: "columnTemplates", predicate: CustomColumnTemplate }], viewQueries: [{ propertyName: "grid", first: true, predicate: GridComponent, descendants: true }, { propertyName: "gridElement", first: true, predicate: ["gridElement"], descendants: true }, { propertyName: "selectAllCheckbox", first: true, predicate: ["selectAllCheckbox"], descendants: true }, { propertyName: "selectAllMessageElement", first: true, predicate: ["selectAllMessageElement"], descendants: true }], ngImport: i0, template: "<div #gridElement [ngClass]=\"columnContentNoWrap ? 'column-content-nowrap' : ''\">\n <kendo-grid [data]=\"_gridView\" [pageSize]=\"pageSize\" [skip]=\"skip\" [selectable]=\"selectableSettings\"\n [pageable]=\"pageable\" [sortable]=\"sortable\" [loading]=\"gridLoading\" [groupable]=\"groupable\"\n [reorderable]=\"reorderable\" [resizable]=\"resizable\" [columnMenu]=\"columnMenu\" [navigable]=\"navigable\"\n [height]=\"gridHeight\" (change)=\"setSelectableSettings()\" (selectedKeysChange)=\"selectedKeysChange($event)\"\n [kendoGridSelectBy]=\"gridRowSelectByValue\" (detailExpand)=\"onDetailExpand($event)\" [selectedKeys]=\"_preSelected\"\n (pageChange)=\"pageChange($event)\" (cellClick)=\"cellClickHandler($event)\" (cellClose)=\"cellCloseHandler($event)\"\n [sort]=\"sort\" (sortChange)=\"sortChange($event)\" (scrollBottom)=\"scrollBottom()\" [ngClass]=\"getHeaderHeight()\"\n id=\"lib-grid\" [rowClass]=\"rowClass\">\n <div #selectAllMessageElement>\n <div class=\"lib-grid-select-all-message-container\"\n *ngIf=\"((selectedItemCount < _gridView.total) || allPagesSelected)\">\n <div *ngIf=\"(selectedItemCount < _gridView.total)\" class=\"lib-grid-select-all-message\">\n <lib-typography [defaultText]=\"'All '+selectedItemCount+' '+itemName+' on this page are selected.'\"\n type=\"BODY_SMALL\"></lib-typography>\n <u><lib-typography (click)=\"selectAcrossPages(true)\" class=\"select-all-handler\"\n [defaultText]=\"'Select all '+_gridView.total+' '+itemName+' from all pages'\"\n type=\"BODY_SMALL\"></lib-typography></u>\n </div>\n <div *ngIf=\"allPagesSelected\" class=\"lib-grid-select-all-message\">\n <lib-icon name=\"circle-checked\" class=\"all-selected-icon\"></lib-icon>\n <lib-typography [defaultText]=\"'All '+_gridView.total+' '+itemName+' across all pages are selected.'\"\n type=\"BODY_SMALL\"></lib-typography>\n <u><lib-typography (click)=\"selectAcrossPages(false)\" class=\"select-all-handler\"\n [defaultText]=\"'Clear selection'\" type=\"BODY_SMALL\"></lib-typography></u>\n </div>\n </div>\n </div>\n <ng-template kendoGridToolbarTemplate [position]=\"getPosition()\" let-position=\"position\">\n <ng-container *ngIf=\"showToolbar && position === 'top'\">\n <ng-content></ng-content>\n <ng-container *ngIf=\"showRefresh\">\n <ng-container *ngTemplateOutlet=\"showRefreshTemplate\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"infiniteScrollLoader && position === 'bottom'\">\n <lib-grid-pagination-spacer></lib-grid-pagination-spacer>\n <lib-loader [type]=\"loaderType\" [size]=\"loaderSize\" [themeColor]=\"loaderTheme\"></lib-loader>\n <lib-grid-pagination-spacer></lib-grid-pagination-spacer>\n </ng-container>\n </ng-template>\n\n <ng-template #showRefreshTemplate>\n <lib-tooltip position=\"top\" showOn=\"hover\" [tooltipWidth]=\"68\" [callout]=\"true\" [closable]=\"false\">\n <div class=\"tooltip-content\">\n <lib-typography defaultText=\"Refresh\"></lib-typography>\n </div>\n <lib-button size=\"small\" width=\"2.4rem\" rounded=\"small\" fillMode=\"solid\" themeColor=\"primary\" iconName=\"reset\"\n [toggleable]=\"false\" (buttonClick)=\"refreshGridData()\" [iconButton]=\"true\" [iconFontSize]=\"13\"></lib-button>\n </lib-tooltip>\n </ng-template>\n\n <ng-template kendoGridLoadingTemplate>\n <div class=\"k-loading-color\"></div>\n <div class=\"loading-container\">\n <lib-loader [type]=\"loaderType\" [size]=\"loaderSize\" [themeColor]=\"loaderTheme\"></lib-loader>\n </div>\n </ng-template>\n\n <ng-template *ngIf=\"this._gridView.total === 0\" kendoGridNoRecordsTemplate>\n <lib-typography *ngIf=\"!loading\" [defaultText]=\"noRecordsContent\" type=\"BODY_MEDIUM\"></lib-typography>\n <lib-loader *ngIf=\"loading\" [type]=\"loaderType\" [size]=\"loaderSize\" [themeColor]=\"loaderTheme\"></lib-loader>\n </ng-template>\n <ng-container *ngIf=\"this._gridView.total > 0\">\n <kendo-grid-checkbox-column #selectAllCheckbox headerClass=\"select-all-header\" *ngIf=\"checkBoxRequired\"\n [width]=\"checkBoxWidth\" [resizable]=\"checkBoxColumnResizable\" [columnMenu]=\"checkBoxColumnMenu\"\n class=\"checkbox-column\" [sticky]=\"isCheckBoxColumnSticky && !customExpandRowColumn\"\n [showSelectAll]=\"isSelectAllCheckboxRequired\">\n <ng-template kendoGridHeaderTemplate *ngIf=\"isSelectAllCheckboxRequired\">\n <input id=\"selectAllCheckboxId\" type=\"checkbox\" kendoCheckBox kendoGridSelectAllCheckbox\n [state]=\"selectAllState\" (selectAllChange)=\"onSelectAllChange($event)\" />\n </ng-template>\n </kendo-grid-checkbox-column>\n\n <kendo-grid-column class=\"grid-column\" *ngFor=\"let item of columnData\" [field]=\"item.field\" [title]=\"item.title\"\n [width]=\"item.columnWidth\" [minResizableWidth]=\"minResizableWidth\" [sortable]=\"item.sortable\"\n [editor]=\"item.editor\" [class]=\"item.class\" [sticky]=\"item.columnSticky && !customExpandRowColumn\">\n\n <ng-template *ngIf=\"sortable\" kendoGridHeaderTemplate>\n {{item.title}}\n <span *ngIf=\"sort[0].field === item.field\">\n <span *ngIf=\"sort[0].dir === 'asc'\"></span>\n <span *ngIf=\"sort[0].dir === 'desc'\"></span>\n </span>\n </ng-template>\n\n <ng-template *ngIf=\"item.customColumn\" kendoGridCellTemplate let-dataItem>\n <ng-container [ngTemplateOutlet]=\"columnTemplateDict[item.type]\"\n [ngTemplateOutletContext]=\"{$implicit: dataItem}\"></ng-container>\n </ng-template>\n\n <ng-template *ngIf=\"item.custom\" kendoGridCellTemplate let-dataItem>\n <ng-container *ngTemplateOutlet=\"templateRef; context: {$implicit: dataItem}\"></ng-container>\n </ng-template>\n <ng-template *ngIf=\"item.impact\" kendoGridCellTemplate let-dataItem>\n <ng-container *ngTemplateOutlet=\"impactColumn; context: {$implicit: dataItem}\"></ng-container>\n </ng-template>\n </kendo-grid-column>\n\n <kendo-grid-column *ngIf=\"showDeleteColumn\" [width]=\"deleteColumnWidth\" class=\"delete-column\" title=\"Action\"\n [sticky]=\"isDeleteColumnSticky && !customExpandRowColumn\">\n <ng-template kendoGridCellTemplate let-dataItem let-rowIndex=\"rowIndex\">\n <lib-tooltip showOn=\"hover\" position=\"bottom\" class=\"remove-tooltip\">\n <lib-icon name=\"delete\" class=\"delete-icon\" (click)=\"onDelete(dataItem)\"></lib-icon>\n <div class=\"tooltip-content\">\n <lib-typography defaultText=\"Remove\"></lib-typography>\n </div>\n </lib-tooltip>\n </ng-template>\n </kendo-grid-column>\n\n <kendo-grid-column [width]=\"kebabColumnWidth\" class=\"kebab-column\" *ngIf=\"showKebab\" title=\"Actions\"\n [sticky]=\"isKebabColumnSticky && !customExpandRowColumn\">\n <ng-template kendoGridCellTemplate let-dataItem let-rowIndex=\"rowIndex\">\n <kendo-dropdownbutton *ngIf=\"!hideKebabRowIndex.includes(rowIndex)\" [svgIcon]=\"icon\" fillMode=\"none\"\n [data]=\"kebabList | kebabMenuFilter : dataItem\" class=\"kebab\" (itemClick)=\"onKebabClick($event, dataItem)\"\n [popupSettings]=\"{ align: 'right', animate: true, popupClass: 'kebab-list' }\">\n </kendo-dropdownbutton>\n </ng-template>\n </kendo-grid-column>\n\n <!-- Limitation: detail template and sticky columns do not co-exist-->\n <kendo-grid-column *ngIf=\"customExpandRowColumn\" [width]=\"expandRowColumnWidth\" class=\"grid-column expand-column\">\n <ng-template kendoGridCellTemplate let-dataItem let-rowIndex=\"rowIndex\">\n <div [ngClass]=\"expandColumnClass()\">\n <span *ngIf=\"selectedRows.includes(dataItem[gridRowSelectByValue]) && disablePreSelectedRows\"\n class=\"expand-column-text\">\n Already added\n </span>\n <button kendoButton *ngIf=\"!expandRowIndex.includes(rowIndex)\" [svgIcon]=\"arrowDownIcon\"\n (click)=\"expandRow(rowIndex)\" fillMode=\"none\" class=\"arrow-btn\">\n </button>\n <button kendoButton *ngIf=\"expandRowIndex.includes(rowIndex)\" [svgIcon]=\"arrowUpIcon\"\n (click)=\"collapseRow(rowIndex)\" fillMode=\"none\" class=\"arrow-btn\">\n </button>\n </div>\n </ng-template>\n </kendo-grid-column>\n </ng-container>\n\n <!-- Detail template must be outside ng-container to work properly -->\n <ng-template kendoGridDetailTemplate let-dataItem *ngIf=\"customExpandRowColumn\">\n <ng-container *ngTemplateOutlet=\"detailTemplate; context: {$implicit: dataItem}\"></ng-container>\n </ng-template>\n\n <ng-template kendoPagerTemplate let-totalPages=\"totalPages\" let-currentPage=\"currentPage\">\n <div class=\"pagination-wrapper\" [ngClass]=\"allPagesSelected ? 'pagination-disabled' : ''\">\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons [buttonCount]=\"_pageCount\"></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n <kendo-pager-page-sizes [pageSizes]=\"sizes\"></kendo-pager-page-sizes>\n </div>\n </ng-template>\n\n </kendo-grid>\n</div>\n", styles: [".loading-container{height:100%;display:flex;justify-content:center;align-items:center}::ng-deep .k-grid tr{height:50px}::ng-deep .pagination-wrapper{display:flex;width:100%}::ng-deep .pagination-disabled{color:#6c6f72!important;pointer-events:none}::ng-deep .lib-grid-select-all-message-container{height:2rem;display:none;gap:.25rem;justify-content:center;align-items:center;background-color:#eceff5!important;font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important}::ng-deep .lib-grid-select-all-message-container .select-all-handler{cursor:pointer}::ng-deep .lib-grid-select-all-message-container .lib-grid-select-all-message{display:flex;gap:.25rem}::ng-deep .lib-grid-select-all-message-container .lib-grid-select-all-message .all-selected-icon{color:#198038}::ng-deep .disabled{cursor:none!important;pointer-events:none;opacity:.5}::ng-deep .lib-grid-select-all-message-show{display:flex!important}::ng-deep .k-grid .k-table-th,::ng-deep .k-grid .k-table-th.k-sorted{font-family:Inter,sans-serif!important;font-weight:600!important;font-style:normal!important;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important;background-color:#dee6f7!important;border-bottom-color:#ebecec!important;border-bottom-style:solid!important;border-bottom-width:2px!important;border-right:0px!important;border-left:0px!important;cursor:default!important}::ng-deep .k-grid .k-table-th .k-cell-inner,::ng-deep .k-grid .k-table-th.k-sorted .k-cell-inner{padding-right:.5rem;border-right:2px solid #C2D2F3!important}::ng-deep .k-grid .k-table-th .k-cell-inner .k-link,::ng-deep .k-grid .k-table-th.k-sorted .k-cell-inner .k-link{cursor:default!important}::ng-deep .k-grid .k-table-th:focus,::ng-deep .k-grid .k-table-th.k-sorted:focus{box-shadow:none!important}::ng-deep .k-grid .k-table-th.k-sorted{font-family:Inter,sans-serif!important;font-weight:600!important;font-style:normal!important;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important;background-color:#dee6f7!important}::ng-deep .k-grid tbody>tr:not(.k-detail-row):hover{background-color:#d0dcf5!important}::ng-deep .k-grid .k-table-row.k-selected>.k-table-td{background-color:#c9d7f4!important}::ng-deep .k-grid .k-table-row.k-disabled>.k-table-td{background-color:#fff!important}::ng-deep .k-grid .k-table-td{border-bottom-color:#ebecec!important;border-bottom-style:solid!important;border-bottom-width:1px!important;border-right:0px!important;border-left:0px!important}::ng-deep .k-grid td,::ng-deep .k-grid .k-table-td{white-space:nowrap!important}::ng-deep .k-table-alt-row{background-color:inherit!important}::ng-deep .k-grid .k-table-td{font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important}::ng-deep .k-grid-norecords{text-align:center!important;opacity:.4}::ng-deep .k-grid-norecords td{padding:14px 0 14px 24px!important}::ng-deep kendo-pager.k-pager-wrap.k-grid-pager{font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal!important;font-size:14px!important;line-height:20px!important;letter-spacing:.25px!important}::ng-deep .k-pager{border-style:none!important}::ng-deep .k-input-value-text{overflow:unset!important}::ng-deep .k-grid th.k-header{vertical-align:middle!important;padding-left:16px;padding-right:.5rem}::ng-deep .grid-column,::ng-deep .kebab-column,::ng-deep .delete-column{padding:0!important}::ng-deep .grid-column kendo-button,::ng-deep .kebab-column kendo-button,::ng-deep .delete-column kendo-button{align-items:center!important;justify-content:center!important;display:flex!important}::ng-deep .k-checkbox{width:20px!important;height:20px!important;border-radius:0!important}::ng-deep .k-grid .k-hierarchy-cell,::ng-deep .k-grid .k-hierarchy-col{width:0;display:none}::ng-deep .k-grid .k-detail-row .k-detail-cell{background-color:#f4f8fa!important;padding:16px!important}::ng-deep .delete-icon{color:#dc267f!important;padding-left:12px;cursor:pointer}::ng-deep .remove-tooltip kendo-tooltip.k-tooltip{background-color:#fff;color:#000}::ng-deep .hide-header .k-grid-header{border:0px!important}::ng-deep .k-grouping-header{background-color:#eceff5!important}::ng-deep .k-grid-toolbar{padding:4px 16px!important;height:54px;background-color:#eceff5!important}::ng-deep .k-grid td:not(.kebab-column):not(.expand-column){padding-left:16px!important;padding-right:16px!important}::ng-deep .view-header .k-table-thead tr{height:50px}::ng-deep .hide-header .k-table-thead tr{height:0px;padding:0;display:block}::ng-deep td.kebab-column{display:flex;justify-content:center;align-items:center;height:inherit}::ng-deep .k-grid .k-table-td>.k-checkbox{vertical-align:middle!important}::ng-deep .kebab .k-button,::ng-deep .expand-column .k-button{border:0px}::ng-deep .expand-column{pointer-events:all!important}::ng-deep .expand-column-text{margin-right:32px}::ng-deep .expand-row{display:flex;align-items:center;justify-content:flex-end}::ng-deep .column-cursor-pointer{cursor:pointer}::ng-deep .column-content-nowrap .k-grid .k-table-th,::ng-deep .column-content-nowrap .k-grid td,::ng-deep .column-content-nowrap .k-grid .k-table-td{white-space:nowrap;text-overflow:clip}::ng-deep kendo-grid.k-grid .k-table-alt-row .k-grid-content-sticky,::ng-deep kendo-grid.k-grid .k-grid-row-sticky.k-table-alt-row td,::ng-deep kendo-grid.k-grid .k-grid-row-sticky.k-table-alt-row .k-table-td,::ng-deep .k-master-row.k-table-alt-row .k-grid-content-sticky,::ng-deep .k-master-row.k-table-alt-row .k-grid-row-sticky{background-color:#fff}::ng-deep kendo-grid.k-grid .k-grid-content-sticky:hover,::ng-deep kendo-grid.k-grid .k-grid-content-sticky.k-hover,::ng-deep kendo-grid.k-grid .k-table-row:hover .k-grid-content-sticky{background-color:#d0dcf5!important}\n"], dependencies: [{ kind: "ngmodule", type: GridModule }, { kind: "component", type: i1$6.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "adaptiveMode", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "showInactiveTools", "isDetailExpanded", "isGroupExpanded", "dataLayoutMode"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i1$6.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { kind: "directive", type: i1$6.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "component", type: i1$6.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterVariant", "filterable", "editable"] }, { kind: "directive", type: i1$6.DetailTemplateDirective, selector: "[kendoGridDetailTemplate]", inputs: ["kendoGridDetailTemplateShowIf"] }, { kind: "component", type: i1$6.CheckboxColumnComponent, selector: "kendo-grid-checkbox-column", inputs: ["showSelectAll", "showDisabledCheckbox"] }, { kind: "directive", type: i1$6.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "directive", type: i1$6.NoRecordsTemplateDirective, selector: "[kendoGridNoRecordsTemplate]" }, { kind: "directive", type: i1$6.LoadingTemplateDirective, selector: "[kendoGridLoadingTemplate]" }, { kind: "directive", type: i1$6.HeaderTemplateDirective, selector: "[kendoGridHeaderTemplate]" }, { kind: "directive", type: i1$6.SelectAllCheckboxDirective, selector: "[kendoGridSelectAllCheckbox]", inputs: ["state"], outputs: ["selectAllChange"] }, { kind: "component", type: i2$9.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i2$9.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i2$9.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i2$9.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["showItemsText", "pageSizes", "size", "adaptiveMode"] }, { kind: "component", type: i2$9.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i2$9.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "ngmodule", type: ButtonModule$1 }, { kind: "component", type: i3$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: DropDownButtonModule }, { kind: "component", type: i3$1.DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["arrowIcon", "icon", "svgIcon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor", "buttonAttributes"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }, { kind: "ngmodule", type: IconsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: DropDownsModule }, { kind: "ngmodule", type: InputsModule }, { kind: "directive", type: i2$2.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { kind: "component", type: TypographyComponent, selector: "lib-typography", inputs: ["type", "defaultText", "isLabel", "hiddenLabel"] }, { kind: "component", type: IconComponent, selector: "lib-icon", inputs: ["name", "projectedIcon", "fontSize", "type"] }, { kind: "component", type: ButtonComponent, selector: "lib-button", inputs: ["size", "rounded", "fillMode", "themeColor", "label", "iconName", "disabled", "toggleable", "iconPosition", "fontType", "width", "iconButton", "projectedIcon", "formatFn", "iconFontSize"], outputs: ["buttonClick"] }, { kind: "component", type: LoaderComponent, selector: "lib-loader", inputs: ["size", "type", "themeColor"] }, { kind: "component", type: TooltipComponent, selector: "lib-tooltip", inputs: ["position", "tooltipWidth", "tooltipHeight", "showOn", "closable", "title", "callout"] }, { kind: "pipe", type: KebabMenuFilterPipe, name: "kebabMenuFilter" }] }); }
6893
+ }], sizes: "sizes", pageCount: "pageCount", showDeleteColumn: "showDeleteColumn", hideKebabRowIndex: "hideKebabRowIndex", loading: ["loading", "loading", (value) => value === true || value === 'true'], loaderType: "loaderType", loaderSize: "loaderSize", loaderTheme: "loaderTheme", disablePreSelectedRows: "disablePreSelectedRows", allowEditingCell: "allowEditingCell", columnContentNoWrap: "columnContentNoWrap", infiniteScrollLoader: "infiniteScrollLoader", isInfiniteScrollGrid: ["isInfiniteScrollGrid", "isInfiniteScrollGrid", (value) => value === true || value === 'true'], gridLoading: ["gridLoading", "gridLoading", (value) => value === true || value === 'true'], minResizableWidth: "minResizableWidth", showRefresh: "showRefresh", isKebabColumnSticky: "isKebabColumnSticky", isCheckBoxColumnSticky: "isCheckBoxColumnSticky", isDeleteColumnSticky: "isDeleteColumnSticky", isSelectAllCheckboxRequired: "isSelectAllCheckboxRequired" }, outputs: { onSelectAllAcrossPages: "onSelectAllAcrossPages", selectedRowData: "selectedRowData", rowDetails: "rowDetails", kebabItemClick: "kebabItemClick", rowDataOfClickedCell: "rowDataOfClickedCell", onPageChange: "onPageChange", sortDirection: "sortDirection", deletedRowData: "deletedRowData", updatedData: "updatedData", onscrollBottom: "onscrollBottom", emitRefreshEvt: "emitRefreshEvt" }, queries: [{ propertyName: "templateRef", first: true, predicate: ["multiColumnData"], descendants: true }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true }, { propertyName: "impactColumn", first: true, predicate: ["impactColumn"], descendants: true }, { propertyName: "columnTemplates", predicate: CustomColumnTemplate }], viewQueries: [{ propertyName: "grid", first: true, predicate: GridComponent, descendants: true }, { propertyName: "gridElement", first: true, predicate: ["gridElement"], descendants: true }, { propertyName: "selectAllCheckbox", first: true, predicate: ["selectAllCheckbox"], descendants: true }, { propertyName: "selectAllMessageElement", first: true, predicate: ["selectAllMessageElement"], descendants: true }], ngImport: i0, template: "<div #gridElement [ngClass]=\"columnContentNoWrap ? 'column-content-nowrap' : ''\">\n <kendo-grid [data]=\"_gridView\" [pageSize]=\"pageSize\" [skip]=\"skip\" [selectable]=\"selectableSettings\"\n [pageable]=\"pageable\" [sortable]=\"sortable\" [loading]=\"gridLoading\" [groupable]=\"groupable\"\n [reorderable]=\"reorderable\" [resizable]=\"resizable\" [columnMenu]=\"columnMenu\" [navigable]=\"navigable\"\n [height]=\"gridHeight\" (change)=\"setSelectableSettings()\" (selectedKeysChange)=\"selectedKeysChange($event)\"\n [kendoGridSelectBy]=\"gridRowSelectByValue\" (detailExpand)=\"onDetailExpand($event)\" [selectedKeys]=\"_preSelected\"\n (pageChange)=\"pageChange($event)\" (cellClick)=\"cellClickHandler($event)\" (cellClose)=\"cellCloseHandler($event)\"\n [sort]=\"sort\" (sortChange)=\"sortChange($event)\" (scrollBottom)=\"scrollBottom()\" [ngClass]=\"getHeaderHeight()\"\n id=\"lib-grid\" [rowClass]=\"rowClass\">\n <div #selectAllMessageElement>\n <div class=\"lib-grid-select-all-message-container\"\n *ngIf=\"((selectedItemCount < _gridView.total) || allPagesSelected)\">\n <div *ngIf=\"(selectedItemCount < _gridView.total)\" class=\"lib-grid-select-all-message\">\n <lib-typography [defaultText]=\"'All '+selectedItemCount+' '+itemName+' on this page are selected.'\"\n type=\"BODY_SMALL\"></lib-typography>\n <u><lib-typography (click)=\"selectAcrossPages(true)\" class=\"select-all-handler\"\n [defaultText]=\"'Select all '+_gridView.total+' '+itemName+' from all pages'\"\n type=\"BODY_SMALL\"></lib-typography></u>\n </div>\n <div *ngIf=\"allPagesSelected\" class=\"lib-grid-select-all-message\">\n <lib-icon name=\"circle-checked\" class=\"all-selected-icon\"></lib-icon>\n <lib-typography [defaultText]=\"'All '+_gridView.total+' '+itemName+' across all pages are selected.'\"\n type=\"BODY_SMALL\"></lib-typography>\n <u><lib-typography (click)=\"selectAcrossPages(false)\" class=\"select-all-handler\"\n [defaultText]=\"'Clear selection'\" type=\"BODY_SMALL\"></lib-typography></u>\n </div>\n </div>\n </div>\n <ng-template kendoGridToolbarTemplate [position]=\"getPosition()\" let-position=\"position\">\n <ng-container *ngIf=\"showToolbar && position === 'top'\">\n <ng-content></ng-content>\n <ng-container *ngIf=\"showRefresh\">\n <ng-container *ngTemplateOutlet=\"showRefreshTemplate\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"infiniteScrollLoader && position === 'bottom'\">\n <lib-grid-pagination-spacer></lib-grid-pagination-spacer>\n <lib-loader [type]=\"loaderType\" [size]=\"loaderSize\" [themeColor]=\"loaderTheme\"></lib-loader>\n <lib-grid-pagination-spacer></lib-grid-pagination-spacer>\n </ng-container>\n </ng-template>\n\n <ng-template #showRefreshTemplate>\n <lib-tooltip position=\"top\" showOn=\"hover\" [tooltipWidth]=\"68\" [callout]=\"true\" [closable]=\"false\">\n <div class=\"tooltip-content\">\n <lib-typography defaultText=\"Refresh\"></lib-typography>\n </div>\n <lib-button size=\"small\" width=\"2.4rem\" rounded=\"small\" fillMode=\"solid\" themeColor=\"primary\" iconName=\"reset\"\n [toggleable]=\"false\" (buttonClick)=\"refreshGridData()\" [iconButton]=\"true\" [iconFontSize]=\"13\"></lib-button>\n </lib-tooltip>\n </ng-template>\n\n <ng-template kendoGridLoadingTemplate>\n <div class=\"k-loading-color\"></div>\n <div class=\"loading-container\">\n <lib-loader [type]=\"loaderType\" [size]=\"loaderSize\" [themeColor]=\"loaderTheme\"></lib-loader>\n </div>\n </ng-template>\n\n <ng-template *ngIf=\"this._gridView.total === 0\" kendoGridNoRecordsTemplate>\n <lib-typography *ngIf=\"!loading\" [defaultText]=\"noRecordsContent\" type=\"BODY_MEDIUM\"></lib-typography>\n <lib-loader *ngIf=\"loading\" [type]=\"loaderType\" [size]=\"loaderSize\" [themeColor]=\"loaderTheme\"></lib-loader>\n </ng-template>\n <ng-container *ngIf=\"this._gridView.total > 0\">\n <kendo-grid-checkbox-column #selectAllCheckbox headerClass=\"select-all-header\" *ngIf=\"checkBoxRequired\"\n [width]=\"checkBoxWidth\" [resizable]=\"checkBoxColumnResizable\" [columnMenu]=\"checkBoxColumnMenu\"\n class=\"checkbox-column\" [sticky]=\"isCheckBoxColumnSticky && !customExpandRowColumn\"\n [showSelectAll]=\"isSelectAllCheckboxRequired\">\n <ng-template kendoGridHeaderTemplate *ngIf=\"isSelectAllCheckboxRequired\">\n <input id=\"selectAllCheckboxId\" type=\"checkbox\" kendoCheckBox kendoGridSelectAllCheckbox\n [state]=\"selectAllState\" (selectAllChange)=\"onSelectAllChange($event)\" />\n </ng-template>\n </kendo-grid-checkbox-column>\n\n <kendo-grid-column class=\"grid-column\" *ngFor=\"let item of columnData\" [field]=\"item.field\" [title]=\"item.title\"\n [width]=\"item.columnWidth\" [minResizableWidth]=\"minResizableWidth\" [sortable]=\"item.sortable\"\n [editor]=\"item.editor\" [class]=\"item.class\" [sticky]=\"item.columnSticky && !customExpandRowColumn\">\n\n <ng-template *ngIf=\"sortable\" kendoGridHeaderTemplate>\n {{item.title}}\n <span *ngIf=\"sort[0].field === item.field\">\n <span *ngIf=\"sort[0].dir === 'asc'\"></span>\n <span *ngIf=\"sort[0].dir === 'desc'\"></span>\n </span>\n </ng-template>\n\n <ng-template *ngIf=\"item.customColumn\" kendoGridCellTemplate let-dataItem>\n <ng-container [ngTemplateOutlet]=\"columnTemplateDict[item.type]\"\n [ngTemplateOutletContext]=\"{$implicit: dataItem}\"></ng-container>\n </ng-template>\n\n <ng-template *ngIf=\"item.custom\" kendoGridCellTemplate let-dataItem>\n <ng-container *ngTemplateOutlet=\"templateRef; context: {$implicit: dataItem}\"></ng-container>\n </ng-template>\n <ng-template *ngIf=\"item.impact\" kendoGridCellTemplate let-dataItem>\n <ng-container *ngTemplateOutlet=\"impactColumn; context: {$implicit: dataItem}\"></ng-container>\n </ng-template>\n </kendo-grid-column>\n\n <kendo-grid-column *ngIf=\"showDeleteColumn\" [width]=\"deleteColumnWidth\" class=\"delete-column\" title=\"Action\"\n [sticky]=\"isDeleteColumnSticky && !customExpandRowColumn\">\n <ng-template kendoGridCellTemplate let-dataItem let-rowIndex=\"rowIndex\">\n <lib-tooltip showOn=\"hover\" position=\"bottom\" class=\"remove-tooltip\">\n <lib-icon name=\"delete\" class=\"delete-icon\" (click)=\"onDelete(dataItem)\"></lib-icon>\n <div class=\"tooltip-content\">\n <lib-typography defaultText=\"Remove\"></lib-typography>\n </div>\n </lib-tooltip>\n </ng-template>\n </kendo-grid-column>\n\n <kendo-grid-column [width]=\"kebabColumnWidth\" class=\"kebab-column\" *ngIf=\"showKebab\" title=\"Actions\"\n [sticky]=\"isKebabColumnSticky && !customExpandRowColumn\">\n <ng-template kendoGridCellTemplate let-dataItem let-rowIndex=\"rowIndex\">\n <kendo-dropdownbutton *ngIf=\"!hideKebabRowIndex.includes(rowIndex)\" [svgIcon]=\"icon\" fillMode=\"none\"\n [data]=\"kebabList | kebabMenuFilter : dataItem\" class=\"kebab\" (itemClick)=\"onKebabClick($event, dataItem)\"\n [popupSettings]=\"{ align: 'right', animate: true, popupClass: 'kebab-list' }\">\n </kendo-dropdownbutton>\n </ng-template>\n </kendo-grid-column>\n\n <!-- Limitation: detail template and sticky columns do not co-exist-->\n <kendo-grid-column *ngIf=\"customExpandRowColumn\" [width]=\"expandRowColumnWidth\" class=\"grid-column expand-column\">\n <ng-template kendoGridCellTemplate let-dataItem let-rowIndex=\"rowIndex\">\n <div [ngClass]=\"expandColumnClass()\">\n <span *ngIf=\"selectedRows.includes(dataItem[gridRowSelectByValue]) && disablePreSelectedRows\"\n class=\"expand-column-text\">\n Already added\n </span>\n <button kendoButton *ngIf=\"!expandRowIndex.includes(rowIndex)\" [svgIcon]=\"arrowDownIcon\"\n (click)=\"expandRow(rowIndex)\" fillMode=\"none\" class=\"arrow-btn\">\n </button>\n <button kendoButton *ngIf=\"expandRowIndex.includes(rowIndex)\" [svgIcon]=\"arrowUpIcon\"\n (click)=\"collapseRow(rowIndex)\" fillMode=\"none\" class=\"arrow-btn\">\n </button>\n </div>\n </ng-template>\n </kendo-grid-column>\n </ng-container>\n\n <!-- Detail template must be outside ng-container to work properly -->\n <ng-template kendoGridDetailTemplate let-dataItem *ngIf=\"customExpandRowColumn\">\n <ng-container *ngTemplateOutlet=\"detailTemplate; context: {$implicit: dataItem}\"></ng-container>\n </ng-template>\n\n <ng-template kendoPagerTemplate let-totalPages=\"totalPages\" let-currentPage=\"currentPage\">\n <div class=\"pagination-wrapper\" [ngClass]=\"allPagesSelected ? 'pagination-disabled' : ''\">\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons [buttonCount]=\"_pageCount\"></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n <kendo-pager-page-sizes [pageSizes]=\"sizes\"></kendo-pager-page-sizes>\n </div>\n </ng-template>\n\n </kendo-grid>\n</div>\n", styles: [".loading-container{height:100%;display:flex;justify-content:center;align-items:center}::ng-deep .k-grid tr{height:50px}::ng-deep .pagination-wrapper{display:flex;width:100%}::ng-deep .pagination-disabled{color:#6c6f72!important;pointer-events:none}::ng-deep .lib-grid-select-all-message-container{height:2rem;display:none;gap:.25rem;justify-content:center;align-items:center;background-color:#eceff5!important;font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important}::ng-deep .lib-grid-select-all-message-container .select-all-handler{cursor:pointer}::ng-deep .lib-grid-select-all-message-container .lib-grid-select-all-message{display:flex;gap:.25rem}::ng-deep .lib-grid-select-all-message-container .lib-grid-select-all-message .all-selected-icon{color:#198038}::ng-deep .disabled{cursor:none!important;pointer-events:none;opacity:.5}::ng-deep .lib-grid-select-all-message-show{display:flex!important}::ng-deep .k-grid .k-table-th,::ng-deep .k-grid .k-table-th.k-sorted{font-family:Inter,sans-serif!important;font-weight:600!important;font-style:normal!important;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important;background-color:#dee6f7!important;border-bottom-color:#ebecec!important;border-bottom-style:solid!important;border-bottom-width:2px!important;border-right:0px!important;border-left:0px!important;cursor:default!important}::ng-deep .k-grid .k-table-th .k-cell-inner,::ng-deep .k-grid .k-table-th.k-sorted .k-cell-inner{padding-right:.5rem;border-right:2px solid #C2D2F3!important}::ng-deep .k-grid .k-table-th .k-cell-inner .k-link,::ng-deep .k-grid .k-table-th.k-sorted .k-cell-inner .k-link{cursor:default!important}::ng-deep .k-grid .k-table-th:focus,::ng-deep .k-grid .k-table-th.k-sorted:focus{box-shadow:none!important}::ng-deep .k-grid .k-table-th.k-sorted{font-family:Inter,sans-serif!important;font-weight:600!important;font-style:normal!important;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important;background-color:#dee6f7!important}::ng-deep .k-grid tbody>tr:not(.k-detail-row):hover{background-color:#d0dcf5!important}::ng-deep .k-grid .k-table-row.k-selected>.k-table-td{background-color:#c9d7f4!important}::ng-deep .k-grid .k-table-row.k-disabled>.k-table-td{background-color:#fff!important}::ng-deep .k-grid .k-table-td{border-bottom-color:#ebecec!important;border-bottom-style:solid!important;border-bottom-width:1px!important;border-right:0px!important;border-left:0px!important}::ng-deep .k-grid td,::ng-deep .k-grid .k-table-td{white-space:nowrap!important}::ng-deep .k-table-alt-row{background-color:inherit!important}::ng-deep .k-grid .k-table-td{font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal;font-size:12px!important;line-height:16px!important;letter-spacing:.25px!important}::ng-deep .k-grid-norecords{text-align:center!important;opacity:.4}::ng-deep .k-grid-norecords td{padding:14px 0 14px 24px!important}::ng-deep kendo-pager.k-pager-wrap.k-grid-pager{font-family:Inter,sans-serif!important;font-weight:400!important;font-style:normal!important;font-size:14px!important;line-height:20px!important;letter-spacing:.25px!important}::ng-deep .k-pager{border-style:none!important}::ng-deep .k-input-value-text{overflow:unset!important}::ng-deep .k-grid th.k-header{vertical-align:middle!important;padding-left:16px;padding-right:.5rem}::ng-deep .grid-column,::ng-deep .kebab-column,::ng-deep .delete-column{padding:0!important}::ng-deep .grid-column kendo-button,::ng-deep .kebab-column kendo-button,::ng-deep .delete-column kendo-button{align-items:center!important;justify-content:center!important;display:flex!important}::ng-deep .k-checkbox{width:20px!important;height:20px!important;border-radius:0!important}::ng-deep .k-grid .k-hierarchy-cell,::ng-deep .k-grid .k-hierarchy-col{width:0;display:none}::ng-deep .k-grid .k-detail-row .k-detail-cell{background-color:#f4f8fa!important;padding:16px!important}::ng-deep .delete-icon{color:#dc267f!important;padding-left:12px;cursor:pointer}::ng-deep .remove-tooltip kendo-tooltip.k-tooltip{background-color:#fff;color:#000}::ng-deep .hide-header .k-grid-header{border:0px!important}::ng-deep .k-grouping-header{background-color:#eceff5!important}::ng-deep .k-grid-toolbar{padding:4px 16px!important;height:54px;background-color:#eceff5!important}::ng-deep .k-grid td:not(.kebab-column):not(.expand-column){padding-left:16px!important;padding-right:16px!important}::ng-deep .view-header .k-table-thead tr{height:50px}::ng-deep .hide-header .k-table-thead tr{height:0px;padding:0;display:block}::ng-deep td.kebab-column{display:flex;justify-content:center;align-items:center;height:inherit}::ng-deep .k-grid .k-table-td>.k-checkbox{vertical-align:middle!important}::ng-deep .kebab .k-button,::ng-deep .expand-column .k-button{border:0px}::ng-deep .expand-column{pointer-events:all!important}::ng-deep .expand-column-text{margin-right:32px}::ng-deep .expand-row{display:flex;align-items:center;justify-content:flex-end}::ng-deep .column-cursor-pointer{cursor:pointer}::ng-deep .column-content-nowrap .k-grid .k-table-th,::ng-deep .column-content-nowrap .k-grid td,::ng-deep .column-content-nowrap .k-grid .k-table-td{white-space:nowrap;text-overflow:clip}::ng-deep kendo-grid.k-grid .k-table-alt-row .k-grid-content-sticky,::ng-deep kendo-grid.k-grid .k-grid-row-sticky.k-table-alt-row td,::ng-deep kendo-grid.k-grid .k-grid-row-sticky.k-table-alt-row .k-table-td,::ng-deep .k-master-row.k-table-alt-row .k-grid-content-sticky,::ng-deep .k-master-row.k-table-alt-row .k-grid-row-sticky{background-color:#fff}::ng-deep kendo-grid.k-grid .k-grid-content-sticky:hover,::ng-deep kendo-grid.k-grid .k-grid-content-sticky.k-hover,::ng-deep kendo-grid.k-grid .k-table-row:hover .k-grid-content-sticky{background-color:#d0dcf5!important}\n"], dependencies: [{ kind: "ngmodule", type: GridModule }, { kind: "component", type: i1$6.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "adaptiveMode", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "showInactiveTools", "isDetailExpanded", "isGroupExpanded", "dataLayoutMode"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i1$6.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { kind: "directive", type: i1$6.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "component", type: i1$6.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterVariant", "filterable", "editable"] }, { kind: "directive", type: i1$6.DetailTemplateDirective, selector: "[kendoGridDetailTemplate]", inputs: ["kendoGridDetailTemplateShowIf"] }, { kind: "component", type: i1$6.CheckboxColumnComponent, selector: "kendo-grid-checkbox-column", inputs: ["showSelectAll", "showDisabledCheckbox"] }, { kind: "directive", type: i1$6.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "directive", type: i1$6.NoRecordsTemplateDirective, selector: "[kendoGridNoRecordsTemplate]" }, { kind: "directive", type: i1$6.LoadingTemplateDirective, selector: "[kendoGridLoadingTemplate]" }, { kind: "directive", type: i1$6.HeaderTemplateDirective, selector: "[kendoGridHeaderTemplate]" }, { kind: "directive", type: i1$6.SelectAllCheckboxDirective, selector: "[kendoGridSelectAllCheckbox]", inputs: ["state"], outputs: ["selectAllChange"] }, { kind: "component", type: i2$b.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i2$b.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i2$b.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i2$b.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["showItemsText", "pageSizes", "size", "adaptiveMode"] }, { kind: "component", type: i2$b.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i2$b.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "ngmodule", type: ButtonModule$1 }, { kind: "component", type: i3$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: DropDownButtonModule }, { kind: "component", type: i3$1.DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["arrowIcon", "icon", "svgIcon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor", "buttonAttributes"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }, { kind: "ngmodule", type: IconsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: DropDownsModule }, { kind: "ngmodule", type: InputsModule }, { kind: "directive", type: i2$2.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { kind: "component", type: TypographyComponent, selector: "lib-typography", inputs: ["type", "defaultText", "isLabel", "hiddenLabel"] }, { kind: "component", type: IconComponent, selector: "lib-icon", inputs: ["name", "projectedIcon", "fontSize", "type"] }, { kind: "component", type: ButtonComponent, selector: "lib-button", inputs: ["size", "rounded", "fillMode", "themeColor", "label", "iconName", "disabled", "toggleable", "iconPosition", "fontType", "width", "iconButton", "projectedIcon", "formatFn", "iconFontSize"], outputs: ["buttonClick"] }, { kind: "component", type: LoaderComponent, selector: "lib-loader", inputs: ["size", "type", "themeColor"] }, { kind: "component", type: TooltipComponent, selector: "lib-tooltip", inputs: ["position", "tooltipWidth", "tooltipHeight", "showOn", "closable", "title", "callout"] }, { kind: "pipe", type: KebabMenuFilterPipe, name: "kebabMenuFilter" }] }); }
5874
6894
  }
5875
6895
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: GridPaginationComponent, decorators: [{
5876
6896
  type: Component,
@@ -6371,11 +7391,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
6371
7391
  }]
6372
7392
  }] });
6373
7393
 
7394
+ /**
7395
+ * Service for rendering markdown content to safe HTML
7396
+ * Handles configuration of the marked library and sanitization
7397
+ */
7398
+ class MarkdownDisplayService {
7399
+ constructor(sanitizer) {
7400
+ this.sanitizer = sanitizer;
7401
+ this.configureMarked();
7402
+ }
7403
+ /**
7404
+ * Configure marked options for GitHub-flavored markdown rendering
7405
+ * @private
7406
+ */
7407
+ configureMarked() {
7408
+ // Configure marked options for basic rendering
7409
+ marked.setOptions({
7410
+ gfm: true, // GitHub Flavored Markdown
7411
+ breaks: true // Convert line breaks to <br>
7412
+ });
7413
+ }
7414
+ /**
7415
+ * Render markdown content to safe HTML
7416
+ * @param content - The markdown content to render
7417
+ * @returns Promise resolving to sanitized HTML string or empty string if no content
7418
+ */
7419
+ async renderMarkdown(content) {
7420
+ if (!content) {
7421
+ return '';
7422
+ }
7423
+ try {
7424
+ const html = await marked.parse(content);
7425
+ return this.sanitizer.sanitize(SecurityContext.HTML, html) || '';
7426
+ }
7427
+ catch (error) {
7428
+ console.error('Error rendering markdown:', error);
7429
+ const errorHtml = `<div class="readme-error">Error rendering markdown content</div>`;
7430
+ return this.sanitizer.sanitize(SecurityContext.HTML, errorHtml) || '';
7431
+ }
7432
+ }
7433
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MarkdownDisplayService, deps: [{ token: i1$7.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
7434
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MarkdownDisplayService, providedIn: 'root' }); }
7435
+ }
7436
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MarkdownDisplayService, decorators: [{
7437
+ type: Injectable,
7438
+ args: [{
7439
+ providedIn: 'root'
7440
+ }]
7441
+ }], ctorParameters: () => [{ type: i1$7.DomSanitizer }] });
7442
+
7443
+ /**
7444
+ * Component for displaying markdown files with rendering
7445
+ * Uses the MarkdownDisplayService to convert markdown to HTML
7446
+ *
7447
+ * @example
7448
+ * <!-- Display markdown content from string -->
7449
+ * <lib-markdown-display [content]="markdownContent"></lib-markdown-display>
7450
+ */
7451
+ class MarkdownDisplayComponent {
7452
+ constructor(markdownDisplayService) {
7453
+ this.markdownDisplayService = markdownDisplayService;
7454
+ this.content = '';
7455
+ this.renderedContent = '';
7456
+ }
7457
+ ngOnInit() {
7458
+ this.renderMarkdown();
7459
+ }
7460
+ ngOnChanges(changes) {
7461
+ if (changes['content'] && this.content) {
7462
+ this.renderMarkdown();
7463
+ }
7464
+ }
7465
+ async renderMarkdown() {
7466
+ this.renderedContent = await this.markdownDisplayService.renderMarkdown(this.content);
7467
+ }
7468
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MarkdownDisplayComponent, deps: [{ token: MarkdownDisplayService }], target: i0.ɵɵFactoryTarget.Component }); }
7469
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: MarkdownDisplayComponent, isStandalone: true, selector: "lib-markdown-display", inputs: { content: "content" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"markdown-display\" [innerHTML]=\"renderedContent\"></div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
7470
+ }
7471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MarkdownDisplayComponent, decorators: [{
7472
+ type: Component,
7473
+ args: [{ standalone: true, selector: 'lib-markdown-display', imports: [CommonModule], template: "<div class=\"markdown-display\" [innerHTML]=\"renderedContent\"></div>\n" }]
7474
+ }], ctorParameters: () => [{ type: MarkdownDisplayService }], propDecorators: { content: [{
7475
+ type: Input
7476
+ }] } });
7477
+
7478
+ class MarkdownDisplayModule {
7479
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MarkdownDisplayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7480
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: MarkdownDisplayModule, imports: [CommonModule,
7481
+ MarkdownDisplayComponent], exports: [CommonModule,
7482
+ MarkdownDisplayComponent] }); }
7483
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MarkdownDisplayModule, imports: [CommonModule,
7484
+ MarkdownDisplayComponent, CommonModule] }); }
7485
+ }
7486
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MarkdownDisplayModule, decorators: [{
7487
+ type: NgModule,
7488
+ args: [{
7489
+ imports: [
7490
+ CommonModule,
7491
+ MarkdownDisplayComponent
7492
+ ],
7493
+ exports: [
7494
+ CommonModule,
7495
+ MarkdownDisplayComponent
7496
+ ]
7497
+ }]
7498
+ }] });
7499
+
6374
7500
  /** --------------- modules ----------------------- **/
6375
7501
 
6376
7502
  /**
6377
7503
  * Generated bundle index. Do not edit.
6378
7504
  */
6379
7505
 
6380
- export { ALERT_TYPE, AlertComponent, AlertModule, AngularPopupComponent, AngularPopupModule, AtomsModule, AvatarComponent, AvatarModule, BreadcrumbComponent, BreadcrumbModule, ButtonComponent, ButtonGroupComponent, ButtonGroupModule, ButtonModule, CardActionsComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CardModule, CheckboxComponent, CheckboxModule, ChipComponent, ChipListComponent, ChipListModule, ChipModule, ClipboardComponent, ClipboardModule, ConfirmationDialogComponent, ContainerComponent, ContainerModule, CustomColumnTemplate, DateRangeComponent, DateRangeModule, DatepickerComponent, DatepickerModule, DialogActionsComponent, DialogComponent, DialogModule, DialogTitlebarComponent, DragAndDropComponent, DragAndDropModule, DropdownButtonComponent, DropdownButtonModule, DropdownComponent, DropdownModule, DropdowntreeComponent, DropdowntreeModule, ExpansionPanelComponent, ExpansionPanelModule, GridFormComponent, GridFormModule, GridLayoutComponent, GridLayoutItemComponent, GridLayoutModule, GridPaginationComponent, GridPaginationModule, GridPaginationSpacerComponent, IconComponent, IconModule, KebabMenuFilterPipe, LabelComponent, LabelsModule, ListViewComponent, ListViewsModule, LoaderComponent, LoaderModule, LoaderSize, LoaderThemeColor, LoaderType, LoadingSpinnerComponent, LoadingSpinnerModule, MoleculesModule, MultiSelectDropdownComponent, MultiSelectDropdownModule, NotificationComponent, NotificationModule, NumericTextboxComponent, NumericTextboxModule, ProgressBarComponent, ProgressBarsModule, RadioButtonComponent, RadioButtonModule, SearchBoxComponent, SearchBoxModule, SharedComponent, SharedModule, SliderComponent, SliderModule, StepperComponent, StepperModule, SwitchComponent, SwitchModule, TabstripComponent, TabstripModule, TabstripTabComponent, TextAreaModule, TextareaComponent, TextboxComponent, TextboxModule, TimePickerComponent, TimePickerModule, TimeschedulerComponent, TimeschedulerModule, TooltipComponent, TooltipModule, Type, TypographyComponent, TypographyModule, UploaderComponent, UploaderModule };
7506
+ export { ALERT_TYPE, AlertComponent, AlertModule, AngularPopupComponent, AngularPopupModule, AtomsModule, AvatarComponent, AvatarModule, BreadcrumbComponent, BreadcrumbModule, ButtonComponent, ButtonGroupComponent, ButtonGroupModule, ButtonModule, CardActionsComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CardModule, CheckboxComponent, CheckboxModule, ChipComponent, ChipListComponent, ChipListModule, ChipModule, ClipboardComponent, ClipboardModule, ConfirmationDialogComponent, ContainerComponent, ContainerModule, CustomColumnTemplate, DateRangeComponent, DateRangeModule, DatepickerComponent, DatepickerModule, DialogActionsComponent, DialogComponent, DialogModule, DialogTitlebarComponent, DragAndDropComponent, DragAndDropModule, DropdownButtonComponent, DropdownButtonModule, DropdownComponent, DropdownModule, DropdowntreeComponent, DropdowntreeModule, ExpansionPanelComponent, ExpansionPanelModule, GridFormComponent, GridFormModule, GridLayoutComponent, GridLayoutItemComponent, GridLayoutModule, GridPaginationComponent, GridPaginationModule, GridPaginationSpacerComponent, IconComponent, IconModule, KebabMenuFilterPipe, LabelComponent, LabelsModule, ListViewComponent, ListViewsModule, LoaderComponent, LoaderModule, LoaderSize, LoaderThemeColor, LoaderType, LoadingSpinnerComponent, LoadingSpinnerModule, MarkdownDisplayComponent, MarkdownDisplayModule, MoleculesModule, MultiSelectDropdownComponent, MultiSelectDropdownModule, NotificationComponent, NotificationModule, NumericTextboxComponent, NumericTextboxModule, ProgressBarComponent, ProgressBarsModule, RadioButtonComponent, RadioButtonModule, SearchBoxComponent, SearchBoxModule, SharedComponent, SharedModule, SliderComponent, SliderModule, StepperComponent, StepperModule, SwitchComponent, SwitchModule, TabstripComponent, TabstripModule, TabstripTabComponent, TextAreaModule, TextareaComponent, TextboxComponent, TextboxModule, TimePickerComponent, TimePickerModule, TimeschedulerComponent, TimeschedulerModule, TooltipComponent, TooltipModule, TreeListComponent, TreeListModule, TreeViewComponent, TreeViewModule, Type, TypographyComponent, TypographyModule, UploaderComponent, UploaderModule };
6381
7507
  //# sourceMappingURL=progress-chef-platform-shared-components.mjs.map