@solcre-org/core-ui 2.12.36 → 2.12.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { HostBinding, Directive, input, Component, inject, output, computed, signal, effect, Pipe, Injectable, ViewChild, ViewContainerRef, TemplateRef, InjectionToken, ContentChild, ChangeDetectionStrategy, ElementRef, Input, HostListener, viewChild, ChangeDetectorRef, afterNextRender, importProvidersFrom } from '@angular/core';
2
+ import { HostBinding, Directive, input, Component, inject, output, computed, signal, effect, Pipe, Injectable, ViewChild, ViewContainerRef, TemplateRef, InjectionToken, ContentChild, ChangeDetectionStrategy, ElementRef, HostListener, viewChild, ChangeDetectorRef, afterNextRender, importProvidersFrom } from '@angular/core';
3
3
  import * as i2 from '@angular/common';
4
4
  import { CommonModule, DatePipe } from '@angular/common';
5
5
  import * as i3 from '@ngx-translate/core';
@@ -2229,7 +2229,9 @@ class SelectFieldComponent extends BaseFieldComponent {
2229
2229
  String(opt.value) === String(currentInitialValue));
2230
2230
  if (matchingOption) {
2231
2231
  setTimeout(() => {
2232
- this.formControl().setValue(currentInitialValue, { emitEvent: false });
2232
+ this.formControl().setValue(currentInitialValue, { emitEvent: true });
2233
+ this.valueChange.emit(currentInitialValue);
2234
+ this.hasValue.set(true);
2233
2235
  this.isInitialized.set(true);
2234
2236
  }, 0);
2235
2237
  }
@@ -2243,9 +2245,15 @@ class SelectFieldComponent extends BaseFieldComponent {
2243
2245
  if (newValue !== null && newValue !== undefined && newValue !== currentValue) {
2244
2246
  this.formControl().setValue(newValue, { emitEvent: true });
2245
2247
  this.valueChange.emit(newValue);
2248
+ this.hasValue.set(true);
2246
2249
  }
2247
2250
  }
2248
- }, 10);
2251
+ const finalValue = this.formControl().value;
2252
+ if (finalValue !== null && finalValue !== undefined && finalValue !== '') {
2253
+ const hasValidValue = !Array.isArray(finalValue) || finalValue.length > 0;
2254
+ this.hasValue.set(hasValidValue);
2255
+ }
2256
+ }, 100);
2249
2257
  }
2250
2258
  compareWith = (item, selected) => {
2251
2259
  if (!item || selected === null || selected === undefined) {
@@ -2285,6 +2293,11 @@ class SelectFieldComponent extends BaseFieldComponent {
2285
2293
  else {
2286
2294
  finalValue = newValue;
2287
2295
  }
2296
+ const hasValidValue = finalValue !== null &&
2297
+ finalValue !== undefined &&
2298
+ finalValue !== '' &&
2299
+ (!Array.isArray(finalValue) || finalValue.length > 0);
2300
+ this.hasValue.set(hasValidValue);
2288
2301
  const fieldConfig = this.field();
2289
2302
  if (fieldConfig.onSelectionChange && this.formValue()) {
2290
2303
  try {
@@ -5397,6 +5410,11 @@ class GenericModalComponent {
5397
5410
  this.hasUnsavedChanges.set(false);
5398
5411
  return;
5399
5412
  }
5413
+ const availableFields = this.allFields();
5414
+ const hasTemplate = !!this.customTemplate();
5415
+ if (!hasTemplate && availableFields.length === 0) {
5416
+ return;
5417
+ }
5400
5418
  if (!this.isInitialized()) {
5401
5419
  this.initializeData();
5402
5420
  this.initializeActiveTabAndStep();
@@ -5455,14 +5473,17 @@ class GenericModalComponent {
5455
5473
  const payloadKey = (field.keyToPayload ?? field.key);
5456
5474
  const modeConfig = field.modes?.[this.mode()];
5457
5475
  const defaultValue = modeConfig?.defaultValue ?? field.defaultValue;
5476
+ let initialValue = newInstance[fieldKey];
5458
5477
  if (this.mode() === ModalMode.CREATE) {
5459
- if (defaultValue !== undefined && newInstance[fieldKey] === undefined) {
5478
+ if (defaultValue !== undefined) {
5460
5479
  if (typeof defaultValue === 'function') {
5461
5480
  const computedValue = defaultValue(newInstance);
5462
5481
  newInstance[payloadKey] = computedValue;
5482
+ initialValue = computedValue;
5463
5483
  }
5464
5484
  else {
5465
5485
  newInstance[payloadKey] = defaultValue;
5486
+ initialValue = defaultValue;
5466
5487
  }
5467
5488
  }
5468
5489
  }
@@ -5470,42 +5491,49 @@ class GenericModalComponent {
5470
5491
  if (typeof defaultValue === 'function') {
5471
5492
  const computedValue = defaultValue(newInstance);
5472
5493
  newInstance[payloadKey] = computedValue;
5494
+ initialValue = computedValue;
5473
5495
  }
5474
5496
  }
5475
5497
  const validators = modeConfig?.validators ?? field.validators ?? [];
5476
- formGroup[fieldKey] = [newInstance[fieldKey], validators];
5498
+ formGroup[fieldKey] = [initialValue, validators];
5477
5499
  });
5478
5500
  this.form.set(this.formBuilder.group(formGroup));
5479
- this.allFields().forEach(field => {
5480
- const fieldKey = field.key;
5481
- const payloadKey = (field.keyToPayload ?? field.key);
5482
- if ('dynamicValue' in field && typeof field.dynamicValue === 'function') {
5483
- const dynamicVal = field.dynamicValue(newInstance);
5484
- if (dynamicVal !== undefined) {
5485
- newInstance[payloadKey] = dynamicVal;
5486
- const control = this.form().get(fieldKey);
5487
- if (control) {
5488
- control.setValue(dynamicVal, { emitEvent: false });
5501
+ setTimeout(() => {
5502
+ this.allFields().forEach(field => {
5503
+ const fieldKey = field.key;
5504
+ const payloadKey = (field.keyToPayload ?? field.key);
5505
+ if ('dynamicValue' in field && typeof field.dynamicValue === 'function') {
5506
+ const dynamicVal = field.dynamicValue(newInstance);
5507
+ if (dynamicVal !== undefined && dynamicVal !== null) {
5508
+ newInstance[payloadKey] = dynamicVal;
5509
+ const control = this.form().get(fieldKey);
5510
+ if (control) {
5511
+ control.setValue(dynamicVal, { emitEvent: true });
5512
+ }
5489
5513
  }
5490
5514
  }
5491
- }
5492
- });
5493
- setTimeout(() => {
5515
+ });
5516
+ this.allFields().forEach(field => {
5517
+ const fieldKey = field.key;
5518
+ const control = this.form().get(fieldKey);
5519
+ if (control && control.value !== undefined && control.value !== null) {
5520
+ const payloadKey = (field.keyToPayload ?? field.key);
5521
+ newInstance[payloadKey] = control.value;
5522
+ }
5523
+ });
5494
5524
  Object.values(this.form().controls).forEach(control => {
5495
5525
  control.markAsUntouched();
5496
5526
  });
5497
5527
  this.fieldErrors.set({});
5498
5528
  this.internalErrors.set([]);
5499
- }, 0);
5500
- this.editedData.set(newInstance);
5501
- if (this.mode() !== ModalMode.VIEW) {
5502
- const originalCopy = Object.create(Object.getPrototypeOf(newInstance));
5503
- Object.assign(originalCopy, newInstance);
5504
- this.originalData.set(originalCopy);
5505
- }
5506
- setTimeout(() => {
5529
+ this.editedData.set(newInstance);
5530
+ if (this.mode() !== ModalMode.VIEW) {
5531
+ const originalCopy = Object.create(Object.getPrototypeOf(newInstance));
5532
+ Object.assign(originalCopy, newInstance);
5533
+ this.originalData.set(originalCopy);
5534
+ }
5507
5535
  this.modalData.emit(newInstance);
5508
- }, 1);
5536
+ }, 50);
5509
5537
  }
5510
5538
  initializeActiveTabAndStep() {
5511
5539
  if (this.hasTabs()) {
@@ -8036,17 +8064,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
8036
8064
  class GenericPaginationComponent {
8037
8065
  paginationService;
8038
8066
  tableDataService;
8039
- tableId;
8040
- isServerSide = false;
8067
+ tableId = input();
8068
+ isServerSide = input(false);
8041
8069
  subscription = null;
8042
8070
  constructor(paginationService, tableDataService) {
8043
8071
  this.paginationService = paginationService;
8044
8072
  this.tableDataService = tableDataService;
8045
8073
  }
8046
8074
  ngOnInit() {
8047
- if (this.isServerSide) {
8075
+ if (this.isServerSide()) {
8048
8076
  this.subscription = this.paginationService.paginationChange$.subscribe(event => {
8049
- if (event.tableId === this.tableId) {
8077
+ if (event.tableId === this.tableId()) {
8050
8078
  this.tableDataService.updatePagination(event.page, event.size);
8051
8079
  }
8052
8080
  });
@@ -8058,29 +8086,29 @@ class GenericPaginationComponent {
8058
8086
  }
8059
8087
  }
8060
8088
  getCurrentPage() {
8061
- return this.paginationService.getCurrentPage(this.tableId)();
8089
+ return this.paginationService.getCurrentPage(this.tableId())();
8062
8090
  }
8063
8091
  getPageSize() {
8064
- return this.paginationService.getPageSize(this.tableId)();
8092
+ return this.paginationService.getPageSize(this.tableId())();
8065
8093
  }
8066
8094
  getTotalItems() {
8067
- return this.paginationService.getTotalItems(this.tableId)();
8095
+ return this.paginationService.getTotalItems(this.tableId())();
8068
8096
  }
8069
8097
  getTotalPages() {
8070
- return this.paginationService.getTotalPages(this.tableId)();
8098
+ return this.paginationService.getTotalPages(this.tableId())();
8071
8099
  }
8072
8100
  getPageSizeOptions() {
8073
- return this.paginationService.getPageSizeOptions(this.tableId);
8101
+ return this.paginationService.getPageSizeOptions(this.tableId());
8074
8102
  }
8075
8103
  onPageChange(page) {
8076
- this.paginationService.setCurrentPage(this.tableId, page);
8104
+ this.paginationService.setCurrentPage(this.tableId(), page);
8077
8105
  }
8078
8106
  handlePageSizeChange(event) {
8079
8107
  const select = event.target;
8080
8108
  if (select) {
8081
8109
  const newSize = parseInt(select.value, 10);
8082
8110
  if (!isNaN(newSize)) {
8083
- this.paginationService.setPageSize(this.tableId, newSize);
8111
+ this.paginationService.setPageSize(this.tableId(), newSize);
8084
8112
  }
8085
8113
  }
8086
8114
  }
@@ -8129,16 +8157,12 @@ class GenericPaginationComponent {
8129
8157
  return pages;
8130
8158
  }
8131
8159
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GenericPaginationComponent, deps: [{ token: PaginationService }, { token: TableDataService }], target: i0.ɵɵFactoryTarget.Component });
8132
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: GenericPaginationComponent, isStandalone: true, selector: "core-generic-pagination", inputs: { tableId: "tableId", isServerSide: "isServerSide" }, hostDirectives: [{ directive: CoreHostDirective }], ngImport: i0, template: "@if (getTotalItems() > 0) {\n <div class=\"c-pagination\">\n <p class=\"c-pagination__summary\">\n {{ 'pagination.viewing' | translate }} \n <span>{{ getDisplayedRange().start }}-{{ getDisplayedRange().end }}</span> \n {{ 'pagination.of' | translate }} \n <span>{{ getTotalItems() }}</span>\n </p>\n <div class=\"c-pagination__controls\">\n <label for=\"page-size-{{ tableId }}\" class=\"c-pagination__summary\">\n {{ 'pagination.itemsPerPage' | translate }}:\n </label>\n <select \n id=\"page-size-{{ tableId }}\"\n class=\"c-input \"\n [value]=\"getPageSize()\"\n (change)=\"handlePageSizeChange($event)\">\n @for (option of getPageSizeOptions(); track option) {\n <option [value]=\"option\">{{ option }}</option>\n }\n </select>\n </div>\n\n <nav class=\"c-pager\">\n <ul class=\"c-pager__list\">\n <li class=\"c-pager__item\">\n <a class=\"c-pager__link\" \n [class.disabled]=\"getCurrentPage() === 1\" \n (click)=\"onPageChange(getCurrentPage() - 1)\">\n <span class=\"icon-arrow-left\"></span>\n </a>\n </li>\n\n <ng-container *ngFor=\"let page of getVisiblePages()\">\n <li class=\"c-pager__item\">\n @if (page === '...') {\n <span class=\"c-pager__link\">...</span>\n } @else {\n <a class=\"c-pager__link\" \n [class.is-active]=\"getCurrentPage() === page\"\n (click)=\"onPageChange(+page)\">\n {{ page }}\n </a>\n }\n </li>\n </ng-container>\n\n <li class=\"c-pager__item\">\n <a class=\"c-pager__link\" \n [class.disabled]=\"getCurrentPage() === getTotalPages()\"\n (click)=\"onPageChange(getCurrentPage() + 1)\">\n <span class=\"icon-arrow-right\"></span>\n </a>\n </li>\n </ul>\n </nav>\n </div>\n}", styles: [".ng-select .ng-select-container .ng-value-container{flex-wrap:wrap}.c-entry-input--ng-select.is-placeholder ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input input::placeholder{color:var(--_entry-input-placeholder-color);opacity:1}.c-entry-input--ng-select.is-placeholder ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input input{color:var(--_entry-input-placeholder-color)}.c-entry-input--ng-select:not(.is-placeholder) ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input input::placeholder{opacity:0}::ng-deep .ng-select{width:100%!important;display:contents}.c-entry-input--ng-select{position:relative}::ng-deep .ng-dropdown-panel{top:0;right:0}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-value{background-color:var(--form-highlighted-color, var(--color-neutral-300));color:#3f4e6a;border-radius:var(--_entry-input-br);padding:.2em .8em;margin:.2em;border:none;border-radius:4px}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-value .ng-value-icon{border:none;padding-right:.4em;color:#3f4e6a}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items{border:none;min-height:auto;padding:0;position:relative;right:0;margin-top:3em;box-shadow:1em 2.4em 3.4em -2em hsl(var(--color-neutral-900-hsl)/25%);background-color:var(--color-neutral-100)}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{padding:.6em .8em;color:#6a788c;cursor:pointer;transition:background-color .1s ease-out}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{color:var(--color-primary-400)}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{color:var(--color-primary-400);font-weight:500}::ng-deep .ng-dropdown-panel .scrollable-content{background:#f2f5fa}::ng-deep .ng-dropdown-panel-items.scroll-host{background:#f2f5fa;padding:1em;border-radius:var(--_entry-input-br)}::ng-deep app-server-select-field .ng-select:not(.ng-select-filtered):not(.ng-select-opened) .ng-dropdown-panel{opacity:0!important}::ng-deep .c-entry-input--ng-select{--_entry-input-padd-y: .76em}::ng-deep .c-entry-input--ng-select:has(.ng-value-container .ng-value){--_entry-input-padd-y: .35em}::ng-deep .c-entry-input--ng-select:has(.ng-value-container .ng-value) .ng-select .ng-select-container .ng-value-container .ng-input{margin-left:8px}::ng-deep .c-entry-input--ng-select:has(.ng-value-container .ng-value) .ng-select .ng-select-container .ng-value-container .ng-input>input{height:100%}::ng-deep .ng-dropdown-panel-items.scroll-host:has(.ng-select-notfound){background-color:hsl(from hsl(var(--color-context-error-hsl)) h s 94%);color:hsl(from hsl(var(--color-context-error-hsl)) h s 60%)}::ng-deep .ng-dropdown-panel-items.scroll-host:has(.ng-select-loading){background-color:hsl(from hsl(var(--color-alternative-800-hsl)) h s 96%);color:hsl(from hsl(var(--color-alternative-800-hsl)) h 90% 70%)}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container{display:grid;justify-content:start}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{height:-webkit-fill-available}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input>input{height:98%}::ng-deep .ng-select.ng-select-single .ng-select-container{overflow:visible;position:relative;cursor:pointer}::ng-deep .ng-select.ng-select-single .ng-select-container:before{content:\"\";position:absolute;left:calc(var(--_entry-input-padd-x) * -1);right:calc(var(--_entry-input-padd-x) * -1 - var(--_entry-input-addon-gap) - var(--_entry-input-addon-icon-fz));top:calc(max(var(--_entry-input-padd-y) * var(--_size-factor, 1),2px)*-1);bottom:calc(max(var(--_entry-input-padd-y) * var(--_size-factor, 1),2px)*-1)}::ng-deep .ng-select .ng-clear-wrapper .ng-clear{position:absolute;top:50%;transform:translateY(-50%)}@media (hover: hover){::ng-deep .ng-select .ng-clear-wrapper:is(:hover,:focus-visible){color:var(--color-hover)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
8160
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: GenericPaginationComponent, isStandalone: true, selector: "core-generic-pagination", inputs: { tableId: { classPropertyName: "tableId", publicName: "tableId", isSignal: true, isRequired: false, transformFunction: null }, isServerSide: { classPropertyName: "isServerSide", publicName: "isServerSide", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: CoreHostDirective }], ngImport: i0, template: "@if (getTotalItems() > 0) {\n <div class=\"c-pagination\">\n <p class=\"c-pagination__summary\">\n {{ 'pagination.viewing' | translate }} \n <span>{{ getDisplayedRange().start }}-{{ getDisplayedRange().end }}</span> \n {{ 'pagination.of' | translate }} \n <span>{{ getTotalItems() }}</span>\n </p>\n <div class=\"c-pagination__controls\">\n <label for=\"page-size-{{ tableId }}\" class=\"c-pagination__summary\">\n {{ 'pagination.itemsPerPage' | translate }}:\n </label>\n <select \n id=\"page-size-{{ tableId }}\"\n class=\"c-input \"\n [value]=\"getPageSize()\"\n (change)=\"handlePageSizeChange($event)\">\n @for (option of getPageSizeOptions(); track option) {\n <option [value]=\"option\">{{ option }}</option>\n }\n </select>\n </div>\n\n <nav class=\"c-pager\">\n <ul class=\"c-pager__list\">\n <li class=\"c-pager__item\">\n <a class=\"c-pager__link\" \n [class.disabled]=\"getCurrentPage() === 1\" \n (click)=\"onPageChange(getCurrentPage() - 1)\">\n <span class=\"icon-arrow-left\"></span>\n </a>\n </li>\n\n <ng-container *ngFor=\"let page of getVisiblePages()\">\n <li class=\"c-pager__item\">\n @if (page === '...') {\n <span class=\"c-pager__link\">...</span>\n } @else {\n <a class=\"c-pager__link\" \n [class.is-active]=\"getCurrentPage() === page\"\n (click)=\"onPageChange(+page)\">\n {{ page }}\n </a>\n }\n </li>\n </ng-container>\n\n <li class=\"c-pager__item\">\n <a class=\"c-pager__link\" \n [class.disabled]=\"getCurrentPage() === getTotalPages()\"\n (click)=\"onPageChange(getCurrentPage() + 1)\">\n <span class=\"icon-arrow-right\"></span>\n </a>\n </li>\n </ul>\n </nav>\n </div>\n}", styles: [".ng-select .ng-select-container .ng-value-container{flex-wrap:wrap}.c-entry-input--ng-select.is-placeholder ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input input::placeholder{color:var(--_entry-input-placeholder-color);opacity:1}.c-entry-input--ng-select.is-placeholder ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input input{color:var(--_entry-input-placeholder-color)}.c-entry-input--ng-select:not(.is-placeholder) ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input input::placeholder{opacity:0}::ng-deep .ng-select{width:100%!important;display:contents}.c-entry-input--ng-select{position:relative}::ng-deep .ng-dropdown-panel{top:0;right:0}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-value{background-color:var(--form-highlighted-color, var(--color-neutral-300));color:#3f4e6a;border-radius:var(--_entry-input-br);padding:.2em .8em;margin:.2em;border:none;border-radius:4px}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-value .ng-value-icon{border:none;padding-right:.4em;color:#3f4e6a}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items{border:none;min-height:auto;padding:0;position:relative;right:0;margin-top:3em;box-shadow:1em 2.4em 3.4em -2em hsl(var(--color-neutral-900-hsl)/25%);background-color:var(--color-neutral-100)}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{padding:.6em .8em;color:#6a788c;cursor:pointer;transition:background-color .1s ease-out}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{color:var(--color-primary-400)}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{color:var(--color-primary-400);font-weight:500}::ng-deep .ng-dropdown-panel .scrollable-content{background:#f2f5fa}::ng-deep .ng-dropdown-panel-items.scroll-host{background:#f2f5fa;padding:1em;border-radius:var(--_entry-input-br)}::ng-deep app-server-select-field .ng-select:not(.ng-select-filtered):not(.ng-select-opened) .ng-dropdown-panel{opacity:0!important}::ng-deep .c-entry-input--ng-select{--_entry-input-padd-y: .76em}::ng-deep .c-entry-input--ng-select:has(.ng-value-container .ng-value){--_entry-input-padd-y: .35em}::ng-deep .c-entry-input--ng-select:has(.ng-value-container .ng-value) .ng-select .ng-select-container .ng-value-container .ng-input{margin-left:8px}::ng-deep .c-entry-input--ng-select:has(.ng-value-container .ng-value) .ng-select .ng-select-container .ng-value-container .ng-input>input{height:100%}::ng-deep .ng-dropdown-panel-items.scroll-host:has(.ng-select-notfound){background-color:hsl(from hsl(var(--color-context-error-hsl)) h s 94%);color:hsl(from hsl(var(--color-context-error-hsl)) h s 60%)}::ng-deep .ng-dropdown-panel-items.scroll-host:has(.ng-select-loading){background-color:hsl(from hsl(var(--color-alternative-800-hsl)) h s 96%);color:hsl(from hsl(var(--color-alternative-800-hsl)) h 90% 70%)}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container{display:grid;justify-content:start}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{height:-webkit-fill-available}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input>input{height:98%}::ng-deep .ng-select.ng-select-single .ng-select-container{overflow:visible;position:relative;cursor:pointer}::ng-deep .ng-select.ng-select-single .ng-select-container:before{content:\"\";position:absolute;left:calc(var(--_entry-input-padd-x) * -1);right:calc(var(--_entry-input-padd-x) * -1 - var(--_entry-input-addon-gap) - var(--_entry-input-addon-icon-fz));top:calc(max(var(--_entry-input-padd-y) * var(--_size-factor, 1),2px)*-1);bottom:calc(max(var(--_entry-input-padd-y) * var(--_size-factor, 1),2px)*-1)}::ng-deep .ng-select .ng-clear-wrapper .ng-clear{position:absolute;top:50%;transform:translateY(-50%)}@media (hover: hover){::ng-deep .ng-select .ng-clear-wrapper:is(:hover,:focus-visible){color:var(--color-hover)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
8133
8161
  }
8134
8162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GenericPaginationComponent, decorators: [{
8135
8163
  type: Component,
8136
8164
  args: [{ selector: 'core-generic-pagination', standalone: true, imports: [CommonModule, TranslateModule], hostDirectives: [CoreHostDirective], template: "@if (getTotalItems() > 0) {\n <div class=\"c-pagination\">\n <p class=\"c-pagination__summary\">\n {{ 'pagination.viewing' | translate }} \n <span>{{ getDisplayedRange().start }}-{{ getDisplayedRange().end }}</span> \n {{ 'pagination.of' | translate }} \n <span>{{ getTotalItems() }}</span>\n </p>\n <div class=\"c-pagination__controls\">\n <label for=\"page-size-{{ tableId }}\" class=\"c-pagination__summary\">\n {{ 'pagination.itemsPerPage' | translate }}:\n </label>\n <select \n id=\"page-size-{{ tableId }}\"\n class=\"c-input \"\n [value]=\"getPageSize()\"\n (change)=\"handlePageSizeChange($event)\">\n @for (option of getPageSizeOptions(); track option) {\n <option [value]=\"option\">{{ option }}</option>\n }\n </select>\n </div>\n\n <nav class=\"c-pager\">\n <ul class=\"c-pager__list\">\n <li class=\"c-pager__item\">\n <a class=\"c-pager__link\" \n [class.disabled]=\"getCurrentPage() === 1\" \n (click)=\"onPageChange(getCurrentPage() - 1)\">\n <span class=\"icon-arrow-left\"></span>\n </a>\n </li>\n\n <ng-container *ngFor=\"let page of getVisiblePages()\">\n <li class=\"c-pager__item\">\n @if (page === '...') {\n <span class=\"c-pager__link\">...</span>\n } @else {\n <a class=\"c-pager__link\" \n [class.is-active]=\"getCurrentPage() === page\"\n (click)=\"onPageChange(+page)\">\n {{ page }}\n </a>\n }\n </li>\n </ng-container>\n\n <li class=\"c-pager__item\">\n <a class=\"c-pager__link\" \n [class.disabled]=\"getCurrentPage() === getTotalPages()\"\n (click)=\"onPageChange(getCurrentPage() + 1)\">\n <span class=\"icon-arrow-right\"></span>\n </a>\n </li>\n </ul>\n </nav>\n </div>\n}", styles: [".ng-select .ng-select-container .ng-value-container{flex-wrap:wrap}.c-entry-input--ng-select.is-placeholder ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input input::placeholder{color:var(--_entry-input-placeholder-color);opacity:1}.c-entry-input--ng-select.is-placeholder ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input input{color:var(--_entry-input-placeholder-color)}.c-entry-input--ng-select:not(.is-placeholder) ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input input::placeholder{opacity:0}::ng-deep .ng-select{width:100%!important;display:contents}.c-entry-input--ng-select{position:relative}::ng-deep .ng-dropdown-panel{top:0;right:0}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-value{background-color:var(--form-highlighted-color, var(--color-neutral-300));color:#3f4e6a;border-radius:var(--_entry-input-br);padding:.2em .8em;margin:.2em;border:none;border-radius:4px}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-value .ng-value-icon{border:none;padding-right:.4em;color:#3f4e6a}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items{border:none;min-height:auto;padding:0;position:relative;right:0;margin-top:3em;box-shadow:1em 2.4em 3.4em -2em hsl(var(--color-neutral-900-hsl)/25%);background-color:var(--color-neutral-100)}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{padding:.6em .8em;color:#6a788c;cursor:pointer;transition:background-color .1s ease-out}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{color:var(--color-primary-400)}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{color:var(--color-primary-400);font-weight:500}::ng-deep .ng-dropdown-panel .scrollable-content{background:#f2f5fa}::ng-deep .ng-dropdown-panel-items.scroll-host{background:#f2f5fa;padding:1em;border-radius:var(--_entry-input-br)}::ng-deep app-server-select-field .ng-select:not(.ng-select-filtered):not(.ng-select-opened) .ng-dropdown-panel{opacity:0!important}::ng-deep .c-entry-input--ng-select{--_entry-input-padd-y: .76em}::ng-deep .c-entry-input--ng-select:has(.ng-value-container .ng-value){--_entry-input-padd-y: .35em}::ng-deep .c-entry-input--ng-select:has(.ng-value-container .ng-value) .ng-select .ng-select-container .ng-value-container .ng-input{margin-left:8px}::ng-deep .c-entry-input--ng-select:has(.ng-value-container .ng-value) .ng-select .ng-select-container .ng-value-container .ng-input>input{height:100%}::ng-deep .ng-dropdown-panel-items.scroll-host:has(.ng-select-notfound){background-color:hsl(from hsl(var(--color-context-error-hsl)) h s 94%);color:hsl(from hsl(var(--color-context-error-hsl)) h s 60%)}::ng-deep .ng-dropdown-panel-items.scroll-host:has(.ng-select-loading){background-color:hsl(from hsl(var(--color-alternative-800-hsl)) h s 96%);color:hsl(from hsl(var(--color-alternative-800-hsl)) h 90% 70%)}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container{display:grid;justify-content:start}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{height:-webkit-fill-available}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input>input{height:98%}::ng-deep .ng-select.ng-select-single .ng-select-container{overflow:visible;position:relative;cursor:pointer}::ng-deep .ng-select.ng-select-single .ng-select-container:before{content:\"\";position:absolute;left:calc(var(--_entry-input-padd-x) * -1);right:calc(var(--_entry-input-padd-x) * -1 - var(--_entry-input-addon-gap) - var(--_entry-input-addon-icon-fz));top:calc(max(var(--_entry-input-padd-y) * var(--_size-factor, 1),2px)*-1);bottom:calc(max(var(--_entry-input-padd-y) * var(--_size-factor, 1),2px)*-1)}::ng-deep .ng-select .ng-clear-wrapper .ng-clear{position:absolute;top:50%;transform:translateY(-50%)}@media (hover: hover){::ng-deep .ng-select .ng-clear-wrapper:is(:hover,:focus-visible){color:var(--color-hover)}}\n"] }]
8137
- }], ctorParameters: () => [{ type: PaginationService }, { type: TableDataService }], propDecorators: { tableId: [{
8138
- type: Input
8139
- }], isServerSide: [{
8140
- type: Input
8141
- }] } });
8165
+ }], ctorParameters: () => [{ type: PaginationService }, { type: TableDataService }] });
8142
8166
 
8143
8167
  class ConfirmationDialogComponent {
8144
8168
  popupElement;
@@ -13266,11 +13290,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
13266
13290
  // Este archivo es generado automáticamente por scripts/update-version.js
13267
13291
  // No edites manualmente este archivo
13268
13292
  const VERSION = {
13269
- full: '2.12.36',
13293
+ full: '2.12.38',
13270
13294
  major: 2,
13271
13295
  minor: 12,
13272
- patch: 36,
13273
- timestamp: '2025-09-17T12:01:23.677Z',
13296
+ patch: 38,
13297
+ timestamp: '2025-09-17T14:27:53.302Z',
13274
13298
  buildDate: '17/9/2025'
13275
13299
  };
13276
13300