ui-soxo-bootstrap-core 2.6.5 → 2.6.6
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 +8 -8
- package/.github/workflows/npm-publish.yml +33 -33
- package/.husky/pre-commit +11 -11
- package/.prettierrc.json +10 -10
- package/babel.config.js +2 -2
- package/core/components/component-loader/component-loader.js +125 -125
- package/core/components/component-wrapper/component-wrapper.js +121 -121
- package/core/components/external-window/DEVELOPER_GUIDE.md +705 -705
- package/core/components/external-window/external-window.js +236 -236
- package/core/components/external-window/external-window.test.js +80 -80
- package/core/components/extra-info/extra-info-details.js +155 -155
- package/core/components/extra-info/extra-info-details.scss +26 -26
- package/core/components/extra-info/extra-info.js +134 -134
- package/core/components/index.js +20 -20
- package/core/components/landing-api/landing-api.js +492 -492
- package/core/components/landing-api/landing-api.scss +19 -19
- package/core/components/menu-template-api/menu-template-api.js +321 -321
- package/core/components/root-application-api/root-application-api.js +174 -174
- package/core/index.js +13 -13
- package/core/lib/Store.js +365 -365
- package/core/lib/components/application-bootstrap/application-bootstrap.js +115 -115
- package/core/lib/components/approval-form/approval-form.js +280 -280
- package/core/lib/components/approval-form/approval-form.scss +183 -183
- package/core/lib/components/approval-list/approval-list.js +143 -143
- package/core/lib/components/approval-list/approval-list.scss +2 -2
- package/core/lib/components/approval-list/components/request-card/request-card.js +42 -42
- package/core/lib/components/approval-list/components/request-card/request-card.scss +30 -30
- package/core/lib/components/camera/camera.js +230 -230
- package/core/lib/components/camera/camera.scss +86 -86
- package/core/lib/components/comment-block/comment-block.js +138 -138
- package/core/lib/components/comment-block/comment-block.scss +3 -3
- package/core/lib/components/confirm-modal/confirm-modal.js +82 -82
- package/core/lib/components/confirm-modal/confirm-modal.scss +2 -2
- package/core/lib/components/consent/consent.js +67 -67
- package/core/lib/components/consent/pdf-signature.js +299 -299
- package/core/lib/components/consent/signature-pad.js +90 -90
- package/core/lib/components/consent/signature-pad.scss +14 -14
- package/core/lib/components/file-upload/file-upload.js +133 -133
- package/core/lib/components/finger-print-reader/finger-print-reader.js +295 -295
- package/core/lib/components/finger-print-reader/finger-print-reader.scss +47 -47
- package/core/lib/components/finger-print-search/finger-print-search.js +200 -200
- package/core/lib/components/finger-print-search/finger-print-search.scss +47 -47
- package/core/lib/components/global-header/animations.js +18 -18
- package/core/lib/components/global-header/global-header.js +413 -413
- package/core/lib/components/global-header/global-header.scss +369 -369
- package/core/lib/components/header/generic-header.js +76 -76
- package/core/lib/components/header/generic-header.scss +99 -99
- package/core/lib/components/image-preview/image-preview.js +33 -33
- package/core/lib/components/image-wrapper/image-wrapper.js +108 -108
- package/core/lib/components/image-wrapper/image-wrapper.scss +12 -12
- package/core/lib/components/index.js +206 -206
- package/core/lib/components/landing/landing.js +403 -403
- package/core/lib/components/language-switcher/language-switcher.js +49 -49
- package/core/lib/components/menu-context/menu-context.js +69 -69
- package/core/lib/components/menu-template/menu-template.js +249 -249
- package/core/lib/components/menu-template/menu-template.scss +9 -9
- package/core/lib/components/modal-search/modal-search.js +153 -153
- package/core/lib/components/modal-search/modal-search.scss +78 -78
- package/core/lib/components/modal-wrapper/modal-manager.js +15 -15
- package/core/lib/components/modal-wrapper/modal-wrapper.js +108 -108
- package/core/lib/components/modal-wrapper/modal-wrapper.scss +13 -13
- package/core/lib/components/notice-board/notice-board.js +132 -132
- package/core/lib/components/notice-board/notice-board.scss +65 -65
- package/core/lib/components/page-container/page-container.js +55 -55
- package/core/lib/components/page-container/page-container.scss +8 -8
- package/core/lib/components/page-header/page-header.js +23 -23
- package/core/lib/components/page-header/page-header.scss +17 -17
- package/core/lib/components/pdf-viewer/pdf-viewer.js +56 -56
- package/core/lib/components/portlet-table/components/table-actions/table-actions.js +58 -58
- package/core/lib/components/portlet-table/components/table-actions/table-actions.scss +1 -1
- package/core/lib/components/portlet-table/components/table-data/table-data.js +106 -106
- package/core/lib/components/portlet-table/portlet-table.js +63 -63
- package/core/lib/components/portlet-table/portlet-table.scss +90 -90
- package/core/lib/components/progress-bar/progress-bar.js +58 -58
- package/core/lib/components/progress-bar/progress-bar.scss +15 -15
- package/core/lib/components/request-form/request-form.js +110 -110
- package/core/lib/components/root-application/root-application.js +70 -70
- package/core/lib/components/rupee/rupee.js +14 -14
- package/core/lib/components/script-input/script-input.js +169 -169
- package/core/lib/components/script-input/script-input.scss +8 -8
- package/core/lib/components/sidemenu/animations.js +51 -51
- package/core/lib/components/sidemenu/sidemenu.js +578 -578
- package/core/lib/components/sidemenu/sidemenu.scss +277 -277
- package/core/lib/components/spotlight-search/spotlight-search.component.js +635 -635
- package/core/lib/components/spotlight-search/spotlight-search.component.scss +78 -78
- package/core/lib/components/table-wrapper/table-wrapper.js +135 -135
- package/core/lib/components/table-wrapper/table-wrapper.scss +72 -72
- package/core/lib/components/ui_elements/Loader.js +12 -12
- package/core/lib/components/ui_elements/Notify.js +12 -12
- package/core/lib/components/ui_elements/PlaceHolder.js +33 -33
- package/core/lib/components/web-camera/web-camera.js +161 -161
- package/core/lib/components/web-camera/web-camera.scss +28 -28
- package/core/lib/core.md +9 -9
- package/core/lib/elements/Elements.md +2 -2
- package/core/lib/elements/basic/LoggedUserRedirect.js +21 -21
- package/core/lib/elements/basic/PrivateRoute.js +16 -16
- package/core/lib/elements/basic/button/Button.md +43 -43
- package/core/lib/elements/basic/button/button.js +170 -170
- package/core/lib/elements/basic/card/Card.md +15 -15
- package/core/lib/elements/basic/card/card.js +40 -40
- package/core/lib/elements/basic/card/card.scss +13 -13
- package/core/lib/elements/basic/checkbox/checkbox.js +23 -23
- package/core/lib/elements/basic/col/col.js +15 -15
- package/core/lib/elements/basic/copy-to-clipboard/Readme.md +40 -40
- package/core/lib/elements/basic/copy-to-clipboard/copy-to-clipboard.js +61 -61
- package/core/lib/elements/basic/country-phone-input/Readme.md +98 -98
- package/core/lib/elements/basic/country-phone-input/country-phone-input.js +106 -106
- package/core/lib/elements/basic/country-phone-input/phone-input.scss +61 -61
- package/core/lib/elements/basic/datepicker/datepicker.js +33 -33
- package/core/lib/elements/basic/dragabble-wrapper/draggable-wrapper.js +136 -136
- package/core/lib/elements/basic/empty/empty.js +14 -14
- package/core/lib/elements/basic/fingerprint-protrected/fingerprint-protected.js +118 -118
- package/core/lib/elements/basic/fingerprint-protrected/fingerprint-protected.scss +10 -10
- package/core/lib/elements/basic/form/form.js +70 -70
- package/core/lib/elements/basic/form/form.scss +3 -3
- package/core/lib/elements/basic/image/image.js +45 -45
- package/core/lib/elements/basic/image/image.scss +17 -17
- package/core/lib/elements/basic/image/readme.md +26 -26
- package/core/lib/elements/basic/image-viewer/image-viewer.js +108 -108
- package/core/lib/elements/basic/image-viewer/image-viewer.scss +7 -7
- package/core/lib/elements/basic/input/input.js +81 -81
- package/core/lib/elements/basic/input/readme.md +77 -77
- package/core/lib/elements/basic/json-input/json-input.js +51 -51
- package/core/lib/elements/basic/menu-dashboard/menu-dashboard.js +216 -216
- package/core/lib/elements/basic/menu-dashboard/menu-dashboard.scss +28 -28
- package/core/lib/elements/basic/menu-tree/menu-tree.js +114 -114
- package/core/lib/elements/basic/modal/modal.js +64 -64
- package/core/lib/elements/basic/modal/readme.md +62 -62
- package/core/lib/elements/basic/popconfirm/popconfirm.js +17 -17
- package/core/lib/elements/basic/popover/popover.js +12 -12
- package/core/lib/elements/basic/radio/radio.js +18 -18
- package/core/lib/elements/basic/rangepicker/rangepicker.js +141 -141
- package/core/lib/elements/basic/rangepicker/rangepicker.scss +24 -24
- package/core/lib/elements/basic/rangepicker/readme.md +81 -81
- package/core/lib/elements/basic/reference-select/readme.md +18 -18
- package/core/lib/elements/basic/reference-select/reference-select.js +337 -337
- package/core/lib/elements/basic/row/row.js +15 -15
- package/core/lib/elements/basic/select/select.js +46 -46
- package/core/lib/elements/basic/select-box/readme.md +52 -52
- package/core/lib/elements/basic/select-box/select-box.js +63 -63
- package/core/lib/elements/basic/skeleton/readme.md +35 -35
- package/core/lib/elements/basic/skeleton/skeleton.js +35 -35
- package/core/lib/elements/basic/skeleton/skeleton.scss +53 -53
- package/core/lib/elements/basic/space/space.js +12 -12
- package/core/lib/elements/basic/switch/readme.md +29 -29
- package/core/lib/elements/basic/switch/switch.js +67 -67
- package/core/lib/elements/basic/tab/tab.js +14 -14
- package/core/lib/elements/basic/table/readme.md +8 -8
- package/core/lib/elements/basic/table/table.js +100 -100
- package/core/lib/elements/basic/tag/tag.js +63 -63
- package/core/lib/elements/basic/tag/tag.scss +2 -2
- package/core/lib/elements/basic/timeline/timeline.js +13 -13
- package/core/lib/elements/basic/title/readme.md +20 -20
- package/core/lib/elements/basic/title/title.js +37 -37
- package/core/lib/elements/basic/user-search/user-search.js +192 -192
- package/core/lib/elements/complex/barcode/barcode.js +27 -27
- package/core/lib/elements/complex/bargraph/bar-graph.js +262 -262
- package/core/lib/elements/complex/basic-table/basic-table.js +110 -110
- package/core/lib/elements/complex/basic-table/basic-table.scss +4 -4
- package/core/lib/elements/complex/date-display/date-display.js +37 -37
- package/core/lib/elements/complex/error-boundary/error-boundary.js +29 -29
- package/core/lib/elements/complex/google-location-input/map-container-library-load.js +92 -92
- package/core/lib/elements/complex/google-map/google-map.js +230 -230
- package/core/lib/elements/complex/google-map/google-map.scss +13 -13
- package/core/lib/elements/complex/line-graph/line-graph.js +108 -108
- package/core/lib/elements/complex/location-search-input/location-search-input.js +100 -100
- package/core/lib/elements/complex/pie-chart/pie-chart.js +202 -202
- package/core/lib/elements/complex/qr-code/qr-code.js +27 -27
- package/core/lib/elements/complex/qrscanner/qrscanner.js +57 -57
- package/core/lib/elements/complex/search-debounce/search-debounce.js +37 -37
- package/core/lib/elements/complex/statistic-card/dashboard-statistic-card.js +75 -75
- package/core/lib/elements/complex/statistic-card/statistic-card.js +28 -28
- package/core/lib/elements/index.js +226 -226
- package/core/lib/hooks/device-detect.js +25 -25
- package/core/lib/hooks/index.js +9 -9
- package/core/lib/hooks/use-location.js +33 -33
- package/core/lib/hooks/use-otp-timer.js +80 -80
- package/core/lib/hooks/use-window-size.js +34 -34
- package/core/lib/i18n.js +69 -69
- package/core/lib/index.js +106 -106
- package/core/lib/introduction.md +73 -73
- package/core/lib/js-styleguide.md +4112 -4112
- package/core/lib/models/actions/actions.js +127 -127
- package/core/lib/models/actions/components/action-detail/action-detail.js +190 -190
- package/core/lib/models/actions/components/custom-actions/custom-actions.js +185 -185
- package/core/lib/models/attachments/attachments.js +231 -231
- package/core/lib/models/base-loader.js +99 -99
- package/core/lib/models/base.js +716 -716
- package/core/lib/models/branches/branches.js +125 -125
- package/core/lib/models/checklists/checklists.js +114 -114
- package/core/lib/models/columns/columns.js +169 -169
- package/core/lib/models/columns/components/columns-add/columns-add.js +171 -171
- package/core/lib/models/comments/comments.js +213 -213
- package/core/lib/models/departments/departments.js +107 -107
- package/core/lib/models/financial-years/financial_years.js +127 -127
- package/core/lib/models/forms/components/form-creator/form-creator.js +624 -624
- package/core/lib/models/forms/components/form-creator/form-creator.scss +30 -29
- package/core/lib/models/forms/components/form-detail/form-detail.js +224 -224
- package/core/lib/models/forms/forms.js +121 -121
- package/core/lib/models/index.js +203 -203
- package/core/lib/models/invoice-numbers/invoice_numbers.js +204 -204
- package/core/lib/models/lookup-types/components/lookup-detail/lookup-detail.js +145 -145
- package/core/lib/models/lookup-types/lookup-types.js +113 -113
- package/core/lib/models/lookup-values/components/lookup-values-add/lookup-values-add.js +126 -126
- package/core/lib/models/lookup-values/lookup-values.js +107 -107
- package/core/lib/models/menu-roles/menu-roles.js +127 -127
- package/core/lib/models/menus/components/menu-add/menu-add.js +228 -228
- package/core/lib/models/menus/components/menu-detail/menu-detail.js +170 -170
- package/core/lib/models/menus/components/menu-list/menu-list.js +593 -593
- package/core/lib/models/menus/components/menu-list/menu-list.scss +5 -5
- package/core/lib/models/menus/components/menu-roles-add/menu-roles-add.js +183 -183
- package/core/lib/models/menus/menus.js +499 -499
- package/core/lib/models/models/components/model-detail/model-detail.js +137 -137
- package/core/lib/models/models/components/models.js +128 -128
- package/core/lib/models/modules/modules.js +204 -204
- package/core/lib/models/outbox/outbox.js +73 -73
- package/core/lib/models/pages/pages.js +107 -107
- package/core/lib/models/permissions/permissions.js +71 -71
- package/core/lib/models/process/components/process-add/process-add.js +181 -181
- package/core/lib/models/process/components/process-dashboard/process-dashboard.js +601 -601
- package/core/lib/models/process/components/process-dashboard/process-dashboard.scss +62 -62
- package/core/lib/models/process/components/process-detail/process-detail.js +140 -140
- package/core/lib/models/process/components/process-timeline/process-timeline.js +139 -139
- package/core/lib/models/process/components/task-detail/task-detail.js +240 -240
- package/core/lib/models/process/components/task-detail/task-detail.scss +27 -27
- package/core/lib/models/process/components/task-form/task-form.js +528 -528
- package/core/lib/models/process/components/task-form/task-form.scss +7 -7
- package/core/lib/models/process/components/task-list/task-list.js +221 -221
- package/core/lib/models/process/components/task-list/task-list.scss +14 -14
- package/core/lib/models/process/components/task-overview/task-overview.js +299 -299
- package/core/lib/models/process/components/task-overview-legacy/task-overview-legacy.js +192 -192
- package/core/lib/models/process/components/task-routes/task-routes.js +45 -45
- package/core/lib/models/process/components/task-status/task-status.js +175 -175
- package/core/lib/models/process/components/task-status/task-status.scss +11 -11
- package/core/lib/models/process/process.js +780 -780
- package/core/lib/models/process-transactions/process-transactions.js +123 -123
- package/core/lib/models/roles/roles.js +106 -106
- package/core/lib/models/scripts/scripts.js +111 -111
- package/core/lib/models/step-transactions/step-transcations.js +147 -147
- package/core/lib/models/steps/components/step-add/step-add.js +261 -261
- package/core/lib/models/steps/components/step-detail/step-detail.js +157 -157
- package/core/lib/models/steps/steps.js +356 -356
- package/core/lib/models/user-preferences/user-preferences.js +83 -83
- package/core/lib/models/users/components/user-add/user-add.js +226 -226
- package/core/lib/models/users/users.js +119 -119
- package/core/lib/modules/business/launch-page/launch-page.js +29 -29
- package/core/lib/modules/business/launch-page/launch-page.scss +5 -5
- package/core/lib/modules/business/slots/slots.js +231 -231
- package/core/lib/modules/business/slots/slots.scss +108 -108
- package/core/lib/modules/forms/components/field-customizer/field-customizer.js +138 -138
- package/core/lib/modules/forms/components/field-selector/field-selector.js +157 -157
- package/core/lib/modules/forms/components/field-selector/field-selector.scss +25 -25
- package/core/lib/modules/forms/components/form-display/form-display.js +203 -203
- package/core/lib/modules/forms/components/form-display/form-display.scss +9 -9
- package/core/lib/modules/forms/components/tab-customizer/tab-customizer.js +124 -124
- package/core/lib/modules/generic/generic-add/generic-add.js +213 -213
- package/core/lib/modules/generic/generic-detail/generic-detail.js +199 -199
- package/core/lib/modules/generic/generic-edit/generic-edit.js +120 -120
- package/core/lib/modules/generic/generic-list/ExportReactCSV.js +62 -62
- package/core/lib/modules/generic/generic-list/generic-list.js +705 -705
- package/core/lib/modules/generic/generic-list/generic-list.scss +34 -34
- package/core/lib/modules/generic/generic-upload/generic-upload.js +483 -483
- package/core/lib/modules/generic/table-settings/table-settings.js +226 -226
- package/core/lib/modules/generic/table-settings/table-settings.scss +37 -37
- package/core/lib/modules/index.js +52 -52
- package/core/lib/modules/modules-routes/module-routes.js +35 -35
- package/core/lib/pages/change-password/change-password.js +201 -201
- package/core/lib/pages/change-password/change-password.scss +73 -73
- package/core/lib/pages/homepage/homepage.js +53 -53
- package/core/lib/pages/index.js +19 -19
- package/core/lib/pages/login/commnication-mode-selection.js +46 -46
- package/core/lib/pages/login/communication-mode-selection.scss +60 -60
- package/core/lib/pages/login/login.js +864 -864
- package/core/lib/pages/login/login.scss +344 -344
- package/core/lib/pages/login/reset-password.js +125 -125
- package/core/lib/pages/login/reset-password.scss +22 -22
- package/core/lib/pages/manage-users/manage-users.js +429 -429
- package/core/lib/pages/manage-users/manage-users.scss +25 -25
- package/core/lib/pages/profile/profile.js +247 -247
- package/core/lib/pages/profile/profile.scss +107 -107
- package/core/lib/pages/profile/theme-config.js +18 -18
- package/core/lib/pages/profile/themes-backup.json +310 -310
- package/core/lib/pages/profile/themes.json +254 -254
- package/core/lib/pages/register/register.js +176 -176
- package/core/lib/pages/register/register.scss +128 -128
- package/core/lib/react-styleguide.md +756 -756
- package/core/lib/utils/api/api.utils.js +211 -211
- package/core/lib/utils/api/readme.md +426 -426
- package/core/lib/utils/async.js +35 -35
- package/core/lib/utils/common/common.utils.js +223 -223
- package/core/lib/utils/common/readme.md +30 -30
- package/core/lib/utils/date/date.utils.js +295 -295
- package/core/lib/utils/date/readme.md +2 -2
- package/core/lib/utils/firebase.support.utils.js +98 -98
- package/core/lib/utils/firebase.utils.js +808 -808
- package/core/lib/utils/form/form.utils.js +255 -255
- package/core/lib/utils/generic/generic.utils.js +69 -69
- package/core/lib/utils/http/auth.helper.js +95 -95
- package/core/lib/utils/http/http.utils.js +158 -158
- package/core/lib/utils/http/readme.md +14 -14
- package/core/lib/utils/index.js +40 -40
- package/core/lib/utils/location/location.utils.js +137 -137
- package/core/lib/utils/location/readme.md +18 -18
- package/core/lib/utils/modal.utils.js +15 -15
- package/core/lib/utils/notification.utils.js +34 -34
- package/core/lib/utils/pwa/pwa.utils.js +88 -88
- package/core/lib/utils/script.utils.js +235 -235
- package/core/lib/utils/setting.utils.js +68 -68
- package/core/lib/utils/upload.utils.js +29 -29
- package/core/models/Preference/Preferences.js +46 -46
- package/core/models/base/base.js +403 -403
- package/core/models/base-clone-loader.js +107 -107
- package/core/models/base-clone.js +187 -187
- package/core/models/base-loader.js +97 -97
- package/core/models/core-scripts/core-scripts.js +150 -150
- package/core/models/dashboard/dashboard.js +201 -201
- package/core/models/detail-loader.js +88 -88
- package/core/models/doctor/components/doctor-add/doctor-add.js +427 -427
- package/core/models/doctor/components/doctor-add/doctor-add.scss +32 -32
- package/core/models/groups.js +82 -82
- package/core/models/index.js +100 -100
- package/core/models/lookup-types/components/lookup-detail/lookup-detail.js +129 -129
- package/core/models/lookup-types/lookup-types.js +96 -96
- package/core/models/lookup-values/components/lookup-values-modal/lookup-values-modal.js +95 -95
- package/core/models/lookup-values/lookup-values.js +92 -92
- package/core/models/menu-roles/components/menu-roles-add/menu-roles-add.js +153 -153
- package/core/models/menu-roles/menu-roles.js +158 -158
- package/core/models/menus/components/menu-add/menu-add.js +288 -288
- package/core/models/menus/components/menu-add/menu-add.scss +31 -31
- package/core/models/menus/components/menu-detail/menu-detail.js +263 -263
- package/core/models/menus/components/menu-list/menu-list.js +392 -392
- package/core/models/menus/components/menu-lists/menu-lists.js +585 -585
- package/core/models/menus/components/menu-lists/menu-lists.scss +46 -46
- package/core/models/menus/menus.js +310 -310
- package/core/models/model-columns.js +121 -121
- package/core/models/models/components/model-detail/model-add.js +120 -120
- package/core/models/models/components/model-detail/model-detail.js +133 -133
- package/core/models/models/models.js +154 -154
- package/core/models/pages/components/page-add/page-add.js +163 -163
- package/core/models/pages/components/page-add/page-add.scss +30 -30
- package/core/models/pages/components/page-details/page-details.js +209 -209
- package/core/models/pages/components/page-list/page-list.js +248 -248
- package/core/models/pages/pages.js +142 -142
- package/core/models/pages.js +142 -142
- package/core/models/roles/components/role-add/role-add.js +312 -312
- package/core/models/roles/components/role-add/role-add.scss +4 -4
- package/core/models/roles/components/role-list/role-list.js +386 -386
- package/core/models/roles/roles.js +196 -196
- package/core/models/staff/components/staff-add/staff-add.js +467 -467
- package/core/models/user-roles/components/user-roles-add/user-roles-add.js +149 -149
- package/core/models/user-roles/user-roles.js +113 -113
- package/core/models/users/components/assign-role/assign-role.js +406 -406
- package/core/models/users/components/assign-role/assign-role.scss +281 -281
- package/core/models/users/components/assign-role/avatar-props.js +45 -45
- package/core/models/users/components/user-add/user-add.js +856 -856
- package/core/models/users/components/user-add/user-edit.js +106 -106
- package/core/models/users/components/user-detail/user-detail.js +236 -236
- package/core/models/users/components/user-list/user-list.js +397 -397
- package/core/models/users/users.js +379 -379
- package/core/modules/Informations/change-info/change-info.js +618 -618
- package/core/modules/Informations/change-info/change-info.scss +134 -134
- package/core/modules/dashboard/components/dashboard-card/animations.js +64 -64
- package/core/modules/dashboard/components/dashboard-card/dashboard-card.js +197 -197
- package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.js +430 -430
- package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.scss +59 -59
- package/core/modules/dashboard/components/pop-query-dashboard/pop-query-dashboard.js +66 -66
- package/core/modules/generic/components/generic-add/generic-add.js +121 -121
- package/core/modules/generic/components/generic-add/generic-add.scss +13 -13
- package/core/modules/generic/components/generic-add-modal/generic-add-modal.js +125 -125
- package/core/modules/generic/components/generic-add-modal/generic-add-modal.scss +13 -13
- package/core/modules/generic/components/generic-detail/generic-detail.js +184 -184
- package/core/modules/generic/components/generic-detail/generic-detail.scss +25 -25
- package/core/modules/generic/components/generic-edit/generic-edit.js +123 -123
- package/core/modules/generic/components/generic-list/generic-list.js +335 -335
- package/core/modules/generic/components/generic-list/generic-list.scss +35 -35
- package/core/modules/index.js +42 -42
- package/core/modules/module-routes/module-routes.js +37 -37
- package/core/modules/reporting/components/index.js +6 -6
- package/core/modules/reporting/components/reporting-dashboard/README.md +316 -0
- package/core/modules/reporting/components/reporting-dashboard/display-columns/build-display-columns.js +74 -0
- package/core/modules/reporting/components/reporting-dashboard/display-columns/build-display-columns.test.js +74 -0
- package/core/modules/reporting/components/reporting-dashboard/display-columns/display-cell-renderer.js +252 -0
- package/core/modules/reporting/components/reporting-dashboard/display-columns/display-cell-renderer.test.js +126 -0
- package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.js +880 -1206
- package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.scss +171 -171
- package/core/modules/steps/action-buttons.js +74 -76
- package/core/modules/steps/action-buttons.scss +44 -15
- package/core/modules/steps/steps.js +348 -346
- package/core/modules/steps/steps.scss +357 -159
- package/core/modules/steps/timeline.js +56 -54
- package/core/pages/homepage-api/homepage-api.js +106 -106
- package/core/pages/homepage-api/homepage-api.scss +233 -233
- package/core/pages/homepage-api/menu-dashboard.js +169 -169
- package/core/pages/homepage-api/menu-dashboard.scss +11 -11
- package/core/translation.json +53 -53
- package/core/translations.json +19 -19
- package/core/utils/script.utils.js +129 -129
- package/core/utils/settings.utils.js +25 -25
- package/eslint.config.mjs +79 -79
- package/index.js +35 -35
- package/jest.config.js +7 -7
- package/jest.setup.js +1 -1
- package/package.json +123 -123
- package/tsconfig.json +26 -26
- package/webpack.config.js +173 -173
|
@@ -1,95 +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
|
-
};
|
|
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
|
+
};
|
|
@@ -1,158 +1,158 @@
|
|
|
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
|
-
throw err;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
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
|
+
throw err;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -1,14 +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.
|
|
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.
|
package/core/lib/utils/index.js
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import { Location } from './location/location.utils';
|
|
2
|
-
|
|
3
|
-
import Notification from './notification.utils';
|
|
4
|
-
|
|
5
|
-
import DateUtils from './date/date.utils';
|
|
6
|
-
|
|
7
|
-
import ApiUtils from './api/api.utils';
|
|
8
|
-
|
|
9
|
-
import FormUtils from './form/form.utils';
|
|
10
|
-
|
|
11
|
-
import { UploadUtils } from './upload.utils';
|
|
12
|
-
|
|
13
|
-
import { GetData, PostData, PutData, DeleteData } from './http/http.utils';
|
|
14
|
-
|
|
15
|
-
import { getExportData } from './generic/generic.utils';
|
|
16
|
-
|
|
17
|
-
import { ConvertBytesToArray, safeJSON } from './common/common.utils';
|
|
18
|
-
|
|
19
|
-
import SettingsUtil from './setting.utils';
|
|
20
|
-
|
|
21
|
-
export {
|
|
22
|
-
// FirebaseUtils,
|
|
23
|
-
|
|
24
|
-
Notification,
|
|
25
|
-
Location,
|
|
26
|
-
DateUtils,
|
|
27
|
-
ApiUtils,
|
|
28
|
-
UploadUtils,
|
|
29
|
-
GetData,
|
|
30
|
-
PostData,
|
|
31
|
-
PutData,
|
|
32
|
-
DeleteData,
|
|
33
|
-
getExportData,
|
|
34
|
-
|
|
35
|
-
// Common Functions
|
|
36
|
-
ConvertBytesToArray,
|
|
37
|
-
SettingsUtil,
|
|
38
|
-
FormUtils,
|
|
39
|
-
safeJSON,
|
|
40
|
-
};
|
|
1
|
+
import { Location } from './location/location.utils';
|
|
2
|
+
|
|
3
|
+
import Notification from './notification.utils';
|
|
4
|
+
|
|
5
|
+
import DateUtils from './date/date.utils';
|
|
6
|
+
|
|
7
|
+
import ApiUtils from './api/api.utils';
|
|
8
|
+
|
|
9
|
+
import FormUtils from './form/form.utils';
|
|
10
|
+
|
|
11
|
+
import { UploadUtils } from './upload.utils';
|
|
12
|
+
|
|
13
|
+
import { GetData, PostData, PutData, DeleteData } from './http/http.utils';
|
|
14
|
+
|
|
15
|
+
import { getExportData } from './generic/generic.utils';
|
|
16
|
+
|
|
17
|
+
import { ConvertBytesToArray, safeJSON } from './common/common.utils';
|
|
18
|
+
|
|
19
|
+
import SettingsUtil from './setting.utils';
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
// FirebaseUtils,
|
|
23
|
+
|
|
24
|
+
Notification,
|
|
25
|
+
Location,
|
|
26
|
+
DateUtils,
|
|
27
|
+
ApiUtils,
|
|
28
|
+
UploadUtils,
|
|
29
|
+
GetData,
|
|
30
|
+
PostData,
|
|
31
|
+
PutData,
|
|
32
|
+
DeleteData,
|
|
33
|
+
getExportData,
|
|
34
|
+
|
|
35
|
+
// Common Functions
|
|
36
|
+
ConvertBytesToArray,
|
|
37
|
+
SettingsUtil,
|
|
38
|
+
FormUtils,
|
|
39
|
+
safeJSON,
|
|
40
|
+
};
|