UNPKG

@gravity-ui/uikit

Version:

Gravity UI base styling and components

52 lines (51 loc) 2.53 kB
'use client'; "use strict"; 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