cps-ui-kit 0.24.0 → 0.26.0

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.
@@ -1,7 +1,7 @@
1
1
  import * as i2 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, Input, EventEmitter, Self, Optional, Output, ViewChild, Directive, HostListener, Pipe, HostBinding } from '@angular/core';
4
+ import { Component, Input, EventEmitter, Self, Optional, Output, ViewChild, Directive, HostListener, Pipe, HostBinding, Host, ContentChild } from '@angular/core';
5
5
  import { Subscription } from 'rxjs';
6
6
  import * as i1 from '@angular/forms';
7
7
  import { FormsModule } from '@angular/forms';
@@ -11,9 +11,34 @@ import { VirtualScrollerModule } from 'primeng/virtualscroller';
11
11
  import * as i4 from 'primeng/api';
12
12
  import * as i3$1 from 'primeng/tree';
13
13
  import { TreeModule } from 'primeng/tree';
14
+ import { __rest } from 'tslib';
15
+ import * as i1$1 from 'primeng/table';
16
+ import { TableService, Table, TableModule, SortableColumn, SortIcon } from 'primeng/table';
14
17
  import * as i2$1 from 'primeng/calendar';
15
18
  import { CalendarModule } from 'primeng/calendar';
16
19
 
20
+ const convertSize = (size) => {
21
+ const res = String(size).trim();
22
+ if (!res) {
23
+ return '';
24
+ }
25
+ if (/^\d+(\.\d+)?$/i.test(res)) {
26
+ return res + 'px';
27
+ }
28
+ if (/^\d+(\.\d+)?(px|rem|em|%)$/i.test(res)) {
29
+ return res;
30
+ }
31
+ throw new Error(`Invalid size value: ${size}`);
32
+ };
33
+ const parseSize = (size) => {
34
+ const match = size.match(/^(\d+(?:\.\d+)?)(px|rem|em|%)$/);
35
+ if (!match)
36
+ throw new Error(`Invalid size value: ${size}`);
37
+ const value = parseFloat(match[1]);
38
+ const unit = match[2];
39
+ return { value, unit };
40
+ };
41
+
17
42
  const isSameDomain = (styleSheet) => {
18
43
  if (!styleSheet.href) {
19
44
  return true;
@@ -71,28 +96,6 @@ const getTextColor = (backgroundColor) => {
71
96
  }
72
97
  };
73
98
 
74
- const convertSize = (size) => {
75
- const res = String(size).trim();
76
- if (!res) {
77
- return '';
78
- }
79
- if (/^\d+(\.\d+)?$/i.test(res)) {
80
- return res + 'px';
81
- }
82
- if (/^\d+(\.\d+)?(px|rem|em|%)$/i.test(res)) {
83
- return res;
84
- }
85
- throw new Error(`Invalid size value: ${size}`);
86
- };
87
- const parseSize = (size) => {
88
- const match = size.match(/^(\d+(?:\.\d+)?)(px|rem|em|%)$/);
89
- if (!match)
90
- throw new Error(`Invalid size value: ${size}`);
91
- const value = parseFloat(match[1]);
92
- const unit = match[2];
93
- return { value, unit };
94
- };
95
-
96
99
  const iconNames = [
97
100
  'access',
98
101
  'access-denied',
@@ -2560,6 +2563,279 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
2560
2563
  type: Output
2561
2564
  }] } });
2562
2565
 
2566
+ class TableUnsortDirective {
2567
+ constructor(pTable) {
2568
+ this.pTable = pTable;
2569
+ this.defaultSortOrderInitialized = false;
2570
+ pTable.tableService.valueSource$.subscribe((val) => {
2571
+ if (val != null && val.length > 0 && !this.defaultSortOrderInitialized) {
2572
+ let i = 0;
2573
+ val.forEach((v) => {
2574
+ v._defaultSortOrder = i++;
2575
+ });
2576
+ this.defaultSortOrderInitialized = true;
2577
+ }
2578
+ });
2579
+ pTable.sort = (event) => {
2580
+ var _a;
2581
+ if (pTable.sortMode === 'single') {
2582
+ if (pTable.sortField === event.field && pTable.sortOrder === -1) {
2583
+ event.field = '_defaultSortOrder';
2584
+ }
2585
+ pTable._sortOrder =
2586
+ pTable.sortField === event.field
2587
+ ? pTable.sortOrder * -1
2588
+ : pTable.defaultSortOrder;
2589
+ pTable._sortField = event.field;
2590
+ pTable.sortSingle();
2591
+ }
2592
+ if (pTable.sortMode === 'multiple') {
2593
+ let resetIndex = false;
2594
+ const sortMeta = pTable.getSortMeta(event.field);
2595
+ if (sortMeta) {
2596
+ for (let i = 0; i < pTable._multiSortMeta.length; i++) {
2597
+ if (pTable._multiSortMeta[i].field === sortMeta.field) {
2598
+ pTable._multiSortMeta.splice(i, 1);
2599
+ }
2600
+ }
2601
+ if (sortMeta.order === 1) {
2602
+ sortMeta.order = sortMeta.order * -1;
2603
+ pTable.multiSortMeta.push(sortMeta);
2604
+ }
2605
+ if (((_a = pTable._multiSortMeta) === null || _a === void 0 ? void 0 : _a.length) === 0) {
2606
+ pTable.multiSortMeta.push({
2607
+ field: '_defaultSortOrder',
2608
+ order: pTable.defaultSortOrder
2609
+ });
2610
+ resetIndex = true;
2611
+ }
2612
+ }
2613
+ else {
2614
+ if (!pTable.multiSortMeta) {
2615
+ pTable._multiSortMeta = [];
2616
+ }
2617
+ pTable.multiSortMeta.push({
2618
+ field: event.field,
2619
+ order: pTable.defaultSortOrder
2620
+ });
2621
+ }
2622
+ pTable.sortMultiple();
2623
+ if (resetIndex)
2624
+ pTable._multiSortMeta = [];
2625
+ }
2626
+ if (pTable.isStateful()) {
2627
+ pTable.saveState();
2628
+ }
2629
+ pTable.anchorRowIndex = 0;
2630
+ };
2631
+ }
2632
+ }
2633
+ TableUnsortDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableUnsortDirective, deps: [{ token: i1$1.Table, host: true, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
2634
+ TableUnsortDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: TableUnsortDirective, isStandalone: true, selector: "[withUnsort]", ngImport: i0 });
2635
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableUnsortDirective, decorators: [{
2636
+ type: Directive,
2637
+ args: [{
2638
+ standalone: true,
2639
+ selector: '[withUnsort]'
2640
+ }]
2641
+ }], ctorParameters: function () {
2642
+ return [{ type: i1$1.Table, decorators: [{
2643
+ type: Host
2644
+ }, {
2645
+ type: Self
2646
+ }, {
2647
+ type: Optional
2648
+ }] }];
2649
+ } });
2650
+
2651
+ function tableFactory(tableComponent) {
2652
+ return tableComponent.primengTable;
2653
+ }
2654
+ class CpsTableComponent {
2655
+ // eslint-disable-next-line no-useless-constructor
2656
+ constructor(cdRef) {
2657
+ this.cdRef = cdRef;
2658
+ this.headers = [];
2659
+ this.data = [];
2660
+ this.columns = []; // combines both headers and data
2661
+ this.striped = true;
2662
+ this.bordered = true;
2663
+ this.size = 'normal';
2664
+ this.selectable = true;
2665
+ this.emptyMessage = 'No data';
2666
+ this.hasToolbar = true;
2667
+ this.toolbarSize = 'normal';
2668
+ this.toolbarTitle = '';
2669
+ this.sortMode = 'multiple';
2670
+ this.customSort = false;
2671
+ this.rowHover = true;
2672
+ this.scrollable = true;
2673
+ this.virtualScroll = false; // works only if scrollable is true
2674
+ // @Input() draggableRows = false; TODO
2675
+ // @Input() columnsToggle = false; TODO
2676
+ // @Input() export = false; TODO
2677
+ /* @Input() */ this.resizableColumns = false; // TODO
2678
+ /* @Input() */ this.reorderableColumns = false; // TODO
2679
+ // TODO CpsTableColumnFilterDirective (type date, text, boolean, range, categories, numeric)
2680
+ this.selectionChanged = new EventEmitter();
2681
+ /**
2682
+ * A function to implement custom sorting. customSort must be true.
2683
+ * @param {any} any - sort meta.
2684
+ * @group Emits
2685
+ */
2686
+ this.customSortFunction = new EventEmitter();
2687
+ this.styleClass = '';
2688
+ this.selectedRows = [];
2689
+ this.virtualScrollItemSize = 0;
2690
+ }
2691
+ ngOnInit() {
2692
+ if (!this.scrollable)
2693
+ this.virtualScroll = false;
2694
+ switch (this.size) {
2695
+ case 'small':
2696
+ this.styleClass = 'p-datatable-sm';
2697
+ break;
2698
+ case 'large':
2699
+ this.styleClass = 'p-datatable-lg';
2700
+ break;
2701
+ }
2702
+ switch (this.toolbarSize) {
2703
+ case 'small':
2704
+ this.styleClass += ' cps-tbar-small';
2705
+ break;
2706
+ case 'normal':
2707
+ this.styleClass += ' cps-tbar-normal';
2708
+ break;
2709
+ }
2710
+ if (this.striped) {
2711
+ this.styleClass += ' p-datatable-striped';
2712
+ }
2713
+ if (this.bordered) {
2714
+ this.styleClass += ' p-datatable-gridlines';
2715
+ }
2716
+ }
2717
+ ngAfterViewInit() {
2718
+ var _a, _b, _c, _d, _e;
2719
+ this.virtualScrollItemSize =
2720
+ ((_e = (_d = (_c = (_b = (_a = this.primengTable) === null || _a === void 0 ? void 0 : _a.el) === null || _b === void 0 ? void 0 : _b.nativeElement) === null || _c === void 0 ? void 0 : _c.querySelector('.p-datatable-tbody')) === null || _d === void 0 ? void 0 : _d.querySelector('tr')) === null || _e === void 0 ? void 0 : _e.clientHeight) || 0;
2721
+ this.cdRef.detectChanges();
2722
+ }
2723
+ onSelectionChanged(selection) {
2724
+ this.selectionChanged.emit(
2725
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2726
+ selection.map((_a) => {
2727
+ var { _defaultSortOrder } = _a, rest = __rest(_a, ["_defaultSortOrder"]);
2728
+ return rest;
2729
+ }));
2730
+ }
2731
+ onSortFunction(event) {
2732
+ this.customSortFunction.emit(event);
2733
+ }
2734
+ }
2735
+ CpsTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2736
+ CpsTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsTableComponent, isStandalone: true, selector: "cps-table", inputs: { headers: "headers", data: "data", columns: "columns", striped: "striped", bordered: "bordered", size: "size", selectable: "selectable", emptyMessage: "emptyMessage", hasToolbar: "hasToolbar", toolbarSize: "toolbarSize", toolbarTitle: "toolbarTitle", sortMode: "sortMode", customSort: "customSort", rowHover: "rowHover", scrollable: "scrollable", virtualScroll: "virtualScroll" }, outputs: { selectionChanged: "selectionChanged", customSortFunction: "customSortFunction" }, providers: [
2737
+ TableService,
2738
+ {
2739
+ provide: Table,
2740
+ useFactory: tableFactory,
2741
+ // eslint-disable-next-line no-use-before-define
2742
+ deps: [CpsTableComponent]
2743
+ }
2744
+ ], queries: [{ propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }, { propertyName: "bodyTemplate", first: true, predicate: ["body"], descendants: true }], viewQueries: [{ propertyName: "primengTable", first: true, predicate: ["primengTable"], descendants: true, static: true }], ngImport: i0, template: "<p-table\n #primengTable\n withUnsort\n [styleClass]=\"styleClass\"\n [value]=\"data\"\n [columns]=\"columns\"\n (selectionChange)=\"onSelectionChanged($event)\"\n [resizableColumns]=\"resizableColumns\"\n [reorderableColumns]=\"reorderableColumns\"\n [scrollable]=\"scrollable\"\n scrollHeight=\"flex\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [(selection)]=\"selectedRows\"\n [metaKeySelection]=\"false\"\n [rowHover]=\"rowHover\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n (sortFunction)=\"onSortFunction($event)\">\n <ng-template pTemplate=\"caption\" *ngIf=\"hasToolbar\">\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!toolbarTemplate\">\n {{ toolbarTitle }}\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th style=\"width: 4rem\" *ngIf=\"selectable\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate\">\n <th *ngFor=\"let h of headers\">{{ h }}</th>\n </ng-container>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item let-rowIndex=\"rowIndex\">\n <tr>\n <td *ngIf=\"selectable\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <ng-container\n pTemplate=\"body\"\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: { $implicit: item, rowIndex: rowIndex }\n \"></ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"4\">{{ emptyMessage }}</td>\n </tr>\n </ng-template>\n</p-table>\n", styles: [":host ::ng-deep .p-component,:host ::ng-deep .p-component *{box-sizing:border-box}:host ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host ::ng-deep .p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}:host ::ng-deep .p-datatable{position:relative}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-header{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable .p-datatable-header{font-weight:600;display:flex;justify-content:space-between;align-items:center;padding:0 10px;border:1px solid var(--cps-color-line-mid);border-left:4px solid var(--cps-color-surprise)!important;border-radius:4px 4px 0 0;font-size:16px;line-height:150%;background-color:#fff;color:var(--cps-color-text-dark);overflow:auto}:host ::ng-deep .cps-tbar-small.p-datatable .p-datatable-header{height:43px}:host ::ng-deep .cps-tbar-normal.p-datatable .p-datatable-header{height:72px}:host ::ng-deep .p-datatable-flex-scrollable>.p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}:host ::ng-deep .p-datatable-scrollable>.p-datatable-wrapper{position:relative}:host ::ng-deep .p-datatable>.p-datatable-wrapper{overflow:auto}:host ::ng-deep .p-datatable-table{border-spacing:0px;width:100%}:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-tfoot,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-tfoot{background-color:#fff}:host ::ng-deep .p-datatable-scrollable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-thead>tr>th:last-child{border-width:1px}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-thead>tr>th{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-thead>tr>th{padding:1.25rem}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-thead>tr>th{border-width:1px 0 1px 1px}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover{background:white;color:var(--cps-color-text-mild)}:host ::ng-deep .p-datatable .p-sortable-column.p-highlight:hover{background:white;color:var(--cps-color-text-mild)}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{text-align:left;padding:1rem;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;font-weight:400;color:var(--cps-color-text-mild);background:white;transition:box-shadow .2s}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:var(--cps-color-text-dark)}:host ::ng-deep .p-datatable .p-sortable-column .p-sortable-column-icon{color:var(--cps-color-text-mild);margin-left:.5rem}:host ::ng-deep .p-datatable .p-sortable-column.p-highlight .p-sortable-column-icon{color:var(--cps-color-calm)}:host ::ng-deep .p-icon-wrapper{display:inline-flex}:host ::ng-deep .p-icon{display:inline-block;width:1rem;height:1rem}:host ::ng-deep .p-sortable-column-icon{width:13px;height:13px}:host ::ng-deep .p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}:host ::ng-deep .p-datatable .p-sortable-column .p-column-title,:host ::ng-deep .p-datatable .p-sortable-column .p-sortable-column-icon,:host ::ng-deep .p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:unset}:host ::ng-deep .p-datatable .p-sortable-column .p-sortable-column-badge{border-radius:50%;height:1.143rem;min-width:1.143rem;line-height:1.143rem;color:var(--cps-color-calm);background:#f1eaec;margin-left:.5rem}:host ::ng-deep filtericon{pointer-events:none}:host ::ng-deep filtericon .p-icon{width:13px;height:13px}:host ::ng-deep p-columnfilter{margin-left:4px}:host ::ng-deep .p-column-filter-menu-button:hover{color:var(--cps-color-text-dark);border-color:transparent}:host ::ng-deep .p-column-filter-menu-button.p-column-filter-menu-button-open,:host ::ng-deep .p-column-filter-menu-button.p-column-filter-menu-button-open:hover{background:transparent;color:var(--cps-color-text-dark)}:host ::ng-deep .p-column-filter-menu-button,:host ::ng-deep .p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}:host ::ng-deep .p-column-filter-menu-button:focus{outline:0 none;outline-offset:0;box-shadow:none}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column:focus{box-shadow:none;outline:0 none}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(odd){background:var(--cps-color-bg-light)}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#ffffff}:host ::ng-deep .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):hover{background:#f8f4f5}:host ::ng-deep .p-datatable .p-datatable-tbody>tr{background:#ffffff;color:var(--cps-color-text-dark);transition:box-shadow .2s}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td:last-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td:last-child{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-tbody>tr>td{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-tbody>tr>td{padding:1.25rem}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td{border-width:0 0 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td{border-width:1px 0 0 1px}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{text-align:left;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;padding:1rem}:host ::ng-deep td:has(p-tablecheckbox){text-align:center!important}:host ::ng-deep th:has(p-tableheadercheckbox){text-align:center!important;width:3rem!important}:host ::ng-deep .p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative;width:18px;height:18px}:host ::ng-deep .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}:host ::ng-deep .p-hidden-accessible input,:host ::ng-deep .p-hidden-accessible select{transform:scale(0)}:host ::ng-deep .p-checkbox .p-checkbox-box{background:#ffffff;width:18px;height:18px;color:var(--cps-color-text-dark);border:2px solid var(--cps-color-text-mild);border-radius:2px;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}:host ::ng-deep .p-checkbox-box{display:flex;justify-content:center;align-items:center}:host ::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:var(--cps-color-calm);background:var(--cps-color-calm)}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:var(--cps-color-calm);background:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{border-color:var(--cps-color-calm)}:host ::ng-deep .p-checkbox .p-checkbox-box .p-icon{width:14px;height:14px}:host ::ng-deep .p-checkbox .p-checkbox-box .p-checkbox-icon{transition-duration:.2s;color:#fff;font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i1$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i1$1.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i1$1.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: TableUnsortDirective, selector: "[withUnsort]" }] });
2745
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTableComponent, decorators: [{
2746
+ type: Component,
2747
+ args: [{ selector: 'cps-table', standalone: true, imports: [CommonModule, TableModule, TableUnsortDirective], providers: [
2748
+ TableService,
2749
+ {
2750
+ provide: Table,
2751
+ useFactory: tableFactory,
2752
+ // eslint-disable-next-line no-use-before-define
2753
+ deps: [CpsTableComponent]
2754
+ }
2755
+ ], template: "<p-table\n #primengTable\n withUnsort\n [styleClass]=\"styleClass\"\n [value]=\"data\"\n [columns]=\"columns\"\n (selectionChange)=\"onSelectionChanged($event)\"\n [resizableColumns]=\"resizableColumns\"\n [reorderableColumns]=\"reorderableColumns\"\n [scrollable]=\"scrollable\"\n scrollHeight=\"flex\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [(selection)]=\"selectedRows\"\n [metaKeySelection]=\"false\"\n [rowHover]=\"rowHover\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n (sortFunction)=\"onSortFunction($event)\">\n <ng-template pTemplate=\"caption\" *ngIf=\"hasToolbar\">\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!toolbarTemplate\">\n {{ toolbarTitle }}\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th style=\"width: 4rem\" *ngIf=\"selectable\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate\">\n <th *ngFor=\"let h of headers\">{{ h }}</th>\n </ng-container>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item let-rowIndex=\"rowIndex\">\n <tr>\n <td *ngIf=\"selectable\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <ng-container\n pTemplate=\"body\"\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: { $implicit: item, rowIndex: rowIndex }\n \"></ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"4\">{{ emptyMessage }}</td>\n </tr>\n </ng-template>\n</p-table>\n", styles: [":host ::ng-deep .p-component,:host ::ng-deep .p-component *{box-sizing:border-box}:host ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host ::ng-deep .p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}:host ::ng-deep .p-datatable{position:relative}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-header{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable .p-datatable-header{font-weight:600;display:flex;justify-content:space-between;align-items:center;padding:0 10px;border:1px solid var(--cps-color-line-mid);border-left:4px solid var(--cps-color-surprise)!important;border-radius:4px 4px 0 0;font-size:16px;line-height:150%;background-color:#fff;color:var(--cps-color-text-dark);overflow:auto}:host ::ng-deep .cps-tbar-small.p-datatable .p-datatable-header{height:43px}:host ::ng-deep .cps-tbar-normal.p-datatable .p-datatable-header{height:72px}:host ::ng-deep .p-datatable-flex-scrollable>.p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}:host ::ng-deep .p-datatable-scrollable>.p-datatable-wrapper{position:relative}:host ::ng-deep .p-datatable>.p-datatable-wrapper{overflow:auto}:host ::ng-deep .p-datatable-table{border-spacing:0px;width:100%}:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-tfoot,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-tfoot{background-color:#fff}:host ::ng-deep .p-datatable-scrollable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-thead>tr>th:last-child{border-width:1px}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-thead>tr>th{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-thead>tr>th{padding:1.25rem}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-thead>tr>th{border-width:1px 0 1px 1px}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover{background:white;color:var(--cps-color-text-mild)}:host ::ng-deep .p-datatable .p-sortable-column.p-highlight:hover{background:white;color:var(--cps-color-text-mild)}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{text-align:left;padding:1rem;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;font-weight:400;color:var(--cps-color-text-mild);background:white;transition:box-shadow .2s}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:var(--cps-color-text-dark)}:host ::ng-deep .p-datatable .p-sortable-column .p-sortable-column-icon{color:var(--cps-color-text-mild);margin-left:.5rem}:host ::ng-deep .p-datatable .p-sortable-column.p-highlight .p-sortable-column-icon{color:var(--cps-color-calm)}:host ::ng-deep .p-icon-wrapper{display:inline-flex}:host ::ng-deep .p-icon{display:inline-block;width:1rem;height:1rem}:host ::ng-deep .p-sortable-column-icon{width:13px;height:13px}:host ::ng-deep .p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}:host ::ng-deep .p-datatable .p-sortable-column .p-column-title,:host ::ng-deep .p-datatable .p-sortable-column .p-sortable-column-icon,:host ::ng-deep .p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:unset}:host ::ng-deep .p-datatable .p-sortable-column .p-sortable-column-badge{border-radius:50%;height:1.143rem;min-width:1.143rem;line-height:1.143rem;color:var(--cps-color-calm);background:#f1eaec;margin-left:.5rem}:host ::ng-deep filtericon{pointer-events:none}:host ::ng-deep filtericon .p-icon{width:13px;height:13px}:host ::ng-deep p-columnfilter{margin-left:4px}:host ::ng-deep .p-column-filter-menu-button:hover{color:var(--cps-color-text-dark);border-color:transparent}:host ::ng-deep .p-column-filter-menu-button.p-column-filter-menu-button-open,:host ::ng-deep .p-column-filter-menu-button.p-column-filter-menu-button-open:hover{background:transparent;color:var(--cps-color-text-dark)}:host ::ng-deep .p-column-filter-menu-button,:host ::ng-deep .p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}:host ::ng-deep .p-column-filter-menu-button:focus{outline:0 none;outline-offset:0;box-shadow:none}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column:focus{box-shadow:none;outline:0 none}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(odd){background:var(--cps-color-bg-light)}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#ffffff}:host ::ng-deep .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):hover{background:#f8f4f5}:host ::ng-deep .p-datatable .p-datatable-tbody>tr{background:#ffffff;color:var(--cps-color-text-dark);transition:box-shadow .2s}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td:last-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td:last-child{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-tbody>tr>td{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-tbody>tr>td{padding:1.25rem}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td{border-width:0 0 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td{border-width:1px 0 0 1px}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{text-align:left;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;padding:1rem}:host ::ng-deep td:has(p-tablecheckbox){text-align:center!important}:host ::ng-deep th:has(p-tableheadercheckbox){text-align:center!important;width:3rem!important}:host ::ng-deep .p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative;width:18px;height:18px}:host ::ng-deep .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}:host ::ng-deep .p-hidden-accessible input,:host ::ng-deep .p-hidden-accessible select{transform:scale(0)}:host ::ng-deep .p-checkbox .p-checkbox-box{background:#ffffff;width:18px;height:18px;color:var(--cps-color-text-dark);border:2px solid var(--cps-color-text-mild);border-radius:2px;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}:host ::ng-deep .p-checkbox-box{display:flex;justify-content:center;align-items:center}:host ::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:var(--cps-color-calm);background:var(--cps-color-calm)}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:var(--cps-color-calm);background:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{border-color:var(--cps-color-calm)}:host ::ng-deep .p-checkbox .p-checkbox-box .p-icon{width:14px;height:14px}:host ::ng-deep .p-checkbox .p-checkbox-box .p-checkbox-icon{transition-duration:.2s;color:#fff;font-size:14px}\n"] }]
2756
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { headers: [{
2757
+ type: Input
2758
+ }], data: [{
2759
+ type: Input
2760
+ }], columns: [{
2761
+ type: Input
2762
+ }], striped: [{
2763
+ type: Input
2764
+ }], bordered: [{
2765
+ type: Input
2766
+ }], size: [{
2767
+ type: Input
2768
+ }], selectable: [{
2769
+ type: Input
2770
+ }], emptyMessage: [{
2771
+ type: Input
2772
+ }], hasToolbar: [{
2773
+ type: Input
2774
+ }], toolbarSize: [{
2775
+ type: Input
2776
+ }], toolbarTitle: [{
2777
+ type: Input
2778
+ }], sortMode: [{
2779
+ type: Input
2780
+ }], customSort: [{
2781
+ type: Input
2782
+ }], rowHover: [{
2783
+ type: Input
2784
+ }], scrollable: [{
2785
+ type: Input
2786
+ }], virtualScroll: [{
2787
+ type: Input
2788
+ }], selectionChanged: [{
2789
+ type: Output
2790
+ }], customSortFunction: [{
2791
+ type: Output
2792
+ }], toolbarTemplate: [{
2793
+ type: ContentChild,
2794
+ args: ['toolbar', { static: false }]
2795
+ }], headerTemplate: [{
2796
+ type: ContentChild,
2797
+ args: ['header', { static: false }]
2798
+ }], bodyTemplate: [{
2799
+ type: ContentChild,
2800
+ args: ['body', { static: false }]
2801
+ }], primengTable: [{
2802
+ type: ViewChild,
2803
+ args: ['primengTable', { static: true }]
2804
+ }] } });
2805
+
2806
+ class CpsTableColumnSortableDirective extends SortableColumn {
2807
+ constructor(elementRef, viewContainerRef, dt) {
2808
+ super(dt);
2809
+ this.elementRef = elementRef;
2810
+ this.viewContainerRef = viewContainerRef;
2811
+ this.dt = dt;
2812
+ this.field = '';
2813
+ this.sortIconRef = this.viewContainerRef.createComponent(SortIcon);
2814
+ }
2815
+ ngOnInit() {
2816
+ super.ngOnInit();
2817
+ this.sortIconRef.setInput('field', this.field);
2818
+ this.elementRef.nativeElement.firstChild.after(this.sortIconRef.location.nativeElement);
2819
+ }
2820
+ ngOnDestroy() {
2821
+ super.ngOnDestroy();
2822
+ this.sortIconRef.destroy();
2823
+ this.viewContainerRef.clear();
2824
+ }
2825
+ }
2826
+ CpsTableColumnSortableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTableColumnSortableDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1$1.Table }], target: i0.ɵɵFactoryTarget.Directive });
2827
+ CpsTableColumnSortableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: CpsTableColumnSortableDirective, isStandalone: true, selector: "[cpsColSortable]", inputs: { field: ["cpsColSortable", "field"] }, usesInheritance: true, ngImport: i0 });
2828
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTableColumnSortableDirective, decorators: [{
2829
+ type: Directive,
2830
+ args: [{
2831
+ standalone: true,
2832
+ selector: '[cpsColSortable]'
2833
+ }]
2834
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1$1.Table }]; }, propDecorators: { field: [{
2835
+ type: Input,
2836
+ args: ['cpsColSortable']
2837
+ }] } });
2838
+
2563
2839
  class CpsTagComponent {
2564
2840
  set value(value) {
2565
2841
  this._value = value;
@@ -3273,5 +3549,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
3273
3549
  * Generated bundle index. Do not edit.
3274
3550
  */
3275
3551
 
3276
- export { CpsAutocompleteComponent, CpsButtonComponent, CpsButtonToggleComponent, CpsCheckboxComponent, CpsChipComponent, CpsDatepickerComponent, CpsExpansionPanelComponent, CpsIconComponent, CpsInputComponent, CpsLoaderComponent, CpsProgressCircularComponent, CpsProgressLinearComponent, CpsRadioComponent, CpsSelectComponent, CpsTagComponent, CpsTextareaComponent, CpsTreeAutocompleteComponent, CpsTreeSelectComponent, getCSSColor, getCpsColors, getTextColor, iconNames };
3552
+ export { CpsAutocompleteComponent, CpsButtonComponent, CpsButtonToggleComponent, CpsCheckboxComponent, CpsChipComponent, CpsDatepickerComponent, CpsExpansionPanelComponent, CpsIconComponent, CpsInputComponent, CpsLoaderComponent, CpsProgressCircularComponent, CpsProgressLinearComponent, CpsRadioComponent, CpsSelectComponent, CpsTableColumnSortableDirective, CpsTableComponent, CpsTagComponent, CpsTextareaComponent, CpsTreeAutocompleteComponent, CpsTreeSelectComponent, getCSSColor, getCpsColors, getTextColor, iconNames, tableFactory };
3277
3553
  //# sourceMappingURL=cps-ui-kit.mjs.map