@ngil/form-inputs 5.0.1 → 5.1.0
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.
|
@@ -1,13 +1,12 @@
|
|
|
1
|
+
import * as i2 from '@angular/common';
|
|
2
|
+
import { AsyncPipe, CommonModule } from '@angular/common';
|
|
1
3
|
import * as i0 from '@angular/core';
|
|
2
4
|
import { EventEmitter, forwardRef, Output, Input, ChangeDetectionStrategy, Component, ViewChild, Optional, HostListener, ViewEncapsulation, Directive, NgModule } from '@angular/core';
|
|
3
5
|
import * as i1 from '@angular/forms';
|
|
4
|
-
import { FormControl, NG_VALUE_ACCESSOR,
|
|
6
|
+
import { FormControl, ReactiveFormsModule, NG_VALUE_ACCESSOR, FormsModule, FormGroup } from '@angular/forms';
|
|
5
7
|
import * as i1$1 from '@ngil/form-cva';
|
|
6
8
|
import { AbstractInputComponent } from '@ngil/form-cva';
|
|
7
9
|
import { takeUntil } from 'rxjs/operators';
|
|
8
|
-
import * as i2 from '@angular/common';
|
|
9
|
-
import { CommonModule } from '@angular/common';
|
|
10
|
-
import * as i3 from '@ngil/components';
|
|
11
10
|
import { NgilOverlayComponent, NgilOverlayToggleDirective } from '@ngil/components';
|
|
12
11
|
import { Subject, takeUntil as takeUntil$1 } from 'rxjs';
|
|
13
12
|
import * as i1$2 from '@angular/cdk/overlay';
|
|
@@ -38,29 +37,82 @@ class NgilInputComponent extends AbstractInputComponent {
|
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
39
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
41
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: NgilInputComponent, isStandalone:
|
|
40
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: NgilInputComponent, isStandalone: true, selector: "ngil-input", inputs: { type: "type" }, outputs: { changed: "changed" }, providers: [
|
|
42
41
|
{
|
|
43
42
|
provide: NG_VALUE_ACCESSOR,
|
|
44
43
|
useExisting: forwardRef(() => NgilInputComponent),
|
|
45
|
-
multi: true
|
|
46
|
-
}
|
|
47
|
-
], usesInheritance: true, ngImport: i0, template: "@if (model$ | async; as model) {\r\n <div class=\"ngil-input\" [class.ngil-input--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-input__label\" [for]=\"formControlName\">\r\n <ng-content select=\"[labelPrefix]\"></ng-content>\r\n <span> {{ label }}{{ required ? '*' : '' }} </span>\r\n <ng-content select=\"[labelSuffix]\"></ng-content>\r\n </label>\r\n <div class=\"ngil-input__field\">\r\n <ng-content select=\"[prefix]\"></ng-content>\r\n <input\r\n class=\"ngil-input__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [type]=\"type\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[hint]\"></ng-content>\r\n <small class=\"ngil-input__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n }\r\n", styles: [":host{display:flex;width:100%;flex-direction:column;margin:.25rem 0 2rem;min-width:200px}:host .ngil-input{flex-grow:1;position:relative}:host .ngil-input--error{color:red}:host .ngil-input--error .ngil-input__input{border-color:red}:host .ngil-input__label{display:flex;gap:.5rem}:host .ngil-input__input{width:100%;outline:none;border:1px solid black;border-radius:3px;padding:.25rem}:host .ngil-input__field{display:flex;gap:.5rem;align-items:center}:host .ngil-input__error-message{position:absolute;margin:.1rem 0;height:1rem;font-size:85%}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type:
|
|
44
|
+
multi: true,
|
|
45
|
+
},
|
|
46
|
+
], usesInheritance: true, ngImport: i0, template: "@if (model$ | async; as model) {\r\n <div class=\"ngil-input\" [class.ngil-input--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-input__label\" [for]=\"formControlName\">\r\n <ng-content select=\"[labelPrefix]\"></ng-content>\r\n <span> {{ label }}{{ required ? '*' : '' }} </span>\r\n <ng-content select=\"[labelSuffix]\"></ng-content>\r\n </label>\r\n <div class=\"ngil-input__field\">\r\n <ng-content select=\"[prefix]\"></ng-content>\r\n <input\r\n class=\"ngil-input__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [type]=\"type\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[hint]\"></ng-content>\r\n <small class=\"ngil-input__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n }\r\n", styles: [":host{display:flex;width:100%;flex-direction:column;margin:.25rem 0 2rem;min-width:200px}:host .ngil-input{flex-grow:1;position:relative}:host .ngil-input--error{color:red}:host .ngil-input--error .ngil-input__input{border-color:red}:host .ngil-input__label{display:flex;gap:.5rem}:host .ngil-input__input{width:100%;outline:none;border:1px solid black;border-radius:3px;padding:.25rem}:host .ngil-input__field{display:flex;gap:.5rem;align-items:center}:host .ngil-input__error-message{position:absolute;margin:.1rem 0;height:1rem;font-size:85%}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
48
47
|
}
|
|
49
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilInputComponent, decorators: [{
|
|
50
49
|
type: Component,
|
|
51
|
-
args: [{ selector: 'ngil-input', providers: [
|
|
50
|
+
args: [{ selector: 'ngil-input', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, ReactiveFormsModule], providers: [
|
|
52
51
|
{
|
|
53
52
|
provide: NG_VALUE_ACCESSOR,
|
|
54
53
|
useExisting: forwardRef(() => NgilInputComponent),
|
|
55
|
-
multi: true
|
|
56
|
-
}
|
|
57
|
-
],
|
|
54
|
+
multi: true,
|
|
55
|
+
},
|
|
56
|
+
], template: "@if (model$ | async; as model) {\r\n <div class=\"ngil-input\" [class.ngil-input--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-input__label\" [for]=\"formControlName\">\r\n <ng-content select=\"[labelPrefix]\"></ng-content>\r\n <span> {{ label }}{{ required ? '*' : '' }} </span>\r\n <ng-content select=\"[labelSuffix]\"></ng-content>\r\n </label>\r\n <div class=\"ngil-input__field\">\r\n <ng-content select=\"[prefix]\"></ng-content>\r\n <input\r\n class=\"ngil-input__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [type]=\"type\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[hint]\"></ng-content>\r\n <small class=\"ngil-input__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n }\r\n", styles: [":host{display:flex;width:100%;flex-direction:column;margin:.25rem 0 2rem;min-width:200px}:host .ngil-input{flex-grow:1;position:relative}:host .ngil-input--error{color:red}:host .ngil-input--error .ngil-input__input{border-color:red}:host .ngil-input__label{display:flex;gap:.5rem}:host .ngil-input__input{width:100%;outline:none;border:1px solid black;border-radius:3px;padding:.25rem}:host .ngil-input__field{display:flex;gap:.5rem;align-items:center}:host .ngil-input__error-message{position:absolute;margin:.1rem 0;height:1rem;font-size:85%}\n"] }]
|
|
58
57
|
}], propDecorators: { type: [{
|
|
59
58
|
type: Input
|
|
60
59
|
}], changed: [{
|
|
61
60
|
type: Output
|
|
62
61
|
}] } });
|
|
63
62
|
|
|
63
|
+
class NgilRadioComponent {
|
|
64
|
+
constructor() {
|
|
65
|
+
this.formControlName = '';
|
|
66
|
+
this.label = '';
|
|
67
|
+
this.items = [];
|
|
68
|
+
this.value = '';
|
|
69
|
+
this.onChangeCallback = (_) => { };
|
|
70
|
+
this.onTouchedCallback = () => { };
|
|
71
|
+
}
|
|
72
|
+
onBlur() {
|
|
73
|
+
this.onTouchedCallback();
|
|
74
|
+
}
|
|
75
|
+
onFocus() {
|
|
76
|
+
this.onTouchedCallback();
|
|
77
|
+
}
|
|
78
|
+
writeValue(value) {
|
|
79
|
+
this.value = value;
|
|
80
|
+
}
|
|
81
|
+
registerOnChange(fn) {
|
|
82
|
+
this.onChangeCallback = fn;
|
|
83
|
+
}
|
|
84
|
+
registerOnTouched(fn) {
|
|
85
|
+
this.onTouchedCallback = fn;
|
|
86
|
+
}
|
|
87
|
+
updateModel() {
|
|
88
|
+
this.onChangeCallback(this.value);
|
|
89
|
+
}
|
|
90
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
91
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: NgilRadioComponent, isStandalone: true, selector: "ngil-radio", inputs: { formControlName: "formControlName", label: "label", items: "items" }, providers: [
|
|
92
|
+
{
|
|
93
|
+
provide: NG_VALUE_ACCESSOR,
|
|
94
|
+
useExisting: forwardRef(() => NgilRadioComponent),
|
|
95
|
+
multi: true
|
|
96
|
+
}
|
|
97
|
+
], ngImport: i0, template: "@for (item of items; track item) {\r\n <input\r\n type=\"radio\"\r\n [value]=\"item\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"updateModel()\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n />{{ item }}\r\n}\r\n", styles: [":host{display:flex;margin:1rem 0;min-width:200px}:host span{margin:0 1rem 0 0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
98
|
+
}
|
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilRadioComponent, decorators: [{
|
|
100
|
+
type: Component,
|
|
101
|
+
args: [{ selector: 'ngil-radio', imports: [FormsModule], providers: [
|
|
102
|
+
{
|
|
103
|
+
provide: NG_VALUE_ACCESSOR,
|
|
104
|
+
useExisting: forwardRef(() => NgilRadioComponent),
|
|
105
|
+
multi: true
|
|
106
|
+
}
|
|
107
|
+
], template: "@for (item of items; track item) {\r\n <input\r\n type=\"radio\"\r\n [value]=\"item\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"updateModel()\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n />{{ item }}\r\n}\r\n", styles: [":host{display:flex;margin:1rem 0;min-width:200px}:host span{margin:0 1rem 0 0}\n"] }]
|
|
108
|
+
}], propDecorators: { formControlName: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], label: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], items: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}] } });
|
|
115
|
+
|
|
64
116
|
class NgilSelectOptionsComponent {
|
|
65
117
|
constructor() {
|
|
66
118
|
this.selectedItems = null;
|
|
@@ -96,11 +148,11 @@ class NgilSelectOptionsComponent {
|
|
|
96
148
|
this.destroy$.complete();
|
|
97
149
|
}
|
|
98
150
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilSelectOptionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: NgilSelectOptionsComponent, isStandalone:
|
|
151
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: NgilSelectOptionsComponent, isStandalone: true, selector: "ngil-select-options", inputs: { selectedItems: "selectedItems", items: "items", displayKey: "displayKey", multiple: "multiple", display: "display" }, outputs: { itemSelected: "itemSelected" }, ngImport: i0, template: "@if (display) {\r\n <div class=\"ngil-dropdown\" role=\"listbox\" data-test=\"ngil-select-options-list\">\r\n @for (item of items; track item) {\r\n <div\r\n role=\"option\"\r\n class=\"ngil-dropdown__item\"\r\n data-test=\"ngil-select-option\"\r\n [attr.value]=\"item\"\r\n [attr.displayValue]=\"displayKey ? item[displayKey] : item\"\r\n (click)=\"onItemSelected(item)\"\r\n [class.ngil-dropdown__item--selected]=\"isSelected(item)\"\r\n >\r\n {{ displayKey ? item[displayKey] : item }}\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:flex;width:100%;flex-direction:column;min-width:200px;background:#fff;border:1px solid #000;overflow-y:auto}:host .ngil-dropdown__item{line-height:1.5rem;padding:.25rem .5rem}:host .ngil-dropdown__item:hover{background:#d3d3d3}:host .ngil-dropdown__item--selected{background:#708090}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
100
152
|
}
|
|
101
153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilSelectOptionsComponent, decorators: [{
|
|
102
154
|
type: Component,
|
|
103
|
-
args: [{ selector: 'ngil-select-options', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
155
|
+
args: [{ selector: 'ngil-select-options', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (display) {\r\n <div class=\"ngil-dropdown\" role=\"listbox\" data-test=\"ngil-select-options-list\">\r\n @for (item of items; track item) {\r\n <div\r\n role=\"option\"\r\n class=\"ngil-dropdown__item\"\r\n data-test=\"ngil-select-option\"\r\n [attr.value]=\"item\"\r\n [attr.displayValue]=\"displayKey ? item[displayKey] : item\"\r\n (click)=\"onItemSelected(item)\"\r\n [class.ngil-dropdown__item--selected]=\"isSelected(item)\"\r\n >\r\n {{ displayKey ? item[displayKey] : item }}\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:flex;width:100%;flex-direction:column;min-width:200px;background:#fff;border:1px solid #000;overflow-y:auto}:host .ngil-dropdown__item{line-height:1.5rem;padding:.25rem .5rem}:host .ngil-dropdown__item:hover{background:#d3d3d3}:host .ngil-dropdown__item--selected{background:#708090}\n"] }]
|
|
104
156
|
}], propDecorators: { selectedItems: [{
|
|
105
157
|
type: Input
|
|
106
158
|
}], items: [{
|
|
@@ -149,13 +201,13 @@ class NgilSelectComponent extends AbstractInputComponent {
|
|
|
149
201
|
return Array.isArray(item);
|
|
150
202
|
}
|
|
151
203
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.NgilErrorMessagesService }, { token: i1.ControlContainer, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
152
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: NgilSelectComponent, isStandalone:
|
|
204
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: NgilSelectComponent, isStandalone: true, selector: "ngil-select", inputs: { multiple: "multiple", items: "items", displayKey: "displayKey" }, providers: [
|
|
153
205
|
{
|
|
154
206
|
provide: NG_VALUE_ACCESSOR,
|
|
155
207
|
useExisting: forwardRef(() => NgilSelectComponent),
|
|
156
|
-
multi: true
|
|
157
|
-
}
|
|
158
|
-
], viewQueries: [{ propertyName: "overlay", first: true, predicate: NgilOverlayComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (model$ | async; as model) {\r\n <div class=\"ngil-select\" [class.ngil-select--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-select__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n <div class=\"ngil-select__field\">\r\n <div class=\"ngil-select__field-content\">\r\n <input\r\n class=\"ngil-select__input\"\r\n [value]=\"displayValue\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"$event.preventDefault(); overlay.toggle()\"\r\n [id]=\"formControlName\"\r\n (blur)=\"onBlur()\"\r\n [ngilOverlayToggle]=\"overlay\"\r\n />\r\n </div>\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <small class=\"ngil-select__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n <ngil-overlay #overlay [overwriteConfig]=\"{ maxHeight: 500 }\">\r\n <ngil-select-options\r\n ngilOverlay\r\n class=\"ngil-select__dropdown\"\r\n data-test=\"ngil-select-options\"\r\n [display]=\"overlay.isOpened\"\r\n [multiple]=\"multiple\"\r\n [items]=\"items\"\r\n [displayKey]=\"displayKey\"\r\n [selectedItems]=\"value\"\r\n (itemSelected)=\"onItemSelected($event)\"\r\n ></ngil-select-options>\r\n </ngil-overlay>\r\n }\r\n", styles: [":host{display:flex;width:100%;flex-direction:column;margin:.25rem 0 2rem;min-width:200px}:host .ngil-select{flex-grow:1;position:relative}:host .ngil-select--error{color:red}:host .ngil-select--error .ngil-select__input{border-color:red}:host .ngil-select__label{display:block}:host .ngil-select__input{width:100%;outline:none;border:1px solid black;border-radius:3px;padding:.25rem;overflow:hidden}:host .ngil-select__field{display:flex}:host .ngil-select__field-content{flex-grow:1}:host .ngil-select__error-message{position:absolute;margin:.1rem 0;height:1rem;font-size:85%}:host .ngil-select__dropdown{width:100%}:host .hidden{display:none}\n"], dependencies: [{ kind: "
|
|
208
|
+
multi: true,
|
|
209
|
+
},
|
|
210
|
+
], viewQueries: [{ propertyName: "overlay", first: true, predicate: NgilOverlayComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (model$ | async; as model) {\r\n <div class=\"ngil-select\" [class.ngil-select--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-select__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n <div class=\"ngil-select__field\">\r\n <div class=\"ngil-select__field-content\">\r\n <input\r\n class=\"ngil-select__input\"\r\n [value]=\"displayValue\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"$event.preventDefault(); overlay.toggle()\"\r\n [id]=\"formControlName\"\r\n (blur)=\"onBlur()\"\r\n [ngilOverlayToggle]=\"overlay\"\r\n />\r\n </div>\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <small class=\"ngil-select__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n <ngil-overlay #overlay [overwriteConfig]=\"{ maxHeight: 500 }\">\r\n <ngil-select-options\r\n ngilOverlay\r\n class=\"ngil-select__dropdown\"\r\n data-test=\"ngil-select-options\"\r\n [display]=\"overlay.isOpened\"\r\n [multiple]=\"multiple\"\r\n [items]=\"items\"\r\n [displayKey]=\"displayKey\"\r\n [selectedItems]=\"value\"\r\n (itemSelected)=\"onItemSelected($event)\"\r\n ></ngil-select-options>\r\n </ngil-overlay>\r\n }\r\n", styles: [":host{display:flex;width:100%;flex-direction:column;margin:.25rem 0 2rem;min-width:200px}:host .ngil-select{flex-grow:1;position:relative}:host .ngil-select--error{color:red}:host .ngil-select--error .ngil-select__input{border-color:red}:host .ngil-select__label{display:block}:host .ngil-select__input{width:100%;outline:none;border:1px solid black;border-radius:3px;padding:.25rem;overflow:hidden}:host .ngil-select__field{display:flex}:host .ngil-select__field-content{flex-grow:1}:host .ngil-select__error-message{position:absolute;margin:.1rem 0;height:1rem;font-size:85%}:host .ngil-select__dropdown{width:100%}:host .hidden{display:none}\n"], dependencies: [{ kind: "component", type: NgilOverlayComponent, selector: "ngil-overlay", inputs: ["overwriteConfig", "positions"] }, { kind: "directive", type: NgilOverlayToggleDirective, selector: "[ngilOverlayToggle]", inputs: ["ngilOverlayToggle", "isOverlayOrigin"], exportAs: ["ngilOverlayToggle"] }, { kind: "component", type: NgilSelectOptionsComponent, selector: "ngil-select-options", inputs: ["selectedItems", "items", "displayKey", "multiple", "display"], outputs: ["itemSelected"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
159
211
|
}
|
|
160
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilSelectComponent, decorators: [{
|
|
161
213
|
type: Component,
|
|
@@ -163,9 +215,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
|
|
|
163
215
|
{
|
|
164
216
|
provide: NG_VALUE_ACCESSOR,
|
|
165
217
|
useExisting: forwardRef(() => NgilSelectComponent),
|
|
166
|
-
multi: true
|
|
167
|
-
}
|
|
168
|
-
],
|
|
218
|
+
multi: true,
|
|
219
|
+
},
|
|
220
|
+
], imports: [NgilOverlayComponent, NgilOverlayToggleDirective, NgilSelectOptionsComponent, AsyncPipe], template: "@if (model$ | async; as model) {\r\n <div class=\"ngil-select\" [class.ngil-select--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-select__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n <div class=\"ngil-select__field\">\r\n <div class=\"ngil-select__field-content\">\r\n <input\r\n class=\"ngil-select__input\"\r\n [value]=\"displayValue\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"$event.preventDefault(); overlay.toggle()\"\r\n [id]=\"formControlName\"\r\n (blur)=\"onBlur()\"\r\n [ngilOverlayToggle]=\"overlay\"\r\n />\r\n </div>\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <small class=\"ngil-select__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n <ngil-overlay #overlay [overwriteConfig]=\"{ maxHeight: 500 }\">\r\n <ngil-select-options\r\n ngilOverlay\r\n class=\"ngil-select__dropdown\"\r\n data-test=\"ngil-select-options\"\r\n [display]=\"overlay.isOpened\"\r\n [multiple]=\"multiple\"\r\n [items]=\"items\"\r\n [displayKey]=\"displayKey\"\r\n [selectedItems]=\"value\"\r\n (itemSelected)=\"onItemSelected($event)\"\r\n ></ngil-select-options>\r\n </ngil-overlay>\r\n }\r\n", styles: [":host{display:flex;width:100%;flex-direction:column;margin:.25rem 0 2rem;min-width:200px}:host .ngil-select{flex-grow:1;position:relative}:host .ngil-select--error{color:red}:host .ngil-select--error .ngil-select__input{border-color:red}:host .ngil-select__label{display:block}:host .ngil-select__input{width:100%;outline:none;border:1px solid black;border-radius:3px;padding:.25rem;overflow:hidden}:host .ngil-select__field{display:flex}:host .ngil-select__field-content{flex-grow:1}:host .ngil-select__error-message{position:absolute;margin:.1rem 0;height:1rem;font-size:85%}:host .ngil-select__dropdown{width:100%}:host .hidden{display:none}\n"] }]
|
|
169
221
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.NgilErrorMessagesService }, { type: i1.ControlContainer, decorators: [{
|
|
170
222
|
type: Optional
|
|
171
223
|
}] }], propDecorators: { overlay: [{
|
|
@@ -217,7 +269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
|
|
|
217
269
|
], standalone: false, template: "@if (model$ | async; as model) {\r\n <div class=\"ngil-textarea\" [class.ngil-textarea--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-textarea__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n <div class=\"ngil-textarea__field\">\r\n <textarea\r\n class=\"ngil-textarea__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n >\r\n </textarea>\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <small class=\"ngil-textarea__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n}\r\n", styles: [":host{display:flex;width:100%;flex-direction:column;margin:.25rem 0 2rem;min-width:200px}:host .ngil-textarea{flex-grow:1;position:relative}:host .ngil-textarea--error{color:red}:host .ngil-textarea--error .ngil-textarea__input{border-color:red}:host .ngil-textarea__label{display:block}:host .ngil-textarea__input{width:100%;outline:none;border:1px solid black;border-radius:3px;padding:.25rem;height:4rem}:host .ngil-textarea__field{display:flex}:host .ngil-textarea__error-message{position:absolute;margin:.1rem 0;height:1rem;font-size:85%}\n"] }]
|
|
218
270
|
}] });
|
|
219
271
|
|
|
220
|
-
class
|
|
272
|
+
class NgilPickerToggleComponent {
|
|
221
273
|
constructor() {
|
|
222
274
|
this.onClick = (event) => {
|
|
223
275
|
if (!this.picker?.isOpen) {
|
|
@@ -226,12 +278,12 @@ class PickerToggleComponent {
|
|
|
226
278
|
event.stopPropagation();
|
|
227
279
|
};
|
|
228
280
|
}
|
|
229
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type:
|
|
230
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type:
|
|
281
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilPickerToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
282
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: NgilPickerToggleComponent, isStandalone: true, selector: "ngil-picker-toggle", inputs: { picker: "picker" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0, template: "<button class=\"toggle-button\" type=\"button\">\r\n <svg\r\n class=\"mat-datepicker-toggle-default-icon\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"24px\"\r\n height=\"24px\"\r\n fill=\"currentColor\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"\r\n />\r\n </svg>\r\n</button>\r\n", styles: [".toggle-button{display:flex;background:none;border:none;padding:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
231
283
|
}
|
|
232
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type:
|
|
284
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilPickerToggleComponent, decorators: [{
|
|
233
285
|
type: Component,
|
|
234
|
-
args: [{ selector: 'ngil-picker-toggle', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush,
|
|
286
|
+
args: [{ selector: 'ngil-picker-toggle', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button class=\"toggle-button\" type=\"button\">\r\n <svg\r\n class=\"mat-datepicker-toggle-default-icon\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"24px\"\r\n height=\"24px\"\r\n fill=\"currentColor\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"\r\n />\r\n </svg>\r\n</button>\r\n", styles: [".toggle-button{display:flex;background:none;border:none;padding:0}\n"] }]
|
|
235
287
|
}], propDecorators: { picker: [{
|
|
236
288
|
type: Input
|
|
237
289
|
}], onClick: [{
|
|
@@ -491,18 +543,17 @@ class NgilTimePickerOverlayComponent {
|
|
|
491
543
|
return strategy;
|
|
492
544
|
}
|
|
493
545
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilTimePickerOverlayComponent, deps: [{ token: i1$2.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
494
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: NgilTimePickerOverlayComponent, isStandalone:
|
|
546
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: NgilTimePickerOverlayComponent, isStandalone: true, selector: "ngil-time-picker-overlay", ngImport: i0, template: '', isInline: true }); }
|
|
495
547
|
}
|
|
496
548
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilTimePickerOverlayComponent, decorators: [{
|
|
497
549
|
type: Component,
|
|
498
550
|
args: [{
|
|
499
551
|
selector: 'ngil-time-picker-overlay',
|
|
500
|
-
template: ''
|
|
501
|
-
standalone: false
|
|
552
|
+
template: ''
|
|
502
553
|
}]
|
|
503
554
|
}], ctorParameters: () => [{ type: i1$2.Overlay }] });
|
|
504
555
|
|
|
505
|
-
class
|
|
556
|
+
class NgilTimePickerDirective {
|
|
506
557
|
constructor(elementRef, inputComponent, ngControl) {
|
|
507
558
|
this.elementRef = elementRef;
|
|
508
559
|
this.inputComponent = inputComponent;
|
|
@@ -527,7 +578,7 @@ class TimePickerDirective {
|
|
|
527
578
|
this.picker?.setValue({
|
|
528
579
|
hour: +parsedValue.hour,
|
|
529
580
|
minute: +parsedValue.minute || 0,
|
|
530
|
-
second: +parsedValue.second || 0
|
|
581
|
+
second: +parsedValue.second || 0,
|
|
531
582
|
});
|
|
532
583
|
}
|
|
533
584
|
timeValidator() {
|
|
@@ -535,17 +586,17 @@ class TimePickerDirective {
|
|
|
535
586
|
const value = this.getTimePickerValue(control.value);
|
|
536
587
|
if (this.itemHasError(value.hour, 23)) {
|
|
537
588
|
return {
|
|
538
|
-
invalidHour: true
|
|
589
|
+
invalidHour: true,
|
|
539
590
|
};
|
|
540
591
|
}
|
|
541
592
|
if (this.itemHasError(value.minute, 59)) {
|
|
542
593
|
return {
|
|
543
|
-
invalidMinute: true
|
|
594
|
+
invalidMinute: true,
|
|
544
595
|
};
|
|
545
596
|
}
|
|
546
597
|
if (this.itemHasError(value.second, 59)) {
|
|
547
598
|
return {
|
|
548
|
-
invalidSecond: true
|
|
599
|
+
invalidSecond: true,
|
|
549
600
|
};
|
|
550
601
|
}
|
|
551
602
|
return null;
|
|
@@ -562,7 +613,7 @@ class TimePickerDirective {
|
|
|
562
613
|
return {
|
|
563
614
|
hour: split ? split[0] : '00',
|
|
564
615
|
minute: split ? split[1] : '00',
|
|
565
|
-
second: split ? split[2] : '00'
|
|
616
|
+
second: split ? split[2] : '00',
|
|
566
617
|
};
|
|
567
618
|
}
|
|
568
619
|
ngAfterViewInit() {
|
|
@@ -587,14 +638,13 @@ class TimePickerDirective {
|
|
|
587
638
|
this.destroy$.next();
|
|
588
639
|
this.destroy$.complete();
|
|
589
640
|
}
|
|
590
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type:
|
|
591
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type:
|
|
641
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilTimePickerDirective, deps: [{ token: i0.ElementRef }, { token: NgilInputComponent, optional: true }, { token: i1.NgControl, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
642
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type: NgilTimePickerDirective, isStandalone: true, selector: "[ngilTimePicker]", inputs: { picker: "picker" }, outputs: { changed: "changed" }, host: { listeners: { "keydown": "onKeyDown($event)", "input": "onInput($event)" } }, ngImport: i0 }); }
|
|
592
643
|
}
|
|
593
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type:
|
|
644
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilTimePickerDirective, decorators: [{
|
|
594
645
|
type: Directive,
|
|
595
646
|
args: [{
|
|
596
647
|
selector: '[ngilTimePicker]',
|
|
597
|
-
standalone: false
|
|
598
648
|
}]
|
|
599
649
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: NgilInputComponent, decorators: [{
|
|
600
650
|
type: Optional
|
|
@@ -614,49 +664,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
|
|
|
614
664
|
|
|
615
665
|
class NgilUiFormModule {
|
|
616
666
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilUiFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
617
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.4", ngImport: i0, type: NgilUiFormModule, declarations: [
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
667
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.4", ngImport: i0, type: NgilUiFormModule, declarations: [NgilTimePickerComponent, NumberRotationDirective, NgilTextareaComponent], imports: [CommonModule,
|
|
668
|
+
ReactiveFormsModule,
|
|
669
|
+
NgilOverlayToggleDirective,
|
|
670
|
+
NgilOverlayComponent,
|
|
671
|
+
NgilRadioComponent,
|
|
672
|
+
NgilPickerToggleComponent,
|
|
623
673
|
NgilSelectComponent,
|
|
624
|
-
|
|
625
|
-
|
|
674
|
+
NgilSelectOptionsComponent,
|
|
675
|
+
NgilTimePickerDirective,
|
|
676
|
+
NgilTimePickerOverlayComponent,
|
|
677
|
+
NgilInputComponent], exports: [NgilInputComponent,
|
|
678
|
+
NgilRadioComponent,
|
|
626
679
|
NgilSelectComponent,
|
|
627
680
|
NgilTextareaComponent,
|
|
628
681
|
NgilTimePickerComponent,
|
|
629
682
|
NgilTimePickerOverlayComponent,
|
|
630
|
-
|
|
683
|
+
NgilPickerToggleComponent,
|
|
631
684
|
NumberRotationDirective,
|
|
632
|
-
|
|
633
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilUiFormModule, imports: [CommonModule,
|
|
685
|
+
NgilTimePickerDirective] }); }
|
|
686
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilUiFormModule, imports: [CommonModule,
|
|
687
|
+
ReactiveFormsModule,
|
|
688
|
+
NgilOverlayComponent,
|
|
689
|
+
NgilRadioComponent,
|
|
690
|
+
NgilSelectComponent,
|
|
691
|
+
NgilInputComponent] }); }
|
|
634
692
|
}
|
|
635
693
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilUiFormModule, decorators: [{
|
|
636
694
|
type: NgModule,
|
|
637
695
|
args: [{
|
|
638
|
-
imports: [
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
TimePickerDirective,
|
|
696
|
+
imports: [
|
|
697
|
+
CommonModule,
|
|
698
|
+
ReactiveFormsModule,
|
|
699
|
+
NgilOverlayToggleDirective,
|
|
700
|
+
NgilOverlayComponent,
|
|
701
|
+
NgilRadioComponent,
|
|
702
|
+
NgilPickerToggleComponent,
|
|
646
703
|
NgilSelectComponent,
|
|
647
|
-
|
|
648
|
-
|
|
704
|
+
NgilSelectOptionsComponent,
|
|
705
|
+
NgilTimePickerDirective,
|
|
706
|
+
NgilTimePickerOverlayComponent,
|
|
707
|
+
NgilInputComponent,
|
|
649
708
|
],
|
|
709
|
+
declarations: [NgilTimePickerComponent, NumberRotationDirective, NgilTextareaComponent],
|
|
650
710
|
exports: [
|
|
651
711
|
NgilInputComponent,
|
|
712
|
+
NgilRadioComponent,
|
|
652
713
|
NgilSelectComponent,
|
|
653
714
|
NgilTextareaComponent,
|
|
654
715
|
NgilTimePickerComponent,
|
|
655
716
|
NgilTimePickerOverlayComponent,
|
|
656
|
-
|
|
717
|
+
NgilPickerToggleComponent,
|
|
657
718
|
NumberRotationDirective,
|
|
658
|
-
|
|
659
|
-
]
|
|
719
|
+
NgilTimePickerDirective,
|
|
720
|
+
],
|
|
660
721
|
}]
|
|
661
722
|
}] });
|
|
662
723
|
|
|
@@ -664,5 +725,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
|
|
|
664
725
|
* Generated bundle index. Do not edit.
|
|
665
726
|
*/
|
|
666
727
|
|
|
667
|
-
export { NgilInputComponent, NgilSelectComponent, NgilTextareaComponent, NgilTimePickerComponent, NgilTimePickerOverlayComponent, NgilUiFormModule, NumberRotationDirective
|
|
728
|
+
export { NgilInputComponent, NgilPickerToggleComponent, NgilRadioComponent, NgilSelectComponent, NgilTextareaComponent, NgilTimePickerComponent, NgilTimePickerDirective, NgilTimePickerOverlayComponent, NgilUiFormModule, NumberRotationDirective };
|
|
668
729
|
//# sourceMappingURL=ngil-form-inputs.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngil-form-inputs.mjs","sources":["../../../../../../libs/ngil/ui/form-inputs/src/lib/components/input/input.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/input/input.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select-options/select-options.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select-options/select-options.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select/select.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select/select.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/textarea/textarea.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/textarea/textarea.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/picker-toggle.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/picker-toggle.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/directives/number-rotation.directive.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/time-picker-overlay.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.directive.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/ngil-ui-form.module.ts","../../../../../../libs/ngil/ui/form-inputs/src/ngil-form-inputs.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ngil-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilInputComponent),\r\n multi: true\r\n }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class NgilInputComponent extends AbstractInputComponent<string | number> implements AfterViewInit {\r\n @Input() type = 'text';\r\n @Output() changed = new EventEmitter<string | number>();\r\n\r\n control = new FormControl();\r\n\r\n ngAfterViewInit() {\r\n this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.onChangeInput(value);\r\n });\r\n }\r\n\r\n writeValue(value: string | number): void {\r\n this.control.setValue(value);\r\n }\r\n\r\n onChangeInput(value: string | number): void {\r\n if (this.type === 'number') {\r\n value = +value;\r\n }\r\n this.changed.emit(value);\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n}\r\n","@if (model$ | async; as model) {\r\n <div class=\"ngil-input\" [class.ngil-input--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-input__label\" [for]=\"formControlName\">\r\n <ng-content select=\"[labelPrefix]\"></ng-content>\r\n <span> {{ label }}{{ required ? '*' : '' }} </span>\r\n <ng-content select=\"[labelSuffix]\"></ng-content>\r\n </label>\r\n <div class=\"ngil-input__field\">\r\n <ng-content select=\"[prefix]\"></ng-content>\r\n <input\r\n class=\"ngil-input__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [type]=\"type\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[hint]\"></ng-content>\r\n <small class=\"ngil-input__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n }\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ngil-select-options',\r\n templateUrl: './select-options.component.html',\r\n styleUrls: ['./select-options.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class NgilSelectOptionsComponent<T> implements OnDestroy {\r\n @Input() selectedItems: T | T[] | null = null;\r\n @Input() items: T[] = [];\r\n @Input() displayKey?: keyof T;\r\n @Input() multiple = false;\r\n @Input() display = false;\r\n\r\n @Output() itemSelected = new EventEmitter<T | T[]>();\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n onItemSelected(item: T) {\r\n let newSelection: T | T[];\r\n\r\n if (Array.isArray(this.selectedItems)) {\r\n newSelection = this.selectedItems.includes(item)\r\n ? this.selectedItems.filter(selectedItem => selectedItem !== item)\r\n : [...this.selectedItems, item];\r\n } else if (this.multiple && this.selectedItems) {\r\n newSelection = [this.selectedItems, item];\r\n } else {\r\n newSelection = item;\r\n }\r\n\r\n this.itemSelected.emit(newSelection);\r\n }\r\n\r\n isSelected(item: T) {\r\n if (Array.isArray(this.selectedItems)) {\r\n return this.selectedItems.includes(item);\r\n }\r\n\r\n return item === this.selectedItems;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","@if (display) {\r\n <div class=\"ngil-dropdown\" role=\"listbox\" data-test=\"ngil-select-options-list\">\r\n @for (item of items; track item) {\r\n <div\r\n role=\"option\"\r\n class=\"ngil-dropdown__item\"\r\n data-test=\"ngil-select-option\"\r\n [attr.value]=\"item\"\r\n [attr.displayValue]=\"displayKey ? item[displayKey] : item\"\r\n (click)=\"onItemSelected(item)\"\r\n [class.ngil-dropdown__item--selected]=\"isSelected(item)\"\r\n >\r\n {{ displayKey ? item[displayKey] : item }}\r\n </div>\r\n }\r\n </div>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n Optional,\r\n ViewChild,\r\n forwardRef\r\n} from '@angular/core';\r\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { NgilOverlayComponent } from '@ngil/components';\r\nimport { AbstractInputComponent, NgilErrorMessagesService } from '@ngil/form-cva';\r\n\r\n@Component({\r\n selector: 'ngil-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilSelectComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class NgilSelectComponent<T> extends AbstractInputComponent<T | T[]> {\r\n @ViewChild(NgilOverlayComponent) overlay?: NgilOverlayComponent;\r\n @Input() multiple = false;\r\n @Input() items: T[] = [];\r\n @Input() displayKey?: keyof T;\r\n\r\n value: T | T[] | null = null;\r\n\r\n get displayValue() {\r\n if (Array.isArray(this.value)) {\r\n return this.value.map(item => (this.displayKey ? item[this.displayKey] : item)).join(',');\r\n }\r\n\r\n if (this.value && this.displayKey) {\r\n return this.value[this.displayKey];\r\n }\r\n\r\n return this.value;\r\n }\r\n\r\n constructor(\r\n private readonly cdr: ChangeDetectorRef,\r\n errorMessagesService: NgilErrorMessagesService,\r\n @Optional() controlContainer?: ControlContainer\r\n ) {\r\n super(errorMessagesService, controlContainer);\r\n }\r\n\r\n writeValue(value: T): void {\r\n this.value = value;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onItemSelected(item: T | T[]) {\r\n this.value = item;\r\n\r\n if (!this.multiple) {\r\n this.overlay?.close();\r\n }\r\n\r\n if (this.onChange) {\r\n this.onChange(this.value);\r\n }\r\n }\r\n\r\n isArray(item: T | T[]): item is T[] {\r\n return Array.isArray(item);\r\n }\r\n}\r\n","@if (model$ | async; as model) {\r\n <div class=\"ngil-select\" [class.ngil-select--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-select__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n <div class=\"ngil-select__field\">\r\n <div class=\"ngil-select__field-content\">\r\n <input\r\n class=\"ngil-select__input\"\r\n [value]=\"displayValue\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"$event.preventDefault(); overlay.toggle()\"\r\n [id]=\"formControlName\"\r\n (blur)=\"onBlur()\"\r\n [ngilOverlayToggle]=\"overlay\"\r\n />\r\n </div>\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <small class=\"ngil-select__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n <ngil-overlay #overlay [overwriteConfig]=\"{ maxHeight: 500 }\">\r\n <ngil-select-options\r\n ngilOverlay\r\n class=\"ngil-select__dropdown\"\r\n data-test=\"ngil-select-options\"\r\n [display]=\"overlay.isOpened\"\r\n [multiple]=\"multiple\"\r\n [items]=\"items\"\r\n [displayKey]=\"displayKey\"\r\n [selectedItems]=\"value\"\r\n (itemSelected)=\"onItemSelected($event)\"\r\n ></ngil-select-options>\r\n </ngil-overlay>\r\n }\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\r\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ngil-textarea',\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./textarea.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilTextareaComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class NgilTextareaComponent extends AbstractInputComponent<string> implements AfterViewInit {\r\n control = new FormControl();\r\n\r\n ngAfterViewInit() {\r\n this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.onChangeInput(value);\r\n });\r\n }\r\n\r\n writeValue(value: string): void {\r\n this.control.setValue(value);\r\n }\r\n\r\n onChangeInput(value: string): void {\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n}\r\n","@if (model$ | async; as model) {\r\n <div class=\"ngil-textarea\" [class.ngil-textarea--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-textarea__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n <div class=\"ngil-textarea__field\">\r\n <textarea\r\n class=\"ngil-textarea__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n >\r\n </textarea>\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <small class=\"ngil-textarea__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostListener, Input, ViewEncapsulation } from '@angular/core';\r\nimport { NgilTimePickerOverlayComponent } from './time-picker-overlay.component';\r\n\r\n@Component({\r\n selector: 'ngil-picker-toggle',\r\n templateUrl: 'picker-toggle.html',\r\n styleUrls: ['picker-toggle.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class PickerToggleComponent {\r\n @Input() picker: NgilTimePickerOverlayComponent | undefined;\r\n\r\n @HostListener('click', ['$event']) onClick = (event: Event) => {\r\n if (!this.picker?.isOpen) {\r\n this.picker?.open();\r\n }\r\n event.stopPropagation();\r\n };\r\n}\r\n","<button class=\"toggle-button\" type=\"button\">\r\n <svg\r\n class=\"mat-datepicker-toggle-default-icon\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"24px\"\r\n height=\"24px\"\r\n fill=\"currentColor\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"\r\n />\r\n </svg>\r\n</button>\r\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: 'input[ngilNumberRotation]',\r\n standalone: false\r\n})\r\nexport class NumberRotationDirective implements AfterViewInit, OnDestroy, OnInit {\r\n @Input() min = 0;\r\n @Input() max = 10;\r\n @Input() buttonUp?: HTMLElement;\r\n @Input() buttonDown?: HTMLElement;\r\n\r\n get length(): number {\r\n return this.max.toString().length;\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown = (event: KeyboardEvent): void => {\r\n this.onKeyDownEvent(event);\r\n };\r\n\r\n @HostListener('input', ['$event'])\r\n onInput = (event: InputEvent): void => {\r\n let value = (event.target as HTMLInputElement).value;\r\n if (+value > this.max) {\r\n value = value.slice(this.length);\r\n }\r\n this.setValue(+value);\r\n };\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLInputElement>, private readonly ngControl: NgControl) {}\r\n\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.value = this.elementRef.nativeElement.value.toString().padStart(this.length, '0');\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.buttonUp?.addEventListener('click', this.onUp);\r\n this.buttonDown?.addEventListener('click', this.onDown);\r\n }\r\n\r\n private onKeyDownEvent(event: KeyboardEvent): void {\r\n if (!this.isKeyValid(event.key)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n this.onUp();\r\n }\r\n\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.onDown();\r\n }\r\n }\r\n\r\n private isKeyValid(key: string): boolean {\r\n if (key.length !== 1 || !isNaN(+key)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private onUp = (): void => {\r\n const value = +this.elementRef.nativeElement.value;\r\n this.setValue(value + 1);\r\n };\r\n\r\n private onDown = (): void => {\r\n const value = +this.elementRef.nativeElement.value;\r\n this.setValue(value - 1);\r\n };\r\n\r\n private setValue(value: number): void {\r\n if (value < this.min) {\r\n this.setInputValue(this.max);\r\n } else if (value > this.max) {\r\n this.setInputValue(this.min);\r\n } else {\r\n this.setInputValue(value);\r\n }\r\n }\r\n\r\n private setInputValue(value: number) {\r\n this.ngControl.control?.setValue(value);\r\n this.elementRef.nativeElement.value = value.toString().padStart(this.length, '0');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.buttonUp?.removeEventListener('click', this.onUp);\r\n this.buttonDown?.removeEventListener('click', this.onDown);\r\n }\r\n}\r\n","import { AfterViewInit, Component } from '@angular/core';\r\nimport { FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TimePickerValue } from './time-picker.model';\r\n\r\n@Component({\r\n selector: 'ngil-time-picker',\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: NgilTimePickerComponent,\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class NgilTimePickerComponent extends AbstractInputComponent<TimePickerValue> implements AfterViewInit {\r\n private defaultValue: TimePickerValue = { hour: 0, minute: 0, second: 0 };\r\n\r\n value = '';\r\n formGroup = new FormGroup({\r\n hour: new FormControl<number>(this.defaultValue.hour, { nonNullable: true }),\r\n minute: new FormControl<number>(this.defaultValue.minute, { nonNullable: true }),\r\n second: new FormControl<number>(this.defaultValue.second, { nonNullable: true })\r\n });\r\n\r\n ngAfterViewInit(): void {\r\n this.listenValueChanges();\r\n }\r\n\r\n protected listenValueChanges(): void {\r\n this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n if (this.onChange) {\r\n const value = this.formGroup.getRawValue();\r\n this.onChange({\r\n hour: value.hour ?? this.defaultValue.hour,\r\n minute: value.minute ?? this.defaultValue.minute,\r\n second: value.second ?? this.defaultValue.second\r\n });\r\n }\r\n });\r\n }\r\n\r\n writeValue(value: TimePickerValue): void {\r\n if (value) {\r\n this.formGroup.setValue(\r\n {\r\n ...this.defaultValue,\r\n ...value\r\n },\r\n { emitEvent: false }\r\n );\r\n } else {\r\n this.formGroup.reset(this.defaultValue, { emitEvent: false });\r\n }\r\n }\r\n}\r\n","<form [formGroup]=\"formGroup\" class=\"ngil-time-picker\">\r\n <div class=\"ngil-time-picker__field\">\r\n <button #hourButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"hour\"\r\n [buttonUp]=\"hourButtonUp\"\r\n [buttonDown]=\"hourButtonDown\"\r\n [max]=\"23\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #hourButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <span>:</span>\r\n\r\n <div class=\"ngil-time-picker__field\">\r\n <button #minuteButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"minute\"\r\n [buttonUp]=\"minuteButtonUp\"\r\n [buttonDown]=\"minuteButtonDown\"\r\n [max]=\"59\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #minuteButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <span>:</span>\r\n\r\n <div class=\"ngil-time-picker__field\">\r\n <button #secondButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"second\"\r\n [buttonUp]=\"secondButtonUp\"\r\n [buttonDown]=\"secondButtonDown\"\r\n [max]=\"59\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #secondButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n</form>\r\n\r\n<ng-template #arrowUp>\r\n <svg\r\n _ngcontent-vre-c235=\"\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 0 100 100\"\r\n xml:space=\"preserve\"\r\n class=\"ngil-time-picker__arrow\"\r\n >\r\n <polyline\r\n _ngcontent-vre-c235=\"\"\r\n fill=\"none\"\r\n stroke=\"#000000\"\r\n stroke-width=\"10\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n points=\"10, 75 50, 25 90, 75\"\r\n ></polyline>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowDown>\r\n <svg\r\n _ngcontent-vre-c235=\"\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 0 100 100\"\r\n xml:space=\"preserve\"\r\n class=\"ngil-time-picker__arrow\"\r\n >\r\n <polyline\r\n _ngcontent-vre-c235=\"\"\r\n fill=\"none\"\r\n stroke=\"#000000\"\r\n stroke-width=\"10\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n points=\"10, 25 50, 75 90, 25\"\r\n ></polyline>\r\n </svg>\r\n</ng-template>\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Component, ElementRef, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgilTimePickerComponent } from '../time-picker/time-picker.component';\r\nimport { TimePickerValue } from '../time-picker/time-picker.model';\r\n\r\n@Component({\r\n selector: 'ngil-time-picker-overlay',\r\n template: '',\r\n standalone: false\r\n})\r\nexport class NgilTimePickerOverlayComponent implements OnDestroy {\r\n origin?: ElementRef<HTMLInputElement>;\r\n valueChanges$ = new Subject<TimePickerValue>();\r\n isOpen = false;\r\n\r\n protected value: TimePickerValue = { hour: 0, minute: 0, second: 0 };\r\n protected readonly destroy$ = new Subject<void>();\r\n protected contentComponent = NgilTimePickerComponent;\r\n protected componentInstance: undefined | NgilTimePickerComponent;\r\n private overlayRef?: OverlayRef;\r\n\r\n constructor(private readonly overlay: Overlay) {}\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n open() {\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy: this.getStrategy(),\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n const portal = new ComponentPortal(this.contentComponent);\r\n const componentRef = this.overlayRef.attach(portal);\r\n this.componentInstance = componentRef.instance;\r\n this.componentInstance.writeValue(this.value);\r\n\r\n this.componentInstance.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n const value = this.componentInstance?.formGroup.getRawValue();\r\n this.valueChanges$.next({\r\n hour: value?.hour ?? 0,\r\n minute: value?.minute ?? 0,\r\n second: value?.second ?? 0\r\n });\r\n });\r\n\r\n this.overlayRef\r\n .backdropClick()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.close();\r\n });\r\n\r\n this.isOpen = true;\r\n }\r\n\r\n close(): void {\r\n this.destroyOverlay();\r\n }\r\n\r\n private destroyOverlay() {\r\n this.destroy$.next();\r\n this.componentInstance?.ngOnDestroy();\r\n this.overlayRef?.dispose();\r\n this.componentInstance = undefined;\r\n this.overlayRef = undefined;\r\n this.isOpen = false;\r\n }\r\n\r\n setValue(value: TimePickerValue): void {\r\n this.value = value;\r\n\r\n if (this.componentInstance) {\r\n this.componentInstance.writeValue(this.value);\r\n }\r\n }\r\n\r\n private getStrategy() {\r\n const primaryX = 'start';\r\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\r\n const primaryY = 'top';\r\n const secondaryY = 'bottom';\r\n\r\n if (!this.origin) {\r\n return undefined;\r\n }\r\n\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.origin)\r\n .withPositions([\r\n {\r\n originX: primaryX,\r\n originY: secondaryY,\r\n overlayX: primaryX,\r\n overlayY: primaryY\r\n },\r\n {\r\n originX: primaryX,\r\n originY: primaryY,\r\n overlayX: primaryX,\r\n overlayY: secondaryY\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: secondaryY,\r\n overlayX: secondaryX,\r\n overlayY: primaryY\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: primaryY,\r\n overlayX: secondaryX,\r\n overlayY: secondaryY\r\n }\r\n ]);\r\n\r\n return strategy;\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output\r\n} from '@angular/core';\r\nimport { AbstractControl, NgControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgilInputComponent } from '../input/input.component';\r\nimport { NgilTimePickerOverlayComponent } from '../time-picker-overlay/time-picker-overlay.component';\r\nimport { TimePickerValue } from './time-picker.model';\r\n\r\n@Directive({\r\n selector: '[ngilTimePicker]',\r\n standalone: false\r\n})\r\nexport class TimePickerDirective implements AfterViewInit, OnDestroy, OnInit {\r\n @Input() picker?: NgilTimePickerOverlayComponent;\r\n\r\n @Output() changed = new EventEmitter<TimePickerValue>();\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown = (event: KeyboardEvent): void => {\r\n if (isNaN(+event.key) && event.key !== ':' && event.key.length === 1) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n @HostListener('input', ['$event']) onInput = (event: InputEvent): void => {\r\n this.setPickerValue((event.target as HTMLInputElement).value);\r\n };\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef<HTMLInputElement>,\r\n @Optional() private readonly inputComponent?: NgilInputComponent,\r\n @Optional() private readonly ngControl?: NgControl\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.ngControl?.control?.setValidators([this.timeValidator()]);\r\n this.setPickerValue(this.ngControl?.control?.value);\r\n }\r\n\r\n private setPickerValue(value?: string) {\r\n const parsedValue = this.getTimePickerValue(value);\r\n this.picker?.setValue({\r\n hour: +parsedValue.hour,\r\n minute: +parsedValue.minute || 0,\r\n second: +parsedValue.second || 0\r\n });\r\n }\r\n\r\n private timeValidator(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = this.getTimePickerValue(control.value);\r\n if (this.itemHasError(value.hour, 23)) {\r\n return {\r\n invalidHour: true\r\n };\r\n }\r\n\r\n if (this.itemHasError(value.minute, 59)) {\r\n return {\r\n invalidMinute: true\r\n };\r\n }\r\n\r\n if (this.itemHasError(value.second, 59)) {\r\n return {\r\n invalidSecond: true\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n private itemHasError(value: string, max: number, min = 0) {\r\n if (value && (value.length > 2 || +value > max || +value < min)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private getTimePickerValue(value: string | null | undefined) {\r\n const split = value?.split(':');\r\n\r\n return {\r\n hour: split ? split[0] : '00',\r\n minute: split ? split[1] : '00',\r\n second: split ? split[2] : '00'\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.picker) {\r\n this.picker.origin = this.elementRef;\r\n this.picker.valueChanges$.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.setInputText(value);\r\n this.changed.emit(value);\r\n });\r\n }\r\n }\r\n\r\n private setInputText(value: TimePickerValue): void {\r\n const text = [this.getItemText(value.hour), this.getItemText(value.minute), this.getItemText(value.second)].join(\r\n ':'\r\n );\r\n this.inputComponent?.control.setValue(text);\r\n this.elementRef.nativeElement.value = text;\r\n this.ngControl?.control?.setValue(text);\r\n }\r\n\r\n private getItemText(value: number) {\r\n return value.toString().padStart(2, '0');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { NgilOverlayComponent, NgilOverlayToggleDirective } from '@ngil/components';\r\nimport { NgilInputComponent } from './components/input/input.component';\r\nimport { NgilSelectOptionsComponent } from './components/select-options/select-options.component';\r\nimport { NgilSelectComponent } from './components/select/select.component';\r\nimport { NgilTextareaComponent } from './components/textarea/textarea.component';\r\nimport { PickerToggleComponent } from './components/time-picker-overlay/picker-toggle';\r\nimport { NgilTimePickerOverlayComponent } from './components/time-picker-overlay/time-picker-overlay.component';\r\nimport { NgilTimePickerComponent } from './components/time-picker/time-picker.component';\r\nimport { TimePickerDirective } from './components/time-picker/time-picker.directive';\r\nimport { NumberRotationDirective } from './directives/number-rotation.directive';\r\n\r\n@NgModule({\r\n imports: [CommonModule, ReactiveFormsModule, NgilOverlayToggleDirective, NgilOverlayComponent],\r\n declarations: [\r\n NgilInputComponent,\r\n NgilTimePickerComponent,\r\n NgilTimePickerOverlayComponent,\r\n PickerToggleComponent,\r\n NumberRotationDirective,\r\n TimePickerDirective,\r\n NgilSelectComponent,\r\n NgilTextareaComponent,\r\n NgilSelectOptionsComponent\r\n ],\r\n exports: [\r\n NgilInputComponent,\r\n NgilSelectComponent,\r\n NgilTextareaComponent,\r\n NgilTimePickerComponent,\r\n NgilTimePickerOverlayComponent,\r\n PickerToggleComponent,\r\n NumberRotationDirective,\r\n TimePickerDirective\r\n ]\r\n})\r\nexport class NgilUiFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4.NgilSelectOptionsComponent","i5","takeUntil","i3.NumberRotationDirective","i1.NgilInputComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngil-form-inputs.mjs","sources":["../../../../../../libs/ngil/ui/form-inputs/src/lib/components/input/input.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/input/input.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/radio/radio.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/radio/radio.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select-options/select-options.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select-options/select-options.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select/select.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select/select.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/textarea/textarea.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/textarea/textarea.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/picker-toggle.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/picker-toggle.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/directives/number-rotation.directive.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/time-picker-overlay.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.directive.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/ngil-ui-form.module.ts","../../../../../../libs/ngil/ui/form-inputs/src/ngil-form-inputs.ts"],"sourcesContent":["import { AsyncPipe } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ngil-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [AsyncPipe, ReactiveFormsModule],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class NgilInputComponent extends AbstractInputComponent<string | number> implements AfterViewInit {\r\n @Input() type = 'text';\r\n @Output() changed = new EventEmitter<string | number>();\r\n\r\n control = new FormControl();\r\n\r\n ngAfterViewInit() {\r\n this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.onChangeInput(value);\r\n });\r\n }\r\n\r\n writeValue(value: string | number): void {\r\n this.control.setValue(value);\r\n }\r\n\r\n onChangeInput(value: string | number): void {\r\n if (this.type === 'number') {\r\n value = +value;\r\n }\r\n this.changed.emit(value);\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n}\r\n","@if (model$ | async; as model) {\r\n <div class=\"ngil-input\" [class.ngil-input--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-input__label\" [for]=\"formControlName\">\r\n <ng-content select=\"[labelPrefix]\"></ng-content>\r\n <span> {{ label }}{{ required ? '*' : '' }} </span>\r\n <ng-content select=\"[labelSuffix]\"></ng-content>\r\n </label>\r\n <div class=\"ngil-input__field\">\r\n <ng-content select=\"[prefix]\"></ng-content>\r\n <input\r\n class=\"ngil-input__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [type]=\"type\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[hint]\"></ng-content>\r\n <small class=\"ngil-input__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n }\r\n","import { Component, forwardRef, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'ngil-radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n imports: [FormsModule],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilRadioComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class NgilRadioComponent implements ControlValueAccessor {\r\n @Input() formControlName: string = '';\r\n @Input() label: string = '';\r\n @Input() items: string[] = [];\r\n\r\n value: string = '';\r\n\r\n private onChangeCallback = (_: any) => {};\r\n\r\n private onTouchedCallback = () => {};\r\n\r\n onBlur(): void {\r\n this.onTouchedCallback();\r\n }\r\n\r\n onFocus(): void {\r\n this.onTouchedCallback();\r\n }\r\n\r\n writeValue(value: string): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n updateModel() {\r\n this.onChangeCallback(this.value);\r\n }\r\n}\r\n","@for (item of items; track item) {\r\n <input\r\n type=\"radio\"\r\n [value]=\"item\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"updateModel()\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n />{{ item }}\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ngil-select-options',\r\n templateUrl: './select-options.component.html',\r\n styleUrls: ['./select-options.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class NgilSelectOptionsComponent<T> implements OnDestroy {\r\n @Input() selectedItems: T | T[] | null = null;\r\n @Input() items: T[] = [];\r\n @Input() displayKey?: keyof T;\r\n @Input() multiple = false;\r\n @Input() display = false;\r\n\r\n @Output() itemSelected = new EventEmitter<T | T[]>();\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n onItemSelected(item: T) {\r\n let newSelection: T | T[];\r\n\r\n if (Array.isArray(this.selectedItems)) {\r\n newSelection = this.selectedItems.includes(item)\r\n ? this.selectedItems.filter(selectedItem => selectedItem !== item)\r\n : [...this.selectedItems, item];\r\n } else if (this.multiple && this.selectedItems) {\r\n newSelection = [this.selectedItems, item];\r\n } else {\r\n newSelection = item;\r\n }\r\n\r\n this.itemSelected.emit(newSelection);\r\n }\r\n\r\n isSelected(item: T) {\r\n if (Array.isArray(this.selectedItems)) {\r\n return this.selectedItems.includes(item);\r\n }\r\n\r\n return item === this.selectedItems;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","@if (display) {\r\n <div class=\"ngil-dropdown\" role=\"listbox\" data-test=\"ngil-select-options-list\">\r\n @for (item of items; track item) {\r\n <div\r\n role=\"option\"\r\n class=\"ngil-dropdown__item\"\r\n data-test=\"ngil-select-option\"\r\n [attr.value]=\"item\"\r\n [attr.displayValue]=\"displayKey ? item[displayKey] : item\"\r\n (click)=\"onItemSelected(item)\"\r\n [class.ngil-dropdown__item--selected]=\"isSelected(item)\"\r\n >\r\n {{ displayKey ? item[displayKey] : item }}\r\n </div>\r\n }\r\n </div>\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n Optional,\r\n ViewChild,\r\n forwardRef,\r\n} from '@angular/core';\r\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { NgilOverlayComponent, NgilOverlayToggleDirective } from '@ngil/components';\r\nimport { AbstractInputComponent, NgilErrorMessagesService } from '@ngil/form-cva';\r\nimport { NgilSelectOptionsComponent } from '../select-options/select-options.component';\r\n\r\n@Component({\r\n selector: 'ngil-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilSelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n imports: [NgilOverlayComponent, NgilOverlayToggleDirective, NgilSelectOptionsComponent, AsyncPipe],\r\n})\r\nexport class NgilSelectComponent<T> extends AbstractInputComponent<T | T[]> {\r\n @ViewChild(NgilOverlayComponent) overlay?: NgilOverlayComponent;\r\n @Input() multiple = false;\r\n @Input() items: T[] = [];\r\n @Input() displayKey?: keyof T;\r\n\r\n value: T | T[] | null = null;\r\n\r\n get displayValue() {\r\n if (Array.isArray(this.value)) {\r\n return this.value.map(item => (this.displayKey ? item[this.displayKey] : item)).join(',');\r\n }\r\n\r\n if (this.value && this.displayKey) {\r\n return this.value[this.displayKey];\r\n }\r\n\r\n return this.value;\r\n }\r\n\r\n constructor(\r\n private readonly cdr: ChangeDetectorRef,\r\n errorMessagesService: NgilErrorMessagesService,\r\n @Optional() controlContainer?: ControlContainer,\r\n ) {\r\n super(errorMessagesService, controlContainer);\r\n }\r\n\r\n writeValue(value: T): void {\r\n this.value = value;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onItemSelected(item: T | T[]) {\r\n this.value = item;\r\n\r\n if (!this.multiple) {\r\n this.overlay?.close();\r\n }\r\n\r\n if (this.onChange) {\r\n this.onChange(this.value);\r\n }\r\n }\r\n\r\n isArray(item: T | T[]): item is T[] {\r\n return Array.isArray(item);\r\n }\r\n}\r\n","@if (model$ | async; as model) {\r\n <div class=\"ngil-select\" [class.ngil-select--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-select__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n <div class=\"ngil-select__field\">\r\n <div class=\"ngil-select__field-content\">\r\n <input\r\n class=\"ngil-select__input\"\r\n [value]=\"displayValue\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"$event.preventDefault(); overlay.toggle()\"\r\n [id]=\"formControlName\"\r\n (blur)=\"onBlur()\"\r\n [ngilOverlayToggle]=\"overlay\"\r\n />\r\n </div>\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <small class=\"ngil-select__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n <ngil-overlay #overlay [overwriteConfig]=\"{ maxHeight: 500 }\">\r\n <ngil-select-options\r\n ngilOverlay\r\n class=\"ngil-select__dropdown\"\r\n data-test=\"ngil-select-options\"\r\n [display]=\"overlay.isOpened\"\r\n [multiple]=\"multiple\"\r\n [items]=\"items\"\r\n [displayKey]=\"displayKey\"\r\n [selectedItems]=\"value\"\r\n (itemSelected)=\"onItemSelected($event)\"\r\n ></ngil-select-options>\r\n </ngil-overlay>\r\n }\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\r\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ngil-textarea',\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./textarea.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilTextareaComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class NgilTextareaComponent extends AbstractInputComponent<string> implements AfterViewInit {\r\n control = new FormControl();\r\n\r\n ngAfterViewInit() {\r\n this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.onChangeInput(value);\r\n });\r\n }\r\n\r\n writeValue(value: string): void {\r\n this.control.setValue(value);\r\n }\r\n\r\n onChangeInput(value: string): void {\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n}\r\n","@if (model$ | async; as model) {\r\n <div class=\"ngil-textarea\" [class.ngil-textarea--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-textarea__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n <div class=\"ngil-textarea__field\">\r\n <textarea\r\n class=\"ngil-textarea__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n >\r\n </textarea>\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <small class=\"ngil-textarea__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostListener, Input, ViewEncapsulation } from '@angular/core';\r\nimport { NgilTimePickerOverlayComponent } from './time-picker-overlay.component';\r\n\r\n@Component({\r\n selector: 'ngil-picker-toggle',\r\n templateUrl: 'picker-toggle.html',\r\n styleUrls: ['picker-toggle.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NgilPickerToggleComponent {\r\n @Input() picker: NgilTimePickerOverlayComponent | undefined;\r\n\r\n @HostListener('click', ['$event']) onClick = (event: Event) => {\r\n if (!this.picker?.isOpen) {\r\n this.picker?.open();\r\n }\r\n event.stopPropagation();\r\n };\r\n}\r\n","<button class=\"toggle-button\" type=\"button\">\r\n <svg\r\n class=\"mat-datepicker-toggle-default-icon\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"24px\"\r\n height=\"24px\"\r\n fill=\"currentColor\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"\r\n />\r\n </svg>\r\n</button>\r\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: 'input[ngilNumberRotation]',\r\n standalone: false\r\n})\r\nexport class NumberRotationDirective implements AfterViewInit, OnDestroy, OnInit {\r\n @Input() min = 0;\r\n @Input() max = 10;\r\n @Input() buttonUp?: HTMLElement;\r\n @Input() buttonDown?: HTMLElement;\r\n\r\n get length(): number {\r\n return this.max.toString().length;\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown = (event: KeyboardEvent): void => {\r\n this.onKeyDownEvent(event);\r\n };\r\n\r\n @HostListener('input', ['$event'])\r\n onInput = (event: InputEvent): void => {\r\n let value = (event.target as HTMLInputElement).value;\r\n if (+value > this.max) {\r\n value = value.slice(this.length);\r\n }\r\n this.setValue(+value);\r\n };\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLInputElement>, private readonly ngControl: NgControl) {}\r\n\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.value = this.elementRef.nativeElement.value.toString().padStart(this.length, '0');\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.buttonUp?.addEventListener('click', this.onUp);\r\n this.buttonDown?.addEventListener('click', this.onDown);\r\n }\r\n\r\n private onKeyDownEvent(event: KeyboardEvent): void {\r\n if (!this.isKeyValid(event.key)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n this.onUp();\r\n }\r\n\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.onDown();\r\n }\r\n }\r\n\r\n private isKeyValid(key: string): boolean {\r\n if (key.length !== 1 || !isNaN(+key)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private onUp = (): void => {\r\n const value = +this.elementRef.nativeElement.value;\r\n this.setValue(value + 1);\r\n };\r\n\r\n private onDown = (): void => {\r\n const value = +this.elementRef.nativeElement.value;\r\n this.setValue(value - 1);\r\n };\r\n\r\n private setValue(value: number): void {\r\n if (value < this.min) {\r\n this.setInputValue(this.max);\r\n } else if (value > this.max) {\r\n this.setInputValue(this.min);\r\n } else {\r\n this.setInputValue(value);\r\n }\r\n }\r\n\r\n private setInputValue(value: number) {\r\n this.ngControl.control?.setValue(value);\r\n this.elementRef.nativeElement.value = value.toString().padStart(this.length, '0');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.buttonUp?.removeEventListener('click', this.onUp);\r\n this.buttonDown?.removeEventListener('click', this.onDown);\r\n }\r\n}\r\n","import { AfterViewInit, Component } from '@angular/core';\r\nimport { FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TimePickerValue } from './time-picker.model';\r\n\r\n@Component({\r\n selector: 'ngil-time-picker',\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: NgilTimePickerComponent,\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class NgilTimePickerComponent extends AbstractInputComponent<TimePickerValue> implements AfterViewInit {\r\n private defaultValue: TimePickerValue = { hour: 0, minute: 0, second: 0 };\r\n\r\n value = '';\r\n formGroup = new FormGroup({\r\n hour: new FormControl<number>(this.defaultValue.hour, { nonNullable: true }),\r\n minute: new FormControl<number>(this.defaultValue.minute, { nonNullable: true }),\r\n second: new FormControl<number>(this.defaultValue.second, { nonNullable: true })\r\n });\r\n\r\n ngAfterViewInit(): void {\r\n this.listenValueChanges();\r\n }\r\n\r\n protected listenValueChanges(): void {\r\n this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n if (this.onChange) {\r\n const value = this.formGroup.getRawValue();\r\n this.onChange({\r\n hour: value.hour ?? this.defaultValue.hour,\r\n minute: value.minute ?? this.defaultValue.minute,\r\n second: value.second ?? this.defaultValue.second\r\n });\r\n }\r\n });\r\n }\r\n\r\n writeValue(value: TimePickerValue): void {\r\n if (value) {\r\n this.formGroup.setValue(\r\n {\r\n ...this.defaultValue,\r\n ...value\r\n },\r\n { emitEvent: false }\r\n );\r\n } else {\r\n this.formGroup.reset(this.defaultValue, { emitEvent: false });\r\n }\r\n }\r\n}\r\n","<form [formGroup]=\"formGroup\" class=\"ngil-time-picker\">\r\n <div class=\"ngil-time-picker__field\">\r\n <button #hourButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"hour\"\r\n [buttonUp]=\"hourButtonUp\"\r\n [buttonDown]=\"hourButtonDown\"\r\n [max]=\"23\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #hourButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <span>:</span>\r\n\r\n <div class=\"ngil-time-picker__field\">\r\n <button #minuteButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"minute\"\r\n [buttonUp]=\"minuteButtonUp\"\r\n [buttonDown]=\"minuteButtonDown\"\r\n [max]=\"59\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #minuteButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <span>:</span>\r\n\r\n <div class=\"ngil-time-picker__field\">\r\n <button #secondButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"second\"\r\n [buttonUp]=\"secondButtonUp\"\r\n [buttonDown]=\"secondButtonDown\"\r\n [max]=\"59\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #secondButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n</form>\r\n\r\n<ng-template #arrowUp>\r\n <svg\r\n _ngcontent-vre-c235=\"\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 0 100 100\"\r\n xml:space=\"preserve\"\r\n class=\"ngil-time-picker__arrow\"\r\n >\r\n <polyline\r\n _ngcontent-vre-c235=\"\"\r\n fill=\"none\"\r\n stroke=\"#000000\"\r\n stroke-width=\"10\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n points=\"10, 75 50, 25 90, 75\"\r\n ></polyline>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowDown>\r\n <svg\r\n _ngcontent-vre-c235=\"\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 0 100 100\"\r\n xml:space=\"preserve\"\r\n class=\"ngil-time-picker__arrow\"\r\n >\r\n <polyline\r\n _ngcontent-vre-c235=\"\"\r\n fill=\"none\"\r\n stroke=\"#000000\"\r\n stroke-width=\"10\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n points=\"10, 25 50, 75 90, 25\"\r\n ></polyline>\r\n </svg>\r\n</ng-template>\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Component, ElementRef, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgilTimePickerComponent } from '../time-picker/time-picker.component';\r\nimport { TimePickerValue } from '../time-picker/time-picker.model';\r\n\r\n@Component({\r\n selector: 'ngil-time-picker-overlay',\r\n template: ''\r\n})\r\nexport class NgilTimePickerOverlayComponent implements OnDestroy {\r\n origin?: ElementRef<HTMLInputElement>;\r\n valueChanges$ = new Subject<TimePickerValue>();\r\n isOpen = false;\r\n\r\n protected value: TimePickerValue = { hour: 0, minute: 0, second: 0 };\r\n protected readonly destroy$ = new Subject<void>();\r\n protected contentComponent = NgilTimePickerComponent;\r\n protected componentInstance: undefined | NgilTimePickerComponent;\r\n private overlayRef?: OverlayRef;\r\n\r\n constructor(private readonly overlay: Overlay) {}\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n open() {\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy: this.getStrategy(),\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n const portal = new ComponentPortal(this.contentComponent);\r\n const componentRef = this.overlayRef.attach(portal);\r\n this.componentInstance = componentRef.instance;\r\n this.componentInstance.writeValue(this.value);\r\n\r\n this.componentInstance.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n const value = this.componentInstance?.formGroup.getRawValue();\r\n this.valueChanges$.next({\r\n hour: value?.hour ?? 0,\r\n minute: value?.minute ?? 0,\r\n second: value?.second ?? 0\r\n });\r\n });\r\n\r\n this.overlayRef\r\n .backdropClick()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.close();\r\n });\r\n\r\n this.isOpen = true;\r\n }\r\n\r\n close(): void {\r\n this.destroyOverlay();\r\n }\r\n\r\n private destroyOverlay() {\r\n this.destroy$.next();\r\n this.componentInstance?.ngOnDestroy();\r\n this.overlayRef?.dispose();\r\n this.componentInstance = undefined;\r\n this.overlayRef = undefined;\r\n this.isOpen = false;\r\n }\r\n\r\n setValue(value: TimePickerValue): void {\r\n this.value = value;\r\n\r\n if (this.componentInstance) {\r\n this.componentInstance.writeValue(this.value);\r\n }\r\n }\r\n\r\n private getStrategy() {\r\n const primaryX = 'start';\r\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\r\n const primaryY = 'top';\r\n const secondaryY = 'bottom';\r\n\r\n if (!this.origin) {\r\n return undefined;\r\n }\r\n\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.origin)\r\n .withPositions([\r\n {\r\n originX: primaryX,\r\n originY: secondaryY,\r\n overlayX: primaryX,\r\n overlayY: primaryY\r\n },\r\n {\r\n originX: primaryX,\r\n originY: primaryY,\r\n overlayX: primaryX,\r\n overlayY: secondaryY\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: secondaryY,\r\n overlayX: secondaryX,\r\n overlayY: primaryY\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: primaryY,\r\n overlayX: secondaryX,\r\n overlayY: secondaryY\r\n }\r\n ]);\r\n\r\n return strategy;\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n} from '@angular/core';\r\nimport { AbstractControl, NgControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgilInputComponent } from '../input/input.component';\r\nimport { NgilTimePickerOverlayComponent } from '../time-picker-overlay/time-picker-overlay.component';\r\nimport { TimePickerValue } from './time-picker.model';\r\n\r\n@Directive({\r\n selector: '[ngilTimePicker]',\r\n})\r\nexport class NgilTimePickerDirective implements AfterViewInit, OnDestroy, OnInit {\r\n @Input() picker?: NgilTimePickerOverlayComponent;\r\n\r\n @Output() changed = new EventEmitter<TimePickerValue>();\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown = (event: KeyboardEvent): void => {\r\n if (isNaN(+event.key) && event.key !== ':' && event.key.length === 1) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n @HostListener('input', ['$event']) onInput = (event: InputEvent): void => {\r\n this.setPickerValue((event.target as HTMLInputElement).value);\r\n };\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef<HTMLInputElement>,\r\n @Optional() private readonly inputComponent?: NgilInputComponent,\r\n @Optional() private readonly ngControl?: NgControl,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.ngControl?.control?.setValidators([this.timeValidator()]);\r\n this.setPickerValue(this.ngControl?.control?.value);\r\n }\r\n\r\n private setPickerValue(value?: string) {\r\n const parsedValue = this.getTimePickerValue(value);\r\n this.picker?.setValue({\r\n hour: +parsedValue.hour,\r\n minute: +parsedValue.minute || 0,\r\n second: +parsedValue.second || 0,\r\n });\r\n }\r\n\r\n private timeValidator(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = this.getTimePickerValue(control.value);\r\n if (this.itemHasError(value.hour, 23)) {\r\n return {\r\n invalidHour: true,\r\n };\r\n }\r\n\r\n if (this.itemHasError(value.minute, 59)) {\r\n return {\r\n invalidMinute: true,\r\n };\r\n }\r\n\r\n if (this.itemHasError(value.second, 59)) {\r\n return {\r\n invalidSecond: true,\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n private itemHasError(value: string, max: number, min = 0) {\r\n if (value && (value.length > 2 || +value > max || +value < min)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private getTimePickerValue(value: string | null | undefined) {\r\n const split = value?.split(':');\r\n\r\n return {\r\n hour: split ? split[0] : '00',\r\n minute: split ? split[1] : '00',\r\n second: split ? split[2] : '00',\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.picker) {\r\n this.picker.origin = this.elementRef;\r\n this.picker.valueChanges$.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.setInputText(value);\r\n this.changed.emit(value);\r\n });\r\n }\r\n }\r\n\r\n private setInputText(value: TimePickerValue): void {\r\n const text = [this.getItemText(value.hour), this.getItemText(value.minute), this.getItemText(value.second)].join(\r\n ':',\r\n );\r\n this.inputComponent?.control.setValue(text);\r\n this.elementRef.nativeElement.value = text;\r\n this.ngControl?.control?.setValue(text);\r\n }\r\n\r\n private getItemText(value: number) {\r\n return value.toString().padStart(2, '0');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { NgilOverlayComponent, NgilOverlayToggleDirective } from '@ngil/components';\r\nimport { NgilInputComponent } from './components/input/input.component';\r\nimport { NgilRadioComponent } from './components/radio/radio.component';\r\nimport { NgilSelectOptionsComponent } from './components/select-options/select-options.component';\r\nimport { NgilSelectComponent } from './components/select/select.component';\r\nimport { NgilTextareaComponent } from './components/textarea/textarea.component';\r\nimport { NgilPickerToggleComponent } from './components/time-picker-overlay/picker-toggle';\r\nimport { NgilTimePickerOverlayComponent } from './components/time-picker-overlay/time-picker-overlay.component';\r\nimport { NgilTimePickerComponent } from './components/time-picker/time-picker.component';\r\nimport { NgilTimePickerDirective } from './components/time-picker/time-picker.directive';\r\nimport { NumberRotationDirective } from './directives/number-rotation.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n NgilOverlayToggleDirective,\r\n NgilOverlayComponent,\r\n NgilRadioComponent,\r\n NgilPickerToggleComponent,\r\n NgilSelectComponent,\r\n NgilSelectOptionsComponent,\r\n NgilTimePickerDirective,\r\n NgilTimePickerOverlayComponent,\r\n NgilInputComponent,\r\n ],\r\n declarations: [NgilTimePickerComponent, NumberRotationDirective, NgilTextareaComponent],\r\n exports: [\r\n NgilInputComponent,\r\n NgilRadioComponent,\r\n NgilSelectComponent,\r\n NgilTextareaComponent,\r\n NgilTimePickerComponent,\r\n NgilTimePickerOverlayComponent,\r\n NgilPickerToggleComponent,\r\n NumberRotationDirective,\r\n NgilTimePickerDirective,\r\n ],\r\n})\r\nexport class NgilUiFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","takeUntil","i3.NumberRotationDirective","i1.NgilInputComponent"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { AfterViewInit, EventEmitter, ChangeDetectorRef, OnDestroy, ElementRef, OnInit } from '@angular/core';
|
|
3
|
-
import * as
|
|
4
|
-
import { FormControl, ControlContainer, FormGroup, NgControl } from '@angular/forms';
|
|
3
|
+
import * as i5 from '@angular/forms';
|
|
4
|
+
import { FormControl, ControlValueAccessor, ControlContainer, FormGroup, NgControl } from '@angular/forms';
|
|
5
5
|
import { AbstractInputComponent, NgilErrorMessagesService } from '@ngil/form-cva';
|
|
6
|
-
import * as
|
|
6
|
+
import * as i6 from '@ngil/components';
|
|
7
7
|
import { NgilOverlayComponent } from '@ngil/components';
|
|
8
8
|
import { Overlay } from '@angular/cdk/overlay';
|
|
9
9
|
import { Subject } from 'rxjs';
|
|
10
|
-
import * as
|
|
10
|
+
import * as i4 from '@angular/common';
|
|
11
11
|
|
|
12
12
|
declare class NgilInputComponent extends AbstractInputComponent<string | number> implements AfterViewInit {
|
|
13
13
|
type: string;
|
|
@@ -17,7 +17,24 @@ declare class NgilInputComponent extends AbstractInputComponent<string | number>
|
|
|
17
17
|
writeValue(value: string | number): void;
|
|
18
18
|
onChangeInput(value: string | number): void;
|
|
19
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgilInputComponent, never>;
|
|
20
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgilInputComponent, "ngil-input", never, { "type": { "alias": "type"; "required": false; }; }, { "changed": "changed"; }, never, ["[labelPrefix]", "[labelSuffix]", "[prefix]", "[suffix]", "[hint]"],
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilInputComponent, "ngil-input", never, { "type": { "alias": "type"; "required": false; }; }, { "changed": "changed"; }, never, ["[labelPrefix]", "[labelSuffix]", "[prefix]", "[suffix]", "[hint]"], true, never>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
declare class NgilRadioComponent implements ControlValueAccessor {
|
|
24
|
+
formControlName: string;
|
|
25
|
+
label: string;
|
|
26
|
+
items: string[];
|
|
27
|
+
value: string;
|
|
28
|
+
private onChangeCallback;
|
|
29
|
+
private onTouchedCallback;
|
|
30
|
+
onBlur(): void;
|
|
31
|
+
onFocus(): void;
|
|
32
|
+
writeValue(value: string): void;
|
|
33
|
+
registerOnChange(fn: any): void;
|
|
34
|
+
registerOnTouched(fn: any): void;
|
|
35
|
+
updateModel(): void;
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgilRadioComponent, never>;
|
|
37
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilRadioComponent, "ngil-radio", never, { "formControlName": { "alias": "formControlName"; "required": false; }; "label": { "alias": "label"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, {}, never, never, true, never>;
|
|
21
38
|
}
|
|
22
39
|
|
|
23
40
|
declare class NgilSelectComponent<T> extends AbstractInputComponent<T | T[]> {
|
|
@@ -33,7 +50,7 @@ declare class NgilSelectComponent<T> extends AbstractInputComponent<T | T[]> {
|
|
|
33
50
|
onItemSelected(item: T | T[]): void;
|
|
34
51
|
isArray(item: T | T[]): item is T[];
|
|
35
52
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgilSelectComponent<any>, [null, null, { optional: true; }]>;
|
|
36
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgilSelectComponent<any>, "ngil-select", never, { "multiple": { "alias": "multiple"; "required": false; }; "items": { "alias": "items"; "required": false; }; "displayKey": { "alias": "displayKey"; "required": false; }; }, {}, never, ["[suffix]"],
|
|
53
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilSelectComponent<any>, "ngil-select", never, { "multiple": { "alias": "multiple"; "required": false; }; "items": { "alias": "items"; "required": false; }; "displayKey": { "alias": "displayKey"; "required": false; }; }, {}, never, ["[suffix]"], true, never>;
|
|
37
54
|
}
|
|
38
55
|
|
|
39
56
|
declare class NgilTextareaComponent extends AbstractInputComponent<string> implements AfterViewInit {
|
|
@@ -84,17 +101,17 @@ declare class NgilTimePickerOverlayComponent implements OnDestroy {
|
|
|
84
101
|
setValue(value: TimePickerValue): void;
|
|
85
102
|
private getStrategy;
|
|
86
103
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgilTimePickerOverlayComponent, never>;
|
|
87
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgilTimePickerOverlayComponent, "ngil-time-picker-overlay", never, {}, {}, never, never,
|
|
104
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilTimePickerOverlayComponent, "ngil-time-picker-overlay", never, {}, {}, never, never, true, never>;
|
|
88
105
|
}
|
|
89
106
|
|
|
90
|
-
declare class
|
|
107
|
+
declare class NgilPickerToggleComponent {
|
|
91
108
|
picker: NgilTimePickerOverlayComponent | undefined;
|
|
92
109
|
onClick: (event: Event) => void;
|
|
93
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
94
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<
|
|
110
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgilPickerToggleComponent, never>;
|
|
111
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilPickerToggleComponent, "ngil-picker-toggle", never, { "picker": { "alias": "picker"; "required": false; }; }, {}, never, never, true, never>;
|
|
95
112
|
}
|
|
96
113
|
|
|
97
|
-
declare class
|
|
114
|
+
declare class NgilTimePickerDirective implements AfterViewInit, OnDestroy, OnInit {
|
|
98
115
|
private readonly elementRef;
|
|
99
116
|
private readonly inputComponent?;
|
|
100
117
|
private readonly ngControl?;
|
|
@@ -113,8 +130,8 @@ declare class TimePickerDirective implements AfterViewInit, OnDestroy, OnInit {
|
|
|
113
130
|
private setInputText;
|
|
114
131
|
private getItemText;
|
|
115
132
|
ngOnDestroy(): void;
|
|
116
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
117
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<
|
|
133
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgilTimePickerDirective, [null, { optional: true; }, { optional: true; }]>;
|
|
134
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgilTimePickerDirective, "[ngilTimePicker]", never, { "picker": { "alias": "picker"; "required": false; }; }, { "changed": "changed"; }, never, never, true, never>;
|
|
118
135
|
}
|
|
119
136
|
|
|
120
137
|
declare class NumberRotationDirective implements AfterViewInit, OnDestroy, OnInit {
|
|
@@ -153,14 +170,14 @@ declare class NgilSelectOptionsComponent<T> implements OnDestroy {
|
|
|
153
170
|
isSelected(item: T): boolean;
|
|
154
171
|
ngOnDestroy(): void;
|
|
155
172
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgilSelectOptionsComponent<any>, never>;
|
|
156
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgilSelectOptionsComponent<any>, "ngil-select-options", never, { "selectedItems": { "alias": "selectedItems"; "required": false; }; "items": { "alias": "items"; "required": false; }; "displayKey": { "alias": "displayKey"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "display": { "alias": "display"; "required": false; }; }, { "itemSelected": "itemSelected"; }, never, never,
|
|
173
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilSelectOptionsComponent<any>, "ngil-select-options", never, { "selectedItems": { "alias": "selectedItems"; "required": false; }; "items": { "alias": "items"; "required": false; }; "displayKey": { "alias": "displayKey"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "display": { "alias": "display"; "required": false; }; }, { "itemSelected": "itemSelected"; }, never, never, true, never>;
|
|
157
174
|
}
|
|
158
175
|
|
|
159
176
|
declare class NgilUiFormModule {
|
|
160
177
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgilUiFormModule, never>;
|
|
161
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<NgilUiFormModule, [typeof
|
|
178
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NgilUiFormModule, [typeof NgilTimePickerComponent, typeof NumberRotationDirective, typeof NgilTextareaComponent], [typeof i4.CommonModule, typeof i5.ReactiveFormsModule, typeof i6.NgilOverlayToggleDirective, typeof i6.NgilOverlayComponent, typeof NgilRadioComponent, typeof NgilPickerToggleComponent, typeof NgilSelectComponent, typeof NgilSelectOptionsComponent, typeof NgilTimePickerDirective, typeof NgilTimePickerOverlayComponent, typeof NgilInputComponent], [typeof NgilInputComponent, typeof NgilRadioComponent, typeof NgilSelectComponent, typeof NgilTextareaComponent, typeof NgilTimePickerComponent, typeof NgilTimePickerOverlayComponent, typeof NgilPickerToggleComponent, typeof NumberRotationDirective, typeof NgilTimePickerDirective]>;
|
|
162
179
|
static ɵinj: i0.ɵɵInjectorDeclaration<NgilUiFormModule>;
|
|
163
180
|
}
|
|
164
181
|
|
|
165
|
-
export { NgilInputComponent, NgilSelectComponent, NgilTextareaComponent, NgilTimePickerComponent, NgilTimePickerOverlayComponent, NgilUiFormModule, NumberRotationDirective
|
|
182
|
+
export { NgilInputComponent, NgilPickerToggleComponent, NgilRadioComponent, NgilSelectComponent, NgilTextareaComponent, NgilTimePickerComponent, NgilTimePickerDirective, NgilTimePickerOverlayComponent, NgilUiFormModule, NumberRotationDirective };
|
|
166
183
|
export type { TimePickerValue };
|