{"version":3,"file":"editable-cell.mjs","sources":["../../../../components/table/components/editable-cell.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, onUnmounted, PropType, ref, SetupContext, toRefs, watch } from 'vue';\nimport { get, set, isFunction, cloneDeep, isObject } from 'lodash-es';\nimport { Edit1Icon as TdEdit1Icon } from 'tdesign-icons-vue-next';\nimport {\n  TableRowData,\n  PrimaryTableCol,\n  PrimaryTableRowEditContext,\n  PrimaryTableRowValidateContext,\n  TdBaseTableProps,\n  TableEditableCellPropsParams,\n} from '../type';\nimport { TableClassName } from '../hooks/useClassName';\nimport { useGlobalIcon, usePrefixClass } from '@tdesign/shared-hooks';\nimport { renderCell } from './tr';\nimport { validate } from '../../form/utils/form-model';\nimport log from '@tdesign/common-js/log/index';\nimport { AllValidateResult } from '../../form/type';\nimport { on, off } from '@tdesign/shared-utils';\n\nexport interface OnEditableChangeContext<T> extends PrimaryTableRowEditContext<T> {\n  isEdit: boolean;\n  validateEdit: (trigger: 'self' | 'parent') => Promise<true | AllValidateResult[]>;\n}\n\n/** EditableCell 实例类型，包含暴露的方法 */\nexport interface EditableCellInstance {\n  clearValidateCellData: () => void;\n}\n\nexport interface EditableCellProps {\n  rowKey: string;\n  row: TableRowData;\n  rowIndex: number;\n  col: PrimaryTableCol<TableRowData>;\n  colIndex: number;\n  oldCell: PrimaryTableCol<TableRowData>['cell'];\n  tableBaseClass?: TableClassName['tableBaseClass'];\n  /** 行编辑需要使用 editable。单元格编辑则无需使用，设置为 undefined */\n  editable?: boolean;\n  readonly?: boolean;\n  errors?: AllValidateResult[];\n  cellEmptyContent?: TdBaseTableProps['cellEmptyContent'];\n  /** 单元格唯一标识，用于实例注册 */\n  cellKey?: string;\n  /** 单元格实例变化回调，用于注册/注销实例 */\n  onCellInstanceChange?: (cellKey: string, instance: EditableCellInstance | null) => void;\n  /** 编辑数据时触发 */\n  onChange?: (context: PrimaryTableRowEditContext<TableRowData>) => void;\n  /** 校验结束后触发 */\n  onValidate?: (context: PrimaryTableRowValidateContext<TableRowData>) => void;\n  /** 校验规则发生变化时触发 */\n  onRuleChange?: (context: PrimaryTableRowEditContext<TableRowData>) => void;\n  /** 进入或退出编辑态时触发 */\n  onEditableChange?: (context: OnEditableChangeContext<TableRowData>) => void;\n}\n\nexport default defineComponent({\n  name: 'TableEditableCell',\n  props: {\n    row: Object as PropType<EditableCellProps['row']>,\n    rowKey: String,\n    rowIndex: Number,\n    col: Object as PropType<EditableCellProps['col']>,\n    colIndex: Number,\n    oldCell: [Function, String] as PropType<EditableCellProps['oldCell']>,\n    tableBaseClass: Object as PropType<EditableCellProps['tableBaseClass']>,\n    cellEmptyContent: [Function, String] as PropType<EditableCellProps['cellEmptyContent']>,\n    editable: {\n      type: Boolean,\n      default: undefined,\n    },\n    readonly: {\n      type: Boolean,\n    },\n    errors: {\n      type: Array as PropType<EditableCellProps['errors']>,\n      default: undefined,\n    },\n    onChange: Function as PropType<EditableCellProps['onChange']>,\n    onValidate: Function as PropType<EditableCellProps['onValidate']>,\n    onRuleChange: Function as PropType<EditableCellProps['onRuleChange']>,\n    onEditableChange: Function as PropType<EditableCellProps['onEditableChange']>,\n    cellKey: String,\n    onCellInstanceChange: Function as PropType<EditableCellProps['onCellInstanceChange']>,\n  },\n\n  emits: ['update-edited-cell'],\n\n  setup(props: EditableCellProps, context: SetupContext) {\n    const { row, col } = toRefs(props);\n    const isKeepEditMode = computed(() => col.value.edit?.keepEditMode);\n    // 标志位：用于阻止 clearValidateCellData 执行时 documentClickHandler 的触发\n    const isClearingValidate = ref(false);\n    const isEdit = ref(isKeepEditMode.value || props.col.edit?.defaultEditable || false);\n    const editValue = ref();\n    const errorList = ref<AllValidateResult[]>();\n    const classPrefix = usePrefixClass();\n\n    const { Edit1Icon } = useGlobalIcon({ Edit1Icon: TdEdit1Icon });\n\n    const updateEditedCellValue: TableEditableCellPropsParams<TableRowData>['updateEditedCellValue'] = (obj) => {\n      if (typeof obj === 'object' && ('rowValue' in obj || obj.isUpdateCurrentRow)) {\n        const rowValue = obj.isUpdateCurrentRow ? get(row.value, props.rowKey) : obj.rowValue;\n        delete obj.rowValue;\n        delete obj.isUpdateCurrentRow;\n        context.emit('update-edited-cell', rowValue, row.value, obj);\n      } else {\n        editValue.value = obj;\n      }\n    };\n\n    watch([isKeepEditMode], (val) => {\n      if (val) {\n        isEdit.value = true;\n      }\n    });\n\n    const editOnListeners = computed(() => {\n      return col.value.edit?.on?.({ ...cellParams.value, editedRow: currentRow.value, updateEditedCellValue }) || {};\n    });\n\n    const cellParams = computed(() => ({\n      rowIndex: props.rowIndex,\n      colIndex: props.colIndex,\n      col: props.col,\n      row: props.row,\n    }));\n\n    const currentRow = computed(() => {\n      const { colKey } = col.value;\n      // handle colKey like a.b.c\n      const [firstKey, ...restKeys] = colKey.split('.') || [];\n      const newRow = { ...row.value };\n      if (restKeys.length) {\n        newRow[firstKey] = cloneDeep(row.value[firstKey]);\n        set(newRow[firstKey], restKeys.join('.'), editValue.value);\n      } else {\n        set(newRow, colKey, editValue.value);\n      }\n      return newRow;\n    });\n\n    const cellNode = computed(() => {\n      const node = renderCell(\n        {\n          row: currentRow.value,\n          col: { ...col.value, cell: props.oldCell },\n          rowIndex: props.rowIndex,\n          colIndex: props.colIndex,\n        },\n        context.slots,\n        { cellEmptyContent: props.cellEmptyContent },\n      );\n      return node;\n    });\n\n    const editProps = computed(() => {\n      const { edit } = col.value;\n      return isFunction(edit.props)\n        ? edit.props({\n            ...cellParams.value,\n            editedRow: currentRow.value,\n            updateEditedCellValue,\n          })\n        : { ...edit.props };\n    });\n\n    const componentProps = computed(() => {\n      const { edit } = col.value;\n      if (!edit) return {};\n      const tmpProps = { ...editProps.value };\n      // for removing warn: runtime-core.esm-bundler.js:38 [Vue warn]: Invalid prop: type check failed for prop \"onChange\". Expected Function, got Array\n      delete tmpProps.onChange;\n      delete tmpProps.value;\n      edit.abortEditOnEvent?.forEach((item) => {\n        delete tmpProps[item];\n      });\n      return tmpProps;\n    });\n\n    const isAbortEditOnChange = computed(() => {\n      const { edit } = col.value;\n      if (!edit) return false;\n      return Boolean(edit.abortEditOnEvent?.includes('onChange'));\n    });\n\n    const validateEdit = (trigger: 'self' | 'parent'): Promise<true | AllValidateResult[]> => {\n      return new Promise((resolve) => {\n        const params: PrimaryTableRowValidateContext<TableRowData> = {\n          result: [\n            {\n              ...cellParams.value,\n              errorList: [],\n              value: editValue.value,\n            },\n          ],\n          trigger,\n        };\n        const rules = isFunction(col.value.edit.rules) ? col.value.edit.rules(cellParams.value) : col.value.edit.rules;\n\n        if (!col.value.edit || !rules || !rules.length) {\n          props.onValidate?.(params);\n\n          resolve(true);\n          return;\n        }\n        validate(editValue.value, rules).then((result) => {\n          const list = result?.filter((t) => !t.result);\n          params.result[0].errorList = list;\n          props.onValidate?.(params);\n          if (!list || !list.length) {\n            errorList.value = [];\n            resolve(true);\n          } else {\n            errorList.value = list;\n\n            resolve(list);\n          }\n        });\n      });\n    };\n\n    const isSame = (a: any, b: any) => {\n      if (isObject(a) && isObject(b)) {\n        return JSON.stringify(a) === JSON.stringify(b);\n      }\n      return a === b;\n    };\n\n    const updateAndSaveAbort = (outsideAbortEvent: Function, eventName: string, ...args: any) => {\n      validateEdit('self').then((result) => {\n        if (result !== true) return;\n        const oldValue = get(row.value, col.value.colKey);\n        // 相同的值无需触发变化\n        if (!isSame(editValue.value, oldValue)) {\n          editValue.value = oldValue;\n          outsideAbortEvent?.(...args);\n        }\n        if (isKeepEditMode.value) return;\n        editOnListeners.value[eventName]?.(args[2]);\n        // 此处必须在事件执行完成后异步销毁编辑组件，否则会导致事件清除不及时引起的其他问题\n        const timer = setTimeout(() => {\n          errorList.value = [];\n          isEdit.value = false;\n          props.onEditableChange?.({\n            ...cellParams.value,\n            value: editValue.value,\n            editedRow: { ...props.row, [props.col.colKey]: editValue.value },\n            validateEdit,\n            isEdit: false,\n          });\n          clearTimeout(timer);\n        }, 0);\n      });\n    };\n\n    const listeners = computed<{ [key: string]: Function }>(() => {\n      const { edit } = col.value;\n      const isCellEditable = props.editable === undefined;\n      if (!isEdit.value || !isCellEditable) return;\n      if (!edit?.abortEditOnEvent?.length) return {};\n      // 自定义退出编辑态的事件\n      const tListeners: Record<string, Function> = {};\n      const outsideAbortEvent = edit?.onEdited;\n      edit.abortEditOnEvent.forEach((itemEvent) => {\n        if (itemEvent === 'onChange') return;\n        tListeners[itemEvent] = (...args: any) => {\n          updateAndSaveAbort(\n            outsideAbortEvent,\n            itemEvent,\n            {\n              ...cellParams.value,\n              trigger: itemEvent,\n              newRowData: currentRow.value,\n            },\n            ...args,\n          );\n        };\n      });\n\n      return tListeners;\n    });\n\n    // 数据输入时触发\n    const onEditChange = (val: any, ...args: any) => {\n      editValue.value = val;\n      const params = {\n        ...cellParams.value,\n        value: val,\n        editedRow: { ...props.row, [props.col.colKey]: val },\n      };\n      editProps.value?.onChange?.(val, ...args);\n      props.onChange?.(params);\n      props.onRuleChange?.(params);\n      editOnListeners.value?.onChange?.(params);\n      const isCellEditable = props.editable === undefined;\n      if (isCellEditable && isAbortEditOnChange.value) {\n        const outsideAbortEvent = col.value.edit?.onEdited;\n        updateAndSaveAbort(\n          outsideAbortEvent,\n          'change',\n          {\n            ...cellParams.value,\n            trigger: 'onChange',\n            newRowData: currentRow.value,\n          },\n          ...args,\n        );\n      }\n      if (col.value.edit?.validateTrigger === 'change') {\n        validateEdit('self');\n      }\n    };\n\n    const documentClickHandler = (e: MouseEvent) => {\n      // 标志位为 true 时跳过执行，避免 clearValidateCellData 时触发\n      if (isClearingValidate.value) {\n        isClearingValidate.value = false;\n        return;\n      }\n      if (!col.value.edit || !col.value.edit.component) return;\n      if (!isEdit.value) return;\n      // @ts-ignore some browser is also only support e.path\n      const path = e.composedPath?.() || e.path || [];\n      const node = path.find((node: HTMLElement) => node.classList?.contains(`${classPrefix.value}-popup__content`));\n      if (node) return;\n      const outsideAbortEvent = col.value.edit.onEdited;\n\n      updateAndSaveAbort(outsideAbortEvent, '', {\n        ...cellParams.value,\n        trigger: 'document',\n        newRowData: currentRow.value,\n      });\n    };\n\n    const enterEdit = () => {\n      props.onEditableChange?.({\n        ...cellParams.value,\n        value: editValue.value,\n        editedRow: props.row,\n        isEdit: true,\n        validateEdit,\n      });\n    };\n\n    const onCellClick = (e: MouseEvent) => {\n      isEdit.value = true;\n      enterEdit();\n      e.stopPropagation();\n    };\n\n    const clearValidateCellData = () => {\n      isClearingValidate.value = true;\n      errorList.value = [];\n    };\n\n    // 暴露给父组件的实例\n    const exposedInstance: EditableCellInstance = {\n      clearValidateCellData,\n    };\n\n    onMounted(() => {\n      if (props.col.edit?.defaultEditable || props.col.edit?.keepEditMode) {\n        enterEdit();\n      }\n      // 注册实例到父组件\n      if (props.cellKey && props.onCellInstanceChange) {\n        props.onCellInstanceChange(props.cellKey, exposedInstance);\n      }\n    });\n\n    onUnmounted(() => {\n      // 注销实例\n      if (props.cellKey && props.onCellInstanceChange) {\n        props.onCellInstanceChange(props.cellKey, null);\n      }\n    });\n\n    const cellValue = computed(() => get(row.value, col.value.colKey));\n\n    watch(\n      cellValue,\n      (cellValue) => {\n        editValue.value = cellValue;\n      },\n      { immediate: true },\n    );\n\n    watch(\n      isEdit,\n      (isEdit) => {\n        const isCellEditable = props.editable === undefined;\n        if (!col.value.edit || !col.value.edit.component || !isCellEditable) return;\n        if (isEdit) {\n          on(document, 'click', documentClickHandler);\n        } else {\n          off(document, 'click', documentClickHandler);\n        }\n      },\n      { immediate: true },\n    );\n\n    watch(\n      () => [props.editable, props.row, props.col, props.rowIndex, props.colIndex],\n      ([editable]: [boolean]) => {\n        // 退出编辑态时，恢复原始值，等待父组件传入新的 data 值\n        if (editable === false) {\n          editValue.value = cellValue.value;\n        } else if (editable === true) {\n          props.onRuleChange?.({\n            ...cellParams.value,\n            value: cellValue.value,\n            editedRow: row.value,\n          });\n        }\n      },\n      { immediate: true },\n    );\n\n    watch(\n      () => props.errors,\n      (errors) => {\n        errorList.value = errors;\n      },\n    );\n\n    context.expose(exposedInstance);\n\n    return () => {\n      if (props.readonly) {\n        return cellNode.value;\n      }\n      // props.editable = undefined 表示由组件内部控制编辑状态\n      if ((props.editable === undefined && !isEdit.value) || props.editable === false) {\n        return (\n          <div class={props.tableBaseClass.cellEditable} onClick={onCellClick}>\n            {cellNode.value}\n            {col.value.edit?.showEditIcon !== false && <Edit1Icon />}\n          </div>\n        );\n      }\n      const Component = col.value.edit?.component;\n      if (!Component) {\n        log.error('Table', 'edit.component is required.');\n        return null;\n      }\n      const errorMessage = errorList.value?.[0]?.message;\n      const tmpEditOnListeners = { ...editOnListeners.value };\n      delete tmpEditOnListeners.onChange;\n      // remove conflict events\n      if (col.value.edit?.abortEditOnEvent?.length) {\n        col.value.edit.abortEditOnEvent.forEach((onEventName) => {\n          if (tmpEditOnListeners[onEventName]) {\n            delete tmpEditOnListeners[onEventName];\n          }\n        });\n      }\n      return (\n        <div\n          class={props.tableBaseClass.cellEditWrap}\n          onClick={(e: MouseEvent) => {\n            e.stopPropagation();\n          }}\n        >\n          <Component\n            status={errorMessage ? errorList.value?.[0]?.type || 'error' : undefined}\n            tips={errorMessage}\n            {...componentProps.value}\n            {...listeners.value}\n            {...tmpEditOnListeners}\n            value={editValue.value}\n            onChange={onEditChange}\n          />\n        </div>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","name","props","row","Object","rowKey","String","rowIndex","Number","col","colIndex","oldCell","Function","tableBaseClass","cellEmptyContent","editable","type","Boolean","readonly","errors","Array","onChange","onValidate","onRuleChange","onEditableChange","cellKey","onCellInstanceChange","emits","setup","context","_props$col$edit","_toRefs","toRefs","isKeepEditMode","computed","_col$value$edit","value","edit","keepEditMode","isClearingValidate","ref","isEdit","defaultEditable","editValue","errorList","classPrefix","usePrefixClass","_useGlobalIcon","useGlobalIcon","Edit1Icon","TdEdit1Icon","updateEditedCellValue","obj","_typeof","isUpdateCurrentRow","rowValue","get","emit","watch","val","editOnListeners","_col$value$edit2","_col$value$edit2$on","on","call","_objectSpread","cellParams","editedRow","currentRow","colKey","_ref","split","_ref2","_toArray","firstKey","restKeys","slice","newRow","length","cloneDeep","set","join","cellNode","node","renderCell","cell","slots","editProps","isFunction","componentProps","_edit$abortEditOnEven","tmpProps","abortEditOnEvent","forEach","item","isAbortEditOnChange","_edit$abortEditOnEven2","includes","validateEdit","trigger","Promise","resolve","params","result","rules","_props$onValidate","validate","then","_props$onValidate2","list","filter","t","isSame","a","b","isObject","JSON","stringify","updateAndSaveAbort","outsideAbortEvent","eventName","_len","arguments","args","_key","_editOnListeners$valu","_editOnListeners$valu2","oldValue","apply","timer","setTimeout","_props$onEditableChan","_defineProperty","clearTimeout","listeners","_edit$abortEditOnEven3","isCellEditable","tListeners","onEdited","itemEvent","_len2","_key2","newRowData","concat","onEditChange","_editProps$value","_editProps$value$onCh","_props$onChange","_props$onRuleChange","_editOnListeners$valu3","_editOnListeners$valu4","_col$value$edit4","_len3","_key3","_col$value$edit3","validateTrigger","documentClickHandler","e","_e$composedPath","component","path","composedPath","find","classList","_node2$classList","contains","enterEdit","_props$onEditableChan2","onCellClick","stopPropagation","clearValidateCellData","exposedInstance","onMounted","_props$col$edit2","_props$col$edit3","onUnmounted","cellValue","immediate","document","off","_ref3","_ref4","_slicedToArray","_props$onRuleChange2","expose","_col$value$edit6","_errorList$value","_col$value$edit7","_errorList$value2","_col$value$edit5","_createVNode","cellEditable","showEditIcon","Component","log","error","errorMessage","message","tmpEditOnListeners","onEventName","cellEditWrap","onClick","_mergeProps"],"mappings":"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"}