UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 25.5 kB
{"version":3,"file":"editable-cell.mjs","sources":["../../src/table/editable-cell.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, PropType, ref, SetupContext, toRefs, watch } from 'vue';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\nimport isFunction from 'lodash/isFunction';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {\n TableRowData,\n PrimaryTableCol,\n PrimaryTableRowEditContext,\n PrimaryTableRowValidateContext,\n TdBaseTableProps,\n} from './type';\nimport { TableClassName } from './hooks/useClassName';\nimport { renderCell } from './tr';\nimport { validate } from '../form/form-model';\nimport log from '../_common/js/log';\nimport { AllValidateResult } from '../form/type';\nimport { on, off } from '../utils/dom';\nimport isObject from 'lodash/isObject';\nimport { usePrefixClass } from '../hooks/useConfig';\n\nexport interface OnEditableChangeContext<T> extends PrimaryTableRowEditContext<T> {\n isEdit: boolean;\n validateEdit: (trigger: 'self' | 'parent') => Promise<true | AllValidateResult[]>;\n}\n\nexport interface EditableCellProps {\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 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: 'XableEditableCell',\n props: {\n row: Object as PropType<EditableCellProps['row']>,\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 },\n\n setup(props: EditableCellProps, context: SetupContext) {\n const { row, col } = toRefs(props);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const tableEditableCellRef = ref(null);\n const isKeepEditMode = computed(() => col.value.edit?.keepEditMode);\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 updateEditedCellValue = (val: any) => {\n editValue.value = val;\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 componentProps = computed(() => {\n const { edit } = col.value;\n if (!edit) return {};\n const editProps = isFunction(edit.props)\n ? edit.props({\n ...cellParams.value,\n editedRow: currentRow.value,\n updateEditedCellValue,\n })\n : { ...edit.props };\n // to remove warn: runtime-core.esm-bundler.js:38 [Vue warn]: Invalid prop: type check failed for prop \"onChange\". Expected Function, got Array\n delete editProps.onChange;\n delete editProps.value;\n edit.abortEditOnEvent?.forEach((item) => {\n delete editProps[item];\n });\n return editProps;\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 if (!col.value.edit || !rules || !rules.length) {\n props.onValidate?.(params);\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 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 editOnListeners.value[eventName]?.(args[2]);\n // 此处必须在事件执行完成后异步销毁编辑组件,否则会导致事件清除不及时引起的其他问题\n const timer = setTimeout(() => {\n if (!isKeepEditMode.value) {\n isEdit.value = false;\n }\n errorList.value = [];\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 = {};\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 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 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 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 onMounted(() => {\n if (props.col.edit?.defaultEditable) {\n enterEdit();\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 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 && <icon-ri-edit-line />}\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 ref=\"tableEditableCellRef\"\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":["name","props","row","rowIndex","col","colIndex","oldCell","tableBaseClass","cellEmptyContent","editable","type","readonly","errors","onChange","onValidate","onRuleChange","onEditableChange","setup","watch","updateEditedCellValue","firstKey","newRow","set","isFunction","errorList","trigger","validate","args","get","validateEdit","isEdit","edit","tListeners","updateAndSaveAbort","value","editedRow","node","enterEdit","onMounted","immediate","on","off","editValue","_createVNode","_resolveComponent","log","_mergeProps"],"mappings":"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"}