iss-ctrl 0.0.2-beta → 0.0.2-beta-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -15
- package/components/autocomplete/autocomplete.component.d.ts +3 -3
- package/components/base-ctrl.d.ts +1 -3
- package/components/checkbox/checkbox.component.d.ts +3 -3
- package/components/chips/chips.component.d.ts +11 -3
- package/components/ctrl-array/ctrl-array.component.d.ts +3 -3
- package/components/date-picker/date-picker.component.d.ts +3 -3
- package/components/date-range-picker/date-range-picker.component.d.ts +3 -3
- package/components/datetime-picker/datetime-picker.component.d.ts +3 -3
- package/components/datetime-range-picker/datetime-range-picker.component.d.ts +3 -3
- package/components/file-picker/file-picker.component.d.ts +3 -3
- package/components/input/input.component.d.ts +15 -4
- package/components/mobile/mobile.component.d.ts +3 -3
- package/components/note/note.component.d.ts +3 -3
- package/components/plate/PLATE_LETTERS.d.ts +8 -0
- package/components/{plate-number/plate-number.component.d.ts → plate/plate.component.d.ts} +4 -5
- package/components/radio/radio.component.d.ts +3 -3
- package/components/select/select.component.d.ts +8 -6
- package/components/slide-toggle/slide-toggle.component.d.ts +3 -3
- package/components/textarea/textarea.component.d.ts +3 -3
- package/components/time-picker/time-picker.component.d.ts +3 -3
- package/components/toggle-button/toggle-button.component.d.ts +3 -3
- package/esm2022/components/autocomplete/autocomplete.component.mjs +7 -7
- package/esm2022/components/base-ctrl.mjs +7 -7
- package/esm2022/components/checkbox/checkbox.component.mjs +7 -7
- package/esm2022/components/chips/chips.component.mjs +72 -12
- package/esm2022/components/ctrl-array/ctrl-array.component.mjs +7 -7
- package/esm2022/components/date-picker/date-picker.component.mjs +9 -9
- package/esm2022/components/date-range-picker/date-range-picker.component.mjs +7 -7
- package/esm2022/components/datetime-picker/datetime-picker.component.mjs +12 -12
- package/esm2022/components/datetime-range-picker/datetime-range-picker.component.mjs +7 -7
- package/esm2022/components/file-picker/file-picker.component.mjs +7 -7
- package/esm2022/components/hints/hints.component.mjs +3 -3
- package/esm2022/components/input/input.component.mjs +43 -18
- package/esm2022/components/mobile/mobile.component.mjs +9 -9
- package/esm2022/components/note/note.component.mjs +7 -7
- package/esm2022/components/plate/PLATE_LETTERS.mjs +20 -0
- package/esm2022/components/plate/plate.component.mjs +101 -0
- package/esm2022/components/radio/radio.component.mjs +7 -7
- package/esm2022/components/select/select.component.mjs +63 -32
- package/esm2022/components/slide-toggle/slide-toggle.component.mjs +7 -7
- package/esm2022/components/textarea/textarea.component.mjs +23 -11
- package/esm2022/components/time-picker/time-picker.component.mjs +9 -9
- package/esm2022/components/toggle-button/toggle-button.component.mjs +7 -7
- package/esm2022/interfaces/hint-alignment.type.mjs +2 -0
- package/esm2022/interfaces/hint.interface.mjs +1 -1
- package/esm2022/interfaces/option.interface.mjs +1 -1
- package/esm2022/pipes/arabic-number.pipe.mjs +23 -0
- package/esm2022/pipes/plate-letter.pipe.mjs +22 -0
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/iss-ctrl.mjs +359 -195
- package/fesm2022/iss-ctrl.mjs.map +1 -1
- package/interfaces/hint-alignment.type.d.ts +1 -0
- package/interfaces/hint.interface.d.ts +2 -0
- package/interfaces/option.interface.d.ts +1 -0
- package/package.json +1 -1
- package/pipes/arabic-number.pipe.d.ts +7 -0
- package/pipes/plate-letter.pipe.d.ts +7 -0
- package/public-api.d.ts +1 -1
- package/esm2022/components/plate-number/plate-number.component.mjs +0 -114
package/fesm2022/iss-ctrl.mjs
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { input, signal, output, Component, CUSTOM_ELEMENTS_SCHEMA, Pipe, effect, Injectable, Optional, Inject, inject, Directive, HostListener, ChangeDetectionStrategy, computed } from '@angular/core';
|
|
3
3
|
import * as i1$2 from '@angular/forms';
|
|
4
|
-
import {
|
|
4
|
+
import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, NG_VALIDATORS, FormGroup, FormsModule, FormArray } from '@angular/forms';
|
|
5
5
|
import * as i1 from '@angular/material/checkbox';
|
|
6
6
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
7
|
+
import * as i1$1 from '@angular/material/form-field';
|
|
8
|
+
import { MatFormField, MatFormFieldModule, MatSuffix, MatHint, MatPrefix } from '@angular/material/form-field';
|
|
9
|
+
import * as i6 from '@angular/material/chips';
|
|
10
|
+
import { MatChipGrid, MatChipRow, MatChipInput, MatChipRemove, MatChipsModule } from '@angular/material/chips';
|
|
11
|
+
import * as i2 from '@angular/material/input';
|
|
12
|
+
import { MatInput, MatInputModule } from '@angular/material/input';
|
|
13
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
7
14
|
import * as i3 from '@angular/material/core';
|
|
8
15
|
import { DateAdapter, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
9
|
-
import * as i1$1 from '@angular/material/form-field';
|
|
10
|
-
import { MatFormFieldModule, MatFormField, MatSuffix, MatHint, MatPrefix } from '@angular/material/form-field';
|
|
11
16
|
import * as i2$1 from '@angular/material/datepicker';
|
|
12
17
|
import { MatDatepickerModule, MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';
|
|
13
|
-
import * as i2 from '@angular/material/input';
|
|
14
|
-
import { MatInputModule, MatInput } from '@angular/material/input';
|
|
15
18
|
import { MatIconModule } from '@angular/material/icon';
|
|
16
19
|
import { getYear, getMonth, getDate, getDay, getDaysInMonth, parseISO, parse, format, addYears, addMonths, addDays, formatISO, isDate, isValid, isAfter, isBefore } from 'date-fns';
|
|
17
|
-
import { DatePipe, NgClass, NgOptimizedImage, NgTemplateOutlet } from '@angular/common';
|
|
20
|
+
import { DatePipe, NgClass, NgOptimizedImage, NgTemplateOutlet, NgStyle } from '@angular/common';
|
|
18
21
|
import { enGB } from 'date-fns/locale';
|
|
19
22
|
import { Subscription } from 'rxjs';
|
|
20
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
|
21
23
|
import * as i1$5 from '@angular/material/button-toggle';
|
|
22
24
|
import { MatButtonToggleGroup, MatButtonToggle, MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
23
25
|
import { CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';
|
|
@@ -26,16 +28,15 @@ import { PhoneNumberUtil, PhoneNumberFormat } from 'google-libphonenumber';
|
|
|
26
28
|
import { MatSelect, MatOption } from '@angular/material/select';
|
|
27
29
|
import * as i1$3 from '@angular/material/radio';
|
|
28
30
|
import { MatRadioModule } from '@angular/material/radio';
|
|
31
|
+
import { CdkVirtualForOf, CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll } from '@angular/cdk/scrolling';
|
|
29
32
|
import * as i2$2 from '@angular/material/autocomplete';
|
|
30
33
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
31
|
-
import * as i6 from '@angular/material/chips';
|
|
32
|
-
import { MatChipsModule } from '@angular/material/chips';
|
|
33
34
|
import * as i1$4 from '@angular/material/slide-toggle';
|
|
34
35
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
35
36
|
|
|
36
37
|
class BaseCtrl {
|
|
37
38
|
constructor() {
|
|
38
|
-
|
|
39
|
+
/*ctrlContainer: ControlContainer = inject(ControlContainer);*/
|
|
39
40
|
this.formControlName = input("");
|
|
40
41
|
this.min = input(null);
|
|
41
42
|
this.max = input(null);
|
|
@@ -52,9 +53,9 @@ class BaseCtrl {
|
|
|
52
53
|
this.onTouch = () => { };
|
|
53
54
|
this.onPropagateValue = (_) => { };
|
|
54
55
|
}
|
|
55
|
-
get hostCtrl() {
|
|
56
|
-
|
|
57
|
-
}
|
|
56
|
+
/*get hostCtrl(): AbstractControl | null | undefined {
|
|
57
|
+
return this.ctrlContainer.control?.get(this.formControlName());
|
|
58
|
+
}*/
|
|
58
59
|
registerOnChange(fn) {
|
|
59
60
|
this.onPropagateValue = fn;
|
|
60
61
|
}
|
|
@@ -123,16 +124,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
123
124
|
}]
|
|
124
125
|
}] });
|
|
125
126
|
|
|
126
|
-
class
|
|
127
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
128
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type:
|
|
129
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
127
|
+
class AutocompleteControl extends BaseCtrl {
|
|
128
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AutocompleteControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
129
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: AutocompleteControl, isStandalone: true, selector: "iss-ctrl-autocomplete", providers: [
|
|
130
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: AutocompleteControl, multi: true }
|
|
130
131
|
], usesInheritance: true, ngImport: i0, template: "<p>autocomplete works!</p>\r\n", styles: [""] }); }
|
|
131
132
|
}
|
|
132
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AutocompleteControl, decorators: [{
|
|
133
134
|
type: Component,
|
|
134
135
|
args: [{ selector: "iss-ctrl-autocomplete", standalone: true, imports: [], providers: [
|
|
135
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
136
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: AutocompleteControl, multi: true }
|
|
136
137
|
], template: "<p>autocomplete works!</p>\r\n" }]
|
|
137
138
|
}] });
|
|
138
139
|
|
|
@@ -152,7 +153,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
152
153
|
}]
|
|
153
154
|
}] });
|
|
154
155
|
|
|
155
|
-
class
|
|
156
|
+
class CheckboxControl extends BaseCtrl {
|
|
156
157
|
constructor() {
|
|
157
158
|
super(...arguments);
|
|
158
159
|
this.options = input.required();
|
|
@@ -206,29 +207,85 @@ class CheckboxComponent extends BaseCtrl {
|
|
|
206
207
|
this.selectedOptions().clear();
|
|
207
208
|
this.ctrl.setValue(null);
|
|
208
209
|
}
|
|
209
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
210
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type:
|
|
211
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
210
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CheckboxControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
211
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CheckboxControl, isStandalone: true, selector: "iss-ctrl-checkbox", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
|
|
212
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxControl, multi: true },
|
|
212
213
|
], usesInheritance: true, ngImport: i0, template: "<ul class=\"list-unstyled\">\r\n @for (option of options(); track option.value; ) {\r\n <li class=\"mb-2\">\r\n <mat-checkbox\r\n [checked]=\"option | selectStatus: selectedOptions()\"\r\n (change)=\"onCheckboxChange($event.checked, option.value)\"\r\n >\r\n {{ option.label }}\r\n </mat-checkbox>\r\n </li>\r\n }\r\n</ul>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: SelectStatusPipe, name: "selectStatus" }] }); }
|
|
213
214
|
}
|
|
214
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
215
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CheckboxControl, decorators: [{
|
|
215
216
|
type: Component,
|
|
216
217
|
args: [{ selector: "iss-ctrl-checkbox", standalone: true, imports: [ReactiveFormsModule, MatCheckboxModule, SelectStatusPipe], providers: [
|
|
217
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
218
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxControl, multi: true },
|
|
218
219
|
], template: "<ul class=\"list-unstyled\">\r\n @for (option of options(); track option.value; ) {\r\n <li class=\"mb-2\">\r\n <mat-checkbox\r\n [checked]=\"option | selectStatus: selectedOptions()\"\r\n (change)=\"onCheckboxChange($event.checked, option.value)\"\r\n >\r\n {{ option.label }}\r\n </mat-checkbox>\r\n </li>\r\n }\r\n</ul>\r\n" }]
|
|
219
220
|
}] });
|
|
220
221
|
|
|
221
|
-
class
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
222
|
+
class ChipsControl extends BaseCtrl {
|
|
223
|
+
constructor() {
|
|
224
|
+
super(...arguments);
|
|
225
|
+
this.keywords = signal([]);
|
|
226
|
+
this.#ctrlChanges = toSignal(this.ctrl.valueChanges);
|
|
227
|
+
this.#effect = effect(() => {
|
|
228
|
+
if (this.#ctrlChanges()) {
|
|
229
|
+
this.emitValue(this.#stringifyValues());
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
#ctrlChanges;
|
|
234
|
+
#effect;
|
|
235
|
+
writeValue(value) {
|
|
236
|
+
if (typeof value === "string") {
|
|
237
|
+
this.keywords.set(this.#parseValues(value));
|
|
238
|
+
}
|
|
239
|
+
if (value === undefined || value === null) {
|
|
240
|
+
this.keywords.set([]);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
remove(keyword) {
|
|
244
|
+
this.keywords.update((keywords) => {
|
|
245
|
+
const index = keywords.indexOf(keyword);
|
|
246
|
+
if (index < 0) {
|
|
247
|
+
return keywords;
|
|
248
|
+
}
|
|
249
|
+
keywords.splice(index, 1);
|
|
250
|
+
return [...keywords];
|
|
251
|
+
});
|
|
252
|
+
this.emitValue(this.#stringifyValues());
|
|
253
|
+
}
|
|
254
|
+
add(event) {
|
|
255
|
+
const value = (event.value || "").trim();
|
|
256
|
+
if (value) {
|
|
257
|
+
this.keywords.update((keywords) => [...keywords, value]);
|
|
258
|
+
}
|
|
259
|
+
event.chipInput.clear();
|
|
260
|
+
this.emitValue(this.#stringifyValues());
|
|
261
|
+
}
|
|
262
|
+
ngOnDestroy() {
|
|
263
|
+
this.#effect.destroy();
|
|
264
|
+
}
|
|
265
|
+
#stringifyValues() {
|
|
266
|
+
return this.keywords().map((s) => s.trim()).join();
|
|
267
|
+
}
|
|
268
|
+
#parseValues(values) {
|
|
269
|
+
return values.split(",").map((c) => c.trim());
|
|
270
|
+
}
|
|
271
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChipsControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
272
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ChipsControl, isStandalone: true, selector: "iss-ctrl-chips", providers: [
|
|
273
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: ChipsControl, multi: true }
|
|
274
|
+
], usesInheritance: true, ngImport: i0, template: "<mat-form-field>\r\n <input\r\n matInput\r\n [placeholder]=\"placeholder()\"\r\n [matChipInputFor]=\"chipGrid\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n />\r\n</mat-form-field>\r\n<mat-chip-grid #chipGrid>\r\n @for (keyword of keywords(); track keyword) {\r\n <mat-chip-row (removed)=\"remove(keyword)\">\r\n {{ keyword }}\r\n <button matChipRemove>\r\n <ds-icon icon=\"trash\" class=\"fc-red\"></ds-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n</mat-chip-grid>\r\n", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "component", type: MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatChipRemove, selector: "[matChipRemove]" }] }); }
|
|
226
275
|
}
|
|
227
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
276
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChipsControl, decorators: [{
|
|
228
277
|
type: Component,
|
|
229
|
-
args: [{ selector: "iss-ctrl-chips", standalone: true, imports: [
|
|
230
|
-
|
|
231
|
-
|
|
278
|
+
args: [{ selector: "iss-ctrl-chips", standalone: true, imports: [
|
|
279
|
+
MatFormField,
|
|
280
|
+
MatChipGrid,
|
|
281
|
+
MatChipRow,
|
|
282
|
+
ReactiveFormsModule,
|
|
283
|
+
MatChipInput,
|
|
284
|
+
MatInput,
|
|
285
|
+
MatChipRemove
|
|
286
|
+
], providers: [
|
|
287
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: ChipsControl, multi: true }
|
|
288
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-form-field>\r\n <input\r\n matInput\r\n [placeholder]=\"placeholder()\"\r\n [matChipInputFor]=\"chipGrid\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n />\r\n</mat-form-field>\r\n<mat-chip-grid #chipGrid>\r\n @for (keyword of keywords(); track keyword) {\r\n <mat-chip-row (removed)=\"remove(keyword)\">\r\n {{ keyword }}\r\n <button matChipRemove>\r\n <ds-icon icon=\"trash\" class=\"fc-red\"></ds-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n</mat-chip-grid>\r\n" }]
|
|
232
289
|
}] });
|
|
233
290
|
|
|
234
291
|
const WEEK_STARTS_ON = 0;
|
|
@@ -410,7 +467,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
410
467
|
args: [MAT_DATE_LOCALE]
|
|
411
468
|
}] }] });
|
|
412
469
|
|
|
413
|
-
class
|
|
470
|
+
class DatePickerControl extends BaseCtrl {
|
|
414
471
|
constructor() {
|
|
415
472
|
super(...arguments);
|
|
416
473
|
this.disabledDays = input([]);
|
|
@@ -427,29 +484,29 @@ class DatePickerComponent extends BaseCtrl {
|
|
|
427
484
|
const selectedDateString = this.#datePipe.transform($event.value, "yyyy-MM-ddTHH:mm:ss") + "Z";
|
|
428
485
|
this.emitValue(selectedDateString);
|
|
429
486
|
}
|
|
430
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
431
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type:
|
|
487
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatePickerControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
488
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: DatePickerControl, isStandalone: true, selector: "iss-ctrl-date-picker", inputs: { disabledDays: { classPropertyName: "disabledDays", publicName: "disabledDays", 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 } }, providers: [
|
|
432
489
|
DatePipe,
|
|
433
490
|
{ provide: DateAdapter, useClass: ISSDateAdapter },
|
|
434
491
|
{ provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
|
|
435
492
|
{ provide: MAT_DATE_LOCALE, useValue: enGB },
|
|
436
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
437
|
-
{ provide: NG_VALIDATORS, useExisting:
|
|
493
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerControl, multi: true },
|
|
494
|
+
{ provide: NG_VALIDATORS, useExisting: DatePickerControl, multi: true },
|
|
438
495
|
], usesInheritance: true, ngImport: i0, template: "<mat-form-field>\r\n <input\r\n class=\"cursor-pointer\"\r\n matInput\r\n readonly\r\n [matDatepicker]=\"picker\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n [formControl]=\"ctrl\"\r\n [min]=\"minDate()\"\r\n [max]=\"maxDate()\"\r\n [placeholder]=\"'dd/mm/yyyy'\"\r\n [matDatepickerFilter]=\"calendarDaysFilter\"\r\n (dateChange)=\"emit($event)\"\r\n />\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n</mat-form-field>\r\n", styles: ["::ng-deep tr:has(>.mat-calendar-body-label[colspan=\"7\"]){opacity:0!important;display:none}::ng-deep .mat-datepicker-content .mat-calendar{height:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
439
496
|
}
|
|
440
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
497
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatePickerControl, decorators: [{
|
|
441
498
|
type: Component,
|
|
442
499
|
args: [{ selector: "iss-ctrl-date-picker", standalone: true, imports: [MatFormFieldModule, MatInputModule, MatDatepickerModule, MatIconModule, ReactiveFormsModule], providers: [
|
|
443
500
|
DatePipe,
|
|
444
501
|
{ provide: DateAdapter, useClass: ISSDateAdapter },
|
|
445
502
|
{ provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
|
|
446
503
|
{ provide: MAT_DATE_LOCALE, useValue: enGB },
|
|
447
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
448
|
-
{ provide: NG_VALIDATORS, useExisting:
|
|
504
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerControl, multi: true },
|
|
505
|
+
{ provide: NG_VALIDATORS, useExisting: DatePickerControl, multi: true },
|
|
449
506
|
], template: "<mat-form-field>\r\n <input\r\n class=\"cursor-pointer\"\r\n matInput\r\n readonly\r\n [matDatepicker]=\"picker\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n [formControl]=\"ctrl\"\r\n [min]=\"minDate()\"\r\n [max]=\"maxDate()\"\r\n [placeholder]=\"'dd/mm/yyyy'\"\r\n [matDatepickerFilter]=\"calendarDaysFilter\"\r\n (dateChange)=\"emit($event)\"\r\n />\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n</mat-form-field>\r\n", styles: ["::ng-deep tr:has(>.mat-calendar-body-label[colspan=\"7\"]){opacity:0!important;display:none}::ng-deep .mat-datepicker-content .mat-calendar{height:unset!important}\n"] }]
|
|
450
507
|
}] });
|
|
451
508
|
|
|
452
|
-
class
|
|
509
|
+
class DateRangePickerControl extends BaseCtrl {
|
|
453
510
|
constructor() {
|
|
454
511
|
super(...arguments);
|
|
455
512
|
this.disabledDays = input([]);
|
|
@@ -514,16 +571,16 @@ class DateRangePickerComponent extends BaseCtrl {
|
|
|
514
571
|
end: this.#getFormatedEndDate(end)
|
|
515
572
|
};
|
|
516
573
|
}
|
|
517
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
518
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type:
|
|
574
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DateRangePickerControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
575
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: DateRangePickerControl, isStandalone: true, selector: "iss-ctrl-date-range-picker", inputs: { disabledDays: { classPropertyName: "disabledDays", publicName: "disabledDays", 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 } }, outputs: { onDateRangeObjectChange: "onDateRangeObjectChange" }, providers: [
|
|
519
576
|
DatePipe,
|
|
520
577
|
{ provide: DateAdapter, useClass: ISSDateAdapter },
|
|
521
578
|
{ provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
|
|
522
579
|
{ provide: MAT_DATE_LOCALE, useValue: enGB },
|
|
523
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
580
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DateRangePickerControl, multi: true },
|
|
524
581
|
], usesInheritance: true, ngImport: i0, template: "<mat-form-field>\r\n <mat-date-range-input\r\n [formGroup]=\"range\"\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDate()\"\r\n [max]=\"maxDate()\"\r\n [dateFilter]=\"calendarDaysFilter\"\r\n >\r\n <input\r\n matStartDate\r\n formControlName=\"start\"\r\n placeholder=\"dd/mm/yyyy\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n />\r\n <input\r\n matEndDate\r\n formControlName=\"end\"\r\n placeholder=\"dd/mm/yyyy\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n</mat-form-field>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$1.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$1.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$1.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
525
582
|
}
|
|
526
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
583
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DateRangePickerControl, decorators: [{
|
|
527
584
|
type: Component,
|
|
528
585
|
args: [{ selector: "iss-ctrl-date-range-picker", standalone: true, imports: [
|
|
529
586
|
MatFormFieldModule, MatDatepickerModule, FormsModule, ReactiveFormsModule,
|
|
@@ -532,11 +589,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
532
589
|
{ provide: DateAdapter, useClass: ISSDateAdapter },
|
|
533
590
|
{ provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
|
|
534
591
|
{ provide: MAT_DATE_LOCALE, useValue: enGB },
|
|
535
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
592
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DateRangePickerControl, multi: true },
|
|
536
593
|
], template: "<mat-form-field>\r\n <mat-date-range-input\r\n [formGroup]=\"range\"\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDate()\"\r\n [max]=\"maxDate()\"\r\n [dateFilter]=\"calendarDaysFilter\"\r\n >\r\n <input\r\n matStartDate\r\n formControlName=\"start\"\r\n placeholder=\"dd/mm/yyyy\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n />\r\n <input\r\n matEndDate\r\n formControlName=\"end\"\r\n placeholder=\"dd/mm/yyyy\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n</mat-form-field>\r\n" }]
|
|
537
594
|
}] });
|
|
538
595
|
|
|
539
|
-
class
|
|
596
|
+
class TimePickerControl extends BaseCtrl {
|
|
540
597
|
constructor() {
|
|
541
598
|
super(...arguments);
|
|
542
599
|
this.isOpen = signal(false);
|
|
@@ -671,13 +728,13 @@ class TimePickerComponent extends BaseCtrl {
|
|
|
671
728
|
timeArr.pop();
|
|
672
729
|
return timeArr.join(":");
|
|
673
730
|
}
|
|
674
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
675
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type:
|
|
676
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
677
|
-
{ provide: NG_VALIDATORS, useExisting:
|
|
731
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TimePickerControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
732
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: TimePickerControl, isStandalone: true, selector: "iss-ctrl-time-picker", providers: [
|
|
733
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: TimePickerControl, multi: true },
|
|
734
|
+
{ provide: NG_VALIDATORS, useExisting: TimePickerControl, multi: true }
|
|
678
735
|
], usesInheritance: true, ngImport: i0, template: "<mat-form-field class=\"cursor-pointer\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\" (click)=\"togglePickerMenu()\">\r\n <!--<span *ngIf=\"matPrefix\" matPrefix class=\"sfi {{ iconPrefixName }} font-18\"></span>-->\r\n <input\r\n class=\"cursor-pointer\"\r\n matInput\r\n placeholder=\"--:-- --\"\r\n [value]=\"displayValue()\"\r\n readonly=\"readonly\"\r\n />\r\n <ds-icon icon=\"clock\" class=\"fs-24 fc-black\" matSuffix></ds-icon>\r\n</mat-form-field>\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"close()\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n>\r\n <div class=\"time-picker-wrapper\" [formGroup]=\"timePicker\">\r\n <div class=\"time-picker-title\">\r\n <span class=\"time-label\">HH</span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"time-label\">MM</span>\r\n <span class=\"mx-1\"></span>\r\n </div>\r\n <div class=\"time-picker-body\">\r\n <mat-button-toggle-group formControlName=\"hour\" hideSingleSelectionIndicator class=\"flex-nowrap\">\r\n @for (hour of hours; track hour) {\r\n <mat-button-toggle [value]=\"hour\">\r\n <span class=\"font-14 font-weight-normal\">{{ hour >= 10 ? hour : '0' + hour }}</span>\r\n </mat-button-toggle>\r\n }\r\n </mat-button-toggle-group>\r\n <span class=\"mx-1\"></span>\r\n <mat-button-toggle-group formControlName=\"minute\" hideSingleSelectionIndicator class=\"flex-nowrap\">\r\n @for (minute of minutes; track minute) {\r\n <mat-button-toggle [value]=\"minute\">\r\n <span class=\"font-14 font-weight-normal\">{{ minute >= 10 ? minute : '0' + minute }}</span>\r\n </mat-button-toggle>\r\n }\r\n </mat-button-toggle-group>\r\n <span class=\"mx-1\"></span>\r\n\r\n <mat-button-toggle-group formControlName=\"meridiem\" hideSingleSelectionIndicator>\r\n <mat-button-toggle value=\"AM\">AM</mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">PM</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: ["input[readonly=true]{color:var(--black)!important}.time-picker-wrapper{background-color:var(--white);border:4px solid var(--light-gray);padding:10px;margin-top:-20px}.time-picker-wrapper .time-picker-title{display:flex}.time-picker-wrapper .time-picker-title .time-label{display:flex;align-items:center;justify-content:center;width:50px;min-width:50px;padding:0;font-size:.95rem;color:var(--dark-gray)}[dir=ltr] .time-picker-wrapper .time-picker-title .time-label{margin-right:4px}[dir=rtl] .time-picker-wrapper .time-picker-title .time-label{margin-left:4px}.time-picker-wrapper .time-picker-body{display:flex}.time-picker-wrapper .time-picker-body .mat-button-toggle-group{display:flex;flex-direction:column;max-height:200px;overflow-y:auto;border:none}.time-picker-wrapper .time-picker-body .mat-button-toggle-group .mat-button-toggle{border:0;width:50px;min-width:50px}.time-picker-wrapper .time-picker-body .mat-button-toggle-group .mat-button-toggle.mat-button-toggle-checked{color:var(--white)!important}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
679
736
|
}
|
|
680
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
737
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TimePickerControl, decorators: [{
|
|
681
738
|
type: Component,
|
|
682
739
|
args: [{ selector: "iss-ctrl-time-picker", standalone: true, imports: [
|
|
683
740
|
MatFormField,
|
|
@@ -689,12 +746,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
689
746
|
CdkConnectedOverlay,
|
|
690
747
|
ReactiveFormsModule
|
|
691
748
|
], providers: [
|
|
692
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
693
|
-
{ provide: NG_VALIDATORS, useExisting:
|
|
749
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: TimePickerControl, multi: true },
|
|
750
|
+
{ provide: NG_VALIDATORS, useExisting: TimePickerControl, multi: true }
|
|
694
751
|
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-form-field class=\"cursor-pointer\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\" (click)=\"togglePickerMenu()\">\r\n <!--<span *ngIf=\"matPrefix\" matPrefix class=\"sfi {{ iconPrefixName }} font-18\"></span>-->\r\n <input\r\n class=\"cursor-pointer\"\r\n matInput\r\n placeholder=\"--:-- --\"\r\n [value]=\"displayValue()\"\r\n readonly=\"readonly\"\r\n />\r\n <ds-icon icon=\"clock\" class=\"fs-24 fc-black\" matSuffix></ds-icon>\r\n</mat-form-field>\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"close()\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n>\r\n <div class=\"time-picker-wrapper\" [formGroup]=\"timePicker\">\r\n <div class=\"time-picker-title\">\r\n <span class=\"time-label\">HH</span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"time-label\">MM</span>\r\n <span class=\"mx-1\"></span>\r\n </div>\r\n <div class=\"time-picker-body\">\r\n <mat-button-toggle-group formControlName=\"hour\" hideSingleSelectionIndicator class=\"flex-nowrap\">\r\n @for (hour of hours; track hour) {\r\n <mat-button-toggle [value]=\"hour\">\r\n <span class=\"font-14 font-weight-normal\">{{ hour >= 10 ? hour : '0' + hour }}</span>\r\n </mat-button-toggle>\r\n }\r\n </mat-button-toggle-group>\r\n <span class=\"mx-1\"></span>\r\n <mat-button-toggle-group formControlName=\"minute\" hideSingleSelectionIndicator class=\"flex-nowrap\">\r\n @for (minute of minutes; track minute) {\r\n <mat-button-toggle [value]=\"minute\">\r\n <span class=\"font-14 font-weight-normal\">{{ minute >= 10 ? minute : '0' + minute }}</span>\r\n </mat-button-toggle>\r\n }\r\n </mat-button-toggle-group>\r\n <span class=\"mx-1\"></span>\r\n\r\n <mat-button-toggle-group formControlName=\"meridiem\" hideSingleSelectionIndicator>\r\n <mat-button-toggle value=\"AM\">AM</mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">PM</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: ["input[readonly=true]{color:var(--black)!important}.time-picker-wrapper{background-color:var(--white);border:4px solid var(--light-gray);padding:10px;margin-top:-20px}.time-picker-wrapper .time-picker-title{display:flex}.time-picker-wrapper .time-picker-title .time-label{display:flex;align-items:center;justify-content:center;width:50px;min-width:50px;padding:0;font-size:.95rem;color:var(--dark-gray)}[dir=ltr] .time-picker-wrapper .time-picker-title .time-label{margin-right:4px}[dir=rtl] .time-picker-wrapper .time-picker-title .time-label{margin-left:4px}.time-picker-wrapper .time-picker-body{display:flex}.time-picker-wrapper .time-picker-body .mat-button-toggle-group{display:flex;flex-direction:column;max-height:200px;overflow-y:auto;border:none}.time-picker-wrapper .time-picker-body .mat-button-toggle-group .mat-button-toggle{border:0;width:50px;min-width:50px}.time-picker-wrapper .time-picker-body .mat-button-toggle-group .mat-button-toggle.mat-button-toggle-checked{color:var(--white)!important}\n"] }]
|
|
695
752
|
}] });
|
|
696
753
|
|
|
697
|
-
class
|
|
754
|
+
class DatetimePickerControl extends BaseCtrl {
|
|
698
755
|
constructor() {
|
|
699
756
|
super(...arguments);
|
|
700
757
|
this.disabledDays = input([]);
|
|
@@ -727,16 +784,16 @@ class DatetimePickerComponent extends BaseCtrl {
|
|
|
727
784
|
#formatDate(date) {
|
|
728
785
|
return this.#datePipe.transform(date, "yyyy-MM-ddTHH:mm:ss") + "Z";
|
|
729
786
|
}
|
|
730
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
731
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type:
|
|
787
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatetimePickerControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
788
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: DatetimePickerControl, isStandalone: true, selector: "iss-ctrl-datetime-picker", inputs: { disabledDays: { classPropertyName: "disabledDays", publicName: "disabledDays", 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 } }, providers: [
|
|
732
789
|
DatePipe,
|
|
733
790
|
{ provide: DateAdapter, useClass: ISSDateAdapter },
|
|
734
791
|
{ provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
|
|
735
792
|
{ provide: MAT_DATE_LOCALE, useValue: enGB },
|
|
736
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
737
|
-
], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"datetimePicker\" class=\"d-flex gap-3\">\r\n <iss-ctrl-date-picker class=\"flex-grow-1\" formControlName=\"date\" [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" [disabledDays]=\"disabledDays()\"/>\r\n <iss-ctrl-time-picker class=\"flex-grow-1\" formControlName=\"time\" [min]=\"min()\" [max]=\"max()\"/>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type:
|
|
793
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DatetimePickerControl, multi: true }
|
|
794
|
+
], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"datetimePicker\" class=\"d-flex gap-3\">\r\n <iss-ctrl-date-picker class=\"flex-grow-1\" formControlName=\"date\" [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" [disabledDays]=\"disabledDays()\"/>\r\n <iss-ctrl-time-picker class=\"flex-grow-1\" formControlName=\"time\" [min]=\"min()\" [max]=\"max()\"/>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TimePickerControl, selector: "iss-ctrl-time-picker" }, { kind: "component", type: DatePickerControl, selector: "iss-ctrl-date-picker", inputs: ["disabledDays", "minDate", "maxDate"] }] }); }
|
|
738
795
|
}
|
|
739
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatetimePickerControl, decorators: [{
|
|
740
797
|
type: Component,
|
|
741
798
|
args: [{ selector: "iss-ctrl-datetime-picker", standalone: true, imports: [
|
|
742
799
|
FormsModule,
|
|
@@ -747,27 +804,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
747
804
|
MatInput,
|
|
748
805
|
MatSuffix,
|
|
749
806
|
ReactiveFormsModule,
|
|
750
|
-
|
|
751
|
-
|
|
807
|
+
TimePickerControl,
|
|
808
|
+
DatePickerControl
|
|
752
809
|
], providers: [
|
|
753
810
|
DatePipe,
|
|
754
811
|
{ provide: DateAdapter, useClass: ISSDateAdapter },
|
|
755
812
|
{ provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
|
|
756
813
|
{ provide: MAT_DATE_LOCALE, useValue: enGB },
|
|
757
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
814
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DatetimePickerControl, multi: true }
|
|
758
815
|
], template: "<form [formGroup]=\"datetimePicker\" class=\"d-flex gap-3\">\r\n <iss-ctrl-date-picker class=\"flex-grow-1\" formControlName=\"date\" [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" [disabledDays]=\"disabledDays()\"/>\r\n <iss-ctrl-time-picker class=\"flex-grow-1\" formControlName=\"time\" [min]=\"min()\" [max]=\"max()\"/>\r\n</form>\r\n" }]
|
|
759
816
|
}] });
|
|
760
817
|
|
|
761
|
-
class
|
|
762
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
763
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type:
|
|
764
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
818
|
+
class DatetimeRangePickerControl extends BaseCtrl {
|
|
819
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatetimeRangePickerControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
820
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: DatetimeRangePickerControl, isStandalone: true, selector: "iss-ctrl-datetime-range-picker", providers: [
|
|
821
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DatetimeRangePickerControl, multi: true }
|
|
765
822
|
], usesInheritance: true, ngImport: i0, template: "<p>datetime-range-picker works!</p>\r\n", styles: [""] }); }
|
|
766
823
|
}
|
|
767
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
824
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatetimeRangePickerControl, decorators: [{
|
|
768
825
|
type: Component,
|
|
769
826
|
args: [{ selector: "iss-ctrl-datetime-range-picker", standalone: true, imports: [], providers: [
|
|
770
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
827
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DatetimeRangePickerControl, multi: true }
|
|
771
828
|
], template: "<p>datetime-range-picker works!</p>\r\n" }]
|
|
772
829
|
}] });
|
|
773
830
|
|
|
@@ -819,7 +876,7 @@ class HintsComponent {
|
|
|
819
876
|
<div class="d-flex align-items-center flex-wrap gap-2 mb-3">
|
|
820
877
|
@for (hint of hints(); track $index) {
|
|
821
878
|
@if (hint) {
|
|
822
|
-
<mat-hint class="d-flex align-items-center gap-1 fs-12">
|
|
879
|
+
<mat-hint [align]="hint.align" class="d-flex align-items-center gap-1 fs-12">
|
|
823
880
|
@if (hint.valid === undefined) {
|
|
824
881
|
<ds-icon icon="info" class="fs-24 fc-dark-gray"></ds-icon>
|
|
825
882
|
<span class="fc-dark-gray text-break">{{ hint.label }}</span>
|
|
@@ -849,7 +906,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
849
906
|
<div class="d-flex align-items-center flex-wrap gap-2 mb-3">
|
|
850
907
|
@for (hint of hints(); track $index) {
|
|
851
908
|
@if (hint) {
|
|
852
|
-
<mat-hint class="d-flex align-items-center gap-1 fs-12">
|
|
909
|
+
<mat-hint [align]="hint.align" class="d-flex align-items-center gap-1 fs-12">
|
|
853
910
|
@if (hint.valid === undefined) {
|
|
854
911
|
<ds-icon icon="info" class="fs-24 fc-dark-gray"></ds-icon>
|
|
855
912
|
<span class="fc-dark-gray text-break">{{ hint.label }}</span>
|
|
@@ -871,7 +928,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
871
928
|
}]
|
|
872
929
|
}] });
|
|
873
930
|
|
|
874
|
-
class
|
|
931
|
+
class FilePickerControl extends BaseCtrl {
|
|
875
932
|
constructor() {
|
|
876
933
|
super(...arguments);
|
|
877
934
|
this.accept = input();
|
|
@@ -967,12 +1024,12 @@ class FilePickerComponent extends BaseCtrl {
|
|
|
967
1024
|
window.URL.revokeObjectURL(fileUrl);
|
|
968
1025
|
a.remove();
|
|
969
1026
|
}
|
|
970
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
971
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type:
|
|
972
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
1027
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FilePickerControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1028
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FilePickerControl, isStandalone: true, selector: "iss-ctrl-file-picker", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, showDownloadButton: { classPropertyName: "showDownloadButton", publicName: "showDownloadButton", isSignal: true, isRequired: false, transformFunction: null }, showDeleteButton: { classPropertyName: "showDeleteButton", publicName: "showDeleteButton", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
1029
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: FilePickerControl, multi: true }
|
|
973
1030
|
], usesInheritance: true, ngImport: i0, template: "<ds-file-picker (click)=\"inputFile.click(); markAsTouched()\" droppable (onDrop)=\"captureFile($event)\">\r\n <input\r\n id=\"file\"\r\n type=\"file\"\r\n #inputFile\r\n [style.display]=\"'none'\"\r\n [formControl]=\"ctrl\"\r\n [multiple]=\"multiple()\"\r\n [accept]=\"accept()\"\r\n (change)=\"captureFile($any($event.target).files)\"\r\n />\r\n</ds-file-picker>\r\n\r\n<iss-ctrl-hints [hints]=\"hints()\" [touched]=\"touched()\"/>\r\n@if (attachments().length) {\r\n <section class=\"files-list\">\r\n @for (file of attachments(); track $index) {\r\n <div class=\"file-item-container\">\r\n @if (file) {\r\n <ds-attachments\r\n [matTooltip]=\"file.name\"\r\n [file]=\"file\"\r\n [showDownload]=\"showDownloadButton()\"\r\n [showActions]=\"showDeleteButton()\"\r\n (downloadEvent)=\"onDownload($event)\"\r\n (deleteEvent)=\"onDelete($index)\"\r\n >\r\n </ds-attachments>\r\n }\r\n </div>\r\n }\r\n </section>\r\n}\r\n", styles: [".file-uploader{--uploader-height: 150px;--uploader-width: 100%;--uploader-bg: var(--off-white);--uploader-border: 1px dashed var(--dark-gray);--uploader-radius: var(--box-radius);--uploader-padding: 1rem;height:var(--uploader-height);background-color:var(--uploader-bg);border:var(--uploader-border);border-radius:var(--uploader-radius);padding:var(--uploader-padding);text-align:center;cursor:pointer}.file-uploader--input{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:.75rem}.insideTableStyle{width:272px}.files-list{--file-item-width: 270px;display:grid;grid-template-columns:repeat(auto-fill,var(--file-item-width));grid-gap:.5rem}@media (max-width: 768px){.files-list{grid-template-columns:repeat(auto-fill,minmax(var(--file-item-width),1fr))}}.files-list .file-item-container .file-item{--file-bg: var(--off-white);--file-radius: var(--box-radius);--icon-color: var(--purple);--icon-size: 2rem;--file-border: transparent;display:flex;align-items:center;background-color:var(--file-bg);border:1px solid var(--file-border);border-radius:var(--file-radius);padding:0 1rem;height:70px;gap:.75rem}.files-list .file-item-container .file-item.error{--file-bg: rgba(var(--rgb-red), 10%);--file-border: var(--red);--icon-color: var(--red)}.files-list .file-item-container .file-item .icon{color:var(--icon-color);font-size:var(--icon-size)}.files-list .file-item-container .file-item .file-action{display:flex;align-items:center;gap:.5rem}ds-attachments::part(base){--file-width: 250px}::ng-deep .file-item .name-size{display:flex;flex-direction:column;justify-content:center;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:120px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: DroppableDirective, selector: "[droppable]", outputs: ["onDrop"] }, { kind: "component", type: HintsComponent, selector: "iss-ctrl-hints", inputs: ["hints", "touched"] }] }); }
|
|
974
1031
|
}
|
|
975
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
1032
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FilePickerControl, decorators: [{
|
|
976
1033
|
type: Component,
|
|
977
1034
|
args: [{ selector: "iss-ctrl-file-picker", standalone: true, imports: [
|
|
978
1035
|
ReactiveFormsModule,
|
|
@@ -980,30 +1037,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
980
1037
|
DroppableDirective,
|
|
981
1038
|
HintsComponent,
|
|
982
1039
|
], providers: [
|
|
983
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
1040
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: FilePickerControl, multi: true }
|
|
984
1041
|
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<ds-file-picker (click)=\"inputFile.click(); markAsTouched()\" droppable (onDrop)=\"captureFile($event)\">\r\n <input\r\n id=\"file\"\r\n type=\"file\"\r\n #inputFile\r\n [style.display]=\"'none'\"\r\n [formControl]=\"ctrl\"\r\n [multiple]=\"multiple()\"\r\n [accept]=\"accept()\"\r\n (change)=\"captureFile($any($event.target).files)\"\r\n />\r\n</ds-file-picker>\r\n\r\n<iss-ctrl-hints [hints]=\"hints()\" [touched]=\"touched()\"/>\r\n@if (attachments().length) {\r\n <section class=\"files-list\">\r\n @for (file of attachments(); track $index) {\r\n <div class=\"file-item-container\">\r\n @if (file) {\r\n <ds-attachments\r\n [matTooltip]=\"file.name\"\r\n [file]=\"file\"\r\n [showDownload]=\"showDownloadButton()\"\r\n [showActions]=\"showDeleteButton()\"\r\n (downloadEvent)=\"onDownload($event)\"\r\n (deleteEvent)=\"onDelete($index)\"\r\n >\r\n </ds-attachments>\r\n }\r\n </div>\r\n }\r\n </section>\r\n}\r\n", styles: [".file-uploader{--uploader-height: 150px;--uploader-width: 100%;--uploader-bg: var(--off-white);--uploader-border: 1px dashed var(--dark-gray);--uploader-radius: var(--box-radius);--uploader-padding: 1rem;height:var(--uploader-height);background-color:var(--uploader-bg);border:var(--uploader-border);border-radius:var(--uploader-radius);padding:var(--uploader-padding);text-align:center;cursor:pointer}.file-uploader--input{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:.75rem}.insideTableStyle{width:272px}.files-list{--file-item-width: 270px;display:grid;grid-template-columns:repeat(auto-fill,var(--file-item-width));grid-gap:.5rem}@media (max-width: 768px){.files-list{grid-template-columns:repeat(auto-fill,minmax(var(--file-item-width),1fr))}}.files-list .file-item-container .file-item{--file-bg: var(--off-white);--file-radius: var(--box-radius);--icon-color: var(--purple);--icon-size: 2rem;--file-border: transparent;display:flex;align-items:center;background-color:var(--file-bg);border:1px solid var(--file-border);border-radius:var(--file-radius);padding:0 1rem;height:70px;gap:.75rem}.files-list .file-item-container .file-item.error{--file-bg: rgba(var(--rgb-red), 10%);--file-border: var(--red);--icon-color: var(--red)}.files-list .file-item-container .file-item .icon{color:var(--icon-color);font-size:var(--icon-size)}.files-list .file-item-container .file-item .file-action{display:flex;align-items:center;gap:.5rem}ds-attachments::part(base){--file-width: 250px}::ng-deep .file-item .name-size{display:flex;flex-direction:column;justify-content:center;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:120px}\n"] }]
|
|
985
1042
|
}] });
|
|
986
1043
|
|
|
987
|
-
class
|
|
1044
|
+
class InputControl extends BaseCtrl {
|
|
988
1045
|
constructor() {
|
|
989
1046
|
super(...arguments);
|
|
990
1047
|
this.type = input("text");
|
|
1048
|
+
this.prefixIcon = input("");
|
|
1049
|
+
this.prefixText = input("");
|
|
1050
|
+
this.suffixIcon = input("");
|
|
1051
|
+
this.suffixText = input("");
|
|
1052
|
+
this.onPrefixClick = output();
|
|
1053
|
+
this.onSuffixClick = output();
|
|
1054
|
+
this.#ctrlChanges = toSignal(this.ctrl.valueChanges);
|
|
1055
|
+
this.#effect = effect(() => {
|
|
1056
|
+
if (this.#ctrlChanges()) {
|
|
1057
|
+
this.emitValue(this.#ctrlChanges());
|
|
1058
|
+
}
|
|
1059
|
+
});
|
|
1060
|
+
}
|
|
1061
|
+
#ctrlChanges;
|
|
1062
|
+
#effect;
|
|
1063
|
+
emitSuffixClick() {
|
|
1064
|
+
this.onSuffixClick.emit(this.ctrl.getRawValue());
|
|
1065
|
+
}
|
|
1066
|
+
emitPrefixClick() {
|
|
1067
|
+
this.onPrefixClick.emit(this.ctrl.getRawValue());
|
|
1068
|
+
}
|
|
1069
|
+
ngOnDestroy() {
|
|
1070
|
+
this.#effect.destroy();
|
|
991
1071
|
}
|
|
992
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
993
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
994
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
995
|
-
|
|
1072
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InputControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1073
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: InputControl, isStandalone: true, selector: "iss-ctrl-input", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, prefixIcon: { classPropertyName: "prefixIcon", publicName: "prefixIcon", isSignal: true, isRequired: false, transformFunction: null }, prefixText: { classPropertyName: "prefixText", publicName: "prefixText", isSignal: true, isRequired: false, transformFunction: null }, suffixIcon: { classPropertyName: "suffixIcon", publicName: "suffixIcon", isSignal: true, isRequired: false, transformFunction: null }, suffixText: { classPropertyName: "suffixText", publicName: "suffixText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onPrefixClick: "onPrefixClick", onSuffixClick: "onSuffixClick" }, providers: [
|
|
1074
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: InputControl, multi: true },
|
|
1075
|
+
{ provide: NG_VALIDATORS, useExisting: InputControl, multi: true }
|
|
1076
|
+
], usesInheritance: true, ngImport: i0, template: "<mat-form-field appearance=\"outline\">\r\n <ng-content select=\"[issPrefix]\"></ng-content>\r\n <div (click)=\"emitPrefixClick()\" class=\"cursor-pointer\">\r\n @if (prefixText()) {\r\n <span matTextPrefix>{{ prefixText() }}</span>\r\n }\r\n @if (prefixIcon()) {\r\n <ds-icon matPrefix icon=\"{{prefixIcon()}}\"></ds-icon>\r\n }\r\n </div>\r\n <input\r\n matInput\r\n (blur)=\"markAsTouched()\"\r\n (input)=\"emitOnChangeEvent()\"\r\n [formControl]=\"ctrl\"\r\n [maxlength]=\"max()\"\r\n [minlength]=\"min()\"\r\n [placeholder]=\"placeholder()\"\r\n [type]=\"type()\"\r\n [disabled]=\"disabled()\"\r\n />\r\n <ng-content select=\"[issSuffix]\"></ng-content>\r\n <div (click)=\"emitSuffixClick()\" class=\"cursor-pointer\">\r\n @if (suffixText()) {\r\n <span matTextSuffix>{{ suffixText() }}</span>\r\n }\r\n @if (suffixIcon()) {\r\n <ds-icon matSuffix icon=\"{{suffixIcon()}}\"></ds-icon>\r\n }\r\n </div>\r\n <iss-ctrl-hints [hints]=\"hints()\"/>\r\n</mat-form-field>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i1$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: HintsComponent, selector: "iss-ctrl-hints", inputs: ["hints", "touched"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
996
1077
|
}
|
|
997
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
1078
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InputControl, decorators: [{
|
|
998
1079
|
type: Component,
|
|
999
1080
|
args: [{ selector: "iss-ctrl-input", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1000
|
-
MatFormFieldModule,
|
|
1001
|
-
MatInputModule,
|
|
1002
1081
|
ReactiveFormsModule,
|
|
1003
|
-
|
|
1082
|
+
MatFormFieldModule,
|
|
1083
|
+
HintsComponent,
|
|
1084
|
+
MatInput
|
|
1004
1085
|
], providers: [
|
|
1005
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
1006
|
-
|
|
1086
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: InputControl, multi: true },
|
|
1087
|
+
{ provide: NG_VALIDATORS, useExisting: InputControl, multi: true }
|
|
1088
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-form-field appearance=\"outline\">\r\n <ng-content select=\"[issPrefix]\"></ng-content>\r\n <div (click)=\"emitPrefixClick()\" class=\"cursor-pointer\">\r\n @if (prefixText()) {\r\n <span matTextPrefix>{{ prefixText() }}</span>\r\n }\r\n @if (prefixIcon()) {\r\n <ds-icon matPrefix icon=\"{{prefixIcon()}}\"></ds-icon>\r\n }\r\n </div>\r\n <input\r\n matInput\r\n (blur)=\"markAsTouched()\"\r\n (input)=\"emitOnChangeEvent()\"\r\n [formControl]=\"ctrl\"\r\n [maxlength]=\"max()\"\r\n [minlength]=\"min()\"\r\n [placeholder]=\"placeholder()\"\r\n [type]=\"type()\"\r\n [disabled]=\"disabled()\"\r\n />\r\n <ng-content select=\"[issSuffix]\"></ng-content>\r\n <div (click)=\"emitSuffixClick()\" class=\"cursor-pointer\">\r\n @if (suffixText()) {\r\n <span matTextSuffix>{{ suffixText() }}</span>\r\n }\r\n @if (suffixIcon()) {\r\n <ds-icon matSuffix icon=\"{{suffixIcon()}}\"></ds-icon>\r\n }\r\n </div>\r\n <iss-ctrl-hints [hints]=\"hints()\"/>\r\n</mat-form-field>\r\n" }]
|
|
1007
1089
|
}] });
|
|
1008
1090
|
|
|
1009
1091
|
const COUNTRIES = [
|
|
@@ -3150,7 +3232,7 @@ const DEFAULT_COUNTRY = {
|
|
|
3150
3232
|
order: 1000,
|
|
3151
3233
|
placeholder: "512345678"
|
|
3152
3234
|
};
|
|
3153
|
-
class
|
|
3235
|
+
class MobileControl extends BaseCtrl {
|
|
3154
3236
|
constructor() {
|
|
3155
3237
|
super(...arguments);
|
|
3156
3238
|
this.phoneService = inject(PhoneService);
|
|
@@ -3248,13 +3330,13 @@ class MobileComponent extends BaseCtrl {
|
|
|
3248
3330
|
}
|
|
3249
3331
|
return this.#sortCountries();
|
|
3250
3332
|
}
|
|
3251
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3252
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type:
|
|
3253
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3254
|
-
{ provide: NG_VALIDATORS, useExisting:
|
|
3333
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MobileControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3334
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: MobileControl, isStandalone: true, selector: "iss-ctrl-mobile", inputs: { preferredCountries: { classPropertyName: "preferredCountries", publicName: "preferredCountries", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
3335
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: MobileControl, multi: true },
|
|
3336
|
+
{ provide: NG_VALIDATORS, useExisting: MobileControl, multi: true }
|
|
3255
3337
|
], usesInheritance: true, ngImport: i0, template: "<mat-form-field cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <div class=\"d-inline-flex align-items-center gap-1 country-flag\" matPrefix (click)=\"toggleCountryCodeMenu()\">\r\n <img ngSrc=\"./flags/{{selectedCountry().code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\" [priority]=\"true\">\r\n <!--@if (separateDialCode()) {\r\n <div class=\"selected-dial-code\">+{{ selectedCountry.dialCode }}</div>\r\n }-->\r\n <ds-icon icon=\"arrow-down\" class=\"fs-12 fc-dark-gray\"></ds-icon>\r\n </div>\r\n <input\r\n matInput\r\n type=\"tel\"\r\n autocomplete=\"off\"\r\n (blur)=\"markAsTouched()\"\r\n (keydown)=\"onInput($event)\"\r\n (input)=\"emit()\"\r\n [formControl]=\"ctrl\"\r\n [disabled]=\"disabled()\"\r\n [placeholder]=\"selectedCountry().placeholder\"\r\n />\r\n</mat-form-field>\r\n\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"closeCountryCodeMenu()\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n>\r\n <div class=\"country-dropdown bc-white box-shadow p-2\">\r\n <div class=\"search-container\">\r\n <mat-form-field>\r\n <input matInput id=\"country-search-box\" [formControl]=\"searchInput\" (click)=\"$event.stopPropagation()\"/>\r\n </mat-form-field>\r\n </div>\r\n <ul class=\"country-list\">\r\n @for (country of filteredCountries(); track $index) {\r\n <li\r\n #countryEl\r\n [ngClass]=\"country.order > 1 ? 'preferredCounty' : ''\"\r\n class=\"d-flex align-items-center gap-2 cursor-pointer p-2\"\r\n (click)=\"onSelectCountry(country)\"\r\n >\r\n @defer (on viewport(countryEl)) {\r\n <img ngSrc=\"./flags/{{country.code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\">\r\n }\r\n <span class=\"fs-12 fc-black\">{{ country.name }}</span>\r\n <span class=\"fs-12 fc-dark-gray\">+{{ country.dailCode }}</span>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</ng-template>\r\n", styles: [".country-flag{border-inline-end:var(--input-border);padding-inline-end:.5rem;margin-inline-end:.5rem;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], deferBlockDependencies: [() => [NgOptimizedImage]] }); }
|
|
3256
3338
|
}
|
|
3257
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3339
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MobileControl, decorators: [{
|
|
3258
3340
|
type: Component,
|
|
3259
3341
|
args: [{ selector: "iss-ctrl-mobile", standalone: true, imports: [
|
|
3260
3342
|
ReactiveFormsModule,
|
|
@@ -3266,25 +3348,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
3266
3348
|
MatPrefix,
|
|
3267
3349
|
NgOptimizedImage
|
|
3268
3350
|
], providers: [
|
|
3269
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3270
|
-
{ provide: NG_VALIDATORS, useExisting:
|
|
3351
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: MobileControl, multi: true },
|
|
3352
|
+
{ provide: NG_VALIDATORS, useExisting: MobileControl, multi: true }
|
|
3271
3353
|
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-form-field cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <div class=\"d-inline-flex align-items-center gap-1 country-flag\" matPrefix (click)=\"toggleCountryCodeMenu()\">\r\n <img ngSrc=\"./flags/{{selectedCountry().code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\" [priority]=\"true\">\r\n <!--@if (separateDialCode()) {\r\n <div class=\"selected-dial-code\">+{{ selectedCountry.dialCode }}</div>\r\n }-->\r\n <ds-icon icon=\"arrow-down\" class=\"fs-12 fc-dark-gray\"></ds-icon>\r\n </div>\r\n <input\r\n matInput\r\n type=\"tel\"\r\n autocomplete=\"off\"\r\n (blur)=\"markAsTouched()\"\r\n (keydown)=\"onInput($event)\"\r\n (input)=\"emit()\"\r\n [formControl]=\"ctrl\"\r\n [disabled]=\"disabled()\"\r\n [placeholder]=\"selectedCountry().placeholder\"\r\n />\r\n</mat-form-field>\r\n\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"closeCountryCodeMenu()\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n>\r\n <div class=\"country-dropdown bc-white box-shadow p-2\">\r\n <div class=\"search-container\">\r\n <mat-form-field>\r\n <input matInput id=\"country-search-box\" [formControl]=\"searchInput\" (click)=\"$event.stopPropagation()\"/>\r\n </mat-form-field>\r\n </div>\r\n <ul class=\"country-list\">\r\n @for (country of filteredCountries(); track $index) {\r\n <li\r\n #countryEl\r\n [ngClass]=\"country.order > 1 ? 'preferredCounty' : ''\"\r\n class=\"d-flex align-items-center gap-2 cursor-pointer p-2\"\r\n (click)=\"onSelectCountry(country)\"\r\n >\r\n @defer (on viewport(countryEl)) {\r\n <img ngSrc=\"./flags/{{country.code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\">\r\n }\r\n <span class=\"fs-12 fc-black\">{{ country.name }}</span>\r\n <span class=\"fs-12 fc-dark-gray\">+{{ country.dailCode }}</span>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</ng-template>\r\n", styles: [".country-flag{border-inline-end:var(--input-border);padding-inline-end:.5rem;margin-inline-end:.5rem;cursor:pointer}\n"] }]
|
|
3272
3354
|
}] });
|
|
3273
3355
|
|
|
3274
|
-
class
|
|
3275
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3276
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type:
|
|
3277
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3356
|
+
class NoteControl extends BaseCtrl {
|
|
3357
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NoteControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3358
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: NoteControl, isStandalone: true, selector: "iss-ctrl-note", providers: [
|
|
3359
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: NoteControl, multi: true }
|
|
3278
3360
|
], usesInheritance: true, ngImport: i0, template: "<p>note works!</p>\r\n", styles: [""] }); }
|
|
3279
3361
|
}
|
|
3280
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3362
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NoteControl, decorators: [{
|
|
3281
3363
|
type: Component,
|
|
3282
3364
|
args: [{ selector: "iss-ctrl-note", standalone: true, imports: [], providers: [
|
|
3283
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3365
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: NoteControl, multi: true }
|
|
3284
3366
|
], template: "<p>note works!</p>\r\n" }]
|
|
3285
3367
|
}] });
|
|
3286
3368
|
|
|
3287
|
-
class
|
|
3369
|
+
class ArabicNumberPipe {
|
|
3370
|
+
transform(n, ...args) {
|
|
3371
|
+
if (n === null || n === undefined) {
|
|
3372
|
+
return "";
|
|
3373
|
+
}
|
|
3374
|
+
if (isNaN(+n)) {
|
|
3375
|
+
return n;
|
|
3376
|
+
}
|
|
3377
|
+
return new Intl.NumberFormat("ar-SA", {}).format(+n);
|
|
3378
|
+
}
|
|
3379
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ArabicNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
3380
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: ArabicNumberPipe, isStandalone: true, name: "arabicNumber" }); }
|
|
3381
|
+
}
|
|
3382
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ArabicNumberPipe, decorators: [{
|
|
3383
|
+
type: Pipe,
|
|
3384
|
+
args: [{
|
|
3385
|
+
name: "arabicNumber",
|
|
3386
|
+
standalone: true
|
|
3387
|
+
}]
|
|
3388
|
+
}] });
|
|
3389
|
+
|
|
3390
|
+
const PLATE_LETTERS = [
|
|
3391
|
+
{ label: { ar: "أ", en: "A" }, value: "A" },
|
|
3392
|
+
{ label: { ar: "ب", en: "B" }, value: "B" },
|
|
3393
|
+
{ label: { ar: "ح", en: "J" }, value: "J" },
|
|
3394
|
+
{ label: { ar: "د", en: "D" }, value: "D" },
|
|
3395
|
+
{ label: { ar: "ر", en: "R" }, value: "R" },
|
|
3396
|
+
{ label: { ar: "س", en: "S" }, value: "S" },
|
|
3397
|
+
{ label: { ar: "ص", en: "X" }, value: "X" },
|
|
3398
|
+
{ label: { ar: "ط", en: "T" }, value: "T" },
|
|
3399
|
+
{ label: { ar: "ع", en: "E" }, value: "E" },
|
|
3400
|
+
{ label: { ar: "ق", en: "G" }, value: "G" },
|
|
3401
|
+
{ label: { ar: "ك", en: "K" }, value: "K" },
|
|
3402
|
+
{ label: { ar: "ل", en: "L" }, value: "L" },
|
|
3403
|
+
{ label: { ar: "م", en: "Z" }, value: "Z" },
|
|
3404
|
+
{ label: { ar: "ن", en: "N" }, value: "N" },
|
|
3405
|
+
{ label: { ar: "هـ", en: "H" }, value: "H" },
|
|
3406
|
+
{ label: { ar: "و", en: "U" }, value: "U" },
|
|
3407
|
+
{ label: { ar: "ي", en: "V" }, value: "V" }
|
|
3408
|
+
];
|
|
3409
|
+
|
|
3410
|
+
class PlateLetterPipe {
|
|
3411
|
+
transform(value, ...args) {
|
|
3412
|
+
const letter = PLATE_LETTERS.find(letter => letter.value === value);
|
|
3413
|
+
if (letter) {
|
|
3414
|
+
return letter.label.ar;
|
|
3415
|
+
}
|
|
3416
|
+
return value;
|
|
3417
|
+
}
|
|
3418
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PlateLetterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
3419
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: PlateLetterPipe, isStandalone: true, name: "plateLetter" }); }
|
|
3420
|
+
}
|
|
3421
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PlateLetterPipe, decorators: [{
|
|
3422
|
+
type: Pipe,
|
|
3423
|
+
args: [{
|
|
3424
|
+
name: "plateLetter",
|
|
3425
|
+
standalone: true
|
|
3426
|
+
}]
|
|
3427
|
+
}] });
|
|
3428
|
+
|
|
3429
|
+
class PlateControl extends BaseCtrl {
|
|
3288
3430
|
constructor() {
|
|
3289
3431
|
super(...arguments);
|
|
3290
3432
|
this.plate = new FormGroup({
|
|
@@ -3300,25 +3442,6 @@ class PlateNumberComponent extends BaseCtrl {
|
|
|
3300
3442
|
new FormControl(null),
|
|
3301
3443
|
]),
|
|
3302
3444
|
});
|
|
3303
|
-
this.options = [
|
|
3304
|
-
{ label: "A/أ", value: "A" },
|
|
3305
|
-
{ label: "B/ب", value: "B" },
|
|
3306
|
-
{ label: "J/ح", value: "J" },
|
|
3307
|
-
{ label: "D/د", value: "D" },
|
|
3308
|
-
{ label: "R/ر", value: "R" },
|
|
3309
|
-
{ label: "S/س", value: "S" },
|
|
3310
|
-
{ label: "X/ص", value: "X" },
|
|
3311
|
-
{ label: "T/ط", value: "T" },
|
|
3312
|
-
{ label: "E/ع", value: "E" },
|
|
3313
|
-
{ label: "G/ق", value: "G" },
|
|
3314
|
-
{ label: "K/ك", value: "K" },
|
|
3315
|
-
{ label: "L/ل", value: "L" },
|
|
3316
|
-
{ label: "Z/م", value: "Z" },
|
|
3317
|
-
{ label: "N/ن", value: "N" },
|
|
3318
|
-
{ label: "H/هـ", value: "H" },
|
|
3319
|
-
{ label: "U/و", value: "U" },
|
|
3320
|
-
{ label: "V/ي", value: "V" }
|
|
3321
|
-
];
|
|
3322
3445
|
this.#plateChanges = toSignal(this.plate.valueChanges);
|
|
3323
3446
|
this.#lettersArr = computed(() => this.#plateChanges()["letters"].filter((l) => l));
|
|
3324
3447
|
this.#letters = computed(() => this.#lettersArr().join(""));
|
|
@@ -3331,6 +3454,7 @@ class PlateNumberComponent extends BaseCtrl {
|
|
|
3331
3454
|
this.emitOnChangeEvent({ letters: this.#lettersArr(), numbers: this.#numbersArr() });
|
|
3332
3455
|
}
|
|
3333
3456
|
});
|
|
3457
|
+
this.PLATE_LETTERS = PLATE_LETTERS;
|
|
3334
3458
|
}
|
|
3335
3459
|
#plateChanges;
|
|
3336
3460
|
#lettersArr;
|
|
@@ -3369,12 +3493,12 @@ class PlateNumberComponent extends BaseCtrl {
|
|
|
3369
3493
|
}
|
|
3370
3494
|
return null;
|
|
3371
3495
|
}
|
|
3372
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3373
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type:
|
|
3374
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3375
|
-
], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"plate\">\r\n <div class=\"row mb-4\">\r\n
|
|
3496
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PlateControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3497
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: PlateControl, isStandalone: true, selector: "iss-ctrl-plate-number", providers: [
|
|
3498
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: PlateControl, multi: true }
|
|
3499
|
+
], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"plate\">\r\n @if (!disabled()) {\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"numbers\">\r\n @for (item of numberControls; track $index) {\r\n <div class=\"col-sm-3\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <input\r\n type=\"number\"\r\n matInput\r\n [formControlName]=\"$index\"\r\n maxlength=\"1\"\r\n placeholder=\"\"\r\n oninput=\"if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"letters\">\r\n @for (el of letterControls; track $index) {\r\n <div class=\"col-sm-4\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <mat-select disableOptionCentering [formControlName]=\"$index\">\r\n @for (option of PLATE_LETTERS; track option.value) {\r\n <mat-option [value]=\"option.value\">{{ option.label.en }} / {{ option.label.ar }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n }\r\n <div class=\"row mb-4\">\r\n <div class=\"col-12\">\r\n <ng-container *ngTemplateOutlet=\"plateElement\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #plateElement>\r\n <div class=\"plate d-inline-flex align-items-stretch justify-content-between fs-18\">\r\n <div class=\"d-flex flex-column border-right w-100\">\r\n <div class=\"ARPlate border-bottom d-flex h-50 w-100\">\r\n <div class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (numberCtrl of numberControls; track $index) {\r\n <span>{{ numberCtrl.value | arabicNumber }}</span>\r\n }\r\n </div>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (letterCtrl of letterControls; track $index) {\r\n <span>{{ letterCtrl.value | plateLetter }}</span>\r\n }\r\n </span>\r\n </div>\r\n <div class=\"ENPlate d-flex h-50 w-100\">\r\n <span class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (numberCtrl of numberControls; track $index) {\r\n <span>{{ numberCtrl.value }}</span>\r\n }\r\n </span>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (letterCtrl of letterControls; track $index) {\r\n <span>{{ letterCtrl.value }}</span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column gap-2 justify-content-center px-2 align-items-center\">\r\n <svg width=\"17\" height=\"19\" viewBox=\"0 0 17 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M10.8072 16.8744C11.4633 16.178 11.3244 15.3914 10.7996 15.3825C10.9872 15.9606 10.5562 16.3344 10.3922 16.5266C9.97894 16.1712 9.55086 15.7761 9.10778 15.3694C11.2695 13.5812 13.6354 11.995 16.7263 11.9452C13.3983 10.7499 10.7417 12.7815 8.4925 14.8084C6.24308 12.7815 3.58672 10.7499 0.257812 11.9452C3.34944 11.995 5.71507 13.581 7.87722 15.3694C7.43329 15.7761 7.00564 16.1712 6.59172 16.5266C6.42902 16.3344 5.99777 15.9606 6.18435 15.3825C5.65992 15.3914 5.52089 16.178 6.17758 16.8744C5.91495 17.0931 5.48962 17.4631 5.15113 17.5518C4.89082 17.6199 4.68185 17.4846 4.63473 17.2026C4.53542 16.6069 3.61271 16.6959 3.72554 17.5372C3.82907 18.3044 4.76066 18.6391 5.55892 18.2837C5.87565 18.1424 6.3107 17.7413 6.66778 17.45C6.83111 17.641 7.26215 18.0145 7.07494 18.5935C7.59979 18.5838 7.7384 17.798 7.08234 17.1005C7.54845 16.7028 8.01625 16.2927 8.4925 15.887C8.96833 16.2925 9.43634 16.7028 9.90288 17.1005C9.24639 17.798 9.385 18.5838 9.91006 18.5935C9.72285 18.0145 10.1539 17.6414 10.3168 17.45C10.6745 17.7413 11.1091 18.1424 11.4263 18.2837C12.2246 18.6391 13.1555 18.3044 13.259 17.5372C13.3719 16.6959 12.4496 16.6069 12.3494 17.2026C12.3023 17.4846 12.094 17.6196 11.8332 17.5518C11.4948 17.4631 11.0696 17.0931 10.8072 16.8744ZM6.72504 5.72093C6.22365 7.04637 6.19597 8.53894 6.9169 10.1805C6.80195 8.47576 7.17594 7.06771 7.8713 6.0066L8.01815 7.46832H7.84679L8.01815 9.17958H7.84679L8.01815 10.8904H7.84679L8.01794 12.5991L7.53366 13.0819H8.4925H9.45156L8.96685 12.5991L9.13842 10.8904H8.96685L9.13842 9.17958H8.96685L9.13842 7.46832H8.96685L9.11391 6.0066C9.80906 7.06771 10.1833 8.47682 10.0683 10.1805C10.7886 8.53894 10.7616 7.047 10.2602 5.72093C11.1115 6.72478 11.7701 7.89851 12.0661 9.36572C12.3733 7.50466 11.848 5.98568 10.8852 4.8071C11.8174 5.47943 12.6184 6.33157 13.1785 7.48396C13.048 5.72072 12.1559 4.57742 10.927 3.75824C11.989 4.1054 12.8561 4.68645 13.6343 5.71798C13.1139 3.8884 11.9801 3.15564 10.575 2.74362C11.5332 2.67368 12.4386 2.78165 13.3347 3.33988C12.3621 2.02839 11.0565 1.81055 9.73257 1.95634C10.2893 1.67279 10.9158 1.53101 11.5888 1.63137C10.8302 1.07187 9.81836 1.01651 8.95227 1.48812L8.4925 0.328125L8.0321 1.48749C7.1658 1.01651 6.15476 1.07166 5.39623 1.63137C6.06877 1.53122 6.69483 1.67279 7.25179 1.95634C5.92826 1.81055 4.62311 2.0286 3.6499 3.33988C4.54662 2.78165 5.45137 2.67368 6.41001 2.74362C5.00534 3.15564 3.87112 3.8884 3.35113 5.71798C4.12868 4.68666 4.99625 4.1054 6.05842 3.75824C4.8287 4.57721 3.93704 5.72072 3.80625 7.48396C4.36618 6.33157 5.16782 5.47943 6.09962 4.8071C5.13676 5.98568 4.61149 7.50466 4.91871 9.36572C5.21494 7.89851 5.87354 6.72478 6.72504 5.72093Z\"\r\n fill=\"#1D252D\"\r\n />\r\n </svg>\r\n <span class=\"fw-medium fs-12 line-height-1-2\">K<br/>S<br/>A</span>\r\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"4.49162\" cy=\"4.06193\" r=\"3.99162\" fill=\"#1D252D\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".plate{background:#f8f8f8;width:240px;height:110px;border:1px solid #8e9aa0;border-radius:3px;direction:ltr}.plate .border-right{border-right:1px solid #d6d6d4}.plate .border-bottom{border-bottom:1px solid #d6d6d4!important}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: ArabicNumberPipe, name: "arabicNumber" }, { kind: "pipe", type: PlateLetterPipe, name: "plateLetter" }] }); }
|
|
3376
3500
|
}
|
|
3377
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PlateControl, decorators: [{
|
|
3378
3502
|
type: Component,
|
|
3379
3503
|
args: [{ selector: "iss-ctrl-plate-number", standalone: true, imports: [
|
|
3380
3504
|
MatFormField,
|
|
@@ -3382,13 +3506,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
3382
3506
|
MatInput,
|
|
3383
3507
|
MatSelect,
|
|
3384
3508
|
MatOption,
|
|
3385
|
-
NgTemplateOutlet
|
|
3509
|
+
NgTemplateOutlet,
|
|
3510
|
+
ArabicNumberPipe,
|
|
3511
|
+
PlateLetterPipe
|
|
3386
3512
|
], providers: [
|
|
3387
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3388
|
-
], template: "<div [formGroup]=\"plate\">\r\n <div class=\"row mb-4\">\r\n
|
|
3513
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: PlateControl, multi: true }
|
|
3514
|
+
], template: "<div [formGroup]=\"plate\">\r\n @if (!disabled()) {\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"numbers\">\r\n @for (item of numberControls; track $index) {\r\n <div class=\"col-sm-3\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <input\r\n type=\"number\"\r\n matInput\r\n [formControlName]=\"$index\"\r\n maxlength=\"1\"\r\n placeholder=\"\"\r\n oninput=\"if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"letters\">\r\n @for (el of letterControls; track $index) {\r\n <div class=\"col-sm-4\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <mat-select disableOptionCentering [formControlName]=\"$index\">\r\n @for (option of PLATE_LETTERS; track option.value) {\r\n <mat-option [value]=\"option.value\">{{ option.label.en }} / {{ option.label.ar }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n }\r\n <div class=\"row mb-4\">\r\n <div class=\"col-12\">\r\n <ng-container *ngTemplateOutlet=\"plateElement\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #plateElement>\r\n <div class=\"plate d-inline-flex align-items-stretch justify-content-between fs-18\">\r\n <div class=\"d-flex flex-column border-right w-100\">\r\n <div class=\"ARPlate border-bottom d-flex h-50 w-100\">\r\n <div class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (numberCtrl of numberControls; track $index) {\r\n <span>{{ numberCtrl.value | arabicNumber }}</span>\r\n }\r\n </div>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (letterCtrl of letterControls; track $index) {\r\n <span>{{ letterCtrl.value | plateLetter }}</span>\r\n }\r\n </span>\r\n </div>\r\n <div class=\"ENPlate d-flex h-50 w-100\">\r\n <span class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (numberCtrl of numberControls; track $index) {\r\n <span>{{ numberCtrl.value }}</span>\r\n }\r\n </span>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (letterCtrl of letterControls; track $index) {\r\n <span>{{ letterCtrl.value }}</span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column gap-2 justify-content-center px-2 align-items-center\">\r\n <svg width=\"17\" height=\"19\" viewBox=\"0 0 17 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M10.8072 16.8744C11.4633 16.178 11.3244 15.3914 10.7996 15.3825C10.9872 15.9606 10.5562 16.3344 10.3922 16.5266C9.97894 16.1712 9.55086 15.7761 9.10778 15.3694C11.2695 13.5812 13.6354 11.995 16.7263 11.9452C13.3983 10.7499 10.7417 12.7815 8.4925 14.8084C6.24308 12.7815 3.58672 10.7499 0.257812 11.9452C3.34944 11.995 5.71507 13.581 7.87722 15.3694C7.43329 15.7761 7.00564 16.1712 6.59172 16.5266C6.42902 16.3344 5.99777 15.9606 6.18435 15.3825C5.65992 15.3914 5.52089 16.178 6.17758 16.8744C5.91495 17.0931 5.48962 17.4631 5.15113 17.5518C4.89082 17.6199 4.68185 17.4846 4.63473 17.2026C4.53542 16.6069 3.61271 16.6959 3.72554 17.5372C3.82907 18.3044 4.76066 18.6391 5.55892 18.2837C5.87565 18.1424 6.3107 17.7413 6.66778 17.45C6.83111 17.641 7.26215 18.0145 7.07494 18.5935C7.59979 18.5838 7.7384 17.798 7.08234 17.1005C7.54845 16.7028 8.01625 16.2927 8.4925 15.887C8.96833 16.2925 9.43634 16.7028 9.90288 17.1005C9.24639 17.798 9.385 18.5838 9.91006 18.5935C9.72285 18.0145 10.1539 17.6414 10.3168 17.45C10.6745 17.7413 11.1091 18.1424 11.4263 18.2837C12.2246 18.6391 13.1555 18.3044 13.259 17.5372C13.3719 16.6959 12.4496 16.6069 12.3494 17.2026C12.3023 17.4846 12.094 17.6196 11.8332 17.5518C11.4948 17.4631 11.0696 17.0931 10.8072 16.8744ZM6.72504 5.72093C6.22365 7.04637 6.19597 8.53894 6.9169 10.1805C6.80195 8.47576 7.17594 7.06771 7.8713 6.0066L8.01815 7.46832H7.84679L8.01815 9.17958H7.84679L8.01815 10.8904H7.84679L8.01794 12.5991L7.53366 13.0819H8.4925H9.45156L8.96685 12.5991L9.13842 10.8904H8.96685L9.13842 9.17958H8.96685L9.13842 7.46832H8.96685L9.11391 6.0066C9.80906 7.06771 10.1833 8.47682 10.0683 10.1805C10.7886 8.53894 10.7616 7.047 10.2602 5.72093C11.1115 6.72478 11.7701 7.89851 12.0661 9.36572C12.3733 7.50466 11.848 5.98568 10.8852 4.8071C11.8174 5.47943 12.6184 6.33157 13.1785 7.48396C13.048 5.72072 12.1559 4.57742 10.927 3.75824C11.989 4.1054 12.8561 4.68645 13.6343 5.71798C13.1139 3.8884 11.9801 3.15564 10.575 2.74362C11.5332 2.67368 12.4386 2.78165 13.3347 3.33988C12.3621 2.02839 11.0565 1.81055 9.73257 1.95634C10.2893 1.67279 10.9158 1.53101 11.5888 1.63137C10.8302 1.07187 9.81836 1.01651 8.95227 1.48812L8.4925 0.328125L8.0321 1.48749C7.1658 1.01651 6.15476 1.07166 5.39623 1.63137C6.06877 1.53122 6.69483 1.67279 7.25179 1.95634C5.92826 1.81055 4.62311 2.0286 3.6499 3.33988C4.54662 2.78165 5.45137 2.67368 6.41001 2.74362C5.00534 3.15564 3.87112 3.8884 3.35113 5.71798C4.12868 4.68666 4.99625 4.1054 6.05842 3.75824C4.8287 4.57721 3.93704 5.72072 3.80625 7.48396C4.36618 6.33157 5.16782 5.47943 6.09962 4.8071C5.13676 5.98568 4.61149 7.50466 4.91871 9.36572C5.21494 7.89851 5.87354 6.72478 6.72504 5.72093Z\"\r\n fill=\"#1D252D\"\r\n />\r\n </svg>\r\n <span class=\"fw-medium fs-12 line-height-1-2\">K<br/>S<br/>A</span>\r\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"4.49162\" cy=\"4.06193\" r=\"3.99162\" fill=\"#1D252D\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".plate{background:#f8f8f8;width:240px;height:110px;border:1px solid #8e9aa0;border-radius:3px;direction:ltr}.plate .border-right{border-right:1px solid #d6d6d4}.plate .border-bottom{border-bottom:1px solid #d6d6d4!important}\n"] }]
|
|
3389
3515
|
}] });
|
|
3390
3516
|
|
|
3391
|
-
class
|
|
3517
|
+
class RadioControl extends BaseCtrl {
|
|
3392
3518
|
constructor() {
|
|
3393
3519
|
super(...arguments);
|
|
3394
3520
|
this.options = input.required();
|
|
@@ -3407,28 +3533,31 @@ class RadioComponent extends BaseCtrl {
|
|
|
3407
3533
|
onRadioChange(value) {
|
|
3408
3534
|
this.emitValue(value);
|
|
3409
3535
|
}
|
|
3410
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3411
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type:
|
|
3412
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3536
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: RadioControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3537
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: RadioControl, isStandalone: true, selector: "iss-ctrl-radio", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
|
|
3538
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: RadioControl, multi: true }
|
|
3413
3539
|
], usesInheritance: true, ngImport: i0, template: "<mat-radio-group aria-label=\"Select an option\">\r\n @for (option of options(); track option.value) {\r\n <mat-radio-button\r\n [value]=\"option.value\"\r\n [checked]=\"ctrl.value === option.value\"\r\n (change)=\"onRadioChange(option.value)\"\r\n >{{ option.label }}\r\n </mat-radio-button>\r\n }\r\n</mat-radio-group>\r\n", styles: [".mat-mdc-radio-group{flex-direction:column!important}\n"], dependencies: [{ kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i1$3.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i1$3.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
3414
3540
|
}
|
|
3415
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3541
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: RadioControl, decorators: [{
|
|
3416
3542
|
type: Component,
|
|
3417
3543
|
args: [{ selector: "iss-ctrl-radio", standalone: true, imports: [
|
|
3418
3544
|
MatRadioModule,
|
|
3419
3545
|
ReactiveFormsModule,
|
|
3420
3546
|
], providers: [
|
|
3421
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3547
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: RadioControl, multi: true }
|
|
3422
3548
|
], template: "<mat-radio-group aria-label=\"Select an option\">\r\n @for (option of options(); track option.value) {\r\n <mat-radio-button\r\n [value]=\"option.value\"\r\n [checked]=\"ctrl.value === option.value\"\r\n (change)=\"onRadioChange(option.value)\"\r\n >{{ option.label }}\r\n </mat-radio-button>\r\n }\r\n</mat-radio-group>\r\n", styles: [".mat-mdc-radio-group{flex-direction:column!important}\n"] }]
|
|
3423
3549
|
}] });
|
|
3424
3550
|
|
|
3425
|
-
class
|
|
3551
|
+
class SelectControl extends BaseCtrl {
|
|
3426
3552
|
constructor() {
|
|
3427
3553
|
super(...arguments);
|
|
3428
3554
|
this.selectedOptions = signal(new Map());
|
|
3429
3555
|
this.options = input.required();
|
|
3556
|
+
this.height = input("150px");
|
|
3430
3557
|
this.query = toSignal(this.ctrl.valueChanges);
|
|
3431
3558
|
this.filteredOptions = computed(() => this.#filter(this.query()));
|
|
3559
|
+
this.loading = input(false);
|
|
3560
|
+
this.allSelected = signal(false);
|
|
3432
3561
|
this.displayFn = (options) => {
|
|
3433
3562
|
if (Array.isArray(options) && !this.multiple()) {
|
|
3434
3563
|
/*const selectedLabel: string[] = options.map((o) => o.label);
|
|
@@ -3449,47 +3578,64 @@ class ISSCtrlSelectComponent extends BaseCtrl {
|
|
|
3449
3578
|
let selectedOptions = this.options().filter((option) => values.includes(option.value));
|
|
3450
3579
|
if (!this.multiple()) {
|
|
3451
3580
|
if (selectedOptions.length > 1) {
|
|
3452
|
-
this
|
|
3581
|
+
this.#emit();
|
|
3453
3582
|
throw new Error("You cannot set multiple values while the control is in single selection mode!");
|
|
3454
3583
|
}
|
|
3455
3584
|
selectedOptions = selectedOptions.splice(-selectedOptions.length, selectedOptions.length - selectedOptions.length + 1);
|
|
3456
3585
|
}
|
|
3457
3586
|
for (let i = 0; i < selectedOptions.length; i++) {
|
|
3458
3587
|
const val = selectedOptions[i];
|
|
3459
|
-
this
|
|
3588
|
+
this.#addToSelectedOptionsMap(val);
|
|
3460
3589
|
}
|
|
3461
3590
|
this.ctrl.setValue(selectedOptions);
|
|
3462
3591
|
}
|
|
3463
|
-
|
|
3464
|
-
if (
|
|
3465
|
-
return
|
|
3592
|
+
captureValue($event) {
|
|
3593
|
+
if ($event?.option.value === "_SELECT_ALL_OPTIONS_") {
|
|
3594
|
+
return;
|
|
3466
3595
|
}
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
getEmissionValue($event) {
|
|
3470
|
-
this.addToSelectedOptionsMap($event?.option.value);
|
|
3471
|
-
this.emitValue(this.stringifySelectedOptions());
|
|
3596
|
+
this.#addToSelectedOptionsMap($event?.option.value);
|
|
3597
|
+
this.#emit();
|
|
3472
3598
|
}
|
|
3473
3599
|
removeFromSelectedOptionsMap(option) {
|
|
3474
3600
|
this.selectedOptions().delete(option.value);
|
|
3475
|
-
//to update menu options with new version of the options
|
|
3476
3601
|
this.filteredOptions = computed(() => this.#filter(this.query()));
|
|
3477
|
-
this.
|
|
3602
|
+
this.allSelected.set(false);
|
|
3603
|
+
this.#emit();
|
|
3478
3604
|
}
|
|
3479
|
-
|
|
3605
|
+
clearSelection() {
|
|
3606
|
+
this.#reset();
|
|
3607
|
+
this.allSelected.set(false);
|
|
3608
|
+
this.#emit();
|
|
3609
|
+
}
|
|
3610
|
+
toggleAllSelection() {
|
|
3611
|
+
if (this.selectedOptions().size === this.options().length) {
|
|
3612
|
+
this.#reset();
|
|
3613
|
+
this.#emit();
|
|
3614
|
+
this.allSelected.set(false);
|
|
3615
|
+
return;
|
|
3616
|
+
}
|
|
3617
|
+
for (let i = 0; i < this.options().length; i++) {
|
|
3618
|
+
this.#addToSelectedOptionsMap(this.options()[i]);
|
|
3619
|
+
}
|
|
3620
|
+
this.allSelected.set(true);
|
|
3621
|
+
this.#emit();
|
|
3622
|
+
}
|
|
3623
|
+
#addToSelectedOptionsMap(option) {
|
|
3480
3624
|
if (option) {
|
|
3481
3625
|
const selectedOption = option;
|
|
3482
3626
|
if (!this.multiple()) {
|
|
3483
3627
|
this.#reset();
|
|
3484
3628
|
}
|
|
3485
3629
|
this.selectedOptions().set(selectedOption.value, selectedOption);
|
|
3486
|
-
this.ctrl.setValue(
|
|
3630
|
+
this.ctrl.setValue(this.#convertSelectedMapToArray());
|
|
3487
3631
|
}
|
|
3488
3632
|
}
|
|
3489
|
-
|
|
3490
|
-
this.#
|
|
3491
|
-
|
|
3492
|
-
|
|
3633
|
+
#stringifySelectedOptions() {
|
|
3634
|
+
const selectedOptionsArr = this.#convertSelectedMapToArray();
|
|
3635
|
+
if (selectedOptionsArr) {
|
|
3636
|
+
return selectedOptionsArr.map((o) => o.value).join();
|
|
3637
|
+
}
|
|
3638
|
+
return null;
|
|
3493
3639
|
}
|
|
3494
3640
|
#filter(queryString) {
|
|
3495
3641
|
if (queryString === null || queryString === undefined || typeof queryString !== "string") {
|
|
@@ -3501,18 +3647,25 @@ class ISSCtrlSelectComponent extends BaseCtrl {
|
|
|
3501
3647
|
});
|
|
3502
3648
|
return JSON.parse(JSON.stringify(filteredOptions));
|
|
3503
3649
|
}
|
|
3650
|
+
#emit() {
|
|
3651
|
+
this.propagateValue(this.#stringifySelectedOptions());
|
|
3652
|
+
this.emitOnChangeEvent(this.#convertSelectedMapToArray());
|
|
3653
|
+
}
|
|
3504
3654
|
#reset() {
|
|
3505
3655
|
this.selectedOptions().clear();
|
|
3506
3656
|
this.filteredOptions = computed(() => this.#filter(this.query()));
|
|
3507
3657
|
this.ctrl.setValue(null);
|
|
3508
3658
|
}
|
|
3509
|
-
|
|
3510
|
-
|
|
3511
|
-
|
|
3512
|
-
|
|
3513
|
-
|
|
3659
|
+
#convertSelectedMapToArray() {
|
|
3660
|
+
const selectedOptionsArr = Array.from(this.selectedOptions(), ([_, option]) => option);
|
|
3661
|
+
return selectedOptionsArr.length ? selectedOptionsArr : null;
|
|
3662
|
+
}
|
|
3663
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3664
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SelectControl, isStandalone: true, selector: "iss-ctrl-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
3665
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: SelectControl, multi: true },
|
|
3666
|
+
], usesInheritance: true, ngImport: i0, template: "<mat-form-field floatLabel=\"always\">\r\n <mat-label/>\r\n <input [formControl]=\"ctrl\" [matAutocomplete]=\"auto\" class=\"m-0\" [matChipInputFor]=\"chipGrid\" [placeholder]=\"placeholder()\" matInput/>\r\n @if (selectedOptions().size) {\r\n <span matSuffix class=\"sfi sfi-close fs-18 fc-black cursor-pointer\" (click)=\"clearSelection()\"></span>\r\n } @else {\r\n <span matSuffix class=\"sfi sfi-arrow-down fs-18 fc-black cursor-pointer\"></span>\r\n }\r\n\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayFn\"\r\n autoActiveFirstOption\r\n hideSingleSelectionIndicator\r\n (optionSelected)=\"captureValue($event)\"\r\n >\r\n @if (loading()) {\r\n <mat-option disabled=\"true\">\r\n <ds-icon icon=\"spinner\" class=\"spin fc-coral fs-20\"></ds-icon>\r\n </mat-option>\r\n } @else {\r\n @if (filteredOptions().length) {\r\n @if (multiple()) {\r\n <mat-option (click)=\"toggleAllSelection()\" value=\"_SELECT_ALL_OPTIONS_\">\r\n {{ allSelected() ? \"deselect all\" : \"Select All\" }}\r\n </mat-option>\r\n }\r\n <cdk-virtual-scroll-viewport itemSize=\"5\" [ngStyle]=\"{'height': height()}\">\r\n <mat-option\r\n *cdkVirtualFor=\"let option of filteredOptions()\"\r\n [value]=\"option\"\r\n [ngClass]=\"{'mdc-list-item__selected': option | selectStatus: selectedOptions()}\"\r\n >\r\n {{ option.label }}\r\n </mat-option>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <mat-option disabled=\"true\">No Result Found</mat-option>\r\n }\r\n }\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<mat-chip-grid #chipGrid>\r\n @if (multiple()) {\r\n @for (chip of selectedOptions(); track chip[0]) {\r\n <mat-chip-row (removed)=\"removeFromSelectedOptionsMap(chip[1])\">\r\n {{ chip[1].label }}\r\n <button matChipRemove [attr.aria-label]=\"'remove ' + chip[1].label\">\r\n <ds-icon icon=\"trash\" class=\"fc-red\"></ds-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n }\r\n</mat-chip-grid>\r\n", styles: ["::ng-deep .mat-mdc-option.mdc-list-item__selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{--mat-option-selected-state-label-text-color: var(--green);color:var(--green)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i6.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i6.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SelectStatusPipe, name: "selectStatus" }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
3514
3667
|
}
|
|
3515
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3668
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectControl, decorators: [{
|
|
3516
3669
|
type: Component,
|
|
3517
3670
|
args: [{ selector: "iss-ctrl-select", standalone: true, imports: [
|
|
3518
3671
|
ReactiveFormsModule,
|
|
@@ -3522,55 +3675,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
3522
3675
|
MatIconModule,
|
|
3523
3676
|
NgClass,
|
|
3524
3677
|
SelectStatusPipe,
|
|
3678
|
+
CdkVirtualForOf,
|
|
3679
|
+
CdkVirtualScrollViewport,
|
|
3680
|
+
CdkFixedSizeVirtualScroll,
|
|
3681
|
+
NgStyle,
|
|
3525
3682
|
], providers: [
|
|
3526
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3527
|
-
|
|
3528
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-form-field floatLabel=\"always\">\r\n <mat-label />\r\n <input [formControl]=\"ctrl\" [matAutocomplete]=\"auto\" class=\"m-0\" [matChipInputFor]=\"chipGrid\" [placeholder]=\"placeholder()\" matInput/>\r\n @if (selectedOptions().size) {\r\n <span matSuffix class=\"sfi sfi-close fs-18 fc-black cursor-pointer\" (click)=\"clearSelection()\"></span>\r\n } @else {\r\n <span matSuffix class=\"sfi sfi-arrow-down fs-18 fc-black cursor-pointer\"></span>\r\n }\r\n\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayFn\"\r\n autoActiveFirstOption\r\n hideSingleSelectionIndicator\r\n (optionSelected)=\"getEmissionValue($event)\"\r\n >\r\n @if (filteredOptions().length) {\r\n @for (option of filteredOptions(); track option.value) {\r\n <mat-option\r\n [value]=\"option\"\r\n [ngClass]=\"{'mdc-list-item__selected': option | selectStatus: selectedOptions()}\"\r\n >\r\n {{ option.label }}\r\n </mat-option>\r\n }\r\n } @else {\r\n <mat-option disabled=\"true\">No Result Found</mat-option>\r\n }\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<mat-chip-grid #chipGrid>\r\n @if (multiple()) {\r\n @for (chip of selectedOptions(); track chip[0]) {\r\n <mat-chip-row (removed)=\"removeFromSelectedOptionsMap(chip[1])\">\r\n {{ chip[1].label }}\r\n <button matChipRemove [attr.aria-label]=\"'remove ' + chip[1].label\">\r\n <ds-icon icon=\"trash\" class=\"fc-red\"></ds-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n }\r\n</mat-chip-grid>\r\n", styles: ["::ng-deep .mat-mdc-option.mdc-list-item__selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{--mat-option-selected-state-label-text-color: var(--green);color:var(--green)}\n"] }]
|
|
3683
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: SelectControl, multi: true },
|
|
3684
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-form-field floatLabel=\"always\">\r\n <mat-label/>\r\n <input [formControl]=\"ctrl\" [matAutocomplete]=\"auto\" class=\"m-0\" [matChipInputFor]=\"chipGrid\" [placeholder]=\"placeholder()\" matInput/>\r\n @if (selectedOptions().size) {\r\n <span matSuffix class=\"sfi sfi-close fs-18 fc-black cursor-pointer\" (click)=\"clearSelection()\"></span>\r\n } @else {\r\n <span matSuffix class=\"sfi sfi-arrow-down fs-18 fc-black cursor-pointer\"></span>\r\n }\r\n\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayFn\"\r\n autoActiveFirstOption\r\n hideSingleSelectionIndicator\r\n (optionSelected)=\"captureValue($event)\"\r\n >\r\n @if (loading()) {\r\n <mat-option disabled=\"true\">\r\n <ds-icon icon=\"spinner\" class=\"spin fc-coral fs-20\"></ds-icon>\r\n </mat-option>\r\n } @else {\r\n @if (filteredOptions().length) {\r\n @if (multiple()) {\r\n <mat-option (click)=\"toggleAllSelection()\" value=\"_SELECT_ALL_OPTIONS_\">\r\n {{ allSelected() ? \"deselect all\" : \"Select All\" }}\r\n </mat-option>\r\n }\r\n <cdk-virtual-scroll-viewport itemSize=\"5\" [ngStyle]=\"{'height': height()}\">\r\n <mat-option\r\n *cdkVirtualFor=\"let option of filteredOptions()\"\r\n [value]=\"option\"\r\n [ngClass]=\"{'mdc-list-item__selected': option | selectStatus: selectedOptions()}\"\r\n >\r\n {{ option.label }}\r\n </mat-option>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <mat-option disabled=\"true\">No Result Found</mat-option>\r\n }\r\n }\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<mat-chip-grid #chipGrid>\r\n @if (multiple()) {\r\n @for (chip of selectedOptions(); track chip[0]) {\r\n <mat-chip-row (removed)=\"removeFromSelectedOptionsMap(chip[1])\">\r\n {{ chip[1].label }}\r\n <button matChipRemove [attr.aria-label]=\"'remove ' + chip[1].label\">\r\n <ds-icon icon=\"trash\" class=\"fc-red\"></ds-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n }\r\n</mat-chip-grid>\r\n", styles: ["::ng-deep .mat-mdc-option.mdc-list-item__selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{--mat-option-selected-state-label-text-color: var(--green);color:var(--green)}\n"] }]
|
|
3529
3685
|
}] });
|
|
3530
3686
|
|
|
3531
|
-
class
|
|
3687
|
+
class SlideToggleControl extends BaseCtrl {
|
|
3532
3688
|
onSlideToggleChange(checked) {
|
|
3533
3689
|
this.emitValue(checked);
|
|
3534
3690
|
}
|
|
3535
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3536
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type:
|
|
3537
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3691
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SlideToggleControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3692
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: SlideToggleControl, isStandalone: true, selector: "iss-ctrl-slide-toggle", providers: [
|
|
3693
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: SlideToggleControl, multi: true }
|
|
3538
3694
|
], usesInheritance: true, ngImport: i0, template: "<mat-slide-toggle\r\n class=\"d-block\" [formControl]=\"ctrl\"\r\n (change)=\"onSlideToggleChange($event.checked)\"\r\n></mat-slide-toggle>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i1$4.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
3539
3695
|
}
|
|
3540
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3696
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SlideToggleControl, decorators: [{
|
|
3541
3697
|
type: Component,
|
|
3542
3698
|
args: [{ selector: "iss-ctrl-slide-toggle", standalone: true, imports: [MatSlideToggleModule, ReactiveFormsModule], providers: [
|
|
3543
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3699
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: SlideToggleControl, multi: true }
|
|
3544
3700
|
], template: "<mat-slide-toggle\r\n class=\"d-block\" [formControl]=\"ctrl\"\r\n (change)=\"onSlideToggleChange($event.checked)\"\r\n></mat-slide-toggle>\r\n" }]
|
|
3545
3701
|
}] });
|
|
3546
3702
|
|
|
3547
|
-
class
|
|
3548
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3549
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type:
|
|
3550
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3703
|
+
class CtrlArrayControl extends BaseCtrl {
|
|
3704
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CtrlArrayControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3705
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: CtrlArrayControl, isStandalone: true, selector: "iss-ctrl-ctrl-array", providers: [
|
|
3706
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: CtrlArrayControl, multi: true }
|
|
3551
3707
|
], usesInheritance: true, ngImport: i0, template: "<p>ctrl-array works!</p>\r\n", styles: [""] }); }
|
|
3552
3708
|
}
|
|
3553
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3709
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CtrlArrayControl, decorators: [{
|
|
3554
3710
|
type: Component,
|
|
3555
3711
|
args: [{ selector: "iss-ctrl-ctrl-array", standalone: true, imports: [], providers: [
|
|
3556
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3712
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: CtrlArrayControl, multi: true }
|
|
3557
3713
|
], template: "<p>ctrl-array works!</p>\r\n" }]
|
|
3558
3714
|
}] });
|
|
3559
3715
|
|
|
3560
|
-
class
|
|
3561
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3562
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type:
|
|
3563
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3564
|
-
|
|
3716
|
+
class TextareaControl extends BaseCtrl {
|
|
3717
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TextareaControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3718
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: TextareaControl, isStandalone: true, selector: "iss-ctrl-textarea", providers: [
|
|
3719
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: TextareaControl, multi: true },
|
|
3720
|
+
{ provide: NG_VALIDATORS, useExisting: TextareaControl, multi: true }
|
|
3721
|
+
], usesInheritance: true, ngImport: i0, template: "<mat-form-field>\r\n <textarea\r\n matInput\r\n [placeholder]=\"placeholder()\"\r\n [formControl]=\"ctrl\"\r\n [maxlength]=\"max()\"\r\n [minlength]=\"min()\"\r\n (input)=\"emitValue()\"\r\n [disabled]=\"disabled()\"\r\n ></textarea>\r\n <iss-ctrl-hints [hints]=\"hints()\"/>\r\n</mat-form-field>\r\n", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: HintsComponent, selector: "iss-ctrl-hints", inputs: ["hints", "touched"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
3565
3722
|
}
|
|
3566
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3723
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TextareaControl, decorators: [{
|
|
3567
3724
|
type: Component,
|
|
3568
|
-
args: [{ selector: "iss-ctrl-textarea", standalone: true, imports: [
|
|
3569
|
-
|
|
3570
|
-
|
|
3725
|
+
args: [{ selector: "iss-ctrl-textarea", standalone: true, imports: [
|
|
3726
|
+
MatFormField,
|
|
3727
|
+
MatInput,
|
|
3728
|
+
HintsComponent,
|
|
3729
|
+
FormsModule,
|
|
3730
|
+
ReactiveFormsModule
|
|
3731
|
+
], providers: [
|
|
3732
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: TextareaControl, multi: true },
|
|
3733
|
+
{ provide: NG_VALIDATORS, useExisting: TextareaControl, multi: true }
|
|
3734
|
+
], template: "<mat-form-field>\r\n <textarea\r\n matInput\r\n [placeholder]=\"placeholder()\"\r\n [formControl]=\"ctrl\"\r\n [maxlength]=\"max()\"\r\n [minlength]=\"min()\"\r\n (input)=\"emitValue()\"\r\n [disabled]=\"disabled()\"\r\n ></textarea>\r\n <iss-ctrl-hints [hints]=\"hints()\"/>\r\n</mat-form-field>\r\n" }]
|
|
3571
3735
|
}] });
|
|
3572
3736
|
|
|
3573
|
-
class
|
|
3737
|
+
class ToggleButtonControl extends BaseCtrl {
|
|
3574
3738
|
constructor() {
|
|
3575
3739
|
super(...arguments);
|
|
3576
3740
|
this.options = input.required();
|
|
@@ -3638,15 +3802,15 @@ class ToggleButtonComponent extends BaseCtrl {
|
|
|
3638
3802
|
this.selectedOptions().clear();
|
|
3639
3803
|
this.ctrl.setValue(null);
|
|
3640
3804
|
}
|
|
3641
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3642
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type:
|
|
3643
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3805
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ToggleButtonControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3806
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ToggleButtonControl, isStandalone: true, selector: "iss-ctrl-toggle-button", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
|
|
3807
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: ToggleButtonControl, multi: true }
|
|
3644
3808
|
], usesInheritance: true, ngImport: i0, template: "<mat-button-toggle-group\r\n [formControl]=\"ctrl\"\r\n [multiple]=multiple()\r\n [hideMultipleSelectionIndicator]=\"true\"\r\n [hideSingleSelectionIndicator]=\"true\"\r\n>\r\n @for (option of options(); track option.value) {\r\n <mat-button-toggle\r\n class=\"d-block\"\r\n [value]=\"option.value\"\r\n (change)=\"onToggleButtonChange($event.source.checked,option.value\r\n )\"\r\n >{{ option.label }}\r\n </mat-button-toggle>\r\n }\r\n</mat-button-toggle-group>\r\n", styles: [".mat-button-toggle-group-appearance-standard{border-radius:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i1$5.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1$5.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
3645
3809
|
}
|
|
3646
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type:
|
|
3810
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ToggleButtonControl, decorators: [{
|
|
3647
3811
|
type: Component,
|
|
3648
3812
|
args: [{ selector: "iss-ctrl-toggle-button", standalone: true, imports: [MatButtonToggleModule, ReactiveFormsModule], providers: [
|
|
3649
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
|
3813
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: ToggleButtonControl, multi: true }
|
|
3650
3814
|
], template: "<mat-button-toggle-group\r\n [formControl]=\"ctrl\"\r\n [multiple]=multiple()\r\n [hideMultipleSelectionIndicator]=\"true\"\r\n [hideSingleSelectionIndicator]=\"true\"\r\n>\r\n @for (option of options(); track option.value) {\r\n <mat-button-toggle\r\n class=\"d-block\"\r\n [value]=\"option.value\"\r\n (change)=\"onToggleButtonChange($event.source.checked,option.value\r\n )\"\r\n >{{ option.label }}\r\n </mat-button-toggle>\r\n }\r\n</mat-button-toggle-group>\r\n", styles: [".mat-button-toggle-group-appearance-standard{border-radius:unset!important}\n"] }]
|
|
3651
3815
|
}] });
|
|
3652
3816
|
|
|
@@ -3654,5 +3818,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
3654
3818
|
* Generated bundle index. Do not edit.
|
|
3655
3819
|
*/
|
|
3656
3820
|
|
|
3657
|
-
export {
|
|
3821
|
+
export { AutocompleteControl, CheckboxControl, ChipsControl, CtrlArrayControl, DEFAULT_COUNTRY, DatePickerControl, DateRangePickerControl, DatetimePickerControl, DatetimeRangePickerControl, FilePickerControl, InputControl, MobileControl, NoteControl, PlateControl, RadioControl, SelectControl, SlideToggleControl, TextareaControl, TimePickerControl, ToggleButtonControl };
|
|
3658
3822
|
//# sourceMappingURL=iss-ctrl.mjs.map
|