udp-stencil-component-library 1.0.2 → 1.0.3
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/dist/cjs/add-map-feature-popup_4.cjs.entry.js +11 -11
- package/dist/cjs/advanced-search_50.cjs.entry.js +109 -41
- package/dist/cjs/advanced-search_50.cjs.entry.js.map +1 -1
- package/dist/cjs/ag-grid-base_2.cjs.entry.js +2 -2
- package/dist/cjs/api-method-grid.cjs.entry.js +1 -1
- package/dist/cjs/check-box.cjs.entry.js +2 -2
- package/dist/cjs/chip-section.cjs.entry.js +2 -2
- package/dist/cjs/client-side-grid.cjs.entry.js +1 -1
- package/dist/cjs/color-preview.cjs.entry.js +1 -1
- package/dist/cjs/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.cjs.js.map +1 -1
- package/dist/cjs/date-time-renderer_5.cjs.entry.js +17 -16
- package/dist/cjs/date-time-renderer_5.cjs.entry.js.map +1 -1
- package/dist/cjs/enums-CA1UjPVU.js +25 -0
- package/dist/cjs/enums-CA1UjPVU.js.map +1 -0
- package/dist/cjs/feature-details-card_2.cjs.entry.js +5 -5
- package/dist/cjs/file-upload.selectable-list.stencil-field.entry.cjs.js.map +1 -1
- package/dist/cjs/file-upload_3.cjs.entry.js +73 -29
- package/dist/cjs/file-upload_3.cjs.entry.js.map +1 -1
- package/dist/cjs/index-Bu1pSYrV.js +8 -8
- package/dist/cjs/inputs-example.cjs.entry.js +2 -2
- package/dist/cjs/inputs-example.cjs.entry.js.map +1 -1
- package/dist/cjs/inputs-example.entry.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/map-component_2.cjs.entry.js +2 -2
- package/dist/cjs/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.cjs.js.map +1 -1
- package/dist/cjs/numeric-field_5.cjs.entry.js +194 -19
- package/dist/cjs/numeric-field_5.cjs.entry.js.map +1 -1
- package/dist/cjs/page-renderer.cjs.entry.js +1 -1
- package/dist/cjs/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.cjs.js.map +1 -1
- package/dist/cjs/question-configs-renderer_5.cjs.entry.js +17 -4
- package/dist/cjs/question-configs-renderer_5.cjs.entry.js.map +1 -1
- package/dist/cjs/resource-timeline-calendar.cjs.entry.js +1 -1
- package/dist/cjs/resource-timeline-primary-bar.cjs.entry.js +1 -1
- package/dist/cjs/server-side-grid.cjs.entry.js +1 -1
- package/dist/cjs/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.cjs.js.map +1 -0
- package/dist/cjs/{signature-input_4.cjs.entry.js → signature-input_6.cjs.entry.js} +359 -157
- package/dist/cjs/signature-input_6.cjs.entry.js.map +1 -0
- package/dist/cjs/stencil-library.cjs.js +1 -1
- package/dist/cjs/udp-container-query-grid-item.cjs.entry.js +1 -1
- package/dist/cjs/udp-container-query-grid.cjs.entry.js +1 -1
- package/dist/cjs/udp-container-query.cjs.entry.js +2 -2
- package/dist/cjs/udp-container.cjs.entry.js +2 -2
- package/dist/cjs/udp-drive-utils-BOyI3h7K.js +180 -0
- package/dist/cjs/udp-drive-utils-BOyI3h7K.js.map +1 -0
- package/dist/cjs/udp-forms-builder.cjs.entry.js +133 -152
- package/dist/cjs/udp-forms-builder.cjs.entry.js.map +1 -1
- package/dist/cjs/udp-forms-builder.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-forms-list-card_2.cjs.entry.js +5 -5
- package/dist/cjs/udp-forms-list.cjs.entry.js +1 -1
- package/dist/cjs/udp-forms-renderer.cjs.entry.js +185 -175
- package/dist/cjs/udp-forms-renderer.cjs.entry.js.map +1 -1
- package/dist/cjs/udp-forms-renderer.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-forms-ui.cjs.entry.js +113 -82
- package/dist/cjs/udp-forms-ui.cjs.entry.js.map +1 -1
- package/dist/cjs/udp-forms-ui.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-map.cjs.entry.js +3 -3
- package/dist/cjs/udp-page.cjs.entry.js +1 -1
- package/dist/cjs/udp-split-screen.cjs.entry.js +1 -1
- package/dist/cjs/udp-stepper-demo.cjs.entry.js +1 -1
- package/dist/cjs/udp-vertical-spacer.cjs.entry.js +1 -1
- package/dist/cjs/utils-CdiEmuDf.js +34 -0
- package/dist/cjs/utils-CdiEmuDf.js.map +1 -0
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js +22 -0
- package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js.map +1 -1
- package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.css +269 -0
- package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js +392 -0
- package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js.map +1 -0
- package/dist/collection/components/my-component/UI/forms/form/stencil-field.js +38 -14
- package/dist/collection/components/my-component/UI/forms/form/stencil-field.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/form/stencil-form.js +81 -28
- package/dist/collection/components/my-component/UI/forms/form/stencil-form.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js +1 -0
- package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/types.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer.js +13 -17
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/date-time-renderer.js +4 -3
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/date-time-renderer.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.css +0 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.js +16 -3
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/text-input-renderer.js +2 -2
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js +135 -159
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list-card.js +5 -5
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list.js +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js +1 -5
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js +1 -0
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js +188 -172
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.css +175 -0
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js +211 -88
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.css +166 -0
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.js +215 -0
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.js.map +1 -0
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js +5 -5
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js.map +1 -1
- package/dist/collection/components/my-component/UI/grid/ag-table/ag-table.js +1 -1
- package/dist/collection/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.js +15 -15
- package/dist/collection/components/my-component/UI/grid/grid-primary-bar/grid-primary-bar.js +2 -2
- package/dist/collection/components/my-component/UI/grid/hotlists/udp-hotlist-form/udp-hotlist-form.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/api-method-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/client-side-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/grid-header.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/server-side-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-calendar.js +1 -1
- package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +1 -1
- package/dist/collection/components/my-component/UI/inputs/checkbox/check-box.js +2 -2
- package/dist/collection/components/my-component/UI/inputs/date-selector/udp-date-selector.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/date-time-selector/udp-datetime-selector.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js +35 -22
- package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js +202 -10
- package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js +6 -6
- package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js +52 -22
- package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/tally/tally.js +2 -2
- package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js +99 -3
- package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js +99 -3
- package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js +132 -6
- package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/toggle/stencil-toggle.js +4 -4
- package/dist/collection/components/my-component/UI/inputs/udp-selector/udp-selector.js +4 -4
- package/dist/collection/components/my-component/UI/layout/udp-container/udp-container.js +2 -2
- package/dist/collection/components/my-component/UI/layout/udp-container-query/udp-container-query.js +2 -2
- package/dist/collection/components/my-component/UI/layout/udp-container-query-grid/udp-container-query-grid.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-container-query-grid-item/udp-container-query-grid-item.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-page/udp-page.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-split-screen/udp-split-screen.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-vertical-spacer.js +1 -1
- package/dist/collection/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.js +2 -2
- package/dist/collection/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.js +1 -1
- package/dist/collection/components/my-component/UI/loaders/udp-skeleton-loading.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/map-component.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/popups/add-map-feature-popup.js +3 -3
- package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-card/feature-details-card.js +4 -4
- package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-popup.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/popups/select-layer-popup.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/popups/split-line-popup.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/toolbar/map-toolbar.js +6 -6
- package/dist/collection/components/my-component/UI/map/udp-map/udp-map-toolbar.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/udp-map.js +3 -3
- package/dist/collection/components/my-component/UI/menu/menu-item/udp-menu-item.js +2 -2
- package/dist/collection/components/my-component/UI/stepper/udp-stepper-demo.js +1 -1
- package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.js +1 -1
- package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.js +1 -1
- package/dist/collection/components/my-component/UI/toolbars/app-bar/app-bar.js +1 -1
- package/dist/collection/components/my-component/demo/ambient-demo-container.js +1 -1
- package/dist/collection/components/test-component/inputs-example/inputs-example.js +2 -2
- package/dist/collection/components/test-component/inputs-example/inputs-example.js.map +1 -1
- package/dist/collection/page-renderer/page-renderer.js +1 -1
- package/dist/collection/theme/color-preview/color-preview.js +1 -1
- package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/chip-section/chip-section.js +2 -2
- package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.js +1 -1
- package/dist/components/add-map-feature-popup.js +1 -1
- package/dist/components/advanced-search-grouped.js +1 -1
- package/dist/components/advanced-search.js +1 -1
- package/dist/components/ag-grid-base.js +1 -1
- package/dist/components/ag-table.js +1 -1
- package/dist/components/ambient-demo-container.js +1 -1
- package/dist/components/ambient-template-grid.js +1 -1
- package/dist/components/api-method-grid.js +4 -4
- package/dist/components/app-bar.js +1 -1
- package/dist/components/chart-container.js +1 -1
- package/dist/components/check-box-group.js +1 -1
- package/dist/components/check-box.js +1 -1
- package/dist/components/chip-section.js +3 -3
- package/dist/components/client-side-grid.js +3 -3
- package/dist/components/color-preview.js +1 -1
- package/dist/components/date-time-renderer.js +1 -1
- package/dist/components/edit-view-form-dialog.js +1 -1
- package/dist/components/feature-details-card.js +1 -1
- package/dist/components/feature-details-popup.js +1 -1
- package/dist/components/file-upload-renderer.js +1 -1
- package/dist/components/file-upload.js +1 -1
- package/dist/components/grid-header.js +1 -1
- package/dist/components/grid-primary-bar.js +1 -1
- package/dist/components/inputs-example.js +15 -15
- package/dist/components/inputs-example.js.map +1 -1
- package/dist/components/list-options-renderer.js +1 -1
- package/dist/components/map-component.js +1 -1
- package/dist/components/map-toolbar.js +1 -1
- package/dist/components/my-component.js +26 -26
- package/dist/components/numeric-field.js +1 -1
- package/dist/components/{p-CfZR5rek.js → p-0F2I6Qvn.js} +3 -3
- package/dist/components/{p-CfZR5rek.js.map → p-0F2I6Qvn.js.map} +1 -1
- package/dist/components/{p-BbC2Itep.js → p-1CPON0Xx.js} +5 -5
- package/dist/components/{p-BbC2Itep.js.map → p-1CPON0Xx.js.map} +1 -1
- package/dist/components/{p-IlXn87Ki.js → p-1Cv4cku0.js} +4 -14
- package/dist/components/p-1Cv4cku0.js.map +1 -0
- package/dist/components/{p-CTn3c76I.js → p-1uly65Sv.js} +3 -3
- package/dist/components/{p-CTn3c76I.js.map → p-1uly65Sv.js.map} +1 -1
- package/dist/components/{p-C8cWVxBF.js → p-26jyxB7s.js} +66 -27
- package/dist/components/p-26jyxB7s.js.map +1 -0
- package/dist/components/{p-GQEOUb0c.js → p-4hWvEEZf.js} +5 -5
- package/dist/components/{p-GQEOUb0c.js.map → p-4hWvEEZf.js.map} +1 -1
- package/dist/components/{p-HrsHnWeG.js → p-6EzLtNtq.js} +6 -6
- package/dist/components/{p-HrsHnWeG.js.map → p-6EzLtNtq.js.map} +1 -1
- package/dist/components/{p-syf9yo9-.js → p-8avkq8Fj.js} +4 -4
- package/dist/components/{p-syf9yo9-.js.map → p-8avkq8Fj.js.map} +1 -1
- package/dist/components/{p-B8k9GGZB.js → p-8paOuPay.js} +4 -4
- package/dist/components/{p-B8k9GGZB.js.map → p-8paOuPay.js.map} +1 -1
- package/dist/components/{p-DntePo7I.js → p-B2mj8zmp.js} +3 -3
- package/dist/components/{p-DntePo7I.js.map → p-B2mj8zmp.js.map} +1 -1
- package/dist/components/{p-Bv1MGbhE.js → p-B3gbGwCE.js} +50 -83
- package/dist/components/p-B3gbGwCE.js.map +1 -0
- package/dist/components/{p-ves_LtSN.js → p-B6A-djr0.js} +4 -4
- package/dist/components/{p-ves_LtSN.js.map → p-B6A-djr0.js.map} +1 -1
- package/dist/components/{p-D0T6NTw2.js → p-BANMRVyZ.js} +3 -3
- package/dist/components/{p-D0T6NTw2.js.map → p-BANMRVyZ.js.map} +1 -1
- package/dist/components/{p-D-JeGky8.js → p-BB2sALAW.js} +3 -3
- package/dist/components/{p-D-JeGky8.js.map → p-BB2sALAW.js.map} +1 -1
- package/dist/components/{p-DehJN46u.js → p-BLWvjl_b.js} +6 -6
- package/dist/components/{p-DehJN46u.js.map → p-BLWvjl_b.js.map} +1 -1
- package/dist/components/{p-y6ddPVSK.js → p-BO3Kzy6x.js} +6 -6
- package/dist/components/{p-y6ddPVSK.js.map → p-BO3Kzy6x.js.map} +1 -1
- package/dist/components/p-BY5RQ-T1.js +16 -0
- package/dist/components/p-BY5RQ-T1.js.map +1 -0
- package/dist/components/{p-ClToknIK.js → p-BbOHuqrJ.js} +5 -5
- package/dist/components/{p-ClToknIK.js.map → p-BbOHuqrJ.js.map} +1 -1
- package/dist/components/{p-CJsnV8uM.js → p-BfT3KUJC.js} +4 -4
- package/dist/components/{p-CJsnV8uM.js.map → p-BfT3KUJC.js.map} +1 -1
- package/dist/components/{p-BdWgc1UD.js → p-Bi8lqIP-.js} +8 -7
- package/dist/components/p-Bi8lqIP-.js.map +1 -0
- package/dist/components/{p-DNxY-i6k.js → p-BpD1NQKC.js} +5 -5
- package/dist/components/{p-DNxY-i6k.js.map → p-BpD1NQKC.js.map} +1 -1
- package/dist/components/p-BtOBW9_N.js +142 -0
- package/dist/components/p-BtOBW9_N.js.map +1 -0
- package/dist/components/{p-Akx0UDMW.js → p-BwPAbBUr.js} +4 -4
- package/dist/components/{p-Akx0UDMW.js.map → p-BwPAbBUr.js.map} +1 -1
- package/dist/components/p-BzH4NpB-.js +301 -0
- package/dist/components/p-BzH4NpB-.js.map +1 -0
- package/dist/components/{p-CSunqYw8.js → p-C-E6e6mL.js} +17 -17
- package/dist/components/{p-CSunqYw8.js.map → p-C-E6e6mL.js.map} +1 -1
- package/dist/components/{p-DWJbhjYR.js → p-C1K2NBql.js} +5 -5
- package/dist/components/{p-DWJbhjYR.js.map → p-C1K2NBql.js.map} +1 -1
- package/dist/components/{p-CNC3rtXm.js → p-C2j9tPIU.js} +4 -4
- package/dist/components/{p-CNC3rtXm.js.map → p-C2j9tPIU.js.map} +1 -1
- package/dist/components/p-C5aOw4Ij.js +168 -0
- package/dist/components/p-C5aOw4Ij.js.map +1 -0
- package/dist/components/{p-CJINZgmD.js → p-C6bm8Rs4.js} +17 -17
- package/dist/components/{p-CJINZgmD.js.map → p-C6bm8Rs4.js.map} +1 -1
- package/dist/components/{p-PqypuW_Q.js → p-CL4gkS6u.js} +22 -84
- package/dist/components/p-CL4gkS6u.js.map +1 -0
- package/dist/components/{p-DeS7YSzc.js → p-CMTLAuz8.js} +3 -3
- package/dist/components/{p-DeS7YSzc.js.map → p-CMTLAuz8.js.map} +1 -1
- package/dist/components/p-CWAWWTnd.js +47 -0
- package/dist/components/p-CWAWWTnd.js.map +1 -0
- package/dist/components/{p-B3-pcvgV.js → p-Cdz5sX_v.js} +38 -25
- package/dist/components/p-Cdz5sX_v.js.map +1 -0
- package/dist/components/{p-byKLubNE.js → p-Coa3kO6W.js} +3 -3
- package/dist/components/{p-byKLubNE.js.map → p-Coa3kO6W.js.map} +1 -1
- package/dist/components/{p-DzaN4l_Y.js → p-Cp1kbBGM.js} +5 -5
- package/dist/components/{p-DzaN4l_Y.js.map → p-Cp1kbBGM.js.map} +1 -1
- package/dist/components/{p-BYsLvu6g.js → p-CpMdhv3j.js} +69 -5
- package/dist/components/p-CpMdhv3j.js.map +1 -0
- package/dist/components/{p-BWI0GtPn.js → p-CpQin4NC.js} +7 -7
- package/dist/components/{p-BWI0GtPn.js.map → p-CpQin4NC.js.map} +1 -1
- package/dist/components/{p-DIPIddaO.js → p-CqiZ9SAU.js} +3 -3
- package/dist/components/{p-DIPIddaO.js.map → p-CqiZ9SAU.js.map} +1 -1
- package/dist/components/{p-DxJCXXmE.js → p-Cr_ifuX-.js} +27 -26
- package/dist/components/p-Cr_ifuX-.js.map +1 -0
- package/dist/components/{p-bLKTEsIH.js → p-CsMmUkoQ.js} +8 -8
- package/dist/components/{p-bLKTEsIH.js.map → p-CsMmUkoQ.js.map} +1 -1
- package/dist/components/{p-Cf-3pInV.js → p-Ct7EvUCI.js} +3 -3
- package/dist/components/{p-Cf-3pInV.js.map → p-Ct7EvUCI.js.map} +1 -1
- package/dist/components/{p-BbHv2Hzb.js → p-CvQ8X76F.js} +8 -8
- package/dist/components/{p-BbHv2Hzb.js.map → p-CvQ8X76F.js.map} +1 -1
- package/dist/components/{p-BEwTqpWE.js → p-CxOYMG-r.js} +4 -4
- package/dist/components/{p-BEwTqpWE.js.map → p-CxOYMG-r.js.map} +1 -1
- package/dist/components/{p-DOKGpXin.js → p-Cyigv-iT.js} +27 -8
- package/dist/components/p-Cyigv-iT.js.map +1 -0
- package/dist/components/{p-hRee3qYx.js → p-D6Wo7quX.js} +7 -2
- package/dist/components/p-D6Wo7quX.js.map +1 -0
- package/dist/components/{p-BUw3R0Ql.js → p-D9A5l8BE.js} +7 -7
- package/dist/components/{p-BUw3R0Ql.js.map → p-D9A5l8BE.js.map} +1 -1
- package/dist/components/{p-CDnOrzs3.js → p-DBtdo56U.js} +4 -4
- package/dist/components/{p-CDnOrzs3.js.map → p-DBtdo56U.js.map} +1 -1
- package/dist/components/{p-BIc3R4fE.js → p-DFKz-3Nr.js} +5 -5
- package/dist/components/{p-BIc3R4fE.js.map → p-DFKz-3Nr.js.map} +1 -1
- package/dist/components/{p-BJerffMg.js → p-DL9uHt-7.js} +5 -5
- package/dist/components/{p-BJerffMg.js.map → p-DL9uHt-7.js.map} +1 -1
- package/dist/components/{p-DIcPqQkn.js → p-DSIcWNUB.js} +5 -4
- package/dist/components/p-DSIcWNUB.js.map +1 -0
- package/dist/components/{p-CRiQA7Cy.js → p-DZaCCOXB.js} +69 -5
- package/dist/components/p-DZaCCOXB.js.map +1 -0
- package/dist/components/{p-BwHEv1Kb.js → p-DaMmzX_J.js} +13 -13
- package/dist/components/{p-BwHEv1Kb.js.map → p-DaMmzX_J.js.map} +1 -1
- package/dist/components/{p-CY0PAhIT.js → p-Dmmz74K2.js} +4 -4
- package/dist/components/{p-CY0PAhIT.js.map → p-Dmmz74K2.js.map} +1 -1
- package/dist/components/{p-DMcaGgHq.js → p-DnMRLbBX.js} +5 -5
- package/dist/components/{p-DMcaGgHq.js.map → p-DnMRLbBX.js.map} +1 -1
- package/dist/components/{p-ChdtzL8Z.js → p-Dpvhge5H.js} +10 -9
- package/dist/components/p-Dpvhge5H.js.map +1 -0
- package/dist/components/p-DtiAfg0X.js +25 -0
- package/dist/components/p-DtiAfg0X.js.map +1 -0
- package/dist/components/{p-XoXMxeuq.js → p-Dwnxv7WO.js} +3 -3
- package/dist/components/{p-XoXMxeuq.js.map → p-Dwnxv7WO.js.map} +1 -1
- package/dist/components/{p-BvSuY3tY.js → p-Dx5ehH3t.js} +7 -7
- package/dist/components/{p-BvSuY3tY.js.map → p-Dx5ehH3t.js.map} +1 -1
- package/dist/components/{p-DueJnVH4.js → p-DyC6jVV8.js} +10 -9
- package/dist/components/p-DyC6jVV8.js.map +1 -0
- package/dist/components/{p-Bdt-oOnd.js → p-Oil5iqFm.js} +120 -8
- package/dist/components/p-Oil5iqFm.js.map +1 -0
- package/dist/components/{p-C6aDnKNm.js → p-P3YTnOWe.js} +5 -5
- package/dist/components/{p-C6aDnKNm.js.map → p-P3YTnOWe.js.map} +1 -1
- package/dist/components/{p-CLvAjrtw.js → p-Qxi-zxd0.js} +8 -8
- package/dist/components/{p-CLvAjrtw.js.map → p-Qxi-zxd0.js.map} +1 -1
- package/dist/components/{p-DRO3I7Mm.js → p-Qxw1cxga.js} +8 -8
- package/dist/components/{p-DRO3I7Mm.js.map → p-Qxw1cxga.js.map} +1 -1
- package/dist/components/{p-DLWUrvpt.js → p-Tu9UB-v3.js} +5 -5
- package/dist/components/{p-DLWUrvpt.js.map → p-Tu9UB-v3.js.map} +1 -1
- package/dist/components/{p-DQIj9UI7.js → p-Ut5zP7nE.js} +5 -5
- package/dist/components/{p-DQIj9UI7.js.map → p-Ut5zP7nE.js.map} +1 -1
- package/dist/components/{p-Thx6k3Xp.js → p-WLd9SWLl.js} +4 -4
- package/dist/components/{p-Thx6k3Xp.js.map → p-WLd9SWLl.js.map} +1 -1
- package/dist/components/{p-BTIWOttf.js → p-W_kxEzVl.js} +6 -6
- package/dist/components/{p-BTIWOttf.js.map → p-W_kxEzVl.js.map} +1 -1
- package/dist/components/{p-BOW03S7b.js → p-XP8tp0pm.js} +5 -5
- package/dist/components/{p-BOW03S7b.js.map → p-XP8tp0pm.js.map} +1 -1
- package/dist/components/{p-w2FTnlQG.js → p-_HuUfybA.js} +3 -3
- package/dist/components/{p-w2FTnlQG.js.map → p-_HuUfybA.js.map} +1 -1
- package/dist/components/{p-BU706xtx.js → p-hWgAmNsF.js} +3 -3
- package/dist/components/{p-BU706xtx.js.map → p-hWgAmNsF.js.map} +1 -1
- package/dist/components/{p-Bykep8mm.js → p-ibwbE8nI.js} +4 -4
- package/dist/components/{p-Bykep8mm.js.map → p-ibwbE8nI.js.map} +1 -1
- package/dist/components/{p-CA-v1fbV.js → p-ill5r6eV.js} +40 -9
- package/dist/components/p-ill5r6eV.js.map +1 -0
- package/dist/components/{p-DqYsDDHy.js → p-jdqTpLxN.js} +4 -4
- package/dist/components/{p-DqYsDDHy.js.map → p-jdqTpLxN.js.map} +1 -1
- package/dist/components/{p-ByM88ZWk.js → p-jpt3zFdi.js} +3 -3
- package/dist/components/{p-ByM88ZWk.js.map → p-jpt3zFdi.js.map} +1 -1
- package/dist/components/{p-BEtm34A3.js → p-ncemY4Wx.js} +37 -36
- package/dist/components/p-ncemY4Wx.js.map +1 -0
- package/dist/components/{p-DqPGCQm2.js → p-s8qXxEgi.js} +3 -3
- package/dist/components/{p-DqPGCQm2.js.map → p-s8qXxEgi.js.map} +1 -1
- package/dist/components/p-vrP9HZiW.js +156 -0
- package/dist/components/p-vrP9HZiW.js.map +1 -0
- package/dist/components/{p-D32jPxWa.js → p-ycrk0Lr4.js} +5 -5
- package/dist/components/{p-D32jPxWa.js.map → p-ycrk0Lr4.js.map} +1 -1
- package/dist/components/page-renderer.js +21 -21
- package/dist/components/primary-action-header.js +1 -1
- package/dist/components/question-configs-renderer.js +1 -1
- package/dist/components/question-specific-configs-renderer.js +1 -1
- package/dist/components/resource-timeline-calendar.js +5 -5
- package/dist/components/resource-timeline-primary-bar.js +1 -1
- package/dist/components/save-view-form-dialog.js +1 -1
- package/dist/components/search-list-item.js +1 -1
- package/dist/components/section-configs-renderer.js +1 -1
- package/dist/components/select-layer-popup.js +1 -1
- package/dist/components/server-side-grid.js +1 -1
- package/dist/components/side-sheet.js +1 -1
- package/dist/components/signature-input.js +1 -1
- package/dist/components/split-line-popup.js +1 -1
- package/dist/components/stencil-field.js +1 -1
- package/dist/components/stencil-form.js +1 -1
- package/dist/components/stencil-icon-button.js +1 -1
- package/dist/components/stencil-toggle.js +1 -1
- package/dist/components/tally-display.js +1 -1
- package/dist/components/text-area.js +1 -1
- package/dist/components/text-field.js +1 -1
- package/dist/components/text-input-renderer.js +1 -1
- package/dist/components/udp-ambient-card.js +1 -1
- package/dist/components/udp-avatar.js +1 -1
- package/dist/components/udp-bar-chart.js +1 -1
- package/dist/components/udp-charts-example.js +7 -7
- package/dist/components/udp-container-query-grid-item.js +1 -1
- package/dist/components/udp-container-query-grid.js +2 -2
- package/dist/components/udp-container-query.js +1 -1
- package/dist/components/udp-container.js +1 -1
- package/dist/components/udp-date-selector.js +1 -1
- package/dist/components/udp-datetime-selector.js +1 -1
- package/dist/components/udp-distribution-chart.js +1 -1
- package/dist/components/udp-donut-chart.js +1 -1
- package/dist/components/udp-dynamic-container-with-menu.js +1 -1
- package/dist/components/udp-dynamic-form.js +4 -4
- package/dist/components/udp-forms-builder-menu.js +1 -1
- package/dist/components/udp-forms-builder-question-item.js +1 -1
- package/dist/components/udp-forms-builder-style-override.js +1 -1
- package/dist/components/udp-forms-builder.js +162 -183
- package/dist/components/udp-forms-builder.js.map +1 -1
- package/dist/components/udp-forms-list-card.js +1 -1
- package/dist/components/udp-forms-list.js +10 -10
- package/dist/components/udp-forms-renderer.js +244 -219
- package/dist/components/udp-forms-renderer.js.map +1 -1
- package/dist/components/udp-forms-ui.js +1 -1
- package/dist/components/udp-grid-loader.js +1 -1
- package/dist/components/udp-hotlist-form.js +1 -1
- package/dist/components/udp-icon-button.d.ts +11 -0
- package/dist/components/udp-icon-button.js +9 -0
- package/dist/components/udp-icon-button.js.map +1 -0
- package/dist/components/udp-icon.js +1 -1
- package/dist/components/udp-line-chart.js +1 -1
- package/dist/components/udp-linear-loader.js +1 -1
- package/dist/components/udp-list-item.js +2 -2
- package/dist/components/udp-map-toolbar.js +1 -1
- package/dist/components/udp-map.js +17 -17
- package/dist/components/udp-menu-item.js +1 -1
- package/dist/components/udp-page.js +1 -1
- package/dist/components/udp-question.js +1 -1
- package/dist/components/udp-save-draft-button.d.ts +11 -0
- package/dist/components/udp-save-draft-button.js +9 -0
- package/dist/components/udp-save-draft-button.js.map +1 -0
- package/dist/components/udp-selector.js +1 -1
- package/dist/components/udp-side-sheet.js +1 -1
- package/dist/components/udp-skeleton-loading.js +1 -1
- package/dist/components/udp-split-screen.js +1 -1
- package/dist/components/udp-stepper-demo.js +1 -1
- package/dist/components/udp-tab.js +1 -1
- package/dist/components/udp-tabs.js +1 -1
- package/dist/components/udp-time-selector.js +1 -1
- package/dist/components/udp-vertical-spacer.js +1 -1
- package/dist/esm/add-map-feature-popup_4.entry.js +11 -11
- package/dist/esm/advanced-search_50.entry.js +109 -41
- package/dist/esm/advanced-search_50.entry.js.map +1 -1
- package/dist/esm/ag-grid-base_2.entry.js +2 -2
- package/dist/esm/api-method-grid.entry.js +1 -1
- package/dist/esm/check-box.entry.js +2 -2
- package/dist/esm/chip-section.entry.js +2 -2
- package/dist/esm/client-side-grid.entry.js +1 -1
- package/dist/esm/color-preview.entry.js +1 -1
- package/dist/esm/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.js.map +1 -1
- package/dist/esm/date-time-renderer_5.entry.js +17 -16
- package/dist/esm/date-time-renderer_5.entry.js.map +1 -1
- package/dist/esm/enums-DtiAfg0X.js +25 -0
- package/dist/esm/enums-DtiAfg0X.js.map +1 -0
- package/dist/esm/feature-details-card_2.entry.js +5 -5
- package/dist/esm/file-upload.selectable-list.stencil-field.entry.js.map +1 -1
- package/dist/esm/file-upload_3.entry.js +73 -29
- package/dist/esm/file-upload_3.entry.js.map +1 -1
- package/dist/esm/index-CaIWDYyq.js +8 -8
- package/dist/esm/inputs-example.entry.js +2 -2
- package/dist/esm/inputs-example.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/map-component_2.entry.js +2 -2
- package/dist/esm/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.js.map +1 -1
- package/dist/esm/numeric-field_5.entry.js +195 -20
- package/dist/esm/numeric-field_5.entry.js.map +1 -1
- package/dist/esm/page-renderer.entry.js +1 -1
- package/dist/esm/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.js.map +1 -1
- package/dist/esm/question-configs-renderer_5.entry.js +17 -4
- package/dist/esm/question-configs-renderer_5.entry.js.map +1 -1
- package/dist/esm/resource-timeline-calendar.entry.js +1 -1
- package/dist/esm/resource-timeline-primary-bar.entry.js +1 -1
- package/dist/esm/server-side-grid.entry.js +1 -1
- package/dist/esm/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.js.map +1 -0
- package/dist/esm/{signature-input_4.entry.js → signature-input_6.entry.js} +315 -115
- package/dist/esm/signature-input_6.entry.js.map +1 -0
- package/dist/esm/stencil-library.js +1 -1
- package/dist/esm/udp-container-query-grid-item.entry.js +1 -1
- package/dist/esm/udp-container-query-grid.entry.js +1 -1
- package/dist/esm/udp-container-query.entry.js +2 -2
- package/dist/esm/udp-container.entry.js +2 -2
- package/dist/esm/udp-drive-utils-Cm3Sms8t.js +168 -0
- package/dist/esm/udp-drive-utils-Cm3Sms8t.js.map +1 -0
- package/dist/esm/udp-forms-builder.entry.js +133 -152
- package/dist/esm/udp-forms-builder.entry.js.map +1 -1
- package/dist/esm/udp-forms-list-card_2.entry.js +5 -5
- package/dist/esm/udp-forms-list.entry.js +1 -1
- package/dist/esm/udp-forms-renderer.entry.js +186 -176
- package/dist/esm/udp-forms-renderer.entry.js.map +1 -1
- package/dist/esm/udp-forms-ui.entry.js +113 -82
- package/dist/esm/udp-forms-ui.entry.js.map +1 -1
- package/dist/esm/udp-map.entry.js +3 -3
- package/dist/esm/udp-page.entry.js +1 -1
- package/dist/esm/udp-split-screen.entry.js +1 -1
- package/dist/esm/udp-stepper-demo.entry.js +1 -1
- package/dist/esm/udp-vertical-spacer.entry.js +1 -1
- package/dist/esm/utils-DZv4MqyU.js +31 -0
- package/dist/esm/utils-DZv4MqyU.js.map +1 -0
- package/dist/stencil-library/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.esm.js.map +1 -1
- package/dist/stencil-library/file-upload.selectable-list.stencil-field.entry.esm.js.map +1 -1
- package/dist/stencil-library/inputs-example.entry.esm.js.map +1 -1
- package/dist/stencil-library/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.esm.js.map +1 -1
- package/dist/stencil-library/p-09319660.entry.js +2 -0
- package/dist/stencil-library/p-09319660.entry.js.map +1 -0
- package/dist/stencil-library/p-146bc917.entry.js +2 -0
- package/dist/stencil-library/{p-b3b6310e.entry.js → p-147c4595.entry.js} +2 -2
- package/dist/stencil-library/{p-06ca29e0.entry.js → p-1b001f78.entry.js} +2 -2
- package/dist/stencil-library/{p-762591f6.entry.js → p-2635a6cc.entry.js} +2 -2
- package/dist/stencil-library/p-2f2fd111.entry.js +2 -0
- package/dist/stencil-library/{p-368be454.entry.js → p-2fc495ce.entry.js} +2 -2
- package/dist/stencil-library/{p-fdfa7087.entry.js → p-476c08df.entry.js} +2 -2
- package/dist/stencil-library/{p-ee1610d3.entry.js → p-4ab893a0.entry.js} +2 -2
- package/dist/stencil-library/p-4dac2b6d.entry.js +2 -0
- package/dist/stencil-library/p-4dac2b6d.entry.js.map +1 -0
- package/dist/stencil-library/p-556a182f.entry.js +2 -0
- package/dist/stencil-library/p-556a182f.entry.js.map +1 -0
- package/dist/stencil-library/p-5ac16f81.entry.js +2 -0
- package/dist/stencil-library/p-5ac16f81.entry.js.map +1 -0
- package/dist/stencil-library/p-609236fc.entry.js +2 -0
- package/dist/stencil-library/p-609236fc.entry.js.map +1 -0
- package/dist/stencil-library/{p-9b0b311b.entry.js → p-64330dbb.entry.js} +2 -2
- package/dist/stencil-library/p-65a5cce3.entry.js +2 -0
- package/dist/stencil-library/{p-5a946191.entry.js → p-70d8a0d8.entry.js} +2 -2
- package/dist/stencil-library/{p-79065768.entry.js → p-8119eb18.entry.js} +2 -2
- package/dist/stencil-library/{p-2f99476a.entry.js → p-86cd0134.entry.js} +2 -2
- package/dist/stencil-library/p-89aa56f1.entry.js +2 -0
- package/dist/stencil-library/p-89aa56f1.entry.js.map +1 -0
- package/dist/stencil-library/{p-767b7be7.entry.js → p-8a0b6bd4.entry.js} +2 -2
- package/dist/stencil-library/{p-40127f9f.entry.js → p-90fbca0f.entry.js} +2 -2
- package/dist/stencil-library/p-C5aOw4Ij.js +2 -0
- package/dist/stencil-library/p-C5aOw4Ij.js.map +1 -0
- package/dist/stencil-library/p-DZv4MqyU.js +2 -0
- package/dist/stencil-library/p-DZv4MqyU.js.map +1 -0
- package/dist/stencil-library/p-DtiAfg0X.js +2 -0
- package/dist/stencil-library/p-DtiAfg0X.js.map +1 -0
- package/dist/stencil-library/{p-f4f4ba61.entry.js → p-a98b033e.entry.js} +2 -2
- package/dist/stencil-library/p-a98b033e.entry.js.map +1 -0
- package/dist/stencil-library/{p-2a11c543.entry.js → p-ae167d4b.entry.js} +2 -2
- package/dist/stencil-library/{p-55459135.entry.js → p-b53e1b9a.entry.js} +2 -2
- package/dist/stencil-library/p-c1966f2c.entry.js +2 -0
- package/dist/stencil-library/p-c1966f2c.entry.js.map +1 -0
- package/dist/stencil-library/{p-0de6045a.entry.js → p-c9046d64.entry.js} +2 -2
- package/dist/stencil-library/{p-c1809ef3.entry.js → p-ca53be83.entry.js} +2 -2
- package/dist/stencil-library/p-d46dd16c.entry.js +2 -0
- package/dist/stencil-library/{p-09186dea.entry.js → p-d48b5599.entry.js} +2 -2
- package/dist/stencil-library/p-d4f31146.entry.js +2 -0
- package/dist/stencil-library/p-d4f31146.entry.js.map +1 -0
- package/dist/stencil-library/{p-b0b70c0b.entry.js → p-e7e8a8a3.entry.js} +2 -2
- package/dist/stencil-library/p-ea6e9a24.entry.js +2 -0
- package/dist/stencil-library/p-ea6e9a24.entry.js.map +1 -0
- package/dist/stencil-library/{p-79587009.entry.js → p-f4b5879d.entry.js} +2 -2
- package/dist/stencil-library/p-fbfbbcf1.entry.js +2 -0
- package/dist/stencil-library/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.esm.js.map +1 -1
- package/dist/stencil-library/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.esm.js.map +1 -0
- package/dist/stencil-library/stencil-library.esm.js +1 -1
- package/dist/stencil-library/udp-forms-builder.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-renderer.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-ui.entry.esm.js.map +1 -1
- package/dist/types/components/my-component/UI/buttons/icon-button/stencil-icon-button.d.ts +14 -0
- package/dist/types/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.d.ts +91 -0
- package/dist/types/components/my-component/UI/forms/form/stencil-field.d.ts +2 -1
- package/dist/types/components/my-component/UI/forms/form/stencil-form.d.ts +7 -5
- package/dist/types/components/my-component/UI/forms/udp-forms/types.d.ts +16 -0
- package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.d.ts +1 -0
- package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.d.ts +16 -19
- package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.d.ts +14 -26
- package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.d.ts +21 -7
- package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.d.ts +20 -0
- package/dist/types/components/my-component/UI/inputs/file-upload/file-upload.d.ts +1 -1
- package/dist/types/components/my-component/UI/inputs/file-upload/udp-drive-utils.d.ts +68 -1
- package/dist/types/components/my-component/UI/inputs/numeric-field/numeric-field.d.ts +1 -1
- package/dist/types/components/my-component/UI/inputs/signature-input/signature-input.d.ts +1 -1
- package/dist/types/components/my-component/UI/inputs/text-area/text-area.d.ts +21 -0
- package/dist/types/components/my-component/UI/inputs/text-field/text-field.d.ts +21 -0
- package/dist/types/components/my-component/UI/inputs/time-selector/udp-time-selector.d.ts +33 -1
- package/dist/types/components.d.ts +384 -14
- package/package.json +1 -1
- package/dist/cjs/signature-input.stencil-form.tally-display.udp-question.entry.cjs.js.map +0 -1
- package/dist/cjs/signature-input_4.cjs.entry.js.map +0 -1
- package/dist/cjs/utils-DMhqs00g.js +0 -55
- package/dist/cjs/utils-DMhqs00g.js.map +0 -1
- package/dist/collection/components/my-component/UI/forms/form/stencil-field.css +0 -70
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.css +0 -89
- package/dist/components/p-B3-pcvgV.js.map +0 -1
- package/dist/components/p-BEtm34A3.js.map +0 -1
- package/dist/components/p-BYsLvu6g.js.map +0 -1
- package/dist/components/p-BdWgc1UD.js.map +0 -1
- package/dist/components/p-Bdt-oOnd.js.map +0 -1
- package/dist/components/p-Bv1MGbhE.js.map +0 -1
- package/dist/components/p-C8cWVxBF.js.map +0 -1
- package/dist/components/p-C9cEH65u.js +0 -307
- package/dist/components/p-C9cEH65u.js.map +0 -1
- package/dist/components/p-CA-v1fbV.js.map +0 -1
- package/dist/components/p-CRiQA7Cy.js.map +0 -1
- package/dist/components/p-ChdtzL8Z.js.map +0 -1
- package/dist/components/p-DIcPqQkn.js.map +0 -1
- package/dist/components/p-DOKGpXin.js.map +0 -1
- package/dist/components/p-DueJnVH4.js.map +0 -1
- package/dist/components/p-DxJCXXmE.js.map +0 -1
- package/dist/components/p-IlXn87Ki.js.map +0 -1
- package/dist/components/p-PqypuW_Q.js.map +0 -1
- package/dist/components/p-hRee3qYx.js.map +0 -1
- package/dist/esm/signature-input.stencil-form.tally-display.udp-question.entry.js.map +0 -1
- package/dist/esm/signature-input_4.entry.js.map +0 -1
- package/dist/esm/utils-vXSpJxEK.js +0 -52
- package/dist/esm/utils-vXSpJxEK.js.map +0 -1
- package/dist/stencil-library/p-00c1ce44.entry.js +0 -2
- package/dist/stencil-library/p-00c1ce44.entry.js.map +0 -1
- package/dist/stencil-library/p-250a8400.entry.js +0 -2
- package/dist/stencil-library/p-2fda98ee.entry.js +0 -2
- package/dist/stencil-library/p-2fda98ee.entry.js.map +0 -1
- package/dist/stencil-library/p-50f67815.entry.js +0 -2
- package/dist/stencil-library/p-50f67815.entry.js.map +0 -1
- package/dist/stencil-library/p-584552e6.entry.js +0 -2
- package/dist/stencil-library/p-5e96c57a.entry.js +0 -2
- package/dist/stencil-library/p-5e96c57a.entry.js.map +0 -1
- package/dist/stencil-library/p-6a1febc9.entry.js +0 -2
- package/dist/stencil-library/p-6ed5258c.entry.js +0 -2
- package/dist/stencil-library/p-6ed5258c.entry.js.map +0 -1
- package/dist/stencil-library/p-77739d4b.entry.js +0 -2
- package/dist/stencil-library/p-77739d4b.entry.js.map +0 -1
- package/dist/stencil-library/p-7a2202b9.entry.js +0 -2
- package/dist/stencil-library/p-7a2202b9.entry.js.map +0 -1
- package/dist/stencil-library/p-84109194.entry.js +0 -2
- package/dist/stencil-library/p-b1d412a7.entry.js +0 -2
- package/dist/stencil-library/p-b1d412a7.entry.js.map +0 -1
- package/dist/stencil-library/p-f4f4ba61.entry.js.map +0 -1
- package/dist/stencil-library/p-f7c855d0.entry.js +0 -2
- package/dist/stencil-library/p-f889438a.entry.js +0 -2
- package/dist/stencil-library/p-f889438a.entry.js.map +0 -1
- package/dist/stencil-library/p-vXSpJxEK.js +0 -2
- package/dist/stencil-library/p-vXSpJxEK.js.map +0 -1
- package/dist/stencil-library/signature-input.stencil-form.tally-display.udp-question.entry.esm.js.map +0 -1
- /package/dist/stencil-library/{p-84109194.entry.js.map → p-146bc917.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-b3b6310e.entry.js.map → p-147c4595.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-06ca29e0.entry.js.map → p-1b001f78.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-762591f6.entry.js.map → p-2635a6cc.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-6a1febc9.entry.js.map → p-2f2fd111.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-368be454.entry.js.map → p-2fc495ce.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-fdfa7087.entry.js.map → p-476c08df.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-ee1610d3.entry.js.map → p-4ab893a0.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-9b0b311b.entry.js.map → p-64330dbb.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-584552e6.entry.js.map → p-65a5cce3.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-5a946191.entry.js.map → p-70d8a0d8.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-79065768.entry.js.map → p-8119eb18.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-2f99476a.entry.js.map → p-86cd0134.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-767b7be7.entry.js.map → p-8a0b6bd4.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-40127f9f.entry.js.map → p-90fbca0f.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-2a11c543.entry.js.map → p-ae167d4b.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-55459135.entry.js.map → p-b53e1b9a.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-0de6045a.entry.js.map → p-c9046d64.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-c1809ef3.entry.js.map → p-ca53be83.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-f7c855d0.entry.js.map → p-d46dd16c.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-09186dea.entry.js.map → p-d48b5599.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-b0b70c0b.entry.js.map → p-e7e8a8a3.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-79587009.entry.js.map → p-f4b5879d.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-250a8400.entry.js.map → p-fbfbbcf1.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["BaseFormHandler","saveFormData","_values","_status","loadExistingSubmission","supportsAutoSave","isFileArray","array","Array","isArray","every","item","File","PublicFormHandler","constructor","formId","formVersion","tenantId","super","this","objectToFormData","obj","files","formObj","key","value","_a","length","push","name","map","join","undefined","formData","createFormData","JSON","stringify","formFiles","getForm","makeApiCall","ConfigService","productV1ApiUrl","then","data","id","alert","catch","styleOverrides","parse","submitForm","values","PrivateFormHandler","userId","existingSubmission","updateExistingSubmission","search","SearchBuilder","addFilter","SearchOperators","EQUALS","toString","addOrder","response","execute","pageList","submission","error","console","createFormDataForSubmission","status","statusValue","formSubmissionData","FormId","FormVersion","Status","Id","dataWithoutFiles","_b","fieldFiles","_c","trim","f","forEach","file","append","Object","keys","FormHandlerFactory","create","isPublic","version","Error","UdpFormsRenderer","hostRef","autoSaveDelay","initialValues","submitSuccessful","currentFormData","isSaving","saveError","isSubmitted","getCurrentTenantId","handleFormChange","debouncedAutoSave","handleFinish","triggerAction","action","componentWillLoad","loading","formHandler","debounce","async","handleAutoSave","loadForm","form","existingData","processInitialValues","assign","handleSubmit","success","processedValues","entries","isFileReference","parseFileReferences","includes","references","split","ref","filter","udpDriveFiles","reference","udpDriveFile","parseFileReference","parts","warn","filename","dataRef","startsWith","driveFileId","substring","createUdpDriveFileFromId","base64Data","createUdpDriveFileFromBase64","extension","pop","placeholderBlob","Blob","type","getMimeTypeFromExtension","lastModified","Date","now","productId","path","binaryString","atob","bytes","Uint8Array","i","charCodeAt","blob","mimeTypes","pdf","doc","docx","xls","xlsx","ppt","pptx","txt","csv","json","xml","html","css","js","png","jpg","jpeg","gif","svg","zip","rar","toLowerCase","render","h","class","size","variant","showAutoSaveStatus","readonly","onSubmit","bind","onChange","onAction","onFinish"],"sources":["src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/BaseFormHandler.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/formUtils.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/FormHandlerFactory.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.tsx"],"sourcesContent":["import { IFormHandler } from './IFormHandler';\nimport { UdpForm, UdpFormSubmission, UdpFormSubmissionStatus } from '../../types';\n\n/**\n * Base class for form handlers with common functionality\n */\nexport abstract class BaseFormHandler implements IFormHandler {\n abstract getForm(): Promise<UdpForm>;\n abstract submitForm(values: { [name: string]: any }): Promise<boolean>;\n\n /**\n * Default implementation - does nothing\n * Override in subclasses that support auto-save\n */\n async saveFormData(_values: { [name: string]: any }, _status: UdpFormSubmissionStatus): Promise<UdpFormSubmission> {\n // Default implementation - no-op\n return null as any;\n }\n\n /**\n * Default implementation - returns null\n * Override in subclasses that support loading existing submissions\n */\n async loadExistingSubmission(): Promise<UdpFormSubmission | null> {\n return null;\n }\n\n /**\n * Default implementation - returns true\n * Override in subclasses that don't support auto-save\n */\n supportsAutoSave(): boolean {\n return true;\n }\n}\n","/**\n * Utility function to check if an array contains File objects\n */\nexport function isFileArray(array: any): array is File[] {\n // Check if it's an array\n if (!Array.isArray(array)) {\n return false;\n }\n\n // Check if all elements in the array are instances of File\n return array.every(item => item instanceof File);\n}\n","import { BaseFormHandler } from './BaseFormHandler';\nimport { Guid, UdpForm, StyleOverrides } from '../../types';\nimport { makeApiCall, createFormData } from '../../../../../../../udp-utilities/api/makeApiCall/makeApiCall';\nimport { ConfigService } from 'src/udp-utilities/api-config';\nimport { isFileArray } from './formUtils';\n\n/**\n * Public form submission handler (legacy endpoint)\n */\nexport class PublicFormHandler extends BaseFormHandler {\n constructor(\n private formId: Guid,\n private formVersion: number,\n private tenantId: Guid\n ) {\n super();\n }\n\n private objectToFormData(obj): FormData {\n // Separate files from regular data\n const files: File[] = [];\n const formObj = {};\n\n for (let key in obj) {\n let value;\n if (obj[key]?.value) {\n value = obj[key].value;\n } else {\n value = obj[key];\n }\n\n if (isFileArray(value)) {\n // Collect files for formFiles only if there are files\n if (value.length > 0) {\n files.push(value[0]);\n formObj[key] = value[0].name;\n }\n // If no files, skip this field entirely\n } else if (Array.isArray(value)) {\n formObj[key] = value.map(item => (typeof item === 'string' ? item : item.value)).join(',');\n } else {\n // Only include fields with meaningful values\n // Skip null, undefined, or empty string values entirely\n if (value !== null && value !== undefined && value !== '') {\n formObj[key] = value;\n }\n }\n }\n\n // Use createFormData helper with the structured data\n const formData = createFormData({\n formData: JSON.stringify(formObj),\n formFiles: files[0] // Public handler only supports single file\n });\n\n return formData;\n }\n\n async getForm(): Promise<UdpForm> {\n const formData: UdpForm = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/describe/public?tenantId=${this.tenantId}`, {})\n .then(data => {\n if (data.id) {\n return data;\n } else {\n alert('form not found');\n return null;\n }\n })\n .catch(() => {\n // this would get thrown when the form exists but is private\n alert('form not found');\n return null;\n });\n if (formData.styleOverrides && typeof formData.styleOverrides === 'string') {\n formData.styleOverrides = JSON.parse(formData.styleOverrides) as StyleOverrides;\n }\n return formData;\n }\n\n async submitForm(values: { [name: string]: any }): Promise<boolean> {\n const formData = this.objectToFormData(values);\n\n return await makeApiCall(\n 'POST',\n `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/${this.formVersion}/submit/public?tenantId=${this.tenantId}`,\n formData,\n true,\n )\n .then(() => true)\n .catch(() => false);\n }\n}\n","import { BaseFormHandler } from './BaseFormHandler';\nimport { Guid, UdpForm, UdpFormSubmission, UdpFormSubmissionStatus, StyleOverrides } from '../../types';\nimport { makeApiCall, createFormData } from '../../../../../../../udp-utilities/api/makeApiCall/makeApiCall';\nimport { SearchBuilder, SearchOperators } from '../../../../../../../udp-utilities/search';\nimport { ConfigService } from 'src/udp-utilities/api-config';\nimport { isFileArray } from './formUtils';\n\n/**\n * Private form submission handler (new UdpFormSubmission endpoint)\n */\nexport class PrivateFormHandler extends BaseFormHandler {\n constructor(\n private formId: Guid,\n private formVersion: number,\n private userId: Guid,\n private existingSubmission: UdpFormSubmission | null,\n private updateExistingSubmission: (submission: UdpFormSubmission) => void\n ) {\n super();\n }\n\n async getForm(): Promise<UdpForm> {\n const formData: UdpForm = await makeApiCall(\n 'GET',\n `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}${this.formVersion ? `/${this.formVersion}` : ''}/describe`\n );\n if (formData.styleOverrides && typeof formData.styleOverrides === 'string') {\n formData.styleOverrides = JSON.parse(formData.styleOverrides) as StyleOverrides;\n }\n return formData;\n }\n\n async loadExistingSubmission(): Promise<UdpFormSubmission | null> {\n try {\n const search = new SearchBuilder(1, 1) // Only need the first result\n .addFilter('unityUserId', this.userId, SearchOperators.EQUALS)\n .addFilter('formId', this.formId, SearchOperators.EQUALS)\n .addFilter('formVersion', this.formVersion.toString(), SearchOperators.EQUALS)\n .addOrder('id', 'DESC'); // Get the most recent submission if multiple exist\n\n const response = await search.execute('UdpFormSubmission');\n\n // Check if we got any results\n if (response?.pageList && response.pageList.length > 0) {\n const submission = response.pageList[0] as UdpFormSubmission;\n this.existingSubmission = submission;\n this.updateExistingSubmission(submission);\n return submission;\n }\n\n return null;\n } catch (error) {\n console.error('Error fetching existing form response:', error);\n return null;\n }\n }\n\n private createFormDataForSubmission(data: { [name: string]: any }, status: UdpFormSubmissionStatus): FormData {\n // Convert status string to numeric value\n let statusValue: number;\n if (status === 'submitted') {\n statusValue = 2;\n } else if (status === 'in-progress') {\n statusValue = 1;\n } else {\n statusValue = typeof status === 'number' ? status : 1;\n }\n\n // Prepare the base form submission data\n const formSubmissionData: Record<string, any> = {\n FormId: this.formId,\n FormVersion: this.formVersion.toString(),\n Status: statusValue.toString(),\n };\n\n if (this.existingSubmission?.id) {\n formSubmissionData.Id = this.existingSubmission.id;\n }\n\n // Separate files from regular data\n const files: File[] = [];\n const dataWithoutFiles: Record<string, any> = {};\n\n for (let key in data) {\n let value = data[key]?.value || data[key];\n let fieldFiles = data[key]?.files; // Check if this field has associated files\n\n if (fieldFiles && Array.isArray(fieldFiles)) {\n // This field has File objects - add them to files array and use the string value for data\n files.push(...fieldFiles);\n // Only include file field in data if it has a meaningful value\n if (value && value.trim() !== '') {\n dataWithoutFiles[key] = value;\n }\n // If no files and no value, skip this field entirely\n } else if (isFileArray(value)) {\n // Legacy file handling - collect files for FormFiles\n files.push(...value);\n // Store filename in data only if there are files\n if (value.length > 0) {\n dataWithoutFiles[key] = value.map(f => f.name).join(',');\n }\n // If no files, skip this field entirely\n }else if (value instanceof File) {\n // Single file handling - add to files array and use filename in data\n files.push(value);\n dataWithoutFiles[key] = value.name;\n }\n\n else if (Array.isArray(value)) {\n dataWithoutFiles[key] = value.map(item => (typeof item === 'string' ? item : item.value)).join(',');\n } else {\n // Only include non-file fields if they have a meaningful value\n // Skip null, undefined, or empty string values entirely\n if (value !== null && value !== undefined && value !== '') {\n dataWithoutFiles[key] = value;\n }\n }\n }\n\n // Add form data using the helper function\n const formData = createFormData(formSubmissionData);\n\n // Add files to FormFiles collection\n files.forEach(file => formData.append('FormFiles', file));\n\n // Convert data to Dictionary<string, string> format expected by server\n Object.keys(dataWithoutFiles).forEach(key => {\n formData.append(`Data[${key}]`, dataWithoutFiles[key]?.toString() || '');\n });\n\n return formData;\n }\n\n async saveFormData(values: { [name: string]: any }, status: UdpFormSubmissionStatus): Promise<UdpFormSubmission> {\n const formData = this.createFormDataForSubmission(values, status);\n\n let submission: UdpFormSubmission;\n\n if (this.existingSubmission) {\n // Update existing submission\n submission = await makeApiCall(\n 'PUT',\n `${ConfigService.productV1ApiUrl}/UdpFormSubmission/${this.existingSubmission.id}`,\n formData,\n true\n );\n } else {\n // Create new submission\n submission = await makeApiCall(\n 'POST',\n `${ConfigService.productV1ApiUrl}/UdpFormSubmission`,\n formData,\n true\n );\n }\n\n // Update the existing submission reference\n this.updateExistingSubmission(submission);\n return submission;\n }\n\n async submitForm(values: { [name: string]: any }): Promise<boolean> {\n try {\n await this.saveFormData(values, 'submitted');\n return true;\n } catch (error) {\n console.error('Private form submission failed:', error);\n return false;\n }\n }\n}\n","import { Build } from '@stencil/core';\nimport { IFormHandler } from './IFormHandler';\nimport { MockFormHandler } from './MockFormHandler';\nimport { PublicFormHandler } from './PublicFormHandler';\nimport { PrivateFormHandler } from './PrivateFormHandler';\nimport { Guid, UdpFormSubmission } from '../../types';\n\n/**\n * Factory for creating form handlers\n */\nexport class FormHandlerFactory {\n static create(\n isPublic: boolean,\n formId: Guid,\n version: number,\n tenantId: Guid,\n userId?: Guid | null,\n existingSubmission?: UdpFormSubmission | null,\n updateExistingSubmission?: (submission: UdpFormSubmission) => void\n ): IFormHandler {\n // Use mock handler in development\n if (Build.isDev) {\n return new MockFormHandler();\n }\n\n if (isPublic) {\n return new PublicFormHandler(formId, version, tenantId);\n } else {\n if (!userId) {\n throw new Error('User ID is required for private forms');\n }\n return new PrivateFormHandler(\n formId,\n version,\n userId,\n existingSubmission || null,\n updateExistingSubmission || (() => {})\n );\n }\n }\n}\n","import { Component, Prop, State, Element, h } from '@stencil/core';\nimport { debounce } from 'lodash';\nimport { Guid, UdpDriveFile } from 'src/global/types';\nimport { UdpForm, UdpFormSubmission } from '../types';\nimport { getCurrentTenantId } from 'src/udp-utilities/tenant/tenantUtils';\nimport { IFormHandler } from './form-handler/IFormHandler';\nimport { FormHandlerFactory } from './form-handler/FormHandlerFactory';\n\n@Component({\n tag: 'udp-forms-renderer',\n shadow: true,\n})\nexport class UdpFormsRenderer {\n @Prop() formId: Guid;\n @Prop() version: number;\n @Prop() triggerAction: (actionId: Guid, params: Object) => void;\n @Prop() isPublic: boolean = false;\n @Prop() callbackUrl: string;\n @Prop() userId: Guid | null = null; // User ID for authenticated users\n @Prop() autoSaveDelay: number = 2000; // Debounce delay for auto-save in milliseconds\n @State() form: UdpForm;\n @State() initialValues: { [name: string]: any } = {};\n @State() submitSuccessful: boolean = false;\n @Element() el: HTMLElement;\n @State() loading: boolean;\n @State() existingSubmission: UdpFormSubmission | null = null;\n @State() currentFormData: { [name: string]: any } = {};\n @State() isSaving: boolean = false;\n @State() saveError: string | null = null;\n @State() isSubmitted: boolean = false;\n\n private tenantId: Guid = getCurrentTenantId();\n private debouncedAutoSave: (values: { [name: string]: any }) => void;\n private formHandler: IFormHandler;\n\n async componentWillLoad() {\n this.loading = true;\n this.formHandler = FormHandlerFactory.create(\n this.isPublic,\n this.formId,\n this.version,\n this.tenantId,\n this.userId,\n this.existingSubmission,\n (submission) => {\n this.existingSubmission = submission;\n }\n );\n\n // Set up debounced auto-save function\n this.debouncedAutoSave = debounce(async (values: { [name: string]: any }) => {\n await this.handleAutoSave(values);\n }, this.autoSaveDelay);\n\n if (this.formId && this.version) {\n await this.loadForm();\n }\n this.loading = false;\n }\n\n private async loadForm() {\n try {\n // Load form structure\n const formData = await this.formHandler.getForm();\n this.form = formData;\n\n // Try to load existing submission if handler supports it\n if (this.userId && this.formHandler.loadExistingSubmission) {\n const existingData = await this.formHandler.loadExistingSubmission();\n if (existingData) {\n this.existingSubmission = existingData;\n this.initialValues = existingData.data || {};\n // Check if the form is submitted (status 2)\n if (existingData.status === 2) {\n this.isSubmitted = true;\n }\n // Process file data to convert file references to UdpDriveFile objects\n this.initialValues = await this.processInitialValues(this.initialValues);\n this.currentFormData = { ...this.initialValues };\n\n if (existingData.status === 2 || existingData.status === 'submitted') {\n this.isSubmitted = true;\n }\n }\n }\n } catch (error) {\n console.error('Failed to load form:', error);\n }\n }\n\n private async handleSubmit(values: { [name: string]: any }) {\n try {\n const success = await this.formHandler.submitForm(values);\n this.submitSuccessful = success;\n } catch (error) {\n console.error('Form submission failed:', error);\n throw error;\n }\n }\n\n private async handleAutoSave(values: { [name: string]: any }) {\n // Only auto-save if handler supports it and user is authenticated\n if (!this.formHandler.supportsAutoSave() || !this.userId || !this.formHandler.saveFormData) {\n return;\n }\n\n this.isSaving = true;\n this.saveError = null;\n\n try {\n await this.formHandler.saveFormData(values, 'in-progress');\n this.currentFormData = { ...values };\n } catch (error) {\n console.error('Auto-save failed:', error);\n this.saveError = 'Failed to save form data';\n } finally {\n this.isSaving = false;\n }\n }\n\n private handleFormChange = (values: { [name: string]: any }) => {\n // Trigger auto-save if form data has changed\n if (JSON.stringify(values) !== JSON.stringify(this.currentFormData)) {\n this.debouncedAutoSave(values);\n }\n };\n\n /**\n * Process initial values to convert file references to UdpDriveFile objects\n */\n private async processInitialValues(values: { [name: string]: any }): Promise<{ [name: string]: any }> {\n const processedValues = { ...values };\n\n for (const [key, value] of Object.entries(values)) {\n if (typeof value === 'string' && this.isFileReference(value)) {\n processedValues[key] = await this.parseFileReferences(value);\n }\n }\n\n return processedValues;\n }\n\n /**\n * Check if a string value is a file reference (contains | and udp: or b64:)\n */\n private isFileReference(value: string): boolean {\n return typeof value === 'string' && value.includes('|') && (value.includes('udp:') || value.includes('b64:'));\n }\n\n /**\n * Parse file references from the special format: \"filename|udp:driveFileId\" or \"filename|b64:base64data\"\n */\n private async parseFileReferences(value: string): Promise<UdpDriveFile[]> {\n const references = value.split(',').map(ref => ref.trim()).filter(ref => ref);\n const udpDriveFiles: UdpDriveFile[] = [];\n\n for (const reference of references) {\n try {\n const udpDriveFile = await this.parseFileReference(reference);\n if (udpDriveFile) {\n udpDriveFiles.push(udpDriveFile);\n }\n } catch (error) {\n console.error('Error parsing file reference:', reference, error);\n }\n }\n\n return udpDriveFiles;\n }\n\n /**\n * Parse a single file reference\n */\n private async parseFileReference(reference: string): Promise<UdpDriveFile | null> {\n const parts = reference.split('|');\n if (parts.length !== 2) {\n console.warn('Invalid file reference format:', reference);\n return null;\n }\n\n const [filename, dataRef] = parts;\n\n if (dataRef.startsWith('udp:')) {\n // Handle UDP Drive file reference\n const driveFileId = dataRef.substring(4); // Remove 'udp:' prefix\n return await this.createUdpDriveFileFromId(filename, driveFileId);\n } else if (dataRef.startsWith('b64:')) {\n // Handle base64 encoded file\n const base64Data = dataRef.substring(4); // Remove 'b64:' prefix\n return this.createUdpDriveFileFromBase64(filename, base64Data);\n }\n\n console.warn('Unknown file reference format:', dataRef);\n return null;\n }\n\n /**\n * Create a UdpDriveFile from a drive file ID\n */\n private async createUdpDriveFileFromId(filename: string, driveFileId: string): Promise<UdpDriveFile> {\n // Extract file extension from filename\n const extension = filename.split('.').pop() || '';\n\n // Create a placeholder File object - the actual content will be downloaded when needed\n const placeholderBlob = new Blob([''], { type: this.getMimeTypeFromExtension(extension) });\n const file = new File([placeholderBlob], filename, {\n type: placeholderBlob.type,\n lastModified: Date.now()\n });\n\n // Create UdpDriveFile by extending the File object\n const udpDriveFile = file as UdpDriveFile;\n\n // Add UDP-specific properties\n udpDriveFile.driveFileId = driveFileId as Guid;\n udpDriveFile.tenantId = this.tenantId;\n udpDriveFile.productId = 0; // Will be filled by server\n udpDriveFile.path = '';\n udpDriveFile.extension = extension;\n\n return udpDriveFile;\n }\n\n /**\n * Create a UdpDriveFile from base64 data\n */\n private createUdpDriveFileFromBase64(filename: string, base64Data: string): UdpDriveFile {\n // Extract file extension from filename\n const extension = filename.split('.').pop() || '';\n\n // Decode base64 data\n const binaryString = atob(base64Data);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n const blob = new Blob([bytes], { type: this.getMimeTypeFromExtension(extension) });\n\n // Create a UdpDriveFile that extends File\n const udpDriveFile: UdpDriveFile = new File([blob], filename, {\n type: blob.type,\n lastModified: Date.now()\n }) as UdpDriveFile;\n\n // Add UDP-specific properties\n udpDriveFile.driveFileId = '' as Guid; // No drive file ID for base64 files\n udpDriveFile.tenantId = this.tenantId;\n udpDriveFile.productId = 0;\n udpDriveFile.path = '';\n udpDriveFile.extension = extension;\n\n return udpDriveFile;\n }\n\n /**\n * Get MIME type from file extension\n */\n private getMimeTypeFromExtension(extension: string): string {\n const mimeTypes: { [key: string]: string } = {\n 'pdf': 'application/pdf',\n 'doc': 'application/msword',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'xls': 'application/vnd.ms-excel',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'txt': 'text/plain',\n 'csv': 'text/csv',\n 'json': 'application/json',\n 'xml': 'application/xml',\n 'html': 'text/html',\n 'css': 'text/css',\n 'js': 'application/javascript',\n 'png': 'image/png',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'gif': 'image/gif',\n 'svg': 'image/svg+xml',\n 'zip': 'application/zip',\n 'rar': 'application/x-rar-compressed',\n '7z': 'application/x-7z-compressed'\n };\n\n return mimeTypes[extension.toLowerCase()] || 'application/octet-stream';\n }\n\n private handleFinish = () => {\n // Trigger any finish actions\n if (this.triggerAction) {\n this.triggerAction(null as any, { action: 'finish' });\n }\n };\n\n render() {\n if (this.loading) {\n return (\n <div class=\"loading-container\">\n <unity-spinner size=\"medium\" />\n </div>\n );\n }\n\n if (!this.form) {\n return (\n <div class=\"error-container\">\n <unity-typography variant=\"body1\">Form not found</unity-typography>\n </div>\n );\n }\n\n return (\n <udp-forms-ui\n form={this.form}\n initialValues={this.initialValues}\n submitSuccessful={this.submitSuccessful}\n isSaving={this.isSaving}\n saveError={this.saveError}\n showAutoSaveStatus={this.formHandler.supportsAutoSave() && !!this.userId}\n readonly={this.isSubmitted}\n onSubmit={this.handleSubmit.bind(this)}\n onChange={this.handleFormChange}\n onAction={this.triggerAction}\n onFinish={this.handleFinish}\n />\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as s,h as t}from"./p-CaIWDYyq.js";const a=":host{display:block}";const d=class{constructor(t){s(this,t);this.maxWidth="1200px";this.padding="16px"}render(){const s={maxWidth:this.maxWidth,padding:this.padding,margin:"0 auto"};return t("div",{key:"1934c4b0c1e8bed5363aba9cf34da78dd6f43e58",style:s},t("slot",{key:"66374b078e6bab0010d92bb3fb13733457fed5ca"})," ")}};d.style=a;export{d as udp_page};
|
|
2
|
-
//# sourceMappingURL=p-84109194.entry.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as t,h as i,a as o}from"./p-CaIWDYyq.js";import{m as e}from"./p-B-daVutk.js";import{q as s,d as n}from"./p-CyQelV_a.js";import{g as r}from"./p-B7tdArhp.js";import{C as a}from"./p-Cn7PuhQz.js";import{g as c}from"./p-Basdb1b1.js";import l from"sortablejs";import{v4 as d}from"uuid";import"axios";import"@carbon/icons/es/add/16";import"@carbon/icons/es/add/32";import"@carbon/icons/es/add--alt/16";import"@carbon/icons/es/add--filled/16";import"@carbon/icons/es/arrows--horizontal/16";import"@carbon/icons/es/attachment/16";import"@carbon/icons/es/batch-job/16";import"@carbon/icons/es/box/16";import"@carbon/icons/es/close/16";import"@carbon/icons/es/close/32";import"@carbon/icons/es/close--filled/16";import"@carbon/icons/es/close--outline/16";import"@carbon/icons/es/checkmark/16";import"@carbon/icons/es/checkmark/32";import"@carbon/icons/es/chevron--left/16";import"@carbon/icons/es/chevron--right/16";import"@carbon/icons/es/data-enrichment/16";import"@carbon/icons/es/document/16";import"@carbon/icons/es/document--add/16";import"@carbon/icons/es/document--attachment/16";import"@carbon/icons/es/document--pdf/16";import"@carbon/icons/es/draggable/16";import"@carbon/icons/es/edit/16";import"@carbon/icons/es/export/16";import"@carbon/icons/es/flag/16";import"@carbon/icons/es/information/16";import"@carbon/icons/es/information/32";import"@carbon/icons/es/link/16";import"@carbon/icons/es/overflow-menu--vertical/16";import"@carbon/icons/es/overflow-menu--vertical/32";import"@carbon/icons/es/return/16";import"@carbon/icons/es/save/16";import"@carbon/icons/es/settings/16";import"@carbon/icons/es/subtract/16";import"@carbon/icons/es/subtract--alt/16";import"@carbon/icons/es/subtract--filled/16";import"@carbon/icons/es/trash-can/16";import"@carbon/icons/es/user/16";import"@carbon/icons/es/view/16";import"@carbon/icons/es/warning/16";import"@carbon/icons/es/warning/32";import"@carbon/icons/es/warning--alt/16";import"@carbon/icons/es/warning--alt/32";import"@carbon/icons/es/product/16";import"@carbon/icons/es/workspace/16";import"@carbon/icons/es/arrow--up/16";import"@carbon/icons/es/arrow--down/16";import"@carbon/icons/es/copy/16";import"@carbon/icons/es/text--font/16";import"@carbon/icons/es/text--long-paragraph/16";import"@carbon/icons/es/character--whole-number/16";import"@carbon/icons/es/checkbox--checked/16";import"@carbon/icons/es/radio-button--checked/16";import"@carbon/icons/es/event--schedule/16";import"@carbon/icons/es/view--off/16";import"@carbon/icons/es/time/16";import"@carbon/icons/es/calendar/16";import"@carbon/icons/es/list--checked/16";import"@carbon/icons/es/list--bulleted/16";import"@carbon/icons/es/cloud--upload/16";const h=":host{display:block;--udp-form-primary-color:#007bff;--udp-form-spacing-unit:16px}.udp-forms-page{display:flex;flex-direction:column;gap:var(--spacing-06, 32px);padding:var(--spacing-06, 32px);padding-bottom:var(--spacing-12)}.form-section-questions-container{display:flex;flex-direction:column}.form-details-container{display:flex;flex-direction:column;padding:var(--spacing-05, 24px);background-color:var(--card-background-color, white)}.form-details-version-container{margin-bottom:var(--spacing-05)}.udp-form-builder-field-container,.udp-forms-builder-item-generic-configs,.udp-forms-builder-item-specific-configs{display:flex;flex-direction:column;gap:var(--spacing-04, 16px)}.form-section{}.form-section-header{display:flex;flex-direction:row;justify-content:space-between;background-color:var(--primary-color-dark, #000);color:var(--primary-contrast-text, #FFF);padding:var(--spacing-04, 16px) var(--spacing-05, 24px);align-items:center}.add-question-button-container{display:flex;justify-content:center;align-items:center}.question-editor-container{padding:var(--spacing-05, 24px);display:flex;flex-direction:column;gap:var(--spacing-05, 24px)}.add-question-to-section-button-container{padding:var(--spacing-02, 8px) 0;margin:auto}.sortable-ghost{opacity:0.5;transform:scale(0.98);background:#f4f4f4;border:1px dashed #ccc}.sortable-chosen{background:#eef6ff;box-shadow:0 0 4px 2px rgba(51, 153, 255, 0.3)}.form-question-drag-handle{transform:rotate(90deg);cursor:grab}.form-question-drag-handle:active{cursor:grabbing}.form-question-drag-handle .drag-wrapper{cursor:inherit}.form-question-drag-handle stencil-icon-button{pointer-events:none;}";var u=undefined&&undefined.__rest||function(t,i){var o={};for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)&&i.indexOf(e)<0)o[e]=t[e];if(t!=null&&typeof Object.getOwnPropertySymbols==="function")for(var s=0,e=Object.getOwnPropertySymbols(t);s<e.length;s++){if(i.indexOf(e[s])<0&&Object.prototype.propertyIsEnumerable.call(t,e[s]))o[e[s]]=t[e[s]]}return o};const p={background:{backgroundImage:"",backgroundColor:""},headerBackgroundColor:"",fontFamily:"",helperText:{variant:"",fontFamily:""},questionText:{variant:"",fontFamily:""},titleText:{variant:"",fontFamily:""},paragraphText:{variant:"",fontFamily:""}};const m={title:"",sectionText:"",sectionProperties:"",formQuestions:[]};const f=class{constructor(i){t(this,i);this.formMetadata={};this.formSections=[];this.formSectionsDraft=[];this.isNewForm=true;this.isMostRecentFormVersion=false;this.isError=false;this.isLoading=false;this.isShowStyleOverrides=false;this.isStyleSheetOpen=false;this.isDialogOpen=false;this.showMenuAtIndex=null;this.editingQuestion=null;this.editingSection=null;this.isQuestionEditorOpen=false;this.isSectionEditorOpen=false;this.dialogMessage="Are you sure you want to delete this?";this.pageBuilderId="c77aa2c8-f8b8-41af-aa77-c8612fc918c1";this.sortableInstances=[];this.needsSortableInit=true;this.getQuestionTypeName=t=>{const i=s.find((i=>i.fieldTypeId===t));return i?i.questionTypeName:"Unknown"};this.getIsContainsOptionItems=t=>{const i=s.find((i=>i.fieldTypeId===t));return i?i.isContainsOptionItems||false:false};this.getIconForQuestion=t=>{const i=s.find((i=>i.fieldTypeId===t));return i?i.icon:null};this.handleQuestionDelete=(t,i)=>{const o=n(this.formSections);o[t].formQuestions.splice(i,1);this.formSections=o};this.handleQuestionCopy=(t,i)=>{const o=n(this.formSections);const e=this.formSections[t].formQuestions[i];const s=Object.assign(Object.assign({},e),{questionText:(e.questionText||"")+" (Copy)",id:d()});o[t].formQuestions.splice(i+1,0,s);this.formSections=o};this.handleQuestionClick=(t,i)=>{this.editingQuestion={sIndex:t,qIndex:i};this.isQuestionEditorOpen=true;this.formSectionsDraft=n(this.formSections)};this.closeQuestionEditor=()=>{this.isQuestionEditorOpen=false;this.editingQuestion=null;this.formSectionsDraft=null};this.updateFormSectionsWithDraft=()=>{this.formSections=this.formSectionsDraft;this.formSectionsDraft=null};this.hasUnsavedFormSectionsChanges=()=>JSON.stringify(this.formSections)!==JSON.stringify(this.formSectionsDraft);this.handleSectionEditClick=t=>{this.editingSection={sIndex:t};this.isSectionEditorOpen=true;this.formSectionsDraft=n(this.formSections)};this.closeSectionEditor=()=>{this.isSectionEditorOpen=false;this.editingSection=null;this.formSectionsDraft=null};this.addQuestionOfType=(t,i,o)=>{const e={questionTypeName:t.questionTypeName,fieldTypeId:t.fieldTypeId,fieldProperties:t.defaultFieldProperties,helperText:"",questionText:"",section:i!==undefined?i+1:this.formSections.length>0?this.formSections[this.formSections.length-1].formQuestions[0].section:1,isContainsOptionItems:t.isContainsOptionItems,icon:t.icon,required:true,form:null,isPrivate:true,id:d()};const s=n(this.formSections);let r=i;let a=o;if(i!==undefined&&o!==undefined){if(s[i].formQuestions){s[i].formQuestions.splice(o,0,e)}else{const t=s.length-1;s[t].formQuestions.push(e);r=t;a=s[t].formQuestions.length-1}}else{const t=s.length-1;if(t<0||s[t].formQuestions.length===0){s.push(Object.assign(Object.assign({},m),{formQuestions:[e]}));r=s.length-1;a=0}else{s[t].formQuestions.push(e);r=t;a=s[t].formQuestions.length-1}}this.formSectionsDraft=s;if(this.showMenuAtIndex)this.showMenuAtIndex=null;return{sIndex:r,qIndex:a}};this.toggleStyleSheet=()=>{this.isStyleSheetOpen=!this.isStyleSheetOpen};this.handleSectionMoveDown=t=>{if(t>=this.formSections.length-1)return;const i=[...this.formSections];[i[t],i[t+1]]=[i[t+1],i[t]];this.needsSortableInit=true;this.formSections=i};this.handleSectionMoveUp=t=>{if(t<=0)return;const i=[...this.formSections];[i[t],i[t-1]]=[i[t-1],i[t]];this.needsSortableInit=true;this.formSections=i};this.handleSectionDelete=t=>{const i=[...this.formSections];i.splice(t,1);this.needsSortableInit=true;this.formSections=i}}initializeSortable(){if(!(this.isNewForm||this.isMostRecentFormVersion)){return}this.sortableInstances.forEach((t=>t.destroy()));this.sortableInstances=[];this.formSections.forEach(((t,i)=>{const o=this.hostEl.shadowRoot.querySelector(`#section-${i}`);if(o){const t=new l(o,{animation:200,easing:"cubic-bezier(0.25, 1, 0.5, 1)",draggable:"udp-forms-builder-question-item",handle:".form-question-drag-handle",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",direction:"vertical",forceFallback:false,dragoverBubble:false,swapThreshold:.6,onEnd:t=>this.handleDragEnd(t,i)});this.sortableInstances.push(t)}}))}handleDragEnd(t,i){const o=t.oldIndex;const e=t.newIndex;if(o===e||o==null||e==null)return;const s=structuredClone(this.formSections[i]);const[r]=s.formQuestions.splice(o,1);s.formQuestions.splice(e,0,r);const a=n(this.formSections);a[i]=s;console.log(`Moved question in section ${i} from ${o} to ${e}`);this.formSections=a}componentDidLoad(){this.initializeSortable()}componentDidUpdate(){this.initializeSortable()}componentWillLoad(){this.initializeForm()}onFormSectionsChange(t){console.log(t)}onFormMetadataChange(t){console.log(t)}onFormIdOrVersionChange(){this.initializeForm()}async initializeForm(){this.formMetadata.isPrivate=true;this.formMetadata.tenantId=c();this.formMetadata.type=1;this.formMetadata.version=1;this.formMetadata.name="Form Name";this.formMetadata.description="Form Description";this.formMetadata.styleOverrides=p;try{this.isLoading=true;const t=await e("GET",a.productV1ApiUrl+"/UdpLookup");if(!t){throw new Error(`Error fetching lookup data`)}this.lookupOptionsDataProcessed=t.map((t=>Object.assign(Object.assign({},t),{value:t.id,label:t.name})));if(this.formId&&this.version){const t=await e("GET",`${a.productV1ApiUrl}/UdpForm/${this.formId}/${this.version}/describe`);const i=await e("GET",`${a.productV1ApiUrl}/UdpForm/${this.formId}/describe`);this.isNewForm=false;if(!t||!i||!t.id||!i){throw new Error(`Error fetching form data`)}if(t.id==i.id&&t.version==i.version){this.isMostRecentFormVersion=true}const o=structuredClone(t.udpFormUdpFormSection).map((t=>Object.assign(Object.assign({},t),{formQuestions:[]})));t.formQuestions.forEach((t=>{const i=o.find((i=>i.id===t.formSectionId));if(i){const o=Object.assign({},t.fieldProperties);if("lookupId"in o&&"items"in o){delete o.items}i.formQuestions.push(Object.assign(Object.assign({},t),{fieldProperties:o,questionTypeName:this.getQuestionTypeName(t.fieldTypeId),isContainsOptionItems:this.getIsContainsOptionItems(t.fieldTypeId),icon:this.getIconForQuestion(t.fieldTypeId)}))}}));o.forEach((t=>{t.formQuestions.sort(((t,i)=>t.questionOrder-i.questionOrder))}));const s=u(t,[]);s.styleOverrides=this.deepMerge(p,JSON.parse(s.styleOverrides)||{});this.formMetadata=s;this.formSections=o;this.isLoading=false}}catch(t){this.isError=true;this.enqueueSnackbar("Error loading form data",{variant:"error",anchorOrigin:{vertical:"top",horizontal:"center"}})}finally{this.isLoading=false}}async submitForm(){this.isLoading=true;try{if(!this.validateForm());const t={name:this.formMetadata.name,description:this.formMetadata.description,tenantId:this.formMetadata.tenantId,isPrivate:this.formMetadata.isPrivate,type:this.formMetadata.type,styleOverrides:JSON.stringify(this.formMetadata.styleOverrides),id:this.formMetadata.id,version:this.formMetadata.version};console.log("Submitting form metadata:",t);const i=`${a.productV1ApiUrl}/UdpForm${this.isMostRecentFormVersion?"/versions":""}`;const o=await e("POST",i,t);console.log("Form response:",o);const s=o.id;const n=o.version;if(!o||!o.id||!o.version){throw new Error(`Invalid form response: ${JSON.stringify(o)}`)}let r=0;let c=0;const l=[];for(const[t,i]of this.formSections.entries()){r+=1;const o=Object.assign(Object.assign({},i),{formId:s,formVersion:n,order:r});console.log("Submitting section:",o);const d=await e("POST",`${a.productV1ApiUrl}/UdpFormSection`,o);if(!d||!d.id){throw new Error(`Invalid section response: ${JSON.stringify(d)}`)}const h=d.id;for(const o of i.formQuestions){c+=1;const i=Object.assign(Object.assign({},o),{formId:s,formVersion:n,section:t+1,questionOrder:c,formSectionId:h,name:`question${c}`});console.log("Submitting question:",i);const r=e("POST",`${a.productV1ApiUrl}/UdpFormQuestion`,i);l.push(r)}}await Promise.all(l);this.enqueueSnackbar("Success",{variant:"success",anchorOrigin:{vertical:"top",horizontal:"center"}});this.history.push(`/page/${this.pageBuilderId}?udpf_formId=${s}&udpf_version=${n}`)}catch(t){console.error("Form submission error:",t);this.enqueueSnackbar("Error saving form",{variant:"error",anchorOrigin:{vertical:"top",horizontal:"center"}})}finally{this.isLoading=false}}deepMerge(t,i){const o=Object.assign({},t);for(const e in i){if(i[e]&&typeof i[e]==="object"&&!Array.isArray(i[e])){o[e]=this.deepMerge(t[e]||{},i[e])}else{o[e]=i[e]}}return o}validateQuestionItem(t,i){const o=this.formSections[t].formQuestions[i];if(!o.questionText){return false}if(o.isContainsOptionItems){const t=o.fieldProperties;if(!(t===null||t===void 0?void 0:t.lookupId)){if(!Array.isArray(t===null||t===void 0?void 0:t.items)||t.items.length===0){return false}const i=t.items.some((t=>!t.display||!t.value));if(i){return false}}}return true}validateForm(){return this.validateFormMetadata()&&this.validateAllQuestions()}validateFormMetadata(){if(!this.formMetadata.title||!this.formMetadata.description){return false}return true}validateAllQuestions(){for(let t=0;t<this.formSections.length;t++){const i=this.formSections[t];for(let o=0;o<i.length;o++){if(!this.validateQuestionItem(t,o)){return false}}}return true}render(){console.log("[UDP Forms Builder] render called. isStyleSheetOpen:",this.isStyleSheetOpen);if(this.isError){return i("div",null," Error With the Form Builder")}const t=this.isNewForm||this.isMostRecentFormVersion;return i("div",null,i("primary-action-header",{title:"UDP Form Builder",actionButtonLabel:t?this.isMostRecentFormVersion?`Create New Version (v.${this.version+1})`:"Create New Form":"",primaryActionClick:t?()=>this.submitForm():null,defaultActionButtons:t?[{label:"Style Overrides",clickHandler:this.toggleStyleSheet,tooltip:"Style Overrides",visible:false,icon:r("settings")}]:[],tabs:false}),i("udp-side-sheet",{open:this.isStyleSheetOpen,onUdpSideSheetClose:()=>this.isStyleSheetOpen=false,title:"Style Overrides",position:"right",width:"md"},i("udp-forms-builder-style-override",{formMetadata:this.formMetadata,onFormMetadataChange:t=>this.formMetadata=t})),i("udp-side-sheet",{open:this.isQuestionEditorOpen,onUdpSideSheetClose:()=>this.closeQuestionEditor(),onUdpPrimaryButtonClick:()=>{if(!this.hasUnsavedFormSectionsChanges()){return}this.updateFormSectionsWithDraft();this.closeQuestionEditor()},primaryButtonDisabled:!this.hasUnsavedFormSectionsChanges(),title:"Edit Question",position:"right",width:"md",primaryButtonLabel:"Update"},this.isQuestionEditorOpen&&i("div",{class:"question-editor-container"},i("question-configs-renderer",{formSectionsDraft:this.formSectionsDraft,sIndex:this.editingQuestion.sIndex,qIndex:this.editingQuestion.qIndex,isViewOnly:!t,onFormSectionsDraftChange:t=>this.formSectionsDraft=t,lookupOptions:this.lookupOptionsDataProcessed}))),i("udp-side-sheet",{open:this.isSectionEditorOpen,onUdpSideSheetClose:()=>this.closeSectionEditor(),title:"Edit Section Fields",position:"right",width:"md",primaryButtonDisabled:!this.hasUnsavedFormSectionsChanges(),primaryButtonLabel:"Update",onUdpPrimaryButtonClick:()=>{if(!this.hasUnsavedFormSectionsChanges()){return}this.updateFormSectionsWithDraft();this.closeSectionEditor()}},this.isSectionEditorOpen&&i("div",{class:"section-editor-container"},i("section-configs-renderer",{formSectionsDraft:this.formSectionsDraft,sIndex:this.editingSection.sIndex,isViewOnly:!t,onFormSectionsDraftChange:t=>this.formSectionsDraft=t}))),i("fluent-dialog",{open:this.isDialogOpen,message:this.dialogMessage,labelOne:"Cancel",labelTwo:"Confirm",actionOne:()=>this.isDialogOpen=false,actionTwo:()=>this.dialogActionTwo()}),this.isLoading&&i("udp-linear-loader",null),!this.isLoading&&i("udp-container",{maxWidth:"lg"},i("div",{class:"udp-forms-page"},i("div",{class:"form-details-container"},i("div",{class:"form-details-name-container"},t?i("div",{class:"form-details-name-input"},i("text-field",{label:"Form Title",value:this.formMetadata.name,placeholder:" Form Title",disabled:!t,required:true,margin:"none",onInput:t=>{this.formMetadata=Object.assign(Object.assign({},this.formMetadata),{name:t.target.value})}})):i("div",{class:"form-details-name-display"},i("unity-typography",{variant:"h2"},this.formMetadata.name+" (View Only)"))),i("div",{class:"form-details-description-container"},t?i("div",{class:"form-details-details-input"},i("text-area",{label:"Form Description",value:this.formMetadata.description,placeholder:"Form Description",disabled:!t,required:true,margin:"none",onInput:t=>{this.formMetadata=Object.assign(Object.assign({},this.formMetadata),{description:t.target.value})}})):i("div",{class:"form-details-description-display"},i("unity-typography",null,this.formMetadata.description))),i("div",{class:"form-details-version-container"},i("unity-typography",null,"Version: ",this.formMetadata.version)),i("div",{class:"form-details-private-container"},i("div",{class:"toggle-container"},i("stencil-toggle",{label:"Private Form",margin:"none",disabled:!t,checked:this.formMetadata.isPrivate===true,labelPosition:"right",onToggledChange:()=>{let t=!this.formMetadata.isPrivate;this.formMetadata=Object.assign(Object.assign({},this.formMetadata),{isPrivate:t})}})))),t&&i("div",{class:"add-question-button-container"},i("udp-button",{startIcon:i("udp-icon",{iconName:"add",color:"inherit"}),onClick:()=>{const t=this.formSections.length;const i=n(this.formSections);i.push(Object.assign(Object.assign({},m),{order:t+1,title:`Section ${t+1}`}));this.formSections=i}},"Add a Section")),this.formSections.map(((o,e)=>{var a,c;return i("div",{key:e,class:"form-section"},i("div",{class:"form-section-header"},i("div",{class:"form-section-header-title"},i("unity-typography",{variant:"h6",color:"inherit"},o.title)),t&&i("div",{class:"form-section-header-actions"},e>0&&i("stencil-icon-button",{icon:r("arrowUp"),tooltip:"Move Section Up",onClick:()=>{this.handleSectionMoveUp(e)}}),e<this.formSections.length-1&&i("stencil-icon-button",{icon:r("arrowDown"),tooltip:"Move Section Down",onClick:()=>{this.handleSectionMoveDown(e)}}),i("stencil-icon-button",{icon:r("edit"),tooltip:`Edit Section Fields`,onClick:()=>this.handleSectionEditClick(e)}),i("stencil-icon-button",{icon:r("trashCan"),tooltip:"Delete Section",onClick:t=>{t.stopPropagation();this.dialogMessage="Are you sure you want to delete this section?";this.dialogActionTwo=()=>{this.handleSectionDelete(e);this.isDialogOpen=false};this.isDialogOpen=true}}))),i("div",{class:"form-section-questions-container"},(this.isNewForm||this.isMostRecentFormVersion)&&this.showMenuAtIndex&&this.showMenuAtIndex.sIndex===e&&this.showMenuAtIndex.qIndex===0&&i("udp-forms-builder-menu",{isVisible:true,questionsTemplate:s,onAddSection:()=>{const t=this.formSections.length;const i=n(this.formSections);i.push(Object.assign(Object.assign({},m),{order:t,title:`Section ${t+1}`}));this.formSections=i;this.showMenuAtIndex={sIndex:t,qIndex:0}},onAddQuestion:t=>{const i=this.showMenuAtIndex?this.addQuestionOfType(t.detail,this.showMenuAtIndex.sIndex,this.showMenuAtIndex.qIndex):this.addQuestionOfType(t.detail);this.editingQuestion=Object.assign({},i);this.isQuestionEditorOpen=true},onCancelClick:()=>this.showMenuAtIndex=null}),i("div",{class:"form-section-questions-draggable-container",id:`section-${e}`},o.formQuestions.map(((o,s)=>i("udp-forms-builder-question-item",{key:o.id,iconName:o.icon,primaryText:`${o.questionText}`,secondaryText:o.helperText?o.helperText:null,avatarBackgroundColor:this.validateQuestionItem(e,s)?"info":"warning"},i("stencil-chip",{slot:"status-chip",text:"Required",showDelete:false,clickable:false,hidden:!o.required}),t&&i("div",{slot:"drag-and-drop"},i("div",{class:"form-question-drag-handle"},i("div",{class:"drag-wrapper"},i("stencil-icon-button",{icon:r("draggable"),tooltip:"Move Question",noBackground:true})))),i("div",{slot:"actions"},t?i("fragment",null,i("stencil-icon-button",{icon:r("edit"),tooltip:"Edit Question Details",onClick:t=>{t.stopPropagation();this.handleQuestionClick(e,s)},noBackground:true}),i("stencil-icon-button",{icon:r("copy"),tooltip:"Duplicate Question",onClick:t=>{t.stopPropagation();this.handleQuestionCopy(e,s)},noBackground:true}),i("stencil-icon-button",{icon:r("trashCan"),tooltip:"Delete Question",onClick:t=>{t.stopPropagation();this.dialogMessage="Are you sure you want to delete this question?";this.dialogActionTwo=()=>{this.handleQuestionDelete(e,s);this.isDialogOpen=false};this.isDialogOpen=true},noBackground:true})):i("stencil-icon-button",{icon:r("view"),tooltip:"View Question Details",onClick:t=>{t.stopPropagation();this.handleQuestionClick(e,s)},noBackground:true})))))),t&&!this.showMenuAtIndex&&i("div",{class:"add-question-to-section-button-container"},i("udp-button",{variant:"text",onClick:()=>{this.showMenuAtIndex={sIndex:e,qIndex:o.formQuestions.length}},startIcon:i("udp-icon",{iconName:"add",color:"inherit"})},"Add a Question")),t&&((a=this.showMenuAtIndex)===null||a===void 0?void 0:a.sIndex)===e&&((c=this.showMenuAtIndex)===null||c===void 0?void 0:c.qIndex)===o.formQuestions.length&&o.formQuestions.length>0&&i("udp-forms-builder-menu",{isVisible:true,questionsTemplate:s,onAddSection:()=>{const t=n(this.formSections);t.splice(e+1,0,[]);this.formSections=t;this.showMenuAtIndex=null},onAddQuestion:t=>{if(this.showMenuAtIndex){const i=this.addQuestionOfType(t.detail,this.showMenuAtIndex.sIndex,this.showMenuAtIndex.qIndex);this.editingQuestion=Object.assign({},i);this.isQuestionEditorOpen=true}},onCancelClick:()=>this.showMenuAtIndex=null})))})))))}get hostEl(){return o(this)}static get watchers(){return{formSections:["onFormSectionsChange"],formMetadata:["onFormMetadataChange"],formId:["onFormIdOrVersionChange"],version:["onFormIdOrVersionChange"]}}};f.style=h;export{f as udp_forms_builder};
|
|
2
|
-
//# sourceMappingURL=p-b1d412a7.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["udpFormsBuilderCss","emptyStyleOverrides","background","backgroundImage","backgroundColor","headerBackgroundColor","fontFamily","helperText","variant","questionText","titleText","paragraphText","formSectionDefault","title","sectionText","sectionProperties","formQuestions","UdpFormsBuilder","constructor","hostRef","this","formMetadata","formSections","formSectionsDraft","isNewForm","isMostRecentFormVersion","isError","isLoading","isShowStyleOverrides","isStyleSheetOpen","isDialogOpen","showMenuAtIndex","editingQuestion","editingSection","isQuestionEditorOpen","isSectionEditorOpen","dialogMessage","pageBuilderId","sortableInstances","needsSortableInit","getQuestionTypeName","fieldTypeId","question","questionsTemplate","find","q","questionTypeName","getIsContainsOptionItems","isContainsOptionItems","getIconForQuestion","icon","handleQuestionDelete","sIndex","qIndex","sectionsCopy","deepCloneFormSections","splice","handleQuestionCopy","targetQuestion","newQuestion","Object","assign","id","uuidv4","handleQuestionClick","closeQuestionEditor","updateFormSectionsWithDraft","hasUnsavedFormSectionsChanges","JSON","stringify","handleSectionEditClick","closeSectionEditor","addQuestionOfType","defaultQuestionObj","fieldProperties","defaultFieldProperties","section","undefined","length","required","form","isPrivate","newFormSections","actualSIndex","actualQIndex","lastSectionIdx","push","toggleStyleSheet","handleSectionMoveDown","handleSectionMoveUp","handleSectionDelete","initializeSortable","forEach","instance","destroy","_","el","hostEl","shadowRoot","querySelector","sortable","Sortable","animation","easing","draggable","handle","ghostClass","chosenClass","direction","forceFallback","dragoverBubble","swapThreshold","onEnd","evt","handleDragEnd","oldIndex","newIndex","sectionCopy","structuredClone","moved","console","log","componentDidLoad","componentDidUpdate","componentWillLoad","initializeForm","onFormSectionsChange","newValue","onFormMetadataChange","onFormIdOrVersionChange","tenantId","getCurrentTenantId","type","version","name","description","styleOverrides","lookupResponse","makeApiCall","ConfigService","productV1ApiUrl","Error","lookupOptionsDataProcessed","map","lookupObj","value","label","formId","formDataResponse","formLatestVersionResponse","tempSections","udpFormUdpFormSection","s","formSectionId","fieldProps","items","sort","a","b","questionOrder","metadata","__rest","deepMerge","parse","e","enqueueSnackbar","anchorOrigin","vertical","horizontal","submitForm","validateForm","processedFormMetadata","formUrl","formResponse","formVersion","sectionOrder","questionRequests","entries","processedSectionData","order","sectionResponse","sectionId","processedQuestionData","questionRequest","Promise","all","history","error","target","source","output","key","Array","isArray","validateQuestionItem","questionItem","lookupId","invalidItemExists","some","item","display","validateFormMetadata","validateAllQuestions","formSection","render","h","isEditable","actionButtonLabel","primaryActionClick","defaultActionButtons","clickHandler","tooltip","visible","getIconFromName","tabs","open","onUdpSideSheetClose","position","width","updated","onUdpPrimaryButtonClick","primaryButtonDisabled","primaryButtonLabel","class","isViewOnly","onFormSectionsDraftChange","lookupOptions","message","labelOne","labelTwo","actionOne","actionTwo","dialogActionTwo","maxWidth","placeholder","disabled","margin","onInput","checked","labelPosition","onToggledChange","newIsPrivate","startIcon","iconName","color","onClick","newSectionIndex","stopPropagation","isVisible","onAddSection","onAddQuestion","indices","detail","onCancelClick","primaryText","secondaryText","avatarBackgroundColor","slot","text","showDelete","clickable","hidden","noBackground","_a","_b"],"sources":["src/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.css?tag=udp-forms-builder&encapsulation=shadow","src/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.tsx"],"sourcesContent":[":host {\n display: block;\n --udp-form-primary-color: #007bff; /* Example primary color */\n --udp-form-spacing-unit: 16px;\n\n}\n\n/* ################### FORM PAGE ################### */\n.udp-forms-page {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-06, 32px);\n /* background-color: white; */\n padding: var(--spacing-06, 32px);\n padding-bottom: var(--spacing-12);\n}\n\n\n.form-section-questions-container {\n display: flex;\n flex-direction: column;\n}\n\n\n/* ################### FORM METADATA ################### */\n\n\n.form-details-container {\n display: flex;\n flex-direction: column;\n /* align-items: flex-start; */\n /* margin: 0 2rem; */\n /* gap: var(--spacing-05, 24px); */\n padding: var(--spacing-05, 24px);\n background-color: var(--card-background-color, white);\n}\n\n.form-details-version-container {\n margin-bottom: var(--spacing-05)\n}\n\n.udp-form-builder-field-container,\n.udp-forms-builder-item-generic-configs,\n.udp-forms-builder-item-specific-configs {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-04, 16px);\n}\n\n/* ################### SECTIONS ################### */\n.form-section {\n /* background-color: var(--primary-color-alpha-15); */\n /* border: 2px solid var(--primary-color-alpha-50); */\n /* border-radius: 8px; */\n /* padding: var(--spacing-04); */\n}\n\n\n.form-section-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n background-color: var(--primary-color-dark, #000);\n color: var(--primary-contrast-text, #FFF);\n padding: var(--spacing-04, 16px) var(--spacing-05, 24px);\n /* margin-bottom: var(--spacing-04); */\n align-items: center;\n}\n\n.add-question-button-container {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.question-editor-container {\n padding: var(--spacing-05, 24px);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-05, 24px);\n}\n\n.add-question-to-section-button-container {\n padding: var(--spacing-02, 8px) 0;\n margin: auto;\n}\n\n.sortable-ghost {\n opacity: 0.5;\n transform: scale(0.98);\n background: #f4f4f4;\n border: 1px dashed #ccc;\n}\n\n.sortable-chosen {\n background: #eef6ff;\n box-shadow: 0 0 4px 2px rgba(51, 153, 255, 0.3);\n}\n\n.form-question-drag-handle {\n transform: rotate(90deg);\n cursor: grab;\n}\n\n.form-question-drag-handle:active {\n cursor: grabbing;\n}\n\n.form-question-drag-handle .drag-wrapper {\n cursor: inherit;\n}\n\n.form-question-drag-handle stencil-icon-button {\n pointer-events: none; /* disables click so cursor applies from parent */\n}\n\n\n","import { Component, h, State, Prop, Watch } from '@stencil/core';\nimport { Guid } from '../types';\nimport { makeApiCall } from '../../../../../../udp-utilities/api/makeApiCall/makeApiCall';\nimport questionsTemplate from './udp-forms-builder-question-template';\nimport { getIconFromName } from '../../../data-display/icons/iconUtils';\nimport { ConfigService } from '../../../../../../udp-utilities/api-config';\nimport { getCurrentTenantId } from 'src/udp-utilities/tenant/tenantUtils';\nimport { deepCloneFormSections } from './forms-builder-utils';\nimport Sortable from 'sortablejs';\nimport { Element } from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid'; \n\n\nconst emptyStyleOverrides = {\n background: {\n backgroundImage: '',\n backgroundColor: '',\n },\n headerBackgroundColor: '',\n fontFamily: '',\n helperText: {\n variant: '',\n fontFamily: '',\n },\n questionText: {\n variant: '',\n fontFamily: '',\n },\n titleText: {\n variant: '',\n fontFamily: '',\n },\n paragraphText: {\n variant: '',\n fontFamily: '',\n },\n};\n\nconst formSectionDefault = {\n title: '',\n sectionText: '',\n sectionProperties: '',\n formQuestions: [],\n};\n\n@Component({\n tag: 'udp-forms-builder',\n styleUrl: 'udp-forms-builder.css',\n shadow: true,\n})\nexport class UdpFormsBuilder {\n @Element() private hostEl: HTMLElement;\n\n @Prop() formId: Guid;\n @Prop() version: number;\n @Prop() enqueueSnackbar: any;\n @Prop() closeSnackbar: any;\n @Prop() history: any;\n\n @State() formMetadata: any = {};\n @State() formSections: any[] = [];\n @State() formSectionsDraft: any[] = [];\n @State() isNewForm: boolean = true;\n @State() isMostRecentFormVersion: boolean = false;\n\n @State() isError: boolean = false;\n @State() isLoading: boolean = false;\n\n @State() isShowStyleOverrides: boolean = false;\n @State() isStyleSheetOpen: boolean = false;\n @State() isDialogOpen: boolean = false;\n @State() showMenuAtIndex: { sIndex: number; qIndex: number } | null = null;\n @State() editingQuestion: { sIndex: number; qIndex: number } | null = null;\n @State() editingSection: { sIndex: number } | null = null;\n @State() isQuestionEditorOpen: boolean = false;\n @State() isSectionEditorOpen: boolean = false;\n @State() lookupOptionsDataProcessed: [];\n\n @State() dialogActionTwo: () => void;\n @State() dialogMessage: string = 'Are you sure you want to delete this?';\n\n pageBuilderId = 'c77aa2c8-f8b8-41af-aa77-c8612fc918c1';\n\n // ********************************** API CALLS **********************************\n\n // ********************************** STENCIL RELATED **********************************\n \n // ********************************** SORTABLE LOGIC **********************************\n \n // ********************************** SIDE SHEET LOGIC **********************************\n \n // ********************************** QUESTION HANDLERS **********************************\n \n // ********************************** SECTION HANDLERS **********************************\n \n // ********************************** FORM VALIDATION HELPERS **********************************\n \n \n private sortableInstances: Sortable[] = [];\n @State() needsSortableInit: boolean = true;\n\n\n private initializeSortable() {\n // sortable only if the form is editable\n if (!(this.isNewForm || this.isMostRecentFormVersion)) {\n return;\n }\n\n this.sortableInstances.forEach(instance => instance.destroy());\n this.sortableInstances = [];\n\n this.formSections.forEach((_, sIndex) => {\n const el = this.hostEl.shadowRoot.querySelector(`#section-${sIndex}`);\n if (el) {\n const sortable = new Sortable(el, {\n animation: 200, \n easing: 'cubic-bezier(0.25, 1, 0.5, 1)', \n draggable: 'udp-forms-builder-question-item',\n handle: '.form-question-drag-handle',\n ghostClass: 'sortable-ghost', \n chosenClass: 'sortable-chosen', \n direction: 'vertical',\n forceFallback: false,\n dragoverBubble: false,\n swapThreshold: 0.6,\n onEnd: evt => this.handleDragEnd(evt, sIndex),\n });\n this.sortableInstances.push(sortable);\n }\n });\n }\n \n private handleDragEnd(evt: Sortable.SortableEvent, sIndex: number) {\n const oldIndex = evt.oldIndex;\n const newIndex = evt.newIndex;\n if (oldIndex === newIndex || oldIndex == null || newIndex == null) return;\n\n const sectionCopy = structuredClone(this.formSections[sIndex]);\n const [moved] = sectionCopy.formQuestions.splice(oldIndex, 1);\n sectionCopy.formQuestions.splice(newIndex, 0, moved);\n\n // const newFormSections = [...this.formSections];\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections[sIndex] = sectionCopy;\n\n \n \n console.log(`Moved question in section ${sIndex} from ${oldIndex} to ${newIndex}`);\n this.formSections = newFormSections;\n }\n\n componentDidLoad() {\n this.initializeSortable();\n }\n\n componentDidUpdate() {\n this.initializeSortable();\n }\n\n componentWillLoad() {\n this.initializeForm();\n }\n\n @Watch('formSections')\n onFormSectionsChange(newValue: any[]) {\n console.log(newValue);\n }\n\n @Watch('formMetadata')\n onFormMetadataChange(newValue) {\n console.log(newValue);\n }\n\n @Watch('formId')\n @Watch('version')\n onFormIdOrVersionChange() {\n this.initializeForm();\n }\n\n getQuestionTypeName = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.questionTypeName : 'Unknown';\n };\n\n getIsContainsOptionItems = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.isContainsOptionItems || false : false;\n };\n\n getIconForQuestion = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.icon : null;\n };\n\n async initializeForm() {\n // set default form values\n this.formMetadata.isPrivate = true;\n this.formMetadata.tenantId = getCurrentTenantId();\n this.formMetadata.type = 1;\n this.formMetadata.version = 1;\n this.formMetadata.name = 'Form Name';\n this.formMetadata.description = 'Form Description';\n this.formMetadata.styleOverrides = emptyStyleOverrides;\n\n try {\n this.isLoading = true;\n\n // get lookup options\n const lookupResponse = await makeApiCall('GET', ConfigService.productV1ApiUrl + '/UdpLookup');\n\n if (!lookupResponse) {\n throw new Error(`Error fetching lookup data`);\n }\n\n this.lookupOptionsDataProcessed = lookupResponse.map(lookupObj => {\n return { ...lookupObj, value: lookupObj.id, label: lookupObj.name };\n });\n\n // determine if it's to create a new form, view an old form, or create a new version\n if (this.formId && this.version) {\n const formDataResponse = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/${this.version}/describe`);\n const formLatestVersionResponse = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/describe`);\n\n this.isNewForm = false;\n\n if (!formDataResponse || !formLatestVersionResponse || !formDataResponse.id || !formLatestVersionResponse) {\n throw new Error(`Error fetching form data`);\n }\n\n // view only mode\n if (formDataResponse.id == formLatestVersionResponse.id && formDataResponse.version == formLatestVersionResponse.version) {\n this.isMostRecentFormVersion = true;\n }\n\n // Clone formSections and initialize empty question arrays\n const tempSections = structuredClone(formDataResponse.udpFormUdpFormSection).map(section => ({ ...section, formQuestions: [] }));\n\n // Map questions into their respective sections\n formDataResponse.formQuestions.forEach(question => {\n const section = tempSections.find(s => s.id === question.formSectionId);\n if (section) {\n const fieldProps = { ...question.fieldProperties };\n\n // Remove items if lookupId exists\n if ('lookupId' in fieldProps && 'items' in fieldProps) {\n delete fieldProps.items;\n }\n\n section.formQuestions.push({\n ...question,\n fieldProperties: fieldProps,\n questionTypeName: this.getQuestionTypeName(question.fieldTypeId),\n isContainsOptionItems: this.getIsContainsOptionItems(question.fieldTypeId),\n icon: this.getIconForQuestion(question.fieldTypeId),\n });\n }\n });\n\n // Sort questions within each section\n tempSections.forEach(section => {\n section.formQuestions.sort((a, b) => a.questionOrder - b.questionOrder);\n });\n\n const { ...metadata } = formDataResponse;\n\n // Merge fetched styleOverrides with defaults\n metadata.styleOverrides = this.deepMerge(emptyStyleOverrides, JSON.parse(metadata.styleOverrides) || {});\n\n // Set form metadata and sections\n this.formMetadata = metadata;\n this.formSections = tempSections;\n this.isLoading = false;\n }\n } catch (e) {\n this.isError = true;\n\n this.enqueueSnackbar('Error loading form data', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n } finally {\n this.isLoading = false;\n }\n }\n\n // ********************************** HELPERS **********************************\n async submitForm() {\n this.isLoading = true;\n\n try {\n if (!this.validateForm()) {\n // return;\n }\n\n // Prepare and send form metadata\n const processedFormMetadata = {\n name: this.formMetadata.name,\n description: this.formMetadata.description,\n tenantId: this.formMetadata.tenantId,\n isPrivate: this.formMetadata.isPrivate,\n type: this.formMetadata.type,\n styleOverrides: JSON.stringify(this.formMetadata.styleOverrides),\n id: this.formMetadata.id,\n version: this.formMetadata.version\n };\n\n console.log('Submitting form metadata:', processedFormMetadata);\n\n const formUrl = `${ConfigService.productV1ApiUrl}/UdpForm${this.isMostRecentFormVersion ? '/versions' : ''}`;\n const formResponse = await makeApiCall('POST', formUrl, processedFormMetadata);\n console.log('Form response:', formResponse);\n\n const formId = formResponse.id;\n const formVersion = formResponse.version;\n\n if (!formResponse || !formResponse.id || !formResponse.version) {\n throw new Error(`Invalid form response: ${JSON.stringify(formResponse)}`);\n }\n\n // Prepare and send questions in order\n let sectionOrder = 0;\n let questionOrder = 0;\n const questionRequests: Promise<any>[] = [];\n\n for (const [sIndex, section] of this.formSections.entries()) {\n sectionOrder += 1;\n\n const processedSectionData = {\n ...section,\n formId,\n formVersion,\n order: sectionOrder,\n };\n\n console.log('Submitting section:', processedSectionData);\n\n const sectionResponse = await makeApiCall('POST', `${ConfigService.productV1ApiUrl}/UdpFormSection`, processedSectionData);\n\n if (!sectionResponse || !sectionResponse.id) {\n throw new Error(`Invalid section response: ${JSON.stringify(sectionResponse)}`);\n }\n\n const sectionId = sectionResponse.id;\n\n for (const question of section.formQuestions) {\n questionOrder += 1;\n\n const processedQuestionData = {\n ...question,\n formId,\n formVersion,\n section: sIndex + 1,\n questionOrder,\n formSectionId: sectionId,\n name: `question${questionOrder}`,\n };\n\n console.log('Submitting question:', processedQuestionData);\n\n const questionRequest = makeApiCall('POST', `${ConfigService.productV1ApiUrl}/UdpFormQuestion`, processedQuestionData);\n\n questionRequests.push(questionRequest);\n }\n }\n\n // Wait for all questions to be submitted\n await Promise.all(questionRequests);\n\n this.enqueueSnackbar('Success', {\n variant: 'success',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n\n this.history.push(`/page/${this.pageBuilderId}?udpf_formId=${formId}&udpf_version=${formVersion}`);\n } catch (error) {\n console.error('Form submission error:', error);\n this.enqueueSnackbar('Error saving form', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n } finally {\n this.isLoading = false;\n }\n }\n\n private handleQuestionDelete = (sIndex: number, qIndex: number) => {\n const sectionsCopy = deepCloneFormSections(this.formSections);\n sectionsCopy[sIndex].formQuestions.splice(qIndex, 1);\n this.formSections = sectionsCopy;\n };\n\nprivate handleQuestionCopy = (sIndex: number, qIndex: number) => {\n const sectionsCopy = deepCloneFormSections(this.formSections);\n const targetQuestion = this.formSections[sIndex].formQuestions[qIndex];\n\n const newQuestion = {\n ...targetQuestion,\n questionText: (targetQuestion.questionText || '') + ' (Copy)',\n id: uuidv4()\n };\n\n sectionsCopy[sIndex].formQuestions.splice(qIndex + 1, 0, newQuestion);\n this.formSections = sectionsCopy;\n};\n\n private handleQuestionClick = (sIndex: number, qIndex: number) => {\n this.editingQuestion = { sIndex, qIndex };\n this.isQuestionEditorOpen = true;\n this.formSectionsDraft = deepCloneFormSections(this.formSections);\n };\n\n private closeQuestionEditor = () => {\n this.isQuestionEditorOpen = false;\n this.editingQuestion = null;\n this.formSectionsDraft = null;\n };\n\n private updateFormSectionsWithDraft = () => {\n this.formSections = this.formSectionsDraft;\n this.formSectionsDraft = null;\n };\n\n private hasUnsavedFormSectionsChanges = (): boolean => {\n // return !isEqual(this.formSections, this.formSectionsDraft); // NEED TO INSTALL PACKAGE\n return JSON.stringify(this.formSections) !== JSON.stringify(this.formSectionsDraft); // Breaks on circular refs or non-serializable types (like Dates, Maps, etc.)\n };\n\n private handleSectionEditClick = (sIndex: number) => {\n this.editingSection = { sIndex };\n this.isSectionEditorOpen = true;\n this.formSectionsDraft = deepCloneFormSections(this.formSections);\n };\n\n private closeSectionEditor = () => {\n this.isSectionEditorOpen = false;\n this.editingSection = null;\n this.formSectionsDraft = null;\n };\n\n private addQuestionOfType = (defaultQuestionObj, sIndex?: number, qIndex?: number): { sIndex: number; qIndex: number } => {\n const newQuestion = {\n questionTypeName: defaultQuestionObj.questionTypeName,\n fieldTypeId: defaultQuestionObj.fieldTypeId,\n fieldProperties: defaultQuestionObj.defaultFieldProperties,\n helperText: '',\n questionText: '',\n section: sIndex !== undefined ? sIndex + 1 : this.formSections.length > 0 ? this.formSections[this.formSections.length - 1].formQuestions[0].section : 1, // Assign section based on sIndex or last section\n isContainsOptionItems: defaultQuestionObj.isContainsOptionItems,\n icon: defaultQuestionObj.icon,\n required: true,\n form: null,\n isPrivate: true,\n id: uuidv4()\n };\n\n const newFormSections = deepCloneFormSections(this.formSections); // Use helper to get a deep copy\n\n let actualSIndex = sIndex;\n let actualQIndex = qIndex;\n\n if (sIndex !== undefined && qIndex !== undefined) {\n // Insert at specific index\n if (newFormSections[sIndex].formQuestions) {\n newFormSections[sIndex].formQuestions.splice(qIndex, 0, newQuestion);\n } else {\n // fallback\n const lastSectionIdx = newFormSections.length - 1;\n newFormSections[lastSectionIdx].formQuestions.push(newQuestion);\n actualSIndex = lastSectionIdx;\n actualQIndex = newFormSections[lastSectionIdx].formQuestions.length - 1;\n }\n } else {\n // Append to the last section or create a new one\n const lastSectionIdx = newFormSections.length - 1;\n if (lastSectionIdx < 0 || newFormSections[lastSectionIdx].formQuestions.length === 0) {\n newFormSections.push({ ...formSectionDefault, formQuestions: [newQuestion] });\n actualSIndex = newFormSections.length - 1;\n actualQIndex = 0;\n } else {\n newFormSections[lastSectionIdx].formQuestions.push(newQuestion);\n actualSIndex = lastSectionIdx;\n actualQIndex = newFormSections[lastSectionIdx].formQuestions.length - 1;\n }\n }\n\n // this.formSections = newFormSections;\n this.formSectionsDraft = newFormSections;\n if (this.showMenuAtIndex) this.showMenuAtIndex = null;\n\n return { sIndex: actualSIndex, qIndex: actualQIndex };\n };\n\n private deepMerge(target: any, source: any): any {\n const output = { ...target };\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n output[key] = this.deepMerge(target[key] || {}, source[key]);\n } else {\n output[key] = source[key];\n }\n }\n return output;\n }\n\n private validateQuestionItem(sIndex: number, qIndex: number): boolean {\n const questionItem = this.formSections[sIndex].formQuestions[qIndex];\n\n if (!questionItem.questionText) {\n return false;\n }\n\n if (questionItem.isContainsOptionItems) {\n const fieldProps = questionItem.fieldProperties;\n\n // If there's a lookupId, assume it's valid and skip item validation\n if (!fieldProps?.lookupId) {\n // If no items or empty, invalid\n if (!Array.isArray(fieldProps?.items) || fieldProps.items.length === 0) {\n return false;\n }\n\n // Check that each item has both display and value\n const invalidItemExists = fieldProps.items.some(item => !item.display || !item.value);\n\n if (invalidItemExists) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n private validateForm(): boolean {\n return this.validateFormMetadata() && this.validateAllQuestions();\n }\n\n private validateFormMetadata(): boolean {\n if (!this.formMetadata.title || !this.formMetadata.description) {\n return false;\n }\n\n return true;\n }\n\n private validateAllQuestions(): boolean {\n for (let sIndex = 0; sIndex < this.formSections.length; sIndex++) {\n const formSection = this.formSections[sIndex];\n for (let qIndex = 0; qIndex < formSection.length; qIndex++) {\n if (!this.validateQuestionItem(sIndex, qIndex)) {\n return false;\n }\n }\n }\n return true;\n }\n\n private toggleStyleSheet = () => {\n this.isStyleSheetOpen = !this.isStyleSheetOpen;\n };\n private handleSectionMoveDown = (sIndex: number) => {\n if (sIndex >= this.formSections.length - 1) return;\n\n const sectionsCopy = [...this.formSections];\n [sectionsCopy[sIndex], sectionsCopy[sIndex + 1]] = [sectionsCopy[sIndex + 1], sectionsCopy[sIndex]];\n this.needsSortableInit = true\n this.formSections = sectionsCopy;\n };\n\n private handleSectionMoveUp = (sIndex: number) => {\n if (sIndex <= 0) return;\n\n const sectionsCopy = [...this.formSections];\n [sectionsCopy[sIndex], sectionsCopy[sIndex - 1]] = [sectionsCopy[sIndex - 1], sectionsCopy[sIndex]];\n this.needsSortableInit = true\n this.formSections = sectionsCopy;\n \n };\n\n private handleSectionDelete = (sIndex: number) => {\n const newFormSections = [...this.formSections];\n newFormSections.splice(sIndex, 1);\n this.needsSortableInit = true\n this.formSections = newFormSections;\n };\n\n // private handleSectionAdd = (sIndex: number) => {\n // return\n // }\n\n\n render() {\n console.log('[UDP Forms Builder] render called. isStyleSheetOpen:', this.isStyleSheetOpen);\n if (this.isError) {\n return <div> Error With the Form Builder</div>;\n }\n\n const isEditable = this.isNewForm || this.isMostRecentFormVersion;\n // const editingQuestionData =\n // this.editingQuestion && this.formSections[this.editingQuestion.sIndex].formQuestions\n // ? this.formSections[this.editingQuestion.sIndex].formQuestions[this.editingQuestion.qIndex]\n // : null;\n // console.log(this.editingSection);\n // const editingSectionData = this.editingSection && this.formSections[this.editingSection.sIndex] ? this.formSections[this.editingSection.sIndex] : null;\n\n return (\n <div>\n {/* FIXME: Review this */}\n <primary-action-header\n title={'UDP Form Builder'}\n actionButtonLabel={isEditable ? (this.isMostRecentFormVersion ? `Create New Version (v.${this.version + 1})` : 'Create New Form') : ''}\n primaryActionClick={isEditable ? () => this.submitForm() : null}\n // HIDE STYLE OVERRIDE IN UI\n defaultActionButtons={\n isEditable ? [{ label: 'Style Overrides', clickHandler: this.toggleStyleSheet, tooltip: 'Style Overrides', visible: false, icon: getIconFromName('settings') }] : []\n }\n tabs={false}\n />\n <udp-side-sheet open={this.isStyleSheetOpen} onUdpSideSheetClose={() => (this.isStyleSheetOpen = false)} title=\"Style Overrides\" position=\"right\" width=\"md\">\n <udp-forms-builder-style-override formMetadata={this.formMetadata} onFormMetadataChange={updated => (this.formMetadata = updated)}></udp-forms-builder-style-override>\n </udp-side-sheet>\n\n <udp-side-sheet\n open={this.isQuestionEditorOpen}\n onUdpSideSheetClose={() => this.closeQuestionEditor()}\n onUdpPrimaryButtonClick={() => {\n // dont do anything if no changes are made. without this, it'll close the sidesheet\n if (!this.hasUnsavedFormSectionsChanges()) {\n return;\n }\n this.updateFormSectionsWithDraft();\n this.closeQuestionEditor();\n }}\n primaryButtonDisabled={!this.hasUnsavedFormSectionsChanges()}\n title=\"Edit Question\"\n position=\"right\"\n width=\"md\"\n primaryButtonLabel=\"Update\"\n >\n {this.isQuestionEditorOpen && (\n <div class=\"question-editor-container\">\n <question-configs-renderer\n formSectionsDraft={this.formSectionsDraft}\n sIndex={this.editingQuestion.sIndex}\n qIndex={this.editingQuestion.qIndex}\n isViewOnly={!isEditable}\n onFormSectionsDraftChange={updated => (this.formSectionsDraft = updated)}\n lookupOptions={this.lookupOptionsDataProcessed}\n />\n </div>\n )}\n </udp-side-sheet>\n\n <udp-side-sheet\n open={this.isSectionEditorOpen}\n onUdpSideSheetClose={() => this.closeSectionEditor()}\n title=\"Edit Section Fields\"\n position=\"right\"\n width=\"md\"\n primaryButtonDisabled={!this.hasUnsavedFormSectionsChanges()}\n primaryButtonLabel=\"Update\"\n onUdpPrimaryButtonClick={() => {\n // dont do anything if no changes are made. without this, it'll close the sidesheet\n if (!this.hasUnsavedFormSectionsChanges()) {\n return;\n }\n this.updateFormSectionsWithDraft();\n this.closeSectionEditor();\n }}\n >\n {this.isSectionEditorOpen && (\n <div class=\"section-editor-container\">\n <section-configs-renderer\n // sectionData={editingSectionData}\n formSectionsDraft={this.formSectionsDraft}\n sIndex={this.editingSection.sIndex}\n isViewOnly={!isEditable}\n onFormSectionsDraftChange={updated => (this.formSectionsDraft = updated)}\n\n // onSectionFieldChange={e => this.handleSectionFieldChange(this.editingSection.sIndex, e.detail.field, e.detail.value)}\n ></section-configs-renderer>\n </div>\n )}\n </udp-side-sheet>\n <fluent-dialog\n open={this.isDialogOpen}\n // message={'Are you sure you want to delete this question?'}\n message={this.dialogMessage}\n labelOne={'Cancel'}\n labelTwo={'Confirm'}\n actionOne={() => (this.isDialogOpen = false)}\n actionTwo={() => this.dialogActionTwo()}\n ></fluent-dialog>\n\n {this.isLoading && <udp-linear-loader />}\n {!this.isLoading && (\n <udp-container maxWidth=\"lg\">\n <div class=\"udp-forms-page\">\n <div class=\"form-details-container\">\n <div class=\"form-details-name-container\">\n {isEditable ? (\n <div class=\"form-details-name-input\">\n <text-field\n label=\"Form Title\"\n value={this.formMetadata.name}\n placeholder=\" Form Title\"\n disabled={!isEditable}\n required={true}\n margin='none'\n // size='small'\n onInput={(e) => {\n this.formMetadata = {\n ...this.formMetadata,\n name: (e.target as HTMLInputElement).value,\n };\n }}\n ></text-field>\n </div>\n ) : (\n <div class=\"form-details-name-display\">\n <unity-typography variant={'h2'}>{this.formMetadata.name + ' (View Only)'}</unity-typography>\n </div>\n )}\n </div>\n\n <div class=\"form-details-description-container\">\n {isEditable ? (\n <div class=\"form-details-details-input\">\n <text-area\n label=\"Form Description\"\n value={this.formMetadata.description}\n placeholder=\"Form Description\"\n disabled={!isEditable}\n required={true}\n margin='none'\n // size='small'\n onInput={(e) => {\n this.formMetadata = {\n ...this.formMetadata,\n description: (e.target as HTMLInputElement).value,\n };\n }}\n ></text-area>\n </div>\n ) : (\n <div class=\"form-details-description-display\">\n <unity-typography>{this.formMetadata.description}</unity-typography>\n </div>\n )}\n </div>\n <div class=\"form-details-version-container\">\n <unity-typography>Version: {this.formMetadata.version}</unity-typography>\n </div>\n <div class=\"form-details-private-container\">\n <div class=\"toggle-container\">\n <stencil-toggle\n label=\"Private Form\"\n margin='none'\n disabled={!isEditable}\n checked={this.formMetadata.isPrivate === true}\n labelPosition=\"right\"\n onToggledChange={() => {\n let newIsPrivate = !this.formMetadata.isPrivate;\n this.formMetadata = {\n ...this.formMetadata,\n isPrivate: newIsPrivate,\n };\n }}\n ></stencil-toggle>\n </div>\n </div>\n </div>\n\n {/* {isEditable && this.formSections.length === 0 && ( */}\n {isEditable && (\n <div class=\"add-question-button-container\">\n <udp-button\n startIcon={<udp-icon iconName={'add'} color={'inherit'} />}\n onClick={() => {\n // this.formSections = [[]];\n // const newSectionIndex = this.formSections.length;\n // const newFormSections = deepCloneFormSections(this.formSections)\n // newFormSections.push()\n // this.formSections = [...this.formSections, []];\n // this.showMenuAtIndex = { sIndex: newSectionIndex, qIndex: 0 };\n\n const newSectionIndex = this.formSections.length;\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.push({ ...formSectionDefault, order: newSectionIndex + 1, title: `Section ${newSectionIndex + 1}` });\n this.formSections = newFormSections;\n }}\n >\n Add a Section\n </udp-button>\n </div>\n )}\n\n {this.formSections.map((section, sIndex) => {\n return (\n <div key={sIndex} class=\"form-section\">\n <div class=\"form-section-header\">\n <div class=\"form-section-header-title\">\n <unity-typography variant=\"h6\" color=\"inherit\">\n {section.title}\n </unity-typography>\n </div>\n\n {isEditable && (\n <div class=\"form-section-header-actions\">\n {sIndex > 0 && (\n <stencil-icon-button\n icon={getIconFromName('arrowUp')}\n tooltip=\"Move Section Up\"\n onClick={() => {\n this.handleSectionMoveUp(sIndex);\n }}\n />\n )}\n {sIndex < this.formSections.length - 1 && (\n <stencil-icon-button\n icon={getIconFromName('arrowDown')}\n tooltip=\"Move Section Down\"\n onClick={() => {\n this.handleSectionMoveDown(sIndex);\n }}\n />\n )}\n <stencil-icon-button\n icon={getIconFromName('edit')}\n tooltip={`Edit Section Fields`}\n onClick={() => this.handleSectionEditClick(sIndex)}\n />\n <stencil-icon-button\n icon={getIconFromName('trashCan')}\n tooltip=\"Delete Section\"\n onClick={(e) => {\n e.stopPropagation()\n this.dialogMessage = 'Are you sure you want to delete this section?'\n this.dialogActionTwo = () => {\n this.handleSectionDelete(sIndex);\n this.isDialogOpen = false;\n }\n\n this.isDialogOpen = true\n }}\n />\n </div>\n )}\n </div>\n\n <div class=\"form-section-questions-container\">\n {(this.isNewForm || this.isMostRecentFormVersion) && this.showMenuAtIndex && this.showMenuAtIndex.sIndex === sIndex && this.showMenuAtIndex.qIndex === 0 && (\n <udp-forms-builder-menu\n isVisible={true}\n questionsTemplate={questionsTemplate}\n onAddSection={() => {\n const newSectionIndex = this.formSections.length;\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.push({ ...formSectionDefault, order: newSectionIndex, title: `Section ${newSectionIndex + 1}` });\n this.formSections = newFormSections;\n this.showMenuAtIndex = { sIndex: newSectionIndex, qIndex: 0 };\n }}\n onAddQuestion={e => {\n const indices = this.showMenuAtIndex\n ? this.addQuestionOfType(e.detail, this.showMenuAtIndex.sIndex, this.showMenuAtIndex.qIndex)\n : this.addQuestionOfType(e.detail);\n\n this.editingQuestion = { ...indices };\n this.isQuestionEditorOpen = true;\n }}\n onCancelClick={() => (this.showMenuAtIndex = null)}\n />\n )}\n <div class=\"form-section-questions-draggable-container\" id={`section-${sIndex}`}>\n {section.formQuestions.map((questionItem, qIndex) => {\n return (\n <udp-forms-builder-question-item\n key={questionItem.id}\n iconName={questionItem.icon}\n primaryText={`${questionItem.questionText}`}\n secondaryText={questionItem.helperText ? questionItem.helperText : null}\n avatarBackgroundColor={this.validateQuestionItem(sIndex, qIndex) ? 'info' : 'warning'}\n >\n <stencil-chip slot=\"status-chip\" text=\"Required\" showDelete={false} clickable={false} hidden={!questionItem.required}/>\n {isEditable && (\n <div slot=\"drag-and-drop\">\n <div class=\"form-question-drag-handle\">\n <div class=\"drag-wrapper\">\n <stencil-icon-button icon={getIconFromName('draggable')} tooltip=\"Move Question\" noBackground={true} />\n </div>\n </div>\n </div>)}\n\n <div slot=\"actions\">\n {isEditable ? (\n <fragment>\n <stencil-icon-button\n icon={getIconFromName('edit')}\n tooltip=\"Edit Question Details\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionClick(sIndex, qIndex);\n }}\n noBackground={true}\n />\n <stencil-icon-button\n icon={getIconFromName('copy')}\n tooltip=\"Duplicate Question\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionCopy(sIndex, qIndex);\n }}\n noBackground={true}\n />\n <stencil-icon-button\n icon={getIconFromName('trashCan')}\n tooltip=\"Delete Question\"\n onClick={e => {\n e.stopPropagation();\n this.dialogMessage = 'Are you sure you want to delete this question?'\n this.dialogActionTwo = () => {\n this.handleQuestionDelete(sIndex, qIndex);\n this.isDialogOpen = false;\n };\n this.isDialogOpen = true;\n }}\n noBackground={true}\n />\n </fragment>\n ) : (\n <stencil-icon-button\n icon={getIconFromName('view')}\n tooltip=\"View Question Details\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionClick(sIndex, qIndex);\n }}\n noBackground={true}\n />\n )}\n </div>\n </udp-forms-builder-question-item>\n );\n })}\n </div>\n\n {isEditable &&\n !this.showMenuAtIndex && ( // Only show button if no menu is active\n <div class=\"add-question-to-section-button-container\">\n <udp-button\n variant=\"text\"\n onClick={() => {\n this.showMenuAtIndex = { sIndex: sIndex, qIndex: section.formQuestions.length };\n }}\n startIcon={<udp-icon iconName={'add'} color={'inherit'} />}\n >\n Add a Question\n </udp-button>\n </div>\n )}\n\n {isEditable &&\n this.showMenuAtIndex?.sIndex === sIndex &&\n this.showMenuAtIndex?.qIndex === section.formQuestions.length &&\n section.formQuestions.length > 0 && (\n <udp-forms-builder-menu\n isVisible={true}\n questionsTemplate={questionsTemplate}\n onAddSection={() => {\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.splice(sIndex + 1, 0, []);\n this.formSections = newFormSections;\n this.showMenuAtIndex = null;\n }}\n onAddQuestion={e => {\n if (this.showMenuAtIndex) {\n const indices = this.addQuestionOfType(e.detail, this.showMenuAtIndex.sIndex, this.showMenuAtIndex.qIndex);\n this.editingQuestion = { ...indices };\n this.isQuestionEditorOpen = true;\n }\n }}\n onCancelClick={() => (this.showMenuAtIndex = null)}\n />\n )}\n </div>\n </div>\n );\n })}\n </div>\n </udp-container>\n )}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|