@ngx-smz/core 21.9.0-next.5 → 21.9.0-next.7

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.
@@ -12184,6 +12184,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
12184
12184
  }], ctorParameters: () => [{ type: i1$3.Store }, { type: i1$3.Actions }, { type: ExcelsService }] });
12185
12185
 
12186
12186
  /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return, @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type, @typescript-eslint/typedef, no-underscore-dangle, no-console, eqeqeq, @typescript-eslint/no-unused-vars, @typescript-eslint/no-useless-constructor, @typescript-eslint/explicit-member-accessibility, max-len, no-prototype-builtins, @typescript-eslint/no-shadow, @angular-eslint/component-class-suffix, @angular-eslint/no-output-on-prefix, @angular-eslint/directive-selector, @angular-eslint/directive-class-suffix, @angular-eslint/no-input-rename, @typescript-eslint/no-unsafe-function-type, brace-style, @typescript-eslint/no-unused-expressions, no-var, no-cond-assign */
12187
+ /**
12188
+ * Clique dentro de um painel do CDK Overlay (listas de `ui-select`, `ui-multi-select`, `ui-date-picker`...).
12189
+ * Esses paineis ficam fora do DOM do filtro, mas fazem parte dele: clicar neles nao deve fechar o painel do filtro.
12190
+ * Usa `composedPath` porque a opcao clicada pode ja ter sido removida do DOM quando o listener roda.
12191
+ */
12192
+ function isInsideCdkOverlay(event) {
12193
+ const path = typeof event.composedPath === 'function' ? event.composedPath() : [];
12194
+ return path.some((node) => node instanceof Element && node.classList.contains('cdk-overlay-container'));
12195
+ }
12187
12196
  /** Notificacao de cliques em overlays (para que paineis de filtro nao fechem ao interagir com outros overlays). */
12188
12197
  class TableOverlayService {
12189
12198
  clickSource = new Subject();
@@ -13702,12 +13711,12 @@ class Table {
13702
13711
  widths.forEach((width, index) => {
13703
13712
  const colWidth = index === colIndex ? newColumnWidth : nextColumnWidth && index === colIndex + 1 ? nextColumnWidth : width;
13704
13713
  const style = `width: ${colWidth}px !important; max-width: ${colWidth}px !important;`;
13705
- innerHTML += `
13706
- #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}),
13707
- #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}),
13708
- #${this.id}-table > .p-datatable-tfoot > tr > td:nth-child(${index + 1}) {
13709
- ${style}
13710
- }
13714
+ innerHTML += `
13715
+ #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}),
13716
+ #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}),
13717
+ #${this.id}-table > .p-datatable-tfoot > tr > td:nth-child(${index + 1}) {
13718
+ ${style}
13719
+ }
13711
13720
  `;
13712
13721
  });
13713
13722
  this.styleElement.innerHTML = innerHTML;
@@ -13981,12 +13990,12 @@ class Table {
13981
13990
  let innerHTML = '';
13982
13991
  widths.forEach((width, index) => {
13983
13992
  const style = `width: ${width}px !important; max-width: ${width}px !important`;
13984
- innerHTML += `
13985
- #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}),
13986
- #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}),
13987
- #${this.id}-table > .p-datatable-tfoot > tr > td:nth-child(${index + 1}) {
13988
- ${style}
13989
- }
13993
+ innerHTML += `
13994
+ #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}),
13995
+ #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}),
13996
+ #${this.id}-table > .p-datatable-tfoot > tr > td:nth-child(${index + 1}) {
13997
+ ${style}
13998
+ }
13990
13999
  `;
13991
14000
  });
13992
14001
  this.styleElement.innerHTML = innerHTML;
@@ -14047,33 +14056,33 @@ class Table {
14047
14056
  this.responsiveStyleElement = document.createElement('style');
14048
14057
  this.responsiveStyleElement.type = 'text/css';
14049
14058
  document.head.appendChild(this.responsiveStyleElement);
14050
- const innerHTML = `
14051
- @media screen and (max-width: ${this.breakpoint}) {
14052
- #${this.id}-table > .p-datatable-thead > tr > th,
14053
- #${this.id}-table > .p-datatable-tfoot > tr > td {
14054
- display: none !important;
14055
- }
14056
-
14057
- #${this.id}-table > .p-datatable-tbody > tr > td {
14058
- width: 100% !important;
14059
- align-items: center;
14060
- justify-content: space-between;
14061
- }
14062
-
14063
- #${this.id}-table > .p-datatable-tbody > tr > td:not(:last-child) {
14064
- border: 0 none;
14065
- }
14066
-
14067
- #${this.id}.p-datatable-gridlines > .p-datatable-wrapper > .p-datatable-table > .p-datatable-tbody > tr > td:last-child {
14068
- border-top: 0;
14069
- border-right: 0;
14070
- border-left: 0;
14071
- }
14072
-
14073
- #${this.id}-table > .p-datatable-tbody > tr > td > .p-column-title {
14074
- display: block;
14075
- }
14076
- }
14059
+ const innerHTML = `
14060
+ @media screen and (max-width: ${this.breakpoint}) {
14061
+ #${this.id}-table > .p-datatable-thead > tr > th,
14062
+ #${this.id}-table > .p-datatable-tfoot > tr > td {
14063
+ display: none !important;
14064
+ }
14065
+
14066
+ #${this.id}-table > .p-datatable-tbody > tr > td {
14067
+ width: 100% !important;
14068
+ align-items: center;
14069
+ justify-content: space-between;
14070
+ }
14071
+
14072
+ #${this.id}-table > .p-datatable-tbody > tr > td:not(:last-child) {
14073
+ border: 0 none;
14074
+ }
14075
+
14076
+ #${this.id}.p-datatable-gridlines > .p-datatable-wrapper > .p-datatable-table > .p-datatable-tbody > tr > td:last-child {
14077
+ border-top: 0;
14078
+ border-right: 0;
14079
+ border-left: 0;
14080
+ }
14081
+
14082
+ #${this.id}-table > .p-datatable-tbody > tr > td > .p-column-title {
14083
+ display: block;
14084
+ }
14085
+ }
14077
14086
  `;
14078
14087
  this.responsiveStyleElement.innerHTML = innerHTML;
14079
14088
  }
@@ -14098,243 +14107,243 @@ class Table {
14098
14107
  this.destroyResponsiveStyle();
14099
14108
  }
14100
14109
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: Table, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: TableService }, { token: i0.ChangeDetectorRef }, { token: TableOverlayService }], target: i0.ɵɵFactoryTarget.Component });
14101
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: Table, isStandalone: false, selector: "p-table", inputs: { frozenColumns: "frozenColumns", frozenValue: "frozenValue", style: "style", styleClass: "styleClass", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", paginator: "paginator", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", alwaysShowPaginator: "alwaysShowPaginator", paginatorPosition: "paginatorPosition", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", paginatorDropdownScrollHeight: "paginatorDropdownScrollHeight", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showJumpToPageInput: "showJumpToPageInput", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", defaultSortOrder: "defaultSortOrder", sortMode: "sortMode", resetPageOnSort: "resetPageOnSort", selectionMode: "selectionMode", selectionPageOnly: "selectionPageOnly", contextMenuSelection: "contextMenuSelection", contextMenuSelectionMode: "contextMenuSelectionMode", dataKey: "dataKey", metaKeySelection: "metaKeySelection", rowSelectable: "rowSelectable", rowTrackBy: "rowTrackBy", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", compareSelectionBy: "compareSelectionBy", csvSeparator: "csvSeparator", exportFilename: "exportFilename", filters: "filters", globalFilterFields: "globalFilterFields", filterDelay: "filterDelay", filterLocale: "filterLocale", expandedRowKeys: "expandedRowKeys", editingRowKeys: "editingRowKeys", rowExpandMode: "rowExpandMode", scrollable: "scrollable", scrollDirection: "scrollDirection", rowGroupMode: "rowGroupMode", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualScrollItemSize: "virtualScrollItemSize", virtualScrollOptions: "virtualScrollOptions", virtualScrollDelay: "virtualScrollDelay", frozenWidth: "frozenWidth", responsive: "responsive", contextMenu: "contextMenu", resizableColumns: "resizableColumns", columnResizeMode: "columnResizeMode", reorderableColumns: "reorderableColumns", loading: "loading", loadingIcon: "loadingIcon", showLoader: "showLoader", rowHover: "rowHover", stripedRows: "stripedRows", size: "size", customSort: "customSort", showInitialSortBadge: "showInitialSortBadge", autoLayout: "autoLayout", exportFunction: "exportFunction", exportHeader: "exportHeader", stateKey: "stateKey", stateStorage: "stateStorage", editMode: "editMode", groupRowsBy: "groupRowsBy", groupRowsByOrder: "groupRowsByOrder", responsiveLayout: "responsiveLayout", breakpoint: "breakpoint", virtualRowHeight: "virtualRowHeight", value: "value", columns: "columns", first: "first", rows: "rows", totalRecords: "totalRecords", sortField: "sortField", sortOrder: "sortOrder", multiSortMeta: "multiSortMeta", selection: "selection", selectAll: "selectAll" }, outputs: { selectAllChange: "selectAllChange", selectionChange: "selectionChange", contextMenuSelectionChange: "contextMenuSelectionChange", onRowSelect: "onRowSelect", onRowUnselect: "onRowUnselect", onPage: "onPage", onSort: "onSort", onFilter: "onFilter", onLazyLoad: "onLazyLoad", onRowExpand: "onRowExpand", onRowCollapse: "onRowCollapse", onContextMenuSelect: "onContextMenuSelect", onColResize: "onColResize", onColReorder: "onColReorder", onRowReorder: "onRowReorder", onEditInit: "onEditInit", onEditComplete: "onEditComplete", onEditCancel: "onEditCancel", onHeaderCheckboxToggle: "onHeaderCheckboxToggle", sortFunction: "sortFunction", firstChange: "firstChange", rowsChange: "rowsChange", onStateSave: "onStateSave", onStateRestore: "onStateRestore" }, host: { classAttribute: "p-element" }, providers: [TableService], queries: [{ propertyName: "templates", predicate: SmzTemplateDirective }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "resizeHelperViewChild", first: true, predicate: ["resizeHelper"], descendants: true }, { propertyName: "reorderIndicatorUpViewChild", first: true, predicate: ["reorderIndicatorUp"], descendants: true }, { propertyName: "reorderIndicatorDownViewChild", first: true, predicate: ["reorderIndicatorDown"], descendants: true }, { propertyName: "wrapperViewChild", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "tableViewChild", first: true, predicate: ["table"], descendants: true }, { propertyName: "tableHeaderViewChild", first: true, predicate: ["thead"], descendants: true }, { propertyName: "tableFooterViewChild", first: true, predicate: ["tfoot"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
14102
- <div
14103
- #container
14104
- [ngStyle]="style"
14105
- [class]="styleClass"
14106
- [ngClass]="{ 'p-datatable p-component': true, 'p-datatable-hoverable-rows': rowHover || selectionMode, 'p-datatable-scrollable': scrollable, 'p-datatable-flex-scrollable': scrollable && scrollHeight === 'flex', 'p-datatable-striped': stripedRows, 'p-datatable-sm': size === 'small', 'p-datatable-lg': size === 'large' }"
14107
- [attr.id]="id"
14108
- >
14109
- @if (loading && showLoader) {
14110
- <div class="p-datatable-loading-overlay p-component-overlay">
14111
- <i [class]="'p-datatable-loading-icon fa-spin ' + loadingIcon"></i>
14112
- </div>
14113
- }
14114
- @if (captionTemplate) {
14115
- <div class="p-datatable-header">
14116
- <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
14117
- </div>
14118
- }
14119
- @if (paginator && (paginatorPosition === 'top' || paginatorPosition == 'both')) {
14120
- <ui-paginator
14121
- [rows]="rows"
14122
- [first]="first"
14123
- [totalRecords]="totalRecords"
14124
- [pageLinkSize]="pageLinks"
14125
- styleClass="smz-paginator-top"
14126
- [alwaysShow]="alwaysShowPaginator"
14127
- (pageChanged)="onPageChange($event)"
14128
- [rowsPerPageOptions]="rowsPerPageOptions"
14129
- [currentPageReportTemplate]="currentPageReportTemplate"
14130
- [showFirstLastIcon]="showFirstLastIcon"
14131
- [showCurrentPageReport]="showCurrentPageReport"
14132
- [showPageLinks]="showPageLinks"
14133
- ></ui-paginator>
14134
- }
14135
-
14136
- <div #wrapper class="p-datatable-wrapper" [ngStyle]="{ maxHeight: virtualScroll ? '' : scrollHeight }">
14137
- <ng-container *ngTemplateOutlet="buildInTable; context: { $implicit: processedData, options: { columns } }"></ng-container>
14138
-
14139
- <ng-template #buildInTable let-items let-scrollerOptions="options">
14140
- <table
14141
- #table
14142
- role="table"
14143
- [ngClass]="{ 'p-datatable-table': true, 'p-datatable-scrollable-table': scrollable, 'p-datatable-resizable-table': resizableColumns, 'p-datatable-resizable-table-fit': resizableColumns && columnResizeMode === 'fit' }"
14144
- [class]="tableStyleClass"
14145
- [style]="tableStyle"
14146
- [attr.id]="id + '-table'"
14147
- >
14148
- <ng-container *ngTemplateOutlet="colGroupTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14149
- <thead #thead class="p-datatable-thead">
14150
- <ng-container *ngTemplateOutlet="headerGroupedTemplate || headerTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14151
- </thead>
14152
- @if (frozenValue || frozenBodyTemplate) {
14153
- <tbody
14154
- class="p-datatable-tbody p-datatable-frozen-tbody"
14155
- [value]="frozenValue"
14156
- [frozenRows]="true"
14157
- [pTableBody]="scrollerOptions.columns"
14158
- [pTableBodyTemplate]="frozenBodyTemplate"
14159
- [frozen]="true"
14160
- ></tbody>
14161
- }
14162
- <tbody
14163
- class="p-datatable-tbody"
14164
- [ngClass]="scrollerOptions.contentStyleClass"
14165
- [style]="scrollerOptions.contentStyle"
14166
- [value]="dataToRender(scrollerOptions.rows)"
14167
- [pTableBody]="scrollerOptions.columns"
14168
- [pTableBodyTemplate]="bodyTemplate"
14169
- [scrollerOptions]="scrollerOptions"
14170
- ></tbody>
14171
- @if (scrollerOptions.spacerStyle) {
14172
- <tbody [style]="'height: calc(' + scrollerOptions.spacerStyle.height + ' - ' + scrollerOptions.rows.length * scrollerOptions.itemSize + 'px);'" class="p-datatable-scroller-spacer"></tbody>
14173
- }
14174
- @if (footerGroupedTemplate || footerTemplate) {
14175
- <tfoot #tfoot class="p-datatable-tfoot">
14176
- <ng-container *ngTemplateOutlet="footerGroupedTemplate || footerTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14177
- </tfoot>
14178
- }
14179
- </table>
14180
- </ng-template>
14181
- </div>
14182
-
14183
- @if (paginator && (paginatorPosition === 'bottom' || paginatorPosition == 'both')) {
14184
- <ui-paginator
14185
- [rows]="rows"
14186
- [first]="first"
14187
- [totalRecords]="totalRecords"
14188
- [pageLinkSize]="pageLinks"
14189
- styleClass="smz-paginator-bottom"
14190
- [alwaysShow]="alwaysShowPaginator"
14191
- (pageChanged)="onPageChange($event)"
14192
- [rowsPerPageOptions]="rowsPerPageOptions"
14193
- [currentPageReportTemplate]="currentPageReportTemplate"
14194
- [showFirstLastIcon]="showFirstLastIcon"
14195
- [showCurrentPageReport]="showCurrentPageReport"
14196
- [showPageLinks]="showPageLinks"
14197
- ></ui-paginator>
14198
- }
14199
-
14200
- @if (summaryTemplate) {
14201
- <div class="p-datatable-footer">
14202
- <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
14203
- </div>
14204
- }
14205
-
14206
- @if (resizableColumns) {
14207
- <div #resizeHelper class="p-column-resizer-helper" style="display:none"></div>
14208
- }
14209
- @if (reorderableColumns) {
14210
- <span #reorderIndicatorUp class="fa-solid fa-arrow-down p-datatable-reorder-indicator-up" style="display: none;"></span>
14211
- }
14212
- @if (reorderableColumns) {
14213
- <span #reorderIndicatorDown class="fa-solid fa-arrow-up p-datatable-reorder-indicator-down" style="display: none;"></span>
14214
- }
14215
- </div>
14216
- `, isInline: true, styles: [".p-datatable{position:relative}.p-datatable>.p-datatable-wrapper{overflow:auto}.p-datatable-table{border-spacing:0px;width:100%}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable>.p-datatable-wrapper{position:relative}.p-datatable-scrollable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable-table>.p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable-table>.p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable>.p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable-table>.p-datatable-tbody>.p-rowgroup-header{position:sticky;z-index:1}.p-datatable-resizable-table>.p-datatable-thead>tr>th,.p-datatable-resizable-table>.p-datatable-tfoot>tr>td,.p-datatable-resizable-table>.p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable-table>.p-datatable-thead>tr>th.p-resizable-column:not(.p-frozen-column){background-clip:padding-box;position:relative}.p-datatable-resizable-table-fit>.p-datatable-thead>tr>th.p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable-tbody>tr>td>.p-column-title{display:none}.p-datatable-scroller-spacer{display:flex}.p-datatable .p-scroller .p-scroller-loading{transform:none!important;min-height:0;position:sticky;top:0;left:0}.p-datatable{color:rgb(var(--smz-color-fg));font-family:var(--smz-font-sans);font-size:var(--smz-text-md)}.p-datatable-table{border-collapse:separate;background:rgb(var(--smz-color-surface-1))}.p-datatable-thead>tr>th,.p-datatable-tfoot>tr>td{padding:.75rem 1rem;text-align:left;font-weight:600;background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-tfoot>tr>td{border-top:1px solid rgb(var(--smz-color-line));border-bottom:0}.p-datatable-tbody>tr{background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));transition:background-color var(--smz-duration)}.p-datatable-tbody>tr>td{padding:.75rem 1rem;border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-datatable-row-selected):hover{background:rgb(var(--smz-color-surface-3))}.p-datatable-tbody>tr.p-datatable-row-selected,.p-datatable-tbody>tr.p-highlight{background:rgb(var(--smz-color-primary) / .12);color:rgb(var(--smz-color-fg))}.p-datatable-striped .p-datatable-tbody>tr:nth-child(2n){background:rgb(var(--smz-color-surface-0))}.p-datatable-gridlines .p-datatable-thead>tr>th,.p-datatable-gridlines .p-datatable-tbody>tr>td,.p-datatable-gridlines .p-datatable-tfoot>tr>td{border:1px solid rgb(var(--smz-color-line));border-width:0 0 1px 1px}.p-datatable-gridlines .p-datatable-thead>tr>th:last-child,.p-datatable-gridlines .p-datatable-tbody>tr>td:last-child,.p-datatable-gridlines .p-datatable-tfoot>tr>td:last-child{border-right-width:1px}.p-datatable-sm .p-datatable-thead>tr>th,.p-datatable-sm .p-datatable-tbody>tr>td,.p-datatable-sm .p-datatable-tfoot>tr>td{padding:.375rem .75rem}.p-datatable-lg .p-datatable-thead>tr>th,.p-datatable-lg .p-datatable-tbody>tr>td,.p-datatable-lg .p-datatable-tfoot>tr>td{padding:1.1rem 1.25rem}.p-datatable-header,.p-datatable-footer{padding:.75rem 1rem;background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-footer{border-top:1px solid rgb(var(--smz-color-line));border-bottom:0}.p-datatable .p-sortable-column:hover{background:rgb(var(--smz-color-surface-3))}.p-datatable .p-sortable-column:focus-visible{outline:2px solid rgb(var(--smz-color-focus));outline-offset:-2px}.p-datatable .p-datatable-loading-overlay{background:rgb(var(--smz-color-surface-1) / .6);color:rgb(var(--smz-color-primary))}.p-datatable .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.p-datatable .p-checkbox,.p-datatable .p-radiobutton{position:relative;display:inline-flex;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none}.p-datatable .p-checkbox-box,.p-datatable .p-radiobutton-box{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border:1px solid rgb(var(--smz-color-line-strong));background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-on-primary));transition:background-color var(--smz-duration),border-color var(--smz-duration),box-shadow var(--smz-duration)}.p-datatable .p-checkbox-box{border-radius:.3rem}.p-datatable .p-radiobutton-box{border-radius:9999px}.p-datatable .p-checkbox-box.p-highlight,.p-datatable .p-radiobutton-box.p-highlight{background:rgb(var(--smz-color-primary));border-color:rgb(var(--smz-color-primary))}.p-datatable .p-checkbox-box.p-focus,.p-datatable .p-radiobutton-box.p-focus{box-shadow:0 0 0 2px rgb(var(--smz-color-focus) / .45)}.p-datatable .p-checkbox-box.p-disabled,.p-datatable .p-radiobutton-box.p-disabled{opacity:.5;cursor:not-allowed}.p-datatable .p-checkbox-icon{font-size:.7rem;line-height:1}.p-datatable .p-radiobutton-icon{width:.5rem;height:.5rem;border-radius:9999px;background:rgb(var(--smz-color-on-primary));opacity:0}.p-datatable .p-radiobutton-box.p-highlight .p-radiobutton-icon{opacity:1}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => SmzPaginatorComponent), selector: "ui-paginator", inputs: ["first", "rows", "totalRecords", "pageLinkSize", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "alwaysShow", "showPageLinks", "styleClass", "dropdownAppendTo", "showFirstLastIcon"], outputs: ["firstChange", "rowsChange", "pageChanged"] }, { kind: "component", type: i0.forwardRef(() => TableBody), selector: "[pTableBody]", inputs: ["pTableBody", "pTableBodyTemplate", "value", "frozen", "frozenRows", "scrollerOptions"] }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None });
14110
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: Table, isStandalone: false, selector: "p-table", inputs: { frozenColumns: "frozenColumns", frozenValue: "frozenValue", style: "style", styleClass: "styleClass", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", paginator: "paginator", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", alwaysShowPaginator: "alwaysShowPaginator", paginatorPosition: "paginatorPosition", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", paginatorDropdownScrollHeight: "paginatorDropdownScrollHeight", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showJumpToPageInput: "showJumpToPageInput", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", defaultSortOrder: "defaultSortOrder", sortMode: "sortMode", resetPageOnSort: "resetPageOnSort", selectionMode: "selectionMode", selectionPageOnly: "selectionPageOnly", contextMenuSelection: "contextMenuSelection", contextMenuSelectionMode: "contextMenuSelectionMode", dataKey: "dataKey", metaKeySelection: "metaKeySelection", rowSelectable: "rowSelectable", rowTrackBy: "rowTrackBy", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", compareSelectionBy: "compareSelectionBy", csvSeparator: "csvSeparator", exportFilename: "exportFilename", filters: "filters", globalFilterFields: "globalFilterFields", filterDelay: "filterDelay", filterLocale: "filterLocale", expandedRowKeys: "expandedRowKeys", editingRowKeys: "editingRowKeys", rowExpandMode: "rowExpandMode", scrollable: "scrollable", scrollDirection: "scrollDirection", rowGroupMode: "rowGroupMode", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualScrollItemSize: "virtualScrollItemSize", virtualScrollOptions: "virtualScrollOptions", virtualScrollDelay: "virtualScrollDelay", frozenWidth: "frozenWidth", responsive: "responsive", contextMenu: "contextMenu", resizableColumns: "resizableColumns", columnResizeMode: "columnResizeMode", reorderableColumns: "reorderableColumns", loading: "loading", loadingIcon: "loadingIcon", showLoader: "showLoader", rowHover: "rowHover", stripedRows: "stripedRows", size: "size", customSort: "customSort", showInitialSortBadge: "showInitialSortBadge", autoLayout: "autoLayout", exportFunction: "exportFunction", exportHeader: "exportHeader", stateKey: "stateKey", stateStorage: "stateStorage", editMode: "editMode", groupRowsBy: "groupRowsBy", groupRowsByOrder: "groupRowsByOrder", responsiveLayout: "responsiveLayout", breakpoint: "breakpoint", virtualRowHeight: "virtualRowHeight", value: "value", columns: "columns", first: "first", rows: "rows", totalRecords: "totalRecords", sortField: "sortField", sortOrder: "sortOrder", multiSortMeta: "multiSortMeta", selection: "selection", selectAll: "selectAll" }, outputs: { selectAllChange: "selectAllChange", selectionChange: "selectionChange", contextMenuSelectionChange: "contextMenuSelectionChange", onRowSelect: "onRowSelect", onRowUnselect: "onRowUnselect", onPage: "onPage", onSort: "onSort", onFilter: "onFilter", onLazyLoad: "onLazyLoad", onRowExpand: "onRowExpand", onRowCollapse: "onRowCollapse", onContextMenuSelect: "onContextMenuSelect", onColResize: "onColResize", onColReorder: "onColReorder", onRowReorder: "onRowReorder", onEditInit: "onEditInit", onEditComplete: "onEditComplete", onEditCancel: "onEditCancel", onHeaderCheckboxToggle: "onHeaderCheckboxToggle", sortFunction: "sortFunction", firstChange: "firstChange", rowsChange: "rowsChange", onStateSave: "onStateSave", onStateRestore: "onStateRestore" }, host: { classAttribute: "p-element" }, providers: [TableService], queries: [{ propertyName: "templates", predicate: SmzTemplateDirective }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "resizeHelperViewChild", first: true, predicate: ["resizeHelper"], descendants: true }, { propertyName: "reorderIndicatorUpViewChild", first: true, predicate: ["reorderIndicatorUp"], descendants: true }, { propertyName: "reorderIndicatorDownViewChild", first: true, predicate: ["reorderIndicatorDown"], descendants: true }, { propertyName: "wrapperViewChild", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "tableViewChild", first: true, predicate: ["table"], descendants: true }, { propertyName: "tableHeaderViewChild", first: true, predicate: ["thead"], descendants: true }, { propertyName: "tableFooterViewChild", first: true, predicate: ["tfoot"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
14111
+ <div
14112
+ #container
14113
+ [ngStyle]="style"
14114
+ [class]="styleClass"
14115
+ [ngClass]="{ 'p-datatable p-component': true, 'p-datatable-hoverable-rows': rowHover || selectionMode, 'p-datatable-scrollable': scrollable, 'p-datatable-flex-scrollable': scrollable && scrollHeight === 'flex', 'p-datatable-striped': stripedRows, 'p-datatable-sm': size === 'small', 'p-datatable-lg': size === 'large' }"
14116
+ [attr.id]="id"
14117
+ >
14118
+ @if (loading && showLoader) {
14119
+ <div class="p-datatable-loading-overlay p-component-overlay">
14120
+ <i [class]="'p-datatable-loading-icon fa-spin ' + loadingIcon"></i>
14121
+ </div>
14122
+ }
14123
+ @if (captionTemplate) {
14124
+ <div class="p-datatable-header">
14125
+ <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
14126
+ </div>
14127
+ }
14128
+ @if (paginator && (paginatorPosition === 'top' || paginatorPosition == 'both')) {
14129
+ <ui-paginator
14130
+ [rows]="rows"
14131
+ [first]="first"
14132
+ [totalRecords]="totalRecords"
14133
+ [pageLinkSize]="pageLinks"
14134
+ styleClass="smz-paginator-top"
14135
+ [alwaysShow]="alwaysShowPaginator"
14136
+ (pageChanged)="onPageChange($event)"
14137
+ [rowsPerPageOptions]="rowsPerPageOptions"
14138
+ [currentPageReportTemplate]="currentPageReportTemplate"
14139
+ [showFirstLastIcon]="showFirstLastIcon"
14140
+ [showCurrentPageReport]="showCurrentPageReport"
14141
+ [showPageLinks]="showPageLinks"
14142
+ ></ui-paginator>
14143
+ }
14144
+
14145
+ <div #wrapper class="p-datatable-wrapper" [ngStyle]="{ maxHeight: virtualScroll ? '' : scrollHeight }">
14146
+ <ng-container *ngTemplateOutlet="buildInTable; context: { $implicit: processedData, options: { columns } }"></ng-container>
14147
+
14148
+ <ng-template #buildInTable let-items let-scrollerOptions="options">
14149
+ <table
14150
+ #table
14151
+ role="table"
14152
+ [ngClass]="{ 'p-datatable-table': true, 'p-datatable-scrollable-table': scrollable, 'p-datatable-resizable-table': resizableColumns, 'p-datatable-resizable-table-fit': resizableColumns && columnResizeMode === 'fit' }"
14153
+ [class]="tableStyleClass"
14154
+ [style]="tableStyle"
14155
+ [attr.id]="id + '-table'"
14156
+ >
14157
+ <ng-container *ngTemplateOutlet="colGroupTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14158
+ <thead #thead class="p-datatable-thead">
14159
+ <ng-container *ngTemplateOutlet="headerGroupedTemplate || headerTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14160
+ </thead>
14161
+ @if (frozenValue || frozenBodyTemplate) {
14162
+ <tbody
14163
+ class="p-datatable-tbody p-datatable-frozen-tbody"
14164
+ [value]="frozenValue"
14165
+ [frozenRows]="true"
14166
+ [pTableBody]="scrollerOptions.columns"
14167
+ [pTableBodyTemplate]="frozenBodyTemplate"
14168
+ [frozen]="true"
14169
+ ></tbody>
14170
+ }
14171
+ <tbody
14172
+ class="p-datatable-tbody"
14173
+ [ngClass]="scrollerOptions.contentStyleClass"
14174
+ [style]="scrollerOptions.contentStyle"
14175
+ [value]="dataToRender(scrollerOptions.rows)"
14176
+ [pTableBody]="scrollerOptions.columns"
14177
+ [pTableBodyTemplate]="bodyTemplate"
14178
+ [scrollerOptions]="scrollerOptions"
14179
+ ></tbody>
14180
+ @if (scrollerOptions.spacerStyle) {
14181
+ <tbody [style]="'height: calc(' + scrollerOptions.spacerStyle.height + ' - ' + scrollerOptions.rows.length * scrollerOptions.itemSize + 'px);'" class="p-datatable-scroller-spacer"></tbody>
14182
+ }
14183
+ @if (footerGroupedTemplate || footerTemplate) {
14184
+ <tfoot #tfoot class="p-datatable-tfoot">
14185
+ <ng-container *ngTemplateOutlet="footerGroupedTemplate || footerTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14186
+ </tfoot>
14187
+ }
14188
+ </table>
14189
+ </ng-template>
14190
+ </div>
14191
+
14192
+ @if (paginator && (paginatorPosition === 'bottom' || paginatorPosition == 'both')) {
14193
+ <ui-paginator
14194
+ [rows]="rows"
14195
+ [first]="first"
14196
+ [totalRecords]="totalRecords"
14197
+ [pageLinkSize]="pageLinks"
14198
+ styleClass="smz-paginator-bottom"
14199
+ [alwaysShow]="alwaysShowPaginator"
14200
+ (pageChanged)="onPageChange($event)"
14201
+ [rowsPerPageOptions]="rowsPerPageOptions"
14202
+ [currentPageReportTemplate]="currentPageReportTemplate"
14203
+ [showFirstLastIcon]="showFirstLastIcon"
14204
+ [showCurrentPageReport]="showCurrentPageReport"
14205
+ [showPageLinks]="showPageLinks"
14206
+ ></ui-paginator>
14207
+ }
14208
+
14209
+ @if (summaryTemplate) {
14210
+ <div class="p-datatable-footer">
14211
+ <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
14212
+ </div>
14213
+ }
14214
+
14215
+ @if (resizableColumns) {
14216
+ <div #resizeHelper class="p-column-resizer-helper" style="display:none"></div>
14217
+ }
14218
+ @if (reorderableColumns) {
14219
+ <span #reorderIndicatorUp class="fa-solid fa-arrow-down p-datatable-reorder-indicator-up" style="display: none;"></span>
14220
+ }
14221
+ @if (reorderableColumns) {
14222
+ <span #reorderIndicatorDown class="fa-solid fa-arrow-up p-datatable-reorder-indicator-down" style="display: none;"></span>
14223
+ }
14224
+ </div>
14225
+ `, isInline: true, styles: [".p-datatable{position:relative}.p-datatable>.p-datatable-wrapper{overflow:auto}.p-datatable-table{border-spacing:0px;width:100%}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable>.p-datatable-wrapper{position:relative}.p-datatable-scrollable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable-table>.p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable-table>.p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable>.p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable-table>.p-datatable-tbody>.p-rowgroup-header{position:sticky;z-index:1}.p-datatable-resizable-table>.p-datatable-thead>tr>th,.p-datatable-resizable-table>.p-datatable-tfoot>tr>td,.p-datatable-resizable-table>.p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable-table>.p-datatable-thead>tr>th.p-resizable-column:not(.p-frozen-column){background-clip:padding-box;position:relative}.p-datatable-resizable-table-fit>.p-datatable-thead>tr>th.p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable-tbody>tr>td>.p-column-title{display:none}.p-datatable-scroller-spacer{display:flex}.p-datatable .p-scroller .p-scroller-loading{transform:none!important;min-height:0;position:sticky;top:0;left:0}.p-datatable{color:rgb(var(--smz-color-fg));font-family:var(--smz-font-sans);font-size:var(--smz-text-md)}.p-datatable-table{border-collapse:separate;background:rgb(var(--smz-color-surface-1))}.p-datatable-thead>tr>th,.p-datatable-tfoot>tr>td{padding:.75rem 1rem;text-align:left;font-weight:600;background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-tfoot>tr>td{border-top:1px solid rgb(var(--smz-color-line));border-bottom:0}.p-datatable-tbody>tr{background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));transition:background-color var(--smz-duration)}.p-datatable-tbody>tr>td{padding:.75rem 1rem;border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-datatable-row-selected):hover{background:rgb(var(--smz-color-surface-3))}.p-datatable-tbody>tr.p-datatable-row-selected,.p-datatable-tbody>tr.p-highlight{background:rgb(var(--smz-color-primary) / .12);color:rgb(var(--smz-color-fg))}.p-datatable-striped .p-datatable-tbody>tr:nth-child(2n){background:rgb(var(--smz-color-surface-0))}.p-datatable-gridlines .p-datatable-thead>tr>th,.p-datatable-gridlines .p-datatable-tbody>tr>td,.p-datatable-gridlines .p-datatable-tfoot>tr>td{border:1px solid rgb(var(--smz-color-line));border-width:0 0 1px 1px}.p-datatable-gridlines .p-datatable-thead>tr>th:last-child,.p-datatable-gridlines .p-datatable-tbody>tr>td:last-child,.p-datatable-gridlines .p-datatable-tfoot>tr>td:last-child{border-right-width:1px}.p-datatable-sm .p-datatable-thead>tr>th,.p-datatable-sm .p-datatable-tbody>tr>td,.p-datatable-sm .p-datatable-tfoot>tr>td{padding:.375rem .75rem}.p-datatable-lg .p-datatable-thead>tr>th,.p-datatable-lg .p-datatable-tbody>tr>td,.p-datatable-lg .p-datatable-tfoot>tr>td{padding:1.1rem 1.25rem}.p-datatable-header,.p-datatable-footer{padding:.75rem 1rem;background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-footer{border-top:1px solid rgb(var(--smz-color-line));border-bottom:0}.p-datatable .p-sortable-column:hover{background:rgb(var(--smz-color-surface-3))}.p-datatable .p-sortable-column:focus-visible{outline:2px solid rgb(var(--smz-color-focus));outline-offset:-2px}.p-datatable .p-datatable-loading-overlay{background:rgb(var(--smz-color-surface-1) / .6);color:rgb(var(--smz-color-primary))}.p-datatable .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.p-datatable .p-checkbox,.p-datatable .p-radiobutton{position:relative;display:inline-flex;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none}.p-datatable .p-checkbox-box,.p-datatable .p-radiobutton-box{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border:1px solid rgb(var(--smz-color-line-strong));background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-on-primary));transition:background-color var(--smz-duration),border-color var(--smz-duration),box-shadow var(--smz-duration)}.p-datatable .p-checkbox-box{border-radius:.3rem}.p-datatable .p-radiobutton-box{border-radius:9999px}.p-datatable .p-checkbox-box.p-highlight,.p-datatable .p-radiobutton-box.p-highlight{background:rgb(var(--smz-color-primary));border-color:rgb(var(--smz-color-primary))}.p-datatable .p-checkbox-box.p-focus,.p-datatable .p-radiobutton-box.p-focus{box-shadow:0 0 0 2px rgb(var(--smz-color-focus) / .45)}.p-datatable .p-checkbox-box.p-disabled,.p-datatable .p-radiobutton-box.p-disabled{opacity:.5;cursor:not-allowed}.p-datatable .p-checkbox-icon{font-size:.7rem;line-height:1}.p-datatable .p-radiobutton-icon{width:.5rem;height:.5rem;border-radius:9999px;background:rgb(var(--smz-color-on-primary));opacity:0}.p-datatable .p-radiobutton-box.p-highlight .p-radiobutton-icon{opacity:1}.p-datatable-thead>tr>th.p-highlight{background:rgb(var(--smz-color-primary) / .1);color:rgb(var(--smz-color-primary))}.p-datatable-striped .p-datatable-tbody>tr:nth-child(2n){background:rgb(var(--smz-color-surface-3) / .5)}.p-datatable-sm .p-datatable-thead>tr>th,.p-datatable-sm .p-datatable-tbody>tr>td,.p-datatable-sm .p-datatable-tfoot>tr>td{padding:.5rem}.p-column-filter-menu-button,.p-column-filter-clear-button{width:2rem;height:2rem;border-radius:9999px;color:rgb(var(--smz-color-fg-muted));background:transparent;border:0;cursor:pointer;transition:background-color var(--smz-duration)}.p-column-filter-menu-button:hover,.p-column-filter-clear-button:hover{background:rgb(var(--smz-color-surface-3));color:rgb(var(--smz-color-fg))}.p-column-filter-overlay{min-width:14rem;padding:.5rem;background:rgb(var(--smz-color-surface-2));color:rgb(var(--smz-color-fg));border:1px solid rgb(var(--smz-color-line));border-radius:var(--smz-radius-overlay);box-shadow:var(--smz-shadow-overlay);font-family:var(--smz-font-sans);font-size:var(--smz-text-md)}.p-column-filter-overlay .p-column-filter-row-items,.p-column-filter-overlay .p-column-filter-constraint{padding:.25rem 0}.p-column-filter-overlay .p-column-filter-row-item{padding:.5rem .75rem;border-radius:var(--smz-radius-control);cursor:pointer}.p-column-filter-overlay .p-column-filter-row-item:hover,.p-column-filter-overlay .p-column-filter-row-item.p-highlight{background:rgb(var(--smz-color-surface-3))}.p-column-filter-overlay .p-column-filter-buttonbar{padding:.5rem 0 0;border-top:1px solid rgb(var(--smz-color-line))}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => SmzPaginatorComponent), selector: "ui-paginator", inputs: ["first", "rows", "totalRecords", "pageLinkSize", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "alwaysShow", "showPageLinks", "styleClass", "dropdownAppendTo", "showFirstLastIcon"], outputs: ["firstChange", "rowsChange", "pageChanged"] }, { kind: "component", type: i0.forwardRef(() => TableBody), selector: "[pTableBody]", inputs: ["pTableBody", "pTableBodyTemplate", "value", "frozen", "frozenRows", "scrollerOptions"] }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None });
14217
14226
  }
14218
14227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: Table, decorators: [{
14219
14228
  type: Component,
14220
- args: [{ selector: 'p-table', template: `
14221
- <div
14222
- #container
14223
- [ngStyle]="style"
14224
- [class]="styleClass"
14225
- [ngClass]="{ 'p-datatable p-component': true, 'p-datatable-hoverable-rows': rowHover || selectionMode, 'p-datatable-scrollable': scrollable, 'p-datatable-flex-scrollable': scrollable && scrollHeight === 'flex', 'p-datatable-striped': stripedRows, 'p-datatable-sm': size === 'small', 'p-datatable-lg': size === 'large' }"
14226
- [attr.id]="id"
14227
- >
14228
- @if (loading && showLoader) {
14229
- <div class="p-datatable-loading-overlay p-component-overlay">
14230
- <i [class]="'p-datatable-loading-icon fa-spin ' + loadingIcon"></i>
14231
- </div>
14232
- }
14233
- @if (captionTemplate) {
14234
- <div class="p-datatable-header">
14235
- <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
14236
- </div>
14237
- }
14238
- @if (paginator && (paginatorPosition === 'top' || paginatorPosition == 'both')) {
14239
- <ui-paginator
14240
- [rows]="rows"
14241
- [first]="first"
14242
- [totalRecords]="totalRecords"
14243
- [pageLinkSize]="pageLinks"
14244
- styleClass="smz-paginator-top"
14245
- [alwaysShow]="alwaysShowPaginator"
14246
- (pageChanged)="onPageChange($event)"
14247
- [rowsPerPageOptions]="rowsPerPageOptions"
14248
- [currentPageReportTemplate]="currentPageReportTemplate"
14249
- [showFirstLastIcon]="showFirstLastIcon"
14250
- [showCurrentPageReport]="showCurrentPageReport"
14251
- [showPageLinks]="showPageLinks"
14252
- ></ui-paginator>
14253
- }
14254
-
14255
- <div #wrapper class="p-datatable-wrapper" [ngStyle]="{ maxHeight: virtualScroll ? '' : scrollHeight }">
14256
- <ng-container *ngTemplateOutlet="buildInTable; context: { $implicit: processedData, options: { columns } }"></ng-container>
14257
-
14258
- <ng-template #buildInTable let-items let-scrollerOptions="options">
14259
- <table
14260
- #table
14261
- role="table"
14262
- [ngClass]="{ 'p-datatable-table': true, 'p-datatable-scrollable-table': scrollable, 'p-datatable-resizable-table': resizableColumns, 'p-datatable-resizable-table-fit': resizableColumns && columnResizeMode === 'fit' }"
14263
- [class]="tableStyleClass"
14264
- [style]="tableStyle"
14265
- [attr.id]="id + '-table'"
14266
- >
14267
- <ng-container *ngTemplateOutlet="colGroupTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14268
- <thead #thead class="p-datatable-thead">
14269
- <ng-container *ngTemplateOutlet="headerGroupedTemplate || headerTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14270
- </thead>
14271
- @if (frozenValue || frozenBodyTemplate) {
14272
- <tbody
14273
- class="p-datatable-tbody p-datatable-frozen-tbody"
14274
- [value]="frozenValue"
14275
- [frozenRows]="true"
14276
- [pTableBody]="scrollerOptions.columns"
14277
- [pTableBodyTemplate]="frozenBodyTemplate"
14278
- [frozen]="true"
14279
- ></tbody>
14280
- }
14281
- <tbody
14282
- class="p-datatable-tbody"
14283
- [ngClass]="scrollerOptions.contentStyleClass"
14284
- [style]="scrollerOptions.contentStyle"
14285
- [value]="dataToRender(scrollerOptions.rows)"
14286
- [pTableBody]="scrollerOptions.columns"
14287
- [pTableBodyTemplate]="bodyTemplate"
14288
- [scrollerOptions]="scrollerOptions"
14289
- ></tbody>
14290
- @if (scrollerOptions.spacerStyle) {
14291
- <tbody [style]="'height: calc(' + scrollerOptions.spacerStyle.height + ' - ' + scrollerOptions.rows.length * scrollerOptions.itemSize + 'px);'" class="p-datatable-scroller-spacer"></tbody>
14292
- }
14293
- @if (footerGroupedTemplate || footerTemplate) {
14294
- <tfoot #tfoot class="p-datatable-tfoot">
14295
- <ng-container *ngTemplateOutlet="footerGroupedTemplate || footerTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14296
- </tfoot>
14297
- }
14298
- </table>
14299
- </ng-template>
14300
- </div>
14301
-
14302
- @if (paginator && (paginatorPosition === 'bottom' || paginatorPosition == 'both')) {
14303
- <ui-paginator
14304
- [rows]="rows"
14305
- [first]="first"
14306
- [totalRecords]="totalRecords"
14307
- [pageLinkSize]="pageLinks"
14308
- styleClass="smz-paginator-bottom"
14309
- [alwaysShow]="alwaysShowPaginator"
14310
- (pageChanged)="onPageChange($event)"
14311
- [rowsPerPageOptions]="rowsPerPageOptions"
14312
- [currentPageReportTemplate]="currentPageReportTemplate"
14313
- [showFirstLastIcon]="showFirstLastIcon"
14314
- [showCurrentPageReport]="showCurrentPageReport"
14315
- [showPageLinks]="showPageLinks"
14316
- ></ui-paginator>
14317
- }
14318
-
14319
- @if (summaryTemplate) {
14320
- <div class="p-datatable-footer">
14321
- <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
14322
- </div>
14323
- }
14324
-
14325
- @if (resizableColumns) {
14326
- <div #resizeHelper class="p-column-resizer-helper" style="display:none"></div>
14327
- }
14328
- @if (reorderableColumns) {
14329
- <span #reorderIndicatorUp class="fa-solid fa-arrow-down p-datatable-reorder-indicator-up" style="display: none;"></span>
14330
- }
14331
- @if (reorderableColumns) {
14332
- <span #reorderIndicatorDown class="fa-solid fa-arrow-up p-datatable-reorder-indicator-down" style="display: none;"></span>
14333
- }
14334
- </div>
14229
+ args: [{ selector: 'p-table', template: `
14230
+ <div
14231
+ #container
14232
+ [ngStyle]="style"
14233
+ [class]="styleClass"
14234
+ [ngClass]="{ 'p-datatable p-component': true, 'p-datatable-hoverable-rows': rowHover || selectionMode, 'p-datatable-scrollable': scrollable, 'p-datatable-flex-scrollable': scrollable && scrollHeight === 'flex', 'p-datatable-striped': stripedRows, 'p-datatable-sm': size === 'small', 'p-datatable-lg': size === 'large' }"
14235
+ [attr.id]="id"
14236
+ >
14237
+ @if (loading && showLoader) {
14238
+ <div class="p-datatable-loading-overlay p-component-overlay">
14239
+ <i [class]="'p-datatable-loading-icon fa-spin ' + loadingIcon"></i>
14240
+ </div>
14241
+ }
14242
+ @if (captionTemplate) {
14243
+ <div class="p-datatable-header">
14244
+ <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
14245
+ </div>
14246
+ }
14247
+ @if (paginator && (paginatorPosition === 'top' || paginatorPosition == 'both')) {
14248
+ <ui-paginator
14249
+ [rows]="rows"
14250
+ [first]="first"
14251
+ [totalRecords]="totalRecords"
14252
+ [pageLinkSize]="pageLinks"
14253
+ styleClass="smz-paginator-top"
14254
+ [alwaysShow]="alwaysShowPaginator"
14255
+ (pageChanged)="onPageChange($event)"
14256
+ [rowsPerPageOptions]="rowsPerPageOptions"
14257
+ [currentPageReportTemplate]="currentPageReportTemplate"
14258
+ [showFirstLastIcon]="showFirstLastIcon"
14259
+ [showCurrentPageReport]="showCurrentPageReport"
14260
+ [showPageLinks]="showPageLinks"
14261
+ ></ui-paginator>
14262
+ }
14263
+
14264
+ <div #wrapper class="p-datatable-wrapper" [ngStyle]="{ maxHeight: virtualScroll ? '' : scrollHeight }">
14265
+ <ng-container *ngTemplateOutlet="buildInTable; context: { $implicit: processedData, options: { columns } }"></ng-container>
14266
+
14267
+ <ng-template #buildInTable let-items let-scrollerOptions="options">
14268
+ <table
14269
+ #table
14270
+ role="table"
14271
+ [ngClass]="{ 'p-datatable-table': true, 'p-datatable-scrollable-table': scrollable, 'p-datatable-resizable-table': resizableColumns, 'p-datatable-resizable-table-fit': resizableColumns && columnResizeMode === 'fit' }"
14272
+ [class]="tableStyleClass"
14273
+ [style]="tableStyle"
14274
+ [attr.id]="id + '-table'"
14275
+ >
14276
+ <ng-container *ngTemplateOutlet="colGroupTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14277
+ <thead #thead class="p-datatable-thead">
14278
+ <ng-container *ngTemplateOutlet="headerGroupedTemplate || headerTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14279
+ </thead>
14280
+ @if (frozenValue || frozenBodyTemplate) {
14281
+ <tbody
14282
+ class="p-datatable-tbody p-datatable-frozen-tbody"
14283
+ [value]="frozenValue"
14284
+ [frozenRows]="true"
14285
+ [pTableBody]="scrollerOptions.columns"
14286
+ [pTableBodyTemplate]="frozenBodyTemplate"
14287
+ [frozen]="true"
14288
+ ></tbody>
14289
+ }
14290
+ <tbody
14291
+ class="p-datatable-tbody"
14292
+ [ngClass]="scrollerOptions.contentStyleClass"
14293
+ [style]="scrollerOptions.contentStyle"
14294
+ [value]="dataToRender(scrollerOptions.rows)"
14295
+ [pTableBody]="scrollerOptions.columns"
14296
+ [pTableBodyTemplate]="bodyTemplate"
14297
+ [scrollerOptions]="scrollerOptions"
14298
+ ></tbody>
14299
+ @if (scrollerOptions.spacerStyle) {
14300
+ <tbody [style]="'height: calc(' + scrollerOptions.spacerStyle.height + ' - ' + scrollerOptions.rows.length * scrollerOptions.itemSize + 'px);'" class="p-datatable-scroller-spacer"></tbody>
14301
+ }
14302
+ @if (footerGroupedTemplate || footerTemplate) {
14303
+ <tfoot #tfoot class="p-datatable-tfoot">
14304
+ <ng-container *ngTemplateOutlet="footerGroupedTemplate || footerTemplate; context: { $implicit: scrollerOptions.columns }"></ng-container>
14305
+ </tfoot>
14306
+ }
14307
+ </table>
14308
+ </ng-template>
14309
+ </div>
14310
+
14311
+ @if (paginator && (paginatorPosition === 'bottom' || paginatorPosition == 'both')) {
14312
+ <ui-paginator
14313
+ [rows]="rows"
14314
+ [first]="first"
14315
+ [totalRecords]="totalRecords"
14316
+ [pageLinkSize]="pageLinks"
14317
+ styleClass="smz-paginator-bottom"
14318
+ [alwaysShow]="alwaysShowPaginator"
14319
+ (pageChanged)="onPageChange($event)"
14320
+ [rowsPerPageOptions]="rowsPerPageOptions"
14321
+ [currentPageReportTemplate]="currentPageReportTemplate"
14322
+ [showFirstLastIcon]="showFirstLastIcon"
14323
+ [showCurrentPageReport]="showCurrentPageReport"
14324
+ [showPageLinks]="showPageLinks"
14325
+ ></ui-paginator>
14326
+ }
14327
+
14328
+ @if (summaryTemplate) {
14329
+ <div class="p-datatable-footer">
14330
+ <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
14331
+ </div>
14332
+ }
14333
+
14334
+ @if (resizableColumns) {
14335
+ <div #resizeHelper class="p-column-resizer-helper" style="display:none"></div>
14336
+ }
14337
+ @if (reorderableColumns) {
14338
+ <span #reorderIndicatorUp class="fa-solid fa-arrow-down p-datatable-reorder-indicator-up" style="display: none;"></span>
14339
+ }
14340
+ @if (reorderableColumns) {
14341
+ <span #reorderIndicatorDown class="fa-solid fa-arrow-up p-datatable-reorder-indicator-down" style="display: none;"></span>
14342
+ }
14343
+ </div>
14335
14344
  `, providers: [TableService], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
14336
14345
  class: 'p-element'
14337
- }, standalone: false, styles: [".p-datatable{position:relative}.p-datatable>.p-datatable-wrapper{overflow:auto}.p-datatable-table{border-spacing:0px;width:100%}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable>.p-datatable-wrapper{position:relative}.p-datatable-scrollable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable-table>.p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable-table>.p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable>.p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable-table>.p-datatable-tbody>.p-rowgroup-header{position:sticky;z-index:1}.p-datatable-resizable-table>.p-datatable-thead>tr>th,.p-datatable-resizable-table>.p-datatable-tfoot>tr>td,.p-datatable-resizable-table>.p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable-table>.p-datatable-thead>tr>th.p-resizable-column:not(.p-frozen-column){background-clip:padding-box;position:relative}.p-datatable-resizable-table-fit>.p-datatable-thead>tr>th.p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable-tbody>tr>td>.p-column-title{display:none}.p-datatable-scroller-spacer{display:flex}.p-datatable .p-scroller .p-scroller-loading{transform:none!important;min-height:0;position:sticky;top:0;left:0}.p-datatable{color:rgb(var(--smz-color-fg));font-family:var(--smz-font-sans);font-size:var(--smz-text-md)}.p-datatable-table{border-collapse:separate;background:rgb(var(--smz-color-surface-1))}.p-datatable-thead>tr>th,.p-datatable-tfoot>tr>td{padding:.75rem 1rem;text-align:left;font-weight:600;background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-tfoot>tr>td{border-top:1px solid rgb(var(--smz-color-line));border-bottom:0}.p-datatable-tbody>tr{background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));transition:background-color var(--smz-duration)}.p-datatable-tbody>tr>td{padding:.75rem 1rem;border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-datatable-row-selected):hover{background:rgb(var(--smz-color-surface-3))}.p-datatable-tbody>tr.p-datatable-row-selected,.p-datatable-tbody>tr.p-highlight{background:rgb(var(--smz-color-primary) / .12);color:rgb(var(--smz-color-fg))}.p-datatable-striped .p-datatable-tbody>tr:nth-child(2n){background:rgb(var(--smz-color-surface-0))}.p-datatable-gridlines .p-datatable-thead>tr>th,.p-datatable-gridlines .p-datatable-tbody>tr>td,.p-datatable-gridlines .p-datatable-tfoot>tr>td{border:1px solid rgb(var(--smz-color-line));border-width:0 0 1px 1px}.p-datatable-gridlines .p-datatable-thead>tr>th:last-child,.p-datatable-gridlines .p-datatable-tbody>tr>td:last-child,.p-datatable-gridlines .p-datatable-tfoot>tr>td:last-child{border-right-width:1px}.p-datatable-sm .p-datatable-thead>tr>th,.p-datatable-sm .p-datatable-tbody>tr>td,.p-datatable-sm .p-datatable-tfoot>tr>td{padding:.375rem .75rem}.p-datatable-lg .p-datatable-thead>tr>th,.p-datatable-lg .p-datatable-tbody>tr>td,.p-datatable-lg .p-datatable-tfoot>tr>td{padding:1.1rem 1.25rem}.p-datatable-header,.p-datatable-footer{padding:.75rem 1rem;background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-footer{border-top:1px solid rgb(var(--smz-color-line));border-bottom:0}.p-datatable .p-sortable-column:hover{background:rgb(var(--smz-color-surface-3))}.p-datatable .p-sortable-column:focus-visible{outline:2px solid rgb(var(--smz-color-focus));outline-offset:-2px}.p-datatable .p-datatable-loading-overlay{background:rgb(var(--smz-color-surface-1) / .6);color:rgb(var(--smz-color-primary))}.p-datatable .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.p-datatable .p-checkbox,.p-datatable .p-radiobutton{position:relative;display:inline-flex;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none}.p-datatable .p-checkbox-box,.p-datatable .p-radiobutton-box{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border:1px solid rgb(var(--smz-color-line-strong));background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-on-primary));transition:background-color var(--smz-duration),border-color var(--smz-duration),box-shadow var(--smz-duration)}.p-datatable .p-checkbox-box{border-radius:.3rem}.p-datatable .p-radiobutton-box{border-radius:9999px}.p-datatable .p-checkbox-box.p-highlight,.p-datatable .p-radiobutton-box.p-highlight{background:rgb(var(--smz-color-primary));border-color:rgb(var(--smz-color-primary))}.p-datatable .p-checkbox-box.p-focus,.p-datatable .p-radiobutton-box.p-focus{box-shadow:0 0 0 2px rgb(var(--smz-color-focus) / .45)}.p-datatable .p-checkbox-box.p-disabled,.p-datatable .p-radiobutton-box.p-disabled{opacity:.5;cursor:not-allowed}.p-datatable .p-checkbox-icon{font-size:.7rem;line-height:1}.p-datatable .p-radiobutton-icon{width:.5rem;height:.5rem;border-radius:9999px;background:rgb(var(--smz-color-on-primary));opacity:0}.p-datatable .p-radiobutton-box.p-highlight .p-radiobutton-icon{opacity:1}\n"] }]
14346
+ }, standalone: false, styles: [".p-datatable{position:relative}.p-datatable>.p-datatable-wrapper{overflow:auto}.p-datatable-table{border-spacing:0px;width:100%}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable>.p-datatable-wrapper{position:relative}.p-datatable-scrollable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable-table>.p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable-table>.p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable>.p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable-table>.p-datatable-tbody>.p-rowgroup-header{position:sticky;z-index:1}.p-datatable-resizable-table>.p-datatable-thead>tr>th,.p-datatable-resizable-table>.p-datatable-tfoot>tr>td,.p-datatable-resizable-table>.p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable-table>.p-datatable-thead>tr>th.p-resizable-column:not(.p-frozen-column){background-clip:padding-box;position:relative}.p-datatable-resizable-table-fit>.p-datatable-thead>tr>th.p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable-tbody>tr>td>.p-column-title{display:none}.p-datatable-scroller-spacer{display:flex}.p-datatable .p-scroller .p-scroller-loading{transform:none!important;min-height:0;position:sticky;top:0;left:0}.p-datatable{color:rgb(var(--smz-color-fg));font-family:var(--smz-font-sans);font-size:var(--smz-text-md)}.p-datatable-table{border-collapse:separate;background:rgb(var(--smz-color-surface-1))}.p-datatable-thead>tr>th,.p-datatable-tfoot>tr>td{padding:.75rem 1rem;text-align:left;font-weight:600;background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-tfoot>tr>td{border-top:1px solid rgb(var(--smz-color-line));border-bottom:0}.p-datatable-tbody>tr{background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));transition:background-color var(--smz-duration)}.p-datatable-tbody>tr>td{padding:.75rem 1rem;border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-datatable-row-selected):hover{background:rgb(var(--smz-color-surface-3))}.p-datatable-tbody>tr.p-datatable-row-selected,.p-datatable-tbody>tr.p-highlight{background:rgb(var(--smz-color-primary) / .12);color:rgb(var(--smz-color-fg))}.p-datatable-striped .p-datatable-tbody>tr:nth-child(2n){background:rgb(var(--smz-color-surface-0))}.p-datatable-gridlines .p-datatable-thead>tr>th,.p-datatable-gridlines .p-datatable-tbody>tr>td,.p-datatable-gridlines .p-datatable-tfoot>tr>td{border:1px solid rgb(var(--smz-color-line));border-width:0 0 1px 1px}.p-datatable-gridlines .p-datatable-thead>tr>th:last-child,.p-datatable-gridlines .p-datatable-tbody>tr>td:last-child,.p-datatable-gridlines .p-datatable-tfoot>tr>td:last-child{border-right-width:1px}.p-datatable-sm .p-datatable-thead>tr>th,.p-datatable-sm .p-datatable-tbody>tr>td,.p-datatable-sm .p-datatable-tfoot>tr>td{padding:.375rem .75rem}.p-datatable-lg .p-datatable-thead>tr>th,.p-datatable-lg .p-datatable-tbody>tr>td,.p-datatable-lg .p-datatable-tfoot>tr>td{padding:1.1rem 1.25rem}.p-datatable-header,.p-datatable-footer{padding:.75rem 1rem;background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-fg));border-bottom:1px solid rgb(var(--smz-color-line))}.p-datatable-footer{border-top:1px solid rgb(var(--smz-color-line));border-bottom:0}.p-datatable .p-sortable-column:hover{background:rgb(var(--smz-color-surface-3))}.p-datatable .p-sortable-column:focus-visible{outline:2px solid rgb(var(--smz-color-focus));outline-offset:-2px}.p-datatable .p-datatable-loading-overlay{background:rgb(var(--smz-color-surface-1) / .6);color:rgb(var(--smz-color-primary))}.p-datatable .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.p-datatable .p-checkbox,.p-datatable .p-radiobutton{position:relative;display:inline-flex;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none}.p-datatable .p-checkbox-box,.p-datatable .p-radiobutton-box{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border:1px solid rgb(var(--smz-color-line-strong));background:rgb(var(--smz-color-surface-1));color:rgb(var(--smz-color-on-primary));transition:background-color var(--smz-duration),border-color var(--smz-duration),box-shadow var(--smz-duration)}.p-datatable .p-checkbox-box{border-radius:.3rem}.p-datatable .p-radiobutton-box{border-radius:9999px}.p-datatable .p-checkbox-box.p-highlight,.p-datatable .p-radiobutton-box.p-highlight{background:rgb(var(--smz-color-primary));border-color:rgb(var(--smz-color-primary))}.p-datatable .p-checkbox-box.p-focus,.p-datatable .p-radiobutton-box.p-focus{box-shadow:0 0 0 2px rgb(var(--smz-color-focus) / .45)}.p-datatable .p-checkbox-box.p-disabled,.p-datatable .p-radiobutton-box.p-disabled{opacity:.5;cursor:not-allowed}.p-datatable .p-checkbox-icon{font-size:.7rem;line-height:1}.p-datatable .p-radiobutton-icon{width:.5rem;height:.5rem;border-radius:9999px;background:rgb(var(--smz-color-on-primary));opacity:0}.p-datatable .p-radiobutton-box.p-highlight .p-radiobutton-icon{opacity:1}.p-datatable-thead>tr>th.p-highlight{background:rgb(var(--smz-color-primary) / .1);color:rgb(var(--smz-color-primary))}.p-datatable-striped .p-datatable-tbody>tr:nth-child(2n){background:rgb(var(--smz-color-surface-3) / .5)}.p-datatable-sm .p-datatable-thead>tr>th,.p-datatable-sm .p-datatable-tbody>tr>td,.p-datatable-sm .p-datatable-tfoot>tr>td{padding:.5rem}.p-column-filter-menu-button,.p-column-filter-clear-button{width:2rem;height:2rem;border-radius:9999px;color:rgb(var(--smz-color-fg-muted));background:transparent;border:0;cursor:pointer;transition:background-color var(--smz-duration)}.p-column-filter-menu-button:hover,.p-column-filter-clear-button:hover{background:rgb(var(--smz-color-surface-3));color:rgb(var(--smz-color-fg))}.p-column-filter-overlay{min-width:14rem;padding:.5rem;background:rgb(var(--smz-color-surface-2));color:rgb(var(--smz-color-fg));border:1px solid rgb(var(--smz-color-line));border-radius:var(--smz-radius-overlay);box-shadow:var(--smz-shadow-overlay);font-family:var(--smz-font-sans);font-size:var(--smz-text-md)}.p-column-filter-overlay .p-column-filter-row-items,.p-column-filter-overlay .p-column-filter-constraint{padding:.25rem 0}.p-column-filter-overlay .p-column-filter-row-item{padding:.5rem .75rem;border-radius:var(--smz-radius-control);cursor:pointer}.p-column-filter-overlay .p-column-filter-row-item:hover,.p-column-filter-overlay .p-column-filter-row-item.p-highlight{background:rgb(var(--smz-color-surface-3))}.p-column-filter-overlay .p-column-filter-buttonbar{padding:.5rem 0 0;border-top:1px solid rgb(var(--smz-color-line))}\n"] }]
14338
14347
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: TableService }, { type: i0.ChangeDetectorRef }, { type: TableOverlayService }], propDecorators: { frozenColumns: [{
14339
14348
  type: Input
14340
14349
  }], frozenValue: [{
@@ -14700,188 +14709,188 @@ class TableBody {
14700
14709
  return getItemOptions ? getItemOptions(index).index : index;
14701
14710
  }
14702
14711
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TableBody, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
14703
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: TableBody, isStandalone: false, selector: "[pTableBody]", inputs: { columns: ["pTableBody", "columns"], template: ["pTableBodyTemplate", "template"], value: "value", frozen: "frozen", frozenRows: "frozenRows", scrollerOptions: "scrollerOptions" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
14704
- @if (!dt.expandedRowTemplate) {
14705
- @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14706
- @if (dt.groupHeaderTemplate && !dt.virtualScroll && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)) {
14707
- <ng-container role="row">
14708
- <ng-container
14709
- *ngTemplateOutlet="dt.groupHeaderTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14710
- ></ng-container>
14711
- </ng-container>
14712
- }
14713
- @if (dt.rowGroupMode !== 'rowspan') {
14714
- <ng-container
14715
- *ngTemplateOutlet="rowData ? template : dt.loadingBodyTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14716
- ></ng-container>
14717
- }
14718
- @if (dt.rowGroupMode === 'rowspan') {
14719
- <ng-container
14720
- *ngTemplateOutlet="
14721
- rowData ? template : dt.loadingBodyTemplate;
14722
- context: {
14723
- $implicit: rowData,
14724
- rowIndex: getRowIndex(rowIndex),
14725
- columns: columns,
14726
- editing: dt.editMode === 'row' && dt.isRowEditing(rowData),
14727
- frozen: frozen,
14728
- rowgroup: shouldRenderRowspan(value, rowData, rowIndex),
14729
- rowspan: calculateRowGroupSize(value, rowData, rowIndex)
14730
- }
14731
- "
14732
- ></ng-container>
14733
- }
14734
- @if (dt.groupFooterTemplate && !dt.virtualScroll && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)) {
14735
- <ng-container role="row">
14736
- <ng-container
14737
- *ngTemplateOutlet="dt.groupFooterTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14738
- ></ng-container>
14739
- </ng-container>
14740
- }
14741
- }
14742
- }
14743
- @if (dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)) {
14744
- @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14745
- @if (!dt.groupHeaderTemplate) {
14746
- <ng-container
14747
- *ngTemplateOutlet="template; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14748
- ></ng-container>
14749
- }
14750
- @if (dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, getRowIndex(rowIndex))) {
14751
- <ng-container role="row">
14752
- <ng-container
14753
- *ngTemplateOutlet="
14754
- dt.groupHeaderTemplate;
14755
- context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }
14756
- "
14757
- ></ng-container>
14758
- </ng-container>
14759
- }
14760
- @if (dt.isRowExpanded(rowData)) {
14761
- <ng-container *ngTemplateOutlet="dt.expandedRowTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, frozen: frozen }"></ng-container>
14762
- @if (dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, getRowIndex(rowIndex))) {
14763
- <ng-container role="row">
14764
- <ng-container
14765
- *ngTemplateOutlet="
14766
- dt.groupFooterTemplate;
14767
- context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }
14768
- "
14769
- ></ng-container>
14770
- </ng-container>
14771
- }
14772
- }
14773
- }
14774
- }
14775
- @if (dt.frozenExpandedRowTemplate && frozen) {
14776
- @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14777
- <ng-container
14778
- *ngTemplateOutlet="template; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14779
- ></ng-container>
14780
- @if (dt.isRowExpanded(rowData)) {
14781
- <ng-container *ngTemplateOutlet="dt.frozenExpandedRowTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, frozen: frozen }"></ng-container>
14782
- }
14783
- }
14784
- }
14785
- @if (dt.loading) {
14786
- <ng-container *ngTemplateOutlet="dt.loadingBodyTemplate; context: { $implicit: columns, frozen: frozen }"></ng-container>
14787
- }
14788
- @if (dt.isEmpty() && !dt.loading) {
14789
- <ng-container *ngTemplateOutlet="dt.emptyMessageTemplate; context: { $implicit: columns, frozen: frozen }"></ng-container>
14790
- }
14712
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: TableBody, isStandalone: false, selector: "[pTableBody]", inputs: { columns: ["pTableBody", "columns"], template: ["pTableBodyTemplate", "template"], value: "value", frozen: "frozen", frozenRows: "frozenRows", scrollerOptions: "scrollerOptions" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
14713
+ @if (!dt.expandedRowTemplate) {
14714
+ @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14715
+ @if (dt.groupHeaderTemplate && !dt.virtualScroll && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)) {
14716
+ <ng-container role="row">
14717
+ <ng-container
14718
+ *ngTemplateOutlet="dt.groupHeaderTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14719
+ ></ng-container>
14720
+ </ng-container>
14721
+ }
14722
+ @if (dt.rowGroupMode !== 'rowspan') {
14723
+ <ng-container
14724
+ *ngTemplateOutlet="rowData ? template : dt.loadingBodyTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14725
+ ></ng-container>
14726
+ }
14727
+ @if (dt.rowGroupMode === 'rowspan') {
14728
+ <ng-container
14729
+ *ngTemplateOutlet="
14730
+ rowData ? template : dt.loadingBodyTemplate;
14731
+ context: {
14732
+ $implicit: rowData,
14733
+ rowIndex: getRowIndex(rowIndex),
14734
+ columns: columns,
14735
+ editing: dt.editMode === 'row' && dt.isRowEditing(rowData),
14736
+ frozen: frozen,
14737
+ rowgroup: shouldRenderRowspan(value, rowData, rowIndex),
14738
+ rowspan: calculateRowGroupSize(value, rowData, rowIndex)
14739
+ }
14740
+ "
14741
+ ></ng-container>
14742
+ }
14743
+ @if (dt.groupFooterTemplate && !dt.virtualScroll && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)) {
14744
+ <ng-container role="row">
14745
+ <ng-container
14746
+ *ngTemplateOutlet="dt.groupFooterTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14747
+ ></ng-container>
14748
+ </ng-container>
14749
+ }
14750
+ }
14751
+ }
14752
+ @if (dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)) {
14753
+ @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14754
+ @if (!dt.groupHeaderTemplate) {
14755
+ <ng-container
14756
+ *ngTemplateOutlet="template; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14757
+ ></ng-container>
14758
+ }
14759
+ @if (dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, getRowIndex(rowIndex))) {
14760
+ <ng-container role="row">
14761
+ <ng-container
14762
+ *ngTemplateOutlet="
14763
+ dt.groupHeaderTemplate;
14764
+ context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }
14765
+ "
14766
+ ></ng-container>
14767
+ </ng-container>
14768
+ }
14769
+ @if (dt.isRowExpanded(rowData)) {
14770
+ <ng-container *ngTemplateOutlet="dt.expandedRowTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, frozen: frozen }"></ng-container>
14771
+ @if (dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, getRowIndex(rowIndex))) {
14772
+ <ng-container role="row">
14773
+ <ng-container
14774
+ *ngTemplateOutlet="
14775
+ dt.groupFooterTemplate;
14776
+ context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }
14777
+ "
14778
+ ></ng-container>
14779
+ </ng-container>
14780
+ }
14781
+ }
14782
+ }
14783
+ }
14784
+ @if (dt.frozenExpandedRowTemplate && frozen) {
14785
+ @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14786
+ <ng-container
14787
+ *ngTemplateOutlet="template; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14788
+ ></ng-container>
14789
+ @if (dt.isRowExpanded(rowData)) {
14790
+ <ng-container *ngTemplateOutlet="dt.frozenExpandedRowTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, frozen: frozen }"></ng-container>
14791
+ }
14792
+ }
14793
+ }
14794
+ @if (dt.loading) {
14795
+ <ng-container *ngTemplateOutlet="dt.loadingBodyTemplate; context: { $implicit: columns, frozen: frozen }"></ng-container>
14796
+ }
14797
+ @if (dt.isEmpty() && !dt.loading) {
14798
+ <ng-container *ngTemplateOutlet="dt.emptyMessageTemplate; context: { $implicit: columns, frozen: frozen }"></ng-container>
14799
+ }
14791
14800
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None });
14792
14801
  }
14793
14802
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TableBody, decorators: [{
14794
14803
  type: Component,
14795
14804
  args: [{
14796
14805
  selector: '[pTableBody]',
14797
- template: `
14798
- @if (!dt.expandedRowTemplate) {
14799
- @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14800
- @if (dt.groupHeaderTemplate && !dt.virtualScroll && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)) {
14801
- <ng-container role="row">
14802
- <ng-container
14803
- *ngTemplateOutlet="dt.groupHeaderTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14804
- ></ng-container>
14805
- </ng-container>
14806
- }
14807
- @if (dt.rowGroupMode !== 'rowspan') {
14808
- <ng-container
14809
- *ngTemplateOutlet="rowData ? template : dt.loadingBodyTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14810
- ></ng-container>
14811
- }
14812
- @if (dt.rowGroupMode === 'rowspan') {
14813
- <ng-container
14814
- *ngTemplateOutlet="
14815
- rowData ? template : dt.loadingBodyTemplate;
14816
- context: {
14817
- $implicit: rowData,
14818
- rowIndex: getRowIndex(rowIndex),
14819
- columns: columns,
14820
- editing: dt.editMode === 'row' && dt.isRowEditing(rowData),
14821
- frozen: frozen,
14822
- rowgroup: shouldRenderRowspan(value, rowData, rowIndex),
14823
- rowspan: calculateRowGroupSize(value, rowData, rowIndex)
14824
- }
14825
- "
14826
- ></ng-container>
14827
- }
14828
- @if (dt.groupFooterTemplate && !dt.virtualScroll && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)) {
14829
- <ng-container role="row">
14830
- <ng-container
14831
- *ngTemplateOutlet="dt.groupFooterTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14832
- ></ng-container>
14833
- </ng-container>
14834
- }
14835
- }
14836
- }
14837
- @if (dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)) {
14838
- @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14839
- @if (!dt.groupHeaderTemplate) {
14840
- <ng-container
14841
- *ngTemplateOutlet="template; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14842
- ></ng-container>
14843
- }
14844
- @if (dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, getRowIndex(rowIndex))) {
14845
- <ng-container role="row">
14846
- <ng-container
14847
- *ngTemplateOutlet="
14848
- dt.groupHeaderTemplate;
14849
- context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }
14850
- "
14851
- ></ng-container>
14852
- </ng-container>
14853
- }
14854
- @if (dt.isRowExpanded(rowData)) {
14855
- <ng-container *ngTemplateOutlet="dt.expandedRowTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, frozen: frozen }"></ng-container>
14856
- @if (dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, getRowIndex(rowIndex))) {
14857
- <ng-container role="row">
14858
- <ng-container
14859
- *ngTemplateOutlet="
14860
- dt.groupFooterTemplate;
14861
- context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }
14862
- "
14863
- ></ng-container>
14864
- </ng-container>
14865
- }
14866
- }
14867
- }
14868
- }
14869
- @if (dt.frozenExpandedRowTemplate && frozen) {
14870
- @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14871
- <ng-container
14872
- *ngTemplateOutlet="template; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14873
- ></ng-container>
14874
- @if (dt.isRowExpanded(rowData)) {
14875
- <ng-container *ngTemplateOutlet="dt.frozenExpandedRowTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, frozen: frozen }"></ng-container>
14876
- }
14877
- }
14878
- }
14879
- @if (dt.loading) {
14880
- <ng-container *ngTemplateOutlet="dt.loadingBodyTemplate; context: { $implicit: columns, frozen: frozen }"></ng-container>
14881
- }
14882
- @if (dt.isEmpty() && !dt.loading) {
14883
- <ng-container *ngTemplateOutlet="dt.emptyMessageTemplate; context: { $implicit: columns, frozen: frozen }"></ng-container>
14884
- }
14806
+ template: `
14807
+ @if (!dt.expandedRowTemplate) {
14808
+ @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14809
+ @if (dt.groupHeaderTemplate && !dt.virtualScroll && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)) {
14810
+ <ng-container role="row">
14811
+ <ng-container
14812
+ *ngTemplateOutlet="dt.groupHeaderTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14813
+ ></ng-container>
14814
+ </ng-container>
14815
+ }
14816
+ @if (dt.rowGroupMode !== 'rowspan') {
14817
+ <ng-container
14818
+ *ngTemplateOutlet="rowData ? template : dt.loadingBodyTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14819
+ ></ng-container>
14820
+ }
14821
+ @if (dt.rowGroupMode === 'rowspan') {
14822
+ <ng-container
14823
+ *ngTemplateOutlet="
14824
+ rowData ? template : dt.loadingBodyTemplate;
14825
+ context: {
14826
+ $implicit: rowData,
14827
+ rowIndex: getRowIndex(rowIndex),
14828
+ columns: columns,
14829
+ editing: dt.editMode === 'row' && dt.isRowEditing(rowData),
14830
+ frozen: frozen,
14831
+ rowgroup: shouldRenderRowspan(value, rowData, rowIndex),
14832
+ rowspan: calculateRowGroupSize(value, rowData, rowIndex)
14833
+ }
14834
+ "
14835
+ ></ng-container>
14836
+ }
14837
+ @if (dt.groupFooterTemplate && !dt.virtualScroll && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)) {
14838
+ <ng-container role="row">
14839
+ <ng-container
14840
+ *ngTemplateOutlet="dt.groupFooterTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14841
+ ></ng-container>
14842
+ </ng-container>
14843
+ }
14844
+ }
14845
+ }
14846
+ @if (dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)) {
14847
+ @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14848
+ @if (!dt.groupHeaderTemplate) {
14849
+ <ng-container
14850
+ *ngTemplateOutlet="template; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14851
+ ></ng-container>
14852
+ }
14853
+ @if (dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, getRowIndex(rowIndex))) {
14854
+ <ng-container role="row">
14855
+ <ng-container
14856
+ *ngTemplateOutlet="
14857
+ dt.groupHeaderTemplate;
14858
+ context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }
14859
+ "
14860
+ ></ng-container>
14861
+ </ng-container>
14862
+ }
14863
+ @if (dt.isRowExpanded(rowData)) {
14864
+ <ng-container *ngTemplateOutlet="dt.expandedRowTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, frozen: frozen }"></ng-container>
14865
+ @if (dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, getRowIndex(rowIndex))) {
14866
+ <ng-container role="row">
14867
+ <ng-container
14868
+ *ngTemplateOutlet="
14869
+ dt.groupFooterTemplate;
14870
+ context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }
14871
+ "
14872
+ ></ng-container>
14873
+ </ng-container>
14874
+ }
14875
+ }
14876
+ }
14877
+ }
14878
+ @if (dt.frozenExpandedRowTemplate && frozen) {
14879
+ @for (rowData of value; track $any(dt.rowTrackBy)(rowIndex, rowData); let rowIndex = $index) {
14880
+ <ng-container
14881
+ *ngTemplateOutlet="template; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }"
14882
+ ></ng-container>
14883
+ @if (dt.isRowExpanded(rowData)) {
14884
+ <ng-container *ngTemplateOutlet="dt.frozenExpandedRowTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, frozen: frozen }"></ng-container>
14885
+ }
14886
+ }
14887
+ }
14888
+ @if (dt.loading) {
14889
+ <ng-container *ngTemplateOutlet="dt.loadingBodyTemplate; context: { $implicit: columns, frozen: frozen }"></ng-container>
14890
+ }
14891
+ @if (dt.isEmpty() && !dt.loading) {
14892
+ <ng-container *ngTemplateOutlet="dt.emptyMessageTemplate; context: { $implicit: columns, frozen: frozen }"></ng-container>
14893
+ }
14885
14894
  `,
14886
14895
  changeDetection: ChangeDetectionStrategy.Default,
14887
14896
  encapsulation: ViewEncapsulation.None,
@@ -15125,22 +15134,22 @@ class SortIcon {
15125
15134
  }
15126
15135
  }
15127
15136
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SortIcon, deps: [{ token: Table }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
15128
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SortIcon, isStandalone: false, selector: "p-sortIcon", inputs: { field: "field" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
15129
- <i class="p-sortable-column-icon fa-solid fa-fw" [ngClass]="{ 'fa-arrow-up-short-wide': sortOrder === 1, 'fa-arrow-down-wide-short': sortOrder === -1, 'fa-sort': sortOrder === 0 }"></i>
15130
- @if (isMultiSorted()) {
15131
- <span class="p-sortable-column-badge">{{ getBadgeValue() }}</span>
15132
- }
15137
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SortIcon, isStandalone: false, selector: "p-sortIcon", inputs: { field: "field" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
15138
+ <i class="p-sortable-column-icon fa-solid fa-fw" [ngClass]="{ 'fa-arrow-up-short-wide': sortOrder === 1, 'fa-arrow-down-wide-short': sortOrder === -1, 'fa-sort': sortOrder === 0 }"></i>
15139
+ @if (isMultiSorted()) {
15140
+ <span class="p-sortable-column-badge">{{ getBadgeValue() }}</span>
15141
+ }
15133
15142
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
15134
15143
  }
15135
15144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SortIcon, decorators: [{
15136
15145
  type: Component,
15137
15146
  args: [{
15138
15147
  selector: 'p-sortIcon',
15139
- template: `
15140
- <i class="p-sortable-column-icon fa-solid fa-fw" [ngClass]="{ 'fa-arrow-up-short-wide': sortOrder === 1, 'fa-arrow-down-wide-short': sortOrder === -1, 'fa-sort': sortOrder === 0 }"></i>
15141
- @if (isMultiSorted()) {
15142
- <span class="p-sortable-column-badge">{{ getBadgeValue() }}</span>
15143
- }
15148
+ template: `
15149
+ <i class="p-sortable-column-icon fa-solid fa-fw" [ngClass]="{ 'fa-arrow-up-short-wide': sortOrder === 1, 'fa-arrow-down-wide-short': sortOrder === -1, 'fa-sort': sortOrder === 0 }"></i>
15150
+ @if (isMultiSorted()) {
15151
+ <span class="p-sortable-column-badge">{{ getBadgeValue() }}</span>
15152
+ }
15144
15153
  `,
15145
15154
  changeDetection: ChangeDetectionStrategy.OnPush,
15146
15155
  encapsulation: ViewEncapsulation.None,
@@ -16133,26 +16142,26 @@ class CellEditor {
16133
16142
  return (this.dt.editingCell && this.editableColumn && this.dt.editingCell === this.editableColumn.el.nativeElement) || (this.editableRow && this.dt.editMode === 'row' && this.dt.isRowEditing(this.editableRow.data));
16134
16143
  }
16135
16144
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: CellEditor, deps: [{ token: Table }, { token: EditableColumn, optional: true }, { token: EditableRow, optional: true }], target: i0.ɵɵFactoryTarget.Component });
16136
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: CellEditor, isStandalone: false, selector: "p-cellEditor", host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective }], ngImport: i0, template: `
16137
- @if (editing) {
16138
- <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
16139
- }
16140
- @if (!editing) {
16141
- <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
16142
- }
16145
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: CellEditor, isStandalone: false, selector: "p-cellEditor", host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective }], ngImport: i0, template: `
16146
+ @if (editing) {
16147
+ <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
16148
+ }
16149
+ @if (!editing) {
16150
+ <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
16151
+ }
16143
16152
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
16144
16153
  }
16145
16154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: CellEditor, decorators: [{
16146
16155
  type: Component,
16147
16156
  args: [{
16148
16157
  selector: 'p-cellEditor',
16149
- template: `
16150
- @if (editing) {
16151
- <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
16152
- }
16153
- @if (!editing) {
16154
- <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
16155
- }
16158
+ template: `
16159
+ @if (editing) {
16160
+ <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
16161
+ }
16162
+ @if (!editing) {
16163
+ <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
16164
+ }
16156
16165
  `,
16157
16166
  encapsulation: ViewEncapsulation.None,
16158
16167
  host: {
@@ -16214,30 +16223,30 @@ class TableRadioButton {
16214
16223
  }
16215
16224
  }
16216
16225
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TableRadioButton, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
16217
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: TableRadioButton, isStandalone: false, selector: "p-tableRadioButton", inputs: { disabled: "disabled", value: "value", index: "index", inputId: "inputId", name: "name", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
16218
- <div class="p-radiobutton p-component" [ngClass]="{ 'p-radiobutton-focused': focused, 'p-radiobutton-disabled': disabled }" (click)="onClick($event)">
16219
- <div class="p-hidden-accessible">
16220
- <input type="radio" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled" [attr.aria-label]="ariaLabel" />
16221
- </div>
16222
- <div #box [ngClass]="{ 'p-radiobutton-box p-component': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': disabled }" role="radio" [attr.aria-checked]="checked">
16223
- <div class="p-radiobutton-icon"></div>
16224
- </div>
16225
- </div>
16226
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: TableRadioButton, isStandalone: false, selector: "p-tableRadioButton", inputs: { disabled: "disabled", value: "value", index: "index", inputId: "inputId", name: "name", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
16227
+ <div class="p-radiobutton p-component" [ngClass]="{ 'p-radiobutton-focused': focused, 'p-radiobutton-disabled': disabled }" (click)="onClick($event)">
16228
+ <div class="p-hidden-accessible">
16229
+ <input type="radio" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled" [attr.aria-label]="ariaLabel" />
16230
+ </div>
16231
+ <div #box [ngClass]="{ 'p-radiobutton-box p-component': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': disabled }" role="radio" [attr.aria-checked]="checked">
16232
+ <div class="p-radiobutton-icon"></div>
16233
+ </div>
16234
+ </div>
16226
16235
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16227
16236
  }
16228
16237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TableRadioButton, decorators: [{
16229
16238
  type: Component,
16230
16239
  args: [{
16231
16240
  selector: 'p-tableRadioButton',
16232
- template: `
16233
- <div class="p-radiobutton p-component" [ngClass]="{ 'p-radiobutton-focused': focused, 'p-radiobutton-disabled': disabled }" (click)="onClick($event)">
16234
- <div class="p-hidden-accessible">
16235
- <input type="radio" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled" [attr.aria-label]="ariaLabel" />
16236
- </div>
16237
- <div #box [ngClass]="{ 'p-radiobutton-box p-component': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': disabled }" role="radio" [attr.aria-checked]="checked">
16238
- <div class="p-radiobutton-icon"></div>
16239
- </div>
16240
- </div>
16241
+ template: `
16242
+ <div class="p-radiobutton p-component" [ngClass]="{ 'p-radiobutton-focused': focused, 'p-radiobutton-disabled': disabled }" (click)="onClick($event)">
16243
+ <div class="p-hidden-accessible">
16244
+ <input type="radio" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled" [attr.aria-label]="ariaLabel" />
16245
+ </div>
16246
+ <div #box [ngClass]="{ 'p-radiobutton-box p-component': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': disabled }" role="radio" [attr.aria-checked]="checked">
16247
+ <div class="p-radiobutton-icon"></div>
16248
+ </div>
16249
+ </div>
16241
16250
  `,
16242
16251
  changeDetection: ChangeDetectionStrategy.OnPush,
16243
16252
  encapsulation: ViewEncapsulation.None,
@@ -16306,30 +16315,30 @@ class TableCheckbox {
16306
16315
  }
16307
16316
  }
16308
16317
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TableCheckbox, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
16309
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: TableCheckbox, isStandalone: false, selector: "p-tableCheckbox", inputs: { disabled: "disabled", value: "value", index: "index", inputId: "inputId", name: "name", required: "required", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
16310
- <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-focused': focused, 'p-checkbox-disabled': disabled }" (click)="onClick($event)">
16311
- <div class="p-hidden-accessible">
16312
- <input type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled" [attr.required]="required" [attr.aria-label]="ariaLabel" />
16313
- </div>
16314
- <div #box [ngClass]="{ 'p-checkbox-box p-component': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': disabled }" role="checkbox" [attr.aria-checked]="checked">
16315
- <span class="p-checkbox-icon" [ngClass]="{ 'fa-solid fa-check': checked }"></span>
16316
- </div>
16317
- </div>
16318
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: TableCheckbox, isStandalone: false, selector: "p-tableCheckbox", inputs: { disabled: "disabled", value: "value", index: "index", inputId: "inputId", name: "name", required: "required", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
16319
+ <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-focused': focused, 'p-checkbox-disabled': disabled }" (click)="onClick($event)">
16320
+ <div class="p-hidden-accessible">
16321
+ <input type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled" [attr.required]="required" [attr.aria-label]="ariaLabel" />
16322
+ </div>
16323
+ <div #box [ngClass]="{ 'p-checkbox-box p-component': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': disabled }" role="checkbox" [attr.aria-checked]="checked">
16324
+ <span class="p-checkbox-icon" [ngClass]="{ 'fa-solid fa-check': checked }"></span>
16325
+ </div>
16326
+ </div>
16318
16327
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16319
16328
  }
16320
16329
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TableCheckbox, decorators: [{
16321
16330
  type: Component,
16322
16331
  args: [{
16323
16332
  selector: 'p-tableCheckbox',
16324
- template: `
16325
- <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-focused': focused, 'p-checkbox-disabled': disabled }" (click)="onClick($event)">
16326
- <div class="p-hidden-accessible">
16327
- <input type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled" [attr.required]="required" [attr.aria-label]="ariaLabel" />
16328
- </div>
16329
- <div #box [ngClass]="{ 'p-checkbox-box p-component': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': disabled }" role="checkbox" [attr.aria-checked]="checked">
16330
- <span class="p-checkbox-icon" [ngClass]="{ 'fa-solid fa-check': checked }"></span>
16331
- </div>
16332
- </div>
16333
+ template: `
16334
+ <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-focused': focused, 'p-checkbox-disabled': disabled }" (click)="onClick($event)">
16335
+ <div class="p-hidden-accessible">
16336
+ <input type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled" [attr.required]="required" [attr.aria-label]="ariaLabel" />
16337
+ </div>
16338
+ <div #box [ngClass]="{ 'p-checkbox-box p-component': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': disabled }" role="checkbox" [attr.aria-checked]="checked">
16339
+ <span class="p-checkbox-icon" [ngClass]="{ 'fa-solid fa-check': checked }"></span>
16340
+ </div>
16341
+ </div>
16333
16342
  `,
16334
16343
  changeDetection: ChangeDetectionStrategy.OnPush,
16335
16344
  encapsulation: ViewEncapsulation.None,
@@ -16417,30 +16426,30 @@ class TableHeaderCheckbox {
16417
16426
  }
16418
16427
  }
16419
16428
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TableHeaderCheckbox, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
16420
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: TableHeaderCheckbox, isStandalone: false, selector: "p-tableHeaderCheckbox", inputs: { disabled: "disabled", inputId: "inputId", name: "name", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
16421
- <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-focused': focused, 'p-checkbox-disabled': isDisabled() }" (click)="onClick($event)">
16422
- <div class="p-hidden-accessible">
16423
- <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="isDisabled()" [attr.aria-label]="ariaLabel" />
16424
- </div>
16425
- <div #box [ngClass]="{ 'p-checkbox-box': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': isDisabled() }" role="checkbox" [attr.aria-checked]="checked">
16426
- <span class="p-checkbox-icon" [ngClass]="{ 'fa-solid fa-check': checked }"></span>
16427
- </div>
16428
- </div>
16429
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: TableHeaderCheckbox, isStandalone: false, selector: "p-tableHeaderCheckbox", inputs: { disabled: "disabled", inputId: "inputId", name: "name", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
16430
+ <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-focused': focused, 'p-checkbox-disabled': isDisabled() }" (click)="onClick($event)">
16431
+ <div class="p-hidden-accessible">
16432
+ <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="isDisabled()" [attr.aria-label]="ariaLabel" />
16433
+ </div>
16434
+ <div #box [ngClass]="{ 'p-checkbox-box': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': isDisabled() }" role="checkbox" [attr.aria-checked]="checked">
16435
+ <span class="p-checkbox-icon" [ngClass]="{ 'fa-solid fa-check': checked }"></span>
16436
+ </div>
16437
+ </div>
16429
16438
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16430
16439
  }
16431
16440
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TableHeaderCheckbox, decorators: [{
16432
16441
  type: Component,
16433
16442
  args: [{
16434
16443
  selector: 'p-tableHeaderCheckbox',
16435
- template: `
16436
- <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-focused': focused, 'p-checkbox-disabled': isDisabled() }" (click)="onClick($event)">
16437
- <div class="p-hidden-accessible">
16438
- <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="isDisabled()" [attr.aria-label]="ariaLabel" />
16439
- </div>
16440
- <div #box [ngClass]="{ 'p-checkbox-box': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': isDisabled() }" role="checkbox" [attr.aria-checked]="checked">
16441
- <span class="p-checkbox-icon" [ngClass]="{ 'fa-solid fa-check': checked }"></span>
16442
- </div>
16443
- </div>
16444
+ template: `
16445
+ <div class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-focused': focused, 'p-checkbox-disabled': isDisabled() }" (click)="onClick($event)">
16446
+ <div class="p-hidden-accessible">
16447
+ <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="isDisabled()" [attr.aria-label]="ariaLabel" />
16448
+ </div>
16449
+ <div #box [ngClass]="{ 'p-checkbox-box': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': isDisabled() }" role="checkbox" [attr.aria-checked]="checked">
16450
+ <span class="p-checkbox-icon" [ngClass]="{ 'fa-solid fa-check': checked }"></span>
16451
+ </div>
16452
+ </div>
16444
16453
  `,
16445
16454
  changeDetection: ChangeDetectionStrategy.OnPush,
16446
16455
  encapsulation: ViewEncapsulation.None,
@@ -16894,7 +16903,8 @@ class ColumnFilter {
16894
16903
  return false;
16895
16904
  }
16896
16905
  isOutsideClicked(event) {
16897
- return !(this.overlay.isSameNode(event.target) ||
16906
+ return !(isInsideCdkOverlay(event) ||
16907
+ this.overlay.isSameNode(event.target) ||
16898
16908
  this.overlay.contains(event.target) ||
16899
16909
  this.icon.nativeElement.isSameNode(event.target) ||
16900
16910
  this.icon.nativeElement.contains(event.target) ||
@@ -16986,260 +16996,260 @@ class ColumnFilter {
16986
16996
  }
16987
16997
  }
16988
16998
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ColumnFilter, deps: [{ token: i0.ElementRef }, { token: Table }, { token: i0.Renderer2 }, { token: i2.SmzLocaleService }, { token: TableOverlayService }], target: i0.ɵɵFactoryTarget.Component });
16989
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ColumnFilter, isStandalone: false, selector: "p-columnFilter", inputs: { field: "field", type: "type", display: "display", showMenu: "showMenu", matchMode: "matchMode", operator: "operator", showOperator: "showOperator", showClearButton: "showClearButton", showApplyButton: "showApplyButton", showMatchModes: "showMatchModes", showAddButton: "showAddButton", hideOnClear: "hideOnClear", placeholder: "placeholder", matchModeOptions: "matchModeOptions", maxConstraints: "maxConstraints", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", locale: "locale", localeMatcher: "localeMatcher", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping", showButtons: "showButtons", showTime: "showTime" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective }], viewQueries: [{ propertyName: "icon", first: true, predicate: ["icon"], descendants: true }], ngImport: i0, template: `
16990
- <div class="p-column-filter" [ngClass]="{ 'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu' }">
16991
- @if (display === 'row') {
16992
- <p-columnFilterFormElement
16993
- class="p-fluid"
16994
- [type]="type"
16995
- [field]="field"
16996
- [filterConstraint]="$any(dt.filters[field])"
16997
- [filterTemplate]="filterTemplate"
16998
- [placeholder]="placeholder"
16999
- [minFractionDigits]="minFractionDigits"
17000
- [maxFractionDigits]="maxFractionDigits"
17001
- [prefix]="prefix"
17002
- [suffix]="suffix"
17003
- [locale]="locale"
17004
- [localeMatcher]="localeMatcher"
17005
- [currency]="currency"
17006
- [currencyDisplay]="currencyDisplay"
17007
- [useGrouping]="useGrouping"
17008
- [showButtons]="showButtons"
17009
- [showTime]="showTime"
17010
- ></p-columnFilterFormElement>
17011
- }
17012
- @if (showMenuButton) {
17013
- <button
17014
- #icon
17015
- type="button"
17016
- class="p-column-filter-menu-button p-link"
17017
- aria-haspopup="true"
17018
- [attr.aria-expanded]="overlayVisible"
17019
- [ngClass]="{ 'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter() }"
17020
- (click)="toggleMenu()"
17021
- (keydown)="onToggleButtonKeyDown($event)"
17022
- >
17023
- <span class="fa-solid fa-filter p-filter-icon"></span>
17024
- </button>
17025
- }
17026
- @if (showClearButton && display === 'row') {
17027
- <button #icon [ngClass]="{ 'p-hidden-space': !hasRowFilter() }" type="button" class="p-column-filter-clear-button p-link" (click)="clearFilter()">
17028
- <span class="fa-solid fa-filter-circle-xmark"></span>
17029
- </button>
17030
- }
17031
- @if (showMenu && overlayVisible) {
17032
- <div
17033
- [ngClass]="{ 'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu' }"
17034
- (click)="onContentClick()"
17035
- [@overlayAnimation]="'visible'"
17036
- (@overlayAnimation.start)="onOverlayAnimationStart($event)"
17037
- (@overlayAnimation.done)="onOverlayAnimationEnd($event)"
17038
- (keydown.escape)="onEscape()"
17039
- >
17040
- <ng-container *ngTemplateOutlet="headerTemplate; context: { $implicit: field }"></ng-container>
17041
- @if (display === 'row') {
17042
- <ul class="p-column-filter-row-items">
17043
- @for (matchMode of matchModes; track matchMode; let i = $index) {
17044
- <li
17045
- class="p-column-filter-row-item"
17046
- (click)="onRowMatchModeChange(matchMode.value)"
17047
- (keydown)="onRowMatchModeKeyDown($event)"
17048
- (keydown.enter)="this.onRowMatchModeChange(matchMode.value)"
17049
- [ngClass]="{ 'p-highlight': isRowMatchModeSelected(matchMode.value) }"
17050
- [attr.tabindex]="i === 0 ? '0' : null"
17051
- >
17052
- {{ matchMode.label }}
17053
- </li>
17054
- }
17055
- <li class="p-column-filter-separator"></li>
17056
- <li class="p-column-filter-row-item" (click)="onRowClearItemClick()" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="onRowClearItemClick()">{{ noFilterLabel }}</li>
17057
- </ul>
17058
- } @else {
17059
- @if (isShowOperator) {
17060
- <div class="p-column-filter-operator">
17061
- <ui-select [options]="operatorOptions" [ngModel]="operator" (ngModelChange)="onOperatorChange($event)" styleClass="p-column-filter-operator-dropdown"></ui-select>
17062
- </div>
17063
- }
17064
- <div class="p-column-filter-constraints">
17065
- @for (fieldConstraint of fieldConstraints; track fieldConstraint; let i = $index) {
17066
- <div class="p-column-filter-constraint">
17067
- @if (showMatchModes && matchModes) {
17068
- <ui-select [options]="matchModes" [ngModel]="fieldConstraint.matchMode" (ngModelChange)="onMenuMatchModeChange($event, fieldConstraint)" styleClass="p-column-filter-matchmode-dropdown"></ui-select>
17069
- }
17070
- <p-columnFilterFormElement
17071
- [type]="type"
17072
- [field]="field"
17073
- [filterConstraint]="fieldConstraint"
17074
- [filterTemplate]="filterTemplate"
17075
- [placeholder]="placeholder"
17076
- [minFractionDigits]="minFractionDigits"
17077
- [maxFractionDigits]="maxFractionDigits"
17078
- [prefix]="prefix"
17079
- [suffix]="suffix"
17080
- [locale]="locale"
17081
- [localeMatcher]="localeMatcher"
17082
- [currency]="currency"
17083
- [currencyDisplay]="currencyDisplay"
17084
- [useGrouping]="useGrouping"
17085
- [showTime]="showTime"
17086
- ></p-columnFilterFormElement>
17087
- <div>
17088
- @if (showRemoveIcon) {
17089
- <button type="button" smzButton icon="fa-solid fa-trash" class="p-column-filter-remove-button" (click)="removeConstraint(fieldConstraint)" smzRipple [label]="removeRuleButtonLabel" variant="text" severity="danger" size="sm"></button>
17090
- }
17091
- </div>
17092
- </div>
17093
- }
17094
- </div>
17095
- @if (isShowAddConstraint) {
17096
- <div class="p-column-filter-add-rule">
17097
- <button type="button" smzButton [label]="addRuleButtonLabel" icon="fa-solid fa-plus" class="p-column-filter-add-button" (click)="addConstraint()" smzRipple variant="text" size="sm"></button>
17098
- </div>
17099
- }
17100
- <div class="p-column-filter-buttonbar">
17101
- @if (showClearButton) {
17102
- <button type="button" smzButton (click)="clearFilter()" [label]="clearButtonLabel" smzRipple variant="outlined" size="sm"></button>
17103
- }
17104
- @if (showApplyButton) {
17105
- <button type="button" smzButton (click)="applyFilter()" [label]="applyButtonLabel" smzRipple size="sm"></button>
17106
- }
17107
- </div>
17108
- }
17109
- <ng-container *ngTemplateOutlet="footerTemplate; context: { $implicit: field }"></ng-container>
17110
- </div>
17111
- }
17112
- </div>
16999
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ColumnFilter, isStandalone: false, selector: "p-columnFilter", inputs: { field: "field", type: "type", display: "display", showMenu: "showMenu", matchMode: "matchMode", operator: "operator", showOperator: "showOperator", showClearButton: "showClearButton", showApplyButton: "showApplyButton", showMatchModes: "showMatchModes", showAddButton: "showAddButton", hideOnClear: "hideOnClear", placeholder: "placeholder", matchModeOptions: "matchModeOptions", maxConstraints: "maxConstraints", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", locale: "locale", localeMatcher: "localeMatcher", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping", showButtons: "showButtons", showTime: "showTime" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective }], viewQueries: [{ propertyName: "icon", first: true, predicate: ["icon"], descendants: true }], ngImport: i0, template: `
17000
+ <div class="p-column-filter" [ngClass]="{ 'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu' }">
17001
+ @if (display === 'row') {
17002
+ <p-columnFilterFormElement
17003
+ class="p-fluid"
17004
+ [type]="type"
17005
+ [field]="field"
17006
+ [filterConstraint]="$any(dt.filters[field])"
17007
+ [filterTemplate]="filterTemplate"
17008
+ [placeholder]="placeholder"
17009
+ [minFractionDigits]="minFractionDigits"
17010
+ [maxFractionDigits]="maxFractionDigits"
17011
+ [prefix]="prefix"
17012
+ [suffix]="suffix"
17013
+ [locale]="locale"
17014
+ [localeMatcher]="localeMatcher"
17015
+ [currency]="currency"
17016
+ [currencyDisplay]="currencyDisplay"
17017
+ [useGrouping]="useGrouping"
17018
+ [showButtons]="showButtons"
17019
+ [showTime]="showTime"
17020
+ ></p-columnFilterFormElement>
17021
+ }
17022
+ @if (showMenuButton) {
17023
+ <button
17024
+ #icon
17025
+ type="button"
17026
+ class="p-column-filter-menu-button p-link"
17027
+ aria-haspopup="true"
17028
+ [attr.aria-expanded]="overlayVisible"
17029
+ [ngClass]="{ 'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter() }"
17030
+ (click)="toggleMenu()"
17031
+ (keydown)="onToggleButtonKeyDown($event)"
17032
+ >
17033
+ <span class="fa-solid fa-filter p-filter-icon"></span>
17034
+ </button>
17035
+ }
17036
+ @if (showClearButton && display === 'row') {
17037
+ <button #icon [ngClass]="{ 'p-hidden-space': !hasRowFilter() }" type="button" class="p-column-filter-clear-button p-link" (click)="clearFilter()">
17038
+ <span class="fa-solid fa-filter-circle-xmark"></span>
17039
+ </button>
17040
+ }
17041
+ @if (showMenu && overlayVisible) {
17042
+ <div
17043
+ [ngClass]="{ 'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu' }"
17044
+ (click)="onContentClick()"
17045
+ [@overlayAnimation]="'visible'"
17046
+ (@overlayAnimation.start)="onOverlayAnimationStart($event)"
17047
+ (@overlayAnimation.done)="onOverlayAnimationEnd($event)"
17048
+ (keydown.escape)="onEscape()"
17049
+ >
17050
+ <ng-container *ngTemplateOutlet="headerTemplate; context: { $implicit: field }"></ng-container>
17051
+ @if (display === 'row') {
17052
+ <ul class="p-column-filter-row-items">
17053
+ @for (matchMode of matchModes; track matchMode.value; let i = $index) {
17054
+ <li
17055
+ class="p-column-filter-row-item"
17056
+ (click)="onRowMatchModeChange(matchMode.value)"
17057
+ (keydown)="onRowMatchModeKeyDown($event)"
17058
+ (keydown.enter)="this.onRowMatchModeChange(matchMode.value)"
17059
+ [ngClass]="{ 'p-highlight': isRowMatchModeSelected(matchMode.value) }"
17060
+ [attr.tabindex]="i === 0 ? '0' : null"
17061
+ >
17062
+ {{ matchMode.label }}
17063
+ </li>
17064
+ }
17065
+ <li class="p-column-filter-separator"></li>
17066
+ <li class="p-column-filter-row-item" (click)="onRowClearItemClick()" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="onRowClearItemClick()">{{ noFilterLabel }}</li>
17067
+ </ul>
17068
+ } @else {
17069
+ @if (isShowOperator) {
17070
+ <div class="p-column-filter-operator">
17071
+ <ui-select [options]="operatorOptions" [ngModel]="operator" (ngModelChange)="onOperatorChange($event)" styleClass="p-column-filter-operator-dropdown"></ui-select>
17072
+ </div>
17073
+ }
17074
+ <div class="p-column-filter-constraints">
17075
+ @for (fieldConstraint of fieldConstraints; track $index; let i = $index) {
17076
+ <div class="p-column-filter-constraint">
17077
+ @if (showMatchModes && matchModes) {
17078
+ <ui-select [options]="matchModes" [ngModel]="fieldConstraint.matchMode" (ngModelChange)="onMenuMatchModeChange($event, fieldConstraint)" styleClass="p-column-filter-matchmode-dropdown"></ui-select>
17079
+ }
17080
+ <p-columnFilterFormElement
17081
+ [type]="type"
17082
+ [field]="field"
17083
+ [filterConstraint]="fieldConstraint"
17084
+ [filterTemplate]="filterTemplate"
17085
+ [placeholder]="placeholder"
17086
+ [minFractionDigits]="minFractionDigits"
17087
+ [maxFractionDigits]="maxFractionDigits"
17088
+ [prefix]="prefix"
17089
+ [suffix]="suffix"
17090
+ [locale]="locale"
17091
+ [localeMatcher]="localeMatcher"
17092
+ [currency]="currency"
17093
+ [currencyDisplay]="currencyDisplay"
17094
+ [useGrouping]="useGrouping"
17095
+ [showTime]="showTime"
17096
+ ></p-columnFilterFormElement>
17097
+ <div>
17098
+ @if (showRemoveIcon) {
17099
+ <button type="button" smzButton icon="fa-solid fa-trash" class="p-column-filter-remove-button" (click)="removeConstraint(fieldConstraint)" smzRipple [label]="removeRuleButtonLabel" variant="text" severity="danger" size="sm"></button>
17100
+ }
17101
+ </div>
17102
+ </div>
17103
+ }
17104
+ </div>
17105
+ @if (isShowAddConstraint) {
17106
+ <div class="p-column-filter-add-rule">
17107
+ <button type="button" smzButton [label]="addRuleButtonLabel" icon="fa-solid fa-plus" class="p-column-filter-add-button" (click)="addConstraint()" smzRipple variant="text" size="sm"></button>
17108
+ </div>
17109
+ }
17110
+ <div class="p-column-filter-buttonbar">
17111
+ @if (showClearButton) {
17112
+ <button type="button" smzButton (click)="clearFilter()" [label]="clearButtonLabel" smzRipple variant="outlined" size="sm"></button>
17113
+ }
17114
+ @if (showApplyButton) {
17115
+ <button type="button" smzButton (click)="applyFilter()" [label]="applyButtonLabel" smzRipple size="sm"></button>
17116
+ }
17117
+ </div>
17118
+ }
17119
+ <ng-container *ngTemplateOutlet="footerTemplate; context: { $implicit: field }"></ng-container>
17120
+ </div>
17121
+ }
17122
+ </div>
17113
17123
  `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(() => SmzSelectComponent), selector: "ui-select", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "dataKey", "placeholder", "filter", "filterBy", "filterMatchMode", "filterPlaceholder", "showClear", "emptyMessage", "emptyFilterMessage", "styleClass", "inputId", "ariaLabel", "appendTo"], outputs: ["changed", "showed", "hidden"] }, { kind: "directive", type: i0.forwardRef(() => i1$1.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i1$1.NgModel), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i0.forwardRef(() => SmzButtonComponent), selector: "button[smzButton], a[smzButton]", inputs: ["label", "icon", "iconPosition", "severity", "variant", "size", "text", "outlined", "rounded", "loading", "styleClass"] }, { kind: "component", type: i0.forwardRef(() => ColumnFilterFormElement), selector: "p-columnFilterFormElement", inputs: ["field", "type", "filterConstraint", "filterTemplate", "placeholder", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showTime", "showButtons"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('.12s cubic-bezier(0, 0, 0.2, 1)')]), transition(':leave', [animate('.1s linear', style({ opacity: 0 }))])])], encapsulation: i0.ViewEncapsulation.None });
17114
17124
  }
17115
17125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ColumnFilter, decorators: [{
17116
17126
  type: Component,
17117
17127
  args: [{
17118
17128
  selector: 'p-columnFilter',
17119
- template: `
17120
- <div class="p-column-filter" [ngClass]="{ 'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu' }">
17121
- @if (display === 'row') {
17122
- <p-columnFilterFormElement
17123
- class="p-fluid"
17124
- [type]="type"
17125
- [field]="field"
17126
- [filterConstraint]="$any(dt.filters[field])"
17127
- [filterTemplate]="filterTemplate"
17128
- [placeholder]="placeholder"
17129
- [minFractionDigits]="minFractionDigits"
17130
- [maxFractionDigits]="maxFractionDigits"
17131
- [prefix]="prefix"
17132
- [suffix]="suffix"
17133
- [locale]="locale"
17134
- [localeMatcher]="localeMatcher"
17135
- [currency]="currency"
17136
- [currencyDisplay]="currencyDisplay"
17137
- [useGrouping]="useGrouping"
17138
- [showButtons]="showButtons"
17139
- [showTime]="showTime"
17140
- ></p-columnFilterFormElement>
17141
- }
17142
- @if (showMenuButton) {
17143
- <button
17144
- #icon
17145
- type="button"
17146
- class="p-column-filter-menu-button p-link"
17147
- aria-haspopup="true"
17148
- [attr.aria-expanded]="overlayVisible"
17149
- [ngClass]="{ 'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter() }"
17150
- (click)="toggleMenu()"
17151
- (keydown)="onToggleButtonKeyDown($event)"
17152
- >
17153
- <span class="fa-solid fa-filter p-filter-icon"></span>
17154
- </button>
17155
- }
17156
- @if (showClearButton && display === 'row') {
17157
- <button #icon [ngClass]="{ 'p-hidden-space': !hasRowFilter() }" type="button" class="p-column-filter-clear-button p-link" (click)="clearFilter()">
17158
- <span class="fa-solid fa-filter-circle-xmark"></span>
17159
- </button>
17160
- }
17161
- @if (showMenu && overlayVisible) {
17162
- <div
17163
- [ngClass]="{ 'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu' }"
17164
- (click)="onContentClick()"
17165
- [@overlayAnimation]="'visible'"
17166
- (@overlayAnimation.start)="onOverlayAnimationStart($event)"
17167
- (@overlayAnimation.done)="onOverlayAnimationEnd($event)"
17168
- (keydown.escape)="onEscape()"
17169
- >
17170
- <ng-container *ngTemplateOutlet="headerTemplate; context: { $implicit: field }"></ng-container>
17171
- @if (display === 'row') {
17172
- <ul class="p-column-filter-row-items">
17173
- @for (matchMode of matchModes; track matchMode; let i = $index) {
17174
- <li
17175
- class="p-column-filter-row-item"
17176
- (click)="onRowMatchModeChange(matchMode.value)"
17177
- (keydown)="onRowMatchModeKeyDown($event)"
17178
- (keydown.enter)="this.onRowMatchModeChange(matchMode.value)"
17179
- [ngClass]="{ 'p-highlight': isRowMatchModeSelected(matchMode.value) }"
17180
- [attr.tabindex]="i === 0 ? '0' : null"
17181
- >
17182
- {{ matchMode.label }}
17183
- </li>
17184
- }
17185
- <li class="p-column-filter-separator"></li>
17186
- <li class="p-column-filter-row-item" (click)="onRowClearItemClick()" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="onRowClearItemClick()">{{ noFilterLabel }}</li>
17187
- </ul>
17188
- } @else {
17189
- @if (isShowOperator) {
17190
- <div class="p-column-filter-operator">
17191
- <ui-select [options]="operatorOptions" [ngModel]="operator" (ngModelChange)="onOperatorChange($event)" styleClass="p-column-filter-operator-dropdown"></ui-select>
17192
- </div>
17193
- }
17194
- <div class="p-column-filter-constraints">
17195
- @for (fieldConstraint of fieldConstraints; track fieldConstraint; let i = $index) {
17196
- <div class="p-column-filter-constraint">
17197
- @if (showMatchModes && matchModes) {
17198
- <ui-select [options]="matchModes" [ngModel]="fieldConstraint.matchMode" (ngModelChange)="onMenuMatchModeChange($event, fieldConstraint)" styleClass="p-column-filter-matchmode-dropdown"></ui-select>
17199
- }
17200
- <p-columnFilterFormElement
17201
- [type]="type"
17202
- [field]="field"
17203
- [filterConstraint]="fieldConstraint"
17204
- [filterTemplate]="filterTemplate"
17205
- [placeholder]="placeholder"
17206
- [minFractionDigits]="minFractionDigits"
17207
- [maxFractionDigits]="maxFractionDigits"
17208
- [prefix]="prefix"
17209
- [suffix]="suffix"
17210
- [locale]="locale"
17211
- [localeMatcher]="localeMatcher"
17212
- [currency]="currency"
17213
- [currencyDisplay]="currencyDisplay"
17214
- [useGrouping]="useGrouping"
17215
- [showTime]="showTime"
17216
- ></p-columnFilterFormElement>
17217
- <div>
17218
- @if (showRemoveIcon) {
17219
- <button type="button" smzButton icon="fa-solid fa-trash" class="p-column-filter-remove-button" (click)="removeConstraint(fieldConstraint)" smzRipple [label]="removeRuleButtonLabel" variant="text" severity="danger" size="sm"></button>
17220
- }
17221
- </div>
17222
- </div>
17223
- }
17224
- </div>
17225
- @if (isShowAddConstraint) {
17226
- <div class="p-column-filter-add-rule">
17227
- <button type="button" smzButton [label]="addRuleButtonLabel" icon="fa-solid fa-plus" class="p-column-filter-add-button" (click)="addConstraint()" smzRipple variant="text" size="sm"></button>
17228
- </div>
17229
- }
17230
- <div class="p-column-filter-buttonbar">
17231
- @if (showClearButton) {
17232
- <button type="button" smzButton (click)="clearFilter()" [label]="clearButtonLabel" smzRipple variant="outlined" size="sm"></button>
17233
- }
17234
- @if (showApplyButton) {
17235
- <button type="button" smzButton (click)="applyFilter()" [label]="applyButtonLabel" smzRipple size="sm"></button>
17236
- }
17237
- </div>
17238
- }
17239
- <ng-container *ngTemplateOutlet="footerTemplate; context: { $implicit: field }"></ng-container>
17240
- </div>
17241
- }
17242
- </div>
17129
+ template: `
17130
+ <div class="p-column-filter" [ngClass]="{ 'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu' }">
17131
+ @if (display === 'row') {
17132
+ <p-columnFilterFormElement
17133
+ class="p-fluid"
17134
+ [type]="type"
17135
+ [field]="field"
17136
+ [filterConstraint]="$any(dt.filters[field])"
17137
+ [filterTemplate]="filterTemplate"
17138
+ [placeholder]="placeholder"
17139
+ [minFractionDigits]="minFractionDigits"
17140
+ [maxFractionDigits]="maxFractionDigits"
17141
+ [prefix]="prefix"
17142
+ [suffix]="suffix"
17143
+ [locale]="locale"
17144
+ [localeMatcher]="localeMatcher"
17145
+ [currency]="currency"
17146
+ [currencyDisplay]="currencyDisplay"
17147
+ [useGrouping]="useGrouping"
17148
+ [showButtons]="showButtons"
17149
+ [showTime]="showTime"
17150
+ ></p-columnFilterFormElement>
17151
+ }
17152
+ @if (showMenuButton) {
17153
+ <button
17154
+ #icon
17155
+ type="button"
17156
+ class="p-column-filter-menu-button p-link"
17157
+ aria-haspopup="true"
17158
+ [attr.aria-expanded]="overlayVisible"
17159
+ [ngClass]="{ 'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter() }"
17160
+ (click)="toggleMenu()"
17161
+ (keydown)="onToggleButtonKeyDown($event)"
17162
+ >
17163
+ <span class="fa-solid fa-filter p-filter-icon"></span>
17164
+ </button>
17165
+ }
17166
+ @if (showClearButton && display === 'row') {
17167
+ <button #icon [ngClass]="{ 'p-hidden-space': !hasRowFilter() }" type="button" class="p-column-filter-clear-button p-link" (click)="clearFilter()">
17168
+ <span class="fa-solid fa-filter-circle-xmark"></span>
17169
+ </button>
17170
+ }
17171
+ @if (showMenu && overlayVisible) {
17172
+ <div
17173
+ [ngClass]="{ 'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu' }"
17174
+ (click)="onContentClick()"
17175
+ [@overlayAnimation]="'visible'"
17176
+ (@overlayAnimation.start)="onOverlayAnimationStart($event)"
17177
+ (@overlayAnimation.done)="onOverlayAnimationEnd($event)"
17178
+ (keydown.escape)="onEscape()"
17179
+ >
17180
+ <ng-container *ngTemplateOutlet="headerTemplate; context: { $implicit: field }"></ng-container>
17181
+ @if (display === 'row') {
17182
+ <ul class="p-column-filter-row-items">
17183
+ @for (matchMode of matchModes; track matchMode.value; let i = $index) {
17184
+ <li
17185
+ class="p-column-filter-row-item"
17186
+ (click)="onRowMatchModeChange(matchMode.value)"
17187
+ (keydown)="onRowMatchModeKeyDown($event)"
17188
+ (keydown.enter)="this.onRowMatchModeChange(matchMode.value)"
17189
+ [ngClass]="{ 'p-highlight': isRowMatchModeSelected(matchMode.value) }"
17190
+ [attr.tabindex]="i === 0 ? '0' : null"
17191
+ >
17192
+ {{ matchMode.label }}
17193
+ </li>
17194
+ }
17195
+ <li class="p-column-filter-separator"></li>
17196
+ <li class="p-column-filter-row-item" (click)="onRowClearItemClick()" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="onRowClearItemClick()">{{ noFilterLabel }}</li>
17197
+ </ul>
17198
+ } @else {
17199
+ @if (isShowOperator) {
17200
+ <div class="p-column-filter-operator">
17201
+ <ui-select [options]="operatorOptions" [ngModel]="operator" (ngModelChange)="onOperatorChange($event)" styleClass="p-column-filter-operator-dropdown"></ui-select>
17202
+ </div>
17203
+ }
17204
+ <div class="p-column-filter-constraints">
17205
+ @for (fieldConstraint of fieldConstraints; track $index; let i = $index) {
17206
+ <div class="p-column-filter-constraint">
17207
+ @if (showMatchModes && matchModes) {
17208
+ <ui-select [options]="matchModes" [ngModel]="fieldConstraint.matchMode" (ngModelChange)="onMenuMatchModeChange($event, fieldConstraint)" styleClass="p-column-filter-matchmode-dropdown"></ui-select>
17209
+ }
17210
+ <p-columnFilterFormElement
17211
+ [type]="type"
17212
+ [field]="field"
17213
+ [filterConstraint]="fieldConstraint"
17214
+ [filterTemplate]="filterTemplate"
17215
+ [placeholder]="placeholder"
17216
+ [minFractionDigits]="minFractionDigits"
17217
+ [maxFractionDigits]="maxFractionDigits"
17218
+ [prefix]="prefix"
17219
+ [suffix]="suffix"
17220
+ [locale]="locale"
17221
+ [localeMatcher]="localeMatcher"
17222
+ [currency]="currency"
17223
+ [currencyDisplay]="currencyDisplay"
17224
+ [useGrouping]="useGrouping"
17225
+ [showTime]="showTime"
17226
+ ></p-columnFilterFormElement>
17227
+ <div>
17228
+ @if (showRemoveIcon) {
17229
+ <button type="button" smzButton icon="fa-solid fa-trash" class="p-column-filter-remove-button" (click)="removeConstraint(fieldConstraint)" smzRipple [label]="removeRuleButtonLabel" variant="text" severity="danger" size="sm"></button>
17230
+ }
17231
+ </div>
17232
+ </div>
17233
+ }
17234
+ </div>
17235
+ @if (isShowAddConstraint) {
17236
+ <div class="p-column-filter-add-rule">
17237
+ <button type="button" smzButton [label]="addRuleButtonLabel" icon="fa-solid fa-plus" class="p-column-filter-add-button" (click)="addConstraint()" smzRipple variant="text" size="sm"></button>
17238
+ </div>
17239
+ }
17240
+ <div class="p-column-filter-buttonbar">
17241
+ @if (showClearButton) {
17242
+ <button type="button" smzButton (click)="clearFilter()" [label]="clearButtonLabel" smzRipple variant="outlined" size="sm"></button>
17243
+ }
17244
+ @if (showApplyButton) {
17245
+ <button type="button" smzButton (click)="applyFilter()" [label]="applyButtonLabel" smzRipple size="sm"></button>
17246
+ }
17247
+ </div>
17248
+ }
17249
+ <ng-container *ngTemplateOutlet="footerTemplate; context: { $implicit: field }"></ng-container>
17250
+ </div>
17251
+ }
17252
+ </div>
17243
17253
  `,
17244
17254
  animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('.12s cubic-bezier(0, 0, 0.2, 1)')]), transition(':leave', [animate('.1s linear', style({ opacity: 0 }))])])],
17245
17255
  encapsulation: ViewEncapsulation.None,
@@ -17342,16 +17352,54 @@ class ColumnFilterFormElement {
17342
17352
  this.dt._filter();
17343
17353
  };
17344
17354
  }
17355
+ pendingFilter = null;
17356
+ /**
17357
+ * Sem botao "Aplicar" (padrao dos filtros do smz), qualquer mudanca de valor filtra a tabela:
17358
+ * texto e numero com debounce, data e booleano na hora. Com o botao, so booleano/vazio filtram (comportamento do PrimeNG).
17359
+ */
17345
17360
  onModelChange(value) {
17346
17361
  this.filterConstraint.value = value;
17347
17362
  if (this.type === 'boolean' || value === '') {
17363
+ this.cancelPendingFilter();
17348
17364
  this.dt._filter();
17349
17365
  }
17366
+ else if (!this.colFilter.showApplyButton) {
17367
+ this.cancelPendingFilter();
17368
+ if (this.type === 'date') {
17369
+ this.dt._filter();
17370
+ }
17371
+ else {
17372
+ this.pendingFilter = setTimeout(() => {
17373
+ this.pendingFilter = null;
17374
+ this.dt._filter();
17375
+ this.dt.cd?.markForCheck();
17376
+ }, 300);
17377
+ }
17378
+ }
17350
17379
  }
17351
17380
  onTextInputEnterKeyDown(event) {
17381
+ this.cancelPendingFilter();
17352
17382
  this.dt._filter();
17353
17383
  event.preventDefault();
17354
17384
  }
17385
+ cancelPendingFilter() {
17386
+ if (this.pendingFilter !== null) {
17387
+ clearTimeout(this.pendingFilter);
17388
+ this.pendingFilter = null;
17389
+ }
17390
+ }
17391
+ /** Fechar o painel antes do debounce terminar nao pode perder o filtro digitado: aplica o que estava pendente. */
17392
+ ngOnDestroy() {
17393
+ if (this.pendingFilter !== null) {
17394
+ this.cancelPendingFilter();
17395
+ // Estamos no meio de uma deteccao de mudancas (o painel acabou de fechar): filtra depois dela e agenda uma nova.
17396
+ const table = this.dt;
17397
+ queueMicrotask(() => {
17398
+ table._filter();
17399
+ table.cd.markForCheck();
17400
+ });
17401
+ }
17402
+ }
17355
17403
  onNumericInputKeyDown(event) {
17356
17404
  if (event.key === 'Enter') {
17357
17405
  this.dt._filter();
@@ -17359,94 +17407,94 @@ class ColumnFilterFormElement {
17359
17407
  }
17360
17408
  }
17361
17409
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ColumnFilterFormElement, deps: [{ token: Table }, { token: ColumnFilter }], target: i0.ɵɵFactoryTarget.Component });
17362
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ColumnFilterFormElement, isStandalone: false, selector: "p-columnFilterFormElement", inputs: { field: "field", type: "type", filterConstraint: "filterConstraint", filterTemplate: "filterTemplate", placeholder: "placeholder", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", locale: "locale", localeMatcher: "localeMatcher", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping", showTime: "showTime", showButtons: "showButtons" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
17363
- @if (filterTemplate) {
17364
- <ng-container
17365
- *ngTemplateOutlet="
17366
- filterTemplate;
17367
- context: {
17368
- $implicit: filterConstraint.value,
17369
- filterCallback: filterCallback,
17370
- type: type,
17371
- field: field,
17372
- filterConstraint: filterConstraint,
17373
- placeholder: placeholder,
17374
- minFractionDigits: minFractionDigits,
17375
- maxFractionDigits: maxFractionDigits,
17376
- prefix: prefix,
17377
- suffix: suffix,
17378
- locale: locale,
17379
- localeMatcher: localeMatcher,
17380
- currency: currency,
17381
- currencyDisplay: currencyDisplay,
17382
- useGrouping: useGrouping,
17383
- showButtons: showButtons
17384
- }
17385
- "
17386
- ></ng-container>
17387
- } @else {
17388
- @switch (type) {
17389
- @case ('text') {
17390
- <input type="text" smzInputText [value]="filterConstraint?.value" (input)="onModelChange($any($event.target).value)" (keydown.enter)="onTextInputEnterKeyDown($any($event))" [attr.placeholder]="placeholder" />
17391
- }
17392
- @case ('numeric') {
17393
- <ui-input-number [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" (keyDown)="onNumericInputKeyDown($event)" [showButtons]="showButtons" [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix" [placeholder]="placeholder" [mode]="currency ? 'currency' : 'decimal'" [locale]="locale" [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></ui-input-number>
17394
- }
17395
- @case ('boolean') {
17396
- <ui-checkbox [ngModel]="filterConstraint?.value" [binary]="false" (ngModelChange)="onModelChange($event)"></ui-checkbox>
17397
- }
17398
- @case ('date') {
17399
- <ui-date-picker [placeholder]="placeholder" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" [showTime]="showTime"></ui-date-picker>
17400
- }
17401
- }
17402
- }
17410
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ColumnFilterFormElement, isStandalone: false, selector: "p-columnFilterFormElement", inputs: { field: "field", type: "type", filterConstraint: "filterConstraint", filterTemplate: "filterTemplate", placeholder: "placeholder", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", locale: "locale", localeMatcher: "localeMatcher", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping", showTime: "showTime", showButtons: "showButtons" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
17411
+ @if (filterTemplate) {
17412
+ <ng-container
17413
+ *ngTemplateOutlet="
17414
+ filterTemplate;
17415
+ context: {
17416
+ $implicit: filterConstraint.value,
17417
+ filterCallback: filterCallback,
17418
+ type: type,
17419
+ field: field,
17420
+ filterConstraint: filterConstraint,
17421
+ placeholder: placeholder,
17422
+ minFractionDigits: minFractionDigits,
17423
+ maxFractionDigits: maxFractionDigits,
17424
+ prefix: prefix,
17425
+ suffix: suffix,
17426
+ locale: locale,
17427
+ localeMatcher: localeMatcher,
17428
+ currency: currency,
17429
+ currencyDisplay: currencyDisplay,
17430
+ useGrouping: useGrouping,
17431
+ showButtons: showButtons
17432
+ }
17433
+ "
17434
+ ></ng-container>
17435
+ } @else {
17436
+ @switch (type) {
17437
+ @case ('text') {
17438
+ <input type="text" smzInputText [value]="filterConstraint?.value" (input)="onModelChange($any($event.target).value)" (keydown.enter)="onTextInputEnterKeyDown($any($event))" [attr.placeholder]="placeholder" />
17439
+ }
17440
+ @case ('numeric') {
17441
+ <ui-input-number [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" (keyDown)="onNumericInputKeyDown($event)" [showButtons]="showButtons" [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix" [placeholder]="placeholder" [mode]="currency ? 'currency' : 'decimal'" [locale]="locale" [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></ui-input-number>
17442
+ }
17443
+ @case ('boolean') {
17444
+ <ui-checkbox [ngModel]="filterConstraint?.value" [binary]="false" (ngModelChange)="onModelChange($event)"></ui-checkbox>
17445
+ }
17446
+ @case ('date') {
17447
+ <ui-date-picker [placeholder]="placeholder" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" [showTime]="showTime"></ui-date-picker>
17448
+ }
17449
+ }
17450
+ }
17403
17451
  `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => SmzInputTextDirective), selector: "input[smzInputText]", inputs: ["size", "invalid"] }, { kind: "component", type: i0.forwardRef(() => SmzCheckboxComponent), selector: "ui-checkbox", inputs: ["label", "inputId", "value", "binary", "name"], outputs: ["changed"] }, { kind: "directive", type: i0.forwardRef(() => i1$1.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i1$1.NgModel), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i0.forwardRef(() => SmzDatePickerComponent), selector: "ui-date-picker", inputs: ["selectionMode", "dateFormat", "showTime", "timeOnly", "showSeconds", "hourFormat", "minDate", "maxDate", "showButtonBar", "showIcon", "showOnFocus", "keepInvalid", "readonlyInput", "placeholder", "inputId", "styleClass", "appendTo", "touchUI", "focusTrap"], outputs: ["selected", "cleared", "opened", "closed", "blurred"] }, { kind: "component", type: i0.forwardRef(() => SmzInputNumberComponent), selector: "ui-input-number", inputs: ["mode", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "min", "max", "step", "prefix", "suffix", "showButtons", "showClear", "allowEmpty", "placeholder", "readonly", "inputId"], outputs: ["inputed", "keyDown", "blurred", "focused"] }], encapsulation: i0.ViewEncapsulation.None });
17404
17452
  }
17405
17453
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ColumnFilterFormElement, decorators: [{
17406
17454
  type: Component,
17407
17455
  args: [{
17408
17456
  selector: 'p-columnFilterFormElement',
17409
- template: `
17410
- @if (filterTemplate) {
17411
- <ng-container
17412
- *ngTemplateOutlet="
17413
- filterTemplate;
17414
- context: {
17415
- $implicit: filterConstraint.value,
17416
- filterCallback: filterCallback,
17417
- type: type,
17418
- field: field,
17419
- filterConstraint: filterConstraint,
17420
- placeholder: placeholder,
17421
- minFractionDigits: minFractionDigits,
17422
- maxFractionDigits: maxFractionDigits,
17423
- prefix: prefix,
17424
- suffix: suffix,
17425
- locale: locale,
17426
- localeMatcher: localeMatcher,
17427
- currency: currency,
17428
- currencyDisplay: currencyDisplay,
17429
- useGrouping: useGrouping,
17430
- showButtons: showButtons
17431
- }
17432
- "
17433
- ></ng-container>
17434
- } @else {
17435
- @switch (type) {
17436
- @case ('text') {
17437
- <input type="text" smzInputText [value]="filterConstraint?.value" (input)="onModelChange($any($event.target).value)" (keydown.enter)="onTextInputEnterKeyDown($any($event))" [attr.placeholder]="placeholder" />
17438
- }
17439
- @case ('numeric') {
17440
- <ui-input-number [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" (keyDown)="onNumericInputKeyDown($event)" [showButtons]="showButtons" [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix" [placeholder]="placeholder" [mode]="currency ? 'currency' : 'decimal'" [locale]="locale" [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></ui-input-number>
17441
- }
17442
- @case ('boolean') {
17443
- <ui-checkbox [ngModel]="filterConstraint?.value" [binary]="false" (ngModelChange)="onModelChange($event)"></ui-checkbox>
17444
- }
17445
- @case ('date') {
17446
- <ui-date-picker [placeholder]="placeholder" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" [showTime]="showTime"></ui-date-picker>
17447
- }
17448
- }
17449
- }
17457
+ template: `
17458
+ @if (filterTemplate) {
17459
+ <ng-container
17460
+ *ngTemplateOutlet="
17461
+ filterTemplate;
17462
+ context: {
17463
+ $implicit: filterConstraint.value,
17464
+ filterCallback: filterCallback,
17465
+ type: type,
17466
+ field: field,
17467
+ filterConstraint: filterConstraint,
17468
+ placeholder: placeholder,
17469
+ minFractionDigits: minFractionDigits,
17470
+ maxFractionDigits: maxFractionDigits,
17471
+ prefix: prefix,
17472
+ suffix: suffix,
17473
+ locale: locale,
17474
+ localeMatcher: localeMatcher,
17475
+ currency: currency,
17476
+ currencyDisplay: currencyDisplay,
17477
+ useGrouping: useGrouping,
17478
+ showButtons: showButtons
17479
+ }
17480
+ "
17481
+ ></ng-container>
17482
+ } @else {
17483
+ @switch (type) {
17484
+ @case ('text') {
17485
+ <input type="text" smzInputText [value]="filterConstraint?.value" (input)="onModelChange($any($event.target).value)" (keydown.enter)="onTextInputEnterKeyDown($any($event))" [attr.placeholder]="placeholder" />
17486
+ }
17487
+ @case ('numeric') {
17488
+ <ui-input-number [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" (keyDown)="onNumericInputKeyDown($event)" [showButtons]="showButtons" [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix" [placeholder]="placeholder" [mode]="currency ? 'currency' : 'decimal'" [locale]="locale" [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></ui-input-number>
17489
+ }
17490
+ @case ('boolean') {
17491
+ <ui-checkbox [ngModel]="filterConstraint?.value" [binary]="false" (ngModelChange)="onModelChange($event)"></ui-checkbox>
17492
+ }
17493
+ @case ('date') {
17494
+ <ui-date-picker [placeholder]="placeholder" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" [showTime]="showTime"></ui-date-picker>
17495
+ }
17496
+ }
17497
+ }
17450
17498
  `,
17451
17499
  encapsulation: ViewEncapsulation.None,
17452
17500
  host: {
@@ -17998,6 +18046,8 @@ class SmzColumnFilterComponent {
17998
18046
  showAddButton = true;
17999
18047
  showMatchModes = true;
18000
18048
  showOperator = true;
18049
+ /** Padrao `false`: todos os filtros de coluna do smz aplicam na hora (sem botao "Aplicar"), de forma consistente. */
18050
+ showApplyButton = false;
18001
18051
  type = 'text';
18002
18052
  showTime = false;
18003
18053
  documentClickListener;
@@ -18040,7 +18090,7 @@ class SmzColumnFilterComponent {
18040
18090
  }
18041
18091
  }
18042
18092
  isOutsideClicked(event) {
18043
- return !(this.columnFilter.overlay.isSameNode(event.target) || this.columnFilter.overlay.contains(event.target));
18093
+ return !(isInsideCdkOverlay(event) || this.columnFilter.overlay.isSameNode(event.target) || this.columnFilter.overlay.contains(event.target));
18044
18094
  }
18045
18095
  hide() {
18046
18096
  this.columnFilter.hide();
@@ -18051,7 +18101,7 @@ class SmzColumnFilterComponent {
18051
18101
  this.unbindDocumentClickListener();
18052
18102
  }
18053
18103
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzColumnFilterComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
18054
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzColumnFilterComponent, isStandalone: false, selector: "smz-column-filter", inputs: { currency: "currency", display: "display", field: "field", matchMode: "matchMode", showAddButton: "showAddButton", showMatchModes: "showMatchModes", showOperator: "showOperator", type: "type", showTime: "showTime" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective }], viewQueries: [{ propertyName: "columnFilter", first: true, predicate: ColumnFilter, descendants: true }], ngImport: i0, template: `
18104
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzColumnFilterComponent, isStandalone: false, selector: "smz-column-filter", inputs: { currency: "currency", display: "display", field: "field", matchMode: "matchMode", showAddButton: "showAddButton", showMatchModes: "showMatchModes", showOperator: "showOperator", showApplyButton: "showApplyButton", type: "type", showTime: "showTime" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective }], viewQueries: [{ propertyName: "columnFilter", first: true, predicate: ColumnFilter, descendants: true }], ngImport: i0, template: `
18055
18105
  <div (click)="bindDocumentClickListener()">
18056
18106
  <p-columnFilter
18057
18107
  [currency]="currency"
@@ -18061,6 +18111,7 @@ class SmzColumnFilterComponent {
18061
18111
  [showAddButton]="showAddButton"
18062
18112
  [showMatchModes]="showMatchModes"
18063
18113
  [showOperator]="showOperator"
18114
+ [showApplyButton]="showApplyButton"
18064
18115
  [type]="type">
18065
18116
  <!-- TODO: [showTime]="showTime" -->
18066
18117
 
@@ -18093,6 +18144,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
18093
18144
  [showAddButton]="showAddButton"
18094
18145
  [showMatchModes]="showMatchModes"
18095
18146
  [showOperator]="showOperator"
18147
+ [showApplyButton]="showApplyButton"
18096
18148
  [type]="type">
18097
18149
  <!-- TODO: [showTime]="showTime" -->
18098
18150
 
@@ -18132,6 +18184,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
18132
18184
  type: Input
18133
18185
  }], showOperator: [{
18134
18186
  type: Input
18187
+ }], showApplyButton: [{
18188
+ type: Input
18135
18189
  }], type: [{
18136
18190
  type: Input
18137
18191
  }], showTime: [{
@@ -22505,7 +22559,7 @@ class SmzTableComponent {
22505
22559
  this.tableHelper.clear(this.tableKey);
22506
22560
  }
22507
22561
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTableComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: TableEditableService }, { token: TableFormsService }, { token: TableHelperService }, { token: i1$3.Store }, { token: SmzExcelService }], target: i0.ɵɵFactoryTarget.Component });
22508
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzTableComponent, isStandalone: false, selector: "smz-ui-table", inputs: { state: "state", items: "items", loading: "loading" }, outputs: { selectionChange: "selectionChange", filterChange: "filterChange", columnVisibilityChange: "columnVisibilityChange", create: "create", update: "update", delete: "delete" }, host: { properties: { "attr.data-testid": "this.hostTestId" } }, providers: [TableEditableService, TableFormsService], queries: [{ propertyName: "templates", predicate: SmzTemplateDirective }], viewQueries: [{ propertyName: "table", first: true, predicate: ["dt"], descendants: true }, { propertyName: "columnMultiselect", first: true, predicate: ["columnMultiselect"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (state | tableContext; as context) {\n @if ((context.state.emptyFeedback != null && (context.state.emptyFeedback.extraInfo || context.state.emptyFeedback.image || context.state.emptyFeedback.actionButtons)) && (items != null && items.length === 0) && context.state.emptyFeedback.isFeatured) {\n <smz-data-info\n [attr.data-testid]=\"buildTableTestId('empty')\"\n [image]=\"context.state.emptyFeedback.image\"\n [message]=\"context.state.emptyFeedback.message\"\n [callbackInfo]=\"context.state.emptyFeedback.extraInfo\"\n [actions]=\"context.state.emptyFeedback.actionButtons\">\n <ng-template smzTemplate=\"actions\">\n <ng-container *ngTemplateOutlet=\"emptyActionsTemplate; context: { $implicit: {} }\"></ng-container>\n </ng-template>\n </smz-data-info>\n } @else {\n <ng-container *ngVar=\"state.source?.items$ != null ? (state.source.items$ | async) : null as observableSource\">\n <ng-container *ngVar=\"state.source?.signalItems != null ? state.source.signalItems() : null as signalSource\">\n @if (((observableSource ?? signalSource ?? items) | cloneTableItems : context: tableKey: context.state.rowExpansion.sincronize); as clonedData) {\n <p-table #dt\n dataKey=\"id\"\n editMode=\"row\"\n [stripedRows]=\"context.state.styles.striped\"\n [value]=\"clonedData.items\"\n [(selection)]=\"selectedItems\"\n [tableStyleClass]=\"context.state.styles.tableStyleClass\"\n [size]=\"context.state.styles.size === 'extra-small' ? 'small' : context.state.styles.size === 'small' ? 'small' : context.state.styles.size === 'large' ? 'large' : undefined\"\n [class]=\"'p-datatable-smz-ui-table' + (context.state.styles.showGrid ? ' p-datatable-gridlines' : '') + (context.state.styles.size === 'extra-small' ? ' p-datatable-xs' : '') + (context.state.styles.size === 'small' ? ' p-datatable-sm' : '') + (context.state.styles.size === 'large' ? ' p-datatable-lg' : '')\"\n [rowHover]=\"context.state.actions.rowBehavior.hoverable\"\n [rows]=\"context.state.pagination.rows\"\n [first]=\"context.state.pagination.state.first\"\n [showCurrentPageReport]=\"context.state.pagination.pageReport.isVisible\"\n [rowsPerPageOptions]=\"context.state.pagination.rowsPerPageOptions\"\n [loading]=\"loading || isViewportInitializing\"\n [style.visibility]=\"isViewportInitializing ? 'hidden' : null\"\n [paginator]=\"context.state.pagination.isVisible\"\n paginatorDropdownAppendTo=\"body\"\n [currentPageReportTemplate]=\"context.state.locale.paginator.template\"\n [sortField]=\"context.state.sort.field\"\n [sortMode]=\"context.state.sort.mode\"\n [sortOrder]=\"context.state.sort.order\"\n [multiSortMeta]=\"context.state.sort.multiSortMeta\"\n [scrollable]=\"context.state.viewport.scrollable\"\n [scrollHeight]=\"context.state.viewport.scrollHeight\"\n [filterDelay]=\"0\"\n [globalFilterFields]=\"context.globalFilter\"\n [columns]=\"context.visibleColumns\"\n [frozenColumns]=\"context.frozenColumns\"\n [frozenWidth]=\"context.state.frozen.isEnabled ? context.state.frozen.width : null\"\n [resizableColumns]=\"context.state.viewport.resizableColumns\"\n [columnResizeMode]=\"context.state.viewport.columnResizeMode\"\n (onPage)=\"onPage($event)\"\n (onFilter)=\"onFilter($event)\"\n (selectionChange)=\"emitSelection($event)\"\n >\n @if (context.state.caption.isVisible) {\n <ng-template smzTemplate=\"caption\">\n <div class=\"grid grid-nogutter items-center gap-2\" [attr.data-testid]=\"buildTableTestId('caption')\" [ngClass]=\"'justify-' + context.state.caption.toolbarAlignment\">\n @if (context.state.caption.title != null) {\n <div class=\"col database-title\" [attr.data-testid]=\"buildTableTestId('title')\" [innerHTML]=\"context.state.caption.title\"></div>\n }\n <ng-container *ngTemplateOutlet=\"captionTemplate; context: { $implicit: dt }\"></ng-container>\n <smz-table-caption-buttons [buttons]=\"context.state.caption.buttons\" [tableTestId]=\"state.tableTestId\"></smz-table-caption-buttons>\n @if (context.state.caption.exportToPdf.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('export-pdf')\" [label]=\"context.state.locale.exportToPdf.label\" icon=\"fa-solid fa-file-pdf\" (click)=\"exportToPdf(context, clonedData.items)\" [disabled]=\"clonedData.showSkeleton\" variant=\"outlined\"></button>\n }\n @if (context.state.caption.exportToExcel.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('export-excel')\" [label]=\"context.state.locale.exportToExcel.label\" icon=\"fa-solid fa-file-excel\" (click)=\"exportToExcel(table, context, clonedData.items)\" [disabled]=\"clonedData.showSkeleton\" variant=\"outlined\"></button>\n }\n @if (context.state.editable.creation.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('create')\" [label]=\"context.state.editable.creation.buttonLabel\" icon=\"fa-solid fa-plus\" (click)=\"editableService.onRowCreateInit(table, context.columns)\" [disabled]=\"clonedData.showSkeleton || editableService.isEditing || editableService.isCreating || context.state.editable.creation.isButtonDisabled\" variant=\"outlined\"></button>\n }\n @if (context.state.caption.rowSelection.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('row-selection')\" [label]=\"context.state.locale.rowSelection.label\" icon=\"fa-solid fa-check-double\" (click)=\"onRowSelection(context)\" [disabled]=\"clonedData.showSkeleton\" variant=\"outlined\"></button>\n }\n @if (context.state.rowExpansion.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('row-expansion')\" [label]=\"context.state.rowExpansion.label\" icon=\"fa-solid fa-list\" (click)=\"onRowExpansion(context)\" [disabled]=\"clonedData.showSkeleton\" variant=\"outlined\"></button>\n }\n @if (context.state.caption.clearFilters.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('clear-filters')\" [label]=\"context.state.locale.clearFilters.label\" icon=\"fa-solid fa-filter-circle-xmark\" (click)=\"clear(table, context)\" [disabled]=\"clonedData.showSkeleton\" variant=\"outlined\"></button>\n }\n @if (context.state.caption.columnVisibility.showDropdownSelector) {\n <ui-multi-select #columnMultiselect [attr.data-testid]=\"buildTableTestId('column-visibility')\" class=\"ml-2 col-12 md:col-2\" styleClass=\"w-full\" appendTo=\"body\" [options]=\"context.hideableColumns\" [(ngModel)]=\"selectedColumns\" [placeholder]=\"context.state.locale.columnVisibility.placeholder\" [selectedItemsLabel]=\"context.state.locale.columnVisibility.selectedItemsLabel\" optionLabel=\"name\" dataKey=\"field\" optionLabel=\"header\" [filter]=\"true\" (panelHide)=\"updateColumnsVisibility(true)\" [smzTooltip]=\"context.state.locale.columnVisibility.pTooltip\">\n </ui-multi-select>\n }\n @if (context.state.caption.globalFilter.isVisible) {\n <ui-icon-field class=\"col-12\" [ngClass]=\"{ 'md:col-2': !context.state.caption.globalFilter.expanded }\">\n <ui-input-icon styleClass=\"fa-solid fa-magnifying-glass\"></ui-input-icon>\n <input #inputGlobal [(ngModel)]=\"globalSearchInput\" smzInputText type=\"text\" styleClass=\"database-global-search\" (input)=\"updateGlobalFilter(inputGlobal.value)\" [disabled]=\"clonedData.showSkeleton\" [placeholder]=\"context.state.locale.globalFilter.placeholder\" [attr.data-testid]=\"buildTableTestId('search')\" />\n </ui-icon-field>\n }\n </div>\n @if (toolbarTemplate != null) {\n <div class=\"grid grid-nogutter items-center mt-2\" [ngClass]=\"'justify-' + context.state.caption.toolbarAlignment\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate; context: { $implicit: dt }\"></ng-container>\n </div>\n }\n </ng-template>\n }\n <ng-template smzTemplate=\"header\" let-columns>\n <tr [ngClass]=\"{ 'invisible-header': !context.state.header.isVisible }\">\n @if (context.state.caption.rowSelection.isEnabled) {\n <th [ngStyle]=\"context.state.caption.rowSelection.ngStyle\">\n @if (!context.state.actions.batchActions.isVisible) {\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n }\n </th>\n }\n @if (context.state.rowExpansion.isEnabled) {\n <th [ngStyle]=\"context.state.rowExpansion.ngStyle\"></th>\n }\n @for (col of columns; track col.field) {\n @if (context.state.viewport.resizableColumns) {\n @if (col.isOrderable) {\n <th [pSortableColumn]=\"col.sortField\" pResizableColumn [attr.data-testid]=\"buildColumnTestId(col.field)\" [ngStyle]=\"col.content.ngStyle\" [ngClass]=\"col.headerStyleClass\">\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </th>\n }\n @if (!col.isOrderable) {\n <th pResizableColumn [attr.data-testid]=\"buildColumnTestId(col.field)\" [ngStyle]=\"col.content.ngStyle\" [ngClass]=\"col.headerStyleClass\">\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </th>\n }\n } @else {\n @if (col.isOrderable) {\n <th [pSortableColumn]=\"col.sortField\" [attr.data-testid]=\"buildColumnTestId(col.field)\" [ngStyle]=\"col.content.ngStyle\" [ngClass]=\"col.headerStyleClass\">\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </th>\n }\n @if (!col.isOrderable) {\n <th [attr.data-testid]=\"buildColumnTestId(col.field)\" [ngStyle]=\"col.content.ngStyle\" [ngClass]=\"col.headerStyleClass\">\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </th>\n }\n }\n <ng-template #headerContent>\n <div class=\"flex justify-start items-center\">\n <span class=\"mr-1\">{{ col.header }}</span>\n @if (col.showHeaderActions) {\n <smz-table-header-actions clickStopPropagation class=\"ml-1 mt-1\" [col]=\"col\"></smz-table-header-actions>\n }\n @if (!clonedData.showSkeleton && col.isOrderable) {\n <p-sortIcon [field]=\"col.sortField\"></p-sortIcon>\n }\n @if (!clonedData.showSkeleton) {\n @switch (col.filter.type) {\n @case (filterTypes.currency) {\n <smz-column-filter type=\"numeric\" currency=\"BRL\" [field]=\"col.filterField\"></smz-column-filter>\n }\n @case (filterTypes.numeric) {\n <smz-column-filter type=\"numeric\" [field]=\"col.filterField\"></smz-column-filter>\n }\n @case (filterTypes.date) {\n <smz-column-filter type=\"date\" [field]=\"col.filterField\" [showTime]=\"col.filter.showTime\"></smz-column-filter>\n }\n @case (filterTypes.text) {\n <smz-column-filter type=\"text\" [field]=\"col.filterField\"></smz-column-filter>\n }\n @case (filterTypes.boolean) {\n <smz-column-filter type=\"boolean\" [field]=\"col.filterField\"></smz-column-filter>\n }\n @case (filterTypes.dropdown) {\n @if (col.filterField | filterObject; as filterField) {\n <smz-column-filter [field]=\"filterField + '.id'\" matchMode=\"dropdown\" [showMatchModes]=\"false\" [showOperator]=\"false\" [showAddButton]=\"false\">\n <ng-template smzTemplate=\"header\">\n <div class=\"px-3 pt-3 pb-0\">\n <span class=\"p-text-bold\">{{ col.header }}</span>\n </div>\n </ng-template>\n <ng-template smzTemplate=\"filter\" let-value let-filter=\"filter\">\n <ui-select appendTo=\"body\" [ngModel]=\"value\" [options]=\"(clonedData.items != null ? clonedData.items : []) | uniqueFilter : filterField + '.id' : filterField : null : 'name' : false\" [placeholder]=\"context.state.locale.dropdownFilter.placeholder\" (changed)=\"filter($event.value)\" optionLabel=\"name\" dataKey=\"id\"></ui-select>\n </ng-template>\n </smz-column-filter>\n }\n }\n @case (filterTypes.multiselect) {\n @if (col.filterField | filterObject; as filterField) {\n <smz-column-filter [field]=\"filterField\" matchMode=\"in\" [showMatchModes]=\"false\" [showOperator]=\"false\" [showAddButton]=\"false\">\n <ng-template smzTemplate=\"header\">\n <div class=\"px-3 pt-3 pb-0\">\n <span class=\"p-text-bold\">{{ col.header }}</span>\n </div>\n </ng-template>\n <ng-template smzTemplate=\"filter\" let-value let-filter=\"filter\">\n <ui-multi-select [ngModel]=\"value\" [options]=\"(clonedData.items != null ? clonedData.items : []) | uniqueFilter : filterField + '.id' : filterField : null : 'name' : false\" [placeholder]=\"context.state.locale.dropdownFilter.placeholder\" (changed)=\"filter($event.value)\" optionLabel=\"name\" dataKey=\"id\"></ui-multi-select>\n </ng-template>\n </smz-column-filter>\n }\n }\n @case (filterTypes.multiselect_array) {\n @if (col.filterField | filterObject; as filterField) {\n <smz-column-filter [field]=\"filterField\" matchMode=\"array-some\" [showMatchModes]=\"false\" [showOperator]=\"false\" [showAddButton]=\"false\">\n <ng-template smzTemplate=\"header\">\n <div class=\"px-3 pt-3 pb-0\">\n <span class=\"p-text-bold\">{{ col.header }}</span>\n </div>\n </ng-template>\n <ng-template smzTemplate=\"filter\" let-value let-filter=\"filter\">\n <ui-multi-select [ngModel]=\"value\" [options]=\"(clonedData.items != null ? clonedData.items : []) | uniqueFilter : filterField + '.id' : filterField : null : 'name' : true\" [placeholder]=\"context.state.locale.dropdownFilter.placeholder\" (changed)=\"filter($event.value)\" optionLabel=\"name\" dataKey=\"id\" [maxSelectedLabels]=\"2\" [selectedItemsLabel]=\"'{0}'\"></ui-multi-select>\n </ng-template>\n </smz-column-filter>\n }\n }\n @case (filterTypes.multiselect_string) {\n @if (col.filterField | filterObject; as filterField) {\n <smz-column-filter [field]=\"filterField\" matchMode=\"multiselectByString\" [showMatchModes]=\"false\" [showOperator]=\"false\" [showAddButton]=\"false\">\n <ng-template smzTemplate=\"header\">\n <div class=\"px-3 pt-3 pb-0\">\n <span class=\"p-text-bold\">{{ col.header }}</span>\n </div>\n </ng-template>\n <ng-template smzTemplate=\"filter\" let-value let-filter=\"filter\">\n <ui-multi-select [ngModel]=\"value\" [options]=\"(clonedData.items != null ? clonedData.items : []) | uniqueFilter : filterField : filterField : null : true : false : false\" [placeholder]=\"context.state.locale.dropdownFilter.placeholder\" (changed)=\"filter($event.value)\" [maxSelectedLabels]=\"2\" [selectedItemsLabel]=\"'{0}'\"></ui-multi-select>\n </ng-template>\n </smz-column-filter>\n }\n }\n }\n }\n @if (context.state.caption.columnVisibility.showColumnHideButton) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-eye-slash\" (click)=\"hideColumn(col, context)\" [rounded]=\"true\" variant=\"text\" styleClass=\"p-button-plain\"></button>\n }\n </div>\n </ng-template>\n }\n @if (context.state.actions.menu.isVisible || context.state.actions.customActions.isVisible|| context.state.editable.isEditable) {\n <th [ngStyle]=\"context.state.editable.isEditable ? context.state.editable.ngStyle : context.state.actions.customActions.ngStyle\"></th>\n }\n </tr>\n @if (context.state.actions.batchActions.isVisible) {\n <tr>\n <th [attr.colspan]=\"columns.length + ((context.state.actions.menu.isVisible || context.state.actions.customActions.isVisible || context.state.editable.isEditable) ? 1 : 0) + (context.state.caption.rowSelection.isEnabled ? 1 : 0) + (context.state.rowExpansion.isEnabled ? 1 : 0)\"\n [ngStyle]=\"context.state.actions.customActions.ngStyle\" class=\"px-0\">\n <div class=\"grid grid-nogutter items-center justify-start\">\n <p-tableHeaderCheckbox class=\"mr-4\"></p-tableHeaderCheckbox>\n @if (selectedItems?.length > 0) {\n @for (batchItem of context.state.actions.batchActions.items; track batchItem.label) {\n @if (batchItem.visible) {\n <button smzButton [label]=\"batchItem.label\" class=\"animate__animated animate__fadeIn\" [styleClass]=\"'p-button-plain ' + (batchItem.styleClass)\" [icon]=\"batchItem.icon\" (click)=\"batchItem.command(selectedItems); selectedItems = [];\" [disabled]=\"batchItem.disabled\" [smzTooltip]=\"batchItem.tooltip\" [rounded]=\"true\" variant=\"text\"></button>\n }\n }\n }\n </div>\n </th>\n </tr>\n }\n </ng-template>\n <ng-template smzTemplate=\"body\" let-item let-editing=\"editing\" let-rowIndex=\"rowIndex\" let-columns=\"columns\">\n <tr #editableRowElement\n [pEditableRow]=\"item\"\n tableItemAction\n [isClickable]=\"context.state.actions.rowBehavior.isClickable\"\n [callback]=\"context.state.actions.rowBehavior.clickCallback\"\n [expandRowOnClick]=\"context.state.actions.rowBehavior.expandRowOnClick\"\n [item]=\"item\"\n class=\"p-selectable-row\"\n [attr.data-testid]=\"buildRowTestId(item, rowIndex)\"\n [ngClass]=\"{ 'highlight-row': item?.id === state.actions.rowBehavior.highlights, 'preserve-in-small': state.actions.rowBehavior.preserveLayoutInSmallDevices }\"\n >\n @if (context.state.caption.rowSelection.isEnabled && !clonedData.showSkeleton) {\n <td\n clickStopPropagation\n class=\"{{ state.actions.rowBehavior.cellStyleClass }}\"\n [ngClass]=\"{ 'opacity-50 pointer-events-none': editableService.context[item.id]?.hasErrors || editableService.context[item.id]?.isLoading }\"\n [ngStyle]=\"context.state.caption.rowSelection.ngStyle\"\n >\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n }\n @if (context.state.rowExpansion.isEnabled && !clonedData.showSkeleton) {\n <td\n clickStopPropagation\n class=\"{{ state.actions.rowBehavior.cellStyleClass }}\"\n [ngClass]=\"{ 'opacity-50 pointer-events-none': editableService.context[item.id]?.hasErrors || editableService.context[item.id]?.isLoading, 'grid grid-nogutter justify-start items-center gap-2': context.state.rowExpansion.highlightNewItems && item._isNew }\"\n [ngStyle]=\"context.state.rowExpansion.ngStyle\"\n >\n <button smzButton type=\"button\" class=\"smz-table-row-expansion-toggle\" [icon]=\"item._isExpanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\" (click)=\"item._isExpanded = !item._isExpanded; item._isNew = false\" variant=\"text\" [rounded]=\"true\" size=\"sm\"></button>\n @if (context.state.rowExpansion.highlightNewItems && item._isNew) {\n <div class=\"rounded bg-cyan-400 text-sm text-white px-2 py-0 smz-table-new-tag\" (click)=\"item._isNew = false\">{{ context.state.rowExpansion.highlightLabel }}</div>\n }\n </td>\n }\n @for (col of columns; track col.field) {\n @if (clonedData.showSkeleton) {\n <td class=\"{{ state.actions.rowBehavior.cellStyleClass }}\" [ngStyle]=\"col.content.ngStyle\"><ui-skeleton width=\"100%\" height=\"1rem\"></ui-skeleton></td>\n } @else {\n <td class=\"{{ state.actions.rowBehavior.cellStyleClass }}\" [attr.data-testid]=\"buildCellTestId(item, rowIndex, col.field)\" [ngClass]=\"{ 'opacity-50 pointer-events-none': editableService.context[item.id]?.hasErrors || editableService.context[item.id]?.isLoading }\" [ngStyle]=\"col.content.ngStyle\">\n <span class=\"p-column-title\">{{ col.header }}</span>\n <p-cellEditor>\n <!-- CELULAR COM EDITOR -->\n <ng-template smzTemplate=\"input\">\n @switch (col.editable.type) {\n @case (editableTypes.none) {\n <smz-table-content class=\"cursor-default\" [ngClass]=\"col.content.contentStyleClass\" [col]=\"col\" [contentTypes]=\"contentTypes\" [item]=\"item\" [rowIndex]=\"rowIndex\" [contentTemplate]=\"contentTemplate\"></smz-table-content>\n }\n @case (editableTypes.custom) {\n <ng-container *ngTemplateOutlet=\"editableTemplate; context: { $implicit: item, col: col }\"></ng-container>\n }\n <!-- INPUT TEXT -->\n @case (editableTypes.text) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <input smzInputText type=\"text\" [formControl]=\"$any(control)\" style=\"width: 100%;\">\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n <!-- INPUT NUMBER -->\n @case (editableTypes.number) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <ui-input-number *ngVar=\"col.editable.data as numberData\" [formControl]=\"$any(control)\" [mode]=\"numberData.mode\" [minFractionDigits]=\"numberData.minFractionDigits\" [maxFractionDigits]=\"numberData.maxFractionDigits\" [currency]=\"numberData.currency\" [useGrouping]=\"numberData.useGrouping\" [allowEmpty]=\"numberData.allowEmpty\" [showClear]=\"numberData.showClear\" [showButtons]=\"numberData.showButtons\" [prefix]=\"numberData.prefix\" [suffix]=\"numberData.suffix\">\n </ui-input-number>\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n <!-- INPUT SWITCH -->\n @case (editableTypes.switch) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <ui-toggle-switch [formControl]=\"$any(control)\"></ui-toggle-switch>\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n <!-- INPUT TEXT AREA -->\n @case (editableTypes.area) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <textarea smzTextarea type=\"text\" [formControl]=\"$any(control)\" [rows]=\"$any(col.editable.data).rows\" required style=\"width: 100%;\"></textarea>\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n <!-- INPUT DROPDOWN -->\n @case (editableTypes.dropdown) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <ui-select appendTo=\"body\" [formControl]=\"$any(control)\" styleClass=\"w-full\" [options]=\"col.editable.data | editableSource\" optionLabel=\"name\" dataKey=\"id\" [placeholder]=\"$any(col.editable.data).placeholder\" [showClear]=\"!col.editable.validatorsPreset?.isRequired\" [filter]=\"true\"></ui-select>\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n <!-- INPUT CALENDAR -->\n @case (editableTypes.calendar) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <ui-date-picker [formControl]=\"$any(control)\" appendTo=\"body\" styleClass=\"w-full\" [ngClass]=\"{ 'pl-5': !control.valid }\"></ui-date-picker>\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n }\n </ng-template>\n <!-- CELULAR COM CONTE\u00DADO -->\n <ng-template smzTemplate=\"output\">\n <smz-table-content\n [col]=\"col\"\n [smzTooltip]=\"col.content.tooltip != null ? col.content.tooltip(item) : null\"\n tooltipPosition=\"left\"\n [ngClass]=\"col.content.contentStyleClass\" [contentTypes]=\"contentTypes\" [item]=\"item\" [rowIndex]=\"rowIndex\" [contentTemplate]=\"contentTemplate\">\n </smz-table-content>\n </ng-template>\n </p-cellEditor>\n </td>\n }\n }\n @if (context.state.actions.menu.isVisible || context.state.actions.customActions.isVisible || context.state.editable.isEditable) {\n <td [ngStyle]=\"context.state.actions.customActions.ngStyle\" class=\"px-0\">\n <div class=\"grid grid-nogutter items-center justify-center\">\n @if (clonedData.showSkeleton) {\n <div class=\"w-full\">\n <ui-skeleton width=\"100%\" height=\"1rem\"></ui-skeleton>\n </div>\n } @else {\n <!-- SEM EDITAR -->\n @if (!editing) {\n @if (context.state.editable.update.isButtonVisible) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-pencil\" (click)=\"editableService.onRowEditInit(item)\" class=\"mx-1\" [disabled]=\"editableService.isEditing || editableService.isCreating || context.state.editable.update.isButtonDisabled || (!context.state.editable.update.condition(item))\" pInitEditableRow [rounded]=\"true\" variant=\"text\"></button>\n }\n @if (context.state.editable.remove.isButtonVisible) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-trash\" (click)=\"editableService.onRowRemove($event, table, item)\" class=\"mx-1\" [disabled]=\"editableService.isEditing || editableService.isCreating || context.state.editable.remove.isButtonDisabled || (!context.state.editable.remove.condition(item))\" [rounded]=\"true\" variant=\"text\" severity=\"secondary\"></button>\n }\n }\n <!-- EDITANDO -->\n @if (editing) {\n @if (editableService.context[item.id]; as editableContext) {\n <!-- COM LOADING -->\n @if (editableContext.isLoading) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-rotate fa-spin\" [disabled]=\"true\" class=\"mr-2\" [rounded]=\"true\" variant=\"text\" styleClass=\"p-button-info\"></button>\n }\n <!-- SEM LOADING -->\n @if (!editableContext.isLoading) {\n <!-- EDITANDO -->\n @if (!editableContext.hasErrors) {\n <!-- CRIANDO -->\n @if (item._context?.isCreating) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-check\" (click)=\"editableService.onRowCreateSave($event, table, editableRowElement, item)\" [disabled]=\"!editableContext.hasChanged || !editableService.context[item.id]?.form.valid\" class=\"mr-2\" [rounded]=\"true\" variant=\"text\" severity=\"success\"></button>\n <button smzButton type=\"button\" icon=\"fa-solid fa-xmark\" (click)=\"editableService.onRowCreateCancel($event, table, item)\" [rounded]=\"true\" variant=\"text\" severity=\"danger\"></button>\n }\n <!-- ATUALIZANDO -->\n @if (item._context?.isUpdating) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-check\" (click)=\"editableService.onRowEditSave($event, table, editableRowElement, item)\" [disabled]=\"!editableContext.hasChanged || !editableService.context[item.id]?.form.valid\" class=\"mr-2\" [rounded]=\"true\" variant=\"text\" severity=\"success\"></button>\n <button smzButton type=\"button\" icon=\"fa-solid fa-xmark\" (click)=\"editableService.onRowEditCancel($event, table, item)\" [rounded]=\"true\" variant=\"text\" severity=\"danger\"></button>\n }\n }\n <!-- COM ERRORS -->\n @if (editableContext.hasErrors) {\n <ui-popover #errorsOverlay appendTo=\"body\" [style]=\"{ width: '450px' }\">\n <div [innerHtml]=\"editableContext.errors | contentErrors\"></div>\n </ui-popover>\n <button smzButton type=\"button\" icon=\"fas fa-exclamation-triangle\" [disabled]=\"false\" class=\"mr-2\" (click)=\"errorsOverlay.toggle($event)\" size=\"sm\" [rounded]=\"true\" variant=\"text\" severity=\"danger\"></button>\n <!-- CRIANDO -->\n @if (item._context?.isCreating) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-xmark\" (click)=\"editableService.onRowCreateCancel($event, table, item)\" size=\"sm\" [rounded]=\"true\" variant=\"text\" severity=\"danger\"></button>\n }\n <!-- ATUALIZANDO -->\n @if (item._context?.isUpdating) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-xmark\" (click)=\"editableService.onRowEditCancel($event, table, item)\" size=\"sm\" [rounded]=\"true\" variant=\"text\" severity=\"danger\"></button>\n }\n }\n }\n }\n }\n <!-- CUSTOM MENU -->\n @if (context.state.actions.customActions.isVisible && !editing) {\n <ng-container *ngTemplateOutlet=\"actionsTemplate; context: { $implicit: item }\"></ng-container>\n }\n <!-- MENU -->\n @if (context.state.actions.menu.isVisible && !editing) {\n <smz-menu [callback]=\"context.state.actions.menu.callback\" [items]=\"context.state.actions.menu.items\" [data]=\"item\" [behavior]=\"context.state.actions.menu.behavior\" [ngClass]=\"{ 'ml-2': context.state.actions.customActions.isVisible }\" [icon]=\"context.state.actions.menu.styles.icon\" [styleClass]=\"context.state.actions.menu.styles.styleClass\" [buttonClass]=\"context.state.actions.menu.styles.buttonClass\" [testId]=\"buildRowMenuTestId(item, rowIndex)\"></smz-menu>\n }\n }\n </div>\n </td>\n }\n </tr>\n @if (item?._isExpanded) {\n <tr>\n <td [attr.colspan]=\"columns.length + ((context.state.actions.menu.isVisible || context.state.actions.customActions.isVisible || context.state.editable.isEditable) ? 1 : 0) + (context.state.caption.rowSelection.isEnabled ? 1 : 0) + (context.state.rowExpansion.isEnabled ? 1 : 0)\">\n <ng-container *ngTemplateOutlet=\"rowContentTemplate; context: { $implicit: item }\"></ng-container>\n </td>\n </tr>\n }\n </ng-template>\n <ng-template smzTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length + ((context.state.actions.menu.isVisible || context.state.actions.customActions.isVisible || context.state.editable.isEditable) ? 1 : 0) + (context.state.caption.rowSelection.isEnabled ? 1 : 0) + (context.state.rowExpansion.isEnabled ? 1 : 0)\" [ngStyle]=\"{ 'text-align': 'center' }\">\n <div [innerHtml]=\"context.state.emptyFeedback.message\"></div>\n @if (context.state.caption.clearFilters.isButtonVisible && hasFilters()) {\n <button smzButton [label]=\"context.state.locale.clearFilters.label\" class=\"mt-3\" icon=\"fa-solid fa-filter-circle-xmark\" (click)=\"clear(table, context)\" variant=\"outlined\"></button>\n }\n </td>\n </tr>\n </ng-template>\n </p-table>\n }\n </ng-container>\n </ng-container>\n }\n} @else {\n @if (emptyStateTemplate != null) {\n <ng-container *ngTemplateOutlet=\"emptyStateTemplate; context: { $implicit: {} }\"></ng-container>\n }\n}\n\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.SmzTemplateDirective, selector: "ng-template[smzTemplate]", inputs: ["smzTemplate"] }, { kind: "component", type: 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", "stripedRows", "size", "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: SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "component", type: CellEditor, selector: "p-cellEditor" }, { kind: "component", type: SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "directive", type: InitEditableRow, selector: "[pInitEditableRow]" }, { kind: "component", type: i2.SmzButtonComponent, selector: "button[smzButton], a[smzButton]", inputs: ["label", "icon", "iconPosition", "severity", "variant", "size", "text", "outlined", "rounded", "loading", "styleClass"] }, { kind: "directive", type: i2.SmzInputTextDirective, selector: "input[smzInputText]", inputs: ["size", "invalid"] }, { kind: "component", type: i2.SmzMultiSelectComponent, selector: "ui-multi-select", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "dataKey", "placeholder", "filter", "filterBy", "filterMatchMode", "filterPlaceholder", "showClear", "showToggleAll", "emptyMessage", "emptyFilterMessage", "maxSelectedLabels", "selectedItemsLabel", "panelStyle", "styleClass", "inputId", "autofocusFilter", "appendTo", "display"], outputs: ["changed", "panelHide", "panelShow"] }, { kind: "component", type: i2.SmzSelectComponent, selector: "ui-select", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "dataKey", "placeholder", "filter", "filterBy", "filterMatchMode", "filterPlaceholder", "showClear", "emptyMessage", "emptyFilterMessage", "styleClass", "inputId", "ariaLabel", "appendTo"], outputs: ["changed", "showed", "hidden"] }, { kind: "component", type: i2.SmzDatePickerComponent, selector: "ui-date-picker", inputs: ["selectionMode", "dateFormat", "showTime", "timeOnly", "showSeconds", "hourFormat", "minDate", "maxDate", "showButtonBar", "showIcon", "showOnFocus", "keepInvalid", "readonlyInput", "placeholder", "inputId", "styleClass", "appendTo", "touchUI", "focusTrap"], outputs: ["selected", "cleared", "opened", "closed", "blurred"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TableItemActionsDirective, selector: "[tableItemAction]", inputs: ["isClickable", "item", "callback", "expandRowOnClick"] }, { kind: "directive", type: ClickStopPropagationDirective, selector: "[clickStopPropagation]" }, { kind: "component", type: SmzDataInfoComponent, selector: "smz-data-info", inputs: ["image", "message", "actions", "callbackInfo", "callbackLabel"], outputs: ["clicked"] }, { kind: "directive", type: i2.SmzTooltipDirective, selector: "[smzTooltip]", inputs: ["smzTooltip", "tooltipPosition", "showDelay", "hideDelay", "tooltipEvent", "escape", "tooltipStyleClass", "tooltipZIndex", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "component", type: i2.SmzSkeletonComponent, selector: "ui-skeleton", inputs: ["shape", "width", "height"] }, { kind: "directive", type: i2.SmzTextareaDirective, selector: "textarea[smzTextarea]", inputs: ["invalid", "autoResize"] }, { kind: "component", type: i2.SmzPopoverComponent, selector: "ui-popover", inputs: ["style", "styleClass", "dismissable", "autoZIndex", "appendTo"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i2.SmzToggleSwitchComponent, selector: "ui-toggle-switch", inputs: ["name"], outputs: ["changed"] }, { kind: "component", type: i2.SmzInputNumberComponent, selector: "ui-input-number", inputs: ["mode", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "min", "max", "step", "prefix", "suffix", "showButtons", "showClear", "allowEmpty", "placeholder", "readonly", "inputId"], outputs: ["inputed", "keyDown", "blurred", "focused"] }, { kind: "component", type: SmzMenuComponent, selector: "smz-menu", inputs: ["items", "callback", "data", "buttonClass", "styleClass", "icon", "behavior", "testId"] }, { kind: "directive", type: NgVar, selector: "[ngVar]", inputs: ["ngVar"] }, { kind: "component", type: i2.SmzIconFieldComponent, selector: "ui-icon-field" }, { kind: "component", type: i2.SmzInputIconComponent, selector: "ui-input-icon", inputs: ["styleClass"] }, { kind: "component", type: SmzColumnFilterComponent, selector: "smz-column-filter", inputs: ["currency", "display", "field", "matchMode", "showAddButton", "showMatchModes", "showOperator", "type", "showTime"] }, { kind: "component", type: SmzTableValidationMessagesComponent, selector: "smz-table-validation-messages", inputs: ["errors", "messages", "isFormInvalid", "isFormDirty"] }, { kind: "component", type: SmzTableContentComponent, selector: "smz-table-content", inputs: ["col", "contentTypes", "item", "rowIndex", "contentTemplate"] }, { kind: "component", type: SmzTableCaptionButtonsComponent, selector: "smz-table-caption-buttons", inputs: ["buttons", "tableTestId"] }, { kind: "component", type: SmzTableHeaderActionsComponent, selector: "smz-table-header-actions", inputs: ["col"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: UniqueFilterPipe, name: "uniqueFilter" }, { kind: "pipe", type: SmzTableContextPipe, name: "tableContext" }, { kind: "pipe", type: SmzFilterObjectPipe, name: "filterObject" }, { kind: "pipe", type: SmzCloneTableItemsPipe, name: "cloneTableItems" }, { kind: "pipe", type: SmzEditableSourcePipe, name: "editableSource" }, { kind: "pipe", type: SmzContentErrorsPipe, name: "contentErrors" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22562
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzTableComponent, isStandalone: false, selector: "smz-ui-table", inputs: { state: "state", items: "items", loading: "loading" }, outputs: { selectionChange: "selectionChange", filterChange: "filterChange", columnVisibilityChange: "columnVisibilityChange", create: "create", update: "update", delete: "delete" }, host: { properties: { "attr.data-testid": "this.hostTestId" } }, providers: [TableEditableService, TableFormsService], queries: [{ propertyName: "templates", predicate: SmzTemplateDirective }], viewQueries: [{ propertyName: "table", first: true, predicate: ["dt"], descendants: true }, { propertyName: "columnMultiselect", first: true, predicate: ["columnMultiselect"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (state | tableContext; as context) {\n @if ((context.state.emptyFeedback != null && (context.state.emptyFeedback.extraInfo || context.state.emptyFeedback.image || context.state.emptyFeedback.actionButtons)) && (items != null && items.length === 0) && context.state.emptyFeedback.isFeatured) {\n <smz-data-info\n [attr.data-testid]=\"buildTableTestId('empty')\"\n [image]=\"context.state.emptyFeedback.image\"\n [message]=\"context.state.emptyFeedback.message\"\n [callbackInfo]=\"context.state.emptyFeedback.extraInfo\"\n [actions]=\"context.state.emptyFeedback.actionButtons\">\n <ng-template smzTemplate=\"actions\">\n <ng-container *ngTemplateOutlet=\"emptyActionsTemplate; context: { $implicit: {} }\"></ng-container>\n </ng-template>\n </smz-data-info>\n } @else {\n <ng-container *ngVar=\"state.source?.items$ != null ? (state.source.items$ | async) : null as observableSource\">\n <ng-container *ngVar=\"state.source?.signalItems != null ? state.source.signalItems() : null as signalSource\">\n @if (((observableSource ?? signalSource ?? items) | cloneTableItems : context: tableKey: context.state.rowExpansion.sincronize); as clonedData) {\n <p-table #dt\n dataKey=\"id\"\n editMode=\"row\"\n [stripedRows]=\"context.state.styles.striped\"\n [value]=\"clonedData.items\"\n [(selection)]=\"selectedItems\"\n [tableStyleClass]=\"context.state.styles.tableStyleClass\"\n [size]=\"context.state.styles.size === 'extra-small' ? 'small' : context.state.styles.size === 'small' ? 'small' : context.state.styles.size === 'large' ? 'large' : undefined\"\n [class]=\"'p-datatable-smz-ui-table' + (context.state.styles.showGrid ? ' p-datatable-gridlines' : '') + (context.state.styles.size === 'extra-small' ? ' p-datatable-xs' : '') + (context.state.styles.size === 'small' ? ' p-datatable-sm' : '') + (context.state.styles.size === 'large' ? ' p-datatable-lg' : '')\"\n [rowHover]=\"context.state.actions.rowBehavior.hoverable\"\n [rows]=\"context.state.pagination.rows\"\n [first]=\"context.state.pagination.state.first\"\n [showCurrentPageReport]=\"context.state.pagination.pageReport.isVisible\"\n [rowsPerPageOptions]=\"context.state.pagination.rowsPerPageOptions\"\n [loading]=\"loading || isViewportInitializing\"\n [style.visibility]=\"isViewportInitializing ? 'hidden' : null\"\n [paginator]=\"context.state.pagination.isVisible\"\n paginatorDropdownAppendTo=\"body\"\n [currentPageReportTemplate]=\"context.state.locale.paginator.template\"\n [sortField]=\"context.state.sort.field\"\n [sortMode]=\"context.state.sort.mode\"\n [sortOrder]=\"context.state.sort.order\"\n [multiSortMeta]=\"context.state.sort.multiSortMeta\"\n [scrollable]=\"context.state.viewport.scrollable\"\n [scrollHeight]=\"context.state.viewport.scrollHeight\"\n [filterDelay]=\"0\"\n [globalFilterFields]=\"context.globalFilter\"\n [columns]=\"context.visibleColumns\"\n [frozenColumns]=\"context.frozenColumns\"\n [frozenWidth]=\"context.state.frozen.isEnabled ? context.state.frozen.width : null\"\n [resizableColumns]=\"context.state.viewport.resizableColumns\"\n [columnResizeMode]=\"context.state.viewport.columnResizeMode\"\n (onPage)=\"onPage($event)\"\n (onFilter)=\"onFilter($event)\"\n (selectionChange)=\"emitSelection($event)\"\n >\n @if (context.state.caption.isVisible) {\n <ng-template smzTemplate=\"caption\">\n <div class=\"grid grid-nogutter items-center gap-2\" [attr.data-testid]=\"buildTableTestId('caption')\" [ngClass]=\"'justify-' + context.state.caption.toolbarAlignment\">\n @if (context.state.caption.title != null) {\n <div class=\"col database-title\" [attr.data-testid]=\"buildTableTestId('title')\" [innerHTML]=\"context.state.caption.title\"></div>\n }\n <ng-container *ngTemplateOutlet=\"captionTemplate; context: { $implicit: dt }\"></ng-container>\n <smz-table-caption-buttons [buttons]=\"context.state.caption.buttons\" [tableTestId]=\"state.tableTestId\"></smz-table-caption-buttons>\n @if (context.state.caption.exportToPdf.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('export-pdf')\" [label]=\"context.state.locale.exportToPdf.label\" icon=\"fa-solid fa-file-pdf\" (click)=\"exportToPdf(context, clonedData.items)\" [disabled]=\"clonedData.showSkeleton\" variant=\"outlined\"></button>\n }\n @if (context.state.caption.exportToExcel.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('export-excel')\" [label]=\"context.state.locale.exportToExcel.label\" icon=\"fa-solid fa-file-excel\" (click)=\"exportToExcel(table, context, clonedData.items)\" [disabled]=\"clonedData.showSkeleton\" variant=\"outlined\"></button>\n }\n @if (context.state.editable.creation.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('create')\" [label]=\"context.state.editable.creation.buttonLabel\" icon=\"fa-solid fa-plus\" (click)=\"editableService.onRowCreateInit(table, context.columns)\" [disabled]=\"clonedData.showSkeleton || editableService.isEditing || editableService.isCreating || context.state.editable.creation.isButtonDisabled\" variant=\"outlined\"></button>\n }\n @if (context.state.caption.rowSelection.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('row-selection')\" [label]=\"context.state.locale.rowSelection.label\" icon=\"fa-solid fa-check-double\" (click)=\"onRowSelection(context)\" [disabled]=\"clonedData.showSkeleton\" variant=\"outlined\"></button>\n }\n @if (context.state.rowExpansion.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('row-expansion')\" [label]=\"context.state.rowExpansion.label\" icon=\"fa-solid fa-list\" (click)=\"onRowExpansion(context)\" [disabled]=\"clonedData.showSkeleton\" variant=\"outlined\"></button>\n }\n @if (context.state.caption.clearFilters.isButtonVisible) {\n <button smzButton [attr.data-testid]=\"buildTableTestId('clear-filters')\" [label]=\"context.state.locale.clearFilters.label\" icon=\"fa-solid fa-filter-circle-xmark\" (click)=\"clear(table, context)\" [disabled]=\"clonedData.showSkeleton\" variant=\"outlined\"></button>\n }\n @if (context.state.caption.columnVisibility.showDropdownSelector) {\n <ui-multi-select #columnMultiselect [attr.data-testid]=\"buildTableTestId('column-visibility')\" class=\"ml-2 col-12 md:col-2\" styleClass=\"w-full\" appendTo=\"body\" [options]=\"context.hideableColumns\" [(ngModel)]=\"selectedColumns\" [placeholder]=\"context.state.locale.columnVisibility.placeholder\" [selectedItemsLabel]=\"context.state.locale.columnVisibility.selectedItemsLabel\" optionLabel=\"name\" dataKey=\"field\" optionLabel=\"header\" [filter]=\"true\" (panelHide)=\"updateColumnsVisibility(true)\" [smzTooltip]=\"context.state.locale.columnVisibility.pTooltip\">\n </ui-multi-select>\n }\n @if (context.state.caption.globalFilter.isVisible) {\n <ui-icon-field class=\"col-12\" [ngClass]=\"{ 'md:col-2': !context.state.caption.globalFilter.expanded }\">\n <ui-input-icon styleClass=\"fa-solid fa-magnifying-glass\"></ui-input-icon>\n <input #inputGlobal [(ngModel)]=\"globalSearchInput\" smzInputText type=\"text\" styleClass=\"database-global-search\" (input)=\"updateGlobalFilter(inputGlobal.value)\" [disabled]=\"clonedData.showSkeleton\" [placeholder]=\"context.state.locale.globalFilter.placeholder\" [attr.data-testid]=\"buildTableTestId('search')\" />\n </ui-icon-field>\n }\n </div>\n @if (toolbarTemplate != null) {\n <div class=\"grid grid-nogutter items-center mt-2\" [ngClass]=\"'justify-' + context.state.caption.toolbarAlignment\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate; context: { $implicit: dt }\"></ng-container>\n </div>\n }\n </ng-template>\n }\n <ng-template smzTemplate=\"header\" let-columns>\n <tr [ngClass]=\"{ 'invisible-header': !context.state.header.isVisible }\">\n @if (context.state.caption.rowSelection.isEnabled) {\n <th [ngStyle]=\"context.state.caption.rowSelection.ngStyle\">\n @if (!context.state.actions.batchActions.isVisible) {\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n }\n </th>\n }\n @if (context.state.rowExpansion.isEnabled) {\n <th [ngStyle]=\"context.state.rowExpansion.ngStyle\"></th>\n }\n @for (col of columns; track col.field) {\n @if (context.state.viewport.resizableColumns) {\n @if (col.isOrderable) {\n <th [pSortableColumn]=\"col.sortField\" pResizableColumn [attr.data-testid]=\"buildColumnTestId(col.field)\" [ngStyle]=\"col.content.ngStyle\" [ngClass]=\"col.headerStyleClass\">\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </th>\n }\n @if (!col.isOrderable) {\n <th pResizableColumn [attr.data-testid]=\"buildColumnTestId(col.field)\" [ngStyle]=\"col.content.ngStyle\" [ngClass]=\"col.headerStyleClass\">\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </th>\n }\n } @else {\n @if (col.isOrderable) {\n <th [pSortableColumn]=\"col.sortField\" [attr.data-testid]=\"buildColumnTestId(col.field)\" [ngStyle]=\"col.content.ngStyle\" [ngClass]=\"col.headerStyleClass\">\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </th>\n }\n @if (!col.isOrderable) {\n <th [attr.data-testid]=\"buildColumnTestId(col.field)\" [ngStyle]=\"col.content.ngStyle\" [ngClass]=\"col.headerStyleClass\">\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </th>\n }\n }\n <ng-template #headerContent>\n <div class=\"flex justify-start items-center\">\n <span class=\"mr-1\">{{ col.header }}</span>\n @if (col.showHeaderActions) {\n <smz-table-header-actions clickStopPropagation class=\"ml-1 mt-1\" [col]=\"col\"></smz-table-header-actions>\n }\n @if (!clonedData.showSkeleton && col.isOrderable) {\n <p-sortIcon [field]=\"col.sortField\"></p-sortIcon>\n }\n @if (!clonedData.showSkeleton) {\n @switch (col.filter.type) {\n @case (filterTypes.currency) {\n <smz-column-filter type=\"numeric\" currency=\"BRL\" [field]=\"col.filterField\"></smz-column-filter>\n }\n @case (filterTypes.numeric) {\n <smz-column-filter type=\"numeric\" [field]=\"col.filterField\"></smz-column-filter>\n }\n @case (filterTypes.date) {\n <smz-column-filter type=\"date\" [field]=\"col.filterField\" [showTime]=\"col.filter.showTime\"></smz-column-filter>\n }\n @case (filterTypes.text) {\n <smz-column-filter type=\"text\" [field]=\"col.filterField\"></smz-column-filter>\n }\n @case (filterTypes.boolean) {\n <smz-column-filter type=\"boolean\" [field]=\"col.filterField\"></smz-column-filter>\n }\n @case (filterTypes.dropdown) {\n @if (col.filterField | filterObject; as filterField) {\n <smz-column-filter [field]=\"filterField + '.id'\" matchMode=\"dropdown\" [showMatchModes]=\"false\" [showOperator]=\"false\" [showAddButton]=\"false\">\n <ng-template smzTemplate=\"header\">\n <div class=\"px-3 pt-3 pb-0\">\n <span class=\"p-text-bold\">{{ col.header }}</span>\n </div>\n </ng-template>\n <ng-template smzTemplate=\"filter\" let-value let-filter=\"filter\">\n <ui-select appendTo=\"body\" [ngModel]=\"value\" [options]=\"(clonedData.items != null ? clonedData.items : []) | uniqueFilter : filterField + '.id' : filterField : null : 'name' : false\" [placeholder]=\"context.state.locale.dropdownFilter.placeholder\" (changed)=\"filter($event.value)\" optionLabel=\"name\" dataKey=\"id\"></ui-select>\n </ng-template>\n </smz-column-filter>\n }\n }\n @case (filterTypes.multiselect) {\n @if (col.filterField | filterObject; as filterField) {\n <smz-column-filter [field]=\"filterField\" matchMode=\"in\" [showMatchModes]=\"false\" [showOperator]=\"false\" [showAddButton]=\"false\">\n <ng-template smzTemplate=\"header\">\n <div class=\"px-3 pt-3 pb-0\">\n <span class=\"p-text-bold\">{{ col.header }}</span>\n </div>\n </ng-template>\n <ng-template smzTemplate=\"filter\" let-value let-filter=\"filter\">\n <ui-multi-select [ngModel]=\"value\" [options]=\"(clonedData.items != null ? clonedData.items : []) | uniqueFilter : filterField + '.id' : filterField : null : 'name' : false\" [placeholder]=\"context.state.locale.dropdownFilter.placeholder\" (changed)=\"filter($event.value)\" optionLabel=\"name\" dataKey=\"id\"></ui-multi-select>\n </ng-template>\n </smz-column-filter>\n }\n }\n @case (filterTypes.multiselect_array) {\n @if (col.filterField | filterObject; as filterField) {\n <smz-column-filter [field]=\"filterField\" matchMode=\"array-some\" [showMatchModes]=\"false\" [showOperator]=\"false\" [showAddButton]=\"false\">\n <ng-template smzTemplate=\"header\">\n <div class=\"px-3 pt-3 pb-0\">\n <span class=\"p-text-bold\">{{ col.header }}</span>\n </div>\n </ng-template>\n <ng-template smzTemplate=\"filter\" let-value let-filter=\"filter\">\n <ui-multi-select [ngModel]=\"value\" [options]=\"(clonedData.items != null ? clonedData.items : []) | uniqueFilter : filterField + '.id' : filterField : null : 'name' : true\" [placeholder]=\"context.state.locale.dropdownFilter.placeholder\" (changed)=\"filter($event.value)\" optionLabel=\"name\" dataKey=\"id\" [maxSelectedLabels]=\"2\" [selectedItemsLabel]=\"'{0}'\"></ui-multi-select>\n </ng-template>\n </smz-column-filter>\n }\n }\n @case (filterTypes.multiselect_string) {\n @if (col.filterField | filterObject; as filterField) {\n <smz-column-filter [field]=\"filterField\" matchMode=\"multiselectByString\" [showMatchModes]=\"false\" [showOperator]=\"false\" [showAddButton]=\"false\">\n <ng-template smzTemplate=\"header\">\n <div class=\"px-3 pt-3 pb-0\">\n <span class=\"p-text-bold\">{{ col.header }}</span>\n </div>\n </ng-template>\n <ng-template smzTemplate=\"filter\" let-value let-filter=\"filter\">\n <ui-multi-select [ngModel]=\"value\" [options]=\"(clonedData.items != null ? clonedData.items : []) | uniqueFilter : filterField : filterField : null : true : false : false\" [placeholder]=\"context.state.locale.dropdownFilter.placeholder\" (changed)=\"filter($event.value)\" [maxSelectedLabels]=\"2\" [selectedItemsLabel]=\"'{0}'\"></ui-multi-select>\n </ng-template>\n </smz-column-filter>\n }\n }\n }\n }\n @if (context.state.caption.columnVisibility.showColumnHideButton) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-eye-slash\" (click)=\"hideColumn(col, context)\" [rounded]=\"true\" variant=\"text\" styleClass=\"p-button-plain\"></button>\n }\n </div>\n </ng-template>\n }\n @if (context.state.actions.menu.isVisible || context.state.actions.customActions.isVisible|| context.state.editable.isEditable) {\n <th [ngStyle]=\"context.state.editable.isEditable ? context.state.editable.ngStyle : context.state.actions.customActions.ngStyle\"></th>\n }\n </tr>\n @if (context.state.actions.batchActions.isVisible) {\n <tr>\n <th [attr.colspan]=\"columns.length + ((context.state.actions.menu.isVisible || context.state.actions.customActions.isVisible || context.state.editable.isEditable) ? 1 : 0) + (context.state.caption.rowSelection.isEnabled ? 1 : 0) + (context.state.rowExpansion.isEnabled ? 1 : 0)\"\n [ngStyle]=\"context.state.actions.customActions.ngStyle\" class=\"px-0\">\n <div class=\"grid grid-nogutter items-center justify-start\">\n <p-tableHeaderCheckbox class=\"mr-4\"></p-tableHeaderCheckbox>\n @if (selectedItems?.length > 0) {\n @for (batchItem of context.state.actions.batchActions.items; track batchItem.label) {\n @if (batchItem.visible) {\n <button smzButton [label]=\"batchItem.label\" class=\"animate__animated animate__fadeIn\" [styleClass]=\"'p-button-plain ' + (batchItem.styleClass)\" [icon]=\"batchItem.icon\" (click)=\"batchItem.command(selectedItems); selectedItems = [];\" [disabled]=\"batchItem.disabled\" [smzTooltip]=\"batchItem.tooltip\" [rounded]=\"true\" variant=\"text\"></button>\n }\n }\n }\n </div>\n </th>\n </tr>\n }\n </ng-template>\n <ng-template smzTemplate=\"body\" let-item let-editing=\"editing\" let-rowIndex=\"rowIndex\" let-columns=\"columns\">\n <tr #editableRowElement\n [pEditableRow]=\"item\"\n tableItemAction\n [isClickable]=\"context.state.actions.rowBehavior.isClickable\"\n [callback]=\"context.state.actions.rowBehavior.clickCallback\"\n [expandRowOnClick]=\"context.state.actions.rowBehavior.expandRowOnClick\"\n [item]=\"item\"\n class=\"p-selectable-row\"\n [attr.data-testid]=\"buildRowTestId(item, rowIndex)\"\n [ngClass]=\"{ 'highlight-row': item?.id === state.actions.rowBehavior.highlights, 'preserve-in-small': state.actions.rowBehavior.preserveLayoutInSmallDevices }\"\n >\n @if (context.state.caption.rowSelection.isEnabled && !clonedData.showSkeleton) {\n <td\n clickStopPropagation\n class=\"{{ state.actions.rowBehavior.cellStyleClass }}\"\n [ngClass]=\"{ 'opacity-50 pointer-events-none': editableService.context[item.id]?.hasErrors || editableService.context[item.id]?.isLoading }\"\n [ngStyle]=\"context.state.caption.rowSelection.ngStyle\"\n >\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n }\n @if (context.state.rowExpansion.isEnabled && !clonedData.showSkeleton) {\n <td\n clickStopPropagation\n class=\"{{ state.actions.rowBehavior.cellStyleClass }}\"\n [ngClass]=\"{ 'opacity-50 pointer-events-none': editableService.context[item.id]?.hasErrors || editableService.context[item.id]?.isLoading, 'grid grid-nogutter justify-start items-center gap-2': context.state.rowExpansion.highlightNewItems && item._isNew }\"\n [ngStyle]=\"context.state.rowExpansion.ngStyle\"\n >\n <button smzButton type=\"button\" class=\"smz-table-row-expansion-toggle\" [icon]=\"item._isExpanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\" (click)=\"item._isExpanded = !item._isExpanded; item._isNew = false\" variant=\"text\" [rounded]=\"true\" size=\"sm\"></button>\n @if (context.state.rowExpansion.highlightNewItems && item._isNew) {\n <div class=\"rounded bg-cyan-400 text-sm text-white px-2 py-0 smz-table-new-tag\" (click)=\"item._isNew = false\">{{ context.state.rowExpansion.highlightLabel }}</div>\n }\n </td>\n }\n @for (col of columns; track col.field) {\n @if (clonedData.showSkeleton) {\n <td class=\"{{ state.actions.rowBehavior.cellStyleClass }}\" [ngStyle]=\"col.content.ngStyle\"><ui-skeleton width=\"100%\" height=\"1rem\"></ui-skeleton></td>\n } @else {\n <td class=\"{{ state.actions.rowBehavior.cellStyleClass }}\" [attr.data-testid]=\"buildCellTestId(item, rowIndex, col.field)\" [ngClass]=\"{ 'opacity-50 pointer-events-none': editableService.context[item.id]?.hasErrors || editableService.context[item.id]?.isLoading }\" [ngStyle]=\"col.content.ngStyle\">\n <span class=\"p-column-title\">{{ col.header }}</span>\n <p-cellEditor>\n <!-- CELULAR COM EDITOR -->\n <ng-template smzTemplate=\"input\">\n @switch (col.editable.type) {\n @case (editableTypes.none) {\n <smz-table-content class=\"cursor-default\" [ngClass]=\"col.content.contentStyleClass\" [col]=\"col\" [contentTypes]=\"contentTypes\" [item]=\"item\" [rowIndex]=\"rowIndex\" [contentTemplate]=\"contentTemplate\"></smz-table-content>\n }\n @case (editableTypes.custom) {\n <ng-container *ngTemplateOutlet=\"editableTemplate; context: { $implicit: item, col: col }\"></ng-container>\n }\n <!-- INPUT TEXT -->\n @case (editableTypes.text) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <input smzInputText type=\"text\" [formControl]=\"$any(control)\" style=\"width: 100%;\">\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n <!-- INPUT NUMBER -->\n @case (editableTypes.number) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <ui-input-number *ngVar=\"col.editable.data as numberData\" [formControl]=\"$any(control)\" [mode]=\"numberData.mode\" [minFractionDigits]=\"numberData.minFractionDigits\" [maxFractionDigits]=\"numberData.maxFractionDigits\" [currency]=\"numberData.currency\" [useGrouping]=\"numberData.useGrouping\" [allowEmpty]=\"numberData.allowEmpty\" [showClear]=\"numberData.showClear\" [showButtons]=\"numberData.showButtons\" [prefix]=\"numberData.prefix\" [suffix]=\"numberData.suffix\">\n </ui-input-number>\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n <!-- INPUT SWITCH -->\n @case (editableTypes.switch) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <ui-toggle-switch [formControl]=\"$any(control)\"></ui-toggle-switch>\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n <!-- INPUT TEXT AREA -->\n @case (editableTypes.area) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <textarea smzTextarea type=\"text\" [formControl]=\"$any(control)\" [rows]=\"$any(col.editable.data).rows\" required style=\"width: 100%;\"></textarea>\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n <!-- INPUT DROPDOWN -->\n @case (editableTypes.dropdown) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <ui-select appendTo=\"body\" [formControl]=\"$any(control)\" styleClass=\"w-full\" [options]=\"col.editable.data | editableSource\" optionLabel=\"name\" dataKey=\"id\" [placeholder]=\"$any(col.editable.data).placeholder\" [showClear]=\"!col.editable.validatorsPreset?.isRequired\" [filter]=\"true\"></ui-select>\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n <!-- INPUT CALENDAR -->\n @case (editableTypes.calendar) {\n @if (editableService.context[item.id]?.form; as form) {\n @if (form.controls[col.editable.property]; as control) {\n <div class=\"relative w-full\">\n <ui-date-picker [formControl]=\"$any(control)\" appendTo=\"body\" styleClass=\"w-full\" [ngClass]=\"{ 'pl-5': !control.valid }\"></ui-date-picker>\n <smz-table-validation-messages [errors]=\"control.errors\" [messages]=\"uiConfig.dialogs.forms.validationMessages\" [isFormInvalid]=\"form.invalid\" [isFormDirty]=\"form.dirty\"></smz-table-validation-messages>\n </div>\n }\n }\n }\n }\n </ng-template>\n <!-- CELULAR COM CONTE\u00DADO -->\n <ng-template smzTemplate=\"output\">\n <smz-table-content\n [col]=\"col\"\n [smzTooltip]=\"col.content.tooltip != null ? col.content.tooltip(item) : null\"\n tooltipPosition=\"left\"\n [ngClass]=\"col.content.contentStyleClass\" [contentTypes]=\"contentTypes\" [item]=\"item\" [rowIndex]=\"rowIndex\" [contentTemplate]=\"contentTemplate\">\n </smz-table-content>\n </ng-template>\n </p-cellEditor>\n </td>\n }\n }\n @if (context.state.actions.menu.isVisible || context.state.actions.customActions.isVisible || context.state.editable.isEditable) {\n <td [ngStyle]=\"context.state.actions.customActions.ngStyle\" class=\"px-0\">\n <div class=\"grid grid-nogutter items-center justify-center\">\n @if (clonedData.showSkeleton) {\n <div class=\"w-full\">\n <ui-skeleton width=\"100%\" height=\"1rem\"></ui-skeleton>\n </div>\n } @else {\n <!-- SEM EDITAR -->\n @if (!editing) {\n @if (context.state.editable.update.isButtonVisible) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-pencil\" (click)=\"editableService.onRowEditInit(item)\" class=\"mx-1\" [disabled]=\"editableService.isEditing || editableService.isCreating || context.state.editable.update.isButtonDisabled || (!context.state.editable.update.condition(item))\" pInitEditableRow [rounded]=\"true\" variant=\"text\"></button>\n }\n @if (context.state.editable.remove.isButtonVisible) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-trash\" (click)=\"editableService.onRowRemove($event, table, item)\" class=\"mx-1\" [disabled]=\"editableService.isEditing || editableService.isCreating || context.state.editable.remove.isButtonDisabled || (!context.state.editable.remove.condition(item))\" [rounded]=\"true\" variant=\"text\" severity=\"secondary\"></button>\n }\n }\n <!-- EDITANDO -->\n @if (editing) {\n @if (editableService.context[item.id]; as editableContext) {\n <!-- COM LOADING -->\n @if (editableContext.isLoading) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-rotate fa-spin\" [disabled]=\"true\" class=\"mr-2\" [rounded]=\"true\" variant=\"text\" styleClass=\"p-button-info\"></button>\n }\n <!-- SEM LOADING -->\n @if (!editableContext.isLoading) {\n <!-- EDITANDO -->\n @if (!editableContext.hasErrors) {\n <!-- CRIANDO -->\n @if (item._context?.isCreating) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-check\" (click)=\"editableService.onRowCreateSave($event, table, editableRowElement, item)\" [disabled]=\"!editableContext.hasChanged || !editableService.context[item.id]?.form.valid\" class=\"mr-2\" [rounded]=\"true\" variant=\"text\" severity=\"success\"></button>\n <button smzButton type=\"button\" icon=\"fa-solid fa-xmark\" (click)=\"editableService.onRowCreateCancel($event, table, item)\" [rounded]=\"true\" variant=\"text\" severity=\"danger\"></button>\n }\n <!-- ATUALIZANDO -->\n @if (item._context?.isUpdating) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-check\" (click)=\"editableService.onRowEditSave($event, table, editableRowElement, item)\" [disabled]=\"!editableContext.hasChanged || !editableService.context[item.id]?.form.valid\" class=\"mr-2\" [rounded]=\"true\" variant=\"text\" severity=\"success\"></button>\n <button smzButton type=\"button\" icon=\"fa-solid fa-xmark\" (click)=\"editableService.onRowEditCancel($event, table, item)\" [rounded]=\"true\" variant=\"text\" severity=\"danger\"></button>\n }\n }\n <!-- COM ERRORS -->\n @if (editableContext.hasErrors) {\n <ui-popover #errorsOverlay appendTo=\"body\" [style]=\"{ width: '450px' }\">\n <div [innerHtml]=\"editableContext.errors | contentErrors\"></div>\n </ui-popover>\n <button smzButton type=\"button\" icon=\"fas fa-exclamation-triangle\" [disabled]=\"false\" class=\"mr-2\" (click)=\"errorsOverlay.toggle($event)\" size=\"sm\" [rounded]=\"true\" variant=\"text\" severity=\"danger\"></button>\n <!-- CRIANDO -->\n @if (item._context?.isCreating) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-xmark\" (click)=\"editableService.onRowCreateCancel($event, table, item)\" size=\"sm\" [rounded]=\"true\" variant=\"text\" severity=\"danger\"></button>\n }\n <!-- ATUALIZANDO -->\n @if (item._context?.isUpdating) {\n <button smzButton type=\"button\" icon=\"fa-solid fa-xmark\" (click)=\"editableService.onRowEditCancel($event, table, item)\" size=\"sm\" [rounded]=\"true\" variant=\"text\" severity=\"danger\"></button>\n }\n }\n }\n }\n }\n <!-- CUSTOM MENU -->\n @if (context.state.actions.customActions.isVisible && !editing) {\n <ng-container *ngTemplateOutlet=\"actionsTemplate; context: { $implicit: item }\"></ng-container>\n }\n <!-- MENU -->\n @if (context.state.actions.menu.isVisible && !editing) {\n <smz-menu [callback]=\"context.state.actions.menu.callback\" [items]=\"context.state.actions.menu.items\" [data]=\"item\" [behavior]=\"context.state.actions.menu.behavior\" [ngClass]=\"{ 'ml-2': context.state.actions.customActions.isVisible }\" [icon]=\"context.state.actions.menu.styles.icon\" [styleClass]=\"context.state.actions.menu.styles.styleClass\" [buttonClass]=\"context.state.actions.menu.styles.buttonClass\" [testId]=\"buildRowMenuTestId(item, rowIndex)\"></smz-menu>\n }\n }\n </div>\n </td>\n }\n </tr>\n @if (item?._isExpanded) {\n <tr>\n <td [attr.colspan]=\"columns.length + ((context.state.actions.menu.isVisible || context.state.actions.customActions.isVisible || context.state.editable.isEditable) ? 1 : 0) + (context.state.caption.rowSelection.isEnabled ? 1 : 0) + (context.state.rowExpansion.isEnabled ? 1 : 0)\">\n <ng-container *ngTemplateOutlet=\"rowContentTemplate; context: { $implicit: item }\"></ng-container>\n </td>\n </tr>\n }\n </ng-template>\n <ng-template smzTemplate=\"emptymessage\" let-columns>\n <tr>\n <td [attr.colspan]=\"columns.length + ((context.state.actions.menu.isVisible || context.state.actions.customActions.isVisible || context.state.editable.isEditable) ? 1 : 0) + (context.state.caption.rowSelection.isEnabled ? 1 : 0) + (context.state.rowExpansion.isEnabled ? 1 : 0)\" [ngStyle]=\"{ 'text-align': 'center' }\">\n <div [innerHtml]=\"context.state.emptyFeedback.message\"></div>\n @if (context.state.caption.clearFilters.isButtonVisible && hasFilters()) {\n <button smzButton [label]=\"context.state.locale.clearFilters.label\" class=\"mt-3\" icon=\"fa-solid fa-filter-circle-xmark\" (click)=\"clear(table, context)\" variant=\"outlined\"></button>\n }\n </td>\n </tr>\n </ng-template>\n </p-table>\n }\n </ng-container>\n </ng-container>\n }\n} @else {\n @if (emptyStateTemplate != null) {\n <ng-container *ngTemplateOutlet=\"emptyStateTemplate; context: { $implicit: {} }\"></ng-container>\n }\n}\n\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.SmzTemplateDirective, selector: "ng-template[smzTemplate]", inputs: ["smzTemplate"] }, { kind: "component", type: 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", "stripedRows", "size", "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: SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "component", type: CellEditor, selector: "p-cellEditor" }, { kind: "component", type: SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "directive", type: InitEditableRow, selector: "[pInitEditableRow]" }, { kind: "component", type: i2.SmzButtonComponent, selector: "button[smzButton], a[smzButton]", inputs: ["label", "icon", "iconPosition", "severity", "variant", "size", "text", "outlined", "rounded", "loading", "styleClass"] }, { kind: "directive", type: i2.SmzInputTextDirective, selector: "input[smzInputText]", inputs: ["size", "invalid"] }, { kind: "component", type: i2.SmzMultiSelectComponent, selector: "ui-multi-select", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "dataKey", "placeholder", "filter", "filterBy", "filterMatchMode", "filterPlaceholder", "showClear", "showToggleAll", "emptyMessage", "emptyFilterMessage", "maxSelectedLabels", "selectedItemsLabel", "panelStyle", "styleClass", "inputId", "autofocusFilter", "appendTo", "display"], outputs: ["changed", "panelHide", "panelShow"] }, { kind: "component", type: i2.SmzSelectComponent, selector: "ui-select", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "dataKey", "placeholder", "filter", "filterBy", "filterMatchMode", "filterPlaceholder", "showClear", "emptyMessage", "emptyFilterMessage", "styleClass", "inputId", "ariaLabel", "appendTo"], outputs: ["changed", "showed", "hidden"] }, { kind: "component", type: i2.SmzDatePickerComponent, selector: "ui-date-picker", inputs: ["selectionMode", "dateFormat", "showTime", "timeOnly", "showSeconds", "hourFormat", "minDate", "maxDate", "showButtonBar", "showIcon", "showOnFocus", "keepInvalid", "readonlyInput", "placeholder", "inputId", "styleClass", "appendTo", "touchUI", "focusTrap"], outputs: ["selected", "cleared", "opened", "closed", "blurred"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TableItemActionsDirective, selector: "[tableItemAction]", inputs: ["isClickable", "item", "callback", "expandRowOnClick"] }, { kind: "directive", type: ClickStopPropagationDirective, selector: "[clickStopPropagation]" }, { kind: "component", type: SmzDataInfoComponent, selector: "smz-data-info", inputs: ["image", "message", "actions", "callbackInfo", "callbackLabel"], outputs: ["clicked"] }, { kind: "directive", type: i2.SmzTooltipDirective, selector: "[smzTooltip]", inputs: ["smzTooltip", "tooltipPosition", "showDelay", "hideDelay", "tooltipEvent", "escape", "tooltipStyleClass", "tooltipZIndex", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "component", type: i2.SmzSkeletonComponent, selector: "ui-skeleton", inputs: ["shape", "width", "height"] }, { kind: "directive", type: i2.SmzTextareaDirective, selector: "textarea[smzTextarea]", inputs: ["invalid", "autoResize"] }, { kind: "component", type: i2.SmzPopoverComponent, selector: "ui-popover", inputs: ["style", "styleClass", "dismissable", "autoZIndex", "appendTo"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i2.SmzToggleSwitchComponent, selector: "ui-toggle-switch", inputs: ["name"], outputs: ["changed"] }, { kind: "component", type: i2.SmzInputNumberComponent, selector: "ui-input-number", inputs: ["mode", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "min", "max", "step", "prefix", "suffix", "showButtons", "showClear", "allowEmpty", "placeholder", "readonly", "inputId"], outputs: ["inputed", "keyDown", "blurred", "focused"] }, { kind: "component", type: SmzMenuComponent, selector: "smz-menu", inputs: ["items", "callback", "data", "buttonClass", "styleClass", "icon", "behavior", "testId"] }, { kind: "directive", type: NgVar, selector: "[ngVar]", inputs: ["ngVar"] }, { kind: "component", type: i2.SmzIconFieldComponent, selector: "ui-icon-field" }, { kind: "component", type: i2.SmzInputIconComponent, selector: "ui-input-icon", inputs: ["styleClass"] }, { kind: "component", type: SmzColumnFilterComponent, selector: "smz-column-filter", inputs: ["currency", "display", "field", "matchMode", "showAddButton", "showMatchModes", "showOperator", "showApplyButton", "type", "showTime"] }, { kind: "component", type: SmzTableValidationMessagesComponent, selector: "smz-table-validation-messages", inputs: ["errors", "messages", "isFormInvalid", "isFormDirty"] }, { kind: "component", type: SmzTableContentComponent, selector: "smz-table-content", inputs: ["col", "contentTypes", "item", "rowIndex", "contentTemplate"] }, { kind: "component", type: SmzTableCaptionButtonsComponent, selector: "smz-table-caption-buttons", inputs: ["buttons", "tableTestId"] }, { kind: "component", type: SmzTableHeaderActionsComponent, selector: "smz-table-header-actions", inputs: ["col"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: UniqueFilterPipe, name: "uniqueFilter" }, { kind: "pipe", type: SmzTableContextPipe, name: "tableContext" }, { kind: "pipe", type: SmzFilterObjectPipe, name: "filterObject" }, { kind: "pipe", type: SmzCloneTableItemsPipe, name: "cloneTableItems" }, { kind: "pipe", type: SmzEditableSourcePipe, name: "editableSource" }, { kind: "pipe", type: SmzContentErrorsPipe, name: "contentErrors" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22509
22563
  }
22510
22564
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTableComponent, decorators: [{
22511
22565
  type: Component,
@@ -22628,7 +22682,7 @@ class SmzColumnFilter2Component {
22628
22682
  }
22629
22683
  isOutsideClicked(event) {
22630
22684
  const overlay = this['overlay'];
22631
- const result = !(overlay.isSameNode(event.target) || overlay.contains(event.target));
22685
+ const result = !(isInsideCdkOverlay(event) || overlay.isSameNode(event.target) || overlay.contains(event.target));
22632
22686
  if (result) {
22633
22687
  setTimeout(() => {
22634
22688
  this['cdf'].markForCheck();
@@ -57084,5 +57138,5 @@ __decorate([
57084
57138
  * Generated bundle index. Do not edit.
57085
57139
  */
57086
57140
 
57087
- export { AUTHORIZATION_HEADER, AccessControlService, ActionDispatchDirective, ApplicationActions, ApplicationSelectors, ApplicationState, AsPipe, AthenaLayout, AthenaLayoutComponent, AthenaLayoutModule, AuthClaimDefinitions, AuthHandler, AuthService, AuthenticationActions, AuthenticationSelectors, AuthenticationService, AuthenticationState, AuthorizationService, AxisOverflowDirection, AxisOverflowType, AxisPosition, BaseApiService, BoilerplateService, BreadcrumbService, CLAIMS_PAGE_ROUTE, CLAIMS_PATH, CLAIMS_STATE_NAME, CONTENT_ENCODING_HEADER, CachedRouteReuseStrategy, CalendarComponent, CalendarPipe, CanAccess, CancelEditableRow, CellEditor, ChartType, CheckBoxComponent, CheckBoxGroupComponent, ClaimAccessType, ClaimAccessTypeDescription, ClaimAccessTypeValues, ClaimsActions, ClaimsModule, ClaimsSelectors, ClaimsState, ClickStopPropagationDirective, ClickStopPropagationModule, ClonePipe, ColorPallete, ColorPickerComponent, ColumnFilter, ColumnFilterFormElement, Confirmable, ContextMenuRow, CreateLinearChart, CreateRadialChart, CustomError, CustomNgForDirective, CustomNgForModule, DATABASE_REQUIRED_ACTIONS, DATABASE_STATES, DECORATOR_APPLIED, DEFAULT_AUTHENTICATION_ENDPOINTS_ROUTES, DEFAULT_AUTHORIZATION_ENDPOINTS_ROUTES, DatabaseActions, DatabaseSelectors, DatabaseState, DatasetType, DeepWrapper, DescribeAnyPipe, DescribeArrayPipe, DescribeSimpleNamedPipe, DialogContentManagerComponent, DialogService, DropdownComponent, DynamicDialogComponent, DynamicDialogConfig, DynamicDialogInjector, DynamicDialogModule, DynamicDialogRef, ERROR_HANDLING_TYPE_HEADER, EditableColumn, EditableRow, ExcelsUiActions, FEATURE_STATES, FeaturesActions, FeaturesSelectors, FeaturesState, FileUploadComponent, FilterContains, FirstOrDefaultPipe, FormGroupComponent, FormSubmitComponent, FrozenColumn, GenericInjectComponentDirective, GetElementById, GetElementsByParentId, GlobalActions, GlobalFilter, GlobalInjector, GlobalLoaderComponent, GlobalLoaderModule, GlobalState, GroupingType, HephaestusLayout, HephaestusLayoutComponent, HephaestusLayoutModule, HephaestusProviderModule, HostElement, HttpErrorHandler, IGNORE_ERROR_HANDLING, InViewportMetadata, InitEditableRow, InjectComponentDirective, InjectComponentService, InjectContentAppModule, InjectContentDirective, InjectContentService, InputBlurDetectionModule, InputChangeDetectionDirective, InputClearExtensionDirective, InputCurrencyComponent, InputListComponent, InputMaskComponent, InputNumberComponent, InputPasswordComponent, InputSwitchComponent, InputTagAreaComponent, InputTextAreaComponent, InputTextComponent, InputTreeComponent, IsVisiblePipe, IsVisiblePipeModule, JoinPipe, LOADING_BEHAVIOR_HEADER, LOCAL_LOADING_TAG_HEADER, LayoutUiActions, LayoutUiSelectors, LayoutUiState, LegacyAuthenticationSelectors, LinearChartBuilder, LinkedDropdownComponent, LinkedMultiSelectComponent, LoggingScope, LoggingService, MAIN_LAYOUT_PATH, MentionableTextareaComponent, MenuHelperService, MenuType, MergeClonePipe, MergeClonePipeModule, MultiSelectComponent, NG_ON_INIT, NewAthenaLayout, NewAthenaLayoutComponent, NewAthenaLayoutModule, NewAthenaProviderModule, NgCloneDirective, NgCloneModule, NgIfLandscapeDirective, NgIfLandscapeDirectiveModule, NgIfPortraitDirective, NgIfPortraitDirectiveModule, NgVar, NgVarContext, NgVarModule, NgxRbkUtilsConfig, NgxRbkUtilsModule, NgxSmzCardsModule, NgxSmzCommentsModule, NgxSmzDataInfoModule, NgxSmzDataPipesModule, NgxSmzDialogsModule, NgxSmzDockModule, NgxSmzDocumentsModule, NgxSmzFaqsModule, NgxSmzFormsModule, NgxSmzLayoutsModule, NgxSmzMenuModule, NgxSmzMultiTablesModule, NgxSmzRouterParamsModule, NgxSmzSafeImageModule, NgxSmzServerImageModule, NgxSmzServerImageToBase64Module, NgxSmzSideContentModule, NgxSmzTablesModule, NgxSmzTreeWithDetailsModule, NgxSmzTreesModule, NgxSmzUiBlockModule, NgxSmzUiComponent, NgxSmzUiConfig, NgxSmzUiGuidesModule, NgxSmzUiModule, NgxSmzViewportModule, NotificationFolder, NotificationFolderStatus, NotificationStatus, NotificationType, NotificationTypeClass, NotificationsUiActions, NotificationsUiSelectors, PrettyJsonPipe$1 as PrettyJsonPipe, PrettyJsonPipeModule, PrimeConfigService, REFRESH_TOKEN_BEHAVIOR_HEADER, RESTORE_STATE_ON_ERROR_HEADER, ROLES_PAGE_ROUTE, ROLES_PATH, ROLES_STATE_NAME, RadialChartBuilder, RadioButtonComponent, RbkAccessControlModule, RbkAuthGuard, RbkCanAccessAnyPipe, RbkCanAccessPipe, RbkClaimGuardDirective, RbkDatabaseStateGuard, RbkFeatureStateGuard, RbkPipesModule, RbkTableFilterClearDirectivesModule, RegistrySmzUiConfiguration, ReorderableColumn, ReorderableRow, ReorderableRowHandle, RepositoryForm, ResizableColumn, RoleMode, RoleModeDescription, RoleModeValues, RoleSource, RoleSourceDescription, RoleSourceValues, RolesActions, RolesModule, RolesSelectors, RolesState, RouterParamsActions, RouterParamsSelectors, RowGroupHeader, RowToggler, SMZ_CORE_LOGGING_CONFIG, SMZ_UI_ENVIRONMENT_CONFIG, SafeHtmlPipe$2 as SafeHtmlPipe, SafeImageDirective, SafeUrlPipe$1 as SafeUrlPipe, SaveEditableRow, SelectableRow, SelectableRowDblClick, SelectorPipe, ServerImageDirective, ServerImageToBase64Directive, ServerPathPipe, SetTemplateClasses, SetTemplateClassesPipe, SidebarState, SimpleCalendarPipe, SmzActionDispatchModule, SmzAuthorizationDeactivatedUsersTableBuilder, SmzAuthorizationUsersTableBuilder, SmzBaseColumnBuilder, SmzBaseEditableBuilder, SmzBreakpoints, SmzBuilderUtilities, SmzCardsBuilder, SmzCardsComponent, SmzCardsContentType, SmzCardsInjectableComponentBuilder, SmzCardsTemplate, SmzCardsView, SmzChartComponent, SmzChartModule, SmzClipboardService, SmzColumnCollectionBuilder, SmzCommentsBuilder, SmzCommentsComponent, SmzCommentsSectionComponent, SmzContentTheme, SmzContentThemes, SmzContentType, SmzControlType, SmzCoreLogging, SmzCurrencyColumnBuilder, SmzCustomColumnBuilder, SmzDataInfoComponent, SmzDataTransformColumnBuilder, SmzDataTransformTreePipe, SmzDateColumnBuilder, SmzDialogBuilder, SmzDialogComponentBuilder, SmzDialogFormBuilder, SmzDialogTableBuilder, SmzDialogsConfig, SmzDialogsPresets, SmzDialogsService, SmzDockComponent, SmzDockService, SmzDocumentBaseCellBuilder, SmzDocumentBuilder, SmzDocumentComponent, SmzDocumentsService, SmzDragDropModule, SmzDraggable, SmzDropdownEditableBuilder, SmzDroppable, SmzDynamicDialogConfig, SmzEasyBaseColumnBuilder, SmzEasyColumnCollectionBuilder, SmzEasyCustomColumnBuilder, SmzEasyDataTransformColumnBuilder, SmzEasyDateColumnBuilder, SmzEasyMenuTableBuilder, SmzEasyTableBuilder, SmzEasyTableComponent, SmzEasyTableContentType, SmzEasyTableModule, SmzEasyTextColumnBuilder, SmzEditableCollectionBuilder, SmzEditableTableBuilder, SmzEditableType, SmzEnvironment, SmzExcelColorDefinitions, SmzExcelDataDefinitions, SmzExcelFontDefinitions, SmzExcelService, SmzExcelSortOrderDefinitions, SmzExcelThemeDefinitions, SmzExcelTypeDefinitions, SmzExcelsBuilder, SmzExportDialogComponent, SmzExportDialogModule, SmzExportDialogService, SmzExportableContentSource, SmzExportableContentType, SmzFaqsComponent, SmzFaqsConfig, SmzFilterType, SmzFlattenMenuPipe, SmzFlipCardContext, SmzFormBuilder, SmzFormViewdata, SmzFormsConfig, SmzFormsPresets, SmzFormsRepositoryService, SmzGaugeBuilder, SmzGaugeComponent, SmzGaugeThresholdBuilder, SmzGetDataPipe, SmzGridItemComponent, SmzHelpDialogService, SmzHtmlViewerComponent, SmzHtmlViewerModule, SmzIconColumnBuilder, SmzIconMessageComponent, SmzInfoDateComponent, SmzInfoDateModule, SmzInitialPipe, SmzInputAutocompleteTagArea, SmzInputTextModule, SmzInputTextPipe, SmzLayoutsConfig, SmzLoader, SmzLoaders, SmzLoginBuilder, SmzLoginComponent, SmzLoginModule, SmzMenuBuilder, SmzMenuComponent, SmzMenuCreationBuilder, SmzMenuCreationItemBuilder, SmzMenuItemActionsDirective, SmzMenuItemBuilder, SmzMenuItemEasyTableBuilder, SmzMenuItemTableBuilder, SmzMenuTableBuilder, SmzMessagesModule, SmzMultiTablesBuilder, SmzMultiTablesComponent, SmzNotificationsComponent, SmzNotificationsModule, SmzNumberEditableBuilder, SmzPresets, SmzProxyStore, SmzResponsiveBreakpointsDirective, SmzResponsiveBreakpointsDirectiveModule, SmzResponsiveComponent, SmzRouteDatas, SmzRouteParams, SmzRouteQueryParams, SmzSideContentComponent, SmzSideContentDefault, SmzSincronizeTablePipe, SmzSmartTag, SmzSmartTagModule, SmzSubmitComponent, SmzSvgBuilder, SmzSvgComponent, SmzSvgFeatureBuilder, SmzSvgModule, SmzSvgPinBuilder, SmzSvgRootBuilder, SmzSvgWorldCoordinates, SmzSwitchEditableBuilder, SmzTableBuilder, SmzTableComponent, SmzTablesConfig, SmzTagMessage, SmzTailPipe, SmzTemplatesPipeModule, SmzTenantSwitchComponent, SmzTextColumnBuilder, SmzTextEditableBuilder, SmzTextPattern, SmzTimelineBuilder, SmzTimelineComponent, SmzToastComponent, SmzTooltipTouchSupportModule, SmzTreeBuilder, SmzTreeComponent, SmzTreeDragAndDropBuilder, SmzTreeDropBuilder, SmzTreeDynamicMenuBuilder, SmzTreeDynamicMenuItemBuilder, SmzTreeEmptyFeedbackBuilder, SmzTreeMenuBuilder, SmzTreeMenuItemBuilder, SmzTreeToolbarBuilder, SmzTreeToolbarButtonBuilder, SmzTreeToolbarButtonCollectionBuilder, SmzTreeWithDetailsBuilder, SmzTreeWithDetailsComponent, SmzUiBlockComponent, SmzUiBlockDirective, SmzUiBlockService, SmzUiBuilder, SmzUiEnvironment, SmzUiGuidesBuilder, SmzUiGuidesService, SmzViewportDirective, SmzViewportService, SortIcon, SortableColumn, StandaloneInjectComponentDirective, StateBuilderPipe, TENANTS_PAGE_ROUTE, TENANTS_PATH, TENANTS_STATE_NAME, Table, TableBody, TableCheckbox, TableClearExtensionDirective, TableHeaderCheckbox, TableHelperService, TableModule, TableOverlayService, TableRadioButton, TableService, TenantAuthenticationSelectors, TenantsActions, TenantsModule, TenantsSelectors, TenantsState, ThemeManagerService, TitleService, ToastActions, ToastService, TooltipTouchSupportDirective, TreeHelperService, TreeHelpers, Tunnel, UI_DEFINITIONS_STATE_NAME, UI_LOCALIZATION_STATE_NAME, USERS_PAGE_ROUTE, USERS_PATH, USERS_STATE_NAME, USER_ID_HEADER, LayoutUiActions as UiActions, UiDefinitionsDbActions, UiDefinitionsDbSelectors, UiDefinitionsDbState, UiDefinitionsService, UiLocalizationDbActions, UiLocalizationDbSelectors, UiLocalizationDbState, UiLocalizationService, LayoutUiSelectors as UiSelectors, UniqueFilterPipe, UrlCheckerPipe, UrlCheckerPipeModule, UsersActions, UsersModule, UsersSelectors, UsersState, WINDOWS_AUTHENTICATION_HEADER, Wait, applyTableContentNgStyle, b64toBlob, base64ToFile, breakLinesForHtml, buildAuthenticationEndpointsRoutes, buildAuthenticationUrl, buildAuthorizationEndpointsRoutes, buildLoginPageUrl, buildServerApiUrl, buildSmzDialogCustomButtonTestId, buildSmzDialogTestId, buildSmzDialogTopbarButtonTestId, buildSmzTableTestId, buildState, capitalizeFirstLetter, capitalizeWithSlash, captureAttemptedRoute, clearArray, clearAttemptedRoute, clone, cloneAndRemoveProperties, cloneAndRemoveProperty, compare, compareInsensitive, completeSubjectOnTheInstance, composeAttemptedRoute, consumeAttemptedRoute, convertFormCreationFeature, convertFormFeature, convertFormFeatureFromInputData, convertFormUpdateFeature, count, createObjectFromString, createRound, createSubjectOnTheInstance, dataURLtoFile, databaseSmzAccessStates, debounce, deepClone, deepEqual, deepIndexOf, deepMerge, defaultFormsModuleConfig, defaultState, downloadBase64File, downloadFromServerUrl, downloadFromUrl, empty, every, executeSmzMenuItem, executeTextPattern, featureSmzAccessStates, fixDate$1 as fixDate, fixDateProperties, fixDates, flatten, flattenObject, getAuthenticationInitialState, getCleanApplicationState, getFirst, getFirstElement, getFirstElements, getFormInputFromDialog, getGlobalInitialState, getInitialApplicationState, getInitialDatabaseStoreState, getInitialState$8 as getInitialState, getLastElements, getPreset, getProperty, getSymbol, getTreeNodeFromKey, getUiDefinitionsInitialState, getUiLocalizationInitialState, getUsersInitialState, getValidatorsForInput, handleBase64, isArray, isConvertibleToNumber, isDeepObject, isEmpty$1 as isEmpty, isFunction$1 as isFunction, isInteger, isNil, isNull$1 as isNull, isNullOrEmptyString, isNumber$1 as isNumber, isNumberFinite$1 as isNumberFinite, isNumeric, isObject$2 as isObject, isObjectHelper, isPositive, isSimpleNamedEntity, isString$1 as isString, isUndefined$1 as isUndefined, isValidAttemptedRoute, isWithinTime, leftPad, longestStringInArray, mapParamsToObject, markAsDecorated, mergeClone, mergeDeep, nameof, namesof, ngxsModuleForFeatureFaqsDbState, ngxsModuleForFeatureUiAthenaLayoutState, ngxsModuleForFeatureUiHephaestusLayoutState, ngxsModuleForFeatureUiNewAthenaLayoutState, normalizeDateToUtc, orderArrayByProperty, pad, peekAttemptedRoute, provideSmzCoreLogging, provideSmzEnvironment, rbkSafeHtmlPipe, removeElementFromArray, replaceAll, replaceArrayItem, replaceArrayPartialItem, replaceItem, replaceNgOnInit, resolvePostLoginUrl, resolveSmzTableRowId, rightPad, routerModuleForChildUsersModule, routerParamsDispatch, routerParamsListener, setNestedObject, shorten, showConfirmation, showDialog, showMarkdownDialog, showMessage, showObjectDialog, showPersistentDialog, shuffle, slugSmzDialogTestIdKey, slugSmzTableTestIdKey, sortArray, sortArrayOfObjects, sortArrayOfStrings, sortMenuItemsByLabel, sum, synchronizeNodes, synchronizeRow, synchronizeTable, synchronizeTrees, takeUntil, takeWhile, toDecimal, toSimpleNamedEntity, toString, unwrapDeep, upperFirst, uuidv4, wrapDeep };
57141
+ export { AUTHORIZATION_HEADER, AccessControlService, ActionDispatchDirective, ApplicationActions, ApplicationSelectors, ApplicationState, AsPipe, AthenaLayout, AthenaLayoutComponent, AthenaLayoutModule, AuthClaimDefinitions, AuthHandler, AuthService, AuthenticationActions, AuthenticationSelectors, AuthenticationService, AuthenticationState, AuthorizationService, AxisOverflowDirection, AxisOverflowType, AxisPosition, BaseApiService, BoilerplateService, BreadcrumbService, CLAIMS_PAGE_ROUTE, CLAIMS_PATH, CLAIMS_STATE_NAME, CONTENT_ENCODING_HEADER, CachedRouteReuseStrategy, CalendarComponent, CalendarPipe, CanAccess, CancelEditableRow, CellEditor, ChartType, CheckBoxComponent, CheckBoxGroupComponent, ClaimAccessType, ClaimAccessTypeDescription, ClaimAccessTypeValues, ClaimsActions, ClaimsModule, ClaimsSelectors, ClaimsState, ClickStopPropagationDirective, ClickStopPropagationModule, ClonePipe, ColorPallete, ColorPickerComponent, ColumnFilter, ColumnFilterFormElement, Confirmable, ContextMenuRow, CreateLinearChart, CreateRadialChart, CustomError, CustomNgForDirective, CustomNgForModule, DATABASE_REQUIRED_ACTIONS, DATABASE_STATES, DECORATOR_APPLIED, DEFAULT_AUTHENTICATION_ENDPOINTS_ROUTES, DEFAULT_AUTHORIZATION_ENDPOINTS_ROUTES, DatabaseActions, DatabaseSelectors, DatabaseState, DatasetType, DeepWrapper, DescribeAnyPipe, DescribeArrayPipe, DescribeSimpleNamedPipe, DialogContentManagerComponent, DialogService, DropdownComponent, DynamicDialogComponent, DynamicDialogConfig, DynamicDialogInjector, DynamicDialogModule, DynamicDialogRef, ERROR_HANDLING_TYPE_HEADER, EditableColumn, EditableRow, ExcelsUiActions, FEATURE_STATES, FeaturesActions, FeaturesSelectors, FeaturesState, FileUploadComponent, FilterContains, FirstOrDefaultPipe, FormGroupComponent, FormSubmitComponent, FrozenColumn, GenericInjectComponentDirective, GetElementById, GetElementsByParentId, GlobalActions, GlobalFilter, GlobalInjector, GlobalLoaderComponent, GlobalLoaderModule, GlobalState, GroupingType, HephaestusLayout, HephaestusLayoutComponent, HephaestusLayoutModule, HephaestusProviderModule, HostElement, HttpErrorHandler, IGNORE_ERROR_HANDLING, InViewportMetadata, InitEditableRow, InjectComponentDirective, InjectComponentService, InjectContentAppModule, InjectContentDirective, InjectContentService, InputBlurDetectionModule, InputChangeDetectionDirective, InputClearExtensionDirective, InputCurrencyComponent, InputListComponent, InputMaskComponent, InputNumberComponent, InputPasswordComponent, InputSwitchComponent, InputTagAreaComponent, InputTextAreaComponent, InputTextComponent, InputTreeComponent, IsVisiblePipe, IsVisiblePipeModule, JoinPipe, LOADING_BEHAVIOR_HEADER, LOCAL_LOADING_TAG_HEADER, LayoutUiActions, LayoutUiSelectors, LayoutUiState, LegacyAuthenticationSelectors, LinearChartBuilder, LinkedDropdownComponent, LinkedMultiSelectComponent, LoggingScope, LoggingService, MAIN_LAYOUT_PATH, MentionableTextareaComponent, MenuHelperService, MenuType, MergeClonePipe, MergeClonePipeModule, MultiSelectComponent, NG_ON_INIT, NewAthenaLayout, NewAthenaLayoutComponent, NewAthenaLayoutModule, NewAthenaProviderModule, NgCloneDirective, NgCloneModule, NgIfLandscapeDirective, NgIfLandscapeDirectiveModule, NgIfPortraitDirective, NgIfPortraitDirectiveModule, NgVar, NgVarContext, NgVarModule, NgxRbkUtilsConfig, NgxRbkUtilsModule, NgxSmzCardsModule, NgxSmzCommentsModule, NgxSmzDataInfoModule, NgxSmzDataPipesModule, NgxSmzDialogsModule, NgxSmzDockModule, NgxSmzDocumentsModule, NgxSmzFaqsModule, NgxSmzFormsModule, NgxSmzLayoutsModule, NgxSmzMenuModule, NgxSmzMultiTablesModule, NgxSmzRouterParamsModule, NgxSmzSafeImageModule, NgxSmzServerImageModule, NgxSmzServerImageToBase64Module, NgxSmzSideContentModule, NgxSmzTablesModule, NgxSmzTreeWithDetailsModule, NgxSmzTreesModule, NgxSmzUiBlockModule, NgxSmzUiComponent, NgxSmzUiConfig, NgxSmzUiGuidesModule, NgxSmzUiModule, NgxSmzViewportModule, NotificationFolder, NotificationFolderStatus, NotificationStatus, NotificationType, NotificationTypeClass, NotificationsUiActions, NotificationsUiSelectors, PrettyJsonPipe$1 as PrettyJsonPipe, PrettyJsonPipeModule, PrimeConfigService, REFRESH_TOKEN_BEHAVIOR_HEADER, RESTORE_STATE_ON_ERROR_HEADER, ROLES_PAGE_ROUTE, ROLES_PATH, ROLES_STATE_NAME, RadialChartBuilder, RadioButtonComponent, RbkAccessControlModule, RbkAuthGuard, RbkCanAccessAnyPipe, RbkCanAccessPipe, RbkClaimGuardDirective, RbkDatabaseStateGuard, RbkFeatureStateGuard, RbkPipesModule, RbkTableFilterClearDirectivesModule, RegistrySmzUiConfiguration, ReorderableColumn, ReorderableRow, ReorderableRowHandle, RepositoryForm, ResizableColumn, RoleMode, RoleModeDescription, RoleModeValues, RoleSource, RoleSourceDescription, RoleSourceValues, RolesActions, RolesModule, RolesSelectors, RolesState, RouterParamsActions, RouterParamsSelectors, RowGroupHeader, RowToggler, SMZ_CORE_LOGGING_CONFIG, SMZ_UI_ENVIRONMENT_CONFIG, SafeHtmlPipe$2 as SafeHtmlPipe, SafeImageDirective, SafeUrlPipe$1 as SafeUrlPipe, SaveEditableRow, SelectableRow, SelectableRowDblClick, SelectorPipe, ServerImageDirective, ServerImageToBase64Directive, ServerPathPipe, SetTemplateClasses, SetTemplateClassesPipe, SidebarState, SimpleCalendarPipe, SmzActionDispatchModule, SmzAuthorizationDeactivatedUsersTableBuilder, SmzAuthorizationUsersTableBuilder, SmzBaseColumnBuilder, SmzBaseEditableBuilder, SmzBreakpoints, SmzBuilderUtilities, SmzCardsBuilder, SmzCardsComponent, SmzCardsContentType, SmzCardsInjectableComponentBuilder, SmzCardsTemplate, SmzCardsView, SmzChartComponent, SmzChartModule, SmzClipboardService, SmzColumnCollectionBuilder, SmzCommentsBuilder, SmzCommentsComponent, SmzCommentsSectionComponent, SmzContentTheme, SmzContentThemes, SmzContentType, SmzControlType, SmzCoreLogging, SmzCurrencyColumnBuilder, SmzCustomColumnBuilder, SmzDataInfoComponent, SmzDataTransformColumnBuilder, SmzDataTransformTreePipe, SmzDateColumnBuilder, SmzDialogBuilder, SmzDialogComponentBuilder, SmzDialogFormBuilder, SmzDialogTableBuilder, SmzDialogsConfig, SmzDialogsPresets, SmzDialogsService, SmzDockComponent, SmzDockService, SmzDocumentBaseCellBuilder, SmzDocumentBuilder, SmzDocumentComponent, SmzDocumentsService, SmzDragDropModule, SmzDraggable, SmzDropdownEditableBuilder, SmzDroppable, SmzDynamicDialogConfig, SmzEasyBaseColumnBuilder, SmzEasyColumnCollectionBuilder, SmzEasyCustomColumnBuilder, SmzEasyDataTransformColumnBuilder, SmzEasyDateColumnBuilder, SmzEasyMenuTableBuilder, SmzEasyTableBuilder, SmzEasyTableComponent, SmzEasyTableContentType, SmzEasyTableModule, SmzEasyTextColumnBuilder, SmzEditableCollectionBuilder, SmzEditableTableBuilder, SmzEditableType, SmzEnvironment, SmzExcelColorDefinitions, SmzExcelDataDefinitions, SmzExcelFontDefinitions, SmzExcelService, SmzExcelSortOrderDefinitions, SmzExcelThemeDefinitions, SmzExcelTypeDefinitions, SmzExcelsBuilder, SmzExportDialogComponent, SmzExportDialogModule, SmzExportDialogService, SmzExportableContentSource, SmzExportableContentType, SmzFaqsComponent, SmzFaqsConfig, SmzFilterType, SmzFlattenMenuPipe, SmzFlipCardContext, SmzFormBuilder, SmzFormViewdata, SmzFormsConfig, SmzFormsPresets, SmzFormsRepositoryService, SmzGaugeBuilder, SmzGaugeComponent, SmzGaugeThresholdBuilder, SmzGetDataPipe, SmzGridItemComponent, SmzHelpDialogService, SmzHtmlViewerComponent, SmzHtmlViewerModule, SmzIconColumnBuilder, SmzIconMessageComponent, SmzInfoDateComponent, SmzInfoDateModule, SmzInitialPipe, SmzInputAutocompleteTagArea, SmzInputTextModule, SmzInputTextPipe, SmzLayoutsConfig, SmzLoader, SmzLoaders, SmzLoginBuilder, SmzLoginComponent, SmzLoginModule, SmzMenuBuilder, SmzMenuComponent, SmzMenuCreationBuilder, SmzMenuCreationItemBuilder, SmzMenuItemActionsDirective, SmzMenuItemBuilder, SmzMenuItemEasyTableBuilder, SmzMenuItemTableBuilder, SmzMenuTableBuilder, SmzMessagesModule, SmzMultiTablesBuilder, SmzMultiTablesComponent, SmzNotificationsComponent, SmzNotificationsModule, SmzNumberEditableBuilder, SmzPresets, SmzProxyStore, SmzResponsiveBreakpointsDirective, SmzResponsiveBreakpointsDirectiveModule, SmzResponsiveComponent, SmzRouteDatas, SmzRouteParams, SmzRouteQueryParams, SmzSideContentComponent, SmzSideContentDefault, SmzSincronizeTablePipe, SmzSmartTag, SmzSmartTagModule, SmzSubmitComponent, SmzSvgBuilder, SmzSvgComponent, SmzSvgFeatureBuilder, SmzSvgModule, SmzSvgPinBuilder, SmzSvgRootBuilder, SmzSvgWorldCoordinates, SmzSwitchEditableBuilder, SmzTableBuilder, SmzTableComponent, SmzTablesConfig, SmzTagMessage, SmzTailPipe, SmzTemplatesPipeModule, SmzTenantSwitchComponent, SmzTextColumnBuilder, SmzTextEditableBuilder, SmzTextPattern, SmzTimelineBuilder, SmzTimelineComponent, SmzToastComponent, SmzTooltipTouchSupportModule, SmzTreeBuilder, SmzTreeComponent, SmzTreeDragAndDropBuilder, SmzTreeDropBuilder, SmzTreeDynamicMenuBuilder, SmzTreeDynamicMenuItemBuilder, SmzTreeEmptyFeedbackBuilder, SmzTreeMenuBuilder, SmzTreeMenuItemBuilder, SmzTreeToolbarBuilder, SmzTreeToolbarButtonBuilder, SmzTreeToolbarButtonCollectionBuilder, SmzTreeWithDetailsBuilder, SmzTreeWithDetailsComponent, SmzUiBlockComponent, SmzUiBlockDirective, SmzUiBlockService, SmzUiBuilder, SmzUiEnvironment, SmzUiGuidesBuilder, SmzUiGuidesService, SmzViewportDirective, SmzViewportService, SortIcon, SortableColumn, StandaloneInjectComponentDirective, StateBuilderPipe, TENANTS_PAGE_ROUTE, TENANTS_PATH, TENANTS_STATE_NAME, Table, TableBody, TableCheckbox, TableClearExtensionDirective, TableHeaderCheckbox, TableHelperService, TableModule, TableOverlayService, TableRadioButton, TableService, TenantAuthenticationSelectors, TenantsActions, TenantsModule, TenantsSelectors, TenantsState, ThemeManagerService, TitleService, ToastActions, ToastService, TooltipTouchSupportDirective, TreeHelperService, TreeHelpers, Tunnel, UI_DEFINITIONS_STATE_NAME, UI_LOCALIZATION_STATE_NAME, USERS_PAGE_ROUTE, USERS_PATH, USERS_STATE_NAME, USER_ID_HEADER, LayoutUiActions as UiActions, UiDefinitionsDbActions, UiDefinitionsDbSelectors, UiDefinitionsDbState, UiDefinitionsService, UiLocalizationDbActions, UiLocalizationDbSelectors, UiLocalizationDbState, UiLocalizationService, LayoutUiSelectors as UiSelectors, UniqueFilterPipe, UrlCheckerPipe, UrlCheckerPipeModule, UsersActions, UsersModule, UsersSelectors, UsersState, WINDOWS_AUTHENTICATION_HEADER, Wait, applyTableContentNgStyle, b64toBlob, base64ToFile, breakLinesForHtml, buildAuthenticationEndpointsRoutes, buildAuthenticationUrl, buildAuthorizationEndpointsRoutes, buildLoginPageUrl, buildServerApiUrl, buildSmzDialogCustomButtonTestId, buildSmzDialogTestId, buildSmzDialogTopbarButtonTestId, buildSmzTableTestId, buildState, capitalizeFirstLetter, capitalizeWithSlash, captureAttemptedRoute, clearArray, clearAttemptedRoute, clone, cloneAndRemoveProperties, cloneAndRemoveProperty, compare, compareInsensitive, completeSubjectOnTheInstance, composeAttemptedRoute, consumeAttemptedRoute, convertFormCreationFeature, convertFormFeature, convertFormFeatureFromInputData, convertFormUpdateFeature, count, createObjectFromString, createRound, createSubjectOnTheInstance, dataURLtoFile, databaseSmzAccessStates, debounce, deepClone, deepEqual, deepIndexOf, deepMerge, defaultFormsModuleConfig, defaultState, downloadBase64File, downloadFromServerUrl, downloadFromUrl, empty, every, executeSmzMenuItem, executeTextPattern, featureSmzAccessStates, fixDate$1 as fixDate, fixDateProperties, fixDates, flatten, flattenObject, getAuthenticationInitialState, getCleanApplicationState, getFirst, getFirstElement, getFirstElements, getFormInputFromDialog, getGlobalInitialState, getInitialApplicationState, getInitialDatabaseStoreState, getInitialState$8 as getInitialState, getLastElements, getPreset, getProperty, getSymbol, getTreeNodeFromKey, getUiDefinitionsInitialState, getUiLocalizationInitialState, getUsersInitialState, getValidatorsForInput, handleBase64, isArray, isConvertibleToNumber, isDeepObject, isEmpty$1 as isEmpty, isFunction$1 as isFunction, isInsideCdkOverlay, isInteger, isNil, isNull$1 as isNull, isNullOrEmptyString, isNumber$1 as isNumber, isNumberFinite$1 as isNumberFinite, isNumeric, isObject$2 as isObject, isObjectHelper, isPositive, isSimpleNamedEntity, isString$1 as isString, isUndefined$1 as isUndefined, isValidAttemptedRoute, isWithinTime, leftPad, longestStringInArray, mapParamsToObject, markAsDecorated, mergeClone, mergeDeep, nameof, namesof, ngxsModuleForFeatureFaqsDbState, ngxsModuleForFeatureUiAthenaLayoutState, ngxsModuleForFeatureUiHephaestusLayoutState, ngxsModuleForFeatureUiNewAthenaLayoutState, normalizeDateToUtc, orderArrayByProperty, pad, peekAttemptedRoute, provideSmzCoreLogging, provideSmzEnvironment, rbkSafeHtmlPipe, removeElementFromArray, replaceAll, replaceArrayItem, replaceArrayPartialItem, replaceItem, replaceNgOnInit, resolvePostLoginUrl, resolveSmzTableRowId, rightPad, routerModuleForChildUsersModule, routerParamsDispatch, routerParamsListener, setNestedObject, shorten, showConfirmation, showDialog, showMarkdownDialog, showMessage, showObjectDialog, showPersistentDialog, shuffle, slugSmzDialogTestIdKey, slugSmzTableTestIdKey, sortArray, sortArrayOfObjects, sortArrayOfStrings, sortMenuItemsByLabel, sum, synchronizeNodes, synchronizeRow, synchronizeTable, synchronizeTrees, takeUntil, takeWhile, toDecimal, toSimpleNamedEntity, toString, unwrapDeep, upperFirst, uuidv4, wrapDeep };
57088
57142
  //# sourceMappingURL=ngx-smz-core.mjs.map