design-angular-kit 1.0.0-16 → 1.0.0-18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -6
- package/assets/i18n/en.json +4 -1
- package/assets/i18n/it.json +4 -1
- package/esm2022/lib/abstracts/abstract-form.component.mjs +186 -0
- package/esm2022/lib/abstracts/abstract.component.mjs +45 -0
- package/esm2022/lib/components/components.module.mjs +188 -0
- package/esm2022/lib/components/core/accordion/accordion.component.mjs +38 -0
- package/esm2022/lib/components/core/alert/alert.component.mjs +74 -0
- package/esm2022/lib/components/core/badge/badge.directive.mjs +38 -0
- package/esm2022/lib/components/core/button/button.directive.mjs +85 -0
- package/esm2022/lib/components/core/callout/callout.component.mjs +57 -0
- package/esm2022/lib/components/core/card/card.component.mjs +64 -0
- package/esm2022/lib/components/core/carousel/carousel/carousel.component.mjs +89 -0
- package/esm2022/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +19 -0
- package/esm2022/lib/components/core/carousel/carousel.module.mjs +23 -0
- package/esm2022/lib/components/core/chip/chip.component.mjs +96 -0
- package/esm2022/lib/components/core/collapse/collapse.component.mjs +101 -0
- package/esm2022/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +24 -0
- package/esm2022/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +11 -0
- package/esm2022/lib/components/core/dimmer/dimmer.component.mjs +59 -0
- package/esm2022/lib/components/core/dimmer/dimmer.module.mjs +27 -0
- package/esm2022/lib/components/core/dropdown/dropdown/dropdown.component.mjs +143 -0
- package/esm2022/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +68 -0
- package/esm2022/lib/components/core/dropdown/dropdown.module.mjs +18 -0
- package/esm2022/lib/components/core/forward/forward.directive.mjs +53 -0
- package/esm2022/lib/components/core/link/link.component.mjs +46 -0
- package/esm2022/lib/components/core/list/list/list.component.mjs +17 -0
- package/esm2022/lib/components/core/list/list-item/list-item.component.mjs +40 -0
- package/esm2022/lib/components/core/list/list.module.mjs +23 -0
- package/esm2022/lib/components/core/modal/modal.component.mjs +164 -0
- package/esm2022/lib/components/core/notifications/notifications.component.mjs +111 -0
- package/esm2022/lib/components/core/pagination/pagination.component.mjs +133 -0
- package/esm2022/lib/components/core/popover/popover.directive.mjs +175 -0
- package/esm2022/lib/components/core/progress-bar/progress-bar.component.mjs +35 -0
- package/esm2022/lib/components/core/progress-button/progress-button.component.mjs +27 -0
- package/esm2022/lib/components/core/spinner/spinner.component.mjs +36 -0
- package/esm2022/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +138 -0
- package/esm2022/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +19 -0
- package/esm2022/lib/components/core/steppers/steppers.module.mjs +23 -0
- package/esm2022/lib/components/core/tab/tab-container/tab-container.component.mjs +60 -0
- package/esm2022/lib/components/core/tab/tab-item/tab-item.component.mjs +36 -0
- package/esm2022/lib/components/core/tab/tab.module.mjs +23 -0
- package/esm2022/lib/components/core/table/table.component.mjs +57 -0
- package/esm2022/lib/components/core/tooltip/tooltip.directive.mjs +142 -0
- package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +49 -0
- package/esm2022/lib/components/form/form.module.mjs +55 -0
- package/esm2022/lib/components/form/input/input.component.mjs +239 -0
- package/esm2022/lib/components/form/password-input/password-input.component.mjs +155 -0
- package/esm2022/lib/components/form/radio-button/radio-button.component.mjs +69 -0
- package/esm2022/lib/components/form/range/range.component.mjs +64 -0
- package/esm2022/lib/components/form/rating/rating.component.mjs +51 -0
- package/esm2022/lib/components/form/select/select.component.mjs +70 -0
- package/esm2022/lib/components/form/textarea/textarea.component.mjs +47 -0
- package/esm2022/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +140 -0
- package/esm2022/lib/components/form/upload-file-list/upload-file-list.component.mjs +112 -0
- package/esm2022/lib/components/navigation/back-button/back-button.component.mjs +71 -0
- package/esm2022/lib/components/navigation/back-to-top/back-to-top.component.mjs +64 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +57 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +23 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.module.mjs +18 -0
- package/esm2022/lib/components/navigation/header/header.component.mjs +58 -0
- package/esm2022/lib/components/utils/error-page/error-page.component.mjs +81 -0
- package/esm2022/lib/components/utils/icon/icon.component.mjs +55 -0
- package/esm2022/lib/components/utils/language-switcher/language-switcher.component.mjs +41 -0
- package/esm2022/lib/design-angular-kit.module.mjs +68 -0
- package/{esm2020 → esm2022}/lib/interfaces/form.mjs +1 -1
- package/esm2022/lib/interfaces/icon.mjs +165 -0
- package/esm2022/lib/pipes/mark-matching-text.pipe.mjs +37 -0
- package/esm2022/lib/services/notification/notification.service.mjs +120 -0
- package/esm2022/lib/utils/file-utils.mjs +73 -0
- package/esm2022/lib/utils/regex.mjs +31 -0
- package/esm2022/lib/validators/it-validators.mjs +153 -0
- package/esm2022/public_api.mjs +85 -0
- package/fesm2022/design-angular-kit.mjs +4615 -0
- package/fesm2022/design-angular-kit.mjs.map +1 -0
- package/lib/abstracts/abstract-form.component.d.ts +4 -4
- package/lib/abstracts/abstract.component.d.ts +3 -3
- package/lib/components/components.module.d.ts +32 -52
- package/lib/components/core/accordion/accordion.component.d.ts +6 -5
- package/lib/components/core/alert/alert.component.d.ts +5 -5
- package/lib/components/core/badge/badge.directive.d.ts +5 -5
- package/lib/components/core/button/button.directive.d.ts +11 -11
- package/lib/components/core/callout/callout.component.d.ts +7 -7
- package/lib/components/core/card/card.component.d.ts +8 -8
- package/lib/components/core/carousel/carousel/carousel.component.d.ts +10 -10
- package/lib/components/core/carousel/carousel-item/carousel-item.component.d.ts +4 -4
- package/lib/components/core/carousel/carousel.module.d.ts +8 -0
- package/lib/components/core/chip/chip.component.d.ts +6 -3
- package/lib/components/core/collapse/collapse.component.d.ts +8 -8
- package/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.d.ts +3 -3
- package/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.d.ts +3 -3
- package/lib/components/core/dimmer/dimmer.component.d.ts +4 -4
- package/lib/components/core/dimmer/dimmer.module.d.ts +9 -0
- package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +14 -9
- package/lib/components/core/dropdown/dropdown-item/dropdown-item.component.d.ts +8 -8
- package/lib/components/core/dropdown/dropdown.module.d.ts +8 -0
- package/lib/components/core/forward/forward.directive.d.ts +3 -3
- package/lib/components/core/link/link.component.d.ts +9 -8
- package/lib/components/core/list/list/list.component.d.ts +4 -4
- package/lib/components/core/list/list-item/list-item.component.d.ts +9 -9
- package/lib/components/core/list/list.module.d.ts +8 -0
- package/lib/components/core/modal/modal.component.d.ts +11 -11
- package/lib/components/core/notifications/notifications.component.d.ts +6 -6
- package/lib/components/core/pagination/pagination.component.d.ts +8 -8
- package/lib/components/core/popover/popover.directive.d.ts +3 -3
- package/lib/components/core/progress-bar/progress-bar.component.d.ts +6 -6
- package/lib/components/core/progress-button/progress-button.component.d.ts +5 -5
- package/lib/components/core/spinner/spinner.component.d.ts +5 -5
- package/lib/components/core/steppers/steppers-container/steppers-container.component.d.ts +37 -13
- package/lib/components/core/steppers/steppers-item/steppers-item.component.d.ts +5 -5
- package/lib/components/core/steppers/steppers.module.d.ts +8 -0
- package/lib/components/core/tab/tab-container/tab-container.component.d.ts +9 -9
- package/lib/components/core/tab/tab-item/tab-item.component.d.ts +8 -8
- package/lib/components/core/tab/tab.module.d.ts +8 -0
- package/lib/components/core/table/table.component.d.ts +12 -12
- package/lib/components/core/tooltip/tooltip.directive.d.ts +3 -3
- package/lib/components/form/checkbox/checkbox.component.d.ts +12 -10
- package/lib/components/form/form.module.d.ts +16 -0
- package/lib/components/form/input/input.component.d.ts +18 -13
- package/lib/components/form/password-input/password-input.component.d.ts +11 -6
- package/lib/components/form/radio-button/radio-button.component.d.ts +6 -6
- package/lib/components/form/range/range.component.d.ts +42 -0
- package/lib/components/form/rating/rating.component.d.ts +24 -0
- package/lib/components/form/select/select.component.d.ts +11 -6
- package/lib/components/form/textarea/textarea.component.d.ts +5 -5
- package/lib/components/form/upload-drag-drop/upload-drag-drop.component.d.ts +4 -4
- package/lib/components/form/upload-file-list/upload-file-list.component.d.ts +6 -6
- package/lib/components/navigation/back-button/back-button.component.d.ts +3 -3
- package/lib/components/navigation/back-to-top/back-to-top.component.d.ts +7 -7
- package/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +6 -6
- package/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.d.ts +6 -6
- package/lib/components/navigation/breadcrumbs/breadcrumbs.module.d.ts +8 -0
- package/lib/components/navigation/header/header.component.d.ts +6 -6
- package/lib/components/utils/error-page/error-page.component.d.ts +6 -6
- package/lib/components/utils/icon/icon.component.d.ts +7 -7
- package/lib/components/utils/language-switcher/language-switcher.component.d.ts +4 -4
- package/lib/design-angular-kit.module.d.ts +3 -4
- package/lib/interfaces/core.d.ts +16 -16
- package/lib/interfaces/form.d.ts +3 -3
- package/lib/interfaces/icon.d.ts +4 -4
- package/lib/pipes/mark-matching-text.pipe.d.ts +4 -4
- package/lib/services/{notifications/notifications.service.d.ts → notification/notification.service.d.ts} +3 -3
- package/lib/utils/boolean-input.d.ts +1 -1
- package/lib/utils/regex.d.ts +5 -0
- package/lib/validators/it-validators.d.ts +4 -0
- package/package.json +13 -19
- package/public_api.d.ts +13 -4
- package/esm2020/lib/abstracts/abstract-form.component.mjs +0 -188
- package/esm2020/lib/abstracts/abstract.component.mjs +0 -45
- package/esm2020/lib/components/components.module.mjs +0 -256
- package/esm2020/lib/components/core/accordion/accordion.component.mjs +0 -35
- package/esm2020/lib/components/core/alert/alert.component.mjs +0 -73
- package/esm2020/lib/components/core/badge/badge.directive.mjs +0 -37
- package/esm2020/lib/components/core/button/button.directive.mjs +0 -84
- package/esm2020/lib/components/core/callout/callout.component.mjs +0 -57
- package/esm2020/lib/components/core/card/card.component.mjs +0 -64
- package/esm2020/lib/components/core/carousel/carousel/carousel.component.mjs +0 -89
- package/esm2020/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +0 -19
- package/esm2020/lib/components/core/chip/chip.component.mjs +0 -89
- package/esm2020/lib/components/core/collapse/collapse.component.mjs +0 -101
- package/esm2020/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +0 -24
- package/esm2020/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +0 -11
- package/esm2020/lib/components/core/dimmer/dimmer.component.mjs +0 -59
- package/esm2020/lib/components/core/dropdown/dropdown/dropdown.component.mjs +0 -130
- package/esm2020/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +0 -68
- package/esm2020/lib/components/core/forward/forward.directive.mjs +0 -52
- package/esm2020/lib/components/core/link/link.component.mjs +0 -40
- package/esm2020/lib/components/core/list/list/list.component.mjs +0 -17
- package/esm2020/lib/components/core/list/list-item/list-item.component.mjs +0 -41
- package/esm2020/lib/components/core/modal/modal.component.mjs +0 -163
- package/esm2020/lib/components/core/notifications/notifications.component.mjs +0 -110
- package/esm2020/lib/components/core/pagination/pagination.component.mjs +0 -131
- package/esm2020/lib/components/core/popover/popover.directive.mjs +0 -174
- package/esm2020/lib/components/core/progress-bar/progress-bar.component.mjs +0 -34
- package/esm2020/lib/components/core/progress-button/progress-button.component.mjs +0 -27
- package/esm2020/lib/components/core/rating/rating.component.mjs +0 -49
- package/esm2020/lib/components/core/spinner/spinner.component.mjs +0 -35
- package/esm2020/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +0 -127
- package/esm2020/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +0 -19
- package/esm2020/lib/components/core/tab/tab-container/tab-container.component.mjs +0 -59
- package/esm2020/lib/components/core/tab/tab-item/tab-item.component.mjs +0 -36
- package/esm2020/lib/components/core/table/table.component.mjs +0 -57
- package/esm2020/lib/components/core/tooltip/tooltip.directive.mjs +0 -141
- package/esm2020/lib/components/form/checkbox/checkbox.component.mjs +0 -40
- package/esm2020/lib/components/form/input/input.component.mjs +0 -232
- package/esm2020/lib/components/form/password-input/password-input.component.mjs +0 -152
- package/esm2020/lib/components/form/radio-button/radio-button.component.mjs +0 -68
- package/esm2020/lib/components/form/select/select.component.mjs +0 -62
- package/esm2020/lib/components/form/textarea/textarea.component.mjs +0 -46
- package/esm2020/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +0 -139
- package/esm2020/lib/components/form/upload-file-list/upload-file-list.component.mjs +0 -104
- package/esm2020/lib/components/navigation/back-button/back-button.component.mjs +0 -69
- package/esm2020/lib/components/navigation/back-to-top/back-to-top.component.mjs +0 -64
- package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +0 -56
- package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +0 -23
- package/esm2020/lib/components/navigation/header/header.component.mjs +0 -57
- package/esm2020/lib/components/utils/error-page/error-page.component.mjs +0 -79
- package/esm2020/lib/components/utils/icon/icon.component.mjs +0 -55
- package/esm2020/lib/components/utils/language-switcher/language-switcher.component.mjs +0 -39
- package/esm2020/lib/design-angular-kit.module.mjs +0 -68
- package/esm2020/lib/interfaces/icon.mjs +0 -162
- package/esm2020/lib/pipes/mark-matching-text.pipe.mjs +0 -36
- package/esm2020/lib/services/notifications/notifications.service.mjs +0 -120
- package/esm2020/lib/utils/file-utils.mjs +0 -73
- package/esm2020/lib/utils/regex.mjs +0 -26
- package/esm2020/lib/validators/it-validators.mjs +0 -147
- package/esm2020/public_api.mjs +0 -74
- package/fesm2015/design-angular-kit.mjs +0 -4422
- package/fesm2015/design-angular-kit.mjs.map +0 -1
- package/fesm2020/design-angular-kit.mjs +0 -4354
- package/fesm2020/design-angular-kit.mjs.map +0 -1
- package/lib/components/core/rating/rating.component.d.ts +0 -24
- /package/{esm2020 → esm2022}/design-angular-kit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/design-angular-kit-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interfaces/core.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interfaces/design-angular-kit-init.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interfaces/utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/boolean-input.mjs +0 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
|
|
3
|
+
import { ItValidators } from '../../../validators/it-validators';
|
|
4
|
+
import { map } from 'rxjs';
|
|
5
|
+
import { isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
6
|
+
import { InputPassword } from 'bootstrap-italia';
|
|
7
|
+
import { ReactiveFormsModule, Validators } from '@angular/forms';
|
|
8
|
+
import { AsyncPipe, NgIf } from '@angular/common';
|
|
9
|
+
import { ItIconComponent } from '../../utils/icon/icon.component';
|
|
10
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/forms";
|
|
13
|
+
import * as i2 from "@ngx-translate/core";
|
|
14
|
+
export class ItPasswordInputComponent extends ItAbstractFormComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
/**
|
|
18
|
+
* The field is required
|
|
19
|
+
* @default true
|
|
20
|
+
*/
|
|
21
|
+
this.required = true;
|
|
22
|
+
/**
|
|
23
|
+
* The password minimum length
|
|
24
|
+
* @default 10
|
|
25
|
+
*/
|
|
26
|
+
this.minLength = 10;
|
|
27
|
+
/**
|
|
28
|
+
* The password must contain at least one number
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
this.useNumber = true;
|
|
32
|
+
/**
|
|
33
|
+
* The password must contain at least one uppercase character
|
|
34
|
+
* @default true
|
|
35
|
+
*/
|
|
36
|
+
this.useCapitalCase = true;
|
|
37
|
+
/**
|
|
38
|
+
* The password must contain at least one lowercase character
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
41
|
+
this.useSmallCase = true;
|
|
42
|
+
/**
|
|
43
|
+
* The password must contain at least one special character
|
|
44
|
+
* @default true
|
|
45
|
+
*/
|
|
46
|
+
this.useSpecialCharacters = true;
|
|
47
|
+
/**
|
|
48
|
+
* The input placeholder
|
|
49
|
+
*/
|
|
50
|
+
this.placeholder = '';
|
|
51
|
+
/**
|
|
52
|
+
* Is the confirmation password field
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
this.confirmPasswordField = false;
|
|
56
|
+
}
|
|
57
|
+
ngOnInit() {
|
|
58
|
+
super.ngOnInit();
|
|
59
|
+
if (!this.isConfirmPasswordField) {
|
|
60
|
+
this.addValidators(ItValidators.password(this.minLength, this.useNumber, this.useCapitalCase, this.useSmallCase, this.useSpecialCharacters, this.required));
|
|
61
|
+
}
|
|
62
|
+
else if (this.required) {
|
|
63
|
+
this.addValidators(Validators.required);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
ngAfterViewInit() {
|
|
67
|
+
super.ngAfterViewInit();
|
|
68
|
+
if (this.inputElement) {
|
|
69
|
+
this.inputPasswordBs = InputPassword.getOrCreateInstance(this.inputElement.nativeElement, {
|
|
70
|
+
showText: this.isStrengthMeter,
|
|
71
|
+
minimumLength: this.minLength
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
get isStrengthMeter() {
|
|
76
|
+
return !this.isConfirmPasswordField && isTrueBooleanInput(this.showStrengthMeter);
|
|
77
|
+
}
|
|
78
|
+
get isConfirmPasswordField() {
|
|
79
|
+
return isTrueBooleanInput(this.confirmPasswordField);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Return the invalid message string from TranslateService
|
|
83
|
+
*/
|
|
84
|
+
get invalidMessage() {
|
|
85
|
+
if (this.hasError('noPasswordMatch')) {
|
|
86
|
+
return this._translateService.get('it.errors.password-no-match');
|
|
87
|
+
}
|
|
88
|
+
if (this.hasError('minlength')) {
|
|
89
|
+
return this._translateService.get('it.errors.password-min-length', {
|
|
90
|
+
minLength: this.minLength
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
if (this.hasError('hasNumber')) {
|
|
94
|
+
return this._translateService.get('it.errors.password-number');
|
|
95
|
+
}
|
|
96
|
+
if (this.hasError('hasCapitalCase')) {
|
|
97
|
+
return this._translateService.get('it.errors.password-capital-case');
|
|
98
|
+
}
|
|
99
|
+
if (this.hasError('hasSmallCase')) {
|
|
100
|
+
return this._translateService.get('it.errors.password-capital-case');
|
|
101
|
+
}
|
|
102
|
+
if (this.hasError('hasSpecialCharacters')) {
|
|
103
|
+
return this._translateService.get('it.errors.password-special-character');
|
|
104
|
+
}
|
|
105
|
+
return super.invalidMessage;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Retrieve the default StrengthMeter description message from TranslateService
|
|
109
|
+
*/
|
|
110
|
+
get strengthMeterDescription() {
|
|
111
|
+
const keys = ['it.form.password-strength-meter.description.default'];
|
|
112
|
+
if (this.useNumber) {
|
|
113
|
+
keys.push('it.form.password-strength-meter.description.number');
|
|
114
|
+
}
|
|
115
|
+
if (this.useCapitalCase) {
|
|
116
|
+
keys.push('it.form.password-strength-meter.description.capital-case');
|
|
117
|
+
}
|
|
118
|
+
if (this.useSpecialCharacters) {
|
|
119
|
+
keys.push('it.form.password-strength-meter.description.special-character');
|
|
120
|
+
}
|
|
121
|
+
return this._translateService.get(keys, { minLength: this.minLength }).pipe(map(labels => Object.values(labels).join(', ')));
|
|
122
|
+
}
|
|
123
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItPasswordInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
124
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItPasswordInputComponent, isStandalone: true, selector: "it-password-input", inputs: { required: "required", minLength: "minLength", useNumber: "useNumber", useCapitalCase: "useCapitalCase", useSmallCase: "useSmallCase", useSpecialCharacters: "useSpecialCharacters", placeholder: "placeholder", description: "description", showStrengthMeter: "showStrengthMeter", confirmPasswordField: "confirmPasswordField", autocomplete: "autocomplete" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"!!control.value || !!placeholder\">{{label}}</label>\n <input [id]=\"id\" #input\n type=\"password\"\n class=\"form-control input-password\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [attr.aria-describedby]=\"id + '-description'\"\n [autocomplete]=\"isConfirmPasswordField ? 'off' : autocomplete\">\n\n <span class=\"password-icon\" aria-hidden=\"true\">\n <it-icon name=\"password-visible\" size=\"sm\" class=\"password-icon-visible\"></it-icon>\n <it-icon name=\"password-invisible\" size=\"sm\" class=\"password-icon-invisible d-none\"></it-icon>\n </span>\n\n <div *ngIf=\"isInvalid\" [id]=\"id + '-error'\" class=\"form-feedback just-validate-error-label\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n\n <small *ngIf=\"description !== undefined && !isStrengthMeter\" [id]=\"id + '-description'\" class=\"form-text\">\n {{description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <small class=\"password-caps form-text text-warning position-absolute bg-white w-100\">\n {{'it.form.caps-inserted' | translate}}\n </small>\n\n <div *ngIf=\"isStrengthMeter\" class=\"password-strength-meter\">\n <small [id]=\"id + '-description'\" class=\"form-text text-muted\"\n [attr.data-bs-short-pass]=\"'it.form.password-strength-meter.password-short' | translate\"\n [attr.data-bs-bad-pas]=\"'it.form.password-strength-meter.password-bad' | translate\"\n [attr.data-bs-good-pass]=\"'it.form.password-strength-meter.password-good' | translate\"\n [attr.data-bs-strong-pass]=\"'it.form.password-strength-meter.password-strong' | translate\">\n {{description !== undefined && description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <div class=\"password-meter progress rounded-0 position-absolute\">\n <div class=\"row position-absolute w-100 m-0\">\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n </div>\n <div class=\"progress-bar bg-muted\" role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n </div>\n</div>\n", styles: [".form-group input:focus:not(.focus--mouse){box-shadow:inherit!important;border-color:inherit!important}.form-group label:not(.active):has(+ input:-webkit-autofill){transform:translateY(-75%)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ItIconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
125
|
+
}
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItPasswordInputComponent, decorators: [{
|
|
127
|
+
type: Component,
|
|
128
|
+
args: [{ standalone: true, selector: 'it-password-input', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIf, ReactiveFormsModule, ItIconComponent, AsyncPipe, TranslateModule], template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"!!control.value || !!placeholder\">{{label}}</label>\n <input [id]=\"id\" #input\n type=\"password\"\n class=\"form-control input-password\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [attr.aria-describedby]=\"id + '-description'\"\n [autocomplete]=\"isConfirmPasswordField ? 'off' : autocomplete\">\n\n <span class=\"password-icon\" aria-hidden=\"true\">\n <it-icon name=\"password-visible\" size=\"sm\" class=\"password-icon-visible\"></it-icon>\n <it-icon name=\"password-invisible\" size=\"sm\" class=\"password-icon-invisible d-none\"></it-icon>\n </span>\n\n <div *ngIf=\"isInvalid\" [id]=\"id + '-error'\" class=\"form-feedback just-validate-error-label\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n\n <small *ngIf=\"description !== undefined && !isStrengthMeter\" [id]=\"id + '-description'\" class=\"form-text\">\n {{description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <small class=\"password-caps form-text text-warning position-absolute bg-white w-100\">\n {{'it.form.caps-inserted' | translate}}\n </small>\n\n <div *ngIf=\"isStrengthMeter\" class=\"password-strength-meter\">\n <small [id]=\"id + '-description'\" class=\"form-text text-muted\"\n [attr.data-bs-short-pass]=\"'it.form.password-strength-meter.password-short' | translate\"\n [attr.data-bs-bad-pas]=\"'it.form.password-strength-meter.password-bad' | translate\"\n [attr.data-bs-good-pass]=\"'it.form.password-strength-meter.password-good' | translate\"\n [attr.data-bs-strong-pass]=\"'it.form.password-strength-meter.password-strong' | translate\">\n {{description !== undefined && description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <div class=\"password-meter progress rounded-0 position-absolute\">\n <div class=\"row position-absolute w-100 m-0\">\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n </div>\n <div class=\"progress-bar bg-muted\" role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n </div>\n</div>\n", styles: [".form-group input:focus:not(.focus--mouse){box-shadow:inherit!important;border-color:inherit!important}.form-group label:not(.active):has(+ input:-webkit-autofill){transform:translateY(-75%)}\n"] }]
|
|
129
|
+
}], propDecorators: { required: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], minLength: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], useNumber: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], useCapitalCase: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], useSmallCase: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], useSpecialCharacters: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], placeholder: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], description: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], showStrengthMeter: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], confirmPasswordField: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], autocomplete: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], inputElement: [{
|
|
152
|
+
type: ViewChild,
|
|
153
|
+
args: ['input']
|
|
154
|
+
}] } });
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3Bhc3N3b3JkLWlucHV0L3Bhc3N3b3JkLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9wYXNzd29yZC1pbnB1dC9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQVV0RCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsdUJBQWtEO0lBUmhHOztRQVVFOzs7V0FHRztRQUNNLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFbEM7OztXQUdHO1FBQ00sY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUVoQzs7O1dBR0c7UUFDTSxjQUFTLEdBQVksSUFBSSxDQUFDO1FBRW5DOzs7V0FHRztRQUNNLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRXhDOzs7V0FHRztRQUNNLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBRXRDOzs7V0FHRztRQUNNLHlCQUFvQixHQUFZLElBQUksQ0FBQztRQUU5Qzs7V0FFRztRQUNNLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBZ0JsQzs7O1dBR0c7UUFDTSx5QkFBb0IsR0FBaUIsS0FBSyxDQUFDO0tBK0ZyRDtJQW5GVSxRQUFRO1FBQ2YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUN0QyxJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLG9CQUFvQixFQUN6QixJQUFJLENBQUMsUUFBUSxDQUNkLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVRLGVBQWU7UUFDdEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtnQkFDeEYsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUM5QixhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVM7YUFDOUIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELElBQWMsc0JBQXNCO1FBQ2xDLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBYSxjQUFjO1FBQ3pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRTtnQkFDakUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2FBQzFCLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7U0FDdEU7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7U0FDdEU7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsRUFBRTtZQUN6QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUMzRTtRQUVELE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFjLHdCQUF3QjtRQUNwQyxNQUFNLElBQUksR0FBRyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDckUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztTQUNqRTtRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLDBEQUEwRCxDQUFDLENBQUM7U0FDdkU7UUFDRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLCtEQUErRCxDQUFDLENBQUM7U0FDNUU7UUFFRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDekUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDaEQsQ0FBQztJQUNKLENBQUM7OEdBM0pVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHVqQkNuQnJDLHlzRkFxREEsMlBEcENZLElBQUksNEZBQUUsbUJBQW1CLDBrQkFBRSxlQUFlLDhHQUFFLFNBQVMsNkNBQUUsZUFBZTs7MkZBRXJFLHdCQUF3QjtrQkFScEMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUM7OEJBUXhFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFNRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFRRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFNRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJc0IsWUFBWTtzQkFBdkMsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdEFic3RyYWN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi8uLi92YWxpZGF0b3JzL2l0LXZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGlzVHJ1ZUJvb2xlYW5JbnB1dCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2Jvb2xlYW4taW5wdXQnO1xuaW1wb3J0IHsgSW5wdXRQYXNzd29yZCB9IGZyb20gJ2Jvb3RzdHJhcC1pdGFsaWEnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi91dGlscy9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1wYXNzd29yZC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bhc3N3b3JkLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTmdJZiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSXRJY29uQ29tcG9uZW50LCBBc3luY1BpcGUsIFRyYW5zbGF0ZU1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgSXRQYXNzd29yZElucHV0Q29tcG9uZW50IGV4dGVuZHMgSXRBYnN0cmFjdEZvcm1Db21wb25lbnQ8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIC8qKlxuICAgKiBUaGUgZmllbGQgaXMgcmVxdWlyZWRcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFzc3dvcmQgbWluaW11bSBsZW5ndGhcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIEBJbnB1dCgpIG1pbkxlbmd0aDogbnVtYmVyID0gMTA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIG51bWJlclxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKSB1c2VOdW1iZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFzc3dvcmQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSB1cHBlcmNhc2UgY2hhcmFjdGVyXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpIHVzZUNhcGl0YWxDYXNlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIHBhc3N3b3JkIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgbG93ZXJjYXNlIGNoYXJhY3RlclxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKSB1c2VTbWFsbENhc2U6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFzc3dvcmQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBzcGVjaWFsIGNoYXJhY3RlclxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKSB1c2VTcGVjaWFsQ2hhcmFjdGVyczogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBwbGFjZWhvbGRlclxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgZGVzY3JpcHRpb25cbiAgICogLSA8Yj50cnVlPC9iPjogc2hvdyB0aGUgU3RyZW5ndGhNZXRlciBkZXNjcmlwdGlvbiBtZXNzYWdlXG4gICAqIC0gPGI+c3RyaW5nPC9iPjogc2hvdyBjdXN0b20gZGVzY3JpcHRpb25cbiAgICogQGRlZmF1bHQgdHJ1ZSBmb3IgU3RyZW5ndGhNZXRlciBtb2RlIGVsc2UgaXMgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbjogc3RyaW5nIHwgdHJ1ZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRW5hYmxlIHRvIHNob3cgdGhlIHN0cmVuZ3RoIG1ldGVyXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKSBzaG93U3RyZW5ndGhNZXRlcjogQm9vbGVhbklucHV0IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJcyB0aGUgY29uZmlybWF0aW9uIHBhc3N3b3JkIGZpZWxkXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKSBjb25maXJtUGFzc3dvcmRGaWVsZDogQm9vbGVhbklucHV0ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElucHV0IGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgKEJyb3dzZXIgYXV0b2NvbXBsZXRlKVxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgaW5wdXRQYXNzd29yZEJzPzogSW5wdXRQYXNzd29yZDtcblxuICBAVmlld0NoaWxkKCdpbnB1dCcpIHByaXZhdGUgaW5wdXRFbGVtZW50PzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgaWYgKCF0aGlzLmlzQ29uZmlybVBhc3N3b3JkRmllbGQpIHtcbiAgICAgIHRoaXMuYWRkVmFsaWRhdG9ycyhJdFZhbGlkYXRvcnMucGFzc3dvcmQoXG4gICAgICAgIHRoaXMubWluTGVuZ3RoLFxuICAgICAgICB0aGlzLnVzZU51bWJlcixcbiAgICAgICAgdGhpcy51c2VDYXBpdGFsQ2FzZSxcbiAgICAgICAgdGhpcy51c2VTbWFsbENhc2UsXG4gICAgICAgIHRoaXMudXNlU3BlY2lhbENoYXJhY3RlcnMsXG4gICAgICAgIHRoaXMucmVxdWlyZWRcbiAgICAgICkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgdGhpcy5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dFBhc3N3b3JkQnMgPSBJbnB1dFBhc3N3b3JkLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwge1xuICAgICAgICBzaG93VGV4dDogdGhpcy5pc1N0cmVuZ3RoTWV0ZXIsXG4gICAgICAgIG1pbmltdW1MZW5ndGg6IHRoaXMubWluTGVuZ3RoXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGlzU3RyZW5ndGhNZXRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNDb25maXJtUGFzc3dvcmRGaWVsZCAmJiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5zaG93U3RyZW5ndGhNZXRlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGlzQ29uZmlybVBhc3N3b3JkRmllbGQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLmNvbmZpcm1QYXNzd29yZEZpZWxkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGludmFsaWQgbWVzc2FnZSBzdHJpbmcgZnJvbSBUcmFuc2xhdGVTZXJ2aWNlXG4gICAqL1xuICBvdmVycmlkZSBnZXQgaW52YWxpZE1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBpZiAodGhpcy5oYXNFcnJvcignbm9QYXNzd29yZE1hdGNoJykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnBhc3N3b3JkLW5vLW1hdGNoJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMucGFzc3dvcmQtbWluLWxlbmd0aCcsIHtcbiAgICAgICAgbWluTGVuZ3RoOiB0aGlzLm1pbkxlbmd0aFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdoYXNOdW1iZXInKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMucGFzc3dvcmQtbnVtYmVyJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdoYXNDYXBpdGFsQ2FzZScpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5wYXNzd29yZC1jYXBpdGFsLWNhc2UnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ2hhc1NtYWxsQ2FzZScpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5wYXNzd29yZC1jYXBpdGFsLWNhc2UnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ2hhc1NwZWNpYWxDaGFyYWN0ZXJzJykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnBhc3N3b3JkLXNwZWNpYWwtY2hhcmFjdGVyJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmludmFsaWRNZXNzYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBkZWZhdWx0IFN0cmVuZ3RoTWV0ZXIgZGVzY3JpcHRpb24gbWVzc2FnZSBmcm9tIFRyYW5zbGF0ZVNlcnZpY2VcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgc3RyZW5ndGhNZXRlckRlc2NyaXB0aW9uKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgY29uc3Qga2V5cyA9IFsnaXQuZm9ybS5wYXNzd29yZC1zdHJlbmd0aC1tZXRlci5kZXNjcmlwdGlvbi5kZWZhdWx0J107XG4gICAgaWYgKHRoaXMudXNlTnVtYmVyKSB7XG4gICAgICBrZXlzLnB1c2goJ2l0LmZvcm0ucGFzc3dvcmQtc3RyZW5ndGgtbWV0ZXIuZGVzY3JpcHRpb24ubnVtYmVyJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZUNhcGl0YWxDYXNlKSB7XG4gICAgICBrZXlzLnB1c2goJ2l0LmZvcm0ucGFzc3dvcmQtc3RyZW5ndGgtbWV0ZXIuZGVzY3JpcHRpb24uY2FwaXRhbC1jYXNlJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZVNwZWNpYWxDaGFyYWN0ZXJzKSB7XG4gICAgICBrZXlzLnB1c2goJ2l0LmZvcm0ucGFzc3dvcmQtc3RyZW5ndGgtbWV0ZXIuZGVzY3JpcHRpb24uc3BlY2lhbC1jaGFyYWN0ZXInKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoa2V5cywgeyBtaW5MZW5ndGg6IHRoaXMubWluTGVuZ3RoIH0pLnBpcGUoXG4gICAgICBtYXAobGFiZWxzID0+IE9iamVjdC52YWx1ZXMobGFiZWxzKS5qb2luKCcsICcpKVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW2Zvcl09XCJpZFwiIFtjbGFzcy5hY3RpdmVdPVwiISFjb250cm9sLnZhbHVlIHx8ICEhcGxhY2Vob2xkZXJcIj57e2xhYmVsfX08L2xhYmVsPlxuICA8aW5wdXQgW2lkXT1cImlkXCIgI2lucHV0XG4gICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgaW5wdXQtcGFzc3dvcmRcIlxuICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaXNJbnZhbGlkXCJcbiAgICAgICAgIFtjbGFzcy5pcy12YWxpZF09XCJpc1ZhbGlkXCJcbiAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlkICsgJy1kZXNjcmlwdGlvbidcIlxuICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJpc0NvbmZpcm1QYXNzd29yZEZpZWxkID8gJ29mZicgOiBhdXRvY29tcGxldGVcIj5cblxuICA8c3BhbiBjbGFzcz1cInBhc3N3b3JkLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8aXQtaWNvbiBuYW1lPVwicGFzc3dvcmQtdmlzaWJsZVwiIHNpemU9XCJzbVwiIGNsYXNzPVwicGFzc3dvcmQtaWNvbi12aXNpYmxlXCI+PC9pdC1pY29uPlxuICAgIDxpdC1pY29uIG5hbWU9XCJwYXNzd29yZC1pbnZpc2libGVcIiBzaXplPVwic21cIiBjbGFzcz1cInBhc3N3b3JkLWljb24taW52aXNpYmxlIGQtbm9uZVwiPjwvaXQtaWNvbj5cbiAgPC9zcGFuPlxuXG4gIDxkaXYgKm5nSWY9XCJpc0ludmFsaWRcIiBbaWRdPVwiaWQgKyAnLWVycm9yJ1wiIGNsYXNzPVwiZm9ybS1mZWVkYmFjayBqdXN0LXZhbGlkYXRlLWVycm9yLWxhYmVsXCI+XG4gICAgPGRpdiAjY3VzdG9tRXJyb3I+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXJyb3JdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tRXJyb3IuaGFzQ2hpbGROb2RlcygpXCI+e3tpbnZhbGlkTWVzc2FnZSB8IGFzeW5jfX08L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPHNtYWxsICpuZ0lmPVwiZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCAmJiAhaXNTdHJlbmd0aE1ldGVyXCIgW2lkXT1cImlkICsgJy1kZXNjcmlwdGlvbidcIiBjbGFzcz1cImZvcm0tdGV4dFwiPlxuICAgIHt7ZGVzY3JpcHRpb24gIT09IHRydWUgPyBkZXNjcmlwdGlvbiA6IChzdHJlbmd0aE1ldGVyRGVzY3JpcHRpb24gfCBhc3luYyl9fVxuICA8L3NtYWxsPlxuXG4gIDxzbWFsbCBjbGFzcz1cInBhc3N3b3JkLWNhcHMgZm9ybS10ZXh0IHRleHQtd2FybmluZyBwb3NpdGlvbi1hYnNvbHV0ZSBiZy13aGl0ZSB3LTEwMFwiPlxuICAgIHt7J2l0LmZvcm0uY2Fwcy1pbnNlcnRlZCcgfCB0cmFuc2xhdGV9fVxuICA8L3NtYWxsPlxuXG4gIDxkaXYgKm5nSWY9XCJpc1N0cmVuZ3RoTWV0ZXJcIiBjbGFzcz1cInBhc3N3b3JkLXN0cmVuZ3RoLW1ldGVyXCI+XG4gICAgPHNtYWxsIFtpZF09XCJpZCArICctZGVzY3JpcHRpb24nXCIgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1tdXRlZFwiXG4gICAgICAgICAgIFthdHRyLmRhdGEtYnMtc2hvcnQtcGFzc109XCInaXQuZm9ybS5wYXNzd29yZC1zdHJlbmd0aC1tZXRlci5wYXNzd29yZC1zaG9ydCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICBbYXR0ci5kYXRhLWJzLWJhZC1wYXNdPVwiJ2l0LmZvcm0ucGFzc3dvcmQtc3RyZW5ndGgtbWV0ZXIucGFzc3dvcmQtYmFkJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgIFthdHRyLmRhdGEtYnMtZ29vZC1wYXNzXT1cIidpdC5mb3JtLnBhc3N3b3JkLXN0cmVuZ3RoLW1ldGVyLnBhc3N3b3JkLWdvb2QnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgW2F0dHIuZGF0YS1icy1zdHJvbmctcGFzc109XCInaXQuZm9ybS5wYXNzd29yZC1zdHJlbmd0aC1tZXRlci5wYXNzd29yZC1zdHJvbmcnIHwgdHJhbnNsYXRlXCI+XG4gICAgICB7e2Rlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgJiYgZGVzY3JpcHRpb24gIT09IHRydWUgPyBkZXNjcmlwdGlvbiA6IChzdHJlbmd0aE1ldGVyRGVzY3JpcHRpb24gfCBhc3luYyl9fVxuICAgIDwvc21hbGw+XG5cbiAgICA8ZGl2IGNsYXNzPVwicGFzc3dvcmQtbWV0ZXIgcHJvZ3Jlc3Mgcm91bmRlZC0wIHBvc2l0aW9uLWFic29sdXRlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IHBvc2l0aW9uLWFic29sdXRlIHctMTAwIG0tMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgYm9yZGVyLXN0YXJ0IGJvcmRlci1lbmQgYm9yZGVyLXdoaXRlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBib3JkZXItc3RhcnQgYm9yZGVyLWVuZCBib3JkZXItd2hpdGVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGJvcmRlci1zdGFydCBib3JkZXItZW5kIGJvcmRlci13aGl0ZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgYm9yZGVyLXN0YXJ0IGJvcmRlci1lbmQgYm9yZGVyLXdoaXRlXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgYmctbXV0ZWRcIiByb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbm93PVwiMFwiIGFyaWEtdmFsdWVtaW49XCIwXCJcbiAgICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
|
|
3
|
+
import { isFalseBooleanInput, isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
4
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { AsyncPipe, NgIf } from '@angular/common';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/forms";
|
|
8
|
+
export class ItRadioButtonComponent extends ItAbstractFormComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
/**
|
|
12
|
+
* If show radio inline
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
this.inline = false;
|
|
16
|
+
/**
|
|
17
|
+
* If is radio group
|
|
18
|
+
* @default false
|
|
19
|
+
*/
|
|
20
|
+
this.group = false;
|
|
21
|
+
}
|
|
22
|
+
get isInline() {
|
|
23
|
+
return isTrueBooleanInput(this.inline);
|
|
24
|
+
}
|
|
25
|
+
get isGroup() {
|
|
26
|
+
return isTrueBooleanInput(this.group);
|
|
27
|
+
}
|
|
28
|
+
get name() {
|
|
29
|
+
let name = '';
|
|
30
|
+
if (this._ngControl) {
|
|
31
|
+
name = this._ngControl.name?.toString() || '';
|
|
32
|
+
// Retrieve parent name, prevent duplicate name inside FormArray or nested FormGroup
|
|
33
|
+
let control = this._ngControl.control?.parent;
|
|
34
|
+
while (control?.parent) {
|
|
35
|
+
const controls = control?.parent?.controls || {};
|
|
36
|
+
const parentName = Object.keys(controls).find(name => control === controls[name]) || null;
|
|
37
|
+
if (!parentName) {
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
name = `${parentName}.${name}`; // parent.0.radioName
|
|
41
|
+
control = control.parent;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return name;
|
|
45
|
+
}
|
|
46
|
+
ngOnInit() {
|
|
47
|
+
super.ngOnInit();
|
|
48
|
+
if (this.control.value || !this.value || isFalseBooleanInput(this.checked)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.writeValue(this.value);
|
|
52
|
+
return this.onChange(this.value);
|
|
53
|
+
}
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItRadioButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItRadioButtonComponent, isStandalone: true, selector: "it-radio-button[value]", inputs: { value: "value", inline: "inline", group: "group", checked: "checked" }, usesInheritance: true, ngImport: i0, template: "<ng-container>\n <div class=\"form-check\"\n [class.form-check-group]=\"isGroup\"\n [class.form-check-inline]=\"isInline\">\n\n <input\n [id]=\"id\"\n type=\"radio\"\n [value]=\"value\"\n class=\"form-check-input\"\n [name]=\"name\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [attr.aria-describedby]=\"id + '-help'\">\n\n <label class=\"form-check-label\" [for]=\"id\">\n <div #customLabel>\n <ng-content select=\"[label]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customLabel.hasChildNodes()\">{{label}}</ng-container>\n </label>\n\n <small *ngIf=\"isGroup\" [id]=\"id + '-help'\" class=\"form-text\">\n <ng-content></ng-content>\n </small>\n\n <div *ngIf=\"isInvalid && isGroup\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n\n </div>\n\n <div *ngIf=\"isInvalid && !isGroup\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n</ng-container>\n", styles: [""], 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.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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItRadioButtonComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{ standalone: true, selector: 'it-radio-button[value]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ReactiveFormsModule, NgIf, AsyncPipe], template: "<ng-container>\n <div class=\"form-check\"\n [class.form-check-group]=\"isGroup\"\n [class.form-check-inline]=\"isInline\">\n\n <input\n [id]=\"id\"\n type=\"radio\"\n [value]=\"value\"\n class=\"form-check-input\"\n [name]=\"name\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [attr.aria-describedby]=\"id + '-help'\">\n\n <label class=\"form-check-label\" [for]=\"id\">\n <div #customLabel>\n <ng-content select=\"[label]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customLabel.hasChildNodes()\">{{label}}</ng-container>\n </label>\n\n <small *ngIf=\"isGroup\" [id]=\"id + '-help'\" class=\"form-text\">\n <ng-content></ng-content>\n </small>\n\n <div *ngIf=\"isInvalid && isGroup\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n\n </div>\n\n <div *ngIf=\"isInvalid && !isGroup\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n</ng-container>\n" }]
|
|
60
|
+
}], propDecorators: { value: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], inline: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], group: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], checked: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}] } });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9yYWRpby1idXR0b24vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9yYWRpby1idXR0b24vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBZ0IsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFVbEQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHVCQUEyRDtJQVJ2Rzs7UUFlRTs7O1dBR0c7UUFDTSxXQUFNLEdBQWlCLEtBQUssQ0FBQztRQUV0Qzs7O1dBR0c7UUFDTSxVQUFLLEdBQWlCLEtBQUssQ0FBQztLQThDdEM7SUF2Q0MsSUFBSSxRQUFRO1FBQ1YsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUU5QyxvRkFBb0Y7WUFDcEYsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO1lBQzlDLE9BQU8sT0FBTyxFQUFFLE1BQU0sRUFBRTtnQkFDdEIsTUFBTSxRQUFRLEdBQTJCLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQztnQkFDekUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO2dCQUMxRixJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNmLE1BQU07aUJBQ1A7Z0JBQ0QsSUFBSSxHQUFHLEdBQUcsVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMscUJBQXFCO2dCQUNyRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUMxQjtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUUsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQTlEVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiwyTENkbkMsaThDQTJDQSx5REQvQlksbUJBQW1CLDZ4QkFBRSxJQUFJLHdGQUFFLFNBQVM7OzJGQUVuQyxzQkFBc0I7a0JBUmxDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7OEJBT3RDLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0QWJzdHJhY3RGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYWJzdHJhY3RzL2Fic3RyYWN0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgaXNGYWxzZUJvb2xlYW5JbnB1dCwgaXNUcnVlQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYm9vbGVhbi1pbnB1dCc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtcmFkaW8tYnV0dG9uW3ZhbHVlXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpby1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBOZ0lmLCBBc3luY1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEl0UmFkaW9CdXR0b25Db21wb25lbnQgZXh0ZW5kcyBJdEFic3RyYWN0Rm9ybUNvbXBvbmVudDxzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIFRoZSByYWRpbyB2YWx1ZVxuICAgKi9cbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIElmIHNob3cgcmFkaW8gaW5saW5lXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKSBpbmxpbmU6IEJvb2xlYW5JbnB1dCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJZiBpcyByYWRpbyBncm91cFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KCkgZ3JvdXA6IEJvb2xlYW5JbnB1dCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJZiBpcyByYWRpbyBpcyBjaGVja2VkXG4gICAqL1xuICBASW5wdXQoKSBjaGVja2VkOiBCb29sZWFuSW5wdXQgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0IGlzSW5saW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5pbmxpbmUpO1xuICB9XG5cbiAgZ2V0IGlzR3JvdXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLmdyb3VwKTtcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgbGV0IG5hbWUgPSAnJztcbiAgICBpZiAodGhpcy5fbmdDb250cm9sKSB7XG4gICAgICBuYW1lID0gdGhpcy5fbmdDb250cm9sLm5hbWU/LnRvU3RyaW5nKCkgfHwgJyc7XG5cbiAgICAgIC8vIFJldHJpZXZlIHBhcmVudCBuYW1lLCBwcmV2ZW50IGR1cGxpY2F0ZSBuYW1lIGluc2lkZSBGb3JtQXJyYXkgb3IgbmVzdGVkIEZvcm1Hcm91cFxuICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLl9uZ0NvbnRyb2wuY29udHJvbD8ucGFyZW50O1xuICAgICAgd2hpbGUgKGNvbnRyb2w/LnBhcmVudCkge1xuICAgICAgICBjb25zdCBjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IGNvbnRyb2w/LnBhcmVudD8uY29udHJvbHMgfHwge307XG4gICAgICAgIGNvbnN0IHBhcmVudE5hbWUgPSBPYmplY3Qua2V5cyhjb250cm9scykuZmluZChuYW1lID0+IGNvbnRyb2wgPT09IGNvbnRyb2xzW25hbWVdKSB8fCBudWxsO1xuICAgICAgICBpZiAoIXBhcmVudE5hbWUpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBuYW1lID0gYCR7cGFyZW50TmFtZX0uJHtuYW1lfWA7IC8vIHBhcmVudC4wLnJhZGlvTmFtZVxuICAgICAgICBjb250cm9sID0gY29udHJvbC5wYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSB8fCAhdGhpcy52YWx1ZSB8fCBpc0ZhbHNlQm9vbGVhbklucHV0KHRoaXMuY2hlY2tlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCJcbiAgICAgICBbY2xhc3MuZm9ybS1jaGVjay1ncm91cF09XCJpc0dyb3VwXCJcbiAgICAgICBbY2xhc3MuZm9ybS1jaGVjay1pbmxpbmVdPVwiaXNJbmxpbmVcIj5cblxuICAgIDxpbnB1dFxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaXNJbnZhbGlkXCJcbiAgICAgIFtjbGFzcy5pcy12YWxpZF09XCJpc1ZhbGlkXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWQgKyAnLWhlbHAnXCI+XG5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2Zvcl09XCJpZFwiPlxuICAgICAgPGRpdiAjY3VzdG9tTGFiZWw+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsYWJlbF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tTGFiZWwuaGFzQ2hpbGROb2RlcygpXCI+e3tsYWJlbH19PC9uZy1jb250YWluZXI+XG4gICAgPC9sYWJlbD5cblxuICAgIDxzbWFsbCAqbmdJZj1cImlzR3JvdXBcIiBbaWRdPVwiaWQgKyAnLWhlbHAnXCIgY2xhc3M9XCJmb3JtLXRleHRcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L3NtYWxsPlxuXG4gICAgPGRpdiAqbmdJZj1cImlzSW52YWxpZCAmJiBpc0dyb3VwXCIgY2xhc3M9XCJmb3JtLWZlZWRiYWNrIGp1c3QtdmFsaWRhdGUtZXJyb3ItbGFiZWxcIiBbaWRdPVwiaWQgKyAnLWVycm9yJ1wiPlxuICAgICAgPGRpdiAjY3VzdG9tRXJyb3I+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlcnJvcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tRXJyb3IuaGFzQ2hpbGROb2RlcygpXCI+e3tpbnZhbGlkTWVzc2FnZSB8IGFzeW5jfX08L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiaXNJbnZhbGlkICYmICFpc0dyb3VwXCIgY2xhc3M9XCJmb3JtLWZlZWRiYWNrIGp1c3QtdmFsaWRhdGUtZXJyb3ItbGFiZWxcIiBbaWRdPVwiaWQgKyAnLWVycm9yJ1wiPlxuICAgIDxkaXYgI2N1c3RvbUVycm9yPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Vycm9yXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbUVycm9yLmhhc0NoaWxkTm9kZXMoKVwiPnt7aW52YWxpZE1lc3NhZ2UgfCBhc3luY319PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
|
|
4
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { distinctUntilChanged, startWith } from 'rxjs';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/forms";
|
|
9
|
+
export class ItRangeComponent extends ItAbstractFormComponent {
|
|
10
|
+
ngOnInit() {
|
|
11
|
+
super.ngOnInit();
|
|
12
|
+
this.subscription = this.control.valueChanges.pipe(distinctUntilChanged(), startWith(undefined)).subscribe(() => this.updateSliderColor());
|
|
13
|
+
}
|
|
14
|
+
ngOnChanges(changes) {
|
|
15
|
+
if (changes['leftColor']) {
|
|
16
|
+
this.slider.nativeElement.style.setProperty('--range-left-color', this.leftColor ?? null);
|
|
17
|
+
}
|
|
18
|
+
if (changes['rightColor']) {
|
|
19
|
+
this.slider.nativeElement.style.setProperty('--range-right-color', this.rightColor ?? null);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
ngOnDestroy() {
|
|
23
|
+
this.subscription?.unsubscribe();
|
|
24
|
+
}
|
|
25
|
+
writeValue(value) {
|
|
26
|
+
super.writeValue(value);
|
|
27
|
+
this.updateSliderColor();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Update the percentage of slider color
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
updateSliderColor() {
|
|
34
|
+
if (!this.leftColor || !this.rightColor) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const max = Number(this.slider.nativeElement.max) || 100;
|
|
38
|
+
const min = Number(this.slider.nativeElement.min) || 0;
|
|
39
|
+
// Calculate visible width
|
|
40
|
+
const diff = max - min;
|
|
41
|
+
const val = (((this.control.value ?? (diff / 2)) - min) * 100) / diff;
|
|
42
|
+
this.slider.nativeElement.style.setProperty('--range-percentage', `${val}%`);
|
|
43
|
+
}
|
|
44
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItRangeComponent, isStandalone: true, selector: "it-range", inputs: { max: "max", min: "min", step: "step", leftColor: "leftColor", rightColor: "rightColor" }, viewQueries: [{ propertyName: "slider", first: true, predicate: ["slider"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"d-flex justify-content-between align-items-center\">\n <label *ngIf=\"label\" [for]=\"id\" class=\"form-label\">{{label}}</label>\n <ng-content></ng-content>\n</div>\n\n<input #slider\n [id]=\"id\"\n type=\"range\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n class=\"form-range\"\n [class.double-color]=\"!!leftColor && !!rightColor\"\n [formControl]=\"control\">\n", styles: [".form-range.double-color::-webkit-slider-runnable-track{background:linear-gradient(to right,var(--range-left-color) var(--range-percentage),var(--range-right-color) var(--range-percentage))}.form-range.double-color::-moz-range-track{background:linear-gradient(to right,var(--range-left-color) var(--range-percentage),var(--range-right-color) var(--range-percentage))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
46
|
+
}
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItRangeComponent, decorators: [{
|
|
48
|
+
type: Component,
|
|
49
|
+
args: [{ selector: 'it-range', standalone: true, imports: [CommonModule, ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"d-flex justify-content-between align-items-center\">\n <label *ngIf=\"label\" [for]=\"id\" class=\"form-label\">{{label}}</label>\n <ng-content></ng-content>\n</div>\n\n<input #slider\n [id]=\"id\"\n type=\"range\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n class=\"form-range\"\n [class.double-color]=\"!!leftColor && !!rightColor\"\n [formControl]=\"control\">\n", styles: [".form-range.double-color::-webkit-slider-runnable-track{background:linear-gradient(to right,var(--range-left-color) var(--range-percentage),var(--range-right-color) var(--range-percentage))}.form-range.double-color::-moz-range-track{background:linear-gradient(to right,var(--range-left-color) var(--range-percentage),var(--range-right-color) var(--range-percentage))}\n"] }]
|
|
50
|
+
}], propDecorators: { max: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], min: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], step: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], leftColor: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], rightColor: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], slider: [{
|
|
61
|
+
type: ViewChild,
|
|
62
|
+
args: ['slider', { static: true }]
|
|
63
|
+
}] } });
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3JhbmdlL3JhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9yYW5nZS9yYW5nZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxLQUFLLEVBS0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQzs7OztBQVVyRSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsdUJBQWtEO0lBbUM3RSxRQUFRO1FBQ2YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNoRCxvQkFBb0IsRUFBRSxFQUN0QixTQUFTLENBQUMsU0FBUyxDQUFDLENBQ3JCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVRLFdBQVcsQ0FBQyxPQUFzQjtRQUN6QyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUM7U0FDM0Y7UUFDRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUM7U0FDN0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVRLFVBQVUsQ0FBQyxLQUFnQztRQUNsRCxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLE9BQU87U0FDUjtRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDekQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2RCwwQkFBMEI7UUFDMUIsTUFBTSxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUN2QixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMvRSxDQUFDOzhHQTdFVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQixvVUN4QjdCLHNiQWNBLDBhREtZLFlBQVksa0lBQUUsbUJBQW1COzsyRkFLaEMsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUMsbUJBRzNCLHVCQUF1QixDQUFDLE1BQU07OEJBT3RDLEdBQUc7c0JBQVgsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csVUFBVTtzQkFBbEIsS0FBSztnQkFFaUMsTUFBTTtzQkFBNUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJdEFic3RyYWN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN0YXJ0V2l0aCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0LXJhbmdlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhbmdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEl0UmFuZ2VDb21wb25lbnQgZXh0ZW5kcyBJdEFic3RyYWN0Rm9ybUNvbXBvbmVudDxudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4IHZhbHVlXG4gICAqL1xuICBASW5wdXQoKSBtYXg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW4gdmFsdWVcbiAgICovXG4gIEBJbnB1dCgpIG1pbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0ZXAgdmFsdWVcbiAgICovXG4gIEBJbnB1dCgpIHN0ZXA/OiBudW1iZXIgfCAnYW55JztcblxuICAvKipcbiAgICogVGhlIGNvbG9yIG9uIGxlZnQgb2YgdGh1bWIgW1JlcXVpcmUgcmlnaHRDb2xvcl1cbiAgICogQGV4YW1wbGUgJyMwZDZlZmQnIG9yICd2YXIoLS1icy1wcmltYXJ5KSdcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkICgndmFyKC0tYnMtZ3JheS0zMDApJylcbiAgICovXG4gIEBJbnB1dCgpIGxlZnRDb2xvcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbG9yIG9uIHJpZ2h0IG9mIHRodW1iIFtSZXF1aXJlIGxlZnRDb2xvcl1cbiAgICogQGV4YW1wbGUgJyMwZDZlZmQnIG9yICd2YXIoLS1icy1wcmltYXJ5KSdcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkICgndmFyKC0tYnMtZ3JheS0zMDApJylcbiAgICovXG4gIEBJbnB1dCgpIHJpZ2h0Q29sb3I/OiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnc2xpZGVyJywgeyBzdGF0aWM6IHRydWUgfSkgc2xpZGVyITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVTbGlkZXJDb2xvcigpKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snbGVmdENvbG9yJ10pIHtcbiAgICAgIHRoaXMuc2xpZGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcmFuZ2UtbGVmdC1jb2xvcicsIHRoaXMubGVmdENvbG9yID8/IG51bGwpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sncmlnaHRDb2xvciddKSB7XG4gICAgICB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXJhbmdlLXJpZ2h0LWNvbG9yJywgdGhpcy5yaWdodENvbG9yID8/IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlU2xpZGVyQ29sb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHBlcmNlbnRhZ2Ugb2Ygc2xpZGVyIGNvbG9yXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVNsaWRlckNvbG9yKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5sZWZ0Q29sb3IgfHwgIXRoaXMucmlnaHRDb2xvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1heCA9IE51bWJlcih0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50Lm1heCkgfHwgMTAwO1xuICAgIGNvbnN0IG1pbiA9IE51bWJlcih0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50Lm1pbikgfHwgMDtcblxuICAgIC8vIENhbGN1bGF0ZSB2aXNpYmxlIHdpZHRoXG4gICAgY29uc3QgZGlmZiA9IG1heCAtIG1pbjtcbiAgICBjb25zdCB2YWwgPSAoKCh0aGlzLmNvbnRyb2wudmFsdWUgPz8gKGRpZmYgLyAyKSkgLSBtaW4pICogMTAwKSAvIGRpZmY7XG4gICAgdGhpcy5zbGlkZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYW5nZS1wZXJjZW50YWdlJywgYCR7dmFsfSVgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3tsYWJlbH19PC9sYWJlbD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxpbnB1dCAjc2xpZGVyXG4gICAgICAgW2lkXT1cImlkXCJcbiAgICAgICB0eXBlPVwicmFuZ2VcIlxuICAgICAgIFttaW5dPVwibWluXCJcbiAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgW3N0ZXBdPVwic3RlcFwiXG4gICAgICAgY2xhc3M9XCJmb3JtLXJhbmdlXCJcbiAgICAgICBbY2xhc3MuZG91YmxlLWNvbG9yXT1cIiEhbGVmdENvbG9yICYmICEhcmlnaHRDb2xvclwiXG4gICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIj5cbiJdfQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
|
|
3
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
import { NgForOf } from '@angular/common';
|
|
5
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
6
|
+
import { ItIconComponent } from '../../utils/icon/icon.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@ngx-translate/core";
|
|
9
|
+
import * as i2 from "@angular/forms";
|
|
10
|
+
export class ItRatingComponent extends ItAbstractFormComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
/**
|
|
14
|
+
* Number of stars to show
|
|
15
|
+
* @default 5
|
|
16
|
+
*/
|
|
17
|
+
this.starCount = 5;
|
|
18
|
+
this.stars = this.generateStars();
|
|
19
|
+
}
|
|
20
|
+
ngOnChanges(changes) {
|
|
21
|
+
super.ngOnChanges(changes);
|
|
22
|
+
if (changes['starCount'] || !this.stars.length) {
|
|
23
|
+
this.stars = this.generateStars();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
super.ngOnInit();
|
|
28
|
+
if (!this.control.value && !!this.value) {
|
|
29
|
+
this.writeValue(this.value);
|
|
30
|
+
this.onChange(this.value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generate the array of stars
|
|
35
|
+
* @private
|
|
36
|
+
*/
|
|
37
|
+
generateStars() {
|
|
38
|
+
return Array.from({ length: this.starCount }, (_, i) => i + 1).reverse();
|
|
39
|
+
}
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItRatingComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
41
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItRatingComponent, isStandalone: true, selector: "it-rating", inputs: { value: "value", starCount: "starCount" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fieldset class=\"rating\"\n [class.rating-label]=\"!!label\"\n [class.rating-read-only]=\"control.disabled\">\n <legend>\n <span>{{label}}</span>\n <span class=\"visually-hidden\">\n {{'it.core.rating-star'|translate : { current: control.value || 0, total: stars.length } }}\n </span>\n </legend>\n\n <ng-container *ngFor=\"let starValue of stars\">\n <input [id]=\"id + '-' + starValue\"\n type=\"radio\"\n [name]=\"id\"\n [value]=\"starValue\"\n [attr.aria-hidden]=\"control.disabled\"\n [formControl]=\"control\" />\n\n <label class=\"full\" [for]=\"id + '-' + starValue\">\n <it-icon name=\"star-full\" size=\"sm\"></it-icon>\n <span class=\"visually-hidden\">\n {{'it.core.rate-star'|translate : { current: starValue, total: stars.length } }}\n </span>\n </label>\n </ng-container>\n\n</fieldset>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ItIconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItRatingComponent, decorators: [{
|
|
44
|
+
type: Component,
|
|
45
|
+
args: [{ standalone: true, selector: 'it-rating', changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, NgForOf, ReactiveFormsModule, ItIconComponent], template: "<fieldset class=\"rating\"\n [class.rating-label]=\"!!label\"\n [class.rating-read-only]=\"control.disabled\">\n <legend>\n <span>{{label}}</span>\n <span class=\"visually-hidden\">\n {{'it.core.rating-star'|translate : { current: control.value || 0, total: stars.length } }}\n </span>\n </legend>\n\n <ng-container *ngFor=\"let starValue of stars\">\n <input [id]=\"id + '-' + starValue\"\n type=\"radio\"\n [name]=\"id\"\n [value]=\"starValue\"\n [attr.aria-hidden]=\"control.disabled\"\n [formControl]=\"control\" />\n\n <label class=\"full\" [for]=\"id + '-' + starValue\">\n <it-icon name=\"star-full\" size=\"sm\"></it-icon>\n <span class=\"visually-hidden\">\n {{'it.core.rate-star'|translate : { current: starValue, total: stars.length } }}\n </span>\n </label>\n </ng-container>\n\n</fieldset>\n" }]
|
|
46
|
+
}], propDecorators: { value: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], starCount: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}] } });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9yYXRpbmcvcmF0aW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9yYXRpbmcvcmF0aW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQVNsRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsdUJBQWtEO0lBUHpGOztRQWNFOzs7V0FHRztRQUNNLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFFckIsVUFBSyxHQUFrQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7S0EwQnZEO0lBeEJVLFdBQVcsQ0FBQyxPQUFzQjtRQUN6QyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTNCLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssYUFBYTtRQUNuQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNFLENBQUM7OEdBdENVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHFLQ2Q5Qiw2NUJBMkJBLDJDRGZZLGVBQWUsNEZBQUUsT0FBTyxrSEFBRSxtQkFBbUIsNnhCQUFFLGVBQWU7OzJGQUU3RCxpQkFBaUI7a0JBUDdCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFdBQVcsbUJBRUosdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxDQUFDOzhCQU9oRSxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSXRBYnN0cmFjdEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9hYnN0cmFjdHMvYWJzdHJhY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvck9mIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi91dGlscy9pY29uL2ljb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtcmF0aW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhdGluZy5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBOZ0Zvck9mLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJdEljb25Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEl0UmF0aW5nQ29tcG9uZW50IGV4dGVuZHMgSXRBYnN0cmFjdEZvcm1Db21wb25lbnQ8bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgLyoqXG4gICAqIFRoZSByYXRpbmcgdmFsdWVcbiAgICovXG4gIEBJbnB1dCgpIHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBzdGFycyB0byBzaG93XG4gICAqIEBkZWZhdWx0IDVcbiAgICovXG4gIEBJbnB1dCgpIHN0YXJDb3VudDogbnVtYmVyID0gNTtcblxuICBwcm90ZWN0ZWQgc3RhcnM6IEFycmF5PG51bWJlcj4gPSB0aGlzLmdlbmVyYXRlU3RhcnMoKTtcblxuICBvdmVycmlkZSBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG5cbiAgICBpZiAoY2hhbmdlc1snc3RhckNvdW50J10gfHwgIXRoaXMuc3RhcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnN0YXJzID0gdGhpcy5nZW5lcmF0ZVN0YXJzKCk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIGlmICghdGhpcy5jb250cm9sLnZhbHVlICYmICEhdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdGhlIGFycmF5IG9mIHN0YXJzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlU3RhcnMoKTogQXJyYXk8bnVtYmVyPiB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuc3RhckNvdW50IH0sIChfLCBpKSA9PiBpICsgMSkucmV2ZXJzZSgpO1xuICB9XG59XG4iLCI8ZmllbGRzZXQgY2xhc3M9XCJyYXRpbmdcIlxuICAgICAgICAgIFtjbGFzcy5yYXRpbmctbGFiZWxdPVwiISFsYWJlbFwiXG4gICAgICAgICAgW2NsYXNzLnJhdGluZy1yZWFkLW9ubHldPVwiY29udHJvbC5kaXNhYmxlZFwiPlxuICA8bGVnZW5kPlxuICAgIDxzcGFuPnt7bGFiZWx9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICB7eydpdC5jb3JlLnJhdGluZy1zdGFyJ3x0cmFuc2xhdGUgOiB7IGN1cnJlbnQ6IGNvbnRyb2wudmFsdWUgfHwgMCwgdG90YWw6IHN0YXJzLmxlbmd0aCB9IH19XG4gICAgPC9zcGFuPlxuICA8L2xlZ2VuZD5cblxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGFyVmFsdWUgb2Ygc3RhcnNcIj5cbiAgICA8aW5wdXQgW2lkXT1cImlkICsgJy0nICsgc3RhclZhbHVlXCJcbiAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgW25hbWVdPVwiaWRcIlxuICAgICAgICAgICBbdmFsdWVdPVwic3RhclZhbHVlXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiY29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgLz5cblxuICAgIDxsYWJlbCBjbGFzcz1cImZ1bGxcIiBbZm9yXT1cImlkICsgJy0nICsgc3RhclZhbHVlXCI+XG4gICAgICA8aXQtaWNvbiBuYW1lPVwic3Rhci1mdWxsXCIgc2l6ZT1cInNtXCI+PC9pdC1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAge3snaXQuY29yZS5yYXRlLXN0YXInfHRyYW5zbGF0ZSA6IHsgY3VycmVudDogc3RhclZhbHVlLCB0b3RhbDogc3RhcnMubGVuZ3RoIH0gfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L25nLWNvbnRhaW5lcj5cblxuPC9maWVsZHNldD5cbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
|
|
3
|
+
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
|
|
4
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
export class ItSelectComponent extends ItAbstractFormComponent {
|
|
8
|
+
ngOnInit() {
|
|
9
|
+
super.ngOnInit();
|
|
10
|
+
if (this.control.value) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const selectedOption = this.options?.find(this.optionIsSelected);
|
|
14
|
+
if (selectedOption) {
|
|
15
|
+
this.writeValue(selectedOption.value);
|
|
16
|
+
if (this._ngControl?.control && selectedOption.value !== this._ngControl.control.value) {
|
|
17
|
+
this.onChange(selectedOption.value);
|
|
18
|
+
}
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const selectedGroupOption = this.groups?.flatMap(g => g.options).find(this.optionIsSelected);
|
|
22
|
+
if (selectedGroupOption) {
|
|
23
|
+
this.writeValue(selectedGroupOption.value);
|
|
24
|
+
if (this._ngControl?.control && selectedGroupOption.value !== this._ngControl.control.value) {
|
|
25
|
+
this.onChange(selectedGroupOption.value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check if the option is selected
|
|
31
|
+
* @param option the option
|
|
32
|
+
*/
|
|
33
|
+
optionIsSelected(option) {
|
|
34
|
+
if (option.selected === true) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
if (typeof option.selected === 'function') {
|
|
38
|
+
return option.selected(this.control.value);
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Check if the option is disabled
|
|
44
|
+
* @param option the option
|
|
45
|
+
*/
|
|
46
|
+
optionIsDisabled(option) {
|
|
47
|
+
if (option.disabled === true) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (typeof option.disabled === 'function') {
|
|
51
|
+
return option.disabled(this.control.value);
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItSelectComponent, isStandalone: true, selector: "it-select", inputs: { options: "options", groups: "groups", description: "description", defaultOption: "defaultOption" }, usesInheritance: true, ngImport: i0, template: "<div class=\"select-wrapper\">\n <label *ngIf=\"label\" [for]=\"id\">{{label}}</label>\n <select [id]=\"id\" [formControl]=\"control\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n (blur)=\"markAsTouched()\"\n [attr.aria-describedby]=\"id + '-description'\">\n\n <option *ngIf=\"defaultOption\" [value]=\"null\" disabled selected>\n {{defaultOption}}\n </option>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"options\">\n <option *ngFor=\"let option of options\" [disabled]=\"optionIsDisabled(option)\" [value]=\"option.value\">\n {{option.text ?? option.value}}\n </option>\n </ng-container>\n\n <ng-container *ngIf=\"groups\">\n <optgroup *ngFor=\"let group of groups\" [label]=\"group.label\">\n <option *ngFor=\"let option of group.options\" [disabled]=\"optionIsDisabled(option)\" [value]=\"option.value\">\n {{option.text ?? option.value}}\n </option>\n </optgroup>\n </ng-container>\n </select>\n <small *ngIf=\"description\" [id]=\"id + '-description'\" class=\"form-text\">{{description}}</small>\n\n <div *ngIf=\"isInvalid\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n</div>\n", styles: [".select-wrapper{margin-bottom:1.7rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
57
|
+
}
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItSelectComponent, decorators: [{
|
|
59
|
+
type: Component,
|
|
60
|
+
args: [{ standalone: true, selector: 'it-select', imports: [NgIf, NgForOf, ReactiveFormsModule, AsyncPipe], template: "<div class=\"select-wrapper\">\n <label *ngIf=\"label\" [for]=\"id\">{{label}}</label>\n <select [id]=\"id\" [formControl]=\"control\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n (blur)=\"markAsTouched()\"\n [attr.aria-describedby]=\"id + '-description'\">\n\n <option *ngIf=\"defaultOption\" [value]=\"null\" disabled selected>\n {{defaultOption}}\n </option>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"options\">\n <option *ngFor=\"let option of options\" [disabled]=\"optionIsDisabled(option)\" [value]=\"option.value\">\n {{option.text ?? option.value}}\n </option>\n </ng-container>\n\n <ng-container *ngIf=\"groups\">\n <optgroup *ngFor=\"let group of groups\" [label]=\"group.label\">\n <option *ngFor=\"let option of group.options\" [disabled]=\"optionIsDisabled(option)\" [value]=\"option.value\">\n {{option.text ?? option.value}}\n </option>\n </optgroup>\n </ng-container>\n </select>\n <small *ngIf=\"description\" [id]=\"id + '-description'\" class=\"form-text\">{{description}}</small>\n\n <div *ngIf=\"isInvalid\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n</div>\n", styles: [".select-wrapper{margin-bottom:1.7rem}\n"] }]
|
|
61
|
+
}], propDecorators: { options: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], groups: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], description: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], defaultOption: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}] } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFTckQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHVCQUF1QjtJQXVCbkQsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ3RCLE9BQU87U0FDUjtRQUNELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pFLElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLElBQUksY0FBYyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsT0FBTztTQUNSO1FBRUQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0YsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLElBQUksbUJBQW1CLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDM0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQztTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLE1BQTJCO1FBQzFDLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksT0FBTyxNQUFNLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRTtZQUN6QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLE1BQTJCO1FBQzFDLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksT0FBTyxNQUFNLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRTtZQUN6QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0E3RVUsaUJBQWlCO2tHQUFqQixpQkFBaUIsME1DYjlCLDI3Q0FxQ0EsaUdEMUJZLElBQUksNkZBQUUsT0FBTyxrSEFBRSxtQkFBbUIsZ3RCQUFFLFNBQVM7OzJGQUU1QyxpQkFBaUI7a0JBUDdCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFdBQVcsV0FHWixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxDQUFDOzhCQU8vQyxPQUFPO3NCQUFmLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSXRBYnN0cmFjdEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9hYnN0cmFjdHMvYWJzdHJhY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0Q29udHJvbEdyb3VwLCBTZWxlY3RDb250cm9sT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9mb3JtJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtOZ0lmLCBOZ0Zvck9mLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBBc3luY1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEl0U2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgSXRBYnN0cmFjdEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0IG9wdGlvbnNcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbnM6IEFycmF5PFNlbGVjdENvbnRyb2xPcHRpb24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0IGdyb3VwIG9wdGlvbnNcbiAgICovXG4gIEBJbnB1dCgpIGdyb3VwczogQXJyYXk8U2VsZWN0Q29udHJvbEdyb3VwPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHNlbGVjdCBkZXNjcmlwdGlvblxuICAgKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHNldCwgYWRkIGEgYGRpc2FibGVkIHNlbGVjdGVkYCBvcHRpb24gd2l0aCB2YWx1ZSBgbnVsbGAgYW5kIGFzIHRleHQgdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAgICogQGV4YW1wbGUgJ1NlbGVjdCBhbiBvcHRpb24nXG4gICAqL1xuICBASW5wdXQoKSBkZWZhdWx0T3B0aW9uPzogc3RyaW5nO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICBpZiAodGhpcy5jb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gdGhpcy5vcHRpb25zPy5maW5kKHRoaXMub3B0aW9uSXNTZWxlY3RlZCk7XG4gICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUoc2VsZWN0ZWRPcHRpb24udmFsdWUpO1xuICAgICAgaWYgKHRoaXMuX25nQ29udHJvbD8uY29udHJvbCAmJiBzZWxlY3RlZE9wdGlvbi52YWx1ZSAhPT0gdGhpcy5fbmdDb250cm9sLmNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShzZWxlY3RlZE9wdGlvbi52YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cE9wdGlvbiA9IHRoaXMuZ3JvdXBzPy5mbGF0TWFwKGcgPT4gZy5vcHRpb25zKS5maW5kKHRoaXMub3B0aW9uSXNTZWxlY3RlZCk7XG4gICAgaWYgKHNlbGVjdGVkR3JvdXBPcHRpb24pIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShzZWxlY3RlZEdyb3VwT3B0aW9uLnZhbHVlKTtcbiAgICAgIGlmICh0aGlzLl9uZ0NvbnRyb2w/LmNvbnRyb2wgJiYgc2VsZWN0ZWRHcm91cE9wdGlvbi52YWx1ZSAhPT0gdGhpcy5fbmdDb250cm9sLmNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShzZWxlY3RlZEdyb3VwT3B0aW9uLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZFxuICAgKiBAcGFyYW0gb3B0aW9uIHRoZSBvcHRpb25cbiAgICovXG4gIG9wdGlvbklzU2VsZWN0ZWQob3B0aW9uOiBTZWxlY3RDb250cm9sT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKG9wdGlvbi5zZWxlY3RlZCA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb24uc2VsZWN0ZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBvcHRpb24uc2VsZWN0ZWQodGhpcy5jb250cm9sLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIG9wdGlvbiBpcyBkaXNhYmxlZFxuICAgKiBAcGFyYW0gb3B0aW9uIHRoZSBvcHRpb25cbiAgICovXG4gIG9wdGlvbklzRGlzYWJsZWQob3B0aW9uOiBTZWxlY3RDb250cm9sT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKG9wdGlvbi5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb24uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBvcHRpb24uZGlzYWJsZWQodGhpcy5jb250cm9sLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxuICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIFtmb3JdPVwiaWRcIj57e2xhYmVsfX08L2xhYmVsPlxuICA8c2VsZWN0IFtpZF09XCJpZFwiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJpc0ludmFsaWRcIlxuICAgICAgICAgIFtjbGFzcy5pcy12YWxpZF09XCJpc1ZhbGlkXCJcbiAgICAgICAgICAoYmx1cik9XCJtYXJrQXNUb3VjaGVkKClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWQgKyAnLWRlc2NyaXB0aW9uJ1wiPlxuXG4gICAgPG9wdGlvbiAqbmdJZj1cImRlZmF1bHRPcHRpb25cIiBbdmFsdWVdPVwibnVsbFwiIGRpc2FibGVkIHNlbGVjdGVkPlxuICAgICAge3tkZWZhdWx0T3B0aW9ufX1cbiAgICA8L29wdGlvbj5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zXCI+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFtkaXNhYmxlZF09XCJvcHRpb25Jc0Rpc2FibGVkKG9wdGlvbilcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgIHt7b3B0aW9uLnRleHQgPz8gb3B0aW9uLnZhbHVlfX1cbiAgICAgIDwvb3B0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3Vwc1wiPlxuICAgICAgPG9wdGdyb3VwICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHNcIiBbbGFiZWxdPVwiZ3JvdXAubGFiZWxcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGdyb3VwLm9wdGlvbnNcIiBbZGlzYWJsZWRdPVwib3B0aW9uSXNEaXNhYmxlZChvcHRpb24pXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgIHt7b3B0aW9uLnRleHQgPz8gb3B0aW9uLnZhbHVlfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L29wdGdyb3VwPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3NlbGVjdD5cbiAgPHNtYWxsICpuZ0lmPVwiZGVzY3JpcHRpb25cIiBbaWRdPVwiaWQgKyAnLWRlc2NyaXB0aW9uJ1wiIGNsYXNzPVwiZm9ybS10ZXh0XCI+e3tkZXNjcmlwdGlvbn19PC9zbWFsbD5cblxuICA8ZGl2ICpuZ0lmPVwiaXNJbnZhbGlkXCIgY2xhc3M9XCJmb3JtLWZlZWRiYWNrIGp1c3QtdmFsaWRhdGUtZXJyb3ItbGFiZWxcIiBbaWRdPVwiaWQgKyAnLWVycm9yJ1wiPlxuICAgIDxkaXYgI2N1c3RvbUVycm9yPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Vycm9yXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbUVycm9yLmhhc0NoaWxkTm9kZXMoKVwiPnt7aW52YWxpZE1lc3NhZ2UgfCBhc3luY319PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
|
|
3
|
+
import { AsyncPipe, NgIf } from '@angular/common';
|
|
4
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
export class ItTextareaComponent extends ItAbstractFormComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
/**
|
|
11
|
+
* Textarea Rows
|
|
12
|
+
* @default 3
|
|
13
|
+
*/
|
|
14
|
+
this.rows = 3;
|
|
15
|
+
/**
|
|
16
|
+
* The textarea placeholder
|
|
17
|
+
*/
|
|
18
|
+
this.placeholder = '';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Return the invalid message string from TranslateService
|
|
22
|
+
*/
|
|
23
|
+
get invalidMessage() {
|
|
24
|
+
if (this.hasError('maxlength')) {
|
|
25
|
+
const error = this.getError('maxlength');
|
|
26
|
+
return this._translateService.get('it.errors.max-length-invalid', { max: error.requiredLength });
|
|
27
|
+
}
|
|
28
|
+
if (this.hasError('pattern')) {
|
|
29
|
+
const error = this.getError('pattern');
|
|
30
|
+
return this._translateService.get('it.errors.pattern-invalid', { pattern: error.requiredPattern });
|
|
31
|
+
}
|
|
32
|
+
return super.invalidMessage;
|
|
33
|
+
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItTextareaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItTextareaComponent, isStandalone: true, selector: "it-textarea", inputs: { rows: "rows", placeholder: "placeholder", description: "description" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"!!control.value || !!placeholder\">{{label}}</label>\n <textarea\n [id]=\"id\"\n [rows]=\"rows\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n (blur)=\"markAsTouched()\"></textarea>\n\n <small *ngIf=\"description\" [id]=\"id + '-description'\" class=\"form-text\">{{description}}</small>\n <div *ngIf=\"isInvalid\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError><ng-content select=\"[error]\"></ng-content></div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n</div>\n", styles: ["textarea.is-invalid{border-color:#cc334d}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItTextareaComponent, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{ standalone: true, selector: 'it-textarea', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIf, ReactiveFormsModule, AsyncPipe], template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"!!control.value || !!placeholder\">{{label}}</label>\n <textarea\n [id]=\"id\"\n [rows]=\"rows\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n (blur)=\"markAsTouched()\"></textarea>\n\n <small *ngIf=\"description\" [id]=\"id + '-description'\" class=\"form-text\">{{description}}</small>\n <div *ngIf=\"isInvalid\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError><ng-content select=\"[error]\"></ng-content></div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n</div>\n", styles: ["textarea.is-invalid{border-color:#cc334d}\n"] }]
|
|
40
|
+
}], propDecorators: { rows: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], placeholder: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], description: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}] } });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVyRixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFVckQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHVCQUFrRDtJQVIzRjs7UUFVRTs7O1dBR0c7UUFDTSxTQUFJLEdBQVksQ0FBQyxDQUFDO1FBRTNCOztXQUVHO1FBQ00sZ0JBQVcsR0FBVyxFQUFFLENBQUM7S0FzQm5DO0lBZkM7O09BRUc7SUFDSCxJQUFhLGNBQWM7UUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQ2xHO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1NBQ3BHO1FBRUQsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDO0lBQzlCLENBQUM7OEdBaENVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGdMQ2RoQyxxd0JBaUJBLHFHRExZLElBQUksNEZBQUUsbUJBQW1CLHFrQkFBRSxTQUFTOzsyRkFFbkMsbUJBQW1CO2tCQVIvQixTQUFTO2lDQUNJLElBQUksWUFDTixhQUFhLG1CQUdOLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxDQUFDOzhCQVF0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0QWJzdHJhY3RGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYWJzdHJhY3RzL2Fic3RyYWN0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC10ZXh0YXJlYScsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHRhcmVhLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTmdJZiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQXN5bmNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBJdFRleHRhcmVhQ29tcG9uZW50IGV4dGVuZHMgSXRBYnN0cmFjdEZvcm1Db21wb25lbnQ8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4ge1xuXG4gIC8qKlxuICAgKiBUZXh0YXJlYSBSb3dzXG4gICAqIEBkZWZhdWx0IDNcbiAgICovXG4gIEBJbnB1dCgpIHJvd3M/OiBudW1iZXIgPSAzO1xuXG4gIC8qKlxuICAgKiBUaGUgdGV4dGFyZWEgcGxhY2Vob2xkZXJcbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogVGhlIGlucHV0IGRlc2NyaXB0aW9uXG4gICAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGludmFsaWQgbWVzc2FnZSBzdHJpbmcgZnJvbSBUcmFuc2xhdGVTZXJ2aWNlXG4gICAqL1xuICBvdmVycmlkZSBnZXQgaW52YWxpZE1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBpZiAodGhpcy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5nZXRFcnJvcignbWF4bGVuZ3RoJyk7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5tYXgtbGVuZ3RoLWludmFsaWQnLCB7IG1heDogZXJyb3IucmVxdWlyZWRMZW5ndGggfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdwYXR0ZXJuJykpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5nZXRFcnJvcigncGF0dGVybicpO1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMucGF0dGVybi1pbnZhbGlkJywgeyBwYXR0ZXJuOiBlcnJvci5yZXF1aXJlZFBhdHRlcm4gfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmludmFsaWRNZXNzYWdlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIFtmb3JdPVwiaWRcIiBbY2xhc3MuYWN0aXZlXT1cIiEhY29udHJvbC52YWx1ZSB8fCAhIXBsYWNlaG9sZGVyXCI+e3tsYWJlbH19PC9sYWJlbD5cbiAgPHRleHRhcmVhXG4gICAgW2lkXT1cImlkXCJcbiAgICBbcm93c109XCJyb3dzXCJcbiAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJpc0ludmFsaWRcIlxuICAgIFtjbGFzcy5pcy12YWxpZF09XCJpc1ZhbGlkXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAoYmx1cik9XCJtYXJrQXNUb3VjaGVkKClcIj48L3RleHRhcmVhPlxuXG4gIDxzbWFsbCAqbmdJZj1cImRlc2NyaXB0aW9uXCIgW2lkXT1cImlkICsgJy1kZXNjcmlwdGlvbidcIiBjbGFzcz1cImZvcm0tdGV4dFwiPnt7ZGVzY3JpcHRpb259fTwvc21hbGw+XG4gIDxkaXYgKm5nSWY9XCJpc0ludmFsaWRcIiBjbGFzcz1cImZvcm0tZmVlZGJhY2sganVzdC12YWxpZGF0ZS1lcnJvci1sYWJlbFwiIFtpZF09XCJpZCArICctZXJyb3InXCI+XG4gICAgPGRpdiAjY3VzdG9tRXJyb3I+PG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Vycm9yXVwiPjwvbmctY29udGVudD48L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbUVycm9yLmhhc0NoaWxkTm9kZXMoKVwiPnt7aW52YWxpZE1lc3NhZ2UgfCBhc3luY319PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|