UNPKG

@antv/s2-react-components

Version:

React components for S2

73 lines 4.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FrozenPanel = void 0; const tslib_1 = require("tslib"); const s2_1 = require("@antv/s2"); const antd_1 = require("antd"); const lodash_1 = require("lodash"); const react_1 = tslib_1.__importDefault(require("react")); const common_1 = require("../common"); const frozen_input_number_1 = require("./frozen-input-number"); require("./index.less"); const PRE_CLASS = `${s2_1.S2_PREFIX_CLS}-frozen-panel`; exports.FrozenPanel = react_1.default.memo((props) => { const { title = (0, s2_1.i18n)('冻结行列头'), defaultOptions: defaultTextAlignPanelOptions, defaultCollapsed = false, inputNumberProps, showFrozenRowHeader = true, showFrozenRow = true, showFrozenCol = true, children, onChange, onReset, } = props; const [options, setOptions] = react_1.default.useState(Object.assign({ frozenRow: [], frozenCol: [], frozenRowHeader: true }, defaultTextAlignPanelOptions)); const defaultOptions = react_1.default.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: (0, s2_1.i18n)('行'), field: 'frozenRow', visible: showFrozenRow, }, { suffix: (0, s2_1.i18n)('列'), field: 'frozenCol', visible: showFrozenCol, }, ].filter(({ visible }) => visible); return (react_1.default.createElement(common_1.ResetGroup, { title: title, onResetClick: onResetClick, defaultCollapsed: defaultCollapsed, className: PRE_CLASS }, showFrozenRowHeader && (react_1.default.createElement("div", { className: `${PRE_CLASS}-container` }, react_1.default.createElement(antd_1.Checkbox, { checked: options.frozenRowHeader, onChange: onRowHeaderChange }, (0, s2_1.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 = !(0, lodash_1.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_1.default.createElement("div", { className: `${PRE_CLASS}-container`, key: config.field }, react_1.default.createElement(antd_1.Checkbox, { checked: enable, onChange: (event) => { onGroupChange(event.target.checked ? [1, 1] : []); } }, (0, s2_1.i18n)('冻结'), config.suffix), react_1.default.createElement("span", { className: `${PRE_CLASS}-container-group` }, (0, s2_1.i18n)('冻结前'), react_1.default.createElement(frozen_input_number_1.FrozenInputNumber, Object.assign({ disabled: !enable, value: leadingCount, onChange: (val) => { onGroupChange([val, trailingCount]); } }, inputNumberProps)), config.suffix), react_1.default.createElement("span", { className: `${PRE_CLASS}-container-group` }, (0, s2_1.i18n)('冻结后'), react_1.default.createElement(frozen_input_number_1.FrozenInputNumber, Object.assign({ disabled: !enable, value: trailingCount, onChange: (val) => { onGroupChange([leadingCount, val]); } }, inputNumberProps)), config.suffix))); }), children)); }); exports.FrozenPanel.displayName = 'FrozenPanel'; //# sourceMappingURL=frozen-panel.js.map