@wavemaker/react-runtime 11.14.1-15.6409
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/actions/base-action.js +32 -0
- package/actions/login-action.js +53 -0
- package/actions/logout-action.js +41 -0
- package/actions/navigation-action.js +145 -0
- package/actions/notification-action.js +147 -0
- package/actions/timer-action.js +164 -0
- package/actions/toast-provider.js +111 -0
- package/actions/toast.js +115 -0
- package/actions/toast.service.js +94 -0
- package/actions/types/index.js +11 -0
- package/components/advanced/carousel/index.js +456 -0
- package/components/advanced/carousel/props.js +5 -0
- package/components/advanced/carousel/template.js +72 -0
- package/components/advanced/login/index.js +307 -0
- package/components/advanced/login/props.js +5 -0
- package/components/advanced/marquee/index.js +158 -0
- package/components/advanced/marquee/props.js +5 -0
- package/components/basic/anchor/index.js +239 -0
- package/components/basic/anchor/props.js +5 -0
- package/components/basic/audio/index.js +61 -0
- package/components/basic/html/index.js +158 -0
- package/components/basic/icon/index.js +85 -0
- package/components/basic/iframe/iframe.utils.js +10 -0
- package/components/basic/iframe/index.js +95 -0
- package/components/basic/label/index.js +139 -0
- package/components/basic/message/index.js +120 -0
- package/components/basic/message/props.js +5 -0
- package/components/basic/picture/index.js +117 -0
- package/components/basic/picture/props.js +5 -0
- package/components/basic/progress-bar/index.js +168 -0
- package/components/basic/progress-bar/props.js +18 -0
- package/components/basic/progress-circle/index.js +196 -0
- package/components/basic/progress-circle/props.js +16 -0
- package/components/basic/richtexteditor/index.js +533 -0
- package/components/basic/richtexteditor/props.js +5 -0
- package/components/basic/search/index.js +1023 -0
- package/components/basic/search/props.js +5 -0
- package/components/basic/search/providers.js +350 -0
- package/components/basic/spinner/index.js +202 -0
- package/components/basic/spinner/props.js +12 -0
- package/components/basic/tile/index.js +91 -0
- package/components/basic/tree/Components/TreeNodeComponent.js +142 -0
- package/components/basic/tree/index.js +503 -0
- package/components/basic/tree/props.js +5 -0
- package/components/basic/tree/utils.js +154 -0
- package/components/basic/video/index.js +85 -0
- package/components/basic/video/props.js +5 -0
- package/components/chart/components/barColumnChart/index.js +132 -0
- package/components/chart/components/barColumnChart/props.js +5 -0
- package/components/chart/components/bubbleChart/index.js +176 -0
- package/components/chart/components/bubbleChart/props.js +5 -0
- package/components/chart/components/chartLegend/components/ClassicLegendItem.js +39 -0
- package/components/chart/components/chartLegend/components/FuriousLegendItem.js +81 -0
- package/components/chart/components/chartLegend/index.js +69 -0
- package/components/chart/components/chartLegend/props.js +5 -0
- package/components/chart/components/chartLegend/utils.js +31 -0
- package/components/chart/components/chartTooltip/index.js +53 -0
- package/components/chart/components/chartTooltip/styles.js +37 -0
- package/components/chart/components/chartTooltip/utils.js +23 -0
- package/components/chart/components/cumulativeLineChart/index.js +113 -0
- package/components/chart/components/cumulativeLineChart/props.js +5 -0
- package/components/chart/components/cumulativeLineChart/utils.js +34 -0
- package/components/chart/components/index.js +40 -0
- package/components/chart/components/lineAreaChart/index.js +140 -0
- package/components/chart/components/lineAreaChart/props.js +5 -0
- package/components/chart/components/noDataMessage/index.js +27 -0
- package/components/chart/components/pieDonutChart/index.js +171 -0
- package/components/chart/components/pieDonutChart/props.js +5 -0
- package/components/chart/constant.js +72 -0
- package/components/chart/index.js +930 -0
- package/components/chart/props.js +5 -0
- package/components/chart/utils.js +691 -0
- package/components/common/AppSpinner.js +36 -0
- package/components/common/app-spinner.js +26 -0
- package/components/common/index.js +12 -0
- package/components/constants.js +1208 -0
- package/components/container/accordion/accordion-pane/index.js +108 -0
- package/components/container/accordion/accordion-pane/props.js +11 -0
- package/components/container/accordion/index.js +232 -0
- package/components/container/accordion/props.js +13 -0
- package/components/container/alignment-utils.js +183 -0
- package/components/container/index.js +188 -0
- package/components/container/layout-grid/grid-column/index.js +34 -0
- package/components/container/layout-grid/grid-row/index.js +24 -0
- package/components/container/layout-grid/index.js +33 -0
- package/components/container/linear-layout/index.js +72 -0
- package/components/container/linear-layout/linear-layout-item/index.js +43 -0
- package/components/container/panel/components/panel-header/index.js +144 -0
- package/components/container/panel/components/panel-header/props.js +5 -0
- package/components/container/panel/hooks.js +144 -0
- package/components/container/panel/index.js +286 -0
- package/components/container/panel/props.js +5 -0
- package/components/container/props.js +5 -0
- package/components/container/tabs/index.js +379 -0
- package/components/container/tabs/props.js +20 -0
- package/components/container/tabs/tab-pane/index.js +42 -0
- package/components/container/tabs/tab-pane/props.js +5 -0
- package/components/container/wizard/WizardContext.js +16 -0
- package/components/container/wizard/components/StepComponents.js +100 -0
- package/components/container/wizard/components/WizardStep.js +89 -0
- package/components/container/wizard/index.js +710 -0
- package/components/container/wizard/props.js +5 -0
- package/components/container/wizard/utils.js +133 -0
- package/components/container/wizard/wizard-action/index.js +22 -0
- package/components/container/wizard/wizard-step/index.js +94 -0
- package/components/data/card/card-actions/index.js +24 -0
- package/components/data/card/card-content/index.js +38 -0
- package/components/data/card/card-footer/index.js +24 -0
- package/components/data/card/index.js +246 -0
- package/components/data/card/props.js +5 -0
- package/components/data/form/base-form/constant.js +39 -0
- package/components/data/form/base-form/index.js +460 -0
- package/components/data/form/base-form/props.js +29 -0
- package/components/data/form/base-form/utils.js +42 -0
- package/components/data/form/dynamic-fields/index.js +196 -0
- package/components/data/form/dynamic-fields/props.js +5 -0
- package/components/data/form/dynamic-fields/utils.js +237 -0
- package/components/data/form/form-action/index.js +71 -0
- package/components/data/form/form-body/index.js +26 -0
- package/components/data/form/form-context.js +34 -0
- package/components/data/form/form-controller/props.js +19 -0
- package/components/data/form/form-controller/validation-contrustor.js +313 -0
- package/components/data/form/form-controller/withFormController.js +320 -0
- package/components/data/form/form-field/base-field.js +138 -0
- package/components/data/form/form-field/index.js +36 -0
- package/components/data/form/form-field/props.js +5 -0
- package/components/data/form/form-footer/index.js +26 -0
- package/components/data/form/form-header/index.js +56 -0
- package/components/data/form/index.js +39 -0
- package/components/data/form/props.js +5 -0
- package/components/data/list/components/GroupHeader.js +35 -0
- package/components/data/list/components/GroupedListItems.js +98 -0
- package/components/data/list/components/ListContainer.js +27 -0
- package/components/data/list/components/ListDND.js +241 -0
- package/components/data/list/components/ListHeader.js +59 -0
- package/components/data/list/components/ListItem.js +148 -0
- package/components/data/list/components/ListItemWithTemplate.js +59 -0
- package/components/data/list/components/ListItems.js +231 -0
- package/components/data/list/components/ListPagination.js +165 -0
- package/components/data/list/components/LoadMoreButton.js +39 -0
- package/components/data/list/components/NoDataMessage.js +22 -0
- package/components/data/list/components/StandardListItems.js +84 -0
- package/components/data/list/components/index.js +119 -0
- package/components/data/list/components/props.js +5 -0
- package/components/data/list/hooks/index.js +75 -0
- package/components/data/list/hooks/props.js +5 -0
- package/components/data/list/hooks/useCurrentPageItems.js +48 -0
- package/components/data/list/hooks/useGroupedData.js +37 -0
- package/components/data/list/hooks/useListData.js +60 -0
- package/components/data/list/hooks/useListEffects.js +285 -0
- package/components/data/list/hooks/useListEventHandlers.js +291 -0
- package/components/data/list/hooks/useListPagination.js +168 -0
- package/components/data/list/hooks/useListState.js +98 -0
- package/components/data/list/hooks/useListStateManager.js +195 -0
- package/components/data/list/hooks/usePaginatedGroupedData.js +121 -0
- package/components/data/list/index.js +611 -0
- package/components/data/list/props.js +5 -0
- package/components/data/list/templates/media-template.js +53 -0
- package/components/data/list/utils/constants.js +81 -0
- package/components/data/list/utils/list-helpers.js +173 -0
- package/components/data/list/utils/list-widget-methods.js +114 -0
- package/components/data/live-filter/index.js +279 -0
- package/components/data/live-filter/props.js +12 -0
- package/components/data/live-form/index.js +93 -0
- package/components/data/live-form/props.js +16 -0
- package/components/data/pagination/components/BasicPagination.js +77 -0
- package/components/data/pagination/components/ClassicPagination.js +191 -0
- package/components/data/pagination/components/InlinePagination.js +99 -0
- package/components/data/pagination/components/LoadingComponent.js +31 -0
- package/components/data/pagination/components/PageSizeSelector.js +175 -0
- package/components/data/pagination/components/PagerNavigation.js +105 -0
- package/components/data/pagination/components/TotalRecords.js +52 -0
- package/components/data/pagination/components/index.js +47 -0
- package/components/data/pagination/components/props.js +5 -0
- package/components/data/pagination/hooks/index.js +19 -0
- package/components/data/pagination/hooks/props.js +5 -0
- package/components/data/pagination/hooks/useNavigationSize.js +44 -0
- package/components/data/pagination/hooks/usePagination.js +796 -0
- package/components/data/pagination/index.js +322 -0
- package/components/data/table/components/AddNewRow.js +190 -0
- package/components/data/table/components/EditableCell.js +91 -0
- package/components/data/table/components/FieldValidationError.js +24 -0
- package/components/data/table/components/RowExpansionButton.js +74 -0
- package/components/data/table/components/TableBody.js +279 -0
- package/components/data/table/components/TableFilters.js +325 -0
- package/components/data/table/components/TableFooterActions.js +48 -0
- package/components/data/table/components/TableHeader.js +174 -0
- package/components/data/table/components/TablePanelHeading.js +68 -0
- package/components/data/table/components/index.js +74 -0
- package/components/data/table/hooks/index.js +219 -0
- package/components/data/table/hooks/useCellState.js +117 -0
- package/components/data/table/hooks/useDynamicColumns.js +85 -0
- package/components/data/table/hooks/useEditingState.js +47 -0
- package/components/data/table/hooks/useFormWidget.js +184 -0
- package/components/data/table/hooks/usePaginationState.js +60 -0
- package/components/data/table/hooks/usePanelStructure.js +40 -0
- package/components/data/table/hooks/useResponsiveColumns.js +34 -0
- package/components/data/table/hooks/useRowExpansion.js +110 -0
- package/components/data/table/hooks/useRowHandlers.js +38 -0
- package/components/data/table/hooks/useRowSelection.js +213 -0
- package/components/data/table/hooks/useServerSideSorting.js +165 -0
- package/components/data/table/hooks/useTableColumns.js +263 -0
- package/components/data/table/hooks/useTableData.js +154 -0
- package/components/data/table/hooks/useTableEdit.js +467 -0
- package/components/data/table/hooks/useTableEffects.js +139 -0
- package/components/data/table/hooks/useTableFilter.js +389 -0
- package/components/data/table/hooks/useTableInitialization.js +103 -0
- package/components/data/table/hooks/useTableState.js +69 -0
- package/components/data/table/hooks/useTableStateManager.js +558 -0
- package/components/data/table/index.js +1295 -0
- package/components/data/table/live-table/index.js +232 -0
- package/components/data/table/props.js +5 -0
- package/components/data/table/table-action/index.js +78 -0
- package/components/data/table/table-column/index.js +35 -0
- package/components/data/table/table-row/index.js +49 -0
- package/components/data/table/table-row-action/index.js +74 -0
- package/components/data/table/utils/buildSelectionColumns.js +173 -0
- package/components/data/table/utils/columnBuilder.js +209 -0
- package/components/data/table/utils/columnProxy.js +48 -0
- package/components/data/table/utils/columnWidthDistribution.js +98 -0
- package/components/data/table/utils/constants.js +80 -0
- package/components/data/table/utils/crud-handlers.js +518 -0
- package/components/data/table/utils/dynamic-columns.js +118 -0
- package/components/data/table/utils/index.js +607 -0
- package/components/data/table/utils/renderDisplayCell.js +183 -0
- package/components/data/table/utils/selectionUtils.js +166 -0
- package/components/data/table/utils/table-helpers.js +100 -0
- package/components/data/table/utils/validation.js +124 -0
- package/components/data/types.js +113 -0
- package/components/data/utils/field-data-utils.js +66 -0
- package/components/data/utils/filter-field-util.js +81 -0
- package/components/data/utils/index.js +216 -0
- package/components/dialogs/alert-dialog/index.js +80 -0
- package/components/dialogs/confirm-dialog/index.js +105 -0
- package/components/dialogs/dialog/index.js +56 -0
- package/components/dialogs/dialog-actions/index.js +18 -0
- package/components/dialogs/dialog-body/index.js +21 -0
- package/components/dialogs/dialog-content/index.js +30 -0
- package/components/dialogs/dialog-header/index.js +93 -0
- package/components/dialogs/iframe-dialog/index.js +114 -0
- package/components/dialogs/index.js +129 -0
- package/components/dialogs/login-dialog/index.js +369 -0
- package/components/dialogs/login-dialog/props.js +5 -0
- package/components/dialogs/page-dialog/index.js +96 -0
- package/components/dialogs/withDialogWrapper.js +108 -0
- package/components/form/button/index.js +216 -0
- package/components/form/button-group/index.js +60 -0
- package/components/input/calendar/index.js +546 -0
- package/components/input/calendar/props.js +5 -0
- package/components/input/calendar/utils.js +340 -0
- package/components/input/chips/SortableChip/index.js +115 -0
- package/components/input/chips/SortableChip/props.js +5 -0
- package/components/input/chips/index.js +488 -0
- package/components/input/chips/props.js +5 -0
- package/components/input/chips/utils.js +259 -0
- package/components/input/color-picker/index.js +678 -0
- package/components/input/color-picker/props.js +5 -0
- package/components/input/composite/index.js +137 -0
- package/components/input/currency/index.js +263 -0
- package/components/input/currency/props.js +5 -0
- package/components/input/default/checkbox/index.js +230 -0
- package/components/input/default/checkbox/props.js +5 -0
- package/components/input/default/checkboxset/index.js +476 -0
- package/components/input/default/checkboxset/props.js +5 -0
- package/components/input/default/radioset/index.js +379 -0
- package/components/input/default/radioset/props.js +5 -0
- package/components/input/default/switch/index.js +490 -0
- package/components/input/default/switch/prop.js +5 -0
- package/components/input/epoch/date/components/DatePickerPopover.js +220 -0
- package/components/input/epoch/date/index.js +520 -0
- package/components/input/epoch/date/props.js +5 -0
- package/components/input/epoch/date/styled.js +70 -0
- package/components/input/epoch/date/utils.js +108 -0
- package/components/input/epoch/datetime/index.js +656 -0
- package/components/input/epoch/datetime/props.js +5 -0
- package/components/input/epoch/datetime/styled.js +90 -0
- package/components/input/epoch/datetime/utils.js +244 -0
- package/components/input/epoch/time/index.js +412 -0
- package/components/input/epoch/time/props.js +5 -0
- package/components/input/epoch/time/utils.js +209 -0
- package/components/input/fileupload/Utils.js +134 -0
- package/components/input/fileupload/components/ListItems.js +140 -0
- package/components/input/fileupload/components/MultiUpload.js +85 -0
- package/components/input/fileupload/components/SingleUpload.js +65 -0
- package/components/input/fileupload/index.js +170 -0
- package/components/input/fileupload/props.js +5 -0
- package/components/input/fileupload/useFileUpload.js +400 -0
- package/components/input/number/index.js +295 -0
- package/components/input/number/props.js +5 -0
- package/components/input/rating/index.js +368 -0
- package/components/input/rating/props.js +5 -0
- package/components/input/select/index.js +344 -0
- package/components/input/select/props.js +5 -0
- package/components/input/slider/index.js +167 -0
- package/components/input/slider/props.js +5 -0
- package/components/input/text/index.js +434 -0
- package/components/input/text/props.js +5 -0
- package/components/input/text/util.js +179 -0
- package/components/input/textarea/index.js +347 -0
- package/components/input/textarea/props.js +5 -0
- package/components/layout/footer/index.js +30 -0
- package/components/layout/header/index.js +30 -0
- package/components/layout/leftnav/index.js +44 -0
- package/components/layout/rightnav/index.js +32 -0
- package/components/layout/topnav/index.js +34 -0
- package/components/navbar/index.js +41 -0
- package/components/navbar/nav/index.js +102 -0
- package/components/navbar/nav/props.js +5 -0
- package/components/navbar/nav-item/index.js +44 -0
- package/components/navigation/breadcrumb/index.js +56 -0
- package/components/navigation/breadcrumb/props.js +5 -0
- package/components/navigation/menu/components/ListItems.js +66 -0
- package/components/navigation/menu/constants.js +101 -0
- package/components/navigation/menu/index.js +807 -0
- package/components/navigation/menu/props.js +5 -0
- package/components/navigation/popover/index.js +209 -0
- package/components/navigation/popover/props.js +15 -0
- package/components/page/content/index.js +28 -0
- package/components/page/error-boundary/index.js +108 -0
- package/components/page/index.js +137 -0
- package/components/page/page-content/index.js +23 -0
- package/components/page/partial/index.js +36 -0
- package/components/page/partial-container/index.js +48 -0
- package/components/page/props.js +5 -0
- package/components/page/toast-container/index.js +33 -0
- package/components/prefab/container/index.js +46 -0
- package/components/prefab/index.js +67 -0
- package/context/AppContext.js +25 -0
- package/context/AppSpinnerProvider.js +43 -0
- package/context/LocalizationProvider.js +79 -0
- package/context/PrefabContext.js +66 -0
- package/context/WidgetProvider.js +187 -0
- package/core/app-config.js +1 -0
- package/core/app.service.js +357 -0
- package/core/appVariablesStore.js +20 -0
- package/core/appstore.js +88 -0
- package/core/constants/currency-constant.js +1071 -0
- package/core/constants/events.js +34 -0
- package/core/constants/index.js +27 -0
- package/core/dialog.service.js +76 -0
- package/core/event-notifier.js +151 -0
- package/core/formatter/date-formatters.js +222 -0
- package/core/formatter/index.js +131 -0
- package/core/formatter/number-formatters.js +142 -0
- package/core/formatter/security-formatters.js +323 -0
- package/core/formatter/string-formatters.js +52 -0
- package/core/formatter/types.js +18 -0
- package/core/formatters.js +24 -0
- package/core/proxy-service.js +412 -0
- package/core/script-registry.js +63 -0
- package/core/security.service.js +11 -0
- package/core/util/common.js +33 -0
- package/core/util/dom.js +107 -0
- package/core/util/index.js +136 -0
- package/core/util/security.js +184 -0
- package/core/util/utils.js +189 -0
- package/core/widget-observer.js +98 -0
- package/higherOrder/BaseApp.js +430 -0
- package/higherOrder/BaseAppProps.js +5 -0
- package/higherOrder/BaseDateTime.js +251 -0
- package/higherOrder/BasePage.js +715 -0
- package/higherOrder/BasePartial.js +124 -0
- package/higherOrder/BasePrefab.js +145 -0
- package/higherOrder/DataNav.js +377 -0
- package/higherOrder/helper.js +43 -0
- package/higherOrder/props.js +5 -0
- package/higherOrder/withBaseWrapper.js +183 -0
- package/hooks/useAccess.js +308 -0
- package/hooks/useAppConfig.js +42 -0
- package/hooks/useAuth.js +562 -0
- package/hooks/useDataSourceSubscription.js +125 -0
- package/hooks/useDebounce.js +76 -0
- package/hooks/useDeviceVisibility.js +49 -0
- package/hooks/useHttp.js +338 -0
- package/libs/index.js +20 -0
- package/mui-config/theme-provider.js +17 -0
- package/mui-config/theme.js +371 -0
- package/package-lock.json +10177 -0
- package/package.json +95 -0
- package/store/index.js +33 -0
- package/store/middleware/navigationMiddleware.js +48 -0
- package/store/slices/appConfigSlice.js +103 -0
- package/store/slices/authSlice.js +508 -0
- package/store/slices/i18nSlice.js +206 -0
- package/types/index.js +15 -0
- package/utils/dataset-util.js +174 -0
- package/utils/eval-expression.js +32 -0
- package/utils/form-state.util.js +140 -0
- package/utils/form-utils.js +187 -0
- package/utils/format-util.js +260 -0
- package/utils/page-params-util.js +24 -0
- package/utils/resource-url.js +27 -0
- package/utils/state-persistance.js +343 -0
- package/utils/style-utils.js +73 -0
- package/utils/transformedDataset-utils.js +633 -0
- package/utils/widget-cleanup-util.js +84 -0
- package/utils/widgets.js +99 -0
- package/variables/base-variable.js +173 -0
- package/variables/constants.js +27 -0
- package/variables/live-variable.js +166 -0
- package/variables/model-variable.js +77 -0
- package/variables/service-variable.js +307 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useListStateManager = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
12
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
|
+
var useListStateManager = exports.useListStateManager = function useListStateManager(props) {
|
|
14
|
+
var currentPage = props.currentPage,
|
|
15
|
+
selectedItems = props.selectedItems,
|
|
16
|
+
items = props.items,
|
|
17
|
+
initialActualPageSize = props.initialActualPageSize,
|
|
18
|
+
multiselect = props.multiselect,
|
|
19
|
+
datasource = props.datasource;
|
|
20
|
+
|
|
21
|
+
// Track previous state to return when loading
|
|
22
|
+
var prevStateRef = (0, _react.useRef)({});
|
|
23
|
+
|
|
24
|
+
// Track if we've already calculated state after loading
|
|
25
|
+
var hasCalculatedAfterLoadingRef = (0, _react.useRef)(false);
|
|
26
|
+
|
|
27
|
+
// Track the previous loading state
|
|
28
|
+
var wasLoadingRef = (0, _react.useRef)(false);
|
|
29
|
+
|
|
30
|
+
// Build the current state object
|
|
31
|
+
var currentState = (0, _react.useMemo)(function () {
|
|
32
|
+
var isLoading = datasource === null || datasource === void 0 ? void 0 : datasource.loading;
|
|
33
|
+
// Detect first calculation after loading becomes false
|
|
34
|
+
var isFirstCalculationAfterLoading = wasLoadingRef.current && !isLoading && !hasCalculatedAfterLoadingRef.current;
|
|
35
|
+
|
|
36
|
+
// If loading just started, reset the flag for next time
|
|
37
|
+
if (isLoading && !wasLoadingRef.current) {
|
|
38
|
+
hasCalculatedAfterLoadingRef.current = false;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Update the loading state tracker
|
|
42
|
+
wasLoadingRef.current = isLoading;
|
|
43
|
+
|
|
44
|
+
// If datasource is loading, return the previous state without any calculations
|
|
45
|
+
if (isLoading) {
|
|
46
|
+
return prevStateRef.current;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// If this is the first calculation after loading, mark as calculated and return minimal state
|
|
50
|
+
if (isFirstCalculationAfterLoading) {
|
|
51
|
+
hasCalculatedAfterLoadingRef.current = true;
|
|
52
|
+
// Return minimal state for first calculation after loading to avoid stale data
|
|
53
|
+
return {
|
|
54
|
+
pagination: currentPage
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Otherwise, calculate the new state
|
|
59
|
+
var state = {
|
|
60
|
+
pagination: currentPage
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// Include actualPageSize if available
|
|
64
|
+
if (initialActualPageSize !== undefined) {
|
|
65
|
+
state.actualpagesize = initialActualPageSize;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Find selected indices in current items
|
|
69
|
+
var selectedIndices = [];
|
|
70
|
+
|
|
71
|
+
// For single select, ensure we only process one item
|
|
72
|
+
var itemsToProcess = multiselect ? selectedItems : selectedItems.slice(0, 1);
|
|
73
|
+
itemsToProcess.forEach(function (selectedItem) {
|
|
74
|
+
// For SSP, we need to match by unique ID since object references change between pages
|
|
75
|
+
// Use _wmListItemId which is unique for each item
|
|
76
|
+
var index = items.findIndex(function (item) {
|
|
77
|
+
// First try to match by _wmListItemId for SSP
|
|
78
|
+
if (item._wmListItemId && selectedItem._wmListItemId) {
|
|
79
|
+
return item._wmListItemId === selectedItem._wmListItemId;
|
|
80
|
+
}
|
|
81
|
+
// Fallback to object reference for non-SSP cases
|
|
82
|
+
return item === selectedItem;
|
|
83
|
+
});
|
|
84
|
+
if (index >= 0) {
|
|
85
|
+
selectedIndices.push(index);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
// Build selected items with page info
|
|
90
|
+
var selectedItemsWithPage = selectedIndices.map(function (idx) {
|
|
91
|
+
return {
|
|
92
|
+
page: currentPage,
|
|
93
|
+
index: idx
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
state.selectedItem = selectedItemsWithPage;
|
|
97
|
+
|
|
98
|
+
// Save the calculated state for next time
|
|
99
|
+
prevStateRef.current = state;
|
|
100
|
+
return state;
|
|
101
|
+
}, [currentPage, selectedItems, items, initialActualPageSize, multiselect, datasource === null || datasource === void 0 ? void 0 : datasource.loading]);
|
|
102
|
+
|
|
103
|
+
// Get state for page size change
|
|
104
|
+
var getStateForPageSizeChange = (0, _react.useCallback)(function (newPageSize, existingSelectedItems, oldPageSize) {
|
|
105
|
+
var recalculatedItems = [];
|
|
106
|
+
if (existingSelectedItems && existingSelectedItems.length > 0 && oldPageSize) {
|
|
107
|
+
// Recalculate selected items positions based on new page size
|
|
108
|
+
recalculatedItems = existingSelectedItems.map(function (_ref) {
|
|
109
|
+
var page = _ref.page,
|
|
110
|
+
index = _ref.index;
|
|
111
|
+
// Calculate absolute position using the OLD page size
|
|
112
|
+
var absoluteIndex = (page - 1) * oldPageSize + index;
|
|
113
|
+
|
|
114
|
+
// Calculate new page and index with the NEW page size
|
|
115
|
+
var newPage = Math.floor(absoluteIndex / newPageSize) + 1;
|
|
116
|
+
var newIndex = absoluteIndex % newPageSize;
|
|
117
|
+
return {
|
|
118
|
+
page: newPage,
|
|
119
|
+
index: newIndex
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
var state = {
|
|
124
|
+
pagination: 1,
|
|
125
|
+
// Reset to first page
|
|
126
|
+
pagesize: newPageSize,
|
|
127
|
+
selectedItem: recalculatedItems
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
// Always include actualPageSize if available
|
|
131
|
+
if (initialActualPageSize !== undefined) {
|
|
132
|
+
state.actualpagesize = initialActualPageSize;
|
|
133
|
+
}
|
|
134
|
+
return state;
|
|
135
|
+
}, [initialActualPageSize]);
|
|
136
|
+
|
|
137
|
+
// Check if current state is default (no need to persist)
|
|
138
|
+
var isDefaultState = (0, _react.useCallback)(function () {
|
|
139
|
+
return currentPage === 1 && selectedItems.length === 0;
|
|
140
|
+
}, [currentPage, selectedItems]);
|
|
141
|
+
|
|
142
|
+
// Merge with existing state
|
|
143
|
+
var mergeWithExisting = (0, _react.useCallback)(function (newState, existingState) {
|
|
144
|
+
if (!existingState) {
|
|
145
|
+
return newState;
|
|
146
|
+
}
|
|
147
|
+
var merged = _objectSpread({}, newState);
|
|
148
|
+
|
|
149
|
+
// Handle selected items based on multiselect mode
|
|
150
|
+
if (existingState.selectedItem && newState.selectedItem !== undefined) {
|
|
151
|
+
if (multiselect) {
|
|
152
|
+
// For multiselect: check if this is a single selection (normal click)
|
|
153
|
+
// If we have exactly one selection on the current page, it means the user
|
|
154
|
+
// did a normal click (not Ctrl+click), so we should clear all other selections
|
|
155
|
+
if (newState.selectedItem.length === 1) {
|
|
156
|
+
// Single click in multiselect mode - replace all selections
|
|
157
|
+
merged.selectedItem = newState.selectedItem;
|
|
158
|
+
} else {
|
|
159
|
+
// Multiple selections or no selections - merge from different pages
|
|
160
|
+
var currentPageSelections = newState.selectedItem;
|
|
161
|
+
var otherPageSelections = existingState.selectedItem.filter(function (item) {
|
|
162
|
+
return item.page !== newState.pagination;
|
|
163
|
+
});
|
|
164
|
+
merged.selectedItem = [].concat((0, _toConsumableArray2["default"])(otherPageSelections), (0, _toConsumableArray2["default"])(currentPageSelections));
|
|
165
|
+
}
|
|
166
|
+
} else {
|
|
167
|
+
// For single select:
|
|
168
|
+
// If current page has selections, use only those
|
|
169
|
+
// If current page has no selections, keep existing selection
|
|
170
|
+
if (newState.selectedItem.length > 0) {
|
|
171
|
+
merged.selectedItem = newState.selectedItem;
|
|
172
|
+
} else {
|
|
173
|
+
merged.selectedItem = existingState.selectedItem;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Preserve pagesize if not in new state
|
|
179
|
+
if (!merged.pagesize && existingState.pagesize) {
|
|
180
|
+
merged.pagesize = existingState.pagesize;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Preserve actualpagesize if not in new state
|
|
184
|
+
if (!merged.actualpagesize && existingState.actualpagesize) {
|
|
185
|
+
merged.actualpagesize = existingState.actualpagesize;
|
|
186
|
+
}
|
|
187
|
+
return merged;
|
|
188
|
+
}, [multiselect]);
|
|
189
|
+
return {
|
|
190
|
+
currentState: currentState,
|
|
191
|
+
getStateForPageSizeChange: getStateForPageSizeChange,
|
|
192
|
+
isDefaultState: isDefaultState,
|
|
193
|
+
mergeWithExisting: mergeWithExisting
|
|
194
|
+
};
|
|
195
|
+
};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.usePaginatedGroupedData = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _lodashEs = require("lodash-es");
|
|
11
|
+
var _constants = require("../utils/constants");
|
|
12
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
15
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
16
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
17
|
+
/**
|
|
18
|
+
* Hook for calculating paginated grouped data based on navigation type and pagination
|
|
19
|
+
*/
|
|
20
|
+
var usePaginatedGroupedData = exports.usePaginatedGroupedData = function usePaginatedGroupedData(_ref) {
|
|
21
|
+
var groupedData = _ref.groupedData,
|
|
22
|
+
navigation = _ref.navigation,
|
|
23
|
+
currentPage = _ref.currentPage,
|
|
24
|
+
pagesize = _ref.pagesize,
|
|
25
|
+
visibleItems = _ref.visibleItems;
|
|
26
|
+
return (0, _react.useMemo)(function () {
|
|
27
|
+
if (!groupedData || !(0, _lodashEs.isArray)(groupedData) || groupedData.length === 0) {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// For on-demand navigation, show all items up to visibleItems
|
|
32
|
+
if (navigation === _constants.LIST_NAVIGATION_TYPES.ON_DEMAND) {
|
|
33
|
+
var itemCount = 0;
|
|
34
|
+
var paginatedGroups = [];
|
|
35
|
+
var _iterator = _createForOfIteratorHelper(groupedData),
|
|
36
|
+
_step;
|
|
37
|
+
try {
|
|
38
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
39
|
+
var group = _step.value;
|
|
40
|
+
var remainingItems = visibleItems - itemCount;
|
|
41
|
+
if (remainingItems <= 0) break;
|
|
42
|
+
var groupItems = (0, _lodashEs.slice)(group.data, 0, (0, _lodashEs.min)([group.data.length, remainingItems]));
|
|
43
|
+
if (groupItems.length > 0) {
|
|
44
|
+
paginatedGroups.push(_objectSpread(_objectSpread({}, group), {}, {
|
|
45
|
+
data: groupItems,
|
|
46
|
+
startIndexInGroup: 0
|
|
47
|
+
}));
|
|
48
|
+
itemCount += groupItems.length;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
} catch (err) {
|
|
52
|
+
_iterator.e(err);
|
|
53
|
+
} finally {
|
|
54
|
+
_iterator.f();
|
|
55
|
+
}
|
|
56
|
+
return paginatedGroups;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// For regular pagination
|
|
60
|
+
var startIndex = (currentPage - 1) * pagesize;
|
|
61
|
+
var endIndex = currentPage * pagesize;
|
|
62
|
+
|
|
63
|
+
// Flatten all items with their group information
|
|
64
|
+
|
|
65
|
+
var globalIndexCounter = 0;
|
|
66
|
+
var flattenedItems = (0, _lodashEs.flatMap)(groupedData, function (group) {
|
|
67
|
+
var groupStartIndex = globalIndexCounter;
|
|
68
|
+
var items = group.data.map(function (item, indexInGroup) {
|
|
69
|
+
return {
|
|
70
|
+
item: item,
|
|
71
|
+
groupKey: group.key,
|
|
72
|
+
indexInGroup: indexInGroup,
|
|
73
|
+
globalIndex: groupStartIndex + indexInGroup
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
globalIndexCounter += group.data.length;
|
|
77
|
+
return items;
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// Get items for current page
|
|
81
|
+
var pageItems = (0, _lodashEs.slice)(flattenedItems, startIndex, endIndex);
|
|
82
|
+
|
|
83
|
+
// Reconstruct groups with only the items on the current page
|
|
84
|
+
var groupsMap = new Map();
|
|
85
|
+
(0, _lodashEs.forEach)(pageItems, function (_ref2) {
|
|
86
|
+
var item = _ref2.item,
|
|
87
|
+
groupKey = _ref2.groupKey,
|
|
88
|
+
indexInGroup = _ref2.indexInGroup;
|
|
89
|
+
if (!groupsMap.has(groupKey)) {
|
|
90
|
+
var originalGroup = (0, _lodashEs.find)(groupedData, function (g) {
|
|
91
|
+
return g.key === groupKey;
|
|
92
|
+
});
|
|
93
|
+
groupsMap.set(groupKey, {
|
|
94
|
+
key: groupKey,
|
|
95
|
+
data: [],
|
|
96
|
+
originalDataLength: (originalGroup === null || originalGroup === void 0 ? void 0 : originalGroup.data.length) || 0,
|
|
97
|
+
startIndexInGroup: indexInGroup
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
groupsMap.get(groupKey).data.push(item);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// Convert map to array and maintain original group order
|
|
104
|
+
var result = [];
|
|
105
|
+
var _iterator2 = _createForOfIteratorHelper(groupedData),
|
|
106
|
+
_step2;
|
|
107
|
+
try {
|
|
108
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
109
|
+
var _group = _step2.value;
|
|
110
|
+
if (groupsMap.has(_group.key)) {
|
|
111
|
+
result.push(groupsMap.get(_group.key));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
} catch (err) {
|
|
115
|
+
_iterator2.e(err);
|
|
116
|
+
} finally {
|
|
117
|
+
_iterator2.f();
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}, [groupedData, navigation, currentPage, pagesize, visibleItems]);
|
|
121
|
+
};
|