fix: 修复在 toolbar 中的 form 值变化回显不正确的问题、inputTable当前页数据删除完无法自动调整到上一页问题 (#8328)

* fix: 修复在 toolbar 中的 form 值变化回显不正确的问题 (#8326)

* fix: 修复inputTable当前页数据删除完无法自动调整到上一页问题 (#8327)

Co-authored-by: wanglinfang <wanglinfang@baidu.com>

* fix: 修复 combo 表单项中存在同名表单项时内部表单项值被覆盖的问题 (#8300)

---------

Co-authored-by: liaoxuezhi <2betop.cn@gmail.com>
Co-authored-by: wanglinfang <wanglinfang@baidu.com>
This commit is contained in:
wanglinfang2014 2023-10-10 10:24:10 +08:00 committed by GitHub
parent 2146fe97f3
commit d770d68fbe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 4 deletions

View File

@ -245,8 +245,12 @@ export function HocStoreFactory(renderer: {
...store.data,
...props.data
}
: // combo 不需要同步,如果要同步,在 Combo.tsx 里面已经实现了相关逻辑
// 目前主要的问题是,如果 combo 中表单项名字和 combo 本身的名字一样,会导致里面的值会被覆盖成数组
props.store?.storeType === 'ComboStore'
? undefined
: syncDataFromSuper(
props.data,
store.data,
(props.data as any).__super,
(prevProps.data as any).__super,
store,

View File

@ -970,3 +970,35 @@ test('Renderer:select autofill in combo', async () => {
combo: [{type: '1', a: 'a'}]
});
});
// 10. combo 内部表单项与 combo 同名时,原来会出现内部表单项的值变成数组的情况
test('Renderer:combo 内部表单项与 combo 同名', async () => {
const {container, submitBtn, findByText, onSubmit, baseElement} = await setup(
[
{
type: 'combo',
name: 'a',
label: 'combo',
className: 'removableFalse',
removable: false,
multiple: true,
items: [
{
name: 'a',
type: 'input-text',
label: 'A'
}
],
value: [{}]
}
]
);
const input = container.querySelector('input[name="a"]') as HTMLInputElement;
fireEvent.change(input, {target: {value: '1'}});
await wait(400);
fireEvent.change(input, {target: {value: '123'}});
await wait(400);
expect(input.value).toBe('123');
});

View File

@ -1527,11 +1527,14 @@ export default class FormTable extends React.Component<TableProps, TableState> {
let items = this.state.items;
let showPager = false;
const page = this.state.page || 1;
let page = this.state.page || 1;
let offset = 0;
let lastPage = 1;
if (typeof perPage === 'number' && perPage && items.length > perPage) {
lastPage = Math.ceil(items.length / perPage);
if (page > lastPage) {
page = lastPage;
}
items = items.slice((page - 1) * perPage, page * perPage);
showPager = true;
offset = (page - 1) * perPage;
@ -1611,7 +1614,8 @@ export default class FormTable extends React.Component<TableProps, TableState> {
},
{
activePage: page,
lastPage: lastPage,
perPage,
total: this.state.items.length,
onPageChange: this.handlePageChange,
className: 'InputTable-pager'
}

View File

@ -62,7 +62,8 @@ export default defineConfig({
}),
monacoEditorPlugin({}),
replace({
__editor_i18n: !!I18N
__editor_i18n: !!I18N,
preventAssignment: true
})
].filter(n => n),
optimizeDeps: {