@ngx-smz/core 21.9.0-next.15 → 21.9.0-next.17
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.
|
@@ -2816,11 +2816,11 @@ class CalendarComponent {
|
|
|
2816
2816
|
ngOnInit() {
|
|
2817
2817
|
}
|
|
2818
2818
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2819
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: CalendarComponent, isStandalone: false, selector: "smz-calendar", inputs: { input: "input", control: "control", behaviors: "behaviors" }, ngImport: i0, template: "<div class=\"input_inner__wrapper flex flex-col flex-auto p-0 gap-1\">\
|
|
2819
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: CalendarComponent, isStandalone: false, selector: "smz-calendar", inputs: { input: "input", control: "control", behaviors: "behaviors" }, ngImport: i0, template: "<div class=\"input_inner__wrapper flex flex-col flex-auto p-0 gap-1\">\n <smz-label\n class=\"smz__input_name\"\n [text]=\"input.name\"\n [propertyName]=\"input.propertyName\"\n [showLabel]=\"input.hideLabel != true\"\n [warning]=\"input.warning?.()\"\n [help]=\"input.tooltip?.()\"\n [popover]=\"input.popover?.()\">\n </smz-label>\n <ui-date-picker class=\"w-full smz__input_value\" styleClass=\"w-full\" appendTo=\"body\" [dateFormat]=\"input.dateFormat != null ? input.dateFormat : 'dd/mm/yy'\" [touchUI]=\"input.touchUI != null ? input.touchUI : false\" [focusTrap]=\"input.focusTrap != null ? input.focusTrap : true\" [keepInvalid]=\"input.keepInvalid != null? input.keepInvalid : false\" [showButtonBar]=\"input.showButtonBar != null ? input.showButtonBar : false\" [showOnFocus]=\"input.showOnFocus != null ? input.showOnFocus : true\" [showIcon]=\"input.showIcon != null ? input.showIcon : false\" [timeOnly]=\"input.timeOnly\" [showTime]=\"input.showTime\" [inputId]=\"input.propertyName\" [formControl]=\"control\">\n </ui-date-picker>\n <smz-validation-messages [input]=\"input\" [control]=\"control\" [behaviors]=\"behaviors\"></smz-validation-messages>\n</div>", dependencies: [{ 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: LabelComponent, selector: "smz-label", inputs: ["text", "propertyName", "showLabel", "warning", "help", "popover"] }, { kind: "component", type: ValidationMessagesComponent, selector: "smz-validation-messages", inputs: ["input", "control", "behaviors", "extraMessages"] }] });
|
|
2820
2820
|
}
|
|
2821
2821
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
2822
2822
|
type: Component,
|
|
2823
|
-
args: [{ selector: 'smz-calendar', standalone: false, template: "<div class=\"input_inner__wrapper flex flex-col flex-auto p-0 gap-1\">\
|
|
2823
|
+
args: [{ selector: 'smz-calendar', standalone: false, template: "<div class=\"input_inner__wrapper flex flex-col flex-auto p-0 gap-1\">\n <smz-label\n class=\"smz__input_name\"\n [text]=\"input.name\"\n [propertyName]=\"input.propertyName\"\n [showLabel]=\"input.hideLabel != true\"\n [warning]=\"input.warning?.()\"\n [help]=\"input.tooltip?.()\"\n [popover]=\"input.popover?.()\">\n </smz-label>\n <ui-date-picker class=\"w-full smz__input_value\" styleClass=\"w-full\" appendTo=\"body\" [dateFormat]=\"input.dateFormat != null ? input.dateFormat : 'dd/mm/yy'\" [touchUI]=\"input.touchUI != null ? input.touchUI : false\" [focusTrap]=\"input.focusTrap != null ? input.focusTrap : true\" [keepInvalid]=\"input.keepInvalid != null? input.keepInvalid : false\" [showButtonBar]=\"input.showButtonBar != null ? input.showButtonBar : false\" [showOnFocus]=\"input.showOnFocus != null ? input.showOnFocus : true\" [showIcon]=\"input.showIcon != null ? input.showIcon : false\" [timeOnly]=\"input.timeOnly\" [showTime]=\"input.showTime\" [inputId]=\"input.propertyName\" [formControl]=\"control\">\n </ui-date-picker>\n <smz-validation-messages [input]=\"input\" [control]=\"control\" [behaviors]=\"behaviors\"></smz-validation-messages>\n</div>" }]
|
|
2824
2824
|
}], propDecorators: { input: [{
|
|
2825
2825
|
type: Input
|
|
2826
2826
|
}], control: [{
|
|
@@ -4115,11 +4115,11 @@ class InputMaskComponent {
|
|
|
4115
4115
|
control;
|
|
4116
4116
|
behaviors;
|
|
4117
4117
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: InputMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4118
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: InputMaskComponent, isStandalone: false, selector: "smz-input-mask", inputs: { input: "input", control: "control", behaviors: "behaviors" }, ngImport: i0, template: "<smz-label\
|
|
4118
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: InputMaskComponent, isStandalone: false, selector: "smz-input-mask", inputs: { input: "input", control: "control", behaviors: "behaviors" }, ngImport: i0, template: "<smz-label\n class=\"smz__input_name\"\n [text]=\"input.name\"\n [propertyName]=\"input.propertyName\"\n [showLabel]=\"input.hideLabel != true\"\n [warning]=\"input.warning?.()\"\n [help]=\"input.tooltip?.()\"\n [popover]=\"input.popover?.()\">\n</smz-label>\n\n<div class=\"input_inner__wrapper\">\n <ui-input-mask class=\"smz__input_value flex-1\" [mask]=\"input.mask\" [characterPattern]=\"input.characterPattern\" [unmask]=\"input.unmask\" [inputId]=\"input.propertyName\" [name]=\"input.propertyName\" type=\"text\" [formControl]=\"control\">\n </ui-input-mask>\n <smz-validation-messages [input]=\"input\" [control]=\"control\" [behaviors]=\"behaviors\"></smz-validation-messages>\n</div>", dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2.SmzInputMaskComponent, selector: "ui-input-mask", inputs: ["mask", "slotChar", "characterPattern", "unmask", "autoClear", "placeholder", "readonly", "inputId", "name", "type"], outputs: ["inputed", "blurred", "completed"] }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: LabelComponent, selector: "smz-label", inputs: ["text", "propertyName", "showLabel", "warning", "help", "popover"] }, { kind: "component", type: ValidationMessagesComponent, selector: "smz-validation-messages", inputs: ["input", "control", "behaviors", "extraMessages"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
4119
4119
|
}
|
|
4120
4120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: InputMaskComponent, decorators: [{
|
|
4121
4121
|
type: Component,
|
|
4122
|
-
args: [{ selector: 'smz-input-mask', encapsulation: ViewEncapsulation.None, standalone: false, template: "<smz-label\
|
|
4122
|
+
args: [{ selector: 'smz-input-mask', encapsulation: ViewEncapsulation.None, standalone: false, template: "<smz-label\n class=\"smz__input_name\"\n [text]=\"input.name\"\n [propertyName]=\"input.propertyName\"\n [showLabel]=\"input.hideLabel != true\"\n [warning]=\"input.warning?.()\"\n [help]=\"input.tooltip?.()\"\n [popover]=\"input.popover?.()\">\n</smz-label>\n\n<div class=\"input_inner__wrapper\">\n <ui-input-mask class=\"smz__input_value flex-1\" [mask]=\"input.mask\" [characterPattern]=\"input.characterPattern\" [unmask]=\"input.unmask\" [inputId]=\"input.propertyName\" [name]=\"input.propertyName\" type=\"text\" [formControl]=\"control\">\n </ui-input-mask>\n <smz-validation-messages [input]=\"input\" [control]=\"control\" [behaviors]=\"behaviors\"></smz-validation-messages>\n</div>" }]
|
|
4123
4123
|
}], propDecorators: { input: [{
|
|
4124
4124
|
type: Input
|
|
4125
4125
|
}], control: [{
|
|
@@ -4151,11 +4151,11 @@ class InputNumberComponent {
|
|
|
4151
4151
|
}
|
|
4152
4152
|
}
|
|
4153
4153
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: InputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4154
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: InputNumberComponent, isStandalone: false, selector: "smz-input-number", inputs: { input: "input", control: "control", behaviors: "behaviors", form: "form" }, ngImport: i0, template: "<smz-label\n class=\"smz__input_name\"\n [text]=\"input.name\"\n [propertyName]=\"input.propertyName\"\n [showLabel]=\"input.hideLabel != true\"\n [warning]=\"input.warning?.()\"\n [help]=\"input.tooltip?.()\"\n [popover]=\"input.popover?.()\">\n</smz-label>\n\n<div class=\"input_inner__wrapper\">\n @if (!input.useFraction) {\n <ui-input-mask class=\"smz__input_value flex-1\" slotChar=\"\" [autoClear]=\"false\" mask=\"9?9999999999999999999999999999999\" characterPattern=\"([0-9])\" [
|
|
4154
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: InputNumberComponent, isStandalone: false, selector: "smz-input-number", inputs: { input: "input", control: "control", behaviors: "behaviors", form: "form" }, ngImport: i0, template: "<smz-label\n class=\"smz__input_name\"\n [text]=\"input.name\"\n [propertyName]=\"input.propertyName\"\n [showLabel]=\"input.hideLabel != true\"\n [warning]=\"input.warning?.()\"\n [help]=\"input.tooltip?.()\"\n [popover]=\"input.popover?.()\">\n</smz-label>\n\n<div class=\"input_inner__wrapper\">\n @if (!input.useFraction) {\n <ui-input-mask class=\"smz__input_value flex-1\" slotChar=\"\" [autoClear]=\"false\" mask=\"9?9999999999999999999999999999999\" characterPattern=\"([0-9])\" [inputId]=\"input.propertyName\" [name]=\"input.propertyName\" [smzAutoFocus]=\"input.autoFocus\" [formControl]=\"control\" (blurred)=\"onInputMaskBlur()\" (inputed)=\"onInputMaskInput()\">\n </ui-input-mask>\n }\n @if (input.useFraction) {\n <ui-input-number class=\"smz__input_value flex-1\" [formControl]=\"control\" [locale]=\"input.locale\" [minFractionDigits]=\"input.minFractionDigits\" [maxFractionDigits]=\"input.maxFractionDigits\" [useGrouping]=\"input.useGrouping\" [inputId]=\"input.propertyName\" [name]=\"input.propertyName\" [smzAutoFocus]=\"input.autoFocus\" (inputed)=\"onInput($event)\">\n </ui-input-number>\n }\n <smz-validation-messages [input]=\"input\" [control]=\"control\" [behaviors]=\"behaviors\"></smz-validation-messages>\n</div>", dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2.SmzInputMaskComponent, selector: "ui-input-mask", inputs: ["mask", "slotChar", "characterPattern", "unmask", "autoClear", "placeholder", "readonly", "inputId", "name", "type"], outputs: ["inputed", "blurred", "completed"] }, { 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", "name"], outputs: ["inputed", "keyDown", "blurred", "focused"] }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.SmzAutoFocusDirective, selector: "[smzAutoFocus]", inputs: ["smzAutoFocus"] }, { kind: "component", type: LabelComponent, selector: "smz-label", inputs: ["text", "propertyName", "showLabel", "warning", "help", "popover"] }, { kind: "component", type: ValidationMessagesComponent, selector: "smz-validation-messages", inputs: ["input", "control", "behaviors", "extraMessages"] }] });
|
|
4155
4155
|
}
|
|
4156
4156
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: InputNumberComponent, decorators: [{
|
|
4157
4157
|
type: Component,
|
|
4158
|
-
args: [{ selector: 'smz-input-number', standalone: false, template: "<smz-label\n class=\"smz__input_name\"\n [text]=\"input.name\"\n [propertyName]=\"input.propertyName\"\n [showLabel]=\"input.hideLabel != true\"\n [warning]=\"input.warning?.()\"\n [help]=\"input.tooltip?.()\"\n [popover]=\"input.popover?.()\">\n</smz-label>\n\n<div class=\"input_inner__wrapper\">\n @if (!input.useFraction) {\n <ui-input-mask class=\"smz__input_value flex-1\" slotChar=\"\" [autoClear]=\"false\" mask=\"9?9999999999999999999999999999999\" characterPattern=\"([0-9])\" [
|
|
4158
|
+
args: [{ selector: 'smz-input-number', standalone: false, template: "<smz-label\n class=\"smz__input_name\"\n [text]=\"input.name\"\n [propertyName]=\"input.propertyName\"\n [showLabel]=\"input.hideLabel != true\"\n [warning]=\"input.warning?.()\"\n [help]=\"input.tooltip?.()\"\n [popover]=\"input.popover?.()\">\n</smz-label>\n\n<div class=\"input_inner__wrapper\">\n @if (!input.useFraction) {\n <ui-input-mask class=\"smz__input_value flex-1\" slotChar=\"\" [autoClear]=\"false\" mask=\"9?9999999999999999999999999999999\" characterPattern=\"([0-9])\" [inputId]=\"input.propertyName\" [name]=\"input.propertyName\" [smzAutoFocus]=\"input.autoFocus\" [formControl]=\"control\" (blurred)=\"onInputMaskBlur()\" (inputed)=\"onInputMaskInput()\">\n </ui-input-mask>\n }\n @if (input.useFraction) {\n <ui-input-number class=\"smz__input_value flex-1\" [formControl]=\"control\" [locale]=\"input.locale\" [minFractionDigits]=\"input.minFractionDigits\" [maxFractionDigits]=\"input.maxFractionDigits\" [useGrouping]=\"input.useGrouping\" [inputId]=\"input.propertyName\" [name]=\"input.propertyName\" [smzAutoFocus]=\"input.autoFocus\" (inputed)=\"onInput($event)\">\n </ui-input-number>\n }\n <smz-validation-messages [input]=\"input\" [control]=\"control\" [behaviors]=\"behaviors\"></smz-validation-messages>\n</div>" }]
|
|
4159
4159
|
}], propDecorators: { input: [{
|
|
4160
4160
|
type: Input
|
|
4161
4161
|
}], control: [{
|
|
@@ -17504,7 +17504,7 @@ class ColumnFilterFormElement {
|
|
|
17504
17504
|
}
|
|
17505
17505
|
}
|
|
17506
17506
|
}
|
|
17507
|
-
`, 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 });
|
|
17507
|
+
`, 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", "name"], outputs: ["inputed", "keyDown", "blurred", "focused"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
17508
17508
|
}
|
|
17509
17509
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ColumnFilterFormElement, decorators: [{
|
|
17510
17510
|
type: Component,
|
|
@@ -22618,7 +22618,7 @@ class SmzTableComponent {
|
|
|
22618
22618
|
this.tableHelper.clear(this.tableKey);
|
|
22619
22619
|
}
|
|
22620
22620
|
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 });
|
|
22621
|
-
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", validChange: "validChange", 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 });
|
|
22621
|
+
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", validChange: "validChange", 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", "name"], 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 });
|
|
22622
22622
|
}
|
|
22623
22623
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzTableComponent, decorators: [{
|
|
22624
22624
|
type: Component,
|