udp-stencil-component-library 25.18.2-beta.4 → 25.18.2-beta.5
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/date-time-renderer.file-upload-renderer.form-metadata-display-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.cjs.js.map +1 -1
- package/dist/cjs/date-time-renderer_7.cjs.entry.js +13 -13
- package/dist/cjs/{enums-DVbZnzL8.js → enums-CgcTuQjC.js} +8 -2
- package/dist/cjs/enums-CgcTuQjC.js.map +1 -0
- package/dist/cjs/form-metadata-display.image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comments.udp-save-draft-button.entry.cjs.js.map +1 -1
- package/dist/cjs/form-metadata-display_8.cjs.entry.js +10 -10
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.entry.cjs.js.map +1 -1
- package/dist/cjs/question-configs-renderer_4.cjs.entry.js +7 -7
- package/dist/cjs/stencil-library.cjs.js +1 -1
- package/dist/cjs/{udp-forms-builder-question-template-CNONS2l5.js → udp-forms-builder-question-template-BMMpObLX.js} +3 -3
- package/dist/cjs/udp-forms-builder-question-template-BMMpObLX.js.map +1 -0
- package/dist/cjs/udp-forms-builder.cjs.entry.js +2 -2
- package/dist/cjs/udp-forms-builder.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-forms-follow-up-list-card.cjs.entry.js +3 -3
- package/dist/cjs/udp-forms-follow-up-list-card.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-forms-list-card.cjs.entry.js +6 -6
- package/dist/cjs/udp-forms-list-card.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-forms-list.cjs.entry.js +2 -2
- package/dist/cjs/udp-forms-list.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-forms-renderer.cjs.entry.js +270 -202
- package/dist/cjs/udp-forms-renderer.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-forms-ui.cjs.entry.js +6 -6
- package/dist/cjs/udp-forms-ui.entry.cjs.js.map +1 -1
- package/dist/cjs/{utils-DZ_OMtAy.js → utils-Bp02BX38.js} +8 -8
- package/dist/cjs/utils-Bp02BX38.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/forms-builder-utils.js +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/forms-builder-utils.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/date-time-renderer/date-time-renderer.js +3 -3
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/date-time-renderer/date-time-renderer.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/file-upload-renderer/file-upload-renderer.js +4 -4
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/file-upload-renderer/file-upload-renderer.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/form-metadata-display-renderer/form-metadata-display-renderer.js +5 -5
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/form-metadata-display-renderer/form-metadata-display-renderer.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/list-option-renderer/list-options-renderer.js +5 -5
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/list-option-renderer/list-options-renderer.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-configs-renderer/question-configs-renderer.js +6 -6
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-configs-renderer/question-configs-renderer.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer/question-specific-configs-renderer.js +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer/question-specific-configs-renderer.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/signature-renderer/signature-renderer.js +3 -3
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/signature-renderer/signature-renderer.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/text-input-renderer/text-input-renderer.js +4 -4
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/text-input-renderer/text-input-renderer.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-question-template.js +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-question-template.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.js +3 -3
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-list/udp-forms-list-card/udp-forms-list-card.js +7 -7
- package/dist/collection/components/forms/udp-forms/udp-forms-list/udp-forms-list-card/udp-forms-list-card.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-list/udp-forms-list.js +2 -2
- package/dist/collection/components/forms/udp-forms/udp-forms-list/udp-forms-list.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-follow-up-list-card/udp-forms-follow-up-list-card.js +3 -3
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-follow-up-list-card/udp-forms-follow-up-list-card.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-ui/udp-forms-ui.js +13 -13
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-ui/udp-forms-ui.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-utils.js +195 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-utils.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js +86 -238
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/classes/UdpForm.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/classes/UdpFormSubmission.js +4 -12
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/classes/UdpFormSubmission.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/enums.js +6 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/enums.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/form-handler/IFormHandler.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/form-handler/UdpFormHandler.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/form-submission-handler/FormSubmissionHandlerFactory.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/form-submission-handler/IFormSubmissionHandler.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/form-submission-handler/PrivateFormSubmissionHandler.js +6 -4
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/form-submission-handler/PrivateFormSubmissionHandler.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/form-submission-handler/PublicFormSubmissionHandler.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/form-submission-handler/formUtils.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/types.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/utils.js +5 -5
- package/dist/collection/components/forms/udp-forms/udp-forms-utils/utils.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/udp-question/udp-question-comment/udp-question-comments.js +10 -10
- package/dist/collection/components/forms/udp-forms/udp-question/udp-question-comment/udp-question-comments.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-question/udp-question.js +13 -13
- package/dist/collection/components/forms/udp-forms/udp-question/udp-question.js.map +1 -1
- package/dist/collection/components/inputs/form metadata display/form-metadata-display.js +2 -2
- package/dist/collection/components/inputs/form metadata display/form-metadata-display.js.map +1 -1
- package/dist/components/date-time-renderer2.js.map +1 -1
- package/dist/components/enums.js +7 -1
- package/dist/components/enums.js.map +1 -1
- package/dist/components/file-upload-renderer2.js +2 -2
- package/dist/components/file-upload-renderer2.js.map +1 -1
- package/dist/components/form-metadata-display-renderer2.js +3 -3
- package/dist/components/form-metadata-display-renderer2.js.map +1 -1
- package/dist/components/form-metadata-display2.js +1 -1
- package/dist/components/form-metadata-display2.js.map +1 -1
- package/dist/components/forms-builder-utils.js.map +1 -1
- package/dist/components/list-options-renderer2.js +3 -3
- package/dist/components/list-options-renderer2.js.map +1 -1
- package/dist/components/question-configs-renderer2.js +5 -5
- package/dist/components/question-configs-renderer2.js.map +1 -1
- package/dist/components/question-specific-configs-renderer2.js.map +1 -1
- package/dist/components/signature-renderer2.js +1 -1
- package/dist/components/signature-renderer2.js.map +1 -1
- package/dist/components/text-input-renderer2.js +2 -2
- package/dist/components/text-input-renderer2.js.map +1 -1
- package/dist/components/udp-forms-builder.js.map +1 -1
- package/dist/components/udp-forms-follow-up-list-card.js +2 -2
- package/dist/components/udp-forms-follow-up-list-card.js.map +1 -1
- package/dist/components/udp-forms-list-card2.js +4 -4
- package/dist/components/udp-forms-list-card2.js.map +1 -1
- package/dist/components/udp-forms-list.js +1 -1
- package/dist/components/udp-forms-list.js.map +1 -1
- package/dist/components/udp-forms-renderer.js +273 -207
- package/dist/components/udp-forms-renderer.js.map +1 -1
- package/dist/components/udp-forms-ui2.js +6 -6
- package/dist/components/udp-forms-ui2.js.map +1 -1
- package/dist/components/udp-question-comments2.js +5 -5
- package/dist/components/udp-question-comments2.js.map +1 -1
- package/dist/components/udp-question2.js +4 -4
- package/dist/components/udp-question2.js.map +1 -1
- package/dist/components/utils.js +6 -6
- package/dist/components/utils.js.map +1 -1
- package/dist/docs.json +118 -154
- package/dist/esm/date-time-renderer.file-upload-renderer.form-metadata-display-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.js.map +1 -1
- package/dist/esm/date-time-renderer_7.entry.js +13 -13
- package/dist/esm/{enums-CHxgVY-B.js → enums-DHT5wSnX.js} +9 -3
- package/dist/esm/enums-DHT5wSnX.js.map +1 -0
- package/dist/esm/form-metadata-display.image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comments.udp-save-draft-button.entry.js.map +1 -1
- package/dist/esm/form-metadata-display_8.entry.js +10 -10
- package/dist/esm/loader.js +1 -1
- package/dist/esm/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.entry.js.map +1 -1
- package/dist/esm/question-configs-renderer_4.entry.js +7 -7
- package/dist/esm/stencil-library.js +1 -1
- package/dist/esm/{udp-forms-builder-question-template-DQJb7f4Y.js → udp-forms-builder-question-template-D6ADNZEG.js} +3 -3
- package/dist/esm/udp-forms-builder-question-template-D6ADNZEG.js.map +1 -0
- package/dist/esm/udp-forms-builder.entry.js +2 -2
- package/dist/esm/udp-forms-builder.entry.js.map +1 -1
- package/dist/esm/udp-forms-follow-up-list-card.entry.js +3 -3
- package/dist/esm/udp-forms-follow-up-list-card.entry.js.map +1 -1
- package/dist/esm/udp-forms-list-card.entry.js +6 -6
- package/dist/esm/udp-forms-list-card.entry.js.map +1 -1
- package/dist/esm/udp-forms-list.entry.js +2 -2
- package/dist/esm/udp-forms-list.entry.js.map +1 -1
- package/dist/esm/udp-forms-renderer.entry.js +270 -202
- package/dist/esm/udp-forms-renderer.entry.js.map +1 -1
- package/dist/esm/udp-forms-ui.entry.js +6 -6
- package/dist/esm/udp-forms-ui.entry.js.map +1 -1
- package/dist/esm/{utils-CiUp9KGZ.js → utils-kwLwITIE.js} +8 -8
- package/dist/esm/utils-kwLwITIE.js.map +1 -0
- package/dist/stencil-library/date-time-renderer.file-upload-renderer.form-metadata-display-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.esm.js.map +1 -1
- package/dist/stencil-library/date-time-renderer_7.entry.js +1 -1
- package/dist/stencil-library/{enums-CHxgVY-B.js → enums-DHT5wSnX.js} +2 -2
- package/dist/stencil-library/enums-DHT5wSnX.js.map +1 -0
- package/dist/stencil-library/form-metadata-display.image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comments.udp-save-draft-button.entry.esm.js.map +1 -1
- package/dist/stencil-library/form-metadata-display_8.entry.js +1 -1
- package/dist/stencil-library/form-metadata-display_8.entry.js.map +1 -1
- package/dist/stencil-library/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.entry.esm.js.map +1 -1
- package/dist/stencil-library/question-configs-renderer_4.entry.js +1 -1
- package/dist/stencil-library/stencil-library.esm.js +1 -1
- package/dist/stencil-library/{udp-forms-builder-question-template-DQJb7f4Y.js → udp-forms-builder-question-template-D6ADNZEG.js} +2 -2
- package/dist/stencil-library/udp-forms-builder-question-template-D6ADNZEG.js.map +1 -0
- package/dist/stencil-library/udp-forms-builder.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-builder.entry.js +1 -1
- package/dist/stencil-library/udp-forms-follow-up-list-card.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-follow-up-list-card.entry.js +1 -1
- package/dist/stencil-library/udp-forms-list-card.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-list-card.entry.js +1 -1
- package/dist/stencil-library/udp-forms-list-card.entry.js.map +1 -1
- package/dist/stencil-library/udp-forms-list.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-list.entry.js +1 -1
- package/dist/stencil-library/udp-forms-renderer.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-renderer.entry.js +1 -1
- package/dist/stencil-library/udp-forms-renderer.entry.js.map +1 -1
- package/dist/stencil-library/udp-forms-ui.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-ui.entry.js +1 -1
- package/dist/stencil-library/udp-forms-ui.entry.js.map +1 -1
- package/dist/stencil-library/{utils-CiUp9KGZ.js → utils-kwLwITIE.js} +1 -1
- package/dist/stencil-library/utils-kwLwITIE.js.map +1 -0
- package/dist/types/components/forms/udp-forms/udp-forms-builder/forms-builder-utils.d.ts +2 -2
- package/dist/types/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/date-time-renderer/date-time-renderer.d.ts +1 -1
- package/dist/types/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/file-upload-renderer/file-upload-renderer.d.ts +1 -1
- package/dist/types/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/form-metadata-display-renderer/form-metadata-display-renderer.d.ts +1 -1
- package/dist/types/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/list-option-renderer/list-options-renderer.d.ts +1 -1
- package/dist/types/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/signature-renderer/signature-renderer.d.ts +1 -1
- package/dist/types/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/text-input-renderer/text-input-renderer.d.ts +1 -1
- package/dist/types/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-question-template.d.ts +1 -1
- package/dist/types/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.d.ts +2 -2
- package/dist/types/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-ui/udp-forms-ui.d.ts +4 -4
- package/dist/types/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-utils.d.ts +12 -0
- package/dist/types/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.d.ts +4 -9
- package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/classes/UdpFormSubmission.d.ts +4 -5
- package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/enums.d.ts +5 -0
- package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/types.d.ts +0 -1
- package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/utils.d.ts +1 -1
- package/dist/types/components/forms/udp-forms/udp-question/udp-question-comment/udp-question-comments.d.ts +2 -2
- package/dist/types/components/forms/udp-forms/udp-question/udp-question.d.ts +4 -4
- package/dist/types/components.d.ts +32 -30
- package/package.json +1 -1
- package/dist/cjs/enums-DVbZnzL8.js.map +0 -1
- package/dist/cjs/udp-forms-builder-question-template-CNONS2l5.js.map +0 -1
- package/dist/cjs/utils-DZ_OMtAy.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/classes/UdpForm.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/classes/UdpFormSubmission.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/enums.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/form-handler/IFormHandler.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/form-handler/UdpFormHandler.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/form-submission-handler/FormSubmissionHandlerFactory.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/form-submission-handler/IFormSubmissionHandler.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/form-submission-handler/PrivateFormSubmissionHandler.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/form-submission-handler/PublicFormSubmissionHandler.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/form-submission-handler/formUtils.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/types.js.map +0 -1
- package/dist/collection/components/forms/udp-forms/utils/utils.js.map +0 -1
- package/dist/esm/enums-CHxgVY-B.js.map +0 -1
- package/dist/esm/udp-forms-builder-question-template-DQJb7f4Y.js.map +0 -1
- package/dist/esm/utils-CiUp9KGZ.js.map +0 -1
- package/dist/stencil-library/enums-CHxgVY-B.js.map +0 -1
- package/dist/stencil-library/udp-forms-builder-question-template-DQJb7f4Y.js.map +0 -1
- package/dist/stencil-library/utils-CiUp9KGZ.js.map +0 -1
- /package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/classes/UdpForm.js +0 -0
- /package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/form-handler/IFormHandler.js +0 -0
- /package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/form-handler/UdpFormHandler.js +0 -0
- /package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/form-submission-handler/FormSubmissionHandlerFactory.js +0 -0
- /package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/form-submission-handler/IFormSubmissionHandler.js +0 -0
- /package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/form-submission-handler/PublicFormSubmissionHandler.js +0 -0
- /package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/form-submission-handler/formUtils.js +0 -0
- /package/dist/collection/components/forms/udp-forms/{utils → udp-forms-utils}/types.js +0 -0
- /package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/classes/UdpForm.d.ts +0 -0
- /package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/form-handler/IFormHandler.d.ts +0 -0
- /package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/form-handler/UdpFormHandler.d.ts +0 -0
- /package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/form-submission-handler/FormSubmissionHandlerFactory.d.ts +0 -0
- /package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/form-submission-handler/IFormSubmissionHandler.d.ts +0 -0
- /package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/form-submission-handler/PrivateFormSubmissionHandler.d.ts +0 -0
- /package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/form-submission-handler/PublicFormSubmissionHandler.d.ts +0 -0
- /package/dist/types/components/forms/udp-forms/{utils → udp-forms-utils}/form-submission-handler/formUtils.d.ts +0 -0
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
2
|
import { throttle } from "lodash";
|
|
3
|
-
import { UdpFormsFieldTypeEnum } from "../utils/enums";
|
|
4
3
|
import { getCurrentTenantId } from "../../../../udp-utilities/tenant/tenantUtils";
|
|
5
4
|
import { fetchLatestForms } from "../udp-forms-list/udp-form-api-utils";
|
|
6
|
-
import { UdpFormsTypeEnum, UdpFormsPageIdEnum } from "../utils/enums";
|
|
7
|
-
import {
|
|
8
|
-
import { FormSubmissionHandlerFactory } from "../utils/form-submission-handler/FormSubmissionHandlerFactory";
|
|
9
|
-
import { UdpFormHandler } from "../utils/form-handler/UdpFormHandler";
|
|
10
|
-
import { UdpFormSubmission } from "../utils/classes/UdpFormSubmission";
|
|
11
|
-
import { UdpForm } from "../utils/classes/UdpForm";
|
|
5
|
+
import { UdpFormsTypeEnum, UdpFormsPageIdEnum, UdpFormsSubmissionStatusEnum, UdpFormsFieldTypeEnum } from "../udp-forms-utils/enums";
|
|
6
|
+
import { buildEmptyCurrentValues } from "../udp-forms-utils/utils";
|
|
7
|
+
import { FormSubmissionHandlerFactory } from "../udp-forms-utils/form-submission-handler/FormSubmissionHandlerFactory";
|
|
8
|
+
import { UdpFormHandler } from "../udp-forms-utils/form-handler/UdpFormHandler";
|
|
9
|
+
import { UdpFormSubmission } from "../udp-forms-utils/classes/UdpFormSubmission";
|
|
10
|
+
import { UdpForm } from "../udp-forms-utils/classes/UdpForm";
|
|
12
11
|
import { v4 as uuidv4 } from "uuid";
|
|
12
|
+
import { applyUrlSeedValuesForAll, initializeDynamicSections, initializeDynamicSectionsWithUrlContext, findRepeatGroupKeys } from "./udp-forms-renderer-utils";
|
|
13
13
|
export class UdpFormsRenderer {
|
|
14
14
|
constructor() {
|
|
15
15
|
this.isPublic = false;
|
|
16
16
|
this.autoSaveDelay = 2000; // Debounce delay for auto-save in milliseconds (currently disabled)
|
|
17
|
-
this.
|
|
17
|
+
this.urlContext = {}; // additional context from URL if needed, eg. generic1, gernic2, generic3, or any initial prepopulated values for form inputs. eg section1.question1 = 'some value'
|
|
18
|
+
this.currentValues = {}; // values of the current form state
|
|
19
|
+
this.formInputSeedValues = {}; // support for a initial set of values to seed the form with
|
|
18
20
|
this.submitSuccessful = false;
|
|
19
|
-
this.currentFormData = {};
|
|
20
21
|
this.isLoading = false;
|
|
21
22
|
this.isSaving = false;
|
|
22
23
|
this.isSubmitted = false;
|
|
@@ -71,7 +72,7 @@ export class UdpFormsRenderer {
|
|
|
71
72
|
return;
|
|
72
73
|
const cloningSectionName = sectionToClone.name;
|
|
73
74
|
// Find existing repeat group indices
|
|
74
|
-
const repeatKeys =
|
|
75
|
+
const repeatKeys = findRepeatGroupKeys(cloningSectionName, this.currentValues);
|
|
75
76
|
const nextRepeatIndex = repeatKeys.length > 0 ? Math.max(...repeatKeys) + 1 : 2;
|
|
76
77
|
const clonedSection = Object.assign(Object.assign({}, structuredClone(sectionToClone)), { formQuestions: sectionToClone.formQuestions.map(q => {
|
|
77
78
|
const newQuestionObj = structuredClone(q);
|
|
@@ -96,13 +97,13 @@ export class UdpFormsRenderer {
|
|
|
96
97
|
...this.dynamicSections.slice(insertAtIndex + 1),
|
|
97
98
|
];
|
|
98
99
|
// Create new initial values structure
|
|
99
|
-
const
|
|
100
|
+
const newCurrentValues = structuredClone(this.udpFormSubmission.data.submissionResponseData);
|
|
100
101
|
clonedSection.formQuestions.forEach(q => {
|
|
101
102
|
var _a, _b, _c, _d;
|
|
102
103
|
const newSectionNameWithSuffix = `${cloningSectionName}_${nextRepeatIndex}`;
|
|
103
104
|
const newQuestionName = q.name;
|
|
104
|
-
if (!
|
|
105
|
-
|
|
105
|
+
if (!newCurrentValues[newSectionNameWithSuffix]) {
|
|
106
|
+
newCurrentValues[newSectionNameWithSuffix] = {};
|
|
106
107
|
}
|
|
107
108
|
// Preserve only Paragraph values from the source section; clear others
|
|
108
109
|
let value = '';
|
|
@@ -124,11 +125,11 @@ export class UdpFormsRenderer {
|
|
|
124
125
|
const paragraphDefault = (_d = fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.paragraphText) !== null && _d !== void 0 ? _d : '';
|
|
125
126
|
value = sourceVal !== null && sourceVal !== void 0 ? sourceVal : paragraphDefault;
|
|
126
127
|
}
|
|
127
|
-
|
|
128
|
+
newCurrentValues[newSectionNameWithSuffix][newQuestionName] = { value, comments: [], metadata: {} };
|
|
128
129
|
});
|
|
129
130
|
// This will trigger a complete form re-render
|
|
130
|
-
this.
|
|
131
|
-
this.udpFormSubmission.data.submissionResponseData = Object.assign({},
|
|
131
|
+
this.currentValues = Object.assign({}, newCurrentValues);
|
|
132
|
+
this.udpFormSubmission.data.submissionResponseData = Object.assign({}, newCurrentValues);
|
|
132
133
|
this.triggerFormRerender();
|
|
133
134
|
}
|
|
134
135
|
finally {
|
|
@@ -152,8 +153,8 @@ export class UdpFormsRenderer {
|
|
|
152
153
|
const deleteSectionName = sectionToDelete.name;
|
|
153
154
|
const deleteSuffix = sectionToDelete.sectionPositionSuffix;
|
|
154
155
|
const sectionKeyToDelete = `${deleteSectionName}_${deleteSuffix}`;
|
|
155
|
-
const
|
|
156
|
-
delete
|
|
156
|
+
const newCurrentValues = Object.assign({}, this.udpFormSubmission.data.submissionResponseData);
|
|
157
|
+
delete newCurrentValues[sectionKeyToDelete];
|
|
157
158
|
// Remove the section from dynamicSections
|
|
158
159
|
const updatedSections = structuredClone(this.dynamicSections);
|
|
159
160
|
updatedSections.splice(index, 1);
|
|
@@ -177,14 +178,14 @@ export class UdpFormsRenderer {
|
|
|
177
178
|
return newSectionQuestion;
|
|
178
179
|
});
|
|
179
180
|
// Move data in initial values
|
|
180
|
-
if (
|
|
181
|
-
|
|
182
|
-
delete
|
|
181
|
+
if (newCurrentValues[oldSectionKey]) {
|
|
182
|
+
newCurrentValues[newSectionKey] = structuredClone(newCurrentValues[oldSectionKey]);
|
|
183
|
+
delete newCurrentValues[oldSectionKey];
|
|
183
184
|
}
|
|
184
185
|
});
|
|
185
186
|
this.dynamicSections = updatedSections;
|
|
186
|
-
this.
|
|
187
|
-
this.udpFormSubmission.data.submissionResponseData = Object.assign({},
|
|
187
|
+
this.currentValues = Object.assign({}, newCurrentValues);
|
|
188
|
+
this.udpFormSubmission.data.submissionResponseData = Object.assign({}, newCurrentValues);
|
|
188
189
|
this.triggerFormRerender();
|
|
189
190
|
}
|
|
190
191
|
finally {
|
|
@@ -202,7 +203,7 @@ export class UdpFormsRenderer {
|
|
|
202
203
|
try {
|
|
203
204
|
const updatedUdpFormSubmission = await this.formSubmissionHandler.saveCurrentFormSubmissionState(values, this.udpFormSubmission);
|
|
204
205
|
this.udpFormSubmission = updatedUdpFormSubmission;
|
|
205
|
-
this.
|
|
206
|
+
this.currentValues = Object.assign({}, (((_a = updatedUdpFormSubmission.data) === null || _a === void 0 ? void 0 : _a.submissionResponseData) || {}));
|
|
206
207
|
if (!new URLSearchParams(window.location.search).has('udpf_submissionId')) {
|
|
207
208
|
// replace the current entry's query string with udpf_submissionId without needing to know the path
|
|
208
209
|
this.replaceUrlWithSubmissionId(updatedUdpFormSubmission.id);
|
|
@@ -227,7 +228,7 @@ export class UdpFormsRenderer {
|
|
|
227
228
|
try {
|
|
228
229
|
const updatedUdpFormSubmission = await this.formSubmissionHandler.saveFormSubmissionComments(values, this.udpFormSubmission);
|
|
229
230
|
this.udpFormSubmission = updatedUdpFormSubmission;
|
|
230
|
-
this.
|
|
231
|
+
this.currentValues = Object.assign({}, (((_a = updatedUdpFormSubmission.data) === null || _a === void 0 ? void 0 : _a.submissionResponseData) || {}));
|
|
231
232
|
this.enqueueSnackbar('Saved sucessfully.', {
|
|
232
233
|
variant: 'success',
|
|
233
234
|
anchorOrigin: { vertical: 'top', horizontal: 'center' },
|
|
@@ -259,7 +260,7 @@ export class UdpFormsRenderer {
|
|
|
259
260
|
try {
|
|
260
261
|
const updatedUdpFormSubmission = await this.formSubmissionHandler.saveCurrentFormSubmissionState(values, this.udpFormSubmission);
|
|
261
262
|
this.udpFormSubmission = updatedUdpFormSubmission;
|
|
262
|
-
this.
|
|
263
|
+
this.currentValues = Object.assign({}, (((_a = updatedUdpFormSubmission.data) === null || _a === void 0 ? void 0 : _a.submissionResponseData) || {}));
|
|
263
264
|
if (!new URLSearchParams(window.location.search).has('udpf_submissionId')) {
|
|
264
265
|
// replace the current entry's query string with udpf_submissionId without needing to know the path
|
|
265
266
|
this.replaceUrlWithSubmissionId(updatedUdpFormSubmission.id);
|
|
@@ -309,7 +310,7 @@ export class UdpFormsRenderer {
|
|
|
309
310
|
// create a new follow up form submission instance wiht a link to the parent form submission
|
|
310
311
|
const followUpMasterForm = await this.formHandler.getFormByFormIdAndFormVersion(followUpFormId, followUpFormVersion);
|
|
311
312
|
const followUpSubmissionData = {
|
|
312
|
-
submissionResponseData:
|
|
313
|
+
submissionResponseData: buildEmptyCurrentValues(followUpMasterForm),
|
|
313
314
|
submissionMetadata: {
|
|
314
315
|
ParentSubmission: {
|
|
315
316
|
submissionId: parentFormSubmissionId,
|
|
@@ -362,7 +363,7 @@ export class UdpFormsRenderer {
|
|
|
362
363
|
this.clientUserInfo.email = user.email || null;
|
|
363
364
|
}
|
|
364
365
|
this.formSubmissionHandler = FormSubmissionHandlerFactory.create(this.isPublic, this.clientUserInfo.id);
|
|
365
|
-
this.udpFormSubmission = new UdpFormSubmission({ id: this.submissionId, formId: this.formId, formVersion: this.version, unityUserId: this.clientUserInfo.id, generic1: this.generic1, generic2: this.generic2, generic3: this.generic3 });
|
|
366
|
+
this.udpFormSubmission = new UdpFormSubmission({ id: this.submissionId, formId: this.formId, formVersion: this.version, unityUserId: this.clientUserInfo.id, generic1: this.urlContext.generic1, generic2: this.urlContext.generic2, generic3: this.urlContext.generic3 });
|
|
366
367
|
// fetch existing submission from Udp.FormSubmission if submissionId is provided
|
|
367
368
|
// take exisitng object, and populate with db values, and return new obj with updated values
|
|
368
369
|
if (this.submissionId) {
|
|
@@ -382,18 +383,29 @@ export class UdpFormsRenderer {
|
|
|
382
383
|
this.formHandler = new UdpFormHandler(this.tenantId);
|
|
383
384
|
const formData = await this.formHandler.getFormByFormIdAndFormVersion(formId, formVersion);
|
|
384
385
|
this.udpForm = new UdpForm(formData);
|
|
385
|
-
this.
|
|
386
|
+
this.currentValues = buildEmptyCurrentValues(this.udpForm);
|
|
386
387
|
// if there's existing data, update the form's state
|
|
387
388
|
if (this.udpFormSubmission.data.submissionResponseData) {
|
|
388
|
-
this.
|
|
389
|
-
if (this.udpFormSubmission.status ===
|
|
389
|
+
this.currentValues = Object.assign({}, this.udpFormSubmission.data.submissionResponseData);
|
|
390
|
+
if (this.udpFormSubmission.status === UdpFormsSubmissionStatusEnum.Submitted) {
|
|
390
391
|
this.isSubmitted = true;
|
|
391
392
|
}
|
|
392
393
|
}
|
|
393
|
-
|
|
394
|
-
//
|
|
395
|
-
//
|
|
396
|
-
|
|
394
|
+
// For new submissions (un-instiantiated or in the 'created' status), we allow the seeding of initial values from URL params
|
|
395
|
+
// So we build dynamicSections with urlContext first, then seed values.
|
|
396
|
+
// URL params (udpf_*) may imply repeatable section instances (e.g. section1_3.question1).
|
|
397
|
+
// For existing submissions that are in progress, skip URL-based seeding and do not create additional sections from URL.
|
|
398
|
+
if ((!this.udpFormSubmission.id || this.udpFormSubmission.status === UdpFormsSubmissionStatusEnum.Created) && this.urlContext && Object.keys(this.urlContext).length > 0) {
|
|
399
|
+
this.dynamicSections = initializeDynamicSectionsWithUrlContext(this.udpForm, this.currentValues, this.urlContext);
|
|
400
|
+
const seeded = applyUrlSeedValuesForAll(this.dynamicSections, this.urlContext);
|
|
401
|
+
if (seeded) {
|
|
402
|
+
this.currentValues = seeded;
|
|
403
|
+
this.udpFormSubmission.data.submissionResponseData = Object.assign({}, seeded);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
this.dynamicSections = initializeDynamicSections(this.udpForm, this.currentValues);
|
|
408
|
+
}
|
|
397
409
|
// Set up throttled manual save function (5 seconds) - fires immediately, then throttles
|
|
398
410
|
this.debouncedManualSave = throttle(async (values) => {
|
|
399
411
|
await this.handleManualSave(values);
|
|
@@ -410,136 +422,6 @@ export class UdpFormsRenderer {
|
|
|
410
422
|
this.isLoading = false;
|
|
411
423
|
}
|
|
412
424
|
}
|
|
413
|
-
// build dynamic sections based on the
|
|
414
|
-
initializeDynamicSections() {
|
|
415
|
-
var _a;
|
|
416
|
-
const tempDynamicSection = [];
|
|
417
|
-
const sortedSections = structuredClone(this.udpForm.udpFormUdpFormSection).sort((a, b) => a.order - b.order);
|
|
418
|
-
for (const section of sortedSections) {
|
|
419
|
-
section.sectionProperties = JSON.parse(section.sectionProperties || {});
|
|
420
|
-
const repeatGroupKeys = this.findRepeatGroupKeys(section.name, this.initialValues);
|
|
421
|
-
section.isOriginalSection = true;
|
|
422
|
-
section.sectionPositionSuffix = 1; // default position
|
|
423
|
-
// always add the original section into dynamic sections
|
|
424
|
-
tempDynamicSection.push(Object.assign(Object.assign({}, structuredClone(section)), {
|
|
425
|
-
// dynamicSectionName: section.name,
|
|
426
|
-
formQuestions: structuredClone(this.udpForm.formQuestions)
|
|
427
|
-
.filter(q => q.formSectionId === section.id)
|
|
428
|
-
.sort((a, b) => a.questionOrder - b.questionOrder)
|
|
429
|
-
.map(q => (Object.assign(Object.assign({}, q), { questionIdentifierKey: `${section.name}.${q.name}`, isShowCommentInput: true })))
|
|
430
|
-
}));
|
|
431
|
-
// create then add additional sections if there are repeated sections
|
|
432
|
-
if (((_a = section.sectionProperties) === null || _a === void 0 ? void 0 : _a.isRepeatable) && repeatGroupKeys.length > 0) {
|
|
433
|
-
const maxRepeatedSectionSuffix = Math.max(...repeatGroupKeys); // create a new section for the max value of repeat group keys, even if there are no saved answers
|
|
434
|
-
// for (const repeatKey of repeatGroupKeys) { // create a section only for the suffix saved
|
|
435
|
-
for (let repeatKey = 2; repeatKey <= maxRepeatedSectionSuffix; repeatKey++) {
|
|
436
|
-
const clonedSection = Object.assign(Object.assign({}, structuredClone(section)), { formQuestions: structuredClone(this.udpForm.formQuestions)
|
|
437
|
-
.filter(q => q.formSectionId === section.id)
|
|
438
|
-
.sort((a, b) => a.questionOrder - b.questionOrder)
|
|
439
|
-
.map(q => (Object.assign(Object.assign({}, q), { questionIdentifierKey: `${section.name}_${repeatKey}.${q.name}`, isShowCommentInput: true }))), isOriginalSection: false, sectionPositionSuffix: repeatKey });
|
|
440
|
-
tempDynamicSection.push(clonedSection);
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
this.dynamicSections = tempDynamicSection;
|
|
445
|
-
}
|
|
446
|
-
findRepeatGroupKeys(sectionName, values) {
|
|
447
|
-
const keys = Object.keys(values);
|
|
448
|
-
const repeatGroupSet = new Set();
|
|
449
|
-
// Match: sectionName_2
|
|
450
|
-
const regex = new RegExp(`^${sectionName}_(\\d+)`);
|
|
451
|
-
keys.forEach(key => {
|
|
452
|
-
const match = key.match(regex);
|
|
453
|
-
if (match && match[1]) {
|
|
454
|
-
repeatGroupSet.add(Number(match[1]));
|
|
455
|
-
}
|
|
456
|
-
});
|
|
457
|
-
return Array.from(repeatGroupSet).sort((a, b) => a - b);
|
|
458
|
-
}
|
|
459
|
-
// Build initial values from URL for ALL fields, but do NOT override saved values.
|
|
460
|
-
// For Paragraph, also fall back to the builder's default text when nothing else provided.
|
|
461
|
-
applyUrlInitialValuesForAll() {
|
|
462
|
-
if (!Array.isArray(this.dynamicSections))
|
|
463
|
-
return;
|
|
464
|
-
const urlParams = typeof window !== 'undefined' ? new URLSearchParams(window.location.search) : null;
|
|
465
|
-
// 1) Collect URL values into nested structure: { [sectionKey]: { [questionName]: { value, comments: [] } } }
|
|
466
|
-
const urlValuesNested = {};
|
|
467
|
-
if (urlParams) {
|
|
468
|
-
this.dynamicSections.forEach(section => {
|
|
469
|
-
const sectionKey = section.isOriginalSection
|
|
470
|
-
? section.name
|
|
471
|
-
: `${section.name}_${section.sectionPositionSuffix}`;
|
|
472
|
-
(section.formQuestions || []).forEach(q => {
|
|
473
|
-
if (!q)
|
|
474
|
-
return;
|
|
475
|
-
const candidates = [q.processedSubmissionName, q.questionIdentifierKey, q.name].filter(Boolean);
|
|
476
|
-
let urlVal = null;
|
|
477
|
-
for (const c of candidates) {
|
|
478
|
-
urlVal = urlParams.get(c);
|
|
479
|
-
if (urlVal !== null)
|
|
480
|
-
break;
|
|
481
|
-
}
|
|
482
|
-
if (urlVal !== null) {
|
|
483
|
-
if (!urlValuesNested[sectionKey])
|
|
484
|
-
urlValuesNested[sectionKey] = {};
|
|
485
|
-
urlValuesNested[sectionKey][q.name] = { value: urlVal, comments: [] };
|
|
486
|
-
}
|
|
487
|
-
});
|
|
488
|
-
});
|
|
489
|
-
}
|
|
490
|
-
// 2) Merge with saved values (this.initialValues) taking precedence
|
|
491
|
-
const merged = structuredClone(this.initialValues) || {};
|
|
492
|
-
Object.entries(urlValuesNested).forEach(([sectionKey, qMap]) => {
|
|
493
|
-
if (!merged[sectionKey])
|
|
494
|
-
merged[sectionKey] = {};
|
|
495
|
-
Object.entries(qMap).forEach(([qName, valObj]) => {
|
|
496
|
-
const existing = merged[sectionKey][qName];
|
|
497
|
-
// Only set from URL if no saved value exists (null/undefined/empty-string)
|
|
498
|
-
const isMissing = existing == null ||
|
|
499
|
-
existing.value == null ||
|
|
500
|
-
(typeof existing.value === 'string' && existing.value.trim() === '');
|
|
501
|
-
if (isMissing) {
|
|
502
|
-
merged[sectionKey][qName] = valObj;
|
|
503
|
-
}
|
|
504
|
-
});
|
|
505
|
-
});
|
|
506
|
-
// 3) Paragraph defaults: if still undefined/null, use fieldProperties.paragraphText
|
|
507
|
-
this.dynamicSections.forEach(section => {
|
|
508
|
-
const sectionKey = section.isOriginalSection
|
|
509
|
-
? section.name
|
|
510
|
-
: `${section.name}_${section.sectionPositionSuffix}`;
|
|
511
|
-
if (!merged[sectionKey])
|
|
512
|
-
merged[sectionKey] = {};
|
|
513
|
-
(section.formQuestions || []).forEach(q => {
|
|
514
|
-
var _a;
|
|
515
|
-
if (!q)
|
|
516
|
-
return;
|
|
517
|
-
if (q.fieldTypeId === UdpFormsFieldTypeEnum.Paragraph) {
|
|
518
|
-
const existing = merged[sectionKey][q.name];
|
|
519
|
-
const isMissing = existing == null ||
|
|
520
|
-
existing.value == null ||
|
|
521
|
-
(typeof existing.value === 'string' && existing.value.trim() === '');
|
|
522
|
-
if (isMissing) {
|
|
523
|
-
let fieldProps = q === null || q === void 0 ? void 0 : q.fieldProperties;
|
|
524
|
-
if (typeof fieldProps === 'string') {
|
|
525
|
-
try {
|
|
526
|
-
fieldProps = JSON.parse(fieldProps || '{}');
|
|
527
|
-
}
|
|
528
|
-
catch (_b) {
|
|
529
|
-
fieldProps = {};
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
merged[sectionKey][q.name] = {
|
|
533
|
-
value: (_a = fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.paragraphText) !== null && _a !== void 0 ? _a : '',
|
|
534
|
-
comments: [],
|
|
535
|
-
};
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
});
|
|
539
|
-
});
|
|
540
|
-
this.initialValues = merged;
|
|
541
|
-
this.udpFormSubmission.data.submissionResponseData = Object.assign({}, merged);
|
|
542
|
-
}
|
|
543
425
|
async handleSubmit(values) {
|
|
544
426
|
this.isLoading = true;
|
|
545
427
|
try {
|
|
@@ -596,13 +478,13 @@ export class UdpFormsRenderer {
|
|
|
596
478
|
try {
|
|
597
479
|
const { type, questionIdentifierKey, commentId } = e.detail;
|
|
598
480
|
const [sectionName, questionName] = questionIdentifierKey.split('.');
|
|
599
|
-
let
|
|
481
|
+
let newCurrentValues = structuredClone(this.udpFormSubmission.data.submissionResponseData || {});
|
|
600
482
|
// ensure structure exists WITHOUT overwriting existing data
|
|
601
|
-
if (!
|
|
602
|
-
|
|
603
|
-
if (!
|
|
483
|
+
if (!newCurrentValues[sectionName])
|
|
484
|
+
newCurrentValues[sectionName] = {};
|
|
485
|
+
if (!newCurrentValues[sectionName][questionName]) {
|
|
604
486
|
// create defaults but do not clobber any existing saved shape from submissionResponseData
|
|
605
|
-
|
|
487
|
+
newCurrentValues[sectionName][questionName] = {
|
|
606
488
|
value: '',
|
|
607
489
|
comments: [],
|
|
608
490
|
draftComments: [],
|
|
@@ -611,20 +493,20 @@ export class UdpFormsRenderer {
|
|
|
611
493
|
}
|
|
612
494
|
else {
|
|
613
495
|
// ensure arrays/objects exist so later code can safely push/filter
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
496
|
+
newCurrentValues[sectionName][questionName].comments = (_a = newCurrentValues[sectionName][questionName].comments) !== null && _a !== void 0 ? _a : [];
|
|
497
|
+
newCurrentValues[sectionName][questionName].draftComments = (_b = newCurrentValues[sectionName][questionName].draftComments) !== null && _b !== void 0 ? _b : [];
|
|
498
|
+
newCurrentValues[sectionName][questionName].metadata = (_c = newCurrentValues[sectionName][questionName].metadata) !== null && _c !== void 0 ? _c : {};
|
|
617
499
|
}
|
|
618
500
|
// normalize draftComments to array if needed (back-compat)
|
|
619
|
-
const maybeDraft =
|
|
501
|
+
const maybeDraft = newCurrentValues[sectionName][questionName].draftComments;
|
|
620
502
|
if (maybeDraft && !Array.isArray(maybeDraft)) {
|
|
621
|
-
|
|
503
|
+
newCurrentValues[sectionName][questionName].draftComments = [maybeDraft];
|
|
622
504
|
}
|
|
623
505
|
else if (!maybeDraft) {
|
|
624
|
-
|
|
506
|
+
newCurrentValues[sectionName][questionName].draftComments = [];
|
|
625
507
|
}
|
|
626
|
-
const commentsArr =
|
|
627
|
-
const draftsArr =
|
|
508
|
+
const commentsArr = newCurrentValues[sectionName][questionName].comments || [];
|
|
509
|
+
const draftsArr = newCurrentValues[sectionName][questionName].draftComments || [];
|
|
628
510
|
switch (type) {
|
|
629
511
|
case 'add': {
|
|
630
512
|
const newDraft = {
|
|
@@ -634,7 +516,7 @@ export class UdpFormsRenderer {
|
|
|
634
516
|
timestamp: null,
|
|
635
517
|
};
|
|
636
518
|
// put new draft first so activeDraft === draftComments[0] matches UX
|
|
637
|
-
|
|
519
|
+
newCurrentValues[sectionName][questionName].draftComments = [newDraft, ...draftsArr];
|
|
638
520
|
break;
|
|
639
521
|
}
|
|
640
522
|
case 'save': {
|
|
@@ -650,13 +532,13 @@ export class UdpFormsRenderer {
|
|
|
650
532
|
if (existingIdx !== -1) {
|
|
651
533
|
const newComments = [...commentsArr];
|
|
652
534
|
newComments[existingIdx] = Object.assign({}, savedComment);
|
|
653
|
-
|
|
535
|
+
newCurrentValues[sectionName][questionName].comments = newComments;
|
|
654
536
|
}
|
|
655
537
|
else {
|
|
656
|
-
|
|
538
|
+
newCurrentValues[sectionName][questionName].comments = [...commentsArr, savedComment];
|
|
657
539
|
}
|
|
658
540
|
// remove that draft
|
|
659
|
-
|
|
541
|
+
newCurrentValues[sectionName][questionName].draftComments = draftsArr.filter(d => d.commentId !== commentId);
|
|
660
542
|
break;
|
|
661
543
|
}
|
|
662
544
|
case 'edit': {
|
|
@@ -666,13 +548,13 @@ export class UdpFormsRenderer {
|
|
|
666
548
|
return;
|
|
667
549
|
const draftFromSaved = Object.assign(Object.assign({}, saved), { isDraftComment: true, timestamp: null });
|
|
668
550
|
// Add this draft at the front; keep saved comment intact so content doesn't disappear.
|
|
669
|
-
|
|
670
|
-
|
|
551
|
+
newCurrentValues[sectionName][questionName].draftComments = [draftFromSaved, ...draftsArr];
|
|
552
|
+
newCurrentValues[sectionName][questionName].comments = commentsArr;
|
|
671
553
|
break;
|
|
672
554
|
}
|
|
673
555
|
case 'delete': {
|
|
674
556
|
// mark the comment as deleted and clear its value, then persist.
|
|
675
|
-
|
|
557
|
+
newCurrentValues[sectionName][questionName].comments = commentsArr.map(c => {
|
|
676
558
|
if (c.commentId === commentId) {
|
|
677
559
|
return Object.assign(Object.assign({}, c), { isDeleted: true, value: '', editedTimestamp: new Date().toISOString() });
|
|
678
560
|
}
|
|
@@ -682,18 +564,18 @@ export class UdpFormsRenderer {
|
|
|
682
564
|
}
|
|
683
565
|
case 'editClose': {
|
|
684
566
|
// Cancel edit: remove the draft only, do NOT restore/alter saved comments.
|
|
685
|
-
|
|
567
|
+
newCurrentValues[sectionName][questionName].draftComments = draftsArr.filter(d => d.commentId !== commentId);
|
|
686
568
|
break;
|
|
687
569
|
}
|
|
688
570
|
}
|
|
689
571
|
// if it's a save or delete action, persist immediately
|
|
690
572
|
if (type === 'save' || type === 'delete') {
|
|
691
|
-
this.udpFormSubmission.data.submissionResponseData = Object.assign({},
|
|
692
|
-
await this.handleCommmentUpdate(
|
|
573
|
+
this.udpFormSubmission.data.submissionResponseData = Object.assign({}, newCurrentValues);
|
|
574
|
+
await this.handleCommmentUpdate(newCurrentValues);
|
|
693
575
|
}
|
|
694
576
|
else {
|
|
695
|
-
this.
|
|
696
|
-
this.udpFormSubmission.data.submissionResponseData = Object.assign({},
|
|
577
|
+
this.currentValues = Object.assign({}, newCurrentValues);
|
|
578
|
+
this.udpFormSubmission.data.submissionResponseData = Object.assign({}, newCurrentValues);
|
|
697
579
|
}
|
|
698
580
|
}
|
|
699
581
|
catch (error) {
|
|
@@ -748,7 +630,7 @@ export class UdpFormsRenderer {
|
|
|
748
630
|
return this.isSubmitted || this.udpFormSubmission.unityUserId !== this.clientUserInfo.id;
|
|
749
631
|
}
|
|
750
632
|
render() {
|
|
751
|
-
return (h("div", { key: '
|
|
633
|
+
return (h("div", { key: 'd073bfa6145e449c59dc722723ac82d09730d885', class: "forms-renderer-container", style: this.isLoading ? { minHeight: '100vh' } : {} }, this.renderFollowUpSideSheet(), h("udp-forms-ui", { udpForm: this.udpForm, currentValues: this.currentValues, udpFormSubmission: this.udpFormSubmission, submitSuccessful: this.submitSuccessful, isSaving: this.isSaving, saveErrorMessage: this.saveErrorMessage,
|
|
752
634
|
// showAutoSaveStatus={this.formSubmissionHandler.supportsAutoSave() && !!this.userId}
|
|
753
635
|
readonly: this.isReadOnlyMode, handleSubmit: this.handleSubmit.bind(this), handleSave: values => Promise.resolve(this.debouncedManualSave(values)), handleChange: this.handleFormChange, handleAction: this.triggerAction, handleFinish: this.handleFinish, clientUserInfo: this.clientUserInfo, isSubmitted: this.isSubmitted, dynamicSections: this.dynamicSections, duplicateRepeatableSection: this.duplicateRepeatableSection, deleteRepeatableSection: this.deleteRepeatableSection, key: `form-rerender-key-${this.reRenderKey}`, isShowManualSaveIcon: this.isShowManualSaveIcon(), isLoading: this.isLoading, performBackgroundSaveAndUpdateLocalSubmissionState: this.performBackgroundSaveAndUpdateLocalSubmissionState })));
|
|
754
636
|
}
|
|
@@ -996,51 +878,18 @@ export class UdpFormsRenderer {
|
|
|
996
878
|
"reflect": false,
|
|
997
879
|
"attribute": "history"
|
|
998
880
|
},
|
|
999
|
-
"
|
|
1000
|
-
"type": "
|
|
1001
|
-
"mutable": false,
|
|
1002
|
-
"complexType": {
|
|
1003
|
-
"original": "any",
|
|
1004
|
-
"resolved": "any",
|
|
1005
|
-
"references": {}
|
|
1006
|
-
},
|
|
1007
|
-
"required": false,
|
|
1008
|
-
"optional": false,
|
|
1009
|
-
"docs": {
|
|
1010
|
-
"tags": [],
|
|
1011
|
-
"text": ""
|
|
1012
|
-
},
|
|
1013
|
-
"getter": false,
|
|
1014
|
-
"setter": false,
|
|
1015
|
-
"reflect": false,
|
|
1016
|
-
"attribute": "generic-1"
|
|
1017
|
-
},
|
|
1018
|
-
"generic2": {
|
|
1019
|
-
"type": "any",
|
|
1020
|
-
"mutable": false,
|
|
1021
|
-
"complexType": {
|
|
1022
|
-
"original": "any",
|
|
1023
|
-
"resolved": "any",
|
|
1024
|
-
"references": {}
|
|
1025
|
-
},
|
|
1026
|
-
"required": false,
|
|
1027
|
-
"optional": false,
|
|
1028
|
-
"docs": {
|
|
1029
|
-
"tags": [],
|
|
1030
|
-
"text": ""
|
|
1031
|
-
},
|
|
1032
|
-
"getter": false,
|
|
1033
|
-
"setter": false,
|
|
1034
|
-
"reflect": false,
|
|
1035
|
-
"attribute": "generic-2"
|
|
1036
|
-
},
|
|
1037
|
-
"generic3": {
|
|
1038
|
-
"type": "any",
|
|
881
|
+
"urlContext": {
|
|
882
|
+
"type": "unknown",
|
|
1039
883
|
"mutable": false,
|
|
1040
884
|
"complexType": {
|
|
1041
|
-
"original": "any",
|
|
1042
|
-
"resolved": "any",
|
|
1043
|
-
"references": {
|
|
885
|
+
"original": "Record<string, any>",
|
|
886
|
+
"resolved": "{ [x: string]: any; }",
|
|
887
|
+
"references": {
|
|
888
|
+
"Record": {
|
|
889
|
+
"location": "global",
|
|
890
|
+
"id": "global::Record"
|
|
891
|
+
}
|
|
892
|
+
}
|
|
1044
893
|
},
|
|
1045
894
|
"required": false,
|
|
1046
895
|
"optional": false,
|
|
@@ -1050,16 +899,15 @@ export class UdpFormsRenderer {
|
|
|
1050
899
|
},
|
|
1051
900
|
"getter": false,
|
|
1052
901
|
"setter": false,
|
|
1053
|
-
"
|
|
1054
|
-
"attribute": "generic-3"
|
|
902
|
+
"defaultValue": "{}"
|
|
1055
903
|
}
|
|
1056
904
|
};
|
|
1057
905
|
}
|
|
1058
906
|
static get states() {
|
|
1059
907
|
return {
|
|
1060
|
-
"
|
|
908
|
+
"currentValues": {},
|
|
909
|
+
"formInputSeedValues": {},
|
|
1061
910
|
"submitSuccessful": {},
|
|
1062
|
-
"currentFormData": {},
|
|
1063
911
|
"isLoading": {},
|
|
1064
912
|
"isSaving": {},
|
|
1065
913
|
"isSubmitted": {},
|