Browse Source

fix(components): resolve ineffectiveness of table editRow

main
刘凯 1 year ago
parent
commit
41294eb33f
  1. 27
      src/components/Table/src/components/editable/EditableCell.vue
  2. 17
      src/components/Table/src/types/table.ts

27
src/components/Table/src/components/editable/EditableCell.vue

@ -53,8 +53,8 @@ export default defineComponent({
const { prefixCls } = useDesign('editable-cell')
const getComponent = computed(() => props.column.edit && props.column?.editComponent || 'Input')
const getRule = computed(() => props.column.edit && props.column?.editRule)
const getComponent = computed(() => props.column?.editComponent || 'Input')
const getRule = computed(() => props.column?.editRule)
const getRuleOpen = computed(() => {
return unref(ruleMessage) && unref(ruleOpen)
@ -65,9 +65,6 @@ export default defineComponent({
return ['Checkbox', 'Switch'].includes(component)
})
const getDisable = computed(() => {
if (!props.column.edit)
return false
const { editDynamicDisabled } = props.column
let disabled = false
if (isBoolean(editDynamicDisabled))
@ -88,7 +85,7 @@ export default defineComponent({
const value = isCheckValue ? (isNumber(val) || isBoolean(val) ? val : !!val) : val
let compProps = (props.column?.edit && props.column?.editComponentProps) ?? ({} as any)
let compProps = props.column?.editComponentProps ?? ({} as any)
const { record, column, index } = props
if (isFunction(compProps))
@ -125,7 +122,7 @@ export default defineComponent({
}
const getValues = computed(() => {
const editValueMap = props.column.edit ? props.column.editValueMap : null
const { editValueMap } = props.column
const value = unref(currentValueRef)
@ -166,18 +163,12 @@ export default defineComponent({
})
watchEffect(() => {
if (!props.column.edit)
return
const { editable } = props.column
if (isBoolean(editable) || isBoolean(unref(getRowEditable)))
isEdit.value = !!editable || unref(getRowEditable)
})
function handleEdit() {
if (!props.column.edit)
return
if (unref(getRowEditable) || unref(props.column?.editRow))
return
ruleMessage.value = ''
@ -220,7 +211,7 @@ export default defineComponent({
async function handleSubmitRule() {
const { column, record } = props
const editRule = column.edit ? column.editRule : false
const { editRule } = column
const currentValue = unref(currentValueRef)
if (editRule) {
@ -302,7 +293,7 @@ export default defineComponent({
}
async function handleEnter() {
if (props.column?.edit && props.column?.editRow)
if (props.column?.editRow)
return
handleSubmit()
@ -326,7 +317,7 @@ export default defineComponent({
}
function onClickOutside() {
if (props.column?.edit && (props.column?.editable || unref(getRowEditable)))
if (props.column?.editable || unref(getRowEditable))
return
const component = unref(getComponent)
@ -422,7 +413,7 @@ export default defineComponent({
onClick={this.handleEdit}
>
<div class="cell-content" title={this.column.ellipsis ? this.getValues ?? '' : ''}>
{(this.column.edit && this.column.editRender)
{this.column.editRender
? this.column.editRender({
text: this.value,
record: this.record as Recordable,
@ -431,7 +422,7 @@ export default defineComponent({
})
: this.getValues ?? '\u00A0'}
</div>
{(this.column.edit && !this.column.editRow) && <FormOutlined class={`${this.prefixCls}__normal-icon`} />}
{!this.column.editRow && <FormOutlined class={`${this.prefixCls}__normal-icon`} />}
</div>
{this.isEdit && (
<Spin spinning={this.spinning}>

17
src/components/Table/src/types/table.ts

@ -449,15 +449,10 @@ export interface DefaultBasicColumn<T> extends Omit<ColumnProps<T>, 'filters'> {
auth?: RoleEnum | RoleEnum[] | string | string[]
// 业务控制是否显示
ifShow?: boolean | ((column: BasicColumn<T>) => boolean)
/**
* default is not editable
*/
edit?: false
}
export interface EditableBasicColumn<T, C extends ComponentType = any> extends Omit<DefaultBasicColumn<T>, 'edit'> {
edit: true
export interface EditableBasicColumn<T, C extends ComponentType = any> extends DefaultBasicColumn<T> {
edit?: boolean
editRow?: boolean
editable?: boolean
editComponent: C
@ -485,7 +480,13 @@ export interface EditableBasicColumn<T, C extends ComponentType = any> extends O
type EditableBasicColumns<T, C extends ComponentType = ComponentType> = C extends any ? EditableBasicColumn<T, C> : never
export type BasicColumn<T = Recordable> = DefaultBasicColumn<T> | EditableBasicColumns<T>
export type BasicColumn<T = Recordable> =
| (
DefaultBasicColumn<T> & {
[K in Exclude<keyof EditableBasicColumns<any>, keyof DefaultBasicColumn<any>>]?: never
}
)
| EditableBasicColumns<T>
export interface ColumnChangeParam {
dataIndex: string