@antv/s2-react-components
Version:
React components for S2
69 lines • 3.93 kB
JavaScript
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