valtech-components 2.0.510 → 2.0.511
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.
- package/esm2022/lib/components/molecules/refresher/refresher.component.mjs +254 -0
- package/esm2022/lib/components/molecules/refresher/types.mjs +15 -0
- package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +618 -0
- package/esm2022/lib/components/organisms/infinite-list/types.mjs +15 -0
- package/esm2022/lib/components/templates/page-template/page-template.component.mjs +3 -3
- package/esm2022/lib/services/pagination/index.mjs +5 -0
- package/esm2022/lib/services/pagination/pagination.service.mjs +218 -0
- package/esm2022/lib/services/pagination/types.mjs +14 -0
- package/esm2022/lib/services/skeleton/config.mjs +79 -0
- package/esm2022/lib/services/skeleton/directives/loading.directive.mjs +215 -0
- package/esm2022/lib/services/skeleton/index.mjs +16 -0
- package/esm2022/lib/services/skeleton/skeleton.service.mjs +198 -0
- package/esm2022/lib/services/skeleton/templates/detail-skeleton.component.mjs +223 -0
- package/esm2022/lib/services/skeleton/templates/form-skeleton.component.mjs +127 -0
- package/esm2022/lib/services/skeleton/templates/grid-skeleton.component.mjs +154 -0
- package/esm2022/lib/services/skeleton/templates/list-skeleton.component.mjs +110 -0
- package/esm2022/lib/services/skeleton/templates/profile-skeleton.component.mjs +207 -0
- package/esm2022/lib/services/skeleton/templates/table-skeleton.component.mjs +116 -0
- package/esm2022/lib/services/skeleton/types.mjs +11 -0
- package/esm2022/public-api.mjs +12 -1
- package/fesm2022/valtech-components.mjs +3467 -950
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/refresher/refresher.component.d.ts +79 -0
- package/lib/components/molecules/refresher/types.d.ts +86 -0
- package/lib/components/organisms/infinite-list/infinite-list.component.d.ts +111 -0
- package/lib/components/organisms/infinite-list/types.d.ts +197 -0
- package/lib/services/pagination/index.d.ts +2 -0
- package/lib/services/pagination/pagination.service.d.ts +43 -0
- package/lib/services/pagination/types.d.ts +113 -0
- package/lib/services/skeleton/config.d.ts +30 -0
- package/lib/services/skeleton/directives/loading.directive.d.ts +71 -0
- package/lib/services/skeleton/index.d.ts +10 -0
- package/lib/services/skeleton/skeleton.service.d.ts +127 -0
- package/lib/services/skeleton/templates/detail-skeleton.component.d.ts +18 -0
- package/lib/services/skeleton/templates/form-skeleton.component.d.ts +22 -0
- package/lib/services/skeleton/templates/grid-skeleton.component.d.ts +18 -0
- package/lib/services/skeleton/templates/list-skeleton.component.d.ts +17 -0
- package/lib/services/skeleton/templates/profile-skeleton.component.d.ts +20 -0
- package/lib/services/skeleton/templates/table-skeleton.component.d.ts +17 -0
- package/lib/services/skeleton/types.d.ts +111 -0
- package/package.json +1 -1
- package/public-api.d.ts +6 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { SkeletonComponent } from '../../../components/atoms/skeleton/skeleton.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Template de skeleton para paginas de detalle.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <val-skeleton-detail></val-skeleton-detail>
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <val-skeleton-detail [config]="{ sections: 3 }"></val-skeleton-detail>
|
|
13
|
+
*/
|
|
14
|
+
export class DetailSkeletonComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.config = { sections: 2 };
|
|
17
|
+
}
|
|
18
|
+
get sections() {
|
|
19
|
+
return Array(this.config.sections ?? 2).fill(0);
|
|
20
|
+
}
|
|
21
|
+
get metaItems() {
|
|
22
|
+
return [1, 2, 3];
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DetailSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DetailSkeletonComponent, isStandalone: true, selector: "val-skeleton-detail", inputs: { config: "config" }, ngImport: i0, template: `
|
|
26
|
+
<div class="skeleton-detail" [class]="config.cssClass">
|
|
27
|
+
<!-- Hero/Header section -->
|
|
28
|
+
<div class="skeleton-detail-hero">
|
|
29
|
+
<val-skeleton
|
|
30
|
+
[props]="{
|
|
31
|
+
type: 'custom',
|
|
32
|
+
width: '100%',
|
|
33
|
+
height: '200px',
|
|
34
|
+
borderRadius: '8px',
|
|
35
|
+
animated: config.animated !== false
|
|
36
|
+
}"
|
|
37
|
+
></val-skeleton>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<!-- Title section -->
|
|
41
|
+
<div class="skeleton-detail-title">
|
|
42
|
+
<val-skeleton
|
|
43
|
+
[props]="{
|
|
44
|
+
type: 'text',
|
|
45
|
+
width: '70%',
|
|
46
|
+
height: '28px',
|
|
47
|
+
animated: config.animated !== false
|
|
48
|
+
}"
|
|
49
|
+
></val-skeleton>
|
|
50
|
+
<val-skeleton
|
|
51
|
+
[props]="{
|
|
52
|
+
type: 'text',
|
|
53
|
+
width: '40%',
|
|
54
|
+
height: '16px',
|
|
55
|
+
animated: config.animated !== false
|
|
56
|
+
}"
|
|
57
|
+
></val-skeleton>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<!-- Metadata row -->
|
|
61
|
+
<div class="skeleton-detail-meta">
|
|
62
|
+
@for (meta of metaItems; track $index) {
|
|
63
|
+
<val-skeleton
|
|
64
|
+
[props]="{
|
|
65
|
+
type: 'custom',
|
|
66
|
+
width: '80px',
|
|
67
|
+
height: '24px',
|
|
68
|
+
borderRadius: '12px',
|
|
69
|
+
animated: config.animated !== false
|
|
70
|
+
}"
|
|
71
|
+
></val-skeleton>
|
|
72
|
+
}
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<!-- Content sections -->
|
|
76
|
+
@for (section of sections; track $index) {
|
|
77
|
+
<div class="skeleton-detail-section">
|
|
78
|
+
<!-- Section title -->
|
|
79
|
+
<val-skeleton
|
|
80
|
+
[props]="{
|
|
81
|
+
type: 'text',
|
|
82
|
+
width: '30%',
|
|
83
|
+
height: '20px',
|
|
84
|
+
animated: config.animated !== false
|
|
85
|
+
}"
|
|
86
|
+
></val-skeleton>
|
|
87
|
+
<!-- Section content -->
|
|
88
|
+
<val-skeleton
|
|
89
|
+
[props]="{
|
|
90
|
+
type: 'paragraph',
|
|
91
|
+
lines: 4,
|
|
92
|
+
animated: config.animated !== false
|
|
93
|
+
}"
|
|
94
|
+
></val-skeleton>
|
|
95
|
+
</div>
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
<!-- Action buttons -->
|
|
99
|
+
<div class="skeleton-detail-actions">
|
|
100
|
+
<val-skeleton
|
|
101
|
+
[props]="{
|
|
102
|
+
type: 'custom',
|
|
103
|
+
width: '120px',
|
|
104
|
+
height: '44px',
|
|
105
|
+
borderRadius: '8px',
|
|
106
|
+
animated: config.animated !== false
|
|
107
|
+
}"
|
|
108
|
+
></val-skeleton>
|
|
109
|
+
<val-skeleton
|
|
110
|
+
[props]="{
|
|
111
|
+
type: 'custom',
|
|
112
|
+
width: '120px',
|
|
113
|
+
height: '44px',
|
|
114
|
+
borderRadius: '8px',
|
|
115
|
+
animated: config.animated !== false
|
|
116
|
+
}"
|
|
117
|
+
></val-skeleton>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
`, isInline: true, styles: [".skeleton-detail{display:flex;flex-direction:column;gap:20px;width:100%}.skeleton-detail-hero{width:100%}.skeleton-detail-title{display:flex;flex-direction:column;gap:8px}.skeleton-detail-meta{display:flex;gap:12px;flex-wrap:wrap}.skeleton-detail-section{display:flex;flex-direction:column;gap:12px;padding-top:16px;border-top:1px solid var(--ion-color-light-shade, #d7d8da)}.skeleton-detail-actions{display:flex;gap:12px;padding-top:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SkeletonComponent, selector: "val-skeleton", inputs: ["props"] }] }); }
|
|
121
|
+
}
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DetailSkeletonComponent, decorators: [{
|
|
123
|
+
type: Component,
|
|
124
|
+
args: [{ selector: 'val-skeleton-detail', standalone: true, imports: [CommonModule, SkeletonComponent], template: `
|
|
125
|
+
<div class="skeleton-detail" [class]="config.cssClass">
|
|
126
|
+
<!-- Hero/Header section -->
|
|
127
|
+
<div class="skeleton-detail-hero">
|
|
128
|
+
<val-skeleton
|
|
129
|
+
[props]="{
|
|
130
|
+
type: 'custom',
|
|
131
|
+
width: '100%',
|
|
132
|
+
height: '200px',
|
|
133
|
+
borderRadius: '8px',
|
|
134
|
+
animated: config.animated !== false
|
|
135
|
+
}"
|
|
136
|
+
></val-skeleton>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<!-- Title section -->
|
|
140
|
+
<div class="skeleton-detail-title">
|
|
141
|
+
<val-skeleton
|
|
142
|
+
[props]="{
|
|
143
|
+
type: 'text',
|
|
144
|
+
width: '70%',
|
|
145
|
+
height: '28px',
|
|
146
|
+
animated: config.animated !== false
|
|
147
|
+
}"
|
|
148
|
+
></val-skeleton>
|
|
149
|
+
<val-skeleton
|
|
150
|
+
[props]="{
|
|
151
|
+
type: 'text',
|
|
152
|
+
width: '40%',
|
|
153
|
+
height: '16px',
|
|
154
|
+
animated: config.animated !== false
|
|
155
|
+
}"
|
|
156
|
+
></val-skeleton>
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
<!-- Metadata row -->
|
|
160
|
+
<div class="skeleton-detail-meta">
|
|
161
|
+
@for (meta of metaItems; track $index) {
|
|
162
|
+
<val-skeleton
|
|
163
|
+
[props]="{
|
|
164
|
+
type: 'custom',
|
|
165
|
+
width: '80px',
|
|
166
|
+
height: '24px',
|
|
167
|
+
borderRadius: '12px',
|
|
168
|
+
animated: config.animated !== false
|
|
169
|
+
}"
|
|
170
|
+
></val-skeleton>
|
|
171
|
+
}
|
|
172
|
+
</div>
|
|
173
|
+
|
|
174
|
+
<!-- Content sections -->
|
|
175
|
+
@for (section of sections; track $index) {
|
|
176
|
+
<div class="skeleton-detail-section">
|
|
177
|
+
<!-- Section title -->
|
|
178
|
+
<val-skeleton
|
|
179
|
+
[props]="{
|
|
180
|
+
type: 'text',
|
|
181
|
+
width: '30%',
|
|
182
|
+
height: '20px',
|
|
183
|
+
animated: config.animated !== false
|
|
184
|
+
}"
|
|
185
|
+
></val-skeleton>
|
|
186
|
+
<!-- Section content -->
|
|
187
|
+
<val-skeleton
|
|
188
|
+
[props]="{
|
|
189
|
+
type: 'paragraph',
|
|
190
|
+
lines: 4,
|
|
191
|
+
animated: config.animated !== false
|
|
192
|
+
}"
|
|
193
|
+
></val-skeleton>
|
|
194
|
+
</div>
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
<!-- Action buttons -->
|
|
198
|
+
<div class="skeleton-detail-actions">
|
|
199
|
+
<val-skeleton
|
|
200
|
+
[props]="{
|
|
201
|
+
type: 'custom',
|
|
202
|
+
width: '120px',
|
|
203
|
+
height: '44px',
|
|
204
|
+
borderRadius: '8px',
|
|
205
|
+
animated: config.animated !== false
|
|
206
|
+
}"
|
|
207
|
+
></val-skeleton>
|
|
208
|
+
<val-skeleton
|
|
209
|
+
[props]="{
|
|
210
|
+
type: 'custom',
|
|
211
|
+
width: '120px',
|
|
212
|
+
height: '44px',
|
|
213
|
+
borderRadius: '8px',
|
|
214
|
+
animated: config.animated !== false
|
|
215
|
+
}"
|
|
216
|
+
></val-skeleton>
|
|
217
|
+
</div>
|
|
218
|
+
</div>
|
|
219
|
+
`, styles: [".skeleton-detail{display:flex;flex-direction:column;gap:20px;width:100%}.skeleton-detail-hero{width:100%}.skeleton-detail-title{display:flex;flex-direction:column;gap:8px}.skeleton-detail-meta{display:flex;gap:12px;flex-wrap:wrap}.skeleton-detail-section{display:flex;flex-direction:column;gap:12px;padding-top:16px;border-top:1px solid var(--ion-color-light-shade, #d7d8da)}.skeleton-detail-actions{display:flex;gap:12px;padding-top:16px}\n"] }]
|
|
220
|
+
}], propDecorators: { config: [{
|
|
221
|
+
type: Input
|
|
222
|
+
}] } });
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXNrZWxldG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc2tlbGV0b24vdGVtcGxhdGVzL2RldGFpbC1za2VsZXRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOztBQUcxRjs7Ozs7Ozs7R0FRRztBQThJSCxNQUFNLE9BQU8sdUJBQXVCO0lBN0lwQztRQThJVyxXQUFNLEdBQTJCLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO0tBUzNEO0lBUEMsSUFBSSxRQUFRO1FBQ1YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDOytHQVRVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDZHQXpJeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0ZULGtnQkFoR1MsWUFBWSwrQkFBRSxpQkFBaUI7OzRGQTBJOUIsdUJBQXVCO2tCQTdJbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQ2hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStGVDs4QkEyQ1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9hdG9tcy9za2VsZXRvbi9za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2tlbGV0b25UZW1wbGF0ZUNvbmZpZywgU2tlbGV0b25UZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBUZW1wbGF0ZSBkZSBza2VsZXRvbiBwYXJhIHBhZ2luYXMgZGUgZGV0YWxsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1za2VsZXRvbi1kZXRhaWw+PC92YWwtc2tlbGV0b24tZGV0YWlsPlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXNrZWxldG9uLWRldGFpbCBbY29uZmlnXT1cInsgc2VjdGlvbnM6IDMgfVwiPjwvdmFsLXNrZWxldG9uLWRldGFpbD5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNrZWxldG9uLWRldGFpbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNrZWxldG9uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tZGV0YWlsXCIgW2NsYXNzXT1cImNvbmZpZy5jc3NDbGFzc1wiPlxuICAgICAgPCEtLSBIZXJvL0hlYWRlciBzZWN0aW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLWRldGFpbC1oZXJvXCI+XG4gICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMjAwcHgnLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnOHB4JyxcbiAgICAgICAgICAgIGFuaW1hdGVkOiBjb25maWcuYW5pbWF0ZWQgIT09IGZhbHNlXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L3ZhbC1za2VsZXRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFRpdGxlIHNlY3Rpb24gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tZGV0YWlsLXRpdGxlXCI+XG4gICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgd2lkdGg6ICc3MCUnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMjhweCcsXG4gICAgICAgICAgICBhbmltYXRlZDogY29uZmlnLmFuaW1hdGVkICE9PSBmYWxzZVxuICAgICAgICAgIH1cIlxuICAgICAgICA+PC92YWwtc2tlbGV0b24+XG4gICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgd2lkdGg6ICc0MCUnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTZweCcsXG4gICAgICAgICAgICBhbmltYXRlZDogY29uZmlnLmFuaW1hdGVkICE9PSBmYWxzZVxuICAgICAgICAgIH1cIlxuICAgICAgICA+PC92YWwtc2tlbGV0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBNZXRhZGF0YSByb3cgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tZGV0YWlsLW1ldGFcIj5cbiAgICAgICAgQGZvciAobWV0YSBvZiBtZXRhSXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICAgICAgICB3aWR0aDogJzgwcHgnLFxuICAgICAgICAgICAgICBoZWlnaHQ6ICcyNHB4JyxcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTJweCcsXG4gICAgICAgICAgICAgIGFuaW1hdGVkOiBjb25maWcuYW5pbWF0ZWQgIT09IGZhbHNlXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+PC92YWwtc2tlbGV0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENvbnRlbnQgc2VjdGlvbnMgLS0+XG4gICAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLWRldGFpbC1zZWN0aW9uXCI+XG4gICAgICAgICAgPCEtLSBTZWN0aW9uIHRpdGxlIC0tPlxuICAgICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgd2lkdGg6ICczMCUnLFxuICAgICAgICAgICAgICBoZWlnaHQ6ICcyMHB4JyxcbiAgICAgICAgICAgICAgYW5pbWF0ZWQ6IGNvbmZpZy5hbmltYXRlZCAhPT0gZmFsc2VcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID48L3ZhbC1za2VsZXRvbj5cbiAgICAgICAgICA8IS0tIFNlY3Rpb24gY29udGVudCAtLT5cbiAgICAgICAgICA8dmFsLXNrZWxldG9uXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICAgICAgICAgICAgbGluZXM6IDQsXG4gICAgICAgICAgICAgIGFuaW1hdGVkOiBjb25maWcuYW5pbWF0ZWQgIT09IGZhbHNlXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+PC92YWwtc2tlbGV0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIEFjdGlvbiBidXR0b25zIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLWRldGFpbC1hY3Rpb25zXCI+XG4gICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgICB3aWR0aDogJzEyMHB4JyxcbiAgICAgICAgICAgIGhlaWdodDogJzQ0cHgnLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnOHB4JyxcbiAgICAgICAgICAgIGFuaW1hdGVkOiBjb25maWcuYW5pbWF0ZWQgIT09IGZhbHNlXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L3ZhbC1za2VsZXRvbj5cbiAgICAgICAgPHZhbC1za2VsZXRvblxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICB0eXBlOiAnY3VzdG9tJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTIwcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnNDRweCcsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc4cHgnLFxuICAgICAgICAgICAgYW5pbWF0ZWQ6IGNvbmZpZy5hbmltYXRlZCAhPT0gZmFsc2VcbiAgICAgICAgICB9XCJcbiAgICAgICAgPjwvdmFsLXNrZWxldG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5za2VsZXRvbi1kZXRhaWwge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDIwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAuc2tlbGV0b24tZGV0YWlsLWhlcm8ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLnNrZWxldG9uLWRldGFpbC10aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAuc2tlbGV0b24tZGV0YWlsLW1ldGEge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cblxuICAgICAgLnNrZWxldG9uLWRldGFpbC1zZWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTZweDtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1saWdodC1zaGFkZSwgI2Q3ZDhkYSk7XG4gICAgICB9XG5cbiAgICAgIC5za2VsZXRvbi1kZXRhaWwtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGV0YWlsU2tlbGV0b25Db21wb25lbnQgaW1wbGVtZW50cyBTa2VsZXRvblRlbXBsYXRlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY29uZmlnOiBTa2VsZXRvblRlbXBsYXRlQ29uZmlnID0geyBzZWN0aW9uczogMiB9O1xuXG4gIGdldCBzZWN0aW9ucygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIEFycmF5KHRoaXMuY29uZmlnLnNlY3Rpb25zID8/IDIpLmZpbGwoMCk7XG4gIH1cblxuICBnZXQgbWV0YUl0ZW1zKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gWzEsIDIsIDNdO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { SkeletonComponent } from '../../../components/atoms/skeleton/skeleton.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Template de skeleton para formularios.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <val-skeleton-form [config]="{ count: 4 }"></val-skeleton-form>
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <val-skeleton-form [config]="{ count: 3, variant: 'compact' }"></val-skeleton-form>
|
|
13
|
+
*/
|
|
14
|
+
export class FormSkeletonComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.config = { count: 3 };
|
|
17
|
+
}
|
|
18
|
+
get fields() {
|
|
19
|
+
return Array(this.config.count ?? 3).fill(0);
|
|
20
|
+
}
|
|
21
|
+
get isCompact() {
|
|
22
|
+
return this.config.variant === 'compact';
|
|
23
|
+
}
|
|
24
|
+
get labelWidth() {
|
|
25
|
+
return this.isCompact ? '60px' : '80px';
|
|
26
|
+
}
|
|
27
|
+
get inputHeight() {
|
|
28
|
+
return this.isCompact ? '38px' : '44px';
|
|
29
|
+
}
|
|
30
|
+
get buttonWidth() {
|
|
31
|
+
return this.isCompact ? '120px' : '100%';
|
|
32
|
+
}
|
|
33
|
+
get buttonHeight() {
|
|
34
|
+
return this.isCompact ? '38px' : '48px';
|
|
35
|
+
}
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FormSkeletonComponent, isStandalone: true, selector: "val-skeleton-form", inputs: { config: "config" }, ngImport: i0, template: `
|
|
38
|
+
<div
|
|
39
|
+
class="skeleton-form"
|
|
40
|
+
[class]="'variant-' + (config.variant || 'default') + ' ' + (config.cssClass || '')"
|
|
41
|
+
>
|
|
42
|
+
@for (field of fields; track $index) {
|
|
43
|
+
<div class="skeleton-field">
|
|
44
|
+
<!-- Label -->
|
|
45
|
+
<val-skeleton
|
|
46
|
+
[props]="{
|
|
47
|
+
type: 'text',
|
|
48
|
+
width: labelWidth,
|
|
49
|
+
height: '14px',
|
|
50
|
+
animated: config.animated !== false
|
|
51
|
+
}"
|
|
52
|
+
></val-skeleton>
|
|
53
|
+
<!-- Input -->
|
|
54
|
+
<val-skeleton
|
|
55
|
+
[props]="{
|
|
56
|
+
type: 'custom',
|
|
57
|
+
width: '100%',
|
|
58
|
+
height: inputHeight,
|
|
59
|
+
borderRadius: '8px',
|
|
60
|
+
animated: config.animated !== false
|
|
61
|
+
}"
|
|
62
|
+
></val-skeleton>
|
|
63
|
+
</div>
|
|
64
|
+
}
|
|
65
|
+
<!-- Submit button -->
|
|
66
|
+
<div class="skeleton-button">
|
|
67
|
+
<val-skeleton
|
|
68
|
+
[props]="{
|
|
69
|
+
type: 'custom',
|
|
70
|
+
width: buttonWidth,
|
|
71
|
+
height: buttonHeight,
|
|
72
|
+
borderRadius: '8px',
|
|
73
|
+
animated: config.animated !== false
|
|
74
|
+
}"
|
|
75
|
+
></val-skeleton>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
`, isInline: true, styles: [".skeleton-form{display:flex;flex-direction:column;width:100%;&.variant-default{gap:20px}&.variant-compact{gap:12px}}.skeleton-field{display:flex;flex-direction:column;gap:6px}.skeleton-button{margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SkeletonComponent, selector: "val-skeleton", inputs: ["props"] }] }); }
|
|
79
|
+
}
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormSkeletonComponent, decorators: [{
|
|
81
|
+
type: Component,
|
|
82
|
+
args: [{ selector: 'val-skeleton-form', standalone: true, imports: [CommonModule, SkeletonComponent], template: `
|
|
83
|
+
<div
|
|
84
|
+
class="skeleton-form"
|
|
85
|
+
[class]="'variant-' + (config.variant || 'default') + ' ' + (config.cssClass || '')"
|
|
86
|
+
>
|
|
87
|
+
@for (field of fields; track $index) {
|
|
88
|
+
<div class="skeleton-field">
|
|
89
|
+
<!-- Label -->
|
|
90
|
+
<val-skeleton
|
|
91
|
+
[props]="{
|
|
92
|
+
type: 'text',
|
|
93
|
+
width: labelWidth,
|
|
94
|
+
height: '14px',
|
|
95
|
+
animated: config.animated !== false
|
|
96
|
+
}"
|
|
97
|
+
></val-skeleton>
|
|
98
|
+
<!-- Input -->
|
|
99
|
+
<val-skeleton
|
|
100
|
+
[props]="{
|
|
101
|
+
type: 'custom',
|
|
102
|
+
width: '100%',
|
|
103
|
+
height: inputHeight,
|
|
104
|
+
borderRadius: '8px',
|
|
105
|
+
animated: config.animated !== false
|
|
106
|
+
}"
|
|
107
|
+
></val-skeleton>
|
|
108
|
+
</div>
|
|
109
|
+
}
|
|
110
|
+
<!-- Submit button -->
|
|
111
|
+
<div class="skeleton-button">
|
|
112
|
+
<val-skeleton
|
|
113
|
+
[props]="{
|
|
114
|
+
type: 'custom',
|
|
115
|
+
width: buttonWidth,
|
|
116
|
+
height: buttonHeight,
|
|
117
|
+
borderRadius: '8px',
|
|
118
|
+
animated: config.animated !== false
|
|
119
|
+
}"
|
|
120
|
+
></val-skeleton>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
`, styles: [".skeleton-form{display:flex;flex-direction:column;width:100%;&.variant-default{gap:20px}&.variant-compact{gap:12px}}.skeleton-field{display:flex;flex-direction:column;gap:6px}.skeleton-button{margin-top:8px}\n"] }]
|
|
124
|
+
}], propDecorators: { config: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}] } });
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3NrZWxldG9uL3RlbXBsYXRlcy9mb3JtLXNrZWxldG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdURBQXVELENBQUM7O0FBRzFGOzs7Ozs7OztHQVFHO0FBMkVILE1BQU0sT0FBTyxxQkFBcUI7SUExRWxDO1FBMkVXLFdBQU0sR0FBMkIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7S0F5QnhEO0lBdkJDLElBQUksTUFBTTtRQUNSLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQzsrR0F6QlUscUJBQXFCO21HQUFyQixxQkFBcUIsMkdBdEV0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Q1QsMFJBMUNTLFlBQVksK0JBQUUsaUJBQWlCOzs0RkF1RTlCLHFCQUFxQjtrQkExRWpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUNoQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Q1Q7OEJBOEJRLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvYXRvbXMvc2tlbGV0b24vc2tlbGV0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFNrZWxldG9uVGVtcGxhdGVDb25maWcsIFNrZWxldG9uVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogVGVtcGxhdGUgZGUgc2tlbGV0b24gcGFyYSBmb3JtdWxhcmlvcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1za2VsZXRvbi1mb3JtIFtjb25maWddPVwieyBjb3VudDogNCB9XCI+PC92YWwtc2tlbGV0b24tZm9ybT5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1za2VsZXRvbi1mb3JtIFtjb25maWddPVwieyBjb3VudDogMywgdmFyaWFudDogJ2NvbXBhY3QnIH1cIj48L3ZhbC1za2VsZXRvbi1mb3JtPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtc2tlbGV0b24tZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNrZWxldG9uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNrZWxldG9uLWZvcm1cIlxuICAgICAgW2NsYXNzXT1cIid2YXJpYW50LScgKyAoY29uZmlnLnZhcmlhbnQgfHwgJ2RlZmF1bHQnKSArICcgJyArIChjb25maWcuY3NzQ2xhc3MgfHwgJycpXCJcbiAgICA+XG4gICAgICBAZm9yIChmaWVsZCBvZiBmaWVsZHM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tZmllbGRcIj5cbiAgICAgICAgICA8IS0tIExhYmVsIC0tPlxuICAgICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgd2lkdGg6IGxhYmVsV2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodDogJzE0cHgnLFxuICAgICAgICAgICAgICBhbmltYXRlZDogY29uZmlnLmFuaW1hdGVkICE9PSBmYWxzZVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPjwvdmFsLXNrZWxldG9uPlxuICAgICAgICAgIDwhLS0gSW5wdXQgLS0+XG4gICAgICAgICAgPHZhbC1za2VsZXRvblxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgIGhlaWdodDogaW5wdXRIZWlnaHQsXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzhweCcsXG4gICAgICAgICAgICAgIGFuaW1hdGVkOiBjb25maWcuYW5pbWF0ZWQgIT09IGZhbHNlXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+PC92YWwtc2tlbGV0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPCEtLSBTdWJtaXQgYnV0dG9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLWJ1dHRvblwiPlxuICAgICAgICA8dmFsLXNrZWxldG9uXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICAgICAgd2lkdGg6IGJ1dHRvbldpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBidXR0b25IZWlnaHQsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc4cHgnLFxuICAgICAgICAgICAgYW5pbWF0ZWQ6IGNvbmZpZy5hbmltYXRlZCAhPT0gZmFsc2VcbiAgICAgICAgICB9XCJcbiAgICAgICAgPjwvdmFsLXNrZWxldG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5za2VsZXRvbi1mb3JtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgJi52YXJpYW50LWRlZmF1bHQge1xuICAgICAgICAgIGdhcDogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYudmFyaWFudC1jb21wYWN0IHtcbiAgICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnNrZWxldG9uLWZpZWxkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICB9XG5cbiAgICAgIC5za2VsZXRvbi1idXR0b24ge1xuICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVNrZWxldG9uQ29tcG9uZW50IGltcGxlbWVudHMgU2tlbGV0b25UZW1wbGF0ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogU2tlbGV0b25UZW1wbGF0ZUNvbmZpZyA9IHsgY291bnQ6IDMgfTtcblxuICBnZXQgZmllbGRzKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gQXJyYXkodGhpcy5jb25maWcuY291bnQgPz8gMykuZmlsbCgwKTtcbiAgfVxuXG4gIGdldCBpc0NvbXBhY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnZhcmlhbnQgPT09ICdjb21wYWN0JztcbiAgfVxuXG4gIGdldCBsYWJlbFdpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNDb21wYWN0ID8gJzYwcHgnIDogJzgwcHgnO1xuICB9XG5cbiAgZ2V0IGlucHV0SGVpZ2h0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNDb21wYWN0ID8gJzM4cHgnIDogJzQ0cHgnO1xuICB9XG5cbiAgZ2V0IGJ1dHRvbldpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNDb21wYWN0ID8gJzEyMHB4JyA6ICcxMDAlJztcbiAgfVxuXG4gIGdldCBidXR0b25IZWlnaHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0NvbXBhY3QgPyAnMzhweCcgOiAnNDhweCc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { SkeletonComponent } from '../../../components/atoms/skeleton/skeleton.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Template de skeleton para grids de cards.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <val-skeleton-grid [config]="{ count: 6 }"></val-skeleton-grid>
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <val-skeleton-grid [config]="{ count: 8, variant: 'cards', columns: 4 }"></val-skeleton-grid>
|
|
13
|
+
*/
|
|
14
|
+
export class GridSkeletonComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.config = { count: 6 };
|
|
17
|
+
}
|
|
18
|
+
get items() {
|
|
19
|
+
return Array(this.config.count ?? 6).fill(0);
|
|
20
|
+
}
|
|
21
|
+
get gridColumns() {
|
|
22
|
+
if (this.config.columns) {
|
|
23
|
+
return `repeat(${this.config.columns}, 1fr)`;
|
|
24
|
+
}
|
|
25
|
+
return '';
|
|
26
|
+
}
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GridSkeletonComponent, isStandalone: true, selector: "val-skeleton-grid", inputs: { config: "config" }, ngImport: i0, template: `
|
|
29
|
+
<div
|
|
30
|
+
class="skeleton-grid"
|
|
31
|
+
[class]="'variant-' + (config.variant || 'default') + ' ' + (config.cssClass || '')"
|
|
32
|
+
[style.gap]="config.gap || '16px'"
|
|
33
|
+
[style.grid-template-columns]="gridColumns"
|
|
34
|
+
>
|
|
35
|
+
@for (item of items; track $index) {
|
|
36
|
+
@switch (config.variant) {
|
|
37
|
+
@case ('cards') {
|
|
38
|
+
<div class="skeleton-card">
|
|
39
|
+
<val-skeleton
|
|
40
|
+
[props]="{
|
|
41
|
+
type: 'custom',
|
|
42
|
+
width: '100%',
|
|
43
|
+
height: '140px',
|
|
44
|
+
borderRadius: '8px 8px 0 0',
|
|
45
|
+
animated: config.animated !== false
|
|
46
|
+
}"
|
|
47
|
+
></val-skeleton>
|
|
48
|
+
<div class="skeleton-card-content">
|
|
49
|
+
<val-skeleton
|
|
50
|
+
[props]="{
|
|
51
|
+
type: 'text',
|
|
52
|
+
width: '80%',
|
|
53
|
+
height: '18px',
|
|
54
|
+
animated: config.animated !== false
|
|
55
|
+
}"
|
|
56
|
+
></val-skeleton>
|
|
57
|
+
<val-skeleton
|
|
58
|
+
[props]="{
|
|
59
|
+
type: 'text',
|
|
60
|
+
width: '60%',
|
|
61
|
+
height: '14px',
|
|
62
|
+
animated: config.animated !== false
|
|
63
|
+
}"
|
|
64
|
+
></val-skeleton>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
}
|
|
68
|
+
@case ('compact') {
|
|
69
|
+
<val-skeleton
|
|
70
|
+
[props]="{
|
|
71
|
+
type: 'thumbnail',
|
|
72
|
+
animated: config.animated !== false
|
|
73
|
+
}"
|
|
74
|
+
></val-skeleton>
|
|
75
|
+
}
|
|
76
|
+
@default {
|
|
77
|
+
<val-skeleton
|
|
78
|
+
[props]="{
|
|
79
|
+
type: 'card',
|
|
80
|
+
animated: config.animated !== false
|
|
81
|
+
}"
|
|
82
|
+
></val-skeleton>
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
</div>
|
|
87
|
+
`, isInline: true, styles: [".skeleton-grid{display:grid;width:100%;&.variant-default{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}&.variant-cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}&.variant-compact{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:12px}}.skeleton-card{border-radius:8px;overflow:hidden;background:var(--ion-color-light, #f4f5f8)}.skeleton-card-content{padding:12px;display:flex;flex-direction:column;gap:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SkeletonComponent, selector: "val-skeleton", inputs: ["props"] }] }); }
|
|
88
|
+
}
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridSkeletonComponent, decorators: [{
|
|
90
|
+
type: Component,
|
|
91
|
+
args: [{ selector: 'val-skeleton-grid', standalone: true, imports: [CommonModule, SkeletonComponent], template: `
|
|
92
|
+
<div
|
|
93
|
+
class="skeleton-grid"
|
|
94
|
+
[class]="'variant-' + (config.variant || 'default') + ' ' + (config.cssClass || '')"
|
|
95
|
+
[style.gap]="config.gap || '16px'"
|
|
96
|
+
[style.grid-template-columns]="gridColumns"
|
|
97
|
+
>
|
|
98
|
+
@for (item of items; track $index) {
|
|
99
|
+
@switch (config.variant) {
|
|
100
|
+
@case ('cards') {
|
|
101
|
+
<div class="skeleton-card">
|
|
102
|
+
<val-skeleton
|
|
103
|
+
[props]="{
|
|
104
|
+
type: 'custom',
|
|
105
|
+
width: '100%',
|
|
106
|
+
height: '140px',
|
|
107
|
+
borderRadius: '8px 8px 0 0',
|
|
108
|
+
animated: config.animated !== false
|
|
109
|
+
}"
|
|
110
|
+
></val-skeleton>
|
|
111
|
+
<div class="skeleton-card-content">
|
|
112
|
+
<val-skeleton
|
|
113
|
+
[props]="{
|
|
114
|
+
type: 'text',
|
|
115
|
+
width: '80%',
|
|
116
|
+
height: '18px',
|
|
117
|
+
animated: config.animated !== false
|
|
118
|
+
}"
|
|
119
|
+
></val-skeleton>
|
|
120
|
+
<val-skeleton
|
|
121
|
+
[props]="{
|
|
122
|
+
type: 'text',
|
|
123
|
+
width: '60%',
|
|
124
|
+
height: '14px',
|
|
125
|
+
animated: config.animated !== false
|
|
126
|
+
}"
|
|
127
|
+
></val-skeleton>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
}
|
|
131
|
+
@case ('compact') {
|
|
132
|
+
<val-skeleton
|
|
133
|
+
[props]="{
|
|
134
|
+
type: 'thumbnail',
|
|
135
|
+
animated: config.animated !== false
|
|
136
|
+
}"
|
|
137
|
+
></val-skeleton>
|
|
138
|
+
}
|
|
139
|
+
@default {
|
|
140
|
+
<val-skeleton
|
|
141
|
+
[props]="{
|
|
142
|
+
type: 'card',
|
|
143
|
+
animated: config.animated !== false
|
|
144
|
+
}"
|
|
145
|
+
></val-skeleton>
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
</div>
|
|
150
|
+
`, styles: [".skeleton-grid{display:grid;width:100%;&.variant-default{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}&.variant-cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}&.variant-compact{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:12px}}.skeleton-card{border-radius:8px;overflow:hidden;background:var(--ion-color-light, #f4f5f8)}.skeleton-card-content{padding:12px;display:flex;flex-direction:column;gap:8px}\n"] }]
|
|
151
|
+
}], propDecorators: { config: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}] } });
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3NrZWxldG9uL3RlbXBsYXRlcy9ncmlkLXNrZWxldG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdURBQXVELENBQUM7O0FBRzFGOzs7Ozs7OztHQVFHO0FBb0dILE1BQU0sT0FBTyxxQkFBcUI7SUFuR2xDO1FBb0dXLFdBQU0sR0FBMkIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7S0FZeEQ7SUFWQyxJQUFJLEtBQUs7UUFDUCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QixPQUFPLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLFFBQVEsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOytHQVpVLHFCQUFxQjttR0FBckIscUJBQXFCLDJHQS9GdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkRULHlnQkE1RFMsWUFBWSwrQkFBRSxpQkFBaUI7OzRGQWdHOUIscUJBQXFCO2tCQW5HakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQ2hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJEVDs4QkFxQ1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9hdG9tcy9za2VsZXRvbi9za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2tlbGV0b25UZW1wbGF0ZUNvbmZpZywgU2tlbGV0b25UZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBUZW1wbGF0ZSBkZSBza2VsZXRvbiBwYXJhIGdyaWRzIGRlIGNhcmRzLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXNrZWxldG9uLWdyaWQgW2NvbmZpZ109XCJ7IGNvdW50OiA2IH1cIj48L3ZhbC1za2VsZXRvbi1ncmlkPlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXNrZWxldG9uLWdyaWQgW2NvbmZpZ109XCJ7IGNvdW50OiA4LCB2YXJpYW50OiAnY2FyZHMnLCBjb2x1bW5zOiA0IH1cIj48L3ZhbC1za2VsZXRvbi1ncmlkPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtc2tlbGV0b24tZ3JpZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNrZWxldG9uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNrZWxldG9uLWdyaWRcIlxuICAgICAgW2NsYXNzXT1cIid2YXJpYW50LScgKyAoY29uZmlnLnZhcmlhbnQgfHwgJ2RlZmF1bHQnKSArICcgJyArIChjb25maWcuY3NzQ2xhc3MgfHwgJycpXCJcbiAgICAgIFtzdHlsZS5nYXBdPVwiY29uZmlnLmdhcCB8fCAnMTZweCdcIlxuICAgICAgW3N0eWxlLmdyaWQtdGVtcGxhdGUtY29sdW1uc109XCJncmlkQ29sdW1uc1wiXG4gICAgPlxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIEBzd2l0Y2ggKGNvbmZpZy52YXJpYW50KSB7XG4gICAgICAgICAgQGNhc2UgKCdjYXJkcycpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbi1jYXJkXCI+XG4gICAgICAgICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTQwcHgnLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnOHB4IDhweCAwIDAnLFxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZWQ6IGNvbmZpZy5hbmltYXRlZCAhPT0gZmFsc2VcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPjwvdmFsLXNrZWxldG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvblxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzgwJScsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzE4cHgnLFxuICAgICAgICAgICAgICAgICAgICBhbmltYXRlZDogY29uZmlnLmFuaW1hdGVkICE9PSBmYWxzZVxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgPjwvdmFsLXNrZWxldG9uPlxuICAgICAgICAgICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICc2MCUnLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZWQ6IGNvbmZpZy5hbmltYXRlZCAhPT0gZmFsc2VcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgID48L3ZhbC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGNhc2UgKCdjb21wYWN0Jykge1xuICAgICAgICAgICAgPHZhbC1za2VsZXRvblxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHR5cGU6ICd0aHVtYm5haWwnLFxuICAgICAgICAgICAgICAgIGFuaW1hdGVkOiBjb25maWcuYW5pbWF0ZWQgIT09IGZhbHNlXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPjwvdmFsLXNrZWxldG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICA8dmFsLXNrZWxldG9uXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2NhcmQnLFxuICAgICAgICAgICAgICAgIGFuaW1hdGVkOiBjb25maWcuYW5pbWF0ZWQgIT09IGZhbHNlXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPjwvdmFsLXNrZWxldG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuc2tlbGV0b24tZ3JpZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICYudmFyaWFudC1kZWZhdWx0IHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLnZhcmlhbnQtY2FyZHMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDI4MHB4LCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYudmFyaWFudC1jb21wYWN0IHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgxMDBweCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5za2VsZXRvbi1jYXJkIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgfVxuXG4gICAgICAuc2tlbGV0b24tY2FyZC1jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR3JpZFNrZWxldG9uQ29tcG9uZW50IGltcGxlbWVudHMgU2tlbGV0b25UZW1wbGF0ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogU2tlbGV0b25UZW1wbGF0ZUNvbmZpZyA9IHsgY291bnQ6IDYgfTtcblxuICBnZXQgaXRlbXMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBBcnJheSh0aGlzLmNvbmZpZy5jb3VudCA/PyA2KS5maWxsKDApO1xuICB9XG5cbiAgZ2V0IGdyaWRDb2x1bW5zKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmNvbHVtbnMpIHtcbiAgICAgIHJldHVybiBgcmVwZWF0KCR7dGhpcy5jb25maWcuY29sdW1uc30sIDFmcilgO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { SkeletonComponent } from '../../../components/atoms/skeleton/skeleton.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Template de skeleton para listas.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <val-skeleton-list [config]="{ count: 5 }"></val-skeleton-list>
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <val-skeleton-list [config]="{ count: 3, variant: 'avatar', gap: '16px' }"></val-skeleton-list>
|
|
13
|
+
*/
|
|
14
|
+
export class ListSkeletonComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.config = { count: 3 };
|
|
17
|
+
}
|
|
18
|
+
get items() {
|
|
19
|
+
return Array(this.config.count ?? 3).fill(0);
|
|
20
|
+
}
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ListSkeletonComponent, isStandalone: true, selector: "val-skeleton-list", inputs: { config: "config" }, ngImport: i0, template: `
|
|
23
|
+
<div class="skeleton-list" [style.gap]="config.gap || '12px'" [class]="config.cssClass">
|
|
24
|
+
@for (item of items; track $index) {
|
|
25
|
+
@if (config.variant === 'avatar') {
|
|
26
|
+
<div class="skeleton-list-item-avatar">
|
|
27
|
+
<val-skeleton
|
|
28
|
+
[props]="{
|
|
29
|
+
type: 'avatar',
|
|
30
|
+
animated: config.animated !== false
|
|
31
|
+
}"
|
|
32
|
+
></val-skeleton>
|
|
33
|
+
<div class="skeleton-content">
|
|
34
|
+
<val-skeleton
|
|
35
|
+
[props]="{
|
|
36
|
+
type: 'text',
|
|
37
|
+
width: '70%',
|
|
38
|
+
height: '16px',
|
|
39
|
+
animated: config.animated !== false
|
|
40
|
+
}"
|
|
41
|
+
></val-skeleton>
|
|
42
|
+
<val-skeleton
|
|
43
|
+
[props]="{
|
|
44
|
+
type: 'text',
|
|
45
|
+
width: '50%',
|
|
46
|
+
height: '14px',
|
|
47
|
+
animated: config.animated !== false
|
|
48
|
+
}"
|
|
49
|
+
></val-skeleton>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
} @else {
|
|
53
|
+
<val-skeleton
|
|
54
|
+
[props]="{
|
|
55
|
+
type: 'list-item',
|
|
56
|
+
animated: config.animated !== false
|
|
57
|
+
}"
|
|
58
|
+
></val-skeleton>
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
</div>
|
|
62
|
+
`, isInline: true, styles: [".skeleton-list{display:flex;flex-direction:column;width:100%}.skeleton-list-item-avatar{display:flex;align-items:center;gap:12px;padding:8px 0}.skeleton-content{display:flex;flex-direction:column;gap:6px;flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SkeletonComponent, selector: "val-skeleton", inputs: ["props"] }] }); }
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListSkeletonComponent, decorators: [{
|
|
65
|
+
type: Component,
|
|
66
|
+
args: [{ selector: 'val-skeleton-list', standalone: true, imports: [CommonModule, SkeletonComponent], template: `
|
|
67
|
+
<div class="skeleton-list" [style.gap]="config.gap || '12px'" [class]="config.cssClass">
|
|
68
|
+
@for (item of items; track $index) {
|
|
69
|
+
@if (config.variant === 'avatar') {
|
|
70
|
+
<div class="skeleton-list-item-avatar">
|
|
71
|
+
<val-skeleton
|
|
72
|
+
[props]="{
|
|
73
|
+
type: 'avatar',
|
|
74
|
+
animated: config.animated !== false
|
|
75
|
+
}"
|
|
76
|
+
></val-skeleton>
|
|
77
|
+
<div class="skeleton-content">
|
|
78
|
+
<val-skeleton
|
|
79
|
+
[props]="{
|
|
80
|
+
type: 'text',
|
|
81
|
+
width: '70%',
|
|
82
|
+
height: '16px',
|
|
83
|
+
animated: config.animated !== false
|
|
84
|
+
}"
|
|
85
|
+
></val-skeleton>
|
|
86
|
+
<val-skeleton
|
|
87
|
+
[props]="{
|
|
88
|
+
type: 'text',
|
|
89
|
+
width: '50%',
|
|
90
|
+
height: '14px',
|
|
91
|
+
animated: config.animated !== false
|
|
92
|
+
}"
|
|
93
|
+
></val-skeleton>
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
} @else {
|
|
97
|
+
<val-skeleton
|
|
98
|
+
[props]="{
|
|
99
|
+
type: 'list-item',
|
|
100
|
+
animated: config.animated !== false
|
|
101
|
+
}"
|
|
102
|
+
></val-skeleton>
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
</div>
|
|
106
|
+
`, styles: [".skeleton-list{display:flex;flex-direction:column;width:100%}.skeleton-list-item-avatar{display:flex;align-items:center;gap:12px;padding:8px 0}.skeleton-content{display:flex;flex-direction:column;gap:6px;flex:1}\n"] }]
|
|
107
|
+
}], propDecorators: { config: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}] } });
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3NrZWxldG9uL3RlbXBsYXRlcy9saXN0LXNrZWxldG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdURBQXVELENBQUM7O0FBRzFGOzs7Ozs7OztHQVFHO0FBc0VILE1BQU0sT0FBTyxxQkFBcUI7SUFyRWxDO1FBc0VXLFdBQU0sR0FBMkIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7S0FLeEQ7SUFIQyxJQUFJLEtBQUs7UUFDUCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQzsrR0FMVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiwyR0FqRXRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NULDhSQXpDUyxZQUFZLCtCQUFFLGlCQUFpQjs7NEZBa0U5QixxQkFBcUI7a0JBckVqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFDaEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Q1Q7OEJBMEJRLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvYXRvbXMvc2tlbGV0b24vc2tlbGV0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFNrZWxldG9uVGVtcGxhdGVDb25maWcsIFNrZWxldG9uVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogVGVtcGxhdGUgZGUgc2tlbGV0b24gcGFyYSBsaXN0YXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtc2tlbGV0b24tbGlzdCBbY29uZmlnXT1cInsgY291bnQ6IDUgfVwiPjwvdmFsLXNrZWxldG9uLWxpc3Q+XG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtc2tlbGV0b24tbGlzdCBbY29uZmlnXT1cInsgY291bnQ6IDMsIHZhcmlhbnQ6ICdhdmF0YXInLCBnYXA6ICcxNnB4JyB9XCI+PC92YWwtc2tlbGV0b24tbGlzdD5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNrZWxldG9uLWxpc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa2VsZXRvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLWxpc3RcIiBbc3R5bGUuZ2FwXT1cImNvbmZpZy5nYXAgfHwgJzEycHgnXCIgW2NsYXNzXT1cImNvbmZpZy5jc3NDbGFzc1wiPlxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIEBpZiAoY29uZmlnLnZhcmlhbnQgPT09ICdhdmF0YXInKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLWxpc3QtaXRlbS1hdmF0YXJcIj5cbiAgICAgICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICB0eXBlOiAnYXZhdGFyJyxcbiAgICAgICAgICAgICAgICBhbmltYXRlZDogY29uZmlnLmFuaW1hdGVkICE9PSBmYWxzZVxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID48L3ZhbC1za2VsZXRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbi1jb250ZW50XCI+XG4gICAgICAgICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6ICc3MCUnLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTZweCcsXG4gICAgICAgICAgICAgICAgICBhbmltYXRlZDogY29uZmlnLmFuaW1hdGVkICE9PSBmYWxzZVxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+PC92YWwtc2tlbGV0b24+XG4gICAgICAgICAgICAgIDx2YWwtc2tlbGV0b25cbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6ICc1MCUnLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTRweCcsXG4gICAgICAgICAgICAgICAgICBhbmltYXRlZDogY29uZmlnLmFuaW1hdGVkICE9PSBmYWxzZVxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+PC92YWwtc2tlbGV0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHZhbC1za2VsZXRvblxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgdHlwZTogJ2xpc3QtaXRlbScsXG4gICAgICAgICAgICAgIGFuaW1hdGVkOiBjb25maWcuYW5pbWF0ZWQgIT09IGZhbHNlXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+PC92YWwtc2tlbGV0b24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnNrZWxldG9uLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLnNrZWxldG9uLWxpc3QtaXRlbS1hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDhweCAwO1xuICAgICAgfVxuXG4gICAgICAuc2tlbGV0b24tY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExpc3RTa2VsZXRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIFNrZWxldG9uVGVtcGxhdGVDb21wb25lbnQge1xuICBASW5wdXQoKSBjb25maWc6IFNrZWxldG9uVGVtcGxhdGVDb25maWcgPSB7IGNvdW50OiAzIH07XG5cbiAgZ2V0IGl0ZW1zKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gQXJyYXkodGhpcy5jb25maWcuY291bnQgPz8gMykuZmlsbCgwKTtcbiAgfVxufVxuIl19
|