UNPKG

@vlsergey/react-bootstrap-pagetable

Version:

Complex solution to work with pageable data, including sorting, filtering, actions, changing displayed columns, etc.

45 lines (44 loc) 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var react_1 = tslib_1.__importStar(require("react")); var ControlledContext_1 = require("../controlled/ControlledContext"); var ActionsContext_1 = require("./ActionsContext"); var Toolbar_1 = tslib_1.__importDefault(require("./Toolbar")); function filterItemsByIdsImpl(itemModel, items, ids) { var item2Id = itemModel.idF; var idsSet = new Set(ids); return items.filter(function (item) { return idsSet.has(item2Id(item)); }); } function ActionsToolbar() { var _this = this; var _a = ActionsContext_1.useActionsContext(), actions = _a.actions, onAfterAction = _a.onAfterAction, onRefreshRequired = _a.onRefreshRequired, selectedIds = _a.selectedIds; var _b = ControlledContext_1.useControlledContext(), itemModel = _b.itemModel, page = _b.page, size = _b.size; var handleAfterAction = react_1.useCallback(function (action, items) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (!onAfterAction) return [3 /*break*/, 2]; return [4 /*yield*/, onAfterAction(action, items)]; case 1: _a.sent(); _a.label = 2; case 2: if (!(action.refreshAfterAction && onRefreshRequired)) return [3 /*break*/, 4]; return [4 /*yield*/, onRefreshRequired()]; case 3: _a.sent(); _a.label = 4; case 4: return [2 /*return*/]; } }); }); }, [onAfterAction, onRefreshRequired]); var selectedItems = react_1.useMemo(function () { return filterItemsByIdsImpl(itemModel, page.content, selectedIds); }, [itemModel, page.content, selectedIds]); if (!actions) { return null; } return react_1.default.createElement(Toolbar_1.default, { actions: actions, onAfterAction: handleAfterAction, selectedItems: selectedItems, size: size }); } exports.default = react_1.default.memo(ActionsToolbar);