@solcre-org/core-ui 2.20.7 → 2.20.9
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.
|
@@ -1377,6 +1377,9 @@ class SelectFieldComponent extends BaseFieldComponent {
|
|
|
1377
1377
|
const hasValidValue = !Array.isArray(signalValue) || signalValue.length > 0;
|
|
1378
1378
|
this.hasValue.set(hasValidValue);
|
|
1379
1379
|
}
|
|
1380
|
+
else {
|
|
1381
|
+
this.hasValue.set(false);
|
|
1382
|
+
}
|
|
1380
1383
|
});
|
|
1381
1384
|
effect(() => {
|
|
1382
1385
|
const shouldDisable = this.mode() === ModalMode.VIEW || this.evaluateReadonly() || this.evaluateDisabled();
|
|
@@ -10300,8 +10303,17 @@ class TableDataService {
|
|
|
10300
10303
|
this.setEndpoint(endpoint, modelFactory, loaderId, this.isPaginationEnabled, customArrayKey, params);
|
|
10301
10304
|
return;
|
|
10302
10305
|
}
|
|
10303
|
-
this.
|
|
10304
|
-
|
|
10306
|
+
if (this.isLoading) {
|
|
10307
|
+
return;
|
|
10308
|
+
}
|
|
10309
|
+
this.isLoading = true;
|
|
10310
|
+
if (loaderId) {
|
|
10311
|
+
this.loaderService.showLoader(loaderId);
|
|
10312
|
+
}
|
|
10313
|
+
this.modelApiService.loadData(endpoint, modelFactory, params, customArrayKey);
|
|
10314
|
+
setTimeout(() => {
|
|
10315
|
+
this.isLoading = false;
|
|
10316
|
+
}, 100);
|
|
10305
10317
|
}
|
|
10306
10318
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TableDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10307
10319
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TableDataService, providedIn: 'root' });
|
|
@@ -13650,7 +13662,7 @@ class GenericTableComponent {
|
|
|
13650
13662
|
this.paginationService.initialize(this.tableId, this.endpoint() ? 0 : this.filterService.getFilteredData().length, this.pageSizeOptions());
|
|
13651
13663
|
this.subscriptions.push(this.paginationService.paginationChange$.subscribe(event => {
|
|
13652
13664
|
if (event.tableId === this.tableId && this.endpoint()) {
|
|
13653
|
-
this.
|
|
13665
|
+
this.reloadDataWithCurrentParams();
|
|
13654
13666
|
}
|
|
13655
13667
|
else if (!this.endpoint()) {
|
|
13656
13668
|
this.updateDisplayedDataFromServer(this.filterService.getFilteredData());
|
|
@@ -16688,6 +16700,7 @@ class HeaderComponent {
|
|
|
16688
16700
|
filterRequested = output();
|
|
16689
16701
|
createRequested = output();
|
|
16690
16702
|
globalActionTriggered = output();
|
|
16703
|
+
clearTrigger = signal(0);
|
|
16691
16704
|
constructor() {
|
|
16692
16705
|
this.user = this.authService.getLoggedUser();
|
|
16693
16706
|
}
|
|
@@ -16927,12 +16940,13 @@ class HeaderComponent {
|
|
|
16927
16940
|
return allFilters.filter(filter => filter.showOutsideFilterModal === true);
|
|
16928
16941
|
}
|
|
16929
16942
|
getFilterValue(key) {
|
|
16943
|
+
const trigger = this.clearTrigger();
|
|
16930
16944
|
const pendingFilters = this.headerService.getPendingHeaderFilters()();
|
|
16931
16945
|
const appliedFilters = this.headerService.getHeaderFilterValues()();
|
|
16932
16946
|
if (pendingFilters.has(key)) {
|
|
16933
|
-
return pendingFilters.get(key) ??
|
|
16947
|
+
return pendingFilters.get(key) ?? null;
|
|
16934
16948
|
}
|
|
16935
|
-
return appliedFilters.get(key) ??
|
|
16949
|
+
return appliedFilters.get(key) ?? null;
|
|
16936
16950
|
}
|
|
16937
16951
|
onFilterValueChange(key, value) {
|
|
16938
16952
|
const callback = this.headerService.getHeaderFilterChangeCallback()();
|
|
@@ -16989,6 +17003,12 @@ class HeaderComponent {
|
|
|
16989
17003
|
if (clearCallback) {
|
|
16990
17004
|
clearCallback();
|
|
16991
17005
|
}
|
|
17006
|
+
const emptyFilters = new Map();
|
|
17007
|
+
this.getHeaderFilters().forEach(filter => {
|
|
17008
|
+
emptyFilters.set(filter.key.toString(), null);
|
|
17009
|
+
});
|
|
17010
|
+
this.headerService.setPendingHeaderFilters(emptyFilters);
|
|
17011
|
+
this.clearTrigger.update(v => v + 1);
|
|
16992
17012
|
}
|
|
16993
17013
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16994
17014
|
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"] }] });
|
|
@@ -17161,12 +17181,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
17161
17181
|
// Este archivo es generado automáticamente por scripts/update-version.js
|
|
17162
17182
|
// No edites manualmente este archivo
|
|
17163
17183
|
const VERSION = {
|
|
17164
|
-
full: '2.20.
|
|
17184
|
+
full: '2.20.9',
|
|
17165
17185
|
major: 2,
|
|
17166
17186
|
minor: 20,
|
|
17167
|
-
patch:
|
|
17168
|
-
timestamp: '2026-02-
|
|
17169
|
-
buildDate: '
|
|
17187
|
+
patch: 9,
|
|
17188
|
+
timestamp: '2026-02-03T15:24:39.625Z',
|
|
17189
|
+
buildDate: '3/2/2026'
|
|
17170
17190
|
};
|
|
17171
17191
|
|
|
17172
17192
|
class MainNavComponent {
|