ui-soxo-bootstrap-core 2.4.24
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/.babelrc +9 -0
- package/.github/workflows/npm-publish.yml +33 -0
- package/.husky/pre-commit +12 -0
- package/.prettierrc.json +11 -0
- package/babel.config.js +3 -0
- package/core/assets/images/vector.png +0 -0
- package/core/components/component-loader/component-loader.js +125 -0
- package/core/components/component-wrapper/component-wrapper.js +122 -0
- package/core/components/extra-info/extra-info-details.js +172 -0
- package/core/components/extra-info/extra-info-details.scss +27 -0
- package/core/components/extra-info/extra-info.js +134 -0
- package/core/components/index.js +18 -0
- package/core/components/landing-api/landing-api.js +492 -0
- package/core/components/landing-api/landing-api.scss +19 -0
- package/core/components/menu-template-api/menu-template-api.js +321 -0
- package/core/components/root-application-api/root-application-api.js +174 -0
- package/core/components/root-application-api/root-application.api.scss +0 -0
- package/core/index.js +14 -0
- package/core/lib/Store.js +363 -0
- package/core/lib/assets/Tick-icon.png +0 -0
- package/core/lib/assets/blue-slate-theme.png +0 -0
- package/core/lib/assets/dark-theme.png +0 -0
- package/core/lib/assets/deep-purple-theme.png +0 -0
- package/core/lib/assets/light-theme.png +0 -0
- package/core/lib/assets/nura-theme.png +0 -0
- package/core/lib/assets/plant.png +0 -0
- package/core/lib/assets/welcome-image.png +0 -0
- package/core/lib/assets/white-haze-theme.png +0 -0
- package/core/lib/components/application-bootstrap/application-bootstrap.js +115 -0
- package/core/lib/components/application-bootstrap/application-bootstrap.scss +0 -0
- package/core/lib/components/approval-form/approval-form.js +280 -0
- package/core/lib/components/approval-form/approval-form.scss +184 -0
- package/core/lib/components/approval-list/approval-list.js +143 -0
- package/core/lib/components/approval-list/approval-list.scss +3 -0
- package/core/lib/components/approval-list/components/request-card/request-card.js +43 -0
- package/core/lib/components/approval-list/components/request-card/request-card.scss +31 -0
- package/core/lib/components/camera/camera.js +231 -0
- package/core/lib/components/camera/camera.scss +86 -0
- package/core/lib/components/comment-block/comment-block.js +139 -0
- package/core/lib/components/comment-block/comment-block.scss +3 -0
- package/core/lib/components/confirm-modal/confirm-modal.js +82 -0
- package/core/lib/components/confirm-modal/confirm-modal.scss +3 -0
- package/core/lib/components/consent/consent.js +67 -0
- package/core/lib/components/consent/consent.scss +0 -0
- package/core/lib/components/consent/pdf-signature.js +299 -0
- package/core/lib/components/consent/signature-pad.js +90 -0
- package/core/lib/components/consent/signature-pad.scss +14 -0
- package/core/lib/components/file-upload/file-upload.js +133 -0
- package/core/lib/components/finger-print-reader/finger-print-reader.js +296 -0
- package/core/lib/components/finger-print-reader/finger-print-reader.scss +47 -0
- package/core/lib/components/finger-print-search/finger-print-search.js +200 -0
- package/core/lib/components/finger-print-search/finger-print-search.scss +47 -0
- package/core/lib/components/global-header/animations.js +18 -0
- package/core/lib/components/global-header/global-header.js +413 -0
- package/core/lib/components/global-header/global-header.scss +369 -0
- package/core/lib/components/header/generic-header.js +76 -0
- package/core/lib/components/header/generic-header.scss +99 -0
- package/core/lib/components/image-preview/image-preview.js +33 -0
- package/core/lib/components/image-wrapper/image-wrapper.js +108 -0
- package/core/lib/components/image-wrapper/image-wrapper.scss +13 -0
- package/core/lib/components/index.js +203 -0
- package/core/lib/components/landing/landing.js +404 -0
- package/core/lib/components/landing/landing.scss +0 -0
- package/core/lib/components/language-switcher/language-switcher.js +50 -0
- package/core/lib/components/menu-context/menu-context.js +70 -0
- package/core/lib/components/menu-template/menu-template.js +250 -0
- package/core/lib/components/menu-template/menu-template.scss +9 -0
- package/core/lib/components/modal-search/modal-search.js +153 -0
- package/core/lib/components/modal-search/modal-search.scss +79 -0
- package/core/lib/components/modal-wrapper/modal-manager.js +16 -0
- package/core/lib/components/modal-wrapper/modal-wrapper.js +108 -0
- package/core/lib/components/modal-wrapper/modal-wrapper.scss +14 -0
- package/core/lib/components/notice-board/notice-board.js +132 -0
- package/core/lib/components/notice-board/notice-board.scss +65 -0
- package/core/lib/components/page-container/page-container.js +55 -0
- package/core/lib/components/page-container/page-container.scss +8 -0
- package/core/lib/components/page-header/page-header.js +23 -0
- package/core/lib/components/page-header/page-header.scss +18 -0
- package/core/lib/components/pdf-viewer/pdf-viewer.js +56 -0
- package/core/lib/components/portlet-table/components/table-actions/table-actions.js +58 -0
- package/core/lib/components/portlet-table/components/table-actions/table-actions.scss +1 -0
- package/core/lib/components/portlet-table/components/table-data/table-data.js +107 -0
- package/core/lib/components/portlet-table/components/table-data/table-data.scss +0 -0
- package/core/lib/components/portlet-table/portlet-table.js +63 -0
- package/core/lib/components/portlet-table/portlet-table.scss +90 -0
- package/core/lib/components/progress-bar/progress-bar.js +58 -0
- package/core/lib/components/progress-bar/progress-bar.scss +15 -0
- package/core/lib/components/request-form/request-form.js +110 -0
- package/core/lib/components/request-form/request-form.scss +0 -0
- package/core/lib/components/root-application/root-application.js +70 -0
- package/core/lib/components/rupee/rupee.js +14 -0
- package/core/lib/components/script-input/script-input.js +169 -0
- package/core/lib/components/script-input/script-input.scss +8 -0
- package/core/lib/components/sidemenu/animations.js +52 -0
- package/core/lib/components/sidemenu/sidemenu.js +617 -0
- package/core/lib/components/sidemenu/sidemenu.scss +264 -0
- package/core/lib/components/spotlight-search/spotlight-search.component.js +636 -0
- package/core/lib/components/spotlight-search/spotlight-search.component.scss +78 -0
- package/core/lib/components/table-wrapper/table-wrapper.js +136 -0
- package/core/lib/components/table-wrapper/table-wrapper.scss +72 -0
- package/core/lib/components/ui_elements/Loader.js +13 -0
- package/core/lib/components/ui_elements/Notify.js +13 -0
- package/core/lib/components/ui_elements/PlaceHolder.js +34 -0
- package/core/lib/components/web-camera/web-camera.js +162 -0
- package/core/lib/components/web-camera/web-camera.scss +28 -0
- package/core/lib/core.md +9 -0
- package/core/lib/elements/Elements.md +3 -0
- package/core/lib/elements/basic/LoggedUserRedirect.js +21 -0
- package/core/lib/elements/basic/PrivateRoute.js +16 -0
- package/core/lib/elements/basic/button/Button.md +43 -0
- package/core/lib/elements/basic/button/button.js +170 -0
- package/core/lib/elements/basic/button/button.scss +0 -0
- package/core/lib/elements/basic/card/Card.md +15 -0
- package/core/lib/elements/basic/card/card.js +40 -0
- package/core/lib/elements/basic/card/card.scss +14 -0
- package/core/lib/elements/basic/checkbox/checkbox.js +23 -0
- package/core/lib/elements/basic/col/col.js +16 -0
- package/core/lib/elements/basic/copy-to-clipboard/Readme.md +40 -0
- package/core/lib/elements/basic/copy-to-clipboard/copy-to-clipboard.js +62 -0
- package/core/lib/elements/basic/country-phone-input/Readme.md +98 -0
- package/core/lib/elements/basic/country-phone-input/country-phone-input.js +107 -0
- package/core/lib/elements/basic/country-phone-input/phone-input.scss +62 -0
- package/core/lib/elements/basic/datepicker/datepicker.js +33 -0
- package/core/lib/elements/basic/dragabble-wrapper/draggable-wrapper.js +61 -0
- package/core/lib/elements/basic/empty/empty.js +15 -0
- package/core/lib/elements/basic/fingerprint-protrected/fingerprint-protected.js +118 -0
- package/core/lib/elements/basic/fingerprint-protrected/fingerprint-protected.scss +10 -0
- package/core/lib/elements/basic/form/Readme.md +0 -0
- package/core/lib/elements/basic/form/form.js +70 -0
- package/core/lib/elements/basic/form/form.scss +4 -0
- package/core/lib/elements/basic/image/image.js +45 -0
- package/core/lib/elements/basic/image/image.scss +17 -0
- package/core/lib/elements/basic/image/readme.md +26 -0
- package/core/lib/elements/basic/image-viewer/image-viewer.js +109 -0
- package/core/lib/elements/basic/image-viewer/image-viewer.scss +8 -0
- package/core/lib/elements/basic/input/input.js +81 -0
- package/core/lib/elements/basic/input/readme.md +77 -0
- package/core/lib/elements/basic/json-input/json-input.js +51 -0
- package/core/lib/elements/basic/menu-dashboard/menu-dashboard.js +216 -0
- package/core/lib/elements/basic/menu-dashboard/menu-dashboard.scss +28 -0
- package/core/lib/elements/basic/modal/modal.js +64 -0
- package/core/lib/elements/basic/modal/readme.md +62 -0
- package/core/lib/elements/basic/popconfirm/popconfirm.js +18 -0
- package/core/lib/elements/basic/popover/popover.js +13 -0
- package/core/lib/elements/basic/radio/radio.js +18 -0
- package/core/lib/elements/basic/rangepicker/rangepicker.js +51 -0
- package/core/lib/elements/basic/rangepicker/rangepicker.scss +18 -0
- package/core/lib/elements/basic/rangepicker/readme.md +82 -0
- package/core/lib/elements/basic/reference-select/readme.md +19 -0
- package/core/lib/elements/basic/reference-select/reference-select.js +337 -0
- package/core/lib/elements/basic/row/row.js +16 -0
- package/core/lib/elements/basic/select/select.js +47 -0
- package/core/lib/elements/basic/select-box/readme.md +53 -0
- package/core/lib/elements/basic/select-box/select-box.js +63 -0
- package/core/lib/elements/basic/skeleton/readme.md +35 -0
- package/core/lib/elements/basic/skeleton/skeleton.js +36 -0
- package/core/lib/elements/basic/skeleton/skeleton.scss +53 -0
- package/core/lib/elements/basic/space/space.js +13 -0
- package/core/lib/elements/basic/switch/readme.md +29 -0
- package/core/lib/elements/basic/switch/switch.js +58 -0
- package/core/lib/elements/basic/tab/tab.js +15 -0
- package/core/lib/elements/basic/table/readme.md +9 -0
- package/core/lib/elements/basic/table/table.js +100 -0
- package/core/lib/elements/basic/table/table.scss +0 -0
- package/core/lib/elements/basic/tag/tag.js +63 -0
- package/core/lib/elements/basic/tag/tag.scss +3 -0
- package/core/lib/elements/basic/timeline/timeline.js +14 -0
- package/core/lib/elements/basic/title/readme.md +20 -0
- package/core/lib/elements/basic/title/title.js +38 -0
- package/core/lib/elements/basic/title/title.scss +0 -0
- package/core/lib/elements/basic/user-search/user-search.js +192 -0
- package/core/lib/elements/complex/barcode/barcode.js +27 -0
- package/core/lib/elements/complex/bargraph/bar-graph.js +262 -0
- package/core/lib/elements/complex/basic-table/basic-table.js +111 -0
- package/core/lib/elements/complex/basic-table/basic-table.scss +4 -0
- package/core/lib/elements/complex/date-display/date-display.js +37 -0
- package/core/lib/elements/complex/error-boundary/error-boundary.js +29 -0
- package/core/lib/elements/complex/google-location-input/map-container-library-load.js +93 -0
- package/core/lib/elements/complex/google-map/google-map.js +230 -0
- package/core/lib/elements/complex/google-map/google-map.scss +13 -0
- package/core/lib/elements/complex/line-graph/line-graph.js +108 -0
- package/core/lib/elements/complex/location-search-input/location-search-input.js +100 -0
- package/core/lib/elements/complex/maps/maps.js +0 -0
- package/core/lib/elements/complex/pie-chart/pie-chart.js +203 -0
- package/core/lib/elements/complex/qr-code/qr-code.js +27 -0
- package/core/lib/elements/complex/qrscanner/qrscanner.js +57 -0
- package/core/lib/elements/complex/search-debounce/search-debounce.js +37 -0
- package/core/lib/elements/complex/statistic-card/dashboard-statistic-card.js +76 -0
- package/core/lib/elements/complex/statistic-card/statistic-card.js +28 -0
- package/core/lib/elements/index.js +226 -0
- package/core/lib/hooks/device-detect.js +26 -0
- package/core/lib/hooks/index.js +19 -0
- package/core/lib/hooks/use-location.js +33 -0
- package/core/lib/hooks/use-window-size.js +34 -0
- package/core/lib/i18n.js +70 -0
- package/core/lib/index.js +106 -0
- package/core/lib/introduction.md +74 -0
- package/core/lib/js-styleguide.md +4112 -0
- package/core/lib/models/actions/actions.js +128 -0
- package/core/lib/models/actions/components/action-detail/action-detail.js +190 -0
- package/core/lib/models/actions/components/action-detail/action-detail.scss +0 -0
- package/core/lib/models/actions/components/custom-actions/custom-actions.js +186 -0
- package/core/lib/models/actions/components/custom-actions/custom-actions.scss +0 -0
- package/core/lib/models/attachments/attachments.js +231 -0
- package/core/lib/models/base-loader.js +99 -0
- package/core/lib/models/base.js +716 -0
- package/core/lib/models/branches/branches.js +125 -0
- package/core/lib/models/checklists/checklists.js +115 -0
- package/core/lib/models/columns/columns.js +169 -0
- package/core/lib/models/columns/components/columns-add/columns-add.js +172 -0
- package/core/lib/models/columns/components/columns-add/columns-add.scss +0 -0
- package/core/lib/models/comments/comments.js +213 -0
- package/core/lib/models/departments/departments.js +107 -0
- package/core/lib/models/financial-years/financial_years.js +127 -0
- package/core/lib/models/forms/components/form-creator/form-creator.js +624 -0
- package/core/lib/models/forms/components/form-creator/form-creator.scss +30 -0
- package/core/lib/models/forms/components/form-detail/form-detail.js +224 -0
- package/core/lib/models/forms/components/form-detail/form-detail.scss +0 -0
- package/core/lib/models/forms/forms.js +122 -0
- package/core/lib/models/index.js +203 -0
- package/core/lib/models/invoice-numbers/invoice_numbers.js +204 -0
- package/core/lib/models/lookup-types/components/lookup-detail/lookup-detail.js +145 -0
- package/core/lib/models/lookup-types/components/lookup-detail/lookup-detail.scss +0 -0
- package/core/lib/models/lookup-types/lookup-types.js +113 -0
- package/core/lib/models/lookup-values/components/lookup-values-add/lookup-values-add.js +126 -0
- package/core/lib/models/lookup-values/components/lookup-values-add/lookup-values-add.scss +0 -0
- package/core/lib/models/lookup-values/lookup-values.js +107 -0
- package/core/lib/models/menu-roles/menu-roles.js +127 -0
- package/core/lib/models/menus/components/menu-add/menu-add.js +228 -0
- package/core/lib/models/menus/components/menu-add/menu-add.scss +0 -0
- package/core/lib/models/menus/components/menu-detail/menu-detail.js +170 -0
- package/core/lib/models/menus/components/menu-detail/menu-detail.scss +0 -0
- package/core/lib/models/menus/components/menu-list/menu-list.js +593 -0
- package/core/lib/models/menus/components/menu-list/menu-list.scss +6 -0
- package/core/lib/models/menus/components/menu-roles-add/menu-roles-add.js +183 -0
- package/core/lib/models/menus/components/menu-roles-add/menu-roles-add.scss +0 -0
- package/core/lib/models/menus/menus.js +499 -0
- package/core/lib/models/models/components/model-detail/model-detail.js +137 -0
- package/core/lib/models/models/components/model-detail/model-detail.scss +0 -0
- package/core/lib/models/models/components/models.js +128 -0
- package/core/lib/models/modules/modules.js +204 -0
- package/core/lib/models/outbox/outbox.js +73 -0
- package/core/lib/models/pages/pages.js +107 -0
- package/core/lib/models/permissions/permissions.js +71 -0
- package/core/lib/models/process/components/process-add/process-add.js +181 -0
- package/core/lib/models/process/components/process-add/process-add.scss +0 -0
- package/core/lib/models/process/components/process-dashboard/process-dashboard.js +602 -0
- package/core/lib/models/process/components/process-dashboard/process-dashboard.scss +62 -0
- package/core/lib/models/process/components/process-detail/process-detail.js +140 -0
- package/core/lib/models/process/components/process-detail/process-detail.scss +0 -0
- package/core/lib/models/process/components/process-timeline/process-timeline.js +140 -0
- package/core/lib/models/process/components/task-detail/task-detail.js +240 -0
- package/core/lib/models/process/components/task-detail/task-detail.scss +27 -0
- package/core/lib/models/process/components/task-form/task-form.js +529 -0
- package/core/lib/models/process/components/task-form/task-form.scss +7 -0
- package/core/lib/models/process/components/task-list/task-list.js +221 -0
- package/core/lib/models/process/components/task-list/task-list.scss +14 -0
- package/core/lib/models/process/components/task-overview/task-overview.js +300 -0
- package/core/lib/models/process/components/task-overview/task-overview.scss +0 -0
- package/core/lib/models/process/components/task-overview-legacy/task-overview-legacy.js +192 -0
- package/core/lib/models/process/components/task-overview-legacy/task-overview.scss +0 -0
- package/core/lib/models/process/components/task-routes/task-routes.js +45 -0
- package/core/lib/models/process/components/task-status/task-status.js +176 -0
- package/core/lib/models/process/components/task-status/task-status.scss +11 -0
- package/core/lib/models/process/process.js +781 -0
- package/core/lib/models/process-transactions/process-transactions.js +124 -0
- package/core/lib/models/roles/roles.js +106 -0
- package/core/lib/models/scripts/scripts.js +111 -0
- package/core/lib/models/step-transactions/step-transcations.js +148 -0
- package/core/lib/models/steps/components/step-add/step-add.js +261 -0
- package/core/lib/models/steps/components/step-add/step-add.scss +0 -0
- package/core/lib/models/steps/components/step-detail/step-detail.js +157 -0
- package/core/lib/models/steps/components/step-detail/step-detail.scss +0 -0
- package/core/lib/models/steps/steps.js +357 -0
- package/core/lib/models/user-preferences/user-preferences.js +83 -0
- package/core/lib/models/users/components/user-add/user-add.js +226 -0
- package/core/lib/models/users/components/user-add/user-add.scss +0 -0
- package/core/lib/models/users/users.js +120 -0
- package/core/lib/modules/business/launch-page/launch-page.js +29 -0
- package/core/lib/modules/business/launch-page/launch-page.scss +6 -0
- package/core/lib/modules/business/slots/slots.js +231 -0
- package/core/lib/modules/business/slots/slots.scss +108 -0
- package/core/lib/modules/forms/components/field-customizer/field-customizer.js +139 -0
- package/core/lib/modules/forms/components/field-customizer/field-customizer.scss +0 -0
- package/core/lib/modules/forms/components/field-selector/field-selector.js +157 -0
- package/core/lib/modules/forms/components/field-selector/field-selector.scss +25 -0
- package/core/lib/modules/forms/components/form-display/form-display.js +203 -0
- package/core/lib/modules/forms/components/form-display/form-display.scss +9 -0
- package/core/lib/modules/forms/components/tab-customizer/tab-customizer.js +125 -0
- package/core/lib/modules/forms/components/tab-customizer/tab-customizer.scss +0 -0
- package/core/lib/modules/generic/generic-add/generic-add.js +213 -0
- package/core/lib/modules/generic/generic-add/generic-add.scss +0 -0
- package/core/lib/modules/generic/generic-detail/generic-detail.js +199 -0
- package/core/lib/modules/generic/generic-detail/generic-detail.scss +0 -0
- package/core/lib/modules/generic/generic-edit/generic-edit.js +120 -0
- package/core/lib/modules/generic/generic-edit/generic-edit.scss +0 -0
- package/core/lib/modules/generic/generic-list/ExportReactCSV.js +62 -0
- package/core/lib/modules/generic/generic-list/generic-list.js +705 -0
- package/core/lib/modules/generic/generic-list/generic-list.scss +34 -0
- package/core/lib/modules/generic/generic-upload/generic-upload.js +484 -0
- package/core/lib/modules/generic/generic-upload/generic-upload.scss +0 -0
- package/core/lib/modules/generic/table-settings/table-settings.js +226 -0
- package/core/lib/modules/generic/table-settings/table-settings.scss +37 -0
- package/core/lib/modules/index.js +52 -0
- package/core/lib/modules/modules-routes/module-routes.js +35 -0
- package/core/lib/modules/modules-routes/module-routes.scss +0 -0
- package/core/lib/pages/change-password/change-password.js +211 -0
- package/core/lib/pages/change-password/change-password.scss +76 -0
- package/core/lib/pages/homepage/homepage.js +53 -0
- package/core/lib/pages/index.js +20 -0
- package/core/lib/pages/login/login.js +617 -0
- package/core/lib/pages/login/login.scss +346 -0
- package/core/lib/pages/manage-users/manage-users.js +429 -0
- package/core/lib/pages/manage-users/manage-users.scss +26 -0
- package/core/lib/pages/profile/profile.js +247 -0
- package/core/lib/pages/profile/profile.scss +107 -0
- package/core/lib/pages/profile/theme-config.js +18 -0
- package/core/lib/pages/profile/themes-backup.json +311 -0
- package/core/lib/pages/profile/themes.json +254 -0
- package/core/lib/pages/register/register.js +177 -0
- package/core/lib/pages/register/register.scss +128 -0
- package/core/lib/react-styleguide.md +757 -0
- package/core/lib/utils/api/api.utils.js +188 -0
- package/core/lib/utils/api/readme.md +426 -0
- package/core/lib/utils/async.js +36 -0
- package/core/lib/utils/common/common.utils.js +123 -0
- package/core/lib/utils/common/readme.md +30 -0
- package/core/lib/utils/date/date.utils.js +295 -0
- package/core/lib/utils/date/readme.md +2 -0
- package/core/lib/utils/firebase.support.utils.js +99 -0
- package/core/lib/utils/firebase.utils.js +808 -0
- package/core/lib/utils/form/Form.md +0 -0
- package/core/lib/utils/form/form.utils.js +256 -0
- package/core/lib/utils/generic/generic.utils.js +69 -0
- package/core/lib/utils/http/auth.helper.js +95 -0
- package/core/lib/utils/http/http.utils.js +157 -0
- package/core/lib/utils/http/readme.md +14 -0
- package/core/lib/utils/index.js +46 -0
- package/core/lib/utils/location/location.utils.js +137 -0
- package/core/lib/utils/location/readme.md +18 -0
- package/core/lib/utils/modal.utils.js +16 -0
- package/core/lib/utils/notification.utils.js +35 -0
- package/core/lib/utils/pwa/pwa.utils.js +88 -0
- package/core/lib/utils/script.utils.js +235 -0
- package/core/lib/utils/setting.utils.js +69 -0
- package/core/lib/utils/upload.utils.js +30 -0
- package/core/models/Preference/Preferences.js +46 -0
- package/core/models/base/base.js +399 -0
- package/core/models/base-clone-loader.js +107 -0
- package/core/models/base-clone.js +187 -0
- package/core/models/base-loader.js +97 -0
- package/core/models/core-scripts/core-scripts.js +150 -0
- package/core/models/dashboard/dashboard.js +187 -0
- package/core/models/detail-loader.js +88 -0
- package/core/models/groups.js +82 -0
- package/core/models/index.js +94 -0
- package/core/models/lookup-types/components/lookup-detail/lookup-detail.js +129 -0
- package/core/models/lookup-types/lookup-types.js +96 -0
- package/core/models/lookup-values/components/lookup-values-modal/lookup-values-modal.js +95 -0
- package/core/models/lookup-values/components/lookup-values-modal/lookup-values-modal.scss +0 -0
- package/core/models/lookup-values/lookup-values.js +92 -0
- package/core/models/menu-roles/components/menu-roles-add/menu-roles-add.js +153 -0
- package/core/models/menu-roles/components/menu-roles-add/menu-roles-add.scss +0 -0
- package/core/models/menu-roles/menu-roles.js +158 -0
- package/core/models/menus/components/menu-add/menu-add.js +325 -0
- package/core/models/menus/components/menu-add/menu-add.scss +31 -0
- package/core/models/menus/components/menu-detail/menu-detail.js +263 -0
- package/core/models/menus/components/menu-list/menu-list.js +392 -0
- package/core/models/menus/components/menu-lists/menu-lists.js +429 -0
- package/core/models/menus/components/menu-lists/menu-lists.scss +41 -0
- package/core/models/menus/menus.js +291 -0
- package/core/models/model-columns.js +121 -0
- package/core/models/models/components/model-detail/model-add.js +120 -0
- package/core/models/models/components/model-detail/model-detail.js +133 -0
- package/core/models/models/components/model-detail/model-detail.scss +0 -0
- package/core/models/models/models.js +154 -0
- package/core/models/pages/components/page-add/page-add.js +163 -0
- package/core/models/pages/components/page-add/page-add.scss +31 -0
- package/core/models/pages/components/page-details/page-details.js +210 -0
- package/core/models/pages/components/page-list/page-list.js +248 -0
- package/core/models/pages/pages.js +142 -0
- package/core/models/pages/pages.scss +0 -0
- package/core/models/pages.js +142 -0
- package/core/models/roles/components/role-add/role-add.js +248 -0
- package/core/models/roles/components/role-list/role-list.js +408 -0
- package/core/models/roles/roles.js +188 -0
- package/core/models/user-roles/components/user-roles-add/user-roles-add.js +149 -0
- package/core/models/user-roles/components/user-roles-add/user-roles-add.scss +0 -0
- package/core/models/user-roles/user-roles.js +99 -0
- package/core/models/users/components/user-add/user-add.js +458 -0
- package/core/models/users/components/user-detail/user-detail.js +236 -0
- package/core/models/users/components/user-detail/user-detail.scss +0 -0
- package/core/models/users/components/user-list/user-list.js +397 -0
- package/core/models/users/users.js +185 -0
- package/core/modules/Informations/change-info/change-info.js +618 -0
- package/core/modules/Informations/change-info/change-info.scss +135 -0
- package/core/modules/dashboard/components/dashboard-card/animations.js +65 -0
- package/core/modules/dashboard/components/dashboard-card/dashboard-card.js +197 -0
- package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.js +430 -0
- package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.scss +60 -0
- package/core/modules/dashboard/components/pop-query-dashboard/pop-query-dashboard.js +66 -0
- package/core/modules/generic/components/generic-add/generic-add.js +121 -0
- package/core/modules/generic/components/generic-add/generic-add.scss +13 -0
- package/core/modules/generic/components/generic-add-modal/generic-add-modal.js +125 -0
- package/core/modules/generic/components/generic-add-modal/generic-add-modal.scss +13 -0
- package/core/modules/generic/components/generic-detail/generic-detail.js +184 -0
- package/core/modules/generic/components/generic-detail/generic-detail.scss +25 -0
- package/core/modules/generic/components/generic-edit/generic-edit.js +123 -0
- package/core/modules/generic/components/generic-edit/generic-edit.scss +0 -0
- package/core/modules/generic/components/generic-list/generic-list.js +335 -0
- package/core/modules/generic/components/generic-list/generic-list.scss +35 -0
- package/core/modules/index.js +54 -0
- package/core/modules/module-routes/module-routes.js +37 -0
- package/core/modules/module-routes/module-routes.scss +0 -0
- package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.js +1101 -0
- package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.scss +171 -0
- package/core/pages/homepage-api/homepage-api.js +106 -0
- package/core/pages/homepage-api/homepage-api.scss +234 -0
- package/core/pages/homepage-api/menu-dashboard.js +169 -0
- package/core/pages/homepage-api/menu-dashboard.scss +12 -0
- package/core/translation.json +54 -0
- package/core/translations.json +20 -0
- package/core/utils/script.utils.js +130 -0
- package/core/utils/settings.utils.js +26 -0
- package/eslint.config.mjs +79 -0
- package/index.js +36 -0
- package/package.json +118 -0
- package/tsconfig.json +27 -0
- package/webpack.config.js +174 -0
|
File without changes
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (New) Hook groups all functionalities that needs to be implemented for form
|
|
3
|
+
*
|
|
4
|
+
*
|
|
5
|
+
* All the forms in the projects extending/using formUtils has superpowers to control its
|
|
6
|
+
* behavior with class for controlling , visibility , mandate, validation ,
|
|
7
|
+
* and change
|
|
8
|
+
*
|
|
9
|
+
* @description useFormUtils hook for controlling any form and extending it
|
|
10
|
+
* @author Ashique Mohammed
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { useState, useEffect } from 'react';
|
|
15
|
+
|
|
16
|
+
//
|
|
17
|
+
import { prepareAndExecuteScript } from '../script.utils';
|
|
18
|
+
|
|
19
|
+
let n = 1;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
*
|
|
23
|
+
* @param {*} form
|
|
24
|
+
* @param {*} formSettings
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
const useFormUtils = (form, formSettings,preference) => {
|
|
28
|
+
|
|
29
|
+
let [config, setConfig] = useState({ fields: {}, add_on_fields: [] });
|
|
30
|
+
|
|
31
|
+
const [formData, setFormData] = useState({});
|
|
32
|
+
|
|
33
|
+
const [onChangeListeners, setOnChangeListeners] = useState({});
|
|
34
|
+
|
|
35
|
+
console.log('pre',preference);
|
|
36
|
+
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
setFormData({ ...form.getFieldsValue() });
|
|
39
|
+
}, [form]);
|
|
40
|
+
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
|
|
43
|
+
// With the settings received as input we have to initialize the configuration
|
|
44
|
+
// to prepare for use in the form
|
|
45
|
+
initializeConfiguration();
|
|
46
|
+
|
|
47
|
+
return () => {
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
}, [])
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Takes the preference from local storage and creates the object
|
|
54
|
+
*/
|
|
55
|
+
function initializeConfiguration() {
|
|
56
|
+
|
|
57
|
+
let preferences = { fields: [] };
|
|
58
|
+
|
|
59
|
+
// if (localStorage.preferences && JSON.parse(localStorage.preferences)) {
|
|
60
|
+
|
|
61
|
+
// preferences = JSON.parse(localStorage.preferences);
|
|
62
|
+
// }
|
|
63
|
+
|
|
64
|
+
// let activePreference = preferences;
|
|
65
|
+
|
|
66
|
+
// We iterate the default form settings to specifiy the field configuration
|
|
67
|
+
// for each field.
|
|
68
|
+
|
|
69
|
+
config = prepareFields({ formSettings, preference, config, index: 'fields' });
|
|
70
|
+
|
|
71
|
+
// formSettings.fields.forEach((field) => {
|
|
72
|
+
|
|
73
|
+
// // We default the field setting from the default setting
|
|
74
|
+
// config.fields[field.field] = field;
|
|
75
|
+
|
|
76
|
+
// // We check if there is any change in the field
|
|
77
|
+
// activePreference.fields.forEach((item) => {
|
|
78
|
+
|
|
79
|
+
// if (field.field === item.field) {
|
|
80
|
+
|
|
81
|
+
// config.fields[field.field] = item;
|
|
82
|
+
// }
|
|
83
|
+
|
|
84
|
+
// });
|
|
85
|
+
// })
|
|
86
|
+
|
|
87
|
+
// If there are add on fields
|
|
88
|
+
// prepareFields(formSettings, activePreference, config);
|
|
89
|
+
|
|
90
|
+
if (preference.add_on_fields) {
|
|
91
|
+
|
|
92
|
+
config['add_on_fields'] = {};
|
|
93
|
+
|
|
94
|
+
try {
|
|
95
|
+
|
|
96
|
+
preference['add_on_fields'].forEach((item) => {
|
|
97
|
+
|
|
98
|
+
config['add_on_fields'][item.field] = item;
|
|
99
|
+
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
} catch (error) {
|
|
103
|
+
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
setConfig({ ...config });
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* For the index specified , we have to consider the local storage settings
|
|
112
|
+
* over the default settings to build the config object that is used in the form
|
|
113
|
+
*
|
|
114
|
+
* @param {*} formSettings
|
|
115
|
+
* @param {*} activePreference
|
|
116
|
+
* @param {*} config
|
|
117
|
+
*/
|
|
118
|
+
function prepareFields({ formSettings, preference, config, index }) {
|
|
119
|
+
|
|
120
|
+
formSettings[index].forEach((field) => {
|
|
121
|
+
|
|
122
|
+
// We default the field setting from the default setting
|
|
123
|
+
config[index][field.field] = field;
|
|
124
|
+
|
|
125
|
+
// We check if there is any change in the field
|
|
126
|
+
// config = considerPreferenceFields({ field, activePreference, config, index })
|
|
127
|
+
preference[index].forEach((item) => {
|
|
128
|
+
|
|
129
|
+
if (field.field === item.field) {
|
|
130
|
+
|
|
131
|
+
config[index][field.field] = item;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
});
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
return config;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
*
|
|
142
|
+
* @param {*} formSettings
|
|
143
|
+
* @param {*} activePreference
|
|
144
|
+
* @param {*} config
|
|
145
|
+
* @param {*} index
|
|
146
|
+
*/
|
|
147
|
+
function considerPreferenceFields({ field, activePreference, config, index }) {
|
|
148
|
+
|
|
149
|
+
activePreference[index].forEach((item) => {
|
|
150
|
+
|
|
151
|
+
if (field.field === item.field) {
|
|
152
|
+
|
|
153
|
+
config[index][field.field] = item;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
return config;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* On change listener
|
|
163
|
+
*
|
|
164
|
+
* @param {*} key
|
|
165
|
+
* @param {*} column
|
|
166
|
+
*/
|
|
167
|
+
const onChange = async ({ field, fieldConfiguration, values: initialValues }) => {
|
|
168
|
+
|
|
169
|
+
// On change script
|
|
170
|
+
let { onChangeScript: script } = fieldConfiguration;
|
|
171
|
+
// form.registerField(column, {
|
|
172
|
+
// setValue: form.setFieldsValue,
|
|
173
|
+
// getValue: form.getFieldValue,
|
|
174
|
+
// });
|
|
175
|
+
// setOnChangeListeners({
|
|
176
|
+
// ...onChangeListeners,
|
|
177
|
+
// [column]: callback,
|
|
178
|
+
// });
|
|
179
|
+
|
|
180
|
+
// If there is a script assigned the field ,
|
|
181
|
+
// we have to execute the script
|
|
182
|
+
if (script) {
|
|
183
|
+
|
|
184
|
+
// Before Submit of form , execute the script
|
|
185
|
+
let values = await prepareAndExecuteScript({
|
|
186
|
+
field,
|
|
187
|
+
script,
|
|
188
|
+
values: initialValues,
|
|
189
|
+
|
|
190
|
+
// We build a new object
|
|
191
|
+
// that needs to be used within the code editor
|
|
192
|
+
// we can
|
|
193
|
+
formUtils: {
|
|
194
|
+
setVisible,
|
|
195
|
+
setRequired
|
|
196
|
+
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
console.log(values);
|
|
201
|
+
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Function controls the visibilty
|
|
207
|
+
* of a column
|
|
208
|
+
*
|
|
209
|
+
* @param {*} column
|
|
210
|
+
* @param {*} visibility
|
|
211
|
+
*/
|
|
212
|
+
const setVisible = (column, visibility) => {
|
|
213
|
+
|
|
214
|
+
console.log(column, visibility);
|
|
215
|
+
|
|
216
|
+
// Toggle the visiblity of the column
|
|
217
|
+
config.fields[column].visible = visibility;
|
|
218
|
+
|
|
219
|
+
form.setFields([{ name: column, visible: visibility }]);
|
|
220
|
+
|
|
221
|
+
setConfig({
|
|
222
|
+
...config,
|
|
223
|
+
updated: ++n
|
|
224
|
+
})
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Function controls the visibilty
|
|
229
|
+
* of a column
|
|
230
|
+
*
|
|
231
|
+
* @param {*} column
|
|
232
|
+
* @param {*} visibility
|
|
233
|
+
*/
|
|
234
|
+
const setRequired = (column, required) => {
|
|
235
|
+
|
|
236
|
+
// Toggle the visiblity of the column
|
|
237
|
+
config.fields[column].required = required;
|
|
238
|
+
|
|
239
|
+
// form.setFields([{ name: column, visible: visibility }]);
|
|
240
|
+
|
|
241
|
+
setConfig({
|
|
242
|
+
...config,
|
|
243
|
+
updated: ++n
|
|
244
|
+
})
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
return {
|
|
248
|
+
config,
|
|
249
|
+
formData,
|
|
250
|
+
onChange,
|
|
251
|
+
setVisible,
|
|
252
|
+
setRequired
|
|
253
|
+
};
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
export default useFormUtils;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @param {*} records
|
|
12
|
+
* @param {*} columns
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
export function getExportData(records, exportDataColumns) {
|
|
16
|
+
|
|
17
|
+
let filteredColumns = exportDataColumns.filter((col) => !col.disableExport)
|
|
18
|
+
|
|
19
|
+
// Preparing headers for data exporting
|
|
20
|
+
let exportDataHeaders = filteredColumns.map((data) => {
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
...data,
|
|
24
|
+
key: data.key,
|
|
25
|
+
label: data.title
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
// Iterate each record and map with the columns
|
|
31
|
+
const response = records.map((row, columnIndex) => {
|
|
32
|
+
|
|
33
|
+
let entry = {
|
|
34
|
+
'Sl No': columnIndex + 1
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
filteredColumns.forEach((column, indexValue) => {
|
|
38
|
+
|
|
39
|
+
// Data Index / Field
|
|
40
|
+
if (column.exportDefinition) {
|
|
41
|
+
|
|
42
|
+
entry[column.key] = column.exportDefinition(row, indexValue, columnIndex);
|
|
43
|
+
|
|
44
|
+
} else if (column.render) {
|
|
45
|
+
|
|
46
|
+
entry[column.key] = column.render(row, indexValue, columnIndex);
|
|
47
|
+
|
|
48
|
+
} else if (column.dataIndex) {
|
|
49
|
+
|
|
50
|
+
entry[column.key] = row[column.dataIndex];
|
|
51
|
+
|
|
52
|
+
} else if (column.field) {
|
|
53
|
+
|
|
54
|
+
entry[column.key] = row[column.field];
|
|
55
|
+
|
|
56
|
+
} else {
|
|
57
|
+
|
|
58
|
+
entry[column.key] = row[column.field];
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
return entry;
|
|
64
|
+
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
return { exportDataColumns: response, exportDataHeaders }
|
|
68
|
+
|
|
69
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Location } from '../location/location.utils';
|
|
2
|
+
|
|
3
|
+
let refreshTokenPromise = null; // Holds the ongoing token refresh promise
|
|
4
|
+
let pendingRequests = []; // Array to store requests waiting for the new token
|
|
5
|
+
const MAX_PENDING_REQUESTS = 20; // Maximum number of requests allowed in the queue
|
|
6
|
+
|
|
7
|
+
// Get the current access token from localStorage
|
|
8
|
+
export const getAccessToken = () => localStorage.getItem('access_token');
|
|
9
|
+
|
|
10
|
+
// Get the current refresh token from localStorage
|
|
11
|
+
export const getRefreshToken = () => localStorage.getItem('refresh_token');
|
|
12
|
+
|
|
13
|
+
// Set a new access token in localStorage
|
|
14
|
+
export const setAccessToken = (token) => token && localStorage.setItem('access_token', token);
|
|
15
|
+
|
|
16
|
+
// Set a new refresh token in localStorage
|
|
17
|
+
export const setRefreshToken = (token) => token && localStorage.setItem('refresh_token', token);
|
|
18
|
+
|
|
19
|
+
// Clear both access and refresh tokens from localStorage
|
|
20
|
+
export const clearAuthTokens = () => {
|
|
21
|
+
localStorage.removeItem('access_token');
|
|
22
|
+
localStorage.removeItem('refresh_token');
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// Queue a request to be retried after token refresh
|
|
26
|
+
export const queueRequest = (cb) =>
|
|
27
|
+
new Promise((resolve, reject) => {
|
|
28
|
+
// Reject if too many requests are already queued
|
|
29
|
+
if (pendingRequests.length >= MAX_PENDING_REQUESTS) {
|
|
30
|
+
reject(new Error('Too many requests waiting for token refresh'));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Add the request to the pending requests array
|
|
35
|
+
pendingRequests.push({ cb, resolve, reject });
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Retry all queued requests with the new access token
|
|
39
|
+
const retryQueuedRequests = (newToken) => {
|
|
40
|
+
pendingRequests.forEach(({ cb, resolve, reject }) => {
|
|
41
|
+
cb(newToken).then(resolve).catch(reject); // Retry each request
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// Clear the queue after retrying all requests
|
|
45
|
+
pendingRequests = [];
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export const refreshAccessToken = () => {
|
|
49
|
+
// If a refresh is already in progress, return the same promise
|
|
50
|
+
if (refreshTokenPromise) {
|
|
51
|
+
return refreshTokenPromise;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const refreshToken = getRefreshToken();
|
|
55
|
+
|
|
56
|
+
refreshTokenPromise = new Promise(async (resolve, reject) => {
|
|
57
|
+
try {
|
|
58
|
+
const response = await fetch(`${process.env.REACT_APP_endpoint}auth/refresh`, {
|
|
59
|
+
method: 'POST',
|
|
60
|
+
headers: {
|
|
61
|
+
'Content-Type': 'application/json',
|
|
62
|
+
db_ptr: localStorage.getItem('db_ptr'),
|
|
63
|
+
},
|
|
64
|
+
body: JSON.stringify({ refreshToken }),
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const data = await response.json();
|
|
68
|
+
|
|
69
|
+
const { access_token, refresh_token, success } = data || {};
|
|
70
|
+
|
|
71
|
+
if (success) {
|
|
72
|
+
// Save the new access token
|
|
73
|
+
setAccessToken(access_token);
|
|
74
|
+
// Save the new refresh token
|
|
75
|
+
setRefreshToken(refresh_token);
|
|
76
|
+
// Retry all queued requests with the new token
|
|
77
|
+
retryQueuedRequests(access_token);
|
|
78
|
+
// Resolve the promise with the new token
|
|
79
|
+
resolve(access_token);
|
|
80
|
+
} else {
|
|
81
|
+
localStorage.clear();
|
|
82
|
+
Location.navigate({ url: '/login' });
|
|
83
|
+
throw new Error('Token refresh failed');
|
|
84
|
+
}
|
|
85
|
+
} catch (error) {
|
|
86
|
+
pendingRequests.forEach(({ reject }) => reject(error));
|
|
87
|
+
pendingRequests = [];
|
|
88
|
+
reject(error);
|
|
89
|
+
} finally {
|
|
90
|
+
refreshTokenPromise = null;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
return refreshTokenPromise;
|
|
95
|
+
};
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* Final Entry for all the API calls
|
|
4
|
+
*
|
|
5
|
+
* All the common configurations should bypass httpUtils
|
|
6
|
+
* Keep adding additional methods on requirement
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { message } from 'antd';
|
|
11
|
+
|
|
12
|
+
import FirebaseUtils from '../firebase.utils';
|
|
13
|
+
|
|
14
|
+
import { Location } from '../location/location.utils';
|
|
15
|
+
import { getRefreshToken, queueRequest, refreshAccessToken } from './auth.helper';
|
|
16
|
+
|
|
17
|
+
let headers = {
|
|
18
|
+
// 'Accept': 'application/json',
|
|
19
|
+
'Content-Type': 'application/json',
|
|
20
|
+
// 'Cache-Control': 'no-cache',
|
|
21
|
+
// 'X-Apartment-Id': 1,
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Method for Get Call
|
|
26
|
+
*
|
|
27
|
+
* @param {*} param
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export async function GetData({ url, formBody, settings, ...props }) {
|
|
31
|
+
return ApiCall({ url, formBody, method: 'GET', settings, ...props });
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Method posts data to mentioned url
|
|
36
|
+
*
|
|
37
|
+
* @param {*} param
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
export async function PostData({ url, formBody, ...props }) {
|
|
41
|
+
return ApiCall({ url, formBody, method: 'POST', returnResponse: true, ...props });
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Method for update the data
|
|
46
|
+
* @public
|
|
47
|
+
*/
|
|
48
|
+
export async function PutData({ url, formBody, ...props }) {
|
|
49
|
+
return ApiCall({ url, formBody, method: 'PUT', returnResponse: true, ...props });
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Method for update the data
|
|
54
|
+
* @public
|
|
55
|
+
*/
|
|
56
|
+
export async function PatchData({ url, formBody, ...props }) {
|
|
57
|
+
return ApiCall({ url, formBody, method: 'PATCH', returnResponse: true, ...props });
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Method for update the data
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
64
|
+
export async function DeleteData({ url, ...props }) {
|
|
65
|
+
return ApiCall({ url, method: 'DELETE', returnResponse: true, ...props });
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Final Exit for API call
|
|
70
|
+
*
|
|
71
|
+
* @param {*} param
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
export async function ApiCall({ url, formBody, method, settings, ...props }) {
|
|
75
|
+
const token = props.token || (await settings.getToken());
|
|
76
|
+
const path = window.location.pathname;
|
|
77
|
+
const baseUrl = props.baseUrl || process.env.REACT_APP_endpoint;
|
|
78
|
+
|
|
79
|
+
const payload = {
|
|
80
|
+
method,
|
|
81
|
+
headers: {
|
|
82
|
+
...settings.headers,
|
|
83
|
+
...headers,
|
|
84
|
+
...(props.headers || {}),
|
|
85
|
+
Authorization: `Bearer ${token}`,
|
|
86
|
+
'Content-Type': 'application/json',
|
|
87
|
+
},
|
|
88
|
+
body: formBody ? JSON.stringify(formBody) : null,
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// 🟡 Handles both normal and retried responses
|
|
92
|
+
const handleResponse = async (res) => {
|
|
93
|
+
if (props.responseType === 'blob') {
|
|
94
|
+
const blob = await res.blob();
|
|
95
|
+
return {
|
|
96
|
+
contentType: res.headers.get('Content-Type'),
|
|
97
|
+
raw: blob,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const json = await res.json();
|
|
102
|
+
|
|
103
|
+
if ([400, 404].includes(res.status) || [400, 500, 501].includes(json?.statusCode)) {
|
|
104
|
+
if (!props.hideError) {
|
|
105
|
+
message.error(json.message || 'Request failed');
|
|
106
|
+
}
|
|
107
|
+
throw json;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return json;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// 🟢 Main function with retry logic
|
|
114
|
+
const makeRequest = async () => {
|
|
115
|
+
const res = await fetch(baseUrl + url, payload);
|
|
116
|
+
const refreshToken = getRefreshToken();
|
|
117
|
+
|
|
118
|
+
if (res.status === 403) {
|
|
119
|
+
message.warn('Your license has expired. Please contact support.');
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (res.status === 401 && path !== '/login' && refreshToken) {
|
|
123
|
+
const retryPromise = queueRequest(async (newToken) => {
|
|
124
|
+
payload.headers = {
|
|
125
|
+
...payload.headers,
|
|
126
|
+
Authorization: `Bearer ${newToken}`,
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
const retryRes = await fetch(baseUrl + url, payload);
|
|
130
|
+
|
|
131
|
+
if (retryRes.status === 401) {
|
|
132
|
+
Location.navigate({ url: '/login' });
|
|
133
|
+
throw new Error('Unauthorized after token refresh');
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// ✅ return parsed JSON
|
|
137
|
+
return handleResponse(retryRes);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// 🔁 triggers queued requests
|
|
141
|
+
refreshAccessToken();
|
|
142
|
+
// ✅ resolve to retried final data
|
|
143
|
+
return retryPromise;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// ✅ normal (non-401) case
|
|
147
|
+
return handleResponse(res);
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
try {
|
|
151
|
+
const result = await makeRequest();
|
|
152
|
+
// ✅ always return final result
|
|
153
|
+
return result;
|
|
154
|
+
} catch (err) {
|
|
155
|
+
console.error('Login error -->', err?.message);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
## Usage
|
|
2
|
+
|
|
3
|
+
HTTP Utils is a JavaScript library for making HTTP requests. It provides a set of functions for making GET, POST, PUT, and DELETE requests, as well as for handling errors and parsing response data.
|
|
4
|
+
|
|
5
|
+
To use HTTP Utils in your JavaScript code, you need to require it:
|
|
6
|
+
|
|
7
|
+
### HTTP Requests
|
|
8
|
+
|
|
9
|
+
The following functions are available for making HTTP requests:
|
|
10
|
+
|
|
11
|
+
● get(url, params): Sends a GET request to the specified url with the given params. Returns a Promise that resolves with the response data.<br>
|
|
12
|
+
● post(url, data): Sends a POST request to the specified url with the given data. Returns a Promise that resolves with the response data.<br>
|
|
13
|
+
● put(url, data): Sends a PUT request to the specified url with the given data. Returns a Promise that resolves with the response data.<br>
|
|
14
|
+
● del(url): Sends a DELETE request to the specified url. Returns a Promise that resolves with the response data.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import { Location } from './location/location.utils'
|
|
4
|
+
|
|
5
|
+
import Notification from './notification.utils';
|
|
6
|
+
|
|
7
|
+
import DateUtils from './date/date.utils'
|
|
8
|
+
|
|
9
|
+
import ApiUtils from './api/api.utils';
|
|
10
|
+
|
|
11
|
+
import FormUtils from './form/form.utils';
|
|
12
|
+
|
|
13
|
+
import { UploadUtils } from './upload.utils';
|
|
14
|
+
|
|
15
|
+
import { GetData, PostData, PutData, DeleteData } from './http/http.utils';
|
|
16
|
+
|
|
17
|
+
import { getExportData } from './generic/generic.utils';
|
|
18
|
+
|
|
19
|
+
import { ConvertBytesToArray } from './common/common.utils';
|
|
20
|
+
|
|
21
|
+
import SettingsUtil from './setting.utils';
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
export {
|
|
25
|
+
// FirebaseUtils,
|
|
26
|
+
|
|
27
|
+
Notification,
|
|
28
|
+
|
|
29
|
+
Location,
|
|
30
|
+
DateUtils,
|
|
31
|
+
ApiUtils,
|
|
32
|
+
UploadUtils,
|
|
33
|
+
GetData,
|
|
34
|
+
PostData,
|
|
35
|
+
PutData,
|
|
36
|
+
DeleteData,
|
|
37
|
+
|
|
38
|
+
getExportData,
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
// Common Functions
|
|
42
|
+
ConvertBytesToArray,
|
|
43
|
+
|
|
44
|
+
SettingsUtil,
|
|
45
|
+
FormUtils
|
|
46
|
+
}
|