UNPKG

@antv/s2-react-components

Version:

React components for S2

69 lines 3.93 kB
import { S2_PREFIX_CLS, i18n } from '@antv/s2'; import { Checkbox } from 'antd'; import { isEmpty } from 'lodash'; import React from 'react'; import { ResetGroup } from '../common'; import { FrozenInputNumber } from './frozen-input-number'; import './index.less'; const PRE_CLASS = `${S2_PREFIX_CLS}-frozen-panel`; export const FrozenPanel = React.memo((props) => { const { title = i18n('冻结行列头'), defaultOptions: defaultTextAlignPanelOptions, defaultCollapsed = false, inputNumberProps, showFrozenRowHeader = true, showFrozenRow = true, showFrozenCol = true, children, onChange, onReset, } = props; const [options, setOptions] = React.useState(Object.assign({ frozenRow: [], frozenCol: [], frozenRowHeader: true }, defaultTextAlignPanelOptions)); const defaultOptions = React.useRef(options); const onResetClick = () => { setOptions(defaultOptions.current); onReset === null || onReset === void 0 ? void 0 : onReset(defaultOptions.current, options); }; const onRowHeaderChange = (event) => { const newOptions = Object.assign(Object.assign({}, options), { frozenRowHeader: event.target.checked }); setOptions(newOptions); onChange === null || onChange === void 0 ? void 0 : onChange(newOptions); }; const BASE_FROZEN_CONFIG = [ { suffix: i18n('行'), field: 'frozenRow', visible: showFrozenRow, }, { suffix: i18n('列'), field: 'frozenCol', visible: showFrozenCol, }, ].filter(({ visible }) => visible); return (React.createElement(ResetGroup, { title: title, onResetClick: onResetClick, defaultCollapsed: defaultCollapsed, className: PRE_CLASS }, showFrozenRowHeader && (React.createElement("div", { className: `${PRE_CLASS}-container` }, React.createElement(Checkbox, { checked: options.frozenRowHeader, onChange: onRowHeaderChange }, i18n('冻结行头')))), BASE_FROZEN_CONFIG.map((config) => { var _a, _b; const leadingCount = (_a = options[config.field]) === null || _a === void 0 ? void 0 : _a[0]; const trailingCount = (_b = options[config.field]) === null || _b === void 0 ? void 0 : _b[1]; const enable = !isEmpty(options[config.field]); const onGroupChange = (value) => { const newOptions = Object.assign(Object.assign({}, options), { [config.field]: value }); setOptions(newOptions); onChange === null || onChange === void 0 ? void 0 : onChange(newOptions); }; return (React.createElement("div", { className: `${PRE_CLASS}-container`, key: config.field }, React.createElement(Checkbox, { checked: enable, onChange: (event) => { onGroupChange(event.target.checked ? [1, 1] : []); } }, i18n('冻结'), config.suffix), React.createElement("span", { className: `${PRE_CLASS}-container-group` }, i18n('冻结前'), React.createElement(FrozenInputNumber, Object.assign({ disabled: !enable, value: leadingCount, onChange: (val) => { onGroupChange([val, trailingCount]); } }, inputNumberProps)), config.suffix), React.createElement("span", { className: `${PRE_CLASS}-container-group` }, i18n('冻结后'), React.createElement(FrozenInputNumber, Object.assign({ disabled: !enable, value: trailingCount, onChange: (val) => { onGroupChange([leadingCount, val]); } }, inputNumberProps)), config.suffix))); }), children)); }); FrozenPanel.displayName = 'FrozenPanel'; //# sourceMappingURL=frozen-panel.js.map