UNPKG

antd-table-editable-af

Version:
141 lines (139 loc) 5.14 kB
var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/hooks/useCellEditable.tsx var useCellEditable_exports = {}; __export(useCellEditable_exports, { default: () => useCellEditable }); module.exports = __toCommonJS(useCellEditable_exports); var import_antd = require("antd"); var import_config_provider = require("antd/lib/config-provider"); var import_clsx = __toESM(require("clsx")); var import_omit = __toESM(require("lodash/omit")); var import_ref = require("rc-util/lib/ref"); var import_react = require("react"); var import_useClickAway = __toESM(require("./useClickAway")); function useCellEditable({ value, index, children, field, record, fieldProps: propsFieldProps, formItemProps: propsFormItemProps, editorType, cellComponent: CellComponent, onClick, onSave, ...restProps }) { const [selected, setSelected] = (0, import_react.useState)(false); const [mode, setMode] = (0, import_react.useState)("read"); const cellRef = (0, import_react.useRef)(null); const [form] = import_antd.Form.useForm(); const { getPrefixCls } = (0, import_react.useContext)(import_config_provider.ConfigContext); const prefixCls = getPrefixCls("table"); (0, import_useClickAway.default)(cellRef, () => { setSelected(false); setMode("read"); }); const fieldProps = typeof propsFieldProps === "function" ? propsFieldProps(value, record, index) : propsFieldProps; const formItemProps = typeof propsFormItemProps === "function" ? propsFormItemProps(value, record, index) : propsFormItemProps; const cellProps = { ...(0, import_omit.default)(restProps, ["record", "editable"]), onClick: (e) => { setSelected(true); onClick == null ? void 0 : onClick(e); } }; const render = (content, params) => { var _a; const node = /* @__PURE__ */ React.createElement( import_antd.Form, { form, component: false, preserve: false, ...params == null ? void 0 : params.formProps, onFinish: (values) => { var _a2, _b; (_b = (_a2 = params == null ? void 0 : params.formProps) == null ? void 0 : _a2.onFinish) == null ? void 0 : _b.call(_a2, values); }, onValuesChange: (changedValues, values) => { var _a2, _b; (_b = (_a2 = params == null ? void 0 : params.formProps) == null ? void 0 : _a2.onValuesChange) == null ? void 0 : _b.call(_a2, changedValues, values); onSave({ field, value: Object.values(values)[0], index, editorType }); }, onFinishFailed: (errorInfo) => { var _a2, _b; (_b = (_a2 = params == null ? void 0 : params.formProps) == null ? void 0 : _a2.onFinishFailed) == null ? void 0 : _b.call(_a2, errorInfo); } }, /* @__PURE__ */ React.createElement( import_antd.Form.Item, { initialValue: value, noStyle: true, ...params == null ? void 0 : params.formItemProps, ...formItemProps, name: `${index}-name` }, content ) ); return /* @__PURE__ */ React.createElement( CellComponent, { ...params == null ? void 0 : params.cellProps, ref: (0, import_ref.composeRef)(cellRef, (_a = params == null ? void 0 : params.cellProps) == null ? void 0 : _a.ref), className: (0, import_clsx.default)( { [`${prefixCls}-cell-selected`]: selected }, cellProps == null ? void 0 : cellProps.className, restProps.className ), style: { ...cellProps == null ? void 0 : cellProps.style, ...restProps.style } }, node ); }; return { mode, selected, setMode, setSelected, render, form, fieldProps, cellProps }; }