valtech-components 2.0.566 → 2.0.567
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/atoms/avatar/avatar.component.mjs +51 -14
- package/esm2022/lib/components/atoms/fab/fab.component.mjs +63 -25
- package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +64 -19
- package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +45 -18
- package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +43 -15
- package/esm2022/lib/components/molecules/card/card.component.mjs +2 -2
- package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +52 -8
- package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +54 -37
- package/esm2022/lib/components/molecules/comment/comment.component.mjs +1 -1
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +62 -27
- package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +74 -46
- package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +2 -2
- package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +1 -1
- package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +95 -59
- package/esm2022/lib/components/molecules/pill/pill.component.mjs +61 -13
- package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +2 -2
- package/esm2022/lib/components/molecules/rating/rating.component.mjs +60 -43
- package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +56 -26
- package/esm2022/lib/components/molecules/searchbar/types.mjs +2 -0
- package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +52 -29
- package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +2 -2
- package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +67 -51
- package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +51 -23
- package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +59 -21
- package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +93 -59
- package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +49 -15
- package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +1 -1
- package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +2 -2
- package/esm2022/lib/components/organisms/form/form.component.mjs +2 -2
- package/esm2022/lib/components/organisms/tabbed-content/tabbed-content.component.mjs +1 -1
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +2 -2
- package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +2 -2
- package/fesm2022/valtech-components.mjs +1259 -675
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/avatar/avatar.component.d.ts +26 -5
- package/lib/components/atoms/fab/fab.component.d.ts +24 -5
- package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +21 -6
- package/lib/components/molecules/accordion/accordion.component.d.ts +10 -4
- package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +10 -4
- package/lib/components/molecules/check-input/check-input.component.d.ts +25 -4
- package/lib/components/molecules/chip-group/chip-group.component.d.ts +10 -4
- package/lib/components/molecules/date-input/date-input.component.d.ts +25 -7
- package/lib/components/molecules/glow-card/glow-card.component.d.ts +16 -5
- package/lib/components/molecules/phone-input/phone-input.component.d.ts +28 -5
- package/lib/components/molecules/pill/pill.component.d.ts +27 -3
- package/lib/components/molecules/rating/rating.component.d.ts +10 -4
- package/lib/components/molecules/searchbar/searchbar.component.d.ts +15 -11
- package/lib/components/molecules/searchbar/types.d.ts +33 -0
- package/lib/components/molecules/segment-control/segment-control.component.d.ts +17 -6
- package/lib/components/molecules/stats-card/stats-card.component.d.ts +10 -4
- package/lib/components/molecules/stepper/stepper.component.d.ts +20 -4
- package/lib/components/molecules/tabs/tabs.component.d.ts +27 -4
- package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +27 -4
- package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +25 -4
- package/package.json +1 -1
- package/src/lib/components/styles/_docs-page.scss +310 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
1
|
+
import { Component, inject, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { IonIcon } from '@ionic/angular/standalone';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { PresetService } from '../../../services/presets';
|
|
4
5
|
import { addIcons } from 'ionicons';
|
|
5
6
|
import { checkmark, close, ellipse } from 'ionicons/icons';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
@@ -37,14 +38,40 @@ addIcons({ checkmark, close, ellipse });
|
|
|
37
38
|
*/
|
|
38
39
|
export class StepperComponent {
|
|
39
40
|
constructor() {
|
|
41
|
+
this.presets = inject(PresetService);
|
|
42
|
+
/**
|
|
43
|
+
* Stepper configuration object. Values here override preset values.
|
|
44
|
+
*/
|
|
45
|
+
this.props = {};
|
|
46
|
+
/**
|
|
47
|
+
* Resolved props after merging preset + explicit props.
|
|
48
|
+
*/
|
|
49
|
+
this.resolvedProps = {};
|
|
40
50
|
this.stepChange = new EventEmitter();
|
|
41
51
|
}
|
|
52
|
+
ngOnInit() {
|
|
53
|
+
this.resolveProps();
|
|
54
|
+
}
|
|
55
|
+
ngOnChanges(changes) {
|
|
56
|
+
if (changes['preset'] || changes['props']) {
|
|
57
|
+
this.resolveProps();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
resolveProps() {
|
|
61
|
+
const presetProps = this.preset
|
|
62
|
+
? this.presets.get('stepper', this.preset)
|
|
63
|
+
: {};
|
|
64
|
+
this.resolvedProps = {
|
|
65
|
+
...presetProps,
|
|
66
|
+
...this.props,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
42
69
|
getCurrentIndex() {
|
|
43
|
-
if (this.
|
|
44
|
-
return this.
|
|
70
|
+
if (this.resolvedProps.currentIndex !== undefined) {
|
|
71
|
+
return this.resolvedProps.currentIndex;
|
|
45
72
|
}
|
|
46
|
-
if (this.
|
|
47
|
-
return this.
|
|
73
|
+
if (this.resolvedProps.currentStep) {
|
|
74
|
+
return this.resolvedProps.steps?.findIndex((s) => s.value === this.resolvedProps.currentStep) ?? 0;
|
|
48
75
|
}
|
|
49
76
|
return 0;
|
|
50
77
|
}
|
|
@@ -60,7 +87,7 @@ export class StepperComponent {
|
|
|
60
87
|
}
|
|
61
88
|
getStepColor(step, index) {
|
|
62
89
|
const status = this.getStepStatus(step, index);
|
|
63
|
-
const color = this.
|
|
90
|
+
const color = this.resolvedProps.color || 'primary';
|
|
64
91
|
switch (status) {
|
|
65
92
|
case 'completed':
|
|
66
93
|
return `var(--ion-color-${color})`;
|
|
@@ -75,10 +102,9 @@ export class StepperComponent {
|
|
|
75
102
|
isStepClickable(step, index) {
|
|
76
103
|
if (step.disabled)
|
|
77
104
|
return false;
|
|
78
|
-
if (!this.
|
|
105
|
+
if (!this.resolvedProps.linear)
|
|
79
106
|
return true;
|
|
80
107
|
const currentIndex = this.getCurrentIndex();
|
|
81
|
-
// In linear mode, can only go to completed steps or next step
|
|
82
108
|
return index <= currentIndex || (step.editable && index < currentIndex);
|
|
83
109
|
}
|
|
84
110
|
onStepClick(step, index) {
|
|
@@ -97,13 +123,13 @@ export class StepperComponent {
|
|
|
97
123
|
return step.label || step.contentFallback || '';
|
|
98
124
|
}
|
|
99
125
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
100
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: StepperComponent, isStandalone: true, selector: "val-stepper", inputs: { props: "props" }, outputs: { stepChange: "stepChange" }, ngImport: i0, template: `
|
|
126
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: StepperComponent, isStandalone: true, selector: "val-stepper", inputs: { preset: "preset", props: "props" }, outputs: { stepChange: "stepChange" }, usesOnChanges: true, ngImport: i0, template: `
|
|
101
127
|
<div
|
|
102
128
|
class="stepper-container"
|
|
103
|
-
[class.horizontal]="
|
|
104
|
-
[class.vertical]="
|
|
129
|
+
[class.horizontal]="resolvedProps.orientation !== 'vertical'"
|
|
130
|
+
[class.vertical]="resolvedProps.orientation === 'vertical'"
|
|
105
131
|
>
|
|
106
|
-
@for (step of
|
|
132
|
+
@for (step of resolvedProps.steps; track step.value; let i = $index; let isLast = $last) {
|
|
107
133
|
<div
|
|
108
134
|
class="step"
|
|
109
135
|
[class.current]="getStepStatus(step, i) === 'current'"
|
|
@@ -121,16 +147,16 @@ export class StepperComponent {
|
|
|
121
147
|
<ion-icon name="close"></ion-icon>
|
|
122
148
|
} @else if (step.icon) {
|
|
123
149
|
<ion-icon [name]="step.icon"></ion-icon>
|
|
124
|
-
} @else if (
|
|
150
|
+
} @else if (resolvedProps.showNumbers !== false) {
|
|
125
151
|
<span class="step-number">{{ i + 1 }}</span>
|
|
126
152
|
} @else {
|
|
127
153
|
<ion-icon name="ellipse"></ion-icon>
|
|
128
154
|
}
|
|
129
155
|
</div>
|
|
130
|
-
@if (!isLast &&
|
|
156
|
+
@if (!isLast && resolvedProps.connectorStyle !== 'none') {
|
|
131
157
|
<div
|
|
132
158
|
class="step-connector"
|
|
133
|
-
[class.dashed]="
|
|
159
|
+
[class.dashed]="resolvedProps.connectorStyle === 'dashed'"
|
|
134
160
|
[class.completed]="getStepStatus(step, i) === 'completed'"
|
|
135
161
|
></div>
|
|
136
162
|
}
|
|
@@ -156,10 +182,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
156
182
|
args: [{ selector: 'val-stepper', standalone: true, imports: [CommonModule, IonIcon], template: `
|
|
157
183
|
<div
|
|
158
184
|
class="stepper-container"
|
|
159
|
-
[class.horizontal]="
|
|
160
|
-
[class.vertical]="
|
|
185
|
+
[class.horizontal]="resolvedProps.orientation !== 'vertical'"
|
|
186
|
+
[class.vertical]="resolvedProps.orientation === 'vertical'"
|
|
161
187
|
>
|
|
162
|
-
@for (step of
|
|
188
|
+
@for (step of resolvedProps.steps; track step.value; let i = $index; let isLast = $last) {
|
|
163
189
|
<div
|
|
164
190
|
class="step"
|
|
165
191
|
[class.current]="getStepStatus(step, i) === 'current'"
|
|
@@ -177,16 +203,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
177
203
|
<ion-icon name="close"></ion-icon>
|
|
178
204
|
} @else if (step.icon) {
|
|
179
205
|
<ion-icon [name]="step.icon"></ion-icon>
|
|
180
|
-
} @else if (
|
|
206
|
+
} @else if (resolvedProps.showNumbers !== false) {
|
|
181
207
|
<span class="step-number">{{ i + 1 }}</span>
|
|
182
208
|
} @else {
|
|
183
209
|
<ion-icon name="ellipse"></ion-icon>
|
|
184
210
|
}
|
|
185
211
|
</div>
|
|
186
|
-
@if (!isLast &&
|
|
212
|
+
@if (!isLast && resolvedProps.connectorStyle !== 'none') {
|
|
187
213
|
<div
|
|
188
214
|
class="step-connector"
|
|
189
|
-
[class.dashed]="
|
|
215
|
+
[class.dashed]="resolvedProps.connectorStyle === 'dashed'"
|
|
190
216
|
[class.completed]="getStepStatus(step, i) === 'completed'"
|
|
191
217
|
></div>
|
|
192
218
|
}
|
|
@@ -206,9 +232,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
206
232
|
}
|
|
207
233
|
</div>
|
|
208
234
|
`, styles: [":host{display:block}.stepper-container{display:flex}.stepper-container.horizontal{flex-direction:row;align-items:flex-start}.stepper-container.horizontal .step{flex:1;flex-direction:column;align-items:center;text-align:center}.stepper-container.horizontal .step .step-indicator{flex-direction:row;width:100%;justify-content:center}.stepper-container.horizontal .step .step-connector{flex:1;height:2px;margin:0 8px;align-self:center}.stepper-container.vertical{flex-direction:column}.stepper-container.vertical .step{flex-direction:row;align-items:flex-start}.stepper-container.vertical .step .step-indicator{flex-direction:column;align-items:center}.stepper-container.vertical .step .step-connector{width:2px;flex:1;min-height:24px;margin:8px 0}.stepper-container.vertical .step .step-content{margin-left:12px;padding-bottom:24px}.step{display:flex;cursor:default}.step.clickable{cursor:pointer}.step.clickable:hover .step-circle{transform:scale(1.1)}.step.disabled{opacity:.5;pointer-events:none}.step.current .step-circle{box-shadow:0 0 0 4px rgba(var(--ion-color-primary-rgb),.2)}.step-indicator{display:flex;position:relative}.step-circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:var(--step-color, var(--ion-color-medium));color:#fff;font-weight:600;font-size:14px;transition:transform .2s,box-shadow .2s;flex-shrink:0}.step-circle ion-icon{font-size:18px}.step-connector{background-color:var(--ion-color-light-shade);transition:background-color .3s}.step-connector.completed{background-color:var(--ion-color-primary)}.step-connector.dashed{background:repeating-linear-gradient(90deg,var(--ion-color-light-shade),var(--ion-color-light-shade) 4px,transparent 4px,transparent 8px)}.step-connector.dashed.completed{background:repeating-linear-gradient(90deg,var(--ion-color-primary),var(--ion-color-primary) 4px,transparent 4px,transparent 8px)}.step-content{margin-top:8px}.step-label{font-weight:500;font-size:14px;color:var(--ion-text-color)}.step-label .optional-text{font-weight:400;font-size:12px;color:var(--ion-color-medium);margin-left:4px}.step-description{font-size:12px;color:var(--ion-color-medium);margin-top:4px}\n"] }]
|
|
209
|
-
}], propDecorators: {
|
|
235
|
+
}], propDecorators: { preset: [{
|
|
236
|
+
type: Input
|
|
237
|
+
}], props: [{
|
|
210
238
|
type: Input
|
|
211
239
|
}], stepChange: [{
|
|
212
240
|
type: Output
|
|
213
241
|
}] } });
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTNELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQTZEeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQXpGN0I7UUE0RlksZUFBVSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO0tBOEQ1RDtJQTVEQyxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ2pDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRSxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQWtCLEVBQUUsS0FBYTtRQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRXBDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QyxJQUFJLEtBQUssR0FBRyxZQUFZO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFDN0MsSUFBSSxLQUFLLEtBQUssWUFBWTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzdDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBa0IsRUFBRSxLQUFhO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQztRQUU1QyxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxXQUFXO2dCQUNkLE9BQU8sbUJBQW1CLEtBQUssR0FBRyxDQUFDO1lBQ3JDLEtBQUssU0FBUztnQkFDWixPQUFPLG1CQUFtQixLQUFLLEdBQUcsQ0FBQztZQUNyQyxLQUFLLE9BQU87Z0JBQ1YsT0FBTyx5QkFBeUIsQ0FBQztZQUNuQztnQkFDRSxPQUFPLHlCQUF5QixDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWtCLEVBQUUsS0FBYTtRQUMvQyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXBDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1Qyw4REFBOEQ7UUFDOUQsT0FBTyxLQUFLLElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFrQixFQUFFLEtBQWE7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztZQUFFLE9BQU87UUFFL0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLElBQUksS0FBSyxLQUFLLFlBQVk7WUFBRSxPQUFPO1FBRW5DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25CLElBQUk7WUFDSixLQUFLO1lBQ0wsYUFBYSxFQUFFLFlBQVk7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFrQjtRQUM3QixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQzsrR0FoRVUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsMElBckZqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9EVCxtdUVBckRTLFlBQVksK0JBQUUsT0FBTzs7NEZBc0ZwQixnQkFBZ0I7a0JBekY1QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RUOzhCQWtDUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3RlcHBlck1ldGFkYXRhLCBTdGVwTWV0YWRhdGEsIFN0ZXBDaGFuZ2VFdmVudCwgU3RlcFN0YXR1cyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjaGVja21hcmssIGNsb3NlLCBlbGxpcHNlIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5hZGRJY29ucyh7IGNoZWNrbWFyaywgY2xvc2UsIGVsbGlwc2UgfSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1zdGVwcGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJzdGVwcGVyLWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3MuaG9yaXpvbnRhbF09XCJwcm9wcy5vcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICBbY2xhc3MudmVydGljYWxdPVwicHJvcHMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCdcIlxuICAgID5cbiAgICAgIEBmb3IgKHN0ZXAgb2YgcHJvcHMuc3RlcHM7IHRyYWNrIHN0ZXAudmFsdWU7IGxldCBpID0gJGluZGV4OyBsZXQgaXNMYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic3RlcFwiXG4gICAgICAgICAgW2NsYXNzLmN1cnJlbnRdPVwiZ2V0U3RlcFN0YXR1cyhzdGVwLCBpKSA9PT0gJ2N1cnJlbnQnXCJcbiAgICAgICAgICBbY2xhc3MuY29tcGxldGVkXT1cImdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdjb21wbGV0ZWQnXCJcbiAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwiZ2V0U3RlcFN0YXR1cyhzdGVwLCBpKSA9PT0gJ2Vycm9yJ1wiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInN0ZXAuZGlzYWJsZWRcIlxuICAgICAgICAgIFtjbGFzcy5jbGlja2FibGVdPVwiaXNTdGVwQ2xpY2thYmxlKHN0ZXAsIGkpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25TdGVwQ2xpY2soc3RlcCwgaSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1jaXJjbGVcIiBbc3R5bGUuLS1zdGVwLWNvbG9yXT1cImdldFN0ZXBDb2xvcihzdGVwLCBpKVwiPlxuICAgICAgICAgICAgICBAaWYgKGdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmtcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChnZXRTdGVwU3RhdHVzKHN0ZXAsIGkpID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHN0ZXAuaWNvbikge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJzdGVwLmljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChwcm9wcy5zaG93TnVtYmVycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXAtbnVtYmVyXCI+e3sgaSArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZWxsaXBzZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmICghaXNMYXN0ICYmIHByb3BzLmNvbm5lY3RvclN0eWxlICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RlcC1jb25uZWN0b3JcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5kYXNoZWRdPVwicHJvcHMuY29ubmVjdG9yU3R5bGUgPT09ICdkYXNoZWQnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuY29tcGxldGVkXT1cImdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdjb21wbGV0ZWQnXCJcbiAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWxhYmVsXCI+XG4gICAgICAgICAgICAgIHt7IGdldFN0ZXBMYWJlbChzdGVwKSB9fVxuICAgICAgICAgICAgICBAaWYgKHN0ZXAub3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4oT3B0aW9uYWwpPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoc3RlcC5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1kZXNjcmlwdGlvblwiPnt7IHN0ZXAuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3N0ZXBwZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1zdGVwcGVyXG4gKlxuICogQSBzdGVwcGVyIGNvbXBvbmVudCBmb3IgbXVsdGktc3RlcCBwcm9jZXNzZXMuXG4gKiBTdXBwb3J0cyBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBvcmllbnRhdGlvbnMuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIDx2YWwtc3RlcHBlciBbcHJvcHNdPVwie1xuICogICBzdGVwczogW1xuICogICAgIHsgdmFsdWU6ICdpbmZvJywgbGFiZWw6ICdQZXJzb25hbCBJbmZvJyB9LFxuICogICAgIHsgdmFsdWU6ICdhZGRyZXNzJywgbGFiZWw6ICdBZGRyZXNzJyB9LFxuICogICAgIHsgdmFsdWU6ICdwYXltZW50JywgbGFiZWw6ICdQYXltZW50JyB9LFxuICogICAgIHsgdmFsdWU6ICdjb25maXJtJywgbGFiZWw6ICdDb25maXJtJyB9XG4gKiAgIF0sXG4gKiAgIGN1cnJlbnRJbmRleDogMVxuICogfVwiIChzdGVwQ2hhbmdlKT1cIm9uU3RlcENoYW5nZSgkZXZlbnQpXCI+PC92YWwtc3RlcHBlcj5cbiAqXG4gKiBAZXhhbXBsZSBWZXJ0aWNhbCB3aXRoIGRlc2NyaXB0aW9uc1xuICogPHZhbC1zdGVwcGVyIFtwcm9wc109XCJ7XG4gKiAgIHN0ZXBzOiBbXG4gKiAgICAgeyB2YWx1ZTogJ3N0ZXAxJywgbGFiZWw6ICdTdGVwIDEnLCBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIGhlcmUnIH0sXG4gKiAgICAgeyB2YWx1ZTogJ3N0ZXAyJywgbGFiZWw6ICdTdGVwIDInLCBvcHRpb25hbDogdHJ1ZSB9XG4gKiAgIF0sXG4gKiAgIG9yaWVudGF0aW9uOiAndmVydGljYWwnLFxuICogICBjdXJyZW50SW5kZXg6IDBcbiAqIH1cIj48L3ZhbC1zdGVwcGVyPlxuICpcbiAqIEBpbnB1dCBwcm9wczogU3RlcHBlck1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHN0ZXBwZXJcbiAqIEBvdXRwdXQgc3RlcENoYW5nZTogU3RlcENoYW5nZUV2ZW50IC0gRW1pdHMgd2hlbiBzdGVwIGNoYW5nZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFN0ZXBwZXJDb21wb25lbnQge1xuICBASW5wdXQoKSBwcm9wczogU3RlcHBlck1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKSBzdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgZ2V0Q3VycmVudEluZGV4KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMucHJvcHMuY3VycmVudEluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmN1cnJlbnRJbmRleDtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvcHMuY3VycmVudFN0ZXApIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnN0ZXBzLmZpbmRJbmRleCgocykgPT4gcy52YWx1ZSA9PT0gdGhpcy5wcm9wcy5jdXJyZW50U3RlcCk7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgZ2V0U3RlcFN0YXR1cyhzdGVwOiBTdGVwTWV0YWRhdGEsIGluZGV4OiBudW1iZXIpOiBTdGVwU3RhdHVzIHtcbiAgICBpZiAoc3RlcC5zdGF0dXMpIHJldHVybiBzdGVwLnN0YXR1cztcblxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuZ2V0Q3VycmVudEluZGV4KCk7XG4gICAgaWYgKGluZGV4IDwgY3VycmVudEluZGV4KSByZXR1cm4gJ2NvbXBsZXRlZCc7XG4gICAgaWYgKGluZGV4ID09PSBjdXJyZW50SW5kZXgpIHJldHVybiAnY3VycmVudCc7XG4gICAgcmV0dXJuICdwZW5kaW5nJztcbiAgfVxuXG4gIGdldFN0ZXBDb2xvcihzdGVwOiBTdGVwTWV0YWRhdGEsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuZ2V0U3RlcFN0YXR1cyhzdGVwLCBpbmRleCk7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLnByb3BzLmNvbG9yIHx8ICdwcmltYXJ5JztcblxuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgO1xuICAgICAgY2FzZSAnY3VycmVudCc6XG4gICAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7Y29sb3J9KWA7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLWRhbmdlciknO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItbWVkaXVtKSc7XG4gICAgfVxuICB9XG5cbiAgaXNTdGVwQ2xpY2thYmxlKHN0ZXA6IFN0ZXBNZXRhZGF0YSwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmIChzdGVwLmRpc2FibGVkKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCF0aGlzLnByb3BzLmxpbmVhcikgcmV0dXJuIHRydWU7XG5cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmdldEN1cnJlbnRJbmRleCgpO1xuICAgIC8vIEluIGxpbmVhciBtb2RlLCBjYW4gb25seSBnbyB0byBjb21wbGV0ZWQgc3RlcHMgb3IgbmV4dCBzdGVwXG4gICAgcmV0dXJuIGluZGV4IDw9IGN1cnJlbnRJbmRleCB8fCAoc3RlcC5lZGl0YWJsZSAmJiBpbmRleCA8IGN1cnJlbnRJbmRleCk7XG4gIH1cblxuICBvblN0ZXBDbGljayhzdGVwOiBTdGVwTWV0YWRhdGEsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNTdGVwQ2xpY2thYmxlKHN0ZXAsIGluZGV4KSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICBpZiAoaW5kZXggPT09IGN1cnJlbnRJbmRleCkgcmV0dXJuO1xuXG4gICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoe1xuICAgICAgc3RlcCxcbiAgICAgIGluZGV4LFxuICAgICAgcHJldmlvdXNJbmRleDogY3VycmVudEluZGV4LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U3RlcExhYmVsKHN0ZXA6IFN0ZXBNZXRhZGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ZXAubGFiZWwgfHwgc3RlcC5jb250ZW50RmFsbGJhY2sgfHwgJyc7XG4gIH1cbn1cbiJdfQ==
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUUzRCxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7QUE2RHhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUF6RjdCO1FBMEZVLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFReEM7O1dBRUc7UUFDTSxVQUFLLEdBQTZCLEVBQUUsQ0FBQztRQUU5Qzs7V0FFRztRQUNILGtCQUFhLEdBQW9CLEVBQXFCLENBQUM7UUFFN0MsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO0tBa0Y1RDtJQWhGQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxD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YUFBYSxFQUFFLFlBQVk7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFrQjtRQUM3QixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQzsrR0FwR1UsZ0JBQWdCO21HQUFoQixnQkFBZ0IsaUxBckZqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9EVCxtdUVBckRTLFlBQVksK0JBQUUsT0FBTzs7NEZBc0ZwQixnQkFBZ0I7a0JBekY1QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RUOzhCQXdDUSxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQU9JLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVzZXRzJztcbmltcG9ydCB7IFN0ZXBwZXJNZXRhZGF0YSwgU3RlcE1ldGFkYXRhLCBTdGVwQ2hhbmdlRXZlbnQsIFN0ZXBTdGF0dXMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hlY2ttYXJrLCBjbG9zZSwgZWxsaXBzZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuYWRkSWNvbnMoeyBjaGVja21hcmssIGNsb3NlLCBlbGxpcHNlIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtc3RlcHBlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic3RlcHBlci1jb250YWluZXJcIlxuICAgICAgW2NsYXNzLmhvcml6b250YWxdPVwicmVzb2x2ZWRQcm9wcy5vcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICBbY2xhc3MudmVydGljYWxdPVwicmVzb2x2ZWRQcm9wcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJ1wiXG4gICAgPlxuICAgICAgQGZvciAoc3RlcCBvZiByZXNvbHZlZFByb3BzLnN0ZXBzOyB0cmFjayBzdGVwLnZhbHVlOyBsZXQgaSA9ICRpbmRleDsgbGV0IGlzTGFzdCA9ICRsYXN0KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInN0ZXBcIlxuICAgICAgICAgIFtjbGFzcy5jdXJyZW50XT1cImdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdjdXJyZW50J1wiXG4gICAgICAgICAgW2NsYXNzLmNvbXBsZXRlZF09XCJnZXRTdGVwU3RhdHVzKHN0ZXAsIGkpID09PSAnY29tcGxldGVkJ1wiXG4gICAgICAgICAgW2NsYXNzLmVycm9yXT1cImdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdlcnJvcidcIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJzdGVwLmRpc2FibGVkXCJcbiAgICAgICAgICBbY2xhc3MuY2xpY2thYmxlXT1cImlzU3RlcENsaWNrYWJsZShzdGVwLCBpKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3RlcENsaWNrKHN0ZXAsIGkpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWluZGljYXRvclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtY2lyY2xlXCIgW3N0eWxlLi0tc3RlcC1jb2xvcl09XCJnZXRTdGVwQ29sb3Ioc3RlcCwgaSlcIj5cbiAgICAgICAgICAgICAgQGlmIChnZXRTdGVwU3RhdHVzKHN0ZXAsIGkpID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoZ2V0U3RlcFN0YXR1cyhzdGVwLCBpKSA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChzdGVwLmljb24pIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwic3RlcC5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfSBAZWxzZSBpZiAocmVzb2x2ZWRQcm9wcy5zaG93TnVtYmVycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXAtbnVtYmVyXCI+e3sgaSArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZWxsaXBzZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmICghaXNMYXN0ICYmIHJlc29sdmVkUHJvcHMuY29ubmVjdG9yU3R5bGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdGVwLWNvbm5lY3RvclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmRhc2hlZF09XCJyZXNvbHZlZFByb3BzLmNvbm5lY3RvclN0eWxlID09PSAnZGFzaGVkJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmNvbXBsZXRlZF09XCJnZXRTdGVwU3RhdHVzKHN0ZXAsIGkpID09PSAnY29tcGxldGVkJ1wiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1sYWJlbFwiPlxuICAgICAgICAgICAgICB7eyBnZXRTdGVwTGFiZWwoc3RlcCkgfX1cbiAgICAgICAgICAgICAgQGlmIChzdGVwLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+KE9wdGlvbmFsKTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKHN0ZXAuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtZGVzY3JpcHRpb25cIj57eyBzdGVwLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9zdGVwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtc3RlcHBlclxuICpcbiAqIEEgc3RlcHBlciBjb21wb25lbnQgZm9yIG11bHRpLXN0ZXAgcHJvY2Vzc2VzLlxuICogU3VwcG9ydHMgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgb3JpZW50YXRpb25zLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiA8dmFsLXN0ZXBwZXIgW3Byb3BzXT1cIntcbiAqICAgc3RlcHM6IFtcbiAqICAgICB7IHZhbHVlOiAnaW5mbycsIGxhYmVsOiAnUGVyc29uYWwgSW5mbycgfSxcbiAqICAgICB7IHZhbHVlOiAnYWRkcmVzcycsIGxhYmVsOiAnQWRkcmVzcycgfSxcbiAqICAgICB7IHZhbHVlOiAncGF5bWVudCcsIGxhYmVsOiAnUGF5bWVudCcgfSxcbiAqICAgICB7IHZhbHVlOiAnY29uZmlybScsIGxhYmVsOiAnQ29uZmlybScgfVxuICogICBdLFxuICogICBjdXJyZW50SW5kZXg6IDFcbiAqIH1cIiAoc3RlcENoYW5nZSk9XCJvblN0ZXBDaGFuZ2UoJGV2ZW50KVwiPjwvdmFsLXN0ZXBwZXI+XG4gKlxuICogQGV4YW1wbGUgVmVydGljYWwgd2l0aCBkZXNjcmlwdGlvbnNcbiAqIDx2YWwtc3RlcHBlciBbcHJvcHNdPVwie1xuICogICBzdGVwczogW1xuICogICAgIHsgdmFsdWU6ICdzdGVwMScsIGxhYmVsOiAnU3RlcCAxJywgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbiBoZXJlJyB9LFxuICogICAgIHsgdmFsdWU6ICdzdGVwMicsIGxhYmVsOiAnU3RlcCAyJywgb3B0aW9uYWw6IHRydWUgfVxuICogICBdLFxuICogICBvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyxcbiAqICAgY3VycmVudEluZGV4OiAwXG4gKiB9XCI+PC92YWwtc3RlcHBlcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IFN0ZXBwZXJNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdGVwcGVyXG4gKiBAb3V0cHV0IHN0ZXBDaGFuZ2U6IFN0ZXBDaGFuZ2VFdmVudCAtIEVtaXRzIHdoZW4gc3RlcCBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGVwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBzdGVwcGVyIGNvbmZpZ3VyYXRpb25zXG4gICAqIHRoYXQgY2FuIGJlIHJlZ2lzdGVyZWQgYXQgYXBwIGxldmVsIHZpYSBwcm92aWRlVmFsdGVjaFByZXNldHMoKS5cbiAgICovXG4gIEBJbnB1dCgpIHByZXNldD86IHN0cmluZztcblxuICAvKipcbiAgICogU3RlcHBlciBjb25maWd1cmF0aW9uIG9iamVjdC4gVmFsdWVzIGhlcmUgb3ZlcnJpZGUgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPFN0ZXBwZXJNZXRhZGF0YT4gPSB7fTtcblxuICAvKipcbiAgICogUmVzb2x2ZWQgcHJvcHMgYWZ0ZXIgbWVyZ2luZyBwcmVzZXQgKyBleHBsaWNpdCBwcm9wcy5cbiAgICovXG4gIHJlc29sdmVkUHJvcHM6IFN0ZXBwZXJNZXRhZGF0YSA9IHt9IGFzIFN0ZXBwZXJNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgc3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcENoYW5nZUV2ZW50PigpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3ByZXNldCddIHx8IGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlUHJvcHMoKTogdm9pZCB7XG4gICAgY29uc3QgcHJlc2V0UHJvcHMgPSB0aGlzLnByZXNldFxuICAgICAgPyAodGhpcy5wcmVzZXRzLmdldCgnc3RlcHBlcicsIHRoaXMucHJlc2V0KSBhcyBQYXJ0aWFsPFN0ZXBwZXJNZXRhZGF0YT4pXG4gICAgICA6IHt9O1xuXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgU3RlcHBlck1ldGFkYXRhO1xuICB9XG5cbiAgZ2V0Q3VycmVudEluZGV4KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5jdXJyZW50SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcy5jdXJyZW50SW5kZXg7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMuY3VycmVudFN0ZXApIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMuc3RlcHM/LmZpbmRJbmRleCgocykgPT4gcy52YWx1ZSA9PT0gdGhpcy5yZXNvbHZlZFByb3BzLmN1cnJlbnRTdGVwKSA/PyAwO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGdldFN0ZXBTdGF0dXMoc3RlcDogU3RlcE1ldGFkYXRhLCBpbmRleDogbnVtYmVyKTogU3RlcFN0YXR1cyB7XG4gICAgaWYgKHN0ZXAuc3RhdHVzKSByZXR1cm4gc3RlcC5zdGF0dXM7XG5cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmdldEN1cnJlbnRJbmRleCgpO1xuICAgIGlmIChpbmRleCA8IGN1cnJlbnRJbmRleCkgcmV0dXJuICdjb21wbGV0ZWQnO1xuICAgIGlmIChpbmRleCA9PT0gY3VycmVudEluZGV4KSByZXR1cm4gJ2N1cnJlbnQnO1xuICAgIHJldHVybiAncGVuZGluZyc7XG4gIH1cblxuICBnZXRTdGVwQ29sb3Ioc3RlcDogU3RlcE1ldGFkYXRhLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLmdldFN0ZXBTdGF0dXMoc3RlcCwgaW5kZXgpO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5yZXNvbHZlZFByb3BzLmNvbG9yIHx8ICdwcmltYXJ5JztcblxuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgO1xuICAgICAgY2FzZSAnY3VycmVudCc6XG4gICAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7Y29sb3J9KWA7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLWRhbmdlciknO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItbWVkaXVtKSc7XG4gICAgfVxuICB9XG5cbiAgaXNTdGVwQ2xpY2thYmxlKHN0ZXA6IFN0ZXBNZXRhZGF0YSwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmIChzdGVwLmRpc2FibGVkKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCF0aGlzLnJlc29sdmVkUHJvcHMubGluZWFyKSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuZ2V0Q3VycmVudEluZGV4KCk7XG4gICAgcmV0dXJuIGluZGV4IDw9IGN1cnJlbnRJbmRleCB8fCAoc3RlcC5lZGl0YWJsZSAmJiBpbmRleCA8IGN1cnJlbnRJbmRleCk7XG4gIH1cblxuICBvblN0ZXBDbGljayhzdGVwOiBTdGVwTWV0YWRhdGEsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNTdGVwQ2xpY2thYmxlKHN0ZXAsIGluZGV4KSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICBpZiAoaW5kZXggPT09IGN1cnJlbnRJbmRleCkgcmV0dXJuO1xuXG4gICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoe1xuICAgICAgc3RlcCxcbiAgICAgIGluZGV4LFxuICAgICAgcHJldmlvdXNJbmRleDogY3VycmVudEluZGV4LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U3RlcExhYmVsKHN0ZXA6IFN0ZXBNZXRhZGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ZXAubGFiZWwgfHwgc3RlcC5jb250ZW50RmFsbGJhY2sgfHwgJyc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
1
|
+
import { Component, inject, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { IonTabBar, IonTabButton, IonIcon, IonLabel, IonBadge } from '@ionic/angular/standalone';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { PresetService } from '../../../services/presets';
|
|
4
5
|
import { addIcons } from 'ionicons';
|
|
5
6
|
import { home, settings, person, search, heart, star, notifications, mail, calendar, folder } from 'ionicons/icons';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
@@ -9,8 +10,12 @@ addIcons({ home, settings, person, search, heart, star, notifications, mail, cal
|
|
|
9
10
|
* val-tabs
|
|
10
11
|
*
|
|
11
12
|
* A tab bar component for navigation between views.
|
|
13
|
+
* Supports presets for reusable configurations.
|
|
12
14
|
*
|
|
13
|
-
* @example
|
|
15
|
+
* @example With preset (recommended):
|
|
16
|
+
* <val-tabs preset="main-nav" [props]="{ tabs: [...], selectedTab: 'home' }" (tabChange)="onTabChange($event)"></val-tabs>
|
|
17
|
+
*
|
|
18
|
+
* @example Static (backwards compatible):
|
|
14
19
|
* <val-tabs [props]="{
|
|
15
20
|
* tabs: [
|
|
16
21
|
* { value: 'home', label: 'Inicio', icon: 'home' },
|
|
@@ -20,13 +25,44 @@ addIcons({ home, settings, person, search, heart, star, notifications, mail, cal
|
|
|
20
25
|
* selectedTab: 'home'
|
|
21
26
|
* }" (tabChange)="onTabChange($event)"></val-tabs>
|
|
22
27
|
*
|
|
28
|
+
* @input preset: string - Name of preset to apply
|
|
23
29
|
* @input props: TabsMetadata - Configuration for the tabs
|
|
24
30
|
* @output tabChange: TabMetadata - Emits when a tab is selected
|
|
25
31
|
*/
|
|
26
32
|
export class TabsComponent {
|
|
27
33
|
constructor() {
|
|
34
|
+
this.presets = inject(PresetService);
|
|
35
|
+
/**
|
|
36
|
+
* Tabs configuration object. Values here override preset values.
|
|
37
|
+
*/
|
|
38
|
+
this.props = {};
|
|
39
|
+
/**
|
|
40
|
+
* Resolved props after merging preset + explicit props.
|
|
41
|
+
*/
|
|
42
|
+
this.resolvedProps = {};
|
|
28
43
|
this.tabChange = new EventEmitter();
|
|
29
44
|
}
|
|
45
|
+
ngOnInit() {
|
|
46
|
+
this.resolveProps();
|
|
47
|
+
}
|
|
48
|
+
ngOnChanges(changes) {
|
|
49
|
+
if (changes['preset'] || changes['props']) {
|
|
50
|
+
this.resolveProps();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Merge preset configuration with explicit props.
|
|
55
|
+
* Explicit props take precedence over preset values.
|
|
56
|
+
*/
|
|
57
|
+
resolveProps() {
|
|
58
|
+
const presetProps = this.preset
|
|
59
|
+
? this.presets.get('tabs', this.preset)
|
|
60
|
+
: {};
|
|
61
|
+
this.resolvedProps = {
|
|
62
|
+
...presetProps,
|
|
63
|
+
...this.props,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
30
66
|
onTabClick(tab) {
|
|
31
67
|
if (!tab.disabled) {
|
|
32
68
|
this.tabChange.emit(tab);
|
|
@@ -36,24 +72,24 @@ export class TabsComponent {
|
|
|
36
72
|
return tab.label || tab.contentFallback || '';
|
|
37
73
|
}
|
|
38
74
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TabsComponent, isStandalone: true, selector: "val-tabs", inputs: { props: "props" }, outputs: { tabChange: "tabChange" }, ngImport: i0, template: `
|
|
75
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TabsComponent, isStandalone: true, selector: "val-tabs", inputs: { preset: "preset", props: "props" }, outputs: { tabChange: "tabChange" }, usesOnChanges: true, ngImport: i0, template: `
|
|
40
76
|
<ion-tab-bar
|
|
41
|
-
[color]="
|
|
42
|
-
[mode]="
|
|
43
|
-
[translucent]="
|
|
44
|
-
[selectedTab]="
|
|
77
|
+
[color]="resolvedProps.color"
|
|
78
|
+
[mode]="resolvedProps.mode"
|
|
79
|
+
[translucent]="resolvedProps.translucent ?? false"
|
|
80
|
+
[selectedTab]="resolvedProps.selectedTab || resolvedProps.tabs?.[0]?.value"
|
|
45
81
|
>
|
|
46
|
-
@for (tab of
|
|
82
|
+
@for (tab of resolvedProps.tabs; track tab.value) {
|
|
47
83
|
<ion-tab-button
|
|
48
84
|
[tab]="tab.value"
|
|
49
85
|
[disabled]="tab.disabled"
|
|
50
|
-
[layout]="
|
|
86
|
+
[layout]="resolvedProps.layout || 'icon-top'"
|
|
51
87
|
(click)="onTabClick(tab)"
|
|
52
88
|
>
|
|
53
|
-
@if (tab.icon &&
|
|
89
|
+
@if (tab.icon && resolvedProps.layout !== 'icon-hide') {
|
|
54
90
|
<ion-icon [name]="tab.icon"></ion-icon>
|
|
55
91
|
}
|
|
56
|
-
@if (getTabLabel(tab) &&
|
|
92
|
+
@if (getTabLabel(tab) && resolvedProps.layout !== 'label-hide') {
|
|
57
93
|
<ion-label>{{ getTabLabel(tab) }}</ion-label>
|
|
58
94
|
}
|
|
59
95
|
@if (tab.badge) {
|
|
@@ -68,22 +104,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
68
104
|
type: Component,
|
|
69
105
|
args: [{ selector: 'val-tabs', standalone: true, imports: [CommonModule, IonTabBar, IonTabButton, IonIcon, IonLabel, IonBadge], template: `
|
|
70
106
|
<ion-tab-bar
|
|
71
|
-
[color]="
|
|
72
|
-
[mode]="
|
|
73
|
-
[translucent]="
|
|
74
|
-
[selectedTab]="
|
|
107
|
+
[color]="resolvedProps.color"
|
|
108
|
+
[mode]="resolvedProps.mode"
|
|
109
|
+
[translucent]="resolvedProps.translucent ?? false"
|
|
110
|
+
[selectedTab]="resolvedProps.selectedTab || resolvedProps.tabs?.[0]?.value"
|
|
75
111
|
>
|
|
76
|
-
@for (tab of
|
|
112
|
+
@for (tab of resolvedProps.tabs; track tab.value) {
|
|
77
113
|
<ion-tab-button
|
|
78
114
|
[tab]="tab.value"
|
|
79
115
|
[disabled]="tab.disabled"
|
|
80
|
-
[layout]="
|
|
116
|
+
[layout]="resolvedProps.layout || 'icon-top'"
|
|
81
117
|
(click)="onTabClick(tab)"
|
|
82
118
|
>
|
|
83
|
-
@if (tab.icon &&
|
|
119
|
+
@if (tab.icon && resolvedProps.layout !== 'icon-hide') {
|
|
84
120
|
<ion-icon [name]="tab.icon"></ion-icon>
|
|
85
121
|
}
|
|
86
|
-
@if (getTabLabel(tab) &&
|
|
122
|
+
@if (getTabLabel(tab) && resolvedProps.layout !== 'label-hide') {
|
|
87
123
|
<ion-label>{{ getTabLabel(tab) }}</ion-label>
|
|
88
124
|
}
|
|
89
125
|
@if (tab.badge) {
|
|
@@ -93,9 +129,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
93
129
|
}
|
|
94
130
|
</ion-tab-bar>
|
|
95
131
|
`, styles: [":host{display:block}ion-tab-bar{--background: var(--ion-background-color);--border: 1px solid var(--ion-color-light-shade);border-radius:0}ion-tab-button{--color: var(--ion-color-medium);--color-selected: var(--ion-color-primary);--padding-top: 8px;--padding-bottom: 8px}ion-tab-button ion-icon{font-size:22px}ion-tab-button ion-label{font-size:12px;font-weight:500;text-transform:none}ion-tab-button ion-badge{position:absolute;top:4px;right:calc(50% - 20px);font-size:10px;padding:2px 6px;min-width:16px}\n"] }]
|
|
96
|
-
}], propDecorators: {
|
|
132
|
+
}], propDecorators: { preset: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}], props: [{
|
|
97
135
|
type: Input
|
|
98
136
|
}], tabChange: [{
|
|
99
137
|
type: Output
|
|
100
138
|
}] } });
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3RhYnMvdGFicy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXBILFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFtQ2pHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUF4RDFCO1FBeURVLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFXeEM7O1dBRUc7UUFDTSxVQUFLLEdBQTBCLEVBQUUsQ0FBQztRQUUzQzs7V0FFRztRQUNILGtCQUFhLEdBQWlCLEVBQWtCLENBQUM7UUFFdkMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7S0FvQ3ZEO0lBbENDLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNO1lBQzdCLENBQUMsQ0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBMkI7WUFDbEUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsR0FBRyxXQUFXO1lBQ2QsR0FBRyxJQUFJLENBQUMsS0FBSztTQUNFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFnQjtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQWdCO1FBQzFCLE9BQU8sR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztJQUNoRCxDQUFDOytHQXpEVSxhQUFhO21HQUFiLGFBQWEsNEtBcERkOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCVCxxa0JBM0JTLFlBQVksK0JBQUUsU0FBUyxpSEFBRSxZQUFZLDJKQUFFLE9BQU8sMkpBQUUsUUFBUSw2RkFBRSxRQUFROzs0RkFxRGpFLGFBQWE7a0JBeER6QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxZQUNuRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQlQ7OEJBb0NRLE1BQU07c0JBQWQsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBT0ksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25UYWJCYXIsIElvblRhYkJ1dHRvbiwgSW9uSWNvbiwgSW9uTGFiZWwsIElvbkJhZGdlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgVGFic01ldGFkYXRhLCBUYWJNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBob21lLCBzZXR0aW5ncywgcGVyc29uLCBzZWFyY2gsIGhlYXJ0LCBzdGFyLCBub3RpZmljYXRpb25zLCBtYWlsLCBjYWxlbmRhciwgZm9sZGVyIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5hZGRJY29ucyh7IGhvbWUsIHNldHRpbmdzLCBwZXJzb24sIHNlYXJjaCwgaGVhcnQsIHN0YXIsIG5vdGlmaWNhdGlvbnMsIG1haWwsIGNhbGVuZGFyLCBmb2xkZXIgfSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC10YWJzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uVGFiQmFyLCBJb25UYWJCdXR0b24sIElvbkljb24sIElvbkxhYmVsLCBJb25CYWRnZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi10YWItYmFyXG4gICAgICBbY29sb3JdPVwicmVzb2x2ZWRQcm9wcy5jb2xvclwiXG4gICAgICBbbW9kZV09XCJyZXNvbHZlZFByb3BzLm1vZGVcIlxuICAgICAgW3RyYW5zbHVjZW50XT1cInJlc29sdmVkUHJvcHMudHJhbnNsdWNlbnQgPz8gZmFsc2VcIlxuICAgICAgW3NlbGVjdGVkVGFiXT1cInJlc29sdmVkUHJvcHMuc2VsZWN0ZWRUYWIgfHwgcmVzb2x2ZWRQcm9wcy50YWJzPy5bMF0/LnZhbHVlXCJcbiAgICA+XG4gICAgICBAZm9yICh0YWIgb2YgcmVzb2x2ZWRQcm9wcy50YWJzOyB0cmFjayB0YWIudmFsdWUpIHtcbiAgICAgICAgPGlvbi10YWItYnV0dG9uXG4gICAgICAgICAgW3RhYl09XCJ0YWIudmFsdWVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxuICAgICAgICAgIFtsYXlvdXRdPVwicmVzb2x2ZWRQcm9wcy5sYXlvdXQgfHwgJ2ljb24tdG9wJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVGFiQ2xpY2sodGFiKVwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHRhYi5pY29uICYmIHJlc29sdmVkUHJvcHMubGF5b3V0ICE9PSAnaWNvbi1oaWRlJykge1xuICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInRhYi5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChnZXRUYWJMYWJlbCh0YWIpICYmIHJlc29sdmVkUHJvcHMubGF5b3V0ICE9PSAnbGFiZWwtaGlkZScpIHtcbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgZ2V0VGFiTGFiZWwodGFiKSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHRhYi5iYWRnZSkge1xuICAgICAgICAgICAgPGlvbi1iYWRnZSBbY29sb3JdPVwidGFiLmJhZGdlQ29sb3IgfHwgJ2RhbmdlcidcIj57eyB0YWIuYmFkZ2UgfX08L2lvbi1iYWRnZT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLXRhYi1idXR0b24+XG4gICAgICB9XG4gICAgPC9pb24tdGFiLWJhcj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vdGFicy5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXRhYnNcbiAqXG4gKiBBIHRhYiBiYXIgY29tcG9uZW50IGZvciBuYXZpZ2F0aW9uIGJldHdlZW4gdmlld3MuXG4gKiBTdXBwb3J0cyBwcmVzZXRzIGZvciByZXVzYWJsZSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldCAocmVjb21tZW5kZWQpOlxuICogPHZhbC10YWJzIHByZXNldD1cIm1haW4tbmF2XCIgW3Byb3BzXT1cInsgdGFiczogWy4uLl0sIHNlbGVjdGVkVGFiOiAnaG9tZScgfVwiICh0YWJDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiPjwvdmFsLXRhYnM+XG4gKlxuICogQGV4YW1wbGUgU3RhdGljIChiYWNrd2FyZHMgY29tcGF0aWJsZSk6XG4gKiA8dmFsLXRhYnMgW3Byb3BzXT1cIntcbiAqICAgdGFiczogW1xuICogICAgIHsgdmFsdWU6ICdob21lJywgbGFiZWw6ICdJbmljaW8nLCBpY29uOiAnaG9tZScgfSxcbiAqICAgICB7IHZhbHVlOiAnc2VhcmNoJywgbGFiZWw6ICdCdXNjYXInLCBpY29uOiAnc2VhcmNoJyB9LFxuICogICAgIHsgdmFsdWU6ICdwcm9maWxlJywgbGFiZWw6ICdQZXJmaWwnLCBpY29uOiAncGVyc29uJyB9XG4gKiAgIF0sXG4gKiAgIHNlbGVjdGVkVGFiOiAnaG9tZSdcbiAqIH1cIiAodGFiQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIj48L3ZhbC10YWJzPlxuICpcbiAqIEBpbnB1dCBwcmVzZXQ6IHN0cmluZyAtIE5hbWUgb2YgcHJlc2V0IHRvIGFwcGx5XG4gKiBAaW5wdXQgcHJvcHM6IFRhYnNNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB0YWJzXG4gKiBAb3V0cHV0IHRhYkNoYW5nZTogVGFiTWV0YWRhdGEgLSBFbWl0cyB3aGVuIGEgdGFiIGlzIHNlbGVjdGVkXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSB0YWJzIGNvbmZpZ3VyYXRpb25zXG4gICAqIHRoYXQgY2FuIGJlIHJlZ2lzdGVyZWQgYXQgYXBwIGxldmVsIHZpYSBwcm92aWRlVmFsdGVjaFByZXNldHMoKS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogPHZhbC10YWJzIHByZXNldD1cIm1haW4tbmF2XCIgW3Byb3BzXT1cInsgdGFiczogWy4uLl0gfVwiPjwvdmFsLXRhYnM+XG4gICAqL1xuICBASW5wdXQoKSBwcmVzZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhYnMgY29uZmlndXJhdGlvbiBvYmplY3QuIFZhbHVlcyBoZXJlIG92ZXJyaWRlIHByZXNldCB2YWx1ZXMuXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFydGlhbDxUYWJzTWV0YWRhdGE+ID0ge307XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIHByb3BzIGFmdGVyIG1lcmdpbmcgcHJlc2V0ICsgZXhwbGljaXQgcHJvcHMuXG4gICAqL1xuICByZXNvbHZlZFByb3BzOiBUYWJzTWV0YWRhdGEgPSB7fSBhcyBUYWJzTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIHRhYkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGFiTWV0YWRhdGE+KCk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgcHJlc2V0IGNvbmZpZ3VyYXRpb24gd2l0aCBleHBsaWNpdCBwcm9wcy5cbiAgICogRXhwbGljaXQgcHJvcHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVByb3BzKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXNldFByb3BzID0gdGhpcy5wcmVzZXRcbiAgICAgID8gKHRoaXMucHJlc2V0cy5nZXQoJ3RhYnMnLCB0aGlzLnByZXNldCkgYXMgUGFydGlhbDxUYWJzTWV0YWRhdGE+KVxuICAgICAgOiB7fTtcblxuICAgIHRoaXMucmVzb2x2ZWRQcm9wcyA9IHtcbiAgICAgIC4uLnByZXNldFByb3BzLFxuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICB9IGFzIFRhYnNNZXRhZGF0YTtcbiAgfVxuXG4gIG9uVGFiQ2xpY2sodGFiOiBUYWJNZXRhZGF0YSk6IHZvaWQge1xuICAgIGlmICghdGFiLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnRhYkNoYW5nZS5lbWl0KHRhYik7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGFiTGFiZWwodGFiOiBUYWJNZXRhZGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRhYi5sYWJlbCB8fCB0YWIuY29udGVudEZhbGxiYWNrIHx8ICcnO1xuICB9XG59XG4iXX0=
|