@tolle_/tolle-ui 0.0.1-beta
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/README.md +35 -0
- package/esm2022/lib/accordion-item.component.mjs +78 -0
- package/esm2022/lib/accordion.component.mjs +60 -0
- package/esm2022/lib/badge.component.mjs +76 -0
- package/esm2022/lib/button-group.component.mjs +25 -0
- package/esm2022/lib/button.component.mjs +70 -0
- package/esm2022/lib/calendar.component.mjs +315 -0
- package/esm2022/lib/card.component.mjs +94 -0
- package/esm2022/lib/checkbox.component.mjs +100 -0
- package/esm2022/lib/data-table.component.mjs +332 -0
- package/esm2022/lib/date-picker.component.mjs +232 -0
- package/esm2022/lib/date-range-picker.component.mjs +208 -0
- package/esm2022/lib/input.component.mjs +134 -0
- package/esm2022/lib/masked-input.component.mjs +179 -0
- package/esm2022/lib/modal-ref.mjs +31 -0
- package/esm2022/lib/modal-stack.service.mjs +26 -0
- package/esm2022/lib/modal.component.mjs +98 -0
- package/esm2022/lib/modal.mjs +27 -0
- package/esm2022/lib/modal.service.mjs +65 -0
- package/esm2022/lib/multi-select.component.mjs +231 -0
- package/esm2022/lib/pagination.component.mjs +279 -0
- package/esm2022/lib/range-calendar.component.mjs +285 -0
- package/esm2022/lib/select-group.component.mjs +28 -0
- package/esm2022/lib/select-item.component.mjs +84 -0
- package/esm2022/lib/select-separator.component.mjs +24 -0
- package/esm2022/lib/select.component.mjs +261 -0
- package/esm2022/lib/select.service.mjs +21 -0
- package/esm2022/lib/skeleton.component.mjs +34 -0
- package/esm2022/lib/switch.component.mjs +133 -0
- package/esm2022/lib/toast.service.mjs +59 -0
- package/esm2022/lib/tolle-cell.directive.mjs +22 -0
- package/esm2022/lib/tolle-config.mjs +11 -0
- package/esm2022/lib/tooltip.directive.mjs +71 -0
- package/esm2022/lib/types/date-range.mjs +2 -0
- package/esm2022/lib/utils/cn.mjs +6 -0
- package/esm2022/public-api.mjs +36 -0
- package/esm2022/tolle_-tolle-ui.mjs +5 -0
- package/fesm2022/tolle_-tolle-ui.mjs +3553 -0
- package/fesm2022/tolle_-tolle-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/accordion-item.component.d.ts +13 -0
- package/lib/accordion.component.d.ts +14 -0
- package/lib/badge.component.d.ts +14 -0
- package/lib/button-group.component.d.ts +8 -0
- package/lib/button.component.d.ts +16 -0
- package/lib/calendar.component.d.ts +35 -0
- package/lib/card.component.d.ts +32 -0
- package/lib/checkbox.component.d.ts +23 -0
- package/lib/data-table.component.d.ts +45 -0
- package/lib/date-picker.component.d.ts +35 -0
- package/lib/date-range-picker.component.d.ts +36 -0
- package/lib/input.component.d.ts +27 -0
- package/lib/masked-input.component.d.ts +36 -0
- package/lib/modal-ref.d.ts +16 -0
- package/lib/modal-stack.service.d.ts +12 -0
- package/lib/modal.component.d.ts +19 -0
- package/lib/modal.d.ts +29 -0
- package/lib/modal.service.d.ts +18 -0
- package/lib/multi-select.component.d.ts +47 -0
- package/lib/pagination.component.d.ts +36 -0
- package/lib/range-calendar.component.d.ts +37 -0
- package/lib/select-group.component.d.ts +8 -0
- package/lib/select-item.component.d.ts +18 -0
- package/lib/select-separator.component.d.ts +8 -0
- package/lib/select.component.d.ts +45 -0
- package/lib/select.service.d.ts +10 -0
- package/lib/skeleton.component.d.ts +10 -0
- package/lib/switch.component.d.ts +39 -0
- package/lib/toast.service.d.ts +24 -0
- package/lib/tolle-cell.directive.d.ts +9 -0
- package/lib/tolle-config.d.ts +9 -0
- package/lib/tooltip.directive.d.ts +15 -0
- package/lib/types/date-range.d.ts +4 -0
- package/lib/utils/cn.d.ts +2 -0
- package/package.json +32 -0
- package/public-api.d.ts +32 -0
- package/theme.css +211 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { Component, Input, forwardRef, ViewChild, HostListener } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
4
|
+
import { computePosition, flip, shift, offset, autoUpdate } from '@floating-ui/dom';
|
|
5
|
+
import { cn } from './utils/cn';
|
|
6
|
+
import { RangeCalendarComponent } from './range-calendar.component';
|
|
7
|
+
import { InputComponent } from '@tolle/ui/input.component';
|
|
8
|
+
import { format } from 'date-fns';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common";
|
|
11
|
+
import * as i2 from "@angular/forms";
|
|
12
|
+
export class DateRangePickerComponent {
|
|
13
|
+
cdr;
|
|
14
|
+
disabled = false;
|
|
15
|
+
placeholder = 'Pick a date range';
|
|
16
|
+
class = '';
|
|
17
|
+
disablePastDates = false;
|
|
18
|
+
// Standardized Sizes
|
|
19
|
+
size = 'default';
|
|
20
|
+
triggerContainer;
|
|
21
|
+
popover;
|
|
22
|
+
value = { start: null, end: null };
|
|
23
|
+
isOpen = false;
|
|
24
|
+
cleanupAutoUpdate;
|
|
25
|
+
constructor(cdr) {
|
|
26
|
+
this.cdr = cdr;
|
|
27
|
+
}
|
|
28
|
+
get displayValue() {
|
|
29
|
+
if (!this.value.start)
|
|
30
|
+
return '';
|
|
31
|
+
const startStr = format(this.value.start, 'MMM dd, yyyy'); // Using date-fns format
|
|
32
|
+
if (!this.value.end)
|
|
33
|
+
return startStr;
|
|
34
|
+
const endStr = format(this.value.end, 'MMM dd, yyyy');
|
|
35
|
+
return `${startStr} - ${endStr}`;
|
|
36
|
+
}
|
|
37
|
+
onCalendarSelect(range) {
|
|
38
|
+
this.value = range;
|
|
39
|
+
this.onChange(this.value);
|
|
40
|
+
// Close only if range is complete
|
|
41
|
+
if (range.start && range.end) {
|
|
42
|
+
this.onChange(this.value);
|
|
43
|
+
// Small delay for UX
|
|
44
|
+
setTimeout(() => this.close(), 150);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
togglePopover(event) {
|
|
48
|
+
if (this.disabled)
|
|
49
|
+
return;
|
|
50
|
+
this.isOpen ? this.close() : this.open();
|
|
51
|
+
}
|
|
52
|
+
open() {
|
|
53
|
+
this.isOpen = true;
|
|
54
|
+
setTimeout(() => this.updatePosition());
|
|
55
|
+
}
|
|
56
|
+
close() {
|
|
57
|
+
this.isOpen = false;
|
|
58
|
+
if (this.cleanupAutoUpdate)
|
|
59
|
+
this.cleanupAutoUpdate();
|
|
60
|
+
}
|
|
61
|
+
clear(event) {
|
|
62
|
+
event.stopPropagation(); // Stop button click
|
|
63
|
+
this.value = { start: null, end: null };
|
|
64
|
+
this.onChange(this.value);
|
|
65
|
+
}
|
|
66
|
+
// --- Floating UI Positioning ---
|
|
67
|
+
updatePosition() {
|
|
68
|
+
if (!this.triggerContainer || !this.popover)
|
|
69
|
+
return;
|
|
70
|
+
this.cleanupAutoUpdate = autoUpdate(this.triggerContainer.nativeElement, this.popover.nativeElement, () => {
|
|
71
|
+
computePosition(this.triggerContainer.nativeElement, this.popover.nativeElement, {
|
|
72
|
+
placement: 'bottom-start', // Aligned to the right where the icon is
|
|
73
|
+
middleware: [offset(4), flip(), shift({ padding: 8 })],
|
|
74
|
+
}).then(({ x, y }) => {
|
|
75
|
+
Object.assign(this.popover.nativeElement.style, {
|
|
76
|
+
left: `${x}px`,
|
|
77
|
+
top: `${y}px`,
|
|
78
|
+
visibility: 'visible',
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
onClickOutside(event) {
|
|
84
|
+
if (this.isOpen &&
|
|
85
|
+
!this.triggerContainer.nativeElement.contains(event.target) &&
|
|
86
|
+
!this.popover.nativeElement.contains(event.target)) {
|
|
87
|
+
this.close();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// CVA
|
|
91
|
+
onChange = () => { };
|
|
92
|
+
onTouched = () => { };
|
|
93
|
+
writeValue(val) {
|
|
94
|
+
if (val) {
|
|
95
|
+
this.value = { ...val };
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
this.value = { start: null, end: null };
|
|
99
|
+
}
|
|
100
|
+
this.cdr.markForCheck();
|
|
101
|
+
}
|
|
102
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
103
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
104
|
+
setDisabledState(isDisabled) { this.disabled = isDisabled; }
|
|
105
|
+
cn = cn;
|
|
106
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateRangePickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
107
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DateRangePickerComponent, isStandalone: true, selector: "tolle-date-range-picker", inputs: { disabled: "disabled", placeholder: "placeholder", class: "class", disablePastDates: "disablePastDates", size: "size" }, host: { listeners: { "document:mousedown": "onClickOutside($event)" } }, providers: [
|
|
108
|
+
{
|
|
109
|
+
provide: NG_VALUE_ACCESSOR,
|
|
110
|
+
useExisting: forwardRef(() => DateRangePickerComponent),
|
|
111
|
+
multi: true
|
|
112
|
+
}
|
|
113
|
+
], viewQueries: [{ propertyName: "triggerContainer", first: true, predicate: ["triggerContainer"], descendants: true }, { propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: `
|
|
114
|
+
<div class="relative w-full" #triggerContainer>
|
|
115
|
+
<tolle-input [placeholder]="placeholder" [disabled]="disabled" [ngModel]="displayValue">
|
|
116
|
+
<div suffix class="flex items-center gap-1.5 cursor-pointer">
|
|
117
|
+
<i
|
|
118
|
+
*ngIf="(value.start || value.end) && !disabled"
|
|
119
|
+
(click)="clear($event)"
|
|
120
|
+
class="ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors"
|
|
121
|
+
></i>
|
|
122
|
+
|
|
123
|
+
<i
|
|
124
|
+
(click)="togglePopover($event)"
|
|
125
|
+
class="ri-calendar-line cursor-pointer text-muted-foreground hover:text-primary transition-colors"
|
|
126
|
+
></i>
|
|
127
|
+
</div>
|
|
128
|
+
</tolle-input>
|
|
129
|
+
<div
|
|
130
|
+
#popover
|
|
131
|
+
*ngIf="isOpen"
|
|
132
|
+
class="absolute z-50 min-w-72"
|
|
133
|
+
style="visibility: hidden; top: 0; left: 0;"
|
|
134
|
+
>
|
|
135
|
+
<tolle-range-calendar
|
|
136
|
+
[ngModel]="value"
|
|
137
|
+
(rangeSelect)="onCalendarSelect($event)"
|
|
138
|
+
[disablePastDates]="disablePastDates"
|
|
139
|
+
></tolle-range-calendar>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: RangeCalendarComponent, selector: "tolle-range-calendar", inputs: ["class", "disablePastDates"], outputs: ["rangeSelect"] }, { kind: "component", type: InputComponent, selector: "tolle-input", inputs: ["type", "placeholder", "disabled", "error", "size", "containerClass", "class"] }] });
|
|
143
|
+
}
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
145
|
+
type: Component,
|
|
146
|
+
args: [{
|
|
147
|
+
selector: 'tolle-date-range-picker',
|
|
148
|
+
standalone: true,
|
|
149
|
+
imports: [CommonModule, FormsModule, RangeCalendarComponent, InputComponent],
|
|
150
|
+
providers: [
|
|
151
|
+
{
|
|
152
|
+
provide: NG_VALUE_ACCESSOR,
|
|
153
|
+
useExisting: forwardRef(() => DateRangePickerComponent),
|
|
154
|
+
multi: true
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
template: `
|
|
158
|
+
<div class="relative w-full" #triggerContainer>
|
|
159
|
+
<tolle-input [placeholder]="placeholder" [disabled]="disabled" [ngModel]="displayValue">
|
|
160
|
+
<div suffix class="flex items-center gap-1.5 cursor-pointer">
|
|
161
|
+
<i
|
|
162
|
+
*ngIf="(value.start || value.end) && !disabled"
|
|
163
|
+
(click)="clear($event)"
|
|
164
|
+
class="ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors"
|
|
165
|
+
></i>
|
|
166
|
+
|
|
167
|
+
<i
|
|
168
|
+
(click)="togglePopover($event)"
|
|
169
|
+
class="ri-calendar-line cursor-pointer text-muted-foreground hover:text-primary transition-colors"
|
|
170
|
+
></i>
|
|
171
|
+
</div>
|
|
172
|
+
</tolle-input>
|
|
173
|
+
<div
|
|
174
|
+
#popover
|
|
175
|
+
*ngIf="isOpen"
|
|
176
|
+
class="absolute z-50 min-w-72"
|
|
177
|
+
style="visibility: hidden; top: 0; left: 0;"
|
|
178
|
+
>
|
|
179
|
+
<tolle-range-calendar
|
|
180
|
+
[ngModel]="value"
|
|
181
|
+
(rangeSelect)="onCalendarSelect($event)"
|
|
182
|
+
[disablePastDates]="disablePastDates"
|
|
183
|
+
></tolle-range-calendar>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
`
|
|
187
|
+
}]
|
|
188
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { disabled: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], placeholder: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}], class: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}], disablePastDates: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}], size: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], triggerContainer: [{
|
|
199
|
+
type: ViewChild,
|
|
200
|
+
args: ['triggerContainer']
|
|
201
|
+
}], popover: [{
|
|
202
|
+
type: ViewChild,
|
|
203
|
+
args: ['popover']
|
|
204
|
+
}], onClickOutside: [{
|
|
205
|
+
type: HostListener,
|
|
206
|
+
args: ['document:mousedown', ['$event']]
|
|
207
|
+
}] } });
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFjLFNBQVMsRUFBRSxZQUFZLEVBQ2xFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQzs7OztBQTRDaEMsTUFBTSxPQUFPLHdCQUF3QjtJQWdCZjtJQWZYLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsV0FBVyxHQUFHLG1CQUFtQixDQUFDO0lBQ2xDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFFbEMscUJBQXFCO0lBQ1osSUFBSSxHQUFtQyxTQUFTLENBQUM7SUFFM0IsZ0JBQWdCLENBQWM7SUFDdkMsT0FBTyxDQUFjO0lBRTNDLEtBQUssR0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlDLE1BQU0sR0FBRyxL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QTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNQLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkEwRXBCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSG9zdExpc3RlbmVyLCBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tcHV0ZVBvc2l0aW9uLCBmbGlwLCBzaGlmdCwgb2Zmc2V0LCBhdXRvVXBkYXRlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuaW1wb3J0IHsgUmFuZ2VDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vcmFuZ2UtY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7RGF0ZVJhbmdlfSBmcm9tICdAdG9sbGUvdWkvdHlwZXMvZGF0ZS1yYW5nZSc7XG5pbXBvcnQge0lucHV0Q29tcG9uZW50fSBmcm9tICdAdG9sbGUvdWkvaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7Zm9ybWF0fSBmcm9tICdkYXRlLWZucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWRhdGUtcmFuZ2UtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJhbmdlQ2FsZW5kYXJDb21wb25lbnQsIElucHV0Q29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbFwiICN0cmlnZ2VyQ29udGFpbmVyPlxuICAgICAgPHRvbGxlLWlucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtuZ01vZGVsXT1cImRpc3BsYXlWYWx1ZVwiPlxuICAgICAgICA8ZGl2IHN1ZmZpeCBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgKm5nSWY9XCIodmFsdWUuc3RhcnQgfHwgdmFsdWUuZW5kKSAmJiAhZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJyaS1jbG9zZS1saW5lIGN1cnNvci1wb2ludGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgID48L2k+XG5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cInJpLWNhbGVuZGFyLWxpbmUgY3Vyc29yLXBvaW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RvbGxlLWlucHV0PlxuICAgICAgPGRpdlxuICAgICAgICAjcG9wb3ZlclxuICAgICAgICAqbmdJZj1cImlzT3BlblwiXG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgei01MCBtaW4tdy03MlwiXG4gICAgICAgIHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuOyB0b3A6IDA7IGxlZnQ6IDA7XCJcbiAgICAgID5cbiAgICAgICAgPHRvbGxlLXJhbmdlLWNhbGVuZGFyXG4gICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICAgIChyYW5nZVNlbGVjdCk9XCJvbkNhbGVuZGFyU2VsZWN0KCRldmVudClcIlxuICAgICAgICAgIFtkaXNhYmxlUGFzdERhdGVzXT1cImRpc2FibGVQYXN0RGF0ZXNcIlxuICAgICAgICA+PC90b2xsZS1yYW5nZS1jYWxlbmRhcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnUGljayBhIGRhdGUgcmFuZ2UnO1xuICBASW5wdXQoKSBjbGFzcyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlUGFzdERhdGVzID0gZmFsc2U7XG5cbiAgLy8gU3RhbmRhcmRpemVkIFNpemVzXG4gIEBJbnB1dCgpIHNpemU6ICd4cycgfCAnc20nIHwgJ2RlZmF1bHQnIHwgJ2xnJyA9ICdkZWZhdWx0JztcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQ29udGFpbmVyJykgdHJpZ2dlckNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BvcG92ZXInKSBwb3BvdmVyITogRWxlbWVudFJlZjtcblxuICB2YWx1ZTogRGF0ZVJhbmdlID0geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG4gIGlzT3BlbiA9IGZhbHNlO1xuICBjbGVhbnVwQXV0b1VwZGF0ZT86ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIGdldCBkaXNwbGF5VmFsdWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMudmFsdWUuc3RhcnQpIHJldHVybiAnJztcblxuICAgIGNvbnN0IHN0YXJ0U3RyID0gZm9ybWF0KHRoaXMudmFsdWUuc3RhcnQsICdNTU0gZGQsIHl5eXknKTsgLy8gVXNpbmcgZGF0ZS1mbnMgZm9ybWF0XG4gICAgaWYgKCF0aGlzLnZhbHVlLmVuZCkgcmV0dXJuIHN0YXJ0U3RyO1xuXG4gICAgY29uc3QgZW5kU3RyID0gZm9ybWF0KHRoaXMudmFsdWUuZW5kLCAnTU1NIGRkLCB5eXl5Jyk7XG4gICAgcmV0dXJuIGAke3N0YXJ0U3RyfSAtICR7ZW5kU3RyfWA7XG4gIH1cblxuICBvbkNhbGVuZGFyU2VsZWN0KHJhbmdlOiBEYXRlUmFuZ2UpIHtcbiAgICB0aGlzLnZhbHVlID0gcmFuZ2U7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcblxuICAgIC8vIENsb3NlIG9ubHkgaWYgcmFuZ2UgaXMgY29tcGxldGVcbiAgICBpZiAocmFuZ2Uuc3RhcnQgJiYgcmFuZ2UuZW5kKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgLy8gU21hbGwgZGVsYXkgZm9yIFVYXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xvc2UoKSwgMTUwKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVQb3BvdmVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLmlzT3BlbiA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xuICB9XG5cbiAgb3BlbigpIHtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVBvc2l0aW9uKCkpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSkgdGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSgpO1xuICB9XG5cbiAgY2xlYXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gU3RvcCBidXR0b24gY2xpY2tcbiAgICB0aGlzLnZhbHVlID0geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIC8vIC0tLSBGbG9hdGluZyBVSSBQb3NpdGlvbmluZyAtLS1cbiAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICBpZiAoIXRoaXMudHJpZ2dlckNvbnRhaW5lciB8fCAhdGhpcy5wb3BvdmVyKSByZXR1cm47XG5cbiAgICB0aGlzLmNsZWFudXBBdXRvVXBkYXRlID0gYXV0b1VwZGF0ZShcbiAgICAgIHRoaXMudHJpZ2dlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbXB1dGVQb3NpdGlvbih0aGlzLnRyaWdnZXJDb250YWluZXIubmF0aXZlRWxlbWVudCwgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLCAvLyBBbGlnbmVkIHRvIHRoZSByaWdodCB3aGVyZSB0aGUgaWNvbiBpc1xuICAgICAgICAgIG1pZGRsZXdhcmU6IFtvZmZzZXQoNCksIGZsaXAoKSwgc2hpZnQoeyBwYWRkaW5nOiA4IH0pXSxcbiAgICAgICAgfSkudGhlbigoeyB4LCB5IH0pID0+IHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMucG9wb3Zlci5uYXRpdmVFbGVtZW50LnN0eWxlLCB7XG4gICAgICAgICAgICBsZWZ0OiBgJHt4fXB4YCxcbiAgICAgICAgICAgIHRvcDogYCR7eX1weGAsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZScsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBvbkNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzT3BlbiAmJlxuICAgICAgIXRoaXMudHJpZ2dlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICF0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ1ZBXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbDogRGF0ZVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB7IC4uLnZhbCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
4
|
+
import { cn } from './utils/cn';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
export class InputComponent {
|
|
8
|
+
cdr;
|
|
9
|
+
type = 'text';
|
|
10
|
+
placeholder = '';
|
|
11
|
+
disabled = false;
|
|
12
|
+
error = false;
|
|
13
|
+
size = 'default';
|
|
14
|
+
containerClass = '';
|
|
15
|
+
class = '';
|
|
16
|
+
// Internal State
|
|
17
|
+
value = '';
|
|
18
|
+
// CVA Callbacks
|
|
19
|
+
onChange = () => { };
|
|
20
|
+
onTouched = () => { };
|
|
21
|
+
constructor(cdr) {
|
|
22
|
+
this.cdr = cdr;
|
|
23
|
+
}
|
|
24
|
+
// --- ControlValueAccessor Implementation ---
|
|
25
|
+
writeValue(value) {
|
|
26
|
+
this.value = value;
|
|
27
|
+
this.cdr.markForCheck();
|
|
28
|
+
}
|
|
29
|
+
registerOnChange(fn) {
|
|
30
|
+
this.onChange = fn;
|
|
31
|
+
}
|
|
32
|
+
registerOnTouched(fn) {
|
|
33
|
+
this.onTouched = fn;
|
|
34
|
+
}
|
|
35
|
+
setDisabledState(isDisabled) {
|
|
36
|
+
this.disabled = isDisabled;
|
|
37
|
+
this.cdr.markForCheck();
|
|
38
|
+
}
|
|
39
|
+
onInputChange(event) {
|
|
40
|
+
const val = event.target.value;
|
|
41
|
+
this.value = val;
|
|
42
|
+
this.onChange(val);
|
|
43
|
+
}
|
|
44
|
+
// --- Styling Logic ---
|
|
45
|
+
cn = cn;
|
|
46
|
+
get computedInputClass() {
|
|
47
|
+
return cn("flex w-full rounded-md border border-input bg-background text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring focus-visible:ring-ring focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50 transition-all", 'disabled:opacity-50 shadow-sm transition-shadow', this.size === 'xs' && "h-8 text-xs px-2", this.size === 'sm' && "h-9 px-3", this.size === 'default' && "h-10 px-3", this.size === 'lg' && "h-11 px-4 text-base", "group-has-[[prefix]]:pl-10 group-has-[[suffix]]:pr-10", this.size === 'xs' && "group-has-[[prefix]]:pl-8 group-has-[[suffix]]:pr-8", this.error && "border-destructive focus-visible:ring-destructive", this.class);
|
|
48
|
+
}
|
|
49
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InputComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: InputComponent, isStandalone: true, selector: "tolle-input", inputs: { type: "type", placeholder: "placeholder", disabled: "disabled", error: "error", size: "size", containerClass: "containerClass", class: "class" }, providers: [
|
|
51
|
+
{
|
|
52
|
+
provide: NG_VALUE_ACCESSOR,
|
|
53
|
+
useExisting: forwardRef(() => InputComponent),
|
|
54
|
+
multi: true
|
|
55
|
+
}
|
|
56
|
+
], ngImport: i0, template: `
|
|
57
|
+
<div [class]="cn('relative flex items-center w-full group', 'size-' + size, containerClass)">
|
|
58
|
+
|
|
59
|
+
<div class="absolute left-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
|
|
60
|
+
[class.left-2.5]="size === 'xs'">
|
|
61
|
+
<ng-content select="[prefix]"></ng-content>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<input
|
|
65
|
+
[type]="type"
|
|
66
|
+
[placeholder]="placeholder"
|
|
67
|
+
[disabled]="disabled"
|
|
68
|
+
[(ngModel)]="value"
|
|
69
|
+
(blur)="onTouched()"
|
|
70
|
+
(input)="onInputChange($event)"
|
|
71
|
+
[class]="computedInputClass"
|
|
72
|
+
/>
|
|
73
|
+
|
|
74
|
+
<div class="absolute right-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
|
|
75
|
+
[class.right-2.5]="size === 'xs'">
|
|
76
|
+
<ng-content select="[suffix]"></ng-content>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
80
|
+
}
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InputComponent, decorators: [{
|
|
82
|
+
type: Component,
|
|
83
|
+
args: [{
|
|
84
|
+
selector: 'tolle-input',
|
|
85
|
+
standalone: true,
|
|
86
|
+
imports: [CommonModule, FormsModule],
|
|
87
|
+
providers: [
|
|
88
|
+
{
|
|
89
|
+
provide: NG_VALUE_ACCESSOR,
|
|
90
|
+
useExisting: forwardRef(() => InputComponent),
|
|
91
|
+
multi: true
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
template: `
|
|
95
|
+
<div [class]="cn('relative flex items-center w-full group', 'size-' + size, containerClass)">
|
|
96
|
+
|
|
97
|
+
<div class="absolute left-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
|
|
98
|
+
[class.left-2.5]="size === 'xs'">
|
|
99
|
+
<ng-content select="[prefix]"></ng-content>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<input
|
|
103
|
+
[type]="type"
|
|
104
|
+
[placeholder]="placeholder"
|
|
105
|
+
[disabled]="disabled"
|
|
106
|
+
[(ngModel)]="value"
|
|
107
|
+
(blur)="onTouched()"
|
|
108
|
+
(input)="onInputChange($event)"
|
|
109
|
+
[class]="computedInputClass"
|
|
110
|
+
/>
|
|
111
|
+
|
|
112
|
+
<div class="absolute right-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
|
|
113
|
+
[class.right-2.5]="size === 'xs'">
|
|
114
|
+
<ng-content select="[suffix]"></ng-content>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
`,
|
|
118
|
+
}]
|
|
119
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { type: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], placeholder: [{
|
|
122
|
+
type: Input
|
|
123
|
+
}], disabled: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], error: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], size: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], containerClass: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], class: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}] } });
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFzQ2hDLE1BQU0sT0FBTyxjQUFjO0lBZ0JMO0lBZlgsSUFBSSxHQUFXLE1BQU0sQ0FBQztJQUN0QixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUN2QixJQUFJLEdBQW1DLFNBQVMsQ0FBQztJQUNqRCxjQUFjLEdBQVcsRUFBRSxDQUFDO0lBQzVCLEtBQUssR0FBVyxFQUFFLENBQUM7SUFFNUIsaUJBQWlCO0lBQ2pCLEtBQUssR0FBUSxFQUFFLENBQUM7SUFFaEIsZ0JBQWdCO0lBQ2hCLFFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDekIsU0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUUxQixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUFHLENBQUM7SUFFOUMsOENBQThDO0lBRTlDLFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFZO1FBQ3hCLE1BQU0sR0FBRyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCx3QkFBd0I7SUFDTCxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBRTNCLElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sRUFBRSxDQUNQLDRSQUE0UixFQUM1UixpREFBaUQsRUFDakQsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksa0JBQWtCLEVBQ3hDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLFVBQVUsRUFDaEMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksV0FBVyxFQUN0QyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxxQkFBcUIsRUFDM0MsdURBQXVELEVBQ3ZELElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLHFEQUFxRCxFQUMzRSxJQUFJLENBQUMsS0FBSyxJQUFJLG1EQUFtRCxFQUNqRSxJQUFJLENBQUMsS0FBSyxDQUNYLENBQUM7SUFDSixDQUFDO3dHQTVEVSxjQUFjOzRGQUFkLGNBQWMsc05BaENkO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwwQkFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQsMkRBL0JTLFlBQVksOEJBQUUsV0FBVzs7NEZBaUN4QixjQUFjO2tCQXBDMUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7b0JBQ3BDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUM7NEJBQzdDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQ7aUJBQ0Y7c0ZBRVUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbY2xhc3NdPVwiY24oJ3JlbGF0aXZlIGZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBncm91cCcsICdzaXplLScgKyBzaXplLCBjb250YWluZXJDbGFzcylcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGxlZnQtMyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgZ3JvdXAtZm9jdXMtd2l0aGluOnRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgIFtjbGFzcy5sZWZ0LTIuNV09XCJzaXplID09PSAneHMnXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtjbGFzc109XCJjb21wdXRlZElucHV0Q2xhc3NcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHJpZ2h0LTMgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGdyb3VwLWZvY3VzLXdpdGhpbjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICBbY2xhc3MucmlnaHQtMi41XT1cInNpemUgPT09ICd4cydcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3N1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9ICd0ZXh0JztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBlcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaXplOiAneHMnIHwgJ3NtJyB8ICdkZWZhdWx0JyB8ICdsZycgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIGNvbnRhaW5lckNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuXG4gIC8vIEludGVybmFsIFN0YXRlXG4gIHZhbHVlOiBhbnkgPSAnJztcblxuICAvLyBDVkEgQ2FsbGJhY2tzXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgLy8gLS0tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIEltcGxlbWVudGF0aW9uIC0tLVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XG4gIH1cblxuICAvLyAtLS0gU3R5bGluZyBMb2dpYyAtLS1cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNuID0gY247XG5cbiAgZ2V0IGNvbXB1dGVkSW5wdXRDbGFzcygpIHtcbiAgICByZXR1cm4gY24oXG4gICAgICBcImZsZXggdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy1iYWNrZ3JvdW5kIHRleHQtc20gcmluZy1vZmZzZXQtYmFja2dyb3VuZCBwbGFjZWhvbGRlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCB0cmFuc2l0aW9uLWFsbFwiLFxuICAgICAgJ2Rpc2FibGVkOm9wYWNpdHktNTAgc2hhZG93LXNtIHRyYW5zaXRpb24tc2hhZG93JyxcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3hzJyAmJiBcImgtOCB0ZXh0LXhzIHB4LTJcIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3NtJyAmJiBcImgtOSBweC0zXCIsXG4gICAgICB0aGlzLnNpemUgPT09ICdkZWZhdWx0JyAmJiBcImgtMTAgcHgtM1wiLFxuICAgICAgdGhpcy5zaXplID09PSAnbGcnICYmIFwiaC0xMSBweC00IHRleHQtYmFzZVwiLFxuICAgICAgXCJncm91cC1oYXMtW1twcmVmaXhdXTpwbC0xMCBncm91cC1oYXMtW1tzdWZmaXhdXTpwci0xMFwiLFxuICAgICAgdGhpcy5zaXplID09PSAneHMnICYmIFwiZ3JvdXAtaGFzLVtbcHJlZml4XV06cGwtOCBncm91cC1oYXMtW1tzdWZmaXhdXTpwci04XCIsXG4gICAgICB0aGlzLmVycm9yICYmIFwiYm9yZGVyLWRlc3RydWN0aXZlIGZvY3VzLXZpc2libGU6cmluZy1kZXN0cnVjdGl2ZVwiLFxuICAgICAgdGhpcy5jbGFzc1xuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { Component, Input, forwardRef, ViewChild } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
4
|
+
import { cn } from './utils/cn';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class MaskedInputComponent {
|
|
7
|
+
el;
|
|
8
|
+
cdr;
|
|
9
|
+
mask = '';
|
|
10
|
+
placeholder = '';
|
|
11
|
+
type = 'text';
|
|
12
|
+
disabled = false;
|
|
13
|
+
class = '';
|
|
14
|
+
error = false;
|
|
15
|
+
size = 'default';
|
|
16
|
+
returnRaw = false;
|
|
17
|
+
inputEl;
|
|
18
|
+
hasPrefix = false;
|
|
19
|
+
hasSuffix = false;
|
|
20
|
+
displayValue = '';
|
|
21
|
+
tokens = {
|
|
22
|
+
'0': /\d/, '9': /\d/, 'a': /[a-z]/i, 'A': /[a-z]/i, '*': /[a-z0-9]/i
|
|
23
|
+
};
|
|
24
|
+
onChange = () => { };
|
|
25
|
+
onTouched = () => { };
|
|
26
|
+
constructor(el, cdr) {
|
|
27
|
+
this.el = el;
|
|
28
|
+
this.cdr = cdr;
|
|
29
|
+
}
|
|
30
|
+
// FIXED DETECTION: Check the actual DOM nodes projected into the component
|
|
31
|
+
ngAfterContentChecked() {
|
|
32
|
+
const prefix = this.el.nativeElement.querySelector('[prefix]');
|
|
33
|
+
const suffix = this.el.nativeElement.querySelector('[suffix]');
|
|
34
|
+
if (this.hasPrefix !== !!prefix || this.hasSuffix !== !!suffix) {
|
|
35
|
+
this.hasPrefix = !!prefix;
|
|
36
|
+
this.hasSuffix = !!suffix;
|
|
37
|
+
this.cdr.detectChanges();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
get computedInputClass() {
|
|
41
|
+
return cn("flex w-full rounded-md border border-input bg-background text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring focus-visible:ring-ring focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50 transition-all", 'disabled:opacity-50 shadow-sm transition-shadow', this.size === 'xs' && "h-8 text-xs px-2", this.size === 'sm' && "h-9 px-3", this.size === 'default' && "h-10 px-3", this.size === 'lg' && "h-11 px-4 text-base", "group-has-[[prefix]]:pl-10 group-has-[[suffix]]:pr-10", this.size === 'xs' && "group-has-[[prefix]]:pl-8 group-has-[[suffix]]:pr-8", this.error && "border-destructive focus-visible:ring-destructive", this.class);
|
|
42
|
+
}
|
|
43
|
+
// --- Masking Logic ---
|
|
44
|
+
onInput(event) {
|
|
45
|
+
const input = event.target;
|
|
46
|
+
const raw = this.unmask(input.value);
|
|
47
|
+
const masked = this.applyMask(raw);
|
|
48
|
+
this.displayValue = masked;
|
|
49
|
+
input.value = masked;
|
|
50
|
+
this.returnRaw ? this.onChange(raw) : this.onChange(masked);
|
|
51
|
+
}
|
|
52
|
+
applyMask(rawValue) {
|
|
53
|
+
let rawIndex = 0;
|
|
54
|
+
let formatted = '';
|
|
55
|
+
for (let i = 0; i < this.mask.length; i++) {
|
|
56
|
+
if (rawIndex >= rawValue.length)
|
|
57
|
+
break;
|
|
58
|
+
const maskChar = this.mask[i];
|
|
59
|
+
const rawChar = rawValue[rawIndex];
|
|
60
|
+
if (this.tokens[maskChar]) {
|
|
61
|
+
if (this.tokens[maskChar].test(rawChar)) {
|
|
62
|
+
formatted += rawChar;
|
|
63
|
+
rawIndex++;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
rawIndex++;
|
|
67
|
+
i--;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
formatted += maskChar;
|
|
72
|
+
if (rawChar === maskChar)
|
|
73
|
+
rawIndex++;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return formatted;
|
|
77
|
+
}
|
|
78
|
+
unmask(val) { return val.replace(/[^a-zA-Z0-9]/g, ''); }
|
|
79
|
+
writeValue(value) {
|
|
80
|
+
this.displayValue = value ? this.applyMask(this.unmask(value.toString())) : '';
|
|
81
|
+
this.cdr.markForCheck();
|
|
82
|
+
}
|
|
83
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
84
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
85
|
+
setDisabledState(isDisabled) { this.disabled = isDisabled; }
|
|
86
|
+
cn = cn;
|
|
87
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaskedInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
88
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MaskedInputComponent, isStandalone: true, selector: "tolle-masked-input", inputs: { mask: "mask", placeholder: "placeholder", type: "type", disabled: "disabled", class: "class", error: "error", size: "size", returnRaw: "returnRaw" }, providers: [
|
|
89
|
+
{
|
|
90
|
+
provide: NG_VALUE_ACCESSOR,
|
|
91
|
+
useExisting: forwardRef(() => MaskedInputComponent),
|
|
92
|
+
multi: true
|
|
93
|
+
}
|
|
94
|
+
], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true, static: true }], ngImport: i0, template: `
|
|
95
|
+
<div [class]="cn('relative flex items-center w-full group', 'size-' + size, class)">
|
|
96
|
+
|
|
97
|
+
<div class="absolute left-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
|
|
98
|
+
[class.left-2.5]="size === 'xs'">
|
|
99
|
+
<ng-content select="[prefix]"></ng-content>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<input
|
|
103
|
+
#inputEl
|
|
104
|
+
[type]="type"
|
|
105
|
+
[placeholder]="placeholder"
|
|
106
|
+
[disabled]="disabled"
|
|
107
|
+
[value]="displayValue"
|
|
108
|
+
(input)="onInput($event)"
|
|
109
|
+
(blur)="onTouched()"
|
|
110
|
+
[class]="computedInputClass"
|
|
111
|
+
/>
|
|
112
|
+
|
|
113
|
+
<div class="absolute right-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
|
|
114
|
+
[class.right-2.5]="size === 'xs'">
|
|
115
|
+
<ng-content select="[suffix]"></ng-content>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }] });
|
|
119
|
+
}
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaskedInputComponent, decorators: [{
|
|
121
|
+
type: Component,
|
|
122
|
+
args: [{
|
|
123
|
+
selector: 'tolle-masked-input',
|
|
124
|
+
standalone: true,
|
|
125
|
+
imports: [CommonModule, FormsModule],
|
|
126
|
+
providers: [
|
|
127
|
+
{
|
|
128
|
+
provide: NG_VALUE_ACCESSOR,
|
|
129
|
+
useExisting: forwardRef(() => MaskedInputComponent),
|
|
130
|
+
multi: true
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
template: `
|
|
134
|
+
<div [class]="cn('relative flex items-center w-full group', 'size-' + size, class)">
|
|
135
|
+
|
|
136
|
+
<div class="absolute left-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
|
|
137
|
+
[class.left-2.5]="size === 'xs'">
|
|
138
|
+
<ng-content select="[prefix]"></ng-content>
|
|
139
|
+
</div>
|
|
140
|
+
|
|
141
|
+
<input
|
|
142
|
+
#inputEl
|
|
143
|
+
[type]="type"
|
|
144
|
+
[placeholder]="placeholder"
|
|
145
|
+
[disabled]="disabled"
|
|
146
|
+
[value]="displayValue"
|
|
147
|
+
(input)="onInput($event)"
|
|
148
|
+
(blur)="onTouched()"
|
|
149
|
+
[class]="computedInputClass"
|
|
150
|
+
/>
|
|
151
|
+
|
|
152
|
+
<div class="absolute right-3 flex items-center justify-center text-muted-foreground group-focus-within:text-primary transition-colors"
|
|
153
|
+
[class.right-2.5]="size === 'xs'">
|
|
154
|
+
<ng-content select="[suffix]"></ng-content>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
`
|
|
158
|
+
}]
|
|
159
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { mask: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], placeholder: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], type: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], disabled: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], class: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], error: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], size: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}], returnRaw: [{
|
|
174
|
+
type: Input
|
|
175
|
+
}], inputEl: [{
|
|
176
|
+
type: ViewChild,
|
|
177
|
+
args: ['inputEl', { static: true }]
|
|
178
|
+
}] } });
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFza2VkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvbWFza2VkLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWMsU0FBUyxFQUVwRCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQXVDaEMsTUFBTSxPQUFPLG9CQUFvQjtJQXVCWDtJQUF3QjtJQXRCbkMsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLElBQUksR0FBRyxNQUFNLENBQUM7SUFDZCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxLQUFLLEdBQVksS0FBSyxDQUFDO0lBQ3ZCLElBQUksR0FBbUMsU0FBUyxDQUFDO0lBQ2pELFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFYSxPQUFPLENBQWdDO0lBRS9FLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRVYsTUFBTSxHQUE4QjtRQUMxQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxXQUFXO0tBQ3JFLENBQUM7SUFFRixRQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsR0FBUSxHQUFH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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3QlQsMkRBaENTLFlBQVksOEJBQUUsV0FBVzs7NEZBa0N4QixvQkFBb0I7a0JBckNoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUNwQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JUO2lCQUNGOytHQUVVLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRWtDLE9BQU87c0JBQTlDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCxcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLW1hc2tlZC1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXNrZWRJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjbigncmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIGdyb3VwJywgJ3NpemUtJyArIHNpemUsIGNsYXNzKVwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0zIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBncm91cC1mb2N1cy13aXRoaW46dGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgW2NsYXNzLmxlZnQtMi41XT1cInNpemUgPT09ICd4cydcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3ByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dEVsXG4gICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgW2NsYXNzXT1cImNvbXB1dGVkSW5wdXRDbGFzc1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgZ3JvdXAtZm9jdXMtd2l0aGluOnRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgIFtjbGFzcy5yaWdodC0yLjVdPVwic2l6ZSA9PT0gJ3hzJ1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE1hc2tlZElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudENoZWNrZWQge1xuICBASW5wdXQoKSBtYXNrOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgdHlwZSA9ICd0ZXh0JztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgQElucHV0KCkgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2l6ZTogJ3hzJyB8ICdzbScgfCAnZGVmYXVsdCcgfCAnbGcnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSByZXR1cm5SYXcgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdpbnB1dEVsJywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgaGFzUHJlZml4ID0gZmFsc2U7XG4gIGhhc1N1ZmZpeCA9IGZhbHNlO1xuICBkaXNwbGF5VmFsdWUgPSAnJztcblxuICBwcml2YXRlIHRva2VuczogeyBba2V5OiBzdHJpbmddOiBSZWdFeHAgfSA9IHtcbiAgICAnMCc6IC9cXGQvLCAnOSc6IC9cXGQvLCAnYSc6IC9bYS16XS9pLCAnQSc6IC9bYS16XS9pLCAnKic6IC9bYS16MC05XS9pXG4gIH07XG5cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAvLyBGSVhFRCBERVRFQ1RJT046IENoZWNrIHRoZSBhY3R1YWwgRE9NIG5vZGVzIHByb2plY3RlZCBpbnRvIHRoZSBjb21wb25lbnRcbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbcHJlZml4XScpO1xuICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbc3VmZml4XScpO1xuXG4gICAgaWYgKHRoaXMuaGFzUHJlZml4ICE9PSAhIXByZWZpeCB8fCB0aGlzLmhhc1N1ZmZpeCAhPT0gISFzdWZmaXgpIHtcbiAgICAgIHRoaXMuaGFzUHJlZml4ID0gISFwcmVmaXg7XG4gICAgICB0aGlzLmhhc1N1ZmZpeCA9ICEhc3VmZml4O1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjb21wdXRlZElucHV0Q2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgXCJmbGV4IHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItaW5wdXQgYmctYmFja2dyb3VuZCB0ZXh0LXNtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTEgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgdHJhbnNpdGlvbi1hbGxcIixcbiAgICAgICdkaXNhYmxlZDpvcGFjaXR5LTUwIHNoYWRvdy1zbSB0cmFuc2l0aW9uLXNoYWRvdycsXG4gICAgICB0aGlzLnNpemUgPT09ICd4cycgJiYgXCJoLTggdGV4dC14cyBweC0yXCIsXG4gICAgICB0aGlzLnNpemUgPT09ICdzbScgJiYgXCJoLTkgcHgtM1wiLFxuICAgICAgdGhpcy5zaXplID09PSAnZGVmYXVsdCcgJiYgXCJoLTEwIHB4LTNcIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2xnJyAmJiBcImgtMTEgcHgtNCB0ZXh0LWJhc2VcIixcbiAgICAgIFwiZ3JvdXAtaGFzLVtbcHJlZml4XV06cGwtMTAgZ3JvdXAtaGFzLVtbc3VmZml4XV06cHItMTBcIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3hzJyAmJiBcImdyb3VwLWhhcy1bW3ByZWZpeF1dOnBsLTggZ3JvdXAtaGFzLVtbc3VmZml4XV06cHItOFwiLFxuICAgICAgdGhpcy5lcnJvciAmJiBcImJvcmRlci1kZXN0cnVjdGl2ZSBmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmVcIixcbiAgICAgIHRoaXMuY2xhc3NcbiAgICApO1xuICB9XG5cbiAgLy8gLS0tIE1hc2tpbmcgTG9naWMgLS0tXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCByYXcgPSB0aGlzLnVubWFzayhpbnB1dC52YWx1ZSk7XG4gICAgY29uc3QgbWFza2VkID0gdGhpcy5hcHBseU1hc2socmF3KTtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IG1hc2tlZDtcbiAgICBpbnB1dC52YWx1ZSA9IG1hc2tlZDtcbiAgICB0aGlzLnJldHVyblJhdyA/IHRoaXMub25DaGFuZ2UocmF3KSA6IHRoaXMub25DaGFuZ2UobWFza2VkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlNYXNrKHJhd1ZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByYXdJbmRleCA9IDA7IGxldCBmb3JtYXR0ZWQgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWFzay5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJhd0luZGV4ID49IHJhd1ZhbHVlLmxlbmd0aCkgYnJlYWs7XG4gICAgICBjb25zdCBtYXNrQ2hhciA9IHRoaXMubWFza1tpXTtcbiAgICAgIGNvbnN0IHJhd0NoYXIgPSByYXdWYWx1ZVtyYXdJbmRleF07XG4gICAgICBpZiAodGhpcy50b2tlbnNbbWFza0NoYXJdKSB7XG4gICAgICAgIGlmICh0aGlzLnRva2Vuc1ttYXNrQ2hhcl0udGVzdChyYXdDaGFyKSkgeyBmb3JtYXR0ZWQgKz0gcmF3Q2hhcjsgcmF3SW5kZXgrKzsgfVxuICAgICAgICBlbHNlIHsgcmF3SW5kZXgrKzsgaS0tOyB9XG4gICAgICB9IGVsc2UgeyBmb3JtYXR0ZWQgKz0gbWFza0NoYXI7IGlmIChyYXdDaGFyID09PSBtYXNrQ2hhcikgcmF3SW5kZXgrKzsgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGVkO1xuICB9XG5cbiAgcHJpdmF0ZSB1bm1hc2sodmFsOiBzdHJpbmcpOiBzdHJpbmcgeyByZXR1cm4gdmFsLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnJyk7IH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHZhbHVlID8gdGhpcy5hcHBseU1hc2sodGhpcy51bm1hc2sodmFsdWUudG9TdHJpbmcoKSkpIDogJyc7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
export class ModalRef {
|
|
3
|
+
overlay;
|
|
4
|
+
modal;
|
|
5
|
+
stack;
|
|
6
|
+
_afterClosed$ = new Subject();
|
|
7
|
+
afterClosed$ = this._afterClosed$.asObservable();
|
|
8
|
+
constructor(overlay, modal, stack) {
|
|
9
|
+
this.overlay = overlay;
|
|
10
|
+
this.modal = modal;
|
|
11
|
+
this.stack = stack;
|
|
12
|
+
this.stack.register(this);
|
|
13
|
+
// Handle Backdrop Click
|
|
14
|
+
this.overlay.backdropClick().subscribe(() => {
|
|
15
|
+
if (this.modal.backdropClose) {
|
|
16
|
+
this.close();
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Closes the modal instantly.
|
|
22
|
+
* @param result Data to pass back to the caller
|
|
23
|
+
*/
|
|
24
|
+
close(result) {
|
|
25
|
+
this._afterClosed$.next(result);
|
|
26
|
+
this._afterClosed$.complete();
|
|
27
|
+
this.overlay.dispose(); // Instant disposal (No animation timer)
|
|
28
|
+
this.stack.unregister(this);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9tb2RhbC1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixNQUFNLE9BQU8sUUFBUTtJQUtUO0lBQ0Q7SUFDQztJQU5PLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBd0IsQ0FBQztJQUNyRSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVqRCxZQUNVLE9BQW1CLEVBQ3BCLEtBQVksRUFDWCxLQUF3QjtRQUZ4QixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ3BCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWCxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUVoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUxQix3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxNQUFVO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsd0NBQXdDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgTW9kYWxTdGFja1NlcnZpY2UgfSBmcm9tICcuL21vZGFsLXN0YWNrLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgTW9kYWxSZWY8UiA9IGFueT4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9hZnRlckNsb3NlZCQgPSBuZXcgU3ViamVjdDxSIHwgdW5kZWZpbmVkIHwgbnVsbD4oKTtcbiAgYWZ0ZXJDbG9zZWQkID0gdGhpcy5fYWZ0ZXJDbG9zZWQkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheVJlZixcbiAgICBwdWJsaWMgbW9kYWw6IE1vZGFsLFxuICAgIHByaXZhdGUgc3RhY2s6IE1vZGFsU3RhY2tTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc3RhY2sucmVnaXN0ZXIodGhpcyk7XG5cbiAgICAvLyBIYW5kbGUgQmFja2Ryb3AgQ2xpY2tcbiAgICB0aGlzLm92ZXJsYXkuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5tb2RhbC5iYWNrZHJvcENsb3NlKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG1vZGFsIGluc3RhbnRseS5cbiAgICogQHBhcmFtIHJlc3VsdCBEYXRhIHRvIHBhc3MgYmFjayB0byB0aGUgY2FsbGVyXG4gICAqL1xuICBjbG9zZShyZXN1bHQ/OiBSKTogdm9pZCB7XG4gICAgdGhpcy5fYWZ0ZXJDbG9zZWQkLm5leHQocmVzdWx0KTtcbiAgICB0aGlzLl9hZnRlckNsb3NlZCQuY29tcGxldGUoKTtcbiAgICB0aGlzLm92ZXJsYXkuZGlzcG9zZSgpOyAvLyBJbnN0YW50IGRpc3Bvc2FsIChObyBhbmltYXRpb24gdGltZXIpXG4gICAgdGhpcy5zdGFjay51bnJlZ2lzdGVyKHRoaXMpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ModalStackService {
|
|
4
|
+
_stack = new Set();
|
|
5
|
+
register(ref) {
|
|
6
|
+
this._stack.add(ref);
|
|
7
|
+
}
|
|
8
|
+
unregister(ref) {
|
|
9
|
+
this._stack.delete(ref);
|
|
10
|
+
}
|
|
11
|
+
/** Instantly closes all open modals */
|
|
12
|
+
closeAll() {
|
|
13
|
+
this._stack.forEach(ref => ref.close());
|
|
14
|
+
this._stack.clear();
|
|
15
|
+
}
|
|
16
|
+
get activeCount() {
|
|
17
|
+
return this._stack.size;
|
|
18
|
+
}
|
|
19
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalStackService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
20
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalStackService, providedIn: 'root' });
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalStackService, decorators: [{
|
|
23
|
+
type: Injectable,
|
|
24
|
+
args: [{ providedIn: 'root' }]
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc3RhY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvbW9kYWwtc3RhY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8saUJBQWlCO0lBQ3BCLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBWSxDQUFDO0lBRXJDLFFBQVEsQ0FBQyxHQUFhO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBYTtRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQzt3R0FuQlUsaUJBQWlCOzRHQUFqQixpQkFBaUIsY0FESixNQUFNOzs0RkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsUmVmIH0gZnJvbSAnLi9tb2RhbC1yZWYnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsU3RhY2tTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfc3RhY2sgPSBuZXcgU2V0PE1vZGFsUmVmPigpO1xuXG4gIHJlZ2lzdGVyKHJlZjogTW9kYWxSZWYpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGFjay5hZGQocmVmKTtcbiAgfVxuXG4gIHVucmVnaXN0ZXIocmVmOiBNb2RhbFJlZik6IHZvaWQge1xuICAgIHRoaXMuX3N0YWNrLmRlbGV0ZShyZWYpO1xuICB9XG5cbiAgLyoqIEluc3RhbnRseSBjbG9zZXMgYWxsIG9wZW4gbW9kYWxzICovXG4gIGNsb3NlQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YWNrLmZvckVhY2gocmVmID0+IHJlZi5jbG9zZSgpKTtcbiAgICB0aGlzLl9zdGFjay5jbGVhcigpO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YWNrLnNpemU7XG4gIH1cbn1cbiJdfQ==
|