@wix/form-public 0.487.0 → 0.489.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.cjs
CHANGED
|
@@ -43851,6 +43851,30 @@ var ReadOnlyField = ({ field, FieldLayout }) => {
|
|
|
43851
43851
|
}
|
|
43852
43852
|
}, /* @__PURE__ */ React171__default.default.createElement(FieldComponent, fieldProps));
|
|
43853
43853
|
};
|
|
43854
|
+
var useSingleSubmit = (submit) => {
|
|
43855
|
+
const [isSubmitting, setIsSubmitting] = React171.useState(false);
|
|
43856
|
+
const isSubmittingRef = React171.useRef(false);
|
|
43857
|
+
const submitOnce = React171.useCallback(async () => {
|
|
43858
|
+
if (isSubmittingRef.current) {
|
|
43859
|
+
return;
|
|
43860
|
+
}
|
|
43861
|
+
isSubmittingRef.current = true;
|
|
43862
|
+
setIsSubmitting(true);
|
|
43863
|
+
try {
|
|
43864
|
+
await submit();
|
|
43865
|
+
} catch (error) {
|
|
43866
|
+
console.error(error);
|
|
43867
|
+
}
|
|
43868
|
+
isSubmittingRef.current = false;
|
|
43869
|
+
setIsSubmitting(false);
|
|
43870
|
+
}, [
|
|
43871
|
+
submit
|
|
43872
|
+
]);
|
|
43873
|
+
return {
|
|
43874
|
+
submitOnce,
|
|
43875
|
+
isSubmitting
|
|
43876
|
+
};
|
|
43877
|
+
};
|
|
43854
43878
|
|
|
43855
43879
|
// ../form-fields/dist/esm/fields/submit-button/submit-button/utils.js
|
|
43856
43880
|
var getCurrentStep = (form, fieldId) => {
|
|
@@ -43868,11 +43892,15 @@ var getCurrentStep = (form, fieldId) => {
|
|
|
43868
43892
|
// ../form-fields/dist/esm/fields/submit-button/submit-button/use-submit-button.js
|
|
43869
43893
|
var useSubmitButton = ({ form, id: id6 }) => {
|
|
43870
43894
|
const { hasSteps, stepNumber, isLastStep } = getCurrentStep(form, id6);
|
|
43871
|
-
const { inProgress, actions } = useFieldActions();
|
|
43872
|
-
const [submitInProgress, setSubmitInProgress] = React171.useState(false);
|
|
43895
|
+
const { inProgress: actionsInProgress, actions } = useFieldActions();
|
|
43873
43896
|
const { formStatus } = useFormStatus();
|
|
43874
|
-
const
|
|
43875
|
-
|
|
43897
|
+
const submitForm = React171.useCallback(async () => {
|
|
43898
|
+
await actions?.submitForm();
|
|
43899
|
+
}, [
|
|
43900
|
+
actions
|
|
43901
|
+
]);
|
|
43902
|
+
const { submitOnce, isSubmitting } = useSingleSubmit(submitForm);
|
|
43903
|
+
const isInProgress = actionsInProgress || formStatus === FORM_STATUS.BUSY;
|
|
43876
43904
|
const showPreviousButton = hasSteps && stepNumber !== 0;
|
|
43877
43905
|
const showNextButton = hasSteps && !isLastStep;
|
|
43878
43906
|
const showSubmitButton = !hasSteps || hasSteps && isLastStep;
|
|
@@ -43880,21 +43908,16 @@ var useSubmitButton = ({ form, id: id6 }) => {
|
|
|
43880
43908
|
if (isInProgress) {
|
|
43881
43909
|
return;
|
|
43882
43910
|
}
|
|
43883
|
-
|
|
43884
|
-
try {
|
|
43885
|
-
await actions?.submitForm();
|
|
43886
|
-
} catch (error) {
|
|
43887
|
-
console.error(error);
|
|
43888
|
-
}
|
|
43889
|
-
setSubmitInProgress(false);
|
|
43911
|
+
await submitOnce();
|
|
43890
43912
|
}, [
|
|
43891
|
-
|
|
43892
|
-
|
|
43913
|
+
isInProgress,
|
|
43914
|
+
submitOnce
|
|
43893
43915
|
]);
|
|
43894
43916
|
return {
|
|
43895
43917
|
handleSubmitClick,
|
|
43896
|
-
isDisabled,
|
|
43918
|
+
isDisabled: isSubmitting,
|
|
43897
43919
|
isInProgress,
|
|
43920
|
+
isSubmitting,
|
|
43898
43921
|
showPreviousButton,
|
|
43899
43922
|
showNextButton,
|
|
43900
43923
|
showSubmitButton,
|
|
@@ -43909,7 +43932,7 @@ var SubmitButtonField = ({ field, FieldLayout }) => {
|
|
|
43909
43932
|
const externalData = useExternalData();
|
|
43910
43933
|
const form = useForm();
|
|
43911
43934
|
const { actions } = useFieldActions();
|
|
43912
|
-
const { handleSubmitClick, isDisabled, isInProgress, showPreviousButton, showNextButton, showSubmitButton, hasSteps } = useSubmitButton({
|
|
43935
|
+
const { handleSubmitClick, isDisabled, isInProgress, isSubmitting, showPreviousButton, showNextButton, showSubmitButton, hasSteps } = useSubmitButton({
|
|
43913
43936
|
form,
|
|
43914
43937
|
id: field.id
|
|
43915
43938
|
});
|
|
@@ -43929,6 +43952,7 @@ var SubmitButtonField = ({ field, FieldLayout }) => {
|
|
|
43929
43952
|
hasSteps,
|
|
43930
43953
|
isDisabled,
|
|
43931
43954
|
isInProgress,
|
|
43955
|
+
isSubmitting,
|
|
43932
43956
|
showPreviousButton,
|
|
43933
43957
|
showNextButton,
|
|
43934
43958
|
showSubmitButton,
|
|
@@ -49980,17 +50004,21 @@ function submitFormClick(params) {
|
|
|
49980
50004
|
}
|
|
49981
50005
|
var SubmitStatusContext = /* @__PURE__ */ React171.createContext(void 0);
|
|
49982
50006
|
var SubmitStatusProvider = ({ children }) => {
|
|
50007
|
+
const [isSubmitting, setIsSubmitting] = React171.useState(false);
|
|
49983
50008
|
const [submitSuccessMessage, setSubmitSuccessMessage] = React171.useState();
|
|
49984
50009
|
const [submitFailureCode, setSubmitFailureCode] = React171.useState();
|
|
49985
50010
|
const [submitFailureMessage, setSubmitFailureMessage] = React171.useState();
|
|
49986
50011
|
const value = React171.useMemo(() => ({
|
|
50012
|
+
isSubmitting,
|
|
49987
50013
|
submitSuccessMessage,
|
|
49988
50014
|
submitFailureCode,
|
|
49989
50015
|
submitFailureMessage,
|
|
50016
|
+
setIsSubmitting,
|
|
49990
50017
|
setSubmitSuccessMessage,
|
|
49991
50018
|
setSubmitFailureCode,
|
|
49992
50019
|
setSubmitFailureMessage
|
|
49993
50020
|
}), [
|
|
50021
|
+
isSubmitting,
|
|
49994
50022
|
submitSuccessMessage,
|
|
49995
50023
|
submitFailureCode,
|
|
49996
50024
|
submitFailureMessage
|
|
@@ -50077,7 +50105,7 @@ var getCheckoutMessage = (text) => {
|
|
|
50077
50105
|
|
|
50078
50106
|
// ../form-viewer/dist/esm/hooks/use-submit/use-submit.js
|
|
50079
50107
|
var useSubmit = ({ validateAndScrollToError, submitAction, onSubmit, onSubmitSuccess, onSubmitFailure, resetFormValues, values, submitSettings, limitationRule, handleStepChange, navigateToCheckout, openPopup, onValidate, handleScrollToFirstError, onSubmissionLimitReached }) => {
|
|
50080
|
-
const { setSubmitSuccessMessage, setSubmitFailureCode, setSubmitFailureMessage } = useSubmitStatus();
|
|
50108
|
+
const { setIsSubmitting, setSubmitSuccessMessage, setSubmitFailureCode, setSubmitFailureMessage } = useSubmitStatus();
|
|
50081
50109
|
const { t } = useTranslation2();
|
|
50082
50110
|
const { report } = useBi();
|
|
50083
50111
|
const fireSubmitSuccess = useSubmitSuccessTrigger();
|
|
@@ -50178,8 +50206,10 @@ var useSubmit = ({ validateAndScrollToError, submitAction, onSubmit, onSubmitSuc
|
|
|
50178
50206
|
const submitTransaction = panorama.transaction(INTERACTIONS.SUBMIT_FORM);
|
|
50179
50207
|
try {
|
|
50180
50208
|
submitTransaction.start();
|
|
50209
|
+
setIsSubmitting(true);
|
|
50181
50210
|
response = await submitAction(values);
|
|
50182
50211
|
} catch (error) {
|
|
50212
|
+
setIsSubmitting(false);
|
|
50183
50213
|
const errorCode = getErrorCode(error);
|
|
50184
50214
|
if (isExpectedSubmissionRejection(error)) {
|
|
50185
50215
|
submitTransaction.finish();
|
|
@@ -50202,6 +50232,7 @@ var useSubmit = ({ validateAndScrollToError, submitAction, onSubmit, onSubmitSuc
|
|
|
50202
50232
|
handleSubmitFailure(error);
|
|
50203
50233
|
throw error;
|
|
50204
50234
|
}
|
|
50235
|
+
setIsSubmitting(false);
|
|
50205
50236
|
if (response) {
|
|
50206
50237
|
submitTransaction.finish();
|
|
50207
50238
|
onSubmitSuccess?.(response);
|
|
@@ -50222,6 +50253,7 @@ var useSubmit = ({ validateAndScrollToError, submitAction, onSubmit, onSubmitSuc
|
|
|
50222
50253
|
onSubmit,
|
|
50223
50254
|
reportSubmitFormBi,
|
|
50224
50255
|
panorama,
|
|
50256
|
+
setIsSubmitting,
|
|
50225
50257
|
submitAction,
|
|
50226
50258
|
onSubmitFailure,
|
|
50227
50259
|
handleCustomErrorMessages,
|
|
@@ -61537,15 +61569,17 @@ var NextButton = ({ className }) => {
|
|
|
61537
61569
|
}, nextText);
|
|
61538
61570
|
};
|
|
61539
61571
|
var SubmitButtonComponent = ({ className, children }) => {
|
|
61540
|
-
const { showSubmitButton, onSubmitClick, submitText, isDisabled, isInProgress } = useFieldPropsV2();
|
|
61572
|
+
const { showSubmitButton, onSubmitClick, submitText, isDisabled, isInProgress, isSubmitting } = useFieldPropsV2();
|
|
61541
61573
|
if (!showSubmitButton) {
|
|
61542
61574
|
return null;
|
|
61543
61575
|
}
|
|
61544
61576
|
const loaderElement = findChildOfType(children, SubmitButtonComponent.Loader);
|
|
61577
|
+
const isBusy = isSubmitting || isInProgress;
|
|
61545
61578
|
return /* @__PURE__ */ React171__default.default.createElement(reactAriaComponents.Button, {
|
|
61546
61579
|
className,
|
|
61547
|
-
onPress: onSubmitClick,
|
|
61548
|
-
isDisabled: isDisabled
|
|
61580
|
+
onPress: isBusy ? void 0 : onSubmitClick,
|
|
61581
|
+
isDisabled: isDisabled && !isBusy,
|
|
61582
|
+
"aria-disabled": isBusy || void 0,
|
|
61549
61583
|
"data-in-progress": isInProgress
|
|
61550
61584
|
}, isInProgress && loaderElement ? loaderElement : submitText);
|
|
61551
61585
|
};
|