@erpsquad/common 1.8.79 → 1.8.81
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/CHANGELOG.md +253 -253
- package/README.md +979 -979
- package/dist/_virtual/index/index.esm10.js +3 -3
- package/dist/_virtual/index/index.esm11.js +3 -3
- package/dist/_virtual/index/index.esm2.js +2 -4
- package/dist/_virtual/index/index.esm2.js.map +1 -1
- package/dist/_virtual/index/index.esm3.js +4 -2
- package/dist/_virtual/index/index.esm3.js.map +1 -1
- package/dist/_virtual/index/index.esm4.js +1 -1
- package/dist/_virtual/index/index.esm5.js +3 -3
- package/dist/_virtual/index/index.esm6.js +3 -3
- package/dist/_virtual/index/index.esm7.js +3 -3
- package/dist/_virtual/index/index.esm8.js +3 -3
- package/dist/_virtual/index/index.esm9.js +3 -3
- package/dist/_virtual/index/index10.js +1 -1
- package/dist/_virtual/index/index11.js +1 -1
- package/dist/_virtual/index/index2.js +1 -1
- package/dist/_virtual/index/index3.js +1 -1
- package/dist/_virtual/index/index4.js +1 -1
- package/dist/_virtual/index/index5.js +1 -1
- package/dist/_virtual/index/index6.js +1 -1
- package/dist/_virtual/index/index7.js +1 -1
- package/dist/_virtual/index/index8.js +1 -1
- package/dist/_virtual/index/index9.js +1 -1
- package/dist/api-client/api.accounting/api/index.esm.js.map +1 -1
- package/dist/api-client/api.accounting/api/index.js.map +1 -1
- package/dist/api-client/api.accounting/api-types.d.ts +15883 -15883
- package/dist/api-client/api.drive/api/index.esm.js.map +1 -1
- package/dist/api-client/api.drive/api/index.js.map +1 -1
- package/dist/api-client/api.drive/api-types.d.ts +696 -696
- package/dist/api-client/api.hrms/api/index.esm.js.map +1 -1
- package/dist/api-client/api.hrms/api/index.js.map +1 -1
- package/dist/api-client/api.inventory/api/index.esm.js.map +1 -1
- package/dist/api-client/api.inventory/api/index.js.map +1 -1
- package/dist/api-client/api.inventory/api-types.d.ts +6110 -6110
- package/dist/api-client/api.manufacturing/api/index.esm.js.map +1 -1
- package/dist/api-client/api.manufacturing/api/index.js.map +1 -1
- package/dist/api-client/api.manufacturing/api-types.d.ts +10066 -10066
- package/dist/api-client/api.purchase/api/index.esm.js.map +1 -1
- package/dist/api-client/api.purchase/api/index.js.map +1 -1
- package/dist/api-client/api.purchase/api-types.d.ts +6715 -6715
- package/dist/api-client/api.rbac/api/index.esm.js.map +1 -1
- package/dist/api-client/api.rbac/api/index.esm2.js.map +1 -1
- package/dist/api-client/api.rbac/api/index.js.map +1 -1
- package/dist/api-client/api.rbac/api/index2.js.map +1 -1
- package/dist/api-client/api.rbac/api-types.d.ts +1753 -1753
- package/dist/api-client/api.rental/api/index.esm.js.map +1 -1
- package/dist/api-client/api.rental/api/index.js.map +1 -1
- package/dist/api-client/api.rental/api-types.d.ts +15666 -15666
- package/dist/api-client/api.sales/api/index.esm.js.map +1 -1
- package/dist/api-client/api.sales/api/index.js.map +1 -1
- package/dist/api-client/api.sales/api-types.d.ts +8258 -8258
- package/dist/api-client/api.system-feature/api/index.esm.js.map +1 -1
- package/dist/api-client/api.system-feature/api/index.js.map +1 -1
- package/dist/api-client/api.system-feature/api-types.d.ts +2875 -2875
- package/dist/api-client/api.user/api/index.esm.js.map +1 -1
- package/dist/api-client/api.user/api/index.js.map +1 -1
- package/dist/api-client/api.user/api-types.d.ts +95 -95
- package/dist/api-client/api.workflow-automation/api/index.esm.js.map +1 -1
- package/dist/api-client/api.workflow-automation/api/index.js.map +1 -1
- package/dist/api-client/index.d.ts +39 -39
- package/dist/components/accordion/accordion/index.esm.js.map +1 -1
- package/dist/components/accordion/accordion/index.js.map +1 -1
- package/dist/components/accordion/accordion.d.ts +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
- package/dist/components/action-bar/action-bar/index.js +5 -5
- package/dist/components/action-bar/action-bar/index.js.map +1 -1
- package/dist/components/action-bar/action-bar.d.ts +1 -1
- package/dist/components/activity-tag/activity-tag/index.esm.js.map +1 -1
- package/dist/components/activity-tag/activity-tag/index.js.map +1 -1
- package/dist/components/alert/alert/index.esm.js.map +1 -1
- package/dist/components/alert/alert/index.js.map +1 -1
- package/dist/components/button/button/index.esm.js.map +1 -1
- package/dist/components/button/button/index.js.map +1 -1
- package/dist/components/change-user-password-modal/change-user-password-modal/index.esm.js.map +1 -1
- package/dist/components/change-user-password-modal/change-user-password-modal/index.js.map +1 -1
- package/dist/components/checkbox/checkbox/index.esm.js.map +1 -1
- package/dist/components/checkbox/checkbox/index.js.map +1 -1
- package/dist/components/checkbox/checkbox.d.ts +1 -1
- package/dist/components/chip/chip/index.esm.js.map +1 -1
- package/dist/components/chip/chip/index.js.map +1 -1
- package/dist/components/chip-generator/chip-generator/index.esm.js.map +1 -1
- package/dist/components/chip-generator/chip-generator/index.js.map +1 -1
- package/dist/components/date-picker/date-picker/index.esm.js.map +1 -1
- package/dist/components/date-picker/date-picker/index.js.map +1 -1
- package/dist/components/date-picker/date-picker.d.ts +1 -1
- package/dist/components/date-time-picker/date-time-picker/index.esm.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker/index.js.map +1 -1
- package/dist/components/editor/custom-editor/index.esm.js.map +1 -1
- package/dist/components/editor/custom-editor/index.js.map +1 -1
- package/dist/components/filter/components/delete-group/index.esm.js +1 -0
- package/dist/components/filter/components/delete-group/index.esm.js.map +1 -1
- package/dist/components/filter/components/delete-group/index.js +1 -1
- package/dist/components/filter/components/delete-group/index.js.map +1 -1
- package/dist/components/filter/filter/index.esm.js +1 -1
- package/dist/components/filter/filter/index.esm.js.map +1 -1
- package/dist/components/filter/filter/index.js +7 -7
- package/dist/components/filter/filter/index.js.map +1 -1
- package/dist/components/footer/footer.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js.map +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js.map +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
- package/dist/components/form-control/form-parser/form-switcher.d.ts +1 -1
- package/dist/components/header/header/index.esm.js.map +1 -1
- package/dist/components/header/header/index.js.map +1 -1
- package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/header/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/header/redux/actionCreator/index.js +1 -1
- package/dist/components/header/redux/actionCreator/index.js.map +1 -1
- package/dist/components/icons/action/index.esm.js.map +1 -1
- package/dist/components/icons/action/index.js.map +1 -1
- package/dist/components/icons/action-arrow.d.ts +3 -3
- package/dist/components/icons/add-circle.d.ts +3 -3
- package/dist/components/icons/arrow-bidirectional.d.ts +3 -3
- package/dist/components/icons/arrow-circle-down.d.ts +3 -3
- package/dist/components/icons/arrow-down-three.d.ts +3 -3
- package/dist/components/icons/arrow-down-two.d.ts +3 -3
- package/dist/components/icons/arrow-down.d.ts +3 -3
- package/dist/components/icons/arrow-up-down.d.ts +3 -3
- package/dist/components/icons/arrow-up-two.d.ts +3 -3
- package/dist/components/icons/assignments.d.ts +3 -3
- package/dist/components/icons/blank-circle.d.ts +3 -3
- package/dist/components/icons/block-filled.d.ts +3 -3
- package/dist/components/icons/calendar-add.d.ts +3 -3
- package/dist/components/icons/calendar.d.ts +3 -3
- package/dist/components/icons/checkbox-square.d.ts +3 -3
- package/dist/components/icons/circular-arrow-setting.d.ts +3 -3
- package/dist/components/icons/clock.d.ts +3 -3
- package/dist/components/icons/close.d.ts +3 -3
- package/dist/components/icons/coin-outline.d.ts +3 -3
- package/dist/components/icons/copy.d.ts +3 -3
- package/dist/components/icons/coupon.d.ts +3 -3
- package/dist/components/icons/criteria/index.esm.js.map +1 -1
- package/dist/components/icons/criteria/index.js.map +1 -1
- package/dist/components/icons/cross/index.esm.js.map +1 -1
- package/dist/components/icons/cross/index.js.map +1 -1
- package/dist/components/icons/cross-hire.d.ts +3 -3
- package/dist/components/icons/custom-styled-icon.d.ts +3 -3
- package/dist/components/icons/dashboard.d.ts +3 -3
- package/dist/components/icons/document-download.d.ts +3 -3
- package/dist/components/icons/document.d.ts +3 -3
- package/dist/components/icons/dollar-circle-filled.d.ts +3 -3
- package/dist/components/icons/dollar-circle.d.ts +3 -3
- package/dist/components/icons/edit.d.ts +3 -3
- package/dist/components/icons/email.d.ts +3 -3
- package/dist/components/icons/export.d.ts +3 -3
- package/dist/components/icons/eye-off.d.ts +3 -3
- package/dist/components/icons/eye-plus-circle.d.ts +3 -3
- package/dist/components/icons/eye.d.ts +3 -3
- package/dist/components/icons/filled-circle.d.ts +3 -3
- package/dist/components/icons/filter-remove.d.ts +3 -3
- package/dist/components/icons/filter.d.ts +3 -3
- package/dist/components/icons/folder-save.d.ts +3 -3
- package/dist/components/icons/grid.d.ts +3 -3
- package/dist/components/icons/hashtag.d.ts +3 -3
- package/dist/components/icons/image.d.ts +3 -3
- package/dist/components/icons/import.d.ts +3 -3
- package/dist/components/icons/info-circle.d.ts +3 -3
- package/dist/components/icons/info.d.ts +3 -3
- package/dist/components/icons/link-horizontal.d.ts +3 -3
- package/dist/components/icons/link.d.ts +3 -3
- package/dist/components/icons/location.d.ts +3 -3
- package/dist/components/icons/lowest-lead-time.d.ts +3 -3
- package/dist/components/icons/lowest-min-qty.d.ts +3 -3
- package/dist/components/icons/lowest-price.d.ts +3 -3
- package/dist/components/icons/more.d.ts +3 -3
- package/dist/components/icons/notification.d.ts +3 -3
- package/dist/components/icons/paper-clip.d.ts +3 -3
- package/dist/components/icons/paragraph.d.ts +3 -3
- package/dist/components/icons/payment-request.d.ts +3 -3
- package/dist/components/icons/phone.d.ts +3 -3
- package/dist/components/icons/printer.d.ts +3 -3
- package/dist/components/icons/process-calendar.d.ts +3 -3
- package/dist/components/icons/promotion.d.ts +3 -3
- package/dist/components/icons/radio-button.d.ts +3 -3
- package/dist/components/icons/receipt-filled.d.ts +3 -3
- package/dist/components/icons/receipt-outline.d.ts +3 -3
- package/dist/components/icons/receipt.d.ts +3 -3
- package/dist/components/icons/refresh-icon.d.ts +3 -3
- package/dist/components/icons/replace.d.ts +3 -3
- package/dist/components/icons/save.d.ts +3 -3
- package/dist/components/icons/search-status.d.ts +3 -3
- package/dist/components/icons/search.d.ts +3 -3
- package/dist/components/icons/settings-fallback.d.ts +3 -3
- package/dist/components/icons/share/index.esm.js.map +1 -1
- package/dist/components/icons/share/index.js.map +1 -1
- package/dist/components/icons/sort-arrow-icon.d.ts +3 -3
- package/dist/components/icons/stacked-layer.d.ts +3 -3
- package/dist/components/icons/start-filled.d.ts +3 -3
- package/dist/components/icons/three-dot-icon.d.ts +3 -3
- package/dist/components/icons/tick-circle-filled.d.ts +3 -3
- package/dist/components/icons/tick-circle.d.ts +3 -3
- package/dist/components/icons/tick-octagon.d.ts +3 -3
- package/dist/components/icons/tick.d.ts +3 -3
- package/dist/components/icons/toggle-switch.d.ts +3 -3
- package/dist/components/icons/trash.d.ts +3 -3
- package/dist/components/icons/wave.d.ts +3 -3
- package/dist/components/icons/with-out-tick-octagon.d.ts +3 -3
- package/dist/components/icons/work-centre.d.ts +3 -3
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/components/label-value/label-value/index.esm.js.map +1 -1
- package/dist/components/label-value/label-value/index.js.map +1 -1
- package/dist/components/listing/listing/index.esm.js.map +1 -1
- package/dist/components/listing/listing/index.js.map +1 -1
- package/dist/components/loaders/erp-loader/index.esm.js.map +1 -1
- package/dist/components/loaders/erp-loader/index.js.map +1 -1
- package/dist/components/loaders/form-loader/index.esm.js.map +1 -1
- package/dist/components/loaders/form-loader/index.js.map +1 -1
- package/dist/components/loaders/modal-loader/index.esm.js.map +1 -1
- package/dist/components/loaders/modal-loader/index.js.map +1 -1
- package/dist/components/loaders/page-loader/index.esm.js.map +1 -1
- package/dist/components/loaders/page-loader/index.js.map +1 -1
- package/dist/components/location-select.d.ts +1 -1
- package/dist/components/material-editable-table/components/inline-edit-fields/index.esm.js.map +1 -1
- package/dist/components/material-editable-table/components/inline-edit-fields/index.js.map +1 -1
- package/dist/components/material-editable-table/material-editable-table/index.esm.js.map +1 -1
- package/dist/components/material-editable-table/material-editable-table/index.js.map +1 -1
- package/dist/components/material-editable-table/material-editable-table.d.ts +1 -1
- package/dist/components/material-table/material-table.d.ts +1 -1
- package/dist/components/menu/menu/index.esm.js.map +1 -1
- package/dist/components/menu/menu/index.js.map +1 -1
- package/dist/components/modal/modal/index.esm.js.map +1 -1
- package/dist/components/modal/modal/index.js.map +1 -1
- package/dist/components/page-navigator/page-navigator/index.esm.js.map +1 -1
- package/dist/components/page-navigator/page-navigator/index.js.map +1 -1
- package/dist/components/phone-input/phone-input.d.ts +1 -1
- package/dist/components/providers/ERPUIProvider/index.esm.js.map +1 -1
- package/dist/components/providers/ERPUIProvider/index.js.map +1 -1
- package/dist/components/radio/radio.d.ts +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/components/reset-password-modal/reset-password-modal/index.esm.js.map +1 -1
- package/dist/components/reset-password-modal/reset-password-modal/index.js.map +1 -1
- package/dist/components/search-bar/search-bar/index.esm.js.map +1 -1
- package/dist/components/search-bar/search-bar/index.js.map +1 -1
- package/dist/components/searchable-select/index.esm.js.map +1 -1
- package/dist/components/searchable-select/index.js.map +1 -1
- package/dist/components/select/controller/chip-or-placeholder/index.esm.js.map +1 -1
- package/dist/components/select/controller/chip-or-placeholder/index.js.map +1 -1
- package/dist/components/select/select/index.esm.js.map +1 -1
- package/dist/components/select/select/index.js.map +1 -1
- package/dist/components/select/select-search/index.esm.js.map +1 -1
- package/dist/components/select/select-search/index.js.map +1 -1
- package/dist/components/select/select.d.ts +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.js +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.js.map +1 -1
- package/dist/components/sub-header-doc/sub-header-doc/index.esm.js.map +1 -1
- package/dist/components/sub-header-doc/sub-header-doc/index.js.map +1 -1
- package/dist/components/switches/android-12-switch/index.esm.js.map +1 -1
- package/dist/components/switches/android-12-switch/index.js.map +1 -1
- package/dist/components/switches/android-12-switch.d.ts +1 -3
- package/dist/components/text-area/text-area/index.esm.js.map +1 -1
- package/dist/components/text-area/text-area/index.js.map +1 -1
- package/dist/components/text-field/text-field/index.esm.js.map +1 -1
- package/dist/components/text-field/text-field/index.js.map +1 -1
- package/dist/components/text-field/text-field.d.ts +1 -1
- package/dist/components/time-picker/time-picker/index.esm.js.map +1 -1
- package/dist/components/time-picker/time-picker/index.js.map +1 -1
- package/dist/components/time-picker/time-picker.d.ts +1 -1
- package/dist/components/toast/toast/index.esm.js.map +1 -1
- package/dist/components/toast/toast/index.js.map +1 -1
- package/dist/components/toggle/toggle/index.esm.js.map +1 -1
- package/dist/components/toggle/toggle/index.js.map +1 -1
- package/dist/components/typography/typography/index.esm.js.map +1 -1
- package/dist/components/typography/typography/index.js.map +1 -1
- package/dist/components/upload/upload/index.esm.js +2 -2
- package/dist/components/upload/upload/index.esm.js.map +1 -1
- package/dist/components/upload/upload/index.js +11 -11
- package/dist/components/upload/upload/index.js.map +1 -1
- package/dist/components/upload-media/upload-media.d.ts +1 -1
- package/dist/constants/defaultColumns/index.esm.js.map +1 -1
- package/dist/constants/defaultColumns/index.js.map +1 -1
- package/dist/constants/modules/index.esm.js.map +1 -1
- package/dist/constants/modules/index.js.map +1 -1
- package/dist/constants/pathnames/pathname/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.accounting/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.accounting/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.crm/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.crm/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.document/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.document/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.hrms/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.hrms/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.inventory/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.inventory/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.manufacturing/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.manufacturing/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.office/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.office/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.procurement/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.procurement/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.project/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.project/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.quotes/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.quotes/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.rental/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.rental/index.js.map +1 -1
- package/dist/constants/pathnames/pathname.user/index.esm.js.map +1 -1
- package/dist/constants/pathnames/pathname.user/index.js.map +1 -1
- package/dist/constants/route-page-map/index.esm.js.map +1 -1
- package/dist/constants/route-page-map/index.js.map +1 -1
- package/dist/constants/status/index.esm.js.map +1 -1
- package/dist/constants/status/index.js.map +1 -1
- package/dist/contexts/AuthContext/index.esm.js +1 -1
- package/dist/contexts/AuthContext/index.esm.js.map +1 -1
- package/dist/contexts/AuthContext/index.js +1 -1
- package/dist/contexts/AuthContext/index.js.map +1 -1
- package/dist/contexts/languageContext/index.esm.js +1 -1
- package/dist/contexts/languageContext/index.esm.js.map +1 -1
- package/dist/contexts/languageContext/index.js +1 -1
- package/dist/contexts/languageContext/index.js.map +1 -1
- package/dist/contexts/page-context/index.esm.js.map +1 -1
- package/dist/contexts/page-context/index.js.map +1 -1
- package/dist/hooks/use-translations/index.esm.js.map +1 -1
- package/dist/hooks/use-translations/index.js.map +1 -1
- package/dist/hooks/useApi/index.esm.js +2 -4
- package/dist/hooks/useApi/index.esm.js.map +1 -1
- package/dist/hooks/useApi/index.js +1 -1
- package/dist/hooks/useApi/index.js.map +1 -1
- package/dist/hooks/useDataFetcher/index.esm.js.map +1 -1
- package/dist/hooks/useDataFetcher/index.js.map +1 -1
- package/dist/layout/fullScreen/fullScreen/index.esm.js.map +1 -1
- package/dist/layout/fullScreen/fullScreen/index.js.map +1 -1
- package/dist/layout/sidebarScreen/sidebarScreen/index.esm.js.map +1 -1
- package/dist/layout/sidebarScreen/sidebarScreen/index.js.map +1 -1
- package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.esm.js +1 -1
- package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.js +1 -1
- package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.esm.js +1 -1
- package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.js +2 -2
- package/dist/node_modules/@glideapps/glide-data-grid-cells/dist/js/article-cell-editor-JDI676YI/index.js.map +1 -1
- package/dist/node_modules/{@toast-ui → @glideapps/glide-data-grid-cells/node_modules/@toast-ui}/react-editor/dist/esm/index/index.esm.js +2 -2
- package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.esm.js.map +1 -0
- package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.js +2 -0
- package/dist/node_modules/@glideapps/glide-data-grid-cells/node_modules/@toast-ui/react-editor/dist/esm/index/index.js.map +1 -0
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.esm.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js +1 -1
- package/dist/node_modules/@mui/system/colorManipulator/index.esm.js +2 -2
- package/dist/node_modules/@mui/system/colorManipulator/index.js +1 -1
- package/dist/node_modules/@mui/system/colorManipulator/index.js.map +1 -1
- package/dist/node_modules/@mui/system/createStyled/index.esm.js +6 -6
- package/dist/node_modules/@mui/system/createStyled/index.js +1 -1
- package/dist/node_modules/@mui/system/createStyled/index.js.map +1 -1
- package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.esm.js +1 -1
- package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.js +1 -1
- package/dist/node_modules/material-react-table/dist/index.esm/index.esm.js +1 -1
- package/dist/node_modules/material-react-table/dist/index.esm/index.js +1 -1
- package/dist/node_modules/material-react-table/dist/index.esm/index.js.map +1 -1
- package/dist/node_modules/{@tanstack → material-react-table/node_modules/@tanstack}/react-virtual/dist/esm/index/index.esm.js +2 -2
- package/dist/node_modules/material-react-table/node_modules/@tanstack/react-virtual/dist/esm/index/index.esm.js.map +1 -0
- package/dist/node_modules/material-react-table/node_modules/@tanstack/react-virtual/dist/esm/index/index.js +2 -0
- package/dist/node_modules/material-react-table/node_modules/@tanstack/react-virtual/dist/esm/index/index.js.map +1 -0
- package/dist/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/redux/actionCreator/index.js.map +1 -1
- package/dist/redux/module-reducer/index.esm.js.map +1 -1
- package/dist/redux/module-reducer/index.js.map +1 -1
- package/dist/redux/store/index.esm.js.map +1 -1
- package/dist/redux/store/index.js.map +1 -1
- package/dist/server/index.esm.js.map +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/src/components/accordion/accordion.d.ts +1 -1
- package/dist/src/components/action-bar/action-bar.d.ts +1 -1
- package/dist/src/components/checkbox/checkbox.d.ts +1 -1
- package/dist/src/components/date-picker/date-picker.d.ts +1 -1
- package/dist/src/components/footer/footer.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
- package/dist/src/components/form-control/form-parser/form-switcher.d.ts +1 -1
- package/dist/src/components/icons/action-arrow.d.ts +3 -3
- package/dist/src/components/icons/add-circle.d.ts +3 -3
- package/dist/src/components/icons/arrow-bidirectional.d.ts +3 -3
- package/dist/src/components/icons/arrow-circle-down.d.ts +3 -3
- package/dist/src/components/icons/arrow-down-three.d.ts +3 -3
- package/dist/src/components/icons/arrow-down-two.d.ts +3 -3
- package/dist/src/components/icons/arrow-down.d.ts +3 -3
- package/dist/src/components/icons/arrow-up-down.d.ts +3 -3
- package/dist/src/components/icons/arrow-up-two.d.ts +3 -3
- package/dist/src/components/icons/assignments.d.ts +3 -3
- package/dist/src/components/icons/blank-circle.d.ts +3 -3
- package/dist/src/components/icons/block-filled.d.ts +3 -3
- package/dist/src/components/icons/calendar-add.d.ts +3 -3
- package/dist/src/components/icons/calendar.d.ts +3 -3
- package/dist/src/components/icons/checkbox-square.d.ts +3 -3
- package/dist/src/components/icons/circular-arrow-setting.d.ts +3 -3
- package/dist/src/components/icons/clock.d.ts +3 -3
- package/dist/src/components/icons/close.d.ts +3 -3
- package/dist/src/components/icons/coin-outline.d.ts +3 -3
- package/dist/src/components/icons/copy.d.ts +3 -3
- package/dist/src/components/icons/coupon.d.ts +3 -3
- package/dist/src/components/icons/cross-hire.d.ts +3 -3
- package/dist/src/components/icons/custom-styled-icon.d.ts +3 -3
- package/dist/src/components/icons/dashboard.d.ts +3 -3
- package/dist/src/components/icons/document-download.d.ts +3 -3
- package/dist/src/components/icons/document.d.ts +3 -3
- package/dist/src/components/icons/dollar-circle-filled.d.ts +3 -3
- package/dist/src/components/icons/dollar-circle.d.ts +3 -3
- package/dist/src/components/icons/edit.d.ts +3 -3
- package/dist/src/components/icons/email.d.ts +3 -3
- package/dist/src/components/icons/export.d.ts +3 -3
- package/dist/src/components/icons/eye-off.d.ts +3 -3
- package/dist/src/components/icons/eye-plus-circle.d.ts +3 -3
- package/dist/src/components/icons/eye.d.ts +3 -3
- package/dist/src/components/icons/filled-circle.d.ts +3 -3
- package/dist/src/components/icons/filter-remove.d.ts +3 -3
- package/dist/src/components/icons/filter.d.ts +3 -3
- package/dist/src/components/icons/folder-save.d.ts +3 -3
- package/dist/src/components/icons/grid.d.ts +3 -3
- package/dist/src/components/icons/hashtag.d.ts +3 -3
- package/dist/src/components/icons/image.d.ts +3 -3
- package/dist/src/components/icons/import.d.ts +3 -3
- package/dist/src/components/icons/info-circle.d.ts +3 -3
- package/dist/src/components/icons/info.d.ts +3 -3
- package/dist/src/components/icons/link-horizontal.d.ts +3 -3
- package/dist/src/components/icons/link.d.ts +3 -3
- package/dist/src/components/icons/location.d.ts +3 -3
- package/dist/src/components/icons/lowest-lead-time.d.ts +3 -3
- package/dist/src/components/icons/lowest-min-qty.d.ts +3 -3
- package/dist/src/components/icons/lowest-price.d.ts +3 -3
- package/dist/src/components/icons/more.d.ts +3 -3
- package/dist/src/components/icons/notification.d.ts +3 -3
- package/dist/src/components/icons/paper-clip.d.ts +3 -3
- package/dist/src/components/icons/paragraph.d.ts +3 -3
- package/dist/src/components/icons/payment-request.d.ts +3 -3
- package/dist/src/components/icons/phone.d.ts +3 -3
- package/dist/src/components/icons/printer.d.ts +3 -3
- package/dist/src/components/icons/process-calendar.d.ts +3 -3
- package/dist/src/components/icons/promotion.d.ts +3 -3
- package/dist/src/components/icons/radio-button.d.ts +3 -3
- package/dist/src/components/icons/receipt-filled.d.ts +3 -3
- package/dist/src/components/icons/receipt-outline.d.ts +3 -3
- package/dist/src/components/icons/receipt.d.ts +3 -3
- package/dist/src/components/icons/refresh-icon.d.ts +3 -3
- package/dist/src/components/icons/replace.d.ts +3 -3
- package/dist/src/components/icons/save.d.ts +3 -3
- package/dist/src/components/icons/search-status.d.ts +3 -3
- package/dist/src/components/icons/search.d.ts +3 -3
- package/dist/src/components/icons/settings-fallback.d.ts +3 -3
- package/dist/src/components/icons/sort-arrow-icon.d.ts +3 -3
- package/dist/src/components/icons/stacked-layer.d.ts +3 -3
- package/dist/src/components/icons/start-filled.d.ts +3 -3
- package/dist/src/components/icons/three-dot-icon.d.ts +3 -3
- package/dist/src/components/icons/tick-circle-filled.d.ts +3 -3
- package/dist/src/components/icons/tick-circle.d.ts +3 -3
- package/dist/src/components/icons/tick-octagon.d.ts +3 -3
- package/dist/src/components/icons/tick.d.ts +3 -3
- package/dist/src/components/icons/toggle-switch.d.ts +3 -3
- package/dist/src/components/icons/trash.d.ts +3 -3
- package/dist/src/components/icons/wave.d.ts +3 -3
- package/dist/src/components/icons/with-out-tick-octagon.d.ts +3 -3
- package/dist/src/components/icons/work-centre.d.ts +3 -3
- package/dist/src/components/location-select.d.ts +1 -1
- package/dist/src/components/material-editable-table/material-editable-table.d.ts +1 -1
- package/dist/src/components/material-table/material-table.d.ts +1 -1
- package/dist/src/components/phone-input/phone-input.d.ts +1 -1
- package/dist/src/components/radio/radio.d.ts +1 -1
- package/dist/src/components/select/select.d.ts +1 -1
- package/dist/src/components/switches/android-12-switch.d.ts +1 -3
- package/dist/src/components/text-field/text-field.d.ts +1 -1
- package/dist/src/components/time-picker/time-picker.d.ts +1 -1
- package/dist/src/components/upload-media/upload-media.d.ts +1 -1
- package/dist/src/utils/common-utility.d.ts +1 -1
- package/dist/style.css +69 -69
- package/dist/styles/index.d.ts +1 -1
- package/dist/theme/theme-impl/index.esm.js.map +1 -1
- package/dist/theme/theme-impl/index.js.map +1 -1
- package/dist/utils/api/index.esm.js +6 -6
- package/dist/utils/api/index.esm.js.map +1 -1
- package/dist/utils/api/index.js +1 -1
- package/dist/utils/api/index.js.map +1 -1
- package/dist/utils/common/index.esm.js +6 -6
- package/dist/utils/common/index.esm.js.map +1 -1
- package/dist/utils/common/index.js +1 -1
- package/dist/utils/common/index.js.map +1 -1
- package/dist/utils/common-utility.d.ts +1 -1
- package/dist/utils/date-range/index.esm.js.map +1 -1
- package/dist/utils/date-range/index.js.map +1 -1
- package/dist/utils/i18n/index.esm.js.map +1 -1
- package/dist/utils/i18n/index.js.map +1 -1
- package/dist/utils/menu-filter/index.esm.js.map +1 -1
- package/dist/utils/menu-filter/index.js.map +1 -1
- package/dist/views/404/index.esm.js.map +1 -1
- package/dist/views/404/index.js.map +1 -1
- package/dist/views/afterAuth/dashboard/dashboard/index.esm.js.map +1 -1
- package/dist/views/afterAuth/dashboard/dashboard/index.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/actionCreator/index.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/reducer/index.esm.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/reducer/index.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/state/index.esm.js.map +1 -1
- package/dist/views/afterAuth/dashboard/redux/state/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/page-view/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/page-view/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/actionCreator/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/reducer/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/reducer/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/state/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/redux/state/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/utils/default-data/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/utils/default-data/index.js.map +1 -1
- package/dist/views/afterAuth/page-view/utils/local-data/index.esm.js.map +1 -1
- package/dist/views/afterAuth/page-view/utils/local-data/index.js.map +1 -1
- package/dist/views/beforeAuth/change-password/change-password/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/change-password/change-password/index.js.map +1 -1
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.js.map +1 -1
- package/dist/views/beforeAuth/components/list-content/column-raw/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/list-content/column-raw/index.js.map +1 -1
- package/dist/views/beforeAuth/components/list-content/list-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/list-content/list-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/share-modal-data/share-modal-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/share-modal-data/share-modal-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/shared-pages-data/shared-pages-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/shared-pages-data/shared-pages-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/user-dashboard-data/user-dashboard-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/user-dashboard-data/user-dashboard-data/index.js.map +1 -1
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.js.map +1 -1
- package/dist/views/beforeAuth/forgot-password/forgot-password/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/forgot-password/forgot-password/index.js.map +1 -1
- package/dist/views/beforeAuth/landing/landing/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/landing/landing/index.js.map +1 -1
- package/dist/views/beforeAuth/reset-password/reset-password/index.esm.js.map +1 -1
- package/dist/views/beforeAuth/reset-password/reset-password/index.js.map +1 -1
- package/dist/views/form-builder/custom-form/index.esm.js.map +1 -1
- package/dist/views/form-builder/custom-form/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/checkbox/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/checkbox/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/column-width/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/column-width/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/field-select/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/field-select/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/section/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/section/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/select/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/select/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/table-form/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/table-form/index.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/text/index.esm.js.map +1 -1
- package/dist/views/form-builder/element-edit-forms/text/index.js.map +1 -1
- package/dist/views/form-builder/field_properties/index.esm.js.map +1 -1
- package/dist/views/form-builder/field_properties/index.js.map +1 -1
- package/dist/views/form-builder/form-fields/index.esm.js.map +1 -1
- package/dist/views/form-builder/form-fields/index.js.map +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.esm.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js.map +1 -1
- package/dist/views/form-builder/redux/reducer/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/reducer/index.js.map +1 -1
- package/dist/views/form-builder/redux/state/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/state/index.js.map +1 -1
- package/dist/views/form-builder/utils/common/index.esm.js.map +1 -1
- package/dist/views/form-builder/utils/common/index.js.map +1 -1
- package/dist/views/index.d.ts +8 -8
- package/dist/views/privateRoute/index.esm.js.map +1 -1
- package/dist/views/privateRoute/index.js.map +1 -1
- package/dist/views/template-editor/add-template/add-template/index.esm.js.map +1 -1
- package/dist/views/template-editor/add-template/add-template/index.js.map +1 -1
- package/dist/views/template-editor/company-selection-modal/company-selection-modal/index.esm.js.map +1 -1
- package/dist/views/template-editor/company-selection-modal/company-selection-modal/index.js.map +1 -1
- package/dist/views/template-editor/components/EditorCanvas/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/EditorCanvas/index.js.map +1 -1
- package/dist/views/template-editor/components/EditorHeader/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/EditorHeader/index.js.map +1 -1
- package/dist/views/template-editor/components/EditorSection/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/EditorSection/index.js.map +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.esm.js +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.js +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.js.map +1 -1
- package/dist/views/template-editor/components/SectionFlowEditor/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/SectionFlowEditor/index.js.map +1 -1
- package/dist/views/template-editor/components/SectionFormatPanel/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/SectionFormatPanel/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/AlignmentControl/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/AlignmentControl/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/ButtonControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/ButtonControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/CodeControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/CodeControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/DividerControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/DividerControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/ImageControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/ImageControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/SignatureControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/SignatureControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/TableControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/TableControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/TextControls/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/TextControls/index.js.map +1 -1
- package/dist/views/template-editor/components/controllers/border-control/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/controllers/border-control/index.js.map +1 -1
- package/dist/views/template-editor/edit-section-modal/edit-section-modal/index.esm.js.map +1 -1
- package/dist/views/template-editor/edit-section-modal/edit-section-modal/index.js.map +1 -1
- package/dist/views/template-editor/routes/index.esm.js.map +1 -1
- package/dist/views/template-editor/routes/index.js.map +1 -1
- package/dist/views/template-editor/template-modal/html-thumbnail-preview/index.esm.js.map +1 -1
- package/dist/views/template-editor/template-modal/html-thumbnail-preview/index.js.map +1 -1
- package/dist/views/template-editor/template-modal/template-modal/index.esm.js.map +1 -1
- package/dist/views/template-editor/template-modal/template-modal/index.js.map +1 -1
- package/dist/views/template-editor/template-name-modal/template-name-modal/index.esm.js.map +1 -1
- package/dist/views/template-editor/template-name-modal/template-name-modal/index.js.map +1 -1
- package/dist/views/template-editor/templates/index.esm.js +1 -1
- package/dist/views/template-editor/templates/index.esm.js.map +1 -1
- package/dist/views/template-editor/templates/index.js +1 -1
- package/dist/views/template-editor/templates/index.js.map +1 -1
- package/dist/views/template-editor/utils/common/index.esm.js.map +1 -1
- package/dist/views/template-editor/utils/common/index.js.map +1 -1
- package/dist/views/template-editor/utils/constant/index.esm.js.map +1 -1
- package/dist/views/template-editor/utils/constant/index.js.map +1 -1
- package/dist/views/template-editor/utils/default-data/index.esm.js.map +1 -1
- package/dist/views/template-editor/utils/default-data/index.js.map +1 -1
- package/dist/views/template-editor/utils/style-extractor/index.esm.js.map +1 -1
- package/dist/views/template-editor/utils/style-extractor/index.js.map +1 -1
- package/dist/vite-env.d.ts +23 -23
- package/package.json +299 -299
- package/src/styles/README.md +287 -287
- package/src/styles/all.scss +7 -7
- package/src/styles/animations.scss +5 -5
- package/src/styles/css/reset.css +1 -1
- package/src/styles/index.d.ts +1 -1
- package/src/styles/index.ts +1 -1
- package/src/styles/mixins.scss +5 -5
- package/src/styles/sass/main.scss +11 -11
- package/src/styles/utils.scss +5 -5
- package/src/styles/variables.scss +4 -4
- package/dist/node_modules/@tanstack/react-virtual/dist/esm/index/index.esm.js.map +0 -1
- package/dist/node_modules/@tanstack/react-virtual/dist/esm/index/index.js +0 -2
- package/dist/node_modules/@tanstack/react-virtual/dist/esm/index/index.js.map +0 -1
- package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.esm.js.map +0 -1
- package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.js +0 -2
- package/dist/node_modules/@toast-ui/react-editor/dist/esm/index/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../../src/views/form-builder/custom-form.tsx"],"sourcesContent":["// React imports\nimport { useState, useEffect, useMemo, useCallback } from \"react\";\n\n// React Router imports\nimport { useLocation, useNavigate } from \"react-router-dom\";\n\n// React Hook Form imports\nimport { useForm, useFieldArray } from \"react-hook-form\";\n\n// Material UI imports\nimport { Box, FormControlLabel, Grid, RadioGroup } from \"@mui/material\";\nimport { Add } from \"@mui/icons-material\";\n\n// Third-party imports\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { MRT_ColumnDef, MRT_RowData } from \"material-react-table\";\nimport { useTranslation } from \"react-i18next\";\nimport { enqueueSnackbar } from \"notistack\";\n\n// ERP Common imports\nimport DynamicSectionHOC from \"@/components/form-control/form-builder/form-builder-element/section\";\nimport Button from \"@/components/form-control/form-builder/form-builder-element/button\";\nimport TabBar from \"@/components/tabs/tabs\";\nimport images from \"@/assets/images\";\nimport { Pathname } from \"@/constants\";\nimport FormHeader from \"@/components/form-header/form-header\";\nimport Typography from \"@/components/typography/typography\";\nimport formBuilderConversion from \"@/utils/form-builder-conversion\";\nimport { useAppDispatch, useAppSelector } from \"@/redux/hooks\";\nimport { formatLabel } from \"@/utils/format-text\";\nimport Toast from \"@/components/toast/toast\";\nimport Radio from \"@/components/radio/radio\";\nimport { SECTION_TYPES } from \"@/utils/constant\";\nimport ErpLoader from \"@/components/loaders/erp-loader\";\nimport { getErrorMessage } from \"@/utils/common\";\nimport FormParser from \"@/components/form-control/form-parser/form-parser\";\nimport { Eye, EyeOff } from \"@/components/icons\";\n\n// Redux actions\nimport {\n patchFormDataById,\n getFormDataById,\n getFieldsByFormId,\n} from \"../form-builder/redux/actionCreator\";\n\n// Local imports\nimport {\n IProperty,\n ISectionProperty,\n ISelectProperty,\n element,\n} from \"./field_properties\";\nimport TextEditForm from \"./element-edit-forms/text\";\nimport SelectEditForm from \"./element-edit-forms/select\";\nimport SectionEditForm from \"./element-edit-forms/section\";\nimport CheckboxEditForm from \"./element-edit-forms/checkbox\";\nimport TableEditForm from \"./element-edit-forms/table-form\";\nimport FormFields from \"./form-fields\";\nimport { generateModulePath, useFormDataEffect } from \"./utils/common\";\nimport \"./custom-form.scss\";\n\nexport interface IElementJson extends IProperty {\n type: string;\n}\n\nconst FIELD_TYPES = {\n TEXT: 'text',\n NUMBER: 'number',\n EMAIL: 'email',\n PHONE: 'phone',\n SELECT: 'select',\n DATE: 'date',\n TIME: 'time',\n URL: 'url',\n CURRENCY: 'currency',\n FILE: 'file',\n GEO_LOCATION: 'geoLocation',\n IMAGE: 'image',\n SECTION: 'section',\n INFO: 'info',\n RELATION: 'relation',\n CHECKBOX: 'checkbox',\n TOGGLE_BUTTON: 'toggleButton',\n TAGS_INPUT: 'tagsInput'\n} as const;\n\nconst DEFAULT_GRID_COLUMNS = 12;\nconst DEFAULT_COLUMN_WIDTH = 2;\nconst DEFAULT_TAB_TITLE = 'data';\n\nconst isValidNumber = (value: any): boolean => !isNaN(Number(value)) && isFinite(Number(value));\nconst deepClone = (obj: T): T => JSON.parse(JSON.stringify(obj));\nconst generateUniqueId = (separator = ''): { uniqueStringId: string } => {\n return { uniqueStringId: `${Date.now()}${separator}${Math.random().toString(36).substr(2, 9)}` };\n};\n\n\nexport function CustomForm() {\n const { t } = useTranslation();\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const location = useLocation();\n const rowData = location.state ?? [];\n\n const formBuilder = useAppSelector((state) => state.formBuilder);\n\n const { control } = useForm({\n reValidateMode: \"onBlur\",\n });\n\n const {\n fields: members,\n append,\n remove,\n update,\n move,\n insert,\n } = useFieldArray({\n control,\n name: \"members\",\n });\n\n const {\n fields: section,\n append: appendSection,\n remove: removeSection,\n update: updateSection,\n } = useFieldArray({\n control,\n name: \"section\",\n });\n\n const [selectedHoc, setSelectedHoc] = useState(\"\");\n const [activeSection, setActiveSection] = useState<number>();\n const [activeMember, setActiveMember] = useState<number>();\n\n const [formJSON, setFormJSON] = useState<object[]>([]);\n const [elementJSON, setElementJSON] = useState<any>(null);\n const [positionEditedElement, setPositionEditedElement] = useState<\n number | undefined\n >();\n\n const [sectionFormJSON, setSectionFormJSON] = useState<object[]>([]);\n const [sectionJSON, setSectionJSON] = useState<any>({});\n const [sectionPositionEditedElement, setSectionPositionEditedElement] =\n useState<number | undefined>();\n const [removeSectionActionPerformed, setRemoveSectionActionPerformed] =\n useState(false);\n const [removeSectionMembersPerformed, setRemoveSectionMembersPerformed] =\n useState(false);\n const [removeSectionPosition, setRemoveSectionPosition] = useState<\n number | undefined\n >();\n const [initialLoading, setInitialLoading] = useState(true);\n const [tabsData, setTabsData] = useState<any[]>([]);\n const [activeTabValue, setActiveTabValue] = useState<number | undefined>(0);\n\n const [elementSwap, setElementSwap] = useState(false);\n const [modifyAccordion, setModifyAccordion] = useState(false);\n const [toast, setToast] = useState<IToast | null>(null);\n const [previewFieldsData, setPreviewFields] = useState<any>(null);\n const [_, setFormParserMethods] = useState<any>();\n\n let elementPerColumn: any;\n\n const currentModule = location.pathname.split('/')[2]\n\n const path = generateModulePath(currentModule)\n\n useFormDataEffect(\n formBuilder,\n tabsData,\n activeTabValue,\n {\n removeSection,\n remove,\n setTabsData,\n append,\n appendSection\n }\n );\n\n const pickPropertyEditForm = useCallback((type: string): React.ReactElement => {\n try {\n if (!type || typeof type !== 'string') {\n console.warn('Invalid field type provided to pickPropertyEditForm');\n return <div className=\"text-gray-500 p-4\">Select a field to edit</div>;\n }\n\n const normalizedType = type.toLowerCase().trim();\n\n // Define form type groups for better maintainability\n const formGroups = {\n text: [\n 'text', 'number', 'email', 'phone', 'date', 'time',\n 'url', 'currency', 'file', 'geolocation', 'image',\n 'relation', 'info', 'tagsinput'\n ],\n select: ['select'],\n section: ['section'],\n checkbox: ['checkbox', 'togglebutton', 'radiobutton'],\n table: ['table']\n };\n\n // Common props for reusability\n const commonTextProps = {\n element: elementJSON,\n handlePropertyValueUpdate,\n handleWidthChange,\n handleColumnSelect,\n fields: formBuilder?.fields || []\n };\n\n const commonSelectProps = {\n element: elementJSON,\n handlePropertyValueUpdate,\n handleSelectOptionValueUpdate,\n handleWidthChange,\n handleColumnSelect\n };\n\n // Determine form type and render appropriate component\n if (formGroups.text.includes(normalizedType)) {\n return (\n <TextEditForm\n {...commonTextProps}\n key={`text-form-${elementJSON?.id || 'default'}`}\n />\n );\n }\n\n if (formGroups.select.includes(normalizedType)) {\n return (\n <SelectEditForm\n {...commonSelectProps}\n key={`select-form-${elementJSON?.id || 'default'}`}\n />\n );\n }\n\n if (formGroups.section.includes(normalizedType)) {\n return (\n <SectionEditForm\n element={sectionJSON}\n handlePropertyValueUpdate={handleSectionPropertyValueUpdate}\n key={`section-form-${sectionJSON?.id || 'default'}`}\n />\n );\n }\n\n if (formGroups.checkbox.includes(normalizedType)) {\n return (\n <CheckboxEditForm\n {...commonSelectProps}\n key={`checkbox-form-${elementJSON?.id || 'default'}`}\n />\n );\n }\n\n if (formGroups.table.includes(normalizedType)) {\n return (\n <TableEditForm\n element={elementJSON}\n handlePropertyValueUpdate={handlePropertyValueUpdate}\n handleColumnsUpdate={handleColumnsUpdate}\n fields={formBuilder?.fields || []}\n key={`table-form-${elementJSON?.id || 'default'}`}\n />\n );\n }\n\n // Default fallback with helpful message\n console.warn(`Unknown field type: ${type}`);\n return (\n <div className=\"text-gray-500 p-4 border border-gray-200 rounded\">\n <p className=\"font-medium\">Unknown Field Type</p>\n <p className=\"text-sm mt-1\">\n Field type \"{type}\" is not supported. Please select a valid field to edit.\n </p>\n </div>\n );\n\n } catch (error) {\n console.error('Error in pickPropertyEditForm:', error);\n return (\n <div className=\"text-red-500 p-4 border border-red-200 rounded bg-red-50\">\n <p className=\"font-medium\">Error Loading Form</p>\n <p className=\"text-sm mt-1\">\n There was an error loading the property edit form. Please try again.\n </p>\n </div>\n );\n }\n }, [elementJSON, sectionJSON, formBuilder]);\n\n const addNewSection = useCallback((): void => {\n try {\n if (!element?.section) {\n console.error('Element section template is not available');\n return;\n }\n\n const { uniqueStringId: id } = generateUniqueId('-');\n const newSection: ISectionProperty = {\n ...deepClone(element.section),\n id: id,\n };\n\n // Update switcher forms with new ID if they exist\n if (newSection.switcher_forms) {\n newSection.switcher_forms = newSection.switcher_forms.map(form => ({\n ...form,\n id: generateUniqueId('-').uniqueStringId\n }));\n }\n\n const newSectionIndex = section.length;\n\n appendSection(newSection);\n setActiveSection(newSectionIndex);\n setSelectedHoc('section');\n\n const sectionData: ISectionProperty = {\n field_type: newSection.field_type,\n section_type: newSection.section_type,\n switcher_forms: newSection.switcher_forms,\n form_switcher_label: newSection.form_switcher_label,\n form_switcher_name: newSection.form_switcher_name,\n label: newSection.label,\n is_accordion: newSection.is_accordion,\n id: newSection.id ?? newSectionIndex,\n };\n\n setSectionJSON(sectionData);\n setSectionPositionEditedElement(newSectionIndex);\n pickPropertyEditForm(newSection.field_type);\n } catch (error) {\n console.error('Error adding new section:', error);\n }\n }, [element, section, appendSection, setActiveSection, setSelectedHoc, setSectionJSON, setSectionPositionEditedElement, pickPropertyEditForm]);\n\n /**\n * Enhanced handleAddTab with better validation and error handling\n */\n const handleAddTab = useCallback((): void => {\n try {\n const formWithMembers = deepClone(sectionFormJSON);\n\n // Populate sections with their members\n formWithMembers.forEach((section: ISectionProperty, sectionIndex: number) => {\n section.members = members.filter(\n (member: IProperty) => member?.section_order === sectionIndex\n );\n });\n\n const hasSystemMembers = formWithMembers.some((section: ISectionProperty) =>\n section.members?.some((member: IProperty) => Boolean(member?.is_system_field))\n );\n\n const shouldRemoveTab = !tabsData?.length && hasSystemMembers;\n\n const newTab: TabData = {\n tab_order: tabsData.length + 1,\n title: DEFAULT_TAB_TITLE,\n remove_tab: shouldRemoveTab,\n data: tabsData?.length ? [] : formWithMembers\n };\n\n setTabsData(prevTabs => [...prevTabs, newTab]);\n } catch (error) {\n console.error('Error adding new tab:', error);\n }\n }, [sectionFormJSON, members, tabsData, setTabsData]);\n\n const handleEditTabTitle = useCallback((tabId: number, newTitle: string): void => {\n try {\n if (!isValidNumber(tabId) || !newTitle?.trim()) {\n console.error('Invalid tab ID or title provided');\n return;\n }\n\n setTabsData(prevTabs =>\n prevTabs.map((tab: TabData) =>\n tab.tab_order === tabId ? { ...tab, title: newTitle.trim() } : tab\n )\n );\n } catch (error) {\n console.error('Error editing tab title:', error);\n }\n }, [setTabsData]);\n\n const handleRemoveTab = useCallback((id: number): void => {\n try {\n if (!isValidNumber(id)) {\n console.error('Invalid tab ID provided');\n return;\n }\n\n const filteredTabs = tabsData.filter((tab: TabData) => tab.tab_order !== id);\n\n // Reorder remaining tabs\n const reorderedTabs = filteredTabs.map((tab: TabData) => ({\n ...tab,\n tab_order: tab.tab_order > id ? tab.tab_order - 1 : tab.tab_order,\n }));\n\n setTabsData(reorderedTabs);\n if (activeTabValue == id) {\n setActiveTabValue(reorderedTabs?.length - 1)\n }\n\n if (reorderedTabs.length > 0) {\n const activeTab = reorderedTabs.find(\n (tab: TabData) => tab.tab_order === (activeTabValue ?? 0) + 1\n );\n\n if (activeTab?.data) {\n const sections = activeTab.data.map(\n ({ field_type, label, is_accordion, id, remove_section }) => ({\n field_type,\n label,\n is_accordion,\n id,\n remove_section,\n })\n );\n\n const membersList = activeTab.data.flatMap((section: ISectionProperty) =>\n section.members?.map((member: IProperty) => ({ ...member })) || []\n );\n\n // Clear current data and add new data\n remove();\n removeSection();\n membersList.forEach(member => append(member));\n sections.forEach(section => appendSection(section));\n }\n } else {\n // Clear all data if no tabs remain\n remove();\n removeSection();\n }\n } catch (error) {\n console.error('Error removing tab:', error);\n }\n }, [tabsData, activeTabValue, setTabsData, remove, removeSection, append, appendSection]);\n\n const handleElementSelection = useCallback((e: React.MouseEvent<HTMLElement>): void => {\n try {\n const target = e.target as HTMLElement;\n const elementPositionIndex = target.dataset.position;\n\n if (!elementPositionIndex || !isValidNumber(elementPositionIndex)) {\n console.error('Invalid element position index');\n return;\n }\n\n const positionIndex = Number(elementPositionIndex);\n\n if (positionIndex < 0 || positionIndex >= formJSON.length) {\n console.error('Element position index out of bounds');\n return;\n }\n\n setActiveMember(positionIndex);\n\n const elementDetails = deepClone(formJSON[positionIndex]);\n setPositionEditedElement(positionIndex);\n setElementJSON(elementDetails);\n setSelectedHoc('element');\n } catch (error) {\n console.error('Error selecting element:', error);\n }\n }, [formJSON, setActiveMember, setPositionEditedElement, setElementJSON, setSelectedHoc]);\n\n const handleSectionSelection = useCallback((e: React.MouseEvent<HTMLElement>): void => {\n try {\n const target = e.target as HTMLElement;\n const sectionPositionIndex = target.dataset.position;\n\n if (!sectionPositionIndex || !isValidNumber(sectionPositionIndex)) {\n console.error('Invalid section position index');\n return;\n }\n\n const positionIndex = Number(sectionPositionIndex);\n\n if (positionIndex < 0 || positionIndex >= sectionFormJSON.length) {\n console.error('Section position index out of bounds');\n return;\n }\n\n setActiveSection(positionIndex);\n\n const sectionDetails = deepClone(sectionFormJSON[positionIndex]);\n setSectionPositionEditedElement(positionIndex);\n setSectionJSON(sectionDetails);\n setSelectedHoc('section');\n } catch (error) {\n console.error('Error selecting section:', error);\n }\n }, [sectionFormJSON, setActiveSection, setSectionPositionEditedElement, setSectionJSON, setSelectedHoc]);\n\n const handleAddMember = useCallback((\n e: React.SyntheticEvent<HTMLElement>,\n otherProperties?: Record<string, any>\n ): void => {\n try {\n const target = e.currentTarget as HTMLElement;\n const sectionPositionIndex = target?.dataset?.position;\n\n if (sectionPositionIndex === undefined || !isValidNumber(sectionPositionIndex)) {\n console.error('Invalid section position index for adding member');\n return;\n }\n\n const positionIndex = Number(sectionPositionIndex);\n\n if (positionIndex < 0) {\n console.error('Section position index cannot be negative');\n return;\n }\n\n if (!element?.text) {\n console.error('Element text template is not available');\n return;\n }\n\n const newMember: IProperty = {\n ...deepClone(element.text),\n ...otherProperties,\n section_order: positionIndex,\n type: 'custom',\n is_new: true,\n custom_width: Math.floor(DEFAULT_GRID_COLUMNS / DEFAULT_COLUMN_WIDTH),\n is_fullwidth: false,\n is_system_field: Boolean(otherProperties?.is_system_field),\n id: generateUniqueId().uniqueStringId,\n };\n\n setActiveSection(positionIndex);\n append(newMember);\n\n const elementPositionIndex = members.length;\n setActiveMember(elementPositionIndex);\n setSelectedHoc('element');\n setPositionEditedElement(elementPositionIndex);\n setElementJSON(newMember);\n pickPropertyEditForm(newMember.field_type);\n } catch (error) {\n console.error('Error adding new member:', error);\n }\n }, [element, members, setActiveSection, append, setActiveMember, setSelectedHoc, setPositionEditedElement, setElementJSON, pickPropertyEditForm]);\n\n\n const handleSectionPropertyValueUpdate = useCallback((\n e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>,\n overrideValue?: any\n ): void => {\n try {\n const { name, type, checked, value } = e.target;\n\n if (!name) {\n console.error('Property name is required for update');\n return;\n }\n\n const updatedValue = overrideValue !== undefined ? overrideValue : (type === 'checkbox' ? checked : value);\n\n // Only update if value actually changed\n if (sectionJSON[name] !== updatedValue) {\n setSectionJSON(prev => ({ ...prev, [name]: updatedValue }));\n }\n } catch (error) {\n console.error('Error updating section property:', error);\n }\n }, [sectionJSON, setSectionJSON]);\n\n const handleWidthChange = useCallback((newCustomWidth: number): void => {\n try {\n if (!isValidNumber(newCustomWidth) || newCustomWidth < 1 || newCustomWidth > DEFAULT_GRID_COLUMNS) {\n console.error('Invalid width value provided');\n return;\n }\n\n setElementJSON(prevData => ({\n ...prevData,\n custom_width: newCustomWidth,\n }));\n } catch (error) {\n console.error('Error updating width:', error);\n }\n }, [setElementJSON]);\n\n const handleColumnSelect = useCallback((e: React.ChangeEvent<HTMLSelectElement>): void => {\n try {\n const columnValue = Number(e.target.value);\n\n if (!isValidNumber(columnValue) || columnValue <= 0) {\n console.error('Invalid column value provided');\n return;\n }\n\n const elementPerColumn = Math.floor(DEFAULT_GRID_COLUMNS / columnValue);\n\n if (elementPerColumn <= 0) {\n console.error('Calculated element per column is invalid');\n return;\n }\n\n // Batch update all members\n members.forEach((field: IProperty, index: number) => {\n update(index, { ...field, custom_width: elementPerColumn });\n });\n } catch (error) {\n console.error('Error updating column selection:', error);\n }\n }, [members, update]);\n\n const handlePropertyValueUpdate = useCallback((\n e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>,\n numberValue?: number,\n val?: string,\n fieldType?: keyof typeof FIELD_TYPES\n ): void => {\n try {\n const getValue = (): any => {\n if (fieldType) return fieldType;\n if (val !== undefined) return val;\n if (numberValue !== undefined) return numberValue;\n return e?.target?.value;\n };\n\n const value = getValue();\n const elementJSONCopy = deepClone(elementJSON);\n\n if (e?.target?.name) {\n elementJSONCopy[e.target.name] = e.target.type === 'checkbox' ? e.target.checked : value;\n }\n // Only update if there's an actual change\n if (fieldType) {\n const { uniqueStringId: uniqueId } = generateUniqueId();\n const copyOfUpdatedElement: IProperty = {\n ...element[fieldType],\n section_form_id: elementJSONCopy?.section_form_id,\n is_form_switcher_section: elementJSONCopy?.is_form_switcher_section,\n section_order: elementJSONCopy.section_order,\n id: uniqueId,\n type: 'custom',\n is_system_field: Boolean(elementJSONCopy?.is_system_field),\n is_new: true,\n column_width: elementJSONCopy?.column_width || 6,\n custom_width: elementJSONCopy?.custom_width || 6\n };\n setElementJSON(copyOfUpdatedElement);\n } else if (JSON.stringify(elementJSON) !== JSON.stringify(elementJSONCopy)) {\n setElementJSON({ ...elementJSON, ...elementJSONCopy });\n }\n } catch (error) {\n console.error('Error updating property value:', error);\n }\n }, [elementJSON, element, setElementJSON]);\n\n const handleSelectOptionValueUpdate = useCallback((options: any[]): void => {\n try {\n if (!Array.isArray(options)) {\n console.error('Options must be an array');\n return;\n }\n\n const elementJSONCopy = deepClone(elementJSON);\n elementJSONCopy.options = [...options];\n const { uniqueStringId: uniqueId } = generateUniqueId('-');\n\n if (JSON.stringify(elementJSON.options) !== JSON.stringify(options)) {\n setElementJSON({ ...elementJSON, ...elementJSONCopy, id: uniqueId });\n }\n } catch (error) {\n console.error('Error updating select options:', error);\n }\n }, [elementJSON, setElementJSON]);\n\n const handleColumnsUpdate = useCallback((columns: MRT_ColumnDef<MRT_RowData>[]): void => {\n try {\n if (!Array.isArray(columns)) {\n console.error('Columns must be an array');\n return;\n }\n\n const elementJSONCopy = deepClone(elementJSON);\n elementJSONCopy.table_columns = [...columns];\n const { uniqueStringId: uniqueId } = generateUniqueId('-');\n\n if (JSON.stringify(elementJSON.table_columns) !== JSON.stringify(columns)) {\n setElementJSON({ ...elementJSON, ...elementJSONCopy, id: uniqueId });\n }\n } catch (error) {\n console.error('Error updating table columns:', error);\n }\n }, [elementJSON, setElementJSON]);\n\n const handleRemoveSection = useCallback((sectionIndex: number): void => {\n try {\n if (!isValidNumber(sectionIndex) || sectionIndex < 0 || sectionIndex >= section.length) {\n console.error('Invalid section index for removal');\n return;\n }\n\n setRemoveSectionPosition(sectionIndex);\n removeSection(sectionIndex);\n\n // Remove associated members in reverse order to maintain indices\n const membersToRemove: number[] = [];\n members.forEach((member: IProperty, index: number) => {\n if (member?.section_order === sectionIndex) {\n membersToRemove.push(index);\n }\n });\n\n // Remove members in reverse order to maintain correct indices\n membersToRemove.reverse().forEach(memberIndex => {\n remove(memberIndex);\n });\n\n setRemoveSectionActionPerformed(true);\n } catch (error) {\n console.error('Error removing section:', error);\n }\n }, [section, members, setRemoveSectionPosition, removeSection, remove, setRemoveSectionActionPerformed]);\n\n const handleMakeAccordion = useCallback((sectionIndex: number): void => {\n try {\n if (!isValidNumber(sectionIndex) || sectionIndex < 0 || sectionIndex >= section.length) {\n console.error('Invalid section index for accordion conversion');\n return;\n }\n\n setModifyAccordion(true);\n setSectionPositionEditedElement(sectionIndex);\n setActiveSection(sectionIndex);\n\n const copyOfSection: ISectionProperty = {\n ...deepClone(section[sectionIndex]),\n is_accordion: true\n };\n\n updateSection(sectionIndex, copyOfSection);\n setSelectedHoc('section');\n setSectionJSON(copyOfSection);\n pickPropertyEditForm(copyOfSection.field_type);\n } catch (error) {\n console.error('Error making section accordion:', error);\n }\n }, [section, setModifyAccordion, setSectionPositionEditedElement, setActiveSection, updateSection, setSelectedHoc, setSectionJSON, pickPropertyEditForm]);\n\n const handleTabData = useCallback((): void => {\n try {\n const formWithMembers = deepClone(sectionFormJSON);\n\n formWithMembers.forEach((section: ISectionProperty, sectionIndex: number) => {\n section.members = members.filter(\n (member: IProperty) => member?.section_order === sectionIndex\n );\n });\n\n const hasSystemMembers = formWithMembers.some((section: ISectionProperty) =>\n section.members?.some((member: IProperty) => Boolean(member?.is_system_field))\n );\n\n const activeTabIndex = Number(activeTabValue);\n if (isValidNumber(activeTabIndex) && activeTabIndex >= 0 && activeTabIndex < tabsData.length) {\n const updatedTabsData = [...tabsData];\n updatedTabsData[activeTabIndex] = {\n ...updatedTabsData[activeTabIndex],\n data: formWithMembers,\n remove_tab: hasSystemMembers,\n };\n setTabsData(updatedTabsData)\n remove();\n removeSection();\n setActiveMember(undefined);\n setSelectedHoc(\"\");\n setActiveSection(undefined);\n }\n } catch (error) {\n console.error('Error updating tab data:', error);\n }\n }, [sectionFormJSON, members, activeTabValue, tabsData, setTabsData]);\n\n // const handlePreview = () => {\n // const formWithMembers = JSON.parse(JSON.stringify(sectionFormJSON));\n\n // formWithMembers.forEach(\n // (section: ISectionProperty, sectionIndex: number) => {\n // section.members = members.filter(\n // (member: any) => member?.section_order === sectionIndex,\n // ) as (IProperty | ISelectProperty)[];\n // },\n // );\n // const state = tabsData?.length\n // ? { tab: tabsData }\n // : { section: formWithMembers };\n\n // const FormBuilderConversion = state && formBuilderConversion(state);\n\n // setPreviewFields(FormBuilderConversion);\n // };\n\n // Option 1: Using useMemo to memoize the expensive computation\n const formWithMembers = useMemo(() => {\n if (!sectionFormJSON || !members) return null;\n\n return sectionFormJSON.map((section: ISectionProperty, sectionIndex: number) => ({\n ...section,\n members: members.filter(\n (member: any) => member?.section_order === sectionIndex,\n ) as (IProperty | ISelectProperty)[]\n }));\n }, [sectionFormJSON, members]);\n\n const previewState = useMemo(() => {\n if (!formWithMembers) return null;\n\n return tabsData?.length\n ? { tab: tabsData }\n : { section: formWithMembers };\n }, [tabsData, formWithMembers]);\n\n const previewFields = useMemo(() => {\n if (!previewState) return null;\n return formBuilderConversion(previewState);\n }, [previewState]);\n\n\n // Option 2: Optimized handlePreview function using useCallback\n const showPreview = useCallback(() => {\n if (previewFields) {\n setPreviewFields(previewFields);\n }\n }, [previewFields, setPreviewFields]);\n const hidePreview = useCallback(() => {\n setPreviewFields(null);\n }, []);\n\n // Enhanced handleFormUpdate with proper error handling and validation\n const handleFormUpdate = useCallback(async (): void => {\n try {\n\n\n\n // Early validation checks\n if (!sectionFormJSON || !Array.isArray(sectionFormJSON)) {\n console.warn('Invalid sectionFormJSON provided');\n return;\n }\n\n if (!members || !Array.isArray(members)) {\n console.warn('Invalid members array provided');\n return;\n }\n\n if (!rowData?._id) {\n console.warn('Missing rowData._id for form update');\n return;\n }\n\n // Deep clone with proper error handling\n let formWithMembers: IEnhancedSectionProperty[];\n\n try {\n formWithMembers = structuredClone(sectionFormJSON);\n } catch (cloneError) {\n // Fallback to JSON method if structuredClone is not available\n formWithMembers = JSON.parse(JSON.stringify(sectionFormJSON));\n }\n\n // Enhanced member filtering with better type safety and validation\n formWithMembers.forEach((section: IEnhancedSectionProperty, sectionIndex: number) => {\n // Validate section object\n if (!section || typeof section !== 'object') {\n console.warn(`Invalid section at index ${sectionIndex}`);\n return;\n }\n\n // Filter members with proper type checking and validation\n section.members = members.filter((member: IMember) => {\n // Validate member object and section_order\n return (\n member &&\n typeof member === 'object' &&\n typeof member.section_order === 'number' &&\n member.section_order === sectionIndex\n );\n }) as (IProperty | ISelectProperty)[];\n });\n\n const hasSystemMembers = formWithMembers.some((section: ISectionProperty) =>\n section.members?.some((member: IProperty) => Boolean(member?.is_system_field))\n );\n\n const activeTabIndex = Number(activeTabValue);\n let updatedTabsData = [...tabsData];\n if (isValidNumber(activeTabIndex) && activeTabIndex >= 0 && activeTabIndex < tabsData.length) {\n updatedTabsData = [...tabsData];\n updatedTabsData[activeTabIndex] = {\n ...updatedTabsData[activeTabIndex],\n data: formWithMembers,\n remove_tab: hasSystemMembers,\n };\n\n setTabsData(updatedTabsData)\n }\n\n // Build state object with proper validation\n const state: IFormState = updatedTabsData?.length > 0\n ? { tab: updatedTabsData }\n : { section: formWithMembers };\n\n // Validate formBuilderConversion function exists\n if (typeof formBuilderConversion !== 'function') {\n console.error('formBuilderConversion is not a function');\n return;\n }\n\n // Execute conversion with error handling\n let formBuilderConversionResult: any;\n try {\n formBuilderConversionResult = formBuilderConversion(state);\n } catch (conversionError) {\n console.error('Error during form builder conversion:', conversionError);\n return;\n }\n\n // Validate conversion result\n if (!formBuilderConversionResult) {\n console.warn('Form builder conversion returned empty result');\n return;\n }\n\n // Validate elementPerColumn\n // if (typeof elementPerColumn !== 'number' || elementPerColumn <= 0) {\n\n // console.warn('Invalid elementPerColumn value');\n // return;\n // }\n\n // Prepare payload with validation\n const updatePayload: IFormUpdatePayload = {\n gridCol: elementPerColumn || 2,\n fields: formBuilderConversionResult\n };\n\n // Dispatch update action\n const updateRes = await dispatch(\n patchFormDataById({\n id: rowData._id,\n data: updatePayload\n })\n );\n if (updateRes.meta.requestStatus === 'rejected') {\n\n const m = getErrorMessage(updateRes?.error?.message);\n enqueueSnackbar(m, { variant: 'error' });\n } else {\n enqueueSnackbar(\"Form updated successfully\", { variant: 'success' });\n navigate(path);\n }\n\n } catch (error) {\n const m = error?.message || 'Something went wrong while updating the form';\n enqueueSnackbar(m, { variant: 'error' });\n }\n }, [\n sectionFormJSON,\n members,\n tabsData,\n rowData?._id,\n elementPerColumn,\n dispatch,\n formBuilderConversion\n ]);\n\n const handleDuplicateElement = (index: number) => {\n const copyOfMember: any = { ...members[index], type: \"custom\" };\n copyOfMember && insert(index + 1, copyOfMember);\n setActiveMember(index + 1);\n setSelectedHoc(\"element\");\n setPositionEditedElement(index + 1);\n setElementJSON(copyOfMember);\n pickPropertyEditForm(copyOfMember.field_type);\n };\n\n const breadCrumbPath = [\n {\n link: path,\n label: \"Forms\",\n },\n {\n link: \"\",\n label: formatLabel(rowData?.name),\n },\n {\n link: \"\",\n label: \"Edit Form\",\n },\n ];\n\n\n useEffect(() => {\n if (removeSectionActionPerformed) {\n members.forEach((member: any, index: number) => {\n if (\n removeSectionPosition !== undefined &&\n Boolean(removeSectionPosition?.toString) &&\n member.section_order > removeSectionPosition\n ) {\n update(index, { ...member, section_order: member.section_order - 1 });\n }\n });\n setRemoveSectionActionPerformed(false);\n setRemoveSectionMembersPerformed(true);\n setRemoveSectionPosition(undefined);\n setSelectedHoc(\"\");\n }\n\n // eslint-disable-next-line\n }, [removeSectionActionPerformed]);\n\n useEffect(() => {\n formBuilder.isSuccess && navigate(path);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [formBuilder.isSuccess]);\n\n useEffect(() => {\n if (formBuilder.isError) {\n setToast({\n type: 'alert',\n message: formBuilder.error\n });\n }\n }, [formBuilder.error, formBuilder.isError]);\n\n useEffect(() => {\n if (\n typeof positionEditedElement !== \"number\" ||\n typeof positionEditedElement !== \"string\"\n ) {\n const index = Number(positionEditedElement);\n if (formJSON[index]) {\n const copyOfUpdatedFormJson = JSON.parse(\n JSON.stringify(formJSON[index]),\n );\n update(index, { ...copyOfUpdatedFormJson });\n }\n }\n // eslint-disable-next-line\n }, [formJSON]);\n\n useEffect(() => {\n const updatedFormJSON = formJSON.map((obj: any, index: number) => {\n if (index === Number(positionEditedElement)) {\n return { ...elementJSON };\n } else {\n return { ...obj };\n }\n });\n setFormJSON(updatedFormJSON);\n\n // eslint-disable-next-line\n }, [elementJSON]);\n\n useEffect(() => {\n if (members.length !== formJSON.length) {\n setFormJSON(JSON.parse(JSON.stringify(members)));\n }\n if (\n Boolean(elementSwap) &&\n JSON.stringify(members) !== JSON.stringify(formJSON)\n ) {\n setFormJSON(JSON.parse(JSON.stringify(members)));\n setElementSwap(false);\n const newMember: any =\n positionEditedElement && members[positionEditedElement];\n newMember && setSelectedHoc(\"element\");\n newMember && setElementJSON(newMember);\n newMember && pickPropertyEditForm(newMember.field_type);\n }\n if (\n removeSectionMembersPerformed &&\n JSON.stringify(members) !== JSON.stringify(formJSON)\n ) {\n setFormJSON(JSON.parse(JSON.stringify(members)));\n setRemoveSectionMembersPerformed(false);\n }\n // eslint-disable-next-line\n }, [members, elementSwap]);\n\n useEffect(() => {\n if (\n typeof sectionPositionEditedElement !== \"number\" ||\n typeof sectionPositionEditedElement !== \"string\"\n ) {\n const index = Number(sectionPositionEditedElement);\n if (sectionFormJSON[index]) {\n const copyOfUpdatedFormJson = JSON.parse(\n JSON.stringify(sectionFormJSON[index]),\n );\n updateSection(index, { ...copyOfUpdatedFormJson });\n }\n }\n // eslint-disable-next-line\n }, [sectionFormJSON]);\n\n useEffect(() => {\n const updatedFormJSON = sectionFormJSON.map((obj: any, index: number) => {\n if (index === Number(sectionPositionEditedElement)) {\n return { ...obj, ...sectionJSON };\n } else {\n return { ...obj };\n }\n });\n setSectionFormJSON(updatedFormJSON);\n // eslint-disable-next-line\n }, [sectionJSON]);\n\n useEffect(() => {\n if (section.length !== sectionFormJSON.length) {\n setSectionFormJSON(JSON.parse(JSON.stringify(section)));\n }\n if (\n JSON.stringify(sectionFormJSON) !== JSON.stringify(section) &&\n modifyAccordion\n ) {\n setSectionFormJSON(JSON.parse(JSON.stringify(section)));\n setModifyAccordion(false);\n }\n // eslint-disable-next-line\n }, [section]);\n\n useEffect(() => {\n () => setInitialLoading(true);\n }, [])\n\n const handleFormData = useCallback(async () => {\n setInitialLoading(true)\n try {\n if (rowData?._id) {\n setTabsData([])\n await dispatch(getFormDataById(rowData?._id));\n await dispatch(getFieldsByFormId({ id: rowData?._id }));\n\n }\n } finally {\n setInitialLoading(false);\n }\n\n }, [rowData?._id])\n\n useEffect(() => {\n handleFormData();\n }, [handleFormData]);\n\n type SelectedHoc = \"element\" | \"section\" | null;\n\n // Constants\n const DEFAULT_FIELD_TYPE = \"text\";\n const HOC_TYPES = {\n ELEMENT: \"element\",\n SECTION: \"section\"\n } as const;\n\n // Helper function to check if object has meaningful content\n const hasValidContent = (obj: Record<string, any>): boolean => {\n return obj && Object.keys(obj).length > 0;\n };\n\n const EmptyStateMessage = () => (\n <Typography type=\"s5\" color={\"theme.secondary.800\"} className=\"formSection--Text\">Select a field to edit its properties.</Typography>\n )\n\n // Helper function to get field type with fallback\n const getFieldTypeWithFallback = (\n json: ElementJSON | SectionJSON | null | undefined,\n fallback: string = DEFAULT_FIELD_TYPE\n ): string => {\n return json?.field_type || fallback;\n };\n\n const memoizedForm = useMemo(() => {\n // Early return for empty state\n if (!selectedHoc) {\n\n return <EmptyStateMessage />;\n }\n\n // Handle element selection\n if (selectedHoc === HOC_TYPES.ELEMENT) {\n if (!hasValidContent(members)) {\n console.warn('Element selected but no members data available');\n return <EmptyStateMessage />;\n }\n\n const fieldType = getFieldTypeWithFallback(elementJSON);\n return pickPropertyEditForm(fieldType);\n }\n\n // Handle section selection\n if (selectedHoc === HOC_TYPES.SECTION) {\n if (!hasValidContent(section)) {\n console.warn('Section selected but no section data available');\n return <EmptyStateMessage />;\n }\n\n const fieldType = getFieldTypeWithFallback(sectionJSON);\n return pickPropertyEditForm(fieldType);\n }\n\n // Fallback for unknown selection type\n console.warn(`Unknown selectedHoc type: ${selectedHoc}`);\n return <EmptyStateMessage />;\n }, [\n // Core dependencies\n selectedHoc,\n\n // Data dependencies\n Object.keys(members).length,\n Object.keys(section).length,\n\n // JSON dependencies with deep comparison consideration\n elementJSON?.field_type,\n elementJSON?.field_properties,\n sectionJSON?.field_type,\n sectionJSON?.field_properties,\n\n // Function dependency\n pickPropertyEditForm\n ]);\n\n return (\n // <FullScreenLayout className=\"formSection--Layout\">\n <Box position='relative'>\n {initialLoading ? <ErpLoader /> :\n <DndProvider backend={HTML5Backend}>\n <FormHeader breadCrumbPath={breadCrumbPath}>\n <div className=\"formSection--Buttons\">\n <Button\n variant=\"outlined\"\n className=\"formSection--PreviewButton\"\n text=\"Preview\"\n onClick={() => { !previewFieldsData ? showPreview() : hidePreview() }}\n disable={!members?.length}\n startIcon={previewFieldsData ? <EyeOff /> : <Eye />}\n />\n <Button\n variant=\"contained\"\n type=\"submit\"\n text=\"Update\"\n onClick={handleFormUpdate}\n disable={previewFieldsData}\n />\n </div>\n </FormHeader>\n {!previewFieldsData ?\n <Grid className=\"formSection--Grid\" container>\n <Grid\n item\n xs={9}\n component=\"form\"\n sx={{\n position: \"relative\",\n background: \"#F5F6F5\",\n padding: \"0.75rem\",\n }}\n >\n <Grid className=\"formSection--GridContainer\">\n <Box className=\"formSection--Tab\">\n {tabsData && (\n <TabBar\n tabs={tabsData}\n onEditTabTitle={handleEditTabTitle}\n activeValue={activeTabValue}\n setActiveValue={setActiveTabValue}\n handleTabChange={() => {\n handleTabData()\n }}\n handleRemoveTab={handleRemoveTab}\n containerProps={{ mb: 0 }}\n />\n )}\n <Button\n variant=\"outlined\"\n text=\"Add Tab\"\n onClick={handleAddTab}\n style={{ color: \"#292D32\", margin: \"0.5rem\" }}\n />\n </Box>\n <div className=\"formSection--Form\">\n {section?.map((item: any, i: number) => {\n const sectionMembers = members.filter(\n (member: any) => member.section_order === i,\n );\n const isFormSwitcher = item.section_type === SECTION_TYPES.FORM_SWITCH_SECTION\n const switchForms = item?.switcher_forms?.map((form: any) => ({\n ...form,\n formMembers: members.filter(\n (member: any) => member.section_form_id === form.id,\n )\n }))\n\n return (\n <DynamicSectionHOC\n index={i}\n label={t(item.label)}\n onClick={handleSectionSelection}\n position={i}\n fieldArrayName=\"section\"\n isFormSwitcher={isFormSwitcher}\n activeIndex={activeSection === i}\n removeSection={() => handleRemoveSection(i)}\n handleAccordion={() => handleMakeAccordion(i)}\n handleAddButton={(e) => handleAddMember(e)}\n remove_section={item.remove_section}\n >\n {isFormSwitcher ? (\n <div style={{ width: '100%' }} >\n <Typography type=\"s5\" style={{ fontWeight: 500 }} color={\"theme.secondary.800\"}>\n {item.form_switcher_label}\n </Typography>\n <RadioGroup\n aria-labelledby=\"theme-radio-buttons-group-label\"\n name={item.form_switcher_name || item.form_switcher_label}\n >\n\n {switchForms?.map(({ name, id, formMembers }: { name: string, id: number, formMembers: any }) => (\n <>\n <div>\n <FormControlLabel\n key={id}\n value={name}\n control={<Radio />}\n label={t(name)}\n disabled\n />\n </div>\n\n <Grid container sx={{ mb: 3 }}>\n <FormFields\n sectionMembers={formMembers || []}\n members={members}\n activeMember={activeMember}\n control={control}\n t={t}\n element={element}\n images={images}\n elementJSON={elementJSON}\n remove={remove}\n move={move}\n handleElementSelection={handleElementSelection}\n setElementSwap={setElementSwap}\n handleDuplicateElement={handleDuplicateElement}\n setSelectedHoc={setSelectedHoc}\n setActiveMember={setActiveMember}\n />\n </Grid>\n <Button\n text=\"Add\"\n variant=\"outlined\"\n className=\"formSection--PreviewButton\"\n data-position={i}\n onClick={(e) => handleAddMember(e, {\n section_form_id: id,\n is_form_switcher_section: true\n })}\n startIcon={<Add />}\n />\n </>\n ))}\n </RadioGroup>\n </div>\n ) : null}\n {!isFormSwitcher &&\n <FormFields\n sectionMembers={sectionMembers || []}\n members={members}\n activeMember={activeMember}\n control={control}\n t={t}\n element={element}\n images={images}\n elementJSON={elementJSON}\n remove={remove}\n move={move}\n handleElementSelection={handleElementSelection}\n setElementSwap={setElementSwap}\n handleDuplicateElement={handleDuplicateElement}\n setSelectedHoc={setSelectedHoc}\n setActiveMember={setActiveMember}\n />\n }\n </DynamicSectionHOC>\n );\n })}\n <div className=\"formSection--Section\">\n <Button\n text=\"Add a section\"\n variant=\"outlined\"\n className=\"formSection--PreviewButton\"\n onClick={addNewSection}\n startIcon={<Add />}\n />\n </div>\n </div>\n </Grid>\n\n </Grid>\n <Grid\n item\n xs={3}\n className={\n Boolean(selectedHoc) && (members?.length || section.length)\n ? \"formSection--RightGrid\"\n : \"formSection--RightGrid formSection--Text\"\n }\n >\n {memoizedForm}\n </Grid>\n </Grid>\n :\n <FormParser\n data={previewFieldsData || []}\n handleFormSubmit={(data) => console.log(\"Preview Data\", data)}\n className='form-container'\n fieldArrayName='form-builder-preview'\n getFormMethods={(methods: any) =>\n setFormParserMethods({ ...methods })\n }\n />\n }\n <Toast\n open={Boolean(toast)}\n type={toast?.type}\n message={toast?.message}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n />\n </DndProvider>}\n </Box>\n // </FullScreenLayout>\n );\n}\n\nexport default CustomForm;\n"],"names":["formWithMembers","section","id","elementPerColumn","_a","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../src/views/form-builder/custom-form.tsx"],"sourcesContent":["// React imports\r\nimport { useState, useEffect, useMemo, useCallback } from \"react\";\r\n\r\n// React Router imports\r\nimport { useLocation, useNavigate } from \"react-router-dom\";\r\n\r\n// React Hook Form imports\r\nimport { useForm, useFieldArray } from \"react-hook-form\";\r\n\r\n// Material UI imports\r\nimport { Box, FormControlLabel, Grid, RadioGroup } from \"@mui/material\";\r\nimport { Add } from \"@mui/icons-material\";\r\n\r\n// Third-party imports\r\nimport { DndProvider } from \"react-dnd\";\r\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\r\nimport { MRT_ColumnDef, MRT_RowData } from \"material-react-table\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { enqueueSnackbar } from \"notistack\";\r\n\r\n// ERP Common imports\r\nimport DynamicSectionHOC from \"@/components/form-control/form-builder/form-builder-element/section\";\r\nimport Button from \"@/components/form-control/form-builder/form-builder-element/button\";\r\nimport TabBar from \"@/components/tabs/tabs\";\r\nimport images from \"@/assets/images\";\r\nimport { Pathname } from \"@/constants\";\r\nimport FormHeader from \"@/components/form-header/form-header\";\r\nimport Typography from \"@/components/typography/typography\";\r\nimport formBuilderConversion from \"@/utils/form-builder-conversion\";\r\nimport { useAppDispatch, useAppSelector } from \"@/redux/hooks\";\r\nimport { formatLabel } from \"@/utils/format-text\";\r\nimport Toast from \"@/components/toast/toast\";\r\nimport Radio from \"@/components/radio/radio\";\r\nimport { SECTION_TYPES } from \"@/utils/constant\";\r\nimport ErpLoader from \"@/components/loaders/erp-loader\";\r\nimport { getErrorMessage } from \"@/utils/common\";\r\nimport FormParser from \"@/components/form-control/form-parser/form-parser\";\r\nimport { Eye, EyeOff } from \"@/components/icons\";\r\n\r\n// Redux actions\r\nimport {\r\n patchFormDataById,\r\n getFormDataById,\r\n getFieldsByFormId,\r\n} from \"../form-builder/redux/actionCreator\";\r\n\r\n// Local imports\r\nimport {\r\n IProperty,\r\n ISectionProperty,\r\n ISelectProperty,\r\n element,\r\n} from \"./field_properties\";\r\nimport TextEditForm from \"./element-edit-forms/text\";\r\nimport SelectEditForm from \"./element-edit-forms/select\";\r\nimport SectionEditForm from \"./element-edit-forms/section\";\r\nimport CheckboxEditForm from \"./element-edit-forms/checkbox\";\r\nimport TableEditForm from \"./element-edit-forms/table-form\";\r\nimport FormFields from \"./form-fields\";\r\nimport { generateModulePath, useFormDataEffect } from \"./utils/common\";\r\nimport \"./custom-form.scss\";\r\n\r\nexport interface IElementJson extends IProperty {\r\n type: string;\r\n}\r\n\r\nconst FIELD_TYPES = {\r\n TEXT: 'text',\r\n NUMBER: 'number',\r\n EMAIL: 'email',\r\n PHONE: 'phone',\r\n SELECT: 'select',\r\n DATE: 'date',\r\n TIME: 'time',\r\n URL: 'url',\r\n CURRENCY: 'currency',\r\n FILE: 'file',\r\n GEO_LOCATION: 'geoLocation',\r\n IMAGE: 'image',\r\n SECTION: 'section',\r\n INFO: 'info',\r\n RELATION: 'relation',\r\n CHECKBOX: 'checkbox',\r\n TOGGLE_BUTTON: 'toggleButton',\r\n TAGS_INPUT: 'tagsInput'\r\n} as const;\r\n\r\nconst DEFAULT_GRID_COLUMNS = 12;\r\nconst DEFAULT_COLUMN_WIDTH = 2;\r\nconst DEFAULT_TAB_TITLE = 'data';\r\n\r\nconst isValidNumber = (value: any): boolean => !isNaN(Number(value)) && isFinite(Number(value));\r\nconst deepClone = (obj: T): T => JSON.parse(JSON.stringify(obj));\r\nconst generateUniqueId = (separator = ''): { uniqueStringId: string } => {\r\n return { uniqueStringId: `${Date.now()}${separator}${Math.random().toString(36).substr(2, 9)}` };\r\n};\r\n\r\n\r\nexport function CustomForm() {\r\n const { t } = useTranslation();\r\n const dispatch = useAppDispatch();\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n const rowData = location.state ?? [];\r\n\r\n const formBuilder = useAppSelector((state) => state.formBuilder);\r\n\r\n const { control } = useForm({\r\n reValidateMode: \"onBlur\",\r\n });\r\n\r\n const {\r\n fields: members,\r\n append,\r\n remove,\r\n update,\r\n move,\r\n insert,\r\n } = useFieldArray({\r\n control,\r\n name: \"members\",\r\n });\r\n\r\n const {\r\n fields: section,\r\n append: appendSection,\r\n remove: removeSection,\r\n update: updateSection,\r\n } = useFieldArray({\r\n control,\r\n name: \"section\",\r\n });\r\n\r\n const [selectedHoc, setSelectedHoc] = useState(\"\");\r\n const [activeSection, setActiveSection] = useState<number>();\r\n const [activeMember, setActiveMember] = useState<number>();\r\n\r\n const [formJSON, setFormJSON] = useState<object[]>([]);\r\n const [elementJSON, setElementJSON] = useState<any>(null);\r\n const [positionEditedElement, setPositionEditedElement] = useState<\r\n number | undefined\r\n >();\r\n\r\n const [sectionFormJSON, setSectionFormJSON] = useState<object[]>([]);\r\n const [sectionJSON, setSectionJSON] = useState<any>({});\r\n const [sectionPositionEditedElement, setSectionPositionEditedElement] =\r\n useState<number | undefined>();\r\n const [removeSectionActionPerformed, setRemoveSectionActionPerformed] =\r\n useState(false);\r\n const [removeSectionMembersPerformed, setRemoveSectionMembersPerformed] =\r\n useState(false);\r\n const [removeSectionPosition, setRemoveSectionPosition] = useState<\r\n number | undefined\r\n >();\r\n const [initialLoading, setInitialLoading] = useState(true);\r\n const [tabsData, setTabsData] = useState<any[]>([]);\r\n const [activeTabValue, setActiveTabValue] = useState<number | undefined>(0);\r\n\r\n const [elementSwap, setElementSwap] = useState(false);\r\n const [modifyAccordion, setModifyAccordion] = useState(false);\r\n const [toast, setToast] = useState<IToast | null>(null);\r\n const [previewFieldsData, setPreviewFields] = useState<any>(null);\r\n const [_, setFormParserMethods] = useState<any>();\r\n\r\n let elementPerColumn: any;\r\n\r\n const currentModule = location.pathname.split('/')[2]\r\n\r\n const path = generateModulePath(currentModule)\r\n\r\n useFormDataEffect(\r\n formBuilder,\r\n tabsData,\r\n activeTabValue,\r\n {\r\n removeSection,\r\n remove,\r\n setTabsData,\r\n append,\r\n appendSection\r\n }\r\n );\r\n\r\n const pickPropertyEditForm = useCallback((type: string): React.ReactElement => {\r\n try {\r\n if (!type || typeof type !== 'string') {\r\n console.warn('Invalid field type provided to pickPropertyEditForm');\r\n return <div className=\"text-gray-500 p-4\">Select a field to edit</div>;\r\n }\r\n\r\n const normalizedType = type.toLowerCase().trim();\r\n\r\n // Define form type groups for better maintainability\r\n const formGroups = {\r\n text: [\r\n 'text', 'number', 'email', 'phone', 'date', 'time',\r\n 'url', 'currency', 'file', 'geolocation', 'image',\r\n 'relation', 'info', 'tagsinput'\r\n ],\r\n select: ['select'],\r\n section: ['section'],\r\n checkbox: ['checkbox', 'togglebutton', 'radiobutton'],\r\n table: ['table']\r\n };\r\n\r\n // Common props for reusability\r\n const commonTextProps = {\r\n element: elementJSON,\r\n handlePropertyValueUpdate,\r\n handleWidthChange,\r\n handleColumnSelect,\r\n fields: formBuilder?.fields || []\r\n };\r\n\r\n const commonSelectProps = {\r\n element: elementJSON,\r\n handlePropertyValueUpdate,\r\n handleSelectOptionValueUpdate,\r\n handleWidthChange,\r\n handleColumnSelect\r\n };\r\n\r\n // Determine form type and render appropriate component\r\n if (formGroups.text.includes(normalizedType)) {\r\n return (\r\n <TextEditForm\r\n {...commonTextProps}\r\n key={`text-form-${elementJSON?.id || 'default'}`}\r\n />\r\n );\r\n }\r\n\r\n if (formGroups.select.includes(normalizedType)) {\r\n return (\r\n <SelectEditForm\r\n {...commonSelectProps}\r\n key={`select-form-${elementJSON?.id || 'default'}`}\r\n />\r\n );\r\n }\r\n\r\n if (formGroups.section.includes(normalizedType)) {\r\n return (\r\n <SectionEditForm\r\n element={sectionJSON}\r\n handlePropertyValueUpdate={handleSectionPropertyValueUpdate}\r\n key={`section-form-${sectionJSON?.id || 'default'}`}\r\n />\r\n );\r\n }\r\n\r\n if (formGroups.checkbox.includes(normalizedType)) {\r\n return (\r\n <CheckboxEditForm\r\n {...commonSelectProps}\r\n key={`checkbox-form-${elementJSON?.id || 'default'}`}\r\n />\r\n );\r\n }\r\n\r\n if (formGroups.table.includes(normalizedType)) {\r\n return (\r\n <TableEditForm\r\n element={elementJSON}\r\n handlePropertyValueUpdate={handlePropertyValueUpdate}\r\n handleColumnsUpdate={handleColumnsUpdate}\r\n fields={formBuilder?.fields || []}\r\n key={`table-form-${elementJSON?.id || 'default'}`}\r\n />\r\n );\r\n }\r\n\r\n // Default fallback with helpful message\r\n console.warn(`Unknown field type: ${type}`);\r\n return (\r\n <div className=\"text-gray-500 p-4 border border-gray-200 rounded\">\r\n <p className=\"font-medium\">Unknown Field Type</p>\r\n <p className=\"text-sm mt-1\">\r\n Field type \"{type}\" is not supported. Please select a valid field to edit.\r\n </p>\r\n </div>\r\n );\r\n\r\n } catch (error) {\r\n console.error('Error in pickPropertyEditForm:', error);\r\n return (\r\n <div className=\"text-red-500 p-4 border border-red-200 rounded bg-red-50\">\r\n <p className=\"font-medium\">Error Loading Form</p>\r\n <p className=\"text-sm mt-1\">\r\n There was an error loading the property edit form. Please try again.\r\n </p>\r\n </div>\r\n );\r\n }\r\n }, [elementJSON, sectionJSON, formBuilder]);\r\n\r\n const addNewSection = useCallback((): void => {\r\n try {\r\n if (!element?.section) {\r\n console.error('Element section template is not available');\r\n return;\r\n }\r\n\r\n const { uniqueStringId: id } = generateUniqueId('-');\r\n const newSection: ISectionProperty = {\r\n ...deepClone(element.section),\r\n id: id,\r\n };\r\n\r\n // Update switcher forms with new ID if they exist\r\n if (newSection.switcher_forms) {\r\n newSection.switcher_forms = newSection.switcher_forms.map(form => ({\r\n ...form,\r\n id: generateUniqueId('-').uniqueStringId\r\n }));\r\n }\r\n\r\n const newSectionIndex = section.length;\r\n\r\n appendSection(newSection);\r\n setActiveSection(newSectionIndex);\r\n setSelectedHoc('section');\r\n\r\n const sectionData: ISectionProperty = {\r\n field_type: newSection.field_type,\r\n section_type: newSection.section_type,\r\n switcher_forms: newSection.switcher_forms,\r\n form_switcher_label: newSection.form_switcher_label,\r\n form_switcher_name: newSection.form_switcher_name,\r\n label: newSection.label,\r\n is_accordion: newSection.is_accordion,\r\n id: newSection.id ?? newSectionIndex,\r\n };\r\n\r\n setSectionJSON(sectionData);\r\n setSectionPositionEditedElement(newSectionIndex);\r\n pickPropertyEditForm(newSection.field_type);\r\n } catch (error) {\r\n console.error('Error adding new section:', error);\r\n }\r\n }, [element, section, appendSection, setActiveSection, setSelectedHoc, setSectionJSON, setSectionPositionEditedElement, pickPropertyEditForm]);\r\n\r\n /**\r\n * Enhanced handleAddTab with better validation and error handling\r\n */\r\n const handleAddTab = useCallback((): void => {\r\n try {\r\n const formWithMembers = deepClone(sectionFormJSON);\r\n\r\n // Populate sections with their members\r\n formWithMembers.forEach((section: ISectionProperty, sectionIndex: number) => {\r\n section.members = members.filter(\r\n (member: IProperty) => member?.section_order === sectionIndex\r\n );\r\n });\r\n\r\n const hasSystemMembers = formWithMembers.some((section: ISectionProperty) =>\r\n section.members?.some((member: IProperty) => Boolean(member?.is_system_field))\r\n );\r\n\r\n const shouldRemoveTab = !tabsData?.length && hasSystemMembers;\r\n\r\n const newTab: TabData = {\r\n tab_order: tabsData.length + 1,\r\n title: DEFAULT_TAB_TITLE,\r\n remove_tab: shouldRemoveTab,\r\n data: tabsData?.length ? [] : formWithMembers\r\n };\r\n\r\n setTabsData(prevTabs => [...prevTabs, newTab]);\r\n } catch (error) {\r\n console.error('Error adding new tab:', error);\r\n }\r\n }, [sectionFormJSON, members, tabsData, setTabsData]);\r\n\r\n const handleEditTabTitle = useCallback((tabId: number, newTitle: string): void => {\r\n try {\r\n if (!isValidNumber(tabId) || !newTitle?.trim()) {\r\n console.error('Invalid tab ID or title provided');\r\n return;\r\n }\r\n\r\n setTabsData(prevTabs =>\r\n prevTabs.map((tab: TabData) =>\r\n tab.tab_order === tabId ? { ...tab, title: newTitle.trim() } : tab\r\n )\r\n );\r\n } catch (error) {\r\n console.error('Error editing tab title:', error);\r\n }\r\n }, [setTabsData]);\r\n\r\n const handleRemoveTab = useCallback((id: number): void => {\r\n try {\r\n if (!isValidNumber(id)) {\r\n console.error('Invalid tab ID provided');\r\n return;\r\n }\r\n\r\n const filteredTabs = tabsData.filter((tab: TabData) => tab.tab_order !== id);\r\n\r\n // Reorder remaining tabs\r\n const reorderedTabs = filteredTabs.map((tab: TabData) => ({\r\n ...tab,\r\n tab_order: tab.tab_order > id ? tab.tab_order - 1 : tab.tab_order,\r\n }));\r\n\r\n setTabsData(reorderedTabs);\r\n if (activeTabValue == id) {\r\n setActiveTabValue(reorderedTabs?.length - 1)\r\n }\r\n\r\n if (reorderedTabs.length > 0) {\r\n const activeTab = reorderedTabs.find(\r\n (tab: TabData) => tab.tab_order === (activeTabValue ?? 0) + 1\r\n );\r\n\r\n if (activeTab?.data) {\r\n const sections = activeTab.data.map(\r\n ({ field_type, label, is_accordion, id, remove_section }) => ({\r\n field_type,\r\n label,\r\n is_accordion,\r\n id,\r\n remove_section,\r\n })\r\n );\r\n\r\n const membersList = activeTab.data.flatMap((section: ISectionProperty) =>\r\n section.members?.map((member: IProperty) => ({ ...member })) || []\r\n );\r\n\r\n // Clear current data and add new data\r\n remove();\r\n removeSection();\r\n membersList.forEach(member => append(member));\r\n sections.forEach(section => appendSection(section));\r\n }\r\n } else {\r\n // Clear all data if no tabs remain\r\n remove();\r\n removeSection();\r\n }\r\n } catch (error) {\r\n console.error('Error removing tab:', error);\r\n }\r\n }, [tabsData, activeTabValue, setTabsData, remove, removeSection, append, appendSection]);\r\n\r\n const handleElementSelection = useCallback((e: React.MouseEvent<HTMLElement>): void => {\r\n try {\r\n const target = e.target as HTMLElement;\r\n const elementPositionIndex = target.dataset.position;\r\n\r\n if (!elementPositionIndex || !isValidNumber(elementPositionIndex)) {\r\n console.error('Invalid element position index');\r\n return;\r\n }\r\n\r\n const positionIndex = Number(elementPositionIndex);\r\n\r\n if (positionIndex < 0 || positionIndex >= formJSON.length) {\r\n console.error('Element position index out of bounds');\r\n return;\r\n }\r\n\r\n setActiveMember(positionIndex);\r\n\r\n const elementDetails = deepClone(formJSON[positionIndex]);\r\n setPositionEditedElement(positionIndex);\r\n setElementJSON(elementDetails);\r\n setSelectedHoc('element');\r\n } catch (error) {\r\n console.error('Error selecting element:', error);\r\n }\r\n }, [formJSON, setActiveMember, setPositionEditedElement, setElementJSON, setSelectedHoc]);\r\n\r\n const handleSectionSelection = useCallback((e: React.MouseEvent<HTMLElement>): void => {\r\n try {\r\n const target = e.target as HTMLElement;\r\n const sectionPositionIndex = target.dataset.position;\r\n\r\n if (!sectionPositionIndex || !isValidNumber(sectionPositionIndex)) {\r\n console.error('Invalid section position index');\r\n return;\r\n }\r\n\r\n const positionIndex = Number(sectionPositionIndex);\r\n\r\n if (positionIndex < 0 || positionIndex >= sectionFormJSON.length) {\r\n console.error('Section position index out of bounds');\r\n return;\r\n }\r\n\r\n setActiveSection(positionIndex);\r\n\r\n const sectionDetails = deepClone(sectionFormJSON[positionIndex]);\r\n setSectionPositionEditedElement(positionIndex);\r\n setSectionJSON(sectionDetails);\r\n setSelectedHoc('section');\r\n } catch (error) {\r\n console.error('Error selecting section:', error);\r\n }\r\n }, [sectionFormJSON, setActiveSection, setSectionPositionEditedElement, setSectionJSON, setSelectedHoc]);\r\n\r\n const handleAddMember = useCallback((\r\n e: React.SyntheticEvent<HTMLElement>,\r\n otherProperties?: Record<string, any>\r\n ): void => {\r\n try {\r\n const target = e.currentTarget as HTMLElement;\r\n const sectionPositionIndex = target?.dataset?.position;\r\n\r\n if (sectionPositionIndex === undefined || !isValidNumber(sectionPositionIndex)) {\r\n console.error('Invalid section position index for adding member');\r\n return;\r\n }\r\n\r\n const positionIndex = Number(sectionPositionIndex);\r\n\r\n if (positionIndex < 0) {\r\n console.error('Section position index cannot be negative');\r\n return;\r\n }\r\n\r\n if (!element?.text) {\r\n console.error('Element text template is not available');\r\n return;\r\n }\r\n\r\n const newMember: IProperty = {\r\n ...deepClone(element.text),\r\n ...otherProperties,\r\n section_order: positionIndex,\r\n type: 'custom',\r\n is_new: true,\r\n custom_width: Math.floor(DEFAULT_GRID_COLUMNS / DEFAULT_COLUMN_WIDTH),\r\n is_fullwidth: false,\r\n is_system_field: Boolean(otherProperties?.is_system_field),\r\n id: generateUniqueId().uniqueStringId,\r\n };\r\n\r\n setActiveSection(positionIndex);\r\n append(newMember);\r\n\r\n const elementPositionIndex = members.length;\r\n setActiveMember(elementPositionIndex);\r\n setSelectedHoc('element');\r\n setPositionEditedElement(elementPositionIndex);\r\n setElementJSON(newMember);\r\n pickPropertyEditForm(newMember.field_type);\r\n } catch (error) {\r\n console.error('Error adding new member:', error);\r\n }\r\n }, [element, members, setActiveSection, append, setActiveMember, setSelectedHoc, setPositionEditedElement, setElementJSON, pickPropertyEditForm]);\r\n\r\n\r\n const handleSectionPropertyValueUpdate = useCallback((\r\n e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>,\r\n overrideValue?: any\r\n ): void => {\r\n try {\r\n const { name, type, checked, value } = e.target;\r\n\r\n if (!name) {\r\n console.error('Property name is required for update');\r\n return;\r\n }\r\n\r\n const updatedValue = overrideValue !== undefined ? overrideValue : (type === 'checkbox' ? checked : value);\r\n\r\n // Only update if value actually changed\r\n if (sectionJSON[name] !== updatedValue) {\r\n setSectionJSON(prev => ({ ...prev, [name]: updatedValue }));\r\n }\r\n } catch (error) {\r\n console.error('Error updating section property:', error);\r\n }\r\n }, [sectionJSON, setSectionJSON]);\r\n\r\n const handleWidthChange = useCallback((newCustomWidth: number): void => {\r\n try {\r\n if (!isValidNumber(newCustomWidth) || newCustomWidth < 1 || newCustomWidth > DEFAULT_GRID_COLUMNS) {\r\n console.error('Invalid width value provided');\r\n return;\r\n }\r\n\r\n setElementJSON(prevData => ({\r\n ...prevData,\r\n custom_width: newCustomWidth,\r\n }));\r\n } catch (error) {\r\n console.error('Error updating width:', error);\r\n }\r\n }, [setElementJSON]);\r\n\r\n const handleColumnSelect = useCallback((e: React.ChangeEvent<HTMLSelectElement>): void => {\r\n try {\r\n const columnValue = Number(e.target.value);\r\n\r\n if (!isValidNumber(columnValue) || columnValue <= 0) {\r\n console.error('Invalid column value provided');\r\n return;\r\n }\r\n\r\n const elementPerColumn = Math.floor(DEFAULT_GRID_COLUMNS / columnValue);\r\n\r\n if (elementPerColumn <= 0) {\r\n console.error('Calculated element per column is invalid');\r\n return;\r\n }\r\n\r\n // Batch update all members\r\n members.forEach((field: IProperty, index: number) => {\r\n update(index, { ...field, custom_width: elementPerColumn });\r\n });\r\n } catch (error) {\r\n console.error('Error updating column selection:', error);\r\n }\r\n }, [members, update]);\r\n\r\n const handlePropertyValueUpdate = useCallback((\r\n e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>,\r\n numberValue?: number,\r\n val?: string,\r\n fieldType?: keyof typeof FIELD_TYPES\r\n ): void => {\r\n try {\r\n const getValue = (): any => {\r\n if (fieldType) return fieldType;\r\n if (val !== undefined) return val;\r\n if (numberValue !== undefined) return numberValue;\r\n return e?.target?.value;\r\n };\r\n\r\n const value = getValue();\r\n const elementJSONCopy = deepClone(elementJSON);\r\n\r\n if (e?.target?.name) {\r\n elementJSONCopy[e.target.name] = e.target.type === 'checkbox' ? e.target.checked : value;\r\n }\r\n // Only update if there's an actual change\r\n if (fieldType) {\r\n const { uniqueStringId: uniqueId } = generateUniqueId();\r\n const copyOfUpdatedElement: IProperty = {\r\n ...element[fieldType],\r\n section_form_id: elementJSONCopy?.section_form_id,\r\n is_form_switcher_section: elementJSONCopy?.is_form_switcher_section,\r\n section_order: elementJSONCopy.section_order,\r\n id: uniqueId,\r\n type: 'custom',\r\n is_system_field: Boolean(elementJSONCopy?.is_system_field),\r\n is_new: true,\r\n column_width: elementJSONCopy?.column_width || 6,\r\n custom_width: elementJSONCopy?.custom_width || 6\r\n };\r\n setElementJSON(copyOfUpdatedElement);\r\n } else if (JSON.stringify(elementJSON) !== JSON.stringify(elementJSONCopy)) {\r\n setElementJSON({ ...elementJSON, ...elementJSONCopy });\r\n }\r\n } catch (error) {\r\n console.error('Error updating property value:', error);\r\n }\r\n }, [elementJSON, element, setElementJSON]);\r\n\r\n const handleSelectOptionValueUpdate = useCallback((options: any[]): void => {\r\n try {\r\n if (!Array.isArray(options)) {\r\n console.error('Options must be an array');\r\n return;\r\n }\r\n\r\n const elementJSONCopy = deepClone(elementJSON);\r\n elementJSONCopy.options = [...options];\r\n const { uniqueStringId: uniqueId } = generateUniqueId('-');\r\n\r\n if (JSON.stringify(elementJSON.options) !== JSON.stringify(options)) {\r\n setElementJSON({ ...elementJSON, ...elementJSONCopy, id: uniqueId });\r\n }\r\n } catch (error) {\r\n console.error('Error updating select options:', error);\r\n }\r\n }, [elementJSON, setElementJSON]);\r\n\r\n const handleColumnsUpdate = useCallback((columns: MRT_ColumnDef<MRT_RowData>[]): void => {\r\n try {\r\n if (!Array.isArray(columns)) {\r\n console.error('Columns must be an array');\r\n return;\r\n }\r\n\r\n const elementJSONCopy = deepClone(elementJSON);\r\n elementJSONCopy.table_columns = [...columns];\r\n const { uniqueStringId: uniqueId } = generateUniqueId('-');\r\n\r\n if (JSON.stringify(elementJSON.table_columns) !== JSON.stringify(columns)) {\r\n setElementJSON({ ...elementJSON, ...elementJSONCopy, id: uniqueId });\r\n }\r\n } catch (error) {\r\n console.error('Error updating table columns:', error);\r\n }\r\n }, [elementJSON, setElementJSON]);\r\n\r\n const handleRemoveSection = useCallback((sectionIndex: number): void => {\r\n try {\r\n if (!isValidNumber(sectionIndex) || sectionIndex < 0 || sectionIndex >= section.length) {\r\n console.error('Invalid section index for removal');\r\n return;\r\n }\r\n\r\n setRemoveSectionPosition(sectionIndex);\r\n removeSection(sectionIndex);\r\n\r\n // Remove associated members in reverse order to maintain indices\r\n const membersToRemove: number[] = [];\r\n members.forEach((member: IProperty, index: number) => {\r\n if (member?.section_order === sectionIndex) {\r\n membersToRemove.push(index);\r\n }\r\n });\r\n\r\n // Remove members in reverse order to maintain correct indices\r\n membersToRemove.reverse().forEach(memberIndex => {\r\n remove(memberIndex);\r\n });\r\n\r\n setRemoveSectionActionPerformed(true);\r\n } catch (error) {\r\n console.error('Error removing section:', error);\r\n }\r\n }, [section, members, setRemoveSectionPosition, removeSection, remove, setRemoveSectionActionPerformed]);\r\n\r\n const handleMakeAccordion = useCallback((sectionIndex: number): void => {\r\n try {\r\n if (!isValidNumber(sectionIndex) || sectionIndex < 0 || sectionIndex >= section.length) {\r\n console.error('Invalid section index for accordion conversion');\r\n return;\r\n }\r\n\r\n setModifyAccordion(true);\r\n setSectionPositionEditedElement(sectionIndex);\r\n setActiveSection(sectionIndex);\r\n\r\n const copyOfSection: ISectionProperty = {\r\n ...deepClone(section[sectionIndex]),\r\n is_accordion: true\r\n };\r\n\r\n updateSection(sectionIndex, copyOfSection);\r\n setSelectedHoc('section');\r\n setSectionJSON(copyOfSection);\r\n pickPropertyEditForm(copyOfSection.field_type);\r\n } catch (error) {\r\n console.error('Error making section accordion:', error);\r\n }\r\n }, [section, setModifyAccordion, setSectionPositionEditedElement, setActiveSection, updateSection, setSelectedHoc, setSectionJSON, pickPropertyEditForm]);\r\n\r\n const handleTabData = useCallback((): void => {\r\n try {\r\n const formWithMembers = deepClone(sectionFormJSON);\r\n\r\n formWithMembers.forEach((section: ISectionProperty, sectionIndex: number) => {\r\n section.members = members.filter(\r\n (member: IProperty) => member?.section_order === sectionIndex\r\n );\r\n });\r\n\r\n const hasSystemMembers = formWithMembers.some((section: ISectionProperty) =>\r\n section.members?.some((member: IProperty) => Boolean(member?.is_system_field))\r\n );\r\n\r\n const activeTabIndex = Number(activeTabValue);\r\n if (isValidNumber(activeTabIndex) && activeTabIndex >= 0 && activeTabIndex < tabsData.length) {\r\n const updatedTabsData = [...tabsData];\r\n updatedTabsData[activeTabIndex] = {\r\n ...updatedTabsData[activeTabIndex],\r\n data: formWithMembers,\r\n remove_tab: hasSystemMembers,\r\n };\r\n setTabsData(updatedTabsData)\r\n remove();\r\n removeSection();\r\n setActiveMember(undefined);\r\n setSelectedHoc(\"\");\r\n setActiveSection(undefined);\r\n }\r\n } catch (error) {\r\n console.error('Error updating tab data:', error);\r\n }\r\n }, [sectionFormJSON, members, activeTabValue, tabsData, setTabsData]);\r\n\r\n // const handlePreview = () => {\r\n // const formWithMembers = JSON.parse(JSON.stringify(sectionFormJSON));\r\n\r\n // formWithMembers.forEach(\r\n // (section: ISectionProperty, sectionIndex: number) => {\r\n // section.members = members.filter(\r\n // (member: any) => member?.section_order === sectionIndex,\r\n // ) as (IProperty | ISelectProperty)[];\r\n // },\r\n // );\r\n // const state = tabsData?.length\r\n // ? { tab: tabsData }\r\n // : { section: formWithMembers };\r\n\r\n // const FormBuilderConversion = state && formBuilderConversion(state);\r\n\r\n // setPreviewFields(FormBuilderConversion);\r\n // };\r\n\r\n // Option 1: Using useMemo to memoize the expensive computation\r\n const formWithMembers = useMemo(() => {\r\n if (!sectionFormJSON || !members) return null;\r\n\r\n return sectionFormJSON.map((section: ISectionProperty, sectionIndex: number) => ({\r\n ...section,\r\n members: members.filter(\r\n (member: any) => member?.section_order === sectionIndex,\r\n ) as (IProperty | ISelectProperty)[]\r\n }));\r\n }, [sectionFormJSON, members]);\r\n\r\n const previewState = useMemo(() => {\r\n if (!formWithMembers) return null;\r\n\r\n return tabsData?.length\r\n ? { tab: tabsData }\r\n : { section: formWithMembers };\r\n }, [tabsData, formWithMembers]);\r\n\r\n const previewFields = useMemo(() => {\r\n if (!previewState) return null;\r\n return formBuilderConversion(previewState);\r\n }, [previewState]);\r\n\r\n\r\n // Option 2: Optimized handlePreview function using useCallback\r\n const showPreview = useCallback(() => {\r\n if (previewFields) {\r\n setPreviewFields(previewFields);\r\n }\r\n }, [previewFields, setPreviewFields]);\r\n const hidePreview = useCallback(() => {\r\n setPreviewFields(null);\r\n }, []);\r\n\r\n // Enhanced handleFormUpdate with proper error handling and validation\r\n const handleFormUpdate = useCallback(async (): void => {\r\n try {\r\n\r\n\r\n\r\n // Early validation checks\r\n if (!sectionFormJSON || !Array.isArray(sectionFormJSON)) {\r\n console.warn('Invalid sectionFormJSON provided');\r\n return;\r\n }\r\n\r\n if (!members || !Array.isArray(members)) {\r\n console.warn('Invalid members array provided');\r\n return;\r\n }\r\n\r\n if (!rowData?._id) {\r\n console.warn('Missing rowData._id for form update');\r\n return;\r\n }\r\n\r\n // Deep clone with proper error handling\r\n let formWithMembers: IEnhancedSectionProperty[];\r\n\r\n try {\r\n formWithMembers = structuredClone(sectionFormJSON);\r\n } catch (cloneError) {\r\n // Fallback to JSON method if structuredClone is not available\r\n formWithMembers = JSON.parse(JSON.stringify(sectionFormJSON));\r\n }\r\n\r\n // Enhanced member filtering with better type safety and validation\r\n formWithMembers.forEach((section: IEnhancedSectionProperty, sectionIndex: number) => {\r\n // Validate section object\r\n if (!section || typeof section !== 'object') {\r\n console.warn(`Invalid section at index ${sectionIndex}`);\r\n return;\r\n }\r\n\r\n // Filter members with proper type checking and validation\r\n section.members = members.filter((member: IMember) => {\r\n // Validate member object and section_order\r\n return (\r\n member &&\r\n typeof member === 'object' &&\r\n typeof member.section_order === 'number' &&\r\n member.section_order === sectionIndex\r\n );\r\n }) as (IProperty | ISelectProperty)[];\r\n });\r\n\r\n const hasSystemMembers = formWithMembers.some((section: ISectionProperty) =>\r\n section.members?.some((member: IProperty) => Boolean(member?.is_system_field))\r\n );\r\n\r\n const activeTabIndex = Number(activeTabValue);\r\n let updatedTabsData = [...tabsData];\r\n if (isValidNumber(activeTabIndex) && activeTabIndex >= 0 && activeTabIndex < tabsData.length) {\r\n updatedTabsData = [...tabsData];\r\n updatedTabsData[activeTabIndex] = {\r\n ...updatedTabsData[activeTabIndex],\r\n data: formWithMembers,\r\n remove_tab: hasSystemMembers,\r\n };\r\n\r\n setTabsData(updatedTabsData)\r\n }\r\n\r\n // Build state object with proper validation\r\n const state: IFormState = updatedTabsData?.length > 0\r\n ? { tab: updatedTabsData }\r\n : { section: formWithMembers };\r\n\r\n // Validate formBuilderConversion function exists\r\n if (typeof formBuilderConversion !== 'function') {\r\n console.error('formBuilderConversion is not a function');\r\n return;\r\n }\r\n\r\n // Execute conversion with error handling\r\n let formBuilderConversionResult: any;\r\n try {\r\n formBuilderConversionResult = formBuilderConversion(state);\r\n } catch (conversionError) {\r\n console.error('Error during form builder conversion:', conversionError);\r\n return;\r\n }\r\n\r\n // Validate conversion result\r\n if (!formBuilderConversionResult) {\r\n console.warn('Form builder conversion returned empty result');\r\n return;\r\n }\r\n\r\n // Validate elementPerColumn\r\n // if (typeof elementPerColumn !== 'number' || elementPerColumn <= 0) {\r\n\r\n // console.warn('Invalid elementPerColumn value');\r\n // return;\r\n // }\r\n\r\n // Prepare payload with validation\r\n const updatePayload: IFormUpdatePayload = {\r\n gridCol: elementPerColumn || 2,\r\n fields: formBuilderConversionResult\r\n };\r\n\r\n // Dispatch update action\r\n const updateRes = await dispatch(\r\n patchFormDataById({\r\n id: rowData._id,\r\n data: updatePayload\r\n })\r\n );\r\n if (updateRes.meta.requestStatus === 'rejected') {\r\n\r\n const m = getErrorMessage(updateRes?.error?.message);\r\n enqueueSnackbar(m, { variant: 'error' });\r\n } else {\r\n enqueueSnackbar(\"Form updated successfully\", { variant: 'success' });\r\n navigate(path);\r\n }\r\n\r\n } catch (error) {\r\n const m = error?.message || 'Something went wrong while updating the form';\r\n enqueueSnackbar(m, { variant: 'error' });\r\n }\r\n }, [\r\n sectionFormJSON,\r\n members,\r\n tabsData,\r\n rowData?._id,\r\n elementPerColumn,\r\n dispatch,\r\n formBuilderConversion\r\n ]);\r\n\r\n const handleDuplicateElement = (index: number) => {\r\n const copyOfMember: any = { ...members[index], type: \"custom\" };\r\n copyOfMember && insert(index + 1, copyOfMember);\r\n setActiveMember(index + 1);\r\n setSelectedHoc(\"element\");\r\n setPositionEditedElement(index + 1);\r\n setElementJSON(copyOfMember);\r\n pickPropertyEditForm(copyOfMember.field_type);\r\n };\r\n\r\n const breadCrumbPath = [\r\n {\r\n link: path,\r\n label: \"Forms\",\r\n },\r\n {\r\n link: \"\",\r\n label: formatLabel(rowData?.name),\r\n },\r\n {\r\n link: \"\",\r\n label: \"Edit Form\",\r\n },\r\n ];\r\n\r\n\r\n useEffect(() => {\r\n if (removeSectionActionPerformed) {\r\n members.forEach((member: any, index: number) => {\r\n if (\r\n removeSectionPosition !== undefined &&\r\n Boolean(removeSectionPosition?.toString) &&\r\n member.section_order > removeSectionPosition\r\n ) {\r\n update(index, { ...member, section_order: member.section_order - 1 });\r\n }\r\n });\r\n setRemoveSectionActionPerformed(false);\r\n setRemoveSectionMembersPerformed(true);\r\n setRemoveSectionPosition(undefined);\r\n setSelectedHoc(\"\");\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [removeSectionActionPerformed]);\r\n\r\n useEffect(() => {\r\n formBuilder.isSuccess && navigate(path);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [formBuilder.isSuccess]);\r\n\r\n useEffect(() => {\r\n if (formBuilder.isError) {\r\n setToast({\r\n type: 'alert',\r\n message: formBuilder.error\r\n });\r\n }\r\n }, [formBuilder.error, formBuilder.isError]);\r\n\r\n useEffect(() => {\r\n if (\r\n typeof positionEditedElement !== \"number\" ||\r\n typeof positionEditedElement !== \"string\"\r\n ) {\r\n const index = Number(positionEditedElement);\r\n if (formJSON[index]) {\r\n const copyOfUpdatedFormJson = JSON.parse(\r\n JSON.stringify(formJSON[index]),\r\n );\r\n update(index, { ...copyOfUpdatedFormJson });\r\n }\r\n }\r\n // eslint-disable-next-line\r\n }, [formJSON]);\r\n\r\n useEffect(() => {\r\n const updatedFormJSON = formJSON.map((obj: any, index: number) => {\r\n if (index === Number(positionEditedElement)) {\r\n return { ...elementJSON };\r\n } else {\r\n return { ...obj };\r\n }\r\n });\r\n setFormJSON(updatedFormJSON);\r\n\r\n // eslint-disable-next-line\r\n }, [elementJSON]);\r\n\r\n useEffect(() => {\r\n if (members.length !== formJSON.length) {\r\n setFormJSON(JSON.parse(JSON.stringify(members)));\r\n }\r\n if (\r\n Boolean(elementSwap) &&\r\n JSON.stringify(members) !== JSON.stringify(formJSON)\r\n ) {\r\n setFormJSON(JSON.parse(JSON.stringify(members)));\r\n setElementSwap(false);\r\n const newMember: any =\r\n positionEditedElement && members[positionEditedElement];\r\n newMember && setSelectedHoc(\"element\");\r\n newMember && setElementJSON(newMember);\r\n newMember && pickPropertyEditForm(newMember.field_type);\r\n }\r\n if (\r\n removeSectionMembersPerformed &&\r\n JSON.stringify(members) !== JSON.stringify(formJSON)\r\n ) {\r\n setFormJSON(JSON.parse(JSON.stringify(members)));\r\n setRemoveSectionMembersPerformed(false);\r\n }\r\n // eslint-disable-next-line\r\n }, [members, elementSwap]);\r\n\r\n useEffect(() => {\r\n if (\r\n typeof sectionPositionEditedElement !== \"number\" ||\r\n typeof sectionPositionEditedElement !== \"string\"\r\n ) {\r\n const index = Number(sectionPositionEditedElement);\r\n if (sectionFormJSON[index]) {\r\n const copyOfUpdatedFormJson = JSON.parse(\r\n JSON.stringify(sectionFormJSON[index]),\r\n );\r\n updateSection(index, { ...copyOfUpdatedFormJson });\r\n }\r\n }\r\n // eslint-disable-next-line\r\n }, [sectionFormJSON]);\r\n\r\n useEffect(() => {\r\n const updatedFormJSON = sectionFormJSON.map((obj: any, index: number) => {\r\n if (index === Number(sectionPositionEditedElement)) {\r\n return { ...obj, ...sectionJSON };\r\n } else {\r\n return { ...obj };\r\n }\r\n });\r\n setSectionFormJSON(updatedFormJSON);\r\n // eslint-disable-next-line\r\n }, [sectionJSON]);\r\n\r\n useEffect(() => {\r\n if (section.length !== sectionFormJSON.length) {\r\n setSectionFormJSON(JSON.parse(JSON.stringify(section)));\r\n }\r\n if (\r\n JSON.stringify(sectionFormJSON) !== JSON.stringify(section) &&\r\n modifyAccordion\r\n ) {\r\n setSectionFormJSON(JSON.parse(JSON.stringify(section)));\r\n setModifyAccordion(false);\r\n }\r\n // eslint-disable-next-line\r\n }, [section]);\r\n\r\n useEffect(() => {\r\n () => setInitialLoading(true);\r\n }, [])\r\n\r\n const handleFormData = useCallback(async () => {\r\n setInitialLoading(true)\r\n try {\r\n if (rowData?._id) {\r\n setTabsData([])\r\n await dispatch(getFormDataById(rowData?._id));\r\n await dispatch(getFieldsByFormId({ id: rowData?._id }));\r\n\r\n }\r\n } finally {\r\n setInitialLoading(false);\r\n }\r\n\r\n }, [rowData?._id])\r\n\r\n useEffect(() => {\r\n handleFormData();\r\n }, [handleFormData]);\r\n\r\n type SelectedHoc = \"element\" | \"section\" | null;\r\n\r\n // Constants\r\n const DEFAULT_FIELD_TYPE = \"text\";\r\n const HOC_TYPES = {\r\n ELEMENT: \"element\",\r\n SECTION: \"section\"\r\n } as const;\r\n\r\n // Helper function to check if object has meaningful content\r\n const hasValidContent = (obj: Record<string, any>): boolean => {\r\n return obj && Object.keys(obj).length > 0;\r\n };\r\n\r\n const EmptyStateMessage = () => (\r\n <Typography type=\"s5\" color={\"theme.secondary.800\"} className=\"formSection--Text\">Select a field to edit its properties.</Typography>\r\n )\r\n\r\n // Helper function to get field type with fallback\r\n const getFieldTypeWithFallback = (\r\n json: ElementJSON | SectionJSON | null | undefined,\r\n fallback: string = DEFAULT_FIELD_TYPE\r\n ): string => {\r\n return json?.field_type || fallback;\r\n };\r\n\r\n const memoizedForm = useMemo(() => {\r\n // Early return for empty state\r\n if (!selectedHoc) {\r\n\r\n return <EmptyStateMessage />;\r\n }\r\n\r\n // Handle element selection\r\n if (selectedHoc === HOC_TYPES.ELEMENT) {\r\n if (!hasValidContent(members)) {\r\n console.warn('Element selected but no members data available');\r\n return <EmptyStateMessage />;\r\n }\r\n\r\n const fieldType = getFieldTypeWithFallback(elementJSON);\r\n return pickPropertyEditForm(fieldType);\r\n }\r\n\r\n // Handle section selection\r\n if (selectedHoc === HOC_TYPES.SECTION) {\r\n if (!hasValidContent(section)) {\r\n console.warn('Section selected but no section data available');\r\n return <EmptyStateMessage />;\r\n }\r\n\r\n const fieldType = getFieldTypeWithFallback(sectionJSON);\r\n return pickPropertyEditForm(fieldType);\r\n }\r\n\r\n // Fallback for unknown selection type\r\n console.warn(`Unknown selectedHoc type: ${selectedHoc}`);\r\n return <EmptyStateMessage />;\r\n }, [\r\n // Core dependencies\r\n selectedHoc,\r\n\r\n // Data dependencies\r\n Object.keys(members).length,\r\n Object.keys(section).length,\r\n\r\n // JSON dependencies with deep comparison consideration\r\n elementJSON?.field_type,\r\n elementJSON?.field_properties,\r\n sectionJSON?.field_type,\r\n sectionJSON?.field_properties,\r\n\r\n // Function dependency\r\n pickPropertyEditForm\r\n ]);\r\n\r\n return (\r\n // <FullScreenLayout className=\"formSection--Layout\">\r\n <Box position='relative'>\r\n {initialLoading ? <ErpLoader /> :\r\n <DndProvider backend={HTML5Backend}>\r\n <FormHeader breadCrumbPath={breadCrumbPath}>\r\n <div className=\"formSection--Buttons\">\r\n <Button\r\n variant=\"outlined\"\r\n className=\"formSection--PreviewButton\"\r\n text=\"Preview\"\r\n onClick={() => { !previewFieldsData ? showPreview() : hidePreview() }}\r\n disable={!members?.length}\r\n startIcon={previewFieldsData ? <EyeOff /> : <Eye />}\r\n />\r\n <Button\r\n variant=\"contained\"\r\n type=\"submit\"\r\n text=\"Update\"\r\n onClick={handleFormUpdate}\r\n disable={previewFieldsData}\r\n />\r\n </div>\r\n </FormHeader>\r\n {!previewFieldsData ?\r\n <Grid className=\"formSection--Grid\" container>\r\n <Grid\r\n item\r\n xs={9}\r\n component=\"form\"\r\n sx={{\r\n position: \"relative\",\r\n background: \"#F5F6F5\",\r\n padding: \"0.75rem\",\r\n }}\r\n >\r\n <Grid className=\"formSection--GridContainer\">\r\n <Box className=\"formSection--Tab\">\r\n {tabsData && (\r\n <TabBar\r\n tabs={tabsData}\r\n onEditTabTitle={handleEditTabTitle}\r\n activeValue={activeTabValue}\r\n setActiveValue={setActiveTabValue}\r\n handleTabChange={() => {\r\n handleTabData()\r\n }}\r\n handleRemoveTab={handleRemoveTab}\r\n containerProps={{ mb: 0 }}\r\n />\r\n )}\r\n <Button\r\n variant=\"outlined\"\r\n text=\"Add Tab\"\r\n onClick={handleAddTab}\r\n style={{ color: \"#292D32\", margin: \"0.5rem\" }}\r\n />\r\n </Box>\r\n <div className=\"formSection--Form\">\r\n {section?.map((item: any, i: number) => {\r\n const sectionMembers = members.filter(\r\n (member: any) => member.section_order === i,\r\n );\r\n const isFormSwitcher = item.section_type === SECTION_TYPES.FORM_SWITCH_SECTION\r\n const switchForms = item?.switcher_forms?.map((form: any) => ({\r\n ...form,\r\n formMembers: members.filter(\r\n (member: any) => member.section_form_id === form.id,\r\n )\r\n }))\r\n\r\n return (\r\n <DynamicSectionHOC\r\n index={i}\r\n label={t(item.label)}\r\n onClick={handleSectionSelection}\r\n position={i}\r\n fieldArrayName=\"section\"\r\n isFormSwitcher={isFormSwitcher}\r\n activeIndex={activeSection === i}\r\n removeSection={() => handleRemoveSection(i)}\r\n handleAccordion={() => handleMakeAccordion(i)}\r\n handleAddButton={(e) => handleAddMember(e)}\r\n remove_section={item.remove_section}\r\n >\r\n {isFormSwitcher ? (\r\n <div style={{ width: '100%' }} >\r\n <Typography type=\"s5\" style={{ fontWeight: 500 }} color={\"theme.secondary.800\"}>\r\n {item.form_switcher_label}\r\n </Typography>\r\n <RadioGroup\r\n aria-labelledby=\"theme-radio-buttons-group-label\"\r\n name={item.form_switcher_name || item.form_switcher_label}\r\n >\r\n\r\n {switchForms?.map(({ name, id, formMembers }: { name: string, id: number, formMembers: any }) => (\r\n <>\r\n <div>\r\n <FormControlLabel\r\n key={id}\r\n value={name}\r\n control={<Radio />}\r\n label={t(name)}\r\n disabled\r\n />\r\n </div>\r\n\r\n <Grid container sx={{ mb: 3 }}>\r\n <FormFields\r\n sectionMembers={formMembers || []}\r\n members={members}\r\n activeMember={activeMember}\r\n control={control}\r\n t={t}\r\n element={element}\r\n images={images}\r\n elementJSON={elementJSON}\r\n remove={remove}\r\n move={move}\r\n handleElementSelection={handleElementSelection}\r\n setElementSwap={setElementSwap}\r\n handleDuplicateElement={handleDuplicateElement}\r\n setSelectedHoc={setSelectedHoc}\r\n setActiveMember={setActiveMember}\r\n />\r\n </Grid>\r\n <Button\r\n text=\"Add\"\r\n variant=\"outlined\"\r\n className=\"formSection--PreviewButton\"\r\n data-position={i}\r\n onClick={(e) => handleAddMember(e, {\r\n section_form_id: id,\r\n is_form_switcher_section: true\r\n })}\r\n startIcon={<Add />}\r\n />\r\n </>\r\n ))}\r\n </RadioGroup>\r\n </div>\r\n ) : null}\r\n {!isFormSwitcher &&\r\n <FormFields\r\n sectionMembers={sectionMembers || []}\r\n members={members}\r\n activeMember={activeMember}\r\n control={control}\r\n t={t}\r\n element={element}\r\n images={images}\r\n elementJSON={elementJSON}\r\n remove={remove}\r\n move={move}\r\n handleElementSelection={handleElementSelection}\r\n setElementSwap={setElementSwap}\r\n handleDuplicateElement={handleDuplicateElement}\r\n setSelectedHoc={setSelectedHoc}\r\n setActiveMember={setActiveMember}\r\n />\r\n }\r\n </DynamicSectionHOC>\r\n );\r\n })}\r\n <div className=\"formSection--Section\">\r\n <Button\r\n text=\"Add a section\"\r\n variant=\"outlined\"\r\n className=\"formSection--PreviewButton\"\r\n onClick={addNewSection}\r\n startIcon={<Add />}\r\n />\r\n </div>\r\n </div>\r\n </Grid>\r\n\r\n </Grid>\r\n <Grid\r\n item\r\n xs={3}\r\n className={\r\n Boolean(selectedHoc) && (members?.length || section.length)\r\n ? \"formSection--RightGrid\"\r\n : \"formSection--RightGrid formSection--Text\"\r\n }\r\n >\r\n {memoizedForm}\r\n </Grid>\r\n </Grid>\r\n :\r\n <FormParser\r\n data={previewFieldsData || []}\r\n handleFormSubmit={(data) => console.log(\"Preview Data\", data)}\r\n className='form-container'\r\n fieldArrayName='form-builder-preview'\r\n getFormMethods={(methods: any) =>\r\n setFormParserMethods({ ...methods })\r\n }\r\n />\r\n }\r\n <Toast\r\n open={Boolean(toast)}\r\n type={toast?.type}\r\n message={toast?.message}\r\n handleClose={() => setToast(null)}\r\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\r\n />\r\n </DndProvider>}\r\n </Box>\r\n // </FullScreenLayout>\r\n );\r\n}\r\n\r\nexport default CustomForm;\r\n"],"names":["formWithMembers","section","id","elementPerColumn","_a","Button"],"mappings":"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"}
|