@gisce/react-ooui 1.4.12 → 1.4.13-rc.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.
@@ -1 +1 @@
1
- {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["Form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAkCf,OAAO,EAAE,QAAQ,EAAgB,MAAM,SAAS,CAAC;AAmBjD,oBAAY,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxC,eAAe,CAAC,EAAE,CAChB,EAAE,CAAC,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,GAAG,EACZ,UAAU,CAAC,EAAE,GAAG,EAChB,iBAAiB,CAAC,EAAE,OAAO,KACxB,IAAI,CAAC;IACV,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;;AAuhCF,wBAAgC"}
1
+ {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["Form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAkCf,OAAO,EAAE,QAAQ,EAAgB,MAAM,SAAS,CAAC;AAmBjD,oBAAY,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxC,eAAe,CAAC,EAAE,CAChB,EAAE,CAAC,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,GAAG,EACZ,UAAU,CAAC,EAAE,GAAG,EAChB,iBAAiB,CAAC,EAAE,OAAO,KACxB,IAAI,CAAC;IACV,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;;AAwiCF,wBAAgC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gisce/react-ooui",
3
- "version": "1.4.12",
3
+ "version": "1.4.13-rc.1",
4
4
  "files": [
5
5
  "dist",
6
6
  "src",
@@ -705,15 +705,17 @@ function Form(props: FormProps, ref: any) {
705
705
  fields,
706
706
  arch,
707
707
  values,
708
+ operationInProgress = false,
708
709
  }: {
709
710
  arch: string;
710
711
  fields: any;
711
712
  values: any;
713
+ operationInProgress?: boolean;
712
714
  }) => {
713
715
  const ooui = new FormOoui(fields);
714
716
  // TODO: Here we must inject `values` to the ooui parser in order to evaluate arch+values and get the new form container
715
717
  ooui.parse(arch, {
716
- readOnly,
718
+ readOnly: readOnly || operationInProgress,
717
719
  values: convertToPlain2ManyValues(
718
720
  {
719
721
  ...values,
@@ -980,6 +982,15 @@ function Form(props: FormProps, ref: any) {
980
982
  checkFieldsChanges({ elementHasLostFocus: true });
981
983
  }
982
984
 
985
+ function updateOperationInProgress(value: boolean) {
986
+ parseForm({
987
+ fields,
988
+ arch: arch!,
989
+ values: getCurrentValues(fields),
990
+ operationInProgress: value,
991
+ });
992
+ }
993
+
983
994
  async function executeButtonAction({
984
995
  type,
985
996
  action,
@@ -1001,8 +1012,12 @@ function Form(props: FormProps, ref: any) {
1001
1012
  return;
1002
1013
  }
1003
1014
 
1015
+ let mustBlockButtons = false;
1016
+
1004
1017
  try {
1005
1018
  if (formHasChanges() || getCurrentId() === undefined) {
1019
+ mustBlockButtons = true;
1020
+ updateOperationInProgress(true);
1006
1021
  if (submitMode === "2many") {
1007
1022
  await submitApi({ callOnSubmitSucceed: false });
1008
1023
  x2manyPendingLink.current = true;
@@ -1024,7 +1039,9 @@ function Form(props: FormProps, ref: any) {
1024
1039
  } else if (type === "action") {
1025
1040
  await runActionButton({ action, context: updatedContext });
1026
1041
  }
1042
+ mustBlockButtons && updateOperationInProgress(false);
1027
1043
  } catch (err) {
1044
+ mustBlockButtons && updateOperationInProgress(false);
1028
1045
  showErrorDialog(err);
1029
1046
  }
1030
1047
  }