Skip to content

Commit

Permalink
fix(table): fix known errors in editable tables close #267
Browse files Browse the repository at this point in the history
  • Loading branch information
anncwb committed Feb 19, 2021
1 parent e250ad5 commit 4f8e1c1
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 24 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.zh_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,16 @@

- 新增 `settingButtonPosition`配置项,用于配置`设置`按钮位置

### ⚡ Performance Improvements

- 优化可编辑居中样式及下拉框宽度过短
- 表格新增编辑时`edit-change`事件监听

### 🐛 Bug Fixes

- 修复图片预览样式错误
- 修复图标样式问题
- 修复可编辑表格下拉回显问题

## 2.0.0 (2021-02-18)

Expand Down
1 change: 1 addition & 0 deletions src/components/Table/src/BasicTable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
'edit-end',
'edit-cancel',
'edit-row-end',
'edit-change',
],
setup(props, { attrs, emit, slots }) {
const tableElRef = ref<ComponentRef>(null);
Expand Down
45 changes: 27 additions & 18 deletions src/components/Table/src/components/editable/EditableCell.vue
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,21 @@
<script lang="ts">
import type { CSSProperties, PropType } from 'vue';
import type { BasicColumn } from '../../types/table';
import type { EditRecordRow } from './index';
import { defineComponent, ref, unref, nextTick, computed, watchEffect } from 'vue';
import { defineComponent, ref, unref, nextTick, computed, watchEffect, toRaw } from 'vue';
import { FormOutlined, CloseOutlined, CheckOutlined } from '@ant-design/icons-vue';
import { CellComponent } from './CellComponent';
import { useDesign } from '/@/hooks/web/useDesign';
import { isString, isBoolean, isFunction, isNumber, isArray } from '/@/utils/is';
import { useTableContext } from '../../hooks/useTableContext';
import clickOutside from '/@/directives/clickOutside';
import { CellComponent } from './CellComponent';
import { useTableContext } from '../../hooks/useTableContext';
import { propTypes } from '/@/utils/propTypes';
import { isString, isBoolean, isFunction, isNumber, isArray } from '/@/utils/is';
import { createPlaceholderMessage } from './helper';
import type { EditRecordRow } from './index';
export default defineComponent({
name: 'EditableCell',
components: { FormOutlined, CloseOutlined, CheckOutlined, CellComponent },
Expand Down Expand Up @@ -136,9 +136,11 @@
if (!component.includes('Select')) {
return value;
}
const options: LabelValueOptions = editComponentProps?.options ?? (unref(optionsRef) || []);
const option = options.find((item) => `${item.value}` === `${value}`);
return option?.label;
return option?.label ?? value;
});
const getWrapperStyle = computed(
Expand Down Expand Up @@ -188,6 +190,11 @@
} else if (isString(e) || isBoolean(e) || isNumber(e)) {
currentValueRef.value = e;
}
table.emit?.('edit-change', {
column: props.column,
value: unref(currentValueRef),
record: toRaw(props.record),
});
handleSubmiRule();
}
Expand Down Expand Up @@ -220,13 +227,17 @@
return true;
}
async function handleSubmit(needEmit = true) {
const isPass = await handleSubmiRule();
if (!isPass) return false;
async function handleSubmit(needEmit = true, valid = true) {
if (valid) {
const isPass = await handleSubmiRule();
if (!isPass) return false;
}
const { column, index } = props;
const { key, dataIndex } = column;
const value = unref(currentValueRef);
if (!key || !dataIndex) return;
const dataKey = (dataIndex || key) as string;
const record = await table.updateTableData(index, dataKey, value);
Expand Down Expand Up @@ -287,15 +298,15 @@
const validFns = (props.record?.validCbs || []).map((fn) => fn());
const res = await Promise.all(validFns);
const pass = res.every((item) => !!item);
if (!pass) return;
const submitFns = props.record?.submitCbs || [];
submitFns.forEach((fn) => fn(false));
submitFns.forEach((fn) => fn(false, false));
table.emit?.('edit-row-end');
return true;
}
// isArray(props.record?.submitCbs) && props.record?.submitCbs.forEach((fn) => fn());
};
}
Expand Down Expand Up @@ -328,10 +339,6 @@
@prefix-cls: ~'@{namespace}-editable-cell';
.edit-cell-rule-popover {
// .ant-popover-arrow {
// // border-color: transparent @error-color @error-color transparent !important;
// }
.ant-popover-inner-content {
padding: 4px 8px;
color: @error-color;
Expand All @@ -346,6 +353,10 @@
display: flex;
align-items: center;
justify-content: center;
> .ant-select {
min-width: calc(100% - 50px);
}
}
&__icon {
Expand All @@ -359,8 +370,6 @@
}
&__normal {
padding-right: 48px;
&-icon {
position: absolute;
top: 4px;
Expand Down
4 changes: 2 additions & 2 deletions src/design/ant/index.less
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
}

body {
.anticon {
display: inline-flex;
.anticon:not(.app-iconify) {
vertical-align: 0.1em;
}
}

Expand Down
10 changes: 6 additions & 4 deletions src/views/demo/page/form/high/PersonTable.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<template>
<div>
<BasicTable @register="registerTable">
<BasicTable @register="registerTable" @edit-change="handleEditChange">
<template #action="{ record, column }">
<TableAction :actions="createActions(record, column)" />
</template>
Expand Down Expand Up @@ -29,14 +29,11 @@
title: '工号',
dataIndex: 'no',
editRow: true,
// customRender: renderEditableRow({ dataIndex: 'no', placeholder: '请输入工号' }),
},
{
title: '所属部门',
dataIndex: 'dept',
editRow: true,
// customRender: renderEditableRow({ dataIndex: 'dept', placeholder: '请输入所属部门' }),
},
];
Expand Down Expand Up @@ -90,6 +87,10 @@
record.onEdit?.(false, true);
}
function handleEditChange(data: Recordable) {
console.log(data);
}
function handleAdd() {
const data = getDataSource();
const addRow: EditRecordRow = {
Expand Down Expand Up @@ -136,6 +137,7 @@
createActions,
handleAdd,
getDataSource,
handleEditChange,
};
},
});
Expand Down

0 comments on commit 4f8e1c1

Please sign in to comment.