@saas-ui/forms 2.6.9 → 2.6.11
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +12 -0
- package/dist/index.js +50 -42
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +46 -38
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/create-field.tsx +4 -1
- package/src/create-form.tsx +8 -5
package/dist/index.mjs
CHANGED
@@ -53,7 +53,7 @@ var FormValue = ({ name }) => {
|
|
53
53
|
FormValue.displayName = "FormValue";
|
54
54
|
|
55
55
|
// src/field.tsx
|
56
|
-
import * as
|
56
|
+
import * as React7 from "react";
|
57
57
|
|
58
58
|
// src/fields-context.tsx
|
59
59
|
import React2 from "react";
|
@@ -487,6 +487,7 @@ var NativeSelect = forwardRef6(
|
|
487
487
|
NativeSelect.displayName = "NativeSelect";
|
488
488
|
|
489
489
|
// src/create-field.tsx
|
490
|
+
import * as React6 from "react";
|
490
491
|
import { Controller } from "react-hook-form";
|
491
492
|
import { forwardRef as forwardRef7, useMergeRefs } from "@chakra-ui/react";
|
492
493
|
import { callAllHandlers } from "@chakra-ui/utils";
|
@@ -564,7 +565,10 @@ var _createField = (InputComponent, { displayName, hideLabel, getBaseField: getB
|
|
564
565
|
};
|
565
566
|
const fieldContext = useFieldsContext();
|
566
567
|
const getBaseField = (_a = fieldContext == null ? void 0 : fieldContext.getBaseField) != null ? _a : getBaseFieldProp;
|
567
|
-
const { extraProps, BaseField: BaseField2 } =
|
568
|
+
const { extraProps, BaseField: BaseField2 } = React6.useMemo(
|
569
|
+
() => getBaseField(),
|
570
|
+
[getBaseField]
|
571
|
+
);
|
568
572
|
const [, inputProps] = splitProps2(
|
569
573
|
props,
|
570
574
|
[
|
@@ -753,7 +757,7 @@ var defaultFieldTypes = {
|
|
753
757
|
// src/field.tsx
|
754
758
|
import { jsx as jsx13 } from "react/jsx-runtime";
|
755
759
|
var defaultInputType = "text";
|
756
|
-
var Field =
|
760
|
+
var Field = React7.forwardRef(
|
757
761
|
(props, ref) => {
|
758
762
|
const { type = defaultInputType, name } = props;
|
759
763
|
const overrides = useFieldProps(name);
|
@@ -763,7 +767,7 @@ var Field = React6.forwardRef(
|
|
763
767
|
);
|
764
768
|
|
765
769
|
// src/fields.tsx
|
766
|
-
import * as
|
770
|
+
import * as React10 from "react";
|
767
771
|
|
768
772
|
// src/layout.tsx
|
769
773
|
import {
|
@@ -806,7 +810,7 @@ var FormLayout = ({ children, ...props }) => {
|
|
806
810
|
FormLayout.displayName = "FormLayout";
|
807
811
|
|
808
812
|
// src/array-field.tsx
|
809
|
-
import * as
|
813
|
+
import * as React9 from "react";
|
810
814
|
import {
|
811
815
|
chakra as chakra3,
|
812
816
|
forwardRef as forwardRef11,
|
@@ -815,7 +819,7 @@ import {
|
|
815
819
|
import { PlusIcon, MinusIcon } from "@saas-ui/core/icons";
|
816
820
|
|
817
821
|
// src/use-array-field.tsx
|
818
|
-
import * as
|
822
|
+
import * as React8 from "react";
|
819
823
|
import {
|
820
824
|
useFieldArray
|
821
825
|
} from "react-hook-form";
|
@@ -850,7 +854,7 @@ var useArrayField = ({
|
|
850
854
|
var useArrayFieldRow = ({ index }) => {
|
851
855
|
const { clearErrors } = useFormContext();
|
852
856
|
const { name, remove, fields } = useArrayFieldContext();
|
853
|
-
|
857
|
+
React8.useEffect(() => {
|
854
858
|
clearErrors(name);
|
855
859
|
}, []);
|
856
860
|
return {
|
@@ -858,7 +862,7 @@ var useArrayFieldRow = ({ index }) => {
|
|
858
862
|
isFirst: index === 0,
|
859
863
|
isLast: index === fields.length - 1,
|
860
864
|
name: `${name}.${index}`,
|
861
|
-
remove:
|
865
|
+
remove: React8.useCallback(() => {
|
862
866
|
clearErrors(name);
|
863
867
|
remove(index);
|
864
868
|
}, [index])
|
@@ -957,7 +961,7 @@ var ArrayFieldRows = ({
|
|
957
961
|
return children(fields);
|
958
962
|
};
|
959
963
|
ArrayFieldRows.displayName = "ArrayFieldRows";
|
960
|
-
var ArrayFieldContainer =
|
964
|
+
var ArrayFieldContainer = React9.forwardRef(
|
961
965
|
({
|
962
966
|
name,
|
963
967
|
defaultValue,
|
@@ -975,7 +979,7 @@ var ArrayFieldContainer = React8.forwardRef(
|
|
975
979
|
min: min || (overrides == null ? void 0 : overrides.min),
|
976
980
|
max: max || (overrides == null ? void 0 : overrides.max)
|
977
981
|
});
|
978
|
-
|
982
|
+
React9.useImperativeHandle(ref, () => context, [ref, context]);
|
979
983
|
return /* @__PURE__ */ jsx15(ArrayFieldProvider, { value: context, children: /* @__PURE__ */ jsx15(BaseField, { name, ...fieldProps, ...overrides, children }) });
|
980
984
|
}
|
981
985
|
);
|
@@ -1044,10 +1048,10 @@ var AutoFields = ({
|
|
1044
1048
|
const context = useFormContext();
|
1045
1049
|
const schema = schemaProp || context.schema;
|
1046
1050
|
const fieldResolver = fieldResolverProp || context.fieldResolver;
|
1047
|
-
const resolver =
|
1048
|
-
const fields =
|
1051
|
+
const resolver = React10.useMemo(() => fieldResolver, [schema, fieldResolver]);
|
1052
|
+
const fields = React10.useMemo(() => resolver == null ? void 0 : resolver.getFields(), [resolver]);
|
1049
1053
|
const form = useFormContext();
|
1050
|
-
|
1054
|
+
React10.useEffect(() => {
|
1051
1055
|
var _a;
|
1052
1056
|
if (focusFirstField && ((_a = fields == null ? void 0 : fields[0]) == null ? void 0 : _a.name)) {
|
1053
1057
|
form.setFocus(fields[0].name);
|
@@ -1126,7 +1130,7 @@ var SubmitButton = forwardRef12(
|
|
1126
1130
|
SubmitButton.displayName = "SubmitButton";
|
1127
1131
|
|
1128
1132
|
// src/display-if.tsx
|
1129
|
-
import * as
|
1133
|
+
import * as React11 from "react";
|
1130
1134
|
import {
|
1131
1135
|
useWatch
|
1132
1136
|
} from "react-hook-form";
|
@@ -1139,8 +1143,8 @@ var DisplayIf = ({
|
|
1139
1143
|
condition = (value) => !!value,
|
1140
1144
|
onToggle
|
1141
1145
|
}) => {
|
1142
|
-
const initializedRef =
|
1143
|
-
const matchesRef =
|
1146
|
+
const initializedRef = React11.useRef(false);
|
1147
|
+
const matchesRef = React11.useRef(false);
|
1144
1148
|
const value = useWatch({
|
1145
1149
|
name,
|
1146
1150
|
defaultValue,
|
@@ -1149,7 +1153,7 @@ var DisplayIf = ({
|
|
1149
1153
|
});
|
1150
1154
|
const context = useFormContext();
|
1151
1155
|
const matches = condition(value, context);
|
1152
|
-
|
1156
|
+
React11.useEffect(() => {
|
1153
1157
|
if (!initializedRef.current) {
|
1154
1158
|
initializedRef.current = true;
|
1155
1159
|
return;
|
@@ -1163,7 +1167,7 @@ var DisplayIf = ({
|
|
1163
1167
|
DisplayIf.displayName = "DisplayIf";
|
1164
1168
|
|
1165
1169
|
// src/step-form.tsx
|
1166
|
-
import * as
|
1170
|
+
import * as React13 from "react";
|
1167
1171
|
import {
|
1168
1172
|
chakra as chakra4,
|
1169
1173
|
Button as Button5
|
@@ -1176,7 +1180,7 @@ import {
|
|
1176
1180
|
} from "@saas-ui/core";
|
1177
1181
|
|
1178
1182
|
// src/use-step-form.tsx
|
1179
|
-
import * as
|
1183
|
+
import * as React12 from "react";
|
1180
1184
|
import { createContext as createContext4 } from "@chakra-ui/react-utils";
|
1181
1185
|
import {
|
1182
1186
|
useStepper,
|
@@ -1195,11 +1199,11 @@ function useStepForm(props) {
|
|
1195
1199
|
...rest
|
1196
1200
|
} = props;
|
1197
1201
|
const stepper = useStepper(rest);
|
1198
|
-
const [options, setOptions] =
|
1202
|
+
const [options, setOptions] = React12.useState(stepsOptions);
|
1199
1203
|
const { activeStep, isLastStep, nextStep } = stepper;
|
1200
|
-
const [steps, updateSteps] =
|
1201
|
-
const mergedData =
|
1202
|
-
const onSubmitStep =
|
1204
|
+
const [steps, updateSteps] = React12.useState({});
|
1205
|
+
const mergedData = React12.useRef({});
|
1206
|
+
const onSubmitStep = React12.useCallback(
|
1203
1207
|
async (data) => {
|
1204
1208
|
var _a, _b;
|
1205
1209
|
try {
|
@@ -1224,7 +1228,7 @@ function useStepForm(props) {
|
|
1224
1228
|
},
|
1225
1229
|
[steps, activeStep, isLastStep, mergedData]
|
1226
1230
|
);
|
1227
|
-
const getFormProps =
|
1231
|
+
const getFormProps = React12.useCallback(() => {
|
1228
1232
|
const step = steps[activeStep];
|
1229
1233
|
return {
|
1230
1234
|
onSubmit: onSubmitStep,
|
@@ -1236,7 +1240,7 @@ function useStepForm(props) {
|
|
1236
1240
|
fieldResolver: (step == null ? void 0 : step.schema) ? fieldResolver == null ? void 0 : fieldResolver(step.schema) : void 0
|
1237
1241
|
};
|
1238
1242
|
}, [steps, onSubmitStep, activeStep, resolver, fieldResolver]);
|
1239
|
-
const updateStep =
|
1243
|
+
const updateStep = React12.useCallback(
|
1240
1244
|
(step) => {
|
1241
1245
|
const stepOptions = options == null ? void 0 : options.find((s) => s.name === step.name);
|
1242
1246
|
updateSteps((steps2) => {
|
@@ -1262,7 +1266,7 @@ function useFormStep(props) {
|
|
1262
1266
|
const { name, schema, resolver, onSubmit } = props;
|
1263
1267
|
const step = useStep({ name });
|
1264
1268
|
const { steps, updateStep } = useStepFormContext();
|
1265
|
-
|
1269
|
+
React12.useEffect(() => {
|
1266
1270
|
updateStep({ name, schema, resolver, onSubmit });
|
1267
1271
|
}, [name, schema]);
|
1268
1272
|
return {
|
@@ -1285,8 +1289,8 @@ var FormStepper = (props) => {
|
|
1285
1289
|
render,
|
1286
1290
|
...rest
|
1287
1291
|
} = props;
|
1288
|
-
const elements =
|
1289
|
-
if (
|
1292
|
+
const elements = React13.Children.map(children, (child) => {
|
1293
|
+
if (React13.isValidElement(child) && (child == null ? void 0 : child.type) === FormStep) {
|
1290
1294
|
const { isCompleted } = useFormStep(child.props);
|
1291
1295
|
return /* @__PURE__ */ jsx19(
|
1292
1296
|
StepsItem,
|
@@ -1302,7 +1306,7 @@ var FormStepper = (props) => {
|
|
1302
1306
|
}
|
1303
1307
|
return child;
|
1304
1308
|
});
|
1305
|
-
const onChange =
|
1309
|
+
const onChange = React13.useCallback((i) => {
|
1306
1310
|
setIndex(i);
|
1307
1311
|
onChangeProp == null ? void 0 : onChangeProp(i);
|
1308
1312
|
}, []);
|
@@ -1399,10 +1403,11 @@ var WatchField = (props) => {
|
|
1399
1403
|
};
|
1400
1404
|
|
1401
1405
|
// src/create-form.tsx
|
1406
|
+
import { useMemo as useMemo3 } from "react";
|
1402
1407
|
import { forwardRef as forwardRef14 } from "@chakra-ui/react";
|
1403
1408
|
|
1404
1409
|
// src/form.tsx
|
1405
|
-
import * as
|
1410
|
+
import * as React14 from "react";
|
1406
1411
|
import { chakra as chakra5, forwardRef as forwardRef13 } from "@chakra-ui/react";
|
1407
1412
|
import { cx as cx4, runIfFn } from "@chakra-ui/utils";
|
1408
1413
|
import {
|
@@ -1450,8 +1455,8 @@ var Form = forwardRef13(
|
|
1450
1455
|
};
|
1451
1456
|
const methods = useForm(form);
|
1452
1457
|
const { handleSubmit } = methods;
|
1453
|
-
|
1454
|
-
|
1458
|
+
React14.useImperativeHandle(formRef, () => methods, [formRef, methods]);
|
1459
|
+
React14.useEffect(() => {
|
1455
1460
|
let subscription;
|
1456
1461
|
if (onChange) {
|
1457
1462
|
subscription = methods.watch(onChange);
|
@@ -1510,10 +1515,13 @@ function createForm({
|
|
1510
1515
|
fieldResolver: fieldResolverProp,
|
1511
1516
|
...rest
|
1512
1517
|
} = props;
|
1513
|
-
const fieldsContext =
|
1514
|
-
|
1515
|
-
|
1516
|
-
|
1518
|
+
const fieldsContext = useMemo3(
|
1519
|
+
() => ({
|
1520
|
+
fields: { ...defaultFieldTypes, ...fields },
|
1521
|
+
getBaseField
|
1522
|
+
}),
|
1523
|
+
[fields, getBaseField]
|
1524
|
+
);
|
1517
1525
|
return /* @__PURE__ */ jsx21(FieldsProvider, { value: fieldsContext, children: /* @__PURE__ */ jsx21(
|
1518
1526
|
Form,
|
1519
1527
|
{
|
@@ -1531,7 +1539,7 @@ function createForm({
|
|
1531
1539
|
}
|
1532
1540
|
|
1533
1541
|
// src/create-step-form.tsx
|
1534
|
-
import { useMemo as
|
1542
|
+
import { useMemo as useMemo4 } from "react";
|
1535
1543
|
import { forwardRef as forwardRef15 } from "@chakra-ui/react";
|
1536
1544
|
import { StepperProvider } from "@saas-ui/core";
|
1537
1545
|
import { runIfFn as runIfFn2 } from "@chakra-ui/utils";
|
@@ -1550,7 +1558,7 @@ function createStepForm({
|
|
1550
1558
|
...props
|
1551
1559
|
});
|
1552
1560
|
const { getFormProps, ...ctx } = stepper;
|
1553
|
-
const context =
|
1561
|
+
const context = useMemo4(() => ctx, [ctx]);
|
1554
1562
|
const fieldsContext = {
|
1555
1563
|
fields: {
|
1556
1564
|
...defaultFieldTypes,
|