@pega/angular-sdk-components 24.2.12 → 25.1.10
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/fesm2022/pega-angular-sdk-components.mjs +4828 -3717
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
- package/lib/_bridge/angular-pconnect.d.ts +1 -1
- package/lib/_bridge/component-mapper/component-mapper.component.d.ts +1 -1
- package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +18 -0
- package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
- package/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.d.ts +1 -0
- package/lib/_components/field/auto-complete/auto-complete.component.d.ts +9 -37
- package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +7 -5
- package/lib/_components/field/check-box/check-box.component.d.ts +10 -32
- package/lib/_components/field/currency/currency.component.d.ts +19 -34
- package/lib/_components/field/date/date.component.d.ts +7 -57
- package/lib/_components/field/date-time/date-time.component.d.ts +12 -40
- package/lib/_components/field/decimal/decimal.component.d.ts +16 -31
- package/lib/_components/field/dropdown/dropdown.component.d.ts +13 -37
- package/lib/_components/field/email/email.component.d.ts +7 -34
- package/lib/_components/field/field.base.d.ts +57 -0
- package/lib/_components/field/group/group.component.d.ts +5 -2
- package/lib/_components/field/integer/integer.component.d.ts +7 -33
- package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -1
- package/lib/_components/field/location/location.component.d.ts +47 -0
- package/lib/_components/field/multiselect/multiselect.component.d.ts +7 -38
- package/lib/_components/field/object-reference/object-reference.component.d.ts +45 -0
- package/lib/_components/field/percentage/percentage.component.d.ts +18 -35
- package/lib/_components/field/phone/phone.component.d.ts +8 -31
- package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +13 -33
- package/lib/_components/field/rich-text/rich-text.component.d.ts +6 -29
- package/lib/_components/field/scalar-list/scalar-list.component.d.ts +6 -21
- package/lib/_components/field/selectable-card/selectable-card.component.d.ts +62 -0
- package/lib/_components/field/semantic-link/semantic-link.component.d.ts +21 -0
- package/lib/_components/field/text-area/text-area.component.d.ts +6 -33
- package/lib/_components/field/text-input/text-input.component.d.ts +6 -34
- package/lib/_components/field/time/time.component.d.ts +6 -34
- package/lib/_components/field/url/url.component.d.ts +6 -34
- package/lib/_components/field/user-reference/user-reference.component.d.ts +1 -1
- package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +1 -0
- package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +4 -6
- package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
- package/lib/_components/infra/assignment/assignment.component.d.ts +3 -3
- package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +3 -2
- package/lib/_components/infra/defer-load/defer-load.component.d.ts +6 -6
- package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
- package/lib/_components/infra/navbar/navbar.component.d.ts +0 -1
- package/lib/_components/infra/stages/stages.component.d.ts +2 -1
- package/lib/_components/template/advanced-search/advanced-search.component.d.ts +21 -0
- package/lib/_components/template/advanced-search/search-group/persist-utils.d.ts +23 -0
- package/lib/_components/template/advanced-search/search-groups/search-groups.component.d.ts +47 -0
- package/lib/_components/template/advanced-search/search-groups/utils.d.ts +15 -0
- package/lib/_components/template/app-shell/app-shell.component.d.ts +6 -2
- package/lib/_components/template/base/details-template-base.d.ts +1 -1
- package/lib/_components/template/base/form-template-base.d.ts +1 -1
- package/lib/_components/template/case-summary/case-summary.component.d.ts +3 -2
- package/lib/_components/template/case-view/case-view.component.d.ts +0 -1
- package/lib/_components/template/data-reference/data-reference.component.d.ts +27 -2
- package/lib/_components/template/data-reference/search-form/search-form.component.d.ts +39 -0
- package/lib/_components/template/data-reference/search-form/tabsData.d.ts +2 -0
- package/lib/_components/template/data-reference/utils.d.ts +14 -0
- package/lib/_components/template/default-form/default-form.component.d.ts +3 -2
- package/lib/_components/template/default-page/default-page.component.d.ts +29 -0
- package/lib/_components/template/field-group-template/field-group-template.component.d.ts +3 -5
- package/lib/_components/template/list-view/list-view.component.d.ts +21 -5
- package/lib/_components/template/object-page/object-page.component.d.ts +8 -0
- package/lib/_components/template/self-service-case-view/self-service-case-view.component.d.ts +58 -0
- package/lib/_components/template/simple-table-manual/helpers.d.ts +15 -1
- package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +2 -2
- package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +18 -2
- package/lib/_components/template/utils.d.ts +4 -0
- package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +3 -5
- package/lib/_components/widget/attachment/Attachment.types.d.ts +87 -0
- package/lib/_components/widget/attachment/AttachmentUtils.d.ts +17 -0
- package/lib/_components/widget/attachment/attachment.component.d.ts +18 -33
- package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -2
- package/lib/_components/widget/file-utility/file-utility.component.d.ts +3 -1
- package/lib/_components/widget/todo/todo.component.d.ts +4 -2
- package/lib/_helpers/field-group-utils.d.ts +1 -3
- package/lib/_helpers/filter-utils.d.ts +1 -3
- package/lib/_helpers/object-utils.d.ts +8 -0
- package/lib/_helpers/objectReference-utils.d.ts +6 -0
- package/lib/_helpers/semanticLink-utils.d.ts +9 -0
- package/lib/_helpers/tab-utils.d.ts +4 -0
- package/lib/_helpers/utils.d.ts +5 -1
- package/lib/_services/case.service.d.ts +1 -1
- package/lib/_services/data-reference-advanced-search.service.d.ts +9 -0
- package/lib/_services/datapage.service.d.ts +1 -1
- package/lib/_services/google-maps-loader.service.d.ts +7 -0
- package/package.json +20 -6
- package/public-api.d.ts +14 -1
- package/esm2022/lib/_bridge/angular-pconnect.mjs +0 -428
- package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +0 -107
- package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +0 -239
- package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +0 -142
- package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +0 -50
- package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +0 -29
- package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +0 -31
- package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +0 -51
- package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +0 -31
- package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +0 -82
- package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +0 -37
- package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +0 -38
- package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +0 -36
- package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +0 -25
- package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +0 -28
- package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +0 -42
- package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +0 -145
- package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +0 -33
- package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +0 -93
- package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +0 -18
- package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +0 -296
- package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +0 -96
- package/esm2022/lib/_components/field/check-box/check-box.component.mjs +0 -225
- package/esm2022/lib/_components/field/currency/currency.component.mjs +0 -195
- package/esm2022/lib/_components/field/date/date.component.mjs +0 -205
- package/esm2022/lib/_components/field/date-time/date-time.component.mjs +0 -196
- package/esm2022/lib/_components/field/decimal/decimal.component.mjs +0 -205
- package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +0 -300
- package/esm2022/lib/_components/field/email/email.component.mjs +0 -165
- package/esm2022/lib/_components/field/group/group.component.mjs +0 -64
- package/esm2022/lib/_components/field/integer/integer.component.mjs +0 -168
- package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +0 -45
- package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +0 -314
- package/esm2022/lib/_components/field/multiselect/utils.mjs +0 -187
- package/esm2022/lib/_components/field/percentage/percentage.component.mjs +0 -190
- package/esm2022/lib/_components/field/phone/phone.component.mjs +0 -155
- package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +0 -182
- package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +0 -109
- package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +0 -95
- package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +0 -57
- package/esm2022/lib/_components/field/text/text.component.mjs +0 -142
- package/esm2022/lib/_components/field/text-area/text-area.component.mjs +0 -165
- package/esm2022/lib/_components/field/text-content/text-content.component.mjs +0 -69
- package/esm2022/lib/_components/field/text-input/text-input.component.mjs +0 -165
- package/esm2022/lib/_components/field/time/time.component.mjs +0 -174
- package/esm2022/lib/_components/field/url/url.component.mjs +0 -165
- package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +0 -266
- package/esm2022/lib/_components/infra/Containers/base-components/flow-container-base.component.mjs +0 -18
- package/esm2022/lib/_components/infra/Containers/base-components/helper.mjs +0 -71
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +0 -461
- package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +0 -68
- package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +0 -24
- package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +0 -335
- package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +0 -32
- package/esm2022/lib/_components/infra/Containers/view-container/helper.mjs +0 -22
- package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +0 -211
- package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +0 -31
- package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +0 -407
- package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +0 -47
- package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +0 -87
- package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +0 -143
- package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +0 -18
- package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +0 -80
- package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +0 -136
- package/esm2022/lib/_components/infra/reference/reference.component.mjs +0 -126
- package/esm2022/lib/_components/infra/region/region.component.mjs +0 -33
- package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +0 -223
- package/esm2022/lib/_components/infra/stages/stages.component.mjs +0 -62
- package/esm2022/lib/_components/infra/view/view.component.mjs +0 -188
- package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +0 -156
- package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +0 -43
- package/esm2022/lib/_components/template/base/details-template-base.mjs +0 -56
- package/esm2022/lib/_components/template/base/form-template-base.mjs +0 -16
- package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +0 -101
- package/esm2022/lib/_components/template/case-view/case-view.component.mjs +0 -185
- package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +0 -68
- package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +0 -242
- package/esm2022/lib/_components/template/default-form/default-form.component.mjs +0 -73
- package/esm2022/lib/_components/template/details/details.component.mjs +0 -76
- package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +0 -45
- package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +0 -42
- package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +0 -39
- package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +0 -51
- package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +0 -48
- package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +0 -48
- package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +0 -65
- package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +0 -23
- package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +0 -131
- package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +0 -24
- package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +0 -22
- package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +0 -40
- package/esm2022/lib/_components/template/list-page/list-page.component.mjs +0 -14
- package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +0 -208
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +0 -1217
- package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +0 -60
- package/esm2022/lib/_components/template/list-view/utils.mjs +0 -662
- package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +0 -44
- package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +0 -30
- package/esm2022/lib/_components/template/one-column/one-column.component.mjs +0 -31
- package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +0 -16
- package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +0 -30
- package/esm2022/lib/_components/template/page/page.component.mjs +0 -52
- package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +0 -149
- package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +0 -138
- package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +0 -104
- package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +0 -271
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +0 -813
- package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +0 -129
- package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +0 -16
- package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +0 -67
- package/esm2022/lib/_components/template/three-column/three-column.component.mjs +0 -31
- package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +0 -16
- package/esm2022/lib/_components/template/two-column/two-column.component.mjs +0 -31
- package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +0 -40
- package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +0 -30
- package/esm2022/lib/_components/template/utils.mjs +0 -38
- package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +0 -31
- package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +0 -53
- package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +0 -137
- package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +0 -24
- package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +0 -393
- package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +0 -80
- package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +0 -521
- package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +0 -638
- package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +0 -57
- package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +0 -75
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +0 -230
- package/esm2022/lib/_components/widget/utility/utility.component.mjs +0 -34
- package/esm2022/lib/_directives/thousand-seperator.directive.mjs +0 -28
- package/esm2022/lib/_helpers/case-utils.mjs +0 -71
- package/esm2022/lib/_helpers/common.mjs +0 -20
- package/esm2022/lib/_helpers/createstage-utils.mjs +0 -15
- package/esm2022/lib/_helpers/currency-utils.mjs +0 -57
- package/esm2022/lib/_helpers/date-format-utils.mjs +0 -68
- package/esm2022/lib/_helpers/event-util.mjs +0 -18
- package/esm2022/lib/_helpers/field-group-utils.mjs +0 -47
- package/esm2022/lib/_helpers/filter-utils.mjs +0 -105
- package/esm2022/lib/_helpers/formatters/boolean.mjs +0 -20
- package/esm2022/lib/_helpers/formatters/common.mjs +0 -17
- package/esm2022/lib/_helpers/formatters/currency-map.mjs +0 -903
- package/esm2022/lib/_helpers/formatters/currency.mjs +0 -68
- package/esm2022/lib/_helpers/formatters/date.mjs +0 -69
- package/esm2022/lib/_helpers/formatters/format-utils.mjs +0 -76
- package/esm2022/lib/_helpers/formatters/index.mjs +0 -124
- package/esm2022/lib/_helpers/instructions-utils.mjs +0 -36
- package/esm2022/lib/_helpers/tab-utils.mjs +0 -59
- package/esm2022/lib/_helpers/template-utils.mjs +0 -56
- package/esm2022/lib/_helpers/utils.mjs +0 -412
- package/esm2022/lib/_helpers/versionHelpers.mjs +0 -12
- package/esm2022/lib/_messages/error-messages.service.mjs +0 -31
- package/esm2022/lib/_messages/progress-spinner.service.mjs +0 -30
- package/esm2022/lib/_messages/update-worklist.service.mjs +0 -30
- package/esm2022/lib/_services/banner.service.mjs +0 -35
- package/esm2022/lib/_services/case.service.mjs +0 -32
- package/esm2022/lib/_services/datapage.service.mjs +0 -52
- package/esm2022/lib/_services/endpoints.mjs +0 -60
- package/esm2022/lib/_services/server-config.service.mjs +0 -52
- package/esm2022/lib/_types/PConnProps.interface.mjs +0 -2
- package/esm2022/pega-angular-sdk-components.mjs +0 -5
- package/esm2022/public-api.mjs +0 -145
- package/esm2022/sdk-local-component-map.mjs +0 -9
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, forwardRef, Input } from '@angular/core';
|
|
3
|
-
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
5
|
-
import { MatChipsModule } from '@angular/material/chips';
|
|
6
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
7
|
-
import { MatOptionModule } from '@angular/material/core';
|
|
8
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
9
|
-
import { MatInputModule } from '@angular/material/input';
|
|
10
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
11
|
-
import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
|
|
12
|
-
import { doSearch, getDisplayFieldsMetaData, getGroupDataForItemsTree, preProcessColumns } from './utils';
|
|
13
|
-
import { deleteInstruction, insertInstruction } from '../../../_helpers/instructions-utils';
|
|
14
|
-
import { handleEvent } from '../../../_helpers/event-util';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "../../../_bridge/angular-pconnect";
|
|
17
|
-
import * as i2 from "../../../_helpers/utils";
|
|
18
|
-
import * as i3 from "@angular/common";
|
|
19
|
-
import * as i4 from "@angular/forms";
|
|
20
|
-
import * as i5 from "@angular/material/form-field";
|
|
21
|
-
import * as i6 from "@angular/material/input";
|
|
22
|
-
import * as i7 from "@angular/material/autocomplete";
|
|
23
|
-
import * as i8 from "@angular/material/core";
|
|
24
|
-
import * as i9 from "@angular/material/checkbox";
|
|
25
|
-
import * as i10 from "@angular/material/icon";
|
|
26
|
-
import * as i11 from "@angular/material/chips";
|
|
27
|
-
export class MultiselectComponent {
|
|
28
|
-
constructor(angularPConnect, utils) {
|
|
29
|
-
this.angularPConnect = angularPConnect;
|
|
30
|
-
this.utils = utils;
|
|
31
|
-
// Used with AngularPConnect
|
|
32
|
-
this.angularPConnectData = {};
|
|
33
|
-
this.label$ = '';
|
|
34
|
-
this.value$ = '';
|
|
35
|
-
this.bRequired$ = false;
|
|
36
|
-
this.bDisabled$ = false;
|
|
37
|
-
this.bVisible$ = true;
|
|
38
|
-
this.bHasForm$ = true;
|
|
39
|
-
this.fieldControl = new FormControl('', null);
|
|
40
|
-
this.showSecondaryInSearchOnly = false;
|
|
41
|
-
this.isGroupData = false;
|
|
42
|
-
this.groupDataSource = [];
|
|
43
|
-
this.matchPosition = 'contains';
|
|
44
|
-
this.groupColumnsConfig = [{}];
|
|
45
|
-
this.selectedItems = [];
|
|
46
|
-
this.itemsTreeBaseData = [];
|
|
47
|
-
this.itemsTree = [];
|
|
48
|
-
this.optionClicked = (event, data) => {
|
|
49
|
-
event.stopPropagation();
|
|
50
|
-
this.toggleSelection(data);
|
|
51
|
-
};
|
|
52
|
-
this.toggleSelection = (data) => {
|
|
53
|
-
data.selected = !data.selected;
|
|
54
|
-
this.itemsTree.map((ele) => {
|
|
55
|
-
if (ele.id === data.id) {
|
|
56
|
-
ele.selected = data.selected;
|
|
57
|
-
}
|
|
58
|
-
return ele;
|
|
59
|
-
});
|
|
60
|
-
if (data.selected === true) {
|
|
61
|
-
this.selectedItems.push(data);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
const index = this.selectedItems.findIndex(value => value.id === data.id);
|
|
65
|
-
this.selectedItems.splice(index, 1);
|
|
66
|
-
}
|
|
67
|
-
this.value$ = '';
|
|
68
|
-
// if this is a referenceList case
|
|
69
|
-
if (this.referenceList)
|
|
70
|
-
this.setSelectedItemsForReferenceList(data);
|
|
71
|
-
this.getCaseListBasedOnParams(this.value$, '', [...this.selectedItems], [...this.itemsTree], true);
|
|
72
|
-
};
|
|
73
|
-
this.removeChip = (data) => {
|
|
74
|
-
if (data) {
|
|
75
|
-
data = this.itemsTree.filter((ele) => {
|
|
76
|
-
return ele.id === data.id;
|
|
77
|
-
});
|
|
78
|
-
this.toggleSelection(data[0]);
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
ngOnInit() {
|
|
83
|
-
// First thing in initialization is registering and subscribing to the AngularPConnect service
|
|
84
|
-
this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
|
|
85
|
-
this.controlName$ = this.angularPConnect.getComponentID(this);
|
|
86
|
-
// Then, continue on with other initialization
|
|
87
|
-
this.checkAndUpdate();
|
|
88
|
-
if (this.formGroup$) {
|
|
89
|
-
// add control to formGroup
|
|
90
|
-
this.formGroup$.addControl(this.controlName$, this.fieldControl);
|
|
91
|
-
this.fieldControl.setValue(this.value$);
|
|
92
|
-
this.bHasForm$ = true;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
this.bHasForm$ = false;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
ngOnDestroy() {
|
|
99
|
-
if (this.formGroup$) {
|
|
100
|
-
this.formGroup$.removeControl(this.controlName$);
|
|
101
|
-
}
|
|
102
|
-
if (this.angularPConnectData.unsubscribeFn) {
|
|
103
|
-
this.angularPConnectData.unsubscribeFn();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
// Callback passed when subscribing to store change
|
|
107
|
-
onStateChange() {
|
|
108
|
-
this.checkAndUpdate();
|
|
109
|
-
}
|
|
110
|
-
checkAndUpdate() {
|
|
111
|
-
// Should always check the bridge to see if the component should
|
|
112
|
-
// update itself (re-render)
|
|
113
|
-
const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
|
|
114
|
-
// ONLY call updateSelf when the component should update
|
|
115
|
-
if (bUpdateSelf) {
|
|
116
|
-
this.updateSelf();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
// updateSelf
|
|
120
|
-
updateSelf() {
|
|
121
|
-
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
|
|
122
|
-
let { datasource = [], columns = [{}] } = this.configProps$;
|
|
123
|
-
this.setPropertyValuesFromProps();
|
|
124
|
-
if (this.referenceList.length > 0) {
|
|
125
|
-
datasource = this.referenceList;
|
|
126
|
-
columns = [
|
|
127
|
-
{
|
|
128
|
-
value: this.primaryField,
|
|
129
|
-
display: 'true',
|
|
130
|
-
useForSearch: true,
|
|
131
|
-
primary: 'true'
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
value: this.selectionKey,
|
|
135
|
-
setProperty: this.selectionKey,
|
|
136
|
-
key: 'true'
|
|
137
|
-
}
|
|
138
|
-
];
|
|
139
|
-
let secondaryColumns = [];
|
|
140
|
-
if (this.secondaryFields) {
|
|
141
|
-
secondaryColumns = this.secondaryFields.map(secondaryField => ({
|
|
142
|
-
value: secondaryField,
|
|
143
|
-
display: 'true',
|
|
144
|
-
secondary: 'true',
|
|
145
|
-
useForSearch: 'true'
|
|
146
|
-
}));
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
secondaryColumns = [
|
|
150
|
-
{
|
|
151
|
-
value: this.selectionKey,
|
|
152
|
-
display: 'true',
|
|
153
|
-
secondary: 'true',
|
|
154
|
-
useForSearch: 'true'
|
|
155
|
-
}
|
|
156
|
-
];
|
|
157
|
-
}
|
|
158
|
-
if (this.referenceType === 'Case') {
|
|
159
|
-
columns = [...columns, ...secondaryColumns];
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
this.value$ = this.value$ ? this.value$ : '';
|
|
163
|
-
const contextName = this.pConn$.getContextName();
|
|
164
|
-
const dataConfig = {
|
|
165
|
-
dataSource: datasource,
|
|
166
|
-
groupDataSource: this.groupDataSource,
|
|
167
|
-
isGroupData: this.isGroupData,
|
|
168
|
-
showSecondaryInSearchOnly: this.showSecondaryInSearchOnly,
|
|
169
|
-
parameters: this.parameters,
|
|
170
|
-
matchPosition: this.matchPosition,
|
|
171
|
-
listType: this.listType,
|
|
172
|
-
maxResultsDisplay: this.maxResultsDisplay || '100',
|
|
173
|
-
columns: preProcessColumns(columns),
|
|
174
|
-
groupColumnsConfig: preProcessColumns(this.groupColumnsConfig),
|
|
175
|
-
associationFilter: undefined,
|
|
176
|
-
ignoreCase: undefined
|
|
177
|
-
};
|
|
178
|
-
const groupsDisplayFieldMeta = this.listType !== 'associated' ? getDisplayFieldsMetaData(dataConfig.groupColumnsConfig) : null;
|
|
179
|
-
this.itemsTreeBaseData = getGroupDataForItemsTree(this.groupDataSource, groupsDisplayFieldMeta, this.showSecondaryInSearchOnly) || [];
|
|
180
|
-
this.itemsTree = this.isGroupData ? getGroupDataForItemsTree(this.groupDataSource, groupsDisplayFieldMeta, this.showSecondaryInSearchOnly) : [];
|
|
181
|
-
this.displayFieldMeta = this.listType !== 'associated' ? getDisplayFieldsMetaData(dataConfig.columns) : null;
|
|
182
|
-
this.listActions = this.pConn$.getListActions();
|
|
183
|
-
this.pConn$.setReferenceList(this.selectionList);
|
|
184
|
-
if (this.configProps$.visibility != null) {
|
|
185
|
-
this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
|
|
186
|
-
}
|
|
187
|
-
// disabled
|
|
188
|
-
if (this.configProps$.disabled != undefined) {
|
|
189
|
-
this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
|
|
190
|
-
}
|
|
191
|
-
if (this.bDisabled$) {
|
|
192
|
-
this.fieldControl.disable();
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
this.fieldControl.enable();
|
|
196
|
-
}
|
|
197
|
-
this.actionsApi = this.pConn$.getActionsApi();
|
|
198
|
-
this.propName = this.pConn$.getStateProps().value;
|
|
199
|
-
if (this.listType !== 'associated') {
|
|
200
|
-
PCore.getDataApi()
|
|
201
|
-
?.init(dataConfig, contextName)
|
|
202
|
-
.then(async (dataObj) => {
|
|
203
|
-
this.dataApiObj = dataObj;
|
|
204
|
-
if (!this.isGroupData) {
|
|
205
|
-
this.getCaseListBasedOnParams(this.value$ ?? '', '', [...this.selectedItems], [...this.itemsTree]);
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
setPropertyValuesFromProps() {
|
|
211
|
-
this.label$ = this.configProps$.label;
|
|
212
|
-
this.placeholder = this.configProps$.placeholder || '';
|
|
213
|
-
this.listType = this.configProps$.listType ? this.configProps$.listType : '';
|
|
214
|
-
this.hideLabel = this.configProps$.hideLabel;
|
|
215
|
-
this.parameters = this.configProps$?.parameters ? this.configProps$?.parameters : {};
|
|
216
|
-
this.referenceList = this.configProps$?.referenceList;
|
|
217
|
-
this.selectionKey = this.configProps$?.selectionKey;
|
|
218
|
-
this.primaryField = this.configProps$?.primaryField;
|
|
219
|
-
this.initialCaseClass = this.configProps$?.initialCaseClass;
|
|
220
|
-
this.showSecondaryInSearchOnly = this.configProps$?.showSecondaryInSearchOnly ? this.configProps$?.showSecondaryInSearchOnly : false;
|
|
221
|
-
this.isGroupData = this.configProps$?.isGroupData ? this.configProps$.isGroupData : false;
|
|
222
|
-
this.referenceType = this.configProps$?.referenceType;
|
|
223
|
-
this.secondaryFields = this.configProps$?.secondaryFields;
|
|
224
|
-
this.groupDataSource = this.configProps$?.groupDataSource ? this.configProps$?.groupDataSource : [];
|
|
225
|
-
this.matchPosition = this.configProps$?.matchPosition ? this.configProps$?.matchPosition : 'contains';
|
|
226
|
-
this.maxResultsDisplay = this.configProps$?.maxResultsDisplay;
|
|
227
|
-
this.groupColumnsConfig = this.configProps$?.groupColumnsConfig ? this.configProps$?.groupColumnsConfig : [{}];
|
|
228
|
-
this.selectionList = this.configProps$?.selectionList;
|
|
229
|
-
this.value$ = this.configProps$?.value;
|
|
230
|
-
}
|
|
231
|
-
// main search function trigger
|
|
232
|
-
getCaseListBasedOnParams(searchText, group, selectedRows, currentItemsTree, isTriggeredFromSearch = false) {
|
|
233
|
-
if (this.referenceList && this.referenceList.length > 0) {
|
|
234
|
-
this.listActions.getSelectedRows(true).then(result => {
|
|
235
|
-
selectedRows =
|
|
236
|
-
result.length > 0
|
|
237
|
-
? result.map(item => {
|
|
238
|
-
return {
|
|
239
|
-
id: item[this.selectionKey.startsWith('.') ? this.selectionKey.substring(1) : this.selectionKey],
|
|
240
|
-
primary: item[this.primaryField.startsWith('.') ? this.primaryField.substring(1) : this.primaryField]
|
|
241
|
-
};
|
|
242
|
-
})
|
|
243
|
-
: [];
|
|
244
|
-
this.selectedItems = selectedRows;
|
|
245
|
-
const initalItemsTree = isTriggeredFromSearch || !currentItemsTree ? [...this.itemsTreeBaseData] : [...currentItemsTree];
|
|
246
|
-
doSearch(searchText, group, this.initialCaseClass, this.displayFieldMeta, this.dataApiObj, initalItemsTree, this.isGroupData, this.showSecondaryInSearchOnly, selectedRows || []).then(res => {
|
|
247
|
-
this.itemsTree = res || [];
|
|
248
|
-
});
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
fieldOnChange(event) {
|
|
253
|
-
this.value$ = event.target.value;
|
|
254
|
-
this.getCaseListBasedOnParams(this.value$, '', [...this.selectedItems], [...this.itemsTree], true);
|
|
255
|
-
}
|
|
256
|
-
optionChanged(event) {
|
|
257
|
-
let value = event?.target?.value;
|
|
258
|
-
value = value?.substring(1);
|
|
259
|
-
handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
|
|
260
|
-
}
|
|
261
|
-
setSelectedItemsForReferenceList(data) {
|
|
262
|
-
// Clear error messages if any
|
|
263
|
-
const propName = this.pConn$.getStateProps().selectionList;
|
|
264
|
-
this.pConn$.clearErrorMessages({
|
|
265
|
-
property: propName,
|
|
266
|
-
category: '',
|
|
267
|
-
context: ''
|
|
268
|
-
});
|
|
269
|
-
const { selected } = data;
|
|
270
|
-
if (selected) {
|
|
271
|
-
insertInstruction(this.pConn$, this.selectionList, this.selectionKey, this.primaryField, data);
|
|
272
|
-
}
|
|
273
|
-
else {
|
|
274
|
-
deleteInstruction(this.pConn$, this.selectionList, this.selectionKey, data);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
getErrorMessage() {
|
|
278
|
-
let errMessage = '';
|
|
279
|
-
// look for validation messages for json, pre-defined or just an error pushed from workitem (400)
|
|
280
|
-
if (this.fieldControl.hasError('message')) {
|
|
281
|
-
errMessage = this.angularPConnectData.validateMessage ?? '';
|
|
282
|
-
return errMessage;
|
|
283
|
-
}
|
|
284
|
-
if (this.fieldControl.hasError('required')) {
|
|
285
|
-
errMessage = 'You must enter a value';
|
|
286
|
-
}
|
|
287
|
-
else if (this.fieldControl.errors) {
|
|
288
|
-
errMessage = this.fieldControl.errors.toString();
|
|
289
|
-
}
|
|
290
|
-
return errMessage;
|
|
291
|
-
}
|
|
292
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultiselectComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
293
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MultiselectComponent, isStandalone: true, selector: "app-multiselect", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div [formGroup]=\"formGroup$\">\n <mat-form-field class=\"psdk-full-width\" subscriptSizing=\"dynamic\">\n <mat-label>{{ label$ }}</mat-label>\n <mat-chip-grid #chipGrid>\n <ng-container *ngFor=\"let select of selectedItems\">\n <mat-chip-row (removed)=\"removeChip(select)\">\n {{ select.primary }}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n </ng-container>\n </mat-chip-grid>\n <input\n matInput\n [placeholder]=\"placeholder\"\n [formControl]=\"fieldControl\"\n [value]=\"value$\"\n [required]=\"bRequired$\"\n [matAutocomplete]=\"auto\"\n (input)=\"fieldOnChange($event)\"\n [matChipInputFor]=\"chipGrid\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let item of itemsTree\" [value]=\"item.primary\" (click)=\"optionClicked($event, item)\">\n <mat-checkbox [checked]=\"item.selected\" (click)=\"optionClicked($event, item)\">\n <span>{{ item.primary }}</span>\n </mat-checkbox>\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\n </mat-form-field>\n</div>\n", styles: [".psdk-full-width{width:100%}::ng-deep .mat-mdc-form-field-infix{padding-left:10px}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i4.DefaultValueAccessor), selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i0.forwardRef(() => i4.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i4.NgControlStatusGroup), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(() => i4.RequiredValidator), selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i0.forwardRef(() => i4.FormControlDirective), selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i0.forwardRef(() => i4.FormGroupDirective), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatFormFieldModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatFormField), selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i0.forwardRef(() => i5.MatLabel), selector: "mat-label" }, { kind: "directive", type: i0.forwardRef(() => i5.MatError), selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatInputModule) }, { kind: "directive", type: i0.forwardRef(() => i6.MatInput), selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatAutocompleteModule) }, { kind: "component", type: i0.forwardRef(() => i7.MatAutocomplete), selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i0.forwardRef(() => i8.MatOption), selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i0.forwardRef(() => i7.MatAutocompleteTrigger), selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatOptionModule) }, { kind: "ngmodule", type: i0.forwardRef(() => MatCheckboxModule) }, { kind: "component", type: i0.forwardRef(() => i9.MatCheckbox), selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatIconModule) }, { kind: "component", type: i0.forwardRef(() => i10.MatIcon), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatChipsModule) }, { kind: "component", type: i0.forwardRef(() => i11.MatChipGrid), selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i0.forwardRef(() => i11.MatChipInput), selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i0.forwardRef(() => i11.MatChipRemove), selector: "[matChipRemove]" }, { kind: "component", type: i0.forwardRef(() => i11.MatChipRow), selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }] }); }
|
|
294
|
-
}
|
|
295
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultiselectComponent, decorators: [{
|
|
296
|
-
type: Component,
|
|
297
|
-
args: [{ selector: 'app-multiselect', standalone: true, imports: [
|
|
298
|
-
CommonModule,
|
|
299
|
-
ReactiveFormsModule,
|
|
300
|
-
MatFormFieldModule,
|
|
301
|
-
MatInputModule,
|
|
302
|
-
MatAutocompleteModule,
|
|
303
|
-
MatOptionModule,
|
|
304
|
-
MatCheckboxModule,
|
|
305
|
-
MatIconModule,
|
|
306
|
-
MatChipsModule,
|
|
307
|
-
forwardRef(() => ComponentMapperComponent)
|
|
308
|
-
], template: "<div [formGroup]=\"formGroup$\">\n <mat-form-field class=\"psdk-full-width\" subscriptSizing=\"dynamic\">\n <mat-label>{{ label$ }}</mat-label>\n <mat-chip-grid #chipGrid>\n <ng-container *ngFor=\"let select of selectedItems\">\n <mat-chip-row (removed)=\"removeChip(select)\">\n {{ select.primary }}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n </ng-container>\n </mat-chip-grid>\n <input\n matInput\n [placeholder]=\"placeholder\"\n [formControl]=\"fieldControl\"\n [value]=\"value$\"\n [required]=\"bRequired$\"\n [matAutocomplete]=\"auto\"\n (input)=\"fieldOnChange($event)\"\n [matChipInputFor]=\"chipGrid\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let item of itemsTree\" [value]=\"item.primary\" (click)=\"optionClicked($event, item)\">\n <mat-checkbox [checked]=\"item.selected\" (click)=\"optionClicked($event, item)\">\n <span>{{ item.primary }}</span>\n </mat-checkbox>\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\n </mat-form-field>\n</div>\n", styles: [".psdk-full-width{width:100%}::ng-deep .mat-mdc-form-field-infix{padding-left:10px}\n"] }]
|
|
309
|
-
}], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.Utils }], propDecorators: { pConn$: [{
|
|
310
|
-
type: Input
|
|
311
|
-
}], formGroup$: [{
|
|
312
|
-
type: Input
|
|
313
|
-
}] } });
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2ZpZWxkL211bHRpc2VsZWN0L211bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9tdWx0aXNlbGVjdC9tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXhHLE9BQU8sRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsaUJB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O3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7cUJBQzNDOytHQUdRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IGRvU2VhcmNoLCBnZXREaXNwbGF5RmllbGRzTWV0YURhdGEsIGdldEdyb3VwRGF0YUZvckl0ZW1zVHJlZSwgcHJlUHJvY2Vzc0NvbHVtbnMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGRlbGV0ZUluc3RydWN0aW9uLCBpbnNlcnRJbnN0cnVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL2luc3RydWN0aW9ucy11dGlscyc7XG5pbXBvcnQgeyBoYW5kbGVFdmVudCB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL2V2ZW50LXV0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbXVsdGlzZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudClcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aXNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcblxuICBsYWJlbCQgPSAnJztcbiAgdmFsdWUkID0gJyc7XG4gIGJSZXF1aXJlZCQgPSBmYWxzZTtcbiAgYkRpc2FibGVkJCA9IGZhbHNlO1xuICBiVmlzaWJsZSQgPSB0cnVlO1xuICBjb250cm9sTmFtZSQ6IHN0cmluZztcbiAgYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgbGlzdFR5cGU6IHN0cmluZztcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgZmllbGRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBudWxsKTtcbiAgcGFyYW1ldGVyczoge307XG4gIGhpZGVMYWJlbDogYm9vbGVhbjtcbiAgY29uZmlnUHJvcHMkOiBhbnk7XG5cbiAgcmVmZXJlbmNlTGlzdDogYW55O1xuICBzZWxlY3Rpb25LZXk6IHN0cmluZztcbiAgcHJpbWFyeUZpZWxkOiBzdHJpbmc7XG4gIGluaXRpYWxDYXNlQ2xhc3M6IGFueTtcbiAgc2hvd1NlY29uZGFyeUluU2VhcmNoT25seSA9IGZhbHNlO1xuICBpc0dyb3VwRGF0YSA9IGZhbHNlO1xuICByZWZlcmVuY2VUeXBlO1xuICBzZWNvbmRhcnlGaWVsZHM7XG4gIGdyb3VwRGF0YVNvdXJjZSA9IFtdO1xuICBtYXRjaFBvc2l0aW9uID0gJ2NvbnRhaW5zJztcbiAgbWF4UmVzdWx0c0Rpc3BsYXk7XG4gIGdyb3VwQ29sdW1uc0NvbmZpZyA9IFt7fV07XG4gIHNlbGVjdGlvbkxpc3Q7XG4gIGxpc3RBY3Rpb25zOiBhbnk7XG4gIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG4gIGl0ZW1zVHJlZUJhc2VEYXRhID0gW107XG4gIGRpc3BsYXlGaWVsZE1ldGE6IGFueTtcbiAgZGF0YUFwaU9iajogYW55O1xuICBpdGVtc1RyZWU6IGFueVtdID0gW107XG4gIHRyaWdnZXI6IGFueTtcbiAgYWN0aW9uc0FwaTogT2JqZWN0O1xuICBwcm9wTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcbiAgICB0aGlzLmNvbnRyb2xOYW1lJCA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldENvbXBvbmVudElEKHRoaXMpO1xuXG4gICAgLy8gVGhlbiwgY29udGludWUgb24gd2l0aCBvdGhlciBpbml0aWFsaXphdGlvblxuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcblxuICAgIGlmICh0aGlzLmZvcm1Hcm91cCQpIHtcbiAgICAgIC8vIGFkZCBjb250cm9sIHRvIGZvcm1Hcm91cFxuICAgICAgdGhpcy5mb3JtR3JvdXAkLmFkZENvbnRyb2wodGhpcy5jb250cm9sTmFtZSQsIHRoaXMuZmllbGRDb250cm9sKTtcbiAgICAgIHRoaXMuZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUkKTtcbiAgICAgIHRoaXMuYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iSGFzRm9ybSQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAkKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cCQucmVtb3ZlQ29udHJvbCh0aGlzLmNvbnRyb2xOYW1lJCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICB1cGRhdGVTZWxmKCkge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpO1xuXG4gICAgbGV0IHsgZGF0YXNvdXJjZSA9IFtdLCBjb2x1bW5zID0gW3t9XSB9ID0gdGhpcy5jb25maWdQcm9wcyQ7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eVZhbHVlc0Zyb21Qcm9wcygpO1xuXG4gICAgaWYgKHRoaXMucmVmZXJlbmNlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBkYXRhc291cmNlID0gdGhpcy5yZWZlcmVuY2VMaXN0O1xuICAgICAgY29sdW1ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiB0aGlzLnByaW1hcnlGaWVsZCxcbiAgICAgICAgICBkaXNwbGF5OiAndHJ1ZScsXG4gICAgICAgICAgdXNlRm9yU2VhcmNoOiB0cnVlLFxuICAgICAgICAgIHByaW1hcnk6ICd0cnVlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0aW9uS2V5LFxuICAgICAgICAgIHNldFByb3BlcnR5OiB0aGlzLnNlbGVjdGlvbktleSxcbiAgICAgICAgICBrZXk6ICd0cnVlJ1xuICAgICAgICB9XG4gICAgICBdO1xuICAgICAgbGV0IHNlY29uZGFyeUNvbHVtbnM6IGFueSA9IFtdO1xuICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5RmllbGRzKSB7XG4gICAgICAgIHNlY29uZGFyeUNvbHVtbnMgPSB0aGlzLnNlY29uZGFyeUZpZWxkcy5tYXAoc2Vjb25kYXJ5RmllbGQgPT4gKHtcbiAgICAgICAgICB2YWx1ZTogc2Vjb25kYXJ5RmllbGQsXG4gICAgICAgICAgZGlzcGxheTogJ3RydWUnLFxuICAgICAgICAgIHNlY29uZGFyeTogJ3RydWUnLFxuICAgICAgICAgIHVzZUZvclNlYXJjaDogJ3RydWUnXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlY29uZGFyeUNvbHVtbnMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0aW9uS2V5LFxuICAgICAgICAgICAgZGlzcGxheTogJ3RydWUnLFxuICAgICAgICAgICAgc2Vjb25kYXJ5OiAndHJ1ZScsXG4gICAgICAgICAgICB1c2VGb3JTZWFyY2g6ICd0cnVlJ1xuICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnJlZmVyZW5jZVR5cGUgPT09ICdDYXNlJykge1xuICAgICAgICBjb2x1bW5zID0gWy4uLmNvbHVtbnMsIC4uLnNlY29uZGFyeUNvbHVtbnNdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudmFsdWUkID0gdGhpcy52YWx1ZSQgPyB0aGlzLnZhbHVlJCA6ICcnO1xuICAgIGNvbnN0IGNvbnRleHROYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcblxuICAgIGNvbnN0IGRhdGFDb25maWcgPSB7XG4gICAgICBkYXRhU291cmNlOiBkYXRhc291cmNlLFxuICAgICAgZ3JvdXBEYXRhU291cmNlOiB0aGlzLmdyb3VwRGF0YVNvdXJjZSxcbiAgICAgIGlzR3JvdXBEYXRhOiB0aGlzLmlzR3JvdXBEYXRhLFxuICAgICAgc2hvd1NlY29uZGFyeUluU2VhcmNoT25seTogdGhpcy5zaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5LFxuICAgICAgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzLFxuICAgICAgbWF0Y2hQb3NpdGlvbjogdGhpcy5tYXRjaFBvc2l0aW9uLFxuICAgICAgbGlzdFR5cGU6IHRoaXMubGlzdFR5cGUsXG4gICAgICBtYXhSZXN1bHRzRGlzcGxheTogdGhpcy5tYXhSZXN1bHRzRGlzcGxheSB8fCAnMTAwJyxcbiAgICAgIGNvbHVtbnM6IHByZVByb2Nlc3NDb2x1bW5zKGNvbHVtbnMpLFxuICAgICAgZ3JvdXBDb2x1bW5zQ29uZmlnOiBwcmVQcm9jZXNzQ29sdW1ucyh0aGlzLmdyb3VwQ29sdW1uc0NvbmZpZyksXG4gICAgICBhc3NvY2lhdGlvbkZpbHRlcjogdW5kZWZpbmVkLFxuICAgICAgaWdub3JlQ2FzZTogdW5kZWZpbmVkXG4gICAgfTtcblxuICAgIGNvbnN0IGdyb3Vwc0Rpc3BsYXlGaWVsZE1ldGEgPSB0aGlzLmxpc3RUeXBlICE9PSAnYXNzb2NpYXRlZCcgPyBnZXREaXNwbGF5RmllbGRzTWV0YURhdGEoZGF0YUNvbmZpZy5ncm91cENvbHVtbnNDb25maWcpIDogbnVsbDtcblxuICAgIHRoaXMuaXRlbXNUcmVlQmFzZURhdGEgPSBnZXRHcm91cERhdGFGb3JJdGVtc1RyZWUodGhpcy5ncm91cERhdGFTb3VyY2UsIGdyb3Vwc0Rpc3BsYXlGaWVsZE1ldGEsIHRoaXMuc2hvd1NlY29uZGFyeUluU2VhcmNoT25seSkgfHwgW107XG5cbiAgICB0aGlzLml0ZW1zVHJlZSA9IHRoaXMuaXNHcm91cERhdGEgPyBnZXRHcm91cERhdGFGb3JJdGVtc1RyZWUodGhpcy5ncm91cERhdGFTb3VyY2UsIGdyb3Vwc0Rpc3BsYXlGaWVsZE1ldGEsIHRoaXMuc2hvd1NlY29uZGFyeUluU2VhcmNoT25seSkgOiBbXTtcblxuICAgIHRoaXMuZGlzcGxheUZpZWxkTWV0YSA9IHRoaXMubGlzdFR5cGUgIT09ICdhc3NvY2lhdGVkJyA/IGdldERpc3BsYXlGaWVsZHNNZXRhRGF0YShkYXRhQ29uZmlnLmNvbHVtbnMpIDogbnVsbDtcblxuICAgIHRoaXMubGlzdEFjdGlvbnMgPSB0aGlzLnBDb25uJC5nZXRMaXN0QWN0aW9ucygpO1xuICAgIHRoaXMucENvbm4kLnNldFJlZmVyZW5jZUxpc3QodGhpcy5zZWxlY3Rpb25MaXN0KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYlZpc2libGUkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQudmlzaWJpbGl0eSk7XG4gICAgfVxuXG4gICAgLy8gZGlzYWJsZWRcbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQuZGlzYWJsZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmJEaXNhYmxlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYkRpc2FibGVkJCkge1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpZWxkQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmFjdGlvbnNBcGkgPSB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG4gICAgdGhpcy5wcm9wTmFtZSA9IHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKS52YWx1ZTtcblxuICAgIGlmICh0aGlzLmxpc3RUeXBlICE9PSAnYXNzb2NpYXRlZCcpIHtcbiAgICAgIFBDb3JlLmdldERhdGFBcGkoKVxuICAgICAgICA/LmluaXQoZGF0YUNvbmZpZywgY29udGV4dE5hbWUpXG4gICAgICAgIC50aGVuKGFzeW5jIGRhdGFPYmogPT4ge1xuICAgICAgICAgIHRoaXMuZGF0YUFwaU9iaiA9IGRhdGFPYmo7XG4gICAgICAgICAgaWYgKCF0aGlzLmlzR3JvdXBEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmdldENhc2VMaXN0QmFzZWRPblBhcmFtcyh0aGlzLnZhbHVlJCA/PyAnJywgJycsIFsuLi50aGlzLnNlbGVjdGVkSXRlbXNdLCBbLi4udGhpcy5pdGVtc1RyZWVdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFByb3BlcnR5VmFsdWVzRnJvbVByb3BzKCkge1xuICAgIHRoaXMubGFiZWwkID0gdGhpcy5jb25maWdQcm9wcyQubGFiZWw7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuY29uZmlnUHJvcHMkLnBsYWNlaG9sZGVyIHx8ICcnO1xuICAgIHRoaXMubGlzdFR5cGUgPSB0aGlzLmNvbmZpZ1Byb3BzJC5saXN0VHlwZSA/IHRoaXMuY29uZmlnUHJvcHMkLmxpc3RUeXBlIDogJyc7XG4gICAgdGhpcy5oaWRlTGFiZWwgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oaWRlTGFiZWw7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5jb25maWdQcm9wcyQ/LnBhcmFtZXRlcnMgPyB0aGlzLmNvbmZpZ1Byb3BzJD8ucGFyYW1ldGVycyA6IHt9O1xuICAgIHRoaXMucmVmZXJlbmNlTGlzdCA9IHRoaXMuY29uZmlnUHJvcHMkPy5yZWZlcmVuY2VMaXN0O1xuICAgIHRoaXMuc2VsZWN0aW9uS2V5ID0gdGhpcy5jb25maWdQcm9wcyQ/LnNlbGVjdGlvbktleTtcbiAgICB0aGlzLnByaW1hcnlGaWVsZCA9IHRoaXMuY29uZmlnUHJvcHMkPy5wcmltYXJ5RmllbGQ7XG4gICAgdGhpcy5pbml0aWFsQ2FzZUNsYXNzID0gdGhpcy5jb25maWdQcm9wcyQ/LmluaXRpYWxDYXNlQ2xhc3M7XG4gICAgdGhpcy5zaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5ID0gdGhpcy5jb25maWdQcm9wcyQ/LnNob3dTZWNvbmRhcnlJblNlYXJjaE9ubHkgPyB0aGlzLmNvbmZpZ1Byb3BzJD8uc2hvd1NlY29uZGFyeUluU2VhcmNoT25seSA6IGZhbHNlO1xuICAgIHRoaXMuaXNHcm91cERhdGEgPSB0aGlzLmNvbmZpZ1Byb3BzJD8uaXNHcm91cERhdGEgPyB0aGlzLmNvbmZpZ1Byb3BzJC5pc0dyb3VwRGF0YSA6IGZhbHNlO1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZSA9IHRoaXMuY29uZmlnUHJvcHMkPy5yZWZlcmVuY2VUeXBlO1xuICAgIHRoaXMuc2Vjb25kYXJ5RmllbGRzID0gdGhpcy5jb25maWdQcm9wcyQ/LnNlY29uZGFyeUZpZWxkcztcbiAgICB0aGlzLmdyb3VwRGF0YVNvdXJjZSA9IHRoaXMuY29uZmlnUHJvcHMkPy5ncm91cERhdGFTb3VyY2UgPyB0aGlzLmNvbmZpZ1Byb3BzJD8uZ3JvdXBEYXRhU291cmNlIDogW107XG4gICAgdGhpcy5tYXRjaFBvc2l0aW9uID0gdGhpcy5jb25maWdQcm9wcyQ/Lm1hdGNoUG9zaXRpb24gPyB0aGlzLmNvbmZpZ1Byb3BzJD8ubWF0Y2hQb3NpdGlvbiA6ICdjb250YWlucyc7XG4gICAgdGhpcy5tYXhSZXN1bHRzRGlzcGxheSA9IHRoaXMuY29uZmlnUHJvcHMkPy5tYXhSZXN1bHRzRGlzcGxheTtcbiAgICB0aGlzLmdyb3VwQ29sdW1uc0NvbmZpZyA9IHRoaXMuY29uZmlnUHJvcHMkPy5ncm91cENvbHVtbnNDb25maWcgPyB0aGlzLmNvbmZpZ1Byb3BzJD8uZ3JvdXBDb2x1bW5zQ29uZmlnIDogW3t9XTtcbiAgICB0aGlzLnNlbGVjdGlvbkxpc3QgPSB0aGlzLmNvbmZpZ1Byb3BzJD8uc2VsZWN0aW9uTGlzdDtcbiAgICB0aGlzLnZhbHVlJCA9IHRoaXMuY29uZmlnUHJvcHMkPy52YWx1ZTtcbiAgfVxuXG4gIC8vIG1haW4gc2VhcmNoIGZ1bmN0aW9uIHRyaWdnZXJcbiAgZ2V0Q2FzZUxpc3RCYXNlZE9uUGFyYW1zKHNlYXJjaFRleHQsIGdyb3VwLCBzZWxlY3RlZFJvd3MsIGN1cnJlbnRJdGVtc1RyZWUsIGlzVHJpZ2dlcmVkRnJvbVNlYXJjaCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMucmVmZXJlbmNlTGlzdCAmJiB0aGlzLnJlZmVyZW5jZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5saXN0QWN0aW9ucy5nZXRTZWxlY3RlZFJvd3ModHJ1ZSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBzZWxlY3RlZFJvd3MgPVxuICAgICAgICAgIHJlc3VsdC5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHJlc3VsdC5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlkOiBpdGVtW3RoaXMuc2VsZWN0aW9uS2V5LnN0YXJ0c1dpdGgoJy4nKSA/IHRoaXMuc2VsZWN0aW9uS2V5LnN1YnN0cmluZygxKSA6IHRoaXMuc2VsZWN0aW9uS2V5XSxcbiAgICAgICAgICAgICAgICAgIHByaW1hcnk6IGl0ZW1bdGhpcy5wcmltYXJ5RmllbGQuc3RhcnRzV2l0aCgnLicpID8gdGhpcy5wcmltYXJ5RmllbGQuc3Vic3RyaW5nKDEpIDogdGhpcy5wcmltYXJ5RmllbGRdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkUm93cztcblxuICAgICAgICBjb25zdCBpbml0YWxJdGVtc1RyZWUgPSBpc1RyaWdnZXJlZEZyb21TZWFyY2ggfHwgIWN1cnJlbnRJdGVtc1RyZWUgPyBbLi4udGhpcy5pdGVtc1RyZWVCYXNlRGF0YV0gOiBbLi4uY3VycmVudEl0ZW1zVHJlZV07XG5cbiAgICAgICAgZG9TZWFyY2goXG4gICAgICAgICAgc2VhcmNoVGV4dCxcbiAgICAgICAgICBncm91cCxcbiAgICAgICAgICB0aGlzLmluaXRpYWxDYXNlQ2xhc3MsXG4gICAgICAgICAgdGhpcy5kaXNwbGF5RmllbGRNZXRhLFxuICAgICAgICAgIHRoaXMuZGF0YUFwaU9iaixcbiAgICAgICAgICBpbml0YWxJdGVtc1RyZWUsXG4gICAgICAgICAgdGhpcy5pc0dyb3VwRGF0YSxcbiAgICAgICAgICB0aGlzLnNob3dTZWNvbmRhcnlJblNlYXJjaE9ubHksXG4gICAgICAgICAgc2VsZWN0ZWRSb3dzIHx8IFtdXG4gICAgICAgICkudGhlbihyZXMgPT4ge1xuICAgICAgICAgIHRoaXMuaXRlbXNUcmVlID0gcmVzIHx8IFtdO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZpZWxkT25DaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy52YWx1ZSQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIHRoaXMuZ2V0Q2FzZUxpc3RCYXNlZE9uUGFyYW1zKHRoaXMudmFsdWUkLCAnJywgWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10sIFsuLi50aGlzLml0ZW1zVHJlZV0sIHRydWUpO1xuICB9XG5cbiAgb3B0aW9uQ2hhbmdlZChldmVudDogYW55KSB7XG4gICAgbGV0IHZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWU7XG4gICAgdmFsdWUgPSB2YWx1ZT8uc3Vic3RyaW5nKDEpO1xuICAgIGhhbmRsZUV2ZW50KHRoaXMuYWN0aW9uc0FwaSwgJ2NoYW5nZU5ibHVyJywgdGhpcy5wcm9wTmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgb3B0aW9uQ2xpY2tlZCA9IChldmVudDogRXZlbnQsIGRhdGE6IGFueSk6IHZvaWQgPT4ge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uKGRhdGEpO1xuICB9O1xuXG4gIHRvZ2dsZVNlbGVjdGlvbiA9IChkYXRhOiBhbnkpOiB2b2lkID0+IHtcbiAgICBkYXRhLnNlbGVjdGVkID0gIWRhdGEuc2VsZWN0ZWQ7XG4gICAgdGhpcy5pdGVtc1RyZWUubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgaWYgKGVsZS5pZCA9PT0gZGF0YS5pZCkge1xuICAgICAgICBlbGUuc2VsZWN0ZWQgPSBkYXRhLnNlbGVjdGVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVsZTtcbiAgICB9KTtcblxuICAgIGlmIChkYXRhLnNlbGVjdGVkID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmluZEluZGV4KHZhbHVlID0+IHZhbHVlLmlkID09PSBkYXRhLmlkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUkID0gJyc7XG4gICAgLy8gaWYgdGhpcyBpcyBhIHJlZmVyZW5jZUxpc3QgY2FzZVxuICAgIGlmICh0aGlzLnJlZmVyZW5jZUxpc3QpIHRoaXMuc2V0U2VsZWN0ZWRJdGVtc0ZvclJlZmVyZW5jZUxpc3QoZGF0YSk7XG5cbiAgICB0aGlzLmdldENhc2VMaXN0QmFzZWRPblBhcmFtcyh0aGlzLnZhbHVlJCwgJycsIFsuLi50aGlzLnNlbGVjdGVkSXRlbXNdLCBbLi4udGhpcy5pdGVtc1RyZWVdLCB0cnVlKTtcbiAgfTtcblxuICByZW1vdmVDaGlwID0gKGRhdGE6IGFueSk6IHZvaWQgPT4ge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBkYXRhID0gdGhpcy5pdGVtc1RyZWUuZmlsdGVyKChlbGU6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gZWxlLmlkID09PSBkYXRhLmlkO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbihkYXRhWzBdKTtcbiAgICB9XG4gIH07XG5cbiAgc2V0U2VsZWN0ZWRJdGVtc0ZvclJlZmVyZW5jZUxpc3QoZGF0YTogYW55KSB7XG4gICAgLy8gQ2xlYXIgZXJyb3IgbWVzc2FnZXMgaWYgYW55XG4gICAgY29uc3QgcHJvcE5hbWUgPSB0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkuc2VsZWN0aW9uTGlzdDtcbiAgICB0aGlzLnBDb25uJC5jbGVhckVycm9yTWVzc2FnZXMoe1xuICAgICAgcHJvcGVydHk6IHByb3BOYW1lLFxuICAgICAgY2F0ZWdvcnk6ICcnLFxuICAgICAgY29udGV4dDogJydcbiAgICB9KTtcbiAgICBjb25zdCB7IHNlbGVjdGVkIH0gPSBkYXRhO1xuICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgaW5zZXJ0SW5zdHJ1Y3Rpb24odGhpcy5wQ29ubiQsIHRoaXMuc2VsZWN0aW9uTGlzdCwgdGhpcy5zZWxlY3Rpb25LZXksIHRoaXMucHJpbWFyeUZpZWxkLCBkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlSW5zdHJ1Y3Rpb24odGhpcy5wQ29ubiQsIHRoaXMuc2VsZWN0aW9uTGlzdCwgdGhpcy5zZWxlY3Rpb25LZXksIGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZSgpIHtcbiAgICBsZXQgZXJyTWVzc2FnZSA9ICcnO1xuXG4gICAgLy8gbG9vayBmb3IgdmFsaWRhdGlvbiBtZXNzYWdlcyBmb3IganNvbiwgcHJlLWRlZmluZWQgb3IganVzdCBhbiBlcnJvciBwdXNoZWQgZnJvbSB3b3JraXRlbSAoNDAwKVxuICAgIGlmICh0aGlzLmZpZWxkQ29udHJvbC5oYXNFcnJvcignbWVzc2FnZScpKSB7XG4gICAgICBlcnJNZXNzYWdlID0gdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSA/PyAnJztcbiAgICAgIHJldHVybiBlcnJNZXNzYWdlO1xuICAgIH1cbiAgICBpZiAodGhpcy5maWVsZENvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSAnWW91IG11c3QgZW50ZXIgYSB2YWx1ZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkQ29udHJvbC5lcnJvcnMpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSB0aGlzLmZpZWxkQ29udHJvbC5lcnJvcnMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyTWVzc2FnZTtcbiAgfVxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cCRcIj5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHNkay1mdWxsLXdpZHRoXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwkIH19PC9tYXQtbGFiZWw+XG4gICAgPG1hdC1jaGlwLWdyaWQgI2NoaXBHcmlkPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VsZWN0IG9mIHNlbGVjdGVkSXRlbXNcIj5cbiAgICAgICAgPG1hdC1jaGlwLXJvdyAocmVtb3ZlZCk9XCJyZW1vdmVDaGlwKHNlbGVjdClcIj5cbiAgICAgICAgICB7eyBzZWxlY3QucHJpbWFyeSB9fVxuICAgICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZT5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1jaGlwLXJvdz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LWNoaXAtZ3JpZD5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImZpZWxkQ29udHJvbFwiXG4gICAgICBbdmFsdWVdPVwidmFsdWUkXCJcbiAgICAgIFtyZXF1aXJlZF09XCJiUmVxdWlyZWQkXCJcbiAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAoaW5wdXQpPVwiZmllbGRPbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcEdyaWRcIlxuICAgIC8+XG4gICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIj5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zVHJlZVwiIFt2YWx1ZV09XCJpdGVtLnByaW1hcnlcIiAoY2xpY2spPVwib3B0aW9uQ2xpY2tlZCgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwiaXRlbS5zZWxlY3RlZFwiIChjbGljayk9XCJvcHRpb25DbGlja2VkKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICA8c3Bhbj57eyBpdGVtLnByaW1hcnkgfX08L3NwYW4+XG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZmllbGRDb250cm9sLmludmFsaWRcIj57eyBnZXRFcnJvck1lc3NhZ2UoKSB9fTwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import cloneDeep from 'lodash.clonedeep';
|
|
2
|
-
export function setVisibilityForList(c11nEnv, visibility) {
|
|
3
|
-
const { selectionMode, selectionList, renderMode, referenceList } = c11nEnv.getComponentConfig();
|
|
4
|
-
// usecase:multiselect, fieldgroup, editable table
|
|
5
|
-
if ((selectionMode === PCore.getConstants().LIST_SELECTION_MODE.MULTI && selectionList) || (renderMode === 'Editable' && referenceList)) {
|
|
6
|
-
c11nEnv.getListActions().setVisibility(visibility);
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
function preProcessColumns(columns) {
|
|
10
|
-
return columns?.map(col => {
|
|
11
|
-
const tempColObj = { ...col };
|
|
12
|
-
tempColObj.value = col.value && col.value.startsWith('.') ? col.value.substring(1) : col.value;
|
|
13
|
-
if (tempColObj.setProperty) {
|
|
14
|
-
tempColObj.setProperty = col.setProperty && col.setProperty.startsWith('.') ? col.setProperty.substring(1) : col.setProperty;
|
|
15
|
-
}
|
|
16
|
-
return tempColObj;
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
function getDisplayFieldsMetaData(columns) {
|
|
20
|
-
const displayColumns = columns?.filter(col => col.display === 'true');
|
|
21
|
-
const metaDataObj = {
|
|
22
|
-
key: '',
|
|
23
|
-
primary: '',
|
|
24
|
-
secondary: []
|
|
25
|
-
};
|
|
26
|
-
const keyCol = columns?.filter(col => col.key === 'true');
|
|
27
|
-
metaDataObj.key = keyCol?.length > 0 ? keyCol[0].value : 'auto';
|
|
28
|
-
const itemsRecordsColumn = columns?.filter(col => col.itemsRecordsColumn === 'true');
|
|
29
|
-
if (itemsRecordsColumn?.length > 0) {
|
|
30
|
-
metaDataObj.itemsRecordsColumn = itemsRecordsColumn[0].value;
|
|
31
|
-
}
|
|
32
|
-
const itemsGroupKeyColumn = columns?.filter(col => col.itemsGroupKeyColumn === 'true');
|
|
33
|
-
if (itemsGroupKeyColumn?.length > 0) {
|
|
34
|
-
metaDataObj.itemsGroupKeyColumn = itemsGroupKeyColumn[0].value;
|
|
35
|
-
}
|
|
36
|
-
for (let index = 0; index < displayColumns?.length; index += 1) {
|
|
37
|
-
if (displayColumns[index].secondary === 'true') {
|
|
38
|
-
metaDataObj.secondary.push(displayColumns[index].value);
|
|
39
|
-
}
|
|
40
|
-
else if (displayColumns[index].primary === 'true') {
|
|
41
|
-
metaDataObj.primary = displayColumns[index].value;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return metaDataObj;
|
|
45
|
-
}
|
|
46
|
-
function createSingleTreeObejct(entry, displayFieldMeta, showSecondaryData, selected) {
|
|
47
|
-
const secondaryArr = [];
|
|
48
|
-
displayFieldMeta.secondary.forEach(col => {
|
|
49
|
-
secondaryArr.push(entry[col]);
|
|
50
|
-
});
|
|
51
|
-
const isSelected = selected.some(item => item.id === entry[displayFieldMeta.key]);
|
|
52
|
-
return {
|
|
53
|
-
id: entry[displayFieldMeta.key],
|
|
54
|
-
primary: entry[displayFieldMeta.primary],
|
|
55
|
-
secondary: showSecondaryData ? secondaryArr : [],
|
|
56
|
-
selected: isSelected
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
function putItemsDataInItemsTree(listObjData, displayFieldMeta, itemsTree, showSecondaryInSearchOnly, selected) {
|
|
60
|
-
let newTreeItems = itemsTree.slice();
|
|
61
|
-
const showSecondaryData = !showSecondaryInSearchOnly;
|
|
62
|
-
for (const obj of listObjData) {
|
|
63
|
-
const items = obj[displayFieldMeta.itemsRecordsColumn].map(entry => createSingleTreeObejct(entry, displayFieldMeta, showSecondaryData, selected));
|
|
64
|
-
newTreeItems = newTreeItems.map(caseObject => {
|
|
65
|
-
if (caseObject.id === obj[displayFieldMeta.itemsGroupKeyColumn]) {
|
|
66
|
-
caseObject.items = [...items];
|
|
67
|
-
}
|
|
68
|
-
return caseObject;
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
return newTreeItems;
|
|
72
|
-
}
|
|
73
|
-
function prepareSearchResults(listObjData, displayFieldMeta) {
|
|
74
|
-
const searchResults = [];
|
|
75
|
-
for (const obj of listObjData) {
|
|
76
|
-
searchResults.push(...obj[displayFieldMeta.itemsRecordsColumn]);
|
|
77
|
-
}
|
|
78
|
-
return searchResults;
|
|
79
|
-
}
|
|
80
|
-
async function doSearch(searchText, clickedGroup, initialCaseClass, displayFieldMeta, dataApiObj, // deep clone of the dataApiObj
|
|
81
|
-
itemsTree, isGroupData, showSecondaryInSearchOnly, selected) {
|
|
82
|
-
let searchTextForUngroupedData = '';
|
|
83
|
-
if (dataApiObj) {
|
|
84
|
-
// creating dataApiObject in grouped data cases
|
|
85
|
-
if (isGroupData) {
|
|
86
|
-
dataApiObj = cloneDeep(dataApiObj);
|
|
87
|
-
dataApiObj.fetchedNQData = false;
|
|
88
|
-
dataApiObj.cache = {};
|
|
89
|
-
// if we have no search text and no group selected, return the original tree
|
|
90
|
-
if (searchText === '' && clickedGroup === '') {
|
|
91
|
-
return itemsTree;
|
|
92
|
-
}
|
|
93
|
-
// setting the inital search text & search classes in ApiObject
|
|
94
|
-
dataApiObj.parameters[Object.keys(dataApiObj.parameters)[1]] = searchText;
|
|
95
|
-
dataApiObj.parameters[Object.keys(dataApiObj.parameters)[0]] = initialCaseClass;
|
|
96
|
-
// if we have a selected group
|
|
97
|
-
if (clickedGroup) {
|
|
98
|
-
// check if the data for this group is already present and no search text
|
|
99
|
-
if (searchText === '') {
|
|
100
|
-
const containsData = itemsTree.find(item => item.id === clickedGroup);
|
|
101
|
-
// do not make API call when items of respective group are already fetched
|
|
102
|
-
if (containsData?.items?.length)
|
|
103
|
-
return itemsTree;
|
|
104
|
-
}
|
|
105
|
-
dataApiObj.parameters[Object.keys(dataApiObj.parameters)[0]] = JSON.stringify([clickedGroup]);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
searchTextForUngroupedData = searchText;
|
|
110
|
-
}
|
|
111
|
-
// search API call
|
|
112
|
-
const response = await dataApiObj.fetchData(searchTextForUngroupedData).catch(() => {
|
|
113
|
-
return itemsTree;
|
|
114
|
-
});
|
|
115
|
-
let listObjData = response.data;
|
|
116
|
-
let newItemsTree = [];
|
|
117
|
-
if (isGroupData) {
|
|
118
|
-
if (searchText) {
|
|
119
|
-
listObjData = prepareSearchResults(listObjData, displayFieldMeta);
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
newItemsTree = putItemsDataInItemsTree(listObjData, displayFieldMeta, itemsTree, showSecondaryInSearchOnly, selected);
|
|
123
|
-
return newItemsTree;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
const showSecondaryData = showSecondaryInSearchOnly ? !!searchText : true;
|
|
127
|
-
if (listObjData !== undefined && listObjData.length > 0) {
|
|
128
|
-
newItemsTree = listObjData.map(entry => createSingleTreeObejct(entry, displayFieldMeta, showSecondaryData, selected));
|
|
129
|
-
}
|
|
130
|
-
return newItemsTree;
|
|
131
|
-
}
|
|
132
|
-
return itemsTree;
|
|
133
|
-
}
|
|
134
|
-
function setValuesToPropertyList(searchText, assocProp, items, columns, actions, updatePropertyInRedux = true) {
|
|
135
|
-
const setPropertyList = columns
|
|
136
|
-
?.filter(col => col.setProperty)
|
|
137
|
-
.map(col => {
|
|
138
|
-
return {
|
|
139
|
-
source: col.value,
|
|
140
|
-
target: col.setProperty,
|
|
141
|
-
key: col.key,
|
|
142
|
-
primary: col.primary
|
|
143
|
-
};
|
|
144
|
-
});
|
|
145
|
-
const valueToSet = [];
|
|
146
|
-
if (setPropertyList.length > 0) {
|
|
147
|
-
setPropertyList.forEach(prop => {
|
|
148
|
-
items.forEach(item => {
|
|
149
|
-
if (prop.key === 'true' && item) {
|
|
150
|
-
valueToSet.push(item.id);
|
|
151
|
-
}
|
|
152
|
-
else if (prop.primary === 'true' || !item) {
|
|
153
|
-
valueToSet.push(searchText);
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
if (updatePropertyInRedux) {
|
|
157
|
-
// BUG-666851 setting options so that the store values are replaced and not merged
|
|
158
|
-
const options = {
|
|
159
|
-
isArrayDeepMerge: false
|
|
160
|
-
};
|
|
161
|
-
if (prop.target === 'Associated property') {
|
|
162
|
-
actions.updateFieldValue(assocProp, valueToSet, options);
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
actions.updateFieldValue(`.${prop.target}`, valueToSet, options);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
return valueToSet;
|
|
171
|
-
}
|
|
172
|
-
function getGroupDataForItemsTree(groupDataSource, groupsDisplayFieldMeta, showSecondaryInSearchOnly) {
|
|
173
|
-
return groupDataSource?.map(group => {
|
|
174
|
-
const secondaryArr = [];
|
|
175
|
-
groupsDisplayFieldMeta.secondary.forEach(col => {
|
|
176
|
-
secondaryArr.push(group[col]);
|
|
177
|
-
});
|
|
178
|
-
return {
|
|
179
|
-
id: group[groupsDisplayFieldMeta.key],
|
|
180
|
-
primary: group[groupsDisplayFieldMeta.primary],
|
|
181
|
-
secondary: showSecondaryInSearchOnly ? [] : secondaryArr,
|
|
182
|
-
items: []
|
|
183
|
-
};
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
export { preProcessColumns, getDisplayFieldsMetaData, doSearch, setValuesToPropertyList, getGroupDataForItemsTree };
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvZmllbGQvbXVsdGlzZWxlY3QvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFFekMsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxVQUFVO0lBQ3RELE1BQU0sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNqRyxrREFBa0Q7SUFDbEQsSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ3hJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE9BQU87SUFDaEMsT0FBTyxPQUFPLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3hCLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUM5QixVQUFVLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQy9GLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFD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QUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDO1lBQ3JDLE9BQU8sRUFBRSxLQUFLLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDO1lBQzlDLFNBQVMsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZO1lBQ3hELEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoLmNsb25lZGVlcCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRWaXNpYmlsaXR5Rm9yTGlzdChjMTFuRW52LCB2aXNpYmlsaXR5KSB7XG4gIGNvbnN0IHsgc2VsZWN0aW9uTW9kZSwgc2VsZWN0aW9uTGlzdCwgcmVuZGVyTW9kZSwgcmVmZXJlbmNlTGlzdCB9ID0gYzExbkVudi5nZXRDb21wb25lbnRDb25maWcoKTtcbiAgLy8gdXNlY2FzZTptdWx0aXNlbGVjdCwgZmllbGRncm91cCwgZWRpdGFibGUgdGFibGVcbiAgaWYgKChzZWxlY3Rpb25Nb2RlID09PSBQQ29yZS5nZXRDb25zdGFudHMoKS5MSVNUX1NFTEVDVElPTl9NT0RFLk1VTFRJICYmIHNlbGVjdGlvbkxpc3QpIHx8IChyZW5kZXJNb2RlID09PSAnRWRpdGFibGUnICYmIHJlZmVyZW5jZUxpc3QpKSB7XG4gICAgYzExbkVudi5nZXRMaXN0QWN0aW9ucygpLnNldFZpc2liaWxpdHkodmlzaWJpbGl0eSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJlUHJvY2Vzc0NvbHVtbnMoY29sdW1ucykge1xuICByZXR1cm4gY29sdW1ucz8ubWFwKGNvbCA9PiB7XG4gICAgY29uc3QgdGVtcENvbE9iaiA9IHsgLi4uY29sIH07XG4gICAgdGVtcENvbE9iai52YWx1ZSA9IGNvbC52YWx1ZSAmJiBjb2wudmFsdWUuc3RhcnRzV2l0aCgnLicpID8gY29sLnZhbHVlLnN1YnN0cmluZygxKSA6IGNvbC52YWx1ZTtcbiAgICBpZiAodGVtcENvbE9iai5zZXRQcm9wZXJ0eSkge1xuICAgICAgdGVtcENvbE9iai5zZXRQcm9wZXJ0eSA9IGNvbC5zZXRQcm9wZXJ0eSAmJiBjb2wuc2V0UHJvcGVydHkuc3RhcnRzV2l0aCgnLicpID8gY29sLnNldFByb3BlcnR5LnN1YnN0cmluZygxKSA6IGNvbC5zZXRQcm9wZXJ0eTtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBDb2xPYmo7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXREaXNwbGF5RmllbGRzTWV0YURhdGEoY29sdW1ucykge1xuICBjb25zdCBkaXNwbGF5Q29sdW1ucyA9IGNvbHVtbnM/LmZpbHRlcihjb2wgPT4gY29sLmRpc3BsYXkgPT09ICd0cnVlJyk7XG4gIGNvbnN0IG1ldGFEYXRhT2JqOiBhbnkgPSB7XG4gICAga2V5OiAnJyxcbiAgICBwcmltYXJ5OiAnJyxcbiAgICBzZWNvbmRhcnk6IFtdXG4gIH07XG4gIGNvbnN0IGtleUNvbCA9IGNvbHVtbnM/LmZpbHRlcihjb2wgPT4gY29sLmtleSA9PT0gJ3RydWUnKTtcbiAgbWV0YURhdGFPYmoua2V5ID0ga2V5Q29sPy5sZW5ndGggPiAwID8ga2V5Q29sWzBdLnZhbHVlIDogJ2F1dG8nO1xuICBjb25zdCBpdGVtc1JlY29yZHNDb2x1bW4gPSBjb2x1bW5zPy5maWx0ZXIoY29sID0+IGNvbC5pdGVtc1JlY29yZHNDb2x1bW4gPT09ICd0cnVlJyk7XG4gIGlmIChpdGVtc1JlY29yZHNDb2x1bW4/Lmxlbmd0aCA+IDApIHtcbiAgICBtZXRhRGF0YU9iai5pdGVtc1JlY29yZHNDb2x1bW4gPSBpdGVtc1JlY29yZHNDb2x1bW5bMF0udmFsdWU7XG4gIH1cbiAgY29uc3QgaXRlbXNHcm91cEtleUNvbHVtbiA9IGNvbHVtbnM/LmZpbHRlcihjb2wgPT4gY29sLml0ZW1zR3JvdXBLZXlDb2x1bW4gPT09ICd0cnVlJyk7XG4gIGlmIChpdGVtc0dyb3VwS2V5Q29sdW1uPy5sZW5ndGggPiAwKSB7XG4gICAgbWV0YURhdGFPYmouaXRlbXNHcm91cEtleUNvbHVtbiA9IGl0ZW1zR3JvdXBLZXlDb2x1bW5bMF0udmFsdWU7XG4gIH1cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRpc3BsYXlDb2x1bW5zPy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBpZiAoZGlzcGxheUNvbHVtbnNbaW5kZXhdLnNlY29uZGFyeSA9PT0gJ3RydWUnKSB7XG4gICAgICBtZXRhRGF0YU9iai5zZWNvbmRhcnkucHVzaChkaXNwbGF5Q29sdW1uc1tpbmRleF0udmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZGlzcGxheUNvbHVtbnNbaW5kZXhdLnByaW1hcnkgPT09ICd0cnVlJykge1xuICAgICAgbWV0YURhdGFPYmoucHJpbWFyeSA9IGRpc3BsYXlDb2x1bW5zW2luZGV4XS52YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1ldGFEYXRhT2JqO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTaW5nbGVUcmVlT2JlamN0KGVudHJ5LCBkaXNwbGF5RmllbGRNZXRhLCBzaG93U2Vjb25kYXJ5RGF0YSwgc2VsZWN0ZWQpIHtcbiAgY29uc3Qgc2Vjb25kYXJ5QXJyOiBhbnkgPSBbXTtcbiAgZGlzcGxheUZpZWxkTWV0YS5zZWNvbmRhcnkuZm9yRWFjaChjb2wgPT4ge1xuICAgIHNlY29uZGFyeUFyci5wdXNoKGVudHJ5W2NvbF0pO1xuICB9KTtcbiAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkLnNvbWUoaXRlbSA9PiBpdGVtLmlkID09PSBlbnRyeVtkaXNwbGF5RmllbGRNZXRhLmtleV0pO1xuXG4gIHJldHVybiB7XG4gICAgaWQ6IGVudHJ5W2Rpc3BsYXlGaWVsZE1ldGEua2V5XSxcbiAgICBwcmltYXJ5OiBlbnRyeVtkaXNwbGF5RmllbGRNZXRhLnByaW1hcnldLFxuICAgIHNlY29uZGFyeTogc2hvd1NlY29uZGFyeURhdGEgPyBzZWNvbmRhcnlBcnIgOiBbXSxcbiAgICBzZWxlY3RlZDogaXNTZWxlY3RlZFxuICB9O1xufVxuXG5mdW5jdGlvbiBwdXRJdGVtc0RhdGFJbkl0ZW1zVHJlZShsaXN0T2JqRGF0YSwgZGlzcGxheUZpZWxkTWV0YSwgaXRlbXNUcmVlLCBzaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5LCBzZWxlY3RlZCkge1xuICBsZXQgbmV3VHJlZUl0ZW1zID0gaXRlbXNUcmVlLnNsaWNlKCk7XG4gIGNvbnN0IHNob3dTZWNvbmRhcnlEYXRhID0gIXNob3dTZWNvbmRhcnlJblNlYXJjaE9ubHk7XG4gIGZvciAoY29uc3Qgb2JqIG9mIGxpc3RPYmpEYXRhKSB7XG4gICAgY29uc3QgaXRlbXMgPSBvYmpbZGlzcGxheUZpZWxkTWV0YS5pdGVtc1JlY29yZHNDb2x1bW5dLm1hcChlbnRyeSA9PiBjcmVhdGVTaW5nbGVUcmVlT2JlamN0KGVudHJ5LCBkaXNwbGF5RmllbGRNZXRhLCBzaG93U2Vjb25kYXJ5RGF0YSwgc2VsZWN0ZWQpKTtcblxuICAgIG5ld1RyZWVJdGVtcyA9IG5ld1RyZWVJdGVtcy5tYXAoY2FzZU9iamVjdCA9PiB7XG4gICAgICBpZiAoY2FzZU9iamVjdC5pZCA9PT0gb2JqW2Rpc3BsYXlGaWVsZE1ldGEuaXRlbXNHcm91cEtleUNvbHVtbl0pIHtcbiAgICAgICAgY2FzZU9iamVjdC5pdGVtcyA9IFsuLi5pdGVtc107XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FzZU9iamVjdDtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbmV3VHJlZUl0ZW1zO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlU2VhcmNoUmVzdWx0cyhsaXN0T2JqRGF0YSwgZGlzcGxheUZpZWxkTWV0YSkge1xuICBjb25zdCBzZWFyY2hSZXN1bHRzOiBhbnkgPSBbXTtcbiAgZm9yIChjb25zdCBvYmogb2YgbGlzdE9iakRhdGEpIHtcbiAgICBzZWFyY2hSZXN1bHRzLnB1c2goLi4ub2JqW2Rpc3BsYXlGaWVsZE1ldGEuaXRlbXNSZWNvcmRzQ29sdW1uXSk7XG4gIH1cbiAgcmV0dXJuIHNlYXJjaFJlc3VsdHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRvU2VhcmNoKFxuICBzZWFyY2hUZXh0LFxuICBjbGlja2VkR3JvdXAsXG4gIGluaXRpYWxDYXNlQ2xhc3MsXG4gIGRpc3BsYXlGaWVsZE1ldGEsXG4gIGRhdGFBcGlPYmosIC8vIGRlZXAgY2xvbmUgb2YgdGhlIGRhdGFBcGlPYmpcbiAgaXRlbXNUcmVlLFxuICBpc0dyb3VwRGF0YSxcbiAgc2hvd1NlY29uZGFyeUluU2VhcmNoT25seSxcbiAgc2VsZWN0ZWRcbikge1xuICBsZXQgc2VhcmNoVGV4dEZvclVuZ3JvdXBlZERhdGEgPSAnJztcbiAgaWYgKGRhdGFBcGlPYmopIHtcbiAgICAvLyBjcmVhdGluZyBkYXRhQXBpT2JqZWN0IGluIGdyb3VwZWQgZGF0YSBjYXNlc1xuICAgIGlmIChpc0dyb3VwRGF0YSkge1xuICAgICAgZGF0YUFwaU9iaiA9IGNsb25lRGVlcChkYXRhQXBpT2JqKTtcbiAgICAgIGRhdGFBcGlPYmouZmV0Y2hlZE5RRGF0YSA9IGZhbHNlO1xuICAgICAgZGF0YUFwaU9iai5jYWNoZSA9IHt9O1xuXG4gICAgICAvLyBpZiB3ZSBoYXZlIG5vIHNlYXJjaCB0ZXh0IGFuZCBubyBncm91cCBzZWxlY3RlZCwgcmV0dXJuIHRoZSBvcmlnaW5hbCB0cmVlXG4gICAgICBpZiAoc2VhcmNoVGV4dCA9PT0gJycgJiYgY2xpY2tlZEdyb3VwID09PSAnJykge1xuICAgICAgICByZXR1cm4gaXRlbXNUcmVlO1xuICAgICAgfVxuXG4gICAgICAvLyBzZXR0aW5nIHRoZSBpbml0YWwgc2VhcmNoIHRleHQgJiBzZWFyY2ggY2xhc3NlcyBpbiBBcGlPYmplY3RcbiAgICAgIGRhdGFBcGlPYmoucGFyYW1ldGVyc1tPYmplY3Qua2V5cyhkYXRhQXBpT2JqLnBhcmFtZXRlcnMpWzFdXSA9IHNlYXJjaFRleHQ7XG4gICAgICBkYXRhQXBpT2JqLnBhcmFtZXRlcnNbT2JqZWN0LmtleXMoZGF0YUFwaU9iai5wYXJhbWV0ZXJzKVswXV0gPSBpbml0aWFsQ2FzZUNsYXNzO1xuXG4gICAgICAvLyBpZiB3ZSBoYXZlIGEgc2VsZWN0ZWQgZ3JvdXBcbiAgICAgIGlmIChjbGlja2VkR3JvdXApIHtcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGRhdGEgZm9yIHRoaXMgZ3JvdXAgaXMgYWxyZWFkeSBwcmVzZW50IGFuZCBubyBzZWFyY2ggdGV4dFxuICAgICAgICBpZiAoc2VhcmNoVGV4dCA9PT0gJycpIHtcbiAgICAgICAgICBjb25zdCBjb250YWluc0RhdGEgPSBpdGVtc1RyZWUuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGNsaWNrZWRHcm91cCk7XG4gICAgICAgICAgLy8gZG8gbm90IG1ha2UgQVBJIGNhbGwgd2hlbiBpdGVtcyBvZiByZXNwZWN0aXZlIGdyb3VwIGFyZSBhbHJlYWR5IGZldGNoZWRcbiAgICAgICAgICBpZiAoY29udGFpbnNEYXRhPy5pdGVtcz8ubGVuZ3RoKSByZXR1cm4gaXRlbXNUcmVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YUFwaU9iai5wYXJhbWV0ZXJzW09iamVjdC5rZXlzKGRhdGFBcGlPYmoucGFyYW1ldGVycylbMF1dID0gSlNPTi5zdHJpbmdpZnkoW2NsaWNrZWRHcm91cF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZWFyY2hUZXh0Rm9yVW5ncm91cGVkRGF0YSA9IHNlYXJjaFRleHQ7XG4gICAgfVxuXG4gICAgLy8gc2VhcmNoIEFQSSBjYWxsXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBkYXRhQXBpT2JqLmZldGNoRGF0YShzZWFyY2hUZXh0Rm9yVW5ncm91cGVkRGF0YSkuY2F0Y2goKCkgPT4ge1xuICAgICAgcmV0dXJuIGl0ZW1zVHJlZTtcbiAgICB9KTtcblxuICAgIGxldCBsaXN0T2JqRGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgbGV0IG5ld0l0ZW1zVHJlZSA9IFtdO1xuICAgIGlmIChpc0dyb3VwRGF0YSkge1xuICAgICAgaWYgKHNlYXJjaFRleHQpIHtcbiAgICAgICAgbGlzdE9iakRhdGEgPSBwcmVwYXJlU2VhcmNoUmVzdWx0cyhsaXN0T2JqRGF0YSwgZGlzcGxheUZpZWxkTWV0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdJdGVtc1RyZWUgPSBwdXRJdGVtc0RhdGFJbkl0ZW1zVHJlZShsaXN0T2JqRGF0YSwgZGlzcGxheUZpZWxkTWV0YSwgaXRlbXNUcmVlLCBzaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5LCBzZWxlY3RlZCk7XG4gICAgICAgIHJldHVybiBuZXdJdGVtc1RyZWU7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNob3dTZWNvbmRhcnlEYXRhID0gc2hvd1NlY29uZGFyeUluU2VhcmNoT25seSA/ICEhc2VhcmNoVGV4dCA6IHRydWU7XG4gICAgaWYgKGxpc3RPYmpEYXRhICE9PSB1bmRlZmluZWQgJiYgbGlzdE9iakRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgbmV3SXRlbXNUcmVlID0gbGlzdE9iakRhdGEubWFwKGVudHJ5ID0+IGNyZWF0ZVNpbmdsZVRyZWVPYmVqY3QoZW50cnksIGRpc3BsYXlGaWVsZE1ldGEsIHNob3dTZWNvbmRhcnlEYXRhLCBzZWxlY3RlZCkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3SXRlbXNUcmVlO1xuICB9XG5cbiAgcmV0dXJuIGl0ZW1zVHJlZTtcbn1cblxuZnVuY3Rpb24gc2V0VmFsdWVzVG9Qcm9wZXJ0eUxpc3Qoc2VhcmNoVGV4dCwgYXNzb2NQcm9wLCBpdGVtcywgY29sdW1ucywgYWN0aW9ucywgdXBkYXRlUHJvcGVydHlJblJlZHV4ID0gdHJ1ZSkge1xuICBjb25zdCBzZXRQcm9wZXJ0eUxpc3QgPSBjb2x1bW5zXG4gICAgPy5maWx0ZXIoY29sID0+IGNvbC5zZXRQcm9wZXJ0eSlcbiAgICAubWFwKGNvbCA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2U6IGNvbC52YWx1ZSxcbiAgICAgICAgdGFyZ2V0OiBjb2wuc2V0UHJvcGVydHksXG4gICAgICAgIGtleTogY29sLmtleSxcbiAgICAgICAgcHJpbWFyeTogY29sLnByaW1hcnlcbiAgICAgIH07XG4gICAgfSk7XG4gIGNvbnN0IHZhbHVlVG9TZXQ6IGFueSA9IFtdO1xuICBpZiAoc2V0UHJvcGVydHlMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICBzZXRQcm9wZXJ0eUxpc3QuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChwcm9wLmtleSA9PT0gJ3RydWUnICYmIGl0ZW0pIHtcbiAgICAgICAgICB2YWx1ZVRvU2V0LnB1c2goaXRlbS5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcC5wcmltYXJ5ID09PSAndHJ1ZScgfHwgIWl0ZW0pIHtcbiAgICAgICAgICB2YWx1ZVRvU2V0LnB1c2goc2VhcmNoVGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodXBkYXRlUHJvcGVydHlJblJlZHV4KSB7XG4gICAgICAgIC8vIEJVRy02NjY4NTEgc2V0dGluZyBvcHRpb25zIHNvIHRoYXQgdGhlIHN0b3JlIHZhbHVlcyBhcmUgcmVwbGFjZWQgYW5kIG5vdCBtZXJnZWRcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICBpc0FycmF5RGVlcE1lcmdlOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICBpZiAocHJvcC50YXJnZXQgPT09ICdBc3NvY2lhdGVkIHByb3BlcnR5Jykge1xuICAgICAgICAgIGFjdGlvbnMudXBkYXRlRmllbGRWYWx1ZShhc3NvY1Byb3AsIHZhbHVlVG9TZXQsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjdGlvbnMudXBkYXRlRmllbGRWYWx1ZShgLiR7cHJvcC50YXJnZXR9YCwgdmFsdWVUb1NldCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdmFsdWVUb1NldDtcbn1cblxuZnVuY3Rpb24gZ2V0R3JvdXBEYXRhRm9ySXRlbXNUcmVlKGdyb3VwRGF0YVNvdXJjZSwgZ3JvdXBzRGlzcGxheUZpZWxkTWV0YSwgc2hvd1NlY29uZGFyeUluU2VhcmNoT25seSkge1xuICByZXR1cm4gZ3JvdXBEYXRhU291cmNlPy5tYXAoZ3JvdXAgPT4ge1xuICAgIGNvbnN0IHNlY29uZGFyeUFycjogYW55ID0gW107XG4gICAgZ3JvdXBzRGlzcGxheUZpZWxkTWV0YS5zZWNvbmRhcnkuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgc2Vjb25kYXJ5QXJyLnB1c2goZ3JvdXBbY29sXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBncm91cFtncm91cHNEaXNwbGF5RmllbGRNZXRhLmtleV0sXG4gICAgICBwcmltYXJ5OiBncm91cFtncm91cHNEaXNwbGF5RmllbGRNZXRhLnByaW1hcnldLFxuICAgICAgc2Vjb25kYXJ5OiBzaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5ID8gW10gOiBzZWNvbmRhcnlBcnIsXG4gICAgICBpdGVtczogW11cbiAgICB9O1xuICB9KTtcbn1cblxuZXhwb3J0IHsgcHJlUHJvY2Vzc0NvbHVtbnMsIGdldERpc3BsYXlGaWVsZHNNZXRhRGF0YSwgZG9TZWFyY2gsIHNldFZhbHVlc1RvUHJvcGVydHlMaXN0LCBnZXRHcm91cERhdGFGb3JJdGVtc1RyZWUgfTtcbiJdfQ==
|