@vulcanjs/react-ui 0.6.6-y.8 → 0.6.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. package/dist/components/VulcanComponents/Consumer.d.ts.map +0 -0
  2. package/dist/components/VulcanComponents/Context.d.ts.map +0 -0
  3. package/dist/components/VulcanComponents/Dummy.d.ts.map +0 -0
  4. package/dist/components/VulcanComponents/Provider.d.ts.map +0 -0
  5. package/dist/components/VulcanComponents/defaultVulcanComponents/index.d.ts.map +0 -0
  6. package/dist/components/VulcanComponents/index.d.ts.map +0 -0
  7. package/dist/components/VulcanComponents/typings.d.ts.map +0 -0
  8. package/dist/components/VulcanCurrentUser/Consumer.d.ts.map +0 -0
  9. package/dist/components/VulcanCurrentUser/Context.d.ts.map +0 -0
  10. package/dist/components/VulcanCurrentUser/Provider.d.ts.map +0 -0
  11. package/dist/components/VulcanCurrentUser/index.d.ts.map +0 -0
  12. package/dist/components/core/LoadingButton.d.ts.map +0 -0
  13. package/dist/components/core/MutationButton.d.ts.map +0 -0
  14. package/dist/components/core/typings.d.ts.map +0 -0
  15. package/dist/components/form/core/Form/Form.d.ts.map +0 -0
  16. package/dist/components/form/core/Form/fields.d.ts.map +0 -0
  17. package/dist/components/form/core/Form/index.d.ts.map +0 -0
  18. package/dist/components/form/core/Form/typings.d.ts.map +0 -0
  19. package/dist/components/form/core/Form/utils.d.ts.map +0 -0
  20. package/dist/components/form/core/FormContainer.d.ts.map +1 -1
  21. package/dist/components/form/core/FormContext.d.ts.map +1 -1
  22. package/dist/components/form/core/index.d.ts.map +0 -0
  23. package/dist/components/form/hooks/useBlockTransition/block.d.ts.map +0 -0
  24. package/dist/components/form/hooks/useBlockTransition/useBlockTransition.d.ts.map +0 -0
  25. package/dist/components/form/hooks/useWarnOnUnsaved/index.d.ts.map +0 -0
  26. package/dist/components/form/hooks/useWarnOnUnsaved/useWarnOnUnsaved.d.ts.map +0 -0
  27. package/dist/components/form/index.d.ts +1 -0
  28. package/dist/components/form/index.d.ts.map +1 -1
  29. package/dist/components/form/typings.d.ts.map +0 -0
  30. package/dist/components/form/utils/formFragments.d.ts.map +0 -0
  31. package/dist/components/form/utils/index.d.ts +6 -0
  32. package/dist/components/form/utils/index.d.ts.map +1 -0
  33. package/dist/components/form/utils/path_utils.d.ts.map +0 -0
  34. package/dist/components/form/utils/schema_utils.d.ts.map +0 -0
  35. package/dist/components/form/utils/ui_utils.d.ts.map +1 -0
  36. package/dist/components/form/utils/utils.d.ts.map +0 -0
  37. package/dist/componentsHelpers.d.ts.map +0 -0
  38. package/dist/index.d.ts.map +0 -0
  39. package/dist/index.js +1104 -931
  40. package/dist/index.js.map +1 -1
  41. package/dist/testing/ExpectedErrorBoundary.d.ts +14 -0
  42. package/dist/testing/ExpectedErrorBoundary.d.ts.map +1 -0
  43. package/dist/testing.d.ts +2 -0
  44. package/dist/testing.d.ts.map +1 -0
  45. package/dist/testing.js +34 -0
  46. package/dist/testing.js.map +1 -0
  47. package/package.json +13 -5
package/dist/index.js CHANGED
@@ -40,6 +40,10 @@ var __esm = (fn, res) => function __init() {
40
40
  var __commonJS = (cb, mod) => function __require() {
41
41
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
42
42
  };
43
+ var __export = (target, all) => {
44
+ for (var name in all)
45
+ __defProp(target, name, { get: all[name], enumerable: true });
46
+ };
43
47
  var __copyProps = (to, from, except, desc) => {
44
48
  if (from && typeof from === "object" || typeof from === "function") {
45
49
  for (let key of __getOwnPropNames(from))
@@ -588,7 +592,9 @@ var FormContext = /* @__PURE__ */ React.createContext(void 0);
588
592
  var useFormContext = /* @__PURE__ */ __name(() => {
589
593
  const formContext = useContext(FormContext);
590
594
  if (!formContext)
591
- throw new Error("A component is trying to access form context but it is undefined. Please wrap your component with a <Form>.");
595
+ throw new Error(`A component is trying to access form context but it is undefined. Please wrap your component with a <Form>.
596
+ You may be importing "FormContext" from different packages or have accidentaly made a copy of it?
597
+ FormContext is exposed by "@vulcanjs/react-ui".`);
592
598
  return formContext;
593
599
  }, "useFormContext");
594
600
 
@@ -597,12 +603,12 @@ init_esm_shims();
597
603
 
598
604
  // components/form/core/Form/Form.tsx
599
605
  init_esm_shims();
600
- import React12, { useEffect as useEffect2, useRef as useRef2, useState as useState2 } from "react";
606
+ import React5, { useEffect as useEffect2, useRef as useRef2, useState } from "react";
601
607
  import { runCallbacks, getErrors } from "@vulcanjs/core";
602
608
  import { useIntlContext as useIntlContext2 } from "@vulcanjs/react-i18n";
603
609
  import { removeProperty } from "@vulcanjs/utils";
604
610
  import cloneDeep from "lodash/cloneDeep.js";
605
- import compact3 from "lodash/compact.js";
611
+ import compact2 from "lodash/compact.js";
606
612
  import get2 from "lodash/get.js";
607
613
  import isObject from "lodash/isObject.js";
608
614
  import mapValues from "lodash/mapValues.js";
@@ -618,10 +624,33 @@ import without from "lodash/without.js";
618
624
  import isEmpty from "lodash/isEmpty.js";
619
625
 
620
626
  // components/form/utils/schema_utils.ts
627
+ var schema_utils_exports = {};
628
+ __export(schema_utils_exports, {
629
+ convertSchema: () => convertSchema,
630
+ formProperties: () => formProperties,
631
+ getEditableFields: () => getEditableFields,
632
+ getFieldSchema: () => getFieldSchema,
633
+ getInsertableFields: () => getInsertableFields,
634
+ getNestedFieldSchemaOrType: () => getNestedFieldSchemaOrType,
635
+ getSchemaType: () => getSchemaType,
636
+ getValidFields: () => getValidFields,
637
+ schemaProperties: () => schemaProperties
638
+ });
621
639
  init_esm_shims();
622
640
  import { canCreateField, canUpdateField } from "@vulcanjs/permissions";
623
641
 
624
642
  // components/form/utils/utils.ts
643
+ var utils_exports = {};
644
+ __export(utils_exports, {
645
+ deepValue: () => deepValue,
646
+ flatten: () => flatten,
647
+ getDeletedValues: () => getDeletedValues,
648
+ getFieldType: () => getFieldType,
649
+ getNestedDeletedValues: () => getNestedDeletedValues,
650
+ getNullValue: () => getNullValue,
651
+ isEmptyValue: () => isEmptyValue,
652
+ mergeValue: () => mergeValue
653
+ });
625
654
  init_esm_shims();
626
655
  import merge from "lodash/merge.js";
627
656
  import find from "lodash/find.js";
@@ -630,6 +659,14 @@ import set from "lodash/set.js";
630
659
  import size from "lodash/size.js";
631
660
 
632
661
  // components/form/utils/path_utils.ts
662
+ var path_utils_exports = {};
663
+ __export(path_utils_exports, {
664
+ filterPathsByPrefix: () => filterPathsByPrefix,
665
+ getParentPath: () => getParentPath,
666
+ joinPath: () => joinPath,
667
+ removePrefix: () => removePrefix,
668
+ splitPath: () => splitPath
669
+ });
633
670
  init_esm_shims();
634
671
  import toPath from "lodash/toPath.js";
635
672
  import initial from "lodash/initial.js";
@@ -638,12 +675,93 @@ import takeRight from "lodash/takeRight.js";
638
675
  var splitPath = /* @__PURE__ */ __name((string) => toPath(string), "splitPath");
639
676
  var joinPath = /* @__PURE__ */ __name((array) => array.reduce((string, item) => string + (Number.isNaN(Number(item)) ? `${string === "" ? "" : "."}${item}` : `[${item}]`), ""), "joinPath");
640
677
  var getParentPath = flow(splitPath, initial, joinPath);
678
+ var removePrefix = /* @__PURE__ */ __name((prefix, paths) => {
679
+ const explodedPrefix = splitPath(prefix);
680
+ return paths.map((path) => {
681
+ if (path === prefix) {
682
+ return path;
683
+ }
684
+ const explodedPath = splitPath(path);
685
+ const explodedSuffix = takeRight(explodedPath, explodedPath.length - explodedPrefix.length);
686
+ return joinPath(explodedSuffix);
687
+ });
688
+ }, "removePrefix");
689
+ var filterPathsByPrefix = /* @__PURE__ */ __name((prefix, paths) => paths.filter((path) => path === prefix || path.startsWith(`${prefix}.`) || path.startsWith(`${prefix}[`)), "filterPathsByPrefix");
641
690
 
642
691
  // components/form/utils/utils.ts
692
+ var deepValue = /* @__PURE__ */ __name(function(obj, path) {
693
+ const pathArray = path.split(".");
694
+ for (var i = 0; i < pathArray.length; i++) {
695
+ obj = obj[pathArray[i]];
696
+ }
697
+ return obj;
698
+ }, "deepValue");
699
+ var flatten = /* @__PURE__ */ __name(function(data) {
700
+ var result = {};
701
+ function recurse(cur, prop) {
702
+ if (Object.prototype.toString.call(cur) !== "[object Object]") {
703
+ result[prop] = cur;
704
+ } else if (Array.isArray(cur)) {
705
+ for (var i = 0, l = cur.length; i < l; i++)
706
+ recurse(cur[i], prop + "[" + i + "]");
707
+ if (l == 0)
708
+ result[prop] = [];
709
+ } else {
710
+ var isEmpty2 = true;
711
+ for (var p in cur) {
712
+ isEmpty2 = false;
713
+ recurse(cur[p], prop ? prop + "." + p : p);
714
+ }
715
+ if (isEmpty2 && prop)
716
+ result[prop] = {};
717
+ }
718
+ }
719
+ __name(recurse, "recurse");
720
+ recurse(data, "");
721
+ return result;
722
+ }, "flatten");
643
723
  var isEmptyValue = /* @__PURE__ */ __name((value) => typeof value === "undefined" || value === null || value === "" || Array.isArray(value) && value.length === 0, "isEmptyValue");
724
+ var mergeValue = /* @__PURE__ */ __name(({ currentValue, documentValue, deletedValues: deletedFields, path, locale, datatype }) => {
725
+ if (locale) {
726
+ return currentValue || documentValue || "";
727
+ }
728
+ const deletedValues = getNestedDeletedValues(path, deletedFields);
729
+ const hasDeletedValues = !!size(deletedValues);
730
+ if ((Array.isArray(currentValue) || hasDeletedValues) && find(datatype, [
731
+ "type",
732
+ Array
733
+ ])) {
734
+ return merge([], documentValue, currentValue, deletedValues);
735
+ } else if ((isPlainObject(currentValue) || hasDeletedValues) && find(datatype, [
736
+ "type",
737
+ Object
738
+ ])) {
739
+ return merge({}, documentValue, currentValue, deletedValues);
740
+ }
741
+ return void 0;
742
+ }, "mergeValue");
743
+ var getDeletedValues = /* @__PURE__ */ __name((deletedFields, accumulator = {}) => deletedFields.reduce((deletedValues, path) => set(deletedValues, path, null), accumulator), "getDeletedValues");
744
+ var getNestedDeletedValues = /* @__PURE__ */ __name((prefix, deletedFields, accumulator = {}) => getDeletedValues(removePrefix(prefix, filterPathsByPrefix(prefix, deletedFields)), accumulator), "getNestedDeletedValues");
644
745
  var getFieldType = /* @__PURE__ */ __name((fieldSchema) => fieldSchema.type, "getFieldType");
746
+ var getNullValue = /* @__PURE__ */ __name((datatype) => {
747
+ const fieldType = getFieldType(datatype);
748
+ if (fieldType === Array) {
749
+ return [];
750
+ } else if (fieldType === Boolean) {
751
+ return false;
752
+ } else if (fieldType === String) {
753
+ return "";
754
+ } else if (fieldType === Number) {
755
+ return "";
756
+ } else {
757
+ return null;
758
+ }
759
+ }, "getNullValue");
645
760
 
646
761
  // components/form/utils/schema_utils.ts
762
+ var getValidFields = /* @__PURE__ */ __name((schema) => {
763
+ return Object.keys(schema).filter((fieldName) => !fieldName.includes("$") && !fieldName.includes("."));
764
+ }, "getValidFields");
647
765
  var getInsertableFields = /* @__PURE__ */ __name(function(schema, user) {
648
766
  const fields = Object.keys(schema).filter(function(fieldName) {
649
767
  var field = schema[fieldName];
@@ -662,7 +780,7 @@ var isNestedSchema = /* @__PURE__ */ __name((schema) => {
662
780
  return typeof schema === "object";
663
781
  }, "isNestedSchema");
664
782
  var convertSchema = /* @__PURE__ */ __name((schema, options = {}) => {
665
- const { flatten = false, removeArrays = true } = options;
783
+ const { flatten: flatten2 = false, removeArrays = true } = options;
666
784
  let jsonSchema = {};
667
785
  Object.keys(schema).forEach((fieldName) => {
668
786
  if (removeArrays && fieldName.includes("$")) {
@@ -674,7 +792,7 @@ var convertSchema = /* @__PURE__ */ __name((schema, options = {}) => {
674
792
  jsonSchema[fieldName].arrayFieldSchema = getFieldSchema(`${fieldName}.$`, schema);
675
793
  if (isNestedSchema(subSchemaOrType)) {
676
794
  const convertedSubSchema = convertSchema(subSchemaOrType, options);
677
- if (flatten) {
795
+ if (flatten2) {
678
796
  jsonSchema = __spreadValues(__spreadValues({}, jsonSchema), convertedSubSchema);
679
797
  } else {
680
798
  jsonSchema[fieldName].schema = convertedSubSchema;
@@ -1152,12 +1270,10 @@ var useWarnOnUnsaved = /* @__PURE__ */ __name(({ isChanged, warnUnsavedChanges }
1152
1270
  });
1153
1271
  }, "useWarnOnUnsaved");
1154
1272
 
1155
- // components/VulcanComponents/index.ts
1156
- init_esm_shims();
1157
-
1158
- // components/VulcanComponents/Provider.tsx
1273
+ // components/VulcanComponents/Consumer.tsx
1159
1274
  init_esm_shims();
1160
- import React5 from "react";
1275
+ import { deprecate } from "@vulcanjs/utils";
1276
+ import React4, { useContext as useContext2 } from "react";
1161
1277
 
1162
1278
  // components/VulcanComponents/Context.ts
1163
1279
  init_esm_shims();
@@ -1184,9 +1300,6 @@ var VulcanComponentsContext = React3.createContext(new Proxy({
1184
1300
  VulcanComponentsContext.displayName = "VulcanComponentsContext";
1185
1301
 
1186
1302
  // components/VulcanComponents/Consumer.tsx
1187
- init_esm_shims();
1188
- import { deprecate } from "@vulcanjs/utils";
1189
- import React4, { useContext as useContext2 } from "react";
1190
1303
  function _extends() {
1191
1304
  _extends = Object.assign || function(target) {
1192
1305
  for (var i = 1; i < arguments.length; i++) {
@@ -1215,8 +1328,7 @@ var withVulcanComponents = /* @__PURE__ */ __name((C) => (props) => {
1215
1328
  }, props));
1216
1329
  }, "withVulcanComponents");
1217
1330
 
1218
- // components/VulcanComponents/Provider.tsx
1219
- import { debugVulcan } from "@vulcanjs/utils";
1331
+ // components/form/core/Form/Form.tsx
1220
1332
  function _extends2() {
1221
1333
  _extends2 = Object.assign || function(target) {
1222
1334
  for (var i = 1; i < arguments.length; i++) {
@@ -1232,161 +1344,530 @@ function _extends2() {
1232
1344
  return _extends2.apply(this, arguments);
1233
1345
  }
1234
1346
  __name(_extends2, "_extends");
1235
- var debugComponents = debugVulcan("components");
1236
- var VulcanComponentsProvider = /* @__PURE__ */ __name((_a) => {
1237
- var _b = _a, { value } = _b, props = __objRest(_b, ["value"]);
1238
- const currentComponents = useVulcanComponents();
1239
- debugComponents("Current components __not_initialized?", currentComponents.__not_initialized);
1240
- const mergedComponents = __spreadValues(__spreadValues({}, (currentComponents == null ? void 0 : currentComponents.__not_initialized) ? {} : currentComponents || {}), value || {});
1241
- debugComponents("Merged components", mergedComponents);
1242
- Object.keys(mergedComponents).forEach((componentName) => {
1243
- if (mergedComponents[componentName]) {
1244
- mergedComponents[componentName].displayName = "Vulcan." + componentName;
1245
- } else {
1246
- console.warn(`Encountered an undefined component: ${componentName}.
1247
- The component may not be registered, or import failed.
1248
- For instance due to an infinite import loop when importing
1249
- "useVulcanComponents" from index instead of Consumer.`);
1347
+ var compactParent = /* @__PURE__ */ __name((object, path) => {
1348
+ const parentPath = getParentPath(path);
1349
+ const compactIfArray = /* @__PURE__ */ __name((x) => Array.isArray(x) ? compact2(x) : x, "compactIfArray");
1350
+ update(object, parentPath, compactIfArray);
1351
+ }, "compactParent");
1352
+ var getDefaultValues = /* @__PURE__ */ __name((convertedSchema) => {
1353
+ return pickBy(mapValues(convertedSchema, (field) => field.defaultValue), (value) => value);
1354
+ }, "getDefaultValues");
1355
+ var compactObject = /* @__PURE__ */ __name((o) => omitBy(o, (f) => f === null || f === void 0), "compactObject");
1356
+ var getInitialStateFromProps = /* @__PURE__ */ __name((nextProps) => {
1357
+ const schema = nextProps.schema || nextProps.model.schema;
1358
+ const convertedSchema = convertSchema(schema);
1359
+ const formType = nextProps.document ? "edit" : "new";
1360
+ const defaultValues = formType === "new" ? getDefaultValues(convertedSchema) : {};
1361
+ const initialDocument = merge2({}, defaultValues, nextProps.prefilledProps, compactObject(nextProps.document));
1362
+ Object.keys(convertedSchema).forEach((key) => {
1363
+ let minCount = convertedSchema[key].minCount;
1364
+ if (minCount) {
1365
+ initialDocument[key] = initialDocument[key] || [];
1366
+ while (initialDocument[key].length < minCount)
1367
+ initialDocument[key].push({});
1250
1368
  }
1251
1369
  });
1252
- return /* @__PURE__ */ React5.createElement(VulcanComponentsContext.Provider, _extends2({
1253
- value: mergedComponents
1254
- }, props));
1255
- }, "VulcanComponentsProvider");
1256
-
1257
- // components/VulcanComponents/typings.ts
1258
- init_esm_shims();
1259
- import React6 from "react";
1260
-
1261
- // components/VulcanComponents/defaultVulcanComponents/index.ts
1262
- init_esm_shims();
1263
-
1264
- // components/core/LoadingButton.tsx
1265
- init_esm_shims();
1266
- import React7 from "react";
1267
- function _extends3() {
1268
- _extends3 = Object.assign || function(target) {
1269
- for (var i = 1; i < arguments.length; i++) {
1270
- var source = arguments[i];
1271
- for (var key in source) {
1272
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1273
- target[key] = source[key];
1274
- }
1275
- }
1276
- }
1277
- return target;
1370
+ removeProperty(initialDocument, "__typename");
1371
+ return {
1372
+ disabled: nextProps.disabled,
1373
+ errors: [],
1374
+ deletedValues: [],
1375
+ currentValues: {},
1376
+ originalSchema: convertSchema(schema, {
1377
+ removeArrays: false
1378
+ }),
1379
+ schema: convertedSchema,
1380
+ flatSchema: convertSchema(schema, {
1381
+ flatten: true
1382
+ }),
1383
+ initialDocument,
1384
+ currentDocument: initialDocument
1278
1385
  };
1279
- return _extends3.apply(this, arguments);
1280
- }
1281
- __name(_extends3, "_extends");
1282
- var LoadingButton = /* @__PURE__ */ __name((_a) => {
1283
- var _b = _a, { loading, label, onClick, children, className = "" } = _b, rest = __objRest(_b, ["loading", "label", "onClick", "children", "className"]);
1284
- const Components2 = useVulcanComponents();
1285
- const wrapperStyle = {
1286
- position: "relative"
1386
+ }, "getInitialStateFromProps");
1387
+ var getChildrenProps = /* @__PURE__ */ __name((props, state, options, callbacks) => {
1388
+ const { currentUser, repeatErrors, submitLabel, cancelLabel, revertLabel, cancelCallback, revertCallback, id, model, prefilledProps, itemProperties, contextName, showRemove, showDelete } = props;
1389
+ const { disabled, currentDocument } = state;
1390
+ const { formType } = options;
1391
+ const { deleteDocument } = callbacks;
1392
+ const commonProps = {
1393
+ document: currentDocument,
1394
+ formType,
1395
+ currentUser,
1396
+ disabled,
1397
+ prefilledProps,
1398
+ itemProperties,
1399
+ contextName
1287
1400
  };
1288
- const labelStyle = loading ? {
1289
- opacity: 0.5
1290
- } : {};
1291
- const loadingStyle = loading ? {
1292
- position: "absolute",
1293
- top: 0,
1294
- bottom: 0,
1295
- left: 0,
1296
- right: 0,
1297
- display: "flex",
1298
- justifyContent: "center",
1299
- alignItems: "center"
1300
- } : {
1301
- display: "none"
1401
+ const docClassName = `document-${formType}`;
1402
+ const modelName = model.name.toLowerCase();
1403
+ const formProps = {
1404
+ className: `${docClassName} ${docClassName}-${modelName}`,
1405
+ id
1406
+ };
1407
+ const formGroupProps = /* @__PURE__ */ __name((group) => __spreadValues(__spreadProps(__spreadValues({
1408
+ key: group.name
1409
+ }, group), {
1410
+ group: omit(group, [
1411
+ "fields"
1412
+ ])
1413
+ }), commonProps), "formGroupProps");
1414
+ const formSubmitProps = {
1415
+ model,
1416
+ currentUser,
1417
+ submitLabel,
1418
+ cancelLabel,
1419
+ revertLabel,
1420
+ cancelCallback,
1421
+ revertCallback,
1422
+ document: currentDocument,
1423
+ deleteDocument: formType === "edit" && showRemove && showDelete && deleteDocument || null
1424
+ };
1425
+ const formLayoutProps = {
1426
+ formProps,
1427
+ repeatErrors,
1428
+ submitProps: formSubmitProps,
1429
+ commonProps
1302
1430
  };
1303
- return /* @__PURE__ */ React7.createElement(Components2.Button, _extends3({
1304
- className: `loading-button ${loading ? "loading-button-loading" : "loading-button-notloading"} ${className}`,
1305
- onClick
1306
- }, rest), /* @__PURE__ */ React7.createElement("span", {
1307
- style: wrapperStyle
1308
- }, /* @__PURE__ */ React7.createElement("span", {
1309
- style: labelStyle
1310
- }, label || children), /* @__PURE__ */ React7.createElement("span", {
1311
- style: loadingStyle
1312
- }, /* @__PURE__ */ React7.createElement(Components2.Loading, null))));
1313
- }, "LoadingButton");
1314
-
1315
- // components/core/MutationButton.tsx
1316
- init_esm_shims();
1317
- import React8, { useState } from "react";
1318
- import { useMutation } from "@apollo/client";
1319
-
1320
- // ../../node_modules/graphql-tag/lib/index.js
1321
- init_esm_shims();
1322
-
1323
- // ../../node_modules/tslib/modules/index.js
1324
- init_esm_shims();
1325
- var import_tslib = __toESM(require_tslib(), 1);
1326
- var { __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __createBinding, __values, __read, __spread, __spreadArrays, __spreadArray, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet, __classPrivateFieldIn } = import_tslib.default;
1327
-
1328
- // ../../node_modules/graphql/index.mjs
1329
- init_esm_shims();
1330
-
1331
- // ../../node_modules/graphql/language/parser.mjs
1332
- init_esm_shims();
1333
-
1334
- // ../../node_modules/graphql/error/syntaxError.mjs
1335
- init_esm_shims();
1336
-
1337
- // ../../node_modules/graphql/error/GraphQLError.mjs
1338
- init_esm_shims();
1339
-
1340
- // ../../node_modules/graphql/jsutils/isObjectLike.mjs
1341
- init_esm_shims();
1342
- function _typeof(obj) {
1343
- "@babel/helpers - typeof";
1344
- if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
1345
- _typeof = /* @__PURE__ */ __name(function _typeof5(obj2) {
1346
- return typeof obj2;
1347
- }, "_typeof");
1348
- } else {
1349
- _typeof = /* @__PURE__ */ __name(function _typeof5(obj2) {
1350
- return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
1351
- }, "_typeof");
1352
- }
1353
- return _typeof(obj);
1354
- }
1355
- __name(_typeof, "_typeof");
1356
- function isObjectLike(value) {
1357
- return _typeof(value) == "object" && value !== null;
1358
- }
1359
- __name(isObjectLike, "isObjectLike");
1360
-
1361
- // ../../node_modules/graphql/polyfills/symbols.mjs
1362
- init_esm_shims();
1363
- var SYMBOL_ITERATOR = typeof Symbol === "function" && Symbol.iterator != null ? Symbol.iterator : "@@iterator";
1364
- var SYMBOL_ASYNC_ITERATOR = typeof Symbol === "function" && Symbol.asyncIterator != null ? Symbol.asyncIterator : "@@asyncIterator";
1365
- var SYMBOL_TO_STRING_TAG = typeof Symbol === "function" && Symbol.toStringTag != null ? Symbol.toStringTag : "@@toStringTag";
1366
-
1367
- // ../../node_modules/graphql/language/location.mjs
1368
- init_esm_shims();
1369
- function getLocation(source, position) {
1370
- var lineRegexp = /\r\n|[\n\r]/g;
1371
- var line = 1;
1372
- var column = position + 1;
1373
- var match;
1374
- while ((match = lineRegexp.exec(source.body)) && match.index < position) {
1375
- line += 1;
1376
- column = position + 1 - (match.index + match[0].length);
1377
- }
1378
1431
  return {
1379
- line,
1380
- column
1432
+ commonProps,
1433
+ formSubmitProps,
1434
+ formGroupProps,
1435
+ formLayoutProps
1381
1436
  };
1382
- }
1383
- __name(getLocation, "getLocation");
1384
-
1385
- // ../../node_modules/graphql/language/printLocation.mjs
1386
- init_esm_shims();
1387
- function printLocation(location) {
1388
- return printSourceLocation(location.source, getLocation(location.source, location.start));
1389
- }
1437
+ }, "getChildrenProps");
1438
+ var FormWarnUnsaved = /* @__PURE__ */ __name(({ isChanged, warnUnsavedChanges, children }) => {
1439
+ useWarnOnUnsaved({
1440
+ isChanged,
1441
+ warnUnsavedChanges
1442
+ });
1443
+ return /* @__PURE__ */ React5.createElement(React5.Fragment, null, children);
1444
+ }, "FormWarnUnsaved");
1445
+ var getData = /* @__PURE__ */ __name((customArgs, props, state, { submitFormCallbacks, form }) => {
1446
+ const { currentDocument } = state;
1447
+ const { model, prefilledProps } = props;
1448
+ let data = prefilledProps || {};
1449
+ data = omitBy(data, (value, key) => key.endsWith(".$"));
1450
+ const args = __spreadValues({
1451
+ schema: model.schema,
1452
+ excludeRemovedFields: false,
1453
+ excludeHiddenFields: false,
1454
+ replaceIntlFields: true,
1455
+ addExtraFields: false
1456
+ }, customArgs);
1457
+ const fields = getFieldNames(props, currentDocument, args);
1458
+ data = __spreadValues(__spreadValues({}, data), pick2(currentDocument, ...fields));
1459
+ state.deletedValues.forEach((path) => {
1460
+ if (path.includes(".")) {
1461
+ compactParent(data, path);
1462
+ }
1463
+ });
1464
+ data = runCallbacks({
1465
+ callbacks: submitFormCallbacks,
1466
+ iterator: data,
1467
+ args: [
1468
+ {}
1469
+ ]
1470
+ });
1471
+ return data;
1472
+ }, "getData");
1473
+ var Form = /* @__PURE__ */ __name((props) => {
1474
+ const { initCallback, createDocument, updateDocument, deleteDocument } = props;
1475
+ const initialState = getInitialStateFromProps(props);
1476
+ const { schema, originalSchema, flatSchema, initialDocument } = initialState;
1477
+ const isFirstRender = useRef2(true);
1478
+ useEffect2(() => {
1479
+ if (isFirstRender.current) {
1480
+ isFirstRender.current = false;
1481
+ return;
1482
+ }
1483
+ if (initCallback)
1484
+ initCallback(initialState.currentDocument);
1485
+ }, [
1486
+ initCallback
1487
+ ]);
1488
+ const defaultProps = {
1489
+ layout: "horizontal",
1490
+ prefilledProps: {},
1491
+ repeatErrors: false,
1492
+ showRemove: true,
1493
+ showDelete: true
1494
+ };
1495
+ const allProps = __spreadValues(__spreadValues({}, defaultProps), props);
1496
+ const defaultValues = {};
1497
+ const submitFormCallbacks = [];
1498
+ const successFormCallbacks = [];
1499
+ const failureFormCallbacks = [];
1500
+ const intl = useIntlContext2();
1501
+ const [errors, setErrors] = useState([]);
1502
+ const throwError = /* @__PURE__ */ __name((error) => {
1503
+ let formErrors = getErrors(error);
1504
+ console.log(formErrors);
1505
+ setErrors((prevErrors) => [
1506
+ ...prevErrors,
1507
+ ...formErrors
1508
+ ]);
1509
+ }, "throwError");
1510
+ const clearFieldErrors = /* @__PURE__ */ __name((path) => {
1511
+ setErrors((prevErrors) => prevErrors.filter((error) => error.path !== path));
1512
+ }, "clearFieldErrors");
1513
+ const [deletedValues, setDeletedValues] = useState([]);
1514
+ const addToDeletedValues = /* @__PURE__ */ __name((name) => {
1515
+ setDeletedValues((prevDeletedValues) => [
1516
+ ...prevDeletedValues,
1517
+ name
1518
+ ]);
1519
+ }, "addToDeletedValues");
1520
+ const [callbacks, setCallbacks] = useState({
1521
+ submitFormCallbacks: [],
1522
+ successFormCallbacks: [],
1523
+ failureFormCallbacks: []
1524
+ });
1525
+ const addToSubmitForm = /* @__PURE__ */ __name((callback) => {
1526
+ setCallbacks((cbs) => __spreadValues({}, cbs));
1527
+ }, "addToSubmitForm");
1528
+ const addToSuccessForm = /* @__PURE__ */ __name((callback) => {
1529
+ setCallbacks((cbs) => __spreadProps(__spreadValues({}, cbs), {
1530
+ successFormCallbacks: [
1531
+ ...cbs.successFormCallbacks,
1532
+ callback
1533
+ ]
1534
+ }));
1535
+ }, "addToSuccessForm");
1536
+ const addToFailureForm = /* @__PURE__ */ __name((callback) => {
1537
+ setCallbacks((cbs) => __spreadProps(__spreadValues({}, cbs), {
1538
+ failureFormCallbacks: [
1539
+ ...cbs.failureFormCallbacks,
1540
+ callback
1541
+ ]
1542
+ }));
1543
+ }, "addToFailureForm");
1544
+ const clearFormCallbacks = /* @__PURE__ */ __name(() => {
1545
+ setCallbacks({
1546
+ submitFormCallbacks: [],
1547
+ successFormCallbacks: [],
1548
+ failureFormCallbacks: []
1549
+ });
1550
+ }, "clearFormCallbacks");
1551
+ const [currentValues, setCurrentValues] = useState({});
1552
+ const submitFormContext = /* @__PURE__ */ __name((formType) => (event) => {
1553
+ submitForm(formType)(event);
1554
+ }, "submitFormContext");
1555
+ const [currentDocument, setCurrentDocument] = useState(initialDocument);
1556
+ const updateCurrentValues = /* @__PURE__ */ __name((newValues, options = {}) => {
1557
+ const { mode = "overwrite" } = options;
1558
+ const { changeCallback } = props;
1559
+ const newState = {
1560
+ currentValues: cloneDeep(currentValues),
1561
+ currentDocument: cloneDeep(currentDocument),
1562
+ deletedValues: cloneDeep(deletedValues)
1563
+ };
1564
+ Object.keys(newValues).forEach((key) => {
1565
+ const path = key;
1566
+ let value = newValues[key];
1567
+ if (isEmptyValue(value)) {
1568
+ unset(newState.currentValues, path);
1569
+ set2(newState.currentDocument, path, null);
1570
+ newState.deletedValues = [
1571
+ ...newState.deletedValues,
1572
+ path
1573
+ ];
1574
+ } else {
1575
+ set2(newState.currentValues, path, value);
1576
+ if (mode === "merge" && (Array.isArray(value) || isObject(value))) {
1577
+ const oldValue = get2(newState.currentDocument, path);
1578
+ set2(newState.currentDocument, path, merge2(oldValue, value));
1579
+ } else {
1580
+ set2(newState.currentDocument, path, value);
1581
+ }
1582
+ newState.deletedValues = without(newState.deletedValues, path);
1583
+ }
1584
+ });
1585
+ if (changeCallback)
1586
+ changeCallback(newState.currentDocument);
1587
+ setCurrentValues(newState.currentValues);
1588
+ setCurrentDocument(newState.currentDocument);
1589
+ setDeletedValues(newState.deletedValues);
1590
+ }, "updateCurrentValues");
1591
+ const refetchForm = /* @__PURE__ */ __name(() => {
1592
+ if (props.refetch) {
1593
+ props.refetch();
1594
+ }
1595
+ }, "refetchForm");
1596
+ const [disabled, setDisabled] = useState(false);
1597
+ const [success, setSuccess] = useState(false);
1598
+ const clearForm = /* @__PURE__ */ __name((options = {}) => {
1599
+ const { document: optionsDocument } = options;
1600
+ const document = optionsDocument ? merge2({}, props.prefilledProps, optionsDocument) : null;
1601
+ setErrors([]);
1602
+ setCurrentValues({});
1603
+ setDeletedValues([]);
1604
+ setCurrentDocument(document || initialDocument);
1605
+ setDisabled(false);
1606
+ }, "clearForm");
1607
+ const newMutationSuccessCallback = /* @__PURE__ */ __name(function(result) {
1608
+ mutationSuccessCallback(result, "new");
1609
+ }, "newMutationSuccessCallback");
1610
+ const editMutationSuccessCallback = /* @__PURE__ */ __name(function(result) {
1611
+ mutationSuccessCallback(result, "edit");
1612
+ }, "editMutationSuccessCallback");
1613
+ const formRef = useRef2(null);
1614
+ const mutationSuccessCallback = /* @__PURE__ */ __name(function(result, mutationType) {
1615
+ setDisabled(false);
1616
+ setSuccess(true);
1617
+ if (mutationType === "new")
1618
+ refetchForm();
1619
+ let { document } = result;
1620
+ if (formRef.current) {
1621
+ clearForm({
1622
+ document: mutationType === "edit" ? document : void 0
1623
+ });
1624
+ }
1625
+ document = runCallbacks({
1626
+ callbacks: successFormCallbacks,
1627
+ iterator: document,
1628
+ args: [
1629
+ {
1630
+ form: formRef.current
1631
+ }
1632
+ ]
1633
+ });
1634
+ if (props.successCallback)
1635
+ props.successCallback(document, {
1636
+ form: this
1637
+ });
1638
+ }, "mutationSuccessCallback");
1639
+ const mutationErrorCallback = /* @__PURE__ */ __name((document, error) => {
1640
+ setDisabled(false);
1641
+ console.error("// graphQL Error");
1642
+ console.error(error);
1643
+ runCallbacks({
1644
+ callbacks: failureFormCallbacks,
1645
+ iterator: error,
1646
+ args: [
1647
+ {
1648
+ error,
1649
+ form: formRef.current
1650
+ }
1651
+ ]
1652
+ });
1653
+ if (!isEmpty(error)) {
1654
+ throwError(error);
1655
+ }
1656
+ if (props.errorCallback)
1657
+ props.errorCallback(document, error, {
1658
+ form: void 0
1659
+ });
1660
+ }, "mutationErrorCallback");
1661
+ const submitForm = /* @__PURE__ */ __name((formType) => async (event) => {
1662
+ var _a, _b;
1663
+ event && event.preventDefault();
1664
+ event && event.stopPropagation();
1665
+ const { contextName } = props;
1666
+ if (disabled) {
1667
+ return;
1668
+ }
1669
+ setErrors([]);
1670
+ setDisabled(true);
1671
+ let data = getData({
1672
+ replaceIntlFields: true,
1673
+ addExtraFields: false,
1674
+ mutableFields
1675
+ }, props, {
1676
+ currentDocument,
1677
+ deletedValues
1678
+ }, {
1679
+ form: formRef.current,
1680
+ submitFormCallbacks
1681
+ });
1682
+ if (props.submitCallback) {
1683
+ data = props.submitCallback(data) || data;
1684
+ }
1685
+ if (formType === "new") {
1686
+ try {
1687
+ const result = await createDocument({
1688
+ input: {
1689
+ data,
1690
+ contextName
1691
+ }
1692
+ });
1693
+ if ((_a = result.errors) == null ? void 0 : _a.length) {
1694
+ mutationErrorCallback(document1, result.errors[0]);
1695
+ } else {
1696
+ newMutationSuccessCallback(result);
1697
+ }
1698
+ } catch (error) {
1699
+ mutationErrorCallback(document1, error);
1700
+ }
1701
+ } else {
1702
+ try {
1703
+ const documentId = currentDocument._id;
1704
+ const result = await updateDocument({
1705
+ input: {
1706
+ id: documentId,
1707
+ data,
1708
+ contextName
1709
+ }
1710
+ });
1711
+ if ((_b = result.errors) == null ? void 0 : _b.length) {
1712
+ mutationErrorCallback(document1, result.errors[0]);
1713
+ } else {
1714
+ editMutationSuccessCallback(result);
1715
+ }
1716
+ } catch (error) {
1717
+ mutationErrorCallback(document1, error);
1718
+ }
1719
+ }
1720
+ }, "submitForm");
1721
+ const deleteDocumentWithConfirm = /* @__PURE__ */ __name(() => {
1722
+ const document = currentDocument;
1723
+ const documentId = props.document._id;
1724
+ const documentTitle = document.title || document.name || "";
1725
+ const deleteDocumentConfirm = intl.formatMessage({
1726
+ id: "forms.delete_confirm"
1727
+ }, {
1728
+ title: documentTitle
1729
+ });
1730
+ if (window.confirm(deleteDocumentConfirm)) {
1731
+ deleteDocument({
1732
+ input: {
1733
+ id: documentId
1734
+ }
1735
+ }).then((mutationResult) => {
1736
+ if (props.removeSuccessCallback)
1737
+ props.removeSuccessCallback({
1738
+ documentId,
1739
+ documentTitle
1740
+ });
1741
+ refetchForm();
1742
+ }).catch((error) => {
1743
+ console.log(error);
1744
+ });
1745
+ }
1746
+ }, "deleteDocumentWithConfirm");
1747
+ const { successComponent, document: document1, currentUser, model, warnUnsavedChanges } = props;
1748
+ const FormComponents = useVulcanComponents();
1749
+ const formType1 = document1 ? "edit" : "new";
1750
+ const mutableFields = formType1 === "edit" ? getEditableFields(schema, currentUser, initialDocument) : getInsertableFields(schema, currentUser);
1751
+ const { formLayoutProps, formGroupProps } = getChildrenProps(props, {
1752
+ disabled,
1753
+ currentDocument
1754
+ }, {
1755
+ formType: formType1
1756
+ }, {
1757
+ deleteDocument: deleteDocumentWithConfirm
1758
+ });
1759
+ const isChanged = isNotSameDocument(initialDocument, currentDocument);
1760
+ return success && successComponent ? successComponent : /* @__PURE__ */ React5.createElement(FormWarnUnsaved, {
1761
+ isChanged,
1762
+ warnUnsavedChanges
1763
+ }, /* @__PURE__ */ React5.createElement(FormContext.Provider, {
1764
+ value: {
1765
+ throwError,
1766
+ clearForm,
1767
+ refetchForm,
1768
+ isChanged,
1769
+ submitForm: submitFormContext(formType1),
1770
+ addToDeletedValues,
1771
+ updateCurrentValues,
1772
+ getDocument: () => currentDocument,
1773
+ getLabel: (fieldName, fieldLocale) => getLabel(model, flatSchema, intl, fieldName, fieldLocale),
1774
+ initialDocument,
1775
+ addToSubmitForm,
1776
+ addToSuccessForm,
1777
+ addToFailureForm,
1778
+ clearFormCallbacks,
1779
+ errors,
1780
+ currentValues,
1781
+ deletedValues,
1782
+ clearFieldErrors
1783
+ }
1784
+ }, /* @__PURE__ */ React5.createElement(FormComponents.FormLayout, _extends2({}, formLayoutProps), getFieldGroups(props, {
1785
+ currentDocument,
1786
+ schema,
1787
+ flatSchema,
1788
+ originalSchema
1789
+ }, intl, mutableFields, intl.formatMessage).map((group, i) => /* @__PURE__ */ React5.createElement(FormComponents.FormGroup, _extends2({
1790
+ key: i
1791
+ }, formGroupProps(group)))))));
1792
+ }, "Form");
1793
+
1794
+ // components/form/core/Form/typings.ts
1795
+ init_esm_shims();
1796
+
1797
+ // components/form/core/FormContainer.tsx
1798
+ init_esm_shims();
1799
+ import React8 from "react";
1800
+
1801
+ // ../../node_modules/graphql-tag/lib/index.js
1802
+ init_esm_shims();
1803
+
1804
+ // ../../node_modules/tslib/modules/index.js
1805
+ init_esm_shims();
1806
+ var import_tslib = __toESM(require_tslib(), 1);
1807
+ var { __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __createBinding, __values, __read, __spread, __spreadArrays, __spreadArray, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet, __classPrivateFieldIn } = import_tslib.default;
1808
+
1809
+ // ../../node_modules/graphql/index.mjs
1810
+ init_esm_shims();
1811
+
1812
+ // ../../node_modules/graphql/language/parser.mjs
1813
+ init_esm_shims();
1814
+
1815
+ // ../../node_modules/graphql/error/syntaxError.mjs
1816
+ init_esm_shims();
1817
+
1818
+ // ../../node_modules/graphql/error/GraphQLError.mjs
1819
+ init_esm_shims();
1820
+
1821
+ // ../../node_modules/graphql/jsutils/isObjectLike.mjs
1822
+ init_esm_shims();
1823
+ function _typeof(obj) {
1824
+ "@babel/helpers - typeof";
1825
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
1826
+ _typeof = /* @__PURE__ */ __name(function _typeof5(obj2) {
1827
+ return typeof obj2;
1828
+ }, "_typeof");
1829
+ } else {
1830
+ _typeof = /* @__PURE__ */ __name(function _typeof5(obj2) {
1831
+ return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
1832
+ }, "_typeof");
1833
+ }
1834
+ return _typeof(obj);
1835
+ }
1836
+ __name(_typeof, "_typeof");
1837
+ function isObjectLike(value) {
1838
+ return _typeof(value) == "object" && value !== null;
1839
+ }
1840
+ __name(isObjectLike, "isObjectLike");
1841
+
1842
+ // ../../node_modules/graphql/polyfills/symbols.mjs
1843
+ init_esm_shims();
1844
+ var SYMBOL_ITERATOR = typeof Symbol === "function" && Symbol.iterator != null ? Symbol.iterator : "@@iterator";
1845
+ var SYMBOL_ASYNC_ITERATOR = typeof Symbol === "function" && Symbol.asyncIterator != null ? Symbol.asyncIterator : "@@asyncIterator";
1846
+ var SYMBOL_TO_STRING_TAG = typeof Symbol === "function" && Symbol.toStringTag != null ? Symbol.toStringTag : "@@toStringTag";
1847
+
1848
+ // ../../node_modules/graphql/language/location.mjs
1849
+ init_esm_shims();
1850
+ function getLocation(source, position) {
1851
+ var lineRegexp = /\r\n|[\n\r]/g;
1852
+ var line = 1;
1853
+ var column = position + 1;
1854
+ var match;
1855
+ while ((match = lineRegexp.exec(source.body)) && match.index < position) {
1856
+ line += 1;
1857
+ column = position + 1 - (match.index + match[0].length);
1858
+ }
1859
+ return {
1860
+ line,
1861
+ column
1862
+ };
1863
+ }
1864
+ __name(getLocation, "getLocation");
1865
+
1866
+ // ../../node_modules/graphql/language/printLocation.mjs
1867
+ init_esm_shims();
1868
+ function printLocation(location) {
1869
+ return printSourceLocation(location.source, getLocation(location.source, location.start));
1870
+ }
1390
1871
  __name(printLocation, "printLocation");
1391
1872
  function printSourceLocation(source, sourceLocation) {
1392
1873
  var firstLineColumnOffset = source.locationOffset.column - 1;
@@ -3561,145 +4042,67 @@ __name(parseDocument, "parseDocument");
3561
4042
  function gql(literals) {
3562
4043
  var args = [];
3563
4044
  for (var _i = 1; _i < arguments.length; _i++) {
3564
- args[_i - 1] = arguments[_i];
3565
- }
3566
- if (typeof literals === "string") {
3567
- literals = [
3568
- literals
3569
- ];
3570
- }
3571
- var result = literals[0];
3572
- args.forEach(function(arg, i) {
3573
- if (arg && arg.kind === "Document") {
3574
- result += arg.loc.source.body;
3575
- } else {
3576
- result += arg;
3577
- }
3578
- result += literals[i + 1];
3579
- });
3580
- return parseDocument(result);
3581
- }
3582
- __name(gql, "gql");
3583
- function resetCaches() {
3584
- docCache.clear();
3585
- fragmentSourceMap.clear();
3586
- }
3587
- __name(resetCaches, "resetCaches");
3588
- function disableFragmentWarnings() {
3589
- printFragmentWarnings = false;
3590
- }
3591
- __name(disableFragmentWarnings, "disableFragmentWarnings");
3592
- function enableExperimentalFragmentVariables() {
3593
- experimentalFragmentVariables = true;
3594
- }
3595
- __name(enableExperimentalFragmentVariables, "enableExperimentalFragmentVariables");
3596
- function disableExperimentalFragmentVariables() {
3597
- experimentalFragmentVariables = false;
3598
- }
3599
- __name(disableExperimentalFragmentVariables, "disableExperimentalFragmentVariables");
3600
- var extras = {
3601
- gql,
3602
- resetCaches,
3603
- disableFragmentWarnings,
3604
- enableExperimentalFragmentVariables,
3605
- disableExperimentalFragmentVariables
3606
- };
3607
- (function(gql_1) {
3608
- gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;
3609
- })(gql || (gql = {}));
3610
- gql["default"] = gql;
3611
- var lib_default = gql;
3612
-
3613
- // components/core/MutationButton.tsx
3614
- function _extends4() {
3615
- _extends4 = Object.assign || function(target) {
3616
- for (var i = 1; i < arguments.length; i++) {
3617
- var source = arguments[i];
3618
- for (var key in source) {
3619
- if (Object.prototype.hasOwnProperty.call(source, key)) {
3620
- target[key] = source[key];
3621
- }
3622
- }
3623
- }
3624
- return target;
3625
- };
3626
- return _extends4.apply(this, arguments);
3627
- }
3628
- __name(_extends4, "_extends");
3629
- var MutationButton = /* @__PURE__ */ __name((props) => {
3630
- const Components2 = useVulcanComponents();
3631
- const [loading, setLoading] = useState(false);
3632
- const [error1, setError] = useState();
3633
- const {
3634
- mutation,
3635
- loadingButtonProps = {},
3636
- label
3637
- } = props;
3638
- let { mutationArguments } = props;
3639
- const mutationAsNode = typeof mutation === "string" ? lib_default`
3640
- ${mutation}
3641
- ` : mutation;
3642
- const [mutationFunc] = useMutation(mutationAsNode);
3643
- const handleClick = /* @__PURE__ */ __name(async (e) => {
3644
- e.preventDefault();
3645
- setLoading(true);
3646
- setError(void 0);
3647
- const {
3648
- submitCallback,
3649
- successCallback,
3650
- errorCallback
3651
- } = props;
3652
- try {
3653
- if (submitCallback) {
3654
- const callbackReturn = await submitCallback(mutationArguments);
3655
- if (callbackReturn && callbackReturn.mutationArguments) {
3656
- mutationArguments = callbackReturn.mutationArguments;
3657
- }
3658
- }
3659
- const result = await mutationFunc({
3660
- variables: mutationArguments
3661
- });
3662
- if (successCallback) {
3663
- await successCallback(result);
3664
- }
3665
- } catch (error) {
3666
- setError(error);
3667
- if (errorCallback) {
3668
- await errorCallback(error);
3669
- }
3670
- } finally {
3671
- setLoading(false);
3672
- }
3673
- }, "handleClick");
3674
- const loadingButton = /* @__PURE__ */ React8.createElement(Components2.LoadingButton, _extends4({
3675
- loading,
3676
- onClick: handleClick,
3677
- label
3678
- }, loadingButtonProps));
3679
- if (error1) {
3680
- return /* @__PURE__ */ React8.createElement(Components2.TooltipTrigger, {
3681
- trigger: loadingButton,
3682
- defaultShow: true
3683
- }, error1.message.replace("GraphQL error: ", ""));
4045
+ args[_i - 1] = arguments[_i];
3684
4046
  }
3685
- return loadingButton;
3686
- }, "MutationButton");
3687
-
3688
- // components/form/core/index.ts
3689
- init_esm_shims();
3690
-
3691
- // components/form/core/FormContainer.tsx
3692
- init_esm_shims();
3693
- import React11 from "react";
4047
+ if (typeof literals === "string") {
4048
+ literals = [
4049
+ literals
4050
+ ];
4051
+ }
4052
+ var result = literals[0];
4053
+ args.forEach(function(arg, i) {
4054
+ if (arg && arg.kind === "Document") {
4055
+ result += arg.loc.source.body;
4056
+ } else {
4057
+ result += arg;
4058
+ }
4059
+ result += literals[i + 1];
4060
+ });
4061
+ return parseDocument(result);
4062
+ }
4063
+ __name(gql, "gql");
4064
+ function resetCaches() {
4065
+ docCache.clear();
4066
+ fragmentSourceMap.clear();
4067
+ }
4068
+ __name(resetCaches, "resetCaches");
4069
+ function disableFragmentWarnings() {
4070
+ printFragmentWarnings = false;
4071
+ }
4072
+ __name(disableFragmentWarnings, "disableFragmentWarnings");
4073
+ function enableExperimentalFragmentVariables() {
4074
+ experimentalFragmentVariables = true;
4075
+ }
4076
+ __name(enableExperimentalFragmentVariables, "enableExperimentalFragmentVariables");
4077
+ function disableExperimentalFragmentVariables() {
4078
+ experimentalFragmentVariables = false;
4079
+ }
4080
+ __name(disableExperimentalFragmentVariables, "disableExperimentalFragmentVariables");
4081
+ var extras = {
4082
+ gql,
4083
+ resetCaches,
4084
+ disableFragmentWarnings,
4085
+ enableExperimentalFragmentVariables,
4086
+ disableExperimentalFragmentVariables
4087
+ };
4088
+ (function(gql_1) {
4089
+ gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;
4090
+ })(gql || (gql = {}));
4091
+ gql["default"] = gql;
4092
+ var lib_default = gql;
3694
4093
 
3695
4094
  // components/form/utils/formFragments.ts
4095
+ var formFragments_exports = {};
4096
+ __export(formFragments_exports, {
4097
+ default: () => formFragments_default
4098
+ });
3696
4099
  init_esm_shims();
3697
4100
  import _uniq from "lodash/uniq.js";
3698
4101
  import _intersection from "lodash/intersection.js";
3699
4102
  import { getCreateableFields, getUpdateableFields, getFragmentFieldNames } from "@vulcanjs/schema";
3700
4103
  import { getFieldFragment } from "@vulcanjs/graphql";
3701
4104
  import { capitalize as capitalize2 } from "@vulcanjs/utils";
3702
- import compact2 from "lodash/compact.js";
4105
+ import compact3 from "lodash/compact.js";
3703
4106
  var intlSuffix = "_intl";
3704
4107
  var getFragmentName = /* @__PURE__ */ __name((formType, multiTypeName, fragmentType) => [
3705
4108
  multiTypeName,
@@ -3815,7 +4218,7 @@ var getFormFragments = /* @__PURE__ */ __name(({ formType = "new", model, fields
3815
4218
  throw new Error(`Model ${model.name} with fields ${mutationFieldNames} yield an empty mutation fragment.`);
3816
4219
  }
3817
4220
  const generatedMutationFragment = lib_default(mutationFragmentText);
3818
- const extraQueries = compact2(getQueryFieldNames({
4221
+ const extraQueries = compact3(getQueryFieldNames({
3819
4222
  schema,
3820
4223
  options: {
3821
4224
  formType
@@ -3838,7 +4241,7 @@ var formFragments_default = getFormFragments;
3838
4241
  import { getFragmentName as getFragmentName2 } from "@vulcanjs/graphql";
3839
4242
  import { capitalize as capitalize3 } from "@vulcanjs/utils";
3840
4243
  import { useSingle, useCreate, useUpdate, useDelete } from "@vulcanjs/react-hooks";
3841
- import { debugVulcan as debugVulcan2 } from "@vulcanjs/utils";
4244
+ import { debugVulcan } from "@vulcanjs/utils";
3842
4245
 
3843
4246
  // components/VulcanCurrentUser/index.ts
3844
4247
  init_esm_shims();
@@ -3848,210 +4251,22 @@ init_esm_shims();
3848
4251
  import { useContext as useContext3 } from "react";
3849
4252
 
3850
4253
  // components/VulcanCurrentUser/Context.ts
3851
- init_esm_shims();
3852
- import React9 from "react";
3853
- var VulcanCurrentUserContext = React9.createContext({
3854
- currentUser: null,
3855
- loading: false
3856
- });
3857
-
3858
- // components/VulcanCurrentUser/Consumer.tsx
3859
- var VulcanCurrentUserConsumer = VulcanCurrentUserContext.Consumer;
3860
- var useVulcanCurrentUser = /* @__PURE__ */ __name(() => useContext3(VulcanCurrentUserContext), "useVulcanCurrentUser");
3861
-
3862
- // components/VulcanCurrentUser/Provider.tsx
3863
- init_esm_shims();
3864
- import React10 from "react";
3865
- function _extends5() {
3866
- _extends5 = Object.assign || function(target) {
3867
- for (var i = 1; i < arguments.length; i++) {
3868
- var source = arguments[i];
3869
- for (var key in source) {
3870
- if (Object.prototype.hasOwnProperty.call(source, key)) {
3871
- target[key] = source[key];
3872
- }
3873
- }
3874
- }
3875
- return target;
3876
- };
3877
- return _extends5.apply(this, arguments);
3878
- }
3879
- __name(_extends5, "_extends");
3880
- var VulcanCurrentUserProvider = /* @__PURE__ */ __name((_a) => {
3881
- var _b = _a, { value } = _b, props = __objRest(_b, ["value"]);
3882
- return /* @__PURE__ */ React10.createElement(VulcanCurrentUserContext.Provider, _extends5({
3883
- value
3884
- }, props));
3885
- }, "VulcanCurrentUserProvider");
3886
-
3887
- // components/form/core/FormContainer.tsx
3888
- function _extends6() {
3889
- _extends6 = Object.assign || function(target) {
3890
- for (var i = 1; i < arguments.length; i++) {
3891
- var source = arguments[i];
3892
- for (var key in source) {
3893
- if (Object.prototype.hasOwnProperty.call(source, key)) {
3894
- target[key] = source[key];
3895
- }
3896
- }
3897
- }
3898
- return target;
3899
- };
3900
- return _extends6.apply(this, arguments);
3901
- }
3902
- __name(_extends6, "_extends");
3903
- var debugForm = debugVulcan2("form");
3904
- var useFragments = /* @__PURE__ */ __name((props, formType) => {
3905
- let queryFragment;
3906
- let queryFragmentName;
3907
- let mutationFragment;
3908
- let mutationFragmentName;
3909
- if (props.queryFragment) {
3910
- if (typeof props.queryFragment === "string") {
3911
- queryFragment = lib_default`
3912
- ${props.queryFragment}
3913
- `;
3914
- if (!props.queryFragmentName)
3915
- throw new Error("When using a string queryFragment, queryFragmentName is mandatory");
3916
- queryFragmentName = props.queryFragmentName;
3917
- } else {
3918
- queryFragment = props.queryFragment;
3919
- queryFragmentName = props.queryFragmentName || getFragmentName2(props.queryFragment);
3920
- }
3921
- }
3922
- if (props.mutationFragment) {
3923
- if (typeof props.mutationFragment === "string") {
3924
- mutationFragment = lib_default`
3925
- ${props.mutationFragment}
3926
- `;
3927
- if (!props.mutationFragmentName)
3928
- throw new Error("When using a string mutationFragment, mutationFragmentName is mandatory");
3929
- queryFragmentName = props.mutationFragmentName;
3930
- } else {
3931
- mutationFragment = props.mutationFragment;
3932
- mutationFragmentName = props.mutationFragmentName || getFragmentName2(props.mutationFragment);
3933
- }
3934
- }
3935
- let autoFormFragments;
3936
- if (!props.queryFragment || !props.mutationFragment) {
3937
- const { model, fields, addFields } = props;
3938
- autoFormFragments = formFragments_default({
3939
- formType,
3940
- model,
3941
- fields,
3942
- addFields
3943
- });
3944
- }
3945
- if (!props.queryFragment) {
3946
- queryFragment = autoFormFragments.queryFragment;
3947
- queryFragmentName = autoFormFragments.queryFragmentName;
3948
- }
3949
- if (!props.mutationFragment) {
3950
- mutationFragment = autoFormFragments.mutationFragment;
3951
- mutationFragmentName = autoFormFragments.mutationFragmentName;
3952
- }
3953
- return {
3954
- mutationFragment,
3955
- mutationFragmentName,
3956
- queryFragment,
3957
- queryFragmentName
3958
- };
3959
- }, "useFragments");
3960
- var FormContainer = /* @__PURE__ */ __name((props) => {
3961
- const { model, documentId, slug, fields, addFields, currentUser: currentUserFromProps, loadingCurrentUser: loadingCurrentUserFromProps } = props;
3962
- const { schema } = model;
3963
- const isEdit = documentId || slug;
3964
- const selector = {
3965
- documentId,
3966
- slug
3967
- };
3968
- const formType = isEdit ? "edit" : "new";
3969
- const VulcanComponents = useVulcanComponents();
3970
- const prefix = `${model.name}${capitalize3(formType)}`;
3971
- const childProps = {
3972
- formType,
3973
- schema
3974
- };
3975
- const { mutationFragment, mutationFragmentName, queryFragment, queryFragmentName } = useFragments(props, formType);
3976
- const mutationOptions = {
3977
- model,
3978
- fragment: mutationFragment,
3979
- fragmentName: mutationFragmentName
3980
- };
3981
- const queryOptions = {
3982
- model,
3983
- fragment: queryFragment,
3984
- fragmentName: queryFragmentName,
3985
- input: {
3986
- id: documentId,
3987
- enableCache: false
3988
- },
3989
- queryOptions: {
3990
- fetchPolicy: "network-only",
3991
- pollInterval: 0,
3992
- skip: formType === "new"
3993
- }
3994
- };
3995
- const { data, document: document1, loading, refetch } = useSingle(queryOptions);
3996
- if (formType !== "new") {
3997
- debugForm("useSingle result", "data", data, "document", document1, "loading", loading);
3998
- }
3999
- const [createDocument] = useCreate(mutationOptions);
4000
- const [updateDocument] = useUpdate(mutationOptions);
4001
- const [deleteDocument] = useDelete(mutationOptions);
4002
- const { currentUser: currentUserFromContext, loading: loadingCurrentUserFromContext } = useVulcanCurrentUser();
4003
- const shouldGetCurrentUserFromProps = typeof currentUserFromProps !== "undefined";
4004
- const currentUser = shouldGetCurrentUserFromProps ? currentUserFromProps : currentUserFromContext;
4005
- const loadingCurrentUser = shouldGetCurrentUserFromProps ? loadingCurrentUserFromProps : loadingCurrentUserFromContext;
4006
- const createAndReturnDocument = /* @__PURE__ */ __name(async (variables) => {
4007
- const result = await createDocument(variables);
4008
- const { errors, document } = result;
4009
- return {
4010
- document,
4011
- errors
4012
- };
4013
- }, "createAndReturnDocument");
4014
- const updateAndReturnDocument = /* @__PURE__ */ __name(async (variables) => {
4015
- const result = await updateDocument(variables);
4016
- const { errors, document } = result;
4017
- return {
4018
- document,
4019
- errors
4020
- };
4021
- }, "updateAndReturnDocument");
4022
- const deleteDocumentAndRefetch = /* @__PURE__ */ __name(async (variables) => {
4023
- await deleteDocument(variables);
4024
- }, "deleteDocumentAndRefetch");
4025
- if (isEdit && loading) {
4026
- return /* @__PURE__ */ React11.createElement(VulcanComponents.Loading, null);
4027
- }
4028
- return /* @__PURE__ */ React11.createElement(VulcanComponents.Form, _extends6({
4029
- document: document1,
4030
- loading: loading || loadingCurrentUser,
4031
- createDocument: createAndReturnDocument,
4032
- updateDocument: updateAndReturnDocument,
4033
- deleteDocument: deleteDocumentAndRefetch,
4034
- refetch,
4035
- currentUser
4036
- }, childProps, props));
4037
- }, "FormContainer");
4038
- var SmartForm = FormContainer;
4039
-
4040
- // components/VulcanComponents/defaultVulcanComponents/index.ts
4041
- var defaultFormComponents = {
4042
- Form,
4043
- SmartForm: FormContainer
4044
- };
4045
- var defaultDatatableComponents = {};
4046
- var defaultCellComponents = {};
4047
- var defaultCoreComponents = {
4048
- MutationButton,
4049
- LoadingButton
4050
- };
4254
+ init_esm_shims();
4255
+ import React6 from "react";
4256
+ var VulcanCurrentUserContext = React6.createContext({
4257
+ currentUser: null,
4258
+ loading: false
4259
+ });
4051
4260
 
4052
- // components/form/core/Form/Form.tsx
4053
- function _extends7() {
4054
- _extends7 = Object.assign || function(target) {
4261
+ // components/VulcanCurrentUser/Consumer.tsx
4262
+ var VulcanCurrentUserConsumer = VulcanCurrentUserContext.Consumer;
4263
+ var useVulcanCurrentUser = /* @__PURE__ */ __name(() => useContext3(VulcanCurrentUserContext), "useVulcanCurrentUser");
4264
+
4265
+ // components/VulcanCurrentUser/Provider.tsx
4266
+ init_esm_shims();
4267
+ import React7 from "react";
4268
+ function _extends3() {
4269
+ _extends3 = Object.assign || function(target) {
4055
4270
  for (var i = 1; i < arguments.length; i++) {
4056
4271
  var source = arguments[i];
4057
4272
  for (var key in source) {
@@ -4062,459 +4277,412 @@ function _extends7() {
4062
4277
  }
4063
4278
  return target;
4064
4279
  };
4065
- return _extends7.apply(this, arguments);
4280
+ return _extends3.apply(this, arguments);
4066
4281
  }
4067
- __name(_extends7, "_extends");
4068
- var compactParent = /* @__PURE__ */ __name((object, path) => {
4069
- const parentPath = getParentPath(path);
4070
- const compactIfArray = /* @__PURE__ */ __name((x) => Array.isArray(x) ? compact3(x) : x, "compactIfArray");
4071
- update(object, parentPath, compactIfArray);
4072
- }, "compactParent");
4073
- var getDefaultValues = /* @__PURE__ */ __name((convertedSchema) => {
4074
- return pickBy(mapValues(convertedSchema, (field) => field.defaultValue), (value) => value);
4075
- }, "getDefaultValues");
4076
- var compactObject = /* @__PURE__ */ __name((o) => omitBy(o, (f) => f === null || f === void 0), "compactObject");
4077
- var getInitialStateFromProps = /* @__PURE__ */ __name((nextProps) => {
4078
- const schema = nextProps.schema || nextProps.model.schema;
4079
- const convertedSchema = convertSchema(schema);
4080
- const formType = nextProps.document ? "edit" : "new";
4081
- const defaultValues = formType === "new" ? getDefaultValues(convertedSchema) : {};
4082
- const initialDocument = merge2({}, defaultValues, nextProps.prefilledProps, compactObject(nextProps.document));
4083
- Object.keys(convertedSchema).forEach((key) => {
4084
- let minCount = convertedSchema[key].minCount;
4085
- if (minCount) {
4086
- initialDocument[key] = initialDocument[key] || [];
4087
- while (initialDocument[key].length < minCount)
4088
- initialDocument[key].push({});
4089
- }
4090
- });
4091
- removeProperty(initialDocument, "__typename");
4092
- return {
4093
- disabled: nextProps.disabled,
4094
- errors: [],
4095
- deletedValues: [],
4096
- currentValues: {},
4097
- originalSchema: convertSchema(schema, {
4098
- removeArrays: false
4099
- }),
4100
- schema: convertedSchema,
4101
- flatSchema: convertSchema(schema, {
4102
- flatten: true
4103
- }),
4104
- initialDocument,
4105
- currentDocument: initialDocument
4106
- };
4107
- }, "getInitialStateFromProps");
4108
- var getChildrenProps = /* @__PURE__ */ __name((props, state, options, callbacks) => {
4109
- const { currentUser, repeatErrors, submitLabel, cancelLabel, revertLabel, cancelCallback, revertCallback, id, model, prefilledProps, itemProperties, contextName, showRemove, showDelete } = props;
4110
- const { disabled, currentDocument } = state;
4111
- const { formType } = options;
4112
- const { deleteDocument } = callbacks;
4113
- const commonProps = {
4114
- document: currentDocument,
4115
- formType,
4116
- currentUser,
4117
- disabled,
4118
- prefilledProps,
4119
- itemProperties,
4120
- contextName
4121
- };
4122
- const docClassName = `document-${formType}`;
4123
- const modelName = model.name.toLowerCase();
4124
- const formProps = {
4125
- className: `${docClassName} ${docClassName}-${modelName}`,
4126
- id
4127
- };
4128
- const formGroupProps = /* @__PURE__ */ __name((group) => __spreadValues(__spreadProps(__spreadValues({
4129
- key: group.name
4130
- }, group), {
4131
- group: omit(group, [
4132
- "fields"
4133
- ])
4134
- }), commonProps), "formGroupProps");
4135
- const formSubmitProps = {
4136
- model,
4137
- currentUser,
4138
- submitLabel,
4139
- cancelLabel,
4140
- revertLabel,
4141
- cancelCallback,
4142
- revertCallback,
4143
- document: currentDocument,
4144
- deleteDocument: formType === "edit" && showRemove && showDelete && deleteDocument || null
4145
- };
4146
- const formLayoutProps = {
4147
- formProps,
4148
- repeatErrors,
4149
- submitProps: formSubmitProps,
4150
- commonProps
4151
- };
4152
- return {
4153
- commonProps,
4154
- formSubmitProps,
4155
- formGroupProps,
4156
- formLayoutProps
4157
- };
4158
- }, "getChildrenProps");
4159
- var FormWarnUnsaved = /* @__PURE__ */ __name(({ isChanged, warnUnsavedChanges, children }) => {
4160
- useWarnOnUnsaved({
4161
- isChanged,
4162
- warnUnsavedChanges
4163
- });
4164
- return /* @__PURE__ */ React12.createElement(React12.Fragment, null, children);
4165
- }, "FormWarnUnsaved");
4166
- var getData = /* @__PURE__ */ __name((customArgs, props, state, { submitFormCallbacks, form }) => {
4167
- const { currentDocument } = state;
4168
- const { model, prefilledProps } = props;
4169
- let data = prefilledProps || {};
4170
- data = omitBy(data, (value, key) => key.endsWith(".$"));
4171
- const args = __spreadValues({
4172
- schema: model.schema,
4173
- excludeRemovedFields: false,
4174
- excludeHiddenFields: false,
4175
- replaceIntlFields: true,
4176
- addExtraFields: false
4177
- }, customArgs);
4178
- const fields = getFieldNames(props, currentDocument, args);
4179
- data = __spreadValues(__spreadValues({}, data), pick2(currentDocument, ...fields));
4180
- state.deletedValues.forEach((path) => {
4181
- if (path.includes(".")) {
4182
- compactParent(data, path);
4183
- }
4184
- });
4185
- data = runCallbacks({
4186
- callbacks: submitFormCallbacks,
4187
- iterator: data,
4188
- args: [
4189
- {}
4190
- ]
4191
- });
4192
- return data;
4193
- }, "getData");
4194
- var Form = /* @__PURE__ */ __name((props) => {
4195
- const { initCallback, createDocument, updateDocument, deleteDocument } = props;
4196
- const initialState = getInitialStateFromProps(props);
4197
- const { schema, originalSchema, flatSchema, initialDocument } = initialState;
4198
- const isFirstRender = useRef2(true);
4199
- useEffect2(() => {
4200
- if (isFirstRender.current) {
4201
- isFirstRender.current = false;
4202
- return;
4203
- }
4204
- if (initCallback)
4205
- initCallback(initialState.currentDocument);
4206
- }, [
4207
- initCallback
4208
- ]);
4209
- const defaultProps = {
4210
- layout: "horizontal",
4211
- prefilledProps: {},
4212
- repeatErrors: false,
4213
- showRemove: true,
4214
- showDelete: true
4215
- };
4216
- const allProps = __spreadValues(__spreadValues({}, defaultProps), props);
4217
- const defaultValues = {};
4218
- const submitFormCallbacks = [];
4219
- const successFormCallbacks = [];
4220
- const failureFormCallbacks = [];
4221
- const intl = useIntlContext2();
4222
- const [errors, setErrors] = useState2([]);
4223
- const throwError = /* @__PURE__ */ __name((error) => {
4224
- let formErrors = getErrors(error);
4225
- console.log(formErrors);
4226
- setErrors((prevErrors) => [
4227
- ...prevErrors,
4228
- ...formErrors
4229
- ]);
4230
- }, "throwError");
4231
- const clearFieldErrors = /* @__PURE__ */ __name((path) => {
4232
- setErrors((prevErrors) => prevErrors.filter((error) => error.path !== path));
4233
- }, "clearFieldErrors");
4234
- const [deletedValues, setDeletedValues] = useState2([]);
4235
- const addToDeletedValues = /* @__PURE__ */ __name((name) => {
4236
- setDeletedValues((prevDeletedValues) => [
4237
- ...prevDeletedValues,
4238
- name
4239
- ]);
4240
- }, "addToDeletedValues");
4241
- const [callbacks, setCallbacks] = useState2({
4242
- submitFormCallbacks: [],
4243
- successFormCallbacks: [],
4244
- failureFormCallbacks: []
4245
- });
4246
- const addToSubmitForm = /* @__PURE__ */ __name((callback) => {
4247
- setCallbacks((cbs) => __spreadValues({}, cbs));
4248
- }, "addToSubmitForm");
4249
- const addToSuccessForm = /* @__PURE__ */ __name((callback) => {
4250
- setCallbacks((cbs) => __spreadProps(__spreadValues({}, cbs), {
4251
- successFormCallbacks: [
4252
- ...cbs.successFormCallbacks,
4253
- callback
4254
- ]
4255
- }));
4256
- }, "addToSuccessForm");
4257
- const addToFailureForm = /* @__PURE__ */ __name((callback) => {
4258
- setCallbacks((cbs) => __spreadProps(__spreadValues({}, cbs), {
4259
- failureFormCallbacks: [
4260
- ...cbs.failureFormCallbacks,
4261
- callback
4262
- ]
4263
- }));
4264
- }, "addToFailureForm");
4265
- const clearFormCallbacks = /* @__PURE__ */ __name(() => {
4266
- setCallbacks({
4267
- submitFormCallbacks: [],
4268
- successFormCallbacks: [],
4269
- failureFormCallbacks: []
4270
- });
4271
- }, "clearFormCallbacks");
4272
- const [currentValues, setCurrentValues] = useState2({});
4273
- const submitFormContext = /* @__PURE__ */ __name((formType) => (event) => {
4274
- submitForm(formType)(event);
4275
- }, "submitFormContext");
4276
- const [currentDocument, setCurrentDocument] = useState2(initialDocument);
4277
- const updateCurrentValues = /* @__PURE__ */ __name((newValues, options = {}) => {
4278
- const { mode = "overwrite" } = options;
4279
- const { changeCallback } = props;
4280
- const newState = {
4281
- currentValues: cloneDeep(currentValues),
4282
- currentDocument: cloneDeep(currentDocument),
4283
- deletedValues: cloneDeep(deletedValues)
4284
- };
4285
- Object.keys(newValues).forEach((key) => {
4286
- const path = key;
4287
- let value = newValues[key];
4288
- if (isEmptyValue(value)) {
4289
- unset(newState.currentValues, path);
4290
- set2(newState.currentDocument, path, null);
4291
- newState.deletedValues = [
4292
- ...newState.deletedValues,
4293
- path
4294
- ];
4295
- } else {
4296
- set2(newState.currentValues, path, value);
4297
- if (mode === "merge" && (Array.isArray(value) || isObject(value))) {
4298
- const oldValue = get2(newState.currentDocument, path);
4299
- set2(newState.currentDocument, path, merge2(oldValue, value));
4300
- } else {
4301
- set2(newState.currentDocument, path, value);
4282
+ __name(_extends3, "_extends");
4283
+ var VulcanCurrentUserProvider = /* @__PURE__ */ __name((_a) => {
4284
+ var _b = _a, { value } = _b, props = __objRest(_b, ["value"]);
4285
+ return /* @__PURE__ */ React7.createElement(VulcanCurrentUserContext.Provider, _extends3({
4286
+ value
4287
+ }, props));
4288
+ }, "VulcanCurrentUserProvider");
4289
+
4290
+ // components/form/core/FormContainer.tsx
4291
+ function _extends4() {
4292
+ _extends4 = Object.assign || function(target) {
4293
+ for (var i = 1; i < arguments.length; i++) {
4294
+ var source = arguments[i];
4295
+ for (var key in source) {
4296
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
4297
+ target[key] = source[key];
4302
4298
  }
4303
- newState.deletedValues = without(newState.deletedValues, path);
4304
4299
  }
4305
- });
4306
- if (changeCallback)
4307
- changeCallback(newState.currentDocument);
4308
- setCurrentValues(newState.currentValues);
4309
- setCurrentDocument(newState.currentDocument);
4310
- setDeletedValues(newState.deletedValues);
4311
- }, "updateCurrentValues");
4312
- const refetchForm = /* @__PURE__ */ __name(() => {
4313
- if (props.refetch) {
4314
- props.refetch();
4315
- }
4316
- }, "refetchForm");
4317
- const [disabled, setDisabled] = useState2(false);
4318
- const [success, setSuccess] = useState2(false);
4319
- const clearForm = /* @__PURE__ */ __name((options = {}) => {
4320
- const { document: optionsDocument } = options;
4321
- const document = optionsDocument ? merge2({}, props.prefilledProps, optionsDocument) : null;
4322
- setErrors([]);
4323
- setCurrentValues({});
4324
- setDeletedValues([]);
4325
- setCurrentDocument(document || initialDocument);
4326
- setDisabled(false);
4327
- }, "clearForm");
4328
- const newMutationSuccessCallback = /* @__PURE__ */ __name(function(result) {
4329
- mutationSuccessCallback(result, "new");
4330
- }, "newMutationSuccessCallback");
4331
- const editMutationSuccessCallback = /* @__PURE__ */ __name(function(result) {
4332
- mutationSuccessCallback(result, "edit");
4333
- }, "editMutationSuccessCallback");
4334
- const formRef = useRef2(null);
4335
- const mutationSuccessCallback = /* @__PURE__ */ __name(function(result, mutationType) {
4336
- setDisabled(false);
4337
- setSuccess(true);
4338
- if (mutationType === "new")
4339
- refetchForm();
4340
- let { document } = result;
4341
- if (formRef.current) {
4342
- clearForm({
4343
- document: mutationType === "edit" ? document : void 0
4344
- });
4345
4300
  }
4346
- document = runCallbacks({
4347
- callbacks: successFormCallbacks,
4348
- iterator: document,
4349
- args: [
4350
- {
4351
- form: formRef.current
4352
- }
4353
- ]
4354
- });
4355
- if (props.successCallback)
4356
- props.successCallback(document, {
4357
- form: this
4358
- });
4359
- }, "mutationSuccessCallback");
4360
- const mutationErrorCallback = /* @__PURE__ */ __name((document, error) => {
4361
- setDisabled(false);
4362
- console.error("// graphQL Error");
4363
- console.error(error);
4364
- runCallbacks({
4365
- callbacks: failureFormCallbacks,
4366
- iterator: error,
4367
- args: [
4368
- {
4369
- error,
4370
- form: formRef.current
4371
- }
4372
- ]
4373
- });
4374
- if (!isEmpty(error)) {
4375
- throwError(error);
4301
+ return target;
4302
+ };
4303
+ return _extends4.apply(this, arguments);
4304
+ }
4305
+ __name(_extends4, "_extends");
4306
+ var debugForm = debugVulcan("form");
4307
+ var useFragments = /* @__PURE__ */ __name((props, formType) => {
4308
+ let queryFragment;
4309
+ let queryFragmentName;
4310
+ let mutationFragment;
4311
+ let mutationFragmentName;
4312
+ if (props.queryFragment) {
4313
+ if (typeof props.queryFragment === "string") {
4314
+ queryFragment = lib_default`
4315
+ ${props.queryFragment}
4316
+ `;
4317
+ if (!props.queryFragmentName)
4318
+ throw new Error("When using a string queryFragment, queryFragmentName is mandatory");
4319
+ queryFragmentName = props.queryFragmentName;
4320
+ } else {
4321
+ queryFragment = props.queryFragment;
4322
+ queryFragmentName = props.queryFragmentName || getFragmentName2(props.queryFragment);
4376
4323
  }
4377
- if (props.errorCallback)
4378
- props.errorCallback(document, error, {
4379
- form: void 0
4380
- });
4381
- }, "mutationErrorCallback");
4382
- const submitForm = /* @__PURE__ */ __name((formType) => async (event) => {
4383
- var _a, _b;
4384
- event && event.preventDefault();
4385
- event && event.stopPropagation();
4386
- const { contextName } = props;
4387
- if (disabled) {
4388
- return;
4324
+ }
4325
+ if (props.mutationFragment) {
4326
+ if (typeof props.mutationFragment === "string") {
4327
+ mutationFragment = lib_default`
4328
+ ${props.mutationFragment}
4329
+ `;
4330
+ if (!props.mutationFragmentName)
4331
+ throw new Error("When using a string mutationFragment, mutationFragmentName is mandatory");
4332
+ queryFragmentName = props.mutationFragmentName;
4333
+ } else {
4334
+ mutationFragment = props.mutationFragment;
4335
+ mutationFragmentName = props.mutationFragmentName || getFragmentName2(props.mutationFragment);
4389
4336
  }
4390
- setErrors([]);
4391
- setDisabled(true);
4392
- let data = getData({
4393
- replaceIntlFields: true,
4394
- addExtraFields: false,
4395
- mutableFields
4396
- }, props, {
4397
- currentDocument,
4398
- deletedValues
4399
- }, {
4400
- form: formRef.current,
4401
- submitFormCallbacks
4337
+ }
4338
+ let autoFormFragments;
4339
+ if (!props.queryFragment || !props.mutationFragment) {
4340
+ const { model, fields, addFields } = props;
4341
+ autoFormFragments = formFragments_default({
4342
+ formType,
4343
+ model,
4344
+ fields,
4345
+ addFields
4402
4346
  });
4403
- if (props.submitCallback) {
4404
- data = props.submitCallback(data) || data;
4347
+ }
4348
+ if (!props.queryFragment) {
4349
+ queryFragment = autoFormFragments.queryFragment;
4350
+ queryFragmentName = autoFormFragments.queryFragmentName;
4351
+ }
4352
+ if (!props.mutationFragment) {
4353
+ mutationFragment = autoFormFragments.mutationFragment;
4354
+ mutationFragmentName = autoFormFragments.mutationFragmentName;
4355
+ }
4356
+ return {
4357
+ mutationFragment,
4358
+ mutationFragmentName,
4359
+ queryFragment,
4360
+ queryFragmentName
4361
+ };
4362
+ }, "useFragments");
4363
+ var FormContainer = /* @__PURE__ */ __name((props) => {
4364
+ const { model, documentId, slug, fields, addFields, currentUser: currentUserFromProps, loadingCurrentUser: loadingCurrentUserFromProps } = props;
4365
+ const { schema } = model;
4366
+ const isEdit = documentId || slug;
4367
+ const selector = {
4368
+ documentId,
4369
+ slug
4370
+ };
4371
+ const formType = isEdit ? "edit" : "new";
4372
+ const VulcanComponents = useVulcanComponents();
4373
+ const prefix = `${model.name}${capitalize3(formType)}`;
4374
+ const childProps = {
4375
+ formType,
4376
+ schema
4377
+ };
4378
+ const { mutationFragment, mutationFragmentName, queryFragment, queryFragmentName } = useFragments(props, formType);
4379
+ const mutationOptions = {
4380
+ model,
4381
+ fragment: mutationFragment,
4382
+ fragmentName: mutationFragmentName
4383
+ };
4384
+ const queryOptions = {
4385
+ model,
4386
+ fragment: queryFragment,
4387
+ fragmentName: queryFragmentName,
4388
+ input: {
4389
+ id: documentId,
4390
+ enableCache: false
4391
+ },
4392
+ queryOptions: {
4393
+ fetchPolicy: "network-only",
4394
+ pollInterval: 0,
4395
+ skip: formType === "new"
4405
4396
  }
4406
- if (formType === "new") {
4407
- try {
4408
- const result = await createDocument({
4409
- input: {
4410
- data,
4411
- contextName
4412
- }
4413
- });
4414
- if ((_a = result.errors) == null ? void 0 : _a.length) {
4415
- mutationErrorCallback(document1, result.errors[0]);
4416
- } else {
4417
- newMutationSuccessCallback(result);
4397
+ };
4398
+ const { data, document: document1, loading, refetch } = useSingle(queryOptions);
4399
+ if (formType !== "new") {
4400
+ debugForm("useSingle result", "data", data, "document", document1, "loading", loading);
4401
+ }
4402
+ const [createDocument] = useCreate(mutationOptions);
4403
+ const [updateDocument] = useUpdate(mutationOptions);
4404
+ const [deleteDocument] = useDelete(mutationOptions);
4405
+ const { currentUser: currentUserFromContext, loading: loadingCurrentUserFromContext } = useVulcanCurrentUser();
4406
+ const shouldGetCurrentUserFromProps = typeof currentUserFromProps !== "undefined";
4407
+ const currentUser = shouldGetCurrentUserFromProps ? currentUserFromProps : currentUserFromContext;
4408
+ const loadingCurrentUser = shouldGetCurrentUserFromProps ? loadingCurrentUserFromProps : loadingCurrentUserFromContext;
4409
+ const createAndReturnDocument = /* @__PURE__ */ __name(async (variables) => {
4410
+ const result = await createDocument(variables);
4411
+ const { errors, document } = result;
4412
+ return {
4413
+ document,
4414
+ errors
4415
+ };
4416
+ }, "createAndReturnDocument");
4417
+ const updateAndReturnDocument = /* @__PURE__ */ __name(async (variables) => {
4418
+ const result = await updateDocument(variables);
4419
+ const { errors, document } = result;
4420
+ return {
4421
+ document,
4422
+ errors
4423
+ };
4424
+ }, "updateAndReturnDocument");
4425
+ const deleteDocumentAndRefetch = /* @__PURE__ */ __name(async (variables) => {
4426
+ await deleteDocument(variables);
4427
+ }, "deleteDocumentAndRefetch");
4428
+ if (isEdit && loading) {
4429
+ return /* @__PURE__ */ React8.createElement(VulcanComponents.Loading, null);
4430
+ }
4431
+ return /* @__PURE__ */ React8.createElement(VulcanComponents.Form, _extends4({
4432
+ document: document1,
4433
+ loading: loading || loadingCurrentUser,
4434
+ createDocument: createAndReturnDocument,
4435
+ updateDocument: updateAndReturnDocument,
4436
+ deleteDocument: deleteDocumentAndRefetch,
4437
+ refetch,
4438
+ currentUser
4439
+ }, childProps, props));
4440
+ }, "FormContainer");
4441
+ var SmartForm = FormContainer;
4442
+
4443
+ // components/form/utils/index.ts
4444
+ init_esm_shims();
4445
+
4446
+ // components/form/utils/ui_utils.ts
4447
+ var ui_utils_exports = {};
4448
+ __export(ui_utils_exports, {
4449
+ getHtmlInputProps: () => getHtmlInputProps,
4450
+ whitelistInputProps: () => whitelistInputProps
4451
+ });
4452
+ init_esm_shims();
4453
+ import pick3 from "lodash/pick.js";
4454
+ var getHtmlInputProps = /* @__PURE__ */ __name((props) => {
4455
+ const { name, path, options, label, onChange, onBlur, value, disabled } = props;
4456
+ const inputProperties = __spreadProps(__spreadValues({}, props.inputProperties), {
4457
+ name,
4458
+ path,
4459
+ options,
4460
+ label,
4461
+ onChange,
4462
+ onBlur,
4463
+ value,
4464
+ disabled
4465
+ });
4466
+ return __spreadProps(__spreadValues({}, props), {
4467
+ inputProperties
4468
+ });
4469
+ }, "getHtmlInputProps");
4470
+ var whitelistInputProps = /* @__PURE__ */ __name((props) => {
4471
+ const whitelist = [
4472
+ "name",
4473
+ "path",
4474
+ "options",
4475
+ "label",
4476
+ "onChange",
4477
+ "onBlur",
4478
+ "value",
4479
+ "disabled",
4480
+ "placeholder"
4481
+ ];
4482
+ const value = props.value;
4483
+ let safeValue = value;
4484
+ if (value === null)
4485
+ safeValue = void 0;
4486
+ return __spreadProps(__spreadValues({}, pick3(props, whitelist)), {
4487
+ value: safeValue
4488
+ });
4489
+ }, "whitelistInputProps");
4490
+
4491
+ // components/VulcanComponents/index.ts
4492
+ init_esm_shims();
4493
+
4494
+ // components/VulcanComponents/Provider.tsx
4495
+ init_esm_shims();
4496
+ import React9 from "react";
4497
+ import { debugVulcan as debugVulcan2 } from "@vulcanjs/utils";
4498
+ function _extends5() {
4499
+ _extends5 = Object.assign || function(target) {
4500
+ for (var i = 1; i < arguments.length; i++) {
4501
+ var source = arguments[i];
4502
+ for (var key in source) {
4503
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
4504
+ target[key] = source[key];
4418
4505
  }
4419
- } catch (error) {
4420
- mutationErrorCallback(document1, error);
4421
4506
  }
4507
+ }
4508
+ return target;
4509
+ };
4510
+ return _extends5.apply(this, arguments);
4511
+ }
4512
+ __name(_extends5, "_extends");
4513
+ var debugComponents = debugVulcan2("components");
4514
+ var VulcanComponentsProvider = /* @__PURE__ */ __name((_a) => {
4515
+ var _b = _a, { value } = _b, props = __objRest(_b, ["value"]);
4516
+ const currentComponents = useVulcanComponents();
4517
+ debugComponents("Current components __not_initialized?", currentComponents.__not_initialized);
4518
+ const mergedComponents = __spreadValues(__spreadValues({}, (currentComponents == null ? void 0 : currentComponents.__not_initialized) ? {} : currentComponents || {}), value || {});
4519
+ debugComponents("Merged components", mergedComponents);
4520
+ Object.keys(mergedComponents).forEach((componentName) => {
4521
+ if (mergedComponents[componentName]) {
4522
+ mergedComponents[componentName].displayName = "Vulcan." + componentName;
4422
4523
  } else {
4423
- try {
4424
- const documentId = currentDocument._id;
4425
- const result = await updateDocument({
4426
- input: {
4427
- id: documentId,
4428
- data,
4429
- contextName
4430
- }
4431
- });
4432
- if ((_b = result.errors) == null ? void 0 : _b.length) {
4433
- mutationErrorCallback(document1, result.errors[0]);
4434
- } else {
4435
- editMutationSuccessCallback(result);
4524
+ console.warn(`Encountered an undefined component: ${componentName}.
4525
+ The component may not be registered, or import failed.
4526
+ For instance due to an infinite import loop when importing
4527
+ "useVulcanComponents" from index instead of Consumer.`);
4528
+ }
4529
+ });
4530
+ return /* @__PURE__ */ React9.createElement(VulcanComponentsContext.Provider, _extends5({
4531
+ value: mergedComponents
4532
+ }, props));
4533
+ }, "VulcanComponentsProvider");
4534
+
4535
+ // components/VulcanComponents/typings.ts
4536
+ init_esm_shims();
4537
+ import React10 from "react";
4538
+
4539
+ // components/VulcanComponents/defaultVulcanComponents/index.ts
4540
+ init_esm_shims();
4541
+
4542
+ // components/core/LoadingButton.tsx
4543
+ init_esm_shims();
4544
+ import React11 from "react";
4545
+ function _extends6() {
4546
+ _extends6 = Object.assign || function(target) {
4547
+ for (var i = 1; i < arguments.length; i++) {
4548
+ var source = arguments[i];
4549
+ for (var key in source) {
4550
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
4551
+ target[key] = source[key];
4436
4552
  }
4437
- } catch (error) {
4438
- mutationErrorCallback(document1, error);
4439
4553
  }
4440
4554
  }
4441
- }, "submitForm");
4442
- const deleteDocumentWithConfirm = /* @__PURE__ */ __name(() => {
4443
- const document = currentDocument;
4444
- const documentId = props.document._id;
4445
- const documentTitle = document.title || document.name || "";
4446
- const deleteDocumentConfirm = intl.formatMessage({
4447
- id: "forms.delete_confirm"
4448
- }, {
4449
- title: documentTitle
4450
- });
4451
- if (window.confirm(deleteDocumentConfirm)) {
4452
- deleteDocument({
4453
- input: {
4454
- id: documentId
4555
+ return target;
4556
+ };
4557
+ return _extends6.apply(this, arguments);
4558
+ }
4559
+ __name(_extends6, "_extends");
4560
+ var LoadingButton = /* @__PURE__ */ __name((_a) => {
4561
+ var _b = _a, { loading, label, onClick, children, className = "" } = _b, rest = __objRest(_b, ["loading", "label", "onClick", "children", "className"]);
4562
+ const Components2 = useVulcanComponents();
4563
+ const wrapperStyle = {
4564
+ position: "relative"
4565
+ };
4566
+ const labelStyle = loading ? {
4567
+ opacity: 0.5
4568
+ } : {};
4569
+ const loadingStyle = loading ? {
4570
+ position: "absolute",
4571
+ top: 0,
4572
+ bottom: 0,
4573
+ left: 0,
4574
+ right: 0,
4575
+ display: "flex",
4576
+ justifyContent: "center",
4577
+ alignItems: "center"
4578
+ } : {
4579
+ display: "none"
4580
+ };
4581
+ return /* @__PURE__ */ React11.createElement(Components2.Button, _extends6({
4582
+ className: `loading-button ${loading ? "loading-button-loading" : "loading-button-notloading"} ${className}`,
4583
+ onClick
4584
+ }, rest), /* @__PURE__ */ React11.createElement("span", {
4585
+ style: wrapperStyle
4586
+ }, /* @__PURE__ */ React11.createElement("span", {
4587
+ style: labelStyle
4588
+ }, label || children), /* @__PURE__ */ React11.createElement("span", {
4589
+ style: loadingStyle
4590
+ }, /* @__PURE__ */ React11.createElement(Components2.Loading, null))));
4591
+ }, "LoadingButton");
4592
+
4593
+ // components/core/MutationButton.tsx
4594
+ init_esm_shims();
4595
+ import React12, { useState as useState2 } from "react";
4596
+ import { useMutation } from "@apollo/client";
4597
+ function _extends7() {
4598
+ _extends7 = Object.assign || function(target) {
4599
+ for (var i = 1; i < arguments.length; i++) {
4600
+ var source = arguments[i];
4601
+ for (var key in source) {
4602
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
4603
+ target[key] = source[key];
4455
4604
  }
4456
- }).then((mutationResult) => {
4457
- if (props.removeSuccessCallback)
4458
- props.removeSuccessCallback({
4459
- documentId,
4460
- documentTitle
4461
- });
4462
- refetchForm();
4463
- }).catch((error) => {
4464
- console.log(error);
4465
- });
4605
+ }
4466
4606
  }
4467
- }, "deleteDocumentWithConfirm");
4468
- const { successComponent, document: document1, currentUser, model, warnUnsavedChanges } = props;
4469
- const FormComponents = useVulcanComponents();
4470
- const formType1 = document1 ? "edit" : "new";
4471
- const mutableFields = formType1 === "edit" ? getEditableFields(schema, currentUser, initialDocument) : getInsertableFields(schema, currentUser);
4472
- const { formLayoutProps, formGroupProps } = getChildrenProps(props, {
4473
- disabled,
4474
- currentDocument
4475
- }, {
4476
- formType: formType1
4477
- }, {
4478
- deleteDocument: deleteDocumentWithConfirm
4479
- });
4480
- const isChanged = isNotSameDocument(initialDocument, currentDocument);
4481
- return success && successComponent ? successComponent : /* @__PURE__ */ React12.createElement(FormWarnUnsaved, {
4482
- isChanged,
4483
- warnUnsavedChanges
4484
- }, /* @__PURE__ */ React12.createElement(FormContext.Provider, {
4485
- value: {
4486
- throwError,
4487
- clearForm,
4488
- refetchForm,
4489
- isChanged,
4490
- submitForm: submitFormContext(formType1),
4491
- addToDeletedValues,
4492
- updateCurrentValues,
4493
- getDocument: () => currentDocument,
4494
- getLabel: (fieldName, fieldLocale) => getLabel(model, flatSchema, intl, fieldName, fieldLocale),
4495
- initialDocument,
4496
- addToSubmitForm,
4497
- addToSuccessForm,
4498
- addToFailureForm,
4499
- clearFormCallbacks,
4500
- errors,
4501
- currentValues,
4502
- deletedValues,
4503
- clearFieldErrors
4607
+ return target;
4608
+ };
4609
+ return _extends7.apply(this, arguments);
4610
+ }
4611
+ __name(_extends7, "_extends");
4612
+ var MutationButton = /* @__PURE__ */ __name((props) => {
4613
+ const Components2 = useVulcanComponents();
4614
+ const [loading, setLoading] = useState2(false);
4615
+ const [error1, setError] = useState2();
4616
+ const {
4617
+ mutation,
4618
+ loadingButtonProps = {},
4619
+ label
4620
+ } = props;
4621
+ let { mutationArguments } = props;
4622
+ const mutationAsNode = typeof mutation === "string" ? lib_default`
4623
+ ${mutation}
4624
+ ` : mutation;
4625
+ const [mutationFunc] = useMutation(mutationAsNode);
4626
+ const handleClick = /* @__PURE__ */ __name(async (e) => {
4627
+ e.preventDefault();
4628
+ setLoading(true);
4629
+ setError(void 0);
4630
+ const {
4631
+ submitCallback,
4632
+ successCallback,
4633
+ errorCallback
4634
+ } = props;
4635
+ try {
4636
+ if (submitCallback) {
4637
+ const callbackReturn = await submitCallback(mutationArguments);
4638
+ if (callbackReturn && callbackReturn.mutationArguments) {
4639
+ mutationArguments = callbackReturn.mutationArguments;
4640
+ }
4641
+ }
4642
+ const result = await mutationFunc({
4643
+ variables: mutationArguments
4644
+ });
4645
+ if (successCallback) {
4646
+ await successCallback(result);
4647
+ }
4648
+ } catch (error) {
4649
+ setError(error);
4650
+ if (errorCallback) {
4651
+ await errorCallback(error);
4652
+ }
4653
+ } finally {
4654
+ setLoading(false);
4504
4655
  }
4505
- }, /* @__PURE__ */ React12.createElement(FormComponents.FormLayout, _extends7({}, formLayoutProps), getFieldGroups(props, {
4506
- currentDocument,
4507
- schema,
4508
- flatSchema,
4509
- originalSchema
4510
- }, intl, mutableFields, intl.formatMessage).map((group, i) => /* @__PURE__ */ React12.createElement(FormComponents.FormGroup, _extends7({
4511
- key: i
4512
- }, formGroupProps(group)))))));
4513
- }, "Form");
4656
+ }, "handleClick");
4657
+ const loadingButton = /* @__PURE__ */ React12.createElement(Components2.LoadingButton, _extends7({
4658
+ loading,
4659
+ onClick: handleClick,
4660
+ label
4661
+ }, loadingButtonProps));
4662
+ if (error1) {
4663
+ return /* @__PURE__ */ React12.createElement(Components2.TooltipTrigger, {
4664
+ trigger: loadingButton,
4665
+ defaultShow: true
4666
+ }, error1.message.replace("GraphQL error: ", ""));
4667
+ }
4668
+ return loadingButton;
4669
+ }, "MutationButton");
4514
4670
 
4515
- // components/form/core/Form/typings.ts
4671
+ // components/form/core/index.ts
4516
4672
  init_esm_shims();
4517
4673
 
4674
+ // components/VulcanComponents/defaultVulcanComponents/index.ts
4675
+ var defaultFormComponents = {
4676
+ Form,
4677
+ SmartForm: FormContainer
4678
+ };
4679
+ var defaultDatatableComponents = {};
4680
+ var defaultCellComponents = {};
4681
+ var defaultCoreComponents = {
4682
+ MutationButton,
4683
+ LoadingButton
4684
+ };
4685
+
4518
4686
  // componentsHelpers.tsx
4519
4687
  init_esm_shims();
4520
4688
  import React13 from "react";
@@ -4611,12 +4779,17 @@ export {
4611
4779
  defaultDatatableComponents,
4612
4780
  defaultFormComponents,
4613
4781
  delayedComponent,
4782
+ formFragments_exports as formFragmentsUtils,
4614
4783
  getRawComponent,
4615
4784
  instantiateComponent,
4616
4785
  mergeWithComponents,
4786
+ path_utils_exports as pathUtils,
4787
+ schema_utils_exports as schemaUtils,
4788
+ ui_utils_exports as uiUtils,
4617
4789
  useFormContext,
4618
4790
  useVulcanComponents,
4619
4791
  useVulcanCurrentUser,
4792
+ utils_exports as utils,
4620
4793
  withVulcanComponents
4621
4794
  };
4622
4795
  //# sourceMappingURL=index.js.map