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,12 +1,12 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
|
-
import {
|
|
2
|
+
import { throttle } from "lodash";
|
|
3
3
|
import { getCurrentTenantId } from "../../../../../../udp-utilities/tenant/tenantUtils";
|
|
4
4
|
import { FormHandlerFactory } from "./form-handler/FormHandlerFactory";
|
|
5
5
|
export class UdpFormsRenderer {
|
|
6
6
|
constructor() {
|
|
7
7
|
this.isPublic = false;
|
|
8
8
|
this.userId = null; // User ID for authenticated users
|
|
9
|
-
this.autoSaveDelay = 2000; // Debounce delay for auto-save in milliseconds
|
|
9
|
+
this.autoSaveDelay = 2000; // Debounce delay for auto-save in milliseconds (currently disabled)
|
|
10
10
|
this.initialValues = {};
|
|
11
11
|
this.submitSuccessful = false;
|
|
12
12
|
this.existingSubmission = null;
|
|
@@ -14,13 +14,135 @@ export class UdpFormsRenderer {
|
|
|
14
14
|
this.isSaving = false;
|
|
15
15
|
this.saveError = null;
|
|
16
16
|
this.isSubmitted = false;
|
|
17
|
+
this.dynamicSections = [];
|
|
18
|
+
this.isUpdatingSections = false;
|
|
19
|
+
this.reRenderKey = 0;
|
|
17
20
|
this.tenantId = getCurrentTenantId();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Duplicate a repeatable section
|
|
23
|
+
*/
|
|
24
|
+
this.duplicateRepeatableSection = (index) => {
|
|
25
|
+
if (this.isSubmitted || this.isUpdatingSections)
|
|
26
|
+
return;
|
|
27
|
+
this.isUpdatingSections = true;
|
|
28
|
+
this.loading = true;
|
|
29
|
+
try {
|
|
30
|
+
const sectionToClone = this.dynamicSections[index];
|
|
31
|
+
if (!sectionToClone)
|
|
32
|
+
return;
|
|
33
|
+
const cloningSectionName = sectionToClone.name;
|
|
34
|
+
// Find existing repeat group indices
|
|
35
|
+
const repeatKeys = this.findRepeatGroupKeys(cloningSectionName, this.initialValues);
|
|
36
|
+
const nextRepeatIndex = repeatKeys.length > 0 ? Math.max(...repeatKeys) + 1 : 2;
|
|
37
|
+
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 });
|
|
38
|
+
// Find the last index of this section group
|
|
39
|
+
let insertAtIndex = index;
|
|
40
|
+
for (let i = index + 1; i < this.dynamicSections.length; i++) {
|
|
41
|
+
const s = this.dynamicSections[i];
|
|
42
|
+
if (s.name === cloningSectionName) {
|
|
43
|
+
insertAtIndex = i;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Insert after the last repeat of the section group
|
|
50
|
+
this.dynamicSections = [...this.dynamicSections.slice(0, insertAtIndex + 1), clonedSection, ...this.dynamicSections.slice(insertAtIndex + 1)];
|
|
51
|
+
// Create new initial values structure
|
|
52
|
+
const newInitialValues = Object.assign({}, this.currentFormData);
|
|
53
|
+
clonedSection.formQuestions.forEach(q => {
|
|
54
|
+
newInitialValues[q.processedSubmissionName] = null;
|
|
55
|
+
});
|
|
56
|
+
// This will trigger a complete form re-render
|
|
57
|
+
this.initialValues = newInitialValues;
|
|
58
|
+
this.currentFormData = newInitialValues;
|
|
59
|
+
this.reRenderKey += 1;
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
this.isUpdatingSections = false;
|
|
63
|
+
this.loading = false;
|
|
22
64
|
}
|
|
23
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* Delete a repeatable section
|
|
68
|
+
*/
|
|
69
|
+
this.deleteRepeatableSection = (index) => {
|
|
70
|
+
if (this.isSubmitted)
|
|
71
|
+
return;
|
|
72
|
+
const sectionToDelete = this.dynamicSections[index];
|
|
73
|
+
if (!sectionToDelete || sectionToDelete.isOriginalSection)
|
|
74
|
+
return;
|
|
75
|
+
this.isUpdatingSections = true;
|
|
76
|
+
this.loading = true;
|
|
77
|
+
try {
|
|
78
|
+
const deleteSectionName = sectionToDelete.name;
|
|
79
|
+
// Remove the section's initial values\
|
|
80
|
+
console.log('currentformdata', this.currentFormData);
|
|
81
|
+
const newInitialValues = Object.assign({}, this.currentFormData);
|
|
82
|
+
sectionToDelete.formQuestions.forEach(q => {
|
|
83
|
+
delete newInitialValues[q.processedSubmissionName];
|
|
84
|
+
});
|
|
85
|
+
// Remove the section from dynamicSections
|
|
86
|
+
const updatedSections = structuredClone(this.dynamicSections);
|
|
87
|
+
updatedSections.splice(index, 1);
|
|
88
|
+
let suffixCounter = 2;
|
|
89
|
+
updatedSections.forEach(section => {
|
|
90
|
+
// no need to process unrelated sections or originalSections
|
|
91
|
+
if (section.name !== deleteSectionName || section.isOriginalSection) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
section.sectionPositionSuffix = suffixCounter;
|
|
95
|
+
suffixCounter += 1;
|
|
96
|
+
section.formQuestions = section.formQuestions.map(q => {
|
|
97
|
+
const newName = `${deleteSectionName}_${section.sectionPositionSuffix}-${q.name}`;
|
|
98
|
+
const oldName = q.processedSubmissionName;
|
|
99
|
+
// Carry over any existing value
|
|
100
|
+
if (newInitialValues[oldName] !== undefined) {
|
|
101
|
+
newInitialValues[newName] = newInitialValues[oldName];
|
|
102
|
+
delete newInitialValues[oldName];
|
|
103
|
+
}
|
|
104
|
+
return Object.assign(Object.assign({}, q), { processedSubmissionName: newName });
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
this.dynamicSections = updatedSections;
|
|
108
|
+
this.initialValues = newInitialValues;
|
|
109
|
+
this.currentFormData = newInitialValues;
|
|
110
|
+
this.reRenderKey += 1;
|
|
111
|
+
console.log('newInitialValues', newInitialValues);
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
this.isUpdatingSections = false;
|
|
115
|
+
this.loading = false;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Manual save function - debounced to 5 seconds
|
|
120
|
+
*/
|
|
121
|
+
this.handleManualSave = async (values) => {
|
|
122
|
+
// Only save if handler supports it and user is authenticated
|
|
123
|
+
if (!this.formHandler.supportsAutoSave() || !this.userId || !this.formHandler.saveFormData) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
this.isSaving = true;
|
|
127
|
+
this.saveError = null;
|
|
128
|
+
try {
|
|
129
|
+
await this.formHandler.saveFormData(values, 'in-progress');
|
|
130
|
+
this.currentFormData = Object.assign({}, values);
|
|
131
|
+
console.log('Form saved successfully');
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
console.error('Manual save failed:', error);
|
|
135
|
+
this.saveError = 'Failed to save form data';
|
|
136
|
+
}
|
|
137
|
+
finally {
|
|
138
|
+
this.isSaving = false;
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
this.handleFormChange = (values) => {
|
|
142
|
+
if (this.isUpdatingSections)
|
|
143
|
+
return;
|
|
144
|
+
this.currentFormData = values;
|
|
145
|
+
};
|
|
24
146
|
this.handleFinish = () => {
|
|
25
147
|
// Trigger any finish actions
|
|
26
148
|
if (this.triggerAction) {
|
|
@@ -30,13 +152,17 @@ export class UdpFormsRenderer {
|
|
|
30
152
|
}
|
|
31
153
|
async componentWillLoad() {
|
|
32
154
|
this.loading = true;
|
|
33
|
-
this.formHandler = FormHandlerFactory.create(this.isPublic, this.formId, this.version, this.tenantId, this.userId, this.existingSubmission,
|
|
155
|
+
this.formHandler = FormHandlerFactory.create(this.isPublic, this.formId, this.version, this.tenantId, this.userId, this.existingSubmission, submission => {
|
|
34
156
|
this.existingSubmission = submission;
|
|
35
157
|
});
|
|
36
|
-
// Set up debounced auto-save function
|
|
37
|
-
this.debouncedAutoSave = debounce(async (values) => {
|
|
38
|
-
|
|
39
|
-
}, this.autoSaveDelay);
|
|
158
|
+
// Set up debounced auto-save function (currently disabled)
|
|
159
|
+
// this.debouncedAutoSave = debounce(async (values: { [name: string]: any }) => {
|
|
160
|
+
// // await this.handleAutoSave(values); // Disabled for now
|
|
161
|
+
// }, this.autoSaveDelay);
|
|
162
|
+
// Set up throttled manual save function (5 seconds) - fires immediately, then throttles
|
|
163
|
+
this.debouncedManualSave = throttle(async (values) => {
|
|
164
|
+
await this.handleManualSave(values);
|
|
165
|
+
}, 2000, { leading: true, trailing: false });
|
|
40
166
|
if (this.formId && this.version) {
|
|
41
167
|
await this.loadForm();
|
|
42
168
|
}
|
|
@@ -57,19 +183,63 @@ export class UdpFormsRenderer {
|
|
|
57
183
|
if (existingData.status === 2) {
|
|
58
184
|
this.isSubmitted = true;
|
|
59
185
|
}
|
|
60
|
-
// Process file data to convert file references to UdpDriveFile objects
|
|
61
|
-
this.initialValues = await this.processInitialValues(this.initialValues);
|
|
62
186
|
this.currentFormData = Object.assign({}, this.initialValues);
|
|
63
187
|
if (existingData.status === 2 || existingData.status === 'submitted') {
|
|
64
188
|
this.isSubmitted = true;
|
|
65
189
|
}
|
|
66
190
|
}
|
|
67
191
|
}
|
|
192
|
+
this.initializeDynamicSections();
|
|
68
193
|
}
|
|
69
194
|
catch (error) {
|
|
70
195
|
console.error('Failed to load form:', error);
|
|
71
196
|
}
|
|
72
197
|
}
|
|
198
|
+
// build dynamic sections based on the
|
|
199
|
+
initializeDynamicSections() {
|
|
200
|
+
var _a;
|
|
201
|
+
const tempDynamicSection = [];
|
|
202
|
+
const sortedSections = structuredClone(this.form.udpFormUdpFormSection).sort((a, b) => a.order - b.order);
|
|
203
|
+
for (const section of sortedSections) {
|
|
204
|
+
section.name = `section${section.order}`; // THIS LINE WILL NOT BE NECESSARY SOON AFTER BACKEND UPDATE
|
|
205
|
+
section.sectionProperties = JSON.parse(section.sectionProperties || "{}");
|
|
206
|
+
const repeatGroupKeys = this.findRepeatGroupKeys(section.name, this.initialValues);
|
|
207
|
+
section.isOriginalSection = true;
|
|
208
|
+
section.sectionPositionSuffix = 1; // default position
|
|
209
|
+
// always add the original section into dynamic sections
|
|
210
|
+
tempDynamicSection.push(Object.assign(Object.assign({}, structuredClone(section)), { formQuestions: structuredClone(this.form.formQuestions)
|
|
211
|
+
.filter(q => q.formSectionId === section.id)
|
|
212
|
+
.sort((a, b) => a.questionOrder - b.questionOrder)
|
|
213
|
+
.map(q => (Object.assign(Object.assign({}, q), { processedSubmissionName: `${section.name}-${q.name}` }))) }));
|
|
214
|
+
// create then add additional sections if there are repeated sections
|
|
215
|
+
if (((_a = section.sectionProperties) === null || _a === void 0 ? void 0 : _a.isRepeatable) && repeatGroupKeys.length > 0) {
|
|
216
|
+
const maxRepeatedSectionSuffix = Math.max(...repeatGroupKeys); // create a new section for the max value of repeat group keys, even if there are no saved answers
|
|
217
|
+
// for (const repeatKey of repeatGroupKeys) { // create a section only for the suffix saved
|
|
218
|
+
for (let repeatKey = 2; repeatKey <= maxRepeatedSectionSuffix; repeatKey++) {
|
|
219
|
+
const clonedSection = Object.assign(Object.assign({}, structuredClone(section)), { formQuestions: structuredClone(this.form.formQuestions)
|
|
220
|
+
.filter(q => q.formSectionId === section.id)
|
|
221
|
+
.sort((a, b) => a.questionOrder - b.questionOrder)
|
|
222
|
+
.map(q => (Object.assign(Object.assign({}, q), { processedSubmissionName: `${section.name}_${repeatKey}-${q.name}` }))), isOriginalSection: false, sectionPositionSuffix: repeatKey });
|
|
223
|
+
tempDynamicSection.push(clonedSection);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
console.log('tempDynamicSection', tempDynamicSection);
|
|
228
|
+
this.dynamicSections = tempDynamicSection;
|
|
229
|
+
}
|
|
230
|
+
findRepeatGroupKeys(sectionName, values) {
|
|
231
|
+
const keys = Object.keys(values);
|
|
232
|
+
const repeatGroupSet = new Set();
|
|
233
|
+
// Match: sectionName_2-question1
|
|
234
|
+
const regex = new RegExp(`^${sectionName}_(\\d+)-`);
|
|
235
|
+
keys.forEach(key => {
|
|
236
|
+
const match = key.match(regex);
|
|
237
|
+
if (match && match[1]) {
|
|
238
|
+
repeatGroupSet.add(Number(match[1]));
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
return Array.from(repeatGroupSet).sort((a, b) => a - b);
|
|
242
|
+
}
|
|
73
243
|
async handleSubmit(values) {
|
|
74
244
|
try {
|
|
75
245
|
const success = await this.formHandler.submitForm(values);
|
|
@@ -80,163 +250,6 @@ export class UdpFormsRenderer {
|
|
|
80
250
|
throw error;
|
|
81
251
|
}
|
|
82
252
|
}
|
|
83
|
-
async handleAutoSave(values) {
|
|
84
|
-
// Only auto-save if handler supports it and user is authenticated
|
|
85
|
-
if (!this.formHandler.supportsAutoSave() || !this.userId || !this.formHandler.saveFormData) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
this.isSaving = true;
|
|
89
|
-
this.saveError = null;
|
|
90
|
-
try {
|
|
91
|
-
await this.formHandler.saveFormData(values, 'in-progress');
|
|
92
|
-
this.currentFormData = Object.assign({}, values);
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
console.error('Auto-save failed:', error);
|
|
96
|
-
this.saveError = 'Failed to save form data';
|
|
97
|
-
}
|
|
98
|
-
finally {
|
|
99
|
-
this.isSaving = false;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Process initial values to convert file references to UdpDriveFile objects
|
|
104
|
-
*/
|
|
105
|
-
async processInitialValues(values) {
|
|
106
|
-
const processedValues = Object.assign({}, values);
|
|
107
|
-
for (const [key, value] of Object.entries(values)) {
|
|
108
|
-
if (typeof value === 'string' && this.isFileReference(value)) {
|
|
109
|
-
processedValues[key] = await this.parseFileReferences(value);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return processedValues;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Check if a string value is a file reference (contains | and udp: or b64:)
|
|
116
|
-
*/
|
|
117
|
-
isFileReference(value) {
|
|
118
|
-
return typeof value === 'string' && value.includes('|') && (value.includes('udp:') || value.includes('b64:'));
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Parse file references from the special format: "filename|udp:driveFileId" or "filename|b64:base64data"
|
|
122
|
-
*/
|
|
123
|
-
async parseFileReferences(value) {
|
|
124
|
-
const references = value.split(',').map(ref => ref.trim()).filter(ref => ref);
|
|
125
|
-
const udpDriveFiles = [];
|
|
126
|
-
for (const reference of references) {
|
|
127
|
-
try {
|
|
128
|
-
const udpDriveFile = await this.parseFileReference(reference);
|
|
129
|
-
if (udpDriveFile) {
|
|
130
|
-
udpDriveFiles.push(udpDriveFile);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
console.error('Error parsing file reference:', reference, error);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return udpDriveFiles;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Parse a single file reference
|
|
141
|
-
*/
|
|
142
|
-
async parseFileReference(reference) {
|
|
143
|
-
const parts = reference.split('|');
|
|
144
|
-
if (parts.length !== 2) {
|
|
145
|
-
console.warn('Invalid file reference format:', reference);
|
|
146
|
-
return null;
|
|
147
|
-
}
|
|
148
|
-
const [filename, dataRef] = parts;
|
|
149
|
-
if (dataRef.startsWith('udp:')) {
|
|
150
|
-
// Handle UDP Drive file reference
|
|
151
|
-
const driveFileId = dataRef.substring(4); // Remove 'udp:' prefix
|
|
152
|
-
return await this.createUdpDriveFileFromId(filename, driveFileId);
|
|
153
|
-
}
|
|
154
|
-
else if (dataRef.startsWith('b64:')) {
|
|
155
|
-
// Handle base64 encoded file
|
|
156
|
-
const base64Data = dataRef.substring(4); // Remove 'b64:' prefix
|
|
157
|
-
return this.createUdpDriveFileFromBase64(filename, base64Data);
|
|
158
|
-
}
|
|
159
|
-
console.warn('Unknown file reference format:', dataRef);
|
|
160
|
-
return null;
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Create a UdpDriveFile from a drive file ID
|
|
164
|
-
*/
|
|
165
|
-
async createUdpDriveFileFromId(filename, driveFileId) {
|
|
166
|
-
// Extract file extension from filename
|
|
167
|
-
const extension = filename.split('.').pop() || '';
|
|
168
|
-
// Create a placeholder File object - the actual content will be downloaded when needed
|
|
169
|
-
const placeholderBlob = new Blob([''], { type: this.getMimeTypeFromExtension(extension) });
|
|
170
|
-
const file = new File([placeholderBlob], filename, {
|
|
171
|
-
type: placeholderBlob.type,
|
|
172
|
-
lastModified: Date.now()
|
|
173
|
-
});
|
|
174
|
-
// Create UdpDriveFile by extending the File object
|
|
175
|
-
const udpDriveFile = file;
|
|
176
|
-
// Add UDP-specific properties
|
|
177
|
-
udpDriveFile.driveFileId = driveFileId;
|
|
178
|
-
udpDriveFile.tenantId = this.tenantId;
|
|
179
|
-
udpDriveFile.productId = 0; // Will be filled by server
|
|
180
|
-
udpDriveFile.path = '';
|
|
181
|
-
udpDriveFile.extension = extension;
|
|
182
|
-
return udpDriveFile;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Create a UdpDriveFile from base64 data
|
|
186
|
-
*/
|
|
187
|
-
createUdpDriveFileFromBase64(filename, base64Data) {
|
|
188
|
-
// Extract file extension from filename
|
|
189
|
-
const extension = filename.split('.').pop() || '';
|
|
190
|
-
// Decode base64 data
|
|
191
|
-
const binaryString = atob(base64Data);
|
|
192
|
-
const bytes = new Uint8Array(binaryString.length);
|
|
193
|
-
for (let i = 0; i < binaryString.length; i++) {
|
|
194
|
-
bytes[i] = binaryString.charCodeAt(i);
|
|
195
|
-
}
|
|
196
|
-
const blob = new Blob([bytes], { type: this.getMimeTypeFromExtension(extension) });
|
|
197
|
-
// Create a UdpDriveFile that extends File
|
|
198
|
-
const udpDriveFile = new File([blob], filename, {
|
|
199
|
-
type: blob.type,
|
|
200
|
-
lastModified: Date.now()
|
|
201
|
-
});
|
|
202
|
-
// Add UDP-specific properties
|
|
203
|
-
udpDriveFile.driveFileId = ''; // No drive file ID for base64 files
|
|
204
|
-
udpDriveFile.tenantId = this.tenantId;
|
|
205
|
-
udpDriveFile.productId = 0;
|
|
206
|
-
udpDriveFile.path = '';
|
|
207
|
-
udpDriveFile.extension = extension;
|
|
208
|
-
return udpDriveFile;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Get MIME type from file extension
|
|
212
|
-
*/
|
|
213
|
-
getMimeTypeFromExtension(extension) {
|
|
214
|
-
const mimeTypes = {
|
|
215
|
-
'pdf': 'application/pdf',
|
|
216
|
-
'doc': 'application/msword',
|
|
217
|
-
'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
218
|
-
'xls': 'application/vnd.ms-excel',
|
|
219
|
-
'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
220
|
-
'ppt': 'application/vnd.ms-powerpoint',
|
|
221
|
-
'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
222
|
-
'txt': 'text/plain',
|
|
223
|
-
'csv': 'text/csv',
|
|
224
|
-
'json': 'application/json',
|
|
225
|
-
'xml': 'application/xml',
|
|
226
|
-
'html': 'text/html',
|
|
227
|
-
'css': 'text/css',
|
|
228
|
-
'js': 'application/javascript',
|
|
229
|
-
'png': 'image/png',
|
|
230
|
-
'jpg': 'image/jpeg',
|
|
231
|
-
'jpeg': 'image/jpeg',
|
|
232
|
-
'gif': 'image/gif',
|
|
233
|
-
'svg': 'image/svg+xml',
|
|
234
|
-
'zip': 'application/zip',
|
|
235
|
-
'rar': 'application/x-rar-compressed',
|
|
236
|
-
'7z': 'application/x-7z-compressed'
|
|
237
|
-
};
|
|
238
|
-
return mimeTypes[extension.toLowerCase()] || 'application/octet-stream';
|
|
239
|
-
}
|
|
240
253
|
render() {
|
|
241
254
|
if (this.loading) {
|
|
242
255
|
return (h("div", { class: "loading-container" }, h("unity-spinner", { size: "medium" })));
|
|
@@ -244,7 +257,7 @@ export class UdpFormsRenderer {
|
|
|
244
257
|
if (!this.form) {
|
|
245
258
|
return (h("div", { class: "error-container" }, h("unity-typography", { variant: "body1" }, "Form not found")));
|
|
246
259
|
}
|
|
247
|
-
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,
|
|
260
|
+
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}` })));
|
|
248
261
|
}
|
|
249
262
|
static get is() { return "udp-forms-renderer"; }
|
|
250
263
|
static get encapsulation() { return "shadow"; }
|
|
@@ -419,7 +432,10 @@ export class UdpFormsRenderer {
|
|
|
419
432
|
"currentFormData": {},
|
|
420
433
|
"isSaving": {},
|
|
421
434
|
"saveError": {},
|
|
422
|
-
"isSubmitted": {}
|
|
435
|
+
"isSubmitted": {},
|
|
436
|
+
"dynamicSections": {},
|
|
437
|
+
"isUpdatingSections": {},
|
|
438
|
+
"reRenderKey": {}
|
|
423
439
|
};
|
|
424
440
|
}
|
|
425
441
|
static get elementRef() { return "el"; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"udp-forms-renderer.js","sourceRoot":"","sources":["../../../../../../../src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.tsx"],"names":[],"mappings":"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","sourcesContent":["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"]}
|
|
1
|
+
{"version":3,"file":"udp-forms-renderer.js","sourceRoot":"","sources":["../../../../../../../src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.tsx"],"names":[],"mappings":"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","sourcesContent":["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"]}
|