@antv/s2-react-components
Version:
React components for S2
32 lines • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FrozenInputNumber = 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 PRE_CLASS = `${s2_1.S2_PREFIX_CLS}-frozen-input-number`;
exports.FrozenInputNumber = react_1.default.memo((props) => {
const { disabled, value, onChange } = props, attrs = tslib_1.__rest(props, ["disabled", "value", "onChange"]);
const [inputValue, setInputValue] = react_1.default.useState(value);
const onDebounceChange = react_1.default.useMemo(() => {
return (0, lodash_1.debounce)((nextValue) => {
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue);
}, 500);
}, []);
react_1.default.useEffect(() => {
if (value !== inputValue) {
setInputValue(value);
}
return () => {
onDebounceChange.cancel();
};
}, [value]);
return (react_1.default.createElement(antd_1.InputNumber, Object.assign({ className: PRE_CLASS, size: "small", min: 0, max: 20, step: 1, precision: 0, disabled: disabled }, attrs, { value: inputValue, onChange: (nextValue) => {
setInputValue(nextValue);
onDebounceChange(nextValue);
} })));
});
exports.FrozenInputNumber.displayName = 'FrozenInputNumber';
//# sourceMappingURL=index.js.map