@unipin/angular-applet 21.1.3 → 21.3.1
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/common/assets/styles/theme.css +8 -0
- package/fesm2022/unipin-angular-applet-accordion.mjs +12 -12
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs +10 -7
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-alert.mjs +9 -9
- package/fesm2022/unipin-angular-applet-approval.mjs +6 -6
- package/fesm2022/unipin-angular-applet-audit-audit-modal.component-3a2P0bZr.mjs +280 -0
- package/fesm2022/unipin-angular-applet-audit-audit-modal.component-3a2P0bZr.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-audit.mjs +220 -0
- package/fesm2022/unipin-angular-applet-audit.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-auth.mjs +21 -21
- package/fesm2022/unipin-angular-applet-avatar.mjs +25 -8
- package/fesm2022/unipin-angular-applet-avatar.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-badge.mjs +3 -3
- package/fesm2022/unipin-angular-applet-buttons.mjs +6 -6
- package/fesm2022/unipin-angular-applet-calendar.mjs +26 -12
- package/fesm2022/unipin-angular-applet-calendar.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-collapsible.mjs +9 -9
- package/fesm2022/unipin-angular-applet-common.mjs +24 -24
- package/fesm2022/unipin-angular-applet-containers.mjs +12 -12
- package/fesm2022/unipin-angular-applet-dialog.mjs +30 -45
- package/fesm2022/unipin-angular-applet-dialog.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-forms.mjs +960 -311
- package/fesm2022/unipin-angular-applet-forms.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-froala.mjs +4 -4
- package/fesm2022/unipin-angular-applet-froala.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-grids.mjs +17 -1
- package/fesm2022/unipin-angular-applet-grids.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-infinite-scroll.mjs +3 -3
- package/fesm2022/unipin-angular-applet-json-viewer.mjs +3 -3
- package/fesm2022/unipin-angular-applet-kbd.mjs +3 -3
- package/fesm2022/unipin-angular-applet-loading-dialog.mjs +6 -6
- package/fesm2022/unipin-angular-applet-markdown.mjs +10 -10
- package/fesm2022/unipin-angular-applet-markdown.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-popover.mjs +18 -18
- package/fesm2022/unipin-angular-applet-popover.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-progress-bar.mjs +3 -3
- package/fesm2022/unipin-angular-applet-skeleton.mjs +3 -3
- package/fesm2022/unipin-angular-applet-spinner.mjs +3 -3
- package/fesm2022/unipin-angular-applet-stepper.mjs +6 -6
- package/fesm2022/unipin-angular-applet-swipeable.mjs +12 -12
- package/fesm2022/unipin-angular-applet-tabs.mjs +9 -9
- package/fesm2022/unipin-angular-applet-tooltip.mjs +3 -3
- package/package.json +5 -1
- package/types/unipin-angular-applet-audit.d.ts +49 -0
- package/types/unipin-angular-applet-avatar.d.ts +3 -2
- package/types/unipin-angular-applet-containers.d.ts +1 -1
- package/types/unipin-angular-applet-dialog.d.ts +13 -13
- package/types/unipin-angular-applet-forms.d.ts +133 -51
- package/types/unipin-angular-applet-grids.d.ts +17 -1
- package/types/unipin-angular-applet-popover.d.ts +2 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, inject, Injector, Injectable, input, computed, forwardRef, Directive, HostListener, booleanAttribute, model, ChangeDetectionStrategy, Component, contentChildren, output, contentChild, ViewEncapsulation, viewChild, effect } from '@angular/core';
|
|
2
|
+
import { signal, inject, Injector, Injectable, input, computed, forwardRef, Directive, HostListener, booleanAttribute, model, ChangeDetectionStrategy, Component, contentChildren, output, contentChild, ViewEncapsulation, viewChild, Pipe, afterNextRender, effect } from '@angular/core';
|
|
3
3
|
import * as i1$1 from '@unipin/angular-applet/common';
|
|
4
4
|
import { up, compressImage, UpFileDragNDropDirective } from '@unipin/angular-applet/common';
|
|
5
5
|
import * as i1 from '@angular/forms';
|
|
6
6
|
import { NgControl, NgForm, FormGroupDirective, FormsModule } from '@angular/forms';
|
|
7
7
|
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
8
|
-
import { matVisibilityOffRound, matVisibilityRound, matCalendarMonthRound } from '@ng-icons/material-icons/round';
|
|
8
|
+
import { matVisibilityOffRound, matVisibilityRound, matCalendarMonthRound, matWatchLaterRound } from '@ng-icons/material-icons/round';
|
|
9
9
|
import { NgSelectComponent } from '@ng-select/ng-select';
|
|
10
10
|
import { toSignal } from '@angular/core/rxjs-interop';
|
|
11
11
|
import { Subject, distinctUntilChanged, debounceTime, tap, switchMap, map, catchError, of } from 'rxjs';
|
|
@@ -13,15 +13,211 @@ import { format } from 'date-fns';
|
|
|
13
13
|
import { UpButtonDirective } from '@unipin/angular-applet/buttons';
|
|
14
14
|
import { UpCalendarComponent } from '@unipin/angular-applet/calendar';
|
|
15
15
|
import { UpPopoverComponent, UpPopoverTriggerDirective, UpPopoverContentRefDirective } from '@unipin/angular-applet/popover';
|
|
16
|
+
import { DecimalPipe } from '@angular/common';
|
|
16
17
|
import { matDelete, matUpload } from '@ng-icons/material-icons/baseline';
|
|
17
18
|
|
|
19
|
+
function setValidator(form, keys, validators) {
|
|
20
|
+
if (!keys.length ||
|
|
21
|
+
keys.length === 1) {
|
|
22
|
+
throw new Error('Use normal action for single keys and keys cannot be empty.');
|
|
23
|
+
}
|
|
24
|
+
keys.forEach((key) => {
|
|
25
|
+
const control = form.get(key);
|
|
26
|
+
if (control) {
|
|
27
|
+
control.setValidators(validators);
|
|
28
|
+
control.updateValueAndValidity();
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function toggleFormControls(form, keys, mode) {
|
|
34
|
+
if (!keys.length ||
|
|
35
|
+
keys.length === 1) {
|
|
36
|
+
throw new Error('Use normal action for single keys and keys cannot be empty.');
|
|
37
|
+
}
|
|
38
|
+
keys.forEach((key) => form.get(key)?.[mode]());
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function prettifyLabel(name) {
|
|
42
|
+
return name
|
|
43
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
44
|
+
.replace(/_/g, ' ')
|
|
45
|
+
.replace(/\b\w/g, char => char.toUpperCase());
|
|
46
|
+
}
|
|
47
|
+
function convertToDate(value) {
|
|
48
|
+
if (value instanceof Date)
|
|
49
|
+
return value;
|
|
50
|
+
if (typeof value === 'string' &&
|
|
51
|
+
!isNaN(Date.parse(value))) {
|
|
52
|
+
return new Date(value);
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Range validator for number and date values.
|
|
58
|
+
* @param {string} fromKey - The "from" control name
|
|
59
|
+
* @param {string} toKey - The "to" control name
|
|
60
|
+
* @returns {ValidatorFn} Throw error message when fromKey is greater than toKey
|
|
61
|
+
*
|
|
62
|
+
* Usage:
|
|
63
|
+
* this.form = new FormGroup({
|
|
64
|
+
* agingFrom: new FormControl(),
|
|
65
|
+
* agingTo: new FormControl(),
|
|
66
|
+
* }, { validators: rangeValidator('agingFrom', 'agingTo') });
|
|
67
|
+
*/
|
|
68
|
+
function validRangeValidator(fromKey, toKey) {
|
|
69
|
+
return (group) => {
|
|
70
|
+
if (!group) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const toControl = group.get(toKey);
|
|
74
|
+
const fromControl = group.get(fromKey);
|
|
75
|
+
if (!fromControl ||
|
|
76
|
+
!toControl) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const toValue = toControl.value;
|
|
80
|
+
const fromValue = fromControl.value;
|
|
81
|
+
if (fromValue === null ||
|
|
82
|
+
toValue === null ||
|
|
83
|
+
fromValue === '' ||
|
|
84
|
+
toValue === '') {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
let isInvalid = false;
|
|
88
|
+
const toDate = convertToDate(toValue);
|
|
89
|
+
const fromDate = convertToDate(fromValue);
|
|
90
|
+
if (fromDate && toDate) {
|
|
91
|
+
isInvalid = toDate <= fromDate;
|
|
92
|
+
}
|
|
93
|
+
else if (!isNaN(fromValue) &&
|
|
94
|
+
!isNaN(toValue)) {
|
|
95
|
+
isInvalid = Number(toValue) <= Number(fromValue);
|
|
96
|
+
}
|
|
97
|
+
return !isInvalid ? null : {
|
|
98
|
+
rangeInvalid: {
|
|
99
|
+
to: toKey,
|
|
100
|
+
from: fromKey,
|
|
101
|
+
message: `${prettifyLabel(toKey)} must be greater than ${prettifyLabel(fromKey)}`
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Validator that requires all specified form controls to have the same value.
|
|
109
|
+
*
|
|
110
|
+
* @param {string[]} controlNames - The names of the controls that must match
|
|
111
|
+
* @param {string} [message] - Optional custom error message
|
|
112
|
+
* @returns {ValidatorFn} A validator function producing an `isEqual` error if values do not match
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* this.form = new FormGroup({
|
|
116
|
+
* password: new FormControl(''),
|
|
117
|
+
* confirmPassword: new FormControl(''),
|
|
118
|
+
* }, { validators: isEqualValidator(['password', 'confirmPassword']) });
|
|
119
|
+
*/
|
|
120
|
+
function isEqualValidator(controlNames, message) {
|
|
121
|
+
return (group) => {
|
|
122
|
+
if (!group ||
|
|
123
|
+
controlNames.length < 2) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
let isEmpty = false;
|
|
127
|
+
const values = controlNames.reduce((acc, name) => {
|
|
128
|
+
const control = group.get(name);
|
|
129
|
+
if (!control) {
|
|
130
|
+
return acc;
|
|
131
|
+
}
|
|
132
|
+
if (!control.value) {
|
|
133
|
+
isEmpty = true;
|
|
134
|
+
return acc;
|
|
135
|
+
}
|
|
136
|
+
acc.push(control.value);
|
|
137
|
+
return acc;
|
|
138
|
+
}, []);
|
|
139
|
+
if (isEmpty) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
if (!values.every(v => v === values[0])) {
|
|
143
|
+
const labels = controlNames.map((name) => {
|
|
144
|
+
return name
|
|
145
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
146
|
+
.replace(/_/g, ' ')
|
|
147
|
+
.replace(/\b\w/g, char => char.toUpperCase());
|
|
148
|
+
});
|
|
149
|
+
return {
|
|
150
|
+
isEqual: {
|
|
151
|
+
fields: controlNames,
|
|
152
|
+
message: message || `${labels.join(', ')} should have the same value`
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return null;
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Validator that requires all specified form controls to have different values.
|
|
162
|
+
*
|
|
163
|
+
* @param {string[]} controlNames - The names of the controls that must all be unique
|
|
164
|
+
* @param {string} [message] - Optional custom error message
|
|
165
|
+
* @returns {ValidatorFn} A validator function producing an `isNotEqual` error if duplicate values exist
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* this.form = new FormGroup({
|
|
169
|
+
* primaryEmail: new FormControl(''),
|
|
170
|
+
* secondaryEmail: new FormControl(''),
|
|
171
|
+
* backupEmail: new FormControl(''),
|
|
172
|
+
* }, { validators: isNotEqualValidator(['primaryEmail', 'secondaryEmail', 'backupEmail']) });
|
|
173
|
+
*/
|
|
174
|
+
function isNotEqualValidator(controlNames, message) {
|
|
175
|
+
return (group) => {
|
|
176
|
+
if (!group ||
|
|
177
|
+
controlNames.length < 2) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
let isEmpty = false;
|
|
181
|
+
const values = controlNames.reduce((acc, name) => {
|
|
182
|
+
const control = group.get(name);
|
|
183
|
+
if (!control) {
|
|
184
|
+
return acc;
|
|
185
|
+
}
|
|
186
|
+
if (!control.value) {
|
|
187
|
+
isEmpty = true;
|
|
188
|
+
return acc;
|
|
189
|
+
}
|
|
190
|
+
acc.push(control.value);
|
|
191
|
+
return acc;
|
|
192
|
+
}, []);
|
|
193
|
+
if (isEmpty) {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
if (new Set(values).size !== values.length) {
|
|
197
|
+
const labels = controlNames.map((name) => {
|
|
198
|
+
return name
|
|
199
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
200
|
+
.replace(/_/g, ' ')
|
|
201
|
+
.replace(/\b\w/g, char => char.toUpperCase());
|
|
202
|
+
});
|
|
203
|
+
return {
|
|
204
|
+
isNotEqual: {
|
|
205
|
+
fields: controlNames,
|
|
206
|
+
message: message || `${labels.join(', ')} should have different values`
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
return null;
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
|
|
18
214
|
const errMessage = {
|
|
19
215
|
email: (label) => `${label} is not a valid email`,
|
|
20
216
|
required: (label) => `${label} is required`,
|
|
21
217
|
minlength: (label, length) => `${label} must be at least ${length} characters`,
|
|
22
218
|
maxlength: (label, length) => `${label} must not exceed ${length} characters`,
|
|
23
219
|
max: (label, max) => `${label} value must be lower than ${max}`,
|
|
24
|
-
min: (label, min) => `${label} value must be larger than ${min}
|
|
220
|
+
min: (label, min) => `${label} value must be larger than ${min}`
|
|
25
221
|
};
|
|
26
222
|
const extraParamKey = {
|
|
27
223
|
max: 'max',
|
|
@@ -58,15 +254,23 @@ class UpFieldControlComponent {
|
|
|
58
254
|
return;
|
|
59
255
|
}
|
|
60
256
|
const errKey = Object.keys(control.errors)[0];
|
|
61
|
-
const
|
|
257
|
+
const errorData = control.errors[errKey];
|
|
258
|
+
if (errorData?.message) {
|
|
259
|
+
const newState = errorData.message;
|
|
260
|
+
if (newState !== this.error()) {
|
|
261
|
+
this.error.set(newState);
|
|
262
|
+
}
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
const newState = errMessage[errKey](this._controlName ?? 'Field', errorData[extraParamKey[errKey]]);
|
|
62
266
|
if (newState !== this.error()) {
|
|
63
267
|
this.error.set(newState);
|
|
64
268
|
}
|
|
65
269
|
}
|
|
66
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
67
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
270
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpFieldControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
271
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpFieldControlComponent }); }
|
|
68
272
|
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpFieldControlComponent, decorators: [{
|
|
70
274
|
type: Injectable
|
|
71
275
|
}] });
|
|
72
276
|
|
|
@@ -75,18 +279,18 @@ class UpInputDirective extends UpFieldControlComponent {
|
|
|
75
279
|
super(...arguments);
|
|
76
280
|
this.inlineClass = input('', { ...(ngDevMode ? { debugName: "inlineClass" } : {}), alias: 'class' });
|
|
77
281
|
this._computedClass = computed(() => {
|
|
78
|
-
return up('peer file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium file:h-7 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-none', this.error() ? 'ring-destructive/20 dark:ring-destructive/40 border-destructive focus-visible:ring-destructive/50' : '', this.inlineClass());
|
|
282
|
+
return up('peer file:text-foreground placeholder:text-muted-foreground/30 selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium file:h-7 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-none', this.error() ? 'ring-destructive/20 dark:ring-destructive/40 border-destructive focus-visible:ring-destructive/50' : '', this.inlineClass());
|
|
79
283
|
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
80
284
|
}
|
|
81
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
82
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
285
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpInputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
286
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: UpInputDirective, isStandalone: true, selector: "[upInput]", inputs: { inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [
|
|
83
287
|
{
|
|
84
288
|
provide: UpFieldControl,
|
|
85
289
|
useExisting: forwardRef(() => UpInputDirective)
|
|
86
290
|
}
|
|
87
291
|
], exportAs: ["upInput"], usesInheritance: true, ngImport: i0 }); }
|
|
88
292
|
}
|
|
89
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
293
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpInputDirective, decorators: [{
|
|
90
294
|
type: Directive,
|
|
91
295
|
args: [{
|
|
92
296
|
standalone: true,
|
|
@@ -271,15 +475,15 @@ class UpNumberDirective extends UpInputDirective {
|
|
|
271
475
|
decimal: decimalPart?.slice(0, this.maxDecimalDigits()),
|
|
272
476
|
};
|
|
273
477
|
}
|
|
274
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
275
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
478
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpNumberDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
479
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: UpNumberDirective, isStandalone: true, selector: "[upNumber]", inputs: { magnifyValue: { classPropertyName: "magnifyValue", publicName: "magnifyValue", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "blur": "onBlur()", "input": "onInput($event)", "keydown": "onKeyDown($event)" }, properties: { "class": "_computedClass()" } }, providers: [
|
|
276
480
|
{
|
|
277
481
|
provide: UpFieldControl,
|
|
278
482
|
useExisting: forwardRef(() => UpNumberDirective),
|
|
279
483
|
},
|
|
280
484
|
], exportAs: ["upNumber"], usesInheritance: true, ngImport: i0 }); }
|
|
281
485
|
}
|
|
282
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
486
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpNumberDirective, decorators: [{
|
|
283
487
|
type: Directive,
|
|
284
488
|
args: [{
|
|
285
489
|
standalone: true,
|
|
@@ -396,8 +600,8 @@ class UpPasswordComponent extends UpFieldControlComponent {
|
|
|
396
600
|
this.value.set(value);
|
|
397
601
|
this._onChange(this.value());
|
|
398
602
|
}
|
|
399
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
400
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
603
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
604
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.5", type: UpPasswordComponent, isStandalone: true, selector: "up-password", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { disabled: "disabledChange" }, host: { classAttribute: "block relative" }, providers: [
|
|
401
605
|
{
|
|
402
606
|
provide: UpFieldControl,
|
|
403
607
|
useExisting: forwardRef(() => UpPasswordComponent)
|
|
@@ -428,7 +632,7 @@ class UpPasswordComponent extends UpFieldControlComponent {
|
|
|
428
632
|
/>
|
|
429
633
|
`, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: UpInputDirective, selector: "[upInput]", inputs: ["class"], exportAs: ["upInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
430
634
|
}
|
|
431
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
635
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPasswordComponent, decorators: [{
|
|
432
636
|
type: Component,
|
|
433
637
|
args: [{
|
|
434
638
|
standalone: true,
|
|
@@ -483,15 +687,15 @@ class UpRadioDirective extends UpFieldControlComponent {
|
|
|
483
687
|
return up('peer dark:bg-input/30 border-input size-4 min-w-0 rounded-full border bg-transparent shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-border/40 relative cursor-pointer', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-none', 'appearance-none checked:border-primary', 'checked:after:content-[\'\'] checked:after:absolute checked:after:bg-primary checked:after:rounded-full checked:after:size-2 checked:after:left-1/2 checked:after:top-1/2 checked:after:-translate-x-1/2 checked:after:-translate-y-1/2', this.error() ? 'ring-destructive/20 dark:ring-destructive/40 border-destructive focus-visible:ring-destructive/50' : '', this.inlineClass());
|
|
484
688
|
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
485
689
|
}
|
|
486
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
487
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
690
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpRadioDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
691
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: UpRadioDirective, isStandalone: true, selector: "[upRadio]", inputs: { inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "radio" }, properties: { "class": "_computedClass()" } }, providers: [
|
|
488
692
|
{
|
|
489
693
|
provide: UpFieldControl,
|
|
490
694
|
useExisting: forwardRef(() => UpRadioDirective)
|
|
491
695
|
}
|
|
492
696
|
], exportAs: ["upRadio"], usesInheritance: true, ngImport: i0 }); }
|
|
493
697
|
}
|
|
494
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
698
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpRadioDirective, decorators: [{
|
|
495
699
|
type: Directive,
|
|
496
700
|
args: [{
|
|
497
701
|
exportAs: 'upRadio',
|
|
@@ -558,8 +762,8 @@ class UpSwitchComponent extends UpFieldControlComponent {
|
|
|
558
762
|
this._onChange(this.checked());
|
|
559
763
|
this._onTouched();
|
|
560
764
|
}
|
|
561
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
562
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
765
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
766
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.5", type: UpSwitchComponent, isStandalone: true, selector: "up-switch", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { classAttribute: "inline-flex items-center cursor-pointer" }, providers: [
|
|
563
767
|
{
|
|
564
768
|
provide: UpFieldControl,
|
|
565
769
|
useExisting: forwardRef(() => UpSwitchComponent),
|
|
@@ -581,7 +785,7 @@ class UpSwitchComponent extends UpFieldControlComponent {
|
|
|
581
785
|
</span>
|
|
582
786
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
583
787
|
}
|
|
584
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
788
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpSwitchComponent, decorators: [{
|
|
585
789
|
type: Component,
|
|
586
790
|
args: [{
|
|
587
791
|
standalone: true,
|
|
@@ -623,15 +827,15 @@ class UpCheckboxDirective extends UpFieldControlComponent {
|
|
|
623
827
|
return up('peer dark:bg-input/30 border-input size-5 min-w-0 rounded-md border bg-transparent shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-border/40 relative cursor-pointer', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-none', 'appearance-none checked:border-primary checked:bg-primary', 'checked:after:content-[\'\'] checked:after:absolute checked:after:border-white checked:after:border-b-2 checked:after:border-r-2 checked:after:w-1.5 checked:after:h-2.5 checked:after:rounded-br-xs checked:after:rotate-45 checked:after:left-1.5 checked:after:top-0.75', this.error() ? 'ring-destructive/20 dark:ring-destructive/40 border-destructive focus-visible:ring-destructive/50' : '', this.inlineClass());
|
|
624
828
|
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
625
829
|
}
|
|
626
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
627
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
830
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpCheckboxDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
831
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: UpCheckboxDirective, isStandalone: true, selector: "[upCheckbox]", inputs: { inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "checkbox" }, properties: { "class": "_computedClass()" } }, providers: [
|
|
628
832
|
{
|
|
629
833
|
provide: UpFieldControl,
|
|
630
834
|
useExisting: forwardRef(() => UpCheckboxDirective)
|
|
631
835
|
}
|
|
632
836
|
], exportAs: ["upCheckbox"], usesInheritance: true, ngImport: i0 }); }
|
|
633
837
|
}
|
|
634
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
838
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpCheckboxDirective, decorators: [{
|
|
635
839
|
type: Directive,
|
|
636
840
|
args: [{
|
|
637
841
|
standalone: true,
|
|
@@ -657,12 +861,12 @@ class UpOptionComponent {
|
|
|
657
861
|
this.label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
|
|
658
862
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
|
|
659
863
|
}
|
|
660
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
661
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
864
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpOptionComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
865
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.5", type: UpOptionComponent, isStandalone: true, selector: "up-option", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
662
866
|
<ng-content />
|
|
663
867
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
664
868
|
}
|
|
665
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
869
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpOptionComponent, decorators: [{
|
|
666
870
|
type: Component,
|
|
667
871
|
args: [{
|
|
668
872
|
standalone: true,
|
|
@@ -773,8 +977,8 @@ class UpSelectComponent extends UpFieldControlComponent {
|
|
|
773
977
|
this.changed.emit(this.value());
|
|
774
978
|
}
|
|
775
979
|
}
|
|
776
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
777
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.
|
|
980
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
981
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.5", type: UpSelectComponent, isStandalone: true, selector: "up-select", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, addTag: { classPropertyName: "addTag", publicName: "addTag", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", changed: "changed" }, host: { classAttribute: "block relative" }, providers: [
|
|
778
982
|
{
|
|
779
983
|
provide: UpFieldControl,
|
|
780
984
|
useExisting: forwardRef(() => UpSelectComponent)
|
|
@@ -800,9 +1004,9 @@ class UpSelectComponent extends UpFieldControlComponent {
|
|
|
800
1004
|
(blur)="touch()"
|
|
801
1005
|
(ngModelChange)="change($event)"
|
|
802
1006
|
/>
|
|
803
|
-
`, isInline: true, styles: [".ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:var(--accent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right-color:color-mix(in oklab,var(--primary) 50%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left:hover{background-color:color-mix(in oklab,var(--primary) 40%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:50%!important;padding-bottom:0!important;transform:translateY(-50%)!important}.ng-select .ng-select-container{transition:all .2s ease}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.75rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--muted-foreground)}.ng-select .ng-select-container .ng-arrow-wrapper{padding-right:.75rem}.ng-select .ng-select-container .ng-clear-wrapper{margin-right:.25rem;transition:color .2s ease}.ng-select .ng-select-container .ng-clear-wrapper:hover .ng-clear{color:var(--destructive)}.ng-dropdown-panel{overflow:hidden;margin-top:.25rem!important;border-color:var(--border)!important;border-radius:calc(var(--radius) - 2px)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ng-dropdown-panel .ng-option-label{color:#000;font-size:1rem}@media screen and (min-width:48rem){.ng-dropdown-panel .ng-option-label{font-size:.875rem}}.ng-dropdown-panel .ng-option:hover,.ng-dropdown-panel .ng-option-marked{background-color:var(--accent)!important}.ng-dropdown-panel .ng-option-selected{color:#000!important;background-color:color-mix(in oklab,var(--primary) 15%,transparent)!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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"] }, { kind: "component", type: NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "dropdownPosition", "appendTo", "outsideClickEvent", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "tabFocusOnClearButton", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "deselectOnClick", "clearSearchOnAdd", "compareWith", "keyDownFn", "bindLabel", "bindValue", "appearance", "isOpen", "items"], outputs: ["bindLabelChange", "bindValueChange", "appearanceChange", "isOpenChange", "itemsChange", "blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"], exportAs: ["ngSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1007
|
+
`, isInline: true, styles: [".ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:var(--accent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right-color:color-mix(in oklab,var(--primary) 50%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left:hover{background-color:color-mix(in oklab,var(--primary) 40%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{opacity:30%;top:50%!important;padding-bottom:0!important;transform:translateY(-50%)!important}.ng-select .ng-select-container{transition:all .2s ease}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.75rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--muted-foreground)}.ng-select .ng-select-container .ng-arrow-wrapper{padding-right:.75rem}.ng-select .ng-select-container .ng-clear-wrapper{margin-right:.25rem;transition:color .2s ease}.ng-select .ng-select-container .ng-clear-wrapper:hover .ng-clear{color:var(--destructive)}.ng-dropdown-panel{overflow:hidden;margin-top:.25rem!important;border-color:var(--border)!important;border-radius:calc(var(--radius) - 2px)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ng-dropdown-panel .ng-option-label{color:#000;font-size:1rem}@media screen and (min-width:48rem){.ng-dropdown-panel .ng-option-label{font-size:.875rem}}.ng-dropdown-panel .ng-option:hover,.ng-dropdown-panel .ng-option-marked{background-color:var(--accent)!important}.ng-dropdown-panel .ng-option-selected{color:#000!important;background-color:color-mix(in oklab,var(--primary) 15%,transparent)!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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"] }, { kind: "component", type: NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "dropdownPosition", "appendTo", "outsideClickEvent", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "tabFocusOnClearButton", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "clearKeepsDisabledOptions", "deselectOnClick", "clearSearchOnAdd", "compareWith", "keyDownFn", "bindLabel", "bindValue", "appearance", "isOpen", "items"], outputs: ["bindLabelChange", "bindValueChange", "appearanceChange", "isOpenChange", "itemsChange", "blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"], exportAs: ["ngSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
804
1008
|
}
|
|
805
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1009
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpSelectComponent, decorators: [{
|
|
806
1010
|
type: Component,
|
|
807
1011
|
args: [{ standalone: true, selector: 'up-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
808
1012
|
class: 'block relative',
|
|
@@ -835,7 +1039,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
835
1039
|
(blur)="touch()"
|
|
836
1040
|
(ngModelChange)="change($event)"
|
|
837
1041
|
/>
|
|
838
|
-
`, styles: [".ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:var(--accent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right-color:color-mix(in oklab,var(--primary) 50%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left:hover{background-color:color-mix(in oklab,var(--primary) 40%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:50%!important;padding-bottom:0!important;transform:translateY(-50%)!important}.ng-select .ng-select-container{transition:all .2s ease}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.75rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--muted-foreground)}.ng-select .ng-select-container .ng-arrow-wrapper{padding-right:.75rem}.ng-select .ng-select-container .ng-clear-wrapper{margin-right:.25rem;transition:color .2s ease}.ng-select .ng-select-container .ng-clear-wrapper:hover .ng-clear{color:var(--destructive)}.ng-dropdown-panel{overflow:hidden;margin-top:.25rem!important;border-color:var(--border)!important;border-radius:calc(var(--radius) - 2px)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ng-dropdown-panel .ng-option-label{color:#000;font-size:1rem}@media screen and (min-width:48rem){.ng-dropdown-panel .ng-option-label{font-size:.875rem}}.ng-dropdown-panel .ng-option:hover,.ng-dropdown-panel .ng-option-marked{background-color:var(--accent)!important}.ng-dropdown-panel .ng-option-selected{color:#000!important;background-color:color-mix(in oklab,var(--primary) 15%,transparent)!important}\n"] }]
|
|
1042
|
+
`, styles: [".ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:var(--accent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right-color:color-mix(in oklab,var(--primary) 50%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left:hover{background-color:color-mix(in oklab,var(--primary) 40%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{opacity:30%;top:50%!important;padding-bottom:0!important;transform:translateY(-50%)!important}.ng-select .ng-select-container{transition:all .2s ease}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.75rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--muted-foreground)}.ng-select .ng-select-container .ng-arrow-wrapper{padding-right:.75rem}.ng-select .ng-select-container .ng-clear-wrapper{margin-right:.25rem;transition:color .2s ease}.ng-select .ng-select-container .ng-clear-wrapper:hover .ng-clear{color:var(--destructive)}.ng-dropdown-panel{overflow:hidden;margin-top:.25rem!important;border-color:var(--border)!important;border-radius:calc(var(--radius) - 2px)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ng-dropdown-panel .ng-option-label{color:#000;font-size:1rem}@media screen and (min-width:48rem){.ng-dropdown-panel .ng-option-label{font-size:.875rem}}.ng-dropdown-panel .ng-option:hover,.ng-dropdown-panel .ng-option-marked{background-color:var(--accent)!important}.ng-dropdown-panel .ng-option-selected{color:#000!important;background-color:color-mix(in oklab,var(--primary) 15%,transparent)!important}\n"] }]
|
|
839
1043
|
}], ctorParameters: () => [], propDecorators: { options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => UpOptionComponent), { isSignal: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], bindLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindLabel", required: false }] }], bindValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindValue", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], inlineClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], addTag: [{ type: i0.Input, args: [{ isSignal: true, alias: "addTag", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], changed: [{ type: i0.Output, args: ["changed"] }], control: [{ type: i0.ContentChild, args: [i0.forwardRef(() => UpFieldControl), { isSignal: true }] }] } });
|
|
840
1044
|
|
|
841
1045
|
class UpCountrySelectComponent extends UpFieldControlComponent {
|
|
@@ -903,8 +1107,8 @@ class UpCountrySelectComponent extends UpFieldControlComponent {
|
|
|
903
1107
|
this.changed.emit(this.countries().find(c => c.code === value));
|
|
904
1108
|
}
|
|
905
1109
|
}
|
|
906
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
907
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
1110
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpCountrySelectComponent, deps: [{ token: i1$1.CountryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1111
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.5", type: UpCountrySelectComponent, isStandalone: true, selector: "up-country-select", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", changed: "changed" }, host: { classAttribute: "block" }, providers: [
|
|
908
1112
|
{
|
|
909
1113
|
provide: UpFieldControl,
|
|
910
1114
|
useExisting: forwardRef(() => UpCountrySelectComponent),
|
|
@@ -929,7 +1133,7 @@ class UpCountrySelectComponent extends UpFieldControlComponent {
|
|
|
929
1133
|
/>
|
|
930
1134
|
`, isInline: true, dependencies: [{ kind: "component", type: UpSelectComponent, selector: "up-select", inputs: ["label", "placeholder", "bindLabel", "bindValue", "appendTo", "class", "loading", "multiple", "required", "disabled", "clearable", "addTag", "searchable", "virtualScroll", "items", "value"], outputs: ["valueChange", "changed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
931
1135
|
}
|
|
932
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpCountrySelectComponent, decorators: [{
|
|
933
1137
|
type: Component,
|
|
934
1138
|
args: [{
|
|
935
1139
|
standalone: true,
|
|
@@ -1041,8 +1245,8 @@ class UpCurrencySelectComponent extends UpFieldControlComponent {
|
|
|
1041
1245
|
this.changed.emit(this.currencies().find(c => c.code === value));
|
|
1042
1246
|
}
|
|
1043
1247
|
}
|
|
1044
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1045
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
1248
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpCurrencySelectComponent, deps: [{ token: i1$1.CurrencyService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1249
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.5", type: UpCurrencySelectComponent, isStandalone: true, selector: "up-currency-select", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", changed: "changed" }, host: { classAttribute: "block" }, providers: [
|
|
1046
1250
|
{
|
|
1047
1251
|
provide: UpFieldControl,
|
|
1048
1252
|
useExisting: forwardRef(() => UpCurrencySelectComponent)
|
|
@@ -1067,7 +1271,7 @@ class UpCurrencySelectComponent extends UpFieldControlComponent {
|
|
|
1067
1271
|
/>
|
|
1068
1272
|
`, isInline: true, dependencies: [{ kind: "component", type: UpSelectComponent, selector: "up-select", inputs: ["label", "placeholder", "bindLabel", "bindValue", "appendTo", "class", "loading", "multiple", "required", "disabled", "clearable", "addTag", "searchable", "virtualScroll", "items", "value"], outputs: ["valueChange", "changed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1069
1273
|
}
|
|
1070
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1274
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpCurrencySelectComponent, decorators: [{
|
|
1071
1275
|
type: Component,
|
|
1072
1276
|
args: [{
|
|
1073
1277
|
standalone: true,
|
|
@@ -1181,8 +1385,8 @@ class UpSearchableSelectComponent extends UpFieldControlComponent {
|
|
|
1181
1385
|
this.changed.emit(this.value());
|
|
1182
1386
|
}
|
|
1183
1387
|
}
|
|
1184
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1185
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.
|
|
1388
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpSearchableSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1389
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.5", type: UpSearchableSelectComponent, isStandalone: true, selector: "up-searchable-select", inputs: { query: { classPropertyName: "query", publicName: "query", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, initialItems: { classPropertyName: "initialItems", publicName: "initialItems", isSignal: true, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, addTag: { classPropertyName: "addTag", publicName: "addTag", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { loading: "loadingChange", value: "valueChange", changed: "changed" }, host: { classAttribute: "block relative" }, providers: [
|
|
1186
1390
|
{
|
|
1187
1391
|
provide: UpFieldControl,
|
|
1188
1392
|
useExisting: forwardRef(() => UpSearchableSelectComponent)
|
|
@@ -1215,9 +1419,9 @@ class UpSearchableSelectComponent extends UpFieldControlComponent {
|
|
|
1215
1419
|
(blur)="touch()"
|
|
1216
1420
|
(change)="change($event)"
|
|
1217
1421
|
/>
|
|
1218
|
-
`, isInline: true, styles: [".ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:var(--accent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right-color:color-mix(in oklab,var(--primary) 50%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left:hover{background-color:color-mix(in oklab,var(--primary) 40%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:50%!important;padding-bottom:0!important;transform:translateY(-50%)!important}.ng-select .ng-select-container{transition:all .2s ease}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.75rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--muted-foreground)}.ng-select .ng-select-container .ng-arrow-wrapper{padding-right:.75rem}.ng-select .ng-select-container .ng-clear-wrapper{margin-right:.25rem;transition:color .2s ease}.ng-select .ng-select-container .ng-clear-wrapper:hover .ng-clear{color:var(--destructive)}.ng-dropdown-panel{overflow:hidden;margin-top:.25rem!important;border-color:var(--border)!important;border-radius:calc(var(--radius) - 2px)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ng-dropdown-panel .ng-option-label{color:#000;font-size:1rem}@media screen and (min-width:48rem){.ng-dropdown-panel .ng-option-label{font-size:.875rem}}.ng-dropdown-panel .ng-option:hover,.ng-dropdown-panel .ng-option-marked{background-color:var(--accent)!important}.ng-dropdown-panel .ng-option-selected{color:#000!important;background-color:color-mix(in oklab,var(--primary) 15%,transparent)!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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"] }, { kind: "component", type: NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "dropdownPosition", "appendTo", "outsideClickEvent", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "tabFocusOnClearButton", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "deselectOnClick", "clearSearchOnAdd", "compareWith", "keyDownFn", "bindLabel", "bindValue", "appearance", "isOpen", "items"], outputs: ["bindLabelChange", "bindValueChange", "appearanceChange", "isOpenChange", "itemsChange", "blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"], exportAs: ["ngSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1422
|
+
`, isInline: true, styles: [".ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:var(--accent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right-color:color-mix(in oklab,var(--primary) 50%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left:hover{background-color:color-mix(in oklab,var(--primary) 40%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{opacity:30%;top:50%!important;padding-bottom:0!important;transform:translateY(-50%)!important}.ng-select .ng-select-container{transition:all .2s ease}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.75rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--muted-foreground)}.ng-select .ng-select-container .ng-arrow-wrapper{padding-right:.75rem}.ng-select .ng-select-container .ng-clear-wrapper{margin-right:.25rem;transition:color .2s ease}.ng-select .ng-select-container .ng-clear-wrapper:hover .ng-clear{color:var(--destructive)}.ng-dropdown-panel{overflow:hidden;margin-top:.25rem!important;border-color:var(--border)!important;border-radius:calc(var(--radius) - 2px)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ng-dropdown-panel .ng-option-label{color:#000;font-size:1rem}@media screen and (min-width:48rem){.ng-dropdown-panel .ng-option-label{font-size:.875rem}}.ng-dropdown-panel .ng-option:hover,.ng-dropdown-panel .ng-option-marked{background-color:var(--accent)!important}.ng-dropdown-panel .ng-option-selected{color:#000!important;background-color:color-mix(in oklab,var(--primary) 15%,transparent)!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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"] }, { kind: "component", type: NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "dropdownPosition", "appendTo", "outsideClickEvent", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "tabFocusOnClearButton", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "clearKeepsDisabledOptions", "deselectOnClick", "clearSearchOnAdd", "compareWith", "keyDownFn", "bindLabel", "bindValue", "appearance", "isOpen", "items"], outputs: ["bindLabelChange", "bindValueChange", "appearanceChange", "isOpenChange", "itemsChange", "blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"], exportAs: ["ngSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1219
1423
|
}
|
|
1220
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1424
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpSearchableSelectComponent, decorators: [{
|
|
1221
1425
|
type: Component,
|
|
1222
1426
|
args: [{ standalone: true, selector: 'up-searchable-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
1223
1427
|
class: 'block relative',
|
|
@@ -1257,7 +1461,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
1257
1461
|
(blur)="touch()"
|
|
1258
1462
|
(change)="change($event)"
|
|
1259
1463
|
/>
|
|
1260
|
-
`, styles: [".ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:var(--accent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right-color:color-mix(in oklab,var(--primary) 50%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left:hover{background-color:color-mix(in oklab,var(--primary) 40%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:50%!important;padding-bottom:0!important;transform:translateY(-50%)!important}.ng-select .ng-select-container{transition:all .2s ease}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.75rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--muted-foreground)}.ng-select .ng-select-container .ng-arrow-wrapper{padding-right:.75rem}.ng-select .ng-select-container .ng-clear-wrapper{margin-right:.25rem;transition:color .2s ease}.ng-select .ng-select-container .ng-clear-wrapper:hover .ng-clear{color:var(--destructive)}.ng-dropdown-panel{overflow:hidden;margin-top:.25rem!important;border-color:var(--border)!important;border-radius:calc(var(--radius) - 2px)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ng-dropdown-panel .ng-option-label{color:#000;font-size:1rem}@media screen and (min-width:48rem){.ng-dropdown-panel .ng-option-label{font-size:.875rem}}.ng-dropdown-panel .ng-option:hover,.ng-dropdown-panel .ng-option-marked{background-color:var(--accent)!important}.ng-dropdown-panel .ng-option-selected{color:#000!important;background-color:color-mix(in oklab,var(--primary) 15%,transparent)!important}\n"] }]
|
|
1464
|
+
`, styles: [".ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:var(--accent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right-color:color-mix(in oklab,var(--primary) 50%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left:hover{background-color:color-mix(in oklab,var(--primary) 40%,transparent)!important}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{opacity:30%;top:50%!important;padding-bottom:0!important;transform:translateY(-50%)!important}.ng-select .ng-select-container{transition:all .2s ease}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.75rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--muted-foreground)}.ng-select .ng-select-container .ng-arrow-wrapper{padding-right:.75rem}.ng-select .ng-select-container .ng-clear-wrapper{margin-right:.25rem;transition:color .2s ease}.ng-select .ng-select-container .ng-clear-wrapper:hover .ng-clear{color:var(--destructive)}.ng-dropdown-panel{overflow:hidden;margin-top:.25rem!important;border-color:var(--border)!important;border-radius:calc(var(--radius) - 2px)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ng-dropdown-panel .ng-option-label{color:#000;font-size:1rem}@media screen and (min-width:48rem){.ng-dropdown-panel .ng-option-label{font-size:.875rem}}.ng-dropdown-panel .ng-option:hover,.ng-dropdown-panel .ng-option-marked{background-color:var(--accent)!important}.ng-dropdown-panel .ng-option-selected{color:#000!important;background-color:color-mix(in oklab,var(--primary) 15%,transparent)!important}\n"] }]
|
|
1261
1465
|
}], ctorParameters: () => [], propDecorators: { query: [{ type: i0.Input, args: [{ isSignal: true, alias: "query", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], initialItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialItems", required: false }] }], bindLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindLabel", required: false }] }], bindValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindValue", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], inlineClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], addTag: [{ type: i0.Input, args: [{ isSignal: true, alias: "addTag", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }, { type: i0.Output, args: ["loadingChange"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], changed: [{ type: i0.Output, args: ["changed"] }], control: [{ type: i0.ContentChild, args: [i0.forwardRef(() => UpFieldControl), { isSignal: true }] }] } });
|
|
1262
1466
|
|
|
1263
1467
|
class UpRateGroupCodeSelectComponent extends UpFieldControlComponent {
|
|
@@ -1335,8 +1539,8 @@ class UpRateGroupCodeSelectComponent extends UpFieldControlComponent {
|
|
|
1335
1539
|
this.changed.emit(value);
|
|
1336
1540
|
}
|
|
1337
1541
|
}
|
|
1338
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1339
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
1542
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpRateGroupCodeSelectComponent, deps: [{ token: i1$1.RateGroupCodeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1543
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.5", type: UpRateGroupCodeSelectComponent, isStandalone: true, selector: "up-rate-group-code-select", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", changed: "changed" }, host: { classAttribute: "block" }, providers: [
|
|
1340
1544
|
{
|
|
1341
1545
|
provide: UpFieldControl,
|
|
1342
1546
|
useExisting: forwardRef(() => UpRateGroupCodeSelectComponent),
|
|
@@ -1361,7 +1565,7 @@ class UpRateGroupCodeSelectComponent extends UpFieldControlComponent {
|
|
|
1361
1565
|
/>
|
|
1362
1566
|
`, isInline: true, dependencies: [{ kind: "component", type: UpSearchableSelectComponent, selector: "up-searchable-select", inputs: ["query", "label", "placeholder", "initialItems", "bindLabel", "bindValue", "appendTo", "class", "addTag", "multiple", "required", "disabled", "clearable", "virtualScroll", "loading", "value"], outputs: ["loadingChange", "valueChange", "changed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1363
1567
|
}
|
|
1364
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1568
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpRateGroupCodeSelectComponent, decorators: [{
|
|
1365
1569
|
type: Component,
|
|
1366
1570
|
args: [{
|
|
1367
1571
|
standalone: true,
|
|
@@ -1453,8 +1657,8 @@ class UpDatepickerComponent extends UpFieldControlComponent {
|
|
|
1453
1657
|
this._onTouched();
|
|
1454
1658
|
this._isTouched = true;
|
|
1455
1659
|
}
|
|
1456
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1457
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.
|
|
1660
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1661
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.5", type: UpDatepickerComponent, isStandalone: true, selector: "up-datepicker", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
1458
1662
|
{
|
|
1459
1663
|
provide: UpFieldControl,
|
|
1460
1664
|
useExisting: forwardRef(() => UpDatepickerComponent),
|
|
@@ -1498,7 +1702,7 @@ class UpDatepickerComponent extends UpFieldControlComponent {
|
|
|
1498
1702
|
</up-popover>
|
|
1499
1703
|
`, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: UpButtonDirective, selector: "[upButton]", inputs: ["size", "variant", "class"], exportAs: ["upButton"] }, { kind: "component", type: UpPopoverComponent, selector: "up-popover", inputs: ["placement", "alignment", "placementOffset", "alignmentOffset"] }, { kind: "component", type: UpCalendarComponent, selector: "up-calendar", inputs: ["minDate", "maxDate", "variant", "activeDay", "activeRangeDay"], outputs: ["selected", "rangeSelected", "activeDayChange", "activeRangeDayChange"] }, { kind: "directive", type: UpPopoverTriggerDirective, selector: "[upPopoverTrigger]", exportAs: ["upPopoverTrigger"] }, { kind: "directive", type: UpPopoverContentRefDirective, selector: "[upPopoverContentRef]", exportAs: ["upPopoverContentRef"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1500
1704
|
}
|
|
1501
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1705
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpDatepickerComponent, decorators: [{
|
|
1502
1706
|
type: Component,
|
|
1503
1707
|
args: [{
|
|
1504
1708
|
standalone: true,
|
|
@@ -1609,8 +1813,8 @@ class UpDateRangePickerComponent extends UpFieldControlComponent {
|
|
|
1609
1813
|
this._onTouched();
|
|
1610
1814
|
this._isTouched = true;
|
|
1611
1815
|
}
|
|
1612
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1613
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
1816
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpDateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1817
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.5", type: UpDateRangePickerComponent, isStandalone: true, selector: "up-date-range-picker", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
1614
1818
|
{
|
|
1615
1819
|
provide: UpFieldControl,
|
|
1616
1820
|
useExisting: forwardRef(() => UpDateRangePickerComponent)
|
|
@@ -1655,7 +1859,7 @@ class UpDateRangePickerComponent extends UpFieldControlComponent {
|
|
|
1655
1859
|
</up-popover>
|
|
1656
1860
|
`, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: UpButtonDirective, selector: "[upButton]", inputs: ["size", "variant", "class"], exportAs: ["upButton"] }, { kind: "component", type: UpPopoverComponent, selector: "up-popover", inputs: ["placement", "alignment", "placementOffset", "alignmentOffset"] }, { kind: "component", type: UpCalendarComponent, selector: "up-calendar", inputs: ["minDate", "maxDate", "variant", "activeDay", "activeRangeDay"], outputs: ["selected", "rangeSelected", "activeDayChange", "activeRangeDayChange"] }, { kind: "directive", type: UpPopoverTriggerDirective, selector: "[upPopoverTrigger]", exportAs: ["upPopoverTrigger"] }, { kind: "directive", type: UpPopoverContentRefDirective, selector: "[upPopoverContentRef]", exportAs: ["upPopoverContentRef"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1657
1861
|
}
|
|
1658
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1862
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpDateRangePickerComponent, decorators: [{
|
|
1659
1863
|
type: Component,
|
|
1660
1864
|
args: [{
|
|
1661
1865
|
standalone: true,
|
|
@@ -1717,68 +1921,707 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
1717
1921
|
}]
|
|
1718
1922
|
}], ctorParameters: () => [], propDecorators: { placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], minDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDate", required: false }] }], maxDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDate", required: false }] }], inlineClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], dateFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
1719
1923
|
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
this.hint = input('', ...(ngDevMode ? [{ debugName: "hint" }] : []));
|
|
1724
|
-
this.label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
1725
|
-
this.inlineClass = input('', { ...(ngDevMode ? { debugName: "inlineClass" } : {}), alias: 'class' });
|
|
1726
|
-
this.control = contentChild(UpFieldControl, ...(ngDevMode ? [{ debugName: "control" }] : []));
|
|
1727
|
-
this._computedClass = computed(() => {
|
|
1728
|
-
return up('block space-y-2', this.inlineClass());
|
|
1729
|
-
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
1730
|
-
effect(() => {
|
|
1731
|
-
if (!this.control()) {
|
|
1732
|
-
throw new Error('Form field must contain a field control, eg: input, checkbox, textarea, etc.');
|
|
1733
|
-
}
|
|
1734
|
-
this.control().setControlName(this.label());
|
|
1735
|
-
});
|
|
1924
|
+
function updateScrollSelection(el, itemHeight, maxIndex, setIndex) {
|
|
1925
|
+
if (!el) {
|
|
1926
|
+
return;
|
|
1736
1927
|
}
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
has-[input[type='checkbox']]:flex-row has-[input[type='checkbox']]:items-center
|
|
1744
|
-
"
|
|
1745
|
-
>
|
|
1746
|
-
@if (label()) {
|
|
1747
|
-
<label
|
|
1748
|
-
class="
|
|
1749
|
-
text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 select-none
|
|
1750
|
-
group-has-[input[type='checkbox']]:order-2 group-has-[input[type='radio']]:order-2
|
|
1751
|
-
"
|
|
1752
|
-
[for]="name()"
|
|
1753
|
-
[class.text-destructive]="control()?.error()"
|
|
1754
|
-
>
|
|
1755
|
-
{{ label() }}
|
|
1756
|
-
</label>
|
|
1757
|
-
}
|
|
1758
|
-
|
|
1759
|
-
<ng-content />
|
|
1760
|
-
</div>
|
|
1761
|
-
|
|
1762
|
-
@if (control()?.error()) {
|
|
1763
|
-
<p class="text-xs font-medium text-destructive">
|
|
1764
|
-
{{ control()?.error() }}
|
|
1765
|
-
</p>
|
|
1928
|
+
const index = Math.round(el.scrollTop / itemHeight);
|
|
1929
|
+
setIndex(Math.max(0, Math.min(maxIndex, index)));
|
|
1930
|
+
}
|
|
1931
|
+
function snapScroll(el, itemHeight, index) {
|
|
1932
|
+
if (!el) {
|
|
1933
|
+
return;
|
|
1766
1934
|
}
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1935
|
+
el.scrollTo({
|
|
1936
|
+
behavior: 'smooth',
|
|
1937
|
+
top: index * itemHeight,
|
|
1938
|
+
});
|
|
1939
|
+
}
|
|
1940
|
+
function scrollImmediate(el, itemHeight, index) {
|
|
1941
|
+
if (!el) {
|
|
1942
|
+
return;
|
|
1771
1943
|
}
|
|
1772
|
-
|
|
1944
|
+
el.scrollTop = index * itemHeight;
|
|
1773
1945
|
}
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1946
|
+
function findClosestIndex(values, target) {
|
|
1947
|
+
let closestIdx = 0;
|
|
1948
|
+
let minDiff = Math.abs(values[0] - target);
|
|
1949
|
+
for (let i = 1; i < values.length; i++) {
|
|
1950
|
+
const diff = Math.abs(values[i] - target);
|
|
1951
|
+
if (diff < minDiff) {
|
|
1952
|
+
minDiff = diff;
|
|
1953
|
+
closestIdx = i;
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
return closestIdx;
|
|
1957
|
+
}
|
|
1958
|
+
|
|
1959
|
+
class OpacityPipe {
|
|
1960
|
+
transform(itemIndex, selectedIndex) {
|
|
1961
|
+
const distance = Math.abs(itemIndex - selectedIndex);
|
|
1962
|
+
switch (distance) {
|
|
1963
|
+
case 0:
|
|
1964
|
+
return 'opacity-100';
|
|
1965
|
+
case 1:
|
|
1966
|
+
return 'opacity-20';
|
|
1967
|
+
case 2:
|
|
1968
|
+
return 'opacity-10';
|
|
1969
|
+
default:
|
|
1970
|
+
return 'opacity-15';
|
|
1971
|
+
}
|
|
1972
|
+
}
|
|
1973
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: OpacityPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1974
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.5", ngImport: i0, type: OpacityPipe, isStandalone: true, name: "opacity" }); }
|
|
1975
|
+
}
|
|
1976
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: OpacityPipe, decorators: [{
|
|
1977
|
+
type: Pipe,
|
|
1978
|
+
args: [{
|
|
1979
|
+
name: 'opacity',
|
|
1980
|
+
pure: true,
|
|
1981
|
+
}]
|
|
1982
|
+
}] });
|
|
1983
|
+
|
|
1984
|
+
class UpTimeComponent {
|
|
1985
|
+
constructor() {
|
|
1986
|
+
this.hoursScroll = viewChild('hoursScroll', ...(ngDevMode ? [{ debugName: "hoursScroll" }] : []));
|
|
1987
|
+
this.minutesScroll = viewChild('minutesScroll', ...(ngDevMode ? [{ debugName: "minutesScroll" }] : []));
|
|
1988
|
+
this.minuteInterval = input(1, ...(ngDevMode ? [{ debugName: "minuteInterval" }] : []));
|
|
1989
|
+
this.minTime = input(...(ngDevMode ? [undefined, { debugName: "minTime" }] : []));
|
|
1990
|
+
this.maxTime = input(...(ngDevMode ? [undefined, { debugName: "maxTime" }] : []));
|
|
1991
|
+
this.value = input({ hour: 0, minute: 0 }, ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
1992
|
+
this.timeChanged = output();
|
|
1993
|
+
this.selectedHourIndex = signal(0, ...(ngDevMode ? [{ debugName: "selectedHourIndex" }] : []));
|
|
1994
|
+
this.selectedMinuteIndex = signal(0, ...(ngDevMode ? [{ debugName: "selectedMinuteIndex" }] : []));
|
|
1995
|
+
this.minHour = computed(() => this.minTime()?.hour ?? 0, ...(ngDevMode ? [{ debugName: "minHour" }] : []));
|
|
1996
|
+
this.maxHour = computed(() => this.maxTime()?.hour ?? 23, ...(ngDevMode ? [{ debugName: "maxHour" }] : []));
|
|
1997
|
+
this.minMinute = computed(() => this.minTime()?.minute ?? 0, ...(ngDevMode ? [{ debugName: "minMinute" }] : []));
|
|
1998
|
+
this.maxMinute = computed(() => this.maxTime()?.minute ?? 59, ...(ngDevMode ? [{ debugName: "maxMinute" }] : []));
|
|
1999
|
+
this.hours = Array.from({ length: 24 }, (_, i) => i);
|
|
2000
|
+
this.minutes = computed(() => {
|
|
2001
|
+
const interval = Math.max(1, Math.min(60, this.minuteInterval()));
|
|
2002
|
+
const count = Math.ceil(60 / interval);
|
|
2003
|
+
return Array.from({ length: count }, (_, i) => i * interval).filter((m) => m < 60);
|
|
2004
|
+
}, ...(ngDevMode ? [{ debugName: "minutes" }] : []));
|
|
2005
|
+
this.hourInvisible = computed(() => {
|
|
2006
|
+
return this.hours.map((hour) => {
|
|
2007
|
+
return hour < (this.minTime()?.hour ?? 0) ||
|
|
2008
|
+
hour > (this.maxTime()?.hour ?? 23);
|
|
2009
|
+
});
|
|
2010
|
+
}, ...(ngDevMode ? [{ debugName: "hourInvisible" }] : []));
|
|
2011
|
+
this.minuteInvisible = computed(() => {
|
|
2012
|
+
const selectedHour = this.hours[this.selectedHourIndex()] ?? 0;
|
|
2013
|
+
return this.minutes().map((minute) => (selectedHour === this.minHour() && minute < this.minMinute()) ||
|
|
2014
|
+
(selectedHour === this.maxHour() && minute > this.maxMinute()));
|
|
2015
|
+
}, ...(ngDevMode ? [{ debugName: "minuteInvisible" }] : []));
|
|
2016
|
+
this.validMinuteRange = computed(() => {
|
|
2017
|
+
const selectedHour = this.hours[this.selectedHourIndex()] ?? 0;
|
|
2018
|
+
let min = 0;
|
|
2019
|
+
let max = 59;
|
|
2020
|
+
if (selectedHour === this.minHour()) {
|
|
2021
|
+
min = this.minMinute();
|
|
2022
|
+
}
|
|
2023
|
+
if (selectedHour === this.maxHour()) {
|
|
2024
|
+
max = this.maxMinute();
|
|
2025
|
+
}
|
|
2026
|
+
return { min, max };
|
|
2027
|
+
}, ...(ngDevMode ? [{ debugName: "validMinuteRange" }] : []));
|
|
2028
|
+
this.itemHeight = 40;
|
|
2029
|
+
this.visibleItems = 5;
|
|
2030
|
+
this.containerHeight = this.itemHeight * this.visibleItems;
|
|
2031
|
+
this.padding = (this.itemHeight * this.visibleItems - this.itemHeight) / 2;
|
|
2032
|
+
this.highlightTop = this.padding;
|
|
2033
|
+
this.scrollTimeout = null;
|
|
2034
|
+
this.lastEmittedTime = null;
|
|
2035
|
+
afterNextRender(() => this.initializeScrollPosition());
|
|
2036
|
+
}
|
|
2037
|
+
initializeScrollPosition() {
|
|
2038
|
+
const hourIdx = this.hours.indexOf(this.value().hour);
|
|
2039
|
+
const minuteIdx = findClosestIndex(this.minutes(), this.value().minute);
|
|
2040
|
+
if (hourIdx !== -1) {
|
|
2041
|
+
this.selectedHourIndex.set(hourIdx);
|
|
2042
|
+
}
|
|
2043
|
+
this.selectedMinuteIndex.set(minuteIdx);
|
|
2044
|
+
this.scrollToHourImmediate(hourIdx);
|
|
2045
|
+
this.scrollToMinuteImmediate(minuteIdx);
|
|
2046
|
+
this.emitTime();
|
|
2047
|
+
}
|
|
2048
|
+
onHoursScroll() {
|
|
2049
|
+
this.updateHourSelection();
|
|
2050
|
+
this.debounceEmit();
|
|
2051
|
+
}
|
|
2052
|
+
onMinutesScroll() {
|
|
2053
|
+
this.updateMinuteSelection();
|
|
2054
|
+
this.debounceEmit();
|
|
2055
|
+
}
|
|
2056
|
+
debounceEmit() {
|
|
2057
|
+
clearTimeout(this.scrollTimeout);
|
|
2058
|
+
this.scrollTimeout = setTimeout(() => {
|
|
2059
|
+
this.clampSelectionToValidRange();
|
|
2060
|
+
this.emitTime();
|
|
2061
|
+
}, 150);
|
|
2062
|
+
}
|
|
2063
|
+
clampSelectionToValidRange() {
|
|
2064
|
+
const hours = this.hours;
|
|
2065
|
+
const minutes = this.minutes();
|
|
2066
|
+
let hourIdx = this.selectedHourIndex();
|
|
2067
|
+
const currentHour = hours[hourIdx] ?? 0;
|
|
2068
|
+
if (currentHour < this.minHour()) {
|
|
2069
|
+
hourIdx = hours.indexOf(this.minHour());
|
|
2070
|
+
if (hourIdx === -1) {
|
|
2071
|
+
for (let i = 0; i < hours.length; i++) {
|
|
2072
|
+
if (hours[i] >= this.minHour()) {
|
|
2073
|
+
hourIdx = i;
|
|
2074
|
+
break;
|
|
2075
|
+
}
|
|
2076
|
+
}
|
|
2077
|
+
}
|
|
2078
|
+
this.selectedHourIndex.set(hourIdx);
|
|
2079
|
+
this.scrollToHourImmediate(hourIdx);
|
|
2080
|
+
}
|
|
2081
|
+
else if (currentHour > this.maxHour()) {
|
|
2082
|
+
hourIdx = hours.indexOf(this.maxHour());
|
|
2083
|
+
if (hourIdx === -1) {
|
|
2084
|
+
for (let i = hours.length - 1; i >= 0; i--) {
|
|
2085
|
+
if (hours[i] <= this.maxHour()) {
|
|
2086
|
+
hourIdx = i;
|
|
2087
|
+
break;
|
|
2088
|
+
}
|
|
2089
|
+
}
|
|
2090
|
+
}
|
|
2091
|
+
this.selectedHourIndex.set(hourIdx);
|
|
2092
|
+
this.scrollToHourImmediate(hourIdx);
|
|
2093
|
+
}
|
|
2094
|
+
const { min: minMinute, max: maxMinute } = this.validMinuteRange();
|
|
2095
|
+
let minuteIdx = this.selectedMinuteIndex();
|
|
2096
|
+
const currentMinute = minutes[minuteIdx] ?? 0;
|
|
2097
|
+
if (currentMinute < minMinute) {
|
|
2098
|
+
let newIdx = -1;
|
|
2099
|
+
for (let i = 0; i < minutes.length; i++) {
|
|
2100
|
+
if (minutes[i] >= minMinute) {
|
|
2101
|
+
newIdx = i;
|
|
2102
|
+
break;
|
|
2103
|
+
}
|
|
2104
|
+
}
|
|
2105
|
+
if (newIdx !== -1) {
|
|
2106
|
+
this.selectedMinuteIndex.set(newIdx);
|
|
2107
|
+
this.scrollToMinuteImmediate(newIdx);
|
|
2108
|
+
}
|
|
2109
|
+
}
|
|
2110
|
+
else if (currentMinute > maxMinute) {
|
|
2111
|
+
let newIdx = -1;
|
|
2112
|
+
for (let i = minutes.length - 1; i >= 0; i--) {
|
|
2113
|
+
if (minutes[i] <= maxMinute) {
|
|
2114
|
+
newIdx = i;
|
|
2115
|
+
break;
|
|
2116
|
+
}
|
|
2117
|
+
}
|
|
2118
|
+
if (newIdx !== -1) {
|
|
2119
|
+
this.selectedMinuteIndex.set(newIdx);
|
|
2120
|
+
this.scrollToMinuteImmediate(newIdx);
|
|
2121
|
+
}
|
|
2122
|
+
}
|
|
2123
|
+
}
|
|
2124
|
+
updateHourSelection() {
|
|
2125
|
+
updateScrollSelection(this.hoursScroll().nativeElement, this.itemHeight, this.hours.length - 1, (v) => this.selectedHourIndex.set(v));
|
|
2126
|
+
}
|
|
2127
|
+
updateMinuteSelection() {
|
|
2128
|
+
updateScrollSelection(this.minutesScroll().nativeElement, this.itemHeight, this.minutes().length - 1, (v) => this.selectedMinuteIndex.set(v));
|
|
2129
|
+
}
|
|
2130
|
+
snapHours() {
|
|
2131
|
+
snapScroll(this.hoursScroll().nativeElement, this.itemHeight, this.selectedHourIndex());
|
|
2132
|
+
}
|
|
2133
|
+
snapMinutes() {
|
|
2134
|
+
snapScroll(this.minutesScroll().nativeElement, this.itemHeight, this.selectedMinuteIndex());
|
|
2135
|
+
}
|
|
2136
|
+
scrollToHour(index) {
|
|
2137
|
+
const clamped = Math.max(0, Math.min(23, index));
|
|
2138
|
+
this.selectedHourIndex.set(clamped);
|
|
2139
|
+
this.scrollToHourImmediate(clamped);
|
|
2140
|
+
this.emitTime();
|
|
2141
|
+
}
|
|
2142
|
+
scrollToMinute(index) {
|
|
2143
|
+
const maxIdx = this.minutes().length - 1;
|
|
2144
|
+
const clamped = Math.max(0, Math.min(maxIdx, index));
|
|
2145
|
+
this.selectedMinuteIndex.set(clamped);
|
|
2146
|
+
this.scrollToMinuteImmediate(clamped);
|
|
2147
|
+
this.emitTime();
|
|
2148
|
+
}
|
|
2149
|
+
scrollToHourImmediate(index) {
|
|
2150
|
+
scrollImmediate(this.hoursScroll().nativeElement, this.itemHeight, index);
|
|
2151
|
+
}
|
|
2152
|
+
scrollToMinuteImmediate(index) {
|
|
2153
|
+
scrollImmediate(this.minutesScroll().nativeElement, this.itemHeight, index);
|
|
2154
|
+
}
|
|
2155
|
+
clampTime(time) {
|
|
2156
|
+
let { hour, minute } = time;
|
|
2157
|
+
const min = this.minTime();
|
|
2158
|
+
const max = this.maxTime();
|
|
2159
|
+
if (min) {
|
|
2160
|
+
if (hour < (min.hour ?? 0)) {
|
|
2161
|
+
hour = min.hour;
|
|
2162
|
+
minute = min.minute ?? 0;
|
|
2163
|
+
}
|
|
2164
|
+
else if (hour === (min.hour ?? 0) && min.minute !== undefined) {
|
|
2165
|
+
minute = Math.max(min.minute, minute);
|
|
2166
|
+
}
|
|
2167
|
+
}
|
|
2168
|
+
if (max) {
|
|
2169
|
+
if (hour > (max.hour ?? 23)) {
|
|
2170
|
+
hour = max.hour;
|
|
2171
|
+
minute = max.minute ?? 59;
|
|
2172
|
+
}
|
|
2173
|
+
else if (hour === (max.hour ?? 23) && max.minute !== undefined) {
|
|
2174
|
+
minute = Math.min(max.minute, minute);
|
|
2175
|
+
}
|
|
2176
|
+
}
|
|
2177
|
+
const minuteValues = this.minutes();
|
|
2178
|
+
if (!minuteValues.includes(minute)) {
|
|
2179
|
+
let closest = minuteValues[0];
|
|
2180
|
+
let minDiff = Math.abs(minuteValues[0] - minute);
|
|
2181
|
+
for (let m of minuteValues) {
|
|
2182
|
+
const diff = Math.abs(m - minute);
|
|
2183
|
+
if (diff < minDiff) {
|
|
2184
|
+
closest = m;
|
|
2185
|
+
minDiff = diff;
|
|
2186
|
+
}
|
|
2187
|
+
}
|
|
2188
|
+
minute = closest;
|
|
2189
|
+
}
|
|
2190
|
+
return { hour, minute };
|
|
2191
|
+
}
|
|
2192
|
+
emitTime() {
|
|
2193
|
+
let time = {
|
|
2194
|
+
hour: this.hours[this.selectedHourIndex()],
|
|
2195
|
+
minute: this.minutes()[this.selectedMinuteIndex()],
|
|
2196
|
+
};
|
|
2197
|
+
time = this.clampTime(time);
|
|
2198
|
+
if (!this.lastEmittedTime ||
|
|
2199
|
+
this.lastEmittedTime.hour !== time.hour ||
|
|
2200
|
+
this.lastEmittedTime.minute !== time.minute) {
|
|
2201
|
+
this.lastEmittedTime = time;
|
|
2202
|
+
this.timeChanged.emit(time);
|
|
2203
|
+
}
|
|
2204
|
+
}
|
|
2205
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpTimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2206
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: UpTimeComponent, isStandalone: true, selector: "up-time", inputs: { minuteInterval: { classPropertyName: "minuteInterval", publicName: "minuteInterval", isSignal: true, isRequired: false, transformFunction: null }, minTime: { classPropertyName: "minTime", publicName: "minTime", isSignal: true, isRequired: false, transformFunction: null }, maxTime: { classPropertyName: "maxTime", publicName: "maxTime", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { timeChanged: "timeChanged" }, viewQueries: [{ propertyName: "hoursScroll", first: true, predicate: ["hoursScroll"], descendants: true, isSignal: true }, { propertyName: "minutesScroll", first: true, predicate: ["minutesScroll"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
2207
|
+
<div
|
|
2208
|
+
class="relative w-37 flex gap-2 rounded-xl border border-border bg-white p-3 shadow-lg"
|
|
2209
|
+
[style.height.px]="containerHeight"
|
|
2210
|
+
>
|
|
2211
|
+
<!-- Hours scroll wheel -->
|
|
2212
|
+
<div class="flex-1 relative overflow-hidden">
|
|
2213
|
+
<div
|
|
2214
|
+
class="
|
|
2215
|
+
h-full overflow-y-scroll snap-y snap-mandatory overscroll-contain
|
|
2216
|
+
[&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]
|
|
2217
|
+
"
|
|
2218
|
+
(scroll)="onHoursScroll()"
|
|
2219
|
+
|
|
2220
|
+
#hoursScroll
|
|
2221
|
+
>
|
|
2222
|
+
<!-- Top padding -->
|
|
2223
|
+
<div [style.height.px]="padding"></div>
|
|
2224
|
+
|
|
2225
|
+
<!-- Hour items -->
|
|
2226
|
+
@for (hour of hours; track $index) {
|
|
2227
|
+
<div
|
|
2228
|
+
[class.invisible]="hourInvisible()[$index]"
|
|
2229
|
+
[class]="
|
|
2230
|
+
'h-10 flex items-center justify-center cursor-pointer transition-opacity duration-200 snap-center ' +
|
|
2231
|
+
($index | opacity: selectedHourIndex())
|
|
2232
|
+
"
|
|
2233
|
+
(click)="scrollToHour($index)"
|
|
2234
|
+
>
|
|
2235
|
+
<span class="text-xl font-medium">
|
|
2236
|
+
{{ hour | number:'2.0-0' }}
|
|
2237
|
+
</span>
|
|
2238
|
+
</div>
|
|
2239
|
+
}
|
|
2240
|
+
|
|
2241
|
+
<!-- Bottom padding -->
|
|
2242
|
+
<div [style.height.px]="padding"></div>
|
|
2243
|
+
</div>
|
|
2244
|
+
</div>
|
|
2245
|
+
|
|
2246
|
+
<!-- Minutes scroll wheel -->
|
|
2247
|
+
<div class="flex-1 relative overflow-hidden">
|
|
2248
|
+
<div
|
|
2249
|
+
#minutesScroll
|
|
2250
|
+
class="
|
|
2251
|
+
h-full overflow-y-scroll snap-y snap-mandatory overscroll-contain
|
|
2252
|
+
[&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]
|
|
2253
|
+
"
|
|
2254
|
+
(scroll)="onMinutesScroll()"
|
|
2255
|
+
>
|
|
2256
|
+
<!-- Top padding -->
|
|
2257
|
+
<div [style.height.px]="padding"></div>
|
|
2258
|
+
|
|
2259
|
+
<!-- Minute items -->
|
|
2260
|
+
@for (minute of minutes(); track $index) {
|
|
2261
|
+
<div
|
|
2262
|
+
[class.invisible]="minuteInvisible()[$index]"
|
|
2263
|
+
[class]="
|
|
2264
|
+
'h-10 flex items-center justify-center cursor-pointer transition-opacity duration-200 snap-center ' +
|
|
2265
|
+
($index | opacity: selectedMinuteIndex())
|
|
2266
|
+
"
|
|
2267
|
+
(click)="scrollToMinute($index)"
|
|
2268
|
+
>
|
|
2269
|
+
<span class="text-xl font-medium">
|
|
2270
|
+
{{ minute | number:'2.0-0' }}
|
|
2271
|
+
</span>
|
|
2272
|
+
</div>
|
|
2273
|
+
}
|
|
2274
|
+
|
|
2275
|
+
<!-- Bottom padding -->
|
|
2276
|
+
<div [style.height.px]="padding"></div>
|
|
2277
|
+
</div>
|
|
2278
|
+
</div>
|
|
2279
|
+
|
|
2280
|
+
<!-- Center highlight -->
|
|
2281
|
+
<div
|
|
2282
|
+
class="absolute inset-x-0 left-3 right-3 pointer-events-none flex items-center justify-center"
|
|
2283
|
+
[style.top.px]="highlightTop"
|
|
2284
|
+
[style.height.px]="itemHeight"
|
|
2285
|
+
>
|
|
2286
|
+
<div class="flex items-center justify-center font-medium w-full h-full bg-accent/30 border border-primary rounded-md shadow-inner">
|
|
2287
|
+
:
|
|
2288
|
+
</div>
|
|
2289
|
+
</div>
|
|
2290
|
+
</div>
|
|
2291
|
+
`, isInline: true, dependencies: [{ kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "pipe", type: OpacityPipe, name: "opacity" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2292
|
+
}
|
|
2293
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpTimeComponent, decorators: [{
|
|
2294
|
+
type: Component,
|
|
2295
|
+
args: [{
|
|
2296
|
+
selector: 'up-time',
|
|
2297
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2298
|
+
imports: [
|
|
2299
|
+
DecimalPipe,
|
|
2300
|
+
OpacityPipe,
|
|
2301
|
+
],
|
|
2302
|
+
template: `
|
|
2303
|
+
<div
|
|
2304
|
+
class="relative w-37 flex gap-2 rounded-xl border border-border bg-white p-3 shadow-lg"
|
|
2305
|
+
[style.height.px]="containerHeight"
|
|
2306
|
+
>
|
|
2307
|
+
<!-- Hours scroll wheel -->
|
|
2308
|
+
<div class="flex-1 relative overflow-hidden">
|
|
2309
|
+
<div
|
|
2310
|
+
class="
|
|
2311
|
+
h-full overflow-y-scroll snap-y snap-mandatory overscroll-contain
|
|
2312
|
+
[&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]
|
|
2313
|
+
"
|
|
2314
|
+
(scroll)="onHoursScroll()"
|
|
2315
|
+
|
|
2316
|
+
#hoursScroll
|
|
2317
|
+
>
|
|
2318
|
+
<!-- Top padding -->
|
|
2319
|
+
<div [style.height.px]="padding"></div>
|
|
2320
|
+
|
|
2321
|
+
<!-- Hour items -->
|
|
2322
|
+
@for (hour of hours; track $index) {
|
|
2323
|
+
<div
|
|
2324
|
+
[class.invisible]="hourInvisible()[$index]"
|
|
2325
|
+
[class]="
|
|
2326
|
+
'h-10 flex items-center justify-center cursor-pointer transition-opacity duration-200 snap-center ' +
|
|
2327
|
+
($index | opacity: selectedHourIndex())
|
|
2328
|
+
"
|
|
2329
|
+
(click)="scrollToHour($index)"
|
|
2330
|
+
>
|
|
2331
|
+
<span class="text-xl font-medium">
|
|
2332
|
+
{{ hour | number:'2.0-0' }}
|
|
2333
|
+
</span>
|
|
2334
|
+
</div>
|
|
2335
|
+
}
|
|
2336
|
+
|
|
2337
|
+
<!-- Bottom padding -->
|
|
2338
|
+
<div [style.height.px]="padding"></div>
|
|
2339
|
+
</div>
|
|
2340
|
+
</div>
|
|
2341
|
+
|
|
2342
|
+
<!-- Minutes scroll wheel -->
|
|
2343
|
+
<div class="flex-1 relative overflow-hidden">
|
|
2344
|
+
<div
|
|
2345
|
+
#minutesScroll
|
|
2346
|
+
class="
|
|
2347
|
+
h-full overflow-y-scroll snap-y snap-mandatory overscroll-contain
|
|
2348
|
+
[&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]
|
|
2349
|
+
"
|
|
2350
|
+
(scroll)="onMinutesScroll()"
|
|
2351
|
+
>
|
|
2352
|
+
<!-- Top padding -->
|
|
2353
|
+
<div [style.height.px]="padding"></div>
|
|
2354
|
+
|
|
2355
|
+
<!-- Minute items -->
|
|
2356
|
+
@for (minute of minutes(); track $index) {
|
|
2357
|
+
<div
|
|
2358
|
+
[class.invisible]="minuteInvisible()[$index]"
|
|
2359
|
+
[class]="
|
|
2360
|
+
'h-10 flex items-center justify-center cursor-pointer transition-opacity duration-200 snap-center ' +
|
|
2361
|
+
($index | opacity: selectedMinuteIndex())
|
|
2362
|
+
"
|
|
2363
|
+
(click)="scrollToMinute($index)"
|
|
2364
|
+
>
|
|
2365
|
+
<span class="text-xl font-medium">
|
|
2366
|
+
{{ minute | number:'2.0-0' }}
|
|
2367
|
+
</span>
|
|
2368
|
+
</div>
|
|
2369
|
+
}
|
|
2370
|
+
|
|
2371
|
+
<!-- Bottom padding -->
|
|
2372
|
+
<div [style.height.px]="padding"></div>
|
|
2373
|
+
</div>
|
|
2374
|
+
</div>
|
|
2375
|
+
|
|
2376
|
+
<!-- Center highlight -->
|
|
2377
|
+
<div
|
|
2378
|
+
class="absolute inset-x-0 left-3 right-3 pointer-events-none flex items-center justify-center"
|
|
2379
|
+
[style.top.px]="highlightTop"
|
|
2380
|
+
[style.height.px]="itemHeight"
|
|
2381
|
+
>
|
|
2382
|
+
<div class="flex items-center justify-center font-medium w-full h-full bg-accent/30 border border-primary rounded-md shadow-inner">
|
|
2383
|
+
:
|
|
2384
|
+
</div>
|
|
2385
|
+
</div>
|
|
2386
|
+
</div>
|
|
2387
|
+
`,
|
|
2388
|
+
}]
|
|
2389
|
+
}], ctorParameters: () => [], propDecorators: { hoursScroll: [{ type: i0.ViewChild, args: ['hoursScroll', { isSignal: true }] }], minutesScroll: [{ type: i0.ViewChild, args: ['minutesScroll', { isSignal: true }] }], minuteInterval: [{ type: i0.Input, args: [{ isSignal: true, alias: "minuteInterval", required: false }] }], minTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "minTime", required: false }] }], maxTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxTime", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], timeChanged: [{ type: i0.Output, args: ["timeChanged"] }] } });
|
|
2390
|
+
|
|
2391
|
+
class UpTimepickerComponent extends UpFieldControlComponent {
|
|
2392
|
+
constructor() {
|
|
2393
|
+
super();
|
|
2394
|
+
this.minTime = input(...(ngDevMode ? [undefined, { debugName: "minTime" }] : []));
|
|
2395
|
+
this.maxTime = input(...(ngDevMode ? [undefined, { debugName: "maxTime" }] : []));
|
|
2396
|
+
this.inlineClass = input('', { ...(ngDevMode ? { debugName: "inlineClass" } : {}), alias: 'class' });
|
|
2397
|
+
this.initialHour = input(0, ...(ngDevMode ? [{ debugName: "initialHour" }] : []));
|
|
2398
|
+
this.initialMinute = input(0, ...(ngDevMode ? [{ debugName: "initialMinute" }] : []));
|
|
2399
|
+
this.minuteInterval = input(1, ...(ngDevMode ? [{ debugName: "minuteInterval" }] : []));
|
|
2400
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
|
|
2401
|
+
this._disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
|
|
2402
|
+
this.value = signal({ hour: 0, minute: 0 }, ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
2403
|
+
this.formattedTime = computed(() => {
|
|
2404
|
+
const time = this.value();
|
|
2405
|
+
if (!time) {
|
|
2406
|
+
return '--:--';
|
|
2407
|
+
}
|
|
2408
|
+
const hour = time.hour ?? 0;
|
|
2409
|
+
const minute = time.minute ?? 0;
|
|
2410
|
+
return `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`;
|
|
2411
|
+
}, ...(ngDevMode ? [{ debugName: "formattedTime" }] : []));
|
|
2412
|
+
this._computedClass = computed(() => {
|
|
2413
|
+
return up('flex justify-between px-3 border border-border min-w-40 w-full font-normal hover:not-disabled:text-primary! data-[has-value=false]:text-muted-foreground', this.inlineClass());
|
|
2414
|
+
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
2415
|
+
this._isTouched = false;
|
|
2416
|
+
this._onTouched = () => { };
|
|
2417
|
+
this._onChange = () => { };
|
|
2418
|
+
if (this.ngControl !== null) {
|
|
2419
|
+
this.ngControl.valueAccessor = this;
|
|
2420
|
+
}
|
|
2421
|
+
effect(() => {
|
|
2422
|
+
if (!this.ngControl) {
|
|
2423
|
+
this.value.set({
|
|
2424
|
+
hour: this.initialHour(),
|
|
2425
|
+
minute: this.initialMinute(),
|
|
2426
|
+
});
|
|
2427
|
+
}
|
|
2428
|
+
});
|
|
2429
|
+
}
|
|
2430
|
+
registerOnChange(fn) {
|
|
2431
|
+
this._onChange = fn;
|
|
2432
|
+
}
|
|
2433
|
+
registerOnTouched(fn) {
|
|
2434
|
+
this._onTouched = fn;
|
|
2435
|
+
}
|
|
2436
|
+
touch() {
|
|
2437
|
+
this._markTouched();
|
|
2438
|
+
}
|
|
2439
|
+
setDisabledState(isDisabled) {
|
|
2440
|
+
this._disabled.set(isDisabled);
|
|
2441
|
+
}
|
|
2442
|
+
writeValue(value) {
|
|
2443
|
+
this.value.set(value);
|
|
2444
|
+
}
|
|
2445
|
+
selectedTime(time) {
|
|
2446
|
+
this._markTouched();
|
|
2447
|
+
this.value.set(time);
|
|
2448
|
+
this._onChange(time);
|
|
2449
|
+
}
|
|
2450
|
+
_markTouched() {
|
|
2451
|
+
if (this._isTouched) {
|
|
2452
|
+
return;
|
|
2453
|
+
}
|
|
2454
|
+
this._onTouched();
|
|
2455
|
+
this._isTouched = true;
|
|
2456
|
+
}
|
|
2457
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpTimepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2458
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.5", type: UpTimepickerComponent, isStandalone: true, selector: "up-timepicker", inputs: { minTime: { classPropertyName: "minTime", publicName: "minTime", isSignal: true, isRequired: false, transformFunction: null }, maxTime: { classPropertyName: "maxTime", publicName: "maxTime", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, initialHour: { classPropertyName: "initialHour", publicName: "initialHour", isSignal: true, isRequired: false, transformFunction: null }, initialMinute: { classPropertyName: "initialMinute", publicName: "initialMinute", isSignal: true, isRequired: false, transformFunction: null }, minuteInterval: { classPropertyName: "minuteInterval", publicName: "minuteInterval", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
2459
|
+
{
|
|
2460
|
+
provide: UpFieldControl,
|
|
2461
|
+
useExisting: forwardRef(() => UpTimepickerComponent),
|
|
2462
|
+
},
|
|
2463
|
+
provideIcons({
|
|
2464
|
+
matWatchLaterRound,
|
|
2465
|
+
}),
|
|
2466
|
+
], usesInheritance: true, ngImport: i0, template: `
|
|
2467
|
+
<up-popover placementOffset="4">
|
|
2468
|
+
<button
|
|
2469
|
+
upButton
|
|
2470
|
+
upPopoverTrigger
|
|
2471
|
+
type="button"
|
|
2472
|
+
variant="ghost"
|
|
2473
|
+
|
|
2474
|
+
[class]="_computedClass()"
|
|
2475
|
+
[disabled]="disabled() || _disabled()"
|
|
2476
|
+
[attr.data-has-value]="value() ? true : false"
|
|
2477
|
+
|
|
2478
|
+
(blur)="touch()"
|
|
2479
|
+
>
|
|
2480
|
+
{{ formattedTime() }}
|
|
2481
|
+
|
|
2482
|
+
<ng-icon size="16" class="ml-auto" name="matWatchLaterRound" />
|
|
2483
|
+
</button>
|
|
2484
|
+
|
|
2485
|
+
<ng-container *upPopoverContentRef>
|
|
2486
|
+
<div
|
|
2487
|
+
animate.enter="animate-in fade-in"
|
|
2488
|
+
animate.leave="animate-out fade-out"
|
|
2489
|
+
>
|
|
2490
|
+
<up-time
|
|
2491
|
+
[value]="value()"
|
|
2492
|
+
[minTime]="minTime()"
|
|
2493
|
+
[maxTime]="maxTime()"
|
|
2494
|
+
[minuteInterval]="minuteInterval()"
|
|
2495
|
+
(timeChanged)="selectedTime($event)"
|
|
2496
|
+
/>
|
|
2497
|
+
</div>
|
|
2498
|
+
</ng-container>
|
|
2499
|
+
</up-popover>
|
|
2500
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: UpButtonDirective, selector: "[upButton]", inputs: ["size", "variant", "class"], exportAs: ["upButton"] }, { kind: "component", type: UpPopoverComponent, selector: "up-popover", inputs: ["placement", "alignment", "placementOffset", "alignmentOffset"] }, { kind: "directive", type: UpPopoverTriggerDirective, selector: "[upPopoverTrigger]", exportAs: ["upPopoverTrigger"] }, { kind: "directive", type: UpPopoverContentRefDirective, selector: "[upPopoverContentRef]", exportAs: ["upPopoverContentRef"] }, { kind: "component", type: UpTimeComponent, selector: "up-time", inputs: ["minuteInterval", "minTime", "maxTime", "value"], outputs: ["timeChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2501
|
+
}
|
|
2502
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpTimepickerComponent, decorators: [{
|
|
2503
|
+
type: Component,
|
|
2504
|
+
args: [{
|
|
2505
|
+
selector: 'up-timepicker',
|
|
2506
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2507
|
+
providers: [
|
|
2508
|
+
{
|
|
2509
|
+
provide: UpFieldControl,
|
|
2510
|
+
useExisting: forwardRef(() => UpTimepickerComponent),
|
|
2511
|
+
},
|
|
2512
|
+
provideIcons({
|
|
2513
|
+
matWatchLaterRound,
|
|
2514
|
+
}),
|
|
2515
|
+
],
|
|
2516
|
+
imports: [
|
|
2517
|
+
NgIcon,
|
|
2518
|
+
UpButtonDirective,
|
|
2519
|
+
UpPopoverComponent,
|
|
2520
|
+
UpPopoverTriggerDirective,
|
|
2521
|
+
UpPopoverContentRefDirective,
|
|
2522
|
+
UpTimeComponent,
|
|
2523
|
+
],
|
|
2524
|
+
template: `
|
|
2525
|
+
<up-popover placementOffset="4">
|
|
2526
|
+
<button
|
|
2527
|
+
upButton
|
|
2528
|
+
upPopoverTrigger
|
|
2529
|
+
type="button"
|
|
2530
|
+
variant="ghost"
|
|
2531
|
+
|
|
2532
|
+
[class]="_computedClass()"
|
|
2533
|
+
[disabled]="disabled() || _disabled()"
|
|
2534
|
+
[attr.data-has-value]="value() ? true : false"
|
|
2535
|
+
|
|
2536
|
+
(blur)="touch()"
|
|
2537
|
+
>
|
|
2538
|
+
{{ formattedTime() }}
|
|
2539
|
+
|
|
2540
|
+
<ng-icon size="16" class="ml-auto" name="matWatchLaterRound" />
|
|
2541
|
+
</button>
|
|
2542
|
+
|
|
2543
|
+
<ng-container *upPopoverContentRef>
|
|
2544
|
+
<div
|
|
2545
|
+
animate.enter="animate-in fade-in"
|
|
2546
|
+
animate.leave="animate-out fade-out"
|
|
2547
|
+
>
|
|
2548
|
+
<up-time
|
|
2549
|
+
[value]="value()"
|
|
2550
|
+
[minTime]="minTime()"
|
|
2551
|
+
[maxTime]="maxTime()"
|
|
2552
|
+
[minuteInterval]="minuteInterval()"
|
|
2553
|
+
(timeChanged)="selectedTime($event)"
|
|
2554
|
+
/>
|
|
2555
|
+
</div>
|
|
2556
|
+
</ng-container>
|
|
2557
|
+
</up-popover>
|
|
2558
|
+
`,
|
|
2559
|
+
}]
|
|
2560
|
+
}], ctorParameters: () => [], propDecorators: { minTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "minTime", required: false }] }], maxTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxTime", required: false }] }], inlineClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], initialHour: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialHour", required: false }] }], initialMinute: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialMinute", required: false }] }], minuteInterval: [{ type: i0.Input, args: [{ isSignal: true, alias: "minuteInterval", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
2561
|
+
|
|
2562
|
+
class UpFormFieldComponent {
|
|
2563
|
+
constructor() {
|
|
2564
|
+
this.name = input('', ...(ngDevMode ? [{ debugName: "name" }] : []));
|
|
2565
|
+
this.hint = input('', ...(ngDevMode ? [{ debugName: "hint" }] : []));
|
|
2566
|
+
this.label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
2567
|
+
this.inlineClass = input('', { ...(ngDevMode ? { debugName: "inlineClass" } : {}), alias: 'class' });
|
|
2568
|
+
this.control = contentChild(UpFieldControl, ...(ngDevMode ? [{ debugName: "control" }] : []));
|
|
2569
|
+
this._computedClass = computed(() => {
|
|
2570
|
+
return up('block space-y-2', this.inlineClass());
|
|
2571
|
+
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
2572
|
+
effect(() => {
|
|
2573
|
+
if (!this.control()) {
|
|
2574
|
+
throw new Error('Form field must contain a field control, eg: input, checkbox, textarea, etc.');
|
|
2575
|
+
}
|
|
2576
|
+
this.control().setControlName(this.label());
|
|
2577
|
+
});
|
|
2578
|
+
}
|
|
2579
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2580
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: UpFormFieldComponent, isStandalone: true, selector: "up-form-field", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, queries: [{ propertyName: "control", first: true, predicate: UpFieldControl, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
2581
|
+
<div
|
|
2582
|
+
class="
|
|
2583
|
+
group flex flex-col gap-2
|
|
2584
|
+
has-[input[type='radio']]:flex-row has-[input[type='radio']]:items-center
|
|
2585
|
+
has-[input[type='checkbox']]:flex-row has-[input[type='checkbox']]:items-center
|
|
2586
|
+
"
|
|
2587
|
+
[attr.data-state]="control()?.error()? 'error' : 'default'"
|
|
2588
|
+
>
|
|
2589
|
+
@if (label()) {
|
|
2590
|
+
<label
|
|
2591
|
+
class="
|
|
2592
|
+
text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 select-none
|
|
2593
|
+
group-has-[input[type='checkbox']]:order-2 group-has-[input[type='radio']]:order-2
|
|
2594
|
+
"
|
|
2595
|
+
[for]="name()"
|
|
2596
|
+
[class.text-destructive]="control()?.error()"
|
|
2597
|
+
>
|
|
2598
|
+
{{ label() }}
|
|
2599
|
+
</label>
|
|
2600
|
+
}
|
|
2601
|
+
|
|
2602
|
+
<ng-content />
|
|
2603
|
+
</div>
|
|
2604
|
+
|
|
2605
|
+
@if (control()?.error()) {
|
|
2606
|
+
<p class="text-xs font-medium text-destructive">
|
|
2607
|
+
{{ control()?.error() }}
|
|
2608
|
+
</p>
|
|
2609
|
+
}
|
|
2610
|
+
@else if (hint()) {
|
|
2611
|
+
<p class="text-xs text-muted-foreground">
|
|
2612
|
+
{{ hint() }}
|
|
2613
|
+
</p>
|
|
2614
|
+
}
|
|
2615
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2616
|
+
}
|
|
2617
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpFormFieldComponent, decorators: [{
|
|
2618
|
+
type: Component,
|
|
2619
|
+
args: [{
|
|
2620
|
+
standalone: true,
|
|
2621
|
+
selector: 'up-form-field',
|
|
2622
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2623
|
+
host: {
|
|
2624
|
+
'[class]': '_computedClass()',
|
|
1782
2625
|
},
|
|
1783
2626
|
template: `
|
|
1784
2627
|
<div
|
|
@@ -1787,6 +2630,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
1787
2630
|
has-[input[type='radio']]:flex-row has-[input[type='radio']]:items-center
|
|
1788
2631
|
has-[input[type='checkbox']]:flex-row has-[input[type='checkbox']]:items-center
|
|
1789
2632
|
"
|
|
2633
|
+
[attr.data-state]="control()?.error()? 'error' : 'default'"
|
|
1790
2634
|
>
|
|
1791
2635
|
@if (label()) {
|
|
1792
2636
|
<label
|
|
@@ -1879,8 +2723,8 @@ class UpImagePickerComponent extends UpFieldControlComponent {
|
|
|
1879
2723
|
this._onChange(compressedFile);
|
|
1880
2724
|
}
|
|
1881
2725
|
}
|
|
1882
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1883
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
2726
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpImagePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2727
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: UpImagePickerComponent, isStandalone: true, selector: "up-image-picker", inputs: { ratio: { classPropertyName: "ratio", publicName: "ratio", isSignal: true, isRequired: false, transformFunction: null }, imgSrc: { classPropertyName: "imgSrc", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { imgSrc: "srcChange", changed: "changed" }, providers: [
|
|
1884
2728
|
{
|
|
1885
2729
|
provide: UpFieldControl,
|
|
1886
2730
|
useExisting: forwardRef(() => UpImagePickerComponent)
|
|
@@ -1891,7 +2735,7 @@ class UpImagePickerComponent extends UpFieldControlComponent {
|
|
|
1891
2735
|
})
|
|
1892
2736
|
], viewQueries: [{ propertyName: "file", first: true, predicate: ["file"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div \n upFileDragNDrop \n draggedClass=\"border-dashed border-2 border-foreground/20\"\n [class]=\"_computedClass()\"\n [style.aspect-ratio]=\"ratio()\"\n (fileDropped)=\"selectPhoto($event)\"\n>\n @if (imgSrc()) {\n <img \n class=\"overflow-hidden object-cover size-full\"\n [alt]=\"fileName\" \n [src]=\"imgSrc()\" \n [style.aspect-ratio]=\"ratio()\"\n />\n }\n \n <div \n class=\"absolute inset-0 p-2 flex flex-col items-center justify-center text-muted-foreground cursor-pointer opacity-80 group-hover:opacity-100 transition\"\n [style.aspect-ratio]=\"ratio()\"\n >\n @if (imgSrc() === '') {\n <div \n class=\"flex flex-col items-center\"\n (click)=\"file.click()\"\n >\n <ng-icon\n size=\"24px\"\n name=\"matUpload\"\n />\n <span>Choose Image or Drag here.</span>\n </div>\n }\n @else {\n <div \n class=\"absolute flex items-center ustify-center opacity-0 group-hover:opacity-100 transition text-destructive\"\n (click)=\"clear($event)\"\n >\n <ng-icon\n size=\"24px\"\n name=\"matDelete\"\n />\n </div>\n }\n </div>\n\n <input \n type=\"file\" \n hidden \n accept=\"image/png, image/jpeg, image/jpg\" \n (change)=\"selectPhoto($event)\" \n #file\n />\n</div>\n", dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: UpFileDragNDropDirective, selector: "[upFileDragNDrop]", inputs: ["draggedClass"], outputs: ["fileDropped"], exportAs: ["upFileDragNDrop"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1893
2737
|
}
|
|
1894
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
2738
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpImagePickerComponent, decorators: [{
|
|
1895
2739
|
type: Component,
|
|
1896
2740
|
args: [{ standalone: true, selector: 'up-image-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
1897
2741
|
{
|
|
@@ -1908,204 +2752,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
1908
2752
|
], template: "<div \n upFileDragNDrop \n draggedClass=\"border-dashed border-2 border-foreground/20\"\n [class]=\"_computedClass()\"\n [style.aspect-ratio]=\"ratio()\"\n (fileDropped)=\"selectPhoto($event)\"\n>\n @if (imgSrc()) {\n <img \n class=\"overflow-hidden object-cover size-full\"\n [alt]=\"fileName\" \n [src]=\"imgSrc()\" \n [style.aspect-ratio]=\"ratio()\"\n />\n }\n \n <div \n class=\"absolute inset-0 p-2 flex flex-col items-center justify-center text-muted-foreground cursor-pointer opacity-80 group-hover:opacity-100 transition\"\n [style.aspect-ratio]=\"ratio()\"\n >\n @if (imgSrc() === '') {\n <div \n class=\"flex flex-col items-center\"\n (click)=\"file.click()\"\n >\n <ng-icon\n size=\"24px\"\n name=\"matUpload\"\n />\n <span>Choose Image or Drag here.</span>\n </div>\n }\n @else {\n <div \n class=\"absolute flex items-center ustify-center opacity-0 group-hover:opacity-100 transition text-destructive\"\n (click)=\"clear($event)\"\n >\n <ng-icon\n size=\"24px\"\n name=\"matDelete\"\n />\n </div>\n }\n </div>\n\n <input \n type=\"file\" \n hidden \n accept=\"image/png, image/jpeg, image/jpg\" \n (change)=\"selectPhoto($event)\" \n #file\n />\n</div>\n" }]
|
|
1909
2753
|
}], ctorParameters: () => [], propDecorators: { ratio: [{ type: i0.Input, args: [{ isSignal: true, alias: "ratio", required: false }] }], imgSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }, { type: i0.Output, args: ["srcChange"] }], inlineClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], changed: [{ type: i0.Output, args: ["changed"] }], file: [{ type: i0.ViewChild, args: ['file', { isSignal: true }] }] } });
|
|
1910
2754
|
|
|
1911
|
-
function setValidator(form, keys, validators) {
|
|
1912
|
-
if (!keys.length ||
|
|
1913
|
-
keys.length === 1) {
|
|
1914
|
-
throw new Error('Use normal action for single keys and keys cannot be empty.');
|
|
1915
|
-
}
|
|
1916
|
-
keys.forEach((key) => {
|
|
1917
|
-
const control = form.get(key);
|
|
1918
|
-
if (control) {
|
|
1919
|
-
control.setValidators(validators);
|
|
1920
|
-
control.updateValueAndValidity();
|
|
1921
|
-
}
|
|
1922
|
-
});
|
|
1923
|
-
}
|
|
1924
|
-
|
|
1925
|
-
function toggleFormControls(form, keys, mode) {
|
|
1926
|
-
if (!keys.length ||
|
|
1927
|
-
keys.length === 1) {
|
|
1928
|
-
throw new Error('Use normal action for single keys and keys cannot be empty.');
|
|
1929
|
-
}
|
|
1930
|
-
keys.forEach((key) => form.get(key)?.[mode]());
|
|
1931
|
-
}
|
|
1932
|
-
|
|
1933
|
-
function prettifyLabel(name) {
|
|
1934
|
-
return name
|
|
1935
|
-
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
1936
|
-
.replace(/_/g, ' ')
|
|
1937
|
-
.replace(/\b\w/g, char => char.toUpperCase());
|
|
1938
|
-
}
|
|
1939
|
-
function convertToDate(value) {
|
|
1940
|
-
if (value instanceof Date)
|
|
1941
|
-
return value;
|
|
1942
|
-
if (typeof value === 'string' &&
|
|
1943
|
-
!isNaN(Date.parse(value))) {
|
|
1944
|
-
return new Date(value);
|
|
1945
|
-
}
|
|
1946
|
-
return null;
|
|
1947
|
-
}
|
|
1948
|
-
/**
|
|
1949
|
-
* Range validator for number and date values.
|
|
1950
|
-
* @param {string} fromKey - The "from" control name
|
|
1951
|
-
* @param {string} toKey - The "to" control name
|
|
1952
|
-
* @returns {ValidatorFn} Throw error message when fromKey is greater than toKey
|
|
1953
|
-
*
|
|
1954
|
-
* Usage:
|
|
1955
|
-
* this.form = new FormGroup({
|
|
1956
|
-
* agingFrom: new FormControl(),
|
|
1957
|
-
* agingTo: new FormControl(),
|
|
1958
|
-
* }, { validators: rangeValidator('agingFrom', 'agingTo') });
|
|
1959
|
-
*/
|
|
1960
|
-
function validRangeValidator(fromKey, toKey) {
|
|
1961
|
-
return (group) => {
|
|
1962
|
-
if (!group) {
|
|
1963
|
-
return null;
|
|
1964
|
-
}
|
|
1965
|
-
const toControl = group.get(toKey);
|
|
1966
|
-
const fromControl = group.get(fromKey);
|
|
1967
|
-
if (!fromControl ||
|
|
1968
|
-
!toControl) {
|
|
1969
|
-
return null;
|
|
1970
|
-
}
|
|
1971
|
-
const toValue = toControl.value;
|
|
1972
|
-
const fromValue = fromControl.value;
|
|
1973
|
-
if (fromValue === null ||
|
|
1974
|
-
toValue === null ||
|
|
1975
|
-
fromValue === '' ||
|
|
1976
|
-
toValue === '') {
|
|
1977
|
-
return null;
|
|
1978
|
-
}
|
|
1979
|
-
let isInvalid = false;
|
|
1980
|
-
const toDate = convertToDate(toValue);
|
|
1981
|
-
const fromDate = convertToDate(fromValue);
|
|
1982
|
-
if (fromDate && toDate) {
|
|
1983
|
-
isInvalid = toDate <= fromDate;
|
|
1984
|
-
}
|
|
1985
|
-
else if (!isNaN(fromValue) &&
|
|
1986
|
-
!isNaN(toValue)) {
|
|
1987
|
-
isInvalid = Number(toValue) <= Number(fromValue);
|
|
1988
|
-
}
|
|
1989
|
-
return !isInvalid ? null : {
|
|
1990
|
-
rangeInvalid: {
|
|
1991
|
-
to: toKey,
|
|
1992
|
-
from: fromKey,
|
|
1993
|
-
message: `${prettifyLabel(toKey)} must be greater than ${prettifyLabel(fromKey)}`
|
|
1994
|
-
}
|
|
1995
|
-
};
|
|
1996
|
-
};
|
|
1997
|
-
}
|
|
1998
|
-
|
|
1999
|
-
/**
|
|
2000
|
-
* Validator that requires all specified form controls to have the same value.
|
|
2001
|
-
*
|
|
2002
|
-
* @param {string[]} controlNames - The names of the controls that must match
|
|
2003
|
-
* @param {string} [message] - Optional custom error message
|
|
2004
|
-
* @returns {ValidatorFn} A validator function producing an `isEqual` error if values do not match
|
|
2005
|
-
*
|
|
2006
|
-
* @example
|
|
2007
|
-
* this.form = new FormGroup({
|
|
2008
|
-
* password: new FormControl(''),
|
|
2009
|
-
* confirmPassword: new FormControl(''),
|
|
2010
|
-
* }, { validators: isEqualValidator(['password', 'confirmPassword']) });
|
|
2011
|
-
*/
|
|
2012
|
-
function isEqualValidator(controlNames, message) {
|
|
2013
|
-
return (group) => {
|
|
2014
|
-
if (!group ||
|
|
2015
|
-
controlNames.length < 2) {
|
|
2016
|
-
return null;
|
|
2017
|
-
}
|
|
2018
|
-
let isEmpty = false;
|
|
2019
|
-
const values = controlNames.reduce((acc, name) => {
|
|
2020
|
-
const control = group.get(name);
|
|
2021
|
-
if (!control) {
|
|
2022
|
-
return acc;
|
|
2023
|
-
}
|
|
2024
|
-
if (!control.value) {
|
|
2025
|
-
isEmpty = true;
|
|
2026
|
-
return acc;
|
|
2027
|
-
}
|
|
2028
|
-
acc.push(control.value);
|
|
2029
|
-
return acc;
|
|
2030
|
-
}, []);
|
|
2031
|
-
if (isEmpty) {
|
|
2032
|
-
return null;
|
|
2033
|
-
}
|
|
2034
|
-
if (!values.every(v => v === values[0])) {
|
|
2035
|
-
const labels = controlNames.map((name) => {
|
|
2036
|
-
return name
|
|
2037
|
-
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
2038
|
-
.replace(/_/g, ' ')
|
|
2039
|
-
.replace(/\b\w/g, char => char.toUpperCase());
|
|
2040
|
-
});
|
|
2041
|
-
return {
|
|
2042
|
-
isEqual: {
|
|
2043
|
-
fields: controlNames,
|
|
2044
|
-
message: message || `${labels.join(', ')} should have the same value`
|
|
2045
|
-
}
|
|
2046
|
-
};
|
|
2047
|
-
}
|
|
2048
|
-
return null;
|
|
2049
|
-
};
|
|
2050
|
-
}
|
|
2051
|
-
|
|
2052
|
-
/**
|
|
2053
|
-
* Validator that requires all specified form controls to have different values.
|
|
2054
|
-
*
|
|
2055
|
-
* @param {string[]} controlNames - The names of the controls that must all be unique
|
|
2056
|
-
* @param {string} [message] - Optional custom error message
|
|
2057
|
-
* @returns {ValidatorFn} A validator function producing an `isNotEqual` error if duplicate values exist
|
|
2058
|
-
*
|
|
2059
|
-
* @example
|
|
2060
|
-
* this.form = new FormGroup({
|
|
2061
|
-
* primaryEmail: new FormControl(''),
|
|
2062
|
-
* secondaryEmail: new FormControl(''),
|
|
2063
|
-
* backupEmail: new FormControl(''),
|
|
2064
|
-
* }, { validators: isNotEqualValidator(['primaryEmail', 'secondaryEmail', 'backupEmail']) });
|
|
2065
|
-
*/
|
|
2066
|
-
function isNotEqualValidator(controlNames, message) {
|
|
2067
|
-
return (group) => {
|
|
2068
|
-
if (!group ||
|
|
2069
|
-
controlNames.length < 2) {
|
|
2070
|
-
return null;
|
|
2071
|
-
}
|
|
2072
|
-
let isEmpty = false;
|
|
2073
|
-
const values = controlNames.reduce((acc, name) => {
|
|
2074
|
-
const control = group.get(name);
|
|
2075
|
-
if (!control) {
|
|
2076
|
-
return acc;
|
|
2077
|
-
}
|
|
2078
|
-
if (!control.value) {
|
|
2079
|
-
isEmpty = true;
|
|
2080
|
-
return acc;
|
|
2081
|
-
}
|
|
2082
|
-
acc.push(control.value);
|
|
2083
|
-
return acc;
|
|
2084
|
-
}, []);
|
|
2085
|
-
if (isEmpty) {
|
|
2086
|
-
return null;
|
|
2087
|
-
}
|
|
2088
|
-
if (new Set(values).size !== values.length) {
|
|
2089
|
-
const labels = controlNames.map((name) => {
|
|
2090
|
-
return name
|
|
2091
|
-
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
2092
|
-
.replace(/_/g, ' ')
|
|
2093
|
-
.replace(/\b\w/g, char => char.toUpperCase());
|
|
2094
|
-
});
|
|
2095
|
-
return {
|
|
2096
|
-
isNotEqual: {
|
|
2097
|
-
fields: controlNames,
|
|
2098
|
-
message: message || `${labels.join(', ')} should have different values`
|
|
2099
|
-
}
|
|
2100
|
-
};
|
|
2101
|
-
}
|
|
2102
|
-
return null;
|
|
2103
|
-
};
|
|
2104
|
-
}
|
|
2105
|
-
|
|
2106
2755
|
/**
|
|
2107
2756
|
* Generated bundle index. Do not edit.
|
|
2108
2757
|
*/
|
|
2109
2758
|
|
|
2110
|
-
export { UpCheckboxDirective, UpCountrySelectComponent, UpCurrencySelectComponent, UpDateRangePickerComponent, UpDatepickerComponent, UpFieldControl, UpFieldControlComponent, UpFormFieldComponent, UpImagePickerComponent, UpInputDirective, UpNumberDirective, UpOptionComponent, UpPasswordComponent, UpRadioDirective, UpRateGroupCodeSelectComponent, UpSearchableSelectComponent, UpSelectComponent, UpSwitchComponent, isEqualValidator, isNotEqualValidator, setValidator, toggleFormControls, validRangeValidator };
|
|
2759
|
+
export { UpCheckboxDirective, UpCountrySelectComponent, UpCurrencySelectComponent, UpDateRangePickerComponent, UpDatepickerComponent, UpFieldControl, UpFieldControlComponent, UpFormFieldComponent, UpImagePickerComponent, UpInputDirective, UpNumberDirective, UpOptionComponent, UpPasswordComponent, UpRadioDirective, UpRateGroupCodeSelectComponent, UpSearchableSelectComponent, UpSelectComponent, UpSwitchComponent, UpTimeComponent, UpTimepickerComponent, isEqualValidator, isNotEqualValidator, setValidator, toggleFormControls, validRangeValidator };
|
|
2111
2760
|
//# sourceMappingURL=unipin-angular-applet-forms.mjs.map
|