@spacego/fe-components 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,341 +16,339 @@ import { FeTimePickerProps } from '../../fe-time-picker/index.d';
16
16
  import { IFeUploadProps } from '../../fe-upload/index.d';
17
17
  import { FeFormItemProps } from '../fe-form-item/index.d';
18
18
  import { FeFormLabelProps } from '../fe-form-label/index.d';
19
-
20
-
21
- export type FeFormRule = FormRule;
22
-
23
- export type TFormItemType =
24
- | 'input'
25
- | 'inputNumber'
26
- | 'text'
27
- | 'select'
28
- | 'date'
29
- | 'textarea'
30
- | 'checkbox'
31
- | 'radio'
32
- | 'btnGroup'
33
- | 'switch'
34
- | 'upload'
35
- | 'cascader'
36
- | 'timePicker'
37
- | 'timeRange'
38
- | 'datePicker'
39
- | 'dateRange'
40
- | 'upload'
41
- | 'richText'
42
- | 'render'
43
- | 'autoComplete'
44
-
45
- export interface IFeFormItems<DataType = Record<string, any>> extends FeFormLabelProps {
46
- /**
47
- * @name 表单值
48
- */
49
- value?: any;
50
- /**
51
- * @name 表单项类型
52
- */
53
- type: TFormItemType;
54
- /**
55
- * @name 与实体映射的key
56
- */
57
- dataIndex: keyof DataType | (keyof DataType)[];
58
- /**
59
- * @name 标题
60
- */
61
- label: string;
62
- /**
63
- * @name 是否必填
64
- * @default false
65
- */
66
- required?: boolean;
67
- /**
68
- * @name 校验规则
69
- */
70
- rules?: FeFormRule[];
71
- /**
72
- * @name 表单栅格占位
73
- * @default 6
74
- */
75
- colSpan?: number;
76
- /**
77
- * @name 自定义placeholder
78
- *
79
- * 使用 placeholder 代表placeholder完全自定义,且placeholder跟form-item的message一致
80
- *
81
- * 目前仅在 inputInpu t和 selectInput 中生效
82
- * @default `请选择${label}`
83
- */
84
- placeholder?: string | string[];
85
- /**
86
- * @name 是否隐藏
87
- * @default false
88
- */
89
- isHidden?: boolean;
90
- /**
91
- * @name 当前需要重置,此值改变时需要重置自定义的受控组件状态
92
- * @default "" 空字符串
93
- */
94
- forceValue?: string;
95
- /**
96
- * @name 数据发生变化时事件
97
- * @param val 修改后的值
98
- */
99
- onChange?: (val) => void;
100
- /**
101
- * @name 自定义属性
102
- */
103
- attributes?: Record<string, any>;
104
- /**
105
- * @name 自定义表单必填时的提示信息
106
- */
107
- requiredMessage?: string;
108
- /**
109
- * @name 表单值类型
110
- */
111
- valueType?: FeFormItemProps['valueType'];
112
- /**
113
- * @name 表单属性
114
- */
115
- divAttributes?: React.HTMLAttributes<HTMLDivElement>;
116
- inputAttributes?: FeInputProps & {
117
- /**
118
- * @name 输入框类型 input普通输入框 inputWithBtn右侧带按钮
119
- * @default input
120
- */
121
- inputType?: 'input' | 'inputWithBtn';
122
- };
123
- selectAttributes?: FeSelectProps & {
124
- /**
125
- * @name 下拉框类型 single单选 multiple多选
126
- * @default single
127
- */
128
- selectType?: 'single' | 'multiple';
129
- /**
130
- * @name 下拉框数据
131
- */
132
- options?: Array<{ dataIndex: string | number; label: string }>;
133
- /**
134
- * @name 是否显示全选功能
135
- * @default false
136
- */
137
- showSelectAll?: boolean;
138
- /**
139
- * @name 全选功能回调
140
- * @param checked 是否选中
141
- * @param values 选中的值
142
- */
143
- onSelectAll?: (checked: boolean, values: any[]) => void;
144
- };
145
- buttonAttributes?: FeButtonProps;
146
- timePickerAttributes?: FeTimePickerProps;
147
- datePickerAttributes?: FeDatePickerProps & {
148
- /**
149
- * @name 日期选择框类型
150
- * @default datePicker
151
- */
152
- datePickerType?: 'datePicker' | 'datePickerLongTime';
153
- };
154
- dateRangePickerAttributes?: RangePickerProps & {
155
- onChange?: (dates: any, dateStrings: [string, string]) => void;
156
- /**
157
- * @name 区间是否需要带时间
158
- * @example 2024 12-12 00:00:00 2024 12-12 23:59:59
159
- * @default true
160
- */
161
- hasTime?: boolean;
162
- };
163
- /**
164
- * @name 文本域属性
165
- */
166
- textAreaAttributes?: FeTextAreaProps;
167
- /**
168
- * @name 级联属性
169
- */
170
- cascaderAttributes?: FeCascaderProps;
171
- /**
172
- * @name 数字输入框属性
173
- */
174
- inputNumberAttributes?: FeInputNumberProps & {
175
- /**
176
- * @name 是否需要千分位
177
- * @default false
178
- */
179
- hasThousands?: boolean;
180
- /**
181
- * @name 千分位配置
182
- */
183
- thousandsParams?: {
184
- precision?: number;
185
- fillZero?: boolean;
186
- separator?: string;
187
- };
188
- };
189
- /**
190
- * @name Upload属性
191
- */
192
- uploadAttributes?: IFeUploadProps;
193
- /**
194
- * @name Upload属性 - 多个上传 适用于正反身份证
195
- */
196
- uploadMultiple?: boolean;
197
- /**
198
- * @name 富文本属性
199
- * */
200
- richTextAttributes?: FeRichTextProps;
201
- /**
202
- * @name 输入框输入框属性
203
- */
204
- inputInputAttributes?: FeInputProps & {
205
- /**
206
- * @name colSpan 已启用珊格布局 选择器栅格占位,支持传递数组单独定义每一个input colspan
207
- * @default 24 / ['dataIndex'].length
208
- */
209
- colSpan?: number | number[];
210
- };
211
- /**
212
- * @name 选择器输入框属性
213
- */
214
- selectInputAttributes?: {
215
- /**
216
- * @name 选择器属性
217
- */
218
- selectAttributes?: IFeFormItems['selectAttributes'] & {
219
- /**
220
- * @name pure 模式下 下拉框数据
221
- */
222
- pureOptions?: Array<{ dataIndex: keyof DataType; label: string }>;
223
- /**
224
- * @name pure 模式下 select的值,值为pureOptions的dataIndex
225
- */
226
- pureSelectValue?: keyof DataType;
227
- /**
228
- * @name colSpan 已启用珊格布局 选择器栅格占位
229
- * @default 12
230
- */
231
- colSpan?: number;
232
- };
233
- /**
234
- * @name 输入框属性
235
- */
236
- inputAttributes?: IFeFormItems['inputAttributes'] & {
237
- /**
238
- * @name colSpan 已启用珊格布局 选择器栅格占位
239
- * @default 12
240
- */
241
- colSpan?: number;
242
- };
243
- /**
244
- * @name 数字输入框属性
245
- */
246
- inputNumberAttributes?: IFeFormItems['inputNumberAttributes'] & {
247
- /**
248
- * @name colSpan 已启用珊格布局 选择器栅格占位
249
- * @default 12
250
- */
251
- colSpan?: number;
252
- };
253
- /**
254
- * @name 是否纯净模式
255
- *
256
- * 纯净模式意为:不占用额外的key,select的value为input的key。故纯净模式下dataIndex无效
257
- */
258
- isPure?: boolean;
259
- /**
260
- * @name input类型 普通input和数字input
261
- */
262
- inputType?: 'input' | 'inputNumber';
263
- };
264
- /**
265
- * @name 单选属性
266
- */
267
- radioGroupAttributes?: FeRadioGroupProps & { };
268
- /**
269
- * @name 开关属性
270
- */
271
- switchAttributes?: FeSwitchProps;
272
- /**
273
- * @name 按钮组属性
274
- */
275
- buttonGroupAttributes?: FeRadioGroupProps & {
276
- buttonStyle: 'outline' | 'solid';
277
- };
278
- /**
279
- * @name 多选属性
280
- */
281
- checkboxGroupAttributes?: FeCheckboxGroupProps & {};
282
- /**
283
- * @name 自定义渲染
284
- */
285
- renderAttributes?: {
286
- /*
287
- * @name 自定义渲染子组件
288
- */
289
- children: (props: any) => any;
290
- /**
291
- * 值类型
292
- */
293
- valueType?: FeFormItemProps['valueType'];
294
- };
295
- autoCompleteAttributes?: {
296
- options?: Array<string>;
297
- /**
298
- * @name 自定义过滤选项
299
- */
300
- filterOption?: (input: string, option: any) => boolean;
301
- };
302
- }
303
-
304
- export interface FeFormProps<DataType = Record<string, any>> {
305
- /**
306
- * @name 表单ref
307
- */
308
- formRef?: React.RefObject<FormInstance>;
309
- /**
310
- * @name 表单项
311
- */
312
- formItems: IFeFormItems<DataType>[];
313
- /**
314
- * @name 表单数据
315
- */
316
- formData: DataType;
317
- /**
318
- * 是否开启响应式(仅search类型)
319
- * @default true
320
- */
321
- formReactive?: boolean;
322
- /**
323
- * @name 表单栅格占位
324
- */
325
- formColSpan?: number;
326
- /**
327
- * @name 表单类型 search | form
328
- */
329
- type: 'search' | 'form';
330
- /**
331
- * @name 标签宽度
332
- */
333
- labelWidth?: string;
334
- /**
335
- * @name 是否展开
336
- * @default true
337
- */
338
- isExpanded?: boolean;
339
- /**
340
- * @name 表单数据发生变化时事件
341
- * @param formData 表单数据
342
- */
343
- onValueChange?: React.Dispatch<React.SetStateAction<DataType>>;
344
- /**
345
- * @name 搜索事件
346
- */
347
- onSearch?: () => void;
348
- /**
349
- * @name 重置事件
350
- */
351
- onReload?: () => void;
352
- /**
353
- * @name 表单基础属性,用于覆盖antd的Form组件的默认属性
354
- */
355
- baseFormAttributes?: Partial<Omit<FormProps, 'form' | 'onValuesChange'>>;
356
- }
19
+ export type FeFormRule = FormRule;
20
+
21
+ export type TFormItemType =
22
+ | 'input'
23
+ | 'inputNumber'
24
+ | 'text'
25
+ | 'select'
26
+ | 'date'
27
+ | 'textarea'
28
+ | 'checkbox'
29
+ | 'radio'
30
+ | 'btnGroup'
31
+ | 'switch'
32
+ | 'upload'
33
+ | 'cascader'
34
+ | 'timePicker'
35
+ | 'timeRange'
36
+ | 'datePicker'
37
+ | 'dateRange'
38
+ | 'upload'
39
+ | 'richText'
40
+ | 'render'
41
+ | 'autoComplete'
42
+
43
+ export interface IFeFormItems<DataType = Record<string, any>> extends FeFormLabelProps {
44
+ /**
45
+ * @name 表单值
46
+ */
47
+ value?: any;
48
+ /**
49
+ * @name 表单项类型
50
+ */
51
+ type: TFormItemType;
52
+ /**
53
+ * @name 与实体映射的key
54
+ */
55
+ dataIndex: keyof DataType | (keyof DataType)[];
56
+ /**
57
+ * @name 标题
58
+ */
59
+ label: string;
60
+ /**
61
+ * @name 是否必填
62
+ * @default false
63
+ */
64
+ required?: boolean;
65
+ /**
66
+ * @name 校验规则
67
+ */
68
+ rules?: FeFormRule[];
69
+ /**
70
+ * @name 表单栅格占位
71
+ * @default 6
72
+ */
73
+ colSpan?: number;
74
+ /**
75
+ * @name 自定义placeholder
76
+ *
77
+ * 使用 placeholder 代表placeholder完全自定义,且placeholder跟form-item的message一致
78
+ *
79
+ * 目前仅在 inputInpu t和 selectInput 中生效
80
+ * @default `请选择${label}`
81
+ */
82
+ placeholder?: string | string[];
83
+ /**
84
+ * @name 是否隐藏
85
+ * @default false
86
+ */
87
+ isHidden?: boolean;
88
+ /**
89
+ * @name 当前需要重置,此值改变时需要重置自定义的受控组件状态
90
+ * @default "" 空字符串
91
+ */
92
+ forceValue?: string;
93
+ /**
94
+ * @name 数据发生变化时事件
95
+ * @param val 修改后的值
96
+ */
97
+ onChange?: (val) => void;
98
+ /**
99
+ * @name 自定义属性
100
+ */
101
+ attributes?: Record<string, any>;
102
+ /**
103
+ * @name 自定义表单必填时的提示信息
104
+ */
105
+ requiredMessage?: string;
106
+ /**
107
+ * @name 表单值类型
108
+ */
109
+ valueType?: FeFormItemProps['valueType'];
110
+ /**
111
+ * @name 表单属性
112
+ */
113
+ divAttributes?: React.HTMLAttributes<HTMLDivElement>;
114
+ inputAttributes?: FeInputProps & {
115
+ /**
116
+ * @name 输入框类型 input普通输入框 inputWithBtn右侧带按钮
117
+ * @default input
118
+ */
119
+ inputType?: 'input' | 'inputWithBtn';
120
+ };
121
+ selectAttributes?: FeSelectProps & {
122
+ /**
123
+ * @name 下拉框类型 single单选 multiple多选
124
+ * @default single
125
+ */
126
+ selectType?: 'single' | 'multiple';
127
+ /**
128
+ * @name 下拉框数据
129
+ */
130
+ options?: Array<{ dataIndex: string | number; label: string }>;
131
+ /**
132
+ * @name 是否显示全选功能
133
+ * @default false
134
+ */
135
+ showSelectAll?: boolean;
136
+ /**
137
+ * @name 全选功能回调
138
+ * @param checked 是否选中
139
+ * @param values 选中的值
140
+ */
141
+ onSelectAll?: (checked: boolean, values: any[]) => void;
142
+ };
143
+ buttonAttributes?: FeButtonProps;
144
+ timePickerAttributes?: FeTimePickerProps;
145
+ datePickerAttributes?: FeDatePickerProps & {
146
+ /**
147
+ * @name 日期选择框类型
148
+ * @default datePicker
149
+ */
150
+ datePickerType?: 'datePicker' | 'datePickerLongTime';
151
+ };
152
+ dateRangePickerAttributes?: RangePickerProps & {
153
+ onChange?: (dates: any, dateStrings: [string, string]) => void;
154
+ /**
155
+ * @name 区间是否需要带时间
156
+ * @example 2024 12-12 00:00:00 2024 12-12 23:59:59
157
+ * @default true
158
+ */
159
+ hasTime?: boolean;
160
+ };
161
+ /**
162
+ * @name 文本域属性
163
+ */
164
+ textAreaAttributes?: FeTextAreaProps;
165
+ /**
166
+ * @name 级联属性
167
+ */
168
+ cascaderAttributes?: FeCascaderProps;
169
+ /**
170
+ * @name 数字输入框属性
171
+ */
172
+ inputNumberAttributes?: FeInputNumberProps & {
173
+ /**
174
+ * @name 是否需要千分位
175
+ * @default false
176
+ */
177
+ hasThousands?: boolean;
178
+ /**
179
+ * @name 千分位配置
180
+ */
181
+ thousandsParams?: {
182
+ precision?: number;
183
+ fillZero?: boolean;
184
+ separator?: string;
185
+ };
186
+ };
187
+ /**
188
+ * @name Upload属性
189
+ */
190
+ uploadAttributes?: IFeUploadProps;
191
+ /**
192
+ * @name Upload属性 - 多个上传 适用于正反身份证
193
+ */
194
+ uploadMultiple?: boolean;
195
+ /**
196
+ * @name 富文本属性
197
+ * */
198
+ richTextAttributes?: FeRichTextProps;
199
+ /**
200
+ * @name 输入框输入框属性
201
+ */
202
+ inputInputAttributes?: FeInputProps & {
203
+ /**
204
+ * @name colSpan 已启用珊格布局 选择器栅格占位,支持传递数组单独定义每一个input colspan
205
+ * @default 24 / ['dataIndex'].length
206
+ */
207
+ colSpan?: number | number[];
208
+ };
209
+ /**
210
+ * @name 选择器输入框属性
211
+ */
212
+ selectInputAttributes?: {
213
+ /**
214
+ * @name 选择器属性
215
+ */
216
+ selectAttributes?: IFeFormItems['selectAttributes'] & {
217
+ /**
218
+ * @name pure 模式下 下拉框数据
219
+ */
220
+ pureOptions?: Array<{ dataIndex: keyof DataType; label: string }>;
221
+ /**
222
+ * @name pure 模式下 select的值,值为pureOptions的dataIndex
223
+ */
224
+ pureSelectValue?: keyof DataType;
225
+ /**
226
+ * @name colSpan 已启用珊格布局 选择器栅格占位
227
+ * @default 12
228
+ */
229
+ colSpan?: number;
230
+ };
231
+ /**
232
+ * @name 输入框属性
233
+ */
234
+ inputAttributes?: IFeFormItems['inputAttributes'] & {
235
+ /**
236
+ * @name colSpan 已启用珊格布局 选择器栅格占位
237
+ * @default 12
238
+ */
239
+ colSpan?: number;
240
+ };
241
+ /**
242
+ * @name 数字输入框属性
243
+ */
244
+ inputNumberAttributes?: IFeFormItems['inputNumberAttributes'] & {
245
+ /**
246
+ * @name colSpan 已启用珊格布局 选择器栅格占位
247
+ * @default 12
248
+ */
249
+ colSpan?: number;
250
+ };
251
+ /**
252
+ * @name 是否纯净模式
253
+ *
254
+ * 纯净模式意为:不占用额外的key,select的value为input的key。故纯净模式下dataIndex无效
255
+ */
256
+ isPure?: boolean;
257
+ /**
258
+ * @name input类型 普通input和数字input
259
+ */
260
+ inputType?: 'input' | 'inputNumber';
261
+ };
262
+ /**
263
+ * @name 单选属性
264
+ */
265
+ radioGroupAttributes?: FeRadioGroupProps & { };
266
+ /**
267
+ * @name 开关属性
268
+ */
269
+ switchAttributes?: FeSwitchProps;
270
+ /**
271
+ * @name 按钮组属性
272
+ */
273
+ buttonGroupAttributes?: FeRadioGroupProps & {
274
+ buttonStyle: 'outline' | 'solid';
275
+ };
276
+ /**
277
+ * @name 多选属性
278
+ */
279
+ checkboxGroupAttributes?: FeCheckboxGroupProps & {};
280
+ /**
281
+ * @name 自定义渲染
282
+ */
283
+ renderAttributes?: {
284
+ /*
285
+ * @name 自定义渲染子组件
286
+ */
287
+ children: (props: any) => any;
288
+ /**
289
+ * 值类型
290
+ */
291
+ valueType?: FeFormItemProps['valueType'];
292
+ };
293
+ autoCompleteAttributes?: {
294
+ options?: Array<string>;
295
+ /**
296
+ * @name 自定义过滤选项
297
+ */
298
+ filterOption?: (input: string, option: any) => boolean;
299
+ };
300
+ }
301
+
302
+ export interface FeFormProps<DataType = Record<string, any>> {
303
+ /**
304
+ * @name 表单ref
305
+ */
306
+ formRef?: React.RefObject<FormInstance>;
307
+ /**
308
+ * @name 表单项
309
+ */
310
+ formItems: IFeFormItems<DataType>[];
311
+ /**
312
+ * @name 表单数据
313
+ */
314
+ formData: DataType;
315
+ /**
316
+ * 是否开启响应式(仅search类型)
317
+ * @default true
318
+ */
319
+ formReactive?: boolean;
320
+ /**
321
+ * @name 表单栅格占位
322
+ */
323
+ formColSpan?: number;
324
+ /**
325
+ * @name 表单类型 search | form
326
+ */
327
+ type: 'search' | 'form';
328
+ /**
329
+ * @name 标签宽度
330
+ */
331
+ labelWidth?: string;
332
+ /**
333
+ * @name 是否展开
334
+ * @default true
335
+ */
336
+ isExpanded?: boolean;
337
+ /**
338
+ * @name 表单数据发生变化时事件
339
+ * @param formData 表单数据
340
+ */
341
+ onValueChange?: React.Dispatch<React.SetStateAction<DataType>>;
342
+ /**
343
+ * @name 搜索事件
344
+ */
345
+ onSearch?: () => void;
346
+ /**
347
+ * @name 重置事件
348
+ */
349
+ onReload?: () => void;
350
+ /**
351
+ * @name 表单基础属性,用于覆盖antd的Form组件的默认属性
352
+ */
353
+ baseFormAttributes?: Partial<Omit<FormProps, 'form' | 'onValuesChange'>>;
354
+ }