lu-lowcode-package-form 0.10.50 → 0.10.52
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.
- package/dist/index.cjs.js +281 -281
- package/dist/index.es.js +12726 -12718
- package/package.json +1 -1
- package/src/components/field/select/search-select.jsx +10 -8
- package/src/components/field/table/index.jsx +3 -2
- package/src/components/form-container/index.jsx +22 -15
- package/src/components/form-container/layout/form-row.jsx +9 -2
package/package.json
CHANGED
@@ -6,7 +6,7 @@ import { BaseWrapper } from "../base"
|
|
6
6
|
import { debounce, isEqual } from 'lodash';
|
7
7
|
|
8
8
|
|
9
|
-
const SearchSelect = forwardRef(({ addWrapper = true, form, fieldName, fieldsValue, value, type, defaultValue, onChange, option_label, option_value, option_search, options, request, requestParams, callError, subRequest, sub_option_label = "label", mode = "single", sub_option_value = "id", rightIconRender, rightIcon, rightIconClick,recordFieldsChange, ...props }, ref) => {
|
9
|
+
const SearchSelect = forwardRef(({ addWrapper = true, form, fieldName, fieldsValue, shouldUpdateKey,value, type, defaultValue, onChange, option_label, option_value, option_search, options, request, requestParams, callError, subRequest, sub_option_label = "label", mode = "single", sub_option_value = "id", rightIconRender, rightIcon, rightIconClick,recordFieldsChange, ...props }, ref) => {
|
10
10
|
const [nOptions, setNOptions] = React.useState([])
|
11
11
|
const [fetching, setFetching] = useState(false);
|
12
12
|
useEffect(() => {
|
@@ -31,15 +31,16 @@ const SearchSelect = forwardRef(({ addWrapper = true, form, fieldName, fieldsVal
|
|
31
31
|
// initData(requestParams)
|
32
32
|
// }, [requestParams, fieldsValue])
|
33
33
|
|
34
|
-
// useEffect(() => {
|
35
|
-
// console.log("SearchSelect useEffect fieldsValue", fieldsValue)
|
36
|
-
// initData(requestParams)
|
37
|
-
// }, [fieldsValue])
|
38
|
-
|
39
34
|
useEffect(() => {
|
40
|
-
|
35
|
+
console.log("SearchSelect useEffect shouldUpdateKey", shouldUpdateKey)
|
36
|
+
console.log("SearchSelect useEffect requestParams", requestParams)
|
41
37
|
initData(requestParams)
|
42
|
-
}, [requestParams])
|
38
|
+
}, [shouldUpdateKey,requestParams])
|
39
|
+
|
40
|
+
// useEffect(() => {
|
41
|
+
// console.log("SearchSelect useEffect requestParams", requestParams)
|
42
|
+
// initData(requestParams)
|
43
|
+
// }, [requestParams])
|
43
44
|
// useEffect(()=>{
|
44
45
|
// console.log("SearchSelect useEffect []")
|
45
46
|
// },[])
|
@@ -70,6 +71,7 @@ const SearchSelect = forwardRef(({ addWrapper = true, form, fieldName, fieldsVal
|
|
70
71
|
}
|
71
72
|
}
|
72
73
|
const initData = async (params) => {
|
74
|
+
|
73
75
|
let item = null
|
74
76
|
const ruleParams = {}
|
75
77
|
if (request && typeof request === 'function') {
|
@@ -136,7 +136,6 @@ const Table = ({ children, onTableAddRow, disabled, readonly, onTableRemoveRow,
|
|
136
136
|
}
|
137
137
|
if (result) {
|
138
138
|
newidRefs.current[childIndex] = nanoid();
|
139
|
-
console.log(`[${child.props.label}]newid`, newidRefs.current[childIndex]);
|
140
139
|
}
|
141
140
|
return result;
|
142
141
|
}}
|
@@ -152,11 +151,13 @@ const Table = ({ children, onTableAddRow, disabled, readonly, onTableRemoveRow,
|
|
152
151
|
rules={rules}
|
153
152
|
>
|
154
153
|
{React.cloneElement(child, {
|
155
|
-
key: `row_${field.key}_child_${childIndex}_${newidRefs.current[childIndex]}`,
|
154
|
+
// key: `row_${field.key}_child_${childIndex}_${newidRefs.current[childIndex]}`,
|
155
|
+
key: `row_${field.key}_child_${childIndex}`,
|
156
156
|
subTable: true,
|
157
157
|
subTableIndex: index,
|
158
158
|
subTableHead: index === 0,
|
159
159
|
form,
|
160
|
+
shouldUpdateKey: newidRefs.current[childIndex],
|
160
161
|
fieldName: [fieldName, field.name, col_id],
|
161
162
|
fieldsValue: fieldsValue,
|
162
163
|
initializeFormRender,
|
@@ -68,9 +68,9 @@ const FormContainer = forwardRef(({ cols = 1, children, mode = "view" }, ref) =>
|
|
68
68
|
initializeDependencyMap();
|
69
69
|
setFormContent(renderChildren());
|
70
70
|
}, 300),
|
71
|
-
[children, cols]
|
71
|
+
[children, cols]
|
72
72
|
);
|
73
|
-
|
73
|
+
|
74
74
|
|
75
75
|
useEffect(() => {
|
76
76
|
throttledInitializeFormRender();
|
@@ -284,7 +284,7 @@ const FormContainer = forwardRef(({ cols = 1, children, mode = "view" }, ref) =>
|
|
284
284
|
}
|
285
285
|
|
286
286
|
setTimeout(() => {
|
287
|
-
recordFieldsChange(changedFields,true)
|
287
|
+
recordFieldsChange(changedFields, true)
|
288
288
|
// console.log("idGroups", idGroups)
|
289
289
|
if (idGroups.length > 0) idGroups.forEach(ids => { if (Array.isArray(ids) && ids.length > 0) handleTableAddRow(ids) })
|
290
290
|
}, 0)
|
@@ -483,6 +483,8 @@ const FormContainer = forwardRef(({ cols = 1, children, mode = "view" }, ref) =>
|
|
483
483
|
})
|
484
484
|
}, 0);
|
485
485
|
}
|
486
|
+
|
487
|
+
const shouldUpdateKey = React.useRef({})
|
486
488
|
const renderChildren = () => {
|
487
489
|
const childrenArray = React.Children.toArray(children);
|
488
490
|
const groupedChildren = batchElements(
|
@@ -492,7 +494,9 @@ const FormContainer = forwardRef(({ cols = 1, children, mode = "view" }, ref) =>
|
|
492
494
|
}),
|
493
495
|
cols
|
494
496
|
);
|
495
|
-
|
497
|
+
|
498
|
+
|
499
|
+
|
496
500
|
|
497
501
|
return groupedChildren.map((group, index) => (
|
498
502
|
<Row key={`row-${index}`} gutter={[24, 24]}>
|
@@ -500,6 +504,9 @@ const FormContainer = forwardRef(({ cols = 1, children, mode = "view" }, ref) =>
|
|
500
504
|
const { componentId, __id, _componentName, ...props } = child.props;
|
501
505
|
const componentName = child.type?.displayName || _componentName;
|
502
506
|
const identifier = componentId || __id;
|
507
|
+
if (!(identifier in shouldUpdateKey.current)) {
|
508
|
+
shouldUpdateKey.current[identifier] = nanoid()
|
509
|
+
}
|
503
510
|
const isLayoutComponent = componentName && componentName.startsWith('Layout.');
|
504
511
|
const isTable = componentName && componentName == 'Field.Table';
|
505
512
|
const hidden = props.calcHidden && mode != "desgin";
|
@@ -518,10 +525,10 @@ const FormContainer = forwardRef(({ cols = 1, children, mode = "view" }, ref) =>
|
|
518
525
|
const onCustomChange = (value) => {
|
519
526
|
form.setFieldValue(identifier, value)
|
520
527
|
}
|
521
|
-
|
528
|
+
|
522
529
|
let childComponent
|
523
|
-
if (isTable || isLayoutComponent){
|
524
|
-
childComponent = React.cloneElement(child, { onTableAddRow: handleTableAddRow, onTableRemoveRow: handleTableRemoveRow, form: form, fieldName: identifier, onCustomChange, initializeFormRender, mode
|
530
|
+
if (isTable || isLayoutComponent) {
|
531
|
+
childComponent = React.cloneElement(child, { onTableAddRow: handleTableAddRow, onTableRemoveRow: handleTableRemoveRow, form: form, fieldName: identifier, onCustomChange, initializeFormRender, mode, recordFieldsChange })
|
525
532
|
}
|
526
533
|
else if (componentName === "Field.WithSingleSelect" || componentName === "Field.WithMultipleSelect" || componentName === "Show.WithTable") {
|
527
534
|
childComponent = <Form.Item
|
@@ -545,18 +552,18 @@ const FormContainer = forwardRef(({ cols = 1, children, mode = "view" }, ref) =>
|
|
545
552
|
}
|
546
553
|
}
|
547
554
|
}
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
console.log("result",result)
|
552
|
-
console.log("props.label",props.label)
|
553
|
-
console.log(" ")
|
555
|
+
if (result) {
|
556
|
+
shouldUpdateKey.current[identifier] = nanoid()
|
557
|
+
}
|
554
558
|
return result;
|
555
559
|
}}
|
556
560
|
>
|
557
561
|
{({ getFieldsValue }) => {
|
558
562
|
const fieldsValue = getFieldsValue();
|
559
|
-
let element = React.cloneElement(child, {
|
563
|
+
let element = React.cloneElement(child, {
|
564
|
+
onTableAddRow: handleTableAddRow, onTableRemoveRow: handleTableRemoveRow, form: form, fieldName: identifier, onCustomChange, fieldsValue, initializeFormRender, recordFieldsChange,
|
565
|
+
shouldUpdateKey: newidRefs.current[childIndex],
|
566
|
+
})
|
560
567
|
return componentName === "show.WithTable" ? <>{element}</> : <Form.Item
|
561
568
|
style={{ marginBottom: 0 }}
|
562
569
|
label=""
|
@@ -575,7 +582,7 @@ const FormContainer = forwardRef(({ cols = 1, children, mode = "view" }, ref) =>
|
|
575
582
|
name={identifier}
|
576
583
|
rules={rules}
|
577
584
|
>
|
578
|
-
{React.cloneElement(child, { form: form, fieldName: identifier, onCustomChange, initializeFormRender,recordFieldsChange })}
|
585
|
+
{React.cloneElement(child, { form: form, fieldName: identifier, onCustomChange, initializeFormRender, recordFieldsChange })}
|
579
586
|
</Form.Item>
|
580
587
|
}
|
581
588
|
return (
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import React, { useMemo } from 'react';
|
2
|
+
import { nanoid } from 'nanoid';
|
2
3
|
import { Form, Row, Col } from 'antd';
|
3
4
|
|
4
5
|
const LayoutFormRow = ({ children, layout, onTableAddRow, onTableRemoveRow, form, initializeFormRender,recordFieldsChange, mode }) => {
|
@@ -12,6 +13,7 @@ const LayoutFormRow = ({ children, layout, onTableAddRow, onTableRemoveRow, form
|
|
12
13
|
const colSpans = useMemo(() => getColSpan(layout), [layout]);
|
13
14
|
|
14
15
|
|
16
|
+
const shouldUpdateKey = React.useRef({})
|
15
17
|
const formItems = useMemo(() => {
|
16
18
|
return React.Children.toArray(children).map((child, index) => {
|
17
19
|
const props = child.props;
|
@@ -22,7 +24,9 @@ const LayoutFormRow = ({ children, layout, onTableAddRow, onTableRemoveRow, form
|
|
22
24
|
// let childComponent = child;
|
23
25
|
// if (componentName == 'Field.Table')
|
24
26
|
// childComponent = React.cloneElement(child, { onTableAddRow: onTableAddRow, onTableRemoveRow: onTableRemoveRow })
|
25
|
-
|
27
|
+
if (!(identifier in shouldUpdateKey.current)) {
|
28
|
+
shouldUpdateKey.current[identifier] = nanoid()
|
29
|
+
}
|
26
30
|
const hidden = props?.calcHidden && mode != "desgin";
|
27
31
|
const rules = []
|
28
32
|
if (props?.isRequired)
|
@@ -63,12 +67,15 @@ const LayoutFormRow = ({ children, layout, onTableAddRow, onTableRemoveRow, form
|
|
63
67
|
}
|
64
68
|
}
|
65
69
|
}
|
70
|
+
if (result) {
|
71
|
+
shouldUpdateKey.current[identifier] = nanoid()
|
72
|
+
}
|
66
73
|
return result;
|
67
74
|
}}
|
68
75
|
>
|
69
76
|
{({ getFieldsValue }) => {
|
70
77
|
const fieldsValue = getFieldsValue();
|
71
|
-
let element = React.cloneElement(child, { onTableAddRow: onTableAddRow, onTableRemoveRow: onTableRemoveRow, form: form, fieldName: identifier, onCustomChange, fieldsValue, initializeFormRender,recordFieldsChange })
|
78
|
+
let element = React.cloneElement(child, { onTableAddRow: onTableAddRow, onTableRemoveRow: onTableRemoveRow, form: form, fieldName: identifier, onCustomChange, fieldsValue, initializeFormRender,recordFieldsChange, shouldUpdateKey: shouldUpdateKey.current[identifier] })
|
72
79
|
return componentName === "Show.WithTable" ? <>{element}</> : <Form.Item
|
73
80
|
style={{ marginBottom: 0 }}
|
74
81
|
label=""
|