@energycap/components 0.40.2-rxjs-7-upgrade.20241219-1425 → 0.41.1-ECAP-27592-angular-17.20241219-1718
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/{esm2020 → esm2022}/energycap-components.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components.module.mjs +418 -418
- package/{esm2020 → esm2022}/lib/controls/banner/banner.component.mjs +109 -109
- package/{esm2020 → esm2022}/lib/controls/button/button.component.mjs +106 -106
- package/{esm2020 → esm2022}/lib/controls/button/copy-button-base.directive.mjs +67 -67
- package/{esm2020 → esm2022}/lib/controls/button/copy-button.directive.mjs +28 -28
- package/{esm2020 → esm2022}/lib/controls/button/copy-table-button.directive.mjs +43 -43
- package/{esm2020 → esm2022}/lib/controls/calendar/calendar-item.component.mjs +59 -59
- package/{esm2020 → esm2022}/lib/controls/calendar/calendar.component.mjs +200 -200
- package/{esm2020 → esm2022}/lib/controls/calendar/calendar.types.mjs +3 -3
- package/{esm2020 → esm2022}/lib/controls/checkbox/checkbox.component.mjs +140 -140
- package/{esm2020 → esm2022}/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -38
- package/{esm2020 → esm2022}/lib/controls/combobox/combobox.component.mjs +879 -879
- package/{esm2020 → esm2022}/lib/controls/date-input/date-input.component.mjs +256 -256
- package/{esm2020 → esm2022}/lib/controls/dropdown/dropdown.component.mjs +243 -243
- package/{esm2020 → esm2022}/lib/controls/file-upload/file-upload.component.mjs +261 -261
- package/{esm2020 → esm2022}/lib/controls/form-control/form-control.component.mjs +104 -104
- package/{esm2020 → esm2022}/lib/controls/form-control-base.mjs +151 -151
- package/{esm2020 → esm2022}/lib/controls/form-control-label/form-control-label.component.mjs +136 -136
- package/{esm2020 → esm2022}/lib/controls/form-group/form-group.component.mjs +261 -261
- package/{esm2020 → esm2022}/lib/controls/help-popover/help-popover.component.mjs +31 -31
- package/{esm2020 → esm2022}/lib/controls/item-picker/item-picker.component.mjs +329 -329
- package/{esm2020 → esm2022}/lib/controls/link-button/link-button.component.mjs +11 -11
- package/{esm2020 → esm2022}/lib/controls/menu/menu.component.mjs +485 -485
- package/{esm2020 → esm2022}/lib/controls/navigation/link-item.mjs +1 -1
- package/{esm2020 → esm2022}/lib/controls/navigation/nav-group.mjs +38 -38
- package/{esm2020 → esm2022}/lib/controls/navigation/nav-item-active.directive.mjs +92 -92
- package/{esm2020 → esm2022}/lib/controls/navigation/nav-item.mjs +1 -1
- package/{esm2020 → esm2022}/lib/controls/numericbox/numericbox.component.mjs +372 -372
- package/{esm2020 → esm2022}/lib/controls/popover/popover.component.mjs +117 -117
- package/{esm2020 → esm2022}/lib/controls/radio-button/radio-button-option.mjs +2 -2
- package/{esm2020 → esm2022}/lib/controls/radio-button/radio-button.component.mjs +82 -82
- package/{esm2020 → esm2022}/lib/controls/select/select.component.mjs +88 -88
- package/{esm2020 → esm2022}/lib/controls/tabs/tabs.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/controls/textbox/textbox.component.mjs +155 -155
- package/{esm2020 → esm2022}/lib/core/cache.service.mjs +105 -105
- package/esm2022/lib/core/custom-validators.mjs +29 -0
- package/esm2022/lib/core/date-time-helper.mjs +220 -0
- package/{esm2020 → esm2022}/lib/core/error.service.mjs +61 -61
- package/{esm2020 → esm2022}/lib/core/router-helper.service.mjs +111 -111
- package/{esm2020 → esm2022}/lib/core/scroll.service.mjs +89 -89
- package/{esm2020 → esm2022}/lib/core/telemetry-tracker.service.mjs +16 -16
- package/{esm2020 → esm2022}/lib/core/telemetry.service.mjs +38 -38
- package/{esm2020 → esm2022}/lib/core/validation-message.service.mjs +185 -185
- package/{esm2020 → esm2022}/lib/core/validation-patterns.mjs +30 -30
- package/{esm2020 → esm2022}/lib/core/window.service.mjs +186 -186
- package/{esm2020 → esm2022}/lib/display/app-bar/app-bar.component.mjs +46 -46
- package/esm2022/lib/display/avatar/avatar.component.mjs +67 -0
- package/{esm2020 → esm2022}/lib/display/avatar/avatar.service.mjs +64 -64
- package/{esm2020 → esm2022}/lib/display/confirm/confirm.component.mjs +168 -168
- package/{esm2020 → esm2022}/lib/display/dialog/dialog-content.mjs +1 -1
- package/{esm2020 → esm2022}/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -63
- package/{esm2020 → esm2022}/lib/display/dialog/dialog-types.mjs +76 -76
- package/{esm2020 → esm2022}/lib/display/dialog/dialog.component.mjs +281 -281
- package/{esm2020 → esm2022}/lib/display/dialog/dialog.service.mjs +71 -71
- package/{esm2020 → esm2022}/lib/display/help/help-types.mjs +1 -1
- package/{esm2020 → esm2022}/lib/display/hierarchy/hierarchy-base.mjs +111 -111
- package/{esm2020 → esm2022}/lib/display/hierarchy/hierarchy-mocks.spec.mjs +53 -53
- package/{esm2020 → esm2022}/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -61
- package/{esm2020 → esm2022}/lib/display/item-display/item-display.component.mjs +81 -81
- package/{esm2020 → esm2022}/lib/display/json-display/json-display.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/display/resizable/resizable-base.mjs +120 -120
- package/{esm2020 → esm2022}/lib/display/resizable/resizable.component.mjs +52 -52
- package/{esm2020 → esm2022}/lib/display/spinner/spinner.component.mjs +12 -12
- package/{esm2020 → esm2022}/lib/display/splash/splash.component.mjs +42 -42
- package/{esm2020 → esm2022}/lib/display/splash/splash.service.mjs +35 -35
- package/{esm2020 → esm2022}/lib/display/table/resizable-column.component.mjs +20 -20
- package/{esm2020 → esm2022}/lib/display/table/resizable-table.directive.mjs +227 -227
- package/{esm2020 → esm2022}/lib/display/table/searchable-table.component.mjs +342 -342
- package/{esm2020 → esm2022}/lib/display/table/table-detail-row.component.mjs +19 -19
- package/{esm2020 → esm2022}/lib/display/table/table-locked-column.component.mjs +58 -58
- package/{esm2020 → esm2022}/lib/display/table/table-master-header-row.component.mjs +14 -14
- package/{esm2020 → esm2022}/lib/display/table/table-master-row.component.mjs +163 -163
- package/{esm2020 → esm2022}/lib/display/table/table-pagination.component.mjs +155 -155
- package/{esm2020 → esm2022}/lib/display/table/table-selectable-row.component.mjs +235 -235
- package/{esm2020 → esm2022}/lib/display/table/table.component.mjs +249 -249
- package/{esm2020 → esm2022}/lib/display/tags/tag.mjs +17 -17
- package/{esm2020 → esm2022}/lib/display/tags/tags.component.mjs +77 -77
- package/{esm2020 → esm2022}/lib/display/toast/toast/toast.component.mjs +77 -77
- package/{esm2020 → esm2022}/lib/display/toast/toast-types.mjs +7 -7
- package/{esm2020 → esm2022}/lib/display/toast/toast.service.mjs +35 -35
- package/{esm2020 → esm2022}/lib/display/toast/toaster/toaster.component.mjs +114 -114
- package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.component.mjs +28 -28
- package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.service.mjs +78 -78
- package/{esm2020 → esm2022}/lib/display/tooltip-directive/tooltip.directive.mjs +173 -173
- package/{esm2020 → esm2022}/lib/display/tour/tour-types.mjs +33 -33
- package/{esm2020 → esm2022}/lib/display/tour/tour.component.mjs +398 -398
- package/{esm2020 → esm2022}/lib/display/tour/tour.service.mjs +75 -75
- package/{esm2020 → esm2022}/lib/display/tree/tree.component.mjs +135 -135
- package/{esm2020 → esm2022}/lib/display/view-overlay/view-overlay.component.mjs +58 -58
- package/{esm2020 → esm2022}/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -32
- package/{esm2020 → esm2022}/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -111
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +166 -0
- package/{esm2020 → esm2022}/lib/shared/display/pipes/date-display.pipe.mjs +50 -50
- package/{esm2020 → esm2022}/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -30
- package/{esm2020 → esm2022}/lib/shared/display/pipes/relative-date.pipe.mjs +62 -62
- package/{esm2020 → esm2022}/lib/shared/display/pipes/row-count.pipe.mjs +48 -48
- package/{esm2020 → esm2022}/lib/shared/display/pipes/time-display.pipe.mjs +41 -41
- package/esm2022/lib/shared/display.mjs +6 -0
- package/esm2022/lib/shared/form-group.helper.mjs +67 -0
- package/{esm2020 → esm2022}/lib/shared/json-helper.mjs +18 -18
- package/esm2022/lib/shared/lodash-helper.mjs +52 -0
- package/{esm2020 → esm2022}/lib/shared/page/page-base/page-base.component.mjs +387 -387
- package/{esm2020 → esm2022}/lib/shared/page/page-statuses.mjs +22 -22
- package/{esm2020 → esm2022}/lib/shared/page/page-title/page-title.component.mjs +23 -23
- package/{esm2020 → esm2022}/lib/shared/page/page-view/page-view.component.mjs +147 -147
- package/{esm2020 → esm2022}/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2020 → esm2022}/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2020 → esm2022}/lib/shared/testing/page-base-component-test-helper.spec.mjs +37 -37
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
- package/{esm2020 → esm2022}/lib/shared/testing/public-mocks.spec.mjs +148 -148
- package/{esm2020 → esm2022}/lib/shared/testing/spy-factory.spec.mjs +39 -39
- package/{esm2020 → esm2022}/lib/shared/testing/translation-mocks.spec.mjs +56 -56
- package/{esm2020 → esm2022}/lib/shared/user-preference.service.mjs +17 -17
- package/{esm2020 → esm2022}/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -246
- package/{esm2020 → esm2022}/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -68
- package/{esm2020 → esm2022}/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -18
- package/{esm2020 → esm2022}/public-api.mjs +114 -114
- package/{fesm2020 → fesm2022}/energycap-components.mjs +11797 -11793
- package/fesm2022/energycap-components.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/components.module.d.ts +91 -91
- package/lib/controls/banner/banner.component.d.ts +50 -50
- package/lib/controls/button/button.component.d.ts +78 -78
- package/lib/controls/button/copy-button-base.directive.d.ts +20 -20
- package/lib/controls/button/copy-button.directive.d.ts +14 -14
- package/lib/controls/button/copy-table-button.directive.d.ts +19 -19
- package/lib/controls/calendar/calendar-item.component.d.ts +17 -17
- package/lib/controls/calendar/calendar.component.d.ts +54 -54
- package/lib/controls/calendar/calendar.types.d.ts +7 -7
- package/lib/controls/checkbox/checkbox.component.d.ts +65 -65
- package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +25 -25
- package/lib/controls/combobox/combobox.component.d.ts +418 -418
- package/lib/controls/date-input/date-input.component.d.ts +80 -80
- package/lib/controls/dropdown/dropdown.component.d.ts +161 -161
- package/lib/controls/file-upload/file-upload.component.d.ts +124 -124
- package/lib/controls/form-control/form-control.component.d.ts +30 -30
- package/lib/controls/form-control-base.d.ts +110 -110
- package/lib/controls/form-control-label/form-control-label.component.d.ts +73 -73
- package/lib/controls/form-group/form-group.component.d.ts +105 -105
- package/lib/controls/help-popover/help-popover.component.d.ts +11 -11
- package/lib/controls/item-picker/item-picker.component.d.ts +164 -164
- package/lib/controls/link-button/link-button.component.d.ts +5 -5
- package/lib/controls/menu/menu.component.d.ts +255 -255
- package/lib/controls/navigation/link-item.d.ts +32 -32
- package/lib/controls/navigation/nav-group.d.ts +18 -18
- package/lib/controls/navigation/nav-item-active.directive.d.ts +42 -42
- package/lib/controls/navigation/nav-item.d.ts +31 -31
- package/lib/controls/numericbox/numericbox.component.d.ts +148 -148
- package/lib/controls/popover/popover.component.d.ts +51 -51
- package/lib/controls/radio-button/radio-button-option.d.ts +19 -19
- package/lib/controls/radio-button/radio-button.component.d.ts +53 -53
- package/lib/controls/select/select.component.d.ts +44 -44
- package/lib/controls/tabs/tabs.component.d.ts +30 -30
- package/lib/controls/textbox/textbox.component.d.ts +107 -107
- package/lib/core/cache.service.d.ts +33 -33
- package/lib/core/custom-validators.d.ts +20 -20
- package/lib/core/date-time-helper.d.ts +101 -101
- package/lib/core/error.service.d.ts +20 -20
- package/lib/core/router-helper.service.d.ts +48 -48
- package/lib/core/scroll.service.d.ts +36 -36
- package/lib/core/telemetry-tracker.service.d.ts +13 -13
- package/lib/core/telemetry.service.d.ts +31 -31
- package/lib/core/validation-message.service.d.ts +26 -26
- package/lib/core/validation-patterns.d.ts +22 -22
- package/lib/core/window.service.d.ts +116 -116
- package/lib/display/app-bar/app-bar.component.d.ts +20 -20
- package/lib/display/avatar/avatar.component.d.ts +35 -35
- package/lib/display/avatar/avatar.service.d.ts +24 -24
- package/lib/display/confirm/confirm.component.d.ts +123 -123
- package/lib/display/dialog/dialog-content.d.ts +19 -19
- package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +32 -32
- package/lib/display/dialog/dialog-types.d.ts +130 -130
- package/lib/display/dialog/dialog.component.d.ts +120 -120
- package/lib/display/dialog/dialog.service.d.ts +48 -48
- package/lib/display/help/help-types.d.ts +33 -33
- package/lib/display/hierarchy/hierarchy-base.d.ts +97 -97
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +53 -53
- package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +34 -34
- package/lib/display/item-display/item-display.component.d.ts +43 -43
- package/lib/display/json-display/json-display.component.d.ts +16 -16
- package/lib/display/resizable/resizable-base.d.ts +67 -67
- package/lib/display/resizable/resizable.component.d.ts +31 -31
- package/lib/display/spinner/spinner.component.d.ts +5 -5
- package/lib/display/splash/splash.component.d.ts +16 -16
- package/lib/display/splash/splash.service.d.ts +22 -22
- package/lib/display/table/resizable-column.component.d.ts +10 -10
- package/lib/display/table/resizable-table.directive.d.ts +93 -93
- package/lib/display/table/searchable-table.component.d.ts +206 -206
- package/lib/display/table/table-detail-row.component.d.ts +8 -8
- package/lib/display/table/table-locked-column.component.d.ts +20 -20
- package/lib/display/table/table-master-header-row.component.d.ts +9 -9
- package/lib/display/table/table-master-row.component.d.ts +113 -113
- package/lib/display/table/table-pagination.component.d.ts +91 -91
- package/lib/display/table/table-selectable-row.component.d.ts +102 -102
- package/lib/display/table/table.component.d.ts +121 -121
- package/lib/display/tags/tag.d.ts +18 -18
- package/lib/display/tags/tags.component.d.ts +48 -48
- package/lib/display/toast/toast/toast.component.d.ts +23 -23
- package/lib/display/toast/toast-types.d.ts +24 -24
- package/lib/display/toast/toast.service.d.ts +20 -20
- package/lib/display/toast/toaster/toaster.component.d.ts +35 -35
- package/lib/display/tooltip/tooltip.component.d.ts +70 -70
- package/lib/display/tooltip/tooltip.service.d.ts +16 -16
- package/lib/display/tooltip-directive/tooltip.directive.d.ts +44 -44
- package/lib/display/tour/tour-types.d.ts +70 -70
- package/lib/display/tour/tour.component.d.ts +147 -147
- package/lib/display/tour/tour.service.d.ts +38 -38
- package/lib/display/tree/tree.component.d.ts +75 -75
- package/lib/display/view-overlay/view-overlay.component.d.ts +38 -38
- package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +14 -14
- package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +60 -60
- package/lib/shared/directives/popup/popup-container.directive.d.ts +101 -101
- package/lib/shared/display/pipes/date-display.pipe.d.ts +21 -21
- package/lib/shared/display/pipes/highlight-text.pipe.d.ts +9 -9
- package/lib/shared/display/pipes/relative-date.pipe.d.ts +36 -36
- package/lib/shared/display/pipes/row-count.pipe.d.ts +23 -23
- package/lib/shared/display/pipes/time-display.pipe.d.ts +18 -18
- package/lib/shared/display.d.ts +42 -42
- package/lib/shared/form-group.helper.d.ts +31 -31
- package/lib/shared/json-helper.d.ts +7 -7
- package/lib/shared/lodash-helper.d.ts +18 -18
- package/lib/shared/page/page-base/page-base.component.d.ts +259 -259
- package/lib/shared/page/page-statuses.d.ts +13 -13
- package/lib/shared/page/page-title/page-title.component.d.ts +9 -9
- package/lib/shared/page/page-view/page-view.component.d.ts +102 -102
- package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +4 -4
- package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +4 -4
- package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +30 -30
- package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +28 -28
- package/lib/shared/testing/public-mocks.spec.d.ts +90 -90
- package/lib/shared/testing/spy-factory.spec.d.ts +27 -27
- package/lib/shared/testing/translation-mocks.spec.d.ts +30 -30
- package/lib/shared/user-preference.service.d.ts +13 -13
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +134 -134
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +27 -27
- package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +10 -10
- package/package.json +12 -18
- package/public-api.d.ts +111 -111
- package/schematics/rxjs-7-upgrade/index.d.ts +3 -3
- package/schematics/rxjs-7-upgrade/index.js +67 -67
- package/schematics/rxjs-7-upgrade/schema.d.ts +4 -4
- package/schematics/rxjs-7-upgrade/schema.js +2 -2
- package/schematics/utilities/typescript.d.ts +7 -7
- package/schematics/utilities/typescript.js +41 -41
- package/schematics/utilities/workspace.d.ts +8 -8
- package/schematics/utilities/workspace.js +71 -71
- package/esm2020/lib/core/custom-validators.mjs +0 -29
- package/esm2020/lib/core/date-time-helper.mjs +0 -220
- package/esm2020/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +0 -163
- package/esm2020/lib/shared/display.mjs +0 -6
- package/esm2020/lib/shared/form-group.helper.mjs +0 -67
- package/esm2020/lib/shared/lodash-helper.mjs +0 -51
- package/esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/fesm2015/energycap-components.mjs +0 -12211
- package/fesm2015/energycap-components.mjs.map +0 -1
- package/fesm2020/energycap-components.mjs.map +0 -1
@@ -1,140 +1,140 @@
|
|
1
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
2
|
-
import { merge, Subject } from 'rxjs';
|
3
|
-
import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
|
4
|
-
import { FormControlBase } from "../form-control-base";
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "../../core/validation-message.service";
|
7
|
-
import * as i2 from "../../shared/form-group.helper";
|
8
|
-
import * as i3 from "@angular/common";
|
9
|
-
import * as i4 from "@angular/forms";
|
10
|
-
import * as i5 from "../help-popover/help-popover.component";
|
11
|
-
import * as i6 from "@ngx-translate/core";
|
12
|
-
export class CheckboxComponent extends FormControlBase {
|
13
|
-
constructor(validationMessageService, formGroupHelper) {
|
14
|
-
super(validationMessageService, formGroupHelper);
|
15
|
-
this.validationMessageService = validationMessageService;
|
16
|
-
this.formGroupHelper = formGroupHelper;
|
17
|
-
/**
|
18
|
-
* The name of the checkbox input element
|
19
|
-
*/
|
20
|
-
this.name = '';
|
21
|
-
/**
|
22
|
-
* Determines whether to ignore or include disabled dependent checkboxes in the check to determine the checkbox state.
|
23
|
-
*/
|
24
|
-
this.ignoreDisabledDependents = true;
|
25
|
-
/**
|
26
|
-
* If the checkbox is a master checkbox (i.e. it has a dependentCheckboxesGroup),
|
27
|
-
* indeterminate is true if there are some checked dependents and some unchecked dependents.
|
28
|
-
*/
|
29
|
-
this.indeterminate = false;
|
30
|
-
//Used to prevent valueChanges loops in the master checkbox and dependent checkboxes value changes.
|
31
|
-
this.ignoreCall = false;
|
32
|
-
/** Fired whenever the dependent checkboxes are changed to clear out subscriptions to the previous dependents */
|
33
|
-
this.resetDependentSubscriptions = new Subject();
|
34
|
-
}
|
35
|
-
ngAfterViewInit() {
|
36
|
-
if (this.autofocus) {
|
37
|
-
this.inputElement.nativeElement.focus();
|
38
|
-
}
|
39
|
-
}
|
40
|
-
ngOnChanges(changes) {
|
41
|
-
if (changes.dependentCheckboxesGroup) {
|
42
|
-
this.setupDependents();
|
43
|
-
}
|
44
|
-
}
|
45
|
-
dispatchEvent(event) {
|
46
|
-
if (event.type === 'click' && !this.formModel.disabled) {
|
47
|
-
this.formModel.patchValue(!this.formModel.value);
|
48
|
-
}
|
49
|
-
}
|
50
|
-
/**
|
51
|
-
* Create watchers that allow the master and dependent checkbox states to stay in sync as the user interacts with them.
|
52
|
-
* Dependents can update the master when their values change and the master updates dependents when the value changes.
|
53
|
-
*/
|
54
|
-
setupDependents() {
|
55
|
-
if (!this.dependentCheckboxesGroup) {
|
56
|
-
return;
|
57
|
-
}
|
58
|
-
// Remove any subscriptions to previous dependents
|
59
|
-
this.resetDependentSubscriptions.next();
|
60
|
-
//Extract the values (i.e. the checkboxes) from the FormGroup controls key-value map and return them.
|
61
|
-
let dependentCheckboxes = Object.values(this.dependentCheckboxesGroup.controls);
|
62
|
-
this.updateMasterState(dependentCheckboxes);
|
63
|
-
//When the master value changes, we set all its dependents to that value.
|
64
|
-
//We also set indeterminate to false since we know that all dependents will either be checked or unchecked.
|
65
|
-
this.formModel.valueChanges.pipe(distinctUntilChanged(), takeUntil(merge(this.componentDestroyed, this.resetDependentSubscriptions))).subscribe((value) => {
|
66
|
-
if (!this.ignoreCall) {
|
67
|
-
this.ignoreCall = true; //Ignore any value changes calls on the dependents to prevent a loop.
|
68
|
-
dependentCheckboxes.forEach(checkbox => {
|
69
|
-
if (!checkbox.disabled || !this.ignoreDisabledDependents) {
|
70
|
-
checkbox.setValue(value);
|
71
|
-
}
|
72
|
-
});
|
73
|
-
this.indeterminate = false;
|
74
|
-
this.ignoreCall = false;
|
75
|
-
}
|
76
|
-
});
|
77
|
-
//When a dependent value changes, we need to reevaluate the master state.
|
78
|
-
//We are subscribing to the form models directly instead of the entire group because we found that adding checkboxes to
|
79
|
-
// more than one form group causes only the last group to emit valueChanges events.
|
80
|
-
//That prevented combined row-master and table-master setups from working properly.
|
81
|
-
dependentCheckboxes.forEach(checkbox => {
|
82
|
-
checkbox.valueChanges.pipe(distinctUntilChanged(), takeUntil(merge(this.componentDestroyed, this.resetDependentSubscriptions))).subscribe((value) => {
|
83
|
-
if (value !== true && value !== false) {
|
84
|
-
console.error(`The value ${value} is not true or false, which are the only supported values for FormControls in the dependentCheckboxesGroup`);
|
85
|
-
return;
|
86
|
-
}
|
87
|
-
if (!this.ignoreCall) {
|
88
|
-
this.ignoreCall = true; //Ignore any value changes calls on the master to prevent a loop.
|
89
|
-
this.updateMasterState(dependentCheckboxes);
|
90
|
-
this.ignoreCall = false;
|
91
|
-
}
|
92
|
-
});
|
93
|
-
});
|
94
|
-
}
|
95
|
-
/**
|
96
|
-
* If all dependents are true, the master should be true and determinate.
|
97
|
-
* If all dependents are false, the master should be false and determinate.
|
98
|
-
* If some dependents are true and some dependents are false, the master should be false and indeterminate.
|
99
|
-
*
|
100
|
-
* If ignoreDisabledDependents is true, does not include the disabled dependents when checking values
|
101
|
-
*/
|
102
|
-
updateMasterState(dependentCheckboxes) {
|
103
|
-
let dependentsToCheck = [];
|
104
|
-
if (this.ignoreDisabledDependents) {
|
105
|
-
dependentsToCheck = dependentCheckboxes.filter(checkbox => checkbox.enabled);
|
106
|
-
}
|
107
|
-
else {
|
108
|
-
dependentsToCheck = dependentCheckboxes;
|
109
|
-
}
|
110
|
-
let isTrue = (checkbox) => { return checkbox.value === true; };
|
111
|
-
if (dependentsToCheck.every(isTrue)) {
|
112
|
-
this.formModel.setValue(true);
|
113
|
-
this.indeterminate = false;
|
114
|
-
}
|
115
|
-
else if (dependentsToCheck.some(isTrue)) {
|
116
|
-
this.formModel.setValue(false);
|
117
|
-
this.indeterminate = true;
|
118
|
-
}
|
119
|
-
else {
|
120
|
-
this.formModel.setValue(false);
|
121
|
-
this.indeterminate = false;
|
122
|
-
}
|
123
|
-
}
|
124
|
-
}
|
125
|
-
|
126
|
-
|
127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
128
|
-
type: Component,
|
129
|
-
args: [{ selector: 'ec-checkbox', template: "<div class=\"control\">\r\n <label class=\"checkbox\"\r\n [ngClass]=\"{'is-disabled': formModel.disabled, 'no-label': !label, 'is-readonly': readonly}\">\r\n <input id=\"{{id}}_input\"\r\n #checkboxInput\r\n class='input'\r\n [class.indeterminate]=\"indeterminate\"\r\n [attr.id]=\"inputId\"\r\n [attr.name]=\"name\"\r\n type=\"checkbox\"\r\n tabindex=\"{{tabindex}}\"\r\n [formControl]=\"formModel\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n <i class=\"ec-icon icon-check\"></i>\r\n\r\n <span id=\"{{id}}_label\"\r\n *ngIf=\"label\"\r\n class=\"label\">\r\n <span [innerHtml]=\"label | translate\"></span>\r\n <ec-help-popover id=\"{{id}}_helpPopover\"\r\n *ngIf=\"helpPopover\"\r\n class=\"d-inline-block my-n2 mx-n1\"\r\n text=\"{{helpPopover | translate}}\"\r\n contentPosition=\"{{helpPopoverPosition}}\">\r\n </ec-help-popover>\r\n </span>\r\n </label>\r\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}:host(.w-auto){width:auto}.checkbox{cursor:pointer;display:inline-flex;margin-bottom:0;position:relative}.checkbox.is-disabled{cursor:default}.input{margin-top:.5rem;opacity:0;position:absolute;z-index:-1}.input:not(:checked)+.ec-icon{color:var(--ec-form-control-border-color)}.input:not(:checked)+.ec-icon:before{display:none}.input.indeterminate+.ec-icon,.input:indeterminate+.ec-icon{color:var(--ec-color-interactive)}.input.indeterminate+.ec-icon:before,.input:indeterminate+.ec-icon:before{content:\"\";background-color:currentColor;display:block;width:10px;height:3px}.input:focus+.ec-icon{color:var(--ec-color-interactive);box-shadow:var(--ec-form-control-box-shadow-focus);border-color:var(--ec-form-control-border-color-focus)}.input:disabled+.ec-icon{color:var(--ec-form-control-color-disabled);background-color:var(--ec-form-control-background-color-disabled);border-color:var(--ec-form-control-border-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.input:disabled~.label{color:var(--ec-form-control-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.ec-icon{background-color:var(--ec-form-control-background-color);background-clip:padding-box;border:1px solid currentColor;color:var(--ec-color-interactive);margin-top:.5rem;flex:none;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;height:1em;width:1em;border-radius:.125rem}.ec-icon:before{font-size:.6875em}.label{line-height:1.25rem;padding:.375rem 0;margin-left:.5rem;min-height:2rem;height:auto}.checkbox.is-readonly{pointer-events:none}.checkbox.is-readonly .input{opacity:0}.checkbox.is-readonly .ec-icon{background-color:var(--ec-form-control-background-color-readonly);border-color:var(--ec-form-control-border-color-readonly)}.checkbox.is-readonly .label,.checkbox.is-readonly .ec-icon{opacity:1;color:var(--ec-form-control-color)}.no-label .input,.no-label .icon-check{margin-top:0}\n"] }]
|
130
|
-
}], ctorParameters: function () { return [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }]; }, propDecorators: { name: [{
|
131
|
-
type: Input
|
132
|
-
}], dependentCheckboxesGroup: [{
|
133
|
-
type: Input
|
134
|
-
}], ignoreDisabledDependents: [{
|
135
|
-
type: Input
|
136
|
-
}], inputElement: [{
|
137
|
-
type: ViewChild,
|
138
|
-
args: ['checkboxInput', { static: true }]
|
139
|
-
}] } });
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQTRCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQVV2RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQXdDcEQsWUFDWSx3QkFBa0QsRUFDbEQsZUFBZ0M7UUFFMUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBSHZDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBeEM1Qzs7V0FFRztRQUNhLFNBQUksR0FBVyxFQUFFLENBQUM7UUFhbEM7O1dBRUc7UUFDYSw2QkFBd0IsR0FBWSxJQUFJLENBQUM7UUFPekQ7OztXQUdHO1FBQ0ksa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFdEMsbUdBQW1HO1FBQzNGLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFcEMsZ0hBQWdIO1FBQ3hHLGdDQUEyQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFPMUQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUks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QUFuRSxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdmFsaWRhdGlvbi1tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbGlja2FibGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2RpcmVjdGl2ZXMvY2xpY2stYXJlYS1mb3IvY2xpY2stYXJlYS1mb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwSGVscGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xCYXNlIH0gZnJvbSBcIi4uL2Zvcm0tY29udHJvbC1iYXNlXCI7XHJcblxyXG5leHBvcnQgdHlwZSBDaGVja2JveFN0YXRlID0gJ3VuY2hlY2tlZCcgfCAnaW5kZXRlcm1pbmF0ZScgfCAnY2hlY2tlZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWNoZWNrYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbXBvbmVudCBleHRlbmRzIEZvcm1Db250cm9sQmFzZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENsaWNrYWJsZUVsZW1lbnQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjaGVja2JveCBpbnB1dCBlbGVtZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBvYmplY3Qgd2l0aCBhIGNvbGxlY3Rpb24gb2YgRm9ybUNvbnRyb2xzIHdobyBjYW4gb25seSBoYXZlIGEgdmFsdWUgb2YgdHJ1ZSBvciBmYWxzZS5cclxuICAgKiBBIEZvcm1Hcm91cCBvciBGb3JtQXJyYXkgd29yayBmaW5lLCBvciBhIGN1c3RvbSBvYmplY3QgcmVmZXJlbmNlIGlzIHBvc3NpYmxlIHRvb1xyXG4gICAqIFRoZSBtYXN0ZXIgY2hlY2tib3ggd2lsbCByZWF0dGFjaCB0byBkZXBlbmRlbnQgY29udHJvbHMgYW55IHRpbWUgdGhpcyByZWZlcmVuY2UgY2hhbmdlc1xyXG4gICAqIFRoZSBjb250cm9scyBzaG91bGQgYmUgZmxhdCAoaS5lLiBpZiB1c2luZyBhIEZvcm1Hcm91cCB0aGVuIGl0IGNhbm5vdCBoYXZlIG5lc3RlZCBGb3JtR3JvdXBzIHdpdGhpbiBpdCkuXHJcbiAgICogXHJcbiAgICogRm9yIGV4YW1wbGU6IFxyXG4gICAqIGRlcGVuZGVudENoZWNrYm94ZXNHcm91cCA9IG5ldyBGb3JtR3JvdXAoe2NoaWxkMTogbmV3IEZvcm1Db250cm9sKGZhbHNlKSwgY2hpbGQyOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLCBjaGlsZDM6IG5ldyBGb3JtQ29udHJvbChmYWxzZSl9KVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZXBlbmRlbnRDaGVja2JveGVzR3JvdXA/OiB7Y29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdIHwge1trZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbH19O1xyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gaWdub3JlIG9yIGluY2x1ZGUgZGlzYWJsZWQgZGVwZW5kZW50IGNoZWNrYm94ZXMgaW4gdGhlIGNoZWNrIHRvIGRldGVybWluZSB0aGUgY2hlY2tib3ggc3RhdGUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGlnbm9yZURpc2FibGVkRGVwZW5kZW50czogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgY2hlY2tib3ggaW5wdXQgY29udHJvbFxyXG4gICovXHJcbiAgQFZpZXdDaGlsZCgnY2hlY2tib3hJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIHByb3RlY3RlZCBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgY2hlY2tib3ggaXMgYSBtYXN0ZXIgY2hlY2tib3ggKGkuZS4gaXQgaGFzIGEgZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwKSxcclxuICAgKiBpbmRldGVybWluYXRlIGlzIHRydWUgaWYgdGhlcmUgYXJlIHNvbWUgY2hlY2tlZCBkZXBlbmRlbnRzIGFuZCBzb21lIHVuY2hlY2tlZCBkZXBlbmRlbnRzLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbmRldGVybWluYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vVXNlZCB0byBwcmV2ZW50IHZhbHVlQ2hhbmdlcyBsb29wcyBpbiB0aGUgbWFzdGVyIGNoZWNrYm94IGFuZCBkZXBlbmRlbnQgY2hlY2tib3hlcyB2YWx1ZSBjaGFuZ2VzLlxyXG4gIHByaXZhdGUgaWdub3JlQ2FsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogRmlyZWQgd2hlbmV2ZXIgdGhlIGRlcGVuZGVudCBjaGVja2JveGVzIGFyZSBjaGFuZ2VkIHRvIGNsZWFyIG91dCBzdWJzY3JpcHRpb25zIHRvIHRoZSBwcmV2aW91cyBkZXBlbmRlbnRzICovXHJcbiAgcHJpdmF0ZSByZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2U6IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlclxyXG4gICkge1xyXG4gICAgc3VwZXIodmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLCBmb3JtR3JvdXBIZWxwZXIpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLmRlcGVuZGVudENoZWNrYm94ZXNHcm91cCkge1xyXG4gICAgICB0aGlzLnNldHVwRGVwZW5kZW50cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRpc3BhdGNoRXZlbnQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiAhdGhpcy5mb3JtTW9kZWwuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5mb3JtTW9kZWwucGF0Y2hWYWx1ZSghdGhpcy5mb3JtTW9kZWwudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIHdhdGNoZXJzIHRoYXQgYWxsb3cgdGhlIG1hc3RlciBhbmQgZGVwZW5kZW50IGNoZWNrYm94IHN0YXRlcyB0byBzdGF5IGluIHN5bmMgYXMgdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggdGhlbS4gXHJcbiAgICogRGVwZW5kZW50cyBjYW4gdXBkYXRlIHRoZSBtYXN0ZXIgd2hlbiB0aGVpciB2YWx1ZXMgY2hhbmdlIGFuZCB0aGUgbWFzdGVyIHVwZGF0ZXMgZGVwZW5kZW50cyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLiBcclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwRGVwZW5kZW50cygpIHtcclxuICAgICAgaWYoIXRoaXMuZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwKSB7cmV0dXJufVxyXG5cclxuICAgICAgLy8gUmVtb3ZlIGFueSBzdWJzY3JpcHRpb25zIHRvIHByZXZpb3VzIGRlcGVuZGVudHNcclxuICAgICAgdGhpcy5yZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMubmV4dCgpO1xyXG5cclxuICAgICAgLy9FeHRyYWN0IHRoZSB2YWx1ZXMgKGkuZS4gdGhlIGNoZWNrYm94ZXMpIGZyb20gdGhlIEZvcm1Hcm91cCBjb250cm9scyBrZXktdmFsdWUgbWFwIGFuZCByZXR1cm4gdGhlbS4gXHJcbiAgICAgIGxldCBkZXBlbmRlbnRDaGVja2JveGVzOiBBYnN0cmFjdENvbnRyb2xbXSA9IE9iamVjdC52YWx1ZXModGhpcy5kZXBlbmRlbnRDaGVja2JveGVzR3JvdXAuY29udHJvbHMpO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVNYXN0ZXJTdGF0ZShkZXBlbmRlbnRDaGVja2JveGVzKTtcclxuXHJcbiAgICAgIC8vV2hlbiB0aGUgbWFzdGVyIHZhbHVlIGNoYW5nZXMsIHdlIHNldCBhbGwgaXRzIGRlcGVuZGVudHMgdG8gdGhhdCB2YWx1ZS5cclxuICAgICAgLy9XZSBhbHNvIHNldCBpbmRldGVybWluYXRlIHRvIGZhbHNlIHNpbmNlIHdlIGtub3cgdGhhdCBhbGwgZGVwZW5kZW50cyB3aWxsIGVpdGhlciBiZSBjaGVja2VkIG9yIHVuY2hlY2tlZC5cclxuICAgICAgdGhpcy5mb3JtTW9kZWwudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICB0YWtlVW50aWwobWVyZ2UodGhpcy5jb21wb25lbnREZXN0cm95ZWQsIHRoaXMucmVzZXREZXBlbmRlbnRTdWJzY3JpcHRpb25zKSlcclxuICAgICAgKS5zdWJzY3JpYmUoKHZhbHVlOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYoIXRoaXMuaWdub3JlQ2FsbCkge1xyXG4gICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gdHJ1ZTsgLy9JZ25vcmUgYW55IHZhbHVlIGNoYW5nZXMgY2FsbHMgb24gdGhlIGRlcGVuZGVudHMgdG8gcHJldmVudCBhIGxvb3AuXHJcbiAgICAgICAgICBkZXBlbmRlbnRDaGVja2JveGVzLmZvckVhY2goY2hlY2tib3ggPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNoZWNrYm94LmRpc2FibGVkIHx8ICF0aGlzLmlnbm9yZURpc2FibGVkRGVwZW5kZW50cykge1xyXG4gICAgICAgICAgICAgIGNoZWNrYm94LnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgLy9XaGVuIGEgZGVwZW5kZW50IHZhbHVlIGNoYW5nZXMsIHdlIG5lZWQgdG8gcmVldmFsdWF0ZSB0aGUgbWFzdGVyIHN0YXRlLlxyXG4gICAgICAvL1dlIGFyZSBzdWJzY3JpYmluZyB0byB0aGUgZm9ybSBtb2RlbHMgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGdyb3VwIGJlY2F1c2Ugd2UgZm91bmQgdGhhdCBhZGRpbmcgY2hlY2tib3hlcyB0byBcclxuICAgICAgLy8gIG1vcmUgdGhhbiBvbmUgZm9ybSBncm91cCBjYXVzZXMgb25seSB0aGUgbGFzdCBncm91cCB0byBlbWl0IHZhbHVlQ2hhbmdlcyBldmVudHMuIFxyXG4gICAgICAvL1RoYXQgcHJldmVudGVkIGNvbWJpbmVkIHJvdy1tYXN0ZXIgYW5kIHRhYmxlLW1hc3RlciBzZXR1cHMgZnJvbSB3b3JraW5nIHByb3Blcmx5LlxyXG4gICAgICBkZXBlbmRlbnRDaGVja2JveGVzLmZvckVhY2goY2hlY2tib3ggPT4ge1xyXG4gICAgICAgICAgY2hlY2tib3gudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbChtZXJnZSh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCwgdGhpcy5yZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMpKVxyXG4gICAgICAgICAgKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHZhbHVlICE9PSB0cnVlICYmIHZhbHVlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIHZhbHVlICR7dmFsdWV9IGlzIG5vdCB0cnVlIG9yIGZhbHNlLCB3aGljaCBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlcyBmb3IgRm9ybUNvbnRyb2xzIGluIHRoZSBkZXBlbmRlbnRDaGVja2JveGVzR3JvdXBgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZighdGhpcy5pZ25vcmVDYWxsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gdHJ1ZTsgLy9JZ25vcmUgYW55IHZhbHVlIGNoYW5nZXMgY2FsbHMgb24gdGhlIG1hc3RlciB0byBwcmV2ZW50IGEgbG9vcC5cclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1hc3RlclN0YXRlKGRlcGVuZGVudENoZWNrYm94ZXMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuaWdub3JlQ2FsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIElmIGFsbCBkZXBlbmRlbnRzIGFyZSB0cnVlLCB0aGUgbWFzdGVyIHNob3VsZCBiZSB0cnVlIGFuZCBkZXRlcm1pbmF0ZS5cclxuICAgKiBJZiBhbGwgZGVwZW5kZW50cyBhcmUgZmFsc2UsIHRoZSBtYXN0ZXIgc2hvdWxkIGJlIGZhbHNlIGFuZCBkZXRlcm1pbmF0ZS5cclxuICAgKiBJZiBzb21lIGRlcGVuZGVudHMgYXJlIHRydWUgYW5kIHNvbWUgZGVwZW5kZW50cyBhcmUgZmFsc2UsIHRoZSBtYXN0ZXIgc2hvdWxkIGJlIGZhbHNlIGFuZCBpbmRldGVybWluYXRlLlxyXG4gICAqIFxyXG4gICAqIElmIGlnbm9yZURpc2FibGVkRGVwZW5kZW50cyBpcyB0cnVlLCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkaXNhYmxlZCBkZXBlbmRlbnRzIHdoZW4gY2hlY2tpbmcgdmFsdWVzXHJcbiAgKi9cclxuICBwcml2YXRlIHVwZGF0ZU1hc3RlclN0YXRlKGRlcGVuZGVudENoZWNrYm94ZXM6IEFic3RyYWN0Q29udHJvbFtdKSB7XHJcbiAgICBsZXQgZGVwZW5kZW50c1RvQ2hlY2sgPSBbXTtcclxuICAgIGlmICh0aGlzLmlnbm9yZURpc2FibGVkRGVwZW5kZW50cykge1xyXG4gICAgICBkZXBlbmRlbnRzVG9DaGVjayA9IGRlcGVuZGVudENoZWNrYm94ZXMuZmlsdGVyKGNoZWNrYm94ID0+IGNoZWNrYm94LmVuYWJsZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVwZW5kZW50c1RvQ2hlY2sgPSBkZXBlbmRlbnRDaGVja2JveGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpc1RydWUgPSAoY2hlY2tib3g6IEFic3RyYWN0Q29udHJvbCkgPT4ge3JldHVybiBjaGVja2JveC52YWx1ZSA9PT0gdHJ1ZX07XHJcbiAgICBpZihkZXBlbmRlbnRzVG9DaGVjay5ldmVyeShpc1RydWUpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYoZGVwZW5kZW50c1RvQ2hlY2suc29tZShpc1RydWUpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnNldFZhbHVlKGZhbHNlKTtcclxuICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59IiwiPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cclxuICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWRpc2FibGVkJzogZm9ybU1vZGVsLmRpc2FibGVkLCAnbm8tbGFiZWwnOiAhbGFiZWwsICdpcy1yZWFkb25seSc6IHJlYWRvbmx5fVwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBpZD1cInt7aWR9fV9pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICNjaGVja2JveElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSdpbnB1dCdcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmluZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cInt7dGFiaW5kZXh9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtTW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci5jZGtGb2N1c0luaXRpYWxdPVwiYXV0b2ZvY3VzIHx8IG51bGxcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImVjLWljb24gaWNvbi1jaGVja1wiPjwvaT5cclxuXHJcbiAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJ7e2lkfX1fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJsYWJlbCB8IHRyYW5zbGF0ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgPGVjLWhlbHAtcG9wb3ZlciBpZD1cInt7aWR9fV9oZWxwUG9wb3ZlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWxwUG9wb3ZlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1ibG9jayBteS1uMiBteC1uMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cInt7aGVscFBvcG92ZXIgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFBvc2l0aW9uPVwie3toZWxwUG9wb3ZlclBvc2l0aW9ufX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgPC9lYy1oZWxwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgPC9sYWJlbD5cclxuPC9kaXY+Il19
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
2
|
+
import { merge, Subject } from 'rxjs';
|
3
|
+
import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
|
4
|
+
import { FormControlBase } from "../form-control-base";
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
import * as i1 from "../../core/validation-message.service";
|
7
|
+
import * as i2 from "../../shared/form-group.helper";
|
8
|
+
import * as i3 from "@angular/common";
|
9
|
+
import * as i4 from "@angular/forms";
|
10
|
+
import * as i5 from "../help-popover/help-popover.component";
|
11
|
+
import * as i6 from "@ngx-translate/core";
|
12
|
+
export class CheckboxComponent extends FormControlBase {
|
13
|
+
constructor(validationMessageService, formGroupHelper) {
|
14
|
+
super(validationMessageService, formGroupHelper);
|
15
|
+
this.validationMessageService = validationMessageService;
|
16
|
+
this.formGroupHelper = formGroupHelper;
|
17
|
+
/**
|
18
|
+
* The name of the checkbox input element
|
19
|
+
*/
|
20
|
+
this.name = '';
|
21
|
+
/**
|
22
|
+
* Determines whether to ignore or include disabled dependent checkboxes in the check to determine the checkbox state.
|
23
|
+
*/
|
24
|
+
this.ignoreDisabledDependents = true;
|
25
|
+
/**
|
26
|
+
* If the checkbox is a master checkbox (i.e. it has a dependentCheckboxesGroup),
|
27
|
+
* indeterminate is true if there are some checked dependents and some unchecked dependents.
|
28
|
+
*/
|
29
|
+
this.indeterminate = false;
|
30
|
+
//Used to prevent valueChanges loops in the master checkbox and dependent checkboxes value changes.
|
31
|
+
this.ignoreCall = false;
|
32
|
+
/** Fired whenever the dependent checkboxes are changed to clear out subscriptions to the previous dependents */
|
33
|
+
this.resetDependentSubscriptions = new Subject();
|
34
|
+
}
|
35
|
+
ngAfterViewInit() {
|
36
|
+
if (this.autofocus) {
|
37
|
+
this.inputElement.nativeElement.focus();
|
38
|
+
}
|
39
|
+
}
|
40
|
+
ngOnChanges(changes) {
|
41
|
+
if (changes.dependentCheckboxesGroup) {
|
42
|
+
this.setupDependents();
|
43
|
+
}
|
44
|
+
}
|
45
|
+
dispatchEvent(event) {
|
46
|
+
if (event.type === 'click' && !this.formModel.disabled) {
|
47
|
+
this.formModel.patchValue(!this.formModel.value);
|
48
|
+
}
|
49
|
+
}
|
50
|
+
/**
|
51
|
+
* Create watchers that allow the master and dependent checkbox states to stay in sync as the user interacts with them.
|
52
|
+
* Dependents can update the master when their values change and the master updates dependents when the value changes.
|
53
|
+
*/
|
54
|
+
setupDependents() {
|
55
|
+
if (!this.dependentCheckboxesGroup) {
|
56
|
+
return;
|
57
|
+
}
|
58
|
+
// Remove any subscriptions to previous dependents
|
59
|
+
this.resetDependentSubscriptions.next();
|
60
|
+
//Extract the values (i.e. the checkboxes) from the FormGroup controls key-value map and return them.
|
61
|
+
let dependentCheckboxes = Object.values(this.dependentCheckboxesGroup.controls);
|
62
|
+
this.updateMasterState(dependentCheckboxes);
|
63
|
+
//When the master value changes, we set all its dependents to that value.
|
64
|
+
//We also set indeterminate to false since we know that all dependents will either be checked or unchecked.
|
65
|
+
this.formModel.valueChanges.pipe(distinctUntilChanged(), takeUntil(merge(this.componentDestroyed, this.resetDependentSubscriptions))).subscribe((value) => {
|
66
|
+
if (!this.ignoreCall) {
|
67
|
+
this.ignoreCall = true; //Ignore any value changes calls on the dependents to prevent a loop.
|
68
|
+
dependentCheckboxes.forEach(checkbox => {
|
69
|
+
if (!checkbox.disabled || !this.ignoreDisabledDependents) {
|
70
|
+
checkbox.setValue(value);
|
71
|
+
}
|
72
|
+
});
|
73
|
+
this.indeterminate = false;
|
74
|
+
this.ignoreCall = false;
|
75
|
+
}
|
76
|
+
});
|
77
|
+
//When a dependent value changes, we need to reevaluate the master state.
|
78
|
+
//We are subscribing to the form models directly instead of the entire group because we found that adding checkboxes to
|
79
|
+
// more than one form group causes only the last group to emit valueChanges events.
|
80
|
+
//That prevented combined row-master and table-master setups from working properly.
|
81
|
+
dependentCheckboxes.forEach(checkbox => {
|
82
|
+
checkbox.valueChanges.pipe(distinctUntilChanged(), takeUntil(merge(this.componentDestroyed, this.resetDependentSubscriptions))).subscribe((value) => {
|
83
|
+
if (value !== true && value !== false) {
|
84
|
+
console.error(`The value ${value} is not true or false, which are the only supported values for FormControls in the dependentCheckboxesGroup`);
|
85
|
+
return;
|
86
|
+
}
|
87
|
+
if (!this.ignoreCall) {
|
88
|
+
this.ignoreCall = true; //Ignore any value changes calls on the master to prevent a loop.
|
89
|
+
this.updateMasterState(dependentCheckboxes);
|
90
|
+
this.ignoreCall = false;
|
91
|
+
}
|
92
|
+
});
|
93
|
+
});
|
94
|
+
}
|
95
|
+
/**
|
96
|
+
* If all dependents are true, the master should be true and determinate.
|
97
|
+
* If all dependents are false, the master should be false and determinate.
|
98
|
+
* If some dependents are true and some dependents are false, the master should be false and indeterminate.
|
99
|
+
*
|
100
|
+
* If ignoreDisabledDependents is true, does not include the disabled dependents when checking values
|
101
|
+
*/
|
102
|
+
updateMasterState(dependentCheckboxes) {
|
103
|
+
let dependentsToCheck = [];
|
104
|
+
if (this.ignoreDisabledDependents) {
|
105
|
+
dependentsToCheck = dependentCheckboxes.filter(checkbox => checkbox.enabled);
|
106
|
+
}
|
107
|
+
else {
|
108
|
+
dependentsToCheck = dependentCheckboxes;
|
109
|
+
}
|
110
|
+
let isTrue = (checkbox) => { return checkbox.value === true; };
|
111
|
+
if (dependentsToCheck.every(isTrue)) {
|
112
|
+
this.formModel.setValue(true);
|
113
|
+
this.indeterminate = false;
|
114
|
+
}
|
115
|
+
else if (dependentsToCheck.some(isTrue)) {
|
116
|
+
this.formModel.setValue(false);
|
117
|
+
this.indeterminate = true;
|
118
|
+
}
|
119
|
+
else {
|
120
|
+
this.formModel.setValue(false);
|
121
|
+
this.indeterminate = false;
|
122
|
+
}
|
123
|
+
}
|
124
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxComponent, deps: [{ token: i1.ValidationMessageService }, { token: i2.FormGroupHelper }], target: i0.ɵɵFactoryTarget.Component }); }
|
125
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckboxComponent, selector: "ec-checkbox", inputs: { name: "name", dependentCheckboxesGroup: "dependentCheckboxesGroup", ignoreDisabledDependents: "ignoreDisabledDependents" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["checkboxInput"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"control\">\r\n <label class=\"checkbox\"\r\n [ngClass]=\"{'is-disabled': formModel.disabled, 'no-label': !label, 'is-readonly': readonly}\">\r\n <input id=\"{{id}}_input\"\r\n #checkboxInput\r\n class='input'\r\n [class.indeterminate]=\"indeterminate\"\r\n [attr.id]=\"inputId\"\r\n [attr.name]=\"name\"\r\n type=\"checkbox\"\r\n tabindex=\"{{tabindex}}\"\r\n [formControl]=\"formModel\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n <i class=\"ec-icon icon-check\"></i>\r\n\r\n <span id=\"{{id}}_label\"\r\n *ngIf=\"label\"\r\n class=\"label\">\r\n <span [innerHtml]=\"label | translate\"></span>\r\n <ec-help-popover id=\"{{id}}_helpPopover\"\r\n *ngIf=\"helpPopover\"\r\n class=\"d-inline-block my-n2 mx-n1\"\r\n text=\"{{helpPopover | translate}}\"\r\n contentPosition=\"{{helpPopoverPosition}}\">\r\n </ec-help-popover>\r\n </span>\r\n </label>\r\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}:host(.w-auto){width:auto}.checkbox{cursor:pointer;display:inline-flex;margin-bottom:0;position:relative}.checkbox.is-disabled{cursor:default}.input{margin-top:.5rem;opacity:0;position:absolute;z-index:-1}.input:not(:checked)+.ec-icon{color:var(--ec-form-control-border-color)}.input:not(:checked)+.ec-icon:before{display:none}.input.indeterminate+.ec-icon,.input:indeterminate+.ec-icon{color:var(--ec-color-interactive)}.input.indeterminate+.ec-icon:before,.input:indeterminate+.ec-icon:before{content:\"\";background-color:currentColor;display:block;width:10px;height:3px}.input:focus+.ec-icon{color:var(--ec-color-interactive);box-shadow:var(--ec-form-control-box-shadow-focus);border-color:var(--ec-form-control-border-color-focus)}.input:disabled+.ec-icon{color:var(--ec-form-control-color-disabled);background-color:var(--ec-form-control-background-color-disabled);border-color:var(--ec-form-control-border-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.input:disabled~.label{color:var(--ec-form-control-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.ec-icon{background-color:var(--ec-form-control-background-color);background-clip:padding-box;border:1px solid currentColor;color:var(--ec-color-interactive);margin-top:.5rem;flex:none;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;height:1em;width:1em;border-radius:.125rem}.ec-icon:before{font-size:.6875em}.label{line-height:1.25rem;padding:.375rem 0;margin-left:.5rem;min-height:2rem;height:auto}.checkbox.is-readonly{pointer-events:none}.checkbox.is-readonly .input{opacity:0}.checkbox.is-readonly .ec-icon{background-color:var(--ec-form-control-background-color-readonly);border-color:var(--ec-form-control-border-color-readonly)}.checkbox.is-readonly .label,.checkbox.is-readonly .ec-icon{opacity:1;color:var(--ec-form-control-color)}.no-label .input,.no-label .icon-check{margin-top:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.HelpPopoverComponent, selector: "ec-help-popover", inputs: ["id", "text", "contentPosition", "maxWidth"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
|
126
|
+
}
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxComponent, decorators: [{
|
128
|
+
type: Component,
|
129
|
+
args: [{ selector: 'ec-checkbox', template: "<div class=\"control\">\r\n <label class=\"checkbox\"\r\n [ngClass]=\"{'is-disabled': formModel.disabled, 'no-label': !label, 'is-readonly': readonly}\">\r\n <input id=\"{{id}}_input\"\r\n #checkboxInput\r\n class='input'\r\n [class.indeterminate]=\"indeterminate\"\r\n [attr.id]=\"inputId\"\r\n [attr.name]=\"name\"\r\n type=\"checkbox\"\r\n tabindex=\"{{tabindex}}\"\r\n [formControl]=\"formModel\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n <i class=\"ec-icon icon-check\"></i>\r\n\r\n <span id=\"{{id}}_label\"\r\n *ngIf=\"label\"\r\n class=\"label\">\r\n <span [innerHtml]=\"label | translate\"></span>\r\n <ec-help-popover id=\"{{id}}_helpPopover\"\r\n *ngIf=\"helpPopover\"\r\n class=\"d-inline-block my-n2 mx-n1\"\r\n text=\"{{helpPopover | translate}}\"\r\n contentPosition=\"{{helpPopoverPosition}}\">\r\n </ec-help-popover>\r\n </span>\r\n </label>\r\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}:host(.w-auto){width:auto}.checkbox{cursor:pointer;display:inline-flex;margin-bottom:0;position:relative}.checkbox.is-disabled{cursor:default}.input{margin-top:.5rem;opacity:0;position:absolute;z-index:-1}.input:not(:checked)+.ec-icon{color:var(--ec-form-control-border-color)}.input:not(:checked)+.ec-icon:before{display:none}.input.indeterminate+.ec-icon,.input:indeterminate+.ec-icon{color:var(--ec-color-interactive)}.input.indeterminate+.ec-icon:before,.input:indeterminate+.ec-icon:before{content:\"\";background-color:currentColor;display:block;width:10px;height:3px}.input:focus+.ec-icon{color:var(--ec-color-interactive);box-shadow:var(--ec-form-control-box-shadow-focus);border-color:var(--ec-form-control-border-color-focus)}.input:disabled+.ec-icon{color:var(--ec-form-control-color-disabled);background-color:var(--ec-form-control-background-color-disabled);border-color:var(--ec-form-control-border-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.input:disabled~.label{color:var(--ec-form-control-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.ec-icon{background-color:var(--ec-form-control-background-color);background-clip:padding-box;border:1px solid currentColor;color:var(--ec-color-interactive);margin-top:.5rem;flex:none;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;height:1em;width:1em;border-radius:.125rem}.ec-icon:before{font-size:.6875em}.label{line-height:1.25rem;padding:.375rem 0;margin-left:.5rem;min-height:2rem;height:auto}.checkbox.is-readonly{pointer-events:none}.checkbox.is-readonly .input{opacity:0}.checkbox.is-readonly .ec-icon{background-color:var(--ec-form-control-background-color-readonly);border-color:var(--ec-form-control-border-color-readonly)}.checkbox.is-readonly .label,.checkbox.is-readonly .ec-icon{opacity:1;color:var(--ec-form-control-color)}.no-label .input,.no-label .icon-check{margin-top:0}\n"] }]
|
130
|
+
}], ctorParameters: function () { return [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }]; }, propDecorators: { name: [{
|
131
|
+
type: Input
|
132
|
+
}], dependentCheckboxesGroup: [{
|
133
|
+
type: Input
|
134
|
+
}], ignoreDisabledDependents: [{
|
135
|
+
type: Input
|
136
|
+
}], inputElement: [{
|
137
|
+
type: ViewChild,
|
138
|
+
args: ['checkboxInput', { static: true }]
|
139
|
+
}] } });
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQTRCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQVV2RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQXdDcEQsWUFDWSx3QkFBa0QsRUFDbEQsZUFBZ0M7UUFFMUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBSHZDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBeEM1Qzs7V0FFRztRQUNhLFNBQUksR0FBVyxFQUFFLENBQUM7UUFhbEM7O1dBRUc7UUFDYSw2QkFBd0IsR0FBWSxJQUFJLENBQUM7UUFPekQ7OztXQUdHO1FBQ0ksa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFdEMsbUdBQW1HO1FBQzNGLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFcEMsZ0hBQWdIO1FBQ3hHLGdDQUEyQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFPMUQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUks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QUFuRSxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdmFsaWRhdGlvbi1tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbGlja2FibGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2RpcmVjdGl2ZXMvY2xpY2stYXJlYS1mb3IvY2xpY2stYXJlYS1mb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwSGVscGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xCYXNlIH0gZnJvbSBcIi4uL2Zvcm0tY29udHJvbC1iYXNlXCI7XHJcblxyXG5leHBvcnQgdHlwZSBDaGVja2JveFN0YXRlID0gJ3VuY2hlY2tlZCcgfCAnaW5kZXRlcm1pbmF0ZScgfCAnY2hlY2tlZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWNoZWNrYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbXBvbmVudCBleHRlbmRzIEZvcm1Db250cm9sQmFzZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENsaWNrYWJsZUVsZW1lbnQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjaGVja2JveCBpbnB1dCBlbGVtZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBvYmplY3Qgd2l0aCBhIGNvbGxlY3Rpb24gb2YgRm9ybUNvbnRyb2xzIHdobyBjYW4gb25seSBoYXZlIGEgdmFsdWUgb2YgdHJ1ZSBvciBmYWxzZS5cclxuICAgKiBBIEZvcm1Hcm91cCBvciBGb3JtQXJyYXkgd29yayBmaW5lLCBvciBhIGN1c3RvbSBvYmplY3QgcmVmZXJlbmNlIGlzIHBvc3NpYmxlIHRvb1xyXG4gICAqIFRoZSBtYXN0ZXIgY2hlY2tib3ggd2lsbCByZWF0dGFjaCB0byBkZXBlbmRlbnQgY29udHJvbHMgYW55IHRpbWUgdGhpcyByZWZlcmVuY2UgY2hhbmdlc1xyXG4gICAqIFRoZSBjb250cm9scyBzaG91bGQgYmUgZmxhdCAoaS5lLiBpZiB1c2luZyBhIEZvcm1Hcm91cCB0aGVuIGl0IGNhbm5vdCBoYXZlIG5lc3RlZCBGb3JtR3JvdXBzIHdpdGhpbiBpdCkuXHJcbiAgICogXHJcbiAgICogRm9yIGV4YW1wbGU6IFxyXG4gICAqIGRlcGVuZGVudENoZWNrYm94ZXNHcm91cCA9IG5ldyBGb3JtR3JvdXAoe2NoaWxkMTogbmV3IEZvcm1Db250cm9sKGZhbHNlKSwgY2hpbGQyOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLCBjaGlsZDM6IG5ldyBGb3JtQ29udHJvbChmYWxzZSl9KVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZXBlbmRlbnRDaGVja2JveGVzR3JvdXA/OiB7Y29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdIHwge1trZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbH19O1xyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gaWdub3JlIG9yIGluY2x1ZGUgZGlzYWJsZWQgZGVwZW5kZW50IGNoZWNrYm94ZXMgaW4gdGhlIGNoZWNrIHRvIGRldGVybWluZSB0aGUgY2hlY2tib3ggc3RhdGUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGlnbm9yZURpc2FibGVkRGVwZW5kZW50czogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgY2hlY2tib3ggaW5wdXQgY29udHJvbFxyXG4gICovXHJcbiAgQFZpZXdDaGlsZCgnY2hlY2tib3hJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIHByb3RlY3RlZCBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgY2hlY2tib3ggaXMgYSBtYXN0ZXIgY2hlY2tib3ggKGkuZS4gaXQgaGFzIGEgZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwKSxcclxuICAgKiBpbmRldGVybWluYXRlIGlzIHRydWUgaWYgdGhlcmUgYXJlIHNvbWUgY2hlY2tlZCBkZXBlbmRlbnRzIGFuZCBzb21lIHVuY2hlY2tlZCBkZXBlbmRlbnRzLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbmRldGVybWluYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vVXNlZCB0byBwcmV2ZW50IHZhbHVlQ2hhbmdlcyBsb29wcyBpbiB0aGUgbWFzdGVyIGNoZWNrYm94IGFuZCBkZXBlbmRlbnQgY2hlY2tib3hlcyB2YWx1ZSBjaGFuZ2VzLlxyXG4gIHByaXZhdGUgaWdub3JlQ2FsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogRmlyZWQgd2hlbmV2ZXIgdGhlIGRlcGVuZGVudCBjaGVja2JveGVzIGFyZSBjaGFuZ2VkIHRvIGNsZWFyIG91dCBzdWJzY3JpcHRpb25zIHRvIHRoZSBwcmV2aW91cyBkZXBlbmRlbnRzICovXHJcbiAgcHJpdmF0ZSByZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2U6IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlclxyXG4gICkge1xyXG4gICAgc3VwZXIodmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLCBmb3JtR3JvdXBIZWxwZXIpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLmRlcGVuZGVudENoZWNrYm94ZXNHcm91cCkge1xyXG4gICAgICB0aGlzLnNldHVwRGVwZW5kZW50cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRpc3BhdGNoRXZlbnQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiAhdGhpcy5mb3JtTW9kZWwuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5mb3JtTW9kZWwucGF0Y2hWYWx1ZSghdGhpcy5mb3JtTW9kZWwudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIHdhdGNoZXJzIHRoYXQgYWxsb3cgdGhlIG1hc3RlciBhbmQgZGVwZW5kZW50IGNoZWNrYm94IHN0YXRlcyB0byBzdGF5IGluIHN5bmMgYXMgdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggdGhlbS4gXHJcbiAgICogRGVwZW5kZW50cyBjYW4gdXBkYXRlIHRoZSBtYXN0ZXIgd2hlbiB0aGVpciB2YWx1ZXMgY2hhbmdlIGFuZCB0aGUgbWFzdGVyIHVwZGF0ZXMgZGVwZW5kZW50cyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLiBcclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwRGVwZW5kZW50cygpIHtcclxuICAgICAgaWYoIXRoaXMuZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwKSB7cmV0dXJufVxyXG5cclxuICAgICAgLy8gUmVtb3ZlIGFueSBzdWJzY3JpcHRpb25zIHRvIHByZXZpb3VzIGRlcGVuZGVudHNcclxuICAgICAgdGhpcy5yZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMubmV4dCgpO1xyXG5cclxuICAgICAgLy9FeHRyYWN0IHRoZSB2YWx1ZXMgKGkuZS4gdGhlIGNoZWNrYm94ZXMpIGZyb20gdGhlIEZvcm1Hcm91cCBjb250cm9scyBrZXktdmFsdWUgbWFwIGFuZCByZXR1cm4gdGhlbS4gXHJcbiAgICAgIGxldCBkZXBlbmRlbnRDaGVja2JveGVzOiBBYnN0cmFjdENvbnRyb2xbXSA9IE9iamVjdC52YWx1ZXModGhpcy5kZXBlbmRlbnRDaGVja2JveGVzR3JvdXAuY29udHJvbHMpO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVNYXN0ZXJTdGF0ZShkZXBlbmRlbnRDaGVja2JveGVzKTtcclxuXHJcbiAgICAgIC8vV2hlbiB0aGUgbWFzdGVyIHZhbHVlIGNoYW5nZXMsIHdlIHNldCBhbGwgaXRzIGRlcGVuZGVudHMgdG8gdGhhdCB2YWx1ZS5cclxuICAgICAgLy9XZSBhbHNvIHNldCBpbmRldGVybWluYXRlIHRvIGZhbHNlIHNpbmNlIHdlIGtub3cgdGhhdCBhbGwgZGVwZW5kZW50cyB3aWxsIGVpdGhlciBiZSBjaGVja2VkIG9yIHVuY2hlY2tlZC5cclxuICAgICAgdGhpcy5mb3JtTW9kZWwudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICB0YWtlVW50aWwobWVyZ2UodGhpcy5jb21wb25lbnREZXN0cm95ZWQsIHRoaXMucmVzZXREZXBlbmRlbnRTdWJzY3JpcHRpb25zKSlcclxuICAgICAgKS5zdWJzY3JpYmUoKHZhbHVlOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYoIXRoaXMuaWdub3JlQ2FsbCkge1xyXG4gICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gdHJ1ZTsgLy9JZ25vcmUgYW55IHZhbHVlIGNoYW5nZXMgY2FsbHMgb24gdGhlIGRlcGVuZGVudHMgdG8gcHJldmVudCBhIGxvb3AuXHJcbiAgICAgICAgICBkZXBlbmRlbnRDaGVja2JveGVzLmZvckVhY2goY2hlY2tib3ggPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNoZWNrYm94LmRpc2FibGVkIHx8ICF0aGlzLmlnbm9yZURpc2FibGVkRGVwZW5kZW50cykge1xyXG4gICAgICAgICAgICAgIGNoZWNrYm94LnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgLy9XaGVuIGEgZGVwZW5kZW50IHZhbHVlIGNoYW5nZXMsIHdlIG5lZWQgdG8gcmVldmFsdWF0ZSB0aGUgbWFzdGVyIHN0YXRlLlxyXG4gICAgICAvL1dlIGFyZSBzdWJzY3JpYmluZyB0byB0aGUgZm9ybSBtb2RlbHMgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGdyb3VwIGJlY2F1c2Ugd2UgZm91bmQgdGhhdCBhZGRpbmcgY2hlY2tib3hlcyB0byBcclxuICAgICAgLy8gIG1vcmUgdGhhbiBvbmUgZm9ybSBncm91cCBjYXVzZXMgb25seSB0aGUgbGFzdCBncm91cCB0byBlbWl0IHZhbHVlQ2hhbmdlcyBldmVudHMuIFxyXG4gICAgICAvL1RoYXQgcHJldmVudGVkIGNvbWJpbmVkIHJvdy1tYXN0ZXIgYW5kIHRhYmxlLW1hc3RlciBzZXR1cHMgZnJvbSB3b3JraW5nIHByb3Blcmx5LlxyXG4gICAgICBkZXBlbmRlbnRDaGVja2JveGVzLmZvckVhY2goY2hlY2tib3ggPT4ge1xyXG4gICAgICAgICAgY2hlY2tib3gudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbChtZXJnZSh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCwgdGhpcy5yZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMpKVxyXG4gICAgICAgICAgKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHZhbHVlICE9PSB0cnVlICYmIHZhbHVlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIHZhbHVlICR7dmFsdWV9IGlzIG5vdCB0cnVlIG9yIGZhbHNlLCB3aGljaCBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlcyBmb3IgRm9ybUNvbnRyb2xzIGluIHRoZSBkZXBlbmRlbnRDaGVja2JveGVzR3JvdXBgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZighdGhpcy5pZ25vcmVDYWxsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gdHJ1ZTsgLy9JZ25vcmUgYW55IHZhbHVlIGNoYW5nZXMgY2FsbHMgb24gdGhlIG1hc3RlciB0byBwcmV2ZW50IGEgbG9vcC5cclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1hc3RlclN0YXRlKGRlcGVuZGVudENoZWNrYm94ZXMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuaWdub3JlQ2FsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIElmIGFsbCBkZXBlbmRlbnRzIGFyZSB0cnVlLCB0aGUgbWFzdGVyIHNob3VsZCBiZSB0cnVlIGFuZCBkZXRlcm1pbmF0ZS5cclxuICAgKiBJZiBhbGwgZGVwZW5kZW50cyBhcmUgZmFsc2UsIHRoZSBtYXN0ZXIgc2hvdWxkIGJlIGZhbHNlIGFuZCBkZXRlcm1pbmF0ZS5cclxuICAgKiBJZiBzb21lIGRlcGVuZGVudHMgYXJlIHRydWUgYW5kIHNvbWUgZGVwZW5kZW50cyBhcmUgZmFsc2UsIHRoZSBtYXN0ZXIgc2hvdWxkIGJlIGZhbHNlIGFuZCBpbmRldGVybWluYXRlLlxyXG4gICAqIFxyXG4gICAqIElmIGlnbm9yZURpc2FibGVkRGVwZW5kZW50cyBpcyB0cnVlLCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkaXNhYmxlZCBkZXBlbmRlbnRzIHdoZW4gY2hlY2tpbmcgdmFsdWVzXHJcbiAgKi9cclxuICBwcml2YXRlIHVwZGF0ZU1hc3RlclN0YXRlKGRlcGVuZGVudENoZWNrYm94ZXM6IEFic3RyYWN0Q29udHJvbFtdKSB7XHJcbiAgICBsZXQgZGVwZW5kZW50c1RvQ2hlY2sgPSBbXTtcclxuICAgIGlmICh0aGlzLmlnbm9yZURpc2FibGVkRGVwZW5kZW50cykge1xyXG4gICAgICBkZXBlbmRlbnRzVG9DaGVjayA9IGRlcGVuZGVudENoZWNrYm94ZXMuZmlsdGVyKGNoZWNrYm94ID0+IGNoZWNrYm94LmVuYWJsZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVwZW5kZW50c1RvQ2hlY2sgPSBkZXBlbmRlbnRDaGVja2JveGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpc1RydWUgPSAoY2hlY2tib3g6IEFic3RyYWN0Q29udHJvbCkgPT4ge3JldHVybiBjaGVja2JveC52YWx1ZSA9PT0gdHJ1ZX07XHJcbiAgICBpZihkZXBlbmRlbnRzVG9DaGVjay5ldmVyeShpc1RydWUpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYoZGVwZW5kZW50c1RvQ2hlY2suc29tZShpc1RydWUpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnNldFZhbHVlKGZhbHNlKTtcclxuICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59IiwiPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cclxuICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWRpc2FibGVkJzogZm9ybU1vZGVsLmRpc2FibGVkLCAnbm8tbGFiZWwnOiAhbGFiZWwsICdpcy1yZWFkb25seSc6IHJlYWRvbmx5fVwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBpZD1cInt7aWR9fV9pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICNjaGVja2JveElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSdpbnB1dCdcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmluZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cInt7dGFiaW5kZXh9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtTW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci5jZGtGb2N1c0luaXRpYWxdPVwiYXV0b2ZvY3VzIHx8IG51bGxcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImVjLWljb24gaWNvbi1jaGVja1wiPjwvaT5cclxuXHJcbiAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJ7e2lkfX1fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJsYWJlbCB8IHRyYW5zbGF0ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgPGVjLWhlbHAtcG9wb3ZlciBpZD1cInt7aWR9fV9oZWxwUG9wb3ZlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWxwUG9wb3ZlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1ibG9jayBteS1uMiBteC1uMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cInt7aGVscFBvcG92ZXIgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFBvc2l0aW9uPVwie3toZWxwUG9wb3ZlclBvc2l0aW9ufX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgPC9lYy1oZWxwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgPC9sYWJlbD5cclxuPC9kaXY+Il19
|
package/{esm2020 → esm2022}/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs
RENAMED
@@ -1,38 +1,38 @@
|
|
1
|
-
import { Component, Input, EventEmitter, Output } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
import * as i1 from "../button/button.component";
|
4
|
-
export class CollapsibleToggleComponent {
|
5
|
-
constructor() {
|
6
|
-
/**
|
7
|
-
* The expanded state.
|
8
|
-
* The toggle icon is changed in the template based on the value of expanded.
|
9
|
-
*/
|
10
|
-
this.expanded = false;
|
11
|
-
/**
|
12
|
-
* Emits the value of expanded to the parent component for two-way binding
|
13
|
-
*/
|
14
|
-
this.expandedChange = new EventEmitter();
|
15
|
-
}
|
16
|
-
/**
|
17
|
-
* On click, toggle the value of exanded and emit the current value
|
18
|
-
*/
|
19
|
-
onToggle() {
|
20
|
-
this.expanded = !this.expanded;
|
21
|
-
this.expandedChange.emit(this.expanded);
|
22
|
-
}
|
23
|
-
}
|
24
|
-
|
25
|
-
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
27
|
-
type: Component,
|
28
|
-
args: [{ selector: 'ec-collapsible-toggle', template: `<ec-button id="{{id}}_button" type="icon" icon="icon-angle-down {{expanded ? '' : 'rotate-270'}}" tabindex="{{tabindex}}" (clicked)="onToggle()"></ec-button>`, styles: [":host{width:1.5rem;height:1.5rem;display:inline-flex;justify-content:center;align-items:center}ec-button::ng-deep .ec-button-icon{width:1.25rem;height:1.25rem}\n"] }]
|
29
|
-
}], propDecorators: { id: [{
|
30
|
-
type: Input
|
31
|
-
}], expanded: [{
|
32
|
-
type: Input
|
33
|
-
}], tabindex: [{
|
34
|
-
type: Input
|
35
|
-
}], expandedChange: [{
|
36
|
-
type: Output
|
37
|
-
}] } });
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
1
|
+
import { Component, Input, EventEmitter, Output } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "../button/button.component";
|
4
|
+
export class CollapsibleToggleComponent {
|
5
|
+
constructor() {
|
6
|
+
/**
|
7
|
+
* The expanded state.
|
8
|
+
* The toggle icon is changed in the template based on the value of expanded.
|
9
|
+
*/
|
10
|
+
this.expanded = false;
|
11
|
+
/**
|
12
|
+
* Emits the value of expanded to the parent component for two-way binding
|
13
|
+
*/
|
14
|
+
this.expandedChange = new EventEmitter();
|
15
|
+
}
|
16
|
+
/**
|
17
|
+
* On click, toggle the value of exanded and emit the current value
|
18
|
+
*/
|
19
|
+
onToggle() {
|
20
|
+
this.expanded = !this.expanded;
|
21
|
+
this.expandedChange.emit(this.expanded);
|
22
|
+
}
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CollapsibleToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CollapsibleToggleComponent, selector: "ec-collapsible-toggle", inputs: { id: "id", expanded: "expanded", tabindex: "tabindex" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: `<ec-button id="{{id}}_button" type="icon" icon="icon-angle-down {{expanded ? '' : 'rotate-270'}}" tabindex="{{tabindex}}" (clicked)="onToggle()"></ec-button>`, isInline: true, styles: [":host{width:1.5rem;height:1.5rem;display:inline-flex;justify-content:center;align-items:center}ec-button::ng-deep .ec-button-icon{width:1.25rem;height:1.25rem}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }] }); }
|
25
|
+
}
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CollapsibleToggleComponent, decorators: [{
|
27
|
+
type: Component,
|
28
|
+
args: [{ selector: 'ec-collapsible-toggle', template: `<ec-button id="{{id}}_button" type="icon" icon="icon-angle-down {{expanded ? '' : 'rotate-270'}}" tabindex="{{tabindex}}" (clicked)="onToggle()"></ec-button>`, styles: [":host{width:1.5rem;height:1.5rem;display:inline-flex;justify-content:center;align-items:center}ec-button::ng-deep .ec-button-icon{width:1.25rem;height:1.25rem}\n"] }]
|
29
|
+
}], propDecorators: { id: [{
|
30
|
+
type: Input
|
31
|
+
}], expanded: [{
|
32
|
+
type: Input
|
33
|
+
}], tabindex: [{
|
34
|
+
type: Input
|
35
|
+
}], expandedChange: [{
|
36
|
+
type: Output
|
37
|
+
}] } });
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jb2xsYXBzaWJsZS10b2dnbGUvY29sbGFwc2libGUtdG9nZ2xlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPdkUsTUFBTSxPQUFPLDBCQUEwQjtJQUx2QztRQVlFOzs7V0FHRztRQUNhLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFLMUM7O1dBRUc7UUFDYyxtQkFBYyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO0tBU3RGO0lBUEM7O09BRUc7SUFDSSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7K0dBM0JVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDhLQUgzQiwrSkFBK0o7OzRGQUc5SiwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsdUJBQXVCLFlBQ3ZCLCtKQUErSjs4QkFRekosRUFBRTtzQkFBakIsS0FBSztnQkFNVSxRQUFRO3NCQUF2QixLQUFLO2dCQUdVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBS1csY0FBYztzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWNvbGxhcHNpYmxlLXRvZ2dsZScsXHJcbiAgdGVtcGxhdGU6IGA8ZWMtYnV0dG9uIGlkPVwie3tpZH19X2J1dHRvblwiIHR5cGU9XCJpY29uXCIgaWNvbj1cImljb24tYW5nbGUtZG93biB7e2V4cGFuZGVkID8gJycgOiAncm90YXRlLTI3MCd9fVwiIHRhYmluZGV4PVwie3t0YWJpbmRleH19XCIgKGNsaWNrZWQpPVwib25Ub2dnbGUoKVwiPjwvZWMtYnV0dG9uPmAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29sbGFwc2libGUtdG9nZ2xlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbGxhcHNpYmxlVG9nZ2xlQ29tcG9uZW50IHtcclxuXHJcbiAgLyoqIFxyXG4gICAqIElkZW50aWZpZXIgdG8gcGFzcyB0byB0aGUgYnV0dG9uIFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZD86IHN0cmluZztcclxuXHJcbiAgLyoqIFxyXG4gICAqIFRoZSBleHBhbmRlZCBzdGF0ZS4gXHJcbiAgICogVGhlIHRvZ2dsZSBpY29uIGlzIGNoYW5nZWQgaW4gdGhlIHRlbXBsYXRlIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBleHBhbmRlZC4gXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBCdXR0b24gdGFiaW5kZXggKi9cclxuICBASW5wdXQoKSBwdWJsaWMgdGFiaW5kZXg/OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSB2YWx1ZSBvZiBleHBhbmRlZCB0byB0aGUgcGFyZW50IGNvbXBvbmVudCBmb3IgdHdvLXdheSBiaW5kaW5nXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBleHBhbmRlZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIE9uIGNsaWNrLCB0b2dnbGUgdGhlIHZhbHVlIG9mIGV4YW5kZWQgYW5kIGVtaXQgdGhlIGN1cnJlbnQgdmFsdWVcclxuICAgKi9cclxuICBwdWJsaWMgb25Ub2dnbGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XHJcbiAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRlZCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|