@solcre-org/core-ui 2.13.5 → 2.14.0

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.
@@ -0,0 +1,143 @@
1
+ /* ******************************************** */
2
+ /** COMPONENT: SWITCH
3
+ /* ******************************************** */
4
+
5
+ .c-switch {
6
+ --_color-main-hsl: var(--btn-color-main-hsl, var(--color-primary-400-hsl));
7
+ --_color-active-bg: var(--color-primary-600);
8
+ --_color-active-text: var(--color-neutral-100);
9
+
10
+ --_border-w: 1px;
11
+ --_br: var(--app-main-br);
12
+ --_border-color-hsl: var(--color-alternative-100-hsl);
13
+
14
+ display: flex;
15
+ border: var(--_border-w) solid hsl(var(--_border-color-hsl));
16
+ border-radius: var(--_br);
17
+ width: fit-content;
18
+ transition: background-color 0.3s ease;
19
+ }
20
+
21
+ .c-switch>* {
22
+ border: none;
23
+ cursor: pointer;
24
+ transition: background-color 0.3s ease, color 0.3s ease, opacity 0.3s ease;
25
+ }
26
+
27
+ .c-switch>*.is-active {
28
+ background-color: var(--_color-active-bg);
29
+ color: var(--_color-active-text);
30
+ }
31
+
32
+ .c-switch>*.is-disabled {
33
+ opacity: 0.5;
34
+ cursor: not-allowed;
35
+ }
36
+
37
+
38
+ .c-switch:hover {
39
+ --_bg: hsl(from hsl(var(--_color-main-hsl)) h s l / 0.05);
40
+ --_current-color-hsl: from hsl(var(--_color-main-hsl)) h s calc(l - 12);
41
+ background-color: var(--_bg);
42
+ }
43
+
44
+
45
+
46
+
47
+ /* ********************** SHORT MOBILE ********************** */
48
+
49
+ @media (max-width: 22.4375rem) {
50
+ /* 359px */
51
+ }
52
+
53
+
54
+
55
+
56
+
57
+ /* ********************** TALL MOBILE PORTRAIT ********************** */
58
+
59
+ @media (max-width: 47.9375rem) and (min-height: 45.625rem) {
60
+ /* 767px, 730px */
61
+ }
62
+
63
+
64
+
65
+
66
+
67
+ /* ********************** MOBILE LANDSCAPE ********************** */
68
+
69
+ @media (orientation: landscape) and (min-width: 31.25rem) and (max-width: 47.9375rem) {
70
+ /* 500px, 767px */
71
+ }
72
+
73
+
74
+
75
+
76
+
77
+ /* ********************** de Mobile a TABLET ********************** */
78
+
79
+ @media (min-width: 48rem) {
80
+ /* 768px */
81
+ }
82
+
83
+ @media (min-width: 48rem) and (orientation: portrait) {}
84
+
85
+
86
+
87
+
88
+ /* ********************** de Tablet a DESKTOP ********************** */
89
+
90
+ @media (min-width: 61.25rem) {
91
+ /* 980px */
92
+ }
93
+
94
+
95
+
96
+
97
+ /* ********************** de Desktop a DESKTOP 2 ********************** */
98
+
99
+ @media (min-width: 75rem) {
100
+ /* 1200px */
101
+ }
102
+
103
+ @media (min-width: 75rem) and (min-height: 45rem) {
104
+ /* 1200, 720 */
105
+ }
106
+
107
+
108
+
109
+
110
+ /* ********************** de Desktop 2 a HD ********************** */
111
+
112
+ @media (min-width: 87.5rem) {
113
+ /* 1400px */
114
+ }
115
+
116
+ @media (min-width: 87.5rem) and (min-height: 49.375rem) {
117
+ /* 1400px, 790px */
118
+ }
119
+
120
+
121
+
122
+
123
+ /* ********************** de Hd a FULL HD ********************** */
124
+
125
+ @media (min-width: 100rem) {
126
+ /* 1600px */
127
+ }
128
+
129
+ @media (min-width: 100rem) and (min-height: 49.375rem) {
130
+ /* 1600px, 790px */
131
+ }
132
+
133
+ @media (min-width: 100rem) and (min-height: 56.25rem) {
134
+ /* 1600px, 900px */
135
+ }
136
+
137
+ @media (min-width: 112.5rem) {
138
+ /* 1800px */
139
+ }
140
+
141
+ @media (min-width: 112.5rem) and (min-height: 56.25rem) {
142
+ /* 1800px, 900px */
143
+ }
@@ -30,6 +30,9 @@
30
30
  .u-flex--inline{
31
31
  display: inline-flex
32
32
  }
33
+ .u-flex--space-between{
34
+ justify-content: space-between;
35
+ }
33
36
  [class*="u-flex"].u-align-center{
34
37
  justify-content: center;
35
38
  }
@@ -74,6 +74,7 @@
74
74
  @import url(inc/components/gallery.css);
75
75
  @import url(inc/components/refresh.css); /* !(new) */
76
76
  @import url(inc/components/area-code.css); /* !(new) */
77
+ @import url(inc/components/switch.css); /* !(new) */
77
78
 
78
79
  /* Utilities */
79
80
  @import url(inc/utilities/headings.css);
@@ -7853,8 +7853,11 @@ class FileTemplateType {
7853
7853
  }
7854
7854
  }
7855
7855
 
7856
- dayjs.extend(utc);
7857
- dayjs.extend(timezone);
7856
+ // Safely extend dayjs with plugins (check if extend exists for Jest compatibility)
7857
+ if (dayjs.extend) {
7858
+ dayjs.extend(utc);
7859
+ dayjs.extend(timezone);
7860
+ }
7858
7861
  class DateUtility {
7859
7862
  static fromUTCtoUruguay(date, outputFormat = 'DD/MM/YYYY HH:mm') {
7860
7863
  try {
@@ -11929,7 +11932,8 @@ class GenericTableComponent {
11929
11932
  if (this.currentSortColumn() === null && this.currentSortDirection() === null) {
11930
11933
  this.originalUnsortedData.set([...inputData]);
11931
11934
  }
11932
- const visibleData = this.applyRowVisibilityFilter(inputData);
11935
+ let visibleData = this.applyRowVisibilityFilter(inputData);
11936
+ visibleData = this.moveDisabledRowsToEnd(visibleData);
11933
11937
  this.displayedData.set([...visibleData]);
11934
11938
  this.loadingStates.mainData = false;
11935
11939
  this.loadingStates.filterData = false;
@@ -12096,7 +12100,8 @@ class GenericTableComponent {
12096
12100
  if (this.currentSortColumn() === null && this.currentSortDirection() === null) {
12097
12101
  this.originalUnsortedData.set([...data]);
12098
12102
  }
12099
- const visibleData = this.applyRowVisibilityFilter(data);
12103
+ let visibleData = this.applyRowVisibilityFilter(data);
12104
+ visibleData = this.moveDisabledRowsToEnd(visibleData);
12100
12105
  if (this.endpoint() && this.endpoint() !== '') {
12101
12106
  this.displayedData.set([...visibleData]);
12102
12107
  if (this.enablePagination() && visibleData.length !== data.length) {
@@ -12105,7 +12110,8 @@ class GenericTableComponent {
12105
12110
  }
12106
12111
  else {
12107
12112
  this.tableDataService.updateDisplayedData(visibleData, this.enablePagination(), this.paginationService, this.tableId, this.itemsLoaded());
12108
- const displayed = this.tableDataService.getDisplayedData();
12113
+ let displayed = this.tableDataService.getDisplayedData();
12114
+ displayed = this.moveDisabledRowsToEnd(displayed);
12109
12115
  this.displayedData.set([...displayed]);
12110
12116
  }
12111
12117
  }
@@ -12193,11 +12199,13 @@ class GenericTableComponent {
12193
12199
  resetToOriginalOrder() {
12194
12200
  const originalData = this.originalUnsortedData();
12195
12201
  if (originalData.length > 0) {
12196
- this.displayedData.set([...originalData]);
12202
+ const orderedData = this.moveDisabledRowsToEnd([...originalData]);
12203
+ this.displayedData.set(orderedData);
12197
12204
  }
12198
12205
  else if (!this.endpoint()) {
12199
12206
  const inputData = this.dataInput();
12200
- this.displayedData.set([...inputData]);
12207
+ const orderedData = this.moveDisabledRowsToEnd([...inputData]);
12208
+ this.displayedData.set(orderedData);
12201
12209
  }
12202
12210
  else if (this.endpoint() && originalData.length === 0) {
12203
12211
  this.tableDataService.refreshWithFilters();
@@ -12219,7 +12227,8 @@ class GenericTableComponent {
12219
12227
  const comparison = valueA < valueB ? -1 : valueA > valueB ? 1 : 0;
12220
12228
  return sortDirection === 'asc' ? comparison : -comparison;
12221
12229
  });
12222
- this.displayedData.set(sorted);
12230
+ const orderedData = this.moveDisabledRowsToEnd(sorted);
12231
+ this.displayedData.set(orderedData);
12223
12232
  }
12224
12233
  isAllSelected() {
12225
12234
  return this.displayedData().every(row => this.selectedRows().includes(row));
@@ -12676,6 +12685,23 @@ class GenericTableComponent {
12676
12685
  }
12677
12686
  return data.filter(row => this.isRowVisible(row));
12678
12687
  }
12688
+ moveDisabledRowsToEnd(data) {
12689
+ const disabledConfigs = this.columnDisabledConfigs();
12690
+ if (!disabledConfigs || disabledConfigs.length === 0) {
12691
+ return data;
12692
+ }
12693
+ const enabledRows = [];
12694
+ const disabledRows = [];
12695
+ data.forEach(row => {
12696
+ if (this.isRowDisabled(row)) {
12697
+ disabledRows.push(row);
12698
+ }
12699
+ else {
12700
+ enabledRows.push(row);
12701
+ }
12702
+ });
12703
+ return [...enabledRows, ...disabledRows];
12704
+ }
12679
12705
  generateActiveFilters() {
12680
12706
  const activeFilters = [];
12681
12707
  const currentFilters = this.currentFilterValues();
@@ -13088,7 +13114,8 @@ class GenericTableComponent {
13088
13114
  const stringB = String(refB).toLowerCase();
13089
13115
  return stringA.localeCompare(stringB);
13090
13116
  });
13091
- this.displayedData.set(sortedData);
13117
+ const orderedData = this.moveDisabledRowsToEnd(sortedData);
13118
+ this.displayedData.set(orderedData);
13092
13119
  }
13093
13120
  catch (error) {
13094
13121
  console.warn('Error al ordenar por getReference():', error);
@@ -14725,12 +14752,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
14725
14752
  // Este archivo es generado automáticamente por scripts/update-version.js
14726
14753
  // No edites manualmente este archivo
14727
14754
  const VERSION = {
14728
- full: '2.13.5',
14755
+ full: '2.14.0',
14729
14756
  major: 2,
14730
- minor: 13,
14731
- patch: 5,
14732
- timestamp: '2025-09-29T18:27:57.345Z',
14733
- buildDate: '29/9/2025'
14757
+ minor: 14,
14758
+ patch: 0,
14759
+ timestamp: '2025-10-01T18:14:51.221Z',
14760
+ buildDate: '1/10/2025'
14734
14761
  };
14735
14762
 
14736
14763
  class MainNavComponent {
@@ -17521,6 +17548,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
17521
17548
  args: [{ selector: 'core-generic-gallery', standalone: true, imports: [CommonModule, GenericSkeletonComponent], providers: [], template: "<div [class]=\"containerClasses()\" \n [ngStyle]=\"containerStyles()\">\n \n @if (finalConfig().layoutType === 'main-left') {\n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Main image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n \n @if (thumbnailImages().length > 0) {\n <div class=\"c-gallery-grid__imgs-xs\">\n @for (image of thumbnailImages(); track image.id || $index; let i = $index) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(image, i + 1)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(image, i + 1)\">\n \n @if (isImageLoading(image, i + 1)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading thumbnail: ' + (image.alt || 'Thumbnail')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(image, i + 1) && !hasImageError(image, i + 1)) {\n <img\n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n [title]=\"image.title || ''\"\n [loading]=\"getImageLoading(false)\"\n (click)=\"onImageClick(image, i + 1)\">\n }\n \n @if (isImageLoading(image, i + 1)) {\n <img \n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(image, i + 1)\"\n (error)=\"onImageError(image, i + 1)\">\n }\n \n @if (hasImageError(image, i + 1)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n \n @if (finalConfig().layoutType === 'main-right') {\n @if (thumbnailImages().length > 0) {\n <div class=\"c-gallery-grid__imgs-xs\">\n @for (image of thumbnailImages(); track image.id || $index; let i = $index) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(image, i + 1)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(image, i + 1)\">\n \n @if (isImageLoading(image, i + 1)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading thumbnail: ' + (image.alt || 'Thumbnail')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(image, i + 1) && !hasImageError(image, i + 1)) {\n <img\n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n [title]=\"image.title || ''\"\n [loading]=\"getImageLoading(false)\"\n (click)=\"onImageClick(image, i + 1)\">\n }\n \n @if (isImageLoading(image, i + 1)) {\n <img \n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(image, i + 1)\"\n (error)=\"onImageError(image, i + 1)\">\n }\n \n @if (hasImageError(image, i + 1)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n \n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Main image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n }\n \n @if (finalConfig().layoutType === 'main-top') {\n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Main image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n \n @if (thumbnailImages().length > 0) {\n <div class=\"c-gallery-grid__imgs-xs\">\n @for (image of thumbnailImages(); track image.id || $index; let i = $index) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(image, i + 1)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(image, i + 1)\">\n \n @if (isImageLoading(image, i + 1)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading thumbnail: ' + (image.alt || 'Thumbnail')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(image, i + 1) && !hasImageError(image, i + 1)) {\n <img\n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n [title]=\"image.title || ''\"\n [loading]=\"getImageLoading(false)\"\n (click)=\"onImageClick(image, i + 1)\">\n }\n \n @if (isImageLoading(image, i + 1)) {\n <img \n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(image, i + 1)\"\n (error)=\"onImageError(image, i + 1)\">\n }\n \n @if (hasImageError(image, i + 1)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n\n @if (finalConfig().layoutType === 'single') {\n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Single image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n }\n</div>\n" }]
17522
17549
  }], ctorParameters: () => [] });
17523
17550
 
17551
+ class GenericSwitchComponent {
17552
+ options = input.required();
17553
+ selectedValue = input();
17554
+ ariaLabel = input('Switch options');
17555
+ valueChange = output();
17556
+ isSelected(value) {
17557
+ return this.selectedValue() === value;
17558
+ }
17559
+ onOptionClick(option) {
17560
+ if (option.disabled || this.isSelected(option.value)) {
17561
+ return;
17562
+ }
17563
+ this.valueChange.emit(option.value);
17564
+ }
17565
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GenericSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17566
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: GenericSwitchComponent, isStandalone: true, selector: "core-generic-switch", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, selectedValue: { classPropertyName: "selectedValue", publicName: "selectedValue", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<button \n class=\"c-switch\"\n [attr.aria-label]=\"ariaLabel()\"\n role=\"group\">\n @for (option of options(); track option.value) {\n <span \n class=\"c-icon-btn\"\n [class]=\"option.icon || ''\"\n [class.is-active]=\"isSelected(option.value)\"\n [class.is-disabled]=\"option.disabled\"\n [attr.title]=\"option.tooltip || option.label\"\n [attr.aria-pressed]=\"isSelected(option.value)\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.data-value]=\"option.value\"\n (click)=\"onOptionClick(option)\">\n @if (option.label && !option.icon) {\n {{ option.label }}\n }\n </span>\n }\n</button>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }] });
17567
+ }
17568
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GenericSwitchComponent, decorators: [{
17569
+ type: Component,
17570
+ args: [{ selector: 'core-generic-switch', standalone: true, imports: [CommonModule], template: "<button \n class=\"c-switch\"\n [attr.aria-label]=\"ariaLabel()\"\n role=\"group\">\n @for (option of options(); track option.value) {\n <span \n class=\"c-icon-btn\"\n [class]=\"option.icon || ''\"\n [class.is-active]=\"isSelected(option.value)\"\n [class.is-disabled]=\"option.disabled\"\n [attr.title]=\"option.tooltip || option.label\"\n [attr.aria-pressed]=\"isSelected(option.value)\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.data-value]=\"option.value\"\n (click)=\"onOptionClick(option)\">\n @if (option.label && !option.icon) {\n {{ option.label }}\n }\n </span>\n }\n</button>\n" }]
17571
+ }] });
17572
+
17524
17573
  class CacheBustingInterceptor {
17525
17574
  intercept(req, next) {
17526
17575
  if (req.url.includes('/assets/i18n/') && req.url.endsWith('.json')) {
@@ -17802,5 +17851,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
17802
17851
  * Generated bundle index. Do not edit.
17803
17852
  */
17804
17853
 
17805
- export { ALL_COUNTRY_CODES, ActiveFiltersComponent, AgeValidationHelper, AlertComponent, AlertContainerComponent, AlertService, AlertType, ApiConfigurationProvider, BaseFieldComponent, ButtonContext, ButtonSize, ButtonType, COMMON_COUNTRIES, CacheBustingInterceptor, CardComponent, CarouselComponent, ChatMessagePosition, ChatMessageType, CheckboxFieldComponent, ConfigurationModel, ConfirmationDialogComponent, ConfirmationDialogService, CoreHostDirective, CoreManualRefreshComponent, CoreUiHttpLoaderFactory, CoreUiTranslateLoader, CoreUiTranslateService, CountryCode, DEFAULT_COUNTRIES, DataListComponent, DataListItemComponent, DateFieldComponent, DateUtility, DatetimeFieldComponent, DialogActions, DocumentAction, DocumentDisplayMode, DocumentFieldComponent, DocumentFieldValidators, DocumentPayloadMode, DropdownComponent, DropdownDirection, DropdownService, DynamicFieldDirective, DynamicFieldsHelper, FieldErrorsComponent, FieldType, FileFieldComponent, FileModel, FilePreviewActionType, FileTemplateModel, FileTemplateType, FileType, FileTypeModel, FileUploadService, FilterModalComponent, FilterService, FilterType, GalleryAnimationType, GalleryLayoutType, GalleryModalComponent, GalleryModalGlobalService, GenericButtonComponent, GenericChatComponent, GenericChatService, GenericDocumentationComponent, GenericGalleryComponent, GenericModalComponent, GenericPaginationComponent, GenericRatingComponent, GenericSidebarComponent, GenericSkeletonComponent, GenericStepsComponent, GenericTableComponent, GenericTabsComponent, GenericTimelineComponent, GlobalApiConfigService, HeaderComponent, HeaderConfigurationService, HeaderElementType, HeaderService, HttpLoaderFactory, ImageModalComponent, ImageModalService, ImagePreviewComponent, LATIN_AMERICA_COUNTRIES, LayoutAuth, LayoutBreakpoint, LayoutComponent, LayoutService, LayoutStateService, LayoutType, LoaderComponent, LoaderService, MainNavComponent, MainNavService, ManualRefreshService, ModalMode, ModelApiService, MultiEntryFieldComponent, MultiEntryOutputFormat, NumberFieldComponent, NumberFieldConfigType, NumberFieldType, NumberRange, PERMISSION_ACTIONS_PROVIDER, PERMISSION_PROVIDER, PERMISSION_RESOURCES_PROVIDER, PaginationService, PasswordFieldComponent, PermissionEnumsService, PermissionModel, PermissionService, PermissionWrapperService, PermissionsActions, PermissionsInterceptor, PermissionsResources, PhoneFieldComponent, ProgressBarComponent, ProgressBarSize, RatingService, RatingSize, RatingType, ResetPasswordModel, RoleModel, SOUTH_AMERICA_COUNTRIES, SelectFieldComponent, ServerSelectFieldComponent, ServerSelectService, SidebarCustomModalComponent, SidebarCustomModalService, SidebarHeight, SidebarMobileModalService, SidebarMobileType, SidebarPosition, SidebarService, SidebarState, SidebarTemplateRegistryService, SidebarVisibility, SidebarWidth, SkeletonAnimation, SkeletonService, SkeletonSize, SkeletonType, SmartFieldComponent, SortDirection, SortMode, StepSize, StepStatus, StepType, StepsService, SwitchFieldComponent, TableAction, TableActionService, TableDataService, TableSortService, TextAreaFieldComponent, TextFieldComponent, TimeFieldComponent, TimeInterval, TimelineService, TimelineStatus, TimelineType, TranslationMergeService, UruguayanDocumentValidationHelper, UsersModel, VERSION, ageValidator, calculateAge, equalToValidator, generateRandomUruguayanDocument, getCountryCodeStrings, getLatestBirthDateForAge, getRandomCi, getUruguayanDocumentValidationDigit, getValidationDigit, isSameDate, isValidCountryCode, provideCoreUiTranslateLoader, providePermissionActions, providePermissionEnums, providePermissionResources, providePermissionService, providePermissionServiceFactory, provideTranslateLoader, random, transform, transformUruguayanDocument, uruguayanDocumentValidator, validate, validateAge, validateCi, validateUruguayanDocument, validationDigit };
17854
+ export { ALL_COUNTRY_CODES, ActiveFiltersComponent, AgeValidationHelper, AlertComponent, AlertContainerComponent, AlertService, AlertType, ApiConfigurationProvider, BaseFieldComponent, ButtonContext, ButtonSize, ButtonType, COMMON_COUNTRIES, CacheBustingInterceptor, CardComponent, CarouselComponent, ChatMessagePosition, ChatMessageType, CheckboxFieldComponent, ConfigurationModel, ConfirmationDialogComponent, ConfirmationDialogService, CoreHostDirective, CoreManualRefreshComponent, CoreUiHttpLoaderFactory, CoreUiTranslateLoader, CoreUiTranslateService, CountryCode, DEFAULT_COUNTRIES, DataListComponent, DataListItemComponent, DateFieldComponent, DateUtility, DatetimeFieldComponent, DialogActions, DocumentAction, DocumentDisplayMode, DocumentFieldComponent, DocumentFieldValidators, DocumentPayloadMode, DropdownComponent, DropdownDirection, DropdownService, DynamicFieldDirective, DynamicFieldsHelper, FieldErrorsComponent, FieldType, FileFieldComponent, FileModel, FilePreviewActionType, FileTemplateModel, FileTemplateType, FileType, FileTypeModel, FileUploadService, FilterModalComponent, FilterService, FilterType, GalleryAnimationType, GalleryLayoutType, GalleryModalComponent, GalleryModalGlobalService, GenericButtonComponent, GenericChatComponent, GenericChatService, GenericDocumentationComponent, GenericGalleryComponent, GenericModalComponent, GenericPaginationComponent, GenericRatingComponent, GenericSidebarComponent, GenericSkeletonComponent, GenericStepsComponent, GenericSwitchComponent, GenericTableComponent, GenericTabsComponent, GenericTimelineComponent, GlobalApiConfigService, HeaderComponent, HeaderConfigurationService, HeaderElementType, HeaderService, HttpLoaderFactory, ImageModalComponent, ImageModalService, ImagePreviewComponent, LATIN_AMERICA_COUNTRIES, LayoutAuth, LayoutBreakpoint, LayoutComponent, LayoutService, LayoutStateService, LayoutType, LoaderComponent, LoaderService, MainNavComponent, MainNavService, ManualRefreshService, ModalMode, ModelApiService, MultiEntryFieldComponent, MultiEntryOutputFormat, NumberFieldComponent, NumberFieldConfigType, NumberFieldType, NumberRange, PERMISSION_ACTIONS_PROVIDER, PERMISSION_PROVIDER, PERMISSION_RESOURCES_PROVIDER, PaginationService, PasswordFieldComponent, PermissionEnumsService, PermissionModel, PermissionService, PermissionWrapperService, PermissionsActions, PermissionsInterceptor, PermissionsResources, PhoneFieldComponent, ProgressBarComponent, ProgressBarSize, RatingService, RatingSize, RatingType, ResetPasswordModel, RoleModel, SOUTH_AMERICA_COUNTRIES, SelectFieldComponent, ServerSelectFieldComponent, ServerSelectService, SidebarCustomModalComponent, SidebarCustomModalService, SidebarHeight, SidebarMobileModalService, SidebarMobileType, SidebarPosition, SidebarService, SidebarState, SidebarTemplateRegistryService, SidebarVisibility, SidebarWidth, SkeletonAnimation, SkeletonService, SkeletonSize, SkeletonType, SmartFieldComponent, SortDirection, SortMode, StepSize, StepStatus, StepType, StepsService, SwitchFieldComponent, TableAction, TableActionService, TableDataService, TableSortService, TextAreaFieldComponent, TextFieldComponent, TimeFieldComponent, TimeInterval, TimelineService, TimelineStatus, TimelineType, TranslationMergeService, UruguayanDocumentValidationHelper, UsersModel, VERSION, ageValidator, calculateAge, equalToValidator, generateRandomUruguayanDocument, getCountryCodeStrings, getLatestBirthDateForAge, getRandomCi, getUruguayanDocumentValidationDigit, getValidationDigit, isSameDate, isValidCountryCode, provideCoreUiTranslateLoader, providePermissionActions, providePermissionEnums, providePermissionResources, providePermissionService, providePermissionServiceFactory, provideTranslateLoader, random, transform, transformUruguayanDocument, uruguayanDocumentValidator, validate, validateAge, validateCi, validateUruguayanDocument, validationDigit };
17806
17855
  //# sourceMappingURL=solcre-org-core-ui.mjs.map