@natec/mef-dev-ui-kit 20.1.16 → 20.1.18

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.
@@ -14451,22 +14451,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
14451
14451
  *
14452
14452
  * @example
14453
14453
  * ```html
14454
- * <ng-template mdCardsGridCellTemplate let-value="value" let-row="row">
14454
+ * <ng-template mdGridCellTemplate let-value="value" let-row="row">
14455
14455
  * <span>{{value}}</span>
14456
14456
  * </ng-template>
14457
14457
  * ```
14458
14458
  */
14459
- class MDCardsGridCellTemplateDirective {
14459
+ class MDGridCellTemplateDirective {
14460
14460
  static ngTemplateContextGuard(dir, ctx) {
14461
14461
  return true;
14462
14462
  }
14463
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridCellTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14464
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: MDCardsGridCellTemplateDirective, isStandalone: true, selector: "[mdCardsGridCellTemplate]", ngImport: i0 });
14463
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridCellTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14464
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: MDGridCellTemplateDirective, isStandalone: true, selector: "[mdGridCellTemplate]", ngImport: i0 });
14465
14465
  }
14466
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridCellTemplateDirective, decorators: [{
14466
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridCellTemplateDirective, decorators: [{
14467
14467
  type: Directive,
14468
14468
  args: [{
14469
- selector: '[mdCardsGridCellTemplate]',
14469
+ selector: '[mdGridCellTemplate]',
14470
14470
  standalone: true,
14471
14471
  }]
14472
14472
  }] });
@@ -14475,22 +14475,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
14475
14475
  *
14476
14476
  * @example
14477
14477
  * ```html
14478
- * <ng-template mdCardsGridHeaderTemplate let-column="column" let-sortFn="sortFn">
14478
+ * <ng-template mdGridHeaderTemplate let-column="column" let-sortFn="sortFn">
14479
14479
  * <span (click)="sortFn()">{{column.name}}</span>
14480
14480
  * </ng-template>
14481
14481
  * ```
14482
14482
  */
14483
- class MDCardsGridHeaderTemplateDirective {
14483
+ class MDGridHeaderTemplateDirective {
14484
14484
  static ngTemplateContextGuard(dir, ctx) {
14485
14485
  return true;
14486
14486
  }
14487
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridHeaderTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14488
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: MDCardsGridHeaderTemplateDirective, isStandalone: true, selector: "[mdCardsGridHeaderTemplate]", ngImport: i0 });
14487
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridHeaderTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14488
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: MDGridHeaderTemplateDirective, isStandalone: true, selector: "[mdGridHeaderTemplate]", ngImport: i0 });
14489
14489
  }
14490
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridHeaderTemplateDirective, decorators: [{
14490
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridHeaderTemplateDirective, decorators: [{
14491
14491
  type: Directive,
14492
14492
  args: [{
14493
- selector: '[mdCardsGridHeaderTemplate]',
14493
+ selector: '[mdGridHeaderTemplate]',
14494
14494
  standalone: true,
14495
14495
  }]
14496
14496
  }] });
@@ -14499,41 +14499,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
14499
14499
  *
14500
14500
  * @example
14501
14501
  * ```html
14502
- * <ng-template mdCardsGridEditTemplate let-row="row" let-saveFn="saveFn" let-cancelFn="cancelFn">
14502
+ * <ng-template mdGridEditTemplate let-row="row" let-saveFn="saveFn" let-cancelFn="cancelFn">
14503
14503
  * <input [(ngModel)]="row.name" />
14504
14504
  * </ng-template>
14505
14505
  * ```
14506
14506
  */
14507
- class MDCardsGridEditTemplateDirective {
14507
+ class MDGridEditTemplateDirective {
14508
14508
  static ngTemplateContextGuard(dir, ctx) {
14509
14509
  return true;
14510
14510
  }
14511
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridEditTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14512
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: MDCardsGridEditTemplateDirective, isStandalone: true, selector: "[mdCardsGridEditTemplate]", ngImport: i0 });
14511
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridEditTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14512
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: MDGridEditTemplateDirective, isStandalone: true, selector: "[mdGridEditTemplate]", ngImport: i0 });
14513
14513
  }
14514
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridEditTemplateDirective, decorators: [{
14514
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridEditTemplateDirective, decorators: [{
14515
14515
  type: Directive,
14516
14516
  args: [{
14517
- selector: '[mdCardsGridEditTemplate]',
14517
+ selector: '[mdGridEditTemplate]',
14518
14518
  standalone: true,
14519
14519
  }]
14520
14520
  }] });
14521
14521
  /**
14522
- * Column definition directive for md-cards-grid.
14522
+ * Column definition directive for md-grid.
14523
14523
  *
14524
14524
  * @example
14525
14525
  * ```html
14526
- * <md-cards-grid-column name="Name" prop="name" [sortable]="true" [width]="200">
14527
- * <ng-template mdCardsGridCellTemplate let-value="value">
14526
+ * <md-grid-column name="Name" prop="name" [sortable]="true" [width]="200">
14527
+ * <ng-template mdGridCellTemplate let-value="value">
14528
14528
  * <span>{{value}}</span>
14529
14529
  * </ng-template>
14530
- * <ng-template mdCardsGridEditTemplate let-row="row">
14530
+ * <ng-template mdGridEditTemplate let-row="row">
14531
14531
  * <input [(ngModel)]="row.name" />
14532
14532
  * </ng-template>
14533
- * </md-cards-grid-column>
14533
+ * </md-grid-column>
14534
14534
  * ```
14535
14535
  */
14536
- class MDCardsGridColumnDirective {
14536
+ class MDGridColumnDirective {
14537
14537
  /** Display name for the header */
14538
14538
  name;
14539
14539
  /** Property path to get value from row */
@@ -14579,13 +14579,13 @@ class MDCardsGridColumnDirective {
14579
14579
  get editTemplate() {
14580
14580
  return this._editTemplateInput || this._editTemplateQuery;
14581
14581
  }
14582
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14583
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.6", type: MDCardsGridColumnDirective, isStandalone: true, selector: "md-cards-grid-column", inputs: { name: "name", prop: "prop", width: ["width", "width", numberAttribute], minWidth: ["minWidth", "minWidth", numberAttribute], maxWidth: ["maxWidth", "maxWidth", numberAttribute], flexGrow: ["flexGrow", "flexGrow", numberAttribute], sortable: ["sortable", "sortable", booleanAttribute], resizeable: ["resizeable", "resizeable", booleanAttribute], comparator: "comparator", pipe: "pipe", headerClass: "headerClass", cellClass: "cellClass", _cellTemplateInput: ["cellTemplate", "_cellTemplateInput"], _headerTemplateInput: ["headerTemplate", "_headerTemplateInput"], _editTemplateInput: ["editTemplate", "_editTemplateInput"] }, queries: [{ propertyName: "_cellTemplateQuery", first: true, predicate: MDCardsGridCellTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_headerTemplateQuery", first: true, predicate: MDCardsGridHeaderTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_editTemplateQuery", first: true, predicate: MDCardsGridEditTemplateDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0 });
14582
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14583
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.6", type: MDGridColumnDirective, isStandalone: true, selector: "md-grid-column", inputs: { name: "name", prop: "prop", width: ["width", "width", numberAttribute], minWidth: ["minWidth", "minWidth", numberAttribute], maxWidth: ["maxWidth", "maxWidth", numberAttribute], flexGrow: ["flexGrow", "flexGrow", numberAttribute], sortable: ["sortable", "sortable", booleanAttribute], resizeable: ["resizeable", "resizeable", booleanAttribute], comparator: "comparator", pipe: "pipe", headerClass: "headerClass", cellClass: "cellClass", _cellTemplateInput: ["cellTemplate", "_cellTemplateInput"], _headerTemplateInput: ["headerTemplate", "_headerTemplateInput"], _editTemplateInput: ["editTemplate", "_editTemplateInput"] }, queries: [{ propertyName: "_cellTemplateQuery", first: true, predicate: MDGridCellTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_headerTemplateQuery", first: true, predicate: MDGridHeaderTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_editTemplateQuery", first: true, predicate: MDGridEditTemplateDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0 });
14584
14584
  }
14585
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridColumnDirective, decorators: [{
14585
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridColumnDirective, decorators: [{
14586
14586
  type: Directive,
14587
14587
  args: [{
14588
- selector: 'md-cards-grid-column',
14588
+ selector: 'md-grid-column',
14589
14589
  standalone: true,
14590
14590
  }]
14591
14591
  }], propDecorators: { name: [{
@@ -14623,19 +14623,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
14623
14623
  args: ['cellTemplate']
14624
14624
  }], _cellTemplateQuery: [{
14625
14625
  type: ContentChild,
14626
- args: [MDCardsGridCellTemplateDirective, { read: TemplateRef, static: true }]
14626
+ args: [MDGridCellTemplateDirective, { read: TemplateRef, static: true }]
14627
14627
  }], _headerTemplateInput: [{
14628
14628
  type: Input,
14629
14629
  args: ['headerTemplate']
14630
14630
  }], _headerTemplateQuery: [{
14631
14631
  type: ContentChild,
14632
- args: [MDCardsGridHeaderTemplateDirective, { read: TemplateRef, static: true }]
14632
+ args: [MDGridHeaderTemplateDirective, { read: TemplateRef, static: true }]
14633
14633
  }], _editTemplateInput: [{
14634
14634
  type: Input,
14635
14635
  args: ['editTemplate']
14636
14636
  }], _editTemplateQuery: [{
14637
14637
  type: ContentChild,
14638
- args: [MDCardsGridEditTemplateDirective, { read: TemplateRef, static: true }]
14638
+ args: [MDGridEditTemplateDirective, { read: TemplateRef, static: true }]
14639
14639
  }] } });
14640
14640
 
14641
14641
  /**
@@ -14703,6 +14703,10 @@ function toInternalColumn(column, defaultWidth = 150) {
14703
14703
  const name = column.name || (column.prop ? formatPropAsName(column.prop) : '');
14704
14704
  return {
14705
14705
  ...column,
14706
+ // Explicitly copy getter properties (not copied by object spread)
14707
+ cellTemplate: column.cellTemplate,
14708
+ headerTemplate: column.headerTemplate,
14709
+ editTemplate: column.editTemplate,
14706
14710
  $$id: column.$$id || generateColumnId(),
14707
14711
  name,
14708
14712
  width: column.width ?? defaultWidth,
@@ -14848,14 +14852,14 @@ function calculateColumnWidths(columns, containerWidth) {
14848
14852
  }
14849
14853
 
14850
14854
  /**
14851
- * MD Cards Grid Component
14855
+ * MD Grid Component
14852
14856
  *
14853
14857
  * A horizontal cards grid with table-like header and edit mode support.
14854
14858
  * Similar API to ngx-datatable but displays data as cards/tiles.
14855
14859
  *
14856
14860
  * @example
14857
14861
  * ```html
14858
- * <md-cards-grid
14862
+ * <md-grid
14859
14863
  * [rows]="data"
14860
14864
  * [groupRowsBy]="'category'"
14861
14865
  * [(editingRow)]="currentEditingRow"
@@ -14863,19 +14867,19 @@ function calculateColumnWidths(columns, containerWidth) {
14863
14867
  * (sort)="onSort($event)"
14864
14868
  * (rowEditSave)="onSave($event)">
14865
14869
  *
14866
- * <md-cards-grid-column name="Name" prop="name" [sortable]="true">
14867
- * <ng-template mdCardsGridCellTemplate let-value="value">
14870
+ * <md-grid-column name="Name" prop="name" [sortable]="true">
14871
+ * <ng-template mdGridCellTemplate let-value="value">
14868
14872
  * <span>{{value}}</span>
14869
14873
  * </ng-template>
14870
- * <ng-template mdCardsGridEditTemplate let-row="row">
14874
+ * <ng-template mdGridEditTemplate let-row="row">
14871
14875
  * <input [(ngModel)]="row.name" />
14872
14876
  * </ng-template>
14873
- * </md-cards-grid-column>
14877
+ * </md-grid-column>
14874
14878
  *
14875
- * </md-cards-grid>
14879
+ * </md-grid>
14876
14880
  * ```
14877
14881
  */
14878
- class MDCardsGridComponent {
14882
+ class MDGridComponent {
14879
14883
  _cdr = inject(ChangeDetectorRef);
14880
14884
  _columnsSubscription;
14881
14885
  /** Host binding for shrink mode class */
@@ -15132,10 +15136,10 @@ class MDCardsGridComponent {
15132
15136
  return '';
15133
15137
  const dir = this.getSortDir(column);
15134
15138
  if (dir === SortDirection.asc) {
15135
- return this.sortAscendingIcon || 'md-cards-grid-sort-asc';
15139
+ return this.sortAscendingIcon || 'md-grid-sort-asc';
15136
15140
  }
15137
15141
  if (dir === SortDirection.desc) {
15138
- return this.sortDescendingIcon || 'md-cards-grid-sort-desc';
15142
+ return this.sortDescendingIcon || 'md-grid-sort-desc';
15139
15143
  }
15140
15144
  return ``;
15141
15145
  }
@@ -15166,7 +15170,7 @@ class MDCardsGridComponent {
15166
15170
  document.addEventListener('mousemove', this._onResizeMove);
15167
15171
  document.addEventListener('mouseup', this._onResizeEnd);
15168
15172
  // Add resizing class to body to prevent text selection
15169
- document.body.classList.add('md-cards-grid-resizing');
15173
+ document.body.classList.add('md-grid-resizing');
15170
15174
  }
15171
15175
  /**
15172
15176
  * Handle mouse move during resize
@@ -15194,7 +15198,7 @@ class MDCardsGridComponent {
15194
15198
  document.removeEventListener('mousemove', this._onResizeMove);
15195
15199
  document.removeEventListener('mouseup', this._onResizeEnd);
15196
15200
  // Remove resizing class
15197
- document.body.classList.remove('md-cards-grid-resizing');
15201
+ document.body.classList.remove('md-grid-resizing');
15198
15202
  // Emit resize event
15199
15203
  const prevWidth = this._resizeStartWidth;
15200
15204
  const newWidth = this._resizingColumn.width;
@@ -15343,17 +15347,17 @@ class MDCardsGridComponent {
15343
15347
  this.editingRow = null;
15344
15348
  this.editingRowChange.emit(null);
15345
15349
  }
15346
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15347
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: MDCardsGridComponent, isStandalone: true, selector: "md-cards-grid", inputs: { rows: "rows", columns: "columns", groupRowsBy: "groupRowsBy", groupHeaderTemplate: "groupHeaderTemplate", rowActionsTemplate: "rowActionsTemplate", headerHeight: ["headerHeight", "headerHeight", numberAttribute], cardHeight: "cardHeight", gap: ["gap", "gap", numberAttribute], defaultColumnWidth: ["defaultColumnWidth", "defaultColumnWidth", numberAttribute], showRowActions: ["showRowActions", "showRowActions", booleanAttribute], overflowMode: "overflowMode", enableColumnResize: ["enableColumnResize", "enableColumnResize", booleanAttribute], defaultMinColumnWidth: ["defaultMinColumnWidth", "defaultMinColumnWidth", numberAttribute], defaultMaxColumnWidth: ["defaultMaxColumnWidth", "defaultMaxColumnWidth", numberAttribute], sorts: "sorts", sortType: "sortType", externalSorting: ["externalSorting", "externalSorting", booleanAttribute], enableClearingSortState: ["enableClearingSortState", "enableClearingSortState", booleanAttribute], sortAscendingIcon: "sortAscendingIcon", sortDescendingIcon: "sortDescendingIcon", sortUnsetIcon: "sortUnsetIcon", limit: ["limit", "limit", numberAttribute], offset: ["offset", "offset", numberAttribute], count: ["count", "count", numberAttribute], externalPaging: ["externalPaging", "externalPaging", booleanAttribute], showFooter: ["showFooter", "showFooter", booleanAttribute], footerHeight: ["footerHeight", "footerHeight", numberAttribute], editingRow: "editingRow" }, outputs: { columnResize: "columnResize", sort: "sort", page: "page", editingRowChange: "editingRowChange", rowEditStart: "rowEditStart", rowEditSave: "rowEditSave", rowEditCancel: "rowEditCancel" }, host: { properties: { "class.md-cards-grid-shrink-mode": "this.isShrinkMode" }, classAttribute: "md-cards-grid" }, queries: [{ propertyName: "_columnDirectives", predicate: MDCardsGridColumnDirective }], exportAs: ["mdCardsGrid"], usesOnChanges: true, ngImport: i0, template: "<!-- Scrollable container for header and body -->\r\n<div class=\"md-cards-grid-scroll-container\">\r\n<!-- Header -->\r\n@if (headerHeight > 0) {\r\n<div\r\n class=\"md-cards-grid-header\"\r\n role=\"row\"\r\n [style.height.px]=\"headerHeight\"\r\n>\r\n <div class=\"md-cards-grid-header-inner\">\r\n @for (column of _internalColumns; track trackByColumn($index, column)) {\r\n <div\r\n class=\"md-cards-grid-header-cell\"\r\n role=\"columnheader\"\r\n [class.sortable]=\"column.sortable\"\r\n [class.resizeable]=\"isColumnResizeable(column)\"\r\n [class.sort-active]=\"getSortDir(column)\"\r\n [class.sort-asc]=\"getSortDir(column) === 'asc'\"\r\n [class.sort-desc]=\"getSortDir(column) === 'desc'\"\r\n [style.width.px]=\"column.width\"\r\n [style.min-width.px]=\"column.minWidth\"\r\n [style.max-width.px]=\"column.maxWidth\"\r\n [style.flex-grow]=\"column.flexGrow\"\r\n [attr.title]=\"column.name\"\r\n (click)=\"onColumnSort(column)\"\r\n (keydown.enter)=\"onColumnSort(column)\"\r\n [attr.tabindex]=\"column.sortable ? 0 : -1\"\r\n >\r\n <!-- Custom header template -->\r\n @if (column.headerTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.headerTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n column: column,\r\n sortDir: getSortDir(column),\r\n sortFn: onColumnSort.bind(this, column)\r\n }\"\r\n />\r\n } @else {\r\n <!-- Default header -->\r\n <span class=\"md-cards-grid-header-cell-label\">{{ column.name }}</span>\r\n @if (column.sortable) {\r\n <span class=\"md-cards-grid-sort-icon\" [ngClass]=\"getSortClass(column)\"></span>\r\n }\r\n }\r\n\r\n <!-- Resize handle -->\r\n @if (isColumnResizeable(column)) {\r\n <span\r\n class=\"md-cards-grid-resize-handle\"\r\n (mousedown)=\"onResizeStart($event, column)\"\r\n ></span>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Actions header cell -->\r\n @if (showRowActions) {\r\n <div class=\"md-cards-grid-header-cell md-cards-grid-actions-cell\">\r\n <span class=\"md-cards-grid-header-cell-label\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}\r\n\r\n<!-- Body -->\r\n<div class=\"md-cards-grid-body\" [style.gap.px]=\"gap\">\r\n <!-- Grouped rows -->\r\n @if (_groupedRows) {\r\n @for (group of _groupedRows; track trackByGroup($index, group)) {\r\n <div class=\"md-cards-grid-group\">\r\n <!-- Group header -->\r\n <div class=\"md-cards-grid-group-header\">\r\n @if (groupHeaderTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"groupHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"{ group: group }\"\r\n />\r\n } @else {\r\n <span class=\"md-cards-grid-group-title\">{{ group.key }}</span>\r\n }\r\n </div>\r\n\r\n <!-- Group rows -->\r\n <div class=\"md-cards-grid-group-rows\" [style.gap.px]=\"gap\">\r\n @for (row of group.value; track trackByRow($index, row); let rowIndex = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { row: row, rowIndex: rowIndex, group: group.key }\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n }\r\n } @else {\r\n <!-- Non-grouped rows -->\r\n @for (row of _displayRows; track trackByRow($index, row); let rowIndex = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { row: row, rowIndex: rowIndex, group: null }\"\r\n />\r\n }\r\n }\r\n</div>\r\n</div><!-- End scroll container -->\r\n\r\n<!-- Row template -->\r\n<ng-template #rowTemplate let-row=\"row\" let-rowIndex=\"rowIndex\" let-group=\"group\">\r\n <div\r\n class=\"md-cards-grid-card\"\r\n [class.md-cards-grid-card-editing]=\"isEditing(row)\"\r\n [class.md-cards-grid-card-fixed-height]=\"cardHeight !== 'auto'\"\r\n [style.height]=\"cardHeight === 'auto' ? null : cardHeight + 'px'\"\r\n role=\"row\"\r\n >\r\n @for (column of _internalColumns; track trackByColumn($index, column)) {\r\n <div\r\n class=\"md-cards-grid-cell\"\r\n [style.width.px]=\"column.width\"\r\n [style.min-width.px]=\"column.minWidth\"\r\n [style.max-width.px]=\"column.maxWidth\"\r\n [style.flex-grow]=\"column.flexGrow\"\r\n role=\"cell\"\r\n >\r\n <!-- Edit mode -->\r\n @if (isEditing(row) && column.editTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.editTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: getTemplateRow(row),\r\n originalRow: row,\r\n value: getCellValue(getTemplateRow(row), column),\r\n column: column,\r\n rowIndex: rowIndex,\r\n saveFn: saveRow.bind(this),\r\n cancelFn: cancelEdit.bind(this)\r\n }\"\r\n />\r\n }\r\n <!-- View mode with custom template -->\r\n @else if (column.cellTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.cellTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: row,\r\n value: getCellValue(row, column),\r\n column: column,\r\n rowIndex: rowIndex,\r\n isEditing: isEditing(row),\r\n group: group\r\n }\"\r\n />\r\n }\r\n <!-- Default view mode -->\r\n @else {\r\n <span class=\"md-cards-grid-cell-value\">{{ getCellValue(row, column) }}</span>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Row actions -->\r\n @if (showRowActions) {\r\n <div class=\"md-cards-grid-cell md-cards-grid-actions-cell\">\r\n @if (rowActionsTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"rowActionsTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: row,\r\n rowIndex: rowIndex,\r\n isEditing: isEditing(row),\r\n editFn: editRow.bind(this, row),\r\n saveFn: saveRow.bind(this),\r\n cancelFn: cancelEdit.bind(this)\r\n }\"\r\n />\r\n } @else {\r\n <!-- Default actions -->\r\n @if (isEditing(row)) {\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-action-btn md-cards-grid-action-save\"\r\n (click)=\"saveRow()\"\r\n title=\"Save\"\r\n >\r\n <span class=\"md-cards-grid-icon-save\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-action-btn md-cards-grid-action-cancel\"\r\n (click)=\"cancelEdit()\"\r\n title=\"Cancel\"\r\n >\r\n <span class=\"md-cards-grid-icon-cancel\"></span>\r\n </button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-action-btn md-cards-grid-action-edit\"\r\n (click)=\"editRow(row)\"\r\n title=\"Edit\"\r\n >\r\n <span class=\"md-cards-grid-icon-edit\"></span>\r\n </button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Footer / Pagination -->\r\n@if (showFooter && totalPages > 1) {\r\n<div\r\n class=\"md-cards-grid-footer\"\r\n [style.height.px]=\"footerHeight\"\r\n>\r\n <div class=\"md-cards-grid-pager\">\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-pager-btn\"\r\n [disabled]=\"offset === 0\"\r\n (click)=\"setPage(0)\"\r\n title=\"First page\"\r\n >\r\n <span class=\"md-cards-grid-icon-first\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-pager-btn\"\r\n [disabled]=\"offset === 0\"\r\n (click)=\"setPage(offset - 1)\"\r\n title=\"Previous page\"\r\n >\r\n <span class=\"md-cards-grid-icon-prev\"></span>\r\n </button>\r\n\r\n <span class=\"md-cards-grid-pager-info\">\r\n {{ currentPage }} / {{ totalPages }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-pager-btn\"\r\n [disabled]=\"offset >= totalPages - 1\"\r\n (click)=\"setPage(offset + 1)\"\r\n title=\"Next page\"\r\n >\r\n <span class=\"md-cards-grid-icon-next\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-pager-btn\"\r\n [disabled]=\"offset >= totalPages - 1\"\r\n (click)=\"setPage(totalPages - 1)\"\r\n title=\"Last page\"\r\n >\r\n <span class=\"md-cards-grid-icon-last\"></span>\r\n </button>\r\n </div>\r\n</div>\r\n}\r\n", styles: ["div.jqxInGridLink{cursor:pointer;color:#00f;margin:2px;text-decoration:underline}div.jqxInGridLink :hover{color:#8a2be2}.pink-text{color:pink!important}.red-text{color:red!important}.turquoise-text{color:#03a796!important}.blue-text{color:#00f!important}.md-cards-grid{display:block;width:100%;font-family:Open Sans,Arial,sans-serif;font-size:13px;background:transparent;border:0;border-radius:0}.md-cards-grid *,.md-cards-grid *:before,.md-cards-grid *:after{box-sizing:border-box}.md-cards-grid-scroll-container{width:100%;overflow-x:auto;overflow-y:hidden}.md-cards-grid-scroll-container::-webkit-scrollbar{height:6px}.md-cards-grid-scroll-container::-webkit-scrollbar-track{background:#f3f3f3;border-radius:3px}.md-cards-grid-scroll-container::-webkit-scrollbar-thumb{background:#929292;border-radius:3px}.md-cards-grid-scroll-container::-webkit-scrollbar-thumb:hover{background:#4d4d4d}.md-cards-grid-shrink-mode .md-cards-grid-scroll-container{overflow-x:hidden}.md-cards-grid-shrink-mode .md-cards-grid-header-inner,.md-cards-grid-shrink-mode .md-cards-grid-card{min-width:0}.md-cards-grid-shrink-mode .md-cards-grid-header-cell,.md-cards-grid-shrink-mode .md-cards-grid-cell{flex-shrink:1}.md-cards-grid-header{display:block;background:transparent;margin:0;padding:0;border:0}.md-cards-grid-header-inner{display:flex;align-items:center;height:100%;min-width:fit-content}.md-cards-grid-header-cell{display:flex;align-items:center;flex-shrink:0;height:100%;padding:14px 16px;background:#fff;font-family:Montserrat,Arial,sans-serif;font-size:14px;font-weight:300;color:#4d4d4d;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.md-cards-grid-header-cell:not(:first-child){border-left:2px solid #EAEAEA}.md-cards-grid-header-cell.sortable{cursor:pointer;transition:background-color .2s ease}.md-cards-grid-header-cell.sortable:hover{background:#f3f3f3}.md-cards-grid-header-cell.sortable:focus{outline:0;outline-offset:0}.md-cards-grid-header-cell.sort-active{color:#0185cf}.md-cards-grid-header-cell.resizeable{position:relative}.md-cards-grid-header-cell-label{flex:1;overflow:hidden;text-overflow:ellipsis}.md-cards-grid-sort-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:2px;color:#929292;transition:color .2s ease}.md-cards-grid-sort-icon:before{font-family:datatable;font-size:12px}.md-cards-grid-sort-icon.md-cards-grid-sort-asc,.md-cards-grid-sort-icon.md-cards-grid-sort-desc{color:#6d5cae}.md-cards-grid-sort-icon.md-cards-grid-sort-asc:after,.md-cards-grid-sort-icon.md-cards-grid-sort-desc:after{content:\"\";display:block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent}.md-cards-grid-sort-icon.md-cards-grid-sort-asc:after{border-bottom:5px solid currentColor}.md-cards-grid-sort-icon.md-cards-grid-sort-desc:after{border-top:5px solid currentColor}.md-cards-grid-resize-handle{position:absolute;top:0;right:-8px;bottom:0;width:10px;cursor:col-resize;z-index:1}.md-cards-grid-resize-handle:after{content:\"\";position:absolute;top:25%;right:2px;bottom:25%;width:3px;background:transparent;border-radius:1px;transition:background-color .2s ease}.md-cards-grid-resize-handle:hover:after{background:#6d5cae}.md-cards-grid-header-cell:last-of-type:not(.md-cards-grid-actions-cell) .md-cards-grid-resize-handle{right:0}.md-cards-grid-header-cell:has(+.md-cards-grid-actions-cell) .md-cards-grid-resize-handle{right:0}body.md-cards-grid-resizing{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}body.md-cards-grid-resizing *{cursor:col-resize!important}.md-cards-grid-body{display:flex;flex-direction:column;padding:12px 0 0;width:fit-content;min-width:fit-content;background:transparent}.md-cards-grid-group{margin-bottom:12px}.md-cards-grid-group:last-child{margin-bottom:0}.md-cards-grid-group-header{display:flex;align-items:center;padding:10px 14px;margin-bottom:12px;background:#eaeaea;border-radius:0;font-size:13px;font-weight:600;color:#000}.md-cards-grid-group-title{flex:1}.md-cards-grid-group-rows{display:flex;flex-direction:column;width:fit-content;gap:5px}.md-cards-grid-card{display:inline-flex;align-items:stretch;width:fit-content;min-width:fit-content;background:#fff;border:0;border-radius:0;box-shadow:none;transition:all .2s ease}.md-cards-grid-card:hover{background:#fbfbfb;box-shadow:0 2px 8px #0000001f;transform:translateY(-1px)}.md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a;border:0;box-shadow:none}.md-cards-grid-card.md-cards-grid-card-fixed-height,.md-cards-grid-card.md-cards-grid-card-fixed-height .md-cards-grid-cell{overflow:hidden}.md-cards-grid-card.md-cards-grid-card-fixed-height .md-cards-grid-cell-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-cards-grid-cell{display:flex;align-items:center;flex-shrink:0;padding:14px 16px;font-size:14px;color:#000;border:0;overflow:hidden;min-width:0}.md-cards-grid-cell:last-child{border-right:none}.md-cards-grid-cell-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:1.4}.md-cards-grid-actions-cell{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-width:90px;width:auto!important;flex-grow:0!important;flex-shrink:0!important;padding:inherit;border:0}.md-cards-grid-header-cell.md-cards-grid-actions-cell{border-left:none;border-right:none}.md-cards-grid-action-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:4px;background:transparent;color:#4d4d4d;cursor:pointer;transition:all .2s ease}.md-cards-grid-action-btn:hover{transform:scale(1.1)}.md-cards-grid-action-btn:focus{outline:2px solid #6d5cae;outline-offset:1px}.md-cards-grid-action-btn:active{transform:scale(.95)}.md-cards-grid-action-edit{color:#6d5cae}.md-cards-grid-action-edit:hover{background:#e9e7f3;color:#564790}.md-cards-grid-action-save{color:#28b446}.md-cards-grid-action-save:hover{background:#dff4e3;color:#1f8a36}.md-cards-grid-action-cancel{color:#cf0106}.md-cards-grid-action-cancel:hover{background:#f8d9da;color:#9c0105}.md-cards-grid-icon-edit,.md-cards-grid-icon-save,.md-cards-grid-icon-cancel{display:inline-block;width:18px;height:18px;position:relative}.md-cards-grid-icon-edit:before,.md-cards-grid-icon-edit:after{content:\"\";position:absolute}.md-cards-grid-icon-edit:before{width:10px;height:10px;border:2px solid currentColor;border-radius:1px;transform:rotate(45deg);top:1px;left:1px}.md-cards-grid-icon-edit:after{width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:5px solid currentColor;bottom:0;left:0;transform:rotate(-45deg)}.md-cards-grid-icon-save:before{content:\"\";position:absolute;width:6px;height:10px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);top:1px;left:5px}.md-cards-grid-icon-cancel:before,.md-cards-grid-icon-cancel:after{content:\"\";position:absolute;width:14px;height:2px;background:currentColor;top:50%;left:50%}.md-cards-grid-icon-cancel:before{transform:translate(-50%,-50%) rotate(45deg)}.md-cards-grid-icon-cancel:after{transform:translate(-50%,-50%) rotate(-45deg)}.md-cards-grid-footer{display:flex;align-items:center;justify-content:flex-end;padding:12px 0 0;background:transparent;border-top:0;font-size:12px;color:#4d4d4d}.md-cards-grid-pager{display:flex;align-items:center;gap:4px}.md-cards-grid-pager-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid #EAEAEA;border-radius:4px;background:#fff;color:#4d4d4d;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.md-cards-grid-pager-btn:hover:not(:disabled){background:#f3f3f3;border-color:#929292}.md-cards-grid-pager-btn:disabled{opacity:.4;cursor:not-allowed}.md-cards-grid-pager-btn:focus{outline:2px solid #6d5cae;outline-offset:1px}.md-cards-grid-pager-info{padding:0 12px;font-weight:500}.md-cards-grid-icon-first,.md-cards-grid-icon-prev,.md-cards-grid-icon-next,.md-cards-grid-icon-last{display:inline-block;width:12px;height:12px;position:relative}.md-cards-grid-icon-first:before,.md-cards-grid-icon-prev:before,.md-cards-grid-icon-next:before,.md-cards-grid-icon-last:before{content:\"\";position:absolute;width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;top:50%;left:50%}.md-cards-grid-icon-prev:before{transform:translate(-25%,-50%) rotate(135deg)}.md-cards-grid-icon-next:before{transform:translate(-75%,-50%) rotate(-45deg)}.md-cards-grid-icon-first:before{transform:translate(-10%,-50%) rotate(135deg)}.md-cards-grid-icon-first:after{content:\"\";position:absolute;width:2px;height:10px;background:currentColor;top:50%;left:2px;transform:translateY(-50%)}.md-cards-grid-icon-last:before{transform:translate(-90%,-50%) rotate(-45deg)}.md-cards-grid-icon-last:after{content:\"\";position:absolute;width:2px;height:10px;background:currentColor;top:50%;right:2px;transform:translateY(-50%)}@media (max-width: 767px){.md-cards-grid{font-size:12px}.md-cards-grid-header{display:none}.md-cards-grid-body{padding:8px}.md-cards-grid-card{flex-direction:column}.md-cards-grid-cell{padding:10px 12px;border-right:none;border-bottom:1px solid #EAEAEA}.md-cards-grid-cell:last-child{border-bottom:none}.md-cards-grid-actions-cell{border-left:none;border-top:1px solid #EAEAEA;justify-content:center;background:#f3f3f3}.md-cards-grid-footer{flex-direction:column;gap:10px;padding:12px}}.md-cards-grid.grey .md-cards-grid-header-cell,.md-cards-grid.grey .md-cards-grid-card{background:#f3f3f3}.md-cards-grid.grey .md-cards-grid-card:hover{background:#efefef}.md-cards-grid.grey .md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a}.md-cards-grid.zebra .md-cards-grid-card:nth-child(odd){background:#fff}.md-cards-grid.zebra .md-cards-grid-card:nth-child(2n){background:#f3f3f3}.md-cards-grid.zebra .md-cards-grid-card:hover{background:#e4e4e4}.md-cards-grid.zebra .md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a}.md-cards-grid.zebra .md-cards-grid-group-rows .md-cards-grid-card:nth-child(odd){background:#fff}.md-cards-grid.zebra .md-cards-grid-group-rows .md-cards-grid-card:nth-child(2n){background:#f3f3f3}.md-cards-grid.zebra .md-cards-grid-group-rows .md-cards-grid-card:hover{background:#e4e4e4}.md-cards-grid.zebra .md-cards-grid-group-rows .md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a}.md-cards-grid.zebra.grey .md-cards-grid-card:nth-child(odd){background:#f3f3f3}.md-cards-grid.zebra.grey .md-cards-grid-card:nth-child(2n){background:#efefef}.md-cards-grid.zebra.grey .md-cards-grid-card:hover{background:#d6d6d6}.md-cards-grid.zebra.grey .md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a}.md-cards-grid.zebra.grey .md-cards-grid-group-rows .md-cards-grid-card:nth-child(odd){background:#f3f3f3}.md-cards-grid.zebra.grey .md-cards-grid-group-rows .md-cards-grid-card:nth-child(2n){background:#efefef}.md-cards-grid.zebra.grey .md-cards-grid-group-rows .md-cards-grid-card:hover{background:#d6d6d6}.md-cards-grid.zebra.grey .md-cards-grid-group-rows .md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
15350
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15351
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: MDGridComponent, isStandalone: true, selector: "md-grid", inputs: { rows: "rows", columns: "columns", groupRowsBy: "groupRowsBy", groupHeaderTemplate: "groupHeaderTemplate", rowActionsTemplate: "rowActionsTemplate", headerHeight: ["headerHeight", "headerHeight", numberAttribute], cardHeight: "cardHeight", gap: ["gap", "gap", numberAttribute], defaultColumnWidth: ["defaultColumnWidth", "defaultColumnWidth", numberAttribute], showRowActions: ["showRowActions", "showRowActions", booleanAttribute], overflowMode: "overflowMode", enableColumnResize: ["enableColumnResize", "enableColumnResize", booleanAttribute], defaultMinColumnWidth: ["defaultMinColumnWidth", "defaultMinColumnWidth", numberAttribute], defaultMaxColumnWidth: ["defaultMaxColumnWidth", "defaultMaxColumnWidth", numberAttribute], sorts: "sorts", sortType: "sortType", externalSorting: ["externalSorting", "externalSorting", booleanAttribute], enableClearingSortState: ["enableClearingSortState", "enableClearingSortState", booleanAttribute], sortAscendingIcon: "sortAscendingIcon", sortDescendingIcon: "sortDescendingIcon", sortUnsetIcon: "sortUnsetIcon", limit: ["limit", "limit", numberAttribute], offset: ["offset", "offset", numberAttribute], count: ["count", "count", numberAttribute], externalPaging: ["externalPaging", "externalPaging", booleanAttribute], showFooter: ["showFooter", "showFooter", booleanAttribute], footerHeight: ["footerHeight", "footerHeight", numberAttribute], editingRow: "editingRow" }, outputs: { columnResize: "columnResize", sort: "sort", page: "page", editingRowChange: "editingRowChange", rowEditStart: "rowEditStart", rowEditSave: "rowEditSave", rowEditCancel: "rowEditCancel" }, host: { properties: { "class.md-grid-shrink-mode": "this.isShrinkMode" }, classAttribute: "md-grid" }, queries: [{ propertyName: "_columnDirectives", predicate: MDGridColumnDirective }], exportAs: ["mdGrid"], usesOnChanges: true, ngImport: i0, template: "<!-- Scrollable container for header and body -->\r\n<div class=\"md-grid-scroll-container\">\r\n<!-- Header -->\r\n@if (headerHeight > 0) {\r\n<div\r\n class=\"md-grid-header\"\r\n role=\"row\"\r\n [style.height.px]=\"headerHeight\"\r\n>\r\n <div class=\"md-grid-header-inner\">\r\n @for (column of _internalColumns; track trackByColumn($index, column)) {\r\n <div\r\n class=\"md-grid-header-cell\"\r\n role=\"columnheader\"\r\n [class.sortable]=\"column.sortable\"\r\n [class.resizeable]=\"isColumnResizeable(column)\"\r\n [class.sort-active]=\"getSortDir(column)\"\r\n [class.sort-asc]=\"getSortDir(column) === 'asc'\"\r\n [class.sort-desc]=\"getSortDir(column) === 'desc'\"\r\n [style.width.px]=\"column.width\"\r\n [style.min-width.px]=\"column.minWidth\"\r\n [style.max-width.px]=\"column.maxWidth\"\r\n [style.flex-grow]=\"column.flexGrow\"\r\n [attr.title]=\"column.name\"\r\n (click)=\"onColumnSort(column)\"\r\n (keydown.enter)=\"onColumnSort(column)\"\r\n [attr.tabindex]=\"column.sortable ? 0 : -1\"\r\n >\r\n <!-- Custom header template -->\r\n @if (column.headerTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.headerTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n column: column,\r\n sortDir: getSortDir(column),\r\n sortFn: onColumnSort.bind(this, column)\r\n }\"\r\n />\r\n } @else {\r\n <!-- Default header -->\r\n <span class=\"md-grid-header-cell-label\">{{ column.name }}</span>\r\n @if (column.sortable) {\r\n <span class=\"md-grid-sort-icon\" [ngClass]=\"getSortClass(column)\"></span>\r\n }\r\n }\r\n\r\n <!-- Resize handle -->\r\n @if (isColumnResizeable(column)) {\r\n <span\r\n class=\"md-grid-resize-handle\"\r\n (mousedown)=\"onResizeStart($event, column)\"\r\n ></span>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Actions header cell -->\r\n @if (showRowActions) {\r\n <div class=\"md-grid-header-cell md-grid-actions-cell\">\r\n <span class=\"md-grid-header-cell-label\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}\r\n\r\n<!-- Body -->\r\n<div class=\"md-grid-body\" [style.gap.px]=\"gap\">\r\n <!-- Grouped rows -->\r\n @if (_groupedRows) {\r\n @for (group of _groupedRows; track trackByGroup($index, group)) {\r\n <div class=\"md-grid-group\">\r\n <!-- Group header -->\r\n <div class=\"md-grid-group-header\">\r\n @if (groupHeaderTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"groupHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"{ group: group }\"\r\n />\r\n } @else {\r\n <span class=\"md-grid-group-title\">{{ group.key }}</span>\r\n }\r\n </div>\r\n\r\n <!-- Group rows -->\r\n <div class=\"md-grid-group-rows\" [style.gap.px]=\"gap\">\r\n @for (row of group.value; track trackByRow($index, row); let rowIndex = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { row: row, rowIndex: rowIndex, group: group.key }\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n }\r\n } @else {\r\n <!-- Non-grouped rows -->\r\n @for (row of _displayRows; track trackByRow($index, row); let rowIndex = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { row: row, rowIndex: rowIndex, group: null }\"\r\n />\r\n }\r\n }\r\n</div>\r\n</div><!-- End scroll container -->\r\n\r\n<!-- Row template -->\r\n<ng-template #rowTemplate let-row=\"row\" let-rowIndex=\"rowIndex\" let-group=\"group\">\r\n <div\r\n class=\"md-grid-card\"\r\n [class.md-grid-card-editing]=\"isEditing(row)\"\r\n [class.md-grid-card-fixed-height]=\"cardHeight !== 'auto'\"\r\n [style.height]=\"cardHeight === 'auto' ? null : cardHeight + 'px'\"\r\n role=\"row\"\r\n >\r\n @for (column of _internalColumns; track trackByColumn($index, column)) {\r\n <div\r\n class=\"md-grid-cell\"\r\n [style.width.px]=\"column.width\"\r\n [style.min-width.px]=\"column.minWidth\"\r\n [style.max-width.px]=\"column.maxWidth\"\r\n [style.flex-grow]=\"column.flexGrow\"\r\n role=\"cell\"\r\n >\r\n <!-- Edit mode -->\r\n @if (isEditing(row) && column.editTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.editTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: getTemplateRow(row),\r\n originalRow: row,\r\n value: getCellValue(getTemplateRow(row), column),\r\n column: column,\r\n rowIndex: rowIndex,\r\n saveFn: saveRow.bind(this),\r\n cancelFn: cancelEdit.bind(this)\r\n }\"\r\n />\r\n }\r\n <!-- View mode with custom template -->\r\n @else if (column.cellTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.cellTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: row,\r\n value: getCellValue(row, column),\r\n column: column,\r\n rowIndex: rowIndex,\r\n isEditing: isEditing(row),\r\n group: group\r\n }\"\r\n />\r\n }\r\n <!-- Default view mode -->\r\n @else {\r\n <span class=\"md-grid-cell-value\">{{ getCellValue(row, column) }}</span>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Row actions -->\r\n @if (showRowActions) {\r\n <div class=\"md-grid-cell md-grid-actions-cell\">\r\n @if (rowActionsTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"rowActionsTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: row,\r\n rowIndex: rowIndex,\r\n isEditing: isEditing(row),\r\n editFn: editRow.bind(this, row),\r\n saveFn: saveRow.bind(this),\r\n cancelFn: cancelEdit.bind(this)\r\n }\"\r\n />\r\n } @else {\r\n <!-- Default actions -->\r\n @if (isEditing(row)) {\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-action-btn md-grid-action-save\"\r\n (click)=\"saveRow()\"\r\n title=\"Save\"\r\n >\r\n <span class=\"md-grid-icon-save\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-action-btn md-grid-action-cancel\"\r\n (click)=\"cancelEdit()\"\r\n title=\"Cancel\"\r\n >\r\n <span class=\"md-grid-icon-cancel\"></span>\r\n </button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-action-btn md-grid-action-edit\"\r\n (click)=\"editRow(row)\"\r\n title=\"Edit\"\r\n >\r\n <span class=\"md-grid-icon-edit\"></span>\r\n </button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Footer / Pagination -->\r\n@if (showFooter && totalPages > 1) {\r\n<div\r\n class=\"md-grid-footer\"\r\n [style.height.px]=\"footerHeight\"\r\n>\r\n <div class=\"md-grid-pager\">\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-pager-btn\"\r\n [disabled]=\"offset === 0\"\r\n (click)=\"setPage(0)\"\r\n title=\"First page\"\r\n >\r\n <span class=\"md-grid-icon-first\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-pager-btn\"\r\n [disabled]=\"offset === 0\"\r\n (click)=\"setPage(offset - 1)\"\r\n title=\"Previous page\"\r\n >\r\n <span class=\"md-grid-icon-prev\"></span>\r\n </button>\r\n\r\n <span class=\"md-grid-pager-info\">\r\n {{ currentPage }} / {{ totalPages }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-pager-btn\"\r\n [disabled]=\"offset >= totalPages - 1\"\r\n (click)=\"setPage(offset + 1)\"\r\n title=\"Next page\"\r\n >\r\n <span class=\"md-grid-icon-next\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-pager-btn\"\r\n [disabled]=\"offset >= totalPages - 1\"\r\n (click)=\"setPage(totalPages - 1)\"\r\n title=\"Last page\"\r\n >\r\n <span class=\"md-grid-icon-last\"></span>\r\n </button>\r\n </div>\r\n</div>\r\n}\r\n", styles: ["div.jqxInGridLink{cursor:pointer;color:#00f;margin:2px;text-decoration:underline}div.jqxInGridLink :hover{color:#8a2be2}.pink-text{color:pink!important}.red-text{color:red!important}.turquoise-text{color:#03a796!important}.blue-text{color:#00f!important}.md-grid{display:block;width:100%;font-family:Open Sans,Arial,sans-serif;font-size:13px;background:transparent;border:0;border-radius:0}.md-grid *,.md-grid *:before,.md-grid *:after{box-sizing:border-box}.md-grid-scroll-container{width:100%;overflow-x:auto;overflow-y:hidden}.md-grid-scroll-container::-webkit-scrollbar{height:6px}.md-grid-scroll-container::-webkit-scrollbar-track{background:#f3f3f3;border-radius:3px}.md-grid-scroll-container::-webkit-scrollbar-thumb{background:#929292;border-radius:3px}.md-grid-scroll-container::-webkit-scrollbar-thumb:hover{background:#4d4d4d}.md-grid-shrink-mode .md-grid-scroll-container{overflow-x:hidden}.md-grid-shrink-mode .md-grid-header-inner,.md-grid-shrink-mode .md-grid-card{min-width:0}.md-grid-shrink-mode .md-grid-header-cell,.md-grid-shrink-mode .md-grid-cell{flex-shrink:1}.md-grid-header{display:block;background:transparent;margin:0;padding:0;border:0}.md-grid-header-inner{display:flex;align-items:center;height:100%;min-width:fit-content}.md-grid-header-cell{display:flex;align-items:center;flex-shrink:0;height:100%;padding:14px 16px;background:#fff;font-family:Montserrat,Arial,sans-serif;font-size:14px;font-weight:300;color:#4d4d4d;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.md-grid-header-cell:not(:first-child){border-left:2px solid #EAEAEA}.md-grid-header-cell.sortable{cursor:pointer;transition:background-color .2s ease}.md-grid-header-cell.sortable:hover{background:#f3f3f3}.md-grid-header-cell.sortable:focus{outline:0;outline-offset:0}.md-grid-header-cell.sort-active{color:#0185cf}.md-grid-header-cell.resizeable{position:relative}.md-grid-header-cell-label{flex:1;overflow:hidden;text-overflow:ellipsis}.md-grid-sort-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:2px;color:#929292;transition:color .2s ease}.md-grid-sort-icon:before{font-family:datatable;font-size:12px}.md-grid-sort-icon.md-grid-sort-asc,.md-grid-sort-icon.md-grid-sort-desc{color:#6d5cae}.md-grid-sort-icon.md-grid-sort-asc:after,.md-grid-sort-icon.md-grid-sort-desc:after{content:\"\";display:block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent}.md-grid-sort-icon.md-grid-sort-asc:after{border-bottom:5px solid currentColor}.md-grid-sort-icon.md-grid-sort-desc:after{border-top:5px solid currentColor}.md-grid-resize-handle{position:absolute;top:0;right:-8px;bottom:0;width:10px;cursor:col-resize;z-index:1}.md-grid-resize-handle:after{content:\"\";position:absolute;top:25%;right:2px;bottom:25%;width:3px;background:transparent;border-radius:1px;transition:background-color .2s ease}.md-grid-resize-handle:hover:after{background:#6d5cae}.md-grid-header-cell:last-of-type:not(.md-grid-actions-cell) .md-grid-resize-handle{right:0}.md-grid-header-cell:has(+.md-grid-actions-cell) .md-grid-resize-handle{right:0}body.md-grid-resizing{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}body.md-grid-resizing *{cursor:col-resize!important}.md-grid-body{display:flex;flex-direction:column;padding:12px 0 0;width:fit-content;min-width:fit-content;background:transparent}.md-grid-group{margin-bottom:12px}.md-grid-group:last-child{margin-bottom:0}.md-grid-group-header{display:flex;align-items:center;padding:10px 14px;margin-bottom:12px;background:#eaeaea;border-radius:0;font-size:13px;font-weight:600;color:#000}.md-grid-group-title{flex:1}.md-grid-group-rows{display:flex;flex-direction:column;width:fit-content;gap:5px}.md-grid-card{display:inline-flex;align-items:stretch;width:fit-content;min-width:fit-content;background:#fff;border:0;border-radius:0;box-shadow:none;transition:all .2s ease}.md-grid-card:hover{background:#fbfbfb;box-shadow:0 2px 8px #0000001f;transform:translateY(-1px)}.md-grid-card.md-grid-card-editing{background:#cf01061a;border:0;box-shadow:none}.md-grid-card.md-grid-card-fixed-height,.md-grid-card.md-grid-card-fixed-height .md-grid-cell{overflow:hidden}.md-grid-card.md-grid-card-fixed-height .md-grid-cell-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-grid-cell{display:flex;align-items:center;flex-shrink:0;padding:14px 16px;font-size:14px;color:#000;border:0;overflow:hidden;min-width:0}.md-grid-cell:last-child{border-right:none}.md-grid-cell-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:1.4}.md-grid-actions-cell{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-width:90px;width:auto!important;flex-grow:0!important;flex-shrink:0!important;padding:inherit;border:0}.md-grid-header-cell.md-grid-actions-cell{border-left:none;border-right:none}.md-grid-action-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:4px;background:transparent;color:#4d4d4d;cursor:pointer;transition:all .2s ease}.md-grid-action-btn:hover{transform:scale(1.1)}.md-grid-action-btn:focus{outline:2px solid #6d5cae;outline-offset:1px}.md-grid-action-btn:active{transform:scale(.95)}.md-grid-action-edit{color:#6d5cae}.md-grid-action-edit:hover{background:#e9e7f3;color:#564790}.md-grid-action-save{color:#28b446}.md-grid-action-save:hover{background:#dff4e3;color:#1f8a36}.md-grid-action-cancel{color:#cf0106}.md-grid-action-cancel:hover{background:#f8d9da;color:#9c0105}.md-grid-icon-edit,.md-grid-icon-save,.md-grid-icon-cancel{display:inline-block;width:18px;height:18px;position:relative}.md-grid-icon-edit:before,.md-grid-icon-edit:after{content:\"\";position:absolute}.md-grid-icon-edit:before{width:10px;height:10px;border:2px solid currentColor;border-radius:1px;transform:rotate(45deg);top:1px;left:1px}.md-grid-icon-edit:after{width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:5px solid currentColor;bottom:0;left:0;transform:rotate(-45deg)}.md-grid-icon-save:before{content:\"\";position:absolute;width:6px;height:10px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);top:1px;left:5px}.md-grid-icon-cancel:before,.md-grid-icon-cancel:after{content:\"\";position:absolute;width:14px;height:2px;background:currentColor;top:50%;left:50%}.md-grid-icon-cancel:before{transform:translate(-50%,-50%) rotate(45deg)}.md-grid-icon-cancel:after{transform:translate(-50%,-50%) rotate(-45deg)}.md-grid-footer{display:flex;align-items:center;justify-content:flex-end;padding:12px 0 0;background:transparent;border-top:0;font-size:12px;color:#4d4d4d}.md-grid-pager{display:flex;align-items:center;gap:4px}.md-grid-pager-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid #EAEAEA;border-radius:4px;background:#fff;color:#4d4d4d;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.md-grid-pager-btn:hover:not(:disabled){background:#f3f3f3;border-color:#929292}.md-grid-pager-btn:disabled{opacity:.4;cursor:not-allowed}.md-grid-pager-btn:focus{outline:2px solid #6d5cae;outline-offset:1px}.md-grid-pager-info{padding:0 12px;font-weight:500}.md-grid-icon-first,.md-grid-icon-prev,.md-grid-icon-next,.md-grid-icon-last{display:inline-block;width:12px;height:12px;position:relative}.md-grid-icon-first:before,.md-grid-icon-prev:before,.md-grid-icon-next:before,.md-grid-icon-last:before{content:\"\";position:absolute;width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;top:50%;left:50%}.md-grid-icon-prev:before{transform:translate(-25%,-50%) rotate(135deg)}.md-grid-icon-next:before{transform:translate(-75%,-50%) rotate(-45deg)}.md-grid-icon-first:before{transform:translate(-10%,-50%) rotate(135deg)}.md-grid-icon-first:after{content:\"\";position:absolute;width:2px;height:10px;background:currentColor;top:50%;left:2px;transform:translateY(-50%)}.md-grid-icon-last:before{transform:translate(-90%,-50%) rotate(-45deg)}.md-grid-icon-last:after{content:\"\";position:absolute;width:2px;height:10px;background:currentColor;top:50%;right:2px;transform:translateY(-50%)}@media (max-width: 540px){.md-grid{font-size:12px}.md-grid-header{display:none}.md-grid-body{padding:8px}.md-grid-card{flex-direction:column}.md-grid-cell{padding:10px 12px;border-right:none;border-bottom:1px solid #EAEAEA}.md-grid-cell:last-child{border-bottom:none}.md-grid-actions-cell{border-left:none;border-top:1px solid #EAEAEA;justify-content:center;background:#f3f3f3}.md-grid-footer{flex-direction:column;gap:10px;padding:12px}}.md-grid.grey .md-grid-header-cell,.md-grid.grey .md-grid-card{background:#f3f3f3}.md-grid.grey .md-grid-card:hover{background:#efefef}.md-grid.grey .md-grid-card.md-grid-card-editing{background:#cf01061a}.md-grid.zebra .md-grid-card:nth-child(odd){background:#fff}.md-grid.zebra .md-grid-card:nth-child(2n){background:#f3f3f3}.md-grid.zebra .md-grid-card:hover{background:#e4e4e4}.md-grid.zebra .md-grid-card.md-grid-card-editing{background:#cf01061a}.md-grid.zebra .md-grid-group-rows .md-grid-card:nth-child(odd){background:#fff}.md-grid.zebra .md-grid-group-rows .md-grid-card:nth-child(2n){background:#f3f3f3}.md-grid.zebra .md-grid-group-rows .md-grid-card:hover{background:#e4e4e4}.md-grid.zebra .md-grid-group-rows .md-grid-card.md-grid-card-editing{background:#cf01061a}.md-grid.zebra.grey .md-grid-card:nth-child(odd){background:#f3f3f3}.md-grid.zebra.grey .md-grid-card:nth-child(2n){background:#efefef}.md-grid.zebra.grey .md-grid-card:hover{background:#d6d6d6}.md-grid.zebra.grey .md-grid-card.md-grid-card-editing{background:#cf01061a}.md-grid.zebra.grey .md-grid-group-rows .md-grid-card:nth-child(odd){background:#f3f3f3}.md-grid.zebra.grey .md-grid-group-rows .md-grid-card:nth-child(2n){background:#efefef}.md-grid.zebra.grey .md-grid-group-rows .md-grid-card:hover{background:#d6d6d6}.md-grid.zebra.grey .md-grid-group-rows .md-grid-card.md-grid-card-editing{background:#cf01061a}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
15348
15352
  }
15349
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridComponent, decorators: [{
15353
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridComponent, decorators: [{
15350
15354
  type: Component,
15351
- args: [{ selector: 'md-cards-grid', host: {
15352
- class: 'md-cards-grid',
15353
- }, exportAs: 'mdCardsGrid', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<!-- Scrollable container for header and body -->\r\n<div class=\"md-cards-grid-scroll-container\">\r\n<!-- Header -->\r\n@if (headerHeight > 0) {\r\n<div\r\n class=\"md-cards-grid-header\"\r\n role=\"row\"\r\n [style.height.px]=\"headerHeight\"\r\n>\r\n <div class=\"md-cards-grid-header-inner\">\r\n @for (column of _internalColumns; track trackByColumn($index, column)) {\r\n <div\r\n class=\"md-cards-grid-header-cell\"\r\n role=\"columnheader\"\r\n [class.sortable]=\"column.sortable\"\r\n [class.resizeable]=\"isColumnResizeable(column)\"\r\n [class.sort-active]=\"getSortDir(column)\"\r\n [class.sort-asc]=\"getSortDir(column) === 'asc'\"\r\n [class.sort-desc]=\"getSortDir(column) === 'desc'\"\r\n [style.width.px]=\"column.width\"\r\n [style.min-width.px]=\"column.minWidth\"\r\n [style.max-width.px]=\"column.maxWidth\"\r\n [style.flex-grow]=\"column.flexGrow\"\r\n [attr.title]=\"column.name\"\r\n (click)=\"onColumnSort(column)\"\r\n (keydown.enter)=\"onColumnSort(column)\"\r\n [attr.tabindex]=\"column.sortable ? 0 : -1\"\r\n >\r\n <!-- Custom header template -->\r\n @if (column.headerTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.headerTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n column: column,\r\n sortDir: getSortDir(column),\r\n sortFn: onColumnSort.bind(this, column)\r\n }\"\r\n />\r\n } @else {\r\n <!-- Default header -->\r\n <span class=\"md-cards-grid-header-cell-label\">{{ column.name }}</span>\r\n @if (column.sortable) {\r\n <span class=\"md-cards-grid-sort-icon\" [ngClass]=\"getSortClass(column)\"></span>\r\n }\r\n }\r\n\r\n <!-- Resize handle -->\r\n @if (isColumnResizeable(column)) {\r\n <span\r\n class=\"md-cards-grid-resize-handle\"\r\n (mousedown)=\"onResizeStart($event, column)\"\r\n ></span>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Actions header cell -->\r\n @if (showRowActions) {\r\n <div class=\"md-cards-grid-header-cell md-cards-grid-actions-cell\">\r\n <span class=\"md-cards-grid-header-cell-label\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}\r\n\r\n<!-- Body -->\r\n<div class=\"md-cards-grid-body\" [style.gap.px]=\"gap\">\r\n <!-- Grouped rows -->\r\n @if (_groupedRows) {\r\n @for (group of _groupedRows; track trackByGroup($index, group)) {\r\n <div class=\"md-cards-grid-group\">\r\n <!-- Group header -->\r\n <div class=\"md-cards-grid-group-header\">\r\n @if (groupHeaderTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"groupHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"{ group: group }\"\r\n />\r\n } @else {\r\n <span class=\"md-cards-grid-group-title\">{{ group.key }}</span>\r\n }\r\n </div>\r\n\r\n <!-- Group rows -->\r\n <div class=\"md-cards-grid-group-rows\" [style.gap.px]=\"gap\">\r\n @for (row of group.value; track trackByRow($index, row); let rowIndex = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { row: row, rowIndex: rowIndex, group: group.key }\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n }\r\n } @else {\r\n <!-- Non-grouped rows -->\r\n @for (row of _displayRows; track trackByRow($index, row); let rowIndex = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { row: row, rowIndex: rowIndex, group: null }\"\r\n />\r\n }\r\n }\r\n</div>\r\n</div><!-- End scroll container -->\r\n\r\n<!-- Row template -->\r\n<ng-template #rowTemplate let-row=\"row\" let-rowIndex=\"rowIndex\" let-group=\"group\">\r\n <div\r\n class=\"md-cards-grid-card\"\r\n [class.md-cards-grid-card-editing]=\"isEditing(row)\"\r\n [class.md-cards-grid-card-fixed-height]=\"cardHeight !== 'auto'\"\r\n [style.height]=\"cardHeight === 'auto' ? null : cardHeight + 'px'\"\r\n role=\"row\"\r\n >\r\n @for (column of _internalColumns; track trackByColumn($index, column)) {\r\n <div\r\n class=\"md-cards-grid-cell\"\r\n [style.width.px]=\"column.width\"\r\n [style.min-width.px]=\"column.minWidth\"\r\n [style.max-width.px]=\"column.maxWidth\"\r\n [style.flex-grow]=\"column.flexGrow\"\r\n role=\"cell\"\r\n >\r\n <!-- Edit mode -->\r\n @if (isEditing(row) && column.editTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.editTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: getTemplateRow(row),\r\n originalRow: row,\r\n value: getCellValue(getTemplateRow(row), column),\r\n column: column,\r\n rowIndex: rowIndex,\r\n saveFn: saveRow.bind(this),\r\n cancelFn: cancelEdit.bind(this)\r\n }\"\r\n />\r\n }\r\n <!-- View mode with custom template -->\r\n @else if (column.cellTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.cellTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: row,\r\n value: getCellValue(row, column),\r\n column: column,\r\n rowIndex: rowIndex,\r\n isEditing: isEditing(row),\r\n group: group\r\n }\"\r\n />\r\n }\r\n <!-- Default view mode -->\r\n @else {\r\n <span class=\"md-cards-grid-cell-value\">{{ getCellValue(row, column) }}</span>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Row actions -->\r\n @if (showRowActions) {\r\n <div class=\"md-cards-grid-cell md-cards-grid-actions-cell\">\r\n @if (rowActionsTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"rowActionsTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: row,\r\n rowIndex: rowIndex,\r\n isEditing: isEditing(row),\r\n editFn: editRow.bind(this, row),\r\n saveFn: saveRow.bind(this),\r\n cancelFn: cancelEdit.bind(this)\r\n }\"\r\n />\r\n } @else {\r\n <!-- Default actions -->\r\n @if (isEditing(row)) {\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-action-btn md-cards-grid-action-save\"\r\n (click)=\"saveRow()\"\r\n title=\"Save\"\r\n >\r\n <span class=\"md-cards-grid-icon-save\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-action-btn md-cards-grid-action-cancel\"\r\n (click)=\"cancelEdit()\"\r\n title=\"Cancel\"\r\n >\r\n <span class=\"md-cards-grid-icon-cancel\"></span>\r\n </button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-action-btn md-cards-grid-action-edit\"\r\n (click)=\"editRow(row)\"\r\n title=\"Edit\"\r\n >\r\n <span class=\"md-cards-grid-icon-edit\"></span>\r\n </button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Footer / Pagination -->\r\n@if (showFooter && totalPages > 1) {\r\n<div\r\n class=\"md-cards-grid-footer\"\r\n [style.height.px]=\"footerHeight\"\r\n>\r\n <div class=\"md-cards-grid-pager\">\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-pager-btn\"\r\n [disabled]=\"offset === 0\"\r\n (click)=\"setPage(0)\"\r\n title=\"First page\"\r\n >\r\n <span class=\"md-cards-grid-icon-first\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-pager-btn\"\r\n [disabled]=\"offset === 0\"\r\n (click)=\"setPage(offset - 1)\"\r\n title=\"Previous page\"\r\n >\r\n <span class=\"md-cards-grid-icon-prev\"></span>\r\n </button>\r\n\r\n <span class=\"md-cards-grid-pager-info\">\r\n {{ currentPage }} / {{ totalPages }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-pager-btn\"\r\n [disabled]=\"offset >= totalPages - 1\"\r\n (click)=\"setPage(offset + 1)\"\r\n title=\"Next page\"\r\n >\r\n <span class=\"md-cards-grid-icon-next\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-cards-grid-pager-btn\"\r\n [disabled]=\"offset >= totalPages - 1\"\r\n (click)=\"setPage(totalPages - 1)\"\r\n title=\"Last page\"\r\n >\r\n <span class=\"md-cards-grid-icon-last\"></span>\r\n </button>\r\n </div>\r\n</div>\r\n}\r\n", styles: ["div.jqxInGridLink{cursor:pointer;color:#00f;margin:2px;text-decoration:underline}div.jqxInGridLink :hover{color:#8a2be2}.pink-text{color:pink!important}.red-text{color:red!important}.turquoise-text{color:#03a796!important}.blue-text{color:#00f!important}.md-cards-grid{display:block;width:100%;font-family:Open Sans,Arial,sans-serif;font-size:13px;background:transparent;border:0;border-radius:0}.md-cards-grid *,.md-cards-grid *:before,.md-cards-grid *:after{box-sizing:border-box}.md-cards-grid-scroll-container{width:100%;overflow-x:auto;overflow-y:hidden}.md-cards-grid-scroll-container::-webkit-scrollbar{height:6px}.md-cards-grid-scroll-container::-webkit-scrollbar-track{background:#f3f3f3;border-radius:3px}.md-cards-grid-scroll-container::-webkit-scrollbar-thumb{background:#929292;border-radius:3px}.md-cards-grid-scroll-container::-webkit-scrollbar-thumb:hover{background:#4d4d4d}.md-cards-grid-shrink-mode .md-cards-grid-scroll-container{overflow-x:hidden}.md-cards-grid-shrink-mode .md-cards-grid-header-inner,.md-cards-grid-shrink-mode .md-cards-grid-card{min-width:0}.md-cards-grid-shrink-mode .md-cards-grid-header-cell,.md-cards-grid-shrink-mode .md-cards-grid-cell{flex-shrink:1}.md-cards-grid-header{display:block;background:transparent;margin:0;padding:0;border:0}.md-cards-grid-header-inner{display:flex;align-items:center;height:100%;min-width:fit-content}.md-cards-grid-header-cell{display:flex;align-items:center;flex-shrink:0;height:100%;padding:14px 16px;background:#fff;font-family:Montserrat,Arial,sans-serif;font-size:14px;font-weight:300;color:#4d4d4d;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.md-cards-grid-header-cell:not(:first-child){border-left:2px solid #EAEAEA}.md-cards-grid-header-cell.sortable{cursor:pointer;transition:background-color .2s ease}.md-cards-grid-header-cell.sortable:hover{background:#f3f3f3}.md-cards-grid-header-cell.sortable:focus{outline:0;outline-offset:0}.md-cards-grid-header-cell.sort-active{color:#0185cf}.md-cards-grid-header-cell.resizeable{position:relative}.md-cards-grid-header-cell-label{flex:1;overflow:hidden;text-overflow:ellipsis}.md-cards-grid-sort-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:2px;color:#929292;transition:color .2s ease}.md-cards-grid-sort-icon:before{font-family:datatable;font-size:12px}.md-cards-grid-sort-icon.md-cards-grid-sort-asc,.md-cards-grid-sort-icon.md-cards-grid-sort-desc{color:#6d5cae}.md-cards-grid-sort-icon.md-cards-grid-sort-asc:after,.md-cards-grid-sort-icon.md-cards-grid-sort-desc:after{content:\"\";display:block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent}.md-cards-grid-sort-icon.md-cards-grid-sort-asc:after{border-bottom:5px solid currentColor}.md-cards-grid-sort-icon.md-cards-grid-sort-desc:after{border-top:5px solid currentColor}.md-cards-grid-resize-handle{position:absolute;top:0;right:-8px;bottom:0;width:10px;cursor:col-resize;z-index:1}.md-cards-grid-resize-handle:after{content:\"\";position:absolute;top:25%;right:2px;bottom:25%;width:3px;background:transparent;border-radius:1px;transition:background-color .2s ease}.md-cards-grid-resize-handle:hover:after{background:#6d5cae}.md-cards-grid-header-cell:last-of-type:not(.md-cards-grid-actions-cell) .md-cards-grid-resize-handle{right:0}.md-cards-grid-header-cell:has(+.md-cards-grid-actions-cell) .md-cards-grid-resize-handle{right:0}body.md-cards-grid-resizing{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}body.md-cards-grid-resizing *{cursor:col-resize!important}.md-cards-grid-body{display:flex;flex-direction:column;padding:12px 0 0;width:fit-content;min-width:fit-content;background:transparent}.md-cards-grid-group{margin-bottom:12px}.md-cards-grid-group:last-child{margin-bottom:0}.md-cards-grid-group-header{display:flex;align-items:center;padding:10px 14px;margin-bottom:12px;background:#eaeaea;border-radius:0;font-size:13px;font-weight:600;color:#000}.md-cards-grid-group-title{flex:1}.md-cards-grid-group-rows{display:flex;flex-direction:column;width:fit-content;gap:5px}.md-cards-grid-card{display:inline-flex;align-items:stretch;width:fit-content;min-width:fit-content;background:#fff;border:0;border-radius:0;box-shadow:none;transition:all .2s ease}.md-cards-grid-card:hover{background:#fbfbfb;box-shadow:0 2px 8px #0000001f;transform:translateY(-1px)}.md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a;border:0;box-shadow:none}.md-cards-grid-card.md-cards-grid-card-fixed-height,.md-cards-grid-card.md-cards-grid-card-fixed-height .md-cards-grid-cell{overflow:hidden}.md-cards-grid-card.md-cards-grid-card-fixed-height .md-cards-grid-cell-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-cards-grid-cell{display:flex;align-items:center;flex-shrink:0;padding:14px 16px;font-size:14px;color:#000;border:0;overflow:hidden;min-width:0}.md-cards-grid-cell:last-child{border-right:none}.md-cards-grid-cell-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:1.4}.md-cards-grid-actions-cell{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-width:90px;width:auto!important;flex-grow:0!important;flex-shrink:0!important;padding:inherit;border:0}.md-cards-grid-header-cell.md-cards-grid-actions-cell{border-left:none;border-right:none}.md-cards-grid-action-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:4px;background:transparent;color:#4d4d4d;cursor:pointer;transition:all .2s ease}.md-cards-grid-action-btn:hover{transform:scale(1.1)}.md-cards-grid-action-btn:focus{outline:2px solid #6d5cae;outline-offset:1px}.md-cards-grid-action-btn:active{transform:scale(.95)}.md-cards-grid-action-edit{color:#6d5cae}.md-cards-grid-action-edit:hover{background:#e9e7f3;color:#564790}.md-cards-grid-action-save{color:#28b446}.md-cards-grid-action-save:hover{background:#dff4e3;color:#1f8a36}.md-cards-grid-action-cancel{color:#cf0106}.md-cards-grid-action-cancel:hover{background:#f8d9da;color:#9c0105}.md-cards-grid-icon-edit,.md-cards-grid-icon-save,.md-cards-grid-icon-cancel{display:inline-block;width:18px;height:18px;position:relative}.md-cards-grid-icon-edit:before,.md-cards-grid-icon-edit:after{content:\"\";position:absolute}.md-cards-grid-icon-edit:before{width:10px;height:10px;border:2px solid currentColor;border-radius:1px;transform:rotate(45deg);top:1px;left:1px}.md-cards-grid-icon-edit:after{width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:5px solid currentColor;bottom:0;left:0;transform:rotate(-45deg)}.md-cards-grid-icon-save:before{content:\"\";position:absolute;width:6px;height:10px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);top:1px;left:5px}.md-cards-grid-icon-cancel:before,.md-cards-grid-icon-cancel:after{content:\"\";position:absolute;width:14px;height:2px;background:currentColor;top:50%;left:50%}.md-cards-grid-icon-cancel:before{transform:translate(-50%,-50%) rotate(45deg)}.md-cards-grid-icon-cancel:after{transform:translate(-50%,-50%) rotate(-45deg)}.md-cards-grid-footer{display:flex;align-items:center;justify-content:flex-end;padding:12px 0 0;background:transparent;border-top:0;font-size:12px;color:#4d4d4d}.md-cards-grid-pager{display:flex;align-items:center;gap:4px}.md-cards-grid-pager-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid #EAEAEA;border-radius:4px;background:#fff;color:#4d4d4d;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.md-cards-grid-pager-btn:hover:not(:disabled){background:#f3f3f3;border-color:#929292}.md-cards-grid-pager-btn:disabled{opacity:.4;cursor:not-allowed}.md-cards-grid-pager-btn:focus{outline:2px solid #6d5cae;outline-offset:1px}.md-cards-grid-pager-info{padding:0 12px;font-weight:500}.md-cards-grid-icon-first,.md-cards-grid-icon-prev,.md-cards-grid-icon-next,.md-cards-grid-icon-last{display:inline-block;width:12px;height:12px;position:relative}.md-cards-grid-icon-first:before,.md-cards-grid-icon-prev:before,.md-cards-grid-icon-next:before,.md-cards-grid-icon-last:before{content:\"\";position:absolute;width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;top:50%;left:50%}.md-cards-grid-icon-prev:before{transform:translate(-25%,-50%) rotate(135deg)}.md-cards-grid-icon-next:before{transform:translate(-75%,-50%) rotate(-45deg)}.md-cards-grid-icon-first:before{transform:translate(-10%,-50%) rotate(135deg)}.md-cards-grid-icon-first:after{content:\"\";position:absolute;width:2px;height:10px;background:currentColor;top:50%;left:2px;transform:translateY(-50%)}.md-cards-grid-icon-last:before{transform:translate(-90%,-50%) rotate(-45deg)}.md-cards-grid-icon-last:after{content:\"\";position:absolute;width:2px;height:10px;background:currentColor;top:50%;right:2px;transform:translateY(-50%)}@media (max-width: 767px){.md-cards-grid{font-size:12px}.md-cards-grid-header{display:none}.md-cards-grid-body{padding:8px}.md-cards-grid-card{flex-direction:column}.md-cards-grid-cell{padding:10px 12px;border-right:none;border-bottom:1px solid #EAEAEA}.md-cards-grid-cell:last-child{border-bottom:none}.md-cards-grid-actions-cell{border-left:none;border-top:1px solid #EAEAEA;justify-content:center;background:#f3f3f3}.md-cards-grid-footer{flex-direction:column;gap:10px;padding:12px}}.md-cards-grid.grey .md-cards-grid-header-cell,.md-cards-grid.grey .md-cards-grid-card{background:#f3f3f3}.md-cards-grid.grey .md-cards-grid-card:hover{background:#efefef}.md-cards-grid.grey .md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a}.md-cards-grid.zebra .md-cards-grid-card:nth-child(odd){background:#fff}.md-cards-grid.zebra .md-cards-grid-card:nth-child(2n){background:#f3f3f3}.md-cards-grid.zebra .md-cards-grid-card:hover{background:#e4e4e4}.md-cards-grid.zebra .md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a}.md-cards-grid.zebra .md-cards-grid-group-rows .md-cards-grid-card:nth-child(odd){background:#fff}.md-cards-grid.zebra .md-cards-grid-group-rows .md-cards-grid-card:nth-child(2n){background:#f3f3f3}.md-cards-grid.zebra .md-cards-grid-group-rows .md-cards-grid-card:hover{background:#e4e4e4}.md-cards-grid.zebra .md-cards-grid-group-rows .md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a}.md-cards-grid.zebra.grey .md-cards-grid-card:nth-child(odd){background:#f3f3f3}.md-cards-grid.zebra.grey .md-cards-grid-card:nth-child(2n){background:#efefef}.md-cards-grid.zebra.grey .md-cards-grid-card:hover{background:#d6d6d6}.md-cards-grid.zebra.grey .md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a}.md-cards-grid.zebra.grey .md-cards-grid-group-rows .md-cards-grid-card:nth-child(odd){background:#f3f3f3}.md-cards-grid.zebra.grey .md-cards-grid-group-rows .md-cards-grid-card:nth-child(2n){background:#efefef}.md-cards-grid.zebra.grey .md-cards-grid-group-rows .md-cards-grid-card:hover{background:#d6d6d6}.md-cards-grid.zebra.grey .md-cards-grid-group-rows .md-cards-grid-card.md-cards-grid-card-editing{background:#cf01061a}\n"] }]
15355
+ args: [{ selector: 'md-grid', host: {
15356
+ class: 'md-grid',
15357
+ }, exportAs: 'mdGrid', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<!-- Scrollable container for header and body -->\r\n<div class=\"md-grid-scroll-container\">\r\n<!-- Header -->\r\n@if (headerHeight > 0) {\r\n<div\r\n class=\"md-grid-header\"\r\n role=\"row\"\r\n [style.height.px]=\"headerHeight\"\r\n>\r\n <div class=\"md-grid-header-inner\">\r\n @for (column of _internalColumns; track trackByColumn($index, column)) {\r\n <div\r\n class=\"md-grid-header-cell\"\r\n role=\"columnheader\"\r\n [class.sortable]=\"column.sortable\"\r\n [class.resizeable]=\"isColumnResizeable(column)\"\r\n [class.sort-active]=\"getSortDir(column)\"\r\n [class.sort-asc]=\"getSortDir(column) === 'asc'\"\r\n [class.sort-desc]=\"getSortDir(column) === 'desc'\"\r\n [style.width.px]=\"column.width\"\r\n [style.min-width.px]=\"column.minWidth\"\r\n [style.max-width.px]=\"column.maxWidth\"\r\n [style.flex-grow]=\"column.flexGrow\"\r\n [attr.title]=\"column.name\"\r\n (click)=\"onColumnSort(column)\"\r\n (keydown.enter)=\"onColumnSort(column)\"\r\n [attr.tabindex]=\"column.sortable ? 0 : -1\"\r\n >\r\n <!-- Custom header template -->\r\n @if (column.headerTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.headerTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n column: column,\r\n sortDir: getSortDir(column),\r\n sortFn: onColumnSort.bind(this, column)\r\n }\"\r\n />\r\n } @else {\r\n <!-- Default header -->\r\n <span class=\"md-grid-header-cell-label\">{{ column.name }}</span>\r\n @if (column.sortable) {\r\n <span class=\"md-grid-sort-icon\" [ngClass]=\"getSortClass(column)\"></span>\r\n }\r\n }\r\n\r\n <!-- Resize handle -->\r\n @if (isColumnResizeable(column)) {\r\n <span\r\n class=\"md-grid-resize-handle\"\r\n (mousedown)=\"onResizeStart($event, column)\"\r\n ></span>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Actions header cell -->\r\n @if (showRowActions) {\r\n <div class=\"md-grid-header-cell md-grid-actions-cell\">\r\n <span class=\"md-grid-header-cell-label\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}\r\n\r\n<!-- Body -->\r\n<div class=\"md-grid-body\" [style.gap.px]=\"gap\">\r\n <!-- Grouped rows -->\r\n @if (_groupedRows) {\r\n @for (group of _groupedRows; track trackByGroup($index, group)) {\r\n <div class=\"md-grid-group\">\r\n <!-- Group header -->\r\n <div class=\"md-grid-group-header\">\r\n @if (groupHeaderTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"groupHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"{ group: group }\"\r\n />\r\n } @else {\r\n <span class=\"md-grid-group-title\">{{ group.key }}</span>\r\n }\r\n </div>\r\n\r\n <!-- Group rows -->\r\n <div class=\"md-grid-group-rows\" [style.gap.px]=\"gap\">\r\n @for (row of group.value; track trackByRow($index, row); let rowIndex = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { row: row, rowIndex: rowIndex, group: group.key }\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n }\r\n } @else {\r\n <!-- Non-grouped rows -->\r\n @for (row of _displayRows; track trackByRow($index, row); let rowIndex = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { row: row, rowIndex: rowIndex, group: null }\"\r\n />\r\n }\r\n }\r\n</div>\r\n</div><!-- End scroll container -->\r\n\r\n<!-- Row template -->\r\n<ng-template #rowTemplate let-row=\"row\" let-rowIndex=\"rowIndex\" let-group=\"group\">\r\n <div\r\n class=\"md-grid-card\"\r\n [class.md-grid-card-editing]=\"isEditing(row)\"\r\n [class.md-grid-card-fixed-height]=\"cardHeight !== 'auto'\"\r\n [style.height]=\"cardHeight === 'auto' ? null : cardHeight + 'px'\"\r\n role=\"row\"\r\n >\r\n @for (column of _internalColumns; track trackByColumn($index, column)) {\r\n <div\r\n class=\"md-grid-cell\"\r\n [style.width.px]=\"column.width\"\r\n [style.min-width.px]=\"column.minWidth\"\r\n [style.max-width.px]=\"column.maxWidth\"\r\n [style.flex-grow]=\"column.flexGrow\"\r\n role=\"cell\"\r\n >\r\n <!-- Edit mode -->\r\n @if (isEditing(row) && column.editTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.editTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: getTemplateRow(row),\r\n originalRow: row,\r\n value: getCellValue(getTemplateRow(row), column),\r\n column: column,\r\n rowIndex: rowIndex,\r\n saveFn: saveRow.bind(this),\r\n cancelFn: cancelEdit.bind(this)\r\n }\"\r\n />\r\n }\r\n <!-- View mode with custom template -->\r\n @else if (column.cellTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"column.cellTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: row,\r\n value: getCellValue(row, column),\r\n column: column,\r\n rowIndex: rowIndex,\r\n isEditing: isEditing(row),\r\n group: group\r\n }\"\r\n />\r\n }\r\n <!-- Default view mode -->\r\n @else {\r\n <span class=\"md-grid-cell-value\">{{ getCellValue(row, column) }}</span>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Row actions -->\r\n @if (showRowActions) {\r\n <div class=\"md-grid-cell md-grid-actions-cell\">\r\n @if (rowActionsTemplate) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"rowActionsTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n row: row,\r\n rowIndex: rowIndex,\r\n isEditing: isEditing(row),\r\n editFn: editRow.bind(this, row),\r\n saveFn: saveRow.bind(this),\r\n cancelFn: cancelEdit.bind(this)\r\n }\"\r\n />\r\n } @else {\r\n <!-- Default actions -->\r\n @if (isEditing(row)) {\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-action-btn md-grid-action-save\"\r\n (click)=\"saveRow()\"\r\n title=\"Save\"\r\n >\r\n <span class=\"md-grid-icon-save\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-action-btn md-grid-action-cancel\"\r\n (click)=\"cancelEdit()\"\r\n title=\"Cancel\"\r\n >\r\n <span class=\"md-grid-icon-cancel\"></span>\r\n </button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-action-btn md-grid-action-edit\"\r\n (click)=\"editRow(row)\"\r\n title=\"Edit\"\r\n >\r\n <span class=\"md-grid-icon-edit\"></span>\r\n </button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Footer / Pagination -->\r\n@if (showFooter && totalPages > 1) {\r\n<div\r\n class=\"md-grid-footer\"\r\n [style.height.px]=\"footerHeight\"\r\n>\r\n <div class=\"md-grid-pager\">\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-pager-btn\"\r\n [disabled]=\"offset === 0\"\r\n (click)=\"setPage(0)\"\r\n title=\"First page\"\r\n >\r\n <span class=\"md-grid-icon-first\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-pager-btn\"\r\n [disabled]=\"offset === 0\"\r\n (click)=\"setPage(offset - 1)\"\r\n title=\"Previous page\"\r\n >\r\n <span class=\"md-grid-icon-prev\"></span>\r\n </button>\r\n\r\n <span class=\"md-grid-pager-info\">\r\n {{ currentPage }} / {{ totalPages }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-pager-btn\"\r\n [disabled]=\"offset >= totalPages - 1\"\r\n (click)=\"setPage(offset + 1)\"\r\n title=\"Next page\"\r\n >\r\n <span class=\"md-grid-icon-next\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"md-grid-pager-btn\"\r\n [disabled]=\"offset >= totalPages - 1\"\r\n (click)=\"setPage(totalPages - 1)\"\r\n title=\"Last page\"\r\n >\r\n <span class=\"md-grid-icon-last\"></span>\r\n </button>\r\n </div>\r\n</div>\r\n}\r\n", styles: ["div.jqxInGridLink{cursor:pointer;color:#00f;margin:2px;text-decoration:underline}div.jqxInGridLink :hover{color:#8a2be2}.pink-text{color:pink!important}.red-text{color:red!important}.turquoise-text{color:#03a796!important}.blue-text{color:#00f!important}.md-grid{display:block;width:100%;font-family:Open Sans,Arial,sans-serif;font-size:13px;background:transparent;border:0;border-radius:0}.md-grid *,.md-grid *:before,.md-grid *:after{box-sizing:border-box}.md-grid-scroll-container{width:100%;overflow-x:auto;overflow-y:hidden}.md-grid-scroll-container::-webkit-scrollbar{height:6px}.md-grid-scroll-container::-webkit-scrollbar-track{background:#f3f3f3;border-radius:3px}.md-grid-scroll-container::-webkit-scrollbar-thumb{background:#929292;border-radius:3px}.md-grid-scroll-container::-webkit-scrollbar-thumb:hover{background:#4d4d4d}.md-grid-shrink-mode .md-grid-scroll-container{overflow-x:hidden}.md-grid-shrink-mode .md-grid-header-inner,.md-grid-shrink-mode .md-grid-card{min-width:0}.md-grid-shrink-mode .md-grid-header-cell,.md-grid-shrink-mode .md-grid-cell{flex-shrink:1}.md-grid-header{display:block;background:transparent;margin:0;padding:0;border:0}.md-grid-header-inner{display:flex;align-items:center;height:100%;min-width:fit-content}.md-grid-header-cell{display:flex;align-items:center;flex-shrink:0;height:100%;padding:14px 16px;background:#fff;font-family:Montserrat,Arial,sans-serif;font-size:14px;font-weight:300;color:#4d4d4d;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.md-grid-header-cell:not(:first-child){border-left:2px solid #EAEAEA}.md-grid-header-cell.sortable{cursor:pointer;transition:background-color .2s ease}.md-grid-header-cell.sortable:hover{background:#f3f3f3}.md-grid-header-cell.sortable:focus{outline:0;outline-offset:0}.md-grid-header-cell.sort-active{color:#0185cf}.md-grid-header-cell.resizeable{position:relative}.md-grid-header-cell-label{flex:1;overflow:hidden;text-overflow:ellipsis}.md-grid-sort-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:2px;color:#929292;transition:color .2s ease}.md-grid-sort-icon:before{font-family:datatable;font-size:12px}.md-grid-sort-icon.md-grid-sort-asc,.md-grid-sort-icon.md-grid-sort-desc{color:#6d5cae}.md-grid-sort-icon.md-grid-sort-asc:after,.md-grid-sort-icon.md-grid-sort-desc:after{content:\"\";display:block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent}.md-grid-sort-icon.md-grid-sort-asc:after{border-bottom:5px solid currentColor}.md-grid-sort-icon.md-grid-sort-desc:after{border-top:5px solid currentColor}.md-grid-resize-handle{position:absolute;top:0;right:-8px;bottom:0;width:10px;cursor:col-resize;z-index:1}.md-grid-resize-handle:after{content:\"\";position:absolute;top:25%;right:2px;bottom:25%;width:3px;background:transparent;border-radius:1px;transition:background-color .2s ease}.md-grid-resize-handle:hover:after{background:#6d5cae}.md-grid-header-cell:last-of-type:not(.md-grid-actions-cell) .md-grid-resize-handle{right:0}.md-grid-header-cell:has(+.md-grid-actions-cell) .md-grid-resize-handle{right:0}body.md-grid-resizing{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}body.md-grid-resizing *{cursor:col-resize!important}.md-grid-body{display:flex;flex-direction:column;padding:12px 0 0;width:fit-content;min-width:fit-content;background:transparent}.md-grid-group{margin-bottom:12px}.md-grid-group:last-child{margin-bottom:0}.md-grid-group-header{display:flex;align-items:center;padding:10px 14px;margin-bottom:12px;background:#eaeaea;border-radius:0;font-size:13px;font-weight:600;color:#000}.md-grid-group-title{flex:1}.md-grid-group-rows{display:flex;flex-direction:column;width:fit-content;gap:5px}.md-grid-card{display:inline-flex;align-items:stretch;width:fit-content;min-width:fit-content;background:#fff;border:0;border-radius:0;box-shadow:none;transition:all .2s ease}.md-grid-card:hover{background:#fbfbfb;box-shadow:0 2px 8px #0000001f;transform:translateY(-1px)}.md-grid-card.md-grid-card-editing{background:#cf01061a;border:0;box-shadow:none}.md-grid-card.md-grid-card-fixed-height,.md-grid-card.md-grid-card-fixed-height .md-grid-cell{overflow:hidden}.md-grid-card.md-grid-card-fixed-height .md-grid-cell-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-grid-cell{display:flex;align-items:center;flex-shrink:0;padding:14px 16px;font-size:14px;color:#000;border:0;overflow:hidden;min-width:0}.md-grid-cell:last-child{border-right:none}.md-grid-cell-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:1.4}.md-grid-actions-cell{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-width:90px;width:auto!important;flex-grow:0!important;flex-shrink:0!important;padding:inherit;border:0}.md-grid-header-cell.md-grid-actions-cell{border-left:none;border-right:none}.md-grid-action-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:4px;background:transparent;color:#4d4d4d;cursor:pointer;transition:all .2s ease}.md-grid-action-btn:hover{transform:scale(1.1)}.md-grid-action-btn:focus{outline:2px solid #6d5cae;outline-offset:1px}.md-grid-action-btn:active{transform:scale(.95)}.md-grid-action-edit{color:#6d5cae}.md-grid-action-edit:hover{background:#e9e7f3;color:#564790}.md-grid-action-save{color:#28b446}.md-grid-action-save:hover{background:#dff4e3;color:#1f8a36}.md-grid-action-cancel{color:#cf0106}.md-grid-action-cancel:hover{background:#f8d9da;color:#9c0105}.md-grid-icon-edit,.md-grid-icon-save,.md-grid-icon-cancel{display:inline-block;width:18px;height:18px;position:relative}.md-grid-icon-edit:before,.md-grid-icon-edit:after{content:\"\";position:absolute}.md-grid-icon-edit:before{width:10px;height:10px;border:2px solid currentColor;border-radius:1px;transform:rotate(45deg);top:1px;left:1px}.md-grid-icon-edit:after{width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:5px solid currentColor;bottom:0;left:0;transform:rotate(-45deg)}.md-grid-icon-save:before{content:\"\";position:absolute;width:6px;height:10px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);top:1px;left:5px}.md-grid-icon-cancel:before,.md-grid-icon-cancel:after{content:\"\";position:absolute;width:14px;height:2px;background:currentColor;top:50%;left:50%}.md-grid-icon-cancel:before{transform:translate(-50%,-50%) rotate(45deg)}.md-grid-icon-cancel:after{transform:translate(-50%,-50%) rotate(-45deg)}.md-grid-footer{display:flex;align-items:center;justify-content:flex-end;padding:12px 0 0;background:transparent;border-top:0;font-size:12px;color:#4d4d4d}.md-grid-pager{display:flex;align-items:center;gap:4px}.md-grid-pager-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid #EAEAEA;border-radius:4px;background:#fff;color:#4d4d4d;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.md-grid-pager-btn:hover:not(:disabled){background:#f3f3f3;border-color:#929292}.md-grid-pager-btn:disabled{opacity:.4;cursor:not-allowed}.md-grid-pager-btn:focus{outline:2px solid #6d5cae;outline-offset:1px}.md-grid-pager-info{padding:0 12px;font-weight:500}.md-grid-icon-first,.md-grid-icon-prev,.md-grid-icon-next,.md-grid-icon-last{display:inline-block;width:12px;height:12px;position:relative}.md-grid-icon-first:before,.md-grid-icon-prev:before,.md-grid-icon-next:before,.md-grid-icon-last:before{content:\"\";position:absolute;width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;top:50%;left:50%}.md-grid-icon-prev:before{transform:translate(-25%,-50%) rotate(135deg)}.md-grid-icon-next:before{transform:translate(-75%,-50%) rotate(-45deg)}.md-grid-icon-first:before{transform:translate(-10%,-50%) rotate(135deg)}.md-grid-icon-first:after{content:\"\";position:absolute;width:2px;height:10px;background:currentColor;top:50%;left:2px;transform:translateY(-50%)}.md-grid-icon-last:before{transform:translate(-90%,-50%) rotate(-45deg)}.md-grid-icon-last:after{content:\"\";position:absolute;width:2px;height:10px;background:currentColor;top:50%;right:2px;transform:translateY(-50%)}@media (max-width: 540px){.md-grid{font-size:12px}.md-grid-header{display:none}.md-grid-body{padding:8px}.md-grid-card{flex-direction:column}.md-grid-cell{padding:10px 12px;border-right:none;border-bottom:1px solid #EAEAEA}.md-grid-cell:last-child{border-bottom:none}.md-grid-actions-cell{border-left:none;border-top:1px solid #EAEAEA;justify-content:center;background:#f3f3f3}.md-grid-footer{flex-direction:column;gap:10px;padding:12px}}.md-grid.grey .md-grid-header-cell,.md-grid.grey .md-grid-card{background:#f3f3f3}.md-grid.grey .md-grid-card:hover{background:#efefef}.md-grid.grey .md-grid-card.md-grid-card-editing{background:#cf01061a}.md-grid.zebra .md-grid-card:nth-child(odd){background:#fff}.md-grid.zebra .md-grid-card:nth-child(2n){background:#f3f3f3}.md-grid.zebra .md-grid-card:hover{background:#e4e4e4}.md-grid.zebra .md-grid-card.md-grid-card-editing{background:#cf01061a}.md-grid.zebra .md-grid-group-rows .md-grid-card:nth-child(odd){background:#fff}.md-grid.zebra .md-grid-group-rows .md-grid-card:nth-child(2n){background:#f3f3f3}.md-grid.zebra .md-grid-group-rows .md-grid-card:hover{background:#e4e4e4}.md-grid.zebra .md-grid-group-rows .md-grid-card.md-grid-card-editing{background:#cf01061a}.md-grid.zebra.grey .md-grid-card:nth-child(odd){background:#f3f3f3}.md-grid.zebra.grey .md-grid-card:nth-child(2n){background:#efefef}.md-grid.zebra.grey .md-grid-card:hover{background:#d6d6d6}.md-grid.zebra.grey .md-grid-card.md-grid-card-editing{background:#cf01061a}.md-grid.zebra.grey .md-grid-group-rows .md-grid-card:nth-child(odd){background:#f3f3f3}.md-grid.zebra.grey .md-grid-group-rows .md-grid-card:nth-child(2n){background:#efefef}.md-grid.zebra.grey .md-grid-group-rows .md-grid-card:hover{background:#d6d6d6}.md-grid.zebra.grey .md-grid-group-rows .md-grid-card.md-grid-card-editing{background:#cf01061a}\n"] }]
15354
15358
  }], propDecorators: { isShrinkMode: [{
15355
15359
  type: HostBinding,
15356
- args: ['class.md-cards-grid-shrink-mode']
15360
+ args: ['class.md-grid-shrink-mode']
15357
15361
  }], rows: [{
15358
15362
  type: Input
15359
15363
  }], columns: [{
@@ -15441,30 +15445,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
15441
15445
  type: Output
15442
15446
  }], _columnDirectives: [{
15443
15447
  type: ContentChildren,
15444
- args: [MDCardsGridColumnDirective]
15448
+ args: [MDGridColumnDirective]
15445
15449
  }] } });
15446
15450
 
15447
15451
  const DECLARATIONS = [
15448
- MDCardsGridComponent,
15449
- MDCardsGridColumnDirective,
15450
- MDCardsGridCellTemplateDirective,
15451
- MDCardsGridHeaderTemplateDirective,
15452
- MDCardsGridEditTemplateDirective,
15452
+ MDGridComponent,
15453
+ MDGridColumnDirective,
15454
+ MDGridCellTemplateDirective,
15455
+ MDGridHeaderTemplateDirective,
15456
+ MDGridEditTemplateDirective,
15453
15457
  ];
15454
- class MDCardsGridModule {
15455
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15456
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridModule, imports: [CommonModule, MDCardsGridComponent,
15457
- MDCardsGridColumnDirective,
15458
- MDCardsGridCellTemplateDirective,
15459
- MDCardsGridHeaderTemplateDirective,
15460
- MDCardsGridEditTemplateDirective], exports: [MDCardsGridComponent,
15461
- MDCardsGridColumnDirective,
15462
- MDCardsGridCellTemplateDirective,
15463
- MDCardsGridHeaderTemplateDirective,
15464
- MDCardsGridEditTemplateDirective] });
15465
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridModule, imports: [CommonModule, MDCardsGridComponent] });
15466
- }
15467
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDCardsGridModule, decorators: [{
15458
+ class MDGridModule {
15459
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15460
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.6", ngImport: i0, type: MDGridModule, imports: [CommonModule, MDGridComponent,
15461
+ MDGridColumnDirective,
15462
+ MDGridCellTemplateDirective,
15463
+ MDGridHeaderTemplateDirective,
15464
+ MDGridEditTemplateDirective], exports: [MDGridComponent,
15465
+ MDGridColumnDirective,
15466
+ MDGridCellTemplateDirective,
15467
+ MDGridHeaderTemplateDirective,
15468
+ MDGridEditTemplateDirective] });
15469
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridModule, imports: [CommonModule, MDGridComponent] });
15470
+ }
15471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MDGridModule, decorators: [{
15468
15472
  type: NgModule,
15469
15473
  args: [{
15470
15474
  imports: [
@@ -15481,5 +15485,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
15481
15485
  * Generated bundle index. Do not edit.
15482
15486
  */
15483
15487
 
15484
- export { ACCORDION, CARD_CONFIG, CardSimpleComponent, CentralPageComponent, CentralPageRowComponent, CollapseComponent, CollapseSetComponent, DIALOG_DATA, DIALOG_DEFAULT_OPTIONS, DIALOG_SCROLL_STRATEGY, DialogState, EXPANSION_PANEL_DEFAULT_OPTIONS, ErrorStateMatcher, ExpansionPanelActionRow, ExpansionPanelDescription, ExpansionPanelTitle, FillComponent, FilteredFieldContainerComponent, FilteredFieldItemComponent, FilteredFieldService, FiltredItemModel, INK_BAR_POSITIONER, INK_BAR_POSITIONER_FACTORY, InkBar, MDAccordion, MDAutocomplete, MDAutocompleteModule, MDAutocompleteOrigin, MDAutocompleteSelectedEvent, MDAutocompleteTrigger, MDCard, MDCardActions, MDCardAvatar, MDCardContent, MDCardFooter, MDCardHeader, MDCardImage, MDCardLgImage, MDCardMdImage, MDCardModule, MDCardSmImage, MDCardSubtitle, MDCardTitle, MDCardTitleGroup, MDCardXlImage, MDCardsGridCellTemplateDirective, MDCardsGridColumnDirective, MDCardsGridComponent, MDCardsGridEditTemplateDirective, MDCardsGridHeaderTemplateDirective, MDCardsGridModule, MDCheckBox, MDCheckBoxModule, MDCheckboxChange, MDChip, MDChipAvatar, MDChipEdit, MDChipEditInput, MDChipGrid, MDChipGridChange, MDChipInput, MDChipListbox, MDChipListboxChange, MDChipOption, MDChipRemove, MDChipRow, MDChipSelectionChange, MDChipSet, MDChipTrailingIcon, MDChipsModule, MDCollapseModule, MDContextMenuTrigger, MDDialog, MDDialogActions, MDDialogClose, MDDialogContainer, MDDialogContent, MDDialogTitle, MDExpansionPanel, MDExpansionPanelContent, MDExpansionPanelHeader, MDHeaderCardComponent, MDHeaderCardModule, MDHeaderCardSetComponent, MDMenu, MDMenuContent, MDMenuItem, MDMenuModule, MDMenuTrigger, MDModalModule, MDOption, MDOptionGroup, MDOptionModule, MDOptionSelectionChange, MDPseudoCheckboxModule, MDRadioButton, MDRadioGroup, MDRadioModule, MDSelect, MDSelectModule, MDSelectTrigger, MDStep, MDStepContent, MDStepExecutorModule, MDStepFooter, MDStepHeader, MDStepLabel, MDStepper, MDStepperIcon, MDStepperNext, MDStepperPrevious, MDSwitch, MDSwitchModule, MDTab, MDTabBody, MDTabChangeEvent, MDTabContent, MDTabGroup, MDTabHeader, MDTabLabel, MDTabLabelWrapper, MDTabsModule, MD_AUTOCOMPLETE_DEFAULT_OPTIONS, MD_AUTOCOMPLETE_SCROLL_STRATEGY, MD_AUTOCOMPLETE_VALUE_ACCESSOR, MD_CHIP, MD_CHIPS_DEFAULT_OPTIONS, MD_CHIP_AVATAR, MD_CHIP_EDIT, MD_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR, MD_CHIP_REMOVE, MD_CHIP_TRAILING_ICON, MD_EXPANSION_PANEL, MD_MENU_CONTENT, MD_MENU_DEFAULT_OPTIONS, MD_MENU_PANEL, MD_MENU_SCROLL_STRATEGY, MD_OPTION_PARENT_COMPONENT, MD_RADIO_GROUP, MD_SELECT_TRIGGER, MD_TAB, MD_TAB_LABEL, MENU_PANEL_TOP_PADDING, ManagePageComponent, MefDevCardModule, MefDevCollapseModule, MefDevDialogConfig, MefDevDialogRef, MefDevDropDownMenuModule, MefDevFilteredFieldModule, MefDevModalModule, MefDevOptionComponent, MefDevPageLayoutsModule, MefDevProgressComponent, MefDevProgressModule, MefDevSelectComponent, MefDevSelectModule, MefDevStepExecutorModule, MefDevSwitchComponent, MefDevSwitchModule, MefDevTabBodyComponent, MefDevTabComponent, MefDevTabLabelDirective, MefDevTabSetComponent, MefDevTabsInkBarDirective, MefDevTabsModule, MefDevTabsNavComponent, MefdevDropdownMenuComponent, MefdevExecutorPageComponent, OptionPipe, OverflowMode, PaginatedTabHeader, ProgressConfig, PseudoCheckbox, RADIO_GROUP_CONTROL_VALUE_ACCESSOR, RadioChange, RightFilterComponent, STEPPER_INTL_PROVIDER, STEPPER_INTL_PROVIDER_FACTORY, SelectChange, ShowOnDirtyErrorStateMatcher, SlideRightComponent, SlideUpComponent, SortDirection, SortType, StageComponent, StepExecutorComponent, StepperErrorStateMatcher, StepperIntl, TABS_CONFIG, TAB_CONTENT, TAB_GROUP, TabBodyPortal, TabChangeEvent, TablePageComponent, TransitionCheckState, _ErrorStateTracker, _closeDialogVia, _countGroupLabelsBeforeOption, _getOptionScrollPosition, components, deepClone, getMDAutocompleteMissingPanelError, getMDSelectDynamicMultipleError, getMDSelectNonArrayValueError, getMDSelectNonFunctionValueError, groupRowsByProperty, mefDevCardComponents, mefDevCollapseModuleComponents, sortRows };
15488
+ export { ACCORDION, CARD_CONFIG, CardSimpleComponent, CentralPageComponent, CentralPageRowComponent, CollapseComponent, CollapseSetComponent, DIALOG_DATA, DIALOG_DEFAULT_OPTIONS, DIALOG_SCROLL_STRATEGY, DialogState, EXPANSION_PANEL_DEFAULT_OPTIONS, ErrorStateMatcher, ExpansionPanelActionRow, ExpansionPanelDescription, ExpansionPanelTitle, FillComponent, FilteredFieldContainerComponent, FilteredFieldItemComponent, FilteredFieldService, FiltredItemModel, INK_BAR_POSITIONER, INK_BAR_POSITIONER_FACTORY, InkBar, MDAccordion, MDAutocomplete, MDAutocompleteModule, MDAutocompleteOrigin, MDAutocompleteSelectedEvent, MDAutocompleteTrigger, MDCard, MDCardActions, MDCardAvatar, MDCardContent, MDCardFooter, MDCardHeader, MDCardImage, MDCardLgImage, MDCardMdImage, MDCardModule, MDCardSmImage, MDCardSubtitle, MDCardTitle, MDCardTitleGroup, MDCardXlImage, MDCheckBox, MDCheckBoxModule, MDCheckboxChange, MDChip, MDChipAvatar, MDChipEdit, MDChipEditInput, MDChipGrid, MDChipGridChange, MDChipInput, MDChipListbox, MDChipListboxChange, MDChipOption, MDChipRemove, MDChipRow, MDChipSelectionChange, MDChipSet, MDChipTrailingIcon, MDChipsModule, MDCollapseModule, MDContextMenuTrigger, MDDialog, MDDialogActions, MDDialogClose, MDDialogContainer, MDDialogContent, MDDialogTitle, MDExpansionPanel, MDExpansionPanelContent, MDExpansionPanelHeader, MDGridCellTemplateDirective, MDGridColumnDirective, MDGridComponent, MDGridEditTemplateDirective, MDGridHeaderTemplateDirective, MDGridModule, MDHeaderCardComponent, MDHeaderCardModule, MDHeaderCardSetComponent, MDMenu, MDMenuContent, MDMenuItem, MDMenuModule, MDMenuTrigger, MDModalModule, MDOption, MDOptionGroup, MDOptionModule, MDOptionSelectionChange, MDPseudoCheckboxModule, MDRadioButton, MDRadioGroup, MDRadioModule, MDSelect, MDSelectModule, MDSelectTrigger, MDStep, MDStepContent, MDStepExecutorModule, MDStepFooter, MDStepHeader, MDStepLabel, MDStepper, MDStepperIcon, MDStepperNext, MDStepperPrevious, MDSwitch, MDSwitchModule, MDTab, MDTabBody, MDTabChangeEvent, MDTabContent, MDTabGroup, MDTabHeader, MDTabLabel, MDTabLabelWrapper, MDTabsModule, MD_AUTOCOMPLETE_DEFAULT_OPTIONS, MD_AUTOCOMPLETE_SCROLL_STRATEGY, MD_AUTOCOMPLETE_VALUE_ACCESSOR, MD_CHIP, MD_CHIPS_DEFAULT_OPTIONS, MD_CHIP_AVATAR, MD_CHIP_EDIT, MD_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR, MD_CHIP_REMOVE, MD_CHIP_TRAILING_ICON, MD_EXPANSION_PANEL, MD_MENU_CONTENT, MD_MENU_DEFAULT_OPTIONS, MD_MENU_PANEL, MD_MENU_SCROLL_STRATEGY, MD_OPTION_PARENT_COMPONENT, MD_RADIO_GROUP, MD_SELECT_TRIGGER, MD_TAB, MD_TAB_LABEL, MENU_PANEL_TOP_PADDING, ManagePageComponent, MefDevCardModule, MefDevCollapseModule, MefDevDialogConfig, MefDevDialogRef, MefDevDropDownMenuModule, MefDevFilteredFieldModule, MefDevModalModule, MefDevOptionComponent, MefDevPageLayoutsModule, MefDevProgressComponent, MefDevProgressModule, MefDevSelectComponent, MefDevSelectModule, MefDevStepExecutorModule, MefDevSwitchComponent, MefDevSwitchModule, MefDevTabBodyComponent, MefDevTabComponent, MefDevTabLabelDirective, MefDevTabSetComponent, MefDevTabsInkBarDirective, MefDevTabsModule, MefDevTabsNavComponent, MefdevDropdownMenuComponent, MefdevExecutorPageComponent, OptionPipe, OverflowMode, PaginatedTabHeader, ProgressConfig, PseudoCheckbox, RADIO_GROUP_CONTROL_VALUE_ACCESSOR, RadioChange, RightFilterComponent, STEPPER_INTL_PROVIDER, STEPPER_INTL_PROVIDER_FACTORY, SelectChange, ShowOnDirtyErrorStateMatcher, SlideRightComponent, SlideUpComponent, SortDirection, SortType, StageComponent, StepExecutorComponent, StepperErrorStateMatcher, StepperIntl, TABS_CONFIG, TAB_CONTENT, TAB_GROUP, TabBodyPortal, TabChangeEvent, TablePageComponent, TransitionCheckState, _ErrorStateTracker, _closeDialogVia, _countGroupLabelsBeforeOption, _getOptionScrollPosition, components, deepClone, getMDAutocompleteMissingPanelError, getMDSelectDynamicMultipleError, getMDSelectNonArrayValueError, getMDSelectNonFunctionValueError, groupRowsByProperty, mefDevCardComponents, mefDevCollapseModuleComponents, sortRows };
15485
15489
  //# sourceMappingURL=natec-mef-dev-ui-kit.mjs.map