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,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, h, a as getElement } from './index-CaIWDYyq.js';
|
|
2
|
-
import {
|
|
2
|
+
import { throttle } from 'lodash';
|
|
3
3
|
import { g as getCurrentTenantId } from './tenantUtils-Basdb1b1.js';
|
|
4
4
|
import { c as createFormData, m as makeApiCall } from './makeApiCall-B-daVutk.js';
|
|
5
5
|
import { C as ConfigService } from './configService-Cn7PuhQz.js';
|
|
@@ -46,6 +46,7 @@ function isFileArray(array) {
|
|
|
46
46
|
return array.every(item => item instanceof File);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
// @ts-nocheck
|
|
49
50
|
/**
|
|
50
51
|
* Public form submission handler (legacy endpoint)
|
|
51
52
|
*/
|
|
@@ -220,11 +221,7 @@ class PrivateFormHandler extends BaseFormHandler {
|
|
|
220
221
|
dataWithoutFiles[key] = value.map(item => (typeof item === 'string' ? item : item.value)).join(',');
|
|
221
222
|
}
|
|
222
223
|
else {
|
|
223
|
-
|
|
224
|
-
// Skip null, undefined, or empty string values entirely
|
|
225
|
-
if (value !== null && value !== undefined && value !== '') {
|
|
226
|
-
dataWithoutFiles[key] = value;
|
|
227
|
-
}
|
|
224
|
+
dataWithoutFiles[key] = value;
|
|
228
225
|
}
|
|
229
226
|
}
|
|
230
227
|
// Add form data using the helper function
|
|
@@ -287,7 +284,7 @@ const UdpFormsRenderer = class {
|
|
|
287
284
|
registerInstance(this, hostRef);
|
|
288
285
|
this.isPublic = false;
|
|
289
286
|
this.userId = null; // User ID for authenticated users
|
|
290
|
-
this.autoSaveDelay = 2000; // Debounce delay for auto-save in milliseconds
|
|
287
|
+
this.autoSaveDelay = 2000; // Debounce delay for auto-save in milliseconds (currently disabled)
|
|
291
288
|
this.initialValues = {};
|
|
292
289
|
this.submitSuccessful = false;
|
|
293
290
|
this.existingSubmission = null;
|
|
@@ -295,13 +292,135 @@ const UdpFormsRenderer = class {
|
|
|
295
292
|
this.isSaving = false;
|
|
296
293
|
this.saveError = null;
|
|
297
294
|
this.isSubmitted = false;
|
|
295
|
+
this.dynamicSections = [];
|
|
296
|
+
this.isUpdatingSections = false;
|
|
297
|
+
this.reRenderKey = 0;
|
|
298
298
|
this.tenantId = getCurrentTenantId();
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
299
|
+
/**
|
|
300
|
+
* Duplicate a repeatable section
|
|
301
|
+
*/
|
|
302
|
+
this.duplicateRepeatableSection = (index) => {
|
|
303
|
+
if (this.isSubmitted || this.isUpdatingSections)
|
|
304
|
+
return;
|
|
305
|
+
this.isUpdatingSections = true;
|
|
306
|
+
this.loading = true;
|
|
307
|
+
try {
|
|
308
|
+
const sectionToClone = this.dynamicSections[index];
|
|
309
|
+
if (!sectionToClone)
|
|
310
|
+
return;
|
|
311
|
+
const cloningSectionName = sectionToClone.name;
|
|
312
|
+
// Find existing repeat group indices
|
|
313
|
+
const repeatKeys = this.findRepeatGroupKeys(cloningSectionName, this.initialValues);
|
|
314
|
+
const nextRepeatIndex = repeatKeys.length > 0 ? Math.max(...repeatKeys) + 1 : 2;
|
|
315
|
+
const clonedSection = Object.assign(Object.assign({}, structuredClone(sectionToClone)), { formQuestions: sectionToClone.formQuestions.map(q => (Object.assign(Object.assign({}, structuredClone(q)), { processedSubmissionName: `${cloningSectionName}_${nextRepeatIndex}-${q.name}` }))), isOriginalSection: false, sectionPositionSuffix: nextRepeatIndex });
|
|
316
|
+
// Find the last index of this section group
|
|
317
|
+
let insertAtIndex = index;
|
|
318
|
+
for (let i = index + 1; i < this.dynamicSections.length; i++) {
|
|
319
|
+
const s = this.dynamicSections[i];
|
|
320
|
+
if (s.name === cloningSectionName) {
|
|
321
|
+
insertAtIndex = i;
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
// Insert after the last repeat of the section group
|
|
328
|
+
this.dynamicSections = [...this.dynamicSections.slice(0, insertAtIndex + 1), clonedSection, ...this.dynamicSections.slice(insertAtIndex + 1)];
|
|
329
|
+
// Create new initial values structure
|
|
330
|
+
const newInitialValues = Object.assign({}, this.currentFormData);
|
|
331
|
+
clonedSection.formQuestions.forEach(q => {
|
|
332
|
+
newInitialValues[q.processedSubmissionName] = null;
|
|
333
|
+
});
|
|
334
|
+
// This will trigger a complete form re-render
|
|
335
|
+
this.initialValues = newInitialValues;
|
|
336
|
+
this.currentFormData = newInitialValues;
|
|
337
|
+
this.reRenderKey += 1;
|
|
338
|
+
}
|
|
339
|
+
finally {
|
|
340
|
+
this.isUpdatingSections = false;
|
|
341
|
+
this.loading = false;
|
|
303
342
|
}
|
|
304
343
|
};
|
|
344
|
+
/**
|
|
345
|
+
* Delete a repeatable section
|
|
346
|
+
*/
|
|
347
|
+
this.deleteRepeatableSection = (index) => {
|
|
348
|
+
if (this.isSubmitted)
|
|
349
|
+
return;
|
|
350
|
+
const sectionToDelete = this.dynamicSections[index];
|
|
351
|
+
if (!sectionToDelete || sectionToDelete.isOriginalSection)
|
|
352
|
+
return;
|
|
353
|
+
this.isUpdatingSections = true;
|
|
354
|
+
this.loading = true;
|
|
355
|
+
try {
|
|
356
|
+
const deleteSectionName = sectionToDelete.name;
|
|
357
|
+
// Remove the section's initial values\
|
|
358
|
+
console.log('currentformdata', this.currentFormData);
|
|
359
|
+
const newInitialValues = Object.assign({}, this.currentFormData);
|
|
360
|
+
sectionToDelete.formQuestions.forEach(q => {
|
|
361
|
+
delete newInitialValues[q.processedSubmissionName];
|
|
362
|
+
});
|
|
363
|
+
// Remove the section from dynamicSections
|
|
364
|
+
const updatedSections = structuredClone(this.dynamicSections);
|
|
365
|
+
updatedSections.splice(index, 1);
|
|
366
|
+
let suffixCounter = 2;
|
|
367
|
+
updatedSections.forEach(section => {
|
|
368
|
+
// no need to process unrelated sections or originalSections
|
|
369
|
+
if (section.name !== deleteSectionName || section.isOriginalSection) {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
section.sectionPositionSuffix = suffixCounter;
|
|
373
|
+
suffixCounter += 1;
|
|
374
|
+
section.formQuestions = section.formQuestions.map(q => {
|
|
375
|
+
const newName = `${deleteSectionName}_${section.sectionPositionSuffix}-${q.name}`;
|
|
376
|
+
const oldName = q.processedSubmissionName;
|
|
377
|
+
// Carry over any existing value
|
|
378
|
+
if (newInitialValues[oldName] !== undefined) {
|
|
379
|
+
newInitialValues[newName] = newInitialValues[oldName];
|
|
380
|
+
delete newInitialValues[oldName];
|
|
381
|
+
}
|
|
382
|
+
return Object.assign(Object.assign({}, q), { processedSubmissionName: newName });
|
|
383
|
+
});
|
|
384
|
+
});
|
|
385
|
+
this.dynamicSections = updatedSections;
|
|
386
|
+
this.initialValues = newInitialValues;
|
|
387
|
+
this.currentFormData = newInitialValues;
|
|
388
|
+
this.reRenderKey += 1;
|
|
389
|
+
console.log('newInitialValues', newInitialValues);
|
|
390
|
+
}
|
|
391
|
+
finally {
|
|
392
|
+
this.isUpdatingSections = false;
|
|
393
|
+
this.loading = false;
|
|
394
|
+
}
|
|
395
|
+
};
|
|
396
|
+
/**
|
|
397
|
+
* Manual save function - debounced to 5 seconds
|
|
398
|
+
*/
|
|
399
|
+
this.handleManualSave = async (values) => {
|
|
400
|
+
// Only save if handler supports it and user is authenticated
|
|
401
|
+
if (!this.formHandler.supportsAutoSave() || !this.userId || !this.formHandler.saveFormData) {
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
this.isSaving = true;
|
|
405
|
+
this.saveError = null;
|
|
406
|
+
try {
|
|
407
|
+
await this.formHandler.saveFormData(values, 'in-progress');
|
|
408
|
+
this.currentFormData = Object.assign({}, values);
|
|
409
|
+
console.log('Form saved successfully');
|
|
410
|
+
}
|
|
411
|
+
catch (error) {
|
|
412
|
+
console.error('Manual save failed:', error);
|
|
413
|
+
this.saveError = 'Failed to save form data';
|
|
414
|
+
}
|
|
415
|
+
finally {
|
|
416
|
+
this.isSaving = false;
|
|
417
|
+
}
|
|
418
|
+
};
|
|
419
|
+
this.handleFormChange = (values) => {
|
|
420
|
+
if (this.isUpdatingSections)
|
|
421
|
+
return;
|
|
422
|
+
this.currentFormData = values;
|
|
423
|
+
};
|
|
305
424
|
this.handleFinish = () => {
|
|
306
425
|
// Trigger any finish actions
|
|
307
426
|
if (this.triggerAction) {
|
|
@@ -311,13 +430,17 @@ const UdpFormsRenderer = class {
|
|
|
311
430
|
}
|
|
312
431
|
async componentWillLoad() {
|
|
313
432
|
this.loading = true;
|
|
314
|
-
this.formHandler = FormHandlerFactory.create(this.isPublic, this.formId, this.version, this.tenantId, this.userId, this.existingSubmission,
|
|
433
|
+
this.formHandler = FormHandlerFactory.create(this.isPublic, this.formId, this.version, this.tenantId, this.userId, this.existingSubmission, submission => {
|
|
315
434
|
this.existingSubmission = submission;
|
|
316
435
|
});
|
|
317
|
-
// Set up debounced auto-save function
|
|
318
|
-
this.debouncedAutoSave = debounce(async (values) => {
|
|
319
|
-
|
|
320
|
-
}, this.autoSaveDelay);
|
|
436
|
+
// Set up debounced auto-save function (currently disabled)
|
|
437
|
+
// this.debouncedAutoSave = debounce(async (values: { [name: string]: any }) => {
|
|
438
|
+
// // await this.handleAutoSave(values); // Disabled for now
|
|
439
|
+
// }, this.autoSaveDelay);
|
|
440
|
+
// Set up throttled manual save function (5 seconds) - fires immediately, then throttles
|
|
441
|
+
this.debouncedManualSave = throttle(async (values) => {
|
|
442
|
+
await this.handleManualSave(values);
|
|
443
|
+
}, 2000, { leading: true, trailing: false });
|
|
321
444
|
if (this.formId && this.version) {
|
|
322
445
|
await this.loadForm();
|
|
323
446
|
}
|
|
@@ -338,19 +461,63 @@ const UdpFormsRenderer = class {
|
|
|
338
461
|
if (existingData.status === 2) {
|
|
339
462
|
this.isSubmitted = true;
|
|
340
463
|
}
|
|
341
|
-
// Process file data to convert file references to UdpDriveFile objects
|
|
342
|
-
this.initialValues = await this.processInitialValues(this.initialValues);
|
|
343
464
|
this.currentFormData = Object.assign({}, this.initialValues);
|
|
344
465
|
if (existingData.status === 2 || existingData.status === 'submitted') {
|
|
345
466
|
this.isSubmitted = true;
|
|
346
467
|
}
|
|
347
468
|
}
|
|
348
469
|
}
|
|
470
|
+
this.initializeDynamicSections();
|
|
349
471
|
}
|
|
350
472
|
catch (error) {
|
|
351
473
|
console.error('Failed to load form:', error);
|
|
352
474
|
}
|
|
353
475
|
}
|
|
476
|
+
// build dynamic sections based on the
|
|
477
|
+
initializeDynamicSections() {
|
|
478
|
+
var _a;
|
|
479
|
+
const tempDynamicSection = [];
|
|
480
|
+
const sortedSections = structuredClone(this.form.udpFormUdpFormSection).sort((a, b) => a.order - b.order);
|
|
481
|
+
for (const section of sortedSections) {
|
|
482
|
+
section.name = `section${section.order}`; // THIS LINE WILL NOT BE NECESSARY SOON AFTER BACKEND UPDATE
|
|
483
|
+
section.sectionProperties = JSON.parse(section.sectionProperties || "{}");
|
|
484
|
+
const repeatGroupKeys = this.findRepeatGroupKeys(section.name, this.initialValues);
|
|
485
|
+
section.isOriginalSection = true;
|
|
486
|
+
section.sectionPositionSuffix = 1; // default position
|
|
487
|
+
// always add the original section into dynamic sections
|
|
488
|
+
tempDynamicSection.push(Object.assign(Object.assign({}, structuredClone(section)), { formQuestions: structuredClone(this.form.formQuestions)
|
|
489
|
+
.filter(q => q.formSectionId === section.id)
|
|
490
|
+
.sort((a, b) => a.questionOrder - b.questionOrder)
|
|
491
|
+
.map(q => (Object.assign(Object.assign({}, q), { processedSubmissionName: `${section.name}-${q.name}` }))) }));
|
|
492
|
+
// create then add additional sections if there are repeated sections
|
|
493
|
+
if (((_a = section.sectionProperties) === null || _a === void 0 ? void 0 : _a.isRepeatable) && repeatGroupKeys.length > 0) {
|
|
494
|
+
const maxRepeatedSectionSuffix = Math.max(...repeatGroupKeys); // create a new section for the max value of repeat group keys, even if there are no saved answers
|
|
495
|
+
// for (const repeatKey of repeatGroupKeys) { // create a section only for the suffix saved
|
|
496
|
+
for (let repeatKey = 2; repeatKey <= maxRepeatedSectionSuffix; repeatKey++) {
|
|
497
|
+
const clonedSection = Object.assign(Object.assign({}, structuredClone(section)), { formQuestions: structuredClone(this.form.formQuestions)
|
|
498
|
+
.filter(q => q.formSectionId === section.id)
|
|
499
|
+
.sort((a, b) => a.questionOrder - b.questionOrder)
|
|
500
|
+
.map(q => (Object.assign(Object.assign({}, q), { processedSubmissionName: `${section.name}_${repeatKey}-${q.name}` }))), isOriginalSection: false, sectionPositionSuffix: repeatKey });
|
|
501
|
+
tempDynamicSection.push(clonedSection);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
console.log('tempDynamicSection', tempDynamicSection);
|
|
506
|
+
this.dynamicSections = tempDynamicSection;
|
|
507
|
+
}
|
|
508
|
+
findRepeatGroupKeys(sectionName, values) {
|
|
509
|
+
const keys = Object.keys(values);
|
|
510
|
+
const repeatGroupSet = new Set();
|
|
511
|
+
// Match: sectionName_2-question1
|
|
512
|
+
const regex = new RegExp(`^${sectionName}_(\\d+)-`);
|
|
513
|
+
keys.forEach(key => {
|
|
514
|
+
const match = key.match(regex);
|
|
515
|
+
if (match && match[1]) {
|
|
516
|
+
repeatGroupSet.add(Number(match[1]));
|
|
517
|
+
}
|
|
518
|
+
});
|
|
519
|
+
return Array.from(repeatGroupSet).sort((a, b) => a - b);
|
|
520
|
+
}
|
|
354
521
|
async handleSubmit(values) {
|
|
355
522
|
try {
|
|
356
523
|
const success = await this.formHandler.submitForm(values);
|
|
@@ -361,163 +528,6 @@ const UdpFormsRenderer = class {
|
|
|
361
528
|
throw error;
|
|
362
529
|
}
|
|
363
530
|
}
|
|
364
|
-
async handleAutoSave(values) {
|
|
365
|
-
// Only auto-save if handler supports it and user is authenticated
|
|
366
|
-
if (!this.formHandler.supportsAutoSave() || !this.userId || !this.formHandler.saveFormData) {
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
|
-
this.isSaving = true;
|
|
370
|
-
this.saveError = null;
|
|
371
|
-
try {
|
|
372
|
-
await this.formHandler.saveFormData(values, 'in-progress');
|
|
373
|
-
this.currentFormData = Object.assign({}, values);
|
|
374
|
-
}
|
|
375
|
-
catch (error) {
|
|
376
|
-
console.error('Auto-save failed:', error);
|
|
377
|
-
this.saveError = 'Failed to save form data';
|
|
378
|
-
}
|
|
379
|
-
finally {
|
|
380
|
-
this.isSaving = false;
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
/**
|
|
384
|
-
* Process initial values to convert file references to UdpDriveFile objects
|
|
385
|
-
*/
|
|
386
|
-
async processInitialValues(values) {
|
|
387
|
-
const processedValues = Object.assign({}, values);
|
|
388
|
-
for (const [key, value] of Object.entries(values)) {
|
|
389
|
-
if (typeof value === 'string' && this.isFileReference(value)) {
|
|
390
|
-
processedValues[key] = await this.parseFileReferences(value);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
return processedValues;
|
|
394
|
-
}
|
|
395
|
-
/**
|
|
396
|
-
* Check if a string value is a file reference (contains | and udp: or b64:)
|
|
397
|
-
*/
|
|
398
|
-
isFileReference(value) {
|
|
399
|
-
return typeof value === 'string' && value.includes('|') && (value.includes('udp:') || value.includes('b64:'));
|
|
400
|
-
}
|
|
401
|
-
/**
|
|
402
|
-
* Parse file references from the special format: "filename|udp:driveFileId" or "filename|b64:base64data"
|
|
403
|
-
*/
|
|
404
|
-
async parseFileReferences(value) {
|
|
405
|
-
const references = value.split(',').map(ref => ref.trim()).filter(ref => ref);
|
|
406
|
-
const udpDriveFiles = [];
|
|
407
|
-
for (const reference of references) {
|
|
408
|
-
try {
|
|
409
|
-
const udpDriveFile = await this.parseFileReference(reference);
|
|
410
|
-
if (udpDriveFile) {
|
|
411
|
-
udpDriveFiles.push(udpDriveFile);
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
catch (error) {
|
|
415
|
-
console.error('Error parsing file reference:', reference, error);
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
return udpDriveFiles;
|
|
419
|
-
}
|
|
420
|
-
/**
|
|
421
|
-
* Parse a single file reference
|
|
422
|
-
*/
|
|
423
|
-
async parseFileReference(reference) {
|
|
424
|
-
const parts = reference.split('|');
|
|
425
|
-
if (parts.length !== 2) {
|
|
426
|
-
console.warn('Invalid file reference format:', reference);
|
|
427
|
-
return null;
|
|
428
|
-
}
|
|
429
|
-
const [filename, dataRef] = parts;
|
|
430
|
-
if (dataRef.startsWith('udp:')) {
|
|
431
|
-
// Handle UDP Drive file reference
|
|
432
|
-
const driveFileId = dataRef.substring(4); // Remove 'udp:' prefix
|
|
433
|
-
return await this.createUdpDriveFileFromId(filename, driveFileId);
|
|
434
|
-
}
|
|
435
|
-
else if (dataRef.startsWith('b64:')) {
|
|
436
|
-
// Handle base64 encoded file
|
|
437
|
-
const base64Data = dataRef.substring(4); // Remove 'b64:' prefix
|
|
438
|
-
return this.createUdpDriveFileFromBase64(filename, base64Data);
|
|
439
|
-
}
|
|
440
|
-
console.warn('Unknown file reference format:', dataRef);
|
|
441
|
-
return null;
|
|
442
|
-
}
|
|
443
|
-
/**
|
|
444
|
-
* Create a UdpDriveFile from a drive file ID
|
|
445
|
-
*/
|
|
446
|
-
async createUdpDriveFileFromId(filename, driveFileId) {
|
|
447
|
-
// Extract file extension from filename
|
|
448
|
-
const extension = filename.split('.').pop() || '';
|
|
449
|
-
// Create a placeholder File object - the actual content will be downloaded when needed
|
|
450
|
-
const placeholderBlob = new Blob([''], { type: this.getMimeTypeFromExtension(extension) });
|
|
451
|
-
const file = new File([placeholderBlob], filename, {
|
|
452
|
-
type: placeholderBlob.type,
|
|
453
|
-
lastModified: Date.now()
|
|
454
|
-
});
|
|
455
|
-
// Create UdpDriveFile by extending the File object
|
|
456
|
-
const udpDriveFile = file;
|
|
457
|
-
// Add UDP-specific properties
|
|
458
|
-
udpDriveFile.driveFileId = driveFileId;
|
|
459
|
-
udpDriveFile.tenantId = this.tenantId;
|
|
460
|
-
udpDriveFile.productId = 0; // Will be filled by server
|
|
461
|
-
udpDriveFile.path = '';
|
|
462
|
-
udpDriveFile.extension = extension;
|
|
463
|
-
return udpDriveFile;
|
|
464
|
-
}
|
|
465
|
-
/**
|
|
466
|
-
* Create a UdpDriveFile from base64 data
|
|
467
|
-
*/
|
|
468
|
-
createUdpDriveFileFromBase64(filename, base64Data) {
|
|
469
|
-
// Extract file extension from filename
|
|
470
|
-
const extension = filename.split('.').pop() || '';
|
|
471
|
-
// Decode base64 data
|
|
472
|
-
const binaryString = atob(base64Data);
|
|
473
|
-
const bytes = new Uint8Array(binaryString.length);
|
|
474
|
-
for (let i = 0; i < binaryString.length; i++) {
|
|
475
|
-
bytes[i] = binaryString.charCodeAt(i);
|
|
476
|
-
}
|
|
477
|
-
const blob = new Blob([bytes], { type: this.getMimeTypeFromExtension(extension) });
|
|
478
|
-
// Create a UdpDriveFile that extends File
|
|
479
|
-
const udpDriveFile = new File([blob], filename, {
|
|
480
|
-
type: blob.type,
|
|
481
|
-
lastModified: Date.now()
|
|
482
|
-
});
|
|
483
|
-
// Add UDP-specific properties
|
|
484
|
-
udpDriveFile.driveFileId = ''; // No drive file ID for base64 files
|
|
485
|
-
udpDriveFile.tenantId = this.tenantId;
|
|
486
|
-
udpDriveFile.productId = 0;
|
|
487
|
-
udpDriveFile.path = '';
|
|
488
|
-
udpDriveFile.extension = extension;
|
|
489
|
-
return udpDriveFile;
|
|
490
|
-
}
|
|
491
|
-
/**
|
|
492
|
-
* Get MIME type from file extension
|
|
493
|
-
*/
|
|
494
|
-
getMimeTypeFromExtension(extension) {
|
|
495
|
-
const mimeTypes = {
|
|
496
|
-
'pdf': 'application/pdf',
|
|
497
|
-
'doc': 'application/msword',
|
|
498
|
-
'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
499
|
-
'xls': 'application/vnd.ms-excel',
|
|
500
|
-
'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
501
|
-
'ppt': 'application/vnd.ms-powerpoint',
|
|
502
|
-
'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
503
|
-
'txt': 'text/plain',
|
|
504
|
-
'csv': 'text/csv',
|
|
505
|
-
'json': 'application/json',
|
|
506
|
-
'xml': 'application/xml',
|
|
507
|
-
'html': 'text/html',
|
|
508
|
-
'css': 'text/css',
|
|
509
|
-
'js': 'application/javascript',
|
|
510
|
-
'png': 'image/png',
|
|
511
|
-
'jpg': 'image/jpeg',
|
|
512
|
-
'jpeg': 'image/jpeg',
|
|
513
|
-
'gif': 'image/gif',
|
|
514
|
-
'svg': 'image/svg+xml',
|
|
515
|
-
'zip': 'application/zip',
|
|
516
|
-
'rar': 'application/x-rar-compressed',
|
|
517
|
-
'7z': 'application/x-7z-compressed'
|
|
518
|
-
};
|
|
519
|
-
return mimeTypes[extension.toLowerCase()] || 'application/octet-stream';
|
|
520
|
-
}
|
|
521
531
|
render() {
|
|
522
532
|
if (this.loading) {
|
|
523
533
|
return (h("div", { class: "loading-container" }, h("unity-spinner", { size: "medium" })));
|
|
@@ -525,7 +535,7 @@ const UdpFormsRenderer = class {
|
|
|
525
535
|
if (!this.form) {
|
|
526
536
|
return (h("div", { class: "error-container" }, h("unity-typography", { variant: "body1" }, "Form not found")));
|
|
527
537
|
}
|
|
528
|
-
return (h("udp-forms-ui", { form: this.form, initialValues: this.initialValues, submitSuccessful: this.submitSuccessful, isSaving: this.isSaving, saveError: this.saveError, showAutoSaveStatus: this.formHandler.supportsAutoSave() && !!this.userId, readonly: this.isSubmitted,
|
|
538
|
+
return (h("div", { class: "forms-renderer-container" }, h("udp-forms-ui", { form: this.form, initialValues: this.initialValues, submitSuccessful: this.submitSuccessful, isSaving: this.isSaving, saveError: this.saveError, showAutoSaveStatus: this.formHandler.supportsAutoSave() && !!this.userId, readonly: this.isSubmitted, currentFormData: this.currentFormData, handleSubmit: this.handleSubmit.bind(this), handleSave: (values) => Promise.resolve(this.debouncedManualSave(values)), handleChange: this.handleFormChange, handleAction: this.triggerAction, handleFinish: this.handleFinish, userId: this.userId, isSubmitted: this.isSubmitted, dynamicSections: this.dynamicSections, duplicateRepeatableSection: this.duplicateRepeatableSection, deleteRepeatableSection: this.deleteRepeatableSection, key: `form-${this.reRenderKey}` })));
|
|
529
539
|
}
|
|
530
540
|
get el() { return getElement(this); }
|
|
531
541
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"udp-forms-renderer.entry.js","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"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"udp-forms-renderer.entry.js","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","// @ts-nocheck\nimport { 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\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\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\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}\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 { throttle } from 'lodash';\nimport { Guid } 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\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 (currently disabled)\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 @State() dynamicSections: any[] = [];\n @State() isUpdatingSections: boolean = false;\n @State() reRenderKey: number = 0;\n\n private tenantId: Guid = getCurrentTenantId();\n // private debouncedAutoSave: (values: { [name: string]: any }) => void; // Kept for future use (currently disabled)\n private debouncedManualSave: (values: { [name: string]: any }) => void; // Debounced manual save (5 seconds)\n private formHandler: IFormHandler;\n\n async componentWillLoad() {\n this.loading = true;\n this.formHandler = FormHandlerFactory.create(this.isPublic, this.formId, this.version, this.tenantId, this.userId, this.existingSubmission, submission => {\n this.existingSubmission = submission;\n });\n\n // Set up debounced auto-save function (currently disabled)\n // this.debouncedAutoSave = debounce(async (values: { [name: string]: any }) => {\n // // await this.handleAutoSave(values); // Disabled for now\n // }, this.autoSaveDelay);\n\n // Set up throttled manual save function (5 seconds) - fires immediately, then throttles\n this.debouncedManualSave = throttle(async (values: { [name: string]: any }) => {\n await this.handleManualSave(values);\n }, 2000, { leading: true, trailing: false });\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\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 this.currentFormData = { ...this.initialValues };\n\n if (existingData.status === 2 || existingData.status === 'submitted') {\n this.isSubmitted = true;\n }\n }\n }\n this.initializeDynamicSections();\n } catch (error) {\n console.error('Failed to load form:', error);\n }\n }\n\n // build dynamic sections based on the\n private initializeDynamicSections() {\n const tempDynamicSection: any[] = [];\n const sortedSections = structuredClone(this.form.udpFormUdpFormSection).sort((a, b) => a.order - b.order);\n\n for (const section of sortedSections) {\n section.name = `section${section.order}`; // THIS LINE WILL NOT BE NECESSARY SOON AFTER BACKEND UPDATE\n section.sectionProperties = JSON.parse(section.sectionProperties || \"{}\");\n const repeatGroupKeys = this.findRepeatGroupKeys(section.name, this.initialValues);\n section.isOriginalSection = true;\n section.sectionPositionSuffix = 1; // default position\n\n // always add the original section into dynamic sections\n tempDynamicSection.push({\n ...structuredClone(section),\n formQuestions: structuredClone(this.form.formQuestions)\n .filter(q => q.formSectionId === section.id)\n .sort((a, b) => a.questionOrder - b.questionOrder)\n .map(q => ({ ...q, processedSubmissionName: `${section.name}-${q.name}` })),\n });\n\n // create then add additional sections if there are repeated sections\n if (section.sectionProperties?.isRepeatable && repeatGroupKeys.length > 0) {\n const maxRepeatedSectionSuffix = Math.max(...repeatGroupKeys); // create a new section for the max value of repeat group keys, even if there are no saved answers\n\n // for (const repeatKey of repeatGroupKeys) { // create a section only for the suffix saved\n for (let repeatKey = 2; repeatKey <= maxRepeatedSectionSuffix; repeatKey++) {\n const clonedSection = {\n ...structuredClone(section),\n formQuestions: structuredClone(this.form.formQuestions)\n .filter(q => q.formSectionId === section.id)\n .sort((a, b) => a.questionOrder - b.questionOrder)\n .map(q => ({ ...q, processedSubmissionName: `${section.name}_${repeatKey}-${q.name}` })),\n isOriginalSection: false,\n sectionPositionSuffix: repeatKey,\n };\n tempDynamicSection.push(clonedSection);\n }\n }\n }\n\n console.log('tempDynamicSection', tempDynamicSection);\n\n this.dynamicSections = tempDynamicSection;\n }\n\n private findRepeatGroupKeys(sectionName: string, values: Object): number[] {\n const keys = Object.keys(values);\n const repeatGroupSet = new Set<number>();\n\n // Match: sectionName_2-question1\n const regex = new RegExp(`^${sectionName}_(\\\\d+)-`);\n\n keys.forEach(key => {\n const match = key.match(regex);\n if (match && match[1]) {\n repeatGroupSet.add(Number(match[1]));\n }\n });\n\n return Array.from(repeatGroupSet).sort((a, b) => a - b);\n }\n\n /**\n * Duplicate a repeatable section\n */\n private duplicateRepeatableSection = (index: number) => {\n if (this.isSubmitted || this.isUpdatingSections) return;\n this.isUpdatingSections = true;\n this.loading = true;\n\n try {\n const sectionToClone = this.dynamicSections[index];\n if (!sectionToClone) return;\n\n const cloningSectionName = sectionToClone.name;\n\n // Find existing repeat group indices\n const repeatKeys = this.findRepeatGroupKeys(cloningSectionName, this.initialValues);\n const nextRepeatIndex = repeatKeys.length > 0 ? Math.max(...repeatKeys) + 1 : 2;\n\n const clonedSection = {\n ...structuredClone(sectionToClone),\n formQuestions: sectionToClone.formQuestions.map(q => ({\n ...structuredClone(q),\n processedSubmissionName: `${cloningSectionName}_${nextRepeatIndex}-${q.name}`,\n })),\n isOriginalSection: false,\n sectionPositionSuffix: nextRepeatIndex,\n };\n\n // Find the last index of this section group\n let insertAtIndex = index;\n for (let i = index + 1; i < this.dynamicSections.length; i++) {\n const s = this.dynamicSections[i];\n if (s.name === cloningSectionName) {\n insertAtIndex = i;\n } else {\n break;\n }\n }\n\n // Insert after the last repeat of the section group\n this.dynamicSections = [...this.dynamicSections.slice(0, insertAtIndex + 1), clonedSection, ...this.dynamicSections.slice(insertAtIndex + 1)];\n\n // Create new initial values structure\n const newInitialValues = { ...this.currentFormData };\n\n clonedSection.formQuestions.forEach(q => {\n newInitialValues[q.processedSubmissionName] = null;\n });\n\n // This will trigger a complete form re-render\n this.initialValues = newInitialValues;\n this.currentFormData = newInitialValues;\n this.reRenderKey += 1;\n } finally {\n this.isUpdatingSections = false;\n this.loading = false\n }\n };\n\n /**\n * Delete a repeatable section\n */\n private deleteRepeatableSection = (index: number) => {\n if (this.isSubmitted) return;\n\n const sectionToDelete = this.dynamicSections[index];\n if (!sectionToDelete || sectionToDelete.isOriginalSection) return;\n\n this.isUpdatingSections = true;\n this.loading = true;\n\n try {\n const deleteSectionName = sectionToDelete.name;\n\n // Remove the section's initial values\\\n console.log('currentformdata', this.currentFormData)\n const newInitialValues = { ...this.currentFormData };\n\n sectionToDelete.formQuestions.forEach(q => {\n delete newInitialValues[q.processedSubmissionName];\n });\n\n // Remove the section from dynamicSections\n const updatedSections = structuredClone(this.dynamicSections);\n updatedSections.splice(index, 1);\n\n let suffixCounter = 2;\n\n updatedSections.forEach(section => {\n // no need to process unrelated sections or originalSections\n if (section.name !== deleteSectionName || section.isOriginalSection) {\n return;\n }\n\n section.sectionPositionSuffix = suffixCounter;\n suffixCounter += 1;\n\n section.formQuestions = section.formQuestions.map(q => {\n const newName = `${deleteSectionName}_${section.sectionPositionSuffix}-${q.name}`;\n const oldName = q.processedSubmissionName;\n\n // Carry over any existing value\n if (newInitialValues[oldName] !== undefined) {\n newInitialValues[newName] = newInitialValues[oldName];\n delete newInitialValues[oldName];\n }\n\n return {\n ...q,\n processedSubmissionName: newName,\n };\n });\n \n });\n\n this.dynamicSections = updatedSections;\n this.initialValues = newInitialValues;\n this.currentFormData = newInitialValues;\n this.reRenderKey += 1;\n\n\n console.log('newInitialValues', newInitialValues)\n } finally {\n this.isUpdatingSections = false;\n this.loading = false\n }\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 /**\n * Manual save function - debounced to 5 seconds\n */\n private handleManualSave = async (values: { [name: string]: any }) => {\n // Only 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 console.log('Form saved successfully');\n } catch (error) {\n console.error('Manual save failed:', error);\n this.saveError = 'Failed to save form data';\n } finally {\n this.isSaving = false;\n }\n }\n\n\n private handleFormChange = (values: { [name: string]: any }) => {\n if (this.isUpdatingSections) return;\n this.currentFormData = values;\n };\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\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 <div class=\"forms-renderer-container\">\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 currentFormData={this.currentFormData}\n handleSubmit={this.handleSubmit.bind(this)}\n handleSave={(values) => Promise.resolve(this.debouncedManualSave(values))}\n handleChange={this.handleFormChange}\n handleAction={this.triggerAction}\n handleFinish={this.handleFinish}\n userId={this.userId}\n isSubmitted={this.isSubmitted}\n dynamicSections={this.dynamicSections}\n duplicateRepeatableSection={this.duplicateRepeatableSection}\n deleteRepeatableSection={this.deleteRepeatableSection}\n key={`form-${this.reRenderKey}`}\n />\n </div>\n );\n }\n}\n"],"names":[],"mappings":"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"}
|