Skip to content

Commit 0cbd9aa

Browse files
Lemonnnnnnnnnnnsoul
and
soul
authored
fix(form):fixed an issue where queryFilter controls were abnormally hidden (#8564)
* fix(form):fixed an issue where controls were abnormally hidden when defaultColsNumber were specified * feat(form): Modify the behavior of defaultColsNumber and adding defaultFormItemsNumber to support the existing functionality of defaultColsNumber * chore(form): remove comment * chore(form): remove comment * docs:(form) Query filter component supports custom display of control quantity - Added the `defaultFormItemsNumber` property to set the number of controls displayed in a collapsed state - Updated the documentation to clarify the difference between `defaultColsNumber` and `defaultFormItemsNumber` - Added example code to demonstrate how to use the `defaultFormItemsNumber` property * feat(form): update snapshot --------- Co-authored-by: soul <[email protected]>
1 parent 3840629 commit 0cbd9aa

File tree

6 files changed

+1294
-19
lines changed

6 files changed

+1294
-19
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import {
2+
ProFormDatePicker,
3+
ProFormText,
4+
QueryFilter,
5+
} from '@ant-design/pro-components';
6+
7+
export default () => {
8+
return (
9+
<QueryFilter defaultCollapsed split defaultFormItemsNumber={5}>
10+
<ProFormText name="name" label="应用名称" />
11+
<ProFormDatePicker name="createDate" label="创建时间" />
12+
<ProFormText name="status" label="应用状态" />
13+
<ProFormDatePicker name="replyDate" label="响应日期" />
14+
<ProFormDatePicker name="startDate" label="创建时间" />
15+
<ProFormDatePicker name="endDate" label="结束时间" />
16+
</QueryFilter>
17+
);
18+
};

packages/form/src/components/QueryFilter/index.en-US.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ QueryFilter and LightFilter solve the problem of using the form with other compo
2525

2626
<code src="./demos/search-filter.tsx" background="var(--main-bg-color)" ></code>
2727

28+
### query-filter-defaultFormItemsNumber
29+
30+
<code src="./demos/query-filter-defaultFormItemsNumber.tsx" background="var(--main-bg-color)"></code>
31+
2832
### Lightweight filtering
2933

3034
<code src="./demos/light-filter.tsx" ></code>
@@ -52,7 +56,8 @@ QueryFilter supports the following properties in addition to the API inherited f
5256
| onCollapse | Callback when toggling the collapsed state of the form | `(collapsed)=>void` | - |
5357
| hideRequiredMark | Hide the required markers for all form items, **hide by default** | `boolean` | true |
5458
| submitterColSpanProps | Props of the col where the submit button is located. | ColProps | - |
55-
| defaultColsNumber | The default number of controls to be displayed in the collapsed state, if not set or less than 0, one line of controls will be displayed; if the number is greater than or equal to the number of controls, the expand button will be hidden | `number` | - |
59+
| defaultColsNumber | The default number of form controls displayed in a collapsed state. Only one row of controls is displayed at most, and when exceeded, a collapse/hide button is shown. | `number` | - |
60+
| defaultFormItemsNumber | The difference from defaultColsNumber is that the specified number of controls will be displayed, and when exceeded, a collapse/hide button will be shown. | `number` | - |
5661
| labelWidth | label width | `number` \| `'auto'` | `98` |
5762
| span | width of form items | `number[0 - 24]` | - |
5863
| split | whether each line has a split line | `boolean` | - |

packages/form/src/components/QueryFilter/index.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ atomId: QueryFilter,LightFilter
2020

2121
<code src="./demos/search-filter.tsx" background="var(--main-bg-color)" title="查询筛选-搜索"></code>
2222

23+
<code src="./demos/query-filter-defaultFormItemsNumber.tsx" background="var(--main-bg-color)" title="查询筛选-自定义渲染的控件数量"></code>
24+
2325
## 轻量筛选
2426

2527
<code src="./demos/light-filter.tsx" title="基本使用"></code>
@@ -49,7 +51,8 @@ QueryFilter 除了继承 ProForm 的 API 以外还支持下面的属性。
4951
| onCollapse | 切换表单折叠状态时的回调 | `(collapsed)=>void` | - |
5052
| hideRequiredMark | 隐藏所有表单项的必选标记,**默认隐藏** | `boolean` | true |
5153
| submitterColSpanProps | 提交按钮所在 col 的 props | ColProps | - |
52-
| defaultColsNumber | 自定义折叠状态下默认显示的表单控件数量,没有设置或小于 0,则显示一行控件;数量大于等于控件数量则隐藏展开按钮 | `number` | - |
54+
| defaultColsNumber | 自定义折叠状态下默认显示的表单控件数量,**最多只展示一行控件**,超出时展示收起/隐藏按钮 | `number` | - |
55+
| defaultFormItemsNumber | 与 defaultColsNumber 的不同点在于,设置多少就展示多少个控件,超出时展示收起/隐藏按钮 | `number` | - |
5356
| labelWidth | label 宽度 | `number` \| `'auto'` | `80` |
5457
| span | 表单项宽度 | `number[0 - 24]` | - |
5558
| split | 每一行是否有分割线 | `boolean` | - |

packages/form/src/layouts/QueryFilter/index.tsx

+16-7
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,12 @@ export type BaseQueryFilterProps = Omit<
107107
layout?: FormProps['layout'];
108108
/**
109109
* @name 默认一行显示几个表单项
110-
*/
110+
*/
111111
defaultColsNumber?: number;
112+
/**
113+
* @name 默认展示几个表单项
114+
*/
115+
defaultFormItemsNumber?: number;
112116
/**
113117
* @name 文字标签的宽度
114118
*
@@ -347,9 +351,9 @@ const QueryFilterContent: React.FC<{
347351
(collapsed &&
348352
(firstRowFull ||
349353
// 如果 超过显示长度 且 总长度超过了 24
350-
totalSize > showLength - 1) &&
351-
!!index &&
352-
totalSpan >= 24);
354+
totalSize > showLength) &&
355+
!!index
356+
);
353357

354358
itemLength += 1;
355359

@@ -502,6 +506,7 @@ function QueryFilter<T = Record<string, any>>(props: QueryFilterProps<T>) {
502506
layout,
503507
defaultCollapsed = true,
504508
defaultColsNumber,
509+
defaultFormItemsNumber,
505510
span,
506511
searchGutter = 24,
507512
searchText,
@@ -537,12 +542,16 @@ function QueryFilter<T = Record<string, any>>(props: QueryFilterProps<T>) {
537542
);
538543

539544
const showLength = useMemo(() => {
540-
// 查询重置按钮也会占一个spanSize格子,需要减掉计算
545+
if(defaultFormItemsNumber !== undefined) {
546+
return defaultFormItemsNumber
547+
}
541548
if (defaultColsNumber !== undefined) {
542-
return defaultColsNumber - 1;
549+
// 折叠为一行,需要处理多行的情况请使用 defaultFormItemsNumber
550+
const oneRowControlsNumber = 24 / spanSize.span - 1;
551+
return defaultColsNumber > oneRowControlsNumber ? oneRowControlsNumber : defaultColsNumber
543552
}
544553
return Math.max(1, 24 / spanSize.span - 1);
545-
}, [defaultColsNumber, spanSize.span]);
554+
}, [defaultColsNumber, defaultFormItemsNumber, spanSize.span]);
546555

547556
/** 计算最大宽度防止溢出换行 */
548557
const formItemFixStyle: FormItemProps<any> | undefined = useMemo(() => {

0 commit comments

Comments
 (0)