@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,291 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useListEventHandlers = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
var _lodashEs = require("lodash-es");
|
|
12
|
+
var _listHelpers = require("../utils/list-helpers");
|
|
13
|
+
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; }
|
|
14
|
+
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; }
|
|
15
|
+
/**
|
|
16
|
+
* Custom hook for managing list event handlers
|
|
17
|
+
* Extracts all event handling logic from the main component
|
|
18
|
+
*/
|
|
19
|
+
var useListEventHandlers = exports.useListEventHandlers = function useListEventHandlers(props) {
|
|
20
|
+
var items = props.items,
|
|
21
|
+
multiselect = props.multiselect,
|
|
22
|
+
disableitem = props.disableitem,
|
|
23
|
+
selectionlimit = props.selectionlimit,
|
|
24
|
+
collapsible = props.collapsible,
|
|
25
|
+
selectedItems = props.selectedItems,
|
|
26
|
+
setSelectedItems = props.setSelectedItems,
|
|
27
|
+
activeItems = props.activeItems,
|
|
28
|
+
setActiveItems = props.setActiveItems,
|
|
29
|
+
firstSelectedItem = props.firstSelectedItem,
|
|
30
|
+
setFirstSelectedItem = props.setFirstSelectedItem,
|
|
31
|
+
groupCollapsed = props.groupCollapsed,
|
|
32
|
+
setGroupCollapsed = props.setGroupCollapsed,
|
|
33
|
+
currentPage = props.currentPage,
|
|
34
|
+
setCurrentPage = props.setCurrentPage,
|
|
35
|
+
visibleItems = props.visibleItems,
|
|
36
|
+
setVisibleItems = props.setVisibleItems,
|
|
37
|
+
setIsLoadingMore = props.setIsLoadingMore,
|
|
38
|
+
onClick = props.onClick,
|
|
39
|
+
onDblclick = props.onDblclick,
|
|
40
|
+
onMouseEnter = props.onMouseEnter,
|
|
41
|
+
onMouseLeave = props.onMouseLeave,
|
|
42
|
+
onSelectionlimitexceed = props.onSelectionlimitexceed,
|
|
43
|
+
onPaginationchange = props.onPaginationchange,
|
|
44
|
+
onPageChange = props.onPageChange,
|
|
45
|
+
onSetrecord = props.onSetrecord,
|
|
46
|
+
widgetInstance = props.widgetInstance,
|
|
47
|
+
onSelect = props.onSelect,
|
|
48
|
+
userInitiatedSelectionRef = props.userInitiatedSelectionRef,
|
|
49
|
+
datasource = props.datasource,
|
|
50
|
+
isServerSidePagination = props.isServerSidePagination,
|
|
51
|
+
pagesize = props.pagesize,
|
|
52
|
+
navigation = props.navigation,
|
|
53
|
+
onDemandCurrentPage = props.onDemandCurrentPage,
|
|
54
|
+
setOnDemandCurrentPage = props.setOnDemandCurrentPage,
|
|
55
|
+
listener = props.listener,
|
|
56
|
+
name = props.name;
|
|
57
|
+
|
|
58
|
+
// Helper function to call onSelect and mark as user-initiated
|
|
59
|
+
var callOnSelect = (0, _react.useCallback)(function (selectedItem) {
|
|
60
|
+
if (onSelect && widgetInstance) {
|
|
61
|
+
if (userInitiatedSelectionRef) {
|
|
62
|
+
userInitiatedSelectionRef.current = true;
|
|
63
|
+
}
|
|
64
|
+
onSelect(widgetInstance, selectedItem);
|
|
65
|
+
}
|
|
66
|
+
}, [onSelect, widgetInstance, userInitiatedSelectionRef]);
|
|
67
|
+
var handleListItemClick = (0, _react.useCallback)(function (event, item) {
|
|
68
|
+
if (disableitem) return;
|
|
69
|
+
var selectCount = selectedItems.length;
|
|
70
|
+
var isItemSelected = (0, _lodashEs.includes)(selectedItems, item);
|
|
71
|
+
var isItemActive = activeItems.has(item);
|
|
72
|
+
if (multiselect) {
|
|
73
|
+
// Handle Shift+Click for range selection
|
|
74
|
+
if (event.shiftKey && firstSelectedItem && firstSelectedItem !== item) {
|
|
75
|
+
var firstIndex = (0, _lodashEs.findIndex)(items, function (i) {
|
|
76
|
+
return i === firstSelectedItem;
|
|
77
|
+
});
|
|
78
|
+
var lastIndex = (0, _lodashEs.findIndex)(items, function (i) {
|
|
79
|
+
return i === item;
|
|
80
|
+
});
|
|
81
|
+
if (firstIndex !== -1 && lastIndex !== -1) {
|
|
82
|
+
var start = (0, _lodashEs.min)([firstIndex, lastIndex]);
|
|
83
|
+
var end = (0, _lodashEs.max)([firstIndex, lastIndex]);
|
|
84
|
+
var rangeCount = end - start + 1;
|
|
85
|
+
if (selectionlimit > 0 && rangeCount > selectionlimit) {
|
|
86
|
+
onSelectionlimitexceed === null || onSelectionlimitexceed === void 0 || onSelectionlimitexceed(event, widgetInstance);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
var rangeItems = (0, _lodashEs.slice)(items, start, end + 1);
|
|
90
|
+
setSelectedItems(rangeItems);
|
|
91
|
+
setActiveItems(new Set(rangeItems));
|
|
92
|
+
// Only call onSelect if this is a new selection (not already active)
|
|
93
|
+
if (!isItemActive) {
|
|
94
|
+
callOnSelect(item); // Pass the current item that triggered the range selection
|
|
95
|
+
}
|
|
96
|
+
onClick === null || onClick === void 0 || onClick(event, widgetInstance); // Use widgetInstance instead of item
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Handle Ctrl+Click for individual item selection toggle
|
|
102
|
+
if (event.ctrlKey) {
|
|
103
|
+
if (selectionlimit > 0 && selectCount >= selectionlimit && !isItemSelected) {
|
|
104
|
+
onSelectionlimitexceed === null || onSelectionlimitexceed === void 0 || onSelectionlimitexceed(event, widgetInstance);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (isItemSelected) {
|
|
108
|
+
var newSelectedItems = (0, _lodashEs.filter)(selectedItems, function (selectedItem) {
|
|
109
|
+
return selectedItem !== item;
|
|
110
|
+
});
|
|
111
|
+
setSelectedItems(newSelectedItems);
|
|
112
|
+
var newActiveItems = new Set(activeItems);
|
|
113
|
+
newActiveItems["delete"](item);
|
|
114
|
+
setActiveItems(newActiveItems);
|
|
115
|
+
} else {
|
|
116
|
+
var _newSelectedItems = [].concat((0, _toConsumableArray2["default"])(selectedItems), [item]);
|
|
117
|
+
setSelectedItems(_newSelectedItems);
|
|
118
|
+
var _newActiveItems = new Set(activeItems);
|
|
119
|
+
_newActiveItems.add(item);
|
|
120
|
+
setActiveItems(_newActiveItems);
|
|
121
|
+
// Only call onSelect if this is a new selection (not already active)
|
|
122
|
+
if (!isItemActive) {
|
|
123
|
+
callOnSelect(item); // Pass the current item being selected
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
setFirstSelectedItem(item);
|
|
127
|
+
} else {
|
|
128
|
+
// Normal click without Ctrl - select item without deselecting if already selected
|
|
129
|
+
if (!isItemSelected) {
|
|
130
|
+
// If clicking an unselected item, select only this item
|
|
131
|
+
setSelectedItems([item]);
|
|
132
|
+
setActiveItems(new Set([item]));
|
|
133
|
+
setFirstSelectedItem(item);
|
|
134
|
+
// Only call onSelect if this is a new selection (not already active)
|
|
135
|
+
if (!isItemActive) {
|
|
136
|
+
callOnSelect(item); // Pass the current item being selected
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// If item is already selected, do nothing (don't deselect)
|
|
140
|
+
}
|
|
141
|
+
} else {
|
|
142
|
+
// Single select mode - only select, don't deselect on normal click
|
|
143
|
+
if (!isItemSelected) {
|
|
144
|
+
// If clicking an unselected item, select it
|
|
145
|
+
setSelectedItems([item]);
|
|
146
|
+
setActiveItems(new Set([item]));
|
|
147
|
+
setFirstSelectedItem(item);
|
|
148
|
+
// Only call onSelect if this is a new selection (not already active)
|
|
149
|
+
if (!isItemActive) {
|
|
150
|
+
callOnSelect(item); // Pass the current item being selected
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// If item is already selected, do nothing (don't deselect)
|
|
154
|
+
}
|
|
155
|
+
(0, _listHelpers.getSelectedItemWidgets)(event, listener, name || "");
|
|
156
|
+
if (widgetInstance) {
|
|
157
|
+
delete widgetInstance._wmListItemId;
|
|
158
|
+
widgetInstance.item = item;
|
|
159
|
+
}
|
|
160
|
+
onClick === null || onClick === void 0 || onClick(event, widgetInstance); // Use widgetInstance instead of item
|
|
161
|
+
}, [disableitem, selectedItems, multiselect, firstSelectedItem, items, selectionlimit, activeItems, setSelectedItems, setActiveItems, setFirstSelectedItem, onSelectionlimitexceed, onClick, callOnSelect]);
|
|
162
|
+
var handleListItemDoubleClick = (0, _react.useCallback)(function (event, item) {
|
|
163
|
+
onDblclick === null || onDblclick === void 0 || onDblclick(event, widgetInstance); // Use widgetInstance instead of item
|
|
164
|
+
}, [onDblclick]);
|
|
165
|
+
var handleListItemMouseEnter = (0, _react.useCallback)(function (event, item) {
|
|
166
|
+
onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter(event, widgetInstance); // Use widgetInstance instead of item
|
|
167
|
+
}, [onMouseEnter]);
|
|
168
|
+
var handleListItemMouseLeave = (0, _react.useCallback)(function (event, item) {
|
|
169
|
+
onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave(event, widgetInstance); // Use widgetInstance instead of item
|
|
170
|
+
}, [onMouseLeave]);
|
|
171
|
+
var handleHeaderClick = (0, _react.useCallback)(function (groupKey) {
|
|
172
|
+
if (collapsible) {
|
|
173
|
+
setGroupCollapsed(_objectSpread(_objectSpread({}, groupCollapsed), {}, (0, _defineProperty2["default"])({}, groupKey, !groupCollapsed[groupKey])));
|
|
174
|
+
}
|
|
175
|
+
}, [collapsible, groupCollapsed, setGroupCollapsed]);
|
|
176
|
+
var handlePaginationChange = (0, _react.useCallback)(function (event, widget, index) {
|
|
177
|
+
if (index && currentPage !== index) {
|
|
178
|
+
// Update the current page
|
|
179
|
+
setCurrentPage(index);
|
|
180
|
+
|
|
181
|
+
// Trigger the callbacks - datasource handling is now done in usePagination hook
|
|
182
|
+
onPaginationchange === null || onPaginationchange === void 0 || onPaginationchange(event, widgetInstance, index);
|
|
183
|
+
onPageChange === null || onPageChange === void 0 || onPageChange(event, index);
|
|
184
|
+
}
|
|
185
|
+
}, [currentPage, setCurrentPage, onPaginationchange, onPageChange, widgetInstance]);
|
|
186
|
+
var handleSetRecord = (0, _react.useCallback)(function (event, widget, index, data) {
|
|
187
|
+
if (index) {
|
|
188
|
+
setCurrentPage(index);
|
|
189
|
+
onSetrecord === null || onSetrecord === void 0 || onSetrecord(event, widgetInstance, index, data);
|
|
190
|
+
}
|
|
191
|
+
}, [setCurrentPage, onSetrecord]);
|
|
192
|
+
var handlePageChange = (0, _react.useCallback)(function (page) {
|
|
193
|
+
// Update the current page
|
|
194
|
+
setCurrentPage(page);
|
|
195
|
+
|
|
196
|
+
// For server-side pagination, invoke the datasource
|
|
197
|
+
if (isServerSidePagination && datasource && typeof datasource.invoke === "function") {
|
|
198
|
+
// Set loading state
|
|
199
|
+
setIsLoadingMore(true);
|
|
200
|
+
|
|
201
|
+
// Invoke datasource for the new page
|
|
202
|
+
var invokeResult = datasource.invoke({
|
|
203
|
+
page: page
|
|
204
|
+
});
|
|
205
|
+
Promise.resolve(invokeResult).then(function () {
|
|
206
|
+
// Trigger the callbacks after successful data fetch
|
|
207
|
+
onPaginationchange === null || onPaginationchange === void 0 || onPaginationchange(null, widgetInstance, page);
|
|
208
|
+
onPageChange === null || onPageChange === void 0 || onPageChange(null, page);
|
|
209
|
+
setIsLoadingMore(false);
|
|
210
|
+
})["catch"](function (error) {
|
|
211
|
+
console.error("Error loading page data:", error);
|
|
212
|
+
setIsLoadingMore(false);
|
|
213
|
+
// Revert to previous page on error
|
|
214
|
+
setCurrentPage(currentPage);
|
|
215
|
+
});
|
|
216
|
+
} else {
|
|
217
|
+
// For client-side pagination, just trigger callbacks
|
|
218
|
+
onPaginationchange === null || onPaginationchange === void 0 || onPaginationchange(null, widgetInstance, page);
|
|
219
|
+
onPageChange === null || onPageChange === void 0 || onPageChange(null, page);
|
|
220
|
+
}
|
|
221
|
+
}, [setCurrentPage, onPaginationchange, onPageChange, widgetInstance, currentPage, setIsLoadingMore, isServerSidePagination, datasource]);
|
|
222
|
+
var handleLoadMore = (0, _react.useCallback)(function () {
|
|
223
|
+
setIsLoadingMore(true);
|
|
224
|
+
var pageSize = pagesize || 10;
|
|
225
|
+
var nextPage;
|
|
226
|
+
|
|
227
|
+
// For server-side pagination
|
|
228
|
+
if (isServerSidePagination && datasource && typeof datasource.invoke === "function") {
|
|
229
|
+
// For On-Demand navigation, use our tracked page state
|
|
230
|
+
if (navigation === "On-Demand" && onDemandCurrentPage !== undefined) {
|
|
231
|
+
// onDemandCurrentPage is 0-indexed (0 = page 1)
|
|
232
|
+
// We need to load the next page: current + 1, then convert to 1-indexed for API
|
|
233
|
+
var nextPageZeroIndexed = onDemandCurrentPage + 1;
|
|
234
|
+
nextPage = nextPageZeroIndexed + 1; // Convert to 1-indexed for API
|
|
235
|
+
} else {
|
|
236
|
+
var _datasource$paginatio;
|
|
237
|
+
// For other navigation types, use pagination metadata
|
|
238
|
+
var currentPageFromMeta = (_datasource$paginatio = datasource.pagination) === null || _datasource$paginatio === void 0 ? void 0 : _datasource$paginatio.number;
|
|
239
|
+
if (currentPageFromMeta !== undefined) {
|
|
240
|
+
// currentPageFromMeta is 0-indexed, add 2 to get next page for 1-indexed API
|
|
241
|
+
nextPage = currentPageFromMeta + 2;
|
|
242
|
+
} else {
|
|
243
|
+
// Fallback calculation
|
|
244
|
+
var loadedItems = items.length;
|
|
245
|
+
var _currentPage = Math.floor(loadedItems / pageSize);
|
|
246
|
+
nextPage = _currentPage + 1;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Invoke the datasource for the next page
|
|
251
|
+
// Wrap the result in Promise.resolve to handle cases where invoke doesn't return a Promise
|
|
252
|
+
var invokeResult = datasource.invoke({
|
|
253
|
+
page: nextPage
|
|
254
|
+
});
|
|
255
|
+
Promise.resolve(invokeResult).then(function () {
|
|
256
|
+
// Update visible items to reflect the expected count
|
|
257
|
+
setVisibleItems(visibleItems + pageSize);
|
|
258
|
+
|
|
259
|
+
// For On-Demand, update the page state after successful load
|
|
260
|
+
if (navigation === "On-Demand" && setOnDemandCurrentPage) {
|
|
261
|
+
// Page has been loaded, update to the loaded page number (0-indexed)
|
|
262
|
+
setOnDemandCurrentPage(onDemandCurrentPage + 1);
|
|
263
|
+
}
|
|
264
|
+
setIsLoadingMore(false);
|
|
265
|
+
})["catch"](function (error) {
|
|
266
|
+
console.error("Error loading more data:", error);
|
|
267
|
+
setIsLoadingMore(false);
|
|
268
|
+
});
|
|
269
|
+
} else {
|
|
270
|
+
// Client-side pagination
|
|
271
|
+
var _currentPage2 = Math.floor(visibleItems / pageSize);
|
|
272
|
+
nextPage = _currentPage2 + 1;
|
|
273
|
+
setVisibleItems((0, _lodashEs.min)([visibleItems + pageSize, items.length]));
|
|
274
|
+
setTimeout(function () {
|
|
275
|
+
setIsLoadingMore(false);
|
|
276
|
+
}, 10);
|
|
277
|
+
}
|
|
278
|
+
onPageChange === null || onPageChange === void 0 || onPageChange(null, nextPage);
|
|
279
|
+
}, [setIsLoadingMore, setVisibleItems, visibleItems, items.length, onPageChange, datasource, pagesize, navigation, onDemandCurrentPage, setOnDemandCurrentPage]);
|
|
280
|
+
return {
|
|
281
|
+
handleListItemClick: handleListItemClick,
|
|
282
|
+
handleListItemDoubleClick: handleListItemDoubleClick,
|
|
283
|
+
handleListItemMouseEnter: handleListItemMouseEnter,
|
|
284
|
+
handleListItemMouseLeave: handleListItemMouseLeave,
|
|
285
|
+
handleHeaderClick: handleHeaderClick,
|
|
286
|
+
handlePaginationChange: handlePaginationChange,
|
|
287
|
+
handleSetRecord: handleSetRecord,
|
|
288
|
+
handlePageChange: handlePageChange,
|
|
289
|
+
handleLoadMore: handleLoadMore
|
|
290
|
+
};
|
|
291
|
+
};
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useListPagination = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _lodashEs = require("lodash-es");
|
|
9
|
+
var _constants = require("../utils/constants");
|
|
10
|
+
/**
|
|
11
|
+
* Custom hook for managing list pagination
|
|
12
|
+
* Handles both regular and grouped data pagination
|
|
13
|
+
* Uses pagination metadata from datasource when available
|
|
14
|
+
*/
|
|
15
|
+
var useListPagination = exports.useListPagination = function useListPagination(props) {
|
|
16
|
+
var items = props.items,
|
|
17
|
+
groupedData = props.groupedData,
|
|
18
|
+
groupby = props.groupby,
|
|
19
|
+
pagesize = props.pagesize,
|
|
20
|
+
allowpagesizechange = props.allowpagesizechange,
|
|
21
|
+
pagesizeoptions = props.pagesizeoptions,
|
|
22
|
+
navigation = props.navigation,
|
|
23
|
+
_props$initialPage = props.initialPage,
|
|
24
|
+
initialPage = _props$initialPage === void 0 ? 1 : _props$initialPage,
|
|
25
|
+
datasource = props.datasource;
|
|
26
|
+
|
|
27
|
+
// Get pagination metadata from datasource if available
|
|
28
|
+
var paginationMeta = (0, _react.useMemo)(function () {
|
|
29
|
+
// Default pagination metadata
|
|
30
|
+
var metadata = _constants.DEFAULT_PAGINATION_META; // Try all possible locations where pagination metadata might be found
|
|
31
|
+
if (datasource) {
|
|
32
|
+
if (datasource.pagination) {
|
|
33
|
+
metadata = datasource.pagination;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return metadata;
|
|
37
|
+
}, [datasource, items, pagesize]);
|
|
38
|
+
|
|
39
|
+
// Initialize page size based on allowpagesizechange
|
|
40
|
+
var getInitialPageSize = function getInitialPageSize() {
|
|
41
|
+
// Always use the pagesize prop first (which may contain the restored value)
|
|
42
|
+
// Only fall back to first option if pagesize is not provided
|
|
43
|
+
if (pagesize) {
|
|
44
|
+
return pagesize;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Use paginationMeta.size if available
|
|
48
|
+
if (paginationMeta !== null && paginationMeta !== void 0 && paginationMeta.size) {
|
|
49
|
+
return paginationMeta.size;
|
|
50
|
+
}
|
|
51
|
+
if (allowpagesizechange) {
|
|
52
|
+
// Parse pagesizeoptions and use the first value as fallback
|
|
53
|
+
var firstOption = (0, _lodashEs.head)((0, _lodashEs.filter)((0, _lodashEs.map)((0, _lodashEs.split)(pagesizeoptions, ","), function (opt) {
|
|
54
|
+
return (0, _lodashEs.toNumber)(opt.trim());
|
|
55
|
+
}), function (opt) {
|
|
56
|
+
return !isNaN(opt);
|
|
57
|
+
}));
|
|
58
|
+
return firstOption || 10; // Default to 10 if no valid options
|
|
59
|
+
}
|
|
60
|
+
return 10; // Default page size
|
|
61
|
+
};
|
|
62
|
+
var _useState = (0, _react.useState)(initialPage),
|
|
63
|
+
currentPage = _useState[0],
|
|
64
|
+
setCurrentPage = _useState[1];
|
|
65
|
+
var _useState2 = (0, _react.useState)(getInitialPageSize()),
|
|
66
|
+
currentPageSize = _useState2[0],
|
|
67
|
+
setCurrentPageSize = _useState2[1];
|
|
68
|
+
var _useState3 = (0, _react.useState)(function () {
|
|
69
|
+
// For on-demand navigation, show items up to the initial page
|
|
70
|
+
if (navigation === "On-Demand" && initialPage > 1) {
|
|
71
|
+
return initialPage * pagesize;
|
|
72
|
+
}
|
|
73
|
+
return pagesize;
|
|
74
|
+
}),
|
|
75
|
+
visibleItems = _useState3[0],
|
|
76
|
+
setVisibleItems = _useState3[1];
|
|
77
|
+
|
|
78
|
+
// Calculate total pages based on datasource pagination metadata if available
|
|
79
|
+
var totalPages = (0, _react.useMemo)(function () {
|
|
80
|
+
// If pagination metadata is available, use it
|
|
81
|
+
if (paginationMeta.totalPages !== undefined) {
|
|
82
|
+
return paginationMeta.totalPages;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Fall back to calculating from items length
|
|
86
|
+
var validItems = (0, _lodashEs.isArray)(items) ? items : [];
|
|
87
|
+
return (0, _lodashEs.ceil)(validItems.length / currentPageSize);
|
|
88
|
+
}, [items, currentPageSize, paginationMeta]);
|
|
89
|
+
|
|
90
|
+
// Calculate total items for grouped data or from pagination metadata
|
|
91
|
+
var totalItems = (0, _react.useMemo)(function () {
|
|
92
|
+
// If pagination metadata is available, use it
|
|
93
|
+
if (paginationMeta.totalElements !== undefined) {
|
|
94
|
+
return paginationMeta.totalElements;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// For grouped data
|
|
98
|
+
if (groupby && groupedData && (0, _lodashEs.isArray)(groupedData)) {
|
|
99
|
+
return (0, _lodashEs.sumBy)(groupedData, function (group) {
|
|
100
|
+
var _group$data;
|
|
101
|
+
return ((_group$data = group.data) === null || _group$data === void 0 ? void 0 : _group$data.length) || 0;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Fall back to items length
|
|
106
|
+
return (0, _lodashEs.isArray)(items) ? items.length : 0;
|
|
107
|
+
}, [groupedData, items, paginationMeta, groupby]);
|
|
108
|
+
|
|
109
|
+
// Calculate effective total pages (considers grouping and pagination metadata)
|
|
110
|
+
var effectiveTotalPages = (0, _react.useMemo)(function () {
|
|
111
|
+
// If pagination metadata has totalPages, use it directly
|
|
112
|
+
if (paginationMeta.totalPages !== undefined) {
|
|
113
|
+
return paginationMeta.totalPages;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// For grouped data
|
|
117
|
+
if (groupby && groupedData) {
|
|
118
|
+
return (0, _lodashEs.ceil)(totalItems / currentPageSize);
|
|
119
|
+
}
|
|
120
|
+
return totalPages;
|
|
121
|
+
}, [groupby, groupedData, totalItems, currentPageSize, totalPages, paginationMeta]);
|
|
122
|
+
|
|
123
|
+
// Calculate current page items
|
|
124
|
+
var currentPageItems = (0, _react.useMemo)(function () {
|
|
125
|
+
if (!items || !(0, _lodashEs.isArray)(items) || items.length === 0) {
|
|
126
|
+
return {
|
|
127
|
+
currentItems: [],
|
|
128
|
+
startIndex: 0,
|
|
129
|
+
endIndex: 0
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
var startIndex = navigation === "On-Demand" ? 0 : (currentPage - 1) * currentPageSize;
|
|
133
|
+
var endIndex = navigation === "On-Demand" ? visibleItems : currentPage * currentPageSize;
|
|
134
|
+
var currentItems = (0, _lodashEs.slice)(items, startIndex, endIndex);
|
|
135
|
+
return {
|
|
136
|
+
currentItems: currentItems,
|
|
137
|
+
startIndex: startIndex,
|
|
138
|
+
endIndex: endIndex
|
|
139
|
+
};
|
|
140
|
+
}, [items, navigation, currentPage, currentPageSize, visibleItems]);
|
|
141
|
+
|
|
142
|
+
// Sync current page with datasource pagination metadata for SSP
|
|
143
|
+
(0, _react.useEffect)(function () {
|
|
144
|
+
// Only sync if we have server-side pagination with metadata
|
|
145
|
+
if (datasource && paginationMeta.number !== undefined && paginationMeta.totalElements !== undefined) {
|
|
146
|
+
// paginationMeta.number is 0-indexed, so add 1 for 1-indexed page number
|
|
147
|
+
var serverPage = paginationMeta.number + 1;
|
|
148
|
+
|
|
149
|
+
// Only update if the server page is different from current page
|
|
150
|
+
if (serverPage !== currentPage && serverPage > 0 && serverPage <= effectiveTotalPages) {
|
|
151
|
+
setCurrentPage(serverPage);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}, [paginationMeta.number, paginationMeta.totalElements, effectiveTotalPages]);
|
|
155
|
+
return {
|
|
156
|
+
currentPage: currentPage,
|
|
157
|
+
setCurrentPage: setCurrentPage,
|
|
158
|
+
currentPageSize: currentPageSize,
|
|
159
|
+
setCurrentPageSize: setCurrentPageSize,
|
|
160
|
+
totalPages: totalPages,
|
|
161
|
+
visibleItems: visibleItems,
|
|
162
|
+
setVisibleItems: setVisibleItems,
|
|
163
|
+
currentPageItems: currentPageItems,
|
|
164
|
+
effectiveTotalPages: effectiveTotalPages,
|
|
165
|
+
totalItems: totalItems,
|
|
166
|
+
paginationMeta: paginationMeta
|
|
167
|
+
};
|
|
168
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useListState = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _listHelpers = require("../utils/list-helpers");
|
|
9
|
+
/**
|
|
10
|
+
* Custom hook for managing list state
|
|
11
|
+
* @param dataset - The dataset array
|
|
12
|
+
* @param pagesize - Number of items per page
|
|
13
|
+
* @param selectfirstitem - Whether to select the first item by default
|
|
14
|
+
* @param selectionlimit - Maximum number of items that can be selected
|
|
15
|
+
* @param listener - Widget listener for widget updates
|
|
16
|
+
* @param name - Widget name
|
|
17
|
+
* @returns State management object for the list
|
|
18
|
+
*/
|
|
19
|
+
var useListState = exports.useListState = function useListState(dataset, pagesize, selectfirstitem, selectionlimit, listener, name) {
|
|
20
|
+
var _useState = (0, _react.useState)([]),
|
|
21
|
+
selectedItems = _useState[0],
|
|
22
|
+
setSelectedItems = _useState[1];
|
|
23
|
+
var _useState2 = (0, _react.useState)(1),
|
|
24
|
+
currentPage = _useState2[0],
|
|
25
|
+
setCurrentPage = _useState2[1];
|
|
26
|
+
var _useState3 = (0, _react.useState)(1),
|
|
27
|
+
totalPages = _useState3[0],
|
|
28
|
+
setTotalPages = _useState3[1];
|
|
29
|
+
var _useState4 = (0, _react.useState)(new Set()),
|
|
30
|
+
activeItems = _useState4[0],
|
|
31
|
+
setActiveItems = _useState4[1];
|
|
32
|
+
var _useState5 = (0, _react.useState)(null),
|
|
33
|
+
firstSelectedItem = _useState5[0],
|
|
34
|
+
setFirstSelectedItem = _useState5[1];
|
|
35
|
+
var _useState6 = (0, _react.useState)({}),
|
|
36
|
+
groupCollapsed = _useState6[0],
|
|
37
|
+
setGroupCollapsed = _useState6[1];
|
|
38
|
+
var _useState7 = (0, _react.useState)(pagesize),
|
|
39
|
+
visibleItems = _useState7[0],
|
|
40
|
+
setVisibleItems = _useState7[1];
|
|
41
|
+
var _useState8 = (0, _react.useState)(false),
|
|
42
|
+
isLoadingMore = _useState8[0],
|
|
43
|
+
setIsLoadingMore = _useState8[1];
|
|
44
|
+
var isInitialMount = (0, _react.useRef)(true);
|
|
45
|
+
(0, _react.useEffect)(function () {
|
|
46
|
+
// Ensure dataset is a valid array
|
|
47
|
+
var validDataset = Array.isArray(dataset) ? dataset : [];
|
|
48
|
+
var pageCount = Math.ceil(validDataset.length / (pagesize || 10));
|
|
49
|
+
setTotalPages(function (prev) {
|
|
50
|
+
return prev !== pageCount ? pageCount : prev;
|
|
51
|
+
});
|
|
52
|
+
}, [dataset, pagesize]);
|
|
53
|
+
|
|
54
|
+
// Sync visibleItems with pagesize when pagesize changes
|
|
55
|
+
(0, _react.useEffect)(function () {
|
|
56
|
+
setVisibleItems(pagesize);
|
|
57
|
+
}, [pagesize]);
|
|
58
|
+
|
|
59
|
+
// Separate effect for select first item to ensure it runs after data is ready
|
|
60
|
+
(0, _react.useEffect)(function () {
|
|
61
|
+
var validDataset = Array.isArray(dataset) ? dataset : [];
|
|
62
|
+
|
|
63
|
+
// Only select first item on initial mount or when dataset changes from empty to having data
|
|
64
|
+
if (selectfirstitem && validDataset.length > 0) {
|
|
65
|
+
if (isInitialMount.current) {
|
|
66
|
+
var firstItem = validDataset[0];
|
|
67
|
+
setSelectedItems([firstItem]);
|
|
68
|
+
setActiveItems(new Set([firstItem]));
|
|
69
|
+
setFirstSelectedItem(firstItem);
|
|
70
|
+
isInitialMount.current = false;
|
|
71
|
+
|
|
72
|
+
// Update selected item widgets after DOM is painted
|
|
73
|
+
if (listener !== null && listener !== void 0 && listener.onChange && name) {
|
|
74
|
+
requestAnimationFrame(function () {
|
|
75
|
+
(0, _listHelpers.getSelectedItemWidgets)(null, listener, name);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}, [dataset, selectfirstitem, name]);
|
|
81
|
+
return {
|
|
82
|
+
selectedItems: selectedItems,
|
|
83
|
+
setSelectedItems: setSelectedItems,
|
|
84
|
+
currentPage: currentPage,
|
|
85
|
+
setCurrentPage: setCurrentPage,
|
|
86
|
+
totalPages: totalPages,
|
|
87
|
+
activeItems: activeItems,
|
|
88
|
+
setActiveItems: setActiveItems,
|
|
89
|
+
firstSelectedItem: firstSelectedItem,
|
|
90
|
+
setFirstSelectedItem: setFirstSelectedItem,
|
|
91
|
+
groupCollapsed: groupCollapsed,
|
|
92
|
+
setGroupCollapsed: setGroupCollapsed,
|
|
93
|
+
visibleItems: visibleItems,
|
|
94
|
+
setVisibleItems: setVisibleItems,
|
|
95
|
+
isLoadingMore: isLoadingMore,
|
|
96
|
+
setIsLoadingMore: setIsLoadingMore
|
|
97
|
+
};
|
|
98
|
+
};
|