@energycap/components 0.41.0 → 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,151 +1,151 @@
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
2
|
-
import { Subject } from "rxjs";
|
3
|
-
import { takeUntil } from 'rxjs/operators';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "../core/validation-message.service";
|
6
|
-
import * as i2 from "../shared/form-group.helper";
|
7
|
-
/**
|
8
|
-
* Base class for Reactive Form Controls, containing ECI-specific shared properties
|
9
|
-
*/
|
10
|
-
export class FormControlBase {
|
11
|
-
/**
|
12
|
-
* Creates an instance of FormControlBase.
|
13
|
-
*/
|
14
|
-
constructor(validationMessageService, formGroupHelper) {
|
15
|
-
this.validationMessageService = validationMessageService;
|
16
|
-
this.formGroupHelper = formGroupHelper;
|
17
|
-
/**
|
18
|
-
* If true, will focus the control's input when the view is intialized
|
19
|
-
*/
|
20
|
-
this.autofocus = false;
|
21
|
-
/**
|
22
|
-
* The position of the form control label (top|bottom)
|
23
|
-
*/
|
24
|
-
this.labelPosition = "top";
|
25
|
-
/**
|
26
|
-
* The id of the component. We use this to identify a control on focus events and help.
|
27
|
-
*/
|
28
|
-
this.id = '';
|
29
|
-
/**
|
30
|
-
* The pending status of the control, can be used to tell the user the control is
|
31
|
-
* awaiting data via a spinner or animation
|
32
|
-
*/
|
33
|
-
this.pending = false;
|
34
|
-
/**
|
35
|
-
* Whether the input is a required field or not
|
36
|
-
* @todo: Sometime in the future Angular makes it sound like this will be handled via the Reactive form When that happens this property can be removed
|
37
|
-
*/
|
38
|
-
this.required = false;
|
39
|
-
/**
|
40
|
-
* The tabindex of the control
|
41
|
-
*/
|
42
|
-
this.tabindex = 0;
|
43
|
-
/**
|
44
|
-
* When a help popover is present, allows the popover to be positioned in different locations.
|
45
|
-
*/
|
46
|
-
this.helpPopoverPosition = 'top-left';
|
47
|
-
/**
|
48
|
-
* All current validation errors
|
49
|
-
*/
|
50
|
-
this.validationErrors = "";
|
51
|
-
/**
|
52
|
-
* The id of the form controls input, getnerated from the components id.
|
53
|
-
*/
|
54
|
-
this.inputId = '';
|
55
|
-
/**
|
56
|
-
* Notifies component subscriptions that component is destroyed.
|
57
|
-
* Use with `takeUntil()` when subscribing to complete subscriptions
|
58
|
-
* automatically.
|
59
|
-
*
|
60
|
-
* See:
|
61
|
-
* [RxJs]{@link http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-takeUntil}
|
62
|
-
* [and this]{@link https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87}
|
63
|
-
* [and this]{@link https://netbasal.com/when-to-unsubscribe-in-angular-d61c6b21bad3}
|
64
|
-
* [and this]{@link http://brianflove.com/2016/12/11/anguar-2-unsubscribe-observables/}
|
65
|
-
*/
|
66
|
-
this.componentDestroyed = new Subject();
|
67
|
-
}
|
68
|
-
/**
|
69
|
-
* Angular onChange lifecyle hook
|
70
|
-
*/
|
71
|
-
ngOnChanges(changes) {
|
72
|
-
if (changes.readonly && changes.readonly.currentValue !== undefined) {
|
73
|
-
if (changes.readonly.currentValue === true) {
|
74
|
-
this.formModel.disable();
|
75
|
-
}
|
76
|
-
else if (changes.readonly.currentValue === false) {
|
77
|
-
this.formModel.enable();
|
78
|
-
}
|
79
|
-
}
|
80
|
-
if (changes.id && changes.id.currentValue !== undefined) {
|
81
|
-
this.inputId = this.formGroupHelper.getInputId(this.id);
|
82
|
-
}
|
83
|
-
}
|
84
|
-
/**
|
85
|
-
* Angular onInit lifecycle hook.
|
86
|
-
*/
|
87
|
-
ngOnInit() {
|
88
|
-
this.inputId = this.formGroupHelper.getInputId(this.id);
|
89
|
-
// subscribe to valueChanges Observable to take any erros and translate them
|
90
|
-
this.formModel.statusChanges.pipe(takeUntil(this.componentDestroyed)).subscribe(data => {
|
91
|
-
this.translateValidationMessages(data);
|
92
|
-
});
|
93
|
-
// (re)set validation messages
|
94
|
-
this.translateValidationMessages();
|
95
|
-
}
|
96
|
-
/**
|
97
|
-
* Angular onDestroy lifecyle hook.
|
98
|
-
* Unsubscribe from any observables
|
99
|
-
*/
|
100
|
-
ngOnDestroy() {
|
101
|
-
this.componentDestroyed.next();
|
102
|
-
this.componentDestroyed.unsubscribe();
|
103
|
-
}
|
104
|
-
/**
|
105
|
-
* Function that subscribes to the formModel's valueChanges Observable
|
106
|
-
* to take any erros and translate them
|
107
|
-
*/
|
108
|
-
async translateValidationMessages(data) {
|
109
|
-
if (!this.formModel) {
|
110
|
-
return;
|
111
|
-
}
|
112
|
-
const form = this.formModel;
|
113
|
-
this.validationErrors = '';
|
114
|
-
if (!form.valid) {
|
115
|
-
let messages = await this.validationMessageService.getErrorMessages(form.errors);
|
116
|
-
if (messages) {
|
117
|
-
this.validationErrors = messages.join('; ');
|
118
|
-
}
|
119
|
-
}
|
120
|
-
}
|
121
|
-
}
|
122
|
-
|
123
|
-
|
124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
125
|
-
type: Directive
|
126
|
-
}], ctorParameters: function () { return [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }]; }, propDecorators: { autofocus: [{
|
127
|
-
type: Input
|
128
|
-
}], formModel: [{
|
129
|
-
type: Input
|
130
|
-
}], label: [{
|
131
|
-
type: Input
|
132
|
-
}], labelPosition: [{
|
133
|
-
type: Input
|
134
|
-
}], id: [{
|
135
|
-
type: Input
|
136
|
-
}], pending: [{
|
137
|
-
type: Input
|
138
|
-
}], required: [{
|
139
|
-
type: Input
|
140
|
-
}], tabindex: [{
|
141
|
-
type: Input
|
142
|
-
}], readonly: [{
|
143
|
-
type: Input
|
144
|
-
}], tooltip: [{
|
145
|
-
type: Input
|
146
|
-
}], helpPopover: [{
|
147
|
-
type: Input
|
148
|
-
}], helpPopoverPosition: [{
|
149
|
-
type: Input
|
150
|
-
}] } });
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvZm9ybS1jb250cm9sLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBVTNDOztHQUVHO0FBRUgsTUFBTSxPQUFnQixlQUFlO0lBc0duQzs7T0FFRztJQUNILFlBQ1ksd0JBQWtELEVBQ2xELGVBQWdDO1FBRGhDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBeEc1Qzs7V0FFRztRQUNhLGNBQVMsR0FBYSxLQUFLLENBQUM7UUFnQjVDOztXQUVHO1FBQ2Esa0JBQWEsR0FBMEIsS0FBSyxDQUFDO1FBRzdEOztXQUVHO1FBQ2EsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUdoQzs7O1dBR0c7UUFDYSxZQUFPLEdBQWEsS0FBSyxDQUFDO1FBRzFDOzs7V0FHRztRQUNhLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFHM0M7O1dBRUc7UUFDYSxhQUFRLEdBQVksQ0FBQyxDQUFDO1FBb0J0Qzs7V0FFRztRQUNhLHdCQUFtQixHQUE0QixVQUFVLENBQUM7UUFFMUU7O1dBRUc7UUFDSSxxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFHckM7O1dBRUc7UUFDSSxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBRzdCOzs7Ozs7Ozs7O1dBVUc7UUFDUSx1QkFBa0IsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQVM5RCxDQUFDO0lBRUw7O09BRUc7SUFDSSxXQUFXLENBQUMsT0FBcUI7UUFDdEMsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUNuRSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUMxQjtpQkFBTSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEtBQUssRUFBRTtnQkFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUN6QjtTQUNGO1FBRUQsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBQztZQUN0RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6RDtJQUNILENBQUM7SUFHRDs7T0FFRztJQUNJLFFBQVE7UUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV4RCw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUMvQixTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQ25DLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QyxDQUFDLENBQUMsQ0FBQztRQUVILDhCQUE4QjtRQUM5QixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUdyQyxDQUFDO0lBR0Q7OztPQUdHO0lBQ0ksV0FBVztRQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFHRDs7O09BR0c7SUFDTyxLQUFLLENBQUMsMkJBQTJCLENBQUMsSUFBVTtRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRTVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakYsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0M7U0FDRjtJQUNILENBQUM7OzRHQTlLbUIsZUFBZTtnR0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBRHBDLFNBQVM7NklBT1EsU0FBUztzQkFBeEIsS0FBSztnQkFPVSxTQUFTO3NCQUF4QixLQUFLO2dCQU1VLEtBQUs7c0JBQXBCLEtBQUs7Z0JBTVUsYUFBYTtzQkFBNUIsS0FBSztnQkFNVSxFQUFFO3NCQUFqQixLQUFLO2dCQU9VLE9BQU87c0JBQXRCLEtBQUs7Z0JBT1UsUUFBUTtzQkFBdkIsS0FBSztnQkFNVSxRQUFRO3NCQUF2QixLQUFLO2dCQU1VLFFBQVE7c0JBQXZCLEtBQUs7Z0JBTVUsT0FBTztzQkFBdEIsS0FBSztnQkFNVSxXQUFXO3NCQUExQixLQUFLO2dCQUtVLG1CQUFtQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSB9IGZyb20gXCIuLi9jb3JlL3ZhbGlkYXRpb24tbWVzc2FnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cEhlbHBlciB9IGZyb20gJy4uL3NoYXJlZC9mb3JtLWdyb3VwLmhlbHBlcic7XHJcbmltcG9ydCB7IFBvcG92ZXJDb250ZW50UG9zaXRpb24gfSBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xyXG5cclxuXHJcblxyXG5leHBvcnQgdHlwZSBDb250cm9sTGFiZWxQb3NpdGlvbiA9IFwidG9wXCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCI7XHJcblxyXG5cclxuLyoqXHJcbiAqIEJhc2UgY2xhc3MgZm9yIFJlYWN0aXZlIEZvcm0gQ29udHJvbHMsIGNvbnRhaW5pbmcgRUNJLXNwZWNpZmljIHNoYXJlZCBwcm9wZXJ0aWVzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvcm1Db250cm9sQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIFxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIElmIHRydWUsIHdpbGwgZm9jdXMgdGhlIGNvbnRyb2wncyBpbnB1dCB3aGVuIHRoZSB2aWV3IGlzIGludGlhbGl6ZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYXV0b2ZvY3VzPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVUktb3JpZW50ZWQgZm9ybSBtb2RlbCB0aGF0IHJldGFpbnMgdGhlIHN0YXRlcyBhbmQgdmFsdWVzIG9mIHRoZSBIVE1MIGNvbnRyb2xzIG9uIHNjcmVlbi5cclxuICAgKiBDYW4gYmUgYSB7QGxpbmsgRm9ybUNvbnRyb2x9IG9yIGEge0BsaW5rIEZvcm1Hcm91cH1cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZm9ybU1vZGVsITogQWJzdHJhY3RDb250cm9sO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGZvcm0gY29udHJvbCBsYWJlbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbD86IHN0cmluZztcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgZm9ybSBjb250cm9sIGxhYmVsICh0b3B8Ym90dG9tKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbFBvc2l0aW9uPzogQ29udHJvbExhYmVsUG9zaXRpb24gPSBcInRvcFwiO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGlkIG9mIHRoZSBjb21wb25lbnQuIFdlIHVzZSB0aGlzIHRvIGlkZW50aWZ5IGEgY29udHJvbCBvbiBmb2N1cyBldmVudHMgYW5kIGhlbHAuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGlkOiBzdHJpbmcgPSAnJztcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBwZW5kaW5nIHN0YXR1cyBvZiB0aGUgY29udHJvbCwgY2FuIGJlIHVzZWQgdG8gdGVsbCB0aGUgdXNlciB0aGUgY29udHJvbCBpc1xyXG4gICAqIGF3YWl0aW5nIGRhdGEgdmlhIGEgc3Bpbm5lciBvciBhbmltYXRpb25cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcGVuZGluZz86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgcmVxdWlyZWQgZmllbGQgb3Igbm90XHJcbiAgICogQHRvZG86IFNvbWV0aW1lIGluIHRoZSBmdXR1cmUgQW5ndWxhciBtYWtlcyBpdCBzb3VuZCBsaWtlIHRoaXMgd2lsbCBiZSBoYW5kbGVkIHZpYSB0aGUgUmVhY3RpdmUgZm9ybSBXaGVuIHRoYXQgaGFwcGVucyB0aGlzIHByb3BlcnR5IGNhbiBiZSByZW1vdmVkXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHRhYmluZGV4IG9mIHRoZSBjb250cm9sXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHRhYmluZGV4PzogbnVtYmVyID0gMDtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIERpc2FibGUgdGhlIGNvbnRyb2wgYW5kIGRpc3BsYXkgdGhlIHZhbHVlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5PzogYm9vbGVhbjtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmRpdGlvbmFsbHkgc2hvdyBhIHRvb2x0aXAgb24gdGhlIGZvcm0gY29udHJvbCdzIGlucHV0LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sdGlwPzogc3RyaW5nO1xyXG5cclxuICBcclxuICAvKipcclxuICAgKiBDb25kaXRpb25hbGx5IHNob3cgYSBoZWxwIHBvcG92ZXIgbmV4dCB0byB0aGUgY29udHJvbHMgbGFiZWwuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGhlbHBQb3BvdmVyPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBXaGVuIGEgaGVscCBwb3BvdmVyIGlzIHByZXNlbnQsIGFsbG93cyB0aGUgcG9wb3ZlciB0byBiZSBwb3NpdGlvbmVkIGluIGRpZmZlcmVudCBsb2NhdGlvbnMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGhlbHBQb3BvdmVyUG9zaXRpb24/OiBQb3BvdmVyQ29udGVudFBvc2l0aW9uID0gJ3RvcC1sZWZ0JztcclxuXHJcbiAgLyoqXHJcbiAgICogQWxsIGN1cnJlbnQgdmFsaWRhdGlvbiBlcnJvcnNcclxuICAgKi9cclxuICBwdWJsaWMgdmFsaWRhdGlvbkVycm9yczogc3RyaW5nID0gXCJcIjtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBpZCBvZiB0aGUgZm9ybSBjb250cm9scyBpbnB1dCwgZ2V0bmVyYXRlZCBmcm9tIHRoZSBjb21wb25lbnRzIGlkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbnB1dElkOiBzdHJpbmcgPSAnJztcclxuXHJcblxyXG4gLyoqXHJcbiAgKiBOb3RpZmllcyBjb21wb25lbnQgc3Vic2NyaXB0aW9ucyB0aGF0IGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXHJcbiAgKiBVc2Ugd2l0aCBgdGFrZVVudGlsKClgIHdoZW4gc3Vic2NyaWJpbmcgdG8gY29tcGxldGUgc3Vic2NyaXB0aW9uc1xyXG4gICogYXV0b21hdGljYWxseS5cclxuICAqXHJcbiAgKiBTZWU6XHJcbiAgKiBbUnhKc117QGxpbmsgaHR0cDovL3JlYWN0aXZleC5pby9yeGpzL2NsYXNzL2VzNi9PYnNlcnZhYmxlLmpzfk9ic2VydmFibGUuaHRtbCNpbnN0YW5jZS1tZXRob2QtdGFrZVVudGlsfVxyXG4gICogW2FuZCB0aGlzXXtAbGluayBodHRwczovL21lZGl1bS5jb20vQGJlbmxlc2gvcnhqcy1kb250LXVuc3Vic2NyaWJlLTY3NTNlZDRmZGE4N31cclxuICAqIFthbmQgdGhpc117QGxpbmsgaHR0cHM6Ly9uZXRiYXNhbC5jb20vd2hlbi10by11bnN1YnNjcmliZS1pbi1hbmd1bGFyLWQ2MWM2YjIxYmFkM31cclxuICAqIFthbmQgdGhpc117QGxpbmsgaHR0cDovL2JyaWFuZmxvdmUuY29tLzIwMTYvMTIvMTEvYW5ndWFyLTItdW5zdWJzY3JpYmUtb2JzZXJ2YWJsZXMvfVxyXG4gICovXHJcbiAgcHJvdGVjdGVkIGNvbXBvbmVudERlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEZvcm1Db250cm9sQmFzZS5cclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2U6IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlclxyXG4gICkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuZ3VsYXIgb25DaGFuZ2UgbGlmZWN5bGUgaG9va1xyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOlNpbXBsZUNoYW5nZXMpOnZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMucmVhZG9ubHkgJiYgY2hhbmdlcy5yZWFkb25seS5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoY2hhbmdlcy5yZWFkb25seS5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5kaXNhYmxlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlcy5yZWFkb25seS5jdXJyZW50VmFsdWUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuZW5hYmxlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlcy5pZCAmJiBjaGFuZ2VzLmlkLmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKXtcclxuICAgICAgdGhpcy5pbnB1dElkID0gdGhpcy5mb3JtR3JvdXBIZWxwZXIuZ2V0SW5wdXRJZCh0aGlzLmlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEFuZ3VsYXIgb25Jbml0IGxpZmVjeWNsZSBob29rLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRJZCA9IHRoaXMuZm9ybUdyb3VwSGVscGVyLmdldElucHV0SWQodGhpcy5pZCk7XHJcbiAgICBcclxuICAgIC8vIHN1YnNjcmliZSB0byB2YWx1ZUNoYW5nZXMgT2JzZXJ2YWJsZSB0byB0YWtlIGFueSBlcnJvcyBhbmQgdHJhbnNsYXRlIHRoZW1cclxuICAgIHRoaXMuZm9ybU1vZGVsLnN0YXR1c0NoYW5nZXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkKVxyXG4gICAgKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlVmFsaWRhdGlvbk1lc3NhZ2VzKGRhdGEpXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAocmUpc2V0IHZhbGlkYXRpb24gbWVzc2FnZXNcclxuICAgIHRoaXMudHJhbnNsYXRlVmFsaWRhdGlvbk1lc3NhZ2VzKCk7XHJcblxyXG4gICAgXHJcbiAgfVxyXG4gICAgXHJcblxyXG4gIC8qKlxyXG4gICAqIEFuZ3VsYXIgb25EZXN0cm95IGxpZmVjeWxlIGhvb2suIFxyXG4gICAqIFVuc3Vic2NyaWJlIGZyb20gYW55IG9ic2VydmFibGVzXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB0aGF0IHN1YnNjcmliZXMgdG8gdGhlIGZvcm1Nb2RlbCdzIHZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlXHJcbiAgICogdG8gdGFrZSBhbnkgZXJyb3MgYW5kIHRyYW5zbGF0ZSB0aGVtXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFzeW5jIHRyYW5zbGF0ZVZhbGlkYXRpb25NZXNzYWdlcyhkYXRhPzogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybU1vZGVsKSB7IHJldHVybjsgfVxyXG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybU1vZGVsO1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyA9ICcnO1xyXG5cclxuICAgIGlmICghZm9ybS52YWxpZCkge1xyXG4gICAgICBsZXQgbWVzc2FnZXMgPSBhd2FpdCB0aGlzLnZhbGlkYXRpb25NZXNzYWdlU2VydmljZS5nZXRFcnJvck1lc3NhZ2VzKGZvcm0uZXJyb3JzKTtcclxuICAgICAgaWYgKG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzID0gbWVzc2FnZXMuam9pbignOyAnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn0iXX0=
|
1
|
+
import { Directive, Input } from '@angular/core';
|
2
|
+
import { Subject } from "rxjs";
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "../core/validation-message.service";
|
6
|
+
import * as i2 from "../shared/form-group.helper";
|
7
|
+
/**
|
8
|
+
* Base class for Reactive Form Controls, containing ECI-specific shared properties
|
9
|
+
*/
|
10
|
+
export class FormControlBase {
|
11
|
+
/**
|
12
|
+
* Creates an instance of FormControlBase.
|
13
|
+
*/
|
14
|
+
constructor(validationMessageService, formGroupHelper) {
|
15
|
+
this.validationMessageService = validationMessageService;
|
16
|
+
this.formGroupHelper = formGroupHelper;
|
17
|
+
/**
|
18
|
+
* If true, will focus the control's input when the view is intialized
|
19
|
+
*/
|
20
|
+
this.autofocus = false;
|
21
|
+
/**
|
22
|
+
* The position of the form control label (top|bottom)
|
23
|
+
*/
|
24
|
+
this.labelPosition = "top";
|
25
|
+
/**
|
26
|
+
* The id of the component. We use this to identify a control on focus events and help.
|
27
|
+
*/
|
28
|
+
this.id = '';
|
29
|
+
/**
|
30
|
+
* The pending status of the control, can be used to tell the user the control is
|
31
|
+
* awaiting data via a spinner or animation
|
32
|
+
*/
|
33
|
+
this.pending = false;
|
34
|
+
/**
|
35
|
+
* Whether the input is a required field or not
|
36
|
+
* @todo: Sometime in the future Angular makes it sound like this will be handled via the Reactive form When that happens this property can be removed
|
37
|
+
*/
|
38
|
+
this.required = false;
|
39
|
+
/**
|
40
|
+
* The tabindex of the control
|
41
|
+
*/
|
42
|
+
this.tabindex = 0;
|
43
|
+
/**
|
44
|
+
* When a help popover is present, allows the popover to be positioned in different locations.
|
45
|
+
*/
|
46
|
+
this.helpPopoverPosition = 'top-left';
|
47
|
+
/**
|
48
|
+
* All current validation errors
|
49
|
+
*/
|
50
|
+
this.validationErrors = "";
|
51
|
+
/**
|
52
|
+
* The id of the form controls input, getnerated from the components id.
|
53
|
+
*/
|
54
|
+
this.inputId = '';
|
55
|
+
/**
|
56
|
+
* Notifies component subscriptions that component is destroyed.
|
57
|
+
* Use with `takeUntil()` when subscribing to complete subscriptions
|
58
|
+
* automatically.
|
59
|
+
*
|
60
|
+
* See:
|
61
|
+
* [RxJs]{@link http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-takeUntil}
|
62
|
+
* [and this]{@link https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87}
|
63
|
+
* [and this]{@link https://netbasal.com/when-to-unsubscribe-in-angular-d61c6b21bad3}
|
64
|
+
* [and this]{@link http://brianflove.com/2016/12/11/anguar-2-unsubscribe-observables/}
|
65
|
+
*/
|
66
|
+
this.componentDestroyed = new Subject();
|
67
|
+
}
|
68
|
+
/**
|
69
|
+
* Angular onChange lifecyle hook
|
70
|
+
*/
|
71
|
+
ngOnChanges(changes) {
|
72
|
+
if (changes.readonly && changes.readonly.currentValue !== undefined) {
|
73
|
+
if (changes.readonly.currentValue === true) {
|
74
|
+
this.formModel.disable();
|
75
|
+
}
|
76
|
+
else if (changes.readonly.currentValue === false) {
|
77
|
+
this.formModel.enable();
|
78
|
+
}
|
79
|
+
}
|
80
|
+
if (changes.id && changes.id.currentValue !== undefined) {
|
81
|
+
this.inputId = this.formGroupHelper.getInputId(this.id);
|
82
|
+
}
|
83
|
+
}
|
84
|
+
/**
|
85
|
+
* Angular onInit lifecycle hook.
|
86
|
+
*/
|
87
|
+
ngOnInit() {
|
88
|
+
this.inputId = this.formGroupHelper.getInputId(this.id);
|
89
|
+
// subscribe to valueChanges Observable to take any erros and translate them
|
90
|
+
this.formModel.statusChanges.pipe(takeUntil(this.componentDestroyed)).subscribe(data => {
|
91
|
+
this.translateValidationMessages(data);
|
92
|
+
});
|
93
|
+
// (re)set validation messages
|
94
|
+
this.translateValidationMessages();
|
95
|
+
}
|
96
|
+
/**
|
97
|
+
* Angular onDestroy lifecyle hook.
|
98
|
+
* Unsubscribe from any observables
|
99
|
+
*/
|
100
|
+
ngOnDestroy() {
|
101
|
+
this.componentDestroyed.next();
|
102
|
+
this.componentDestroyed.unsubscribe();
|
103
|
+
}
|
104
|
+
/**
|
105
|
+
* Function that subscribes to the formModel's valueChanges Observable
|
106
|
+
* to take any erros and translate them
|
107
|
+
*/
|
108
|
+
async translateValidationMessages(data) {
|
109
|
+
if (!this.formModel) {
|
110
|
+
return;
|
111
|
+
}
|
112
|
+
const form = this.formModel;
|
113
|
+
this.validationErrors = '';
|
114
|
+
if (!form.valid) {
|
115
|
+
let messages = await this.validationMessageService.getErrorMessages(form.errors);
|
116
|
+
if (messages) {
|
117
|
+
this.validationErrors = messages.join('; ');
|
118
|
+
}
|
119
|
+
}
|
120
|
+
}
|
121
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormControlBase, deps: [{ token: i1.ValidationMessageService }, { token: i2.FormGroupHelper }], target: i0.ɵɵFactoryTarget.Directive }); }
|
122
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FormControlBase, inputs: { autofocus: "autofocus", formModel: "formModel", label: "label", labelPosition: "labelPosition", id: "id", pending: "pending", required: "required", tabindex: "tabindex", readonly: "readonly", tooltip: "tooltip", helpPopover: "helpPopover", helpPopoverPosition: "helpPopoverPosition" }, usesOnChanges: true, ngImport: i0 }); }
|
123
|
+
}
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormControlBase, decorators: [{
|
125
|
+
type: Directive
|
126
|
+
}], ctorParameters: function () { return [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }]; }, propDecorators: { autofocus: [{
|
127
|
+
type: Input
|
128
|
+
}], formModel: [{
|
129
|
+
type: Input
|
130
|
+
}], label: [{
|
131
|
+
type: Input
|
132
|
+
}], labelPosition: [{
|
133
|
+
type: Input
|
134
|
+
}], id: [{
|
135
|
+
type: Input
|
136
|
+
}], pending: [{
|
137
|
+
type: Input
|
138
|
+
}], required: [{
|
139
|
+
type: Input
|
140
|
+
}], tabindex: [{
|
141
|
+
type: Input
|
142
|
+
}], readonly: [{
|
143
|
+
type: Input
|
144
|
+
}], tooltip: [{
|
145
|
+
type: Input
|
146
|
+
}], helpPopover: [{
|
147
|
+
type: Input
|
148
|
+
}], helpPopoverPosition: [{
|
149
|
+
type: Input
|
150
|
+
}] } });
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvZm9ybS1jb250cm9sLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBVTNDOztHQUVHO0FBRUgsTUFBTSxPQUFnQixlQUFlO0lBc0duQzs7T0FFRztJQUNILFlBQ1ksd0JBQWtELEVBQ2xELGVBQWdDO1FBRGhDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBeEc1Qzs7V0FFRztRQUNhLGNBQVMsR0FBYSxLQUFLLENBQUM7UUFnQjVDOztXQUVHO1FBQ2Esa0JBQWEsR0FBMEIsS0FBSyxDQUFDO1FBRzdEOztXQUVHO1FBQ2EsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUdoQzs7O1dBR0c7UUFDYSxZQUFPLEdBQWEsS0FBSyxDQUFDO1FBRzFDOzs7V0FHRztRQUNhLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFHM0M7O1dBRUc7UUFDYSxhQUFRLEdBQVksQ0FBQyxDQUFDO1FBb0J0Qzs7V0FFRztRQUNhLHdCQUFtQixHQUE0QixVQUFVLENBQUM7UUFFMUU7O1dBRUc7UUFDSSxxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFHckM7O1dBRUc7UUFDSSxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBRzdCOzs7Ozs7Ozs7O1dBVUc7UUFDUSx1QkFBa0IsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQVM5RCxDQUFDO0lBRUw7O09BRUc7SUFDSSxXQUFXLENBQUMsT0FBcUI7UUFDdEMsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUNuRSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUMxQjtpQkFBTSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEtBQUssRUFBRTtnQkFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUN6QjtTQUNGO1FBRUQsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBQztZQUN0RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6RDtJQUNILENBQUM7SUFHRDs7T0FFRztJQUNJLFFBQVE7UUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV4RCw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUMvQixTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQ25DLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QyxDQUFDLENBQUMsQ0FBQztRQUVILDhCQUE4QjtRQUM5QixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUdyQyxDQUFDO0lBR0Q7OztPQUdHO0lBQ0ksV0FBVztRQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFHRDs7O09BR0c7SUFDTyxLQUFLLENBQUMsMkJBQTJCLENBQUMsSUFBVTtRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRTVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakYsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0M7U0FDRjtJQUNILENBQUM7K0dBOUttQixlQUFlO21HQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBRHBDLFNBQVM7NklBT1EsU0FBUztzQkFBeEIsS0FBSztnQkFPVSxTQUFTO3NCQUF4QixLQUFLO2dCQU1VLEtBQUs7c0JBQXBCLEtBQUs7Z0JBTVUsYUFBYTtzQkFBNUIsS0FBSztnQkFNVSxFQUFFO3NCQUFqQixLQUFLO2dCQU9VLE9BQU87c0JBQXRCLEtBQUs7Z0JBT1UsUUFBUTtzQkFBdkIsS0FBSztnQkFNVSxRQUFRO3NCQUF2QixLQUFLO2dCQU1VLFFBQVE7c0JBQXZCLEtBQUs7Z0JBTVUsT0FBTztzQkFBdEIsS0FBSztnQkFNVSxXQUFXO3NCQUExQixLQUFLO2dCQUtVLG1CQUFtQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSB9IGZyb20gXCIuLi9jb3JlL3ZhbGlkYXRpb24tbWVzc2FnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cEhlbHBlciB9IGZyb20gJy4uL3NoYXJlZC9mb3JtLWdyb3VwLmhlbHBlcic7XHJcbmltcG9ydCB7IFBvcG92ZXJDb250ZW50UG9zaXRpb24gfSBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xyXG5cclxuXHJcblxyXG5leHBvcnQgdHlwZSBDb250cm9sTGFiZWxQb3NpdGlvbiA9IFwidG9wXCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCI7XHJcblxyXG5cclxuLyoqXHJcbiAqIEJhc2UgY2xhc3MgZm9yIFJlYWN0aXZlIEZvcm0gQ29udHJvbHMsIGNvbnRhaW5pbmcgRUNJLXNwZWNpZmljIHNoYXJlZCBwcm9wZXJ0aWVzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvcm1Db250cm9sQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIFxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIElmIHRydWUsIHdpbGwgZm9jdXMgdGhlIGNvbnRyb2wncyBpbnB1dCB3aGVuIHRoZSB2aWV3IGlzIGludGlhbGl6ZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYXV0b2ZvY3VzPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVUktb3JpZW50ZWQgZm9ybSBtb2RlbCB0aGF0IHJldGFpbnMgdGhlIHN0YXRlcyBhbmQgdmFsdWVzIG9mIHRoZSBIVE1MIGNvbnRyb2xzIG9uIHNjcmVlbi5cclxuICAgKiBDYW4gYmUgYSB7QGxpbmsgRm9ybUNvbnRyb2x9IG9yIGEge0BsaW5rIEZvcm1Hcm91cH1cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZm9ybU1vZGVsITogQWJzdHJhY3RDb250cm9sO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGZvcm0gY29udHJvbCBsYWJlbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbD86IHN0cmluZztcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgZm9ybSBjb250cm9sIGxhYmVsICh0b3B8Ym90dG9tKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbFBvc2l0aW9uPzogQ29udHJvbExhYmVsUG9zaXRpb24gPSBcInRvcFwiO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGlkIG9mIHRoZSBjb21wb25lbnQuIFdlIHVzZSB0aGlzIHRvIGlkZW50aWZ5IGEgY29udHJvbCBvbiBmb2N1cyBldmVudHMgYW5kIGhlbHAuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGlkOiBzdHJpbmcgPSAnJztcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBwZW5kaW5nIHN0YXR1cyBvZiB0aGUgY29udHJvbCwgY2FuIGJlIHVzZWQgdG8gdGVsbCB0aGUgdXNlciB0aGUgY29udHJvbCBpc1xyXG4gICAqIGF3YWl0aW5nIGRhdGEgdmlhIGEgc3Bpbm5lciBvciBhbmltYXRpb25cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcGVuZGluZz86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgcmVxdWlyZWQgZmllbGQgb3Igbm90XHJcbiAgICogQHRvZG86IFNvbWV0aW1lIGluIHRoZSBmdXR1cmUgQW5ndWxhciBtYWtlcyBpdCBzb3VuZCBsaWtlIHRoaXMgd2lsbCBiZSBoYW5kbGVkIHZpYSB0aGUgUmVhY3RpdmUgZm9ybSBXaGVuIHRoYXQgaGFwcGVucyB0aGlzIHByb3BlcnR5IGNhbiBiZSByZW1vdmVkXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHRhYmluZGV4IG9mIHRoZSBjb250cm9sXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHRhYmluZGV4PzogbnVtYmVyID0gMDtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIERpc2FibGUgdGhlIGNvbnRyb2wgYW5kIGRpc3BsYXkgdGhlIHZhbHVlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5PzogYm9vbGVhbjtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmRpdGlvbmFsbHkgc2hvdyBhIHRvb2x0aXAgb24gdGhlIGZvcm0gY29udHJvbCdzIGlucHV0LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sdGlwPzogc3RyaW5nO1xyXG5cclxuICBcclxuICAvKipcclxuICAgKiBDb25kaXRpb25hbGx5IHNob3cgYSBoZWxwIHBvcG92ZXIgbmV4dCB0byB0aGUgY29udHJvbHMgbGFiZWwuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGhlbHBQb3BvdmVyPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBXaGVuIGEgaGVscCBwb3BvdmVyIGlzIHByZXNlbnQsIGFsbG93cyB0aGUgcG9wb3ZlciB0byBiZSBwb3NpdGlvbmVkIGluIGRpZmZlcmVudCBsb2NhdGlvbnMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGhlbHBQb3BvdmVyUG9zaXRpb24/OiBQb3BvdmVyQ29udGVudFBvc2l0aW9uID0gJ3RvcC1sZWZ0JztcclxuXHJcbiAgLyoqXHJcbiAgICogQWxsIGN1cnJlbnQgdmFsaWRhdGlvbiBlcnJvcnNcclxuICAgKi9cclxuICBwdWJsaWMgdmFsaWRhdGlvbkVycm9yczogc3RyaW5nID0gXCJcIjtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBpZCBvZiB0aGUgZm9ybSBjb250cm9scyBpbnB1dCwgZ2V0bmVyYXRlZCBmcm9tIHRoZSBjb21wb25lbnRzIGlkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbnB1dElkOiBzdHJpbmcgPSAnJztcclxuXHJcblxyXG4gLyoqXHJcbiAgKiBOb3RpZmllcyBjb21wb25lbnQgc3Vic2NyaXB0aW9ucyB0aGF0IGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXHJcbiAgKiBVc2Ugd2l0aCBgdGFrZVVudGlsKClgIHdoZW4gc3Vic2NyaWJpbmcgdG8gY29tcGxldGUgc3Vic2NyaXB0aW9uc1xyXG4gICogYXV0b21hdGljYWxseS5cclxuICAqXHJcbiAgKiBTZWU6XHJcbiAgKiBbUnhKc117QGxpbmsgaHR0cDovL3JlYWN0aXZleC5pby9yeGpzL2NsYXNzL2VzNi9PYnNlcnZhYmxlLmpzfk9ic2VydmFibGUuaHRtbCNpbnN0YW5jZS1tZXRob2QtdGFrZVVudGlsfVxyXG4gICogW2FuZCB0aGlzXXtAbGluayBodHRwczovL21lZGl1bS5jb20vQGJlbmxlc2gvcnhqcy1kb250LXVuc3Vic2NyaWJlLTY3NTNlZDRmZGE4N31cclxuICAqIFthbmQgdGhpc117QGxpbmsgaHR0cHM6Ly9uZXRiYXNhbC5jb20vd2hlbi10by11bnN1YnNjcmliZS1pbi1hbmd1bGFyLWQ2MWM2YjIxYmFkM31cclxuICAqIFthbmQgdGhpc117QGxpbmsgaHR0cDovL2JyaWFuZmxvdmUuY29tLzIwMTYvMTIvMTEvYW5ndWFyLTItdW5zdWJzY3JpYmUtb2JzZXJ2YWJsZXMvfVxyXG4gICovXHJcbiAgcHJvdGVjdGVkIGNvbXBvbmVudERlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEZvcm1Db250cm9sQmFzZS5cclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2U6IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlclxyXG4gICkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuZ3VsYXIgb25DaGFuZ2UgbGlmZWN5bGUgaG9va1xyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOlNpbXBsZUNoYW5nZXMpOnZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMucmVhZG9ubHkgJiYgY2hhbmdlcy5yZWFkb25seS5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoY2hhbmdlcy5yZWFkb25seS5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5kaXNhYmxlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlcy5yZWFkb25seS5jdXJyZW50VmFsdWUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuZW5hYmxlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlcy5pZCAmJiBjaGFuZ2VzLmlkLmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKXtcclxuICAgICAgdGhpcy5pbnB1dElkID0gdGhpcy5mb3JtR3JvdXBIZWxwZXIuZ2V0SW5wdXRJZCh0aGlzLmlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEFuZ3VsYXIgb25Jbml0IGxpZmVjeWNsZSBob29rLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRJZCA9IHRoaXMuZm9ybUdyb3VwSGVscGVyLmdldElucHV0SWQodGhpcy5pZCk7XHJcbiAgICBcclxuICAgIC8vIHN1YnNjcmliZSB0byB2YWx1ZUNoYW5nZXMgT2JzZXJ2YWJsZSB0byB0YWtlIGFueSBlcnJvcyBhbmQgdHJhbnNsYXRlIHRoZW1cclxuICAgIHRoaXMuZm9ybU1vZGVsLnN0YXR1c0NoYW5nZXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkKVxyXG4gICAgKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlVmFsaWRhdGlvbk1lc3NhZ2VzKGRhdGEpXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAocmUpc2V0IHZhbGlkYXRpb24gbWVzc2FnZXNcclxuICAgIHRoaXMudHJhbnNsYXRlVmFsaWRhdGlvbk1lc3NhZ2VzKCk7XHJcblxyXG4gICAgXHJcbiAgfVxyXG4gICAgXHJcblxyXG4gIC8qKlxyXG4gICAqIEFuZ3VsYXIgb25EZXN0cm95IGxpZmVjeWxlIGhvb2suIFxyXG4gICAqIFVuc3Vic2NyaWJlIGZyb20gYW55IG9ic2VydmFibGVzXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB0aGF0IHN1YnNjcmliZXMgdG8gdGhlIGZvcm1Nb2RlbCdzIHZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlXHJcbiAgICogdG8gdGFrZSBhbnkgZXJyb3MgYW5kIHRyYW5zbGF0ZSB0aGVtXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFzeW5jIHRyYW5zbGF0ZVZhbGlkYXRpb25NZXNzYWdlcyhkYXRhPzogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybU1vZGVsKSB7IHJldHVybjsgfVxyXG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybU1vZGVsO1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyA9ICcnO1xyXG5cclxuICAgIGlmICghZm9ybS52YWxpZCkge1xyXG4gICAgICBsZXQgbWVzc2FnZXMgPSBhd2FpdCB0aGlzLnZhbGlkYXRpb25NZXNzYWdlU2VydmljZS5nZXRFcnJvck1lc3NhZ2VzKGZvcm0uZXJyb3JzKTtcclxuICAgICAgaWYgKG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzID0gbWVzc2FnZXMuam9pbignOyAnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn0iXX0=
|