@vlsergey/react-bootstrap-pagetable
Version:
Complex solution to work with pageable data, including sorting, filtering, actions, changing displayed columns, etc.
31 lines (30 loc) • 2.04 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = tslib_1.__importStar(require("react"));
var controlled_1 = require("../controlled/");
var ActionsContext_1 = tslib_1.__importDefault(require("./ActionsContext"));
var ActionsToolbar_1 = tslib_1.__importDefault(require("./ActionsToolbar"));
var withActions = function (Child) {
return function WithActions(_a) {
var actions = _a.actions, buttonProps = _a.buttonProps, _b = _a.footerElements, footerElements = _b === void 0 ? tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(controlled_1.DEFAULT_FOOTER_HEADER_ELEMENTS)), [
[[ActionsToolbar_1.default]],
]) : _b, onAfterAction = _a.onAfterAction, onRefreshRequired = _a.onRefreshRequired, onSelectedIdsChange = _a.onSelectedIdsChange, selectable = _a.selectable, etcProps = tslib_1.__rest(_a, ["actions", "buttonProps", "footerElements", "onAfterAction", "onRefreshRequired", "onSelectedIdsChange", "selectable"]);
var _c = tslib_1.__read(react_1.useState([]), 2), selectedIds = _c[0], setSelectedIds = _c[1];
var handleSelectedIdsChange = react_1.useCallback(function (selectedIds) {
setSelectedIds(selectedIds);
if (onSelectedIdsChange) {
onSelectedIdsChange(selectedIds);
}
}, [onSelectedIdsChange, setSelectedIds]);
return react_1.default.createElement(ActionsContext_1.default.Provider, { value: {
actions: actions,
buttonProps: buttonProps,
onAfterAction: onAfterAction,
onRefreshRequired: onRefreshRequired,
selectedIds: selectedIds,
} },
react_1.default.createElement(Child, tslib_1.__assign({}, etcProps, { footerElements: footerElements, onSelectedIdsChange: handleSelectedIdsChange, selectable: selectable || !!actions, selectedIds: selectedIds })));
};
};
exports.default = withActions;