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