@solcre-org/core-ui 2.20.6 → 2.20.8
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.
|
@@ -10300,8 +10300,17 @@ class TableDataService {
|
|
|
10300
10300
|
this.setEndpoint(endpoint, modelFactory, loaderId, this.isPaginationEnabled, customArrayKey, params);
|
|
10301
10301
|
return;
|
|
10302
10302
|
}
|
|
10303
|
-
this.
|
|
10304
|
-
|
|
10303
|
+
if (this.isLoading) {
|
|
10304
|
+
return;
|
|
10305
|
+
}
|
|
10306
|
+
this.isLoading = true;
|
|
10307
|
+
if (loaderId) {
|
|
10308
|
+
this.loaderService.showLoader(loaderId);
|
|
10309
|
+
}
|
|
10310
|
+
this.modelApiService.loadData(endpoint, modelFactory, params, customArrayKey);
|
|
10311
|
+
setTimeout(() => {
|
|
10312
|
+
this.isLoading = false;
|
|
10313
|
+
}, 100);
|
|
10305
10314
|
}
|
|
10306
10315
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TableDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10307
10316
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TableDataService, providedIn: 'root' });
|
|
@@ -11887,6 +11896,15 @@ class HeaderService {
|
|
|
11887
11896
|
hasFilters = computed(() => {
|
|
11888
11897
|
return this.showFilter() || this.customFilters().length > 0;
|
|
11889
11898
|
});
|
|
11899
|
+
hasFiltersInsideModal = computed(() => {
|
|
11900
|
+
const customFilters = this.customFilters();
|
|
11901
|
+
const showFilterValue = this.showFilter();
|
|
11902
|
+
if (customFilters.length > 0) {
|
|
11903
|
+
const filtersOutsideModal = customFilters.filter(filter => filter.showOutsideFilterModal === true);
|
|
11904
|
+
return filtersOutsideModal.length < customFilters.length;
|
|
11905
|
+
}
|
|
11906
|
+
return showFilterValue;
|
|
11907
|
+
});
|
|
11890
11908
|
getRefreshCallback() {
|
|
11891
11909
|
return this.refreshCallback;
|
|
11892
11910
|
}
|
|
@@ -12192,7 +12210,7 @@ class HeaderService {
|
|
|
12192
12210
|
const hasCustomActions = this.customActions().length > 0;
|
|
12193
12211
|
return hasCustomActions;
|
|
12194
12212
|
case HeaderElementType.FILTER:
|
|
12195
|
-
return this.showDefaultFilter() &&
|
|
12213
|
+
return this.showDefaultFilter() && this.hasFiltersInsideModal();
|
|
12196
12214
|
case HeaderElementType.CREATE:
|
|
12197
12215
|
return this.showDefaultCreate() && this.showCreateButton() && this.hasCreatePermission();
|
|
12198
12216
|
case HeaderElementType.CUSTOM_TEMPLATE:
|
|
@@ -12211,7 +12229,7 @@ class HeaderService {
|
|
|
12211
12229
|
case HeaderElementType.CUSTOM_ACTIONS:
|
|
12212
12230
|
return this.customActions().length > 0;
|
|
12213
12231
|
case HeaderElementType.FILTER:
|
|
12214
|
-
return this.showDefaultFilter() &&
|
|
12232
|
+
return this.showDefaultFilter() && this.hasFiltersInsideModal();
|
|
12215
12233
|
case HeaderElementType.CREATE:
|
|
12216
12234
|
return this.showDefaultCreate() && this.showCreateButton() && this.hasCreatePermission();
|
|
12217
12235
|
case HeaderElementType.CUSTOM_TEMPLATE:
|
|
@@ -13352,7 +13370,7 @@ class GenericTableComponent {
|
|
|
13352
13370
|
currentFilterValues = signal(new Map());
|
|
13353
13371
|
currentActiveFilters = computed(() => this.generateActiveFilters());
|
|
13354
13372
|
headerFilters = computed(() => {
|
|
13355
|
-
return this.customFilters()
|
|
13373
|
+
return this.customFilters();
|
|
13356
13374
|
});
|
|
13357
13375
|
modalFilters = computed(() => {
|
|
13358
13376
|
return this.customFilters().filter(f => f.showOutsideFilterModal !== true);
|
|
@@ -13641,7 +13659,7 @@ class GenericTableComponent {
|
|
|
13641
13659
|
this.paginationService.initialize(this.tableId, this.endpoint() ? 0 : this.filterService.getFilteredData().length, this.pageSizeOptions());
|
|
13642
13660
|
this.subscriptions.push(this.paginationService.paginationChange$.subscribe(event => {
|
|
13643
13661
|
if (event.tableId === this.tableId && this.endpoint()) {
|
|
13644
|
-
this.
|
|
13662
|
+
this.reloadDataWithCurrentParams();
|
|
13645
13663
|
}
|
|
13646
13664
|
else if (!this.endpoint()) {
|
|
13647
13665
|
this.updateDisplayedDataFromServer(this.filterService.getFilteredData());
|
|
@@ -16914,7 +16932,8 @@ class HeaderComponent {
|
|
|
16914
16932
|
return false;
|
|
16915
16933
|
}
|
|
16916
16934
|
getHeaderFilters() {
|
|
16917
|
-
|
|
16935
|
+
const allFilters = this.headerService.getCustomFilters()();
|
|
16936
|
+
return allFilters.filter(filter => filter.showOutsideFilterModal === true);
|
|
16918
16937
|
}
|
|
16919
16938
|
getFilterValue(key) {
|
|
16920
16939
|
const pendingFilters = this.headerService.getPendingHeaderFilters()();
|
|
@@ -16981,7 +17000,7 @@ class HeaderComponent {
|
|
|
16981
17000
|
}
|
|
16982
17001
|
}
|
|
16983
17002
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16984
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: HeaderComponent, isStandalone: true, selector: "core-header", outputs: { filterRequested: "filterRequested", createRequested: "createRequested", globalActionTriggered: "globalActionTriggered" }, hostDirectives: [{ directive: CoreHostDirective }], ngImport: i0, template: "@if (headerService.getIsVisible()()) {\n @if (!headerService.getHeaderOutside()()) {\n <div class=\"c-header\">\n <div class=\"c-header__row\">\n <div class=\"c-header__group\">\n <h2 class=\"c-header__heading u-heading\">{{ getHeaderTitle() }}</h2>\n </div>\n\n <div class=\"c-header__group u-flex\">\n @for (\n element of headerService.getOrderedElements();\n track element.type + \"-\" + (element.actionId || $index)\n ) {\n @if (headerService.isElementVisible(element.type, element)) {\n @switch (element.type) {\n @case (HeaderElementType.GLOBAL_ACTIONS) {\n @for (\n globalAction of headerService.getGlobalActions()();\n track globalAction.label || $index\n ) {\n @if (hasPermission(globalAction)) {\n @if (\n globalAction.isSwitch && globalAction.switchOptions\n ) {\n <core-generic-switch\n [options]=\"globalAction.switchOptions\"\n [selectedValue]=\"globalAction.switchSelectedValue\"\n [ariaLabel]=\"\n globalAction.switchAriaLabel ||\n globalAction.label ||\n 'Switch options'\n \"\n (valueChange)=\"\n onGlobalSwitchChange($event, globalAction)\n \"\n >\n </core-generic-switch>\n } @else {\n <core-generic-button\n [config]=\"getGlobalActionButtonConfig(globalAction)\"\n (buttonClick)=\"\n onGlobalButtonClick($event, globalAction)\n \"\n >\n </core-generic-button>\n }\n }\n }\n }\n\n @case (HeaderElementType.CUSTOM_ACTIONS) {\n @for (\n customAction of headerService.getCustomActions()();\n track customAction.id\n ) {\n @if (isCustomActionVisible(customAction)) {\n <core-generic-button\n [config]=\"getCustomActionButtonConfig(customAction)\"\n (buttonClick)=\"\n onCustomButtonClick($event, customAction)\n \"\n >\n </core-generic-button>\n }\n }\n }\n\n @case (HeaderElementType.FILTER) {\n <core-generic-button\n [config]=\"getFilterButtonConfig()\"\n (buttonClick)=\"onFilterButtonClick()\"\n >\n </core-generic-button>\n }\n\n @case (HeaderElementType.CREATE) {\n <core-generic-button\n [config]=\"getCreateButtonConfig()\"\n (buttonClick)=\"onCreateButtonClick()\"\n >\n </core-generic-button>\n }\n\n @case (HeaderElementType.INDIVIDUAL_ACTION) {\n @if (getIndividualAction(element); as action) {\n @if (hasIndividualActionPermission(action)) {\n @if (isIndividualActionSwitch(action)) {\n <core-generic-switch\n [options]=\"action.switchOptions\"\n [selectedValue]=\"action.switchSelectedValue\"\n [ariaLabel]=\"\n action.switchAriaLabel ||\n action.label ||\n 'Switch options'\n \"\n (valueChange)=\"onGlobalSwitchChange($event, action)\"\n >\n </core-generic-switch>\n } @else if (element.actionType === \"global\") {\n <core-generic-button\n [config]=\"getGlobalActionButtonConfig(action)\"\n (buttonClick)=\"onGlobalButtonClick($event, action)\"\n >\n </core-generic-button>\n } @else if (element.actionType === \"custom\") {\n <core-generic-button\n [config]=\"getCustomActionButtonConfig(action)\"\n (buttonClick)=\"onCustomButtonClick($event, action)\"\n >\n </core-generic-button>\n }\n }\n }\n }\n }\n }\n }\n </div>\n </div>\n\n <p class=\"c-header__text u-text\" *ngIf=\"getHeaderText()\">\n {{ getHeaderText() }}\n </p>\n\n @if (\n headerService.isElementVisible(HeaderElementType.CUSTOM_TEMPLATE) &&\n headerService.getCustomTemplate()()\n ) {\n <ng-container\n [ngTemplateOutlet]=\"headerService.getCustomTemplate()()\"\n ></ng-container>\n }\n\n <!-- Custom filters outside modal -->\n @if (getHeaderFilters()
|
|
17003
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: HeaderComponent, isStandalone: true, selector: "core-header", outputs: { filterRequested: "filterRequested", createRequested: "createRequested", globalActionTriggered: "globalActionTriggered" }, hostDirectives: [{ directive: CoreHostDirective }], ngImport: i0, template: "@if (headerService.getIsVisible()()) {\n @if (!headerService.getHeaderOutside()()) {\n <div class=\"c-header\">\n <div class=\"c-header__row\">\n <div class=\"c-header__group\">\n <h2 class=\"c-header__heading u-heading\">{{ getHeaderTitle() }}</h2>\n </div>\n\n <div class=\"c-header__group u-flex\">\n @for (\n element of headerService.getOrderedElements();\n track element.type + \"-\" + (element.actionId || $index)\n ) {\n @if (headerService.isElementVisible(element.type, element)) {\n @switch (element.type) {\n @case (HeaderElementType.GLOBAL_ACTIONS) {\n @for (\n globalAction of headerService.getGlobalActions()();\n track globalAction.label || $index\n ) {\n @if (hasPermission(globalAction)) {\n @if (\n globalAction.isSwitch && globalAction.switchOptions\n ) {\n <core-generic-switch\n [options]=\"globalAction.switchOptions\"\n [selectedValue]=\"globalAction.switchSelectedValue\"\n [ariaLabel]=\"\n globalAction.switchAriaLabel ||\n globalAction.label ||\n 'Switch options'\n \"\n (valueChange)=\"\n onGlobalSwitchChange($event, globalAction)\n \"\n >\n </core-generic-switch>\n } @else {\n <core-generic-button\n [config]=\"getGlobalActionButtonConfig(globalAction)\"\n (buttonClick)=\"\n onGlobalButtonClick($event, globalAction)\n \"\n >\n </core-generic-button>\n }\n }\n }\n }\n\n @case (HeaderElementType.CUSTOM_ACTIONS) {\n @for (\n customAction of headerService.getCustomActions()();\n track customAction.id\n ) {\n @if (isCustomActionVisible(customAction)) {\n <core-generic-button\n [config]=\"getCustomActionButtonConfig(customAction)\"\n (buttonClick)=\"\n onCustomButtonClick($event, customAction)\n \"\n >\n </core-generic-button>\n }\n }\n }\n\n @case (HeaderElementType.FILTER) {\n <core-generic-button\n [config]=\"getFilterButtonConfig()\"\n (buttonClick)=\"onFilterButtonClick()\"\n >\n </core-generic-button>\n }\n\n @case (HeaderElementType.CREATE) {\n <core-generic-button\n [config]=\"getCreateButtonConfig()\"\n (buttonClick)=\"onCreateButtonClick()\"\n >\n </core-generic-button>\n }\n\n @case (HeaderElementType.INDIVIDUAL_ACTION) {\n @if (getIndividualAction(element); as action) {\n @if (hasIndividualActionPermission(action)) {\n @if (isIndividualActionSwitch(action)) {\n <core-generic-switch\n [options]=\"action.switchOptions\"\n [selectedValue]=\"action.switchSelectedValue\"\n [ariaLabel]=\"\n action.switchAriaLabel ||\n action.label ||\n 'Switch options'\n \"\n (valueChange)=\"onGlobalSwitchChange($event, action)\"\n >\n </core-generic-switch>\n } @else if (element.actionType === \"global\") {\n <core-generic-button\n [config]=\"getGlobalActionButtonConfig(action)\"\n (buttonClick)=\"onGlobalButtonClick($event, action)\"\n >\n </core-generic-button>\n } @else if (element.actionType === \"custom\") {\n <core-generic-button\n [config]=\"getCustomActionButtonConfig(action)\"\n (buttonClick)=\"onCustomButtonClick($event, action)\"\n >\n </core-generic-button>\n }\n }\n }\n }\n }\n }\n }\n </div>\n </div>\n\n <p class=\"c-header__text u-text\" *ngIf=\"getHeaderText()\">\n {{ getHeaderText() }}\n </p>\n\n @if (\n headerService.isElementVisible(HeaderElementType.CUSTOM_TEMPLATE) &&\n headerService.getCustomTemplate()()\n ) {\n <ng-container\n [ngTemplateOutlet]=\"headerService.getCustomTemplate()()\"\n ></ng-container>\n }\n\n <!-- Custom filters outside modal -->\n @if (getHeaderFilters().length > 0) {\n <div class=\"c-header__bottom\">\n <div class=\"c-header__filters\">\n <!-- Filter fields row -->\n <div>\n @for (filter of getHeaderFilters(); track filter.key) {\n <div class=\"c-header__filter-item\">\n <div\n coreDynamicField\n [field]=\"filter\"\n [value]=\"getFilterValue(filter.key.toString())\"\n [mode]=\"ModalMode.FILTER\"\n [errors]=\"getFilterErrors(filter.key.toString())\"\n (valueChange)=\"\n onFilterValueChange(filter.key.toString(), $event)\n \"\n ></div>\n </div>\n }\n </div>\n\n <!-- Action buttons row -->\n <div class=\"c-header__filter-actions\">\n <core-generic-button\n [config]=\"getApplyFiltersButtonConfig()\"\n (buttonClick)=\"onApplyHeaderFilters()\"\n >\n </core-generic-button>\n <core-generic-button\n [config]=\"getClearFiltersButtonConfig()\"\n (buttonClick)=\"onClearHeaderFilters()\"\n >\n </core-generic-button>\n </div>\n </div>\n </div>\n }\n </div>\n } @else {\n @if (\n headerService.isElementVisible(HeaderElementType.CUSTOM_TEMPLATE) &&\n headerService.getCustomTemplate()()\n ) {\n <ng-container\n [ngTemplateOutlet]=\"headerService.getCustomTemplate()()\"\n ></ng-container>\n }\n }\n}\n", styles: [":root{--header-bg: #ffffff;--header-text: #333;--header-shadow: rgba(0, 0, 0, .1);--logout-btn-color: #e74c3c;--logout-btn-hover: #c0392b;--theme-btn-color: #666;--theme-btn-hover: #007bff}.dark-mode{--header-bg: #1a1a1a;--header-text: #e0e0e0;--header-shadow: rgba(255, 255, 255, .1);--logout-btn-color: #ff6b6b;--logout-btn-hover: #ff8787;--theme-btn-color: #bbb;--theme-btn-hover: #4da8ff}.header{background-color:var(--header-bg);box-shadow:0 2px 4px var(--header-shadow);padding:15px 20px;display:flex;justify-content:space-between;align-items:center}.header .user-info{font-weight:500;color:var(--header-text)}.header .header-actions{display:flex;align-items:center;gap:15px}.header .theme-toggle-btn{background:none;border:none;color:var(--theme-btn-color);font-size:16px;cursor:pointer;display:flex;align-items:center}.header .theme-toggle-btn:hover{color:var(--theme-btn-hover)}.header .logout-btn{background:none;border:none;color:var(--logout-btn-color);font-size:16px;cursor:pointer;display:flex;align-items:center}.header .logout-btn i{margin-right:5px}.header .logout-btn:hover{color:var(--logout-btn-hover)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: GenericButtonComponent, selector: "core-generic-button", inputs: ["config", "data"], outputs: ["buttonClick"] }, { kind: "component", type: GenericSwitchComponent, selector: "core-generic-switch", inputs: ["options", "selectedValue", "ariaLabel"], outputs: ["valueChange"] }, { kind: "directive", type: DynamicFieldDirective, selector: "[coreDynamicField]", inputs: ["field", "value", "mode", "errors", "rowData", "formValue"], outputs: ["valueChange", "onBlurEvent", "onEnterEvent", "selectionChange"] }] });
|
|
16985
17004
|
}
|
|
16986
17005
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
16987
17006
|
type: Component,
|
|
@@ -16991,7 +17010,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
16991
17010
|
GenericButtonComponent,
|
|
16992
17011
|
GenericSwitchComponent,
|
|
16993
17012
|
DynamicFieldDirective
|
|
16994
|
-
], hostDirectives: [CoreHostDirective], template: "@if (headerService.getIsVisible()()) {\n @if (!headerService.getHeaderOutside()()) {\n <div class=\"c-header\">\n <div class=\"c-header__row\">\n <div class=\"c-header__group\">\n <h2 class=\"c-header__heading u-heading\">{{ getHeaderTitle() }}</h2>\n </div>\n\n <div class=\"c-header__group u-flex\">\n @for (\n element of headerService.getOrderedElements();\n track element.type + \"-\" + (element.actionId || $index)\n ) {\n @if (headerService.isElementVisible(element.type, element)) {\n @switch (element.type) {\n @case (HeaderElementType.GLOBAL_ACTIONS) {\n @for (\n globalAction of headerService.getGlobalActions()();\n track globalAction.label || $index\n ) {\n @if (hasPermission(globalAction)) {\n @if (\n globalAction.isSwitch && globalAction.switchOptions\n ) {\n <core-generic-switch\n [options]=\"globalAction.switchOptions\"\n [selectedValue]=\"globalAction.switchSelectedValue\"\n [ariaLabel]=\"\n globalAction.switchAriaLabel ||\n globalAction.label ||\n 'Switch options'\n \"\n (valueChange)=\"\n onGlobalSwitchChange($event, globalAction)\n \"\n >\n </core-generic-switch>\n } @else {\n <core-generic-button\n [config]=\"getGlobalActionButtonConfig(globalAction)\"\n (buttonClick)=\"\n onGlobalButtonClick($event, globalAction)\n \"\n >\n </core-generic-button>\n }\n }\n }\n }\n\n @case (HeaderElementType.CUSTOM_ACTIONS) {\n @for (\n customAction of headerService.getCustomActions()();\n track customAction.id\n ) {\n @if (isCustomActionVisible(customAction)) {\n <core-generic-button\n [config]=\"getCustomActionButtonConfig(customAction)\"\n (buttonClick)=\"\n onCustomButtonClick($event, customAction)\n \"\n >\n </core-generic-button>\n }\n }\n }\n\n @case (HeaderElementType.FILTER) {\n <core-generic-button\n [config]=\"getFilterButtonConfig()\"\n (buttonClick)=\"onFilterButtonClick()\"\n >\n </core-generic-button>\n }\n\n @case (HeaderElementType.CREATE) {\n <core-generic-button\n [config]=\"getCreateButtonConfig()\"\n (buttonClick)=\"onCreateButtonClick()\"\n >\n </core-generic-button>\n }\n\n @case (HeaderElementType.INDIVIDUAL_ACTION) {\n @if (getIndividualAction(element); as action) {\n @if (hasIndividualActionPermission(action)) {\n @if (isIndividualActionSwitch(action)) {\n <core-generic-switch\n [options]=\"action.switchOptions\"\n [selectedValue]=\"action.switchSelectedValue\"\n [ariaLabel]=\"\n action.switchAriaLabel ||\n action.label ||\n 'Switch options'\n \"\n (valueChange)=\"onGlobalSwitchChange($event, action)\"\n >\n </core-generic-switch>\n } @else if (element.actionType === \"global\") {\n <core-generic-button\n [config]=\"getGlobalActionButtonConfig(action)\"\n (buttonClick)=\"onGlobalButtonClick($event, action)\"\n >\n </core-generic-button>\n } @else if (element.actionType === \"custom\") {\n <core-generic-button\n [config]=\"getCustomActionButtonConfig(action)\"\n (buttonClick)=\"onCustomButtonClick($event, action)\"\n >\n </core-generic-button>\n }\n }\n }\n }\n }\n }\n }\n </div>\n </div>\n\n <p class=\"c-header__text u-text\" *ngIf=\"getHeaderText()\">\n {{ getHeaderText() }}\n </p>\n\n @if (\n headerService.isElementVisible(HeaderElementType.CUSTOM_TEMPLATE) &&\n headerService.getCustomTemplate()()\n ) {\n <ng-container\n [ngTemplateOutlet]=\"headerService.getCustomTemplate()()\"\n ></ng-container>\n }\n\n <!-- Custom filters outside modal -->\n @if (getHeaderFilters()
|
|
17013
|
+
], hostDirectives: [CoreHostDirective], template: "@if (headerService.getIsVisible()()) {\n @if (!headerService.getHeaderOutside()()) {\n <div class=\"c-header\">\n <div class=\"c-header__row\">\n <div class=\"c-header__group\">\n <h2 class=\"c-header__heading u-heading\">{{ getHeaderTitle() }}</h2>\n </div>\n\n <div class=\"c-header__group u-flex\">\n @for (\n element of headerService.getOrderedElements();\n track element.type + \"-\" + (element.actionId || $index)\n ) {\n @if (headerService.isElementVisible(element.type, element)) {\n @switch (element.type) {\n @case (HeaderElementType.GLOBAL_ACTIONS) {\n @for (\n globalAction of headerService.getGlobalActions()();\n track globalAction.label || $index\n ) {\n @if (hasPermission(globalAction)) {\n @if (\n globalAction.isSwitch && globalAction.switchOptions\n ) {\n <core-generic-switch\n [options]=\"globalAction.switchOptions\"\n [selectedValue]=\"globalAction.switchSelectedValue\"\n [ariaLabel]=\"\n globalAction.switchAriaLabel ||\n globalAction.label ||\n 'Switch options'\n \"\n (valueChange)=\"\n onGlobalSwitchChange($event, globalAction)\n \"\n >\n </core-generic-switch>\n } @else {\n <core-generic-button\n [config]=\"getGlobalActionButtonConfig(globalAction)\"\n (buttonClick)=\"\n onGlobalButtonClick($event, globalAction)\n \"\n >\n </core-generic-button>\n }\n }\n }\n }\n\n @case (HeaderElementType.CUSTOM_ACTIONS) {\n @for (\n customAction of headerService.getCustomActions()();\n track customAction.id\n ) {\n @if (isCustomActionVisible(customAction)) {\n <core-generic-button\n [config]=\"getCustomActionButtonConfig(customAction)\"\n (buttonClick)=\"\n onCustomButtonClick($event, customAction)\n \"\n >\n </core-generic-button>\n }\n }\n }\n\n @case (HeaderElementType.FILTER) {\n <core-generic-button\n [config]=\"getFilterButtonConfig()\"\n (buttonClick)=\"onFilterButtonClick()\"\n >\n </core-generic-button>\n }\n\n @case (HeaderElementType.CREATE) {\n <core-generic-button\n [config]=\"getCreateButtonConfig()\"\n (buttonClick)=\"onCreateButtonClick()\"\n >\n </core-generic-button>\n }\n\n @case (HeaderElementType.INDIVIDUAL_ACTION) {\n @if (getIndividualAction(element); as action) {\n @if (hasIndividualActionPermission(action)) {\n @if (isIndividualActionSwitch(action)) {\n <core-generic-switch\n [options]=\"action.switchOptions\"\n [selectedValue]=\"action.switchSelectedValue\"\n [ariaLabel]=\"\n action.switchAriaLabel ||\n action.label ||\n 'Switch options'\n \"\n (valueChange)=\"onGlobalSwitchChange($event, action)\"\n >\n </core-generic-switch>\n } @else if (element.actionType === \"global\") {\n <core-generic-button\n [config]=\"getGlobalActionButtonConfig(action)\"\n (buttonClick)=\"onGlobalButtonClick($event, action)\"\n >\n </core-generic-button>\n } @else if (element.actionType === \"custom\") {\n <core-generic-button\n [config]=\"getCustomActionButtonConfig(action)\"\n (buttonClick)=\"onCustomButtonClick($event, action)\"\n >\n </core-generic-button>\n }\n }\n }\n }\n }\n }\n }\n </div>\n </div>\n\n <p class=\"c-header__text u-text\" *ngIf=\"getHeaderText()\">\n {{ getHeaderText() }}\n </p>\n\n @if (\n headerService.isElementVisible(HeaderElementType.CUSTOM_TEMPLATE) &&\n headerService.getCustomTemplate()()\n ) {\n <ng-container\n [ngTemplateOutlet]=\"headerService.getCustomTemplate()()\"\n ></ng-container>\n }\n\n <!-- Custom filters outside modal -->\n @if (getHeaderFilters().length > 0) {\n <div class=\"c-header__bottom\">\n <div class=\"c-header__filters\">\n <!-- Filter fields row -->\n <div>\n @for (filter of getHeaderFilters(); track filter.key) {\n <div class=\"c-header__filter-item\">\n <div\n coreDynamicField\n [field]=\"filter\"\n [value]=\"getFilterValue(filter.key.toString())\"\n [mode]=\"ModalMode.FILTER\"\n [errors]=\"getFilterErrors(filter.key.toString())\"\n (valueChange)=\"\n onFilterValueChange(filter.key.toString(), $event)\n \"\n ></div>\n </div>\n }\n </div>\n\n <!-- Action buttons row -->\n <div class=\"c-header__filter-actions\">\n <core-generic-button\n [config]=\"getApplyFiltersButtonConfig()\"\n (buttonClick)=\"onApplyHeaderFilters()\"\n >\n </core-generic-button>\n <core-generic-button\n [config]=\"getClearFiltersButtonConfig()\"\n (buttonClick)=\"onClearHeaderFilters()\"\n >\n </core-generic-button>\n </div>\n </div>\n </div>\n }\n </div>\n } @else {\n @if (\n headerService.isElementVisible(HeaderElementType.CUSTOM_TEMPLATE) &&\n headerService.getCustomTemplate()()\n ) {\n <ng-container\n [ngTemplateOutlet]=\"headerService.getCustomTemplate()()\"\n ></ng-container>\n }\n }\n}\n", styles: [":root{--header-bg: #ffffff;--header-text: #333;--header-shadow: rgba(0, 0, 0, .1);--logout-btn-color: #e74c3c;--logout-btn-hover: #c0392b;--theme-btn-color: #666;--theme-btn-hover: #007bff}.dark-mode{--header-bg: #1a1a1a;--header-text: #e0e0e0;--header-shadow: rgba(255, 255, 255, .1);--logout-btn-color: #ff6b6b;--logout-btn-hover: #ff8787;--theme-btn-color: #bbb;--theme-btn-hover: #4da8ff}.header{background-color:var(--header-bg);box-shadow:0 2px 4px var(--header-shadow);padding:15px 20px;display:flex;justify-content:space-between;align-items:center}.header .user-info{font-weight:500;color:var(--header-text)}.header .header-actions{display:flex;align-items:center;gap:15px}.header .theme-toggle-btn{background:none;border:none;color:var(--theme-btn-color);font-size:16px;cursor:pointer;display:flex;align-items:center}.header .theme-toggle-btn:hover{color:var(--theme-btn-hover)}.header .logout-btn{background:none;border:none;color:var(--logout-btn-color);font-size:16px;cursor:pointer;display:flex;align-items:center}.header .logout-btn i{margin-right:5px}.header .logout-btn:hover{color:var(--logout-btn-hover)}\n"] }]
|
|
16995
17014
|
}], ctorParameters: () => [] });
|
|
16996
17015
|
|
|
16997
17016
|
class MobileHeaderComponent {
|
|
@@ -17151,12 +17170,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
17151
17170
|
// Este archivo es generado automáticamente por scripts/update-version.js
|
|
17152
17171
|
// No edites manualmente este archivo
|
|
17153
17172
|
const VERSION = {
|
|
17154
|
-
full: '2.20.
|
|
17173
|
+
full: '2.20.8',
|
|
17155
17174
|
major: 2,
|
|
17156
17175
|
minor: 20,
|
|
17157
|
-
patch:
|
|
17158
|
-
timestamp: '2026-
|
|
17159
|
-
buildDate: '
|
|
17176
|
+
patch: 8,
|
|
17177
|
+
timestamp: '2026-02-02T16:23:19.801Z',
|
|
17178
|
+
buildDate: '2/2/2026'
|
|
17160
17179
|
};
|
|
17161
17180
|
|
|
17162
17181
|
class MainNavComponent {
|