@wix/form-public 0.486.0 → 0.488.0
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 +53 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +11 -0
- package/dist/index.css.map +1 -1
- package/dist/index.js +53 -19
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -43841,6 +43841,30 @@ var ReadOnlyField = ({ field, FieldLayout }) => {
|
|
|
43841
43841
|
}
|
|
43842
43842
|
}, /* @__PURE__ */ React171.createElement(FieldComponent, fieldProps));
|
|
43843
43843
|
};
|
|
43844
|
+
var useSingleSubmit = (submit) => {
|
|
43845
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
43846
|
+
const isSubmittingRef = useRef(false);
|
|
43847
|
+
const submitOnce = useCallback(async () => {
|
|
43848
|
+
if (isSubmittingRef.current) {
|
|
43849
|
+
return;
|
|
43850
|
+
}
|
|
43851
|
+
isSubmittingRef.current = true;
|
|
43852
|
+
setIsSubmitting(true);
|
|
43853
|
+
try {
|
|
43854
|
+
await submit();
|
|
43855
|
+
} catch (error) {
|
|
43856
|
+
console.error(error);
|
|
43857
|
+
}
|
|
43858
|
+
isSubmittingRef.current = false;
|
|
43859
|
+
setIsSubmitting(false);
|
|
43860
|
+
}, [
|
|
43861
|
+
submit
|
|
43862
|
+
]);
|
|
43863
|
+
return {
|
|
43864
|
+
submitOnce,
|
|
43865
|
+
isSubmitting
|
|
43866
|
+
};
|
|
43867
|
+
};
|
|
43844
43868
|
|
|
43845
43869
|
// ../form-fields/dist/esm/fields/submit-button/submit-button/utils.js
|
|
43846
43870
|
var getCurrentStep = (form, fieldId) => {
|
|
@@ -43858,11 +43882,15 @@ var getCurrentStep = (form, fieldId) => {
|
|
|
43858
43882
|
// ../form-fields/dist/esm/fields/submit-button/submit-button/use-submit-button.js
|
|
43859
43883
|
var useSubmitButton = ({ form, id: id6 }) => {
|
|
43860
43884
|
const { hasSteps, stepNumber, isLastStep } = getCurrentStep(form, id6);
|
|
43861
|
-
const { inProgress, actions } = useFieldActions();
|
|
43862
|
-
const [submitInProgress, setSubmitInProgress] = useState(false);
|
|
43885
|
+
const { inProgress: actionsInProgress, actions } = useFieldActions();
|
|
43863
43886
|
const { formStatus } = useFormStatus();
|
|
43864
|
-
const
|
|
43865
|
-
|
|
43887
|
+
const submitForm = useCallback(async () => {
|
|
43888
|
+
await actions?.submitForm();
|
|
43889
|
+
}, [
|
|
43890
|
+
actions
|
|
43891
|
+
]);
|
|
43892
|
+
const { submitOnce, isSubmitting } = useSingleSubmit(submitForm);
|
|
43893
|
+
const isInProgress = actionsInProgress || formStatus === FORM_STATUS.BUSY;
|
|
43866
43894
|
const showPreviousButton = hasSteps && stepNumber !== 0;
|
|
43867
43895
|
const showNextButton = hasSteps && !isLastStep;
|
|
43868
43896
|
const showSubmitButton = !hasSteps || hasSteps && isLastStep;
|
|
@@ -43870,21 +43898,16 @@ var useSubmitButton = ({ form, id: id6 }) => {
|
|
|
43870
43898
|
if (isInProgress) {
|
|
43871
43899
|
return;
|
|
43872
43900
|
}
|
|
43873
|
-
|
|
43874
|
-
try {
|
|
43875
|
-
await actions?.submitForm();
|
|
43876
|
-
} catch (error) {
|
|
43877
|
-
console.error(error);
|
|
43878
|
-
}
|
|
43879
|
-
setSubmitInProgress(false);
|
|
43901
|
+
await submitOnce();
|
|
43880
43902
|
}, [
|
|
43881
|
-
|
|
43882
|
-
|
|
43903
|
+
isInProgress,
|
|
43904
|
+
submitOnce
|
|
43883
43905
|
]);
|
|
43884
43906
|
return {
|
|
43885
43907
|
handleSubmitClick,
|
|
43886
|
-
isDisabled,
|
|
43908
|
+
isDisabled: isSubmitting,
|
|
43887
43909
|
isInProgress,
|
|
43910
|
+
isSubmitting,
|
|
43888
43911
|
showPreviousButton,
|
|
43889
43912
|
showNextButton,
|
|
43890
43913
|
showSubmitButton,
|
|
@@ -43899,7 +43922,7 @@ var SubmitButtonField = ({ field, FieldLayout }) => {
|
|
|
43899
43922
|
const externalData = useExternalData();
|
|
43900
43923
|
const form = useForm();
|
|
43901
43924
|
const { actions } = useFieldActions();
|
|
43902
|
-
const { handleSubmitClick, isDisabled, isInProgress, showPreviousButton, showNextButton, showSubmitButton, hasSteps } = useSubmitButton({
|
|
43925
|
+
const { handleSubmitClick, isDisabled, isInProgress, isSubmitting, showPreviousButton, showNextButton, showSubmitButton, hasSteps } = useSubmitButton({
|
|
43903
43926
|
form,
|
|
43904
43927
|
id: field.id
|
|
43905
43928
|
});
|
|
@@ -43919,6 +43942,7 @@ var SubmitButtonField = ({ field, FieldLayout }) => {
|
|
|
43919
43942
|
hasSteps,
|
|
43920
43943
|
isDisabled,
|
|
43921
43944
|
isInProgress,
|
|
43945
|
+
isSubmitting,
|
|
43922
43946
|
showPreviousButton,
|
|
43923
43947
|
showNextButton,
|
|
43924
43948
|
showSubmitButton,
|
|
@@ -49970,17 +49994,21 @@ function submitFormClick(params) {
|
|
|
49970
49994
|
}
|
|
49971
49995
|
var SubmitStatusContext = /* @__PURE__ */ createContext(void 0);
|
|
49972
49996
|
var SubmitStatusProvider = ({ children }) => {
|
|
49997
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
49973
49998
|
const [submitSuccessMessage, setSubmitSuccessMessage] = useState();
|
|
49974
49999
|
const [submitFailureCode, setSubmitFailureCode] = useState();
|
|
49975
50000
|
const [submitFailureMessage, setSubmitFailureMessage] = useState();
|
|
49976
50001
|
const value = useMemo(() => ({
|
|
50002
|
+
isSubmitting,
|
|
49977
50003
|
submitSuccessMessage,
|
|
49978
50004
|
submitFailureCode,
|
|
49979
50005
|
submitFailureMessage,
|
|
50006
|
+
setIsSubmitting,
|
|
49980
50007
|
setSubmitSuccessMessage,
|
|
49981
50008
|
setSubmitFailureCode,
|
|
49982
50009
|
setSubmitFailureMessage
|
|
49983
50010
|
}), [
|
|
50011
|
+
isSubmitting,
|
|
49984
50012
|
submitSuccessMessage,
|
|
49985
50013
|
submitFailureCode,
|
|
49986
50014
|
submitFailureMessage
|
|
@@ -50067,7 +50095,7 @@ var getCheckoutMessage = (text) => {
|
|
|
50067
50095
|
|
|
50068
50096
|
// ../form-viewer/dist/esm/hooks/use-submit/use-submit.js
|
|
50069
50097
|
var useSubmit = ({ validateAndScrollToError, submitAction, onSubmit, onSubmitSuccess, onSubmitFailure, resetFormValues, values, submitSettings, limitationRule, handleStepChange, navigateToCheckout, openPopup, onValidate, handleScrollToFirstError, onSubmissionLimitReached }) => {
|
|
50070
|
-
const { setSubmitSuccessMessage, setSubmitFailureCode, setSubmitFailureMessage } = useSubmitStatus();
|
|
50098
|
+
const { setIsSubmitting, setSubmitSuccessMessage, setSubmitFailureCode, setSubmitFailureMessage } = useSubmitStatus();
|
|
50071
50099
|
const { t } = useTranslation2();
|
|
50072
50100
|
const { report } = useBi();
|
|
50073
50101
|
const fireSubmitSuccess = useSubmitSuccessTrigger();
|
|
@@ -50168,8 +50196,10 @@ var useSubmit = ({ validateAndScrollToError, submitAction, onSubmit, onSubmitSuc
|
|
|
50168
50196
|
const submitTransaction = panorama.transaction(INTERACTIONS.SUBMIT_FORM);
|
|
50169
50197
|
try {
|
|
50170
50198
|
submitTransaction.start();
|
|
50199
|
+
setIsSubmitting(true);
|
|
50171
50200
|
response = await submitAction(values);
|
|
50172
50201
|
} catch (error) {
|
|
50202
|
+
setIsSubmitting(false);
|
|
50173
50203
|
const errorCode = getErrorCode(error);
|
|
50174
50204
|
if (isExpectedSubmissionRejection(error)) {
|
|
50175
50205
|
submitTransaction.finish();
|
|
@@ -50192,6 +50222,7 @@ var useSubmit = ({ validateAndScrollToError, submitAction, onSubmit, onSubmitSuc
|
|
|
50192
50222
|
handleSubmitFailure(error);
|
|
50193
50223
|
throw error;
|
|
50194
50224
|
}
|
|
50225
|
+
setIsSubmitting(false);
|
|
50195
50226
|
if (response) {
|
|
50196
50227
|
submitTransaction.finish();
|
|
50197
50228
|
onSubmitSuccess?.(response);
|
|
@@ -50212,6 +50243,7 @@ var useSubmit = ({ validateAndScrollToError, submitAction, onSubmit, onSubmitSuc
|
|
|
50212
50243
|
onSubmit,
|
|
50213
50244
|
reportSubmitFormBi,
|
|
50214
50245
|
panorama,
|
|
50246
|
+
setIsSubmitting,
|
|
50215
50247
|
submitAction,
|
|
50216
50248
|
onSubmitFailure,
|
|
50217
50249
|
handleCustomErrorMessages,
|
|
@@ -61527,15 +61559,17 @@ var NextButton = ({ className }) => {
|
|
|
61527
61559
|
}, nextText);
|
|
61528
61560
|
};
|
|
61529
61561
|
var SubmitButtonComponent = ({ className, children }) => {
|
|
61530
|
-
const { showSubmitButton, onSubmitClick, submitText, isDisabled, isInProgress } = useFieldPropsV2();
|
|
61562
|
+
const { showSubmitButton, onSubmitClick, submitText, isDisabled, isInProgress, isSubmitting } = useFieldPropsV2();
|
|
61531
61563
|
if (!showSubmitButton) {
|
|
61532
61564
|
return null;
|
|
61533
61565
|
}
|
|
61534
61566
|
const loaderElement = findChildOfType(children, SubmitButtonComponent.Loader);
|
|
61567
|
+
const isBusy = isSubmitting || isInProgress;
|
|
61535
61568
|
return /* @__PURE__ */ React171.createElement(Button, {
|
|
61536
61569
|
className,
|
|
61537
|
-
onPress: onSubmitClick,
|
|
61538
|
-
isDisabled: isDisabled
|
|
61570
|
+
onPress: isBusy ? void 0 : onSubmitClick,
|
|
61571
|
+
isDisabled: isDisabled && !isBusy,
|
|
61572
|
+
"aria-disabled": isBusy || void 0,
|
|
61539
61573
|
"data-in-progress": isInProgress
|
|
61540
61574
|
}, isInProgress && loaderElement ? loaderElement : submitText);
|
|
61541
61575
|
};
|