@impartner/design-components 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +11 -0
- package/README.md +22 -0
- package/constants/fontawesome-icons.d.ts +6 -0
- package/constants/index.d.ts +1 -0
- package/esm2020/constants/fontawesome-icons.mjs +3012 -0
- package/esm2020/constants/index.mjs +2 -0
- package/esm2020/impartner-design-components.mjs +5 -0
- package/esm2020/lib/alert/alert.component.mjs +57 -0
- package/esm2020/lib/alert/alert.module.mjs +18 -0
- package/esm2020/lib/alert/index.mjs +4 -0
- package/esm2020/lib/alert/theme/alert-theme.mjs +2 -0
- package/esm2020/lib/alert/theme/index.mjs +2 -0
- package/esm2020/lib/avatar/avatar.component.mjs +47 -0
- package/esm2020/lib/avatar/avatar.module.mjs +18 -0
- package/esm2020/lib/avatar/index.mjs +3 -0
- package/esm2020/lib/avatar-group/avatar-group.component.mjs +16 -0
- package/esm2020/lib/avatar-group/avatar-group.module.mjs +19 -0
- package/esm2020/lib/avatar-group/index.mjs +3 -0
- package/esm2020/lib/backdrop/backdrop.component.mjs +34 -0
- package/esm2020/lib/backdrop/backdrop.module.mjs +19 -0
- package/esm2020/lib/backdrop/index.mjs +3 -0
- package/esm2020/lib/badge/badge.component.mjs +98 -0
- package/esm2020/lib/badge/badge.module.mjs +19 -0
- package/esm2020/lib/badge/index.mjs +4 -0
- package/esm2020/lib/badge/types/badge-icon.mjs +2 -0
- package/esm2020/lib/badge/types/badge-size.mjs +7 -0
- package/esm2020/lib/badge/types/index.mjs +2 -0
- package/esm2020/lib/branding/branded.directive.mjs +19 -0
- package/esm2020/lib/branding/branding.module.mjs +19 -0
- package/esm2020/lib/branding/index.mjs +3 -0
- package/esm2020/lib/breadcrumb/breadcrumb-item.component.mjs +25 -0
- package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +33 -0
- package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +19 -0
- package/esm2020/lib/breadcrumb/index.mjs +4 -0
- package/esm2020/lib/button/button.component.mjs +116 -0
- package/esm2020/lib/button/button.module.mjs +21 -0
- package/esm2020/lib/button/index.mjs +4 -0
- package/esm2020/lib/button/themes/button-theme.mjs +2 -0
- package/esm2020/lib/button/themes/index.mjs +2 -0
- package/esm2020/lib/button-group/button-group.component.mjs +52 -0
- package/esm2020/lib/button-group/button-group.module.mjs +20 -0
- package/esm2020/lib/button-group/index.mjs +3 -0
- package/esm2020/lib/card-heading/card-heading.component.mjs +30 -0
- package/esm2020/lib/card-heading/card-heading.module.mjs +19 -0
- package/esm2020/lib/card-heading/index.mjs +3 -0
- package/esm2020/lib/design-components.module.mjs +119 -0
- package/esm2020/lib/dropdown/components/dropdown-item/dropdown-item.component.mjs +22 -0
- package/esm2020/lib/dropdown/components/index.mjs +2 -0
- package/esm2020/lib/dropdown/dropdown.component.mjs +140 -0
- package/esm2020/lib/dropdown/dropdown.module.mjs +21 -0
- package/esm2020/lib/dropdown/index.mjs +5 -0
- package/esm2020/lib/dropdown/types/dropdown-position.mjs +2 -0
- package/esm2020/lib/dropdown/types/index.mjs +2 -0
- package/esm2020/lib/file-upload/directives/file-drop.directive.mjs +50 -0
- package/esm2020/lib/file-upload/directives/index.mjs +2 -0
- package/esm2020/lib/file-upload/file-upload.component.mjs +334 -0
- package/esm2020/lib/file-upload/file-upload.module.mjs +29 -0
- package/esm2020/lib/file-upload/index.mjs +5 -0
- package/esm2020/lib/file-upload/pipes/human-readable-byte-size.pipe.mjs +23 -0
- package/esm2020/lib/file-upload/pipes/index.mjs +2 -0
- package/esm2020/lib/form-field/controls/checkbox/checkbox.component.mjs +337 -0
- package/esm2020/lib/form-field/controls/checkbox/checkbox.module.mjs +19 -0
- package/esm2020/lib/form-field/controls/checkbox/index.mjs +3 -0
- package/esm2020/lib/form-field/controls/index.mjs +5 -0
- package/esm2020/lib/form-field/controls/input/index.mjs +2 -0
- package/esm2020/lib/form-field/controls/input/input.directive.mjs +233 -0
- package/esm2020/lib/form-field/controls/radio/index.mjs +6 -0
- package/esm2020/lib/form-field/controls/radio/injection-tokens.mjs +4 -0
- package/esm2020/lib/form-field/controls/radio/interfaces/index.mjs +4 -0
- package/esm2020/lib/form-field/controls/radio/interfaces/radio-button.interface.mjs +2 -0
- package/esm2020/lib/form-field/controls/radio/interfaces/radio-change-event.interface.mjs +11 -0
- package/esm2020/lib/form-field/controls/radio/interfaces/radio-group.interface.mjs +2 -0
- package/esm2020/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +260 -0
- package/esm2020/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +288 -0
- package/esm2020/lib/form-field/controls/radio/radio.module.mjs +20 -0
- package/esm2020/lib/form-field/controls/select/index.mjs +6 -0
- package/esm2020/lib/form-field/controls/select/option/index.mjs +2 -0
- package/esm2020/lib/form-field/controls/select/option/select-option.component.mjs +138 -0
- package/esm2020/lib/form-field/controls/select/option-parent.mjs +3 -0
- package/esm2020/lib/form-field/controls/select/select-model.mjs +149 -0
- package/esm2020/lib/form-field/controls/select/select.component.mjs +522 -0
- package/esm2020/lib/form-field/controls/select/select.module.mjs +20 -0
- package/esm2020/lib/form-field/controls/shared/index.mjs +2 -0
- package/esm2020/lib/form-field/controls/shared/toggle/components/index.mjs +2 -0
- package/esm2020/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.mjs +17 -0
- package/esm2020/lib/form-field/controls/shared/toggle/index.mjs +4 -0
- package/esm2020/lib/form-field/controls/shared/toggle/toggle.component.mjs +96 -0
- package/esm2020/lib/form-field/controls/shared/toggle/toggle.module.mjs +20 -0
- package/esm2020/lib/form-field/directives/corner-hint.directive.mjs +14 -0
- package/esm2020/lib/form-field/directives/error.directive.mjs +26 -0
- package/esm2020/lib/form-field/directives/form-root.directive.mjs +91 -0
- package/esm2020/lib/form-field/directives/hint.directive.mjs +24 -0
- package/esm2020/lib/form-field/directives/index.mjs +8 -0
- package/esm2020/lib/form-field/directives/label.directive.mjs +14 -0
- package/esm2020/lib/form-field/directives/prefix.directive.mjs +24 -0
- package/esm2020/lib/form-field/directives/suffix.directive.mjs +24 -0
- package/esm2020/lib/form-field/form-field-errors.mjs +5 -0
- package/esm2020/lib/form-field/form-field.component.mjs +132 -0
- package/esm2020/lib/form-field/impdc-forms.mjs +8 -0
- package/esm2020/lib/form-field/impdc-forms.module.mjs +68 -0
- package/esm2020/lib/form-field/index.mjs +2 -0
- package/esm2020/lib/form-field/services/error-state-matcher.service.mjs +28 -0
- package/esm2020/lib/form-field/services/index.mjs +3 -0
- package/esm2020/lib/form-field/services/unique-selection-dispatcher.service.mjs +48 -0
- package/esm2020/lib/form-field/shared/constructors.type.mjs +2 -0
- package/esm2020/lib/form-field/shared/disabled.mixin.mjs +15 -0
- package/esm2020/lib/form-field/shared/error-state.mixin.mjs +24 -0
- package/esm2020/lib/form-field/shared/form-field-control.mjs +10 -0
- package/esm2020/lib/form-field/shared/index.mjs +5 -0
- package/esm2020/lib/form-field/shared/tab-index.mixin.mjs +19 -0
- package/esm2020/lib/icon/icon.component.mjs +70 -0
- package/esm2020/lib/icon/icon.module.mjs +19 -0
- package/esm2020/lib/icon/index.mjs +3 -0
- package/esm2020/lib/index.mjs +26 -0
- package/esm2020/lib/modal/index.mjs +4 -0
- package/esm2020/lib/modal/modal.component.mjs +141 -0
- package/esm2020/lib/modal/modal.module.mjs +37 -0
- package/esm2020/lib/modal/types/index.mjs +3 -0
- package/esm2020/lib/modal/types/modal-component-sizes.mjs +9 -0
- package/esm2020/lib/modal/types/modal-theme.mjs +12 -0
- package/esm2020/lib/pagination/index.mjs +3 -0
- package/esm2020/lib/pagination/pagination.component.mjs +134 -0
- package/esm2020/lib/pagination/pagination.module.mjs +21 -0
- package/esm2020/lib/progress-bar/index.mjs +3 -0
- package/esm2020/lib/progress-bar/progress-bar.component.mjs +35 -0
- package/esm2020/lib/progress-bar/progress-bar.module.mjs +18 -0
- package/esm2020/lib/scrollable/index.mjs +3 -0
- package/esm2020/lib/scrollable/scrollable.component.mjs +193 -0
- package/esm2020/lib/scrollable/scrollable.module.mjs +21 -0
- package/esm2020/lib/select-icon/index.mjs +3 -0
- package/esm2020/lib/select-icon/select-icon.component.mjs +307 -0
- package/esm2020/lib/select-icon/select-icon.module.mjs +35 -0
- package/esm2020/lib/size-detection/directive/element-size.interface.mjs +2 -0
- package/esm2020/lib/size-detection/directive/index.mjs +3 -0
- package/esm2020/lib/size-detection/directive/size-detector.directive.mjs +43 -0
- package/esm2020/lib/size-detection/index.mjs +3 -0
- package/esm2020/lib/size-detection/size-detection.module.mjs +18 -0
- package/esm2020/lib/spinner/index.mjs +3 -0
- package/esm2020/lib/spinner/spinner.component.mjs +24 -0
- package/esm2020/lib/spinner/spinner.module.mjs +18 -0
- package/esm2020/lib/table/index.mjs +3 -0
- package/esm2020/lib/table/table.component.mjs +33 -0
- package/esm2020/lib/table/table.module.mjs +19 -0
- package/esm2020/lib/text-highlight/index.mjs +3 -0
- package/esm2020/lib/text-highlight/text-highlight.component.mjs +81 -0
- package/esm2020/lib/text-highlight/text-highlight.module.mjs +19 -0
- package/esm2020/public-api.mjs +9 -0
- package/esm2020/services/index.mjs +2 -0
- package/esm2020/services/interaction.service.mjs +54 -0
- package/esm2020/types/component-size.mjs +12 -0
- package/esm2020/types/component-theme.mjs +22 -0
- package/esm2020/types/index.mjs +3 -0
- package/esm2020/utilities/boolean-props.mjs +7 -0
- package/esm2020/utilities/dc.mjs +9 -0
- package/esm2020/utilities/index.mjs +6 -0
- package/esm2020/utilities/lc.mjs +9 -0
- package/esm2020/utilities/number-props.mjs +18 -0
- package/esm2020/utilities/sanitize.mjs +7 -0
- package/fesm2015/impartner-design-components.mjs +8295 -0
- package/fesm2015/impartner-design-components.mjs.map +1 -0
- package/fesm2020/impartner-design-components.mjs +8264 -0
- package/fesm2020/impartner-design-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/alert/alert.component.d.ts +29 -0
- package/lib/alert/alert.module.d.ts +8 -0
- package/lib/alert/index.d.ts +3 -0
- package/lib/alert/theme/alert-theme.d.ts +1 -0
- package/lib/alert/theme/index.d.ts +1 -0
- package/lib/avatar/avatar.component.d.ts +28 -0
- package/lib/avatar/avatar.module.d.ts +8 -0
- package/lib/avatar/index.d.ts +2 -0
- package/lib/avatar-group/avatar-group.component.d.ts +10 -0
- package/lib/avatar-group/avatar-group.module.d.ts +9 -0
- package/lib/avatar-group/index.d.ts +2 -0
- package/lib/backdrop/backdrop.component.d.ts +19 -0
- package/lib/backdrop/backdrop.module.d.ts +9 -0
- package/lib/backdrop/index.d.ts +2 -0
- package/lib/badge/badge.component.d.ts +48 -0
- package/lib/badge/badge.module.d.ts +9 -0
- package/lib/badge/index.d.ts +3 -0
- package/lib/badge/types/badge-icon.d.ts +1 -0
- package/lib/badge/types/badge-size.d.ts +6 -0
- package/lib/badge/types/index.d.ts +2 -0
- package/lib/branding/branded.directive.d.ts +6 -0
- package/lib/branding/branding.module.d.ts +9 -0
- package/lib/branding/index.d.ts +2 -0
- package/lib/breadcrumb/breadcrumb-item.component.d.ts +7 -0
- package/lib/breadcrumb/breadcrumb.component.d.ts +18 -0
- package/lib/breadcrumb/breadcrumb.module.d.ts +9 -0
- package/lib/breadcrumb/index.d.ts +3 -0
- package/lib/button/button.component.d.ts +47 -0
- package/lib/button/button.module.d.ts +11 -0
- package/lib/button/index.d.ts +3 -0
- package/lib/button/themes/button-theme.d.ts +1 -0
- package/lib/button/themes/index.d.ts +1 -0
- package/lib/button-group/button-group.component.d.ts +22 -0
- package/lib/button-group/button-group.module.d.ts +10 -0
- package/lib/button-group/index.d.ts +2 -0
- package/lib/card-heading/card-heading.component.d.ts +18 -0
- package/lib/card-heading/card-heading.module.d.ts +9 -0
- package/lib/card-heading/index.d.ts +2 -0
- package/lib/design-components.module.d.ts +22 -0
- package/lib/dropdown/components/dropdown-item/dropdown-item.component.d.ts +11 -0
- package/lib/dropdown/components/index.d.ts +1 -0
- package/lib/dropdown/dropdown.component.d.ts +65 -0
- package/lib/dropdown/dropdown.module.d.ts +11 -0
- package/lib/dropdown/index.d.ts +4 -0
- package/lib/dropdown/types/dropdown-position.d.ts +1 -0
- package/lib/dropdown/types/index.d.ts +1 -0
- package/lib/file-upload/directives/file-drop.directive.d.ts +11 -0
- package/lib/file-upload/directives/index.d.ts +1 -0
- package/lib/file-upload/file-upload.component.d.ts +105 -0
- package/lib/file-upload/file-upload.module.d.ts +13 -0
- package/lib/file-upload/index.d.ts +4 -0
- package/lib/file-upload/pipes/human-readable-byte-size.pipe.d.ts +7 -0
- package/lib/file-upload/pipes/index.d.ts +1 -0
- package/lib/form-field/controls/checkbox/checkbox.component.d.ts +133 -0
- package/lib/form-field/controls/checkbox/checkbox.module.d.ts +9 -0
- package/lib/form-field/controls/checkbox/index.d.ts +2 -0
- package/lib/form-field/controls/index.d.ts +4 -0
- package/lib/form-field/controls/input/index.d.ts +1 -0
- package/lib/form-field/controls/input/input.directive.d.ts +84 -0
- package/lib/form-field/controls/radio/index.d.ts +5 -0
- package/lib/form-field/controls/radio/injection-tokens.d.ts +4 -0
- package/lib/form-field/controls/radio/interfaces/index.d.ts +3 -0
- package/lib/form-field/controls/radio/interfaces/radio-button.interface.d.ts +6 -0
- package/lib/form-field/controls/radio/interfaces/radio-change-event.interface.d.ts +12 -0
- package/lib/form-field/controls/radio/interfaces/radio-group.interface.d.ts +13 -0
- package/lib/form-field/controls/radio/radio-button/radio-button.component.d.ts +98 -0
- package/lib/form-field/controls/radio/radio-group/radio-group.directive.d.ts +104 -0
- package/lib/form-field/controls/radio/radio.module.d.ts +10 -0
- package/lib/form-field/controls/select/index.d.ts +5 -0
- package/lib/form-field/controls/select/option/index.d.ts +1 -0
- package/lib/form-field/controls/select/option/select-option.component.d.ts +60 -0
- package/lib/form-field/controls/select/option-parent.d.ts +5 -0
- package/lib/form-field/controls/select/select-model.d.ts +36 -0
- package/lib/form-field/controls/select/select.component.d.ts +170 -0
- package/lib/form-field/controls/select/select.module.d.ts +10 -0
- package/lib/form-field/controls/shared/index.d.ts +1 -0
- package/lib/form-field/controls/shared/toggle/components/index.d.ts +1 -0
- package/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.d.ts +6 -0
- package/lib/form-field/controls/shared/toggle/index.d.ts +3 -0
- package/lib/form-field/controls/shared/toggle/toggle.component.d.ts +26 -0
- package/lib/form-field/controls/shared/toggle/toggle.module.d.ts +10 -0
- package/lib/form-field/directives/corner-hint.directive.d.ts +5 -0
- package/lib/form-field/directives/error.directive.d.ts +8 -0
- package/lib/form-field/directives/form-root.directive.d.ts +26 -0
- package/lib/form-field/directives/hint.directive.d.ts +6 -0
- package/lib/form-field/directives/index.d.ts +7 -0
- package/lib/form-field/directives/label.directive.d.ts +5 -0
- package/lib/form-field/directives/prefix.directive.d.ts +9 -0
- package/lib/form-field/directives/suffix.directive.d.ts +9 -0
- package/lib/form-field/form-field-errors.d.ts +2 -0
- package/lib/form-field/form-field.component.d.ts +39 -0
- package/lib/form-field/impdc-forms.d.ts +7 -0
- package/lib/form-field/impdc-forms.module.d.ts +19 -0
- package/lib/form-field/index.d.ts +1 -0
- package/lib/form-field/services/error-state-matcher.service.d.ts +12 -0
- package/lib/form-field/services/index.d.ts +2 -0
- package/lib/form-field/services/unique-selection-dispatcher.service.d.ts +29 -0
- package/lib/form-field/shared/constructors.type.d.ts +7 -0
- package/lib/form-field/shared/disabled.mixin.d.ts +10 -0
- package/lib/form-field/shared/error-state.mixin.d.ts +31 -0
- package/lib/form-field/shared/form-field-control.d.ts +24 -0
- package/lib/form-field/shared/index.d.ts +5 -0
- package/lib/form-field/shared/tab-index.mixin.d.ts +13 -0
- package/lib/icon/icon.component.d.ts +30 -0
- package/lib/icon/icon.module.d.ts +9 -0
- package/lib/icon/index.d.ts +2 -0
- package/lib/index.d.ts +25 -0
- package/lib/modal/index.d.ts +3 -0
- package/lib/modal/modal.component.d.ts +80 -0
- package/lib/modal/modal.module.d.ts +13 -0
- package/lib/modal/types/index.d.ts +2 -0
- package/lib/modal/types/modal-component-sizes.d.ts +3 -0
- package/lib/modal/types/modal-theme.d.ts +7 -0
- package/lib/pagination/index.d.ts +2 -0
- package/lib/pagination/pagination.component.d.ts +41 -0
- package/lib/pagination/pagination.module.d.ts +11 -0
- package/lib/progress-bar/index.d.ts +2 -0
- package/lib/progress-bar/progress-bar.component.d.ts +22 -0
- package/lib/progress-bar/progress-bar.module.d.ts +8 -0
- package/lib/scrollable/index.d.ts +2 -0
- package/lib/scrollable/scrollable.component.d.ts +39 -0
- package/lib/scrollable/scrollable.module.d.ts +11 -0
- package/lib/select-icon/index.d.ts +2 -0
- package/lib/select-icon/select-icon.component.d.ts +123 -0
- package/lib/select-icon/select-icon.module.d.ts +11 -0
- package/lib/size-detection/directive/element-size.interface.d.ts +4 -0
- package/lib/size-detection/directive/index.d.ts +2 -0
- package/lib/size-detection/directive/size-detector.directive.d.ts +14 -0
- package/lib/size-detection/index.d.ts +3 -0
- package/lib/size-detection/size-detection.module.d.ts +8 -0
- package/lib/spinner/index.d.ts +2 -0
- package/lib/spinner/spinner.component.d.ts +13 -0
- package/lib/spinner/spinner.module.d.ts +8 -0
- package/lib/table/index.d.ts +2 -0
- package/lib/table/table.component.d.ts +15 -0
- package/lib/table/table.module.d.ts +9 -0
- package/lib/text-highlight/index.d.ts +2 -0
- package/lib/text-highlight/text-highlight.component.d.ts +31 -0
- package/lib/text-highlight/text-highlight.module.d.ts +9 -0
- package/package.json +51 -0
- package/public-api.d.ts +4 -0
- package/services/index.d.ts +1 -0
- package/services/interaction.service.d.ts +14 -0
- package/types/component-size.d.ts +12 -0
- package/types/component-theme.d.ts +12 -0
- package/types/index.d.ts +2 -0
- package/utilities/boolean-props.d.ts +8 -0
- package/utilities/dc.d.ts +6 -0
- package/utilities/index.d.ts +5 -0
- package/utilities/lc.d.ts +6 -0
- package/utilities/number-props.d.ts +15 -0
- package/utilities/sanitize.d.ts +1 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { Attribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, Self, ViewChild } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { nanoid } from 'nanoid';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import { coerceBooleanPropertyValue } from '../../../../utilities';
|
|
6
|
+
import { IMPDC_FORM_ROOT } from '../../directives';
|
|
7
|
+
import { ImpdcFormFieldControl, mixinErrorState, mixinTabIndex } from '../../shared';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../services";
|
|
10
|
+
import * as i2 from "@angular/forms";
|
|
11
|
+
import * as i3 from "../shared/toggle/toggle.component";
|
|
12
|
+
import * as i4 from "../shared/toggle/components/toggle-input/toggle-input.component";
|
|
13
|
+
export class CheckboxChangeEvent {
|
|
14
|
+
constructor(
|
|
15
|
+
/** The specific checkbox that changed. */
|
|
16
|
+
source,
|
|
17
|
+
/** Whether the changed checkbox was checked or unchecked at the time of the event. */
|
|
18
|
+
checked) {
|
|
19
|
+
this.source = source;
|
|
20
|
+
this.checked = checked;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
class CheckboxComponentBase {
|
|
24
|
+
constructor(_defaultErrorStateMatcher, _formRoot, _parentForm, _parentFormGroup, ngControl) {
|
|
25
|
+
this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
|
|
26
|
+
this._formRoot = _formRoot;
|
|
27
|
+
this._parentForm = _parentForm;
|
|
28
|
+
this._parentFormGroup = _parentFormGroup;
|
|
29
|
+
this.ngControl = ngControl;
|
|
30
|
+
this.stateChanges = new Subject();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const _CheckboxComponentMixinBase = mixinTabIndex(mixinErrorState(CheckboxComponentBase));
|
|
34
|
+
/**
|
|
35
|
+
* The `CheckboxComponent` (`<impdc-checkbox`) is an input with a simple boolean value as a checkbox or toggle switch.
|
|
36
|
+
* This component can be used within a `FormFieldComponent` (`<impdc-form-field`).
|
|
37
|
+
* To use, import `CheckboxModule` or another module that imports and exports that module from `@impartner/design-components`.
|
|
38
|
+
*/
|
|
39
|
+
export class CheckboxComponent extends _CheckboxComponentMixinBase {
|
|
40
|
+
constructor(_changeDetector, tabIndex, defaultErrorStateMatcher, formRoot, parentForm, parentFormGroup, ngControl) {
|
|
41
|
+
super(defaultErrorStateMatcher, formRoot, parentForm, parentFormGroup, ngControl);
|
|
42
|
+
this._changeDetector = _changeDetector;
|
|
43
|
+
this._uid = `impdc-checkbox-${nanoid()}`;
|
|
44
|
+
this._cvaOnChange = () => { };
|
|
45
|
+
this._cvaOnTouched = () => { };
|
|
46
|
+
this.id = this._uid;
|
|
47
|
+
/**
|
|
48
|
+
* The primary label text for the checkbox control.
|
|
49
|
+
*/
|
|
50
|
+
this.label = '';
|
|
51
|
+
/**
|
|
52
|
+
* Text to provide additional description or context for the checkbox control. Does not display when `inline` is `true`.
|
|
53
|
+
*/
|
|
54
|
+
this.description = '';
|
|
55
|
+
/**
|
|
56
|
+
* Whether or not the input displays as a toggle switch.
|
|
57
|
+
*/
|
|
58
|
+
this.isSwitch = false;
|
|
59
|
+
/**
|
|
60
|
+
* When `isSwitch` is `true`, sets whether or not the toggle switch uses icons.
|
|
61
|
+
*/
|
|
62
|
+
this.switchIcons = false;
|
|
63
|
+
/**
|
|
64
|
+
* Whether or not the checkbox displays inline.
|
|
65
|
+
*/
|
|
66
|
+
this.inline = false;
|
|
67
|
+
this._indeterminate = false;
|
|
68
|
+
this._disabled = false;
|
|
69
|
+
/**
|
|
70
|
+
* Event emitted whenever the checkedness of the input changes.
|
|
71
|
+
*/
|
|
72
|
+
this.change = new EventEmitter();
|
|
73
|
+
/**
|
|
74
|
+
* Event emitted whenever the control enters or leaves an `indeterminate` state.
|
|
75
|
+
*/
|
|
76
|
+
this.indeterminateChange = new EventEmitter();
|
|
77
|
+
this._value = false;
|
|
78
|
+
this._focused = false;
|
|
79
|
+
this.controlType = 'impdc-check';
|
|
80
|
+
this.supportsAffixes = false;
|
|
81
|
+
this.tabIndex = parseInt(tabIndex) || 0;
|
|
82
|
+
if (this.ngControl) {
|
|
83
|
+
this.ngControl.valueAccessor = this;
|
|
84
|
+
this.ngControl.control?.addValidators(() => {
|
|
85
|
+
return this.validate();
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Whether or not the checkbox input is checked.
|
|
91
|
+
*/
|
|
92
|
+
get checked() {
|
|
93
|
+
return this.value;
|
|
94
|
+
}
|
|
95
|
+
set checked(value) {
|
|
96
|
+
this.value = value;
|
|
97
|
+
this._cvaOnChange(this.value);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Whether or not the checkbox input is in an `indeterminate` state.
|
|
101
|
+
*/
|
|
102
|
+
get indeterminate() {
|
|
103
|
+
return this._indeterminate;
|
|
104
|
+
}
|
|
105
|
+
set indeterminate(value) {
|
|
106
|
+
const coercedValue = coerceBooleanPropertyValue(value);
|
|
107
|
+
const isChange = coercedValue !== this._indeterminate;
|
|
108
|
+
this._indeterminate = coercedValue;
|
|
109
|
+
if (isChange) {
|
|
110
|
+
this.indeterminateChange.emit(this._indeterminate);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
get disabled() {
|
|
114
|
+
return this._disabled;
|
|
115
|
+
}
|
|
116
|
+
set disabled(value) {
|
|
117
|
+
const newDisabledState = coerceBooleanPropertyValue(value);
|
|
118
|
+
if (newDisabledState !== this._disabled) {
|
|
119
|
+
this._disabled = newDisabledState;
|
|
120
|
+
this._changeDetector.markForCheck();
|
|
121
|
+
this.stateChanges.next();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
get inputId() {
|
|
125
|
+
return `${this.id || this._uid}-input`;
|
|
126
|
+
}
|
|
127
|
+
/** @ignore */
|
|
128
|
+
ngDoCheck() {
|
|
129
|
+
const ngControl = this.ngControl;
|
|
130
|
+
if (!ngControl) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
this.updateErrorState();
|
|
134
|
+
}
|
|
135
|
+
/** @ignore */
|
|
136
|
+
ngOnDestroy() {
|
|
137
|
+
this.stateChanges.complete();
|
|
138
|
+
}
|
|
139
|
+
/* ImpdcFormFieldControl */
|
|
140
|
+
get value() {
|
|
141
|
+
return this._value;
|
|
142
|
+
}
|
|
143
|
+
set value(value) {
|
|
144
|
+
const newValue = coerceBooleanPropertyValue(value);
|
|
145
|
+
if (newValue !== this._value) {
|
|
146
|
+
this._value = newValue;
|
|
147
|
+
this._changeDetector.markForCheck();
|
|
148
|
+
this.stateChanges.next();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
get focused() {
|
|
152
|
+
return this._focused;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Used to set requiredness of control in a template-based manner; not necessary when using the
|
|
156
|
+
* Angular reactive forms API and 'required' or `requiredTrue` validators.
|
|
157
|
+
*/
|
|
158
|
+
get required() {
|
|
159
|
+
if (this._required !== undefined) {
|
|
160
|
+
return this._required;
|
|
161
|
+
}
|
|
162
|
+
const control = this.ngControl?.control;
|
|
163
|
+
if (control) {
|
|
164
|
+
const hasRequired = control.hasValidator(Validators.required);
|
|
165
|
+
const hasRequiredTrue = control.hasValidator(Validators.requiredTrue);
|
|
166
|
+
return hasRequired || hasRequiredTrue;
|
|
167
|
+
}
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
set required(value) {
|
|
171
|
+
this._required = coerceBooleanPropertyValue(value);
|
|
172
|
+
this.stateChanges.next();
|
|
173
|
+
}
|
|
174
|
+
/* ControlValueAccessor */
|
|
175
|
+
/** @ignore */
|
|
176
|
+
writeValue(value) {
|
|
177
|
+
this.value = !!value;
|
|
178
|
+
this._changeDetector.markForCheck();
|
|
179
|
+
}
|
|
180
|
+
/** @ignore */
|
|
181
|
+
registerOnChange(fn) {
|
|
182
|
+
this._cvaOnChange = fn;
|
|
183
|
+
}
|
|
184
|
+
/** @ignore */
|
|
185
|
+
registerOnTouched(fn) {
|
|
186
|
+
this._cvaOnTouched = fn;
|
|
187
|
+
}
|
|
188
|
+
/** @ignore */
|
|
189
|
+
setDisabledState(isDisabled) {
|
|
190
|
+
this.disabled = isDisabled;
|
|
191
|
+
this._changeDetector.markForCheck();
|
|
192
|
+
}
|
|
193
|
+
/* Validator */
|
|
194
|
+
/** @ignore */
|
|
195
|
+
validate() {
|
|
196
|
+
return !this.disabled && this.required && !this.value
|
|
197
|
+
? { required: true }
|
|
198
|
+
: null;
|
|
199
|
+
}
|
|
200
|
+
/* Internals */
|
|
201
|
+
_getAriaChecked() {
|
|
202
|
+
if (this.checked) {
|
|
203
|
+
return 'true';
|
|
204
|
+
}
|
|
205
|
+
return this.indeterminate ? 'mixed' : 'false';
|
|
206
|
+
}
|
|
207
|
+
_onBlur() {
|
|
208
|
+
this._focused = false;
|
|
209
|
+
// When a focused element becomes disabled, the browser *immediately* fires a blur event.
|
|
210
|
+
// Angular does not expect events to be raised during change detection, so any state change
|
|
211
|
+
// (such as a form control's 'ng-touched') will cause a changed-after-checked error.
|
|
212
|
+
// See https://github.com/angular/angular/issues/17793. To work around this, we defer
|
|
213
|
+
// telling the form control it has been touched until the next tick.
|
|
214
|
+
Promise.resolve().then(() => {
|
|
215
|
+
this._cvaOnTouched();
|
|
216
|
+
this._changeDetector.markForCheck();
|
|
217
|
+
this.stateChanges.next();
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
_onFocus() {
|
|
221
|
+
if (!this.disabled) {
|
|
222
|
+
this._focused = true;
|
|
223
|
+
this.stateChanges.next();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
_handleCheckClick() {
|
|
227
|
+
if (!this.disabled) {
|
|
228
|
+
if (this.indeterminate) {
|
|
229
|
+
Promise.resolve().then(() => {
|
|
230
|
+
this.indeterminate = false;
|
|
231
|
+
this.indeterminateChange.emit(this._indeterminate);
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
this.checked = !this.checked;
|
|
235
|
+
this._emitChangeEvents();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
_onInteractionEvent(event) {
|
|
239
|
+
// We always have to stop propagation on the change event.
|
|
240
|
+
// Otherwise the change event, from the input element, will bubble up and
|
|
241
|
+
// emit its event object to the `change` output.
|
|
242
|
+
event.stopPropagation();
|
|
243
|
+
}
|
|
244
|
+
_emitChangeEvents() {
|
|
245
|
+
this._cvaOnChange(this.checked);
|
|
246
|
+
this.change.emit(new CheckboxChangeEvent(this, this.checked));
|
|
247
|
+
// Assigning the value again here is redundant, but we have to do it in case it was
|
|
248
|
+
// changed inside the `change` listener which will cause the input to be out of sync.
|
|
249
|
+
if (this._inputElement) {
|
|
250
|
+
this._inputElement.nativeElement.checked = this.checked;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Prevent click events that come from the `<label/>` element from bubbling. This prevents the
|
|
255
|
+
* click handler on the host from triggering twice when clicking on the `<label/>` element. After
|
|
256
|
+
* the click event on the `<label/>` propagates, the browsers dispatches click on the associated
|
|
257
|
+
* `<input/>`. By preventing clicks on the label by bubbling, we ensure only one click event
|
|
258
|
+
* bubbles when the label is clicked.
|
|
259
|
+
*/
|
|
260
|
+
_preventBubblingFromLabel(event) {
|
|
261
|
+
if (!!event.target &&
|
|
262
|
+
!!this._inputElement &&
|
|
263
|
+
!event.target.contains(this._inputElement.nativeElement)) {
|
|
264
|
+
event.stopPropagation();
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: 'tabindex', attribute: true }, { token: i1.ErrorStateMatcher }, { token: IMPDC_FORM_ROOT, optional: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
269
|
+
CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CheckboxComponent, selector: "impdc-checkbox", inputs: { tabIndex: "tabIndex", id: "id", label: "label", description: "description", isSwitch: "isSwitch", switchIcons: "switchIcons", inline: "inline", checked: "checked", indeterminate: "indeterminate", disabled: "disabled", errorStateMatcher: "errorStateMatcher", required: "required" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "attr.id": "id", "attr.tabindex": "null", "class.impdc-checkbox--required": "required", "class.impdc-checkbox--disabled": "disabled", "class.impdc-checkbox--invalid": "errorState", "class.impdc-checkbox--inline": "inline" }, classAttribute: "impdc-checkbox" }, providers: [
|
|
270
|
+
{
|
|
271
|
+
provide: ImpdcFormFieldControl,
|
|
272
|
+
useExisting: CheckboxComponent
|
|
273
|
+
}
|
|
274
|
+
], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["nativeInput"], descendants: true, read: ElementRef }], exportAs: ["impdcCheckControl"], usesInheritance: true, ngImport: i0, template: "<impdc-toggle\n [label]=\"label\"\n [description]=\"description\"\n [isSwitch]=\"isSwitch\"\n [switchIcons]=\"switchIcons\"\n [inline]=\"inline\"\n (click)=\"_preventBubblingFromLabel($event)\">\n <input\n #nativeInput\n impdc-toggle-input\n type=\"checkbox\"\n class=\"impdc-checkbox__native-control\"\n [class.is-invalid]=\"errorState\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-required]=\"required\"\n [attr.tabindex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [indeterminate]=\"indeterminate\"\n (change)=\"_onInteractionEvent($event)\"\n (click)=\"_handleCheckClick()\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\" />\n</impdc-toggle>\n", styles: [":host{display:block;opacity:var(--impartner-hex-input-opacity, 1)}:host.impdc-checkbox--inline{display:inline-block}:host.impdc-checkbox--inline:not(:last-of-type){margin-right:4rem}:host:not(.impdc-checkbox--inline):not(:last-of-type){margin-bottom:1.6rem}:host.impdc-checkbox--disabled{--impartner-hex-input-opacity: .5}:host.impdc-checkbox--invalid ::ng-deep .form-check-label{color:var(--impd-color-red-600)}\n"], dependencies: [{ kind: "component", type: i3.ToggleComponent, selector: "impdc-toggle", inputs: ["isSwitch", "label", "description", "inline", "switchIcons"] }, { kind: "component", type: i4.ToggleInputComponent, selector: "input[impdc-toggle-input]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
275
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
276
|
+
type: Component,
|
|
277
|
+
args: [{ selector: 'impdc-checkbox', host: {
|
|
278
|
+
class: 'impdc-checkbox',
|
|
279
|
+
'[attr.id]': 'id',
|
|
280
|
+
'[attr.tabindex]': 'null',
|
|
281
|
+
'[class.impdc-checkbox--required]': 'required',
|
|
282
|
+
'[class.impdc-checkbox--disabled]': 'disabled',
|
|
283
|
+
'[class.impdc-checkbox--invalid]': 'errorState',
|
|
284
|
+
'[class.impdc-checkbox--inline]': 'inline'
|
|
285
|
+
}, inputs: ['tabIndex'], exportAs: 'impdcCheckControl', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
286
|
+
{
|
|
287
|
+
provide: ImpdcFormFieldControl,
|
|
288
|
+
useExisting: CheckboxComponent
|
|
289
|
+
}
|
|
290
|
+
], template: "<impdc-toggle\n [label]=\"label\"\n [description]=\"description\"\n [isSwitch]=\"isSwitch\"\n [switchIcons]=\"switchIcons\"\n [inline]=\"inline\"\n (click)=\"_preventBubblingFromLabel($event)\">\n <input\n #nativeInput\n impdc-toggle-input\n type=\"checkbox\"\n class=\"impdc-checkbox__native-control\"\n [class.is-invalid]=\"errorState\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-required]=\"required\"\n [attr.tabindex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [indeterminate]=\"indeterminate\"\n (change)=\"_onInteractionEvent($event)\"\n (click)=\"_handleCheckClick()\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\" />\n</impdc-toggle>\n", styles: [":host{display:block;opacity:var(--impartner-hex-input-opacity, 1)}:host.impdc-checkbox--inline{display:inline-block}:host.impdc-checkbox--inline:not(:last-of-type){margin-right:4rem}:host:not(.impdc-checkbox--inline):not(:last-of-type){margin-bottom:1.6rem}:host.impdc-checkbox--disabled{--impartner-hex-input-opacity: .5}:host.impdc-checkbox--invalid ::ng-deep .form-check-label{color:var(--impd-color-red-600)}\n"] }]
|
|
291
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
292
|
+
type: Attribute,
|
|
293
|
+
args: ['tabindex']
|
|
294
|
+
}] }, { type: i1.ErrorStateMatcher }, { type: undefined, decorators: [{
|
|
295
|
+
type: Optional
|
|
296
|
+
}, {
|
|
297
|
+
type: Inject,
|
|
298
|
+
args: [IMPDC_FORM_ROOT]
|
|
299
|
+
}] }, { type: i2.NgForm, decorators: [{
|
|
300
|
+
type: Optional
|
|
301
|
+
}] }, { type: i2.FormGroupDirective, decorators: [{
|
|
302
|
+
type: Optional
|
|
303
|
+
}] }, { type: i2.NgControl, decorators: [{
|
|
304
|
+
type: Self
|
|
305
|
+
}, {
|
|
306
|
+
type: Optional
|
|
307
|
+
}] }]; }, propDecorators: { _inputElement: [{
|
|
308
|
+
type: ViewChild,
|
|
309
|
+
args: ['nativeInput', { read: ElementRef }]
|
|
310
|
+
}], id: [{
|
|
311
|
+
type: Input
|
|
312
|
+
}], label: [{
|
|
313
|
+
type: Input
|
|
314
|
+
}], description: [{
|
|
315
|
+
type: Input
|
|
316
|
+
}], isSwitch: [{
|
|
317
|
+
type: Input
|
|
318
|
+
}], switchIcons: [{
|
|
319
|
+
type: Input
|
|
320
|
+
}], inline: [{
|
|
321
|
+
type: Input
|
|
322
|
+
}], checked: [{
|
|
323
|
+
type: Input
|
|
324
|
+
}], indeterminate: [{
|
|
325
|
+
type: Input
|
|
326
|
+
}], disabled: [{
|
|
327
|
+
type: Input
|
|
328
|
+
}], errorStateMatcher: [{
|
|
329
|
+
type: Input
|
|
330
|
+
}], change: [{
|
|
331
|
+
type: Output
|
|
332
|
+
}], indeterminateChange: [{
|
|
333
|
+
type: Output
|
|
334
|
+
}], required: [{
|
|
335
|
+
type: Input
|
|
336
|
+
}] } });
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWZpZWxkL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUV2QixTQUFTLEVBRVQsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBT0wsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFFTCwwQkFBMEIsRUFDM0IsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQWlCLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxFLE9BQU8sRUFJTCxxQkFBcUIsRUFDckIsZUFBZSxFQUNmLGFBQWEsRUFDZCxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0FBRXRCLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7SUFDRSwwQ0FBMEM7SUFDMUIsTUFBeUI7SUFDekMsc0ZBQXNGO0lBQ3RFLE9BQWdCO1FBRmhCLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBRXpCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFDL0IsQ0FBQztDQUNMO0FBRUQs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QUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUl2QyxFQUFFO3NCQURSLEtBQUs7Z0JBT0MsS0FBSztzQkFEWCxLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsTUFBTTtzQkFEWixLQUFLO2dCQU9LLE9BQU87c0JBRGpCLEtBQUs7Z0JBYUssYUFBYTtzQkFEdkIsS0FBSztnQkFnQkssUUFBUTtzQkFEbEIsS0FBSztnQkFnQlUsaUJBQWlCO3NCQURoQyxLQUFLO2dCQVFVLE1BQU07c0JBRnJCLE1BQU07Z0JBUVMsbUJBQW1CO3NCQURsQyxNQUFNO2dCQTRFSSxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nQ29udHJvbCxcbiAgTmdGb3JtLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSAnbmFub2lkJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEJvb2xlYW5JbnB1dCxcbiAgY29lcmNlQm9vbGVhblByb3BlcnR5VmFsdWVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzJztcbmltcG9ydCB7IEltcGRjRm9ybVJvb3QsIElNUERDX0ZPUk1fUk9PVCB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBIYXNUYWJJbmRleCxcbiAgSUNhblVwZGF0ZUVycm9yU3RhdGUsXG4gIElIYXNFcnJvclN0YXRlLFxuICBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gIG1peGluRXJyb3JTdGF0ZSxcbiAgbWl4aW5UYWJJbmRleFxufSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDaGFuZ2VFdmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBUaGUgc3BlY2lmaWMgY2hlY2tib3ggdGhhdCBjaGFuZ2VkLiAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzb3VyY2U6IENoZWNrYm94Q29tcG9uZW50LFxuICAgIC8qKiBXaGV0aGVyIHRoZSBjaGFuZ2VkIGNoZWNrYm94IHdhcyBjaGVja2VkIG9yIHVuY2hlY2tlZCBhdCB0aGUgdGltZSBvZiB0aGUgZXZlbnQuICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNoZWNrZWQ6IGJvb2xlYW5cbiAgKSB7fVxufVxuXG5hYnN0cmFjdCBjbGFzcyBDaGVja2JveENvbXBvbmVudEJhc2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBhYnN0cmFjdCBkaXNhYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgcHVibGljIF9mb3JtUm9vdDogSW1wZGNGb3JtUm9vdCxcbiAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBwdWJsaWMgX3BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGxcbiAgKSB7fVxufVxuXG5jb25zdCBfQ2hlY2tib3hDb21wb25lbnRNaXhpbkJhc2UgPSBtaXhpblRhYkluZGV4KFxuICBtaXhpbkVycm9yU3RhdGUoQ2hlY2tib3hDb21wb25lbnRCYXNlKVxuKTtcblxuLyoqXG4gKiBUaGUgYENoZWNrYm94Q29tcG9uZW50YCAoYDxpbXBkYy1jaGVja2JveGApIGlzIGFuIGlucHV0IHdpdGggYSBzaW1wbGUgYm9vbGVhbiB2YWx1ZSBhcyBhIGNoZWNrYm94IG9yIHRvZ2dsZSBzd2l0Y2guXG4gKiBUaGlzIGNvbXBvbmVudCBjYW4gYmUgdXNlZCB3aXRoaW4gYSBgRm9ybUZpZWxkQ29tcG9uZW50YCAoYDxpbXBkYy1mb3JtLWZpZWxkYCkuXG4gKiBUbyB1c2UsIGltcG9ydCBgQ2hlY2tib3hNb2R1bGVgIG9yIGFub3RoZXIgbW9kdWxlIHRoYXQgaW1wb3J0cyBhbmQgZXhwb3J0cyB0aGF0IG1vZHVsZSBmcm9tIGBAaW1wYXJ0bmVyL2Rlc2lnbi1jb21wb25lbnRzYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnaW1wZGMtY2hlY2tib3gnLFxuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICdbYXR0ci50YWJpbmRleF0nOiAnbnVsbCcsXG4gICAgJ1tjbGFzcy5pbXBkYy1jaGVja2JveC0tcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2NsYXNzLmltcGRjLWNoZWNrYm94LS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbY2xhc3MuaW1wZGMtY2hlY2tib3gtLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuaW1wZGMtY2hlY2tib3gtLWlubGluZV0nOiAnaW5saW5lJ1xuICB9LFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsndGFiSW5kZXgnXSxcbiAgZXhwb3J0QXM6ICdpbXBkY0NoZWNrQ29udHJvbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gICAgICB1c2VFeGlzdGluZzogQ2hlY2tib3hDb21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnRcbiAgZXh0ZW5kcyBfQ2hlY2tib3hDb21wb25lbnRNaXhpbkJhc2VcbiAgaW1wbGVtZW50c1xuICAgIERvQ2hlY2ssXG4gICAgT25EZXN0cm95LFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIFZhbGlkYXRvcixcbiAgICBIYXNUYWJJbmRleCxcbiAgICBJbXBkY0Zvcm1GaWVsZENvbnRyb2w8Ym9vbGVhbj4sXG4gICAgSUNhblVwZGF0ZUVycm9yU3RhdGUsXG4gICAgSUhhc0Vycm9yU3RhdGVcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfdWlkOiBzdHJpbmcgPSBgaW1wZGMtY2hlY2tib3gtJHtuYW5vaWQoKX1gO1xuICBwcml2YXRlIF9jdmFPbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfY3ZhT25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgQFZpZXdDaGlsZCgnbmF0aXZlSW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJvdGVjdGVkIF9pbnB1dEVsZW1lbnQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZDogc3RyaW5nID0gdGhpcy5fdWlkO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSBsYWJlbCB0ZXh0IGZvciB0aGUgY2hlY2tib3ggY29udHJvbC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFRleHQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGRlc2NyaXB0aW9uIG9yIGNvbnRleHQgZm9yIHRoZSBjaGVja2JveCBjb250cm9sLiBEb2VzIG5vdCBkaXNwbGF5IHdoZW4gYGlubGluZWAgaXMgYHRydWVgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGlucHV0IGRpc3BsYXlzIGFzIGEgdG9nZ2xlIHN3aXRjaC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc1N3aXRjaDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGVuIGBpc1N3aXRjaGAgaXMgYHRydWVgLCBzZXRzIHdoZXRoZXIgb3Igbm90IHRoZSB0b2dnbGUgc3dpdGNoIHVzZXMgaWNvbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3dpdGNoSWNvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGNoZWNrYm94IGRpc3BsYXlzIGlubGluZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbmxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGNoZWNrYm94IGlucHV0IGlzIGNoZWNrZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cbiAgcHVibGljIHNldCBjaGVja2VkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5fY3ZhT25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGNoZWNrYm94IGlucHV0IGlzIGluIGFuIGBpbmRldGVybWluYXRlYCBzdGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgaW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5kZXRlcm1pbmF0ZTtcbiAgfVxuICBwdWJsaWMgc2V0IGluZGV0ZXJtaW5hdGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eVZhbHVlKHZhbHVlKTtcbiAgICBjb25zdCBpc0NoYW5nZSA9IGNvZXJjZWRWYWx1ZSAhPT0gdGhpcy5faW5kZXRlcm1pbmF0ZTtcbiAgICB0aGlzLl9pbmRldGVybWluYXRlID0gY29lcmNlZFZhbHVlO1xuXG4gICAgaWYgKGlzQ2hhbmdlKSB7XG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfaW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIGNvbnN0IG5ld0Rpc2FibGVkU3RhdGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHlWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAobmV3RGlzYWJsZWRTdGF0ZSAhPT0gdGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gbmV3RGlzYWJsZWRTdGF0ZTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGVycm9yU3RhdGVNYXRjaGVyITogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbmV2ZXIgdGhlIGNoZWNrZWRuZXNzIG9mIHRoZSBpbnB1dCBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q2hlY2tib3hDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPENoZWNrYm94Q2hhbmdlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbmV2ZXIgdGhlIGNvbnRyb2wgZW50ZXJzIG9yIGxlYXZlcyBhbiBgaW5kZXRlcm1pbmF0ZWAgc3RhdGUuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGluZGV0ZXJtaW5hdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgZ2V0IGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5pZCB8fCB0aGlzLl91aWR9LWlucHV0YDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAQXR0cmlidXRlKCd0YWJpbmRleCcpIHRhYkluZGV4OiBzdHJpbmcsXG4gICAgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElNUERDX0ZPUk1fUk9PVCkgZm9ybVJvb3Q6IEltcGRjRm9ybVJvb3QsXG4gICAgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgZm9ybVJvb3QsXG4gICAgICBwYXJlbnRGb3JtLFxuICAgICAgcGFyZW50Rm9ybUdyb3VwLFxuICAgICAgbmdDb250cm9sXG4gICAgKTtcblxuICAgIHRoaXMudGFiSW5kZXggPSBwYXJzZUludCh0YWJJbmRleCkgfHwgMDtcblxuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sPy5hZGRWYWxpZGF0b3JzKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgbmdDb250cm9sID0gdGhpcy5uZ0NvbnRyb2w7XG5cbiAgICBpZiAoIW5nQ29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiBJbXBkY0Zvcm1GaWVsZENvbnRyb2wgKi9cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eVZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWQ7XG4gIH1cbiAgcHJpdmF0ZSBfZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHNldCByZXF1aXJlZG5lc3Mgb2YgY29udHJvbCBpbiBhIHRlbXBsYXRlLWJhc2VkIG1hbm5lcjsgbm90IG5lY2Vzc2FyeSB3aGVuIHVzaW5nIHRoZVxuICAgKiBBbmd1bGFyIHJlYWN0aXZlIGZvcm1zIEFQSSBhbmQgJ3JlcXVpcmVkJyBvciBgcmVxdWlyZWRUcnVlYCB2YWxpZGF0b3JzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fcmVxdWlyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbD8uY29udHJvbDtcbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgY29uc3QgaGFzUmVxdWlyZWQgPSBjb250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgIGNvbnN0IGhhc1JlcXVpcmVkVHJ1ZSA9IGNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKTtcblxuICAgICAgcmV0dXJuIGhhc1JlcXVpcmVkIHx8IGhhc1JlcXVpcmVkVHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHlWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb250cm9sVHlwZTogc3RyaW5nID0gJ2ltcGRjLWNoZWNrJztcbiAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRzQWZmaXhlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qIENvbnRyb2xWYWx1ZUFjY2Vzc29yICovXG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSAhIXZhbHVlO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY3ZhT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLl9jdmFPblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qIFZhbGlkYXRvciAqL1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuICF0aGlzLmRpc2FibGVkICYmIHRoaXMucmVxdWlyZWQgJiYgIXRoaXMudmFsdWVcbiAgICAgID8geyByZXF1aXJlZDogdHJ1ZSB9XG4gICAgICA6IG51bGw7XG4gIH1cblxuICAvKiBJbnRlcm5hbHMgKi9cbiAgcHJvdGVjdGVkIF9nZXRBcmlhQ2hlY2tlZCgpOiAndHJ1ZScgfCAnZmFsc2UnIHwgJ21peGVkJyB7XG4gICAgaWYgKHRoaXMuY2hlY2tlZCkge1xuICAgICAgcmV0dXJuICd0cnVlJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pbmRldGVybWluYXRlID8gJ21peGVkJyA6ICdmYWxzZSc7XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c2VkID0gZmFsc2U7XG4gICAgLy8gV2hlbiBhIGZvY3VzZWQgZWxlbWVudCBiZWNvbWVzIGRpc2FibGVkLCB0aGUgYnJvd3NlciAqaW1tZWRpYXRlbHkqIGZpcmVzIGEgYmx1ciBldmVudC5cbiAgICAvLyBBbmd1bGFyIGRvZXMgbm90IGV4cGVjdCBldmVudHMgdG8gYmUgcmFpc2VkIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uLCBzbyBhbnkgc3RhdGUgY2hhbmdlXG4gICAgLy8gKHN1Y2ggYXMgYSBmb3JtIGNvbnRyb2wncyAnbmctdG91Y2hlZCcpIHdpbGwgY2F1c2UgYSBjaGFuZ2VkLWFmdGVyLWNoZWNrZWQgZXJyb3IuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE3NzkzLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBkZWZlclxuICAgIC8vIHRlbGxpbmcgdGhlIGZvcm0gY29udHJvbCBpdCBoYXMgYmVlbiB0b3VjaGVkIHVudGlsIHRoZSBuZXh0IHRpY2suXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jdmFPblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9vbkZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZm9jdXNlZCA9IHRydWU7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVDaGVja0NsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hlY2tlZCA9ICF0aGlzLmNoZWNrZWQ7XG5cbiAgICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudHMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpIHtcbiAgICAvLyBXZSBhbHdheXMgaGF2ZSB0byBzdG9wIHByb3BhZ2F0aW9uIG9uIHRoZSBjaGFuZ2UgZXZlbnQuXG4gICAgLy8gT3RoZXJ3aXNlIHRoZSBjaGFuZ2UgZXZlbnQsIGZyb20gdGhlIGlucHV0IGVsZW1lbnQsIHdpbGwgYnViYmxlIHVwIGFuZFxuICAgIC8vIGVtaXQgaXRzIGV2ZW50IG9iamVjdCB0byB0aGUgYGNoYW5nZWAgb3V0cHV0LlxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdENoYW5nZUV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9jdmFPbkNoYW5nZSh0aGlzLmNoZWNrZWQpO1xuICAgIHRoaXMuY2hhbmdlLmVtaXQobmV3IENoZWNrYm94Q2hhbmdlRXZlbnQodGhpcywgdGhpcy5jaGVja2VkKSk7XG5cbiAgICAvLyBBc3NpZ25pbmcgdGhlIHZhbHVlIGFnYWluIGhlcmUgaXMgcmVkdW5kYW50LCBidXQgd2UgaGF2ZSB0byBkbyBpdCBpbiBjYXNlIGl0IHdhc1xuICAgIC8vIGNoYW5nZWQgaW5zaWRlIHRoZSBgY2hhbmdlYCBsaXN0ZW5lciB3aGljaCB3aWxsIGNhdXNlIHRoZSBpbnB1dCB0byBiZSBvdXQgb2Ygc3luYy5cbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdGhpcy5jaGVja2VkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgUHJldmVudCBjbGljayBldmVudHMgdGhhdCBjb21lIGZyb20gdGhlIGA8bGFiZWwvPmAgZWxlbWVudCBmcm9tIGJ1YmJsaW5nLiBUaGlzIHByZXZlbnRzIHRoZVxuICAgKiAgY2xpY2sgaGFuZGxlciBvbiB0aGUgaG9zdCBmcm9tIHRyaWdnZXJpbmcgdHdpY2Ugd2hlbiBjbGlja2luZyBvbiB0aGUgYDxsYWJlbC8+YCBlbGVtZW50LiBBZnRlclxuICAgKiAgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBgPGxhYmVsLz5gIHByb3BhZ2F0ZXMsIHRoZSBicm93c2VycyBkaXNwYXRjaGVzIGNsaWNrIG9uIHRoZSBhc3NvY2lhdGVkXG4gICAqICBgPGlucHV0Lz5gLiBCeSBwcmV2ZW50aW5nIGNsaWNrcyBvbiB0aGUgbGFiZWwgYnkgYnViYmxpbmcsIHdlIGVuc3VyZSBvbmx5IG9uZSBjbGljayBldmVudFxuICAgKiAgYnViYmxlcyB3aGVuIHRoZSBsYWJlbCBpcyBjbGlja2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9wcmV2ZW50QnViYmxpbmdGcm9tTGFiZWwoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICAhIWV2ZW50LnRhcmdldCAmJlxuICAgICAgISF0aGlzLl9pbnB1dEVsZW1lbnQgJiZcbiAgICAgICEoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jb250YWlucyh0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICApIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxufVxuIiwiPGltcGRjLXRvZ2dsZVxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbZGVzY3JpcHRpb25dPVwiZGVzY3JpcHRpb25cIlxuICBbaXNTd2l0Y2hdPVwiaXNTd2l0Y2hcIlxuICBbc3dpdGNoSWNvbnNdPVwic3dpdGNoSWNvbnNcIlxuICBbaW5saW5lXT1cImlubGluZVwiXG4gIChjbGljayk9XCJfcHJldmVudEJ1YmJsaW5nRnJvbUxhYmVsKCRldmVudClcIj5cbiAgPGlucHV0XG4gICAgI25hdGl2ZUlucHV0XG4gICAgaW1wZGMtdG9nZ2xlLWlucHV0XG4gICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICBjbGFzcz1cImltcGRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbFwiXG4gICAgW2NsYXNzLmlzLWludmFsaWRdPVwiZXJyb3JTdGF0ZVwiXG4gICAgW2lkXT1cImlucHV0SWRcIlxuICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJfZ2V0QXJpYUNoZWNrZWQoKVwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbaW5kZXRlcm1pbmF0ZV09XCJpbmRldGVybWluYXRlXCJcbiAgICAoY2hhbmdlKT1cIl9vbkludGVyYWN0aW9uRXZlbnQoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cIl9oYW5kbGVDaGVja0NsaWNrKClcIlxuICAgIChibHVyKT1cIl9vbkJsdXIoKVwiXG4gICAgKGZvY3VzKT1cIl9vbkZvY3VzKClcIiAvPlxuPC9pbXBkYy10b2dnbGU+XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { ToggleModule } from '../shared';
|
|
4
|
+
import { CheckboxComponent } from './checkbox.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class CheckboxModule {
|
|
7
|
+
}
|
|
8
|
+
CheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
CheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: CheckboxModule, declarations: [CheckboxComponent], imports: [CommonModule, ToggleModule], exports: [CheckboxComponent] });
|
|
10
|
+
CheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CheckboxModule, imports: [CommonModule, ToggleModule] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CheckboxModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [CheckboxComponent],
|
|
15
|
+
imports: [CommonModule, ToggleModule],
|
|
16
|
+
exports: [CheckboxComponent]
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWZpZWxkL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQU96RCxNQUFNLE9BQU8sY0FBYzs7NEdBQWQsY0FBYzs2R0FBZCxjQUFjLGlCQUpWLGlCQUFpQixhQUN0QixZQUFZLEVBQUUsWUFBWSxhQUMxQixpQkFBaUI7NkdBRWhCLGNBQWMsWUFIZixZQUFZLEVBQUUsWUFBWTs0RkFHekIsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2dnbGVNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NoZWNrYm94LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NoZWNrYm94Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVG9nZ2xlTW9kdWxlXSxcbiAgZXhwb3J0czogW0NoZWNrYm94Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveE1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { CheckboxChangeEvent, CheckboxComponent } from './checkbox.component';
|
|
2
|
+
export { CheckboxModule } from './checkbox.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2Zvcm0tZmllbGQvY29udHJvbHMvY2hlY2tib3gvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ2hlY2tib3hDaGFuZ2VFdmVudCwgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NoZWNrYm94LmNvbXBvbmVudCc7XG5leHBvcnQgeyBDaGVja2JveE1vZHVsZSB9IGZyb20gJy4vY2hlY2tib3gubW9kdWxlJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './checkbox';
|
|
2
|
+
export * from './input';
|
|
3
|
+
export * from './radio';
|
|
4
|
+
export * from './select';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2Zvcm0tZmllbGQvY29udHJvbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NoZWNrYm94JztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9yYWRpbyc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdCc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { InputDirective } from './input.directive';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2Zvcm0tZmllbGQvY29udHJvbHMvaW5wdXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuL2lucHV0LmRpcmVjdGl2ZSc7XG4iXX0=
|