@gravity-ui/uikit
Version:
Gravity UI base styling and components
52 lines (51 loc) • 2.53 kB
JavaScript
'use client';
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TableColumnSetup = void 0;
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const icons_1 = require("@gravity-ui/icons");
const Button_1 = require("../Button/index.js");
const Icon_1 = require("../Icon/index.js");
const TableColumnSetup_1 = require("../Table/hoc/withTableSettings/TableColumnSetup/TableColumnSetup.js");
const cn_1 = require("../utils/cn.js");
const i18n_1 = tslib_1.__importDefault(require("./i18n/index.js"));
require("./TableColumnSetup.css");
const b = (0, cn_1.block)('table-column-setup');
const TableColumnSetup = (props) => {
const { switcher, renderSwitcher: renderSwitcherProps, disabled, popupWidth, popupPlacement, className, items: propsItems, sortable = true, showStatus, onUpdate: propsOnUpdate, } = props;
const renderStatus = () => {
if (!showStatus) {
return null;
}
const selected = propsItems.reduce((acc, cur) => (cur.selected ? acc + 1 : acc), 0);
const all = propsItems.length;
const status = `${selected}/${all}`;
return (0, jsx_runtime_1.jsx)("span", { className: b('status'), children: status });
};
const renderSwitcher = (switcherProps) => {
return (renderSwitcherProps?.(switcherProps) ||
switcher || ((0, jsx_runtime_1.jsxs)(Button_1.Button, { disabled: disabled, onClick: switcherProps.onClick, children: [(0, jsx_runtime_1.jsx)(Icon_1.Icon, { data: icons_1.Gear }), (0, i18n_1.default)('button_switcher'), renderStatus()] })));
};
const items = propsItems.map(({ id, title, required, selected, sticky }) => ({
id,
title,
isRequired: required,
isSelected: selected,
sticky,
}));
const onUpdate = (newSettings) => {
propsOnUpdate(newSettings.map(({ id, isSelected }) => {
const prevItem = propsItems.find((item) => item.id === id);
return {
id,
selected: isSelected,
title: prevItem?.title,
required: prevItem?.required,
};
}));
};
return ((0, jsx_runtime_1.jsx)(TableColumnSetup_1.TableColumnSetup, { items: items, onUpdate: onUpdate, popupPlacement: popupPlacement, popupWidth: popupWidth, renderSwitcher: renderSwitcher, sortable: sortable, className: b(null, className) }));
};
exports.TableColumnSetup = TableColumnSetup;
//# sourceMappingURL=TableColumnSetup.js.map