From 404db2fb4975c69851dbf73a9ea8f981fb0ddb56 Mon Sep 17 00:00:00 2001 From: Heresy <731014288@qq.com> Date: Mon, 7 Dec 2020 22:37:33 +0800 Subject: [PATCH] fix(table): fix unsuccessful saving of row edit table (#117) Co-authored-by: heresy --- .../Table/src/components/renderEditable.tsx | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/components/Table/src/components/renderEditable.tsx b/src/components/Table/src/components/renderEditable.tsx index 7c3e4388805..5e2b95b578c 100644 --- a/src/components/Table/src/components/renderEditable.tsx +++ b/src/components/Table/src/components/renderEditable.tsx @@ -7,7 +7,7 @@ import { RenderEditableCellParams } from '../types/table'; import { ComponentType } from '../types/componentType'; import { componentMap } from '../componentMap'; -import { isString, isBoolean } from '/@/utils/is'; +import { isString, isBoolean, isArray } from '/@/utils/is'; import { FormOutlined, CloseOutlined, CheckOutlined } from '@ant-design/icons-vue'; const prefixCls = 'editable-cell'; @@ -50,6 +50,7 @@ const EditableCell = defineComponent({ }, placeholder: { type: String as PropType, + default: '', }, }, emits: ['submit', 'cancel'], @@ -92,9 +93,22 @@ const EditableCell = defineComponent({ if (props.record) { /* eslint-disable */ - props.record.onCancel = handleCancel; + isArray(props.record.submitCbs) + ? props.record.submitCbs.push(handleSubmit) + : (props.record.submitCbs = [handleSubmit]); + /* eslint-disable */ + isArray(props.record.cancelCbs) + ? props.record.cancelCbs.push(handleCancel) + : (props.record.cancelCbs = [handleCancel]); + + /* eslint-disable */ + props.record.onCancel = () => { + isArray(props.record?.cancelCbs) && props.record?.cancelCbs.forEach((fn) => fn()); + }; /* eslint-disable */ - props.record.onSubmit = handleSubmit; + props.record.onSubmit = () => { + isArray(props.record?.submitCbs) && props.record?.submitCbs.forEach((fn) => fn()); + }; } function handleSubmit() { @@ -222,4 +236,6 @@ export type EditRecordRow = { editable: boolean; onCancel: Fn; onSubmit: Fn; + submitCbs: Fn[]; + cancelCbs: Fn[]; } & T;