@pega/angular-sdk-components 0.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/_shared/styles.scss +28 -0
- package/esm2022/lib/_bridge/angular-pconnect.mjs +416 -0
- package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +114 -0
- package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +228 -0
- package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +142 -0
- package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +50 -0
- package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +29 -0
- package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +31 -0
- package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +51 -0
- package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +80 -0
- package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +37 -0
- package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +31 -0
- package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +36 -0
- package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +25 -0
- package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +28 -0
- package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +42 -0
- package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +136 -0
- package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +33 -0
- package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +93 -0
- package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +18 -0
- package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +286 -0
- package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +98 -0
- package/esm2022/lib/_components/field/check-box/check-box.component.mjs +157 -0
- package/esm2022/lib/_components/field/currency/currency.component.mjs +160 -0
- package/esm2022/lib/_components/field/date/date.component.mjs +219 -0
- package/esm2022/lib/_components/field/date-time/date-time.component.mjs +200 -0
- package/esm2022/lib/_components/field/decimal/decimal.component.mjs +157 -0
- package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +197 -0
- package/esm2022/lib/_components/field/email/email.component.mjs +150 -0
- package/esm2022/lib/_components/field/integer/integer.component.mjs +155 -0
- package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +44 -0
- package/esm2022/lib/_components/field/percentage/percentage.component.mjs +155 -0
- package/esm2022/lib/_components/field/phone/phone.component.mjs +167 -0
- package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +189 -0
- package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +103 -0
- package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +95 -0
- package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +57 -0
- package/esm2022/lib/_components/field/text/text.component.mjs +138 -0
- package/esm2022/lib/_components/field/text-area/text-area.component.mjs +155 -0
- package/esm2022/lib/_components/field/text-content/text-content.component.mjs +69 -0
- package/esm2022/lib/_components/field/text-input/text-input.component.mjs +152 -0
- package/esm2022/lib/_components/field/time/time.component.mjs +151 -0
- package/esm2022/lib/_components/field/url/url.component.mjs +150 -0
- package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +175 -0
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +491 -0
- package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +68 -0
- package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +24 -0
- package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +314 -0
- package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +32 -0
- package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +219 -0
- package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +31 -0
- package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +387 -0
- package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +47 -0
- package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +88 -0
- package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +144 -0
- package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +18 -0
- package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +80 -0
- package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +132 -0
- package/esm2022/lib/_components/infra/reference/reference.component.mjs +133 -0
- package/esm2022/lib/_components/infra/region/region.component.mjs +33 -0
- package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +228 -0
- package/esm2022/lib/_components/infra/stages/stages.component.mjs +62 -0
- package/esm2022/lib/_components/infra/view/view.component.mjs +173 -0
- package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +140 -0
- package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +43 -0
- package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +72 -0
- package/esm2022/lib/_components/template/case-view/case-view.component.mjs +196 -0
- package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +68 -0
- package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +239 -0
- package/esm2022/lib/_components/template/default-form/default-form.component.mjs +61 -0
- package/esm2022/lib/_components/template/details/details.component.mjs +102 -0
- package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +72 -0
- package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +71 -0
- package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +66 -0
- package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +80 -0
- package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +77 -0
- package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +77 -0
- package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +65 -0
- package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +23 -0
- package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +134 -0
- package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +19 -0
- package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +22 -0
- package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +40 -0
- package/esm2022/lib/_components/template/list-page/list-page.component.mjs +14 -0
- package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +208 -0
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +1198 -0
- package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +61 -0
- package/esm2022/lib/_components/template/list-view/utils.mjs +660 -0
- package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +44 -0
- package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +30 -0
- package/esm2022/lib/_components/template/one-column/one-column.component.mjs +30 -0
- package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +16 -0
- package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +30 -0
- package/esm2022/lib/_components/template/page/page.component.mjs +52 -0
- package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +149 -0
- package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +139 -0
- package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +106 -0
- package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +270 -0
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +760 -0
- package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +131 -0
- package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +16 -0
- package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +67 -0
- package/esm2022/lib/_components/template/three-column/three-column.component.mjs +30 -0
- package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +16 -0
- package/esm2022/lib/_components/template/two-column/two-column.component.mjs +30 -0
- package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +40 -0
- package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +30 -0
- package/esm2022/lib/_components/template/utils.mjs +22 -0
- package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +30 -0
- package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +53 -0
- package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +135 -0
- package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +24 -0
- package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +588 -0
- package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +81 -0
- package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +525 -0
- package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +631 -0
- package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +57 -0
- package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +75 -0
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +213 -0
- package/esm2022/lib/_components/widget/utility/utility.component.mjs +34 -0
- package/esm2022/lib/_directives/thousand-seperator.directive.mjs +28 -0
- package/esm2022/lib/_helpers/case-utils.mjs +71 -0
- package/esm2022/lib/_helpers/common.mjs +20 -0
- package/esm2022/lib/_helpers/currency-utils.mjs +57 -0
- package/esm2022/lib/_helpers/date-format-utils.mjs +68 -0
- package/esm2022/lib/_helpers/event-util.mjs +19 -0
- package/esm2022/lib/_helpers/field-group-utils.mjs +47 -0
- package/esm2022/lib/_helpers/filter-utils.mjs +106 -0
- package/esm2022/lib/_helpers/formatters/currency-map.mjs +903 -0
- package/esm2022/lib/_helpers/formatters/format-utils.mjs +68 -0
- package/esm2022/lib/_helpers/tab-utils.mjs +59 -0
- package/esm2022/lib/_helpers/template-utils.mjs +56 -0
- package/esm2022/lib/_helpers/utils.mjs +386 -0
- package/esm2022/lib/_helpers/versionHelpers.mjs +12 -0
- package/esm2022/lib/_messages/error-messages.service.mjs +31 -0
- package/esm2022/lib/_messages/get-login-status.service.mjs +26 -0
- package/esm2022/lib/_messages/oauth-response.service.mjs +30 -0
- package/esm2022/lib/_messages/progress-spinner.service.mjs +30 -0
- package/esm2022/lib/_messages/reset-pconnect.service.mjs +31 -0
- package/esm2022/lib/_messages/update-worklist.service.mjs +30 -0
- package/esm2022/lib/_services/case.service.mjs +32 -0
- package/esm2022/lib/_services/datapage.service.mjs +52 -0
- package/esm2022/lib/_services/endpoints.mjs +61 -0
- package/esm2022/lib/_services/server-config.service.mjs +52 -0
- package/esm2022/lib/_types/PConnProps.interface.mjs +2 -0
- package/esm2022/pega-angular-sdk-components.mjs +5 -0
- package/esm2022/public-api.mjs +138 -0
- package/esm2022/sdk-local-component-map.mjs +9 -0
- package/fesm2022/pega-angular-sdk-components.mjs +17380 -0
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/_bridge/angular-pconnect.d.ts +140 -0
- package/lib/_bridge/component-mapper/component-mapper.component.d.ts +20 -0
- package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +213 -0
- package/lib/_bridge/helpers/sdk_component_map.d.ts +3 -0
- package/lib/_components/designSystemExtension/alert/alert.component.d.ts +12 -0
- package/lib/_components/designSystemExtension/alert-banner/alert-banner.component.d.ts +13 -0
- package/lib/_components/designSystemExtension/banner/banner.component.d.ts +15 -0
- package/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.d.ts +20 -0
- package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +18 -0
- package/lib/_components/designSystemExtension/material-details/material-details.component.d.ts +15 -0
- package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +12 -0
- package/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.d.ts +15 -0
- package/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.d.ts +9 -0
- package/lib/_components/designSystemExtension/material-utility/material-utility.component.d.ts +16 -0
- package/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.d.ts +11 -0
- package/lib/_components/designSystemExtension/operator/operator.component.d.ts +25 -0
- package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +16 -0
- package/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.d.ts +23 -0
- package/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.d.ts +7 -0
- package/lib/_components/field/auto-complete/auto-complete.component.d.ts +74 -0
- package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +24 -0
- package/lib/_components/field/check-box/check-box.component.d.ts +48 -0
- package/lib/_components/field/currency/currency.component.d.ts +50 -0
- package/lib/_components/field/date/date.component.d.ts +65 -0
- package/lib/_components/field/date-time/date-time.component.d.ts +55 -0
- package/lib/_components/field/decimal/decimal.component.d.ts +46 -0
- package/lib/_components/field/dropdown/dropdown.component.d.ts +60 -0
- package/lib/_components/field/email/email.component.d.ts +44 -0
- package/lib/_components/field/integer/integer.component.d.ts +44 -0
- package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +15 -0
- package/lib/_components/field/percentage/percentage.component.d.ts +44 -0
- package/lib/_components/field/phone/phone.component.d.ts +48 -0
- package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +60 -0
- package/lib/_components/field/rich-text/rich-text.component.d.ts +42 -0
- package/lib/_components/field/scalar-list/scalar-list.component.d.ts +37 -0
- package/lib/_components/field/semantic-link/semantic-link.component.d.ts +30 -0
- package/lib/_components/field/text/text.component.d.ts +40 -0
- package/lib/_components/field/text-area/text-area.component.d.ts +45 -0
- package/lib/_components/field/text-content/text-content.component.d.ts +30 -0
- package/lib/_components/field/text-input/text-input.component.d.ts +45 -0
- package/lib/_components/field/time/time.component.d.ts +43 -0
- package/lib/_components/field/url/url.component.d.ts +43 -0
- package/lib/_components/field/user-reference/user-reference.component.d.ts +39 -0
- package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +85 -0
- package/lib/_components/infra/Containers/flow-container/helpers.d.ts +2 -0
- package/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.d.ts +15 -0
- package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +71 -0
- package/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.d.ts +15 -0
- package/lib/_components/infra/Containers/view-container/view-container.component.d.ts +51 -0
- package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +12 -0
- package/lib/_components/infra/assignment/assignment.component.d.ts +72 -0
- package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +18 -0
- package/lib/_components/infra/dashboard-filter/dashboard-filter.component.d.ts +20 -0
- package/lib/_components/infra/defer-load/defer-load.component.d.ts +46 -0
- package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +8 -0
- package/lib/_components/infra/multi-step/multi-step.component.d.ts +31 -0
- package/lib/_components/infra/navbar/navbar.component.d.ts +51 -0
- package/lib/_components/infra/reference/reference.component.d.ts +16 -0
- package/lib/_components/infra/region/region.component.d.ts +14 -0
- package/lib/_components/infra/root-container/root-container.component.d.ts +35 -0
- package/lib/_components/infra/stages/stages.component.d.ts +29 -0
- package/lib/_components/infra/view/view.component.d.ts +40 -0
- package/lib/_components/template/app-shell/app-shell.component.d.ts +55 -0
- package/lib/_components/template/banner-page/banner-page.component.d.ts +27 -0
- package/lib/_components/template/case-summary/case-summary.component.d.ts +34 -0
- package/lib/_components/template/case-view/case-view.component.d.ts +56 -0
- package/lib/_components/template/confirmation/confirmation.component.d.ts +38 -0
- package/lib/_components/template/data-reference/data-reference.component.d.ts +41 -0
- package/lib/_components/template/default-form/default-form.component.d.ts +21 -0
- package/lib/_components/template/details/details.component.d.ts +20 -0
- package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +21 -0
- package/lib/_components/template/details-one-column/details-one-column.component.d.ts +22 -0
- package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +24 -0
- package/lib/_components/template/details-three-column/details-three-column.component.d.ts +25 -0
- package/lib/_components/template/details-two-column/details-two-column.component.d.ts +25 -0
- package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +24 -0
- package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +20 -0
- package/lib/_components/template/field-group-list/field-group-list.component.d.ts +9 -0
- package/lib/_components/template/field-group-template/field-group-template.component.d.ts +52 -0
- package/lib/_components/template/field-value-list/field-value-list.component.d.ts +8 -0
- package/lib/_components/template/inline-dashboard/inline-dashboard.component.d.ts +16 -0
- package/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.d.ts +25 -0
- package/lib/_components/template/list-page/list-page.component.d.ts +7 -0
- package/lib/_components/template/list-view/DefaultViewMeta.d.ts +1 -0
- package/lib/_components/template/list-view/list-view.component.d.ts +157 -0
- package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -0
- package/lib/_components/template/list-view/utils.d.ts +118 -0
- package/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.d.ts +25 -0
- package/lib/_components/template/narrow-wide-form/narrow-wide-form.component.d.ts +14 -0
- package/lib/_components/template/one-column/one-column.component.d.ts +14 -0
- package/lib/_components/template/one-column-page/one-column-page.component.d.ts +9 -0
- package/lib/_components/template/one-column-tab/one-column-tab.component.d.ts +14 -0
- package/lib/_components/template/page/page.component.d.ts +25 -0
- package/lib/_components/template/promoted-filters/promoted-filters.component.d.ts +35 -0
- package/lib/_components/template/repeating-structures/repeating-structures.component.d.ts +37 -0
- package/lib/_components/template/simple-table/simple-table.component.d.ts +43 -0
- package/lib/_components/template/simple-table-manual/helpers.d.ts +81 -0
- package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +159 -0
- package/lib/_components/template/simple-table-select/simple-table-select.component.d.ts +32 -0
- package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +9 -0
- package/lib/_components/template/sub-tabs/sub-tabs.component.d.ts +26 -0
- package/lib/_components/template/three-column/three-column.component.d.ts +14 -0
- package/lib/_components/template/three-column-page/three-column-page.component.d.ts +9 -0
- package/lib/_components/template/two-column/two-column.component.d.ts +14 -0
- package/lib/_components/template/two-column-page/two-column-page.component.d.ts +17 -0
- package/lib/_components/template/two-column-tab/two-column-tab.component.d.ts +14 -0
- package/lib/_components/template/utils.d.ts +2 -0
- package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +14 -0
- package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +20 -0
- package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +50 -0
- package/lib/_components/widget/app-announcement/app-announcement.component.d.ts +19 -0
- package/lib/_components/widget/attachment/attachment.component.d.ts +99 -0
- package/lib/_components/widget/case-history/case-history.component.d.ts +24 -0
- package/lib/_components/widget/feed-container/feed-container.component.d.ts +49 -0
- package/lib/_components/widget/file-utility/file-utility.component.d.ts +150 -0
- package/lib/_components/widget/list-utility/list-utility.component.d.ts +23 -0
- package/lib/_components/widget/quick-create/quick-create.component.d.ts +29 -0
- package/lib/_components/widget/todo/todo.component.d.ts +64 -0
- package/lib/_components/widget/utility/utility.component.d.ts +25 -0
- package/lib/_directives/thousand-seperator.directive.d.ts +9 -0
- package/lib/_helpers/case-utils.d.ts +19 -0
- package/lib/_helpers/common.d.ts +3 -0
- package/lib/_helpers/currency-utils.d.ts +10 -0
- package/lib/_helpers/date-format-utils.d.ts +12 -0
- package/lib/_helpers/event-util.d.ts +2 -0
- package/lib/_helpers/field-group-utils.d.ts +16 -0
- package/lib/_helpers/filter-utils.d.ts +46 -0
- package/lib/_helpers/formatters/currency-map.d.ts +1132 -0
- package/lib/_helpers/formatters/format-utils.d.ts +8 -0
- package/lib/_helpers/tab-utils.d.ts +4 -0
- package/lib/_helpers/template-utils.d.ts +16 -0
- package/lib/_helpers/utils.d.ts +32 -0
- package/lib/_helpers/versionHelpers.d.ts +8 -0
- package/lib/_messages/error-messages.service.d.ts +15 -0
- package/lib/_messages/get-login-status.service.d.ts +10 -0
- package/lib/_messages/oauth-response.service.d.ts +14 -0
- package/lib/_messages/progress-spinner.service.d.ts +14 -0
- package/lib/_messages/reset-pconnect.service.d.ts +15 -0
- package/lib/_messages/update-worklist.service.d.ts +14 -0
- package/lib/_services/case.service.d.ts +12 -0
- package/lib/_services/datapage.service.d.ts +14 -0
- package/lib/_services/endpoints.d.ts +39 -0
- package/lib/_services/server-config.service.d.ts +31 -0
- package/lib/_types/PConnProps.interface.d.ts +17 -0
- package/package.json +28 -0
- package/public-api.d.ts +133 -0
- package/sdk-local-component-map.d.ts +2 -0
- package/sdk-local-component-map.ts +12 -0
package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatInputModule } from '@angular/material/input';
|
|
4
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
+
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
7
|
+
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
8
|
+
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../../_messages/progress-spinner.service";
|
|
11
|
+
import * as i2 from "../../../_helpers/utils";
|
|
12
|
+
import * as i3 from "@angular/common";
|
|
13
|
+
import * as i4 from "@angular/material/form-field";
|
|
14
|
+
import * as i5 from "@angular/material/icon";
|
|
15
|
+
import * as i6 from "@angular/material/input";
|
|
16
|
+
import * as i7 from "@angular/material/table";
|
|
17
|
+
import * as i8 from "@angular/material/sort";
|
|
18
|
+
import * as i9 from "@angular/material/paginator";
|
|
19
|
+
export class RepeatingStructuresComponent {
|
|
20
|
+
constructor(psService, utils) {
|
|
21
|
+
this.psService = psService;
|
|
22
|
+
this.utils = utils;
|
|
23
|
+
this.displayedColumns$ = Array();
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
const componentConfig = this.pConn$.getRawMetadata().config || { fields: [] };
|
|
27
|
+
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
|
|
28
|
+
this.fields$ = this.initializeColumns(componentConfig.fields);
|
|
29
|
+
const refList = this.configProps$.referenceList;
|
|
30
|
+
// @ts-ignore - second parameter pageReference for getValue method should be optional
|
|
31
|
+
const tableDataResults = JSON.parse(JSON.stringify(this.pConn$.getValue(refList)));
|
|
32
|
+
// update elements like date format
|
|
33
|
+
const updatedRefList = this.updateData(tableDataResults, this.fields$);
|
|
34
|
+
this.repeatList$ = new MatTableDataSource(updatedRefList);
|
|
35
|
+
this.displayedColumns$ = this.getDisplayColumns(this.fields$);
|
|
36
|
+
this.repeatList$.paginator = this.paginator;
|
|
37
|
+
}
|
|
38
|
+
ngAfterViewInit() {
|
|
39
|
+
// paginator has to exist for this to work,
|
|
40
|
+
// so called after init (paginator drawn)
|
|
41
|
+
this.repeatList$.paginator = this.paginator;
|
|
42
|
+
this.repeatList$.sort = this.sort;
|
|
43
|
+
}
|
|
44
|
+
applySearch(event) {
|
|
45
|
+
const filterValue = event.target.value;
|
|
46
|
+
this.repeatList$.filter = filterValue.trim().toLowerCase();
|
|
47
|
+
if (this.repeatList$.paginator) {
|
|
48
|
+
this.repeatList$.paginator.firstPage();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
rowClick(row) {
|
|
52
|
+
// eslint-disable-next-line sonarjs/no-small-switch
|
|
53
|
+
switch (this.configProps$.rowClickAction) {
|
|
54
|
+
case 'openAssignment':
|
|
55
|
+
this.psService.sendMessage(true);
|
|
56
|
+
this.openAssignment(row);
|
|
57
|
+
break;
|
|
58
|
+
default:
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
updateData(listData, fieldData) {
|
|
63
|
+
const returnList = new Array();
|
|
64
|
+
listData.forEach(row => {
|
|
65
|
+
// copy
|
|
66
|
+
const rowData = JSON.parse(JSON.stringify(listData[row]));
|
|
67
|
+
for (let fieldIndex = 0; fieldIndex < fieldData.length; fieldIndex++) {
|
|
68
|
+
if (fieldData[fieldIndex].type == 'date') {
|
|
69
|
+
const fieldName = fieldData[fieldIndex].name;
|
|
70
|
+
const formattedDate = rowData[fieldName];
|
|
71
|
+
// format date
|
|
72
|
+
// formattedDate = formattedDate.replace("GMT", "+0000");
|
|
73
|
+
this.utils.generateDateTime(formattedDate, 'MMMM D, YYYY h:mm:ss A');
|
|
74
|
+
// update
|
|
75
|
+
rowData[fieldName] = formattedDate;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
returnList.push(rowData);
|
|
79
|
+
});
|
|
80
|
+
return returnList;
|
|
81
|
+
}
|
|
82
|
+
openAssignment(row) {
|
|
83
|
+
const { pxRefObjectClass, pzInsKey } = row;
|
|
84
|
+
const sTarget = this.pConn$.getContainerName();
|
|
85
|
+
const options = { containerName: sTarget };
|
|
86
|
+
this.pConn$
|
|
87
|
+
.getActionsApi()
|
|
88
|
+
.openAssignment(pzInsKey, pxRefObjectClass, options)
|
|
89
|
+
.then(() => { });
|
|
90
|
+
}
|
|
91
|
+
initializeData(data) {
|
|
92
|
+
data.forEach((item, idx) => {
|
|
93
|
+
item.__original_index = idx;
|
|
94
|
+
item.__level = 1;
|
|
95
|
+
});
|
|
96
|
+
return data;
|
|
97
|
+
}
|
|
98
|
+
getType(field) {
|
|
99
|
+
const { config = {}, type } = field;
|
|
100
|
+
const { formatType } = config;
|
|
101
|
+
if (formatType === 'datetime' || formatType === 'date') {
|
|
102
|
+
// currently cosmos has only support for date ... it also need to support dateTime
|
|
103
|
+
return 'date';
|
|
104
|
+
}
|
|
105
|
+
return type.toLowerCase();
|
|
106
|
+
}
|
|
107
|
+
initializeColumns(fields = []) {
|
|
108
|
+
return fields.map((field, originalColIndex) => ({
|
|
109
|
+
...field,
|
|
110
|
+
type: this.getType(field),
|
|
111
|
+
name: field.config.value.substring(4),
|
|
112
|
+
label: field.config.label.substring(3),
|
|
113
|
+
id: originalColIndex,
|
|
114
|
+
groupingEnabled: true,
|
|
115
|
+
grouped: false,
|
|
116
|
+
minWidth: 50,
|
|
117
|
+
cellRenderer: this.getType(field) === 'text' ? null : field.type,
|
|
118
|
+
filter: true
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
getDisplayColumns(fields = []) {
|
|
122
|
+
return fields.map((field) => field.name);
|
|
123
|
+
}
|
|
124
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RepeatingStructuresComponent, deps: [{ token: i1.ProgressSpinnerService }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
125
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RepeatingStructuresComponent, isStandalone: true, selector: "app-repeating-structures", inputs: { pConn$: "pConn$" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], ngImport: i0, template: "<div>\n <mat-form-field class=\"psdk-search\">\n <mat-label\n ><mat-icon class=\"psdk-icon-search\" style=\"transform: scale(1.2); width: 2rem; vertical-align: sub\" svgIcon=\"magnify\" mastListIcon></mat-icon>\n Search</mat-label\n >\n <input matInput (keyup)=\"applySearch($event)\" placeholder=\"\" />\n </mat-form-field>\n\n <table mat-table [dataSource]=\"repeatList$\" matSort>\n <ng-container *ngFor=\"let dCol of fields$\" [matColumnDef]=\"dCol.name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{ dCol.label }}</th>\n <td mat-cell *matCellDef=\"let element\">{{ element[dCol.name] }}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns$\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns$\" (click)=\"rowClick(row)\"></tr>\n </table>\n\n <mat-paginator [pageSizeOptions]=\"[10, 20, 50, 100, 500]\" showFirstLastButtons></mat-paginator>\n</div>\n", styles: ["table{width:100%}.mat-mdc-row .mat-mdc-cell{text-align:left}.psdk-search{padding-left:.625rem}.psdk-icon-search{vertical-align:sub;padding:0rem .125rem;min-width:unset}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: 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: MatTableModule }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i9.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }] }); }
|
|
126
|
+
}
|
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RepeatingStructuresComponent, decorators: [{
|
|
128
|
+
type: Component,
|
|
129
|
+
args: [{ selector: 'app-repeating-structures', standalone: true, imports: [CommonModule, MatFormFieldModule, MatIconModule, MatInputModule, MatTableModule, MatSortModule, MatPaginatorModule], template: "<div>\n <mat-form-field class=\"psdk-search\">\n <mat-label\n ><mat-icon class=\"psdk-icon-search\" style=\"transform: scale(1.2); width: 2rem; vertical-align: sub\" svgIcon=\"magnify\" mastListIcon></mat-icon>\n Search</mat-label\n >\n <input matInput (keyup)=\"applySearch($event)\" placeholder=\"\" />\n </mat-form-field>\n\n <table mat-table [dataSource]=\"repeatList$\" matSort>\n <ng-container *ngFor=\"let dCol of fields$\" [matColumnDef]=\"dCol.name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{ dCol.label }}</th>\n <td mat-cell *matCellDef=\"let element\">{{ element[dCol.name] }}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns$\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns$\" (click)=\"rowClick(row)\"></tr>\n </table>\n\n <mat-paginator [pageSizeOptions]=\"[10, 20, 50, 100, 500]\" showFirstLastButtons></mat-paginator>\n</div>\n", styles: ["table{width:100%}.mat-mdc-row .mat-mdc-cell{text-align:left}.psdk-search{padding-left:.625rem}.psdk-icon-search{vertical-align:sub;padding:0rem .125rem;min-width:unset}\n"] }]
|
|
130
|
+
}], ctorParameters: function () { return [{ type: i1.ProgressSpinnerService }, { type: i2.Utils }]; }, propDecorators: { paginator: [{
|
|
131
|
+
type: ViewChild,
|
|
132
|
+
args: [MatPaginator]
|
|
133
|
+
}], sort: [{
|
|
134
|
+
type: ViewChild,
|
|
135
|
+
args: [MatSort]
|
|
136
|
+
}], pConn$: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}] } });
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0aW5nLXN0cnVjdHVyZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3RlbXBsYXRlL3JlcGVhdGluZy1zdHJ1Y3R1cmVzL3JlcGVhdGluZy1zdHJ1Y3R1cmVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9yZXBlYXRpbmctc3RydWN0dXJlcy9yZXBlYXRpbmctc3RydWN0dXJlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFnQjdFLE1BQU0sT0FBTyw0QkFBNEI7SUFVdkMsWUFDVSxTQUFpQyxFQUNqQyxLQUFZO1FBRFosY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDakMsVUFBSyxHQUFMLEtBQUssQ0FBTztR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NUIsNEJBQTRCLDZKQUM1QixZQUFZLHVFQUNaLE9BQU8sZ0RDekJwQixxOEJBcUJBLG1PREFZLFlBQVksMkpBQUUsa0JBQWtCLDBTQUFFLGFBQWEsbUxBQUUsY0FBYywwV0FBRSxjQUFjLGdoQ0FBRSxhQUFhLGlkQUFFLGtCQUFrQjs7NEZBRWpILDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDRSwwQkFBMEIsY0FHeEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQztpSUFHcEcsU0FBUztzQkFBakMsU0FBUzt1QkFBQyxZQUFZO2dCQUNILElBQUk7c0JBQXZCLFNBQVM7dUJBQUMsT0FBTztnQkFDVCxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0LCBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UsIE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5cbmludGVyZmFjZSBSZXBlYXRpbmdTdHJ1Y3R1cmVzUHJvcHMge1xuICByZWZlcmVuY2VMaXN0PzogYW55W107XG4gIHJvd0NsaWNrQWN0aW9uPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcmVwZWF0aW5nLXN0cnVjdHVyZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0aW5nLXN0cnVjdHVyZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXBlYXRpbmctc3RydWN0dXJlcy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdElucHV0TW9kdWxlLCBNYXRUYWJsZU1vZHVsZSwgTWF0U29ydE1vZHVsZSwgTWF0UGFnaW5hdG9yTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBSZXBlYXRpbmdTdHJ1Y3R1cmVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuXG4gIGNvbmZpZ1Byb3BzJDogUmVwZWF0aW5nU3RydWN0dXJlc1Byb3BzO1xuICByZXBlYXRMaXN0JDogTWF0VGFibGVEYXRhU291cmNlPGFueT47XG4gIGZpZWxkcyQ6IGFueVtdO1xuICBkaXNwbGF5ZWRDb2x1bW5zJCA9IEFycmF5PHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBzU2VydmljZTogUHJvZ3Jlc3NTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxzOiBVdGlsc1xuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9uZW50Q29uZmlnID0gKHRoaXMucENvbm4kLmdldFJhd01ldGFkYXRhKCkgYXMgYW55KS5jb25maWcgfHwgeyBmaWVsZHM6IFtdIH07XG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSk7XG4gICAgdGhpcy5maWVsZHMkID0gdGhpcy5pbml0aWFsaXplQ29sdW1ucyhjb21wb25lbnRDb25maWcuZmllbGRzKTtcblxuICAgIGNvbnN0IHJlZkxpc3QgPSB0aGlzLmNvbmZpZ1Byb3BzJC5yZWZlcmVuY2VMaXN0O1xuICAgIC8vIEB0cy1pZ25vcmUgLSBzZWNvbmQgcGFyYW1ldGVyIHBhZ2VSZWZlcmVuY2UgZm9yIGdldFZhbHVlIG1ldGhvZCBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICBjb25zdCB0YWJsZURhdGFSZXN1bHRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnBDb25uJC5nZXRWYWx1ZShyZWZMaXN0KSkpO1xuXG4gICAgLy8gdXBkYXRlIGVsZW1lbnRzIGxpa2UgZGF0ZSBmb3JtYXRcbiAgICBjb25zdCB1cGRhdGVkUmVmTGlzdCA9IHRoaXMudXBkYXRlRGF0YSh0YWJsZURhdGFSZXN1bHRzLCB0aGlzLmZpZWxkcyQpO1xuXG4gICAgdGhpcy5yZXBlYXRMaXN0JCA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodXBkYXRlZFJlZkxpc3QpO1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyQgPSB0aGlzLmdldERpc3BsYXlDb2x1bW5zKHRoaXMuZmllbGRzJCk7XG4gICAgdGhpcy5yZXBlYXRMaXN0JC5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyBwYWdpbmF0b3IgaGFzIHRvIGV4aXN0IGZvciB0aGlzIHRvIHdvcmssXG4gICAgLy8gc28gY2FsbGVkIGFmdGVyIGluaXQgKHBhZ2luYXRvciBkcmF3bilcbiAgICB0aGlzLnJlcGVhdExpc3QkLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuICAgIHRoaXMucmVwZWF0TGlzdCQuc29ydCA9IHRoaXMuc29ydDtcbiAgfVxuXG4gIGFwcGx5U2VhcmNoKGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLnJlcGVhdExpc3QkLmZpbHRlciA9IGZpbHRlclZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKHRoaXMucmVwZWF0TGlzdCQucGFnaW5hdG9yKSB7XG4gICAgICB0aGlzLnJlcGVhdExpc3QkLnBhZ2luYXRvci5maXJzdFBhZ2UoKTtcbiAgICB9XG4gIH1cblxuICByb3dDbGljayhyb3cpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9uby1zbWFsbC1zd2l0Y2hcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlnUHJvcHMkLnJvd0NsaWNrQWN0aW9uKSB7XG4gICAgICBjYXNlICdvcGVuQXNzaWdubWVudCc6XG4gICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKHRydWUpO1xuICAgICAgICB0aGlzLm9wZW5Bc3NpZ25tZW50KHJvdyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRGF0YShsaXN0RGF0YTogYW55W10sIGZpZWxkRGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3QgcmV0dXJuTGlzdDogYW55W10gPSBuZXcgQXJyYXk8YW55PigpO1xuICAgIGxpc3REYXRhLmZvckVhY2gocm93ID0+IHtcbiAgICAgIC8vIGNvcHlcbiAgICAgIGNvbnN0IHJvd0RhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGxpc3REYXRhW3Jvd10pKTtcblxuICAgICAgZm9yIChsZXQgZmllbGRJbmRleCA9IDA7IGZpZWxkSW5kZXggPCBmaWVsZERhdGEubGVuZ3RoOyBmaWVsZEluZGV4KyspIHtcbiAgICAgICAgaWYgKGZpZWxkRGF0YVtmaWVsZEluZGV4XS50eXBlID09ICdkYXRlJykge1xuICAgICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkRGF0YVtmaWVsZEluZGV4XS5uYW1lO1xuICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSByb3dEYXRhW2ZpZWxkTmFtZV07XG5cbiAgICAgICAgICAvLyBmb3JtYXQgZGF0ZVxuICAgICAgICAgIC8vIGZvcm1hdHRlZERhdGUgPSBmb3JtYXR0ZWREYXRlLnJlcGxhY2UoXCJHTVRcIiwgXCIrMDAwMFwiKTtcbiAgICAgICAgICB0aGlzLnV0aWxzLmdlbmVyYXRlRGF0ZVRpbWUoZm9ybWF0dGVkRGF0ZSwgJ01NTU0gRCwgWVlZWSBoOm1tOnNzIEEnKTtcblxuICAgICAgICAgIC8vIHVwZGF0ZVxuICAgICAgICAgIHJvd0RhdGFbZmllbGROYW1lXSA9IGZvcm1hdHRlZERhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybkxpc3QucHVzaChyb3dEYXRhKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmV0dXJuTGlzdDtcbiAgfVxuXG4gIG9wZW5Bc3NpZ25tZW50KHJvdykge1xuICAgIGNvbnN0IHsgcHhSZWZPYmplY3RDbGFzcywgcHpJbnNLZXkgfSA9IHJvdztcbiAgICBjb25zdCBzVGFyZ2V0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHsgY29udGFpbmVyTmFtZTogc1RhcmdldCB9O1xuICAgIHRoaXMucENvbm4kXG4gICAgICAuZ2V0QWN0aW9uc0FwaSgpXG4gICAgICAub3BlbkFzc2lnbm1lbnQocHpJbnNLZXksIHB4UmVmT2JqZWN0Q2xhc3MsIG9wdGlvbnMpXG4gICAgICAudGhlbigoKSA9PiB7fSk7XG4gIH1cblxuICBpbml0aWFsaXplRGF0YShkYXRhKSB7XG4gICAgZGF0YS5mb3JFYWNoKChpdGVtLCBpZHgpID0+IHtcbiAgICAgIGl0ZW0uX19vcmlnaW5hbF9pbmRleCA9IGlkeDtcbiAgICAgIGl0ZW0uX19sZXZlbCA9IDE7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGdldFR5cGUoZmllbGQpIHtcbiAgICBjb25zdCB7IGNvbmZpZyA9IHt9LCB0eXBlIH0gPSBmaWVsZDtcbiAgICBjb25zdCB7IGZvcm1hdFR5cGUgfSA9IGNvbmZpZztcbiAgICBpZiAoZm9ybWF0VHlwZSA9PT0gJ2RhdGV0aW1lJyB8fCBmb3JtYXRUeXBlID09PSAnZGF0ZScpIHtcbiAgICAgIC8vIGN1cnJlbnRseSBjb3Ntb3MgaGFzIG9ubHkgc3VwcG9ydCBmb3IgZGF0ZSAuLi4gaXQgYWxzbyBuZWVkIHRvIHN1cHBvcnQgZGF0ZVRpbWVcbiAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgfVxuICAgIHJldHVybiB0eXBlLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBpbml0aWFsaXplQ29sdW1ucyhmaWVsZHMgPSBbXSkge1xuICAgIHJldHVybiBmaWVsZHMubWFwKChmaWVsZDogYW55LCBvcmlnaW5hbENvbEluZGV4KSA9PiAoe1xuICAgICAgLi4uZmllbGQsXG4gICAgICB0eXBlOiB0aGlzLmdldFR5cGUoZmllbGQpLFxuICAgICAgbmFtZTogZmllbGQuY29uZmlnLnZhbHVlLnN1YnN0cmluZyg0KSxcbiAgICAgIGxhYmVsOiBmaWVsZC5jb25maWcubGFiZWwuc3Vic3RyaW5nKDMpLFxuICAgICAgaWQ6IG9yaWdpbmFsQ29sSW5kZXgsXG4gICAgICBncm91cGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgICBncm91cGVkOiBmYWxzZSxcbiAgICAgIG1pbldpZHRoOiA1MCxcbiAgICAgIGNlbGxSZW5kZXJlcjogdGhpcy5nZXRUeXBlKGZpZWxkKSA9PT0gJ3RleHQnID8gbnVsbCA6IGZpZWxkLnR5cGUsXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9KSk7XG4gIH1cblxuICBnZXREaXNwbGF5Q29sdW1ucyhmaWVsZHM6IGFueVtdID0gW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IGZpZWxkLm5hbWUpO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLXNlYXJjaFwiPlxuICAgIDxtYXQtbGFiZWxcbiAgICAgID48bWF0LWljb24gY2xhc3M9XCJwc2RrLWljb24tc2VhcmNoXCIgc3R5bGU9XCJ0cmFuc2Zvcm06IHNjYWxlKDEuMik7IHdpZHRoOiAycmVtOyB2ZXJ0aWNhbC1hbGlnbjogc3ViXCIgc3ZnSWNvbj1cIm1hZ25pZnlcIiBtYXN0TGlzdEljb24+PC9tYXQtaWNvbj5cbiAgICAgIFNlYXJjaDwvbWF0LWxhYmVsXG4gICAgPlxuICAgIDxpbnB1dCBtYXRJbnB1dCAoa2V5dXApPVwiYXBwbHlTZWFyY2goJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiXCIgLz5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInJlcGVhdExpc3QkXCIgbWF0U29ydD5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkQ29sIG9mIGZpZWxkcyRcIiBbbWF0Q29sdW1uRGVmXT1cImRDb2wubmFtZVwiPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+e3sgZENvbC5sYWJlbCB9fTwvdGg+XG4gICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7IGVsZW1lbnRbZENvbC5uYW1lXSB9fTwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnMkXCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucyRcIiAoY2xpY2spPVwicm93Q2xpY2socm93KVwiPjwvdHI+XG4gIDwvdGFibGU+XG5cbiAgPG1hdC1wYWdpbmF0b3IgW3BhZ2VTaXplT3B0aW9uc109XCJbMTAsIDIwLCA1MCwgMTAwLCA1MDBdXCIgc2hvd0ZpcnN0TGFzdEJ1dHRvbnM+PC9tYXQtcGFnaW5hdG9yPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
|
|
4
|
+
import { buildMetaForListView, getContext } from '../simple-table-manual/helpers';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../../_bridge/angular-pconnect";
|
|
7
|
+
import * as i2 from "../../../_helpers/utils";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
export class SimpleTableComponent {
|
|
10
|
+
constructor(angularPConnect, utils) {
|
|
11
|
+
this.angularPConnect = angularPConnect;
|
|
12
|
+
this.utils = utils;
|
|
13
|
+
this.angularPConnectData = {};
|
|
14
|
+
this.bVisible$ = true;
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() {
|
|
17
|
+
// First thing in initialization is registering and subscribing to the AngularPConnect service
|
|
18
|
+
this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
|
|
19
|
+
// Then, continue on with other initialization
|
|
20
|
+
// call checkAndUpdate when initializing
|
|
21
|
+
this.checkAndUpdate();
|
|
22
|
+
}
|
|
23
|
+
ngOnDestroy() {
|
|
24
|
+
if (this.angularPConnectData.unsubscribeFn) {
|
|
25
|
+
this.angularPConnectData.unsubscribeFn();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
checkAndUpdate() {
|
|
29
|
+
// Should always check the bridge to see if the component should
|
|
30
|
+
// update itself (re-render)
|
|
31
|
+
const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
|
|
32
|
+
// ONLY call updateSelf when the component should update
|
|
33
|
+
if (bUpdateSelf) {
|
|
34
|
+
this.updateSelf();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// updateSelf
|
|
38
|
+
updateSelf() {
|
|
39
|
+
// moved this from ngOnInit() and call this from there instead...
|
|
40
|
+
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
|
|
41
|
+
if (this.configProps$.visibility != null) {
|
|
42
|
+
// eslint-disable-next-line no-multi-assign
|
|
43
|
+
this.bVisible$ = this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
|
|
44
|
+
}
|
|
45
|
+
const { multiRecordDisplayAs } = this.configProps$;
|
|
46
|
+
let { contextClass } = this.configProps$;
|
|
47
|
+
if (!contextClass) {
|
|
48
|
+
// @ts-ignore - Property 'getComponentConfig' is private and only accessible within class 'C11nEnv'
|
|
49
|
+
let listName = this.pConn$.getComponentConfig().referenceList;
|
|
50
|
+
listName = PCore.getAnnotationUtils().getPropertyName(listName);
|
|
51
|
+
// @ts-ignore - Property 'getFieldMetadata' is private and only accessible within class 'C11nEnv'
|
|
52
|
+
contextClass = this.pConn$.getFieldMetadata(listName)?.pageClass;
|
|
53
|
+
}
|
|
54
|
+
if (multiRecordDisplayAs === 'fieldGroup') {
|
|
55
|
+
this.fieldGroupProps = { ...this.configProps$, contextClass };
|
|
56
|
+
}
|
|
57
|
+
const { label: labelProp, propertyLabel, displayMode, fieldMetadata, hideLabel, parameters, isDataObject, type, ruleClass, authorContext, name } = this.configProps$;
|
|
58
|
+
const label = labelProp || propertyLabel;
|
|
59
|
+
const propsToUse = { label, ...this.pConn$.getInheritedProps() };
|
|
60
|
+
const isDisplayModeEnabled = displayMode === 'DISPLAY_ONLY';
|
|
61
|
+
if (fieldMetadata && fieldMetadata.type === 'Page List' && fieldMetadata.dataRetrievalType === 'refer') {
|
|
62
|
+
const { children: [{ children: rawFields }], parameters: rawParams } = this.pConn$.getRawMetadata().config;
|
|
63
|
+
if (isDisplayModeEnabled && hideLabel) {
|
|
64
|
+
propsToUse.label = '';
|
|
65
|
+
}
|
|
66
|
+
const metaForListView = buildMetaForListView(fieldMetadata, rawFields, type, ruleClass, name, propsToUse.label, isDataObject, parameters // resolved params
|
|
67
|
+
);
|
|
68
|
+
const metaForPConnect = JSON.parse(JSON.stringify(metaForListView));
|
|
69
|
+
// @ts-ignore - PCore.getMetadataUtils().getPropertyMetadata - An argument for 'currentClassID' was not provided.
|
|
70
|
+
metaForPConnect.config.parameters = rawParams ?? PCore.getMetadataUtils().getPropertyMetadata(name)?.datasource?.parameters;
|
|
71
|
+
const { referenceListStr: referenceList } = getContext(this.pConn$);
|
|
72
|
+
let requiredContextForQueryInDisplayMode = {};
|
|
73
|
+
if (isDisplayModeEnabled) {
|
|
74
|
+
requiredContextForQueryInDisplayMode = {
|
|
75
|
+
referenceList
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const options = {
|
|
79
|
+
context: this.pConn$.getContextName(),
|
|
80
|
+
pageReference: this.pConn$.getPageReference(),
|
|
81
|
+
...requiredContextForQueryInDisplayMode
|
|
82
|
+
};
|
|
83
|
+
this.refToPConnect = PCore.createPConnect({ meta: metaForPConnect, options }).getPConnect();
|
|
84
|
+
this.listViewProps = {
|
|
85
|
+
...metaForListView.config,
|
|
86
|
+
displayMode,
|
|
87
|
+
fieldName: authorContext
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Callback passed when subscribing to store change
|
|
92
|
+
onStateChange() {
|
|
93
|
+
this.checkAndUpdate();
|
|
94
|
+
}
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SimpleTableComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SimpleTableComponent, isStandalone: true, selector: "app-simple-table", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<ng-container *ngIf=\"bVisible$\">\n <div *ngIf=\"fieldGroupProps || listViewProps; else table\">\n <div *ngIf=\"fieldGroupProps\">\n <component-mapper name=\"FieldGroupTemplate\" [props]=\"{ configProps$: fieldGroupProps, pConn$, formGroup$ }\"></component-mapper>\n </div>\n <div *ngIf=\"listViewProps\">\n <component-mapper name=\"ListView\" [props]=\"{ pConn$: refToPConnect, payload: listViewProps }\"></component-mapper>\n </div>\n </div>\n <ng-template #table>\n <component-mapper name=\"SimpleTableManual\" [props]=\"{ pConn$, formGroup$ }\"></component-mapper>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SimpleTableComponent, decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{ selector: 'app-simple-table', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<ng-container *ngIf=\"bVisible$\">\n <div *ngIf=\"fieldGroupProps || listViewProps; else table\">\n <div *ngIf=\"fieldGroupProps\">\n <component-mapper name=\"FieldGroupTemplate\" [props]=\"{ configProps$: fieldGroupProps, pConn$, formGroup$ }\"></component-mapper>\n </div>\n <div *ngIf=\"listViewProps\">\n <component-mapper name=\"ListView\" [props]=\"{ pConn$: refToPConnect, payload: listViewProps }\"></component-mapper>\n </div>\n </div>\n <ng-template #table>\n <component-mapper name=\"SimpleTableManual\" [props]=\"{ pConn$, formGroup$ }\"></component-mapper>\n </ng-template>\n</ng-container>\n" }]
|
|
101
|
+
}], ctorParameters: function () { return [{ type: i1.AngularPConnectService }, { type: i2.Utils }]; }, propDecorators: { pConn$: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], formGroup$: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}] } });
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDeEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQTJCbEYsTUFBTSxPQUFPLG9CQUFvQjtJQVkvQixZQUNVLGVBQXVDLEVBQ3ZDLEtBQVk7UUFEWixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQVZ0Qix3QkFBbUIsR0FBd0IsRUFBRSxDQUFDO1FBRTlDLGNBQVMsR0FBRyxJQUFJLENBQUM7SUFTZCxDQUFDO0lBRUosUUFBUTtRQUNOLDhGQUE4RjtRQUM5RixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hHLDhDQUE4QztRQUU5Qyx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lB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QixvQkFBb0Isb0lDakNqQyw0bkJBYUEsNEZEa0JZLFlBQVksaU5BQW1CLHdCQUF3Qjs7NEZBRXRELG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2lJQUcxRCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBidWlsZE1ldGFGb3JMaXN0VmlldywgZ2V0Q29udGV4dCB9IGZyb20gJy4uL3NpbXBsZS10YWJsZS1tYW51YWwvaGVscGVycyc7XG5cbmludGVyZmFjZSBTaW1wbGVUYWJsZVByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBtdWx0aVJlY29yZERpc3BsYXlBczogc3RyaW5nO1xuICBjb250ZXh0Q2xhc3M6IGFueTtcbiAgdmlzaWJpbGl0eTogYm9vbGVhbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgcHJvcGVydHlMYWJlbDogc3RyaW5nO1xuICBkaXNwbGF5TW9kZTogc3RyaW5nO1xuICBmaWVsZE1ldGFkYXRhOiBhbnk7XG4gIGhpZGVMYWJlbDogYm9vbGVhbjtcbiAgcGFyYW1ldGVyczogYW55O1xuICBpc0RhdGFPYmplY3Q6IGJvb2xlYW47XG4gIHR5cGU6IHN0cmluZztcbiAgcnVsZUNsYXNzOiBzdHJpbmc7XG4gIGF1dGhvckNvbnRleHQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc2ltcGxlLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpbXBsZS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIFNpbXBsZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuXG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcblxuICBiVmlzaWJsZSQgPSB0cnVlO1xuICBjb25maWdQcm9wcyQ6IFNpbXBsZVRhYmxlUHJvcHM7XG4gIGZpZWxkR3JvdXBQcm9wczogYW55O1xuICBsaXN0Vmlld1Byb3BzOiBhbnk7XG4gIHJlZlRvUENvbm5lY3Q6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFuZ3VsYXJQQ29ubmVjdDogQW5ndWxhclBDb25uZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxzOiBVdGlsc1xuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG4gICAgLy8gVGhlbiwgY29udGludWUgb24gd2l0aCBvdGhlciBpbml0aWFsaXphdGlvblxuXG4gICAgLy8gY2FsbCBjaGVja0FuZFVwZGF0ZSB3aGVuIGluaXRpYWxpemluZ1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkXG4gICAgLy8gdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHVwZGF0ZVNlbGZcbiAgdXBkYXRlU2VsZigpOiB2b2lkIHtcbiAgICAvLyBtb3ZlZCB0aGlzIGZyb20gbmdPbkluaXQoKSBhbmQgY2FsbCB0aGlzIGZyb20gdGhlcmUgaW5zdGVhZC4uLlxuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIFNpbXBsZVRhYmxlUHJvcHM7XG5cbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQudmlzaWJpbGl0eSAhPSBudWxsKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbXVsdGktYXNzaWduXG4gICAgICB0aGlzLmJWaXNpYmxlJCA9IHRoaXMuYlZpc2libGUkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQudmlzaWJpbGl0eSk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBtdWx0aVJlY29yZERpc3BsYXlBcyB9ID0gdGhpcy5jb25maWdQcm9wcyQ7XG4gICAgbGV0IHsgY29udGV4dENsYXNzIH0gPSB0aGlzLmNvbmZpZ1Byb3BzJDtcbiAgICBpZiAoIWNvbnRleHRDbGFzcykge1xuICAgICAgLy8gQHRzLWlnbm9yZSAtIFByb3BlcnR5ICdnZXRDb21wb25lbnRDb25maWcnIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gY2xhc3MgJ0MxMW5FbnYnXG4gICAgICBsZXQgbGlzdE5hbWUgPSB0aGlzLnBDb25uJC5nZXRDb21wb25lbnRDb25maWcoKS5yZWZlcmVuY2VMaXN0O1xuICAgICAgbGlzdE5hbWUgPSBQQ29yZS5nZXRBbm5vdGF0aW9uVXRpbHMoKS5nZXRQcm9wZXJ0eU5hbWUobGlzdE5hbWUpO1xuICAgICAgLy8gQHRzLWlnbm9yZSAtIFByb3BlcnR5ICdnZXRGaWVsZE1ldGFkYXRhJyBpcyBwcml2YXRlIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIGNsYXNzICdDMTFuRW52J1xuICAgICAgY29udGV4dENsYXNzID0gdGhpcy5wQ29ubiQuZ2V0RmllbGRNZXRhZGF0YShsaXN0TmFtZSk/LnBhZ2VDbGFzcztcbiAgICB9XG4gICAgaWYgKG11bHRpUmVjb3JkRGlzcGxheUFzID09PSAnZmllbGRHcm91cCcpIHtcbiAgICAgIHRoaXMuZmllbGRHcm91cFByb3BzID0geyAuLi50aGlzLmNvbmZpZ1Byb3BzJCwgY29udGV4dENsYXNzIH07XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgbGFiZWw6IGxhYmVsUHJvcCxcbiAgICAgIHByb3BlcnR5TGFiZWwsXG4gICAgICBkaXNwbGF5TW9kZSxcbiAgICAgIGZpZWxkTWV0YWRhdGEsXG4gICAgICBoaWRlTGFiZWwsXG4gICAgICBwYXJhbWV0ZXJzLFxuICAgICAgaXNEYXRhT2JqZWN0LFxuICAgICAgdHlwZSxcbiAgICAgIHJ1bGVDbGFzcyxcbiAgICAgIGF1dGhvckNvbnRleHQsXG4gICAgICBuYW1lXG4gICAgfSA9IHRoaXMuY29uZmlnUHJvcHMkO1xuXG4gICAgY29uc3QgbGFiZWwgPSBsYWJlbFByb3AgfHwgcHJvcGVydHlMYWJlbDtcblxuICAgIGNvbnN0IHByb3BzVG9Vc2UgPSB7IGxhYmVsLCAuLi50aGlzLnBDb25uJC5nZXRJbmhlcml0ZWRQcm9wcygpIH07XG4gICAgY29uc3QgaXNEaXNwbGF5TW9kZUVuYWJsZWQgPSBkaXNwbGF5TW9kZSA9PT0gJ0RJU1BMQVlfT05MWSc7XG5cbiAgICBpZiAoZmllbGRNZXRhZGF0YSAmJiBmaWVsZE1ldGFkYXRhLnR5cGUgPT09ICdQYWdlIExpc3QnICYmIGZpZWxkTWV0YWRhdGEuZGF0YVJldHJpZXZhbFR5cGUgPT09ICdyZWZlcicpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2hpbGRyZW46IFt7IGNoaWxkcmVuOiByYXdGaWVsZHMgfV0sXG4gICAgICAgIHBhcmFtZXRlcnM6IHJhd1BhcmFtc1xuICAgICAgfSA9ICh0aGlzLnBDb25uJC5nZXRSYXdNZXRhZGF0YSgpIGFzIGFueSkuY29uZmlnO1xuXG4gICAgICBpZiAoaXNEaXNwbGF5TW9kZUVuYWJsZWQgJiYgaGlkZUxhYmVsKSB7XG4gICAgICAgIHByb3BzVG9Vc2UubGFiZWwgPSAnJztcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWV0YUZvckxpc3RWaWV3ID0gYnVpbGRNZXRhRm9yTGlzdFZpZXcoXG4gICAgICAgIGZpZWxkTWV0YWRhdGEsXG4gICAgICAgIHJhd0ZpZWxkcyxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgcnVsZUNsYXNzLFxuICAgICAgICBuYW1lLFxuICAgICAgICBwcm9wc1RvVXNlLmxhYmVsLFxuICAgICAgICBpc0RhdGFPYmplY3QsXG4gICAgICAgIHBhcmFtZXRlcnMgLy8gcmVzb2x2ZWQgcGFyYW1zXG4gICAgICApO1xuXG4gICAgICBjb25zdCBtZXRhRm9yUENvbm5lY3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1ldGFGb3JMaXN0VmlldykpO1xuICAgICAgLy8gQHRzLWlnbm9yZSAtIFBDb3JlLmdldE1ldGFkYXRhVXRpbHMoKS5nZXRQcm9wZXJ0eU1ldGFkYXRhIC0gQW4gYXJndW1lbnQgZm9yICdjdXJyZW50Q2xhc3NJRCcgd2FzIG5vdCBwcm92aWRlZC5cbiAgICAgIG1ldGFGb3JQQ29ubmVjdC5jb25maWcucGFyYW1ldGVycyA9IHJhd1BhcmFtcyA/PyBQQ29yZS5nZXRNZXRhZGF0YVV0aWxzKCkuZ2V0UHJvcGVydHlNZXRhZGF0YShuYW1lKT8uZGF0YXNvdXJjZT8ucGFyYW1ldGVycztcblxuICAgICAgY29uc3QgeyByZWZlcmVuY2VMaXN0U3RyOiByZWZlcmVuY2VMaXN0IH0gPSBnZXRDb250ZXh0KHRoaXMucENvbm4kKTtcbiAgICAgIGxldCByZXF1aXJlZENvbnRleHRGb3JRdWVyeUluRGlzcGxheU1vZGUgPSB7fTtcbiAgICAgIGlmIChpc0Rpc3BsYXlNb2RlRW5hYmxlZCkge1xuICAgICAgICByZXF1aXJlZENvbnRleHRGb3JRdWVyeUluRGlzcGxheU1vZGUgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlTGlzdFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgY29udGV4dDogdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSxcbiAgICAgICAgcGFnZVJlZmVyZW5jZTogdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpLFxuICAgICAgICAuLi5yZXF1aXJlZENvbnRleHRGb3JRdWVyeUluRGlzcGxheU1vZGVcbiAgICAgIH07XG5cbiAgICAgIHRoaXMucmVmVG9QQ29ubmVjdCA9IFBDb3JlLmNyZWF0ZVBDb25uZWN0KHsgbWV0YTogbWV0YUZvclBDb25uZWN0LCBvcHRpb25zIH0pLmdldFBDb25uZWN0KCk7XG5cbiAgICAgIHRoaXMubGlzdFZpZXdQcm9wcyA9IHtcbiAgICAgICAgLi4ubWV0YUZvckxpc3RWaWV3LmNvbmZpZyxcbiAgICAgICAgZGlzcGxheU1vZGUsXG4gICAgICAgIGZpZWxkTmFtZTogYXV0aG9yQ29udGV4dFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJiVmlzaWJsZSRcIj5cbiAgPGRpdiAqbmdJZj1cImZpZWxkR3JvdXBQcm9wcyB8fCBsaXN0Vmlld1Byb3BzOyBlbHNlIHRhYmxlXCI+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkR3JvdXBQcm9wc1wiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIkZpZWxkR3JvdXBUZW1wbGF0ZVwiIFtwcm9wc109XCJ7IGNvbmZpZ1Byb3BzJDogZmllbGRHcm91cFByb3BzLCBwQ29ubiQsIGZvcm1Hcm91cCQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibGlzdFZpZXdQcm9wc1wiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIkxpc3RWaWV3XCIgW3Byb3BzXT1cInsgcENvbm4kOiByZWZUb1BDb25uZWN0LCBwYXlsb2FkOiBsaXN0Vmlld1Byb3BzIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3RhYmxlPlxuICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJTaW1wbGVUYWJsZU1hbnVhbFwiIFtwcm9wc109XCJ7IHBDb25uJCwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { getSeconds } from '../../../_helpers/common';
|
|
2
|
+
export const TABLE_CELL = 'SdkRenderer';
|
|
3
|
+
export const DELETE_ICON = 'DeleteIcon';
|
|
4
|
+
// BUG-615253: Workaround for autosize in table with lazy loading components
|
|
5
|
+
/* istanbul ignore next */
|
|
6
|
+
function getFieldWidth(field, label) {
|
|
7
|
+
let width;
|
|
8
|
+
switch (field.type) {
|
|
9
|
+
case 'Time':
|
|
10
|
+
width = 150;
|
|
11
|
+
break;
|
|
12
|
+
case 'Date':
|
|
13
|
+
width = 160;
|
|
14
|
+
break;
|
|
15
|
+
case 'DateTime':
|
|
16
|
+
width = 205;
|
|
17
|
+
break;
|
|
18
|
+
case 'AutoComplete':
|
|
19
|
+
case 'TextArea':
|
|
20
|
+
width = 190;
|
|
21
|
+
break;
|
|
22
|
+
case 'Currency':
|
|
23
|
+
case 'TextInput':
|
|
24
|
+
width = 182;
|
|
25
|
+
break;
|
|
26
|
+
case 'Checkbox':
|
|
27
|
+
// eslint-disable-next-line no-case-declarations
|
|
28
|
+
const text = document.createElement('span');
|
|
29
|
+
document.body.appendChild(text);
|
|
30
|
+
text.style.fontSize = '13px';
|
|
31
|
+
text.style.position = 'absolute';
|
|
32
|
+
text.innerHTML = label;
|
|
33
|
+
width = Math.ceil(text.clientWidth) + 30;
|
|
34
|
+
document.body.removeChild(text);
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
37
|
+
width = 180;
|
|
38
|
+
}
|
|
39
|
+
return width;
|
|
40
|
+
}
|
|
41
|
+
export const getContext = thePConn => {
|
|
42
|
+
const contextName = thePConn.getContextName();
|
|
43
|
+
const pageReference = thePConn.getPageReference();
|
|
44
|
+
// 8.7 change = referenceList may now be in top-level of state props,
|
|
45
|
+
// not always in config of state props
|
|
46
|
+
let { referenceList } = thePConn.getStateProps()?.config || thePConn.getStateProps();
|
|
47
|
+
const pageReferenceForRows = referenceList.startsWith('.') ? `${pageReference}.${referenceList.substring(1)}` : referenceList;
|
|
48
|
+
// removing "caseInfo.content" prefix to avoid setting it as a target while preparing pageInstructions
|
|
49
|
+
referenceList = pageReferenceForRows.replace(PCore.getConstants().CASE_INFO.CASE_INFO_CONTENT, '');
|
|
50
|
+
return {
|
|
51
|
+
contextName,
|
|
52
|
+
referenceListStr: referenceList,
|
|
53
|
+
pageReferenceForRows
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
export const populateRowKey = rawData => {
|
|
57
|
+
return rawData.map((row, index) => {
|
|
58
|
+
return { ...row, index };
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
export const getApiContext = (processedData, pConnect, reorderCB) => {
|
|
62
|
+
return {
|
|
63
|
+
fetchData: () => {
|
|
64
|
+
return new Promise(resolve => {
|
|
65
|
+
resolve({
|
|
66
|
+
data: processedData,
|
|
67
|
+
filteredRecordCount: processedData.length,
|
|
68
|
+
totalRecordCount: processedData.length
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
fetchPersonalizations: () => {
|
|
73
|
+
return Promise.resolve({});
|
|
74
|
+
},
|
|
75
|
+
applyRowReorder: (sourceKey, destinationKey) => {
|
|
76
|
+
// indexes are keys for simple table so, it should work.
|
|
77
|
+
reorderCB();
|
|
78
|
+
return Promise.resolve(pConnect.getListActions().reorder(parseInt(sourceKey, 10), parseInt(destinationKey, 10)));
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
export const buildMetaForListView = (fieldMetadata, fields, type, ruleClass, name, propertyLabel, isDataObject, parameters) => {
|
|
83
|
+
return {
|
|
84
|
+
name,
|
|
85
|
+
config: {
|
|
86
|
+
type,
|
|
87
|
+
referenceList: fieldMetadata.datasource.name,
|
|
88
|
+
parameters: parameters ?? fieldMetadata.datasource.parameters,
|
|
89
|
+
personalization: false,
|
|
90
|
+
isDataObject,
|
|
91
|
+
grouping: true,
|
|
92
|
+
globalSearch: true,
|
|
93
|
+
reorderFields: true,
|
|
94
|
+
toggleFieldVisibility: true,
|
|
95
|
+
title: propertyLabel,
|
|
96
|
+
personalizationId: '' /* TODO */,
|
|
97
|
+
template: 'ListView',
|
|
98
|
+
presets: [
|
|
99
|
+
{
|
|
100
|
+
name: 'presets',
|
|
101
|
+
template: 'Table',
|
|
102
|
+
config: {},
|
|
103
|
+
children: [
|
|
104
|
+
{
|
|
105
|
+
name: 'Columns',
|
|
106
|
+
type: 'Region',
|
|
107
|
+
children: fields
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
label: propertyLabel,
|
|
111
|
+
id: 'P_' /* TODO */
|
|
112
|
+
}
|
|
113
|
+
],
|
|
114
|
+
ruleClass
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
export const buildFieldsForTable = (configFields, fields, showDeleteButton) => {
|
|
119
|
+
const fieldDefs = configFields?.map((field, index) => {
|
|
120
|
+
return {
|
|
121
|
+
type: 'text',
|
|
122
|
+
label: fields[index].config.label || fields[index].config.caption,
|
|
123
|
+
fillAvailableSpace: !!field.config.fillAvailableSpace,
|
|
124
|
+
id: index,
|
|
125
|
+
name: field.config.value.substr(4),
|
|
126
|
+
cellRenderer: TABLE_CELL,
|
|
127
|
+
sort: false,
|
|
128
|
+
noContextMenu: true,
|
|
129
|
+
showMenu: false,
|
|
130
|
+
meta: {
|
|
131
|
+
...field
|
|
132
|
+
},
|
|
133
|
+
// BUG-615253: Workaround for autosize in table with lazy loading components
|
|
134
|
+
width: getFieldWidth(field, fields[index].config.label)
|
|
135
|
+
};
|
|
136
|
+
});
|
|
137
|
+
// ONLY add DELETE_ICON to fields when the table is requested as EDITABLE
|
|
138
|
+
if (showDeleteButton) {
|
|
139
|
+
fieldDefs.push({
|
|
140
|
+
type: 'text',
|
|
141
|
+
label: '',
|
|
142
|
+
name: DELETE_ICON,
|
|
143
|
+
id: fieldDefs.length,
|
|
144
|
+
cellRenderer: DELETE_ICON,
|
|
145
|
+
sort: false,
|
|
146
|
+
noContextMenu: true,
|
|
147
|
+
showMenu: false,
|
|
148
|
+
// BUG-615253: Workaround for autosize in table with lazy loading components
|
|
149
|
+
width: 46
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
return fieldDefs;
|
|
153
|
+
};
|
|
154
|
+
export const createMetaForTable = (fields, renderMode) => {
|
|
155
|
+
return {
|
|
156
|
+
height: {
|
|
157
|
+
minHeight: 'auto',
|
|
158
|
+
fitHeightToElement: 'fitHeightToElement',
|
|
159
|
+
deltaAdjustment: 'deltaAdjustment',
|
|
160
|
+
autoSize: true
|
|
161
|
+
},
|
|
162
|
+
fieldDefs: fields,
|
|
163
|
+
itemKey: 'index',
|
|
164
|
+
grouping: false,
|
|
165
|
+
reorderFields: false,
|
|
166
|
+
reorderItems: renderMode === 'Editable',
|
|
167
|
+
dragHandle: renderMode === 'Editable',
|
|
168
|
+
globalSearch: false,
|
|
169
|
+
personalization: false,
|
|
170
|
+
toggleFieldVisibility: false,
|
|
171
|
+
toolbar: false,
|
|
172
|
+
footer: false,
|
|
173
|
+
filterExpression: null,
|
|
174
|
+
editing: false,
|
|
175
|
+
timezone: PCore.getEnvironmentInfo().getTimeZone()
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
export const filterDataByDate = (item, filterObj) => {
|
|
179
|
+
let bKeep;
|
|
180
|
+
let value = item[filterObj.ref] != null ?? item[filterObj.ref] != '' ? getSeconds(item[filterObj.ref]) : null;
|
|
181
|
+
let filterValue = filterObj.containsFilterValue != null && filterObj.containsFilterValue != '' ? getSeconds(filterObj.containsFilterValue) : null;
|
|
182
|
+
switch (filterObj.containsFilter) {
|
|
183
|
+
case 'notequal':
|
|
184
|
+
// becasue filterValue is in minutes, need to have a range of less than 60 secons
|
|
185
|
+
if (value != null && filterValue != null) {
|
|
186
|
+
// get rid of millisecons
|
|
187
|
+
value /= 1000;
|
|
188
|
+
filterValue /= 1000;
|
|
189
|
+
const diff = value - filterValue;
|
|
190
|
+
if (diff >= 0 && diff < 60) {
|
|
191
|
+
bKeep = false;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
break;
|
|
195
|
+
case 'after':
|
|
196
|
+
if (value < filterValue) {
|
|
197
|
+
bKeep = false;
|
|
198
|
+
}
|
|
199
|
+
break;
|
|
200
|
+
case 'before':
|
|
201
|
+
if (value > filterValue) {
|
|
202
|
+
bKeep = false;
|
|
203
|
+
}
|
|
204
|
+
break;
|
|
205
|
+
case 'null':
|
|
206
|
+
if (value != null) {
|
|
207
|
+
bKeep = false;
|
|
208
|
+
}
|
|
209
|
+
break;
|
|
210
|
+
case 'notnull':
|
|
211
|
+
if (value == null) {
|
|
212
|
+
bKeep = false;
|
|
213
|
+
}
|
|
214
|
+
break;
|
|
215
|
+
default:
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
return bKeep;
|
|
219
|
+
};
|
|
220
|
+
export const filterDataByCommonFields = (item, filterObj) => {
|
|
221
|
+
let bKeep;
|
|
222
|
+
const value = item[filterObj.ref].toLowerCase();
|
|
223
|
+
const filterValue = filterObj.containsFilterValue.toLowerCase();
|
|
224
|
+
switch (filterObj.containsFilter) {
|
|
225
|
+
case 'contains':
|
|
226
|
+
if (value.indexOf(filterValue) < 0) {
|
|
227
|
+
bKeep = false;
|
|
228
|
+
}
|
|
229
|
+
break;
|
|
230
|
+
case 'equals':
|
|
231
|
+
if (value != filterValue) {
|
|
232
|
+
bKeep = false;
|
|
233
|
+
}
|
|
234
|
+
break;
|
|
235
|
+
case 'startswith':
|
|
236
|
+
if (value.indexOf(filterValue) != 0) {
|
|
237
|
+
bKeep = false;
|
|
238
|
+
}
|
|
239
|
+
break;
|
|
240
|
+
default:
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
return bKeep;
|
|
244
|
+
};
|
|
245
|
+
/**
|
|
246
|
+
* This method returns a callBack function for Add action.
|
|
247
|
+
* @param {object} pConnect - PConnect object
|
|
248
|
+
* @param {number} index - index of the page list to add
|
|
249
|
+
*/
|
|
250
|
+
export const getAddRowCallback = (pConnect, index) => {
|
|
251
|
+
return () => pConnect.getListActions().insert({}, index);
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
* This method creates a PConnect object with proper options for Add and Delete actions
|
|
255
|
+
* @param {string} contextName - contextName
|
|
256
|
+
* @param {string} referenceList - referenceList
|
|
257
|
+
* @param {string} pageReference - pageReference
|
|
258
|
+
*/
|
|
259
|
+
export const createPConnect = (contextName, referenceList, pageReference) => {
|
|
260
|
+
const options = {
|
|
261
|
+
context: contextName,
|
|
262
|
+
pageReference,
|
|
263
|
+
referenceList
|
|
264
|
+
};
|
|
265
|
+
// create PConnect object
|
|
266
|
+
const config = { meta: {}, options };
|
|
267
|
+
const { getPConnect } = PCore.createPConnect(config);
|
|
268
|
+
return getPConnect();
|
|
269
|
+
};
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9zaW1wbGUtdGFibGUtbWFudWFsL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQztBQUV4Qyw0RUFBNEU7QUFDNUUsMEJBQTBCO0FBQzFCLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLO0lBQ2pDLElBQUksS0FBSyxDQUFDO0lBQ1YsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1FBQ2xCLEtBQUssTUFBTTtZQUNULEtBQUssR0FBRyxHQUFHLENBQUM7WUFDWixNQUFNO1FBQ1IsS0FBSyxNQUFNO1lBQ1QsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUNaLE1BQU07UUFDUixLQUFLLFVBQVU7WUFDYixLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQ1osTUFBTTtRQUNSLEtBQUssY0FBYyxDQUFDO1FBQ3BCLEtBQUssVUFBVTtZQUNiLEtBQUssR0FBRyxHQUFHLENBQUM7WUFDWixNQUFNO1FBQ1IsS0FBSyxVQUFVLENBQUM7UUFDaEIsS0FBSyxXQUFXO1lBQ2QsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUNaLE1BQU07UUFDUixLQUFLLFVBQVU7WUFDYixnREFBZ0Q7WUFDaEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxN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fSBmcm9tICcuLi8uLi8uLi9faGVscGVycy9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgVEFCTEVfQ0VMTCA9ICdTZGtSZW5kZXJlcic7XG5leHBvcnQgY29uc3QgREVMRVRFX0lDT04gPSAnRGVsZXRlSWNvbic7XG5cbi8vIEJVRy02MTUyNTM6IFdvcmthcm91bmQgZm9yIGF1dG9zaXplIGluIHRhYmxlIHdpdGggbGF6eSBsb2FkaW5nIGNvbXBvbmVudHNcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBnZXRGaWVsZFdpZHRoKGZpZWxkLCBsYWJlbCkge1xuICBsZXQgd2lkdGg7XG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgJ1RpbWUnOlxuICAgICAgd2lkdGggPSAxNTA7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHdpZHRoID0gMTYwO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnRGF0ZVRpbWUnOlxuICAgICAgd2lkdGggPSAyMDU7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdBdXRvQ29tcGxldGUnOlxuICAgIGNhc2UgJ1RleHRBcmVhJzpcbiAgICAgIHdpZHRoID0gMTkwO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnQ3VycmVuY3knOlxuICAgIGNhc2UgJ1RleHRJbnB1dCc6XG4gICAgICB3aWR0aCA9IDE4MjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0NoZWNrYm94JzpcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jYXNlLWRlY2xhcmF0aW9uc1xuICAgICAgY29uc3QgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dCk7XG4gICAgICB0ZXh0LnN0eWxlLmZvbnRTaXplID0gJzEzcHgnO1xuICAgICAgdGV4dC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICB0ZXh0LmlubmVySFRNTCA9IGxhYmVsO1xuICAgICAgd2lkdGggPSBNYXRoLmNlaWwodGV4dC5jbGllbnRXaWR0aCkgKyAzMDtcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgd2lkdGggPSAxODA7XG4gIH1cbiAgcmV0dXJuIHdpZHRoO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q29udGV4dCA9IHRoZVBDb25uID0+IHtcbiAgY29uc3QgY29udGV4dE5hbWUgPSB0aGVQQ29ubi5nZXRDb250ZXh0TmFtZSgpO1xuICBjb25zdCBwYWdlUmVmZXJlbmNlID0gdGhlUENvbm4uZ2V0UGFnZVJlZmVyZW5jZSgpO1xuICAvLyA4LjcgY2hhbmdlID0gcmVmZXJlbmNlTGlzdCBtYXkgbm93IGJlIGluIHRvcC1sZXZlbCBvZiBzdGF0ZSBwcm9wcyxcbiAgLy8gIG5vdCBhbHdheXMgaW4gY29uZmlnIG9mIHN0YXRlIHByb3BzXG4gIGxldCB7IHJlZmVyZW5jZUxpc3QgfSA9IHRoZVBDb25uLmdldFN0YXRlUHJvcHMoKT8uY29uZmlnIHx8IHRoZVBDb25uLmdldFN0YXRlUHJvcHMoKTtcbiAgY29uc3QgcGFnZVJlZmVyZW5jZUZvclJvd3MgPSByZWZlcmVuY2VMaXN0LnN0YXJ0c1dpdGgoJy4nKSA/IGAke3BhZ2VSZWZlcmVuY2V9LiR7cmVmZXJlbmNlTGlzdC5zdWJzdHJpbmcoMSl9YCA6IHJlZmVyZW5jZUxpc3Q7XG5cbiAgLy8gcmVtb3ZpbmcgXCJjYXNlSW5mby5jb250ZW50XCIgcHJlZml4IHRvIGF2b2lkIHNldHRpbmcgaXQgYXMgYSB0YXJnZXQgd2hpbGUgcHJlcGFyaW5nIHBhZ2VJbnN0cnVjdGlvbnNcbiAgcmVmZXJlbmNlTGlzdCA9IHBhZ2VSZWZlcmVuY2VGb3JSb3dzLnJlcGxhY2UoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19DT05URU5ULCAnJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0TmFtZSxcbiAgICByZWZlcmVuY2VMaXN0U3RyOiByZWZlcmVuY2VMaXN0LFxuICAgIHBhZ2VSZWZlcmVuY2VGb3JSb3dzXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcG9wdWxhdGVSb3dLZXkgPSByYXdEYXRhID0+IHtcbiAgcmV0dXJuIHJhd0RhdGEubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIHsgLi4ucm93LCBpbmRleCB9O1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcGlDb250ZXh0ID0gKHByb2Nlc3NlZERhdGEsIHBDb25uZWN0LCByZW9yZGVyQ0IpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBmZXRjaERhdGE6ICgpID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgZGF0YTogcHJvY2Vzc2VkRGF0YSxcbiAgICAgICAgICBmaWx0ZXJlZFJlY29yZENvdW50OiBwcm9jZXNzZWREYXRhLmxlbmd0aCxcbiAgICAgICAgICB0b3RhbFJlY29yZENvdW50OiBwcm9jZXNzZWREYXRhLmxlbmd0aFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZmV0Y2hQZXJzb25hbGl6YXRpb25zOiAoKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICB9LFxuICAgIGFwcGx5Um93UmVvcmRlcjogKHNvdXJjZUtleSwgZGVzdGluYXRpb25LZXkpID0+IHtcbiAgICAgIC8vIGluZGV4ZXMgYXJlIGtleXMgZm9yIHNpbXBsZSB0YWJsZSBzbywgaXQgc2hvdWxkIHdvcmsuXG4gICAgICByZW9yZGVyQ0IoKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocENvbm5lY3QuZ2V0TGlzdEFjdGlvbnMoKS5yZW9yZGVyKHBhcnNlSW50KHNvdXJjZUtleSwgMTApLCBwYXJzZUludChkZXN0aW5hdGlvbktleSwgMTApKSk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkTWV0YUZvckxpc3RWaWV3ID0gKGZpZWxkTWV0YWRhdGEsIGZpZWxkcywgdHlwZSwgcnVsZUNsYXNzLCBuYW1lLCBwcm9wZXJ0eUxhYmVsLCBpc0RhdGFPYmplY3QsIHBhcmFtZXRlcnMpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICAgIGNvbmZpZzoge1xuICAgICAgdHlwZSxcbiAgICAgIHJlZmVyZW5jZUxpc3Q6IGZpZWxkTWV0YWRhdGEuZGF0YXNvdXJjZS5uYW1lLFxuICAgICAgcGFyYW1ldGVyczogcGFyYW1ldGVycyA/PyBmaWVsZE1ldGFkYXRhLmRhdGFzb3VyY2UucGFyYW1ldGVycyxcbiAgICAgIHBlcnNvbmFsaXphdGlvbjogZmFsc2UsXG4gICAgICBpc0RhdGFPYmplY3QsXG4gICAgICBncm91cGluZzogdHJ1ZSxcbiAgICAgIGdsb2JhbFNlYXJjaDogdHJ1ZSxcbiAgICAgIHJlb3JkZXJGaWVsZHM6IHRydWUsXG4gICAgICB0b2dnbGVGaWVsZFZpc2liaWxpdHk6IHRydWUsXG4gICAgICB0aXRsZTogcHJvcGVydHlMYWJlbCxcbiAgICAgIHBlcnNvbmFsaXphdGlvbklkOiAnJyAvKiBUT0RPICovLFxuICAgICAgdGVtcGxhdGU6ICdMaXN0VmlldycsXG4gICAgICBwcmVzZXRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAncHJlc2V0cycsXG4gICAgICAgICAgdGVtcGxhdGU6ICdUYWJsZScsXG4gICAgICAgICAgY29uZmlnOiB7fSxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnQ29sdW1ucycsXG4gICAgICAgICAgICAgIHR5cGU6ICdSZWdpb24nLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogZmllbGRzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBsYWJlbDogcHJvcGVydHlMYWJlbCxcbiAgICAgICAgICBpZDogJ1BfJyAvKiBUT0RPICovXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBydWxlQ2xhc3NcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRGaWVsZHNGb3JUYWJsZSA9IChjb25maWdGaWVsZHMsIGZpZWxkcywgc2hvd0RlbGV0ZUJ1dHRvbikgPT4ge1xuICBjb25zdCBmaWVsZERlZnMgPSBjb25maWdGaWVsZHM/Lm1hcCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGxhYmVsOiBmaWVsZHNbaW5kZXhdLmNvbmZpZy5sYWJlbCB8fCBmaWVsZHNbaW5kZXhdLmNvbmZpZy5jYXB0aW9uLFxuICAgICAgZmlsbEF2YWlsYWJsZVNwYWNlOiAhIWZpZWxkLmNvbmZpZy5maWxsQXZhaWxhYmxlU3BhY2UsXG4gICAgICBpZDogaW5kZXgsXG4gICAgICBuYW1lOiBmaWVsZC5jb25maWcudmFsdWUuc3Vic3RyKDQpLFxuICAgICAgY2VsbFJlbmRlcmVyOiBUQUJMRV9DRUxMLFxuICAgICAgc29ydDogZmFsc2UsXG4gICAgICBub0NvbnRleHRNZW51OiB0cnVlLFxuICAgICAgc2hvd01lbnU6IGZhbHNlLFxuICAgICAgbWV0YToge1xuICAgICAgICAuLi5maWVsZFxuICAgICAgfSxcbiAgICAgIC8vIEJVRy02MTUyNTM6IFdvcmthcm91bmQgZm9yIGF1dG9zaXplIGluIHRhYmxlIHdpdGggbGF6eSBsb2FkaW5nIGNvbXBvbmVudHNcbiAgICAgIHdpZHRoOiBnZXRGaWVsZFdpZHRoKGZpZWxkLCBmaWVsZHNbaW5kZXhdLmNvbmZpZy5sYWJlbClcbiAgICB9O1xuICB9KTtcblxuICAvLyBPTkxZIGFkZCBERUxFVEVfSUNPTiB0byBmaWVsZHMgd2hlbiB0aGUgdGFibGUgaXMgcmVxdWVzdGVkIGFzIEVESVRBQkxFXG4gIGlmIChzaG93RGVsZXRlQnV0dG9uKSB7XG4gICAgZmllbGREZWZzLnB1c2goe1xuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgbGFiZWw6ICcnLFxuICAgICAgbmFtZTogREVMRVRFX0lDT04sXG4gICAgICBpZDogZmllbGREZWZzLmxlbmd0aCxcbiAgICAgIGNlbGxSZW5kZXJlcjogREVMRVRFX0lDT04sXG4gICAgICBzb3J0OiBmYWxzZSxcbiAgICAgIG5vQ29udGV4dE1lbnU6IHRydWUsXG4gICAgICBzaG93TWVudTogZmFsc2UsXG4gICAgICAvLyBCVUctNjE1MjUzOiBXb3JrYXJvdW5kIGZvciBhdXRvc2l6ZSBpbiB0YWJsZSB3aXRoIGxhenkgbG9hZGluZyBjb21wb25lbnRzXG4gICAgICB3aWR0aDogNDZcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBmaWVsZERlZnM7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTWV0YUZvclRhYmxlID0gKGZpZWxkcywgcmVuZGVyTW9kZSkgPT4ge1xuICByZXR1cm4ge1xuICAgIGhlaWdodDoge1xuICAgICAgbWluSGVpZ2h0OiAnYXV0bycsXG4gICAgICBmaXRIZWlnaHRUb0VsZW1lbnQ6ICdmaXRIZWlnaHRUb0VsZW1lbnQnLFxuICAgICAgZGVsdGFBZGp1c3RtZW50OiAnZGVsdGFBZGp1c3RtZW50JyxcbiAgICAgIGF1dG9TaXplOiB0cnVlXG4gICAgfSxcbiAgICBmaWVsZERlZnM6IGZpZWxkcyxcbiAgICBpdGVtS2V5OiAnaW5kZXgnLFxuICAgIGdyb3VwaW5nOiBmYWxzZSxcbiAgICByZW9yZGVyRmllbGRzOiBmYWxzZSxcbiAgICByZW9yZGVySXRlbXM6IHJlbmRlck1vZGUgPT09ICdFZGl0YWJsZScsXG4gICAgZHJhZ0hhbmRsZTogcmVuZGVyTW9kZSA9PT0gJ0VkaXRhYmxlJyxcbiAgICBnbG9iYWxTZWFyY2g6IGZhbHNlLFxuICAgIHBlcnNvbmFsaXphdGlvbjogZmFsc2UsXG4gICAgdG9nZ2xlRmllbGRWaXNpYmlsaXR5OiBmYWxzZSxcbiAgICB0b29sYmFyOiBmYWxzZSxcbiAgICBmb290ZXI6IGZhbHNlLFxuICAgIGZpbHRlckV4cHJlc3Npb246IG51bGwsXG4gICAgZWRpdGluZzogZmFsc2UsXG4gICAgdGltZXpvbmU6IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpLmdldFRpbWVab25lKClcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJEYXRhQnlEYXRlID0gKGl0ZW0sIGZpbHRlck9iaikgPT4ge1xuICBsZXQgYktlZXA7XG4gIGxldCB2YWx1ZSA9IGl0ZW1bZmlsdGVyT2JqLnJlZl0gIT0gbnVsbCA/PyBpdGVtW2ZpbHRlck9iai5yZWZdICE9ICcnID8gZ2V0U2Vjb25kcyhpdGVtW2ZpbHRlck9iai5yZWZdKSA6IG51bGw7XG4gIGxldCBmaWx0ZXJWYWx1ZSA9IGZpbHRlck9iai5jb250YWluc0ZpbHRlclZhbHVlICE9IG51bGwgJiYgZmlsdGVyT2JqLmNvbnRhaW5zRmlsdGVyVmFsdWUgIT0gJycgPyBnZXRTZWNvbmRzKGZpbHRlck9iai5jb250YWluc0ZpbHRlclZhbHVlKSA6IG51bGw7XG5cbiAgc3dpdGNoIChmaWx0ZXJPYmouY29udGFpbnNGaWx0ZXIpIHtcbiAgICBjYXNlICdub3RlcXVhbCc6XG4gICAgICAvLyBiZWNhc3VlIGZpbHRlclZhbHVlIGlzIGluIG1pbnV0ZXMsIG5lZWQgdG8gaGF2ZSBhIHJhbmdlIG9mIGxlc3MgdGhhbiA2MCBzZWNvbnNcblxuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgZmlsdGVyVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAvLyBnZXQgcmlkIG9mIG1pbGxpc2Vjb25zXG4gICAgICAgIHZhbHVlIC89IDEwMDA7XG4gICAgICAgIGZpbHRlclZhbHVlIC89IDEwMDA7XG5cbiAgICAgICAgY29uc3QgZGlmZiA9IHZhbHVlIC0gZmlsdGVyVmFsdWU7XG4gICAgICAgIGlmIChkaWZmID49IDAgJiYgZGlmZiA8IDYwKSB7XG4gICAgICAgICAgYktlZXAgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBjYXNlICdhZnRlcic6XG4gICAgICBpZiAodmFsdWUgPCBmaWx0ZXJWYWx1ZSkge1xuICAgICAgICBiS2VlcCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmVmb3JlJzpcbiAgICAgIGlmICh2YWx1ZSA+IGZpbHRlclZhbHVlKSB7XG4gICAgICAgIGJLZWVwID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdudWxsJzpcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIGJLZWVwID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdub3RudWxsJzpcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGJLZWVwID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gYktlZXA7XG59O1xuXG5leHBvcnQgY29uc3QgZmlsdGVyRGF0YUJ5Q29tbW9uRmllbGRzID0gKGl0ZW0sIGZpbHRlck9iaikgPT4ge1xuICBsZXQgYktlZXA7XG4gIGNvbnN0IHZhbHVlID0gaXRlbVtmaWx0ZXJPYmoucmVmXS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGZpbHRlck9iai5jb250YWluc0ZpbHRlclZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgc3dpdGNoIChmaWx0ZXJPYmouY29udGFpbnNGaWx0ZXIpIHtcbiAgICBjYXNlICdjb250YWlucyc6XG4gICAgICBpZiAodmFsdWUuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgPCAwKSB7XG4gICAgICAgIGJLZWVwID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlcXVhbHMnOlxuICAgICAgaWYgKHZhbHVlICE9IGZpbHRlclZhbHVlKSB7XG4gICAgICAgIGJLZWVwID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzdGFydHN3aXRoJzpcbiAgICAgIGlmICh2YWx1ZS5pbmRleE9mKGZpbHRlclZhbHVlKSAhPSAwKSB7XG4gICAgICAgIGJLZWVwID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gYktlZXA7XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBjYWxsQmFjayBmdW5jdGlvbiBmb3IgQWRkIGFjdGlvbi5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwQ29ubmVjdCAtIFBDb25uZWN0IG9iamVjdFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gaW5kZXggb2YgdGhlIHBhZ2UgbGlzdCB0byBhZGRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFkZFJvd0NhbGxiYWNrID0gKHBDb25uZWN0LCBpbmRleCkgPT4ge1xuICByZXR1cm4gKCkgPT4gcENvbm5lY3QuZ2V0TGlzdEFjdGlvbnMoKS5pbnNlcnQoe30sIGluZGV4KTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY3JlYXRlcyBhIFBDb25uZWN0IG9iamVjdCB3aXRoIHByb3BlciBvcHRpb25zIGZvciBBZGQgYW5kIERlbGV0ZSBhY3Rpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dE5hbWUgLSBjb250ZXh0TmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IHJlZmVyZW5jZUxpc3QgLSByZWZlcmVuY2VMaXN0XG4gKiBAcGFyYW0ge3N0cmluZ30gcGFnZVJlZmVyZW5jZSAtIHBhZ2VSZWZlcmVuY2VcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVBDb25uZWN0ID0gKGNvbnRleHROYW1lLCByZWZlcmVuY2VMaXN0LCBwYWdlUmVmZXJlbmNlKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgY29udGV4dDogY29udGV4dE5hbWUsXG4gICAgcGFnZVJlZmVyZW5jZSxcbiAgICByZWZlcmVuY2VMaXN0XG4gIH07XG5cbiAgLy8gY3JlYXRlIFBDb25uZWN0IG9iamVjdFxuICBjb25zdCBjb25maWcgPSB7IG1ldGE6IHt9LCBvcHRpb25zIH07XG4gIGNvbnN0IHsgZ2V0UENvbm5lY3QgfSA9IFBDb3JlLmNyZWF0ZVBDb25uZWN0KGNvbmZpZyk7XG5cbiAgcmV0dXJuIGdldFBDb25uZWN0KCk7XG59O1xuIl19
|