@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.
Files changed (51) hide show
  1. package/common/assets/styles/theme.css +8 -0
  2. package/fesm2022/unipin-angular-applet-accordion.mjs +12 -12
  3. package/fesm2022/unipin-angular-applet-alert-dialog.mjs +10 -7
  4. package/fesm2022/unipin-angular-applet-alert-dialog.mjs.map +1 -1
  5. package/fesm2022/unipin-angular-applet-alert.mjs +9 -9
  6. package/fesm2022/unipin-angular-applet-approval.mjs +6 -6
  7. package/fesm2022/unipin-angular-applet-audit-audit-modal.component-3a2P0bZr.mjs +280 -0
  8. package/fesm2022/unipin-angular-applet-audit-audit-modal.component-3a2P0bZr.mjs.map +1 -0
  9. package/fesm2022/unipin-angular-applet-audit.mjs +220 -0
  10. package/fesm2022/unipin-angular-applet-audit.mjs.map +1 -0
  11. package/fesm2022/unipin-angular-applet-auth.mjs +21 -21
  12. package/fesm2022/unipin-angular-applet-avatar.mjs +25 -8
  13. package/fesm2022/unipin-angular-applet-avatar.mjs.map +1 -1
  14. package/fesm2022/unipin-angular-applet-badge.mjs +3 -3
  15. package/fesm2022/unipin-angular-applet-buttons.mjs +6 -6
  16. package/fesm2022/unipin-angular-applet-calendar.mjs +26 -12
  17. package/fesm2022/unipin-angular-applet-calendar.mjs.map +1 -1
  18. package/fesm2022/unipin-angular-applet-collapsible.mjs +9 -9
  19. package/fesm2022/unipin-angular-applet-common.mjs +24 -24
  20. package/fesm2022/unipin-angular-applet-containers.mjs +12 -12
  21. package/fesm2022/unipin-angular-applet-dialog.mjs +30 -45
  22. package/fesm2022/unipin-angular-applet-dialog.mjs.map +1 -1
  23. package/fesm2022/unipin-angular-applet-forms.mjs +960 -311
  24. package/fesm2022/unipin-angular-applet-forms.mjs.map +1 -1
  25. package/fesm2022/unipin-angular-applet-froala.mjs +4 -4
  26. package/fesm2022/unipin-angular-applet-froala.mjs.map +1 -1
  27. package/fesm2022/unipin-angular-applet-grids.mjs +17 -1
  28. package/fesm2022/unipin-angular-applet-grids.mjs.map +1 -1
  29. package/fesm2022/unipin-angular-applet-infinite-scroll.mjs +3 -3
  30. package/fesm2022/unipin-angular-applet-json-viewer.mjs +3 -3
  31. package/fesm2022/unipin-angular-applet-kbd.mjs +3 -3
  32. package/fesm2022/unipin-angular-applet-loading-dialog.mjs +6 -6
  33. package/fesm2022/unipin-angular-applet-markdown.mjs +10 -10
  34. package/fesm2022/unipin-angular-applet-markdown.mjs.map +1 -1
  35. package/fesm2022/unipin-angular-applet-popover.mjs +18 -18
  36. package/fesm2022/unipin-angular-applet-popover.mjs.map +1 -1
  37. package/fesm2022/unipin-angular-applet-progress-bar.mjs +3 -3
  38. package/fesm2022/unipin-angular-applet-skeleton.mjs +3 -3
  39. package/fesm2022/unipin-angular-applet-spinner.mjs +3 -3
  40. package/fesm2022/unipin-angular-applet-stepper.mjs +6 -6
  41. package/fesm2022/unipin-angular-applet-swipeable.mjs +12 -12
  42. package/fesm2022/unipin-angular-applet-tabs.mjs +9 -9
  43. package/fesm2022/unipin-angular-applet-tooltip.mjs +3 -3
  44. package/package.json +5 -1
  45. package/types/unipin-angular-applet-audit.d.ts +49 -0
  46. package/types/unipin-angular-applet-avatar.d.ts +3 -2
  47. package/types/unipin-angular-applet-containers.d.ts +1 -1
  48. package/types/unipin-angular-applet-dialog.d.ts +13 -13
  49. package/types/unipin-angular-applet-forms.d.ts +133 -51
  50. package/types/unipin-angular-applet-grids.d.ts +17 -1
  51. 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 newState = errMessage[errKey](this._controlName ?? 'Field', control.errors[errKey][extraParamKey[errKey]]);
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.0.6", ngImport: i0, type: UpFieldControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: UpFieldControlComponent }); }
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.0.6", ngImport: i0, type: UpFieldControlComponent, decorators: [{
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.0.6", ngImport: i0, type: UpInputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
82
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.6", type: UpInputDirective, isStandalone: true, selector: "[upInput]", inputs: { inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [
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.0.6", ngImport: i0, type: UpInputDirective, decorators: [{
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.0.6", ngImport: i0, type: UpNumberDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
275
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpNumberDirective, decorators: [{
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.0.6", ngImport: i0, type: UpPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
400
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpPasswordComponent, decorators: [{
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.0.6", ngImport: i0, type: UpRadioDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
487
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpRadioDirective, decorators: [{
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.0.6", ngImport: i0, type: UpSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
562
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpSwitchComponent, decorators: [{
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.0.6", ngImport: i0, type: UpCheckboxDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
627
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpCheckboxDirective, decorators: [{
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.0.6", ngImport: i0, type: UpOptionComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
661
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", 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: `
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.0.6", ngImport: i0, type: UpOptionComponent, decorators: [{
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.0.6", ngImport: i0, type: UpSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
777
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpSelectComponent, decorators: [{
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.0.6", ngImport: i0, type: UpCountrySelectComponent, deps: [{ token: i1$1.CountryService }], target: i0.ɵɵFactoryTarget.Component }); }
907
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpCountrySelectComponent, decorators: [{
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.0.6", ngImport: i0, type: UpCurrencySelectComponent, deps: [{ token: i1$1.CurrencyService }], target: i0.ɵɵFactoryTarget.Component }); }
1045
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpCurrencySelectComponent, decorators: [{
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.0.6", ngImport: i0, type: UpSearchableSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1185
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpSearchableSelectComponent, decorators: [{
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.0.6", ngImport: i0, type: UpRateGroupCodeSelectComponent, deps: [{ token: i1$1.RateGroupCodeService }], target: i0.ɵɵFactoryTarget.Component }); }
1339
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpRateGroupCodeSelectComponent, decorators: [{
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.0.6", ngImport: i0, type: UpDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1457
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpDatepickerComponent, decorators: [{
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.0.6", ngImport: i0, type: UpDateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1613
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpDateRangePickerComponent, decorators: [{
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
- class UpFormFieldComponent {
1721
- constructor() {
1722
- this.name = input('', ...(ngDevMode ? [{ debugName: "name" }] : []));
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
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: UpFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1738
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", 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: `
1739
- <div
1740
- class="
1741
- group flex flex-col gap-2
1742
- has-[input[type='radio']]:flex-row has-[input[type='radio']]:items-center
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
- @else if (hint()) {
1768
- <p class="text-xs text-muted-foreground">
1769
- {{ hint() }}
1770
- </p>
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
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1944
+ el.scrollTop = index * itemHeight;
1773
1945
  }
1774
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: UpFormFieldComponent, decorators: [{
1775
- type: Component,
1776
- args: [{
1777
- standalone: true,
1778
- selector: 'up-form-field',
1779
- changeDetection: ChangeDetectionStrategy.OnPush,
1780
- host: {
1781
- '[class]': '_computedClass()',
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.0.6", ngImport: i0, type: UpImagePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1883
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", 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: [
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.0.6", ngImport: i0, type: UpImagePickerComponent, decorators: [{
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