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
package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"udp-forms-builder.js","sourceRoot":"","sources":["../../../../../src/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, State, Prop, Watch } from '@stencil/core';\nimport { Guid } from '../utils/types';\nimport { makeApiCall } from '../../../../udp-utilities/api/makeApiCall/makeApiCall';\nimport questionsTemplate from './udp-forms-builder-question-template';\nimport { getIconFromName } from '../../../data-display/icons/iconUtils';\nimport { ConfigService } from '../../../../udp-utilities/api-config';\nimport { getCurrentTenantId } from 'src/udp-utilities/tenant/tenantUtils';\nimport Sortable from 'sortablejs';\nimport { Element } from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { styleOverrideDefault, formSectionDefault, formMetadataDefault, deepCloneFormSections } from './forms-builder-utils';\nimport { UdpFormsPageIdEnum, UdpFormsTypeEnum } from '../utils/enums';\nimport { UdpFormMetadata } from '../utils/types';\n\n@Component({\n tag: 'udp-forms-builder',\n styleUrl: 'udp-forms-builder.css',\n shadow: true,\n})\nexport class UdpFormsBuilder {\n @Element() private hostEl: HTMLElement;\n\n @Prop() formId: Guid;\n @Prop() version: number;\n @Prop() enqueueSnackbar: Function;\n @Prop() closeSnackbar: Function;\n @Prop() history: { push: (path: string) => void };\n @Prop() isFollowUpFormConfigOn: boolean = false; // allow form engine to use follow-up forms feature\n @Prop() isPublicFormConfigOn: boolean = false; // allow form engine to use public forms feature\n @Prop() isCommentingConfigOn: boolean = true; // allow form engine to use commenting feature\n @Prop() formsBuilderUrlPath: string = ''; // alternative path for redirect to the form builder page. If not provided, use default path.\n\n\n @State() formMetadata: UdpFormMetadata = formMetadataDefault as UdpFormMetadata;\n @State() formSections: any[] = [];\n @State() formSectionsDraft: any[] = [];\n @State() isNewForm: boolean = true;\n @State() isMostRecentFormVersion: boolean = false;\n\n @State() isError: boolean = false;\n @State() isLoading: boolean = false;\n\n @State() isShowStyleOverrides: boolean = false;\n @State() isStyleSheetOpen: boolean = false;\n @State() isDialogOpen: boolean = false;\n @State() showMenuAtIndex: { sIndex: number; qIndex: number } | null = null;\n @State() editingQuestion: { sIndex: number; qIndex: number } | null = null;\n @State() editingSection: { sIndex: number } | null = null;\n @State() isQuestionEditorOpen: boolean = false;\n @State() isSectionEditorOpen: boolean = false;\n @State() lookupOptionsDataProcessed: any[] = [];\n\n\n @State() dialogAction: (() => void) | null = null;\n @State() dialogMessage: string = 'Are you sure you want to delete this?';\n\n\n\n private sortableInstances: Sortable[] = [];\n private formsBuilderPageId = UdpFormsPageIdEnum.FormBuilderPageId;\n private formTypeOptions: { value: string; label: string }[] = Object.keys(UdpFormsTypeEnum)\n .filter(key => isNaN(Number(key))) // only keep the named keys\n .map(key => ({\n value: String(UdpFormsTypeEnum[key as keyof typeof UdpFormsTypeEnum]), // cast to string\n label: key,\n }));\n\n // ********************************** API CALLS **********************************\n\n async initializeForm() {\n // set default form values\n this.formMetadata.isPrivate = formMetadataDefault.isPrivate;\n this.formMetadata.tenantId = getCurrentTenantId();\n this.formMetadata.type = formMetadataDefault.type;\n this.formMetadata.version = formMetadataDefault.version;\n this.formMetadata.name = formMetadataDefault.name;\n this.formMetadata.description = formMetadataDefault.description;\n this.formMetadata.styleOverrides = styleOverrideDefault;\n\n try {\n this.isLoading = true;\n\n // get lookup options\n const lookupResponse = await makeApiCall('GET', ConfigService.productV1ApiUrl + '/UdpLookup');\n\n if (!lookupResponse) {\n throw new Error(`Error fetching lookup data`);\n }\n\n\n this.lookupOptionsDataProcessed = lookupResponse.map(lookupObj => {\n return { ...lookupObj, value: lookupObj.id, label: lookupObj.name };\n });\n\n // determine if it's to create a new form, view an old form, or create a new version\n if (this.formId && this.version) {\n const formDataResponse = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/${this.version}/describe`);\n const formLatestVersionResponse = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/describe`);\n\n this.isNewForm = false;\n\n if (!formDataResponse || !formLatestVersionResponse || !formDataResponse.id || !formLatestVersionResponse) {\n throw new Error(`Error fetching form data`);\n }\n\n // view only mode\n if (formDataResponse.id == formLatestVersionResponse.id && formDataResponse.version == formLatestVersionResponse.version) {\n this.isMostRecentFormVersion = true;\n }\n\n // Clone formSections and initialize empty question arrays\n const tempSections = structuredClone(formDataResponse.udpFormUdpFormSection).map(section => ({ ...section, formQuestions: [] }));\n tempSections.forEach(section => {\n if(!section.sectionProperties) {\n section.sectionProperties = {}\n } else {\n section.sectionProperties = JSON.parse(section.sectionProperties)\n }\n })\n\n\n // Map questions into their respective sections\n formDataResponse.formQuestions.forEach(question => {\n const section = tempSections.find(s => s.id === question.formSectionId);\n if (section) {\n const fieldProps = { ...question.fieldProperties };\n\n // Remove items if lookupId exists\n if ('lookupId' in fieldProps && 'items' in fieldProps) {\n delete fieldProps.items;\n }\n\n section.formQuestions.push({\n ...question,\n fieldProperties: fieldProps,\n questionTypeName: this.getQuestionTypeName(question.fieldTypeId),\n isContainsOptionItems: this.getIsContainsOptionItems(question.fieldTypeId),\n icon: this.getIconForQuestion(question.fieldTypeId),\n });\n\n\n }\n });\n\n // Sort questions within each section\n tempSections.forEach(section => {\n section.formQuestions.sort((a, b) => a.questionOrder - b.questionOrder);\n });\n\n // Sort sections\n tempSections.sort((a, b) => a.order - b.order)\n\n\n const { ...metadata } = formDataResponse;\n\n // Merge fetched styleOverrides with defaults\n metadata.styleOverrides = this.deepMerge(styleOverrideDefault, JSON.parse(metadata.styleOverrides) || {});\n\n // Set form metadata and sections\n this.formMetadata = metadata;\n this.formSections = tempSections;\n this.isLoading = false;\n }\n } catch (e) {\n this.isError = true;\n\n this.enqueueSnackbar('Error loading form data', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n } finally {\n this.isLoading = false;\n }\n }\n\n async submitForm() {\n if (!this.isValidForm()) {\n return;\n }\n\n this.isLoading = true;\n\n try {\n // Prepare and send form metadata\n const processedFormMetadata = {\n name: this.formMetadata.name,\n description: this.formMetadata.description,\n tenantId: this.formMetadata.tenantId,\n isPrivate: this.formMetadata.isPrivate,\n type: this.formMetadata.type,\n styleOverrides: JSON.stringify(this.formMetadata.styleOverrides),\n id: this.formMetadata.id,\n version: this.formMetadata.version,\n };\n\n\n const formUrl = `${ConfigService.productV1ApiUrl}/UdpForm${this.isMostRecentFormVersion ? '/versions' : ''}`;\n const formResponse = await makeApiCall('POST', formUrl, processedFormMetadata);\n\n const formId = formResponse.id;\n const formVersion = formResponse.version;\n\n if (!formResponse || !formResponse.id || !formResponse.version) {\n throw new Error(`Invalid form response: ${JSON.stringify(formResponse)}`);\n }\n\n // Prepare and send questions in order\n let sectionOrder = 0;\n let questionOrder = 0;\n const questionRequests: Promise<any>[] = [];\n\n for (const [sIndex, section] of this.formSections.entries()) {\n sectionOrder += 1;\n\n const processedSectionData = {\n ...section,\n formId,\n formVersion,\n order: sectionOrder,\n sectionProperties: JSON.stringify(section.sectionProperties),\n name: `section${sectionOrder}`\n };\n\n const sectionResponse = await makeApiCall('POST', `${ConfigService.productV1ApiUrl}/UdpFormSection`, processedSectionData);\n\n if (!sectionResponse || !sectionResponse.id) {\n throw new Error(`Invalid section response: ${JSON.stringify(sectionResponse)}`);\n }\n\n const sectionId = sectionResponse.id;\n\n for (const question of section.formQuestions) {\n questionOrder += 1;\n\n const processedQuestionData = {\n ...question,\n formId,\n formVersion,\n section: sIndex + 1,\n questionOrder,\n formSectionId: sectionId,\n name: `question${questionOrder}`,\n };\n\n const questionRequest = makeApiCall('POST', `${ConfigService.productV1ApiUrl}/UdpFormQuestion`, processedQuestionData);\n questionRequests.push(questionRequest);\n }\n }\n\n // Wait for all questions to be submitted\n await Promise.all(questionRequests);\n\n this.enqueueSnackbar('Success', {\n variant: 'success',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n\n if(this.formsBuilderUrlPath) {\n this.history.push(`${this.formsBuilderUrlPath}&udpf_formId=${formId}&udpf_version=${formVersion}`);\n return \n }\n\n this.history.push(`/page/${this.formsBuilderPageId}?udpf_formId=${formId}&udpf_version=${formVersion}`);\n } catch (error) {\n console.error('Form submission error:', error);\n this.enqueueSnackbar('Error saving form', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n } finally {\n this.isLoading = false;\n }\n }\n\n // ********************************** STENCIL RELATED **********************************\n\n componentDidLoad() {\n this.initializeSortable();\n }\n\n componentDidUpdate() {\n this.initializeSortable();\n }\n\n componentWillLoad() {\n this.initializeForm();\n }\n\n // @Watch('formSections')\n // onFormSectionsChange(newValue: any[]) {\n // console.log(newValue);\n // }\n\n // @Watch('formMetadata')\n // onFormMetadataChange(newValue) {\n // console.log(newValue);\n // }\n\n @Watch('formId')\n @Watch('version')\n onFormIdOrVersionChange() {\n this.initializeForm();\n }\n\n // ********************************** SORTABLE LOGIC **********************************\n\n private initializeSortable() {\n // sortable only if the form is editable\n if (!(this.isNewForm || this.isMostRecentFormVersion)) {\n return;\n }\n\n this.sortableInstances.forEach(instance => instance.destroy());\n this.sortableInstances = [];\n\n this.formSections.forEach((_, sIndex) => {\n const el = this.hostEl.shadowRoot.querySelector(`#section-${sIndex}`);\n if (el) {\n const sortable = new Sortable(el, {\n animation: 200,\n easing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n draggable: 'udp-forms-builder-question-item',\n handle: '.form-question-drag-handle',\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n direction: 'vertical',\n forceFallback: false,\n dragoverBubble: false,\n swapThreshold: 0.6,\n onEnd: evt => this.handleDragEnd(evt, sIndex),\n });\n this.sortableInstances.push(sortable);\n }\n });\n }\n\n private handleDragEnd(evt: Sortable.SortableEvent, sIndex: number) {\n const oldIndex = evt.oldIndex;\n const newIndex = evt.newIndex;\n if (oldIndex === newIndex || oldIndex == null || newIndex == null) return;\n\n const sectionCopy = structuredClone(this.formSections[sIndex]);\n const [moved] = sectionCopy.formQuestions.splice(oldIndex, 1);\n sectionCopy.formQuestions.splice(newIndex, 0, moved);\n\n // const newFormSections = [...this.formSections];\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections[sIndex] = sectionCopy;\n\n this.formSections = newFormSections;\n }\n\n // ********************************** SIDE SHEET LOGIC **********************************\n\n private toggleStyleSheet = () => {\n this.isStyleSheetOpen = !this.isStyleSheetOpen;\n };\n\n // ********************************** QUESTION HANDLERS **********************************\n private getQuestionTypeName = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.questionTypeName : 'Unknown';\n };\n\n private getIsContainsOptionItems = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.isContainsOptionItems || false : false;\n };\n\n private getIconForQuestion = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.icon : null;\n };\n\n private handleQuestionDelete = (sIndex: number, qIndex: number) => {\n const sectionsCopy = deepCloneFormSections(this.formSections);\n sectionsCopy[sIndex].formQuestions.splice(qIndex, 1);\n this.formSections = sectionsCopy;\n };\n\n private handleQuestionCopy = (sIndex: number, qIndex: number) => {\n const sectionsCopy = deepCloneFormSections(this.formSections);\n const targetQuestion = this.formSections[sIndex].formQuestions[qIndex];\n\n const newQuestion = {\n ...targetQuestion,\n questionText: (targetQuestion.questionText || '') + ' (Copy)',\n id: uuidv4(),\n };\n\n sectionsCopy[sIndex].formQuestions.splice(qIndex + 1, 0, newQuestion);\n this.formSections = sectionsCopy;\n };\n\n private handleQuestionClick = (sIndex: number, qIndex: number) => {\n this.editingQuestion = { sIndex, qIndex };\n this.isQuestionEditorOpen = true;\n this.formSectionsDraft = deepCloneFormSections(this.formSections);\n };\n\n private closeQuestionEditor = () => {\n this.isQuestionEditorOpen = false;\n this.editingQuestion = null;\n this.formSectionsDraft = null;\n };\n\n private addQuestionOfType = (defaultQuestionObj, sIndex?: number, qIndex?: number): { sIndex: number; qIndex: number } => {\n const newQuestion = {\n questionTypeName: defaultQuestionObj.questionTypeName,\n fieldTypeId: defaultQuestionObj.fieldTypeId,\n fieldProperties: defaultQuestionObj.defaultFieldProperties,\n helperText: '',\n questionText: '',\n section: sIndex !== undefined ? sIndex + 1 : this.formSections.length > 0 ? this.formSections[this.formSections.length - 1].formQuestions[0].section : 1, // Assign section based on sIndex or last section\n isContainsOptionItems: defaultQuestionObj.isContainsOptionItems,\n icon: defaultQuestionObj.icon,\n required: false,\n form: null,\n isPrivate: true,\n id: uuidv4(),\n };\n\n const newFormSections = deepCloneFormSections(this.formSections); // Use helper to get a deep copy\n\n let actualSIndex = sIndex;\n let actualQIndex = qIndex;\n\n if (sIndex !== undefined && qIndex !== undefined) {\n // Insert at specific index\n if (newFormSections[sIndex].formQuestions) {\n newFormSections[sIndex].formQuestions.splice(qIndex, 0, newQuestion);\n } else {\n // fallback\n const lastSectionIdx = newFormSections.length - 1;\n newFormSections[lastSectionIdx].formQuestions.push(newQuestion);\n actualSIndex = lastSectionIdx;\n actualQIndex = newFormSections[lastSectionIdx].formQuestions.length - 1;\n }\n } else {\n // Append to the last section or create a new one\n const lastSectionIdx = newFormSections.length - 1;\n if (lastSectionIdx < 0 || newFormSections[lastSectionIdx].formQuestions.length === 0) {\n newFormSections.push({ ...formSectionDefault, formQuestions: [newQuestion] });\n actualSIndex = newFormSections.length - 1;\n actualQIndex = 0;\n } else {\n newFormSections[lastSectionIdx].formQuestions.push(newQuestion);\n actualSIndex = lastSectionIdx;\n actualQIndex = newFormSections[lastSectionIdx].formQuestions.length - 1;\n }\n }\n\n // this.formSections = newFormSections;\n this.formSectionsDraft = newFormSections;\n if (this.showMenuAtIndex) this.showMenuAtIndex = null;\n\n return { sIndex: actualSIndex, qIndex: actualQIndex };\n };\n\n private deepMerge(target: any, source: any): any {\n const output = { ...target };\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n output[key] = this.deepMerge(target[key] || {}, source[key]);\n } else {\n output[key] = source[key];\n }\n }\n return output;\n }\n\n // ********************************** SECTION HANDLERS **********************************\n\n private handleSectionMoveDown = (sIndex: number) => {\n if (sIndex >= this.formSections.length - 1) return;\n\n const sectionsCopy = [...this.formSections];\n [sectionsCopy[sIndex], sectionsCopy[sIndex + 1]] = [sectionsCopy[sIndex + 1], sectionsCopy[sIndex]];\n this.formSections = sectionsCopy;\n };\n\n private handleSectionMoveUp = (sIndex: number) => {\n if (sIndex <= 0) return;\n\n const sectionsCopy = [...this.formSections];\n [sectionsCopy[sIndex], sectionsCopy[sIndex - 1]] = [sectionsCopy[sIndex - 1], sectionsCopy[sIndex]];\n this.formSections = sectionsCopy;\n };\n\n private handleSectionDelete = (sIndex: number) => {\n const newFormSections = [...this.formSections];\n newFormSections.splice(sIndex, 1);\n this.formSections = newFormSections;\n };\n\n private updateFormSectionsWithDraft = () => {\n this.formSections = this.formSectionsDraft;\n this.formSectionsDraft = null;\n };\n\n private hasUnsavedFormSectionsChanges = (): boolean => {\n // return !isEqual(this.formSections, this.formSectionsDraft); // NEED TO INSTALL PACKAGE\n return JSON.stringify(this.formSections) !== JSON.stringify(this.formSectionsDraft); // Breaks on circular refs or non-serializable types (like Dates, Maps, etc.)\n };\n\n private handleSectionEditClick = (sIndex: number) => {\n this.editingSection = { sIndex };\n this.isSectionEditorOpen = true;\n this.formSectionsDraft = deepCloneFormSections(this.formSections);\n };\n\n private closeSectionEditor = () => {\n this.isSectionEditorOpen = false;\n this.editingSection = null;\n this.formSectionsDraft = null;\n };\n\n // ********************************** FORM VALIDATION HELPERS **********************************\n\n private isValidForm(): boolean {\n return this.validateFormMetadata() && this.validateFormSections() && this.validateAllQuestions() ;\n }\n\n private validateFormMetadata(): boolean {\n if (!this.formMetadata.name?.trim()) {\n this.enqueueSnackbar('Please enter a form name.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n\n return true;\n }\n\n private validateFormSections(): boolean {\n if (this.formSections.length < 1) {\n this.enqueueSnackbar('Please add at least one section to the form.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n\n return false;\n }\n\n for (let sIndex = 0; sIndex < this.formSections.length; sIndex++) {\n const formSection = this.formSections[sIndex];\n const questions = formSection?.formQuestions || [];\n\n if (questions.length < 1) {\n const sectionTitle = formSection?.title ? `\"${formSection.title}\"` : `#${sIndex + 1}`;\n this.enqueueSnackbar(`Section ${sectionTitle} must contain at least one question.`, {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n }\n\n return true;\n }\n\n private validateAllQuestions(): boolean {\n for (let sIndex = 0; sIndex < this.formSections.length; sIndex++) {\n const formSection = this.formSections[sIndex];\n const questions = formSection?.formQuestions || [];\n for (let qIndex = 0; qIndex < questions.length; qIndex++) {\n const isValid = this.validateQuestionItem(sIndex, qIndex);\n if (!isValid) {\n this.enqueueSnackbar('Please validate all questions.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n }\n }\n return true;\n }\n\n private validateQuestionItem(sIndex: number, qIndex: number): boolean {\n const questionItem = this.formSections[sIndex].formQuestions[qIndex];\n // Respect template metadata for optional question text (e.g., Paragraph)\n const template = questionsTemplate.find(q => q.fieldTypeId === questionItem.fieldTypeId);\n const requiresQuestionText = !(template && (template as any).questionTextOptional);\n if (requiresQuestionText && !questionItem.questionText) {\n return false;\n }\n\n if (questionItem.isContainsOptionItems) {\n const fieldProps = questionItem.fieldProperties;\n\n // If there's a lookupId, assume it's valid and skip item validation\n if (!fieldProps?.lookupId) {\n // If no items or empty, invalid\n if (!Array.isArray(fieldProps?.items) || fieldProps.items.length === 0) {\n return false;\n }\n\n // Check that each item has both display and value\n const invalidItemExists = fieldProps.items.some(item => !item.display || !item.value);\n\n if (invalidItemExists) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n\n render() {\n if (this.isError) {\n return <div> There is an Error With the Form Builder</div>;\n }\n\n const isEditable = this.isNewForm || this.isMostRecentFormVersion;\n\n return (\n <div>\n {/* FIXME: Review this */}\n <primary-action-header\n title={'UDP Form Builder'}\n actionButtonLabel={isEditable ? (this.isMostRecentFormVersion ? `Create New Version (v.${this.version + 1})` : 'Create New Form') : ''}\n primaryActionClick={isEditable ? () => this.submitForm() : null}\n // HIDE STYLE OVERRIDE IN UI\n defaultActionButtons={\n isEditable ? [{ label: 'Style Overrides', clickHandler: this.toggleStyleSheet, tooltip: 'Style Overrides', visible: false, icon: getIconFromName('settings') }] : []\n }\n tabs={false}\n />\n {/* <udp-side-sheet open={this.isStyleSheetOpen} onUdpSideSheetClose={() => (this.isStyleSheetOpen = false)} title=\"Style Overrides\" position=\"right\" width=\"md\">\n <udp-forms-builder-style-override formMetadata={this.formMetadata} onFormMetadataChange={updated => (this.formMetadata = updated)}></udp-forms-builder-style-override>\n </udp-side-sheet> */}\n\n <udp-side-sheet\n open={this.isQuestionEditorOpen}\n onUdpSideSheetClose={() => this.closeQuestionEditor()}\n onUdpPrimaryButtonClick={() => {\n // don't do anything if no changes are made.\n // it'll close the side sheet without this\n if (!this.hasUnsavedFormSectionsChanges()) {\n return;\n }\n this.updateFormSectionsWithDraft();\n this.closeQuestionEditor();\n }}\n primaryButtonDisabled={!this.hasUnsavedFormSectionsChanges()}\n title=\"Edit Question\"\n position=\"right\"\n width=\"md\"\n primaryButtonLabel=\"Update\"\n >\n {this.isQuestionEditorOpen && (\n <div class=\"question-editor-container\">\n <question-configs-renderer\n formSectionsDraft={this.formSectionsDraft}\n sIndex={this.editingQuestion.sIndex}\n qIndex={this.editingQuestion.qIndex}\n isViewOnly={!isEditable}\n onFormSectionsDraftChange={updated => (this.formSectionsDraft = updated)}\n lookupOptions={this.lookupOptionsDataProcessed}\n formType={this.formMetadata.type}\n isFollowUpFormConfigOn={this.isFollowUpFormConfigOn}\n isCommentingConfigOn={this.isCommentingConfigOn}\n />\n </div>\n )}\n </udp-side-sheet>\n\n <udp-side-sheet\n open={this.isSectionEditorOpen}\n onUdpSideSheetClose={() => this.closeSectionEditor()}\n title=\"Edit Section Fields\"\n position=\"right\"\n width=\"md\"\n primaryButtonDisabled={!this.hasUnsavedFormSectionsChanges()}\n primaryButtonLabel=\"Update\"\n onUdpPrimaryButtonClick={() => {\n // don't do anything if no changes are made.\n // it'll close the side sheet without this\n if (!this.hasUnsavedFormSectionsChanges()) {\n return;\n }\n this.updateFormSectionsWithDraft();\n this.closeSectionEditor();\n }}\n >\n {this.isSectionEditorOpen && (\n <div class=\"section-editor-container\">\n <section-configs-renderer\n formSectionsDraft={this.formSectionsDraft}\n sIndex={this.editingSection.sIndex}\n isViewOnly={!isEditable}\n onFormSectionsDraftChange={updated => (this.formSectionsDraft = updated)}\n />\n </div>\n )}\n </udp-side-sheet>\n <fluent-dialog\n open={this.isDialogOpen}\n message={this.dialogMessage}\n labelOne={'Confirm'}\n labelTwo={'Cancel'}\n actionOne={() => {\n if (typeof this.dialogAction === 'function') {\n this.dialogAction();\n }\n }}\n actionTwo={() => (this.isDialogOpen = false)}\n />\n\n {this.isLoading && <udp-linear-loader />}\n {!this.isLoading && (\n <udp-container maxWidth=\"lg\">\n <div class=\"udp-forms-page\">\n <div class=\"form-details-container\">\n <div class=\"form-details-name-container\">\n {isEditable ? (\n <div class=\"form-details-name-input\">\n <text-field\n label=\"Form Name\"\n value={this.formMetadata.name}\n placeholder=\"Form Name\"\n disabled={!isEditable}\n required={true}\n margin=\"none\"\n maxCharacter={128}\n onInput={e => {\n this.formMetadata = {\n ...this.formMetadata,\n name: (e.target as HTMLInputElement).value,\n };\n }}\n ></text-field>\n </div>\n ) : (\n <div class=\"form-details-name-display\">\n <unity-typography variant={'h2'}>{this.formMetadata.name + ' (View Only)'}</unity-typography>\n </div>\n )}\n </div>\n\n <div class=\"form-details-description-container\">\n {isEditable ? (\n <div class=\"form-details-details-input\">\n <text-area\n label=\"Form Description\"\n value={this.formMetadata.description}\n placeholder=\"Form Description\"\n disabled={!isEditable}\n required={false}\n margin=\"none\"\n maxCharacter={256}\n onInput={e => {\n this.formMetadata = {\n ...this.formMetadata,\n description: (e.target as HTMLInputElement).value,\n };\n }}\n ></text-area>\n </div>\n ) : (\n <div class=\"form-details-description-display\">\n <unity-typography>{this.formMetadata.description}</unity-typography>\n </div>\n )}\n </div>\n {this.isFollowUpFormConfigOn && (\n this.isNewForm ? \n <udp-selector\n label=\"Form Type\"\n key=\"udo-form-type-selector\"\n initialValue={this.formMetadata.type}\n options={this.formTypeOptions}\n disabled={!isEditable || !this.isNewForm}\n required={true}\n onChange={(e: CustomEvent) => {\n this.formMetadata = {\n ...this.formMetadata,\n type: e.detail,\n };\n }}\n /> :\n <div class=\"form-details-version-container\">\n <unity-typography>Form Type: {UdpFormsTypeEnum[this.formMetadata.type]}</unity-typography>\n </div>\n )}\n <div class=\"form-details-version-container\">\n <unity-typography>Version: {this.formMetadata.version}</unity-typography>\n </div>\n {this.isPublicFormConfigOn && (\n <div class=\"form-details-private-container\">\n <div class=\"toggle-container\">\n <stencil-toggle\n label=\"Private Form\"\n margin=\"none\"\n disabled={!isEditable}\n checked={this.formMetadata.isPrivate === true}\n labelPosition=\"right\"\n onToggledChange={() => {\n let newIsPrivate = !this.formMetadata.isPrivate;\n this.formMetadata = {\n ...this.formMetadata,\n isPrivate: newIsPrivate,\n };\n }}\n ></stencil-toggle>\n </div>\n </div>\n )}\n </div>\n\n {isEditable && (\n <div class=\"add-question-button-container\">\n <udp-button\n startIcon={<udp-icon iconName={'add'} color={'inherit'} />}\n onClick={() => {\n const newSectionIndex = this.formSections.length;\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.push({ ...formSectionDefault, order: newSectionIndex + 1, title: `Section ${newSectionIndex + 1}` });\n this.formSections = newFormSections;\n }}\n >\n Add a Section\n </udp-button>\n </div>\n )}\n\n {this.formSections.map((section, sIndex) => {\n return (\n <div key={sIndex} class=\"form-section\">\n <div class=\"form-section-header\">\n <div class=\"form-section-header-title\">\n <unity-typography variant=\"h6\" color=\"inherit\">\n {section.title}\n </unity-typography>\n </div>\n\n {isEditable && (\n <div class=\"form-section-header-actions\">\n {sIndex > 0 && (\n <stencil-icon-button\n icon={getIconFromName('arrowUp')}\n tooltip=\"Move Section Up\"\n onClick={() => {\n this.handleSectionMoveUp(sIndex);\n }}\n />\n )}\n {sIndex < this.formSections.length - 1 && (\n <stencil-icon-button\n icon={getIconFromName('arrowDown')}\n tooltip=\"Move Section Down\"\n onClick={() => {\n this.handleSectionMoveDown(sIndex);\n }}\n />\n )}\n <stencil-icon-button icon={getIconFromName('edit')} tooltip={`Edit Section Fields`} onClick={() => this.handleSectionEditClick(sIndex)} />\n <stencil-icon-button\n icon={getIconFromName('trashCan')}\n tooltip=\"Delete Section\"\n onClick={e => {\n e.stopPropagation();\n this.dialogMessage = 'Are you sure you want to delete this section?';\n this.dialogAction = () => {\n this.handleSectionDelete(sIndex);\n this.isDialogOpen = false;\n };\n\n this.isDialogOpen = true;\n }}\n />\n </div>\n )}\n </div>\n\n <div class=\"form-section-questions-container\">\n {(this.isNewForm || this.isMostRecentFormVersion) && this.showMenuAtIndex && this.showMenuAtIndex.sIndex === sIndex && this.showMenuAtIndex.qIndex === 0 && (\n <udp-forms-builder-menu\n isVisible={true}\n questionsTemplate={questionsTemplate}\n onAddSection={() => {\n const newSectionIndex = this.formSections.length;\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.push({ ...formSectionDefault, order: newSectionIndex, title: `Section ${newSectionIndex + 1}` });\n this.formSections = newFormSections;\n this.showMenuAtIndex = { sIndex: newSectionIndex, qIndex: 0 };\n }}\n onAddQuestion={e => {\n const indices = this.showMenuAtIndex\n ? this.addQuestionOfType(e.detail, this.showMenuAtIndex.sIndex, this.showMenuAtIndex.qIndex)\n : this.addQuestionOfType(e.detail);\n\n this.editingQuestion = { ...indices };\n this.isQuestionEditorOpen = true;\n }}\n onCancelClick={() => (this.showMenuAtIndex = null)}\n />\n )}\n <div class=\"form-section-questions-draggable-container\" id={`section-${sIndex}`}>\n {section.formQuestions.map((questionItem, qIndex) => {\n return (\n <udp-forms-builder-question-item\n key={questionItem.id}\n iconName={questionItem.icon}\n primaryText={`${questionItem.questionText}`}\n secondaryText={questionItem.helperText ? questionItem.helperText : null}\n avatarBackgroundColor={this.validateQuestionItem(sIndex, qIndex) ? 'info' : 'warning'}\n >\n <stencil-chip slot=\"status-chip\" text=\"Required\" showDelete={false} clickable={false} hidden={!questionItem.required} />\n {isEditable && (\n <div slot=\"drag-and-drop\">\n <div class=\"form-question-drag-handle\">\n <div class=\"drag-wrapper\">\n <stencil-icon-button icon={getIconFromName('draggable')} tooltip=\"Move Question\" noBackground={true} />\n </div>\n </div>\n </div>\n )}\n\n <div slot=\"actions\">\n {isEditable ? (\n <fragment>\n <stencil-icon-button\n icon={getIconFromName('edit')}\n tooltip=\"Edit Question Details\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionClick(sIndex, qIndex);\n }}\n noBackground={true}\n />\n <stencil-icon-button\n icon={getIconFromName('copy')}\n tooltip=\"Duplicate Question\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionCopy(sIndex, qIndex);\n }}\n noBackground={true}\n />\n <stencil-icon-button\n icon={getIconFromName('trashCan')}\n tooltip=\"Delete Question\"\n onClick={e => {\n e.stopPropagation();\n this.dialogMessage = 'Are you sure you want to delete this question?';\n this.dialogAction = () => {\n this.handleQuestionDelete(sIndex, qIndex);\n this.isDialogOpen = false;\n };\n this.isDialogOpen = true;\n }}\n noBackground={true}\n />\n </fragment>\n ) : (\n <stencil-icon-button\n icon={getIconFromName('view')}\n tooltip=\"View Question Details\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionClick(sIndex, qIndex);\n }}\n noBackground={true}\n />\n )}\n </div>\n </udp-forms-builder-question-item>\n );\n })}\n </div>\n\n {isEditable &&\n !this.showMenuAtIndex && ( // Only show button if no menu is active\n <div class=\"add-question-to-section-button-container\">\n <udp-button\n variant=\"text\"\n onClick={() => {\n this.showMenuAtIndex = { sIndex: sIndex, qIndex: section.formQuestions.length };\n }}\n startIcon={<udp-icon iconName={'add'} color={'inherit'} />}\n >\n Add a Question\n </udp-button>\n </div>\n )}\n\n {isEditable &&\n this.showMenuAtIndex?.sIndex === sIndex &&\n this.showMenuAtIndex?.qIndex === section.formQuestions.length &&\n section.formQuestions.length > 0 && (\n <udp-forms-builder-menu\n isVisible={true}\n questionsTemplate={questionsTemplate}\n onAddSection={() => {\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.splice(sIndex + 1, 0, []);\n this.formSections = newFormSections;\n this.showMenuAtIndex = null;\n }}\n onAddQuestion={e => {\n if (this.showMenuAtIndex) {\n const indices = this.addQuestionOfType(e.detail, this.showMenuAtIndex.sIndex, this.showMenuAtIndex.qIndex);\n this.editingQuestion = { ...indices };\n this.isQuestionEditorOpen = true;\n }\n }}\n onCancelClick={() => (this.showMenuAtIndex = null)}\n />\n )}\n </div>\n </div>\n );\n })}\n </div>\n </udp-container>\n )}\n </div>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"udp-forms-builder.js","sourceRoot":"","sources":["../../../../../src/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,uDAAuD,CAAC;AACpF,OAAO,iBAAiB,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC7H,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAQhF,MAAM,OAAO,eAAe;IAL5B;QAaU,2BAAsB,GAAY,KAAK,CAAC,CAAC,mDAAmD;QAC5F,yBAAoB,GAAY,KAAK,CAAC,CAAC,gDAAgD;QACvF,yBAAoB,GAAY,IAAI,CAAC,CAAE,8CAA8C;QACrF,wBAAmB,GAAW,EAAE,CAAC,CAAC,6FAA6F;QAG9H,iBAAY,GAAoB,mBAAsC,CAAC;QACvE,iBAAY,GAAU,EAAE,CAAC;QACzB,sBAAiB,GAAU,EAAE,CAAC;QAC9B,cAAS,GAAY,IAAI,CAAC;QAC1B,4BAAuB,GAAY,KAAK,CAAC;QAEzC,YAAO,GAAY,KAAK,CAAC;QACzB,cAAS,GAAY,KAAK,CAAC;QAE3B,yBAAoB,GAAY,KAAK,CAAC;QACtC,qBAAgB,GAAY,KAAK,CAAC;QAClC,iBAAY,GAAY,KAAK,CAAC;QAC9B,oBAAe,GAA8C,IAAI,CAAC;QAClE,oBAAe,GAA8C,IAAI,CAAC;QAClE,mBAAc,GAA8B,IAAI,CAAC;QACjD,yBAAoB,GAAY,KAAK,CAAC;QACtC,wBAAmB,GAAY,KAAK,CAAC;QACrC,+BAA0B,GAAU,EAAE,CAAC;QAGvC,iBAAY,GAAyB,IAAI,CAAC;QAC1C,kBAAa,GAAW,uCAAuC,CAAC;QAIjE,sBAAiB,GAAe,EAAE,CAAC;QACnC,uBAAkB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;QAC1D,oBAAe,GAAuC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;aACxF,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,2BAA2B;aAC7D,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACX,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAoC,CAAC,CAAC,EAAE,iBAAiB;YACxF,KAAK,EAAE,GAAG;SACX,CAAC,CAAC,CAAC;QA+RN,yFAAyF;QAEjF,qBAAgB,GAAG,GAAG,EAAE;YAC9B,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACjD,CAAC,CAAC;QAEF,0FAA0F;QAClF,wBAAmB,GAAG,WAAW,CAAC,EAAE;YAC1C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;YAC5E,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,CAAC,CAAC;QAEM,6BAAwB,GAAG,WAAW,CAAC,EAAE;YAC/C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;YAC5E,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACpE,CAAC,CAAC;QAEM,uBAAkB,GAAG,WAAW,CAAC,EAAE;YACzC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;YAC5E,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,CAAC,CAAC;QAEM,yBAAoB,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE;YAChE,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9D,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACnC,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE;YAC9D,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAEvE,MAAM,WAAW,mCACZ,cAAc,KACjB,YAAY,EAAE,CAAC,cAAc,CAAC,YAAY,IAAI,EAAE,CAAC,GAAG,SAAS,EAC7D,EAAE,EAAE,MAAM,EAAE,GACb,CAAC;YAEF,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YACtE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACnC,CAAC,CAAC;QAEM,wBAAmB,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE;YAC/D,IAAI,CAAC,eAAe,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpE,CAAC,CAAC;QAEM,wBAAmB,GAAG,GAAG,EAAE;YACjC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC,CAAC;QAEM,sBAAiB,GAAG,CAAC,kBAAkB,EAAE,MAAe,EAAE,MAAe,EAAsC,EAAE;YACvH,MAAM,WAAW,GAAG;gBAClB,gBAAgB,EAAE,kBAAkB,CAAC,gBAAgB;gBACrD,WAAW,EAAE,kBAAkB,CAAC,WAAW;gBAC3C,eAAe,EAAE,kBAAkB,CAAC,sBAAsB;gBAC1D,UAAU,EAAE,EAAE;gBACd,YAAY,EAAE,EAAE;gBAChB,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,iDAAiD;gBAC3M,qBAAqB,EAAE,kBAAkB,CAAC,qBAAqB;gBAC/D,IAAI,EAAE,kBAAkB,CAAC,IAAI;gBAC7B,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,IAAI;gBACf,EAAE,EAAE,MAAM,EAAE;aACb,CAAC;YAEF,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,gCAAgC;YAElG,IAAI,YAAY,GAAG,MAAM,CAAC;YAC1B,IAAI,YAAY,GAAG,MAAM,CAAC;YAE1B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjD,2BAA2B;gBAC3B,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;oBAC1C,eAAe,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACN,WAAW;oBACX,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;oBAClD,eAAe,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAChE,YAAY,GAAG,cAAc,CAAC;oBAC9B,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,iDAAiD;gBACjD,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClD,IAAI,cAAc,GAAG,CAAC,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrF,eAAe,CAAC,IAAI,iCAAM,kBAAkB,KAAE,aAAa,EAAE,CAAC,WAAW,CAAC,IAAG,CAAC;oBAC9E,YAAY,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC1C,YAAY,GAAG,CAAC,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,eAAe,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAChE,YAAY,GAAG,cAAc,CAAC;oBAC9B,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAED,uCAAuC;YACvC,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC;YACzC,IAAI,IAAI,CAAC,eAAe;gBAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAEtD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QACxD,CAAC,CAAC;QAcF,yFAAyF;QAEjF,0BAAqB,GAAG,CAAC,MAAc,EAAE,EAAE;YACjD,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO;YAEnD,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5C,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACpG,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACnC,CAAC,CAAC;QAEM,wBAAmB,GAAG,CAAC,MAAc,EAAE,EAAE;YAC/C,IAAI,MAAM,IAAI,CAAC;gBAAE,OAAO;YAExB,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5C,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACpG,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACnC,CAAC,CAAC;QAEM,wBAAmB,GAAG,CAAC,MAAc,EAAE,EAAE;YAC/C,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/C,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;QACtC,CAAC,CAAC;QAEM,gCAA2B,GAAG,GAAG,EAAE;YACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC,CAAC;QAEM,kCAA6B,GAAG,GAAY,EAAE;YACpD,yFAAyF;YACzF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,6EAA6E;QACpK,CAAC,CAAC;QAEM,2BAAsB,GAAG,CAAC,MAAc,EAAE,EAAE;YAClD,IAAI,CAAC,cAAc,GAAG,EAAE,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpE,CAAC,CAAC;QAEM,uBAAkB,GAAG,GAAG,EAAE;YAChC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC,CAAC;KA6fH;IA77BC,kFAAkF;IAElF,KAAK,CAAC,cAAc;QAClB,0BAA0B;QAC1B,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,oBAAoB,CAAC;QAExD,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,qBAAqB;YACrB,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC;YAE9F,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YAGD,IAAI,CAAC,0BAA0B,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAC/D,uCAAY,SAAS,KAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,IAAG;YACtE,CAAC,CAAC,CAAC;YAEH,oFAAoF;YACpF,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,eAAe,YAAY,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,WAAW,CAAC,CAAC;gBACtI,MAAM,yBAAyB,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,eAAe,YAAY,IAAI,CAAC,MAAM,WAAW,CAAC,CAAC;gBAE/H,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBAEvB,IAAI,CAAC,gBAAgB,IAAI,CAAC,yBAAyB,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC;oBAC1G,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC9C,CAAC;gBAED,iBAAiB;gBACjB,IAAI,gBAAgB,CAAC,EAAE,IAAI,yBAAyB,CAAC,EAAE,IAAI,gBAAgB,CAAC,OAAO,IAAI,yBAAyB,CAAC,OAAO,EAAE,CAAC;oBACzH,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;gBACtC,CAAC;gBAED,0DAA0D;gBAC1D,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,iCAAM,OAAO,KAAE,aAAa,EAAE,EAAE,IAAG,CAAC,CAAC;gBACjI,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC5B,IAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;wBAC7B,OAAO,CAAC,iBAAiB,GAAG,EAAE,CAAA;oBAChC,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;oBACnE,CAAC;gBACL,CAAC,CAAC,CAAA;gBAGF,+CAA+C;gBAC/C,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAChD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,aAAa,CAAC,CAAC;oBACxE,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,UAAU,qBAAQ,QAAQ,CAAC,eAAe,CAAE,CAAC;wBAEnD,kCAAkC;wBAClC,IAAI,UAAU,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;4BACtD,OAAO,UAAU,CAAC,KAAK,CAAC;wBAC1B,CAAC;wBAED,OAAO,CAAC,aAAa,CAAC,IAAI,iCACrB,QAAQ,KACX,eAAe,EAAE,UAAU,EAC3B,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAChE,qBAAqB,EAAE,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC1E,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,IACnD,CAAC;oBAGL,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,qCAAqC;gBACrC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC7B,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;gBAC1E,CAAC,CAAC,CAAC;gBAEH,gBAAgB;gBAChB,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;gBAG9C,MAAW,QAAQ,UAAK,gBAAgB,EAAlC,EAAe,CAAmB,CAAC;gBAEzC,6CAA6C;gBAC7C,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;gBAE1G,iCAAiC;gBACjC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;gBAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;gBACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,IAAI,CAAC,eAAe,CAAC,yBAAyB,EAAE;gBAC9C,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;aACxD,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,qBAAqB,GAAG;gBAC5B,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;gBAC5B,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW;gBAC1C,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ;gBACpC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;gBACtC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;gBAC5B,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;gBAChE,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;gBACxB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO;aACnC,CAAC;YAGF,MAAM,OAAO,GAAG,GAAG,aAAa,CAAC,eAAe,WAAW,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7G,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC;YAE/E,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;YAEzC,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;YAED,sCAAsC;YACtC,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,MAAM,gBAAgB,GAAmB,EAAE,CAAC;YAE5C,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC5D,YAAY,IAAI,CAAC,CAAC;gBAElB,MAAM,oBAAoB,mCACrB,OAAO,KACV,MAAM;oBACN,WAAW,EACX,KAAK,EAAE,YAAY,EACnB,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAC5D,IAAI,EAAE,UAAU,YAAY,EAAE,GAC/B,CAAC;gBAEF,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,eAAe,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;gBAE3H,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;gBAClF,CAAC;gBAED,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,CAAC;gBAErC,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;oBAC7C,aAAa,IAAI,CAAC,CAAC;oBAEnB,MAAM,qBAAqB,mCACtB,QAAQ,KACX,MAAM;wBACN,WAAW,EACX,OAAO,EAAE,MAAM,GAAG,CAAC,EACnB,aAAa,EACb,aAAa,EAAE,SAAS,EACxB,IAAI,EAAE,WAAW,aAAa,EAAE,GACjC,CAAC;oBAEF,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,eAAe,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;oBACvH,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,yCAAyC;YACzC,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAEpC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;gBAC9B,OAAO,EAAE,SAAS;gBAClB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;aACxD,CAAC,CAAC;YAEH,IAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,gBAAgB,MAAM,iBAAiB,WAAW,EAAE,CAAC,CAAC;gBACnG,OAAM;YACR,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,gBAAgB,MAAM,iBAAiB,WAAW,EAAE,CAAC,CAAC;QAC1G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE;gBACxC,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;aACxD,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,wFAAwF;IAExF,gBAAgB;QACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,yBAAyB;IACzB,0CAA0C;IAC1C,2BAA2B;IAC3B,IAAI;IAEJ,yBAAyB;IACzB,mCAAmC;IACnC,2BAA2B;IAC3B,IAAI;IAIJ,uBAAuB;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,uFAAuF;IAE/E,kBAAkB;QACxB,wCAAwC;QACxC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAE5B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;YACtE,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE;oBAChC,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,+BAA+B;oBACvC,SAAS,EAAE,iCAAiC;oBAC5C,MAAM,EAAE,4BAA4B;oBACpC,UAAU,EAAE,gBAAgB;oBAC5B,WAAW,EAAE,iBAAiB;oBAC9B,SAAS,EAAE,UAAU;oBACrB,aAAa,EAAE,KAAK;oBACpB,cAAc,EAAE,KAAK;oBACrB,aAAa,EAAE,GAAG;oBAClB,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC;iBAC9C,CAAC,CAAC;gBACH,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,GAA2B,EAAE,MAAc;QAC/D,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI;YAAE,OAAO;QAE1E,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9D,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAErD,kDAAkD;QAClD,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjE,eAAe,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;QAEtC,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;IACtC,CAAC;IA6GO,SAAS,CAAC,MAAW,EAAE,MAAW;QACxC,MAAM,MAAM,qBAAQ,MAAM,CAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAClF,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAgDD,gGAAgG;IAExF,WAAW;QACjB,OAAO,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAE;IACpG,CAAC;IAEO,oBAAoB;;QAC3B,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,YAAY,CAAC,IAAI,0CAAE,IAAI,EAAE,CAAA,EAAE,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,2BAA2B,EAAE;gBAChD,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;aACxD,CAAC,CAAC;YACF,OAAO,KAAK,CAAC;QAChB,CAAC;QAEA,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,8CAA8C,EAAE;gBACnE,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;aACxD,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;YACjE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAa,KAAI,EAAE,CAAC;YAEnD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,EAAC,CAAC,CAAC,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtF,IAAI,CAAC,eAAe,CAAC,WAAW,YAAY,sCAAsC,EAAE;oBAClF,OAAO,EAAE,OAAO;oBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;iBACxD,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB;QAC1B,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;YACjE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAa,KAAI,EAAE,CAAC;YACnD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;gBACzD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,IAAI,CAAC,eAAe,CAAC,gCAAgC,EAAE;wBACrD,OAAO,EAAE,OAAO;wBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;qBACxD,CAAC,CAAC;oBACH,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB,CAAC,MAAc,EAAE,MAAc;QACzD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACrE,yEAAyE;QACzE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW,CAAC,CAAC;QACzF,MAAM,oBAAoB,GAAG,CAAC,CAAC,QAAQ,IAAK,QAAgB,CAAC,oBAAoB,CAAC,CAAC;QACnF,IAAI,oBAAoB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,YAAY,CAAC,qBAAqB,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,YAAY,CAAC,eAAe,CAAC;YAEhD,oEAAoE;YACpE,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,CAAA,EAAE,CAAC;gBAC1B,gCAAgC;gBAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvE,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,kDAAkD;gBAClD,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEtF,IAAI,iBAAiB,EAAE,CAAC;oBACtB,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,MAAM;QACJ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,0DAAmD,CAAC;QAC7D,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC;QAElE,OAAO,CACL;YAEE,6BACE,KAAK,EAAE,kBAAkB,EACzB,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,yBAAyB,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,EACtI,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC/D,4BAA4B;gBAC5B,oBAAoB,EAClB,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAEtK,IAAI,EAAE,KAAK,GACX;YAKF,sBACE,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAC/B,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,EACrD,uBAAuB,EAAE,GAAG,EAAE;oBAC5B,4CAA4C;oBAC5C,0CAA0C;oBAC1C,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,CAAC;wBAC1C,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC,2BAA2B,EAAE,CAAC;oBACnC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,CAAC,EACD,qBAAqB,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAC5D,KAAK,EAAC,eAAe,EACrB,QAAQ,EAAC,OAAO,EAChB,KAAK,EAAC,IAAI,EACV,kBAAkB,EAAC,QAAQ,IAE1B,IAAI,CAAC,oBAAoB,IAAI,CAC5B,WAAK,KAAK,EAAC,2BAA2B;gBACpC,iCACE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EACnC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EACnC,UAAU,EAAE,CAAC,UAAU,EACvB,yBAAyB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,EACxE,aAAa,EAAE,IAAI,CAAC,0BAA0B,EAC9C,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAChC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EACnD,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,GAC/C,CACE,CACP,CACc;YAEjB,sBACE,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAC9B,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EACpD,KAAK,EAAC,qBAAqB,EAC3B,QAAQ,EAAC,OAAO,EAChB,KAAK,EAAC,IAAI,EACV,qBAAqB,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAC5D,kBAAkB,EAAC,QAAQ,EAC3B,uBAAuB,EAAE,GAAG,EAAE;oBAC5B,4CAA4C;oBAC5C,0CAA0C;oBAC1C,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,CAAC;wBAC1C,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC,2BAA2B,EAAE,CAAC;oBACnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,CAAC,IAEA,IAAI,CAAC,mBAAmB,IAAI,CAC3B,WAAK,KAAK,EAAC,0BAA0B;gBACnC,gCACE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAClC,UAAU,EAAE,CAAC,UAAU,EACvB,yBAAyB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,GACxE,CACE,CACP,CACc;YACjB,qBACE,IAAI,EAAE,IAAI,CAAC,YAAY,EACvB,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,GAAG,EAAE;oBACd,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;wBAC5C,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,CAAC;gBACH,CAAC,EACD,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,GAC5C;YAED,IAAI,CAAC,SAAS,IAAI,4BAAqB;YACvC,CAAC,IAAI,CAAC,SAAS,IAAI,CAClB,qBAAe,QAAQ,EAAC,IAAI;gBAC1B,WAAK,KAAK,EAAC,gBAAgB;oBACzB,WAAK,KAAK,EAAC,wBAAwB;wBACjC,WAAK,KAAK,EAAC,6BAA6B,IACrC,UAAU,CAAC,CAAC,CAAC,CACZ,WAAK,KAAK,EAAC,yBAAyB;4BAClC,kBACE,KAAK,EAAC,WAAW,EACjB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAC7B,WAAW,EAAC,WAAW,EACvB,QAAQ,EAAE,CAAC,UAAU,EACrB,QAAQ,EAAE,IAAI,EACd,MAAM,EAAC,MAAM,EACb,YAAY,EAAE,GAAG,EACjB,OAAO,EAAE,CAAC,CAAC,EAAE;oCACX,IAAI,CAAC,YAAY,mCACZ,IAAI,CAAC,YAAY,KACpB,IAAI,EAAG,CAAC,CAAC,MAA2B,CAAC,KAAK,GAC3C,CAAC;gCACJ,CAAC,GACW,CACV,CACP,CAAC,CAAC,CAAC,CACF,WAAK,KAAK,EAAC,2BAA2B;4BACpC,wBAAkB,OAAO,EAAE,IAAI,IAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,cAAc,CAAoB,CACzF,CACP,CACG;wBAEN,WAAK,KAAK,EAAC,oCAAoC,IAC5C,UAAU,CAAC,CAAC,CAAC,CACZ,WAAK,KAAK,EAAC,4BAA4B;4BACrC,iBACE,KAAK,EAAC,kBAAkB,EACxB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EACpC,WAAW,EAAC,kBAAkB,EAC9B,QAAQ,EAAE,CAAC,UAAU,EACrB,QAAQ,EAAE,KAAK,EACf,MAAM,EAAC,MAAM,EACb,YAAY,EAAE,GAAG,EACjB,OAAO,EAAE,CAAC,CAAC,EAAE;oCACX,IAAI,CAAC,YAAY,mCACZ,IAAI,CAAC,YAAY,KACpB,WAAW,EAAG,CAAC,CAAC,MAA2B,CAAC,KAAK,GAClD,CAAC;gCACJ,CAAC,GACU,CACT,CACP,CAAC,CAAC,CAAC,CACF,WAAK,KAAK,EAAC,kCAAkC;4BAC3C,4BAAmB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAoB,CAChE,CACP,CACG;wBACL,IAAI,CAAC,sBAAsB,IAAI,CAC5B,IAAI,CAAC,SAAS,CAAC,CAAC;4BACd,oBACA,KAAK,EAAC,WAAW,EACnB,GAAG,EAAC,wBAAwB,EAC5B,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EACpC,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,QAAQ,EAAE,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,EACxC,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,CAAC,CAAc,EAAE,EAAE;oCAC3B,IAAI,CAAC,YAAY,mCACZ,IAAI,CAAC,YAAY,KACpB,IAAI,EAAE,CAAC,CAAC,MAAM,GACf,CAAC;gCACJ,CAAC,GACC,CAAC,CAAC;4BACJ,WAAK,KAAK,EAAC,gCAAgC;gCACzC;;oCAA8B,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAoB,CACtF,CACT;wBACD,WAAK,KAAK,EAAC,gCAAgC;4BACzC;;gCAA4B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAoB,CACrE;wBACL,IAAI,CAAC,oBAAoB,IAAI,CAC5B,WAAK,KAAK,EAAC,gCAAgC;4BAC3C,WAAK,KAAK,EAAC,kBAAkB;gCAC3B,sBACE,KAAK,EAAC,cAAc,EACpB,MAAM,EAAC,MAAM,EACb,QAAQ,EAAE,CAAC,UAAU,EACrB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,KAAK,IAAI,EAC7C,aAAa,EAAC,OAAO,EACrB,eAAe,EAAE,GAAG,EAAE;wCACpB,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;wCAChD,IAAI,CAAC,YAAY,mCACZ,IAAI,CAAC,YAAY,KACpB,SAAS,EAAE,YAAY,GACxB,CAAC;oCACJ,CAAC,GACiB,CAChB,CACF,CACL,CACG;oBAEL,UAAU,IAAI,CACb,WAAK,KAAK,EAAC,+BAA+B;wBACxC,kBACE,SAAS,EAAE,gBAAU,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAI,EAC1D,OAAO,EAAE,GAAG,EAAE;gCACZ,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gCACjD,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gCACjE,eAAe,CAAC,IAAI,iCAAM,kBAAkB,KAAE,KAAK,EAAE,eAAe,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,eAAe,GAAG,CAAC,EAAE,IAAG,CAAC;gCACrH,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;4BACtC,CAAC,oBAGU,CACT,CACP;oBAEA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;wBACzC,OAAO,CACL,WAAK,GAAG,EAAE,MAAM,EAAE,KAAK,EAAC,cAAc;4BACpC,WAAK,KAAK,EAAC,qBAAqB;gCAC9B,WAAK,KAAK,EAAC,2BAA2B;oCACpC,wBAAkB,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,IAC3C,OAAO,CAAC,KAAK,CACG,CACf;gCAEL,UAAU,IAAI,CACb,WAAK,KAAK,EAAC,6BAA6B;oCACrC,MAAM,GAAG,CAAC,IAAI,CACb,2BACE,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,EAChC,OAAO,EAAC,iBAAiB,EACzB,OAAO,EAAE,GAAG,EAAE;4CACZ,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;wCACnC,CAAC,GACD,CACH;oCACA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CACxC,2BACE,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,EAClC,OAAO,EAAC,mBAAmB,EAC3B,OAAO,EAAE,GAAG,EAAE;4CACZ,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;wCACrC,CAAC,GACD,CACH;oCACD,2BAAqB,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAI;oCAC1I,2BACE,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,EACjC,OAAO,EAAC,gBAAgB,EACxB,OAAO,EAAE,CAAC,CAAC,EAAE;4CACX,CAAC,CAAC,eAAe,EAAE,CAAC;4CACpB,IAAI,CAAC,aAAa,GAAG,+CAA+C,CAAC;4CACrE,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE;gDACvB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gDACjC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;4CAC5B,CAAC,CAAC;4CAEF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCAC3B,CAAC,GACD,CACE,CACP,CACG;4BAEN,WAAK,KAAK,EAAC,kCAAkC;gCAC1C,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,CAC1J,8BACE,SAAS,EAAE,IAAI,EACf,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,GAAG,EAAE;wCACjB,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;wCACjD,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wCACjE,eAAe,CAAC,IAAI,iCAAM,kBAAkB,KAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,eAAe,GAAG,CAAC,EAAE,IAAG,CAAC;wCACjH,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;wCACpC,IAAI,CAAC,eAAe,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;oCAChE,CAAC,EACD,aAAa,EAAE,CAAC,CAAC,EAAE;wCACjB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe;4CAClC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;4CAC5F,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wCAErC,IAAI,CAAC,eAAe,qBAAQ,OAAO,CAAE,CAAC;wCACtC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;oCACnC,CAAC,EACD,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAClD,CACH;gCACD,WAAK,KAAK,EAAC,4CAA4C,EAAC,EAAE,EAAE,WAAW,MAAM,EAAE,IAC5E,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE;oCAClD,OAAO,CACL,uCACE,GAAG,EAAE,YAAY,CAAC,EAAE,EACpB,QAAQ,EAAE,YAAY,CAAC,IAAI,EAC3B,WAAW,EAAE,GAAG,YAAY,CAAC,YAAY,EAAE,EAC3C,aAAa,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EACvE,qBAAqB,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;wCAErF,oBAAc,IAAI,EAAC,aAAa,EAAC,IAAI,EAAC,UAAU,EAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,QAAQ,GAAI;wCACvH,UAAU,IAAI,CACb,WAAK,IAAI,EAAC,eAAe;4CACvB,WAAK,KAAK,EAAC,2BAA2B;gDACpC,WAAK,KAAK,EAAC,cAAc;oDACvB,2BAAqB,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,EAAE,OAAO,EAAC,eAAe,EAAC,YAAY,EAAE,IAAI,GAAI,CACnG,CACF,CACF,CACP;wCAED,WAAK,IAAI,EAAC,SAAS,IAChB,UAAU,CAAC,CAAC,CAAC,CACZ;4CACE,2BACE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAC,uBAAuB,EAC/B,OAAO,EAAE,CAAC,CAAC,EAAE;oDACX,CAAC,CAAC,eAAe,EAAE,CAAC;oDACpB,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gDAC3C,CAAC,EACD,YAAY,EAAE,IAAI,GAClB;4CACF,2BACE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAC,oBAAoB,EAC5B,OAAO,EAAE,CAAC,CAAC,EAAE;oDACX,CAAC,CAAC,eAAe,EAAE,CAAC;oDACpB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gDAC1C,CAAC,EACD,YAAY,EAAE,IAAI,GAClB;4CACF,2BACE,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,EACjC,OAAO,EAAC,iBAAiB,EACzB,OAAO,EAAE,CAAC,CAAC,EAAE;oDACX,CAAC,CAAC,eAAe,EAAE,CAAC;oDACpB,IAAI,CAAC,aAAa,GAAG,gDAAgD,CAAC;oDACtE,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE;wDACvB,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wDAC1C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oDAC5B,CAAC,CAAC;oDACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gDAC3B,CAAC,EACD,YAAY,EAAE,IAAI,GAClB,CACO,CACZ,CAAC,CAAC,CAAC,CACF,2BACE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAC,uBAAuB,EAC/B,OAAO,EAAE,CAAC,CAAC,EAAE;gDACX,CAAC,CAAC,eAAe,EAAE,CAAC;gDACpB,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;4CAC3C,CAAC,EACD,YAAY,EAAE,IAAI,GAClB,CACH,CACG,CAC0B,CACnC,CAAC;gCACJ,CAAC,CAAC,CACE;gCAEL,UAAU;oCACT,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,wCAAwC;gCACjE,WAAK,KAAK,EAAC,0CAA0C;oCACnD,kBACE,OAAO,EAAC,MAAM,EACd,OAAO,EAAE,GAAG,EAAE;4CACZ,IAAI,CAAC,eAAe,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;wCAClF,CAAC,EACD,SAAS,EAAE,gBAAU,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAI,qBAG/C,CACT,CACP;gCAEF,UAAU;oCACT,CAAA,MAAA,IAAI,CAAC,eAAe,0CAAE,MAAM,MAAK,MAAM;oCACvC,CAAA,MAAA,IAAI,CAAC,eAAe,0CAAE,MAAM,MAAK,OAAO,CAAC,aAAa,CAAC,MAAM;oCAC7D,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAClC,8BACE,SAAS,EAAE,IAAI,EACf,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,GAAG,EAAE;wCACjB,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wCACjE,eAAe,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;wCAC1C,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;wCACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oCAC9B,CAAC,EACD,aAAa,EAAE,CAAC,CAAC,EAAE;wCACjB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;4CACzB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;4CAC3G,IAAI,CAAC,eAAe,qBAAQ,OAAO,CAAE,CAAC;4CACtC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;wCACnC,CAAC;oCACH,CAAC,EACD,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAClD,CACH,CACC,CACF,CACP,CAAC;oBACJ,CAAC,CAAC,CACE,CACQ,CACjB,CACG,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, State, Prop, Watch } from '@stencil/core';\nimport { Guid } from '../udp-forms-utils/types';\nimport { makeApiCall } from '../../../../udp-utilities/api/makeApiCall/makeApiCall';\nimport questionsTemplate from './udp-forms-builder-question-template';\nimport { getIconFromName } from '../../../data-display/icons/iconUtils';\nimport { ConfigService } from '../../../../udp-utilities/api-config';\nimport { getCurrentTenantId } from 'src/udp-utilities/tenant/tenantUtils';\nimport Sortable from 'sortablejs';\nimport { Element } from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { styleOverrideDefault, formSectionDefault, formMetadataDefault, deepCloneFormSections } from './forms-builder-utils';\nimport { UdpFormsPageIdEnum, UdpFormsTypeEnum } from '../udp-forms-utils/enums';\nimport { UdpFormMetadata } from '../udp-forms-utils/types';\n\n@Component({\n tag: 'udp-forms-builder',\n styleUrl: 'udp-forms-builder.css',\n shadow: true,\n})\nexport class UdpFormsBuilder {\n @Element() private hostEl: HTMLElement;\n\n @Prop() formId: Guid;\n @Prop() version: number;\n @Prop() enqueueSnackbar: Function;\n @Prop() closeSnackbar: Function;\n @Prop() history: { push: (path: string) => void };\n @Prop() isFollowUpFormConfigOn: boolean = false; // allow form engine to use follow-up forms feature\n @Prop() isPublicFormConfigOn: boolean = false; // allow form engine to use public forms feature\n @Prop() isCommentingConfigOn: boolean = true; // allow form engine to use commenting feature\n @Prop() formsBuilderUrlPath: string = ''; // alternative path for redirect to the form builder page. If not provided, use default path.\n\n\n @State() formMetadata: UdpFormMetadata = formMetadataDefault as UdpFormMetadata;\n @State() formSections: any[] = [];\n @State() formSectionsDraft: any[] = [];\n @State() isNewForm: boolean = true;\n @State() isMostRecentFormVersion: boolean = false;\n\n @State() isError: boolean = false;\n @State() isLoading: boolean = false;\n\n @State() isShowStyleOverrides: boolean = false;\n @State() isStyleSheetOpen: boolean = false;\n @State() isDialogOpen: boolean = false;\n @State() showMenuAtIndex: { sIndex: number; qIndex: number } | null = null;\n @State() editingQuestion: { sIndex: number; qIndex: number } | null = null;\n @State() editingSection: { sIndex: number } | null = null;\n @State() isQuestionEditorOpen: boolean = false;\n @State() isSectionEditorOpen: boolean = false;\n @State() lookupOptionsDataProcessed: any[] = [];\n\n\n @State() dialogAction: (() => void) | null = null;\n @State() dialogMessage: string = 'Are you sure you want to delete this?';\n\n\n\n private sortableInstances: Sortable[] = [];\n private formsBuilderPageId = UdpFormsPageIdEnum.FormBuilderPageId;\n private formTypeOptions: { value: string; label: string }[] = Object.keys(UdpFormsTypeEnum)\n .filter(key => isNaN(Number(key))) // only keep the named keys\n .map(key => ({\n value: String(UdpFormsTypeEnum[key as keyof typeof UdpFormsTypeEnum]), // cast to string\n label: key,\n }));\n\n // ********************************** API CALLS **********************************\n\n async initializeForm() {\n // set default form values\n this.formMetadata.isPrivate = formMetadataDefault.isPrivate;\n this.formMetadata.tenantId = getCurrentTenantId();\n this.formMetadata.type = formMetadataDefault.type;\n this.formMetadata.version = formMetadataDefault.version;\n this.formMetadata.name = formMetadataDefault.name;\n this.formMetadata.description = formMetadataDefault.description;\n this.formMetadata.styleOverrides = styleOverrideDefault;\n\n try {\n this.isLoading = true;\n\n // get lookup options\n const lookupResponse = await makeApiCall('GET', ConfigService.productV1ApiUrl + '/UdpLookup');\n\n if (!lookupResponse) {\n throw new Error(`Error fetching lookup data`);\n }\n\n\n this.lookupOptionsDataProcessed = lookupResponse.map(lookupObj => {\n return { ...lookupObj, value: lookupObj.id, label: lookupObj.name };\n });\n\n // determine if it's to create a new form, view an old form, or create a new version\n if (this.formId && this.version) {\n const formDataResponse = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/${this.version}/describe`);\n const formLatestVersionResponse = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/describe`);\n\n this.isNewForm = false;\n\n if (!formDataResponse || !formLatestVersionResponse || !formDataResponse.id || !formLatestVersionResponse) {\n throw new Error(`Error fetching form data`);\n }\n\n // view only mode\n if (formDataResponse.id == formLatestVersionResponse.id && formDataResponse.version == formLatestVersionResponse.version) {\n this.isMostRecentFormVersion = true;\n }\n\n // Clone formSections and initialize empty question arrays\n const tempSections = structuredClone(formDataResponse.udpFormUdpFormSection).map(section => ({ ...section, formQuestions: [] }));\n tempSections.forEach(section => {\n if(!section.sectionProperties) {\n section.sectionProperties = {}\n } else {\n section.sectionProperties = JSON.parse(section.sectionProperties)\n }\n })\n\n\n // Map questions into their respective sections\n formDataResponse.formQuestions.forEach(question => {\n const section = tempSections.find(s => s.id === question.formSectionId);\n if (section) {\n const fieldProps = { ...question.fieldProperties };\n\n // Remove items if lookupId exists\n if ('lookupId' in fieldProps && 'items' in fieldProps) {\n delete fieldProps.items;\n }\n\n section.formQuestions.push({\n ...question,\n fieldProperties: fieldProps,\n questionTypeName: this.getQuestionTypeName(question.fieldTypeId),\n isContainsOptionItems: this.getIsContainsOptionItems(question.fieldTypeId),\n icon: this.getIconForQuestion(question.fieldTypeId),\n });\n\n\n }\n });\n\n // Sort questions within each section\n tempSections.forEach(section => {\n section.formQuestions.sort((a, b) => a.questionOrder - b.questionOrder);\n });\n\n // Sort sections\n tempSections.sort((a, b) => a.order - b.order)\n\n\n const { ...metadata } = formDataResponse;\n\n // Merge fetched styleOverrides with defaults\n metadata.styleOverrides = this.deepMerge(styleOverrideDefault, JSON.parse(metadata.styleOverrides) || {});\n\n // Set form metadata and sections\n this.formMetadata = metadata;\n this.formSections = tempSections;\n this.isLoading = false;\n }\n } catch (e) {\n this.isError = true;\n\n this.enqueueSnackbar('Error loading form data', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n } finally {\n this.isLoading = false;\n }\n }\n\n async submitForm() {\n if (!this.isValidForm()) {\n return;\n }\n\n this.isLoading = true;\n\n try {\n // Prepare and send form metadata\n const processedFormMetadata = {\n name: this.formMetadata.name,\n description: this.formMetadata.description,\n tenantId: this.formMetadata.tenantId,\n isPrivate: this.formMetadata.isPrivate,\n type: this.formMetadata.type,\n styleOverrides: JSON.stringify(this.formMetadata.styleOverrides),\n id: this.formMetadata.id,\n version: this.formMetadata.version,\n };\n\n\n const formUrl = `${ConfigService.productV1ApiUrl}/UdpForm${this.isMostRecentFormVersion ? '/versions' : ''}`;\n const formResponse = await makeApiCall('POST', formUrl, processedFormMetadata);\n\n const formId = formResponse.id;\n const formVersion = formResponse.version;\n\n if (!formResponse || !formResponse.id || !formResponse.version) {\n throw new Error(`Invalid form response: ${JSON.stringify(formResponse)}`);\n }\n\n // Prepare and send questions in order\n let sectionOrder = 0;\n let questionOrder = 0;\n const questionRequests: Promise<any>[] = [];\n\n for (const [sIndex, section] of this.formSections.entries()) {\n sectionOrder += 1;\n\n const processedSectionData = {\n ...section,\n formId,\n formVersion,\n order: sectionOrder,\n sectionProperties: JSON.stringify(section.sectionProperties),\n name: `section${sectionOrder}`\n };\n\n const sectionResponse = await makeApiCall('POST', `${ConfigService.productV1ApiUrl}/UdpFormSection`, processedSectionData);\n\n if (!sectionResponse || !sectionResponse.id) {\n throw new Error(`Invalid section response: ${JSON.stringify(sectionResponse)}`);\n }\n\n const sectionId = sectionResponse.id;\n\n for (const question of section.formQuestions) {\n questionOrder += 1;\n\n const processedQuestionData = {\n ...question,\n formId,\n formVersion,\n section: sIndex + 1,\n questionOrder,\n formSectionId: sectionId,\n name: `question${questionOrder}`,\n };\n\n const questionRequest = makeApiCall('POST', `${ConfigService.productV1ApiUrl}/UdpFormQuestion`, processedQuestionData);\n questionRequests.push(questionRequest);\n }\n }\n\n // Wait for all questions to be submitted\n await Promise.all(questionRequests);\n\n this.enqueueSnackbar('Success', {\n variant: 'success',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n\n if(this.formsBuilderUrlPath) {\n this.history.push(`${this.formsBuilderUrlPath}&udpf_formId=${formId}&udpf_version=${formVersion}`);\n return \n }\n\n this.history.push(`/page/${this.formsBuilderPageId}?udpf_formId=${formId}&udpf_version=${formVersion}`);\n } catch (error) {\n console.error('Form submission error:', error);\n this.enqueueSnackbar('Error saving form', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n } finally {\n this.isLoading = false;\n }\n }\n\n // ********************************** STENCIL RELATED **********************************\n\n componentDidLoad() {\n this.initializeSortable();\n }\n\n componentDidUpdate() {\n this.initializeSortable();\n }\n\n componentWillLoad() {\n this.initializeForm();\n }\n\n // @Watch('formSections')\n // onFormSectionsChange(newValue: any[]) {\n // console.log(newValue);\n // }\n\n // @Watch('formMetadata')\n // onFormMetadataChange(newValue) {\n // console.log(newValue);\n // }\n\n @Watch('formId')\n @Watch('version')\n onFormIdOrVersionChange() {\n this.initializeForm();\n }\n\n // ********************************** SORTABLE LOGIC **********************************\n\n private initializeSortable() {\n // sortable only if the form is editable\n if (!(this.isNewForm || this.isMostRecentFormVersion)) {\n return;\n }\n\n this.sortableInstances.forEach(instance => instance.destroy());\n this.sortableInstances = [];\n\n this.formSections.forEach((_, sIndex) => {\n const el = this.hostEl.shadowRoot.querySelector(`#section-${sIndex}`);\n if (el) {\n const sortable = new Sortable(el, {\n animation: 200,\n easing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n draggable: 'udp-forms-builder-question-item',\n handle: '.form-question-drag-handle',\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n direction: 'vertical',\n forceFallback: false,\n dragoverBubble: false,\n swapThreshold: 0.6,\n onEnd: evt => this.handleDragEnd(evt, sIndex),\n });\n this.sortableInstances.push(sortable);\n }\n });\n }\n\n private handleDragEnd(evt: Sortable.SortableEvent, sIndex: number) {\n const oldIndex = evt.oldIndex;\n const newIndex = evt.newIndex;\n if (oldIndex === newIndex || oldIndex == null || newIndex == null) return;\n\n const sectionCopy = structuredClone(this.formSections[sIndex]);\n const [moved] = sectionCopy.formQuestions.splice(oldIndex, 1);\n sectionCopy.formQuestions.splice(newIndex, 0, moved);\n\n // const newFormSections = [...this.formSections];\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections[sIndex] = sectionCopy;\n\n this.formSections = newFormSections;\n }\n\n // ********************************** SIDE SHEET LOGIC **********************************\n\n private toggleStyleSheet = () => {\n this.isStyleSheetOpen = !this.isStyleSheetOpen;\n };\n\n // ********************************** QUESTION HANDLERS **********************************\n private getQuestionTypeName = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.questionTypeName : 'Unknown';\n };\n\n private getIsContainsOptionItems = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.isContainsOptionItems || false : false;\n };\n\n private getIconForQuestion = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.icon : null;\n };\n\n private handleQuestionDelete = (sIndex: number, qIndex: number) => {\n const sectionsCopy = deepCloneFormSections(this.formSections);\n sectionsCopy[sIndex].formQuestions.splice(qIndex, 1);\n this.formSections = sectionsCopy;\n };\n\n private handleQuestionCopy = (sIndex: number, qIndex: number) => {\n const sectionsCopy = deepCloneFormSections(this.formSections);\n const targetQuestion = this.formSections[sIndex].formQuestions[qIndex];\n\n const newQuestion = {\n ...targetQuestion,\n questionText: (targetQuestion.questionText || '') + ' (Copy)',\n id: uuidv4(),\n };\n\n sectionsCopy[sIndex].formQuestions.splice(qIndex + 1, 0, newQuestion);\n this.formSections = sectionsCopy;\n };\n\n private handleQuestionClick = (sIndex: number, qIndex: number) => {\n this.editingQuestion = { sIndex, qIndex };\n this.isQuestionEditorOpen = true;\n this.formSectionsDraft = deepCloneFormSections(this.formSections);\n };\n\n private closeQuestionEditor = () => {\n this.isQuestionEditorOpen = false;\n this.editingQuestion = null;\n this.formSectionsDraft = null;\n };\n\n private addQuestionOfType = (defaultQuestionObj, sIndex?: number, qIndex?: number): { sIndex: number; qIndex: number } => {\n const newQuestion = {\n questionTypeName: defaultQuestionObj.questionTypeName,\n fieldTypeId: defaultQuestionObj.fieldTypeId,\n fieldProperties: defaultQuestionObj.defaultFieldProperties,\n helperText: '',\n questionText: '',\n section: sIndex !== undefined ? sIndex + 1 : this.formSections.length > 0 ? this.formSections[this.formSections.length - 1].formQuestions[0].section : 1, // Assign section based on sIndex or last section\n isContainsOptionItems: defaultQuestionObj.isContainsOptionItems,\n icon: defaultQuestionObj.icon,\n required: false,\n form: null,\n isPrivate: true,\n id: uuidv4(),\n };\n\n const newFormSections = deepCloneFormSections(this.formSections); // Use helper to get a deep copy\n\n let actualSIndex = sIndex;\n let actualQIndex = qIndex;\n\n if (sIndex !== undefined && qIndex !== undefined) {\n // Insert at specific index\n if (newFormSections[sIndex].formQuestions) {\n newFormSections[sIndex].formQuestions.splice(qIndex, 0, newQuestion);\n } else {\n // fallback\n const lastSectionIdx = newFormSections.length - 1;\n newFormSections[lastSectionIdx].formQuestions.push(newQuestion);\n actualSIndex = lastSectionIdx;\n actualQIndex = newFormSections[lastSectionIdx].formQuestions.length - 1;\n }\n } else {\n // Append to the last section or create a new one\n const lastSectionIdx = newFormSections.length - 1;\n if (lastSectionIdx < 0 || newFormSections[lastSectionIdx].formQuestions.length === 0) {\n newFormSections.push({ ...formSectionDefault, formQuestions: [newQuestion] });\n actualSIndex = newFormSections.length - 1;\n actualQIndex = 0;\n } else {\n newFormSections[lastSectionIdx].formQuestions.push(newQuestion);\n actualSIndex = lastSectionIdx;\n actualQIndex = newFormSections[lastSectionIdx].formQuestions.length - 1;\n }\n }\n\n // this.formSections = newFormSections;\n this.formSectionsDraft = newFormSections;\n if (this.showMenuAtIndex) this.showMenuAtIndex = null;\n\n return { sIndex: actualSIndex, qIndex: actualQIndex };\n };\n\n private deepMerge(target: any, source: any): any {\n const output = { ...target };\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n output[key] = this.deepMerge(target[key] || {}, source[key]);\n } else {\n output[key] = source[key];\n }\n }\n return output;\n }\n\n // ********************************** SECTION HANDLERS **********************************\n\n private handleSectionMoveDown = (sIndex: number) => {\n if (sIndex >= this.formSections.length - 1) return;\n\n const sectionsCopy = [...this.formSections];\n [sectionsCopy[sIndex], sectionsCopy[sIndex + 1]] = [sectionsCopy[sIndex + 1], sectionsCopy[sIndex]];\n this.formSections = sectionsCopy;\n };\n\n private handleSectionMoveUp = (sIndex: number) => {\n if (sIndex <= 0) return;\n\n const sectionsCopy = [...this.formSections];\n [sectionsCopy[sIndex], sectionsCopy[sIndex - 1]] = [sectionsCopy[sIndex - 1], sectionsCopy[sIndex]];\n this.formSections = sectionsCopy;\n };\n\n private handleSectionDelete = (sIndex: number) => {\n const newFormSections = [...this.formSections];\n newFormSections.splice(sIndex, 1);\n this.formSections = newFormSections;\n };\n\n private updateFormSectionsWithDraft = () => {\n this.formSections = this.formSectionsDraft;\n this.formSectionsDraft = null;\n };\n\n private hasUnsavedFormSectionsChanges = (): boolean => {\n // return !isEqual(this.formSections, this.formSectionsDraft); // NEED TO INSTALL PACKAGE\n return JSON.stringify(this.formSections) !== JSON.stringify(this.formSectionsDraft); // Breaks on circular refs or non-serializable types (like Dates, Maps, etc.)\n };\n\n private handleSectionEditClick = (sIndex: number) => {\n this.editingSection = { sIndex };\n this.isSectionEditorOpen = true;\n this.formSectionsDraft = deepCloneFormSections(this.formSections);\n };\n\n private closeSectionEditor = () => {\n this.isSectionEditorOpen = false;\n this.editingSection = null;\n this.formSectionsDraft = null;\n };\n\n // ********************************** FORM VALIDATION HELPERS **********************************\n\n private isValidForm(): boolean {\n return this.validateFormMetadata() && this.validateFormSections() && this.validateAllQuestions() ;\n }\n\n private validateFormMetadata(): boolean {\n if (!this.formMetadata.name?.trim()) {\n this.enqueueSnackbar('Please enter a form name.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n\n return true;\n }\n\n private validateFormSections(): boolean {\n if (this.formSections.length < 1) {\n this.enqueueSnackbar('Please add at least one section to the form.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n\n return false;\n }\n\n for (let sIndex = 0; sIndex < this.formSections.length; sIndex++) {\n const formSection = this.formSections[sIndex];\n const questions = formSection?.formQuestions || [];\n\n if (questions.length < 1) {\n const sectionTitle = formSection?.title ? `\"${formSection.title}\"` : `#${sIndex + 1}`;\n this.enqueueSnackbar(`Section ${sectionTitle} must contain at least one question.`, {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n }\n\n return true;\n }\n\n private validateAllQuestions(): boolean {\n for (let sIndex = 0; sIndex < this.formSections.length; sIndex++) {\n const formSection = this.formSections[sIndex];\n const questions = formSection?.formQuestions || [];\n for (let qIndex = 0; qIndex < questions.length; qIndex++) {\n const isValid = this.validateQuestionItem(sIndex, qIndex);\n if (!isValid) {\n this.enqueueSnackbar('Please validate all questions.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n }\n }\n return true;\n }\n\n private validateQuestionItem(sIndex: number, qIndex: number): boolean {\n const questionItem = this.formSections[sIndex].formQuestions[qIndex];\n // Respect template metadata for optional question text (e.g., Paragraph)\n const template = questionsTemplate.find(q => q.fieldTypeId === questionItem.fieldTypeId);\n const requiresQuestionText = !(template && (template as any).questionTextOptional);\n if (requiresQuestionText && !questionItem.questionText) {\n return false;\n }\n\n if (questionItem.isContainsOptionItems) {\n const fieldProps = questionItem.fieldProperties;\n\n // If there's a lookupId, assume it's valid and skip item validation\n if (!fieldProps?.lookupId) {\n // If no items or empty, invalid\n if (!Array.isArray(fieldProps?.items) || fieldProps.items.length === 0) {\n return false;\n }\n\n // Check that each item has both display and value\n const invalidItemExists = fieldProps.items.some(item => !item.display || !item.value);\n\n if (invalidItemExists) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n\n render() {\n if (this.isError) {\n return <div> There is an Error With the Form Builder</div>;\n }\n\n const isEditable = this.isNewForm || this.isMostRecentFormVersion;\n\n return (\n <div>\n {/* FIXME: Review this */}\n <primary-action-header\n title={'UDP Form Builder'}\n actionButtonLabel={isEditable ? (this.isMostRecentFormVersion ? `Create New Version (v.${this.version + 1})` : 'Create New Form') : ''}\n primaryActionClick={isEditable ? () => this.submitForm() : null}\n // HIDE STYLE OVERRIDE IN UI\n defaultActionButtons={\n isEditable ? [{ label: 'Style Overrides', clickHandler: this.toggleStyleSheet, tooltip: 'Style Overrides', visible: false, icon: getIconFromName('settings') }] : []\n }\n tabs={false}\n />\n {/* <udp-side-sheet open={this.isStyleSheetOpen} onUdpSideSheetClose={() => (this.isStyleSheetOpen = false)} title=\"Style Overrides\" position=\"right\" width=\"md\">\n <udp-forms-builder-style-override formMetadata={this.formMetadata} onFormMetadataChange={updated => (this.formMetadata = updated)}></udp-forms-builder-style-override>\n </udp-side-sheet> */}\n\n <udp-side-sheet\n open={this.isQuestionEditorOpen}\n onUdpSideSheetClose={() => this.closeQuestionEditor()}\n onUdpPrimaryButtonClick={() => {\n // don't do anything if no changes are made.\n // it'll close the side sheet without this\n if (!this.hasUnsavedFormSectionsChanges()) {\n return;\n }\n this.updateFormSectionsWithDraft();\n this.closeQuestionEditor();\n }}\n primaryButtonDisabled={!this.hasUnsavedFormSectionsChanges()}\n title=\"Edit Question\"\n position=\"right\"\n width=\"md\"\n primaryButtonLabel=\"Update\"\n >\n {this.isQuestionEditorOpen && (\n <div class=\"question-editor-container\">\n <question-configs-renderer\n formSectionsDraft={this.formSectionsDraft}\n sIndex={this.editingQuestion.sIndex}\n qIndex={this.editingQuestion.qIndex}\n isViewOnly={!isEditable}\n onFormSectionsDraftChange={updated => (this.formSectionsDraft = updated)}\n lookupOptions={this.lookupOptionsDataProcessed}\n formType={this.formMetadata.type}\n isFollowUpFormConfigOn={this.isFollowUpFormConfigOn}\n isCommentingConfigOn={this.isCommentingConfigOn}\n />\n </div>\n )}\n </udp-side-sheet>\n\n <udp-side-sheet\n open={this.isSectionEditorOpen}\n onUdpSideSheetClose={() => this.closeSectionEditor()}\n title=\"Edit Section Fields\"\n position=\"right\"\n width=\"md\"\n primaryButtonDisabled={!this.hasUnsavedFormSectionsChanges()}\n primaryButtonLabel=\"Update\"\n onUdpPrimaryButtonClick={() => {\n // don't do anything if no changes are made.\n // it'll close the side sheet without this\n if (!this.hasUnsavedFormSectionsChanges()) {\n return;\n }\n this.updateFormSectionsWithDraft();\n this.closeSectionEditor();\n }}\n >\n {this.isSectionEditorOpen && (\n <div class=\"section-editor-container\">\n <section-configs-renderer\n formSectionsDraft={this.formSectionsDraft}\n sIndex={this.editingSection.sIndex}\n isViewOnly={!isEditable}\n onFormSectionsDraftChange={updated => (this.formSectionsDraft = updated)}\n />\n </div>\n )}\n </udp-side-sheet>\n <fluent-dialog\n open={this.isDialogOpen}\n message={this.dialogMessage}\n labelOne={'Confirm'}\n labelTwo={'Cancel'}\n actionOne={() => {\n if (typeof this.dialogAction === 'function') {\n this.dialogAction();\n }\n }}\n actionTwo={() => (this.isDialogOpen = false)}\n />\n\n {this.isLoading && <udp-linear-loader />}\n {!this.isLoading && (\n <udp-container maxWidth=\"lg\">\n <div class=\"udp-forms-page\">\n <div class=\"form-details-container\">\n <div class=\"form-details-name-container\">\n {isEditable ? (\n <div class=\"form-details-name-input\">\n <text-field\n label=\"Form Name\"\n value={this.formMetadata.name}\n placeholder=\"Form Name\"\n disabled={!isEditable}\n required={true}\n margin=\"none\"\n maxCharacter={128}\n onInput={e => {\n this.formMetadata = {\n ...this.formMetadata,\n name: (e.target as HTMLInputElement).value,\n };\n }}\n ></text-field>\n </div>\n ) : (\n <div class=\"form-details-name-display\">\n <unity-typography variant={'h2'}>{this.formMetadata.name + ' (View Only)'}</unity-typography>\n </div>\n )}\n </div>\n\n <div class=\"form-details-description-container\">\n {isEditable ? (\n <div class=\"form-details-details-input\">\n <text-area\n label=\"Form Description\"\n value={this.formMetadata.description}\n placeholder=\"Form Description\"\n disabled={!isEditable}\n required={false}\n margin=\"none\"\n maxCharacter={256}\n onInput={e => {\n this.formMetadata = {\n ...this.formMetadata,\n description: (e.target as HTMLInputElement).value,\n };\n }}\n ></text-area>\n </div>\n ) : (\n <div class=\"form-details-description-display\">\n <unity-typography>{this.formMetadata.description}</unity-typography>\n </div>\n )}\n </div>\n {this.isFollowUpFormConfigOn && (\n this.isNewForm ? \n <udp-selector\n label=\"Form Type\"\n key=\"udo-form-type-selector\"\n initialValue={this.formMetadata.type}\n options={this.formTypeOptions}\n disabled={!isEditable || !this.isNewForm}\n required={true}\n onChange={(e: CustomEvent) => {\n this.formMetadata = {\n ...this.formMetadata,\n type: e.detail,\n };\n }}\n /> :\n <div class=\"form-details-version-container\">\n <unity-typography>Form Type: {UdpFormsTypeEnum[this.formMetadata.type]}</unity-typography>\n </div>\n )}\n <div class=\"form-details-version-container\">\n <unity-typography>Version: {this.formMetadata.version}</unity-typography>\n </div>\n {this.isPublicFormConfigOn && (\n <div class=\"form-details-private-container\">\n <div class=\"toggle-container\">\n <stencil-toggle\n label=\"Private Form\"\n margin=\"none\"\n disabled={!isEditable}\n checked={this.formMetadata.isPrivate === true}\n labelPosition=\"right\"\n onToggledChange={() => {\n let newIsPrivate = !this.formMetadata.isPrivate;\n this.formMetadata = {\n ...this.formMetadata,\n isPrivate: newIsPrivate,\n };\n }}\n ></stencil-toggle>\n </div>\n </div>\n )}\n </div>\n\n {isEditable && (\n <div class=\"add-question-button-container\">\n <udp-button\n startIcon={<udp-icon iconName={'add'} color={'inherit'} />}\n onClick={() => {\n const newSectionIndex = this.formSections.length;\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.push({ ...formSectionDefault, order: newSectionIndex + 1, title: `Section ${newSectionIndex + 1}` });\n this.formSections = newFormSections;\n }}\n >\n Add a Section\n </udp-button>\n </div>\n )}\n\n {this.formSections.map((section, sIndex) => {\n return (\n <div key={sIndex} class=\"form-section\">\n <div class=\"form-section-header\">\n <div class=\"form-section-header-title\">\n <unity-typography variant=\"h6\" color=\"inherit\">\n {section.title}\n </unity-typography>\n </div>\n\n {isEditable && (\n <div class=\"form-section-header-actions\">\n {sIndex > 0 && (\n <stencil-icon-button\n icon={getIconFromName('arrowUp')}\n tooltip=\"Move Section Up\"\n onClick={() => {\n this.handleSectionMoveUp(sIndex);\n }}\n />\n )}\n {sIndex < this.formSections.length - 1 && (\n <stencil-icon-button\n icon={getIconFromName('arrowDown')}\n tooltip=\"Move Section Down\"\n onClick={() => {\n this.handleSectionMoveDown(sIndex);\n }}\n />\n )}\n <stencil-icon-button icon={getIconFromName('edit')} tooltip={`Edit Section Fields`} onClick={() => this.handleSectionEditClick(sIndex)} />\n <stencil-icon-button\n icon={getIconFromName('trashCan')}\n tooltip=\"Delete Section\"\n onClick={e => {\n e.stopPropagation();\n this.dialogMessage = 'Are you sure you want to delete this section?';\n this.dialogAction = () => {\n this.handleSectionDelete(sIndex);\n this.isDialogOpen = false;\n };\n\n this.isDialogOpen = true;\n }}\n />\n </div>\n )}\n </div>\n\n <div class=\"form-section-questions-container\">\n {(this.isNewForm || this.isMostRecentFormVersion) && this.showMenuAtIndex && this.showMenuAtIndex.sIndex === sIndex && this.showMenuAtIndex.qIndex === 0 && (\n <udp-forms-builder-menu\n isVisible={true}\n questionsTemplate={questionsTemplate}\n onAddSection={() => {\n const newSectionIndex = this.formSections.length;\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.push({ ...formSectionDefault, order: newSectionIndex, title: `Section ${newSectionIndex + 1}` });\n this.formSections = newFormSections;\n this.showMenuAtIndex = { sIndex: newSectionIndex, qIndex: 0 };\n }}\n onAddQuestion={e => {\n const indices = this.showMenuAtIndex\n ? this.addQuestionOfType(e.detail, this.showMenuAtIndex.sIndex, this.showMenuAtIndex.qIndex)\n : this.addQuestionOfType(e.detail);\n\n this.editingQuestion = { ...indices };\n this.isQuestionEditorOpen = true;\n }}\n onCancelClick={() => (this.showMenuAtIndex = null)}\n />\n )}\n <div class=\"form-section-questions-draggable-container\" id={`section-${sIndex}`}>\n {section.formQuestions.map((questionItem, qIndex) => {\n return (\n <udp-forms-builder-question-item\n key={questionItem.id}\n iconName={questionItem.icon}\n primaryText={`${questionItem.questionText}`}\n secondaryText={questionItem.helperText ? questionItem.helperText : null}\n avatarBackgroundColor={this.validateQuestionItem(sIndex, qIndex) ? 'info' : 'warning'}\n >\n <stencil-chip slot=\"status-chip\" text=\"Required\" showDelete={false} clickable={false} hidden={!questionItem.required} />\n {isEditable && (\n <div slot=\"drag-and-drop\">\n <div class=\"form-question-drag-handle\">\n <div class=\"drag-wrapper\">\n <stencil-icon-button icon={getIconFromName('draggable')} tooltip=\"Move Question\" noBackground={true} />\n </div>\n </div>\n </div>\n )}\n\n <div slot=\"actions\">\n {isEditable ? (\n <fragment>\n <stencil-icon-button\n icon={getIconFromName('edit')}\n tooltip=\"Edit Question Details\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionClick(sIndex, qIndex);\n }}\n noBackground={true}\n />\n <stencil-icon-button\n icon={getIconFromName('copy')}\n tooltip=\"Duplicate Question\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionCopy(sIndex, qIndex);\n }}\n noBackground={true}\n />\n <stencil-icon-button\n icon={getIconFromName('trashCan')}\n tooltip=\"Delete Question\"\n onClick={e => {\n e.stopPropagation();\n this.dialogMessage = 'Are you sure you want to delete this question?';\n this.dialogAction = () => {\n this.handleQuestionDelete(sIndex, qIndex);\n this.isDialogOpen = false;\n };\n this.isDialogOpen = true;\n }}\n noBackground={true}\n />\n </fragment>\n ) : (\n <stencil-icon-button\n icon={getIconFromName('view')}\n tooltip=\"View Question Details\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionClick(sIndex, qIndex);\n }}\n noBackground={true}\n />\n )}\n </div>\n </udp-forms-builder-question-item>\n );\n })}\n </div>\n\n {isEditable &&\n !this.showMenuAtIndex && ( // Only show button if no menu is active\n <div class=\"add-question-to-section-button-container\">\n <udp-button\n variant=\"text\"\n onClick={() => {\n this.showMenuAtIndex = { sIndex: sIndex, qIndex: section.formQuestions.length };\n }}\n startIcon={<udp-icon iconName={'add'} color={'inherit'} />}\n >\n Add a Question\n </udp-button>\n </div>\n )}\n\n {isEditable &&\n this.showMenuAtIndex?.sIndex === sIndex &&\n this.showMenuAtIndex?.qIndex === section.formQuestions.length &&\n section.formQuestions.length > 0 && (\n <udp-forms-builder-menu\n isVisible={true}\n questionsTemplate={questionsTemplate}\n onAddSection={() => {\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.splice(sIndex + 1, 0, []);\n this.formSections = newFormSections;\n this.showMenuAtIndex = null;\n }}\n onAddQuestion={e => {\n if (this.showMenuAtIndex) {\n const indices = this.addQuestionOfType(e.detail, this.showMenuAtIndex.sIndex, this.showMenuAtIndex.qIndex);\n this.editingQuestion = { ...indices };\n this.isQuestionEditorOpen = true;\n }\n }}\n onCancelClick={() => (this.showMenuAtIndex = null)}\n />\n )}\n </div>\n </div>\n );\n })}\n </div>\n </udp-container>\n )}\n </div>\n );\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { h, Fragment } from "@stencil/core";
|
|
2
|
-
import { UdpFormsPageIdEnum } from "../../utils/enums";
|
|
3
|
-
import { UdpFormsTypeEnum } from "../../utils/enums";
|
|
4
|
-
import { dateFormatter } from "../../utils/utils";
|
|
2
|
+
import { UdpFormsPageIdEnum } from "../../udp-forms-utils/enums";
|
|
3
|
+
import { UdpFormsTypeEnum } from "../../udp-forms-utils/enums";
|
|
4
|
+
import { dateFormatter } from "../../udp-forms-utils/utils";
|
|
5
5
|
import ChevronRight24 from "@carbon/icons/es/chevron--right/16";
|
|
6
6
|
import Edit from "@carbon/icons/es/edit/16";
|
|
7
7
|
import DocumentAdd from "@carbon/icons/es/document--add/16";
|
|
@@ -73,16 +73,16 @@ export class UdpFormsListCard {
|
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
75
|
render() {
|
|
76
|
-
const contentJsx = (h(Fragment, { key: '
|
|
77
|
-
const actionsJsx = (h(Fragment, { key: '
|
|
76
|
+
const contentJsx = (h(Fragment, { key: '3166b3f05f873b49f68e8ba3589bea738609a96d' }, h("unity-typography", { key: '037d7678981cadedb7d0f93fac64beb1c7916494', variant: "body1", color: "textSecondary" }, "Version: ", this.data.version), !this.isSideSheetList && (h("unity-typography", { key: '5a23010323d0a47fce7631ed80fd93d501a3225a', variant: "body1", color: "textSecondary" }, "Last Modified: ", dateFormatter(this.data.lastModifiedOn))), h("unity-typography", { key: '21557df926c9f21ae828c33266599ef646602c9b', variant: "body1", color: "textSecondary" }, "Created On: ", this.isSideSheetList ? dateFormatter(this.data.createdOn) : dateFormatter(this.data.initialCreatedOn)), this.isFollowUpFormConfigOn && (h("unity-typography", { key: '985f213e727138071649f58d50e79ff0fb8eee62', variant: "body1", color: "textSecondary" }, "Form Type: ", UdpFormsTypeEnum[this.data.type]))));
|
|
77
|
+
const actionsJsx = (h(Fragment, { key: '8707b318aa94dd0da14dae0ee74ac7c2a7dfeb94' }, h("stencil-icon-button", { key: '9bd8e2612509a1edb47174079b7b10ebfdc99592', icon: Edit, tooltip: "Edit Form Template", onClick: (e) => this.handleEditOrTitleClick(e) }), !this.isSideSheetList && this.isRendererRedirectConfigOn && (h("stencil-icon-button", { key: '55e61c2569e0ed68aab3f1b06574ca97ee3db383', icon: DocumentAdd, tooltip: "View Form", onClick: e => {
|
|
78
78
|
e.stopPropagation();
|
|
79
79
|
this.formRendererHandler();
|
|
80
|
-
} })), !this.isSideSheetList && (h("stencil-icon-button", { key: '
|
|
80
|
+
} })), !this.isSideSheetList && (h("stencil-icon-button", { key: 'f0f7c2274b0b808f37bc0d4951282e548eb20670', icon: ChevronRight24, tooltip: "See Form Version History", onClick: e => {
|
|
81
81
|
var _a;
|
|
82
82
|
e.stopPropagation();
|
|
83
83
|
(_a = this.openSideSheet) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
84
84
|
} }))));
|
|
85
|
-
return (h("udp-card", { key: '
|
|
85
|
+
return (h("udp-card", { key: '669b56c71cebf72528a33d5994e2496ad10da12d', cardTitle: this.data.name, subheader: this.data.description, actions: actionsJsx, onTitleClick: this.handleEditOrTitleClick, disableContentPadding: true, adornmentStatus: 'info' }, contentJsx));
|
|
86
86
|
}
|
|
87
87
|
static get is() { return "udp-forms-list-card"; }
|
|
88
88
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"udp-forms-list-card.js","sourceRoot":"","sources":["../../../../../../src/components/forms/udp-forms/udp-forms-list/udp-forms-list-card/udp-forms-list-card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAe,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"udp-forms-list-card.js","sourceRoot":"","sources":["../../../../../../src/components/forms/udp-forms/udp-forms-list/udp-forms-list-card/udp-forms-list-card.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, Fragment, Event, EventEmitter} from '@stencil/core';\nimport { UdpFormsPageIdEnum } from '../../udp-forms-utils/enums';\nimport { UdpFormsTypeEnum } from '../../udp-forms-utils/enums';\nimport { dateFormatter } from '../../udp-forms-utils/utils';\nimport ChevronRight24 from '@carbon/icons/es/chevron--right/16';\nimport Edit from '@carbon/icons/es/edit/16';\nimport DocumentAdd from '@carbon/icons/es/document--add/16';\n\n@Component({\n tag: 'udp-forms-list-card',\n shadow: true,\n})\nexport class UdpFormsListCard {\n /**\n * Router/history object used for navigation (expects a push(url:string) function).\n */\n @Prop() history: any;\n\n /**\n * Data for the form template item shown in the card (id, version, name, dates, etc).\n */\n @Prop() data: any;\n\n /**\n * Optional callback to open the side sheet (version history) when the chevron action is clicked.\n */\n @Prop() openSideSheet: any;\n\n /**\n * If true, the card is being rendered in a side-sheet list context (affects which dates/actions show).\n */\n @Prop() isSideSheetList: boolean;\n\n /**\n * Optional override path to use for the form builder navigation instead of the default page route.\n */\n @Prop() formsBuilderUrlPath: string | undefined;\n\n /**\n * Optional override path to use for the form renderer navigation instead of the default page route.\n */\n @Prop() formsRendererUrlPath: string | undefined;\n\n /**\n * When true, show the follow-up form config (Form Type) line in the card content.\n */\n @Prop() isFollowUpFormConfigOn: boolean = false;\n\n /**\n * When true, show a View Form action that redirects to the renderer.\n */\n @Prop() isRendererRedirectConfigOn: boolean = false;\n\n /**\n * Emit an event a user action to edit form is clicked to close the sidesheet\n */\n @Event() closeSidesheet: EventEmitter<void>;\n\n\n\n /**\n * Build the URL used to open the form builder.\n *\n * Uses the provided formsBuilderUrlPath override when present, otherwise\n * builds the default in-app page route. Keeps the same query params as before.\n */\n private getFormBuilderUrl = (): string => {\n if (this.formsBuilderUrlPath) {\n return `${this.formsBuilderUrlPath}&udpf_formId=${this.data.id}&udpf_version=${this.data.version}`;\n }\n return `/page/${UdpFormsPageIdEnum.FormBuilderPageId}?udpf_formId=${this.data.id}&udpf_version=${this.data.version}`;\n };\n\n /**\n * Build the URL used to open the form renderer.\n *\n * Uses the provided formsRendererUrlPath override when present, otherwise\n * builds the default in-app page route. Query param shape is unchanged.\n */\n private getFormRendererUrl = (): string => {\n if (this.formsRendererUrlPath) {\n return `${this.formsRendererUrlPath}?udpf_formId=${this.data.id}&udpf_version=${this.data.version}`;\n }\n return `/page/${UdpFormsPageIdEnum.FormRendererPageId}?udpf_formId=${this.data.id}&udpf_version=${this.data.version}`;\n };\n\n /**\n * Navigate to the form builder for the current card's form.\n *\n * Computes the target URL using getFormBuilderUrl (which prefers an optional\n * formsBuilderUrlPath override). Performs navigation by calling history.push(url).\n *\n * Side effects: mutates navigation state via history.push. No return value.\n */\n private formBuilderHandler = () => {\n this.history.push(this.getFormBuilderUrl());\n };\n\n /**\n * Navigate to the form renderer (view) for the current card's form.\n *\n * Computes the target URL using getFormRendererUrl (which prefers an optional\n * formsRendererUrlPath override). Performs navigation by calling history.push(url).\n *\n * Side effects: mutates navigation state via history.push. No return value.\n */\n private formRendererHandler = () => {\n this.history.push(this.getFormRendererUrl());\n };\n\n /**\n * Click handler for the card title or card edit icon.\n *\n * Prevents default link behavior, closes sidesheet, then routes to the form builder.\n */\n private handleEditOrTitleClick = (e: CustomEvent) => {\n e.preventDefault();\n this.closeSidesheet.emit();\n this.formBuilderHandler();\n };\n\n render() {\n const contentJsx = (\n <Fragment>\n <unity-typography variant=\"body1\" color=\"textSecondary\">\n Version: {this.data.version}\n </unity-typography>\n {!this.isSideSheetList && (\n <unity-typography variant=\"body1\" color=\"textSecondary\">\n Last Modified: {dateFormatter(this.data.lastModifiedOn)}\n </unity-typography>\n )}\n <unity-typography variant=\"body1\" color=\"textSecondary\">\n Created On: {this.isSideSheetList ? dateFormatter(this.data.createdOn) : dateFormatter(this.data.initialCreatedOn)}\n </unity-typography>\n {this.isFollowUpFormConfigOn && (\n <unity-typography variant=\"body1\" color=\"textSecondary\">\n Form Type: {UdpFormsTypeEnum[this.data.type]}\n </unity-typography>\n )}\n </Fragment>\n );\n\n const actionsJsx = (\n <Fragment>\n <stencil-icon-button\n icon={Edit}\n tooltip=\"Edit Form Template\"\n onClick={(e) => this.handleEditOrTitleClick(e)}\n />\n {!this.isSideSheetList && this.isRendererRedirectConfigOn && (\n <stencil-icon-button\n icon={DocumentAdd}\n tooltip=\"View Form\"\n onClick={e => {\n e.stopPropagation();\n this.formRendererHandler();\n }}\n />\n )}\n {!this.isSideSheetList && (\n <stencil-icon-button\n icon={ChevronRight24}\n tooltip=\"See Form Version History\"\n onClick={e => {\n e.stopPropagation();\n this.openSideSheet?.();\n }}\n />\n )}\n </Fragment>\n );\n\n return (\n <udp-card\n cardTitle={this.data.name}\n subheader={this.data.description}\n actions={actionsJsx}\n onTitleClick={this.handleEditOrTitleClick}\n disableContentPadding={true}\n adornmentStatus={'info'}\n >\n {contentJsx}\n </udp-card>\n );\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
2
|
import { fetchLatestForms, fetchFormVersions } from "./udp-form-api-utils";
|
|
3
3
|
import "./udp-forms-list-card/udp-forms-list-card";
|
|
4
|
-
import { UdpFormsPageIdEnum } from "../utils/enums";
|
|
4
|
+
import { UdpFormsPageIdEnum } from "../udp-forms-utils/enums";
|
|
5
5
|
export class UdpFormsList {
|
|
6
6
|
constructor() {
|
|
7
7
|
this.isPublicFormConfigOn = false;
|
|
@@ -216,7 +216,7 @@ export class UdpFormsList {
|
|
|
216
216
|
return this.errorMessage ? (h("div", { class: "error-banner" }, h("unity-typography", { variant: "body2" }, this.errorMessage))) : null;
|
|
217
217
|
}
|
|
218
218
|
render() {
|
|
219
|
-
return (h("div", { key: '
|
|
219
|
+
return (h("div", { key: '521f65ec8356fbd1cc33ca101ae454acd65047ec', class: "udp-forms-list-container" }, this.isCreateNewFormHeaderActionConfigOn ? (h("primary-action-header", { title: "UDP Forms", primaryActionClick: () => this.handleHeaderPrimaryActionClick(), actionButtonLabel: "Create New Form", tabs: false })) : (h("primary-action-header", { title: "UDP Forms", tabs: false })), this.isLoading && h("udp-linear-loader", { key: '6a080e748bd474223c77805ee51a94baaba7698f' }), this.renderSideSheet(), h("udp-container", { key: '682a613ced5e4d9c8b0aec6ce4b4450efd4b3967', maxWidth: "lg" }, this.renderErrorMessage(), this.renderFilters(), h("udp-list-renderer", { key: '8e49e0bdef5d4ee15ec56c2358e68b38c4b69080', itemComponent: "udp-forms-list-card", data: this.mainFormsList, pagination: true, isServerSide: true, isLoading: this.isLoading, itemsPerPage: this.MAIN_PAGE_SIZE, currentPage: this.mainListPageNumber, totalItems: this.mainTotalItems, onPageChange: e => this.handleMainPageChange(e.detail), componentDataMap: this.componentMap, spacing: "md" })), h("udp-forms-list-card", { key: '5386a41357733fc99e6b8540596bd64a758af33a', style: { display: 'none' } }), h("div", { key: '675cf300948e4f506f7470366f643451d9be5096', style: { height: '60px' } })));
|
|
220
220
|
}
|
|
221
221
|
static get is() { return "udp-forms-list"; }
|
|
222
222
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"udp-forms-list.js","sourceRoot":"","sources":["../../../../../src/components/forms/udp-forms/udp-forms-list/udp-forms-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,2CAA2C,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMpD,MAAM,OAAO,YAAY;IALzB;QAUU,yBAAoB,GAAY,KAAK,CAAC;QACtC,wCAAmC,GAAY,KAAK,CAAC;QACrD,2BAAsB,GAAY,KAAK,CAAC;QACxC,+BAA0B,GAAY,KAAK,CAAC;QAI3C,oBAAe,GAAG,KAAK,CAAC;QACxB,kBAAa,GAAG,EAAE,CAAC;QACnB,uBAAkB,GAAG,EAAE,CAAC;QAExB,uBAAkB,GAAG,CAAC,CAAC;QACvB,4BAAuB,GAAG,CAAC,CAAC;QAE5B,mBAAc,GAAG,CAAC,CAAC;QACnB,wBAAmB,GAAG,CAAC,CAAC;QAExB,cAAS,GAAG,IAAI,CAAC;QACjB,iBAAY,GAAW,EAAE,CAAC;QAC1B,cAAS,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;QACtE,kBAAa,GAAG,EAAE,CAAC;QACnB,eAAU,GAAG,EAAE,CAAC;QAER,uBAAkB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;QAE1D,yBAAoB,GAAG,CAAC,CAAC;QACzB,mBAAc,GAAG,CAAC,CAAC;QAInB,iBAAY,GAAG;YAC9B,OAAO,EAAE,SAAS;YAClB,eAAe,EAAE,iBAAiB;YAClC,aAAa,EAAE,eAAe;YAC9B,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,YAAY;YACxB,mBAAmB,EAAE,qBAAqB;YAC1C,oBAAoB,EAAE,sBAAsB;YAC5C,sBAAsB,EAAE,wBAAwB;SACjD,CAAC;QAEe,oBAAe,GAAG;YACjC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;YAC9B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;SACjC,CAAC;QAEe,iBAAY,GAAG;YAC9B,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE;YAClD,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE;YACnD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;SACjC,CAAC;QAEe,eAAU,GAAG;YAC5B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;YAC5B,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;YACjC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;SAClC,CAAA;QAiEO,4BAAuB,GAAG,CAAC,GAAG,EAAE;YACtC,IAAI,OAAe,CAAC;YACpB,OAAO,GAAG,EAAE;gBACV,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/D,CAAC,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;QAwDG,mCAA8B,GAAG,GAAG,EAAE;YAC5C,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC;QAuBM,iCAA4B,GAAG,GAAG,EAAE;YAC1C,+CAA+C;YAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;YACjH,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,CAAC;YACvC,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,CAAC;YAEjD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,gBAAgB,YAAY,iBAAiB,iBAAiB,EAAE,CAAC,CAAC;gBAC/G,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,gBAAgB,YAAY,iBAAiB,iBAAiB,EAAE,CAAC,CAAC;YACpH,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/B,CAAC,CAAC;QAEM,yBAAoB,GAAG,GAAG,EAAE;YAClC,wBAAwB;YACxB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/B,CAAC,CAAC;KAsIH;IArTC,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,4DAA4D;IACpD,KAAK,CAAC,aAAa;;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAE1H,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAE3B,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;YAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC3D,IAAI,CAAC,cAAc,GAAG,MAAA,IAAI,CAAC,KAAK,mCAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;YAChD,IAAI,CAAC,YAAY,GAAG,yCAAyC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,gBAAgB;;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAEtH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAE3B,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/D,IAAI,CAAC,mBAAmB,GAAG,MAAA,IAAI,CAAC,KAAK,mCAAI,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,GAAG,+BAA+B,CAAC;QACtD,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,IAAI,EAAE,eAAe;QACtC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe;YACf,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;SAC5D,CAAC,CAAC,CAAC;IACN,CAAC;IAUD,2EAA2E;IACnE,KAAK,CAAC,oBAAoB,CAAC,IAAY;QAC7C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAEO,uBAAuB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;QAClD,IAAI,CAAC,SAAS,mCAAQ,IAAI,CAAC,SAAS,KAAE,CAAC,SAAS,CAAC,EAAE,KAAK,GAAE,CAAC;IAC7D,CAAC;IAEO,gCAAgC,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,CAAC,CAAC,MAA0B,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;QAEhC,MAAM,eAAe,GAAG,MAAM,CAAC;QAC/B,MAAM,cAAc,GAAG,MAAM,CAAC;QAC9B,MAAM,YAAY,GAAG;YACnB,WAAW,EAAE,eAAe;YAC5B,cAAc;YACd,WAAW,EAAE,OAAO,CAAC,KAAK;SAC3B,CAAC;QAEF,IAAI,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC;QAEzF,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAChC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,CAAC,CAAC,MAA0B,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAA;QACjC,MAAM,eAAe,GAAG,MAAM,CAAA;QAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC;QAEzF,yCAAyC;QACzC,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG;gBACnB,WAAW,EAAE,eAAe;gBAC5B,cAAc,EAAE,GAAG;gBACnB,WAAW,EAAE,WAAW;aACzB,CAAC;YAEF,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAWD,KAAK,CAAC,mBAAmB,CAAC,MAAW,EAAE,MAAW;QAChD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAAE,OAAO;QAC9D,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,iFAAiF;IAEzE,KAAK,CAAC,mBAAmB,CAAC,MAAc;QAC9C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,IAAY;QAClD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC;IA0BD,iEAAiE;IAEzD,aAAa;QACnB,OAAO,CACL,WAAK,KAAK,EAAC,2BAA2B;YACpC,WAAK,KAAK,EAAC,cAAc;gBACvB,kBACE,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE,IAAI,CAAC,UAAU,EACtB,WAAW,EAAC,kBAAkB,EAC9B,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;wBACjB,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC;wBACzC,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBACjC,CAAC,EACD,MAAM,EAAC,MAAM,GACb,CACE;YACN,WAAK,KAAK,EAAC,gBAAgB;gBACxB,IAAI,CAAC,oBAAoB,IAAI,CAC5B,oBACE,KAAK,EAAC,WAAW,EACjB,IAAI,EAAC,YAAY,EACjB,OAAO,EAAE,IAAI,CAAC,UAAU,EACxB,QAAQ,EAAE,KAAK,EAAE,CAAc,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAC5E,YAAY,EAAE,GAAG,GACjB,CACH;gBACD,oBACE,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,YAAY,EACjB,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,QAAQ,EAAE,CAAC,CAAc,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EACxG,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,GACvC;gBACF,oBACE,KAAK,EAAC,gBAAgB,EACtB,IAAI,EAAC,eAAe,EACpB,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,QAAQ,EAAE,CAAC,CAAc,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAC3G,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,GAC1C,CACE,CACF,CACP,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,OAAO,CACL,sBACE,kBAAkB,EAAC,yBAAyB,EAC5C,KAAK,EAAC,sBAAsB,EAC5B,IAAI,EAAE,IAAI,CAAC,eAAe,EAC1B,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,EACtD,QAAQ,EAAC,OAAO,EAChB,KAAK,EAAC,IAAI,EACV,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE;YAEjE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,IAAI,4BAAqB;YAChE,yBACE,aAAa,EAAC,qBAAqB,EACnC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAC7B,UAAU,QACV,YAAY,QACZ,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,YAAY,EAAE,IAAI,CAAC,oBAAoB,EACvC,WAAW,EAAE,IAAI,CAAC,uBAAuB,EACzC,UAAU,EAAE,IAAI,CAAC,mBAAmB,EACpC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,EAC3D,gBAAgB,EAAE,IAAI,CAAC,YAAY,EACnC,OAAO,EAAC,IAAI;gBACZ,mFAAmF;gBACnF,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GACnD,CACa,CAClB,CAAC;IACJ,CAAC;IAEO,kBAAkB;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACzB,WAAK,KAAK,EAAC,cAAc;YACvB,wBAAkB,OAAO,EAAC,OAAO,IAAE,IAAI,CAAC,YAAY,CAAoB,CACpE,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,MAAM;QACJ,OAAO,CACL,4DAAK,KAAK,EAAC,0BAA0B;YAClC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAC1C,6BACE,KAAK,EAAC,WAAW,EACjB,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAC/D,iBAAiB,EAAC,iBAAiB,EACnC,IAAI,EAAE,KAAK,GACX,CACH,CAAC,CAAC,CAAC,CACF,6BACE,KAAK,EAAC,WAAW,EACjB,IAAI,EAAE,KAAK,GACX,CACH;YACA,IAAI,CAAC,SAAS,IAAI,2EAAqB;YAEvC,IAAI,CAAC,eAAe,EAAE;YACvB,sEAAe,QAAQ,EAAC,IAAI;gBACzB,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,aAAa,EAAE;gBAErB,0EACE,aAAa,EAAC,qBAAqB,EACnC,IAAI,EAAE,IAAI,CAAC,aAAa,EACxB,UAAU,QACV,YAAY,QACZ,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,YAAY,EAAE,IAAI,CAAC,cAAc,EACjC,WAAW,EAAE,IAAI,CAAC,kBAAkB,EACpC,UAAU,EAAE,IAAI,CAAC,cAAc,EAC/B,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,EACtD,gBAAgB,EAAE,IAAI,CAAC,YAAY,EACnC,OAAO,EAAC,IAAI,GACZ,CACY;YAKhB,4EAAqB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAI;YAEnD,4DAAK,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAI,CAC9B,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, State, Prop, Element, Watch } from '@stencil/core';\nimport { fetchLatestForms, fetchFormVersions } from './udp-form-api-utils';\nimport './udp-forms-list-card/udp-forms-list-card';\nimport { UdpFormsPageIdEnum } from '../utils/enums';\n@Component({\n tag: 'udp-forms-list',\n styleUrl: 'udp-forms-list.css',\n shadow: true,\n})\nexport class UdpFormsList {\n @Element() el: HTMLElement;\n\n @Prop() clientUrlBase: string;\n @Prop() history: any;\n @Prop() isPublicFormConfigOn: boolean = false;\n @Prop() isCreateNewFormHeaderActionConfigOn: boolean = false;\n @Prop() isFollowUpFormConfigOn: boolean = false;\n @Prop() isRendererRedirectConfigOn: boolean = false;\n @Prop() formsBuilderUrlPath: string | undefined; // override path for form builder\n @Prop() formsRendererUrlPath: string | undefined; // override path for form renderer\n\n @State() isSideSheetOpen = false;\n @State() mainFormsList = [];\n @State() sideSheetFormsList = [];\n\n @State() mainListPageNumber = 1;\n @State() sideSheetListPageNumber = 1;\n\n @State() mainTotalItems = 0;\n @State() sideSheetTotalItems = 0;\n\n @State() isLoading = true;\n @State() errorMessage: string = '';\n @State() sortState = { sortDirection: 'DESC', sortColumn: 'initialCreatedOn' };\n @State() searchFilters = [];\n @State() nameFilter = '';\n\n private readonly formsBuilderPageId = UdpFormsPageIdEnum.FormBuilderPageId;\n\n private readonly SIDE_SHEET_PAGE_SIZE = 5;\n private readonly MAIN_PAGE_SIZE = 5;\n\n private currentFormId: string;\n\n private readonly componentMap = {\n history: 'history',\n isSideSheetList: 'isSideSheetList',\n openSideSheet: 'openSideSheet',\n data: 'data',\n titleClick: 'titleClick',\n formsBuilderUrlPath: 'formsBuilderUrlPath',\n formsRendererUrlPath: 'formsRendererUrlPath',\n isFollowUpFormConfigOn: 'isFollowUpFormConfigOn'\n };\n\n private readonly SORT_DIRECTIONS = [\n { label: 'Asc', value: 'ASC' },\n { label: 'Desc', value: 'DESC' },\n ];\n\n private readonly SORT_COLUMNS = [\n { label: 'Created On', value: 'initialCreatedOn' },\n { label: 'Last Modified', value: 'lastModifiedOn' },\n { label: 'Name', value: 'name' },\n ];\n\n private readonly FORM_TYPES = [\n { label: 'Any', value: '0' },\n { label: 'Standard', value: '1' },\n { label: 'FollowUp', value: '2' },\n ]\n\n\n componentDidLoad() {\n return this.loadMainForms();\n }\n\n // ###################### API Helpers ######################\n private async loadMainForms() {\n this.isLoading = true;\n this.errorMessage = '';\n try {\n const response = await fetchLatestForms(this.mainListPageNumber, this.MAIN_PAGE_SIZE, this.searchFilters, this.sortState);\n\n const data = response.data;\n\n if (!data || !Array.isArray(data.pageList)) {\n throw new Error('Malformed data received from server.');\n }\n\n this.mainFormsList = this.formatList(data.pageList, false);\n this.mainTotalItems = data.total ?? 0;\n } catch (err) {\n console.error('Error loading forms data:', err);\n this.errorMessage = 'Failed to load forms. Please try again.';\n } finally {\n this.isLoading = false;\n }\n }\n\n private async loadFormVersions() {\n this.isLoading = true;\n this.errorMessage = '';\n try {\n const response = await fetchFormVersions(this.currentFormId, this.sideSheetListPageNumber, this.SIDE_SHEET_PAGE_SIZE);\n\n const data = response.data;\n\n if (!data || !Array.isArray(data.pageList)) {\n throw new Error('Malformed form versions data.');\n }\n\n this.sideSheetFormsList = this.formatList(data.pageList, true);\n this.sideSheetTotalItems = data.total ?? 0;\n } catch (err) {\n console.error('Error loading form versions:', err);\n this.errorMessage = 'Failed to load form versions.';\n } finally {\n this.isLoading = false;\n }\n }\n\n private formatList(data, isSideSheetList) {\n return data.map(item => ({\n data: item,\n history: this.history,\n isSideSheetList,\n openSideSheet: () => this.handleOpenSideSheet(item.id),\n formsBuilderUrlPath: this.formsBuilderUrlPath,\n formsRendererUrlPath: this.formsRendererUrlPath,\n isFollowUpFormConfigOn: this.isFollowUpFormConfigOn,\n isRendererRedirectConfigOn: this.isRendererRedirectConfigOn\n }));\n }\n\n private debouncedFormNameSearch = (() => {\n let timeout: number;\n return () => {\n clearTimeout(timeout);\n timeout = window.setTimeout(() => this.loadMainForms(), 300);\n };\n })();\n\n // ###################### Main list Handlers/helpers ######################\n private async handleMainPageChange(page: number) {\n this.mainListPageNumber = page;\n await this.loadMainForms();\n }\n\n private handleOrderFilterChange({ fieldName, value }) {\n this.sortState = { ...this.sortState, [fieldName]: value };\n }\n\n private handleFormNameSearchFilterChange(e) {\n const inputEl = e.target as HTMLInputElement;\n this.nameFilter = inputEl.value;\n\n const searchFieldName = 'name';\n const searchOperator = 'LIKE';\n const searchObject = {\n searchField: searchFieldName,\n searchOperator,\n searchValue: inputEl.value,\n };\n\n let filtersStateCopy = this.searchFilters.filter(f => f.searchField !== searchFieldName);\n\n if (inputEl.value.trim() !== '') {\n filtersStateCopy.push(searchObject);\n }\n\n this.searchFilters = filtersStateCopy;\n this.mainListPageNumber = 1;\n }\n\n private async handleFormTypeFilterChange(e) {\n const inputEl = e.target as HTMLInputElement;\n const filterValue = inputEl.value\n const searchFieldName = 'type'\n let filtersStateCopy = this.searchFilters.filter(f => f.searchField !== searchFieldName);\n\n // all forms, remove any filters for type\n if (filterValue !== '0') {\n const searchObject = {\n searchField: searchFieldName,\n searchOperator: '=',\n searchValue: filterValue,\n };\n \n filtersStateCopy.push(searchObject); \n }\n \n this.searchFilters = filtersStateCopy;\n this.mainListPageNumber = 1;\n await this.loadMainForms();\n }\n\n private handleHeaderPrimaryActionClick = () => {\n if (this.formsBuilderUrlPath) {\n this.history.push(this.formsBuilderUrlPath);\n return;\n }\n this.history.push(`/page/${this.formsBuilderPageId}`);\n };\n\n @Watch('sortState')\n async refetchMainListData(newVal: any, oldVal: any) {\n if (JSON.stringify(newVal) === JSON.stringify(oldVal)) return;\n this.mainListPageNumber = 1;\n await this.loadMainForms();\n }\n\n // ###################### Side Sheet list Handler/helpers ######################\n\n private async handleOpenSideSheet(formId: string) {\n this.currentFormId = formId;\n this.sideSheetListPageNumber = 1;\n this.isSideSheetOpen = true;\n await this.loadFormVersions();\n }\n\n private async handleSideSheetPageChange(page: number) {\n this.sideSheetListPageNumber = page;\n await this.loadFormVersions();\n }\n\n private handleSideSheetPrimaryAction = () => {\n // redirect to form builder with latest version\n const latestFormData = this.mainFormsList.find(form => form.data.id === this.sideSheetFormsList[0].data.id).data;\n const latestFormId = latestFormData.id;\n const formLatestVersion = latestFormData.version;\n\n if (this.formsBuilderUrlPath) {\n this.history.push(`${this.formsBuilderUrlPath}&udpf_formId=${latestFormId}&udpf_version=${formLatestVersion}`);\n this.isSideSheetOpen = false;\n return;\n }\n\n this.history.push(`/page/${this.formsBuilderPageId}?udpf_formId=${latestFormId}&udpf_version=${formLatestVersion}`);\n this.isSideSheetOpen = false;\n };\n\n private handleSideSheetClose = () => {\n // reset side sheet data\n this.sideSheetFormsList = [];\n this.sideSheetListPageNumber = 1;\n this.sideSheetTotalItems = 0;\n this.isSideSheetOpen = false;\n };\n\n // ###################### RENDERER HELPERS ######################\n\n private renderFilters() {\n return (\n <div class=\"udp-form-filter-container\">\n <div class=\"search-group\">\n <text-field\n label=\"Search Name\"\n value={this.nameFilter}\n placeholder=\"Search Form Name\"\n onInput={async e => {\n this.handleFormNameSearchFilterChange(e);\n this.debouncedFormNameSearch();\n }}\n margin=\"none\"\n />\n </div>\n <div class=\"selector-group\">\n {this.isPublicFormConfigOn && (\n <udp-selector\n label=\"Form Type\"\n name=\"sortColumn\"\n options={this.FORM_TYPES}\n onChange={async (e: CustomEvent) => await this.handleFormTypeFilterChange(e)}\n initialValue={'0'}\n />\n )}\n <udp-selector\n label=\"Sort By\"\n name=\"sortColumn\"\n options={this.SORT_COLUMNS}\n onChange={(e: CustomEvent) => this.handleOrderFilterChange({ fieldName: 'sortColumn', value: e.detail })}\n initialValue={this.sortState.sortColumn}\n />\n <udp-selector\n label=\"Sort Direction\"\n name=\"sortDirection\"\n options={this.SORT_DIRECTIONS}\n onChange={(e: CustomEvent) => this.handleOrderFilterChange({ fieldName: 'sortDirection', value: e.detail })}\n initialValue={this.sortState.sortDirection}\n />\n </div>\n </div>\n );\n }\n\n private renderSideSheet() {\n return (\n <udp-side-sheet\n primaryButtonLabel=\"Create New Form Version\"\n title=\"Form Version History\"\n open={this.isSideSheetOpen}\n onUdpSideSheetClose={() => this.handleSideSheetClose()}\n position=\"right\"\n width=\"md\"\n onUdpPrimaryButtonClick={() => this.handleSideSheetPrimaryAction()}\n >\n {this.isLoading && this.isSideSheetOpen && <udp-linear-loader />}\n <udp-list-renderer\n itemComponent=\"udp-forms-list-card\"\n data={this.sideSheetFormsList}\n pagination\n isServerSide\n isLoading={this.isLoading}\n itemsPerPage={this.SIDE_SHEET_PAGE_SIZE}\n currentPage={this.sideSheetListPageNumber}\n totalItems={this.sideSheetTotalItems}\n onPageChange={e => this.handleSideSheetPageChange(e.detail)}\n componentDataMap={this.componentMap}\n spacing='md'\n // @ts-ignore -- custom event to close sidesheet after clicking edit action in card\n onCloseSidesheet={() => this.handleSideSheetClose()}\n />\n </udp-side-sheet>\n );\n }\n\n private renderErrorMessage() {\n return this.errorMessage ? (\n <div class=\"error-banner\">\n <unity-typography variant=\"body2\">{this.errorMessage}</unity-typography>\n </div>\n ) : null;\n }\n\n render() {\n return (\n <div class=\"udp-forms-list-container\">\n {this.isCreateNewFormHeaderActionConfigOn ? (\n <primary-action-header\n title=\"UDP Forms\"\n primaryActionClick={() => this.handleHeaderPrimaryActionClick()}\n actionButtonLabel=\"Create New Form\"\n tabs={false}\n />\n ) : (\n <primary-action-header\n title=\"UDP Forms\"\n tabs={false}\n />\n )}\n {this.isLoading && <udp-linear-loader />}\n\n {this.renderSideSheet()}\n <udp-container maxWidth=\"lg\">\n {this.renderErrorMessage()}\n {this.renderFilters()}\n {/* TODO: Add prop for disabling card-content gutter(px) and padding(py) */}\n <udp-list-renderer\n itemComponent=\"udp-forms-list-card\"\n data={this.mainFormsList}\n pagination\n isServerSide\n isLoading={this.isLoading}\n itemsPerPage={this.MAIN_PAGE_SIZE}\n currentPage={this.mainListPageNumber}\n totalItems={this.mainTotalItems}\n onPageChange={e => this.handleMainPageChange(e.detail)}\n componentDataMap={this.componentMap}\n spacing=\"md\"\n />\n </udp-container>\n {/*\n This hidden instance ensures the udp-forms-list-card component is included in the build and its custom element is registered.\n It's necessary because the component is passed as a string (via itemComponent) and not directly used in JSX, which can cause it to be tree-shaken.\n */}\n <udp-forms-list-card style={{ display: 'none' }} />\n {/* TODO: Remove this once we have a proper layout unit component */}\n <div style={{ height: '60px' }} />\n </div>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"udp-forms-list.js","sourceRoot":"","sources":["../../../../../src/components/forms/udp-forms/udp-forms-list/udp-forms-list.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, State, Prop, Element, Watch } from '@stencil/core';\nimport { fetchLatestForms, fetchFormVersions } from './udp-form-api-utils';\nimport './udp-forms-list-card/udp-forms-list-card';\nimport { UdpFormsPageIdEnum } from '../udp-forms-utils/enums';\n@Component({\n tag: 'udp-forms-list',\n styleUrl: 'udp-forms-list.css',\n shadow: true,\n})\nexport class UdpFormsList {\n @Element() el: HTMLElement;\n\n @Prop() clientUrlBase: string;\n @Prop() history: any;\n @Prop() isPublicFormConfigOn: boolean = false;\n @Prop() isCreateNewFormHeaderActionConfigOn: boolean = false;\n @Prop() isFollowUpFormConfigOn: boolean = false;\n @Prop() isRendererRedirectConfigOn: boolean = false;\n @Prop() formsBuilderUrlPath: string | undefined; // override path for form builder\n @Prop() formsRendererUrlPath: string | undefined; // override path for form renderer\n\n @State() isSideSheetOpen = false;\n @State() mainFormsList = [];\n @State() sideSheetFormsList = [];\n\n @State() mainListPageNumber = 1;\n @State() sideSheetListPageNumber = 1;\n\n @State() mainTotalItems = 0;\n @State() sideSheetTotalItems = 0;\n\n @State() isLoading = true;\n @State() errorMessage: string = '';\n @State() sortState = { sortDirection: 'DESC', sortColumn: 'initialCreatedOn' };\n @State() searchFilters = [];\n @State() nameFilter = '';\n\n private readonly formsBuilderPageId = UdpFormsPageIdEnum.FormBuilderPageId;\n\n private readonly SIDE_SHEET_PAGE_SIZE = 5;\n private readonly MAIN_PAGE_SIZE = 5;\n\n private currentFormId: string;\n\n private readonly componentMap = {\n history: 'history',\n isSideSheetList: 'isSideSheetList',\n openSideSheet: 'openSideSheet',\n data: 'data',\n titleClick: 'titleClick',\n formsBuilderUrlPath: 'formsBuilderUrlPath',\n formsRendererUrlPath: 'formsRendererUrlPath',\n isFollowUpFormConfigOn: 'isFollowUpFormConfigOn'\n };\n\n private readonly SORT_DIRECTIONS = [\n { label: 'Asc', value: 'ASC' },\n { label: 'Desc', value: 'DESC' },\n ];\n\n private readonly SORT_COLUMNS = [\n { label: 'Created On', value: 'initialCreatedOn' },\n { label: 'Last Modified', value: 'lastModifiedOn' },\n { label: 'Name', value: 'name' },\n ];\n\n private readonly FORM_TYPES = [\n { label: 'Any', value: '0' },\n { label: 'Standard', value: '1' },\n { label: 'FollowUp', value: '2' },\n ]\n\n\n componentDidLoad() {\n return this.loadMainForms();\n }\n\n // ###################### API Helpers ######################\n private async loadMainForms() {\n this.isLoading = true;\n this.errorMessage = '';\n try {\n const response = await fetchLatestForms(this.mainListPageNumber, this.MAIN_PAGE_SIZE, this.searchFilters, this.sortState);\n\n const data = response.data;\n\n if (!data || !Array.isArray(data.pageList)) {\n throw new Error('Malformed data received from server.');\n }\n\n this.mainFormsList = this.formatList(data.pageList, false);\n this.mainTotalItems = data.total ?? 0;\n } catch (err) {\n console.error('Error loading forms data:', err);\n this.errorMessage = 'Failed to load forms. Please try again.';\n } finally {\n this.isLoading = false;\n }\n }\n\n private async loadFormVersions() {\n this.isLoading = true;\n this.errorMessage = '';\n try {\n const response = await fetchFormVersions(this.currentFormId, this.sideSheetListPageNumber, this.SIDE_SHEET_PAGE_SIZE);\n\n const data = response.data;\n\n if (!data || !Array.isArray(data.pageList)) {\n throw new Error('Malformed form versions data.');\n }\n\n this.sideSheetFormsList = this.formatList(data.pageList, true);\n this.sideSheetTotalItems = data.total ?? 0;\n } catch (err) {\n console.error('Error loading form versions:', err);\n this.errorMessage = 'Failed to load form versions.';\n } finally {\n this.isLoading = false;\n }\n }\n\n private formatList(data, isSideSheetList) {\n return data.map(item => ({\n data: item,\n history: this.history,\n isSideSheetList,\n openSideSheet: () => this.handleOpenSideSheet(item.id),\n formsBuilderUrlPath: this.formsBuilderUrlPath,\n formsRendererUrlPath: this.formsRendererUrlPath,\n isFollowUpFormConfigOn: this.isFollowUpFormConfigOn,\n isRendererRedirectConfigOn: this.isRendererRedirectConfigOn\n }));\n }\n\n private debouncedFormNameSearch = (() => {\n let timeout: number;\n return () => {\n clearTimeout(timeout);\n timeout = window.setTimeout(() => this.loadMainForms(), 300);\n };\n })();\n\n // ###################### Main list Handlers/helpers ######################\n private async handleMainPageChange(page: number) {\n this.mainListPageNumber = page;\n await this.loadMainForms();\n }\n\n private handleOrderFilterChange({ fieldName, value }) {\n this.sortState = { ...this.sortState, [fieldName]: value };\n }\n\n private handleFormNameSearchFilterChange(e) {\n const inputEl = e.target as HTMLInputElement;\n this.nameFilter = inputEl.value;\n\n const searchFieldName = 'name';\n const searchOperator = 'LIKE';\n const searchObject = {\n searchField: searchFieldName,\n searchOperator,\n searchValue: inputEl.value,\n };\n\n let filtersStateCopy = this.searchFilters.filter(f => f.searchField !== searchFieldName);\n\n if (inputEl.value.trim() !== '') {\n filtersStateCopy.push(searchObject);\n }\n\n this.searchFilters = filtersStateCopy;\n this.mainListPageNumber = 1;\n }\n\n private async handleFormTypeFilterChange(e) {\n const inputEl = e.target as HTMLInputElement;\n const filterValue = inputEl.value\n const searchFieldName = 'type'\n let filtersStateCopy = this.searchFilters.filter(f => f.searchField !== searchFieldName);\n\n // all forms, remove any filters for type\n if (filterValue !== '0') {\n const searchObject = {\n searchField: searchFieldName,\n searchOperator: '=',\n searchValue: filterValue,\n };\n \n filtersStateCopy.push(searchObject); \n }\n \n this.searchFilters = filtersStateCopy;\n this.mainListPageNumber = 1;\n await this.loadMainForms();\n }\n\n private handleHeaderPrimaryActionClick = () => {\n if (this.formsBuilderUrlPath) {\n this.history.push(this.formsBuilderUrlPath);\n return;\n }\n this.history.push(`/page/${this.formsBuilderPageId}`);\n };\n\n @Watch('sortState')\n async refetchMainListData(newVal: any, oldVal: any) {\n if (JSON.stringify(newVal) === JSON.stringify(oldVal)) return;\n this.mainListPageNumber = 1;\n await this.loadMainForms();\n }\n\n // ###################### Side Sheet list Handler/helpers ######################\n\n private async handleOpenSideSheet(formId: string) {\n this.currentFormId = formId;\n this.sideSheetListPageNumber = 1;\n this.isSideSheetOpen = true;\n await this.loadFormVersions();\n }\n\n private async handleSideSheetPageChange(page: number) {\n this.sideSheetListPageNumber = page;\n await this.loadFormVersions();\n }\n\n private handleSideSheetPrimaryAction = () => {\n // redirect to form builder with latest version\n const latestFormData = this.mainFormsList.find(form => form.data.id === this.sideSheetFormsList[0].data.id).data;\n const latestFormId = latestFormData.id;\n const formLatestVersion = latestFormData.version;\n\n if (this.formsBuilderUrlPath) {\n this.history.push(`${this.formsBuilderUrlPath}&udpf_formId=${latestFormId}&udpf_version=${formLatestVersion}`);\n this.isSideSheetOpen = false;\n return;\n }\n\n this.history.push(`/page/${this.formsBuilderPageId}?udpf_formId=${latestFormId}&udpf_version=${formLatestVersion}`);\n this.isSideSheetOpen = false;\n };\n\n private handleSideSheetClose = () => {\n // reset side sheet data\n this.sideSheetFormsList = [];\n this.sideSheetListPageNumber = 1;\n this.sideSheetTotalItems = 0;\n this.isSideSheetOpen = false;\n };\n\n // ###################### RENDERER HELPERS ######################\n\n private renderFilters() {\n return (\n <div class=\"udp-form-filter-container\">\n <div class=\"search-group\">\n <text-field\n label=\"Search Name\"\n value={this.nameFilter}\n placeholder=\"Search Form Name\"\n onInput={async e => {\n this.handleFormNameSearchFilterChange(e);\n this.debouncedFormNameSearch();\n }}\n margin=\"none\"\n />\n </div>\n <div class=\"selector-group\">\n {this.isPublicFormConfigOn && (\n <udp-selector\n label=\"Form Type\"\n name=\"sortColumn\"\n options={this.FORM_TYPES}\n onChange={async (e: CustomEvent) => await this.handleFormTypeFilterChange(e)}\n initialValue={'0'}\n />\n )}\n <udp-selector\n label=\"Sort By\"\n name=\"sortColumn\"\n options={this.SORT_COLUMNS}\n onChange={(e: CustomEvent) => this.handleOrderFilterChange({ fieldName: 'sortColumn', value: e.detail })}\n initialValue={this.sortState.sortColumn}\n />\n <udp-selector\n label=\"Sort Direction\"\n name=\"sortDirection\"\n options={this.SORT_DIRECTIONS}\n onChange={(e: CustomEvent) => this.handleOrderFilterChange({ fieldName: 'sortDirection', value: e.detail })}\n initialValue={this.sortState.sortDirection}\n />\n </div>\n </div>\n );\n }\n\n private renderSideSheet() {\n return (\n <udp-side-sheet\n primaryButtonLabel=\"Create New Form Version\"\n title=\"Form Version History\"\n open={this.isSideSheetOpen}\n onUdpSideSheetClose={() => this.handleSideSheetClose()}\n position=\"right\"\n width=\"md\"\n onUdpPrimaryButtonClick={() => this.handleSideSheetPrimaryAction()}\n >\n {this.isLoading && this.isSideSheetOpen && <udp-linear-loader />}\n <udp-list-renderer\n itemComponent=\"udp-forms-list-card\"\n data={this.sideSheetFormsList}\n pagination\n isServerSide\n isLoading={this.isLoading}\n itemsPerPage={this.SIDE_SHEET_PAGE_SIZE}\n currentPage={this.sideSheetListPageNumber}\n totalItems={this.sideSheetTotalItems}\n onPageChange={e => this.handleSideSheetPageChange(e.detail)}\n componentDataMap={this.componentMap}\n spacing='md'\n // @ts-ignore -- custom event to close sidesheet after clicking edit action in card\n onCloseSidesheet={() => this.handleSideSheetClose()}\n />\n </udp-side-sheet>\n );\n }\n\n private renderErrorMessage() {\n return this.errorMessage ? (\n <div class=\"error-banner\">\n <unity-typography variant=\"body2\">{this.errorMessage}</unity-typography>\n </div>\n ) : null;\n }\n\n render() {\n return (\n <div class=\"udp-forms-list-container\">\n {this.isCreateNewFormHeaderActionConfigOn ? (\n <primary-action-header\n title=\"UDP Forms\"\n primaryActionClick={() => this.handleHeaderPrimaryActionClick()}\n actionButtonLabel=\"Create New Form\"\n tabs={false}\n />\n ) : (\n <primary-action-header\n title=\"UDP Forms\"\n tabs={false}\n />\n )}\n {this.isLoading && <udp-linear-loader />}\n\n {this.renderSideSheet()}\n <udp-container maxWidth=\"lg\">\n {this.renderErrorMessage()}\n {this.renderFilters()}\n {/* TODO: Add prop for disabling card-content gutter(px) and padding(py) */}\n <udp-list-renderer\n itemComponent=\"udp-forms-list-card\"\n data={this.mainFormsList}\n pagination\n isServerSide\n isLoading={this.isLoading}\n itemsPerPage={this.MAIN_PAGE_SIZE}\n currentPage={this.mainListPageNumber}\n totalItems={this.mainTotalItems}\n onPageChange={e => this.handleMainPageChange(e.detail)}\n componentDataMap={this.componentMap}\n spacing=\"md\"\n />\n </udp-container>\n {/*\n This hidden instance ensures the udp-forms-list-card component is included in the build and its custom element is registered.\n It's necessary because the component is passed as a string (via itemComponent) and not directly used in JSX, which can cause it to be tree-shaken.\n */}\n <udp-forms-list-card style={{ display: 'none' }} />\n {/* TODO: Remove this once we have a proper layout unit component */}\n <div style={{ height: '60px' }} />\n </div>\n );\n }\n}\n"]}
|