valtech-components 4.0.953 → 4.0.955
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/metadata-list/metadata-list.component.mjs +7 -17
- package/esm2022/lib/components/molecules/select-search/select-search-picker-modal.component.mjs +154 -0
- package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +41 -156
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/valtech-components.mjs +286 -265
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/metadata-list/metadata-list.component.d.ts +1 -1
- package/lib/components/molecules/select-search/select-search-picker-modal.component.d.ts +44 -0
- package/lib/components/molecules/select-search/select-search.component.d.ts +9 -20
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -38,23 +38,13 @@ export class MetadataListComponent {
|
|
|
38
38
|
});
|
|
39
39
|
this.hostClass = computed(() => {
|
|
40
40
|
const p = this.resolvedProps();
|
|
41
|
-
return [
|
|
42
|
-
'ml',
|
|
43
|
-
p.dividers ? 'ml--dividers' : '',
|
|
44
|
-
p.size === 'small' ? 'ml--small' : '',
|
|
45
|
-
(p.columns ?? 1) > 1 ? 'ml--grid' : '',
|
|
46
|
-
]
|
|
47
|
-
.filter(Boolean)
|
|
48
|
-
.join(' ');
|
|
49
|
-
});
|
|
50
|
-
this.gridStyle = computed(() => {
|
|
51
|
-
const cols = this.resolvedProps().columns ?? 1;
|
|
52
|
-
return cols > 1 ? `repeat(${cols}, 1fr)` : null;
|
|
41
|
+
return ['ml', p.dividers ? 'ml--dividers' : '', p.size === 'small' ? 'ml--small' : ''].filter(Boolean).join(' ');
|
|
53
42
|
});
|
|
43
|
+
this.gridStyle = computed(() => null);
|
|
54
44
|
}
|
|
55
45
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MetadataListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
46
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MetadataListComponent, isStandalone: true, selector: "val-metadata-list", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
57
|
-
<dl [class]="hostClass()"
|
|
47
|
+
<dl [class]="hostClass()">
|
|
58
48
|
@for (section of resolvedSections(); track $index) {
|
|
59
49
|
@if (section.label) {
|
|
60
50
|
<div class="ml__section-label">{{ section.label }}</div>
|
|
@@ -90,12 +80,12 @@ export class MetadataListComponent {
|
|
|
90
80
|
}
|
|
91
81
|
}
|
|
92
82
|
</dl>
|
|
93
|
-
`, isInline: true, styles: ["@charset \"UTF-8\";:host{display:block}.ml{display:flex;flex-direction:column}.ml--dividers .ml__row:not(:last-child){border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.
|
|
83
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";:host{display:block}.ml{display:flex;flex-direction:column}.ml--dividers .ml__item:not(:last-child),.ml--dividers .ml__row:not(:last-child){border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.ml__section-label{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ion-color-medium, #92949c);padding-top:20px;padding-bottom:4px}.ml__section-label:first-child{padding-top:0}.ml--small .ml__section-label{font-size:.625rem;padding-top:16px}.ml__row{display:flex;align-items:flex-start;gap:10px;padding:8px 0;grid-column:1/-1}.ml--small .ml__row{padding:5px 0}.ml__item{display:flex;align-items:flex-start;gap:10px;padding:12px 0;width:100%}.ml--small .ml__item{padding:8px 0}.ml__icon{flex-shrink:0;font-size:1.125rem;color:var(--ion-color-medium, #92949c);line-height:1;margin-top:1px;padding:5px 0}.ml--grid .ml__icon{padding:5px 0}.ml--small .ml__icon{font-size:1rem}.ml__icon--placeholder{width:1.125rem;height:1.125rem}.ml--small .ml__icon--placeholder{width:1rem;height:1rem}.ml__text{display:flex;flex-direction:column;gap:2px;min-width:0}.ml__cell{display:flex;flex-direction:column;gap:2px;min-width:0;padding:5px 0}.ml--grid .ml__cell{padding:5px 0}.ml__label{font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium, #92949c);line-height:1.3}.ml--small .ml__label{font-size:.625rem}.ml__value{font-size:.875rem;font-weight:600;color:var(--ion-text-color, #000);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ml--small .ml__value{font-size:.8125rem}.ml__chips{display:flex;flex-wrap:wrap;gap:4px;margin:0;padding:0}.ml__chip{display:inline-block;font-size:.75rem;font-weight:500;line-height:1;padding:3px 8px;border-radius:100px;background:var(--ion-color-light, rgba(0, 0, 0, .06));color:var(--ion-text-color, #000)}.ml--small .ml__chip{font-size:.6875rem;padding:2px 7px}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
|
|
94
84
|
}
|
|
95
85
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MetadataListComponent, decorators: [{
|
|
96
86
|
type: Component,
|
|
97
87
|
args: [{ selector: 'val-metadata-list', standalone: true, imports: [IonIcon], template: `
|
|
98
|
-
<dl [class]="hostClass()"
|
|
88
|
+
<dl [class]="hostClass()">
|
|
99
89
|
@for (section of resolvedSections(); track $index) {
|
|
100
90
|
@if (section.label) {
|
|
101
91
|
<div class="ml__section-label">{{ section.label }}</div>
|
|
@@ -131,6 +121,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
131
121
|
}
|
|
132
122
|
}
|
|
133
123
|
</dl>
|
|
134
|
-
`, styles: ["@charset \"UTF-8\";:host{display:block}.ml{display:flex;flex-direction:column}.ml--dividers .ml__row:not(:last-child){border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.
|
|
124
|
+
`, styles: ["@charset \"UTF-8\";:host{display:block}.ml{display:flex;flex-direction:column}.ml--dividers .ml__item:not(:last-child),.ml--dividers .ml__row:not(:last-child){border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.ml__section-label{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ion-color-medium, #92949c);padding-top:20px;padding-bottom:4px}.ml__section-label:first-child{padding-top:0}.ml--small .ml__section-label{font-size:.625rem;padding-top:16px}.ml__row{display:flex;align-items:flex-start;gap:10px;padding:8px 0;grid-column:1/-1}.ml--small .ml__row{padding:5px 0}.ml__item{display:flex;align-items:flex-start;gap:10px;padding:12px 0;width:100%}.ml--small .ml__item{padding:8px 0}.ml__icon{flex-shrink:0;font-size:1.125rem;color:var(--ion-color-medium, #92949c);line-height:1;margin-top:1px;padding:5px 0}.ml--grid .ml__icon{padding:5px 0}.ml--small .ml__icon{font-size:1rem}.ml__icon--placeholder{width:1.125rem;height:1.125rem}.ml--small .ml__icon--placeholder{width:1rem;height:1rem}.ml__text{display:flex;flex-direction:column;gap:2px;min-width:0}.ml__cell{display:flex;flex-direction:column;gap:2px;min-width:0;padding:5px 0}.ml--grid .ml__cell{padding:5px 0}.ml__label{font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium, #92949c);line-height:1.3}.ml--small .ml__label{font-size:.625rem}.ml__value{font-size:.875rem;font-weight:600;color:var(--ion-text-color, #000);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ml--small .ml__value{font-size:.8125rem}.ml__chips{display:flex;flex-wrap:wrap;gap:4px;margin:0;padding:0}.ml__chip{display:inline-block;font-size:.75rem;font-weight:500;line-height:1;padding:3px 8px;border-radius:100px;background:var(--ion-color-light, rgba(0, 0, 0, .06));color:var(--ion-text-color, #000)}.ml--small .ml__chip{font-size:.6875rem;padding:2px 7px}\n"] }]
|
|
135
125
|
}] });
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL21ldGFkYXRhLWxpc3QvbWV0YWRhdGEtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVwRCxPQUFPLEVBQXlDLHNCQUFzQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUV4Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUE2Q0gsTUFBTSxPQUFPLHFCQUFxQjtJQTVDbEM7UUE2Q1csVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXdCLENBQUM7UUFFL0Msa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN2QyxHQUFHLHNCQUFzQjtZQUN6QixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUU7U0FDaEIsQ0FBQyxDQUFDLENBQUM7UUFFSyxxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBc0IsRUFBRTtZQUMzRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLE1BQU07Z0JBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQzFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFTSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDL0IsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25ILENBQUMsQ0FBQyxDQUFDO1FBRU0sY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMzQzsrR0FwQlkscUJBQXFCO21HQUFyQixxQkFBcUIsZ05BeEN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFDVCw0OURBdENTLE9BQU87OzRGQXlDTixxQkFBcUI7a0JBNUNqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxPQUFPLENBQUMsWUFDUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFDVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IE1ldGFkYXRhTGlzdE1ldGFkYXRhLCBNZXRhZGF0YVNlY3Rpb24sIE1FVEFEQVRBX0xJU1RfREVGQVVMVFMgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtbWV0YWRhdGEtbGlzdFxuICpcbiAqIExpc3RhIGRlIHBhcmVzIGNsYXZlLXZhbG9yIGNvbiBpY29ubyBvcGNpb25hbC4gU29wb3J0YTpcbiAqIC0gTW9kbyBwbGFubzogYHsgaXRlbXM6IFsuLi5dIH1gXG4gKiAtIE1vZG8gYWdydXBhZG86IGB7IHNlY3Rpb25zOiBbeyBsYWJlbCwgaXRlbXMgfV0gfWBcbiAqIC0gR3JpZCBtdWx0aWNvbHVtbmE6IGB7IGNvbHVtbnM6IDIgfWBcbiAqIC0gVmFsb3JlcyBjb21vIGNoaXBzOiBgeyAuLi4sIGNoaXBzOiB0cnVlIH1gIGVuIGVsIGl0ZW1cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1tZXRhZGF0YS1saXN0IFtwcm9wc109XCJ7XG4gKiAgIGNvbHVtbnM6IDIsXG4gKiAgIHNpemU6ICdzbWFsbCcsXG4gKiAgIHNlY3Rpb25zOiBbXG4gKiAgICAgeyBpdGVtczogW3sgaWNvbjogJ3Bhdy1vdXRsaW5lJywgbGFiZWw6ICdFc3BlY2llJywgdmFsdWU6ICdHYXRvJyB9XSB9LFxuICogICAgIHsgbGFiZWw6ICdQZXJzb25hbGlkYWQnLCBpdGVtczogW3sgbGFiZWw6ICdUZW1wZXJhbWVudG8nLCB2YWx1ZTogJ3RyYW5xdWlsYSwgY2FyacOxb3NhJywgY2hpcHM6IHRydWUgfV0gfVxuICogICBdXG4gKiB9XCIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWV0YWRhdGEtbGlzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGwgW2NsYXNzXT1cImhvc3RDbGFzcygpXCI+XG4gICAgICBAZm9yIChzZWN0aW9uIG9mIHJlc29sdmVkU2VjdGlvbnMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIEBpZiAoc2VjdGlvbi5sYWJlbCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbF9fc2VjdGlvbi1sYWJlbFwiPnt7IHNlY3Rpb24ubGFiZWwgfX08L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChpdGVtIG9mIHNlY3Rpb24uaXRlbXM7IHRyYWNrIGl0ZW0udG9rZW4gfHwgaXRlbS5sYWJlbCkge1xuICAgICAgICAgIEBpZiAoaXRlbS5jaGlwcykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sX19yb3cgbWxfX3Jvdy0tY2hpcHNcIj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmljb24pIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJtbF9faWNvblwiIFtuYW1lXT1cIml0ZW0uaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgPGR0IGNsYXNzPVwibWxfX2xhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvZHQ+XG4gICAgICAgICAgICAgICAgPGRkIGNsYXNzPVwibWxfX2NoaXBzXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChjaGlwIG9mIGl0ZW0udmFsdWUuc3BsaXQoJywnKTsgdHJhY2sgY2hpcCkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sX19jaGlwXCI+e3sgY2hpcC50cmltKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbF9faXRlbVwiPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBjbGFzcz1cIm1sX19pY29uXCIgW25hbWVdPVwiaXRlbS5pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sX19pY29uLS1wbGFjZWhvbGRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbF9fY2VsbFwiPlxuICAgICAgICAgICAgICAgIDxkdCBjbGFzcz1cIm1sX19sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L2R0PlxuICAgICAgICAgICAgICAgIDxkZCBjbGFzcz1cIm1sX192YWx1ZVwiIFtzdHlsZS5jb2xvcl09XCJpdGVtLmNvbG9yIHx8IG51bGxcIj57eyBpdGVtLnZhbHVlIH19PC9kZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2RsPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9tZXRhZGF0YS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhTGlzdENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHByb3BzID0gaW5wdXQucmVxdWlyZWQ8TWV0YWRhdGFMaXN0TWV0YWRhdGE+KCk7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRQcm9wcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgLi4uTUVUQURBVEFfTElTVF9ERUZBVUxUUyxcbiAgICAuLi50aGlzLnByb3BzKCksXG4gIH0pKTtcblxuICByZWFkb25seSByZXNvbHZlZFNlY3Rpb25zID0gY29tcHV0ZWQoKCk6IE1ldGFkYXRhU2VjdGlvbltdID0+IHtcbiAgICBjb25zdCBwID0gdGhpcy5yZXNvbHZlZFByb3BzKCk7XG4gICAgaWYgKHAuc2VjdGlvbnM/Lmxlbmd0aCkgcmV0dXJuIHAuc2VjdGlvbnM7XG4gICAgcmV0dXJuIFt7IGl0ZW1zOiBwLml0ZW1zID8/IFtdIH1dO1xuICB9KTtcblxuICByZWFkb25seSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcCA9IHRoaXMucmVzb2x2ZWRQcm9wcygpO1xuICAgIHJldHVybiBbJ21sJywgcC5kaXZpZGVycyA/ICdtbC0tZGl2aWRlcnMnIDogJycsIHAuc2l6ZSA9PT0gJ3NtYWxsJyA/ICdtbC0tc21hbGwnIDogJyddLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGdyaWRTdHlsZSA9IGNvbXB1dGVkKCgpID0+IG51bGwpO1xufVxuIl19
|
package/esm2022/lib/components/molecules/select-search/select-search-picker-modal.component.mjs
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { Component, computed, inject, signal } from '@angular/core';
|
|
2
|
+
import { IonIcon, IonItem, IonLabel, IonList } from '@ionic/angular/standalone';
|
|
3
|
+
import { I18nService } from '../../../services/i18n';
|
|
4
|
+
import { ButtonComponent } from '../../atoms/button/button.component';
|
|
5
|
+
import { ModalLayoutComponent } from '../modal-layout/modal-layout.component';
|
|
6
|
+
import { SearchbarComponent } from '../searchbar/searchbar.component';
|
|
7
|
+
import { replaceSpecialChars } from '../../../shared/utils/text';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
/**
|
|
10
|
+
* Picker de `val-select-search` / `val-multi-select-search` — full-screen en
|
|
11
|
+
* mobile, card flotante en desktop (`ModalService.openAdaptive`, Regla #5).
|
|
12
|
+
* Reemplaza el `ion-modal` con breakpoints que ambos componentes tenían
|
|
13
|
+
* embebido: mismo bottom-sheet en cualquier tamaño de pantalla, sin el
|
|
14
|
+
* tratamiento "card centrada" que el resto de los modales del factory ya usa.
|
|
15
|
+
*
|
|
16
|
+
* Selección simple: cierra al tocar un ítem (`dismiss({values:[v]}, 'selected')`).
|
|
17
|
+
* Selección múltiple: acumula localmente, footer con "Aplicar" (Regla #5,
|
|
18
|
+
* val-modal-layout con `actions`).
|
|
19
|
+
*/
|
|
20
|
+
export class SelectSearchPickerModalComponent {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.i18n = inject(I18nService);
|
|
23
|
+
this.query = signal('');
|
|
24
|
+
this.selected = signal([]);
|
|
25
|
+
this.filteredItems = computed(() => {
|
|
26
|
+
this.ensureSeeded();
|
|
27
|
+
const opts = this.props.options ?? [];
|
|
28
|
+
const q = replaceSpecialChars(this.query().trim().toLowerCase());
|
|
29
|
+
if (!q)
|
|
30
|
+
return opts;
|
|
31
|
+
return opts.filter(o => {
|
|
32
|
+
const label = replaceSpecialChars(String(o[this.props.labelProperty] ?? '').toLowerCase());
|
|
33
|
+
const value = replaceSpecialChars(String(o[this.props.valueProperty] ?? '').toLowerCase());
|
|
34
|
+
return label.includes(q) || value.includes(q);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
this.footerActions = computed(() => this.props?.multiple
|
|
38
|
+
? [
|
|
39
|
+
{
|
|
40
|
+
text: this.i18n.t('apply'),
|
|
41
|
+
color: 'primary',
|
|
42
|
+
shape: 'round',
|
|
43
|
+
type: 'button',
|
|
44
|
+
state: 'ENABLED',
|
|
45
|
+
},
|
|
46
|
+
]
|
|
47
|
+
: []);
|
|
48
|
+
// `props` llega por componentProps (Ionic hace el assign DESPUÉS de construir
|
|
49
|
+
// la instancia, no en el constructor) — sembrar la selección tiene que pasar
|
|
50
|
+
// en el primer acceso desde el template, no acá. Un flag propio en vez de
|
|
51
|
+
// "selected().length === 0": si el usuario deselecciona todo a propósito, un
|
|
52
|
+
// chequeo por longitud volvería a sembrar los valores originales en la
|
|
53
|
+
// siguiente change-detection.
|
|
54
|
+
this.seeded = false;
|
|
55
|
+
}
|
|
56
|
+
ensureSeeded() {
|
|
57
|
+
if (this.seeded)
|
|
58
|
+
return;
|
|
59
|
+
this.seeded = true;
|
|
60
|
+
if (this.props?.selectedValues?.length) {
|
|
61
|
+
this.selected.set([...this.props.selectedValues]);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
isSelected(item) {
|
|
65
|
+
this.ensureSeeded();
|
|
66
|
+
return this.selected().includes(item[this.props.valueProperty]);
|
|
67
|
+
}
|
|
68
|
+
toggle(item) {
|
|
69
|
+
this.ensureSeeded();
|
|
70
|
+
const value = item[this.props.valueProperty];
|
|
71
|
+
if (!this.props.multiple) {
|
|
72
|
+
this._modalRef?.dismiss({ values: [value] }, 'selected');
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const current = this.selected();
|
|
76
|
+
const idx = current.indexOf(value);
|
|
77
|
+
this.selected.set(idx === -1 ? [...current, value] : current.filter(v => v !== value));
|
|
78
|
+
}
|
|
79
|
+
apply() {
|
|
80
|
+
this._modalRef?.dismiss({ values: this.selected() }, 'selected');
|
|
81
|
+
}
|
|
82
|
+
cancel() {
|
|
83
|
+
this._modalRef?.dismiss(undefined, 'cancel');
|
|
84
|
+
}
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectSearchPickerModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SelectSearchPickerModalComponent, isStandalone: true, selector: "val-select-search-picker-modal", ngImport: i0, template: `
|
|
87
|
+
<val-modal-layout
|
|
88
|
+
[title]="props.title"
|
|
89
|
+
[closeLabel]="i18n.t('close')"
|
|
90
|
+
[actions]="footerActions()"
|
|
91
|
+
actionsAlign="stretch"
|
|
92
|
+
(close)="cancel()"
|
|
93
|
+
(actionClick)="apply()"
|
|
94
|
+
>
|
|
95
|
+
<div class="ssp-search">
|
|
96
|
+
<val-searchbar
|
|
97
|
+
[props]="{ placeholder: props.placeholder || i18n.t('selectOption'), debounce: 200 }"
|
|
98
|
+
(filterEvent)="query.set($event)"
|
|
99
|
+
/>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
@if (filteredItems().length === 0) {
|
|
103
|
+
<p class="ssp-empty">{{ i18n.t('noResults') }}</p>
|
|
104
|
+
} @else {
|
|
105
|
+
<ion-list class="ssp-list" lines="none">
|
|
106
|
+
@for (item of filteredItems(); track item[props.valueProperty]) {
|
|
107
|
+
<ion-item class="ssp-item" button detail="false" (click)="toggle(item)">
|
|
108
|
+
<ion-label>{{ item[props.labelProperty] }}</ion-label>
|
|
109
|
+
@if (isSelected(item)) {
|
|
110
|
+
<ion-icon name="checkmark-outline" slot="end" color="primary" aria-hidden="true" />
|
|
111
|
+
}
|
|
112
|
+
</ion-item>
|
|
113
|
+
}
|
|
114
|
+
</ion-list>
|
|
115
|
+
}
|
|
116
|
+
</val-modal-layout>
|
|
117
|
+
`, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0}.ssp-search{margin:0 0 12px}.ssp-list{background:transparent;display:flex;flex-direction:column;gap:6px}.ssp-item{--background: var(--ion-card-background, var(--ion-background-color, #fff));--padding-start: 12px;--padding-end: 12px;--inner-padding-end: 0;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:10px;cursor:pointer}.ssp-empty{text-align:center;color:var(--ion-color-medium, #92949c);font-size:.875rem;margin:24px 0}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }, { kind: "component", type: SearchbarComponent, selector: "val-searchbar", inputs: ["preset", "props"], outputs: ["filterEvent", "focusEvent", "blurEvent"] }] }); }
|
|
118
|
+
}
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectSearchPickerModalComponent, decorators: [{
|
|
120
|
+
type: Component,
|
|
121
|
+
args: [{ selector: 'val-select-search-picker-modal', standalone: true, imports: [IonIcon, IonItem, IonLabel, IonList, ButtonComponent, ModalLayoutComponent, SearchbarComponent], template: `
|
|
122
|
+
<val-modal-layout
|
|
123
|
+
[title]="props.title"
|
|
124
|
+
[closeLabel]="i18n.t('close')"
|
|
125
|
+
[actions]="footerActions()"
|
|
126
|
+
actionsAlign="stretch"
|
|
127
|
+
(close)="cancel()"
|
|
128
|
+
(actionClick)="apply()"
|
|
129
|
+
>
|
|
130
|
+
<div class="ssp-search">
|
|
131
|
+
<val-searchbar
|
|
132
|
+
[props]="{ placeholder: props.placeholder || i18n.t('selectOption'), debounce: 200 }"
|
|
133
|
+
(filterEvent)="query.set($event)"
|
|
134
|
+
/>
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
|
+
@if (filteredItems().length === 0) {
|
|
138
|
+
<p class="ssp-empty">{{ i18n.t('noResults') }}</p>
|
|
139
|
+
} @else {
|
|
140
|
+
<ion-list class="ssp-list" lines="none">
|
|
141
|
+
@for (item of filteredItems(); track item[props.valueProperty]) {
|
|
142
|
+
<ion-item class="ssp-item" button detail="false" (click)="toggle(item)">
|
|
143
|
+
<ion-label>{{ item[props.labelProperty] }}</ion-label>
|
|
144
|
+
@if (isSelected(item)) {
|
|
145
|
+
<ion-icon name="checkmark-outline" slot="end" color="primary" aria-hidden="true" />
|
|
146
|
+
}
|
|
147
|
+
</ion-item>
|
|
148
|
+
}
|
|
149
|
+
</ion-list>
|
|
150
|
+
}
|
|
151
|
+
</val-modal-layout>
|
|
152
|
+
`, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0}.ssp-search{margin:0 0 12px}.ssp-list{background:transparent;display:flex;flex-direction:column;gap:6px}.ssp-item{--background: var(--ion-card-background, var(--ion-background-color, #fff));--padding-start: 12px;--padding-end: 12px;--inner-padding-end: 0;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:10px;cursor:pointer}.ssp-empty{text-align:center;color:var(--ion-color-medium, #92949c);font-size:.875rem;margin:24px 0}\n"] }]
|
|
153
|
+
}] });
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXNlYXJjaC1waWNrZXItbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9zZWxlY3Qtc2VhcmNoL3NlbGVjdC1zZWFyY2gtcGlja2VyLW1vZGFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQWFqRTs7Ozs7Ozs7OztHQVVHO0FBd0VILE1BQU0sT0FBTyxnQ0FBZ0M7SUF2RTdDO1FBMEVXLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFLM0IsVUFBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQixhQUFRLEdBQUcsTUFBTSxDQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRWpDLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ3RDLE1BQU0sQ0FB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LEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDOytHQTNFVSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQywwRkFuRWpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JULCtrQkFoQ1MsT0FBTywySkFBRSxPQUFPLDBOQUFFLFFBQVEsNkZBQUUsT0FBTyx5RkFBbUIsb0JBQW9CLDhNQUFFLGtCQUFrQjs7NEZBb0U3RixnQ0FBZ0M7a0JBdkU1QyxTQUFTOytCQUNFLGdDQUFnQyxjQUM5QixJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLFlBQy9GOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkljb24sIElvbkl0ZW0sIElvbkxhYmVsLCBJb25MaXN0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsLWxheW91dC9tb2RhbC1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaGJhci9zZWFyY2hiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IHJlcGxhY2VTcGVjaWFsQ2hhcnMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvdGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0U2VhcmNoUGlja2VyUHJvcHMge1xuICB0aXRsZTogc3RyaW5nO1xuICBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICB2YWx1ZVByb3BlcnR5OiBzdHJpbmc7XG4gIGxhYmVsUHJvcGVydHk6IHN0cmluZztcbiAgbXVsdGlwbGU6IGJvb2xlYW47XG4gIC8qKiBWYWxvcmVzIHlhIHNlbGVjY2lvbmFkb3MgKHNpZW1wcmUgYXJyYXkg4oCUIHVuIHNvbG8gZWxlbWVudG8gc2kgbm8gZXMgYG11bHRpcGxlYCkuICovXG4gIHNlbGVjdGVkVmFsdWVzOiB1bmtub3duW107XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBpY2tlciBkZSBgdmFsLXNlbGVjdC1zZWFyY2hgIC8gYHZhbC1tdWx0aS1zZWxlY3Qtc2VhcmNoYCDigJQgZnVsbC1zY3JlZW4gZW5cbiAqIG1vYmlsZSwgY2FyZCBmbG90YW50ZSBlbiBkZXNrdG9wIChgTW9kYWxTZXJ2aWNlLm9wZW5BZGFwdGl2ZWAsIFJlZ2xhICM1KS5cbiAqIFJlZW1wbGF6YSBlbCBgaW9uLW1vZGFsYCBjb24gYnJlYWtwb2ludHMgcXVlIGFtYm9zIGNvbXBvbmVudGVzIHRlbsOtYW5cbiAqIGVtYmViaWRvOiBtaXNtbyBib3R0b20tc2hlZXQgZW4gY3VhbHF1aWVyIHRhbWHDsW8gZGUgcGFudGFsbGEsIHNpbiBlbFxuICogdHJhdGFtaWVudG8gXCJjYXJkIGNlbnRyYWRhXCIgcXVlIGVsIHJlc3RvIGRlIGxvcyBtb2RhbGVzIGRlbCBmYWN0b3J5IHlhIHVzYS5cbiAqXG4gKiBTZWxlY2Npw7NuIHNpbXBsZTogY2llcnJhIGFsIHRvY2FyIHVuIMOtdGVtIChgZGlzbWlzcyh7dmFsdWVzOlt2XX0sICdzZWxlY3RlZCcpYCkuXG4gKiBTZWxlY2Npw7NuIG3Dumx0aXBsZTogYWN1bXVsYSBsb2NhbG1lbnRlLCBmb290ZXIgY29uIFwiQXBsaWNhclwiIChSZWdsYSAjNSxcbiAqIHZhbC1tb2RhbC1sYXlvdXQgY29uIGBhY3Rpb25zYCkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1zZWxlY3Qtc2VhcmNoLXBpY2tlci1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25JY29uLCBJb25JdGVtLCBJb25MYWJlbCwgSW9uTGlzdCwgQnV0dG9uQ29tcG9uZW50LCBNb2RhbExheW91dENvbXBvbmVudCwgU2VhcmNoYmFyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgW3RpdGxlXT1cInByb3BzLnRpdGxlXCJcbiAgICAgIFtjbG9zZUxhYmVsXT1cImkxOG4udCgnY2xvc2UnKVwiXG4gICAgICBbYWN0aW9uc109XCJmb290ZXJBY3Rpb25zKClcIlxuICAgICAgYWN0aW9uc0FsaWduPVwic3RyZXRjaFwiXG4gICAgICAoY2xvc2UpPVwiY2FuY2VsKClcIlxuICAgICAgKGFjdGlvbkNsaWNrKT1cImFwcGx5KClcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJzc3Atc2VhcmNoXCI+XG4gICAgICAgIDx2YWwtc2VhcmNoYmFyXG4gICAgICAgICAgW3Byb3BzXT1cInsgcGxhY2Vob2xkZXI6IHByb3BzLnBsYWNlaG9sZGVyIHx8IGkxOG4udCgnc2VsZWN0T3B0aW9uJyksIGRlYm91bmNlOiAyMDAgfVwiXG4gICAgICAgICAgKGZpbHRlckV2ZW50KT1cInF1ZXJ5LnNldCgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKGZpbHRlcmVkSXRlbXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgPHAgY2xhc3M9XCJzc3AtZW1wdHlcIj57eyBpMThuLnQoJ25vUmVzdWx0cycpIH19PC9wPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxpb24tbGlzdCBjbGFzcz1cInNzcC1saXN0XCIgbGluZXM9XCJub25lXCI+XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zKCk7IHRyYWNrIGl0ZW1bcHJvcHMudmFsdWVQcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgIDxpb24taXRlbSBjbGFzcz1cInNzcC1pdGVtXCIgYnV0dG9uIGRldGFpbD1cImZhbHNlXCIgKGNsaWNrKT1cInRvZ2dsZShpdGVtKVwiPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7IGl0ZW1bcHJvcHMubGFiZWxQcm9wZXJ0eV0gfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgQGlmIChpc1NlbGVjdGVkKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmstb3V0bGluZVwiIHNsb3Q9XCJlbmRcIiBjb2xvcj1cInByaW1hcnlcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9pb24tbGlzdD5cbiAgICAgIH1cbiAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgfVxuICAgICAgLnNzcC1zZWFyY2gge1xuICAgICAgICBtYXJnaW46IDAgMCAxMnB4O1xuICAgICAgfVxuICAgICAgLnNzcC1saXN0IHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgfVxuICAgICAgLnNzcC1pdGVtIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICAtLXBhZGRpbmctc3RhcnQ6IDEycHg7XG4gICAgICAgIC0tcGFkZGluZy1lbmQ6IDEycHg7XG4gICAgICAgIC0taW5uZXItcGFkZGluZy1lbmQ6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICAgIC5zc3AtZW1wdHkge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgbWFyZ2luOiAyNHB4IDA7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0U2VhcmNoUGlja2VyTW9kYWxDb21wb25lbnQge1xuICBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbkFkYXB0aXZlKHsgY29tcG9uZW50UHJvcHMgfSlgLiAqL1xuICBwcm9wcyE6IFNlbGVjdFNlYXJjaFBpY2tlclByb3BzO1xuXG4gIHJlYWRvbmx5IHF1ZXJ5ID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWQgPSBzaWduYWw8dW5rbm93bltdPihbXSk7XG5cbiAgcmVhZG9ubHkgZmlsdGVyZWRJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmVuc3VyZVNlZWRlZCgpO1xuICAgIGNvbnN0IG9wdHMgPSB0aGlzLnByb3BzLm9wdGlvbnMgPz8gW107XG4gICAgY29uc3QgcSA9IHJlcGxhY2VTcGVjaWFsQ2hhcnModGhpcy5xdWVyeSgpLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcbiAgICBpZiAoIXEpIHJldHVybiBvcHRzO1xuICAgIHJldHVybiBvcHRzLmZpbHRlcihvID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsID0gcmVwbGFjZVNwZWNpYWxDaGFycyhTdHJpbmcob1t0aGlzLnByb3BzLmxhYmVsUHJvcGVydHldID8/ICcnKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gcmVwbGFjZVNwZWNpYWxDaGFycyhTdHJpbmcob1t0aGlzLnByb3BzLnZhbHVlUHJvcGVydHldID8/ICcnKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIHJldHVybiBsYWJlbC5pbmNsdWRlcyhxKSB8fCB2YWx1ZS5pbmNsdWRlcyhxKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZm9vdGVyQWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+XG4gICAgdGhpcy5wcm9wcz8ubXVsdGlwbGVcbiAgICAgID8gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IHRoaXMuaTE4bi50KCdhcHBseScpLFxuICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnIGFzIEJ1dHRvbk1ldGFkYXRhWydzdGF0ZSddLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIDogW11cbiAgKTtcblxuICAvLyBgcHJvcHNgIGxsZWdhIHBvciBjb21wb25lbnRQcm9wcyAoSW9uaWMgaGFjZSBlbCBhc3NpZ24gREVTUFXDiVMgZGUgY29uc3RydWlyXG4gIC8vIGxhIGluc3RhbmNpYSwgbm8gZW4gZWwgY29uc3RydWN0b3IpIOKAlCBzZW1icmFyIGxhIHNlbGVjY2nDs24gdGllbmUgcXVlIHBhc2FyXG4gIC8vIGVuIGVsIHByaW1lciBhY2Nlc28gZGVzZGUgZWwgdGVtcGxhdGUsIG5vIGFjw6EuIFVuIGZsYWcgcHJvcGlvIGVuIHZleiBkZVxuICAvLyBcInNlbGVjdGVkKCkubGVuZ3RoID09PSAwXCI6IHNpIGVsIHVzdWFyaW8gZGVzZWxlY2Npb25hIHRvZG8gYSBwcm9ww7NzaXRvLCB1blxuICAvLyBjaGVxdWVvIHBvciBsb25naXR1ZCB2b2x2ZXLDrWEgYSBzZW1icmFyIGxvcyB2YWxvcmVzIG9yaWdpbmFsZXMgZW4gbGFcbiAgLy8gc2lndWllbnRlIGNoYW5nZS1kZXRlY3Rpb24uXG4gIHByaXZhdGUgc2VlZGVkID0gZmFsc2U7XG4gIHByaXZhdGUgZW5zdXJlU2VlZGVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlZWRlZCkgcmV0dXJuO1xuICAgIHRoaXMuc2VlZGVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5wcm9wcz8uc2VsZWN0ZWRWYWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZC5zZXQoWy4uLnRoaXMucHJvcHMuc2VsZWN0ZWRWYWx1ZXNdKTtcbiAgICB9XG4gIH1cblxuICBpc1NlbGVjdGVkKGl0ZW06IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogYm9vbGVhbiB7XG4gICAgdGhpcy5lbnN1cmVTZWVkZWQoKTtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZCgpLmluY2x1ZGVzKGl0ZW1bdGhpcy5wcm9wcy52YWx1ZVByb3BlcnR5XSk7XG4gIH1cblxuICB0b2dnbGUoaXRlbTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZVNlZWRlZCgpO1xuICAgIGNvbnN0IHZhbHVlID0gaXRlbVt0aGlzLnByb3BzLnZhbHVlUHJvcGVydHldO1xuICAgIGlmICghdGhpcy5wcm9wcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3MoeyB2YWx1ZXM6IFt2YWx1ZV0gfSwgJ3NlbGVjdGVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnNlbGVjdGVkKCk7XG4gICAgY29uc3QgaWR4ID0gY3VycmVudC5pbmRleE9mKHZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkLnNldChpZHggPT09IC0xID8gWy4uLmN1cnJlbnQsIHZhbHVlXSA6IGN1cnJlbnQuZmlsdGVyKHYgPT4gdiAhPT0gdmFsdWUpKTtcbiAgfVxuXG4gIGFwcGx5KCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKHsgdmFsdWVzOiB0aGlzLnNlbGVjdGVkKCkgfSwgJ3NlbGVjdGVkJyk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3ModW5kZWZpbmVkLCAnY2FuY2VsJyk7XG4gIH1cbn1cbiJdfQ==
|