@some-angular-utils/table 0.1.17 → 0.1.19

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,22 +1,22 @@
1
- import * as i3 from '@angular/common';
1
+ import * as i2 from '@angular/common';
2
2
  import { CommonModule, DatePipe } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, EventEmitter, Input, ContentChildren, ViewChild, ContentChild, Output, ViewEncapsulation } from '@angular/core';
5
- import * as i2 from '@angular/router';
4
+ import { Component, Input, EventEmitter, ContentChildren, ViewChild, ContentChild, Output, ViewEncapsulation } from '@angular/core';
5
+ import * as i1 from '@angular/router';
6
6
  import { RouterModule } from '@angular/router';
7
7
  import { SAUFilterModule } from '@some-angular-utils/filter';
8
8
  import { SAUPaginatorModule } from '@some-angular-utils/paginator';
9
- import * as i1 from '@angular/common/http';
9
+ import * as i1$1 from '@angular/common/http';
10
10
 
11
11
  class ChevronDownIconComponent {
12
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ChevronDownIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: ChevronDownIconComponent, isStandalone: true, selector: "sau-chevron-down-icon", ngImport: i0, template: `
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ChevronDownIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: ChevronDownIconComponent, isStandalone: true, selector: "sau-chevron-down-icon", ngImport: i0, template: `
14
14
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
15
15
  <path d="M12 15.5l-6-6h12l-6 6z" />
16
16
  </svg>
17
17
  `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ChevronDownIconComponent, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ChevronDownIconComponent, decorators: [{
20
20
  type: Component,
21
21
  args: [{ selector: 'sau-chevron-down-icon', standalone: true, template: `
22
22
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
@@ -26,14 +26,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
26
26
  }] });
27
27
 
28
28
  class PenIconComponent {
29
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PenIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: PenIconComponent, isStandalone: true, selector: "sau-pen-icon", ngImport: i0, template: `
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PenIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: PenIconComponent, isStandalone: true, selector: "sau-pen-icon", ngImport: i0, template: `
31
31
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
32
32
  <path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"/>
33
33
  </svg>
34
34
  `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PenIconComponent, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PenIconComponent, decorators: [{
37
37
  type: Component,
38
38
  args: [{ selector: 'sau-pen-icon', standalone: true, template: `
39
39
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
@@ -43,14 +43,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
43
43
  }] });
44
44
 
45
45
  class TrashIconComponent {
46
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TrashIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: TrashIconComponent, isStandalone: true, selector: "sau-trash-icon", ngImport: i0, template: `
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: TrashIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: TrashIconComponent, isStandalone: true, selector: "sau-trash-icon", ngImport: i0, template: `
48
48
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
49
49
  <path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"/>
50
50
  </svg>
51
51
  `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TrashIconComponent, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: TrashIconComponent, decorators: [{
54
54
  type: Component,
55
55
  args: [{ selector: 'sau-trash-icon', standalone: true, template: `
56
56
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
@@ -60,14 +60,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
60
60
  }] });
61
61
 
62
62
  class InboxIconComponent {
63
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: InboxIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
64
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: InboxIconComponent, isStandalone: true, selector: "sau-inbox-icon", ngImport: i0, template: `
63
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: InboxIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
64
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: InboxIconComponent, isStandalone: true, selector: "sau-inbox-icon", ngImport: i0, template: `
65
65
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
66
66
  <path d="M19 3H4.99c-1.11 0-1.98.89-1.98 2L3 19c0 1.1.88 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.11-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H5V5h14v10z"/>
67
67
  </svg>
68
68
  `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
69
69
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: InboxIconComponent, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: InboxIconComponent, decorators: [{
71
71
  type: Component,
72
72
  args: [{ selector: 'sau-inbox-icon', standalone: true, template: `
73
73
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
@@ -76,32 +76,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
76
76
  `, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] }]
77
77
  }] });
78
78
 
79
- class CrownIconComponent {
80
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CrownIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: CrownIconComponent, isStandalone: true, selector: "sau-crown-icon", ngImport: i0, template: `
82
- <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
83
- <path d="M5 16L3 5l4.5 7L12 4l4.5 8L21 5l-2 11H5zm2.7-2h8.6l.9-5.4-2.1 3.7L12 9l-3.1 3.3-2.1-3.7L7.7 14z"/>
79
+ class PrintIconComponent {
80
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PrintIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: PrintIconComponent, isStandalone: true, selector: "sau-print-icon", ngImport: i0, template: `
82
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" style="width: 100%; height: 100%; fill: currentColor;">
83
+ <!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.-->
84
+ <path d="M128 128C128 92.7 156.7 64 192 64L405.5 64C422.5 64 438.8 70.7 450.8 82.7L493.3 125.2C505.3 137.2 512 153.5 512 170.5L512 208L128 208L128 128zM64 320C64 284.7 92.7 256 128 256L512 256C547.3 256 576 284.7 576 320L576 416C576 433.7 561.7 448 544 448L512 448L512 512C512 547.3 483.3 576 448 576L192 576C156.7 576 128 547.3 128 512L128 448L96 448C78.3 448 64 433.7 64 416L64 320zM192 480L192 512L448 512L448 416L192 416L192 480zM520 336C520 322.7 509.3 312 496 312C482.7 312 472 322.7 472 336C472 349.3 482.7 360 496 360C509.3 360 520 349.3 520 336z"/>
85
+ </svg>
86
+ `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PrintIconComponent, decorators: [{
89
+ type: Component,
90
+ args: [{ selector: 'sau-print-icon', standalone: true, template: `
91
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" style="width: 100%; height: 100%; fill: currentColor;">
92
+ <!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.-->
93
+ <path d="M128 128C128 92.7 156.7 64 192 64L405.5 64C422.5 64 438.8 70.7 450.8 82.7L493.3 125.2C505.3 137.2 512 153.5 512 170.5L512 208L128 208L128 128zM64 320C64 284.7 92.7 256 128 256L512 256C547.3 256 576 284.7 576 320L576 416C576 433.7 561.7 448 544 448L512 448L512 512C512 547.3 483.3 576 448 576L192 576C156.7 576 128 547.3 128 512L128 448L96 448C78.3 448 64 433.7 64 416L64 320zM192 480L192 512L448 512L448 416L192 416L192 480zM520 336C520 322.7 509.3 312 496 312C482.7 312 472 322.7 472 336C472 349.3 482.7 360 496 360C509.3 360 520 349.3 520 336z"/>
94
+ </svg>
95
+ `, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] }]
96
+ }] });
97
+
98
+ class EyeIconComponent {
99
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EyeIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
100
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: EyeIconComponent, isStandalone: true, selector: "sau-eye-icon", ngImport: i0, template: `
101
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="w-4 h-auto">
102
+ <path fill="currentColor"
103
+ d="M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6.01 7 11 7s9.27-3.11 11-7c-1.73-3.89-6.01-7-11-7zm0 12c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8.5c-1.93 0-3.5 1.57-3.5 3.5S10.07 15.5 12 15.5 15.5 13.93 15.5 12 13.93 8.5 12 8.5z" />
84
104
  </svg>
85
105
  `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
86
106
  }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CrownIconComponent, decorators: [{
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EyeIconComponent, decorators: [{
88
108
  type: Component,
89
- args: [{ selector: 'sau-crown-icon', standalone: true, template: `
90
- <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
91
- <path d="M5 16L3 5l4.5 7L12 4l4.5 8L21 5l-2 11H5zm2.7-2h8.6l.9-5.4-2.1 3.7L12 9l-3.1 3.3-2.1-3.7L7.7 14z"/>
109
+ args: [{ selector: 'sau-eye-icon', standalone: true, template: `
110
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="w-4 h-auto">
111
+ <path fill="currentColor"
112
+ d="M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6.01 7 11 7s9.27-3.11 11-7c-1.73-3.89-6.01-7-11-7zm0 12c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8.5c-1.93 0-3.5 1.57-3.5 3.5S10.07 15.5 12 15.5 15.5 13.93 15.5 12 13.93 8.5 12 8.5z" />
92
113
  </svg>
93
114
  `, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] }]
94
115
  }] });
95
116
 
96
117
  class CheckIconComponent {
97
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CheckIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
98
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: CheckIconComponent, isStandalone: true, selector: "sau-check-icon", ngImport: i0, template: `
118
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CheckIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
119
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: CheckIconComponent, isStandalone: true, selector: "sau-check-icon", ngImport: i0, template: `
99
120
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
100
121
  <path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/>
101
122
  </svg>
102
123
  `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
103
124
  }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CheckIconComponent, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CheckIconComponent, decorators: [{
105
126
  type: Component,
106
127
  args: [{ selector: 'sau-check-icon', standalone: true, template: `
107
128
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
@@ -111,14 +132,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
111
132
  }] });
112
133
 
113
134
  class XmarkIconComponent {
114
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: XmarkIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
115
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: XmarkIconComponent, isStandalone: true, selector: "sau-xmark-icon", ngImport: i0, template: `
135
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: XmarkIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
136
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: XmarkIconComponent, isStandalone: true, selector: "sau-xmark-icon", ngImport: i0, template: `
116
137
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
117
138
  <path d="M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.88c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.88-4.89c.39-.38.39-1.02.01-1.4z"/>
118
139
  </svg>
119
140
  `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
120
141
  }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: XmarkIconComponent, decorators: [{
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: XmarkIconComponent, decorators: [{
122
143
  type: Component,
123
144
  args: [{ selector: 'sau-xmark-icon', standalone: true, template: `
124
145
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
@@ -128,14 +149,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
128
149
  }] });
129
150
 
130
151
  class EnvelopeIconComponent {
131
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EnvelopeIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
132
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: EnvelopeIconComponent, isStandalone: true, selector: "sau-envelope-icon", ngImport: i0, template: `
152
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EnvelopeIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
153
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: EnvelopeIconComponent, isStandalone: true, selector: "sau-envelope-icon", ngImport: i0, template: `
133
154
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
134
155
  <path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/>
135
156
  </svg>
136
157
  `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
137
158
  }
138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EnvelopeIconComponent, decorators: [{
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EnvelopeIconComponent, decorators: [{
139
160
  type: Component,
140
161
  args: [{ selector: 'sau-envelope-icon', standalone: true, template: `
141
162
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
@@ -145,8 +166,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
145
166
  }] });
146
167
 
147
168
  class GoogleIconComponent {
148
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GoogleIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
149
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: GoogleIconComponent, isStandalone: true, selector: "sau-google-icon", ngImport: i0, template: `
169
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GoogleIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
170
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: GoogleIconComponent, isStandalone: true, selector: "sau-google-icon", ngImport: i0, template: `
150
171
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%;">
151
172
  <path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z" fill="#4285F4"/>
152
173
  <path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z" fill="#34A853"/>
@@ -155,7 +176,7 @@ class GoogleIconComponent {
155
176
  </svg>
156
177
  `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
157
178
  }
158
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GoogleIconComponent, decorators: [{
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GoogleIconComponent, decorators: [{
159
180
  type: Component,
160
181
  args: [{ selector: 'sau-google-icon', standalone: true, template: `
161
182
  <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%;">
@@ -167,44 +188,149 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
167
188
  `, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] }]
168
189
  }] });
169
190
 
170
- class PrintIconComponent {
171
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PrintIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
172
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: PrintIconComponent, isStandalone: true, selector: "sau-print-icon", ngImport: i0, template: `
173
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" style="width: 100%; height: 100%; fill: currentColor;">
174
- <!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.-->
175
- <path d="M128 128C128 92.7 156.7 64 192 64L405.5 64C422.5 64 438.8 70.7 450.8 82.7L493.3 125.2C505.3 137.2 512 153.5 512 170.5L512 208L128 208L128 128zM64 320C64 284.7 92.7 256 128 256L512 256C547.3 256 576 284.7 576 320L576 416C576 433.7 561.7 448 544 448L512 448L512 512C512 547.3 483.3 576 448 576L192 576C156.7 576 128 547.3 128 512L128 448L96 448C78.3 448 64 433.7 64 416L64 320zM192 480L192 512L448 512L448 416L192 416L192 480zM520 336C520 322.7 509.3 312 496 312C482.7 312 472 322.7 472 336C472 349.3 482.7 360 496 360C509.3 360 520 349.3 520 336z"/>
176
- </svg>
177
- `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
191
+ class DataTypeTemplateComponent {
192
+ item;
193
+ header;
194
+ value;
195
+ getValue(item, key) {
196
+ let arrayKey = [];
197
+ if (!Array.isArray(key)) {
198
+ arrayKey.push(key);
199
+ }
200
+ else {
201
+ arrayKey = key.slice();
202
+ }
203
+ let result = '';
204
+ while (arrayKey.length > 0) {
205
+ let keys = arrayKey[0].split('.');
206
+ let value = item;
207
+ if (keys[0].includes('[]')) {
208
+ let arrayKey = keys[0].replace('[]', '');
209
+ value = value[arrayKey].map((element) => this.getValue(element, keys.slice(1).join('.'))).join(', ');
210
+ }
211
+ else {
212
+ let finalValue = item[String(key)];
213
+ let isArray = Array.isArray(finalValue);
214
+ let isBoolean = typeof finalValue === 'boolean';
215
+ let isNumber = typeof finalValue === 'number';
216
+ if (isArray || isBoolean || isNumber) {
217
+ return finalValue;
218
+ }
219
+ for (let i = 0; value && i < keys.length; i++) {
220
+ value = value[keys[i]];
221
+ }
222
+ result = value;
223
+ }
224
+ arrayKey.shift();
225
+ }
226
+ return result;
227
+ }
228
+ getLink(pattern = '{key}', item, value) {
229
+ const keyValue = this.getValue(item, value);
230
+ const url = pattern.replace('{key}', keyValue);
231
+ const isExternal = url.startsWith('http://') || url.startsWith('https://');
232
+ return {
233
+ url,
234
+ isExternal
235
+ };
236
+ }
237
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DataTypeTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
238
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: DataTypeTemplateComponent, isStandalone: true, selector: "sau-data-type-template", inputs: { item: "item", header: "header", value: "value" }, ngImport: i0, template: "<section class=\"sau-table-data-type-section\">\n @switch (header.type) {\n\n @case ('boolean') {\n @if(getValue(item, value)){\n <div class=\"sau-table-boolean-true\">\n <span class=\"sau-icon sau-icon-check\">\n <sau-check-icon></sau-check-icon>\n </span>\n </div>\n } @else {\n <div class=\"sau-table-boolean-false\">\n <span class=\"sau-icon sau-icon-xmark\">\n <sau-xmark-icon></sau-xmark-icon>\n </span>\n </div>\n }\n }\n\n @case ('date') {\n <span class=\"sau-table-date\">\n {{getValue(item, value) | date: 'dd/MM/yyyy'}}\n </span>\n }\n\n @case ('dateTime') {\n <span class=\"sau-table-datetime\">\n {{getValue(item, value) | date: 'dd/MM/yyyy HH:mm'}}\n </span>\n }\n\n @case ('color'){\n <span class=\"sau-table-color-indicator\" [style.background-color]=\"getValue(item, value)\"></span>\n }\n\n @case ('link'){\n @let link = getLink(header.url, item, value);\n\n @if(link.isExternal){\n <a [href]=\"link.url\" class=\"sau-table-link\">\n {{header.linkName}}\n </a>\n }@else{\n <a [routerLink]=\"link.url\" class=\"sau-table-link\" target=\"_blank\">\n {{header.linkName}}\n </a>\n }\n\n }\n\n @case ('image'){\n @let link = getLink(header.url, item, value);\n\n <img [src]=\"link.url\" [alt]=\"getValue(item, value)\" loading=\"lazy\" class=\"sau-table-image\">\n }\n\n @case ('login'){\n @if(item.active){\n <span class=\"sau-table-login-container\">\n\n @if(item.email_verified_at){\n <div [title]=\"item.email\" class=\"sau-table-login-email-verified\">\n <span class=\"sau-icon sau-icon-envelope\">\n <sau-envelope-icon></sau-envelope-icon>\n </span>\n </div>\n }\n\n @if(item.google_id){\n <div [title]=\"item.google_id\" class=\"sau-table-login-google\">\n <span class=\"sau-icon sau-icon-google\">\n <sau-google-icon></sau-google-icon>\n </span>\n </div>\n }\n\n </span>\n } @else {\n <div class=\"sau-table-login-inactive\">\n <span class=\"sau-icon sau-icon-xmark\">\n <sau-xmark-icon></sau-xmark-icon>\n </span>\n </div>\n }\n }\n\n @default {\n {{getValue(item, value)}}\n }\n }\n</section>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: CheckIconComponent, selector: "sau-check-icon" }, { kind: "component", type: XmarkIconComponent, selector: "sau-xmark-icon" }, { kind: "component", type: EnvelopeIconComponent, selector: "sau-envelope-icon" }, { kind: "component", type: GoogleIconComponent, selector: "sau-google-icon" }, { kind: "pipe", type: i2.DatePipe, name: "date" }] });
178
239
  }
179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PrintIconComponent, decorators: [{
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DataTypeTemplateComponent, decorators: [{
180
241
  type: Component,
181
- args: [{ selector: 'sau-print-icon', standalone: true, template: `
182
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" style="width: 100%; height: 100%; fill: currentColor;">
183
- <!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.-->
184
- <path d="M128 128C128 92.7 156.7 64 192 64L405.5 64C422.5 64 438.8 70.7 450.8 82.7L493.3 125.2C505.3 137.2 512 153.5 512 170.5L512 208L128 208L128 128zM64 320C64 284.7 92.7 256 128 256L512 256C547.3 256 576 284.7 576 320L576 416C576 433.7 561.7 448 544 448L512 448L512 512C512 547.3 483.3 576 448 576L192 576C156.7 576 128 547.3 128 512L128 448L96 448C78.3 448 64 433.7 64 416L64 320zM192 480L192 512L448 512L448 416L192 416L192 480zM520 336C520 322.7 509.3 312 496 312C482.7 312 472 322.7 472 336C472 349.3 482.7 360 496 360C509.3 360 520 349.3 520 336z"/>
185
- </svg>
186
- `, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] }]
187
- }] });
242
+ args: [{ selector: 'sau-data-type-template', imports: [
243
+ CommonModule,
244
+ DatePipe,
245
+ RouterModule,
246
+ CheckIconComponent,
247
+ XmarkIconComponent,
248
+ EnvelopeIconComponent,
249
+ GoogleIconComponent
250
+ ], template: "<section class=\"sau-table-data-type-section\">\n @switch (header.type) {\n\n @case ('boolean') {\n @if(getValue(item, value)){\n <div class=\"sau-table-boolean-true\">\n <span class=\"sau-icon sau-icon-check\">\n <sau-check-icon></sau-check-icon>\n </span>\n </div>\n } @else {\n <div class=\"sau-table-boolean-false\">\n <span class=\"sau-icon sau-icon-xmark\">\n <sau-xmark-icon></sau-xmark-icon>\n </span>\n </div>\n }\n }\n\n @case ('date') {\n <span class=\"sau-table-date\">\n {{getValue(item, value) | date: 'dd/MM/yyyy'}}\n </span>\n }\n\n @case ('dateTime') {\n <span class=\"sau-table-datetime\">\n {{getValue(item, value) | date: 'dd/MM/yyyy HH:mm'}}\n </span>\n }\n\n @case ('color'){\n <span class=\"sau-table-color-indicator\" [style.background-color]=\"getValue(item, value)\"></span>\n }\n\n @case ('link'){\n @let link = getLink(header.url, item, value);\n\n @if(link.isExternal){\n <a [href]=\"link.url\" class=\"sau-table-link\">\n {{header.linkName}}\n </a>\n }@else{\n <a [routerLink]=\"link.url\" class=\"sau-table-link\" target=\"_blank\">\n {{header.linkName}}\n </a>\n }\n\n }\n\n @case ('image'){\n @let link = getLink(header.url, item, value);\n\n <img [src]=\"link.url\" [alt]=\"getValue(item, value)\" loading=\"lazy\" class=\"sau-table-image\">\n }\n\n @case ('login'){\n @if(item.active){\n <span class=\"sau-table-login-container\">\n\n @if(item.email_verified_at){\n <div [title]=\"item.email\" class=\"sau-table-login-email-verified\">\n <span class=\"sau-icon sau-icon-envelope\">\n <sau-envelope-icon></sau-envelope-icon>\n </span>\n </div>\n }\n\n @if(item.google_id){\n <div [title]=\"item.google_id\" class=\"sau-table-login-google\">\n <span class=\"sau-icon sau-icon-google\">\n <sau-google-icon></sau-google-icon>\n </span>\n </div>\n }\n\n </span>\n } @else {\n <div class=\"sau-table-login-inactive\">\n <span class=\"sau-icon sau-icon-xmark\">\n <sau-xmark-icon></sau-xmark-icon>\n </span>\n </div>\n }\n }\n\n @default {\n {{getValue(item, value)}}\n }\n }\n</section>" }]
251
+ }], propDecorators: { item: [{
252
+ type: Input
253
+ }], header: [{
254
+ type: Input
255
+ }], value: [{
256
+ type: Input
257
+ }] } });
188
258
 
189
- class EyeIconComponent {
190
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EyeIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
191
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: EyeIconComponent, isStandalone: true, selector: "sau-eye-icon", ngImport: i0, template: `
192
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="w-4 h-auto">
193
- <path fill="currentColor"
194
- d="M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6.01 7 11 7s9.27-3.11 11-7c-1.73-3.89-6.01-7-11-7zm0 12c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8.5c-1.93 0-3.5 1.57-3.5 3.5S10.07 15.5 12 15.5 15.5 13.93 15.5 12 13.93 8.5 12 8.5z" />
259
+ class CrownIconComponent {
260
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CrownIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
261
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: CrownIconComponent, isStandalone: true, selector: "sau-crown-icon", ngImport: i0, template: `
262
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
263
+ <path d="M5 16L3 5l4.5 7L12 4l4.5 8L21 5l-2 11H5zm2.7-2h8.6l.9-5.4-2.1 3.7L12 9l-3.1 3.3-2.1-3.7L7.7 14z"/>
195
264
  </svg>
196
265
  `, isInline: true, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] });
197
266
  }
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EyeIconComponent, decorators: [{
267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CrownIconComponent, decorators: [{
199
268
  type: Component,
200
- args: [{ selector: 'sau-eye-icon', standalone: true, template: `
201
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="w-4 h-auto">
202
- <path fill="currentColor"
203
- d="M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6.01 7 11 7s9.27-3.11 11-7c-1.73-3.89-6.01-7-11-7zm0 12c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8.5c-1.93 0-3.5 1.57-3.5 3.5S10.07 15.5 12 15.5 15.5 13.93 15.5 12 13.93 8.5 12 8.5z" />
269
+ args: [{ selector: 'sau-crown-icon', standalone: true, template: `
270
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" style="width: 100%; height: 100%; fill: currentColor;">
271
+ <path d="M5 16L3 5l4.5 7L12 4l4.5 8L21 5l-2 11H5zm2.7-2h8.6l.9-5.4-2.1 3.7L12 9l-3.1 3.3-2.1-3.7L7.7 14z"/>
204
272
  </svg>
205
273
  `, styles: [":host{display:inline-block;width:1em;height:1em;vertical-align:middle}\n"] }]
206
274
  }] });
207
275
 
276
+ class DataTemplateComponent {
277
+ item;
278
+ header;
279
+ customTemplates = {};
280
+ getCustomTemplate(key) {
281
+ return this.customTemplates ? this.customTemplates[key] : undefined;
282
+ }
283
+ getValue(item, key) {
284
+ let arrayKey = [];
285
+ if (!Array.isArray(key)) {
286
+ arrayKey.push(key);
287
+ }
288
+ else {
289
+ arrayKey = key.slice();
290
+ }
291
+ let result = '';
292
+ while (arrayKey.length > 0) {
293
+ let keys = arrayKey[0].split('.');
294
+ let value = item;
295
+ if (keys[0].includes('[]')) {
296
+ let arrayKey = keys[0].replace('[]', '');
297
+ value = value[arrayKey].map((element) => this.getValue(element, keys.slice(1).join('.'))).join(', ');
298
+ }
299
+ else {
300
+ let finalValue = item[String(key)];
301
+ let isArray = Array.isArray(finalValue);
302
+ let isBoolean = typeof finalValue === 'boolean';
303
+ let isNumber = typeof finalValue === 'number';
304
+ if (isArray || isBoolean || isNumber) {
305
+ return finalValue;
306
+ }
307
+ for (let i = 0; value && i < keys.length; i++) {
308
+ value = value[keys[i]];
309
+ }
310
+ result = value;
311
+ }
312
+ arrayKey.shift();
313
+ }
314
+ return result;
315
+ }
316
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DataTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
317
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: DataTemplateComponent, isStandalone: true, selector: "sau-data-template", inputs: { item: "item", header: "header", customTemplates: "customTemplates" }, ngImport: i0, template: "<section class=\"sau-table-data-section\">\n\n @if(header.name == 'NOMBRE' && item.role == 'ROLE_ADMIN') {\n <div class=\"sau-table-admin-crown\">\n <span class=\"sau-icon sau-icon-crown\">\n <sau-crown-icon></sau-crown-icon>\n </span>\n </div>\n }\n\n @let customTmpl = getCustomTemplate(header.key);\n\n @if (customTmpl) {\n\n <section class=\"sau-table-data-type-section\">\n <ng-container [ngTemplateOutlet]=\"customTmpl\" [ngTemplateOutletContext]=\"{item: item, header: header}\">\n </ng-container>\n </section>\n\n } @else {\n <span>\n\n @if (header.innerHtml) {\n <span [innerHTML]=\"getValue(item, header.key)\"></span>\n } @else {\n <sau-data-type-template [item]=\"item\" [header]=\"header\" [value]=\"header.key\"></sau-data-type-template>\n }\n\n @if(header.subKey){\n <span class=\"sau-table-subkey\">\n (\n <sau-data-type-template [item]=\"item\" [header]=\"header\" [value]=\"header.subKey\"></sau-data-type-template>\n )\n </span>\n }\n\n </span>\n }\n\n</section>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DataTypeTemplateComponent, selector: "sau-data-type-template", inputs: ["item", "header", "value"] }, { kind: "component", type: CrownIconComponent, selector: "sau-crown-icon" }] });
318
+ }
319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DataTemplateComponent, decorators: [{
320
+ type: Component,
321
+ args: [{ selector: 'sau-data-template', imports: [
322
+ CommonModule,
323
+ DataTypeTemplateComponent,
324
+ CrownIconComponent
325
+ ], template: "<section class=\"sau-table-data-section\">\n\n @if(header.name == 'NOMBRE' && item.role == 'ROLE_ADMIN') {\n <div class=\"sau-table-admin-crown\">\n <span class=\"sau-icon sau-icon-crown\">\n <sau-crown-icon></sau-crown-icon>\n </span>\n </div>\n }\n\n @let customTmpl = getCustomTemplate(header.key);\n\n @if (customTmpl) {\n\n <section class=\"sau-table-data-type-section\">\n <ng-container [ngTemplateOutlet]=\"customTmpl\" [ngTemplateOutletContext]=\"{item: item, header: header}\">\n </ng-container>\n </section>\n\n } @else {\n <span>\n\n @if (header.innerHtml) {\n <span [innerHTML]=\"getValue(item, header.key)\"></span>\n } @else {\n <sau-data-type-template [item]=\"item\" [header]=\"header\" [value]=\"header.key\"></sau-data-type-template>\n }\n\n @if(header.subKey){\n <span class=\"sau-table-subkey\">\n (\n <sau-data-type-template [item]=\"item\" [header]=\"header\" [value]=\"header.subKey\"></sau-data-type-template>\n )\n </span>\n }\n\n </span>\n }\n\n</section>" }]
326
+ }], propDecorators: { item: [{
327
+ type: Input
328
+ }], header: [{
329
+ type: Input
330
+ }], customTemplates: [{
331
+ type: Input
332
+ }] } });
333
+
208
334
  class SAUTableModule {
209
335
  http;
210
336
  cdr;
@@ -377,17 +503,17 @@ class SAUTableModule {
377
503
  isArray(array) {
378
504
  return Array.isArray(array);
379
505
  }
380
- clickEditButton(id) {
381
- this.editEvent.emit(id);
506
+ clickEditButton(item) {
507
+ this.editEvent.emit(item);
382
508
  }
383
- clickDeleteButton(id) {
384
- this.deleteEvent.emit(id);
509
+ clickDeleteButton(item) {
510
+ this.deleteEvent.emit(item);
385
511
  }
386
- clickPrintButton(id) {
387
- this.printEvent.emit(id);
512
+ clickPrintButton(item) {
513
+ this.printEvent.emit(item);
388
514
  }
389
- clickShowButton(id) {
390
- this.showEvent.emit(id);
515
+ clickShowButton(item) {
516
+ this.showEvent.emit(item);
391
517
  }
392
518
  onPageChange(newPage) {
393
519
  this.page = newPage;
@@ -397,14 +523,13 @@ class SAUTableModule {
397
523
  this.filters = filters;
398
524
  this.getItems();
399
525
  }
400
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SAUTableModule, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
401
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: SAUTableModule, isStandalone: true, selector: "sau-table", inputs: { url: "url", filterConfig: "filterConfig", contentList: "contentList", contentTotal: "contentTotal", pageParamName: "pageParamName", limitParamName: "limitParamName", sizeInitialPage: "sizeInitialPage", sizeBetweenPages: "sizeBetweenPages", fixedContent: "fixedContent", orientation: "orientation", headers: "headers", showOptions: "showOptions", canEdit: "canEdit", canDelete: "canDelete", canPrint: "canPrint", canShow: "canShow", customTemplates: "customTemplates", items: "items", limit: "limit" }, outputs: { editEvent: "editEvent", deleteEvent: "deleteEvent", printEvent: "printEvent", showEvent: "showEvent" }, queries: [{ propertyName: "editButtonTemplate", first: true, predicate: ["editButton"], descendants: true }, { propertyName: "deleteButtonTemplate", first: true, predicate: ["deleteButton"], descendants: true }, { propertyName: "printButtonTemplate", first: true, predicate: ["printButton"], descendants: true }, { propertyName: "showButtonTemplate", first: true, predicate: ["showButton"], descendants: true }, { propertyName: "customCellTemplates", predicate: ["customCell"] }], viewQueries: [{ propertyName: "filterComponent", first: true, predicate: ["filterComponent"], descendants: true }], ngImport: i0, template: "<div class=\"sau-table\">\n\n @if(filterConfig){\n <sau-filter #filterComponent [filterConfig]=\"filterConfig\"\n (onFilterProcessed)=\"onFiltersChange($event.url)\"></sau-filter>\n }\n\n @if (loading) {\n <div class=\"sau-skeleton\">\n\n <div class=\"sau-table-mobile\">\n <div class=\"sau-table-mobile-header\">\n <div class=\"skeleton-line head\" style=\"width: 150px; height: 24px;\"></div>\n <div class=\"sau-table-mobile-divider\"></div>\n </div>\n\n <table class=\"sau-table-mobile-table\">\n <tbody>\n @for (i of [1,2,3]; track $index) {\n <tr class=\"sau-table-mobile-row\">\n <td>\n <table class=\"sau-table-width-full\">\n <tbody>\n @for (h of headers; track $index) {\n <tr [class]=\"$index % 2 == 0 ? 'sau-table-mobile-row-even' : ''\">\n <th class=\"sau-table-mobile-header-cell\">\n <div class=\"skeleton-line head\"></div>\n </th>\n <td class=\"sau-table-mobile-data-cell\">\n <div class=\"skeleton-line data\"></div>\n </td>\n </tr>\n }\n\n <tr class=\"sau-table-mobile-actions-row\">\n <td colspan=\"2\">\n <div class=\"sau-table-mobile-actions-container\">\n @if(editButtonTemplate){\n\n } @else if(hasEditSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(deleteButtonTemplate){\n\n } @else if(hasDeleteSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(printButtonTemplate){\n\n } @else if(hasPrintSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(showButtonTemplate){\n\n } @else if(hasShowSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n </div>\n </td>\n </tr>\n\n </tbody>\n </table>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <table class=\"sau-table-desktop\">\n <thead class=\"sau-table-desktop-header\">\n <tr>\n @for (h of headers; track $index) {\n <th class=\"sau-table-desktop-header-cell\">\n <div class=\"skeleton-line head\"></div>\n </th>\n }\n @if(this.url){ <th class=\"sau-table-desktop-header-cell\"></th> }\n </tr>\n </thead>\n <tbody>\n @for (i of [1,2,3,4,5]; track $index) {\n <tr [class]=\"'sau-table-desktop-row ' + ($index % 2 == 0 ? 'sau-table-desktop-row-even' : '')\">\n @for (h of headers; track $index) {\n <td class=\"sau-table-desktop-cell\">\n <div class=\"skeleton-line data\"></div>\n </td>\n }\n @if(this.url){\n <td class=\"sau-table-desktop-actions-cell\">\n <div class=\"skeleton-line data\" style=\"width: 40px; margin: 0 auto;\"></div>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n } @else {\n\n\n\n <!----------------------------------- Table mobile ----------------------------------->\n @if(orientation=='dynamic' || orientation=='vertical'){\n <div class=\"sau-table-mobile\" [class.sau-table-dynamic-mode]=\"orientation=='dynamic'\">\n <!-- Mobile header -->\n <div class=\"sau-table-mobile-header\">\n <h3 class=\"sau-table-mobile-title\">Lista de elementos</h3>\n <div class=\"sau-table-mobile-divider\"></div>\n </div>\n\n <table class=\"sau-table-mobile-table\">\n <tbody>\n @for (item of items; track $index) {\n @let itemIndex = $index;\n <tr class=\"sau-table-mobile-row\">\n <td>\n <table class=\"sau-table-width-full\">\n <tbody>\n @for (header of headers; track $index) {\n <tr [class]=\"$index%2==0?'sau-table-mobile-row-even':''\">\n\n <th scope=\"col\" class=\"sau-table-mobile-header-cell\">\n {{header.name}}\n </th>\n <td class=\"sau-table-mobile-data-cell\">\n\n @if(header.type == 'table' && !isArray(header.key)){\n\n <!-- CSS-only toggle button -->\n <input type=\"checkbox\" [id]=\"'toggle-table-' + itemIndex\"\n class=\"sau-table-toggle-input\">\n <label [for]=\"'toggle-table-' + itemIndex\" class=\"sau-table-toggle-label\">\n <span class=\"sau-icon sau-icon-chevron-down\">\n <sau-chevron-down-icon></sau-chevron-down-icon>\n </span>\n <span class=\"sau-table-toggle-text\">\n <span class=\"sau-table-toggle-show\">Mostrar</span>\n <span class=\"sau-table-toggle-hide\">Ocultar</span>\n </span>\n </label>\n\n <!-- Content that toggles -->\n <div class=\"sau-table-toggle-content\">\n <sau-table [headers]=\"header.headers\"\n [items]=\"getValue(item, header.key)\"></sau-table>\n </div>\n\n }@else{\n <ng-container [ngTemplateOutlet]=\"DataTemplate\"\n [ngTemplateOutletContext]=\"{item:item, header:header}\"></ng-container>\n\n }\n\n </td>\n\n </tr>\n }\n\n @if(showOptions){\n <tr class=\"sau-table-mobile-actions-row\">\n <td colspan=\"2\">\n <div class=\"sau-table-mobile-actions-container\">\n @if(showEdit(item)){\n @if(editButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"editButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasEditSubscription){\n <button class=\"sau-table-edit-button\" (click)=\"clickEditButton(item.id)\">\n <span class=\"sau-icon sau-icon-pen\">\n <sau-pen-icon></sau-pen-icon>\n </span>\n Editar\n </button>\n }\n }\n\n @if(showDelete(item)){\n @if(deleteButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"deleteButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasDeleteSubscription){\n <button class=\"sau-table-delete-button\"\n (click)=\"clickDeleteButton(item.id)\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-trash-icon></sau-trash-icon>\n </span>\n Eliminar\n </button>\n }\n }\n\n @if(showPrint(item)){\n @if(printButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"printButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasPrintSubscription){\n <button class=\"sau-table-print-button\" (click)=\"clickPrintButton(item.id)\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-print-icon></sau-print-icon>\n </span>\n Imprimir\n </button>\n }\n }\n\n @if(showShow(item)){\n @if(showButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"showButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasShowSubscription){\n <button class=\"sau-table-show-button\" (click)=\"clickShowButton(item.id)\">\n <span class=\"sau-icon sau-icon-eye\">\n <sau-eye-icon></sau-eye-icon>\n </span>\n Mostrar\n </button>\n }\n }\n\n </div>\n </td>\n </tr>\n }\n\n </tbody>\n </table>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!--------------------------------- Table mobile end --------------------------------->\n\n <!----------------------------------- Table desktop ----------------------------------->\n @if(orientation=='dynamic' || orientation=='horizontal'){\n <table class=\"sau-table-desktop\" [class.sau-table-dynamic-mode]=\"orientation=='dynamic'\">\n <thead class=\"sau-table-desktop-header\">\n <tr>\n @for (header of headers; track $index) {\n <th scope=\"col\" class=\"sau-table-desktop-header-cell\">\n {{header.name}}\n </th>\n }\n\n @if(showOptions){\n <th scope=\"col\" class=\"sau-table-desktop-header-cell\">\n Opciones\n </th>\n }\n\n </tr>\n </thead>\n <tbody>\n @for (item of items; track $index) {\n <tr [class]=\"'sau-table-desktop-row ' + ($index%2==0?'sau-table-desktop-row-even':'')\">\n\n @for (header of headers; track $index) {\n <td class=\"sau-table-desktop-cell\">\n\n @if(header.type == 'table'){\n\n @if(!isArray(header.key)){\n <sau-table [headers]=\"header.headers\" [items]=\"getValue(item, header.key)\"></sau-table>\n }\n\n }@else{\n <ng-container [ngTemplateOutlet]=\"DataTemplate\"\n [ngTemplateOutletContext]=\"{item:item, header:header}\"></ng-container>\n }\n\n </td>\n }\n\n @if(showOptions){\n <td class=\"sau-table-desktop-actions-cell\">\n <div class=\"sau-table-desktop-actions-container\">\n\n @if(showEdit(item)){\n @if(editButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"editButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasEditSubscription){\n <button class=\"sau-table-desktop-edit-button\" (click)=\"clickEditButton(item.id)\" title=\"Editar\">\n <span class=\"sau-icon sau-icon-pen\">\n <sau-pen-icon></sau-pen-icon>\n </span>\n </button>\n }\n }\n\n @if(showDelete(item)){\n @if(deleteButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"deleteButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasDeleteSubscription){\n <button class=\"sau-table-desktop-delete-button\" (click)=\"clickDeleteButton(item.id)\"\n title=\"Eliminar\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-trash-icon></sau-trash-icon>\n </span>\n </button>\n }\n }\n\n @if(showPrint(item)){\n @if(printButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"printButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasPrintSubscription){\n <button class=\"sau-table-desktop-print-button\" (click)=\"clickPrintButton(item.id)\"\n title=\"Imprimir\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-print-icon></sau-print-icon>\n </span>\n </button>\n }\n }\n\n\n @if(showShow(item)){\n @if(showButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"showButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasShowSubscription){\n <button class=\"sau-table-desktop-show-button\" (click)=\"clickShowButton(item.id)\"\n title=\"Mostrar\">\n <span class=\"sau-icon sau-icon-eye\">\n <sau-eye-icon></sau-eye-icon>\n </span>\n </button>\n }\n }\n\n </div>\n </td>\n }\n\n </tr>\n }\n </tbody>\n </table>\n }\n <!--------------------------------- table desktop end --------------------------------->\n\n @if (items.length == 0) {\n <div class=\"sau-table-empty\">\n <div class=\"sau-table-empty-icon\">\n <span class=\"sau-icon sau-icon-inbox\">\n <sau-inbox-icon></sau-inbox-icon>\n </span>\n </div>\n <p class=\"sau-table-empty-title\">No hay elementos</p>\n <p class=\"sau-table-empty-subtitle\">Los elementos aparecer\u00E1n aqu\u00ED cuando est\u00E9n disponibles</p>\n </div>\n\n } @else if(total > 1) {\n\n <sau-paginator [totalPages]=\"total\" [currentPage]=\"page\" (pageChange)=\"onPageChange($event)\"></sau-paginator>\n\n }\n\n\n }\n</div>\n\n<!----------------------------------- Data template ----------------------------------->\n<ng-template #DataTemplate let-item=\"item\" let-header=\"header\">\n\n <section class=\"sau-table-data-section\">\n\n @if(header.name == 'NOMBRE' && item.role == 'ROLE_ADMIN') {\n <div class=\"sau-table-admin-crown\">\n <span class=\"sau-icon sau-icon-crown\">\n <sau-crown-icon></sau-crown-icon>\n </span>\n </div>\n }\n\n @let customTmpl = getCustomTemplate(header.key);\n\n @if (customTmpl) {\n\n <section class=\"sau-table-data-type-section\">\n <ng-container [ngTemplateOutlet]=\"customTmpl\" [ngTemplateOutletContext]=\"{item: item, header: header}\">\n </ng-container>\n </section>\n\n } @else {\n <span>\n\n @if (header.innerHtml) {\n <span [innerHTML]=\"getValue(item, header.key)\"></span>\n } @else {\n <ng-container [ngTemplateOutlet]=\"DataTypeTemplate\"\n [ngTemplateOutletContext]=\"{item:item, header:header, value:header.key}\"></ng-container>\n }\n\n @if(header.subKey){\n <span class=\"sau-table-subkey\">\n (\n <ng-container [ngTemplateOutlet]=\"DataTypeTemplate\"\n [ngTemplateOutletContext]=\"{item:item, header:header, value:header.subKey}\"></ng-container>\n )\n </span>\n }\n\n </span>\n }\n\n </section>\n\n</ng-template>\n<!--------------------------------- Data template end --------------------------------->\n\n<!----------------------------------- Data Type template ----------------------------------->\n<ng-template #DataTypeTemplate let-item=\"item\" let-header=\"header\" let-value=\"value\">\n\n <section class=\"sau-table-data-type-section\">\n @switch (header.type) {\n\n @case ('boolean') {\n @if(getValue(item, value)){\n <div class=\"sau-table-boolean-true\">\n <span class=\"sau-icon sau-icon-check\">\n <sau-check-icon></sau-check-icon>\n </span>\n </div>\n } @else {\n <div class=\"sau-table-boolean-false\">\n <span class=\"sau-icon sau-icon-xmark\">\n <sau-xmark-icon></sau-xmark-icon>\n </span>\n </div>\n }\n }\n\n @case ('date') {\n <span class=\"sau-table-date\">\n {{getValue(item, value) | date: 'dd/MM/yyyy'}}\n </span>\n }\n\n @case ('dateTime') {\n <span class=\"sau-table-datetime\">\n {{getValue(item, value) | date: 'dd/MM/yyyy HH:mm'}}\n </span>\n }\n\n @case ('color'){\n <span class=\"sau-table-color-indicator\" [style.background-color]=\"getValue(item, value)\"></span>\n }\n\n @case ('link'){\n @let link = getLink(header.url, item, value);\n\n @if(link.isExternal){\n <a [href]=\"link.url\" class=\"sau-table-link\">\n {{header.linkName}}\n </a>\n }@else{\n <a [routerLink]=\"link.url\" class=\"sau-table-link\" target=\"_blank\">\n {{header.linkName}}\n </a>\n }\n\n }\n\n @case ('image'){\n @let link = getLink(header.url, item, value);\n\n <img [src]=\"link.url\" [alt]=\"getValue(item, value)\" loading=\"lazy\" class=\"sau-table-image\">\n }\n\n @case ('login'){\n @if(item.active){\n <span class=\"sau-table-login-container\">\n\n @if(item.email_verified_at){\n <div [title]=\"item.email\" class=\"sau-table-login-email-verified\">\n <span class=\"sau-icon sau-icon-envelope\">\n <sau-envelope-icon></sau-envelope-icon>\n </span>\n </div>\n }\n\n @if(item.google_id){\n <div [title]=\"item.google_id\" class=\"sau-table-login-google\">\n <span class=\"sau-icon sau-icon-google\">\n <sau-google-icon></sau-google-icon>\n </span>\n </div>\n }\n\n </span>\n } @else {\n <div class=\"sau-table-login-inactive\">\n <span class=\"sau-icon sau-icon-xmark\">\n <sau-xmark-icon></sau-xmark-icon>\n </span>\n </div>\n }\n }\n\n @default {\n {{getValue(item, value)}}\n }\n }\n </section>\n\n</ng-template>\n<!--------------------------------- Data Type template end --------------------------------->", styles: [".sau-table{--sau-color-primary: rgb(147, 51, 234);--sau-color-secondary: var(--sau-color-primary);--sau-color-background: rgb(255, 255, 255);--sau-color-edit: rgb(34, 197, 94);--sau-color-delete: rgb(239, 68, 68);--sau-color-print: rgb(212, 167, 44);--sau-color-show: rgb(44, 122, 212);--sau-color-text: rgb(31, 41, 55);overflow:auto;background:var(--sau-color-background)}.sau-table .sau-filter{margin-bottom:.5rem}.sau-table table{border-collapse:collapse}.sau-table .sau-table-width-full{width:100%}.sau-table .sau-icon{display:inline-block;width:1em;height:1em;vertical-align:middle;display:flex;align-items:center;justify-content:center}.sau-table .sau-icon svg{width:100%;height:100%;fill:currentColor}.sau-table .sau-icon.sau-icon-chevron-down svg{width:1.8em;height:1.8em}.sau-table .sau-icon.sau-icon-inbox svg{width:1.5em;height:1.5em}@media(min-width:768px){.sau-table .sau-table-mobile.sau-table-dynamic-mode{display:none}}.sau-table .sau-table-mobile .sau-table-mobile-header{background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background);padding:.5rem 1rem}.sau-table .sau-table-mobile .sau-table-mobile-header .sau-table-mobile-title{font-size:1rem;font-weight:600;line-height:1.25}.sau-table .sau-table-mobile .sau-table-mobile-header .sau-table-mobile-divider{width:2rem;height:.125rem;background:var(--sau-color-background);margin-top:.25rem}.sau-table .sau-table-mobile .sau-table-mobile-table{width:100%;font-size:.875rem;text-align:left;color:var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row{border-bottom:1px solid var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row:last-child{border-bottom:none}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row.sau-table-mobile-row-even{background:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row .sau-table-mobile-header-cell{padding:.5rem;font-weight:500;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background);max-width:min-content}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row .sau-table-mobile-data-cell{padding:.5rem;width:100%;color:var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-toggle-input{display:none}.sau-table .sau-table-mobile .sau-table-toggle-input:checked~.sau-table-toggle-content{height:auto!important;opacity:1!important;overflow:visible!important}.sau-table .sau-table-mobile .sau-table-toggle-input:checked+.sau-table-toggle-label .sau-table-toggle-show{display:none}.sau-table .sau-table-mobile .sau-table-toggle-input:checked+.sau-table-toggle-label .sau-table-toggle-hide{display:inline}.sau-table .sau-table-mobile .sau-table-toggle-label{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem;background:var(--sau-color-background);color:var(--sau-color-primary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}.sau-table .sau-table-mobile .sau-table-toggle-label:hover{background:var(--sau-color-secondary);color:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text{font-size:.875rem;font-weight:500}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text .sau-table-toggle-show{display:inline}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text .sau-table-toggle-hide{display:none}.sau-table .sau-table-mobile .sau-table-toggle-content{margin-top:.75rem;height:0;overflow:hidden;opacity:0;transition:all .3s ease-in-out}.sau-table .sau-table-mobile .sau-table-mobile-actions-row{border-bottom:.5rem solid transparent;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));padding:1rem}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container{display:flex;justify-content:center;gap:1rem;padding:.5rem}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;background:var(--sau-color-background);transition:all .2s;cursor:pointer}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button:hover{color:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button{color:var(--sau-color-edit);border:1px solid var(--sau-color-edit)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button:hover{background:var(--sau-color-edit)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button{color:var(--sau-color-delete);border:1px solid var(--sau-color-delete)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button:hover{background:var(--sau-color-delete)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button{color:var(--sau-color-print);border:1px solid var(--sau-color-print)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button:hover{background:var(--sau-color-print)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button{color:var(--sau-color-show);border:1px solid var(--sau-color-show)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button:hover{background:var(--sau-color-show)}.sau-table .sau-table-desktop{width:100%;font-size:.875rem;text-align:center;color:var(--sau-color-primary)}.sau-table .sau-table-desktop.sau-table-dynamic-mode{display:none}@media(min-width:768px){.sau-table .sau-table-desktop.sau-table-dynamic-mode{display:table}}.sau-table .sau-table-desktop .sau-table-desktop-header{font-size:.75rem;font-weight:600;text-transform:uppercase;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-header .sau-table-desktop-header-cell{padding:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row{min-width:max-content;transition:background-color .2s;border-bottom:1px solid var(--sau-color-primary)}.sau-table .sau-table-desktop .sau-table-desktop-row:last-child{border-bottom:none}.sau-table .sau-table-desktop .sau-table-desktop-row:hover,.sau-table .sau-table-desktop .sau-table-desktop-row.sau-table-desktop-row-even{background:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-cell,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell{padding:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container{display:flex;align-items:center;gap:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:var(--sau-color-background);transition:all .2s;font-size:1.2rem;cursor:pointer}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button:hover{color:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button{color:var(--sau-color-edit);border:1px solid var(--sau-color-edit)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button:hover{background:var(--sau-color-edit)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button{color:var(--sau-color-delete);border:1px solid var(--sau-color-delete)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button:hover{background:var(--sau-color-delete)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button{color:var(--sau-color-print);border:1px solid var(--sau-color-print)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button:hover{background:var(--sau-color-print)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button{color:var(--sau-color-show);border:1px solid var(--sau-color-show)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button:hover{background:var(--sau-color-show)}.sau-table .sau-table-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:12rem;text-align:center}.sau-table .sau-table-empty .sau-table-empty-icon{position:relative;width:4rem;height:4rem;display:flex;align-items:center;justify-content:center;margin-bottom:1rem;color:var(--sau-color-primary);font-size:2rem}.sau-table .sau-table-empty .sau-table-empty-icon:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table .sau-table-empty .sau-table-empty-title{color:var(--sau-color-text);font-weight:500}.sau-table .sau-table-empty .sau-table-empty-subtitle{color:var(--sau-color-text);font-size:.875rem}.sau-table .sau-paginator{border-top:1px solid var(--sau-color-primary);--sau-color-primary: inherit !important;--sau-color-secondary: inherit !important;--sau-color-background: inherit !important;--sau-color-edit: inherit !important;--sau-color-delete: inherit !important;--sau-color-text: inherit !important}.sau-table-data-section{display:flex;align-items:center;gap:.5rem}.sau-table-data-section .sau-table-admin-crown{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-secondary)}.sau-table-data-section .sau-table-subkey{display:block;color:var(--sau-color-primary);font-size:.75rem;min-width:max-content}.sau-table-data-type-section{display:inline-block;min-width:max-content;color:var(--sau-color-text)}.sau-table-data-type-section .sau-table-boolean-true{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sau-table-data-type-section .sau-table-boolean-true:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table-data-type-section .sau-table-boolean-false{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sau-table-data-type-section .sau-table-boolean-false:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table-data-type-section .sau-table-datetime{color:var(--sau-color-text);font-size:.875rem}.sau-table-data-type-section .sau-table-color-indicator{display:inline-block;width:2rem;height:1rem}.sau-table-data-type-section .sau-table-link{color:var(--sau-color-primary);text-decoration:none}.sau-table-data-type-section .sau-table-link:hover{text-decoration:underline}.sau-table-data-type-section .sau-table-image{width:2.5rem;height:2.5rem;object-fit:cover}.sau-table-data-type-section .sau-table-login-container{display:inline-flex;align-items:center;gap:.25rem}.sau-table-data-type-section .sau-table-login-container .sau-table-login-email-verified{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-primary)}.sau-table-data-type-section .sau-table-login-container .sau-table-login-google,.sau-table-data-type-section .sau-table-login-inactive{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-secondary)}@keyframes shimmer{0%{transform:translate(-150%)}to{transform:translate(150%)}}.sau-skeleton{pointer-events:none;-webkit-user-select:none;user-select:none}.skeleton-line{position:relative;overflow:hidden;border-radius:4px;-webkit-backdrop-filter:brightness(.9);backdrop-filter:brightness(.9);border:1px solid rgba(0,0,0,.05)}.skeleton-line:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,#fff0,#fff6,#fff0);animation:shimmer 1.8s infinite}.skeleton-line.head{height:12px;width:60px}.skeleton-line.data{height:10px;width:90%}@media screen and (max-width:768px){.sau-skeleton .sau-table-desktop{display:none}}@media screen and (min-width:769px){.sau-skeleton .sau-table-mobile{display:none}}\n"], dependencies: [{ kind: "component", type: SAUTableModule, selector: "sau-table", inputs: ["url", "filterConfig", "contentList", "contentTotal", "pageParamName", "limitParamName", "sizeInitialPage", "sizeBetweenPages", "fixedContent", "orientation", "headers", "showOptions", "canEdit", "canDelete", "canPrint", "canShow", "customTemplates", "items", "limit"], outputs: ["editEvent", "deleteEvent", "printEvent", "showEvent"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SAUFilterModule, selector: "sau-filter", inputs: ["filterConfig", "searchButtonText"], outputs: ["onFilterProcessed"] }, { kind: "component", type: SAUPaginatorModule, selector: "sau-paginator", inputs: ["totalPages", "currentPage"], outputs: ["pageChange"] }, { kind: "component", type: ChevronDownIconComponent, selector: "sau-chevron-down-icon" }, { kind: "component", type: PenIconComponent, selector: "sau-pen-icon" }, { kind: "component", type: TrashIconComponent, selector: "sau-trash-icon" }, { kind: "component", type: InboxIconComponent, selector: "sau-inbox-icon" }, { kind: "component", type: CrownIconComponent, selector: "sau-crown-icon" }, { kind: "component", type: CheckIconComponent, selector: "sau-check-icon" }, { kind: "component", type: XmarkIconComponent, selector: "sau-xmark-icon" }, { kind: "component", type: EnvelopeIconComponent, selector: "sau-envelope-icon" }, { kind: "component", type: GoogleIconComponent, selector: "sau-google-icon" }, { kind: "component", type: PrintIconComponent, selector: "sau-print-icon" }, { kind: "component", type: EyeIconComponent, selector: "sau-eye-icon" }, { kind: "pipe", type: DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None });
526
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SAUTableModule, deps: [{ token: i1$1.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
527
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SAUTableModule, isStandalone: true, selector: "sau-table", inputs: { url: "url", filterConfig: "filterConfig", contentList: "contentList", contentTotal: "contentTotal", pageParamName: "pageParamName", limitParamName: "limitParamName", sizeInitialPage: "sizeInitialPage", sizeBetweenPages: "sizeBetweenPages", fixedContent: "fixedContent", orientation: "orientation", headers: "headers", showOptions: "showOptions", canEdit: "canEdit", canDelete: "canDelete", canPrint: "canPrint", canShow: "canShow", customTemplates: "customTemplates", items: "items", limit: "limit" }, outputs: { editEvent: "editEvent", deleteEvent: "deleteEvent", printEvent: "printEvent", showEvent: "showEvent" }, queries: [{ propertyName: "editButtonTemplate", first: true, predicate: ["editButton"], descendants: true }, { propertyName: "deleteButtonTemplate", first: true, predicate: ["deleteButton"], descendants: true }, { propertyName: "printButtonTemplate", first: true, predicate: ["printButton"], descendants: true }, { propertyName: "showButtonTemplate", first: true, predicate: ["showButton"], descendants: true }, { propertyName: "customCellTemplates", predicate: ["customCell"] }], viewQueries: [{ propertyName: "filterComponent", first: true, predicate: ["filterComponent"], descendants: true }], ngImport: i0, template: "<div class=\"sau-table\">\n\n @if(filterConfig){\n <sau-filter #filterComponent [filterConfig]=\"filterConfig\"\n (onFilterProcessed)=\"onFiltersChange($event.url)\"></sau-filter>\n }\n\n @if (loading) {\n <div class=\"sau-skeleton\">\n\n <div class=\"sau-table-mobile\">\n <div class=\"sau-table-mobile-header\">\n <div class=\"skeleton-line head\" style=\"width: 150px; height: 24px;\"></div>\n <div class=\"sau-table-mobile-divider\"></div>\n </div>\n\n <table class=\"sau-table-mobile-table\">\n <tbody>\n @for (i of [1,2,3]; track $index) {\n <tr class=\"sau-table-mobile-row\">\n <td>\n <table class=\"sau-table-width-full\">\n <tbody>\n @for (h of headers; track $index) {\n <tr [class]=\"$index % 2 == 0 ? 'sau-table-mobile-row-even' : ''\">\n <th class=\"sau-table-mobile-header-cell\">\n <div class=\"skeleton-line head\"></div>\n </th>\n <td class=\"sau-table-mobile-data-cell\">\n <div class=\"skeleton-line data\"></div>\n </td>\n </tr>\n }\n\n <tr class=\"sau-table-mobile-actions-row\">\n <td colspan=\"2\">\n <div class=\"sau-table-mobile-actions-container\">\n @if(editButtonTemplate){\n\n } @else if(hasEditSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(deleteButtonTemplate){\n\n } @else if(hasDeleteSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(printButtonTemplate){\n\n } @else if(hasPrintSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(showButtonTemplate){\n\n } @else if(hasShowSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n </div>\n </td>\n </tr>\n\n </tbody>\n </table>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <table class=\"sau-table-desktop\">\n <thead class=\"sau-table-desktop-header\">\n <tr>\n @for (h of headers; track $index) {\n <th class=\"sau-table-desktop-header-cell\">\n <div class=\"skeleton-line head\"></div>\n </th>\n }\n @if(this.url){ <th class=\"sau-table-desktop-header-cell\"></th> }\n </tr>\n </thead>\n <tbody>\n @for (i of [1,2,3,4,5]; track $index) {\n <tr [class]=\"'sau-table-desktop-row ' + ($index % 2 == 0 ? 'sau-table-desktop-row-even' : '')\">\n @for (h of headers; track $index) {\n <td class=\"sau-table-desktop-cell\">\n <div class=\"skeleton-line data\"></div>\n </td>\n }\n @if(this.url){\n <td class=\"sau-table-desktop-actions-cell\">\n <div class=\"skeleton-line data\" style=\"width: 40px; margin: 0 auto;\"></div>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n } @else {\n\n\n\n <!----------------------------------- Table mobile ----------------------------------->\n @if(orientation=='dynamic' || orientation=='vertical'){\n <div class=\"sau-table-mobile\" [class.sau-table-dynamic-mode]=\"orientation=='dynamic'\">\n <!-- Mobile header -->\n <div class=\"sau-table-mobile-header\">\n <h3 class=\"sau-table-mobile-title\">Lista de elementos</h3>\n <div class=\"sau-table-mobile-divider\"></div>\n </div>\n\n <table class=\"sau-table-mobile-table\">\n <tbody>\n @for (item of items; track $index) {\n @let itemIndex = $index;\n <tr class=\"sau-table-mobile-row\">\n <td>\n <table class=\"sau-table-width-full\">\n <tbody>\n @for (header of headers; track $index) {\n <tr [class]=\"$index%2==0?'sau-table-mobile-row-even':''\">\n\n <th scope=\"col\" class=\"sau-table-mobile-header-cell\">\n {{header.name}}\n </th>\n <td class=\"sau-table-mobile-data-cell\">\n\n @if(header.type == 'table' && !isArray(header.key)){\n\n <!-- CSS-only toggle button -->\n <input type=\"checkbox\" [id]=\"'toggle-table-' + itemIndex\"\n class=\"sau-table-toggle-input\">\n <label [for]=\"'toggle-table-' + itemIndex\" class=\"sau-table-toggle-label\">\n <span class=\"sau-icon sau-icon-chevron-down\">\n <sau-chevron-down-icon></sau-chevron-down-icon>\n </span>\n <span class=\"sau-table-toggle-text\">\n <span class=\"sau-table-toggle-show\">Mostrar</span>\n <span class=\"sau-table-toggle-hide\">Ocultar</span>\n </span>\n </label>\n\n <!-- Content that toggles -->\n <div class=\"sau-table-toggle-content\">\n <sau-table [headers]=\"header.headers\"\n [items]=\"getValue(item, header.key)\"></sau-table>\n </div>\n\n }@else{\n <sau-data-template [item]=\"item\" [header]=\"header\"\n [customTemplates]=\"customTemplates\"></sau-data-template>\n\n }\n\n </td>\n\n </tr>\n }\n\n @if(showOptions){\n <tr class=\"sau-table-mobile-actions-row\">\n <td colspan=\"2\">\n <div class=\"sau-table-mobile-actions-container\">\n @if(showEdit(item)){\n @if(editButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"editButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasEditSubscription){\n <button class=\"sau-table-edit-button\" (click)=\"clickEditButton(item)\">\n <span class=\"sau-icon sau-icon-pen\">\n <sau-pen-icon></sau-pen-icon>\n </span>\n Editar\n </button>\n }\n }\n\n @if(showDelete(item)){\n @if(deleteButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"deleteButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasDeleteSubscription){\n <button class=\"sau-table-delete-button\" (click)=\"clickDeleteButton(item)\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-trash-icon></sau-trash-icon>\n </span>\n Eliminar\n </button>\n }\n }\n\n @if(showPrint(item)){\n @if(printButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"printButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasPrintSubscription){\n <button class=\"sau-table-print-button\" (click)=\"clickPrintButton(item)\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-print-icon></sau-print-icon>\n </span>\n Imprimir\n </button>\n }\n }\n\n @if(showShow(item)){\n @if(showButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"showButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasShowSubscription){\n <button class=\"sau-table-show-button\" (click)=\"clickShowButton(item)\">\n <span class=\"sau-icon sau-icon-eye\">\n <sau-eye-icon></sau-eye-icon>\n </span>\n Mostrar\n </button>\n }\n }\n\n </div>\n </td>\n </tr>\n }\n\n </tbody>\n </table>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!--------------------------------- Table mobile end --------------------------------->\n\n <!----------------------------------- Table desktop ----------------------------------->\n @if(orientation=='dynamic' || orientation=='horizontal'){\n <table class=\"sau-table-desktop\" [class.sau-table-dynamic-mode]=\"orientation=='dynamic'\">\n <thead class=\"sau-table-desktop-header\">\n <tr>\n @for (header of headers; track $index) {\n <th scope=\"col\" class=\"sau-table-desktop-header-cell\">\n {{header.name}}\n </th>\n }\n\n @if(showOptions){\n <th scope=\"col\" class=\"sau-table-desktop-header-cell\">\n Opciones\n </th>\n }\n\n </tr>\n </thead>\n <tbody>\n @for (item of items; track $index) {\n <tr [class]=\"'sau-table-desktop-row ' + ($index%2==0?'sau-table-desktop-row-even':'')\">\n\n @for (header of headers; track $index) {\n <td class=\"sau-table-desktop-cell\">\n\n @if(header.type == 'table'){\n\n @if(!isArray(header.key)){\n <sau-table [headers]=\"header.headers\" [items]=\"getValue(item, header.key)\"></sau-table>\n }\n\n }@else{\n <sau-data-template [item]=\"item\" [header]=\"header\"\n [customTemplates]=\"customTemplates\"></sau-data-template>\n }\n\n </td>\n }\n\n @if(showOptions){\n <td class=\"sau-table-desktop-actions-cell\">\n <div class=\"sau-table-desktop-actions-container\">\n\n @if(showEdit(item)){\n @if(editButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"editButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasEditSubscription){\n <button class=\"sau-table-desktop-edit-button\" (click)=\"clickEditButton(item)\" title=\"Editar\">\n <span class=\"sau-icon sau-icon-pen\">\n <sau-pen-icon></sau-pen-icon>\n </span>\n </button>\n }\n }\n\n @if(showDelete(item)){\n @if(deleteButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"deleteButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasDeleteSubscription){\n <button class=\"sau-table-desktop-delete-button\" (click)=\"clickDeleteButton(item)\"\n title=\"Eliminar\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-trash-icon></sau-trash-icon>\n </span>\n </button>\n }\n }\n\n @if(showPrint(item)){\n @if(printButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"printButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasPrintSubscription){\n <button class=\"sau-table-desktop-print-button\" (click)=\"clickPrintButton(item)\"\n title=\"Imprimir\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-print-icon></sau-print-icon>\n </span>\n </button>\n }\n }\n\n\n @if(showShow(item)){\n @if(showButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"showButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasShowSubscription){\n <button class=\"sau-table-desktop-show-button\" (click)=\"clickShowButton(item)\" title=\"Mostrar\">\n <span class=\"sau-icon sau-icon-eye\">\n <sau-eye-icon></sau-eye-icon>\n </span>\n </button>\n }\n }\n\n </div>\n </td>\n }\n\n </tr>\n }\n </tbody>\n </table>\n }\n <!--------------------------------- table desktop end --------------------------------->\n\n @if (items.length == 0) {\n <div class=\"sau-table-empty\">\n <div class=\"sau-table-empty-icon\">\n <span class=\"sau-icon sau-icon-inbox\">\n <sau-inbox-icon></sau-inbox-icon>\n </span>\n </div>\n <p class=\"sau-table-empty-title\">No hay elementos</p>\n <p class=\"sau-table-empty-subtitle\">Los elementos aparecer\u00E1n aqu\u00ED cuando est\u00E9n disponibles</p>\n </div>\n\n } @else if(total > 1) {\n\n <sau-paginator [totalPages]=\"total\" [currentPage]=\"page\" (pageChange)=\"onPageChange($event)\"></sau-paginator>\n\n }\n\n\n }\n</div>", styles: [".sau-table{--sau-color-primary: rgb(147, 51, 234);--sau-color-secondary: var(--sau-color-primary);--sau-color-background: rgb(255, 255, 255);--sau-color-edit: rgb(34, 197, 94);--sau-color-delete: rgb(239, 68, 68);--sau-color-print: rgb(212, 167, 44);--sau-color-show: rgb(44, 122, 212);--sau-color-text: rgb(31, 41, 55);overflow:auto;background:var(--sau-color-background)}.sau-table .sau-filter{margin-bottom:.5rem}.sau-table table{border-collapse:collapse}.sau-table .sau-table-width-full{width:100%}.sau-table .sau-icon{display:inline-block;width:1em;height:1em;vertical-align:middle;display:flex;align-items:center;justify-content:center}.sau-table .sau-icon svg{width:100%;height:100%;fill:currentColor}.sau-table .sau-icon.sau-icon-chevron-down svg{width:1.8em;height:1.8em}.sau-table .sau-icon.sau-icon-inbox svg{width:1.5em;height:1.5em}@media(min-width:768px){.sau-table .sau-table-mobile.sau-table-dynamic-mode{display:none}}.sau-table .sau-table-mobile .sau-table-mobile-header{background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background);padding:.5rem 1rem}.sau-table .sau-table-mobile .sau-table-mobile-header .sau-table-mobile-title{font-size:1rem;font-weight:600;line-height:1.25}.sau-table .sau-table-mobile .sau-table-mobile-header .sau-table-mobile-divider{width:2rem;height:.125rem;background:var(--sau-color-background);margin-top:.25rem}.sau-table .sau-table-mobile .sau-table-mobile-table{width:100%;font-size:.875rem;text-align:left;color:var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row{border-bottom:1px solid var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row:last-child{border-bottom:none}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row.sau-table-mobile-row-even{background:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row .sau-table-mobile-header-cell{padding:.5rem;font-weight:500;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background);max-width:min-content}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row .sau-table-mobile-data-cell{padding:.5rem;width:100%;color:var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-toggle-input{display:none}.sau-table .sau-table-mobile .sau-table-toggle-input:checked~.sau-table-toggle-content{height:auto!important;opacity:1!important;overflow:visible!important}.sau-table .sau-table-mobile .sau-table-toggle-input:checked+.sau-table-toggle-label .sau-table-toggle-show{display:none}.sau-table .sau-table-mobile .sau-table-toggle-input:checked+.sau-table-toggle-label .sau-table-toggle-hide{display:inline}.sau-table .sau-table-mobile .sau-table-toggle-label{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem;background:var(--sau-color-background);color:var(--sau-color-primary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}.sau-table .sau-table-mobile .sau-table-toggle-label:hover{background:var(--sau-color-secondary);color:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text{font-size:.875rem;font-weight:500}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text .sau-table-toggle-show{display:inline}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text .sau-table-toggle-hide{display:none}.sau-table .sau-table-mobile .sau-table-toggle-content{margin-top:.75rem;height:0;overflow:hidden;opacity:0;transition:all .3s ease-in-out}.sau-table .sau-table-mobile .sau-table-mobile-actions-row{border-bottom:.5rem solid transparent;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));padding:1rem}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container{display:flex;justify-content:center;gap:1rem;padding:.5rem}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;background:var(--sau-color-background);transition:all .2s;cursor:pointer}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button:hover{color:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button{color:var(--sau-color-edit);border:1px solid var(--sau-color-edit)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button:hover{background:var(--sau-color-edit)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button{color:var(--sau-color-delete);border:1px solid var(--sau-color-delete)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button:hover{background:var(--sau-color-delete)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button{color:var(--sau-color-print);border:1px solid var(--sau-color-print)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button:hover{background:var(--sau-color-print)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button{color:var(--sau-color-show);border:1px solid var(--sau-color-show)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button:hover{background:var(--sau-color-show)}.sau-table .sau-table-desktop{width:100%;font-size:.875rem;text-align:center;color:var(--sau-color-primary)}.sau-table .sau-table-desktop.sau-table-dynamic-mode{display:none}@media(min-width:768px){.sau-table .sau-table-desktop.sau-table-dynamic-mode{display:table}}.sau-table .sau-table-desktop .sau-table-desktop-header{font-size:.75rem;font-weight:600;text-transform:uppercase;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-header .sau-table-desktop-header-cell{padding:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row{min-width:max-content;transition:background-color .2s;border-bottom:1px solid var(--sau-color-primary)}.sau-table .sau-table-desktop .sau-table-desktop-row:last-child{border-bottom:none}.sau-table .sau-table-desktop .sau-table-desktop-row:hover,.sau-table .sau-table-desktop .sau-table-desktop-row.sau-table-desktop-row-even{background:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-cell,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell{padding:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container{display:flex;align-items:center;gap:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:var(--sau-color-background);transition:all .2s;font-size:1.2rem;cursor:pointer}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button:hover{color:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button{color:var(--sau-color-edit);border:1px solid var(--sau-color-edit)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button:hover{background:var(--sau-color-edit)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button{color:var(--sau-color-delete);border:1px solid var(--sau-color-delete)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button:hover{background:var(--sau-color-delete)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button{color:var(--sau-color-print);border:1px solid var(--sau-color-print)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button:hover{background:var(--sau-color-print)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button{color:var(--sau-color-show);border:1px solid var(--sau-color-show)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button:hover{background:var(--sau-color-show)}.sau-table .sau-table-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:12rem;text-align:center}.sau-table .sau-table-empty .sau-table-empty-icon{position:relative;width:4rem;height:4rem;display:flex;align-items:center;justify-content:center;margin-bottom:1rem;color:var(--sau-color-primary);font-size:2rem}.sau-table .sau-table-empty .sau-table-empty-icon:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table .sau-table-empty .sau-table-empty-title{color:var(--sau-color-text);font-weight:500}.sau-table .sau-table-empty .sau-table-empty-subtitle{color:var(--sau-color-text);font-size:.875rem}.sau-table .sau-paginator{border-top:1px solid var(--sau-color-primary);--sau-color-primary: inherit !important;--sau-color-secondary: inherit !important;--sau-color-background: inherit !important;--sau-color-edit: inherit !important;--sau-color-delete: inherit !important;--sau-color-text: inherit !important}.sau-table-data-section{display:flex;align-items:center;gap:.5rem}.sau-table-data-section .sau-table-admin-crown{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-secondary)}.sau-table-data-section .sau-table-subkey{display:block;color:var(--sau-color-primary);font-size:.75rem;min-width:max-content}.sau-table-data-type-section{display:inline-block;min-width:max-content;color:var(--sau-color-text)}.sau-table-data-type-section .sau-table-boolean-true{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sau-table-data-type-section .sau-table-boolean-true:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table-data-type-section .sau-table-boolean-false{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sau-table-data-type-section .sau-table-boolean-false:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table-data-type-section .sau-table-datetime{color:var(--sau-color-text);font-size:.875rem}.sau-table-data-type-section .sau-table-color-indicator{display:inline-block;width:2rem;height:1rem}.sau-table-data-type-section .sau-table-link{color:var(--sau-color-primary);text-decoration:none}.sau-table-data-type-section .sau-table-link:hover{text-decoration:underline}.sau-table-data-type-section .sau-table-image{width:2.5rem;height:2.5rem;object-fit:cover}.sau-table-data-type-section .sau-table-login-container{display:inline-flex;align-items:center;gap:.25rem}.sau-table-data-type-section .sau-table-login-container .sau-table-login-email-verified{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-primary)}.sau-table-data-type-section .sau-table-login-container .sau-table-login-google,.sau-table-data-type-section .sau-table-login-inactive{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-secondary)}@keyframes shimmer{0%{transform:translate(-150%)}to{transform:translate(150%)}}.sau-skeleton{pointer-events:none;-webkit-user-select:none;user-select:none}.skeleton-line{position:relative;overflow:hidden;border-radius:4px;-webkit-backdrop-filter:brightness(.9);backdrop-filter:brightness(.9);border:1px solid rgba(0,0,0,.05)}.skeleton-line:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,#fff0,#fff6,#fff0);animation:shimmer 1.8s infinite}.skeleton-line.head{height:12px;width:60px}.skeleton-line.data{height:10px;width:90%}@media screen and (max-width:768px){.sau-skeleton .sau-table-desktop{display:none}}@media screen and (min-width:769px){.sau-skeleton .sau-table-mobile{display:none}}\n"], dependencies: [{ kind: "component", type: SAUTableModule, selector: "sau-table", inputs: ["url", "filterConfig", "contentList", "contentTotal", "pageParamName", "limitParamName", "sizeInitialPage", "sizeBetweenPages", "fixedContent", "orientation", "headers", "showOptions", "canEdit", "canDelete", "canPrint", "canShow", "customTemplates", "items", "limit"], outputs: ["editEvent", "deleteEvent", "printEvent", "showEvent"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SAUFilterModule, selector: "sau-filter", inputs: ["filterConfig", "searchButtonText"], outputs: ["onFilterProcessed"] }, { kind: "component", type: SAUPaginatorModule, selector: "sau-paginator", inputs: ["totalPages", "currentPage"], outputs: ["pageChange"] }, { kind: "component", type: ChevronDownIconComponent, selector: "sau-chevron-down-icon" }, { kind: "component", type: PenIconComponent, selector: "sau-pen-icon" }, { kind: "component", type: TrashIconComponent, selector: "sau-trash-icon" }, { kind: "component", type: InboxIconComponent, selector: "sau-inbox-icon" }, { kind: "component", type: PrintIconComponent, selector: "sau-print-icon" }, { kind: "component", type: EyeIconComponent, selector: "sau-eye-icon" }, { kind: "component", type: DataTemplateComponent, selector: "sau-data-template", inputs: ["item", "header", "customTemplates"] }], encapsulation: i0.ViewEncapsulation.None });
402
528
  }
403
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SAUTableModule, decorators: [{
529
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SAUTableModule, decorators: [{
404
530
  type: Component,
405
531
  args: [{ selector: 'sau-table', encapsulation: ViewEncapsulation.None, imports: [
406
532
  RouterModule,
407
- DatePipe,
408
533
  CommonModule,
409
534
  SAUFilterModule,
410
535
  SAUPaginatorModule,
@@ -412,15 +537,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
412
537
  PenIconComponent,
413
538
  TrashIconComponent,
414
539
  InboxIconComponent,
415
- CrownIconComponent,
416
- CheckIconComponent,
417
- XmarkIconComponent,
418
- EnvelopeIconComponent,
419
- GoogleIconComponent,
420
540
  PrintIconComponent,
421
541
  EyeIconComponent,
422
- ], template: "<div class=\"sau-table\">\n\n @if(filterConfig){\n <sau-filter #filterComponent [filterConfig]=\"filterConfig\"\n (onFilterProcessed)=\"onFiltersChange($event.url)\"></sau-filter>\n }\n\n @if (loading) {\n <div class=\"sau-skeleton\">\n\n <div class=\"sau-table-mobile\">\n <div class=\"sau-table-mobile-header\">\n <div class=\"skeleton-line head\" style=\"width: 150px; height: 24px;\"></div>\n <div class=\"sau-table-mobile-divider\"></div>\n </div>\n\n <table class=\"sau-table-mobile-table\">\n <tbody>\n @for (i of [1,2,3]; track $index) {\n <tr class=\"sau-table-mobile-row\">\n <td>\n <table class=\"sau-table-width-full\">\n <tbody>\n @for (h of headers; track $index) {\n <tr [class]=\"$index % 2 == 0 ? 'sau-table-mobile-row-even' : ''\">\n <th class=\"sau-table-mobile-header-cell\">\n <div class=\"skeleton-line head\"></div>\n </th>\n <td class=\"sau-table-mobile-data-cell\">\n <div class=\"skeleton-line data\"></div>\n </td>\n </tr>\n }\n\n <tr class=\"sau-table-mobile-actions-row\">\n <td colspan=\"2\">\n <div class=\"sau-table-mobile-actions-container\">\n @if(editButtonTemplate){\n\n } @else if(hasEditSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(deleteButtonTemplate){\n\n } @else if(hasDeleteSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(printButtonTemplate){\n\n } @else if(hasPrintSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(showButtonTemplate){\n\n } @else if(hasShowSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n </div>\n </td>\n </tr>\n\n </tbody>\n </table>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <table class=\"sau-table-desktop\">\n <thead class=\"sau-table-desktop-header\">\n <tr>\n @for (h of headers; track $index) {\n <th class=\"sau-table-desktop-header-cell\">\n <div class=\"skeleton-line head\"></div>\n </th>\n }\n @if(this.url){ <th class=\"sau-table-desktop-header-cell\"></th> }\n </tr>\n </thead>\n <tbody>\n @for (i of [1,2,3,4,5]; track $index) {\n <tr [class]=\"'sau-table-desktop-row ' + ($index % 2 == 0 ? 'sau-table-desktop-row-even' : '')\">\n @for (h of headers; track $index) {\n <td class=\"sau-table-desktop-cell\">\n <div class=\"skeleton-line data\"></div>\n </td>\n }\n @if(this.url){\n <td class=\"sau-table-desktop-actions-cell\">\n <div class=\"skeleton-line data\" style=\"width: 40px; margin: 0 auto;\"></div>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n } @else {\n\n\n\n <!----------------------------------- Table mobile ----------------------------------->\n @if(orientation=='dynamic' || orientation=='vertical'){\n <div class=\"sau-table-mobile\" [class.sau-table-dynamic-mode]=\"orientation=='dynamic'\">\n <!-- Mobile header -->\n <div class=\"sau-table-mobile-header\">\n <h3 class=\"sau-table-mobile-title\">Lista de elementos</h3>\n <div class=\"sau-table-mobile-divider\"></div>\n </div>\n\n <table class=\"sau-table-mobile-table\">\n <tbody>\n @for (item of items; track $index) {\n @let itemIndex = $index;\n <tr class=\"sau-table-mobile-row\">\n <td>\n <table class=\"sau-table-width-full\">\n <tbody>\n @for (header of headers; track $index) {\n <tr [class]=\"$index%2==0?'sau-table-mobile-row-even':''\">\n\n <th scope=\"col\" class=\"sau-table-mobile-header-cell\">\n {{header.name}}\n </th>\n <td class=\"sau-table-mobile-data-cell\">\n\n @if(header.type == 'table' && !isArray(header.key)){\n\n <!-- CSS-only toggle button -->\n <input type=\"checkbox\" [id]=\"'toggle-table-' + itemIndex\"\n class=\"sau-table-toggle-input\">\n <label [for]=\"'toggle-table-' + itemIndex\" class=\"sau-table-toggle-label\">\n <span class=\"sau-icon sau-icon-chevron-down\">\n <sau-chevron-down-icon></sau-chevron-down-icon>\n </span>\n <span class=\"sau-table-toggle-text\">\n <span class=\"sau-table-toggle-show\">Mostrar</span>\n <span class=\"sau-table-toggle-hide\">Ocultar</span>\n </span>\n </label>\n\n <!-- Content that toggles -->\n <div class=\"sau-table-toggle-content\">\n <sau-table [headers]=\"header.headers\"\n [items]=\"getValue(item, header.key)\"></sau-table>\n </div>\n\n }@else{\n <ng-container [ngTemplateOutlet]=\"DataTemplate\"\n [ngTemplateOutletContext]=\"{item:item, header:header}\"></ng-container>\n\n }\n\n </td>\n\n </tr>\n }\n\n @if(showOptions){\n <tr class=\"sau-table-mobile-actions-row\">\n <td colspan=\"2\">\n <div class=\"sau-table-mobile-actions-container\">\n @if(showEdit(item)){\n @if(editButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"editButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasEditSubscription){\n <button class=\"sau-table-edit-button\" (click)=\"clickEditButton(item.id)\">\n <span class=\"sau-icon sau-icon-pen\">\n <sau-pen-icon></sau-pen-icon>\n </span>\n Editar\n </button>\n }\n }\n\n @if(showDelete(item)){\n @if(deleteButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"deleteButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasDeleteSubscription){\n <button class=\"sau-table-delete-button\"\n (click)=\"clickDeleteButton(item.id)\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-trash-icon></sau-trash-icon>\n </span>\n Eliminar\n </button>\n }\n }\n\n @if(showPrint(item)){\n @if(printButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"printButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasPrintSubscription){\n <button class=\"sau-table-print-button\" (click)=\"clickPrintButton(item.id)\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-print-icon></sau-print-icon>\n </span>\n Imprimir\n </button>\n }\n }\n\n @if(showShow(item)){\n @if(showButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"showButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasShowSubscription){\n <button class=\"sau-table-show-button\" (click)=\"clickShowButton(item.id)\">\n <span class=\"sau-icon sau-icon-eye\">\n <sau-eye-icon></sau-eye-icon>\n </span>\n Mostrar\n </button>\n }\n }\n\n </div>\n </td>\n </tr>\n }\n\n </tbody>\n </table>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!--------------------------------- Table mobile end --------------------------------->\n\n <!----------------------------------- Table desktop ----------------------------------->\n @if(orientation=='dynamic' || orientation=='horizontal'){\n <table class=\"sau-table-desktop\" [class.sau-table-dynamic-mode]=\"orientation=='dynamic'\">\n <thead class=\"sau-table-desktop-header\">\n <tr>\n @for (header of headers; track $index) {\n <th scope=\"col\" class=\"sau-table-desktop-header-cell\">\n {{header.name}}\n </th>\n }\n\n @if(showOptions){\n <th scope=\"col\" class=\"sau-table-desktop-header-cell\">\n Opciones\n </th>\n }\n\n </tr>\n </thead>\n <tbody>\n @for (item of items; track $index) {\n <tr [class]=\"'sau-table-desktop-row ' + ($index%2==0?'sau-table-desktop-row-even':'')\">\n\n @for (header of headers; track $index) {\n <td class=\"sau-table-desktop-cell\">\n\n @if(header.type == 'table'){\n\n @if(!isArray(header.key)){\n <sau-table [headers]=\"header.headers\" [items]=\"getValue(item, header.key)\"></sau-table>\n }\n\n }@else{\n <ng-container [ngTemplateOutlet]=\"DataTemplate\"\n [ngTemplateOutletContext]=\"{item:item, header:header}\"></ng-container>\n }\n\n </td>\n }\n\n @if(showOptions){\n <td class=\"sau-table-desktop-actions-cell\">\n <div class=\"sau-table-desktop-actions-container\">\n\n @if(showEdit(item)){\n @if(editButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"editButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasEditSubscription){\n <button class=\"sau-table-desktop-edit-button\" (click)=\"clickEditButton(item.id)\" title=\"Editar\">\n <span class=\"sau-icon sau-icon-pen\">\n <sau-pen-icon></sau-pen-icon>\n </span>\n </button>\n }\n }\n\n @if(showDelete(item)){\n @if(deleteButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"deleteButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasDeleteSubscription){\n <button class=\"sau-table-desktop-delete-button\" (click)=\"clickDeleteButton(item.id)\"\n title=\"Eliminar\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-trash-icon></sau-trash-icon>\n </span>\n </button>\n }\n }\n\n @if(showPrint(item)){\n @if(printButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"printButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasPrintSubscription){\n <button class=\"sau-table-desktop-print-button\" (click)=\"clickPrintButton(item.id)\"\n title=\"Imprimir\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-print-icon></sau-print-icon>\n </span>\n </button>\n }\n }\n\n\n @if(showShow(item)){\n @if(showButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"showButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasShowSubscription){\n <button class=\"sau-table-desktop-show-button\" (click)=\"clickShowButton(item.id)\"\n title=\"Mostrar\">\n <span class=\"sau-icon sau-icon-eye\">\n <sau-eye-icon></sau-eye-icon>\n </span>\n </button>\n }\n }\n\n </div>\n </td>\n }\n\n </tr>\n }\n </tbody>\n </table>\n }\n <!--------------------------------- table desktop end --------------------------------->\n\n @if (items.length == 0) {\n <div class=\"sau-table-empty\">\n <div class=\"sau-table-empty-icon\">\n <span class=\"sau-icon sau-icon-inbox\">\n <sau-inbox-icon></sau-inbox-icon>\n </span>\n </div>\n <p class=\"sau-table-empty-title\">No hay elementos</p>\n <p class=\"sau-table-empty-subtitle\">Los elementos aparecer\u00E1n aqu\u00ED cuando est\u00E9n disponibles</p>\n </div>\n\n } @else if(total > 1) {\n\n <sau-paginator [totalPages]=\"total\" [currentPage]=\"page\" (pageChange)=\"onPageChange($event)\"></sau-paginator>\n\n }\n\n\n }\n</div>\n\n<!----------------------------------- Data template ----------------------------------->\n<ng-template #DataTemplate let-item=\"item\" let-header=\"header\">\n\n <section class=\"sau-table-data-section\">\n\n @if(header.name == 'NOMBRE' && item.role == 'ROLE_ADMIN') {\n <div class=\"sau-table-admin-crown\">\n <span class=\"sau-icon sau-icon-crown\">\n <sau-crown-icon></sau-crown-icon>\n </span>\n </div>\n }\n\n @let customTmpl = getCustomTemplate(header.key);\n\n @if (customTmpl) {\n\n <section class=\"sau-table-data-type-section\">\n <ng-container [ngTemplateOutlet]=\"customTmpl\" [ngTemplateOutletContext]=\"{item: item, header: header}\">\n </ng-container>\n </section>\n\n } @else {\n <span>\n\n @if (header.innerHtml) {\n <span [innerHTML]=\"getValue(item, header.key)\"></span>\n } @else {\n <ng-container [ngTemplateOutlet]=\"DataTypeTemplate\"\n [ngTemplateOutletContext]=\"{item:item, header:header, value:header.key}\"></ng-container>\n }\n\n @if(header.subKey){\n <span class=\"sau-table-subkey\">\n (\n <ng-container [ngTemplateOutlet]=\"DataTypeTemplate\"\n [ngTemplateOutletContext]=\"{item:item, header:header, value:header.subKey}\"></ng-container>\n )\n </span>\n }\n\n </span>\n }\n\n </section>\n\n</ng-template>\n<!--------------------------------- Data template end --------------------------------->\n\n<!----------------------------------- Data Type template ----------------------------------->\n<ng-template #DataTypeTemplate let-item=\"item\" let-header=\"header\" let-value=\"value\">\n\n <section class=\"sau-table-data-type-section\">\n @switch (header.type) {\n\n @case ('boolean') {\n @if(getValue(item, value)){\n <div class=\"sau-table-boolean-true\">\n <span class=\"sau-icon sau-icon-check\">\n <sau-check-icon></sau-check-icon>\n </span>\n </div>\n } @else {\n <div class=\"sau-table-boolean-false\">\n <span class=\"sau-icon sau-icon-xmark\">\n <sau-xmark-icon></sau-xmark-icon>\n </span>\n </div>\n }\n }\n\n @case ('date') {\n <span class=\"sau-table-date\">\n {{getValue(item, value) | date: 'dd/MM/yyyy'}}\n </span>\n }\n\n @case ('dateTime') {\n <span class=\"sau-table-datetime\">\n {{getValue(item, value) | date: 'dd/MM/yyyy HH:mm'}}\n </span>\n }\n\n @case ('color'){\n <span class=\"sau-table-color-indicator\" [style.background-color]=\"getValue(item, value)\"></span>\n }\n\n @case ('link'){\n @let link = getLink(header.url, item, value);\n\n @if(link.isExternal){\n <a [href]=\"link.url\" class=\"sau-table-link\">\n {{header.linkName}}\n </a>\n }@else{\n <a [routerLink]=\"link.url\" class=\"sau-table-link\" target=\"_blank\">\n {{header.linkName}}\n </a>\n }\n\n }\n\n @case ('image'){\n @let link = getLink(header.url, item, value);\n\n <img [src]=\"link.url\" [alt]=\"getValue(item, value)\" loading=\"lazy\" class=\"sau-table-image\">\n }\n\n @case ('login'){\n @if(item.active){\n <span class=\"sau-table-login-container\">\n\n @if(item.email_verified_at){\n <div [title]=\"item.email\" class=\"sau-table-login-email-verified\">\n <span class=\"sau-icon sau-icon-envelope\">\n <sau-envelope-icon></sau-envelope-icon>\n </span>\n </div>\n }\n\n @if(item.google_id){\n <div [title]=\"item.google_id\" class=\"sau-table-login-google\">\n <span class=\"sau-icon sau-icon-google\">\n <sau-google-icon></sau-google-icon>\n </span>\n </div>\n }\n\n </span>\n } @else {\n <div class=\"sau-table-login-inactive\">\n <span class=\"sau-icon sau-icon-xmark\">\n <sau-xmark-icon></sau-xmark-icon>\n </span>\n </div>\n }\n }\n\n @default {\n {{getValue(item, value)}}\n }\n }\n </section>\n\n</ng-template>\n<!--------------------------------- Data Type template end --------------------------------->", styles: [".sau-table{--sau-color-primary: rgb(147, 51, 234);--sau-color-secondary: var(--sau-color-primary);--sau-color-background: rgb(255, 255, 255);--sau-color-edit: rgb(34, 197, 94);--sau-color-delete: rgb(239, 68, 68);--sau-color-print: rgb(212, 167, 44);--sau-color-show: rgb(44, 122, 212);--sau-color-text: rgb(31, 41, 55);overflow:auto;background:var(--sau-color-background)}.sau-table .sau-filter{margin-bottom:.5rem}.sau-table table{border-collapse:collapse}.sau-table .sau-table-width-full{width:100%}.sau-table .sau-icon{display:inline-block;width:1em;height:1em;vertical-align:middle;display:flex;align-items:center;justify-content:center}.sau-table .sau-icon svg{width:100%;height:100%;fill:currentColor}.sau-table .sau-icon.sau-icon-chevron-down svg{width:1.8em;height:1.8em}.sau-table .sau-icon.sau-icon-inbox svg{width:1.5em;height:1.5em}@media(min-width:768px){.sau-table .sau-table-mobile.sau-table-dynamic-mode{display:none}}.sau-table .sau-table-mobile .sau-table-mobile-header{background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background);padding:.5rem 1rem}.sau-table .sau-table-mobile .sau-table-mobile-header .sau-table-mobile-title{font-size:1rem;font-weight:600;line-height:1.25}.sau-table .sau-table-mobile .sau-table-mobile-header .sau-table-mobile-divider{width:2rem;height:.125rem;background:var(--sau-color-background);margin-top:.25rem}.sau-table .sau-table-mobile .sau-table-mobile-table{width:100%;font-size:.875rem;text-align:left;color:var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row{border-bottom:1px solid var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row:last-child{border-bottom:none}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row.sau-table-mobile-row-even{background:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row .sau-table-mobile-header-cell{padding:.5rem;font-weight:500;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background);max-width:min-content}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row .sau-table-mobile-data-cell{padding:.5rem;width:100%;color:var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-toggle-input{display:none}.sau-table .sau-table-mobile .sau-table-toggle-input:checked~.sau-table-toggle-content{height:auto!important;opacity:1!important;overflow:visible!important}.sau-table .sau-table-mobile .sau-table-toggle-input:checked+.sau-table-toggle-label .sau-table-toggle-show{display:none}.sau-table .sau-table-mobile .sau-table-toggle-input:checked+.sau-table-toggle-label .sau-table-toggle-hide{display:inline}.sau-table .sau-table-mobile .sau-table-toggle-label{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem;background:var(--sau-color-background);color:var(--sau-color-primary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}.sau-table .sau-table-mobile .sau-table-toggle-label:hover{background:var(--sau-color-secondary);color:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text{font-size:.875rem;font-weight:500}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text .sau-table-toggle-show{display:inline}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text .sau-table-toggle-hide{display:none}.sau-table .sau-table-mobile .sau-table-toggle-content{margin-top:.75rem;height:0;overflow:hidden;opacity:0;transition:all .3s ease-in-out}.sau-table .sau-table-mobile .sau-table-mobile-actions-row{border-bottom:.5rem solid transparent;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));padding:1rem}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container{display:flex;justify-content:center;gap:1rem;padding:.5rem}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;background:var(--sau-color-background);transition:all .2s;cursor:pointer}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button:hover{color:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button{color:var(--sau-color-edit);border:1px solid var(--sau-color-edit)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button:hover{background:var(--sau-color-edit)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button{color:var(--sau-color-delete);border:1px solid var(--sau-color-delete)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button:hover{background:var(--sau-color-delete)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button{color:var(--sau-color-print);border:1px solid var(--sau-color-print)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button:hover{background:var(--sau-color-print)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button{color:var(--sau-color-show);border:1px solid var(--sau-color-show)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button:hover{background:var(--sau-color-show)}.sau-table .sau-table-desktop{width:100%;font-size:.875rem;text-align:center;color:var(--sau-color-primary)}.sau-table .sau-table-desktop.sau-table-dynamic-mode{display:none}@media(min-width:768px){.sau-table .sau-table-desktop.sau-table-dynamic-mode{display:table}}.sau-table .sau-table-desktop .sau-table-desktop-header{font-size:.75rem;font-weight:600;text-transform:uppercase;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-header .sau-table-desktop-header-cell{padding:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row{min-width:max-content;transition:background-color .2s;border-bottom:1px solid var(--sau-color-primary)}.sau-table .sau-table-desktop .sau-table-desktop-row:last-child{border-bottom:none}.sau-table .sau-table-desktop .sau-table-desktop-row:hover,.sau-table .sau-table-desktop .sau-table-desktop-row.sau-table-desktop-row-even{background:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-cell,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell{padding:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container{display:flex;align-items:center;gap:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:var(--sau-color-background);transition:all .2s;font-size:1.2rem;cursor:pointer}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button:hover{color:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button{color:var(--sau-color-edit);border:1px solid var(--sau-color-edit)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button:hover{background:var(--sau-color-edit)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button{color:var(--sau-color-delete);border:1px solid var(--sau-color-delete)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button:hover{background:var(--sau-color-delete)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button{color:var(--sau-color-print);border:1px solid var(--sau-color-print)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button:hover{background:var(--sau-color-print)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button{color:var(--sau-color-show);border:1px solid var(--sau-color-show)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button:hover{background:var(--sau-color-show)}.sau-table .sau-table-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:12rem;text-align:center}.sau-table .sau-table-empty .sau-table-empty-icon{position:relative;width:4rem;height:4rem;display:flex;align-items:center;justify-content:center;margin-bottom:1rem;color:var(--sau-color-primary);font-size:2rem}.sau-table .sau-table-empty .sau-table-empty-icon:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table .sau-table-empty .sau-table-empty-title{color:var(--sau-color-text);font-weight:500}.sau-table .sau-table-empty .sau-table-empty-subtitle{color:var(--sau-color-text);font-size:.875rem}.sau-table .sau-paginator{border-top:1px solid var(--sau-color-primary);--sau-color-primary: inherit !important;--sau-color-secondary: inherit !important;--sau-color-background: inherit !important;--sau-color-edit: inherit !important;--sau-color-delete: inherit !important;--sau-color-text: inherit !important}.sau-table-data-section{display:flex;align-items:center;gap:.5rem}.sau-table-data-section .sau-table-admin-crown{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-secondary)}.sau-table-data-section .sau-table-subkey{display:block;color:var(--sau-color-primary);font-size:.75rem;min-width:max-content}.sau-table-data-type-section{display:inline-block;min-width:max-content;color:var(--sau-color-text)}.sau-table-data-type-section .sau-table-boolean-true{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sau-table-data-type-section .sau-table-boolean-true:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table-data-type-section .sau-table-boolean-false{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sau-table-data-type-section .sau-table-boolean-false:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table-data-type-section .sau-table-datetime{color:var(--sau-color-text);font-size:.875rem}.sau-table-data-type-section .sau-table-color-indicator{display:inline-block;width:2rem;height:1rem}.sau-table-data-type-section .sau-table-link{color:var(--sau-color-primary);text-decoration:none}.sau-table-data-type-section .sau-table-link:hover{text-decoration:underline}.sau-table-data-type-section .sau-table-image{width:2.5rem;height:2.5rem;object-fit:cover}.sau-table-data-type-section .sau-table-login-container{display:inline-flex;align-items:center;gap:.25rem}.sau-table-data-type-section .sau-table-login-container .sau-table-login-email-verified{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-primary)}.sau-table-data-type-section .sau-table-login-container .sau-table-login-google,.sau-table-data-type-section .sau-table-login-inactive{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-secondary)}@keyframes shimmer{0%{transform:translate(-150%)}to{transform:translate(150%)}}.sau-skeleton{pointer-events:none;-webkit-user-select:none;user-select:none}.skeleton-line{position:relative;overflow:hidden;border-radius:4px;-webkit-backdrop-filter:brightness(.9);backdrop-filter:brightness(.9);border:1px solid rgba(0,0,0,.05)}.skeleton-line:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,#fff0,#fff6,#fff0);animation:shimmer 1.8s infinite}.skeleton-line.head{height:12px;width:60px}.skeleton-line.data{height:10px;width:90%}@media screen and (max-width:768px){.sau-skeleton .sau-table-desktop{display:none}}@media screen and (min-width:769px){.sau-skeleton .sau-table-mobile{display:none}}\n"] }]
423
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: { url: [{
542
+ DataTemplateComponent,
543
+ ], template: "<div class=\"sau-table\">\n\n @if(filterConfig){\n <sau-filter #filterComponent [filterConfig]=\"filterConfig\"\n (onFilterProcessed)=\"onFiltersChange($event.url)\"></sau-filter>\n }\n\n @if (loading) {\n <div class=\"sau-skeleton\">\n\n <div class=\"sau-table-mobile\">\n <div class=\"sau-table-mobile-header\">\n <div class=\"skeleton-line head\" style=\"width: 150px; height: 24px;\"></div>\n <div class=\"sau-table-mobile-divider\"></div>\n </div>\n\n <table class=\"sau-table-mobile-table\">\n <tbody>\n @for (i of [1,2,3]; track $index) {\n <tr class=\"sau-table-mobile-row\">\n <td>\n <table class=\"sau-table-width-full\">\n <tbody>\n @for (h of headers; track $index) {\n <tr [class]=\"$index % 2 == 0 ? 'sau-table-mobile-row-even' : ''\">\n <th class=\"sau-table-mobile-header-cell\">\n <div class=\"skeleton-line head\"></div>\n </th>\n <td class=\"sau-table-mobile-data-cell\">\n <div class=\"skeleton-line data\"></div>\n </td>\n </tr>\n }\n\n <tr class=\"sau-table-mobile-actions-row\">\n <td colspan=\"2\">\n <div class=\"sau-table-mobile-actions-container\">\n @if(editButtonTemplate){\n\n } @else if(hasEditSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(deleteButtonTemplate){\n\n } @else if(hasDeleteSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(printButtonTemplate){\n\n } @else if(hasPrintSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n @if(showButtonTemplate){\n\n } @else if(hasShowSubscription){\n <div class=\"skeleton-line head\"></div>\n }\n\n </div>\n </td>\n </tr>\n\n </tbody>\n </table>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <table class=\"sau-table-desktop\">\n <thead class=\"sau-table-desktop-header\">\n <tr>\n @for (h of headers; track $index) {\n <th class=\"sau-table-desktop-header-cell\">\n <div class=\"skeleton-line head\"></div>\n </th>\n }\n @if(this.url){ <th class=\"sau-table-desktop-header-cell\"></th> }\n </tr>\n </thead>\n <tbody>\n @for (i of [1,2,3,4,5]; track $index) {\n <tr [class]=\"'sau-table-desktop-row ' + ($index % 2 == 0 ? 'sau-table-desktop-row-even' : '')\">\n @for (h of headers; track $index) {\n <td class=\"sau-table-desktop-cell\">\n <div class=\"skeleton-line data\"></div>\n </td>\n }\n @if(this.url){\n <td class=\"sau-table-desktop-actions-cell\">\n <div class=\"skeleton-line data\" style=\"width: 40px; margin: 0 auto;\"></div>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n } @else {\n\n\n\n <!----------------------------------- Table mobile ----------------------------------->\n @if(orientation=='dynamic' || orientation=='vertical'){\n <div class=\"sau-table-mobile\" [class.sau-table-dynamic-mode]=\"orientation=='dynamic'\">\n <!-- Mobile header -->\n <div class=\"sau-table-mobile-header\">\n <h3 class=\"sau-table-mobile-title\">Lista de elementos</h3>\n <div class=\"sau-table-mobile-divider\"></div>\n </div>\n\n <table class=\"sau-table-mobile-table\">\n <tbody>\n @for (item of items; track $index) {\n @let itemIndex = $index;\n <tr class=\"sau-table-mobile-row\">\n <td>\n <table class=\"sau-table-width-full\">\n <tbody>\n @for (header of headers; track $index) {\n <tr [class]=\"$index%2==0?'sau-table-mobile-row-even':''\">\n\n <th scope=\"col\" class=\"sau-table-mobile-header-cell\">\n {{header.name}}\n </th>\n <td class=\"sau-table-mobile-data-cell\">\n\n @if(header.type == 'table' && !isArray(header.key)){\n\n <!-- CSS-only toggle button -->\n <input type=\"checkbox\" [id]=\"'toggle-table-' + itemIndex\"\n class=\"sau-table-toggle-input\">\n <label [for]=\"'toggle-table-' + itemIndex\" class=\"sau-table-toggle-label\">\n <span class=\"sau-icon sau-icon-chevron-down\">\n <sau-chevron-down-icon></sau-chevron-down-icon>\n </span>\n <span class=\"sau-table-toggle-text\">\n <span class=\"sau-table-toggle-show\">Mostrar</span>\n <span class=\"sau-table-toggle-hide\">Ocultar</span>\n </span>\n </label>\n\n <!-- Content that toggles -->\n <div class=\"sau-table-toggle-content\">\n <sau-table [headers]=\"header.headers\"\n [items]=\"getValue(item, header.key)\"></sau-table>\n </div>\n\n }@else{\n <sau-data-template [item]=\"item\" [header]=\"header\"\n [customTemplates]=\"customTemplates\"></sau-data-template>\n\n }\n\n </td>\n\n </tr>\n }\n\n @if(showOptions){\n <tr class=\"sau-table-mobile-actions-row\">\n <td colspan=\"2\">\n <div class=\"sau-table-mobile-actions-container\">\n @if(showEdit(item)){\n @if(editButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"editButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasEditSubscription){\n <button class=\"sau-table-edit-button\" (click)=\"clickEditButton(item)\">\n <span class=\"sau-icon sau-icon-pen\">\n <sau-pen-icon></sau-pen-icon>\n </span>\n Editar\n </button>\n }\n }\n\n @if(showDelete(item)){\n @if(deleteButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"deleteButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasDeleteSubscription){\n <button class=\"sau-table-delete-button\" (click)=\"clickDeleteButton(item)\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-trash-icon></sau-trash-icon>\n </span>\n Eliminar\n </button>\n }\n }\n\n @if(showPrint(item)){\n @if(printButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"printButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasPrintSubscription){\n <button class=\"sau-table-print-button\" (click)=\"clickPrintButton(item)\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-print-icon></sau-print-icon>\n </span>\n Imprimir\n </button>\n }\n }\n\n @if(showShow(item)){\n @if(showButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"showButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasShowSubscription){\n <button class=\"sau-table-show-button\" (click)=\"clickShowButton(item)\">\n <span class=\"sau-icon sau-icon-eye\">\n <sau-eye-icon></sau-eye-icon>\n </span>\n Mostrar\n </button>\n }\n }\n\n </div>\n </td>\n </tr>\n }\n\n </tbody>\n </table>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!--------------------------------- Table mobile end --------------------------------->\n\n <!----------------------------------- Table desktop ----------------------------------->\n @if(orientation=='dynamic' || orientation=='horizontal'){\n <table class=\"sau-table-desktop\" [class.sau-table-dynamic-mode]=\"orientation=='dynamic'\">\n <thead class=\"sau-table-desktop-header\">\n <tr>\n @for (header of headers; track $index) {\n <th scope=\"col\" class=\"sau-table-desktop-header-cell\">\n {{header.name}}\n </th>\n }\n\n @if(showOptions){\n <th scope=\"col\" class=\"sau-table-desktop-header-cell\">\n Opciones\n </th>\n }\n\n </tr>\n </thead>\n <tbody>\n @for (item of items; track $index) {\n <tr [class]=\"'sau-table-desktop-row ' + ($index%2==0?'sau-table-desktop-row-even':'')\">\n\n @for (header of headers; track $index) {\n <td class=\"sau-table-desktop-cell\">\n\n @if(header.type == 'table'){\n\n @if(!isArray(header.key)){\n <sau-table [headers]=\"header.headers\" [items]=\"getValue(item, header.key)\"></sau-table>\n }\n\n }@else{\n <sau-data-template [item]=\"item\" [header]=\"header\"\n [customTemplates]=\"customTemplates\"></sau-data-template>\n }\n\n </td>\n }\n\n @if(showOptions){\n <td class=\"sau-table-desktop-actions-cell\">\n <div class=\"sau-table-desktop-actions-container\">\n\n @if(showEdit(item)){\n @if(editButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"editButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasEditSubscription){\n <button class=\"sau-table-desktop-edit-button\" (click)=\"clickEditButton(item)\" title=\"Editar\">\n <span class=\"sau-icon sau-icon-pen\">\n <sau-pen-icon></sau-pen-icon>\n </span>\n </button>\n }\n }\n\n @if(showDelete(item)){\n @if(deleteButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"deleteButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasDeleteSubscription){\n <button class=\"sau-table-desktop-delete-button\" (click)=\"clickDeleteButton(item)\"\n title=\"Eliminar\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-trash-icon></sau-trash-icon>\n </span>\n </button>\n }\n }\n\n @if(showPrint(item)){\n @if(printButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"printButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasPrintSubscription){\n <button class=\"sau-table-desktop-print-button\" (click)=\"clickPrintButton(item)\"\n title=\"Imprimir\">\n <span class=\"sau-icon sau-icon-trash\">\n <sau-print-icon></sau-print-icon>\n </span>\n </button>\n }\n }\n\n\n @if(showShow(item)){\n @if(showButtonTemplate){\n <ng-container\n *ngTemplateOutlet=\"showButtonTemplate; context: { $implicit: item }\"></ng-container>\n\n } @else if(hasShowSubscription){\n <button class=\"sau-table-desktop-show-button\" (click)=\"clickShowButton(item)\" title=\"Mostrar\">\n <span class=\"sau-icon sau-icon-eye\">\n <sau-eye-icon></sau-eye-icon>\n </span>\n </button>\n }\n }\n\n </div>\n </td>\n }\n\n </tr>\n }\n </tbody>\n </table>\n }\n <!--------------------------------- table desktop end --------------------------------->\n\n @if (items.length == 0) {\n <div class=\"sau-table-empty\">\n <div class=\"sau-table-empty-icon\">\n <span class=\"sau-icon sau-icon-inbox\">\n <sau-inbox-icon></sau-inbox-icon>\n </span>\n </div>\n <p class=\"sau-table-empty-title\">No hay elementos</p>\n <p class=\"sau-table-empty-subtitle\">Los elementos aparecer\u00E1n aqu\u00ED cuando est\u00E9n disponibles</p>\n </div>\n\n } @else if(total > 1) {\n\n <sau-paginator [totalPages]=\"total\" [currentPage]=\"page\" (pageChange)=\"onPageChange($event)\"></sau-paginator>\n\n }\n\n\n }\n</div>", styles: [".sau-table{--sau-color-primary: rgb(147, 51, 234);--sau-color-secondary: var(--sau-color-primary);--sau-color-background: rgb(255, 255, 255);--sau-color-edit: rgb(34, 197, 94);--sau-color-delete: rgb(239, 68, 68);--sau-color-print: rgb(212, 167, 44);--sau-color-show: rgb(44, 122, 212);--sau-color-text: rgb(31, 41, 55);overflow:auto;background:var(--sau-color-background)}.sau-table .sau-filter{margin-bottom:.5rem}.sau-table table{border-collapse:collapse}.sau-table .sau-table-width-full{width:100%}.sau-table .sau-icon{display:inline-block;width:1em;height:1em;vertical-align:middle;display:flex;align-items:center;justify-content:center}.sau-table .sau-icon svg{width:100%;height:100%;fill:currentColor}.sau-table .sau-icon.sau-icon-chevron-down svg{width:1.8em;height:1.8em}.sau-table .sau-icon.sau-icon-inbox svg{width:1.5em;height:1.5em}@media(min-width:768px){.sau-table .sau-table-mobile.sau-table-dynamic-mode{display:none}}.sau-table .sau-table-mobile .sau-table-mobile-header{background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background);padding:.5rem 1rem}.sau-table .sau-table-mobile .sau-table-mobile-header .sau-table-mobile-title{font-size:1rem;font-weight:600;line-height:1.25}.sau-table .sau-table-mobile .sau-table-mobile-header .sau-table-mobile-divider{width:2rem;height:.125rem;background:var(--sau-color-background);margin-top:.25rem}.sau-table .sau-table-mobile .sau-table-mobile-table{width:100%;font-size:.875rem;text-align:left;color:var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row{border-bottom:1px solid var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row:last-child{border-bottom:none}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row.sau-table-mobile-row-even{background:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row .sau-table-mobile-header-cell{padding:.5rem;font-weight:500;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background);max-width:min-content}.sau-table .sau-table-mobile .sau-table-mobile-table .sau-table-mobile-row .sau-table-mobile-data-cell{padding:.5rem;width:100%;color:var(--sau-color-primary)}.sau-table .sau-table-mobile .sau-table-toggle-input{display:none}.sau-table .sau-table-mobile .sau-table-toggle-input:checked~.sau-table-toggle-content{height:auto!important;opacity:1!important;overflow:visible!important}.sau-table .sau-table-mobile .sau-table-toggle-input:checked+.sau-table-toggle-label .sau-table-toggle-show{display:none}.sau-table .sau-table-mobile .sau-table-toggle-input:checked+.sau-table-toggle-label .sau-table-toggle-hide{display:inline}.sau-table .sau-table-mobile .sau-table-toggle-label{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem;background:var(--sau-color-background);color:var(--sau-color-primary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}.sau-table .sau-table-mobile .sau-table-toggle-label:hover{background:var(--sau-color-secondary);color:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text{font-size:.875rem;font-weight:500}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text .sau-table-toggle-show{display:inline}.sau-table .sau-table-mobile .sau-table-toggle-label .sau-table-toggle-text .sau-table-toggle-hide{display:none}.sau-table .sau-table-mobile .sau-table-toggle-content{margin-top:.75rem;height:0;overflow:hidden;opacity:0;transition:all .3s ease-in-out}.sau-table .sau-table-mobile .sau-table-mobile-actions-row{border-bottom:.5rem solid transparent;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));padding:1rem}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container{display:flex;justify-content:center;gap:1rem;padding:.5rem}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;background:var(--sau-color-background);transition:all .2s;cursor:pointer}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button:hover,.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button:hover{color:var(--sau-color-background)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button{color:var(--sau-color-edit);border:1px solid var(--sau-color-edit)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-edit-button:hover{background:var(--sau-color-edit)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button{color:var(--sau-color-delete);border:1px solid var(--sau-color-delete)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-delete-button:hover{background:var(--sau-color-delete)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button{color:var(--sau-color-print);border:1px solid var(--sau-color-print)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-print-button:hover{background:var(--sau-color-print)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button{color:var(--sau-color-show);border:1px solid var(--sau-color-show)}.sau-table .sau-table-mobile .sau-table-mobile-actions-row .sau-table-mobile-actions-container .sau-table-show-button:hover{background:var(--sau-color-show)}.sau-table .sau-table-desktop{width:100%;font-size:.875rem;text-align:center;color:var(--sau-color-primary)}.sau-table .sau-table-desktop.sau-table-dynamic-mode{display:none}@media(min-width:768px){.sau-table .sau-table-desktop.sau-table-dynamic-mode{display:table}}.sau-table .sau-table-desktop .sau-table-desktop-header{font-size:.75rem;font-weight:600;text-transform:uppercase;background:linear-gradient(to right,var(--sau-color-primary),var(--sau-color-secondary));color:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-header .sau-table-desktop-header-cell{padding:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row{min-width:max-content;transition:background-color .2s;border-bottom:1px solid var(--sau-color-primary)}.sau-table .sau-table-desktop .sau-table-desktop-row:last-child{border-bottom:none}.sau-table .sau-table-desktop .sau-table-desktop-row:hover,.sau-table .sau-table-desktop .sau-table-desktop-row.sau-table-desktop-row-even{background:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-cell,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell{padding:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container{display:flex;align-items:center;gap:.5rem}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:var(--sau-color-background);transition:all .2s;font-size:1.2rem;cursor:pointer}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button:hover,.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button:hover{color:var(--sau-color-background)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button{color:var(--sau-color-edit);border:1px solid var(--sau-color-edit)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-edit-button:hover{background:var(--sau-color-edit)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button{color:var(--sau-color-delete);border:1px solid var(--sau-color-delete)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-delete-button:hover{background:var(--sau-color-delete)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button{color:var(--sau-color-print);border:1px solid var(--sau-color-print)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-print-button:hover{background:var(--sau-color-print)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button{color:var(--sau-color-show);border:1px solid var(--sau-color-show)}.sau-table .sau-table-desktop .sau-table-desktop-row .sau-table-desktop-actions-cell .sau-table-desktop-actions-container .sau-table-desktop-show-button:hover{background:var(--sau-color-show)}.sau-table .sau-table-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:12rem;text-align:center}.sau-table .sau-table-empty .sau-table-empty-icon{position:relative;width:4rem;height:4rem;display:flex;align-items:center;justify-content:center;margin-bottom:1rem;color:var(--sau-color-primary);font-size:2rem}.sau-table .sau-table-empty .sau-table-empty-icon:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table .sau-table-empty .sau-table-empty-title{color:var(--sau-color-text);font-weight:500}.sau-table .sau-table-empty .sau-table-empty-subtitle{color:var(--sau-color-text);font-size:.875rem}.sau-table .sau-paginator{border-top:1px solid var(--sau-color-primary);--sau-color-primary: inherit !important;--sau-color-secondary: inherit !important;--sau-color-background: inherit !important;--sau-color-edit: inherit !important;--sau-color-delete: inherit !important;--sau-color-text: inherit !important}.sau-table-data-section{display:flex;align-items:center;gap:.5rem}.sau-table-data-section .sau-table-admin-crown{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-secondary)}.sau-table-data-section .sau-table-subkey{display:block;color:var(--sau-color-primary);font-size:.75rem;min-width:max-content}.sau-table-data-type-section{display:inline-block;min-width:max-content;color:var(--sau-color-text)}.sau-table-data-type-section .sau-table-boolean-true{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sau-table-data-type-section .sau-table-boolean-true:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table-data-type-section .sau-table-boolean-false{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sau-table-data-type-section .sau-table-boolean-false:after{content:\"\";width:100%;height:100%;background:var(--sau-color-primary);position:absolute;top:0;left:0;opacity:.3;border-radius:50%}.sau-table-data-type-section .sau-table-datetime{color:var(--sau-color-text);font-size:.875rem}.sau-table-data-type-section .sau-table-color-indicator{display:inline-block;width:2rem;height:1rem}.sau-table-data-type-section .sau-table-link{color:var(--sau-color-primary);text-decoration:none}.sau-table-data-type-section .sau-table-link:hover{text-decoration:underline}.sau-table-data-type-section .sau-table-image{width:2.5rem;height:2.5rem;object-fit:cover}.sau-table-data-type-section .sau-table-login-container{display:inline-flex;align-items:center;gap:.25rem}.sau-table-data-type-section .sau-table-login-container .sau-table-login-email-verified{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-primary)}.sau-table-data-type-section .sau-table-login-container .sau-table-login-google,.sau-table-data-type-section .sau-table-login-inactive{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--sau-color-secondary)}@keyframes shimmer{0%{transform:translate(-150%)}to{transform:translate(150%)}}.sau-skeleton{pointer-events:none;-webkit-user-select:none;user-select:none}.skeleton-line{position:relative;overflow:hidden;border-radius:4px;-webkit-backdrop-filter:brightness(.9);backdrop-filter:brightness(.9);border:1px solid rgba(0,0,0,.05)}.skeleton-line:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,#fff0,#fff6,#fff0);animation:shimmer 1.8s infinite}.skeleton-line.head{height:12px;width:60px}.skeleton-line.data{height:10px;width:90%}@media screen and (max-width:768px){.sau-skeleton .sau-table-desktop{display:none}}@media screen and (min-width:769px){.sau-skeleton .sau-table-mobile{display:none}}\n"] }]
544
+ }], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: { url: [{
424
545
  type: Input
425
546
  }], filterConfig: [{
426
547
  type: Input
@@ -494,5 +615,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
494
615
  * Generated bundle index. Do not edit.
495
616
  */
496
617
 
497
- export { SAUTableModule };
618
+ export { DataTemplateComponent, DataTypeTemplateComponent, SAUTableModule };
498
619
  //# sourceMappingURL=some-angular-utils-table.mjs.map