@vlsergey/react-bootstrap-pagetable
Version:
Complex solution to work with pageable data, including sorting, filtering, actions, changing displayed columns, etc.
29 lines (28 loc) • 1.83 kB
JavaScript
import { __assign, __read, __rest, __spreadArray } from "tslib";
import React, { useCallback, useState } from 'react';
import { DEFAULT_FOOTER_HEADER_ELEMENTS } from '../controlled/';
import ActionsContext from './ActionsContext';
import ActionsToolbar from './ActionsToolbar';
var withActions = function (Child) {
return function WithActions(_a) {
var actions = _a.actions, buttonProps = _a.buttonProps, _b = _a.footerElements, footerElements = _b === void 0 ? __spreadArray(__spreadArray([], __read(DEFAULT_FOOTER_HEADER_ELEMENTS)), [
[[ActionsToolbar]],
]) : _b, onAfterAction = _a.onAfterAction, onRefreshRequired = _a.onRefreshRequired, onSelectedIdsChange = _a.onSelectedIdsChange, selectable = _a.selectable, etcProps = __rest(_a, ["actions", "buttonProps", "footerElements", "onAfterAction", "onRefreshRequired", "onSelectedIdsChange", "selectable"]);
var _c = __read(useState([]), 2), selectedIds = _c[0], setSelectedIds = _c[1];
var handleSelectedIdsChange = useCallback(function (selectedIds) {
setSelectedIds(selectedIds);
if (onSelectedIdsChange) {
onSelectedIdsChange(selectedIds);
}
}, [onSelectedIdsChange, setSelectedIds]);
return React.createElement(ActionsContext.Provider, { value: {
actions: actions,
buttonProps: buttonProps,
onAfterAction: onAfterAction,
onRefreshRequired: onRefreshRequired,
selectedIds: selectedIds,
} },
React.createElement(Child, __assign({}, etcProps, { footerElements: footerElements, onSelectedIdsChange: handleSelectedIdsChange, selectable: selectable || !!actions, selectedIds: selectedIds })));
};
};
export default withActions;