@wix/bex-core 2.349.0 → 2.351.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/cjs/index.js.map +1 -1
  2. package/dist/cjs/state/CustomFieldCollectionOptionsState.js +66 -0
  3. package/dist/cjs/state/CustomFieldCollectionOptionsState.js.map +1 -0
  4. package/dist/cjs/state/CustomFieldModalState.js +108 -13
  5. package/dist/cjs/state/CustomFieldModalState.js.map +1 -1
  6. package/dist/cjs/testkit/createInMemorySchemaSource.js +5 -1
  7. package/dist/cjs/testkit/createInMemorySchemaSource.js.map +1 -1
  8. package/dist/cjs/types/FieldTypeDefinition.js +3 -2
  9. package/dist/cjs/types/FieldTypeDefinition.js.map +1 -1
  10. package/dist/cjs/types/FieldsSource.js.map +1 -1
  11. package/dist/cjs/types/SchemaSource.js +6 -1
  12. package/dist/cjs/types/SchemaSource.js.map +1 -1
  13. package/dist/cjs/util/index.js +6 -0
  14. package/dist/cjs/util/index.js.map +1 -1
  15. package/dist/cjs/util/isReferenceField.js +9 -0
  16. package/dist/cjs/util/isReferenceField.js.map +1 -0
  17. package/dist/esm/index.js.map +1 -1
  18. package/dist/esm/state/CustomFieldCollectionOptionsState.js +60 -0
  19. package/dist/esm/state/CustomFieldCollectionOptionsState.js.map +1 -0
  20. package/dist/esm/state/CustomFieldModalState.js +107 -3
  21. package/dist/esm/state/CustomFieldModalState.js.map +1 -1
  22. package/dist/esm/testkit/createInMemorySchemaSource.js +2 -1
  23. package/dist/esm/testkit/createInMemorySchemaSource.js.map +1 -1
  24. package/dist/esm/types/FieldTypeDefinition.js.map +1 -1
  25. package/dist/esm/types/SchemaSource.js +7 -2
  26. package/dist/esm/types/SchemaSource.js.map +1 -1
  27. package/dist/esm/util/index.js +1 -0
  28. package/dist/esm/util/index.js.map +1 -1
  29. package/dist/esm/util/isReferenceField.js +3 -0
  30. package/dist/esm/util/isReferenceField.js.map +1 -0
  31. package/dist/types/index.d.ts +1 -1
  32. package/dist/types/index.d.ts.map +1 -1
  33. package/dist/types/state/CustomFieldCollectionOptionsState.d.ts +12 -0
  34. package/dist/types/state/CustomFieldCollectionOptionsState.d.ts.map +1 -0
  35. package/dist/types/state/CustomFieldModalBiReporter.d.ts +1 -10
  36. package/dist/types/state/CustomFieldModalBiReporter.d.ts.map +1 -1
  37. package/dist/types/state/CustomFieldModalState.d.ts +28 -12
  38. package/dist/types/state/CustomFieldModalState.d.ts.map +1 -1
  39. package/dist/types/testkit/createInMemorySchemaSource.d.ts +1 -0
  40. package/dist/types/testkit/createInMemorySchemaSource.d.ts.map +1 -1
  41. package/dist/types/types/FieldTypeDefinition.d.ts +10 -3
  42. package/dist/types/types/FieldTypeDefinition.d.ts.map +1 -1
  43. package/dist/types/types/FieldsSource.d.ts +25 -0
  44. package/dist/types/types/FieldsSource.d.ts.map +1 -1
  45. package/dist/types/types/SchemaSource.d.ts +11 -1
  46. package/dist/types/types/SchemaSource.d.ts.map +1 -1
  47. package/dist/types/util/index.d.ts +1 -0
  48. package/dist/types/util/index.d.ts.map +1 -1
  49. package/dist/types/util/isReferenceField.d.ts +7 -0
  50. package/dist/types/util/isReferenceField.d.ts.map +1 -0
  51. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"names":["_model","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","_state","_services","_util","_useExport","_useImport","_createCollection","_useCollectionDatasetSync","_hooks","CollectionConfigWithConditionals","CollectionFactory","useSyncProps","useSelector","_core","QueryCache","_DeepPartial","DeepPartial","_SchemaSource","defineSchemaSource","sourceFetchData","_FieldTypeDefinition"],"sources":["../../src/index.ts"],"sourcesContent":["export * from './model';\nexport * from './state';\nexport * from './services';\nexport * from './util';\nexport * from './hooks/useExport';\nexport * from './hooks/useImport';\nexport * from './hooks/createCollection';\nexport * from './hooks/useCollectionDatasetSync';\nexport {\n CollectionConfigWithConditionals,\n CollectionFactory,\n useSyncProps,\n useSelector,\n} from './hooks';\nexport { QueryCache } from 'react-query/core';\nexport { DeepPartial } from './types/DeepPartial';\nexport type {\n PatternsFieldType,\n QueryOperator,\n NumberRange,\n StringLengthRange,\n SpecificValue,\n BaseReferenceField,\n ReferenceField,\n MultiReferenceField,\n NonReferenceField,\n Field,\n FieldSpec,\n} from './types/Field';\nexport type {\n Schema,\n SchemaPermissions,\n ItemPermissions,\n RemoveItemDisabledResult,\n CollectionBackendBase,\n CollectionBackend,\n FieldActions,\n FieldSettings,\n BackupConfig,\n BulkInsertResult,\n BulkInsertError,\n LoadedSchema,\n SchemaLoader,\n FindOptions,\n} from './types/Schema';\nexport type {\n FieldsSource,\n FieldManagement,\n FieldArchive,\n ArchivedFieldItem,\n ResolvedFieldTypeOption,\n FieldPermissions,\n FieldDraft,\n FieldModalText,\n FieldModalSubtitle,\n FieldPiiWarning,\n FieldSettingsProps,\n FieldSettingsSection,\n} from './types/FieldsSource';\nexport { defineSchemaSource, sourceFetchData } from './types/SchemaSource';\nexport type {\n SchemaSource,\n SchemaSourceInput,\n FieldModalInput,\n FieldTypeOption,\n} from './types/SchemaSource';\nexport * from './types/FieldTypeDefinition';\nexport type {\n CursorQuery,\n OffsetQuery,\n CursorQueryResult,\n OffsetQueryResult,\n CursorFetchDataFn,\n OffsetFetchDataFn,\n FetchTotalFn,\n} from './hooks/paginationModeConfig';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_model","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","_state","_services","_util","_useExport","_useImport","_createCollection","_useCollectionDatasetSync","_hooks","CollectionConfigWithConditionals","CollectionFactory","useSyncProps","useSelector","_core","QueryCache","_DeepPartial","DeepPartial","_SchemaSource","defineSchemaSource","sourceFetchData","_FieldTypeDefinition"],"sources":["../../src/index.ts"],"sourcesContent":["export * from './model';\nexport * from './state';\nexport * from './services';\nexport * from './util';\nexport * from './hooks/useExport';\nexport * from './hooks/useImport';\nexport * from './hooks/createCollection';\nexport * from './hooks/useCollectionDatasetSync';\nexport {\n CollectionConfigWithConditionals,\n CollectionFactory,\n useSyncProps,\n useSelector,\n} from './hooks';\nexport { QueryCache } from 'react-query/core';\nexport { DeepPartial } from './types/DeepPartial';\nexport type {\n PatternsFieldType,\n QueryOperator,\n NumberRange,\n StringLengthRange,\n SpecificValue,\n BaseReferenceField,\n ReferenceField,\n MultiReferenceField,\n NonReferenceField,\n Field,\n FieldSpec,\n} from './types/Field';\nexport type {\n Schema,\n SchemaPermissions,\n ItemPermissions,\n RemoveItemDisabledResult,\n CollectionBackendBase,\n CollectionBackend,\n FieldActions,\n FieldSettings,\n BackupConfig,\n BulkInsertResult,\n BulkInsertError,\n LoadedSchema,\n SchemaLoader,\n FindOptions,\n} from './types/Schema';\nexport type {\n FieldsSource,\n FieldManagement,\n FieldArchive,\n ArchivedFieldItem,\n ResolvedFieldTypeOption,\n FieldPermissions,\n FieldDraft,\n FieldModalText,\n FieldModalSubtitle,\n FieldPiiWarning,\n FieldModalCollectionOption,\n FieldModalCollectionOptionsLoader,\n FieldModalCollectionInput,\n FieldSettingsProps,\n FieldSettingsSection,\n} from './types/FieldsSource';\nexport { defineSchemaSource, sourceFetchData } from './types/SchemaSource';\nexport type {\n SchemaSource,\n SchemaSourceInput,\n FieldModalInput,\n FieldTypeOption,\n} from './types/SchemaSource';\nexport * from './types/FieldTypeDefinition';\nexport type {\n CursorQuery,\n OffsetQuery,\n CursorQueryResult,\n OffsetQueryResult,\n CursorFetchDataFn,\n OffsetFetchDataFn,\n FetchTotalFn,\n} from './hooks/paginationModeConfig';\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.CustomFieldCollectionOptionsState = void 0;
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _mobx = require("mobx");
8
+ class CustomFieldCollectionOptionsState {
9
+ constructor() {
10
+ (0, _defineProperty2.default)(this, "options", []);
11
+ (0, _defineProperty2.default)(this, "loading", false);
12
+ (0, _defineProperty2.default)(this, "error", undefined);
13
+ (0, _defineProperty2.default)(this, "loaderRef", undefined);
14
+ (0, _defineProperty2.default)(this, "cache", new Map());
15
+ (0, _mobx.makeObservable)(this, {
16
+ options: _mobx.observable.ref,
17
+ loading: _mobx.observable.ref,
18
+ error: _mobx.observable.ref,
19
+ clearError: _mobx.action.bound,
20
+ load: _mobx.action.bound
21
+ });
22
+ }
23
+ clearError() {
24
+ this.error = undefined;
25
+ }
26
+ async load(loader) {
27
+ if (!loader) {
28
+ this.loaderRef = undefined;
29
+ this.options = [];
30
+ this.loading = false;
31
+ this.error = undefined;
32
+ return;
33
+ }
34
+ const cached = this.cache.get(loader);
35
+ this.loaderRef = loader;
36
+ if (cached) {
37
+ this.options = cached;
38
+ this.loading = false;
39
+ this.error = undefined;
40
+ return;
41
+ }
42
+ this.options = [];
43
+ this.loading = true;
44
+ this.error = undefined;
45
+ try {
46
+ const options = await loader();
47
+ (0, _mobx.runInAction)(() => {
48
+ this.cache.set(loader, options);
49
+ if (this.loaderRef === loader) {
50
+ this.options = options;
51
+ this.loading = false;
52
+ }
53
+ });
54
+ } catch (error) {
55
+ (0, _mobx.runInAction)(() => {
56
+ if (this.loaderRef === loader) {
57
+ this.options = [];
58
+ this.loading = false;
59
+ this.error = error;
60
+ }
61
+ });
62
+ }
63
+ }
64
+ }
65
+ exports.CustomFieldCollectionOptionsState = CustomFieldCollectionOptionsState;
66
+ //# sourceMappingURL=CustomFieldCollectionOptionsState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_mobx","require","CustomFieldCollectionOptionsState","constructor","_defineProperty2","default","undefined","Map","makeObservable","options","observable","ref","loading","error","clearError","action","bound","load","loader","loaderRef","cached","cache","get","runInAction","set","exports"],"sources":["../../../src/state/CustomFieldCollectionOptionsState.ts"],"sourcesContent":["import { action, makeObservable, observable, runInAction } from 'mobx';\nimport type {\n FieldModalCollectionOption,\n FieldModalCollectionOptionsLoader,\n} from '../types/FieldsSource';\n\nexport class CustomFieldCollectionOptionsState {\n options: FieldModalCollectionOption[] = [];\n loading = false;\n error: unknown = undefined;\n private loaderRef: FieldModalCollectionOptionsLoader | undefined = undefined;\n private readonly cache = new Map<\n FieldModalCollectionOptionsLoader,\n FieldModalCollectionOption[]\n >();\n\n constructor() {\n makeObservable(this, {\n options: observable.ref,\n loading: observable.ref,\n error: observable.ref,\n clearError: action.bound,\n load: action.bound,\n });\n }\n\n clearError() {\n this.error = undefined;\n }\n\n async load(loader: FieldModalCollectionOptionsLoader | undefined) {\n if (!loader) {\n this.loaderRef = undefined;\n this.options = [];\n this.loading = false;\n this.error = undefined;\n\n return;\n }\n\n const cached = this.cache.get(loader);\n this.loaderRef = loader;\n\n if (cached) {\n this.options = cached;\n this.loading = false;\n this.error = undefined;\n\n return;\n }\n\n this.options = [];\n this.loading = true;\n this.error = undefined;\n\n try {\n const options = await loader();\n\n runInAction(() => {\n this.cache.set(loader, options);\n\n if (this.loaderRef === loader) {\n this.options = options;\n this.loading = false;\n }\n });\n } catch (error) {\n runInAction(() => {\n if (this.loaderRef === loader) {\n this.options = [];\n this.loading = false;\n this.error = error;\n }\n });\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAMO,MAAMC,iCAAiC,CAAC;EAU7CC,WAAWA,CAAA,EAAG;IAAA,IAAAC,gBAAA,CAAAC,OAAA,mBAT0B,EAAE;IAAA,IAAAD,gBAAA,CAAAC,OAAA,mBAChC,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,iBACEC,SAAS;IAAA,IAAAF,gBAAA,CAAAC,OAAA,qBACyCC,SAAS;IAAA,IAAAF,gBAAA,CAAAC,OAAA,iBACnD,IAAIE,GAAG,CAG9B,CAAC;IAGD,IAAAC,oBAAc,EAAC,IAAI,EAAE;MACnBC,OAAO,EAAEC,gBAAU,CAACC,GAAG;MACvBC,OAAO,EAAEF,gBAAU,CAACC,GAAG;MACvBE,KAAK,EAAEH,gBAAU,CAACC,GAAG;MACrBG,UAAU,EAAEC,YAAM,CAACC,KAAK;MACxBC,IAAI,EAAEF,YAAM,CAACC;IACf,CAAC,CAAC;EACJ;EAEAF,UAAUA,CAAA,EAAG;IACX,IAAI,CAACD,KAAK,GAAGP,SAAS;EACxB;EAEA,MAAMW,IAAIA,CAACC,MAAqD,EAAE;IAChE,IAAI,CAACA,MAAM,EAAE;MACX,IAAI,CAACC,SAAS,GAAGb,SAAS;MAC1B,IAAI,CAACG,OAAO,GAAG,EAAE;MACjB,IAAI,CAACG,OAAO,GAAG,KAAK;MACpB,IAAI,CAACC,KAAK,GAAGP,SAAS;MAEtB;IACF;IAEA,MAAMc,MAAM,GAAG,IAAI,CAACC,KAAK,CAACC,GAAG,CAACJ,MAAM,CAAC;IACrC,IAAI,CAACC,SAAS,GAAGD,MAAM;IAEvB,IAAIE,MAAM,EAAE;MACV,IAAI,CAACX,OAAO,GAAGW,MAAM;MACrB,IAAI,CAACR,OAAO,GAAG,KAAK;MACpB,IAAI,CAACC,KAAK,GAAGP,SAAS;MAEtB;IACF;IAEA,IAAI,CAACG,OAAO,GAAG,EAAE;IACjB,IAAI,CAACG,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,KAAK,GAAGP,SAAS;IAEtB,IAAI;MACF,MAAMG,OAAO,GAAG,MAAMS,MAAM,CAAC,CAAC;MAE9B,IAAAK,iBAAW,EAAC,MAAM;QAChB,IAAI,CAACF,KAAK,CAACG,GAAG,CAACN,MAAM,EAAET,OAAO,CAAC;QAE/B,IAAI,IAAI,CAACU,SAAS,KAAKD,MAAM,EAAE;UAC7B,IAAI,CAACT,OAAO,GAAGA,OAAO;UACtB,IAAI,CAACG,OAAO,GAAG,KAAK;QACtB;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd,IAAAU,iBAAW,EAAC,MAAM;QAChB,IAAI,IAAI,CAACJ,SAAS,KAAKD,MAAM,EAAE;UAC7B,IAAI,CAACT,OAAO,GAAG,EAAE;UACjB,IAAI,CAACG,OAAO,GAAG,KAAK;UACpB,IAAI,CAACC,KAAK,GAAGA,KAAK;QACpB;MACF,CAAC,CAAC;IACJ;EACF;AACF;AAACY,OAAA,CAAAvB,iCAAA,GAAAA,iCAAA","ignoreList":[]}
@@ -6,6 +6,7 @@ exports.CustomFieldModalState = void 0;
6
6
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
7
  var _mobx = require("mobx");
8
8
  var _ConditionalModalState = require("./ConditionalModalState");
9
+ var _CustomFieldCollectionOptionsState = require("./CustomFieldCollectionOptionsState");
9
10
  var _CustomFieldModalBiReporter = require("./CustomFieldModalBiReporter");
10
11
  var _formstate = require("formstate");
11
12
  var _ToggleState = require("./ToggleState");
@@ -24,6 +25,7 @@ class CustomFieldModalState {
24
25
  (0, _defineProperty2.default)(this, "customOrigin", void 0);
25
26
  (0, _defineProperty2.default)(this, "reportBi", void 0);
26
27
  (0, _defineProperty2.default)(this, "onSubmit", void 0);
28
+ (0, _defineProperty2.default)(this, "collectionOptionsState", new _CustomFieldCollectionOptionsState.CustomFieldCollectionOptionsState());
27
29
  (0, _defineProperty2.default)(this, "modalState", new _ConditionalModalState.ConditionalModalState({
28
30
  onConfirm: async () => {
29
31
  if (this.mode === 'new' && this.fieldManagement.maxReached) {
@@ -110,7 +112,15 @@ class CustomFieldModalState {
110
112
  readApps: new _formstate.FieldState(false),
111
113
  writeUsers: new _formstate.FieldState(false),
112
114
  writeApps: new _formstate.FieldState(false),
113
- containsPii: new _formstate.FieldState(false)
115
+ containsPii: new _formstate.FieldState(false),
116
+ referencedCollectionId: new _formstate.FieldState(undefined).validators(value => {
117
+ const collectionInput = this.collectionInput;
118
+ if (this.mode === 'new' && collectionInput && (collectionInput.required ?? true) && !value) {
119
+ var _this$selectedFieldTy;
120
+ return collectionInput.errorMessage ?? collectionInput.label ?? ((_this$selectedFieldTy = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy.label);
121
+ }
122
+ return undefined;
123
+ })
114
124
  }));
115
125
  (0, _defineProperty2.default)(this, "disabledFields", {
116
126
  permissions: {
@@ -153,6 +163,14 @@ class CustomFieldModalState {
153
163
  selectedFieldType: _mobx.computed,
154
164
  namePlaceholder: _mobx.computed,
155
165
  typeSupportsPii: _mobx.computed,
166
+ collectionInput: _mobx.computed,
167
+ collectionOptionsLoader: _mobx.computed,
168
+ collectionInputLabel: _mobx.computed,
169
+ collectionInputPlaceholder: _mobx.computed,
170
+ collectionInputEmptyStateMessage: _mobx.computed,
171
+ collectionOptions: _mobx.computed,
172
+ collectionOptionsLoading: _mobx.computed,
173
+ collectionOptionsError: _mobx.computed,
156
174
  showSettings: _mobx.computed,
157
175
  settingsHasError: _mobx.computed,
158
176
  isSubmitting: _mobx.computed,
@@ -161,6 +179,9 @@ class CustomFieldModalState {
161
179
  mode: _mobx.observable.ref,
162
180
  reset: _mobx.action,
163
181
  resetSettingsValues: _mobx.action,
182
+ resetCollectionInput: _mobx.action,
183
+ setReferencedCollectionId: _mobx.action.bound,
184
+ loadCollectionOptions: _mobx.action.bound,
164
185
  setFormValues: _mobx.action,
165
186
  generateUniqueKey: _mobx.action.bound,
166
187
  setKeyFieldIfNotDirty: _mobx.action.bound,
@@ -214,6 +235,7 @@ class CustomFieldModalState {
214
235
  form.reset();
215
236
  settings.setOff();
216
237
  this.resetSettingsValues();
238
+ this.resetCollectionInput();
217
239
  this.errorToastConfig = undefined;
218
240
  this.disableAutoValidation();
219
241
  permissions.read.apps = false;
@@ -244,6 +266,7 @@ class CustomFieldModalState {
244
266
  key.enableAutoValidation();
245
267
  name.enableAutoValidation();
246
268
  type.enableAutoValidation();
269
+ this.form.$.referencedCollectionId.enableAutoValidation();
247
270
  }
248
271
  disableAutoValidation() {
249
272
  const {
@@ -258,9 +281,10 @@ class CustomFieldModalState {
258
281
  key.disableAutoValidation();
259
282
  name.disableAutoValidation();
260
283
  type.disableAutoValidation();
284
+ this.form.$.referencedCollectionId.disableAutoValidation();
261
285
  }
262
286
  getFormValues() {
263
- var _this$settingsSection;
287
+ var _this$settingsSection, _this$collectionInput;
264
288
  const {
265
289
  form: {
266
290
  $: {
@@ -271,24 +295,28 @@ class CustomFieldModalState {
271
295
  readUsers,
272
296
  writeApps,
273
297
  writeUsers,
274
- containsPii
298
+ containsPii,
299
+ referencedCollectionId
275
300
  }
276
301
  }
277
302
  } = this;
303
+ const sectionSettings = (_this$settingsSection = this.settingsSection) == null ? void 0 : _this$settingsSection.getValues(type.value);
304
+ const collectionSettings = referencedCollectionId.value && (_this$collectionInput = this.collectionInput) != null && _this$collectionInput.getSettings ? this.collectionInput.getSettings(referencedCollectionId.value) : undefined;
278
305
  return {
279
306
  type: type.value,
280
307
  key: key.value,
281
308
  name: name.value,
309
+ referencedCollectionId: referencedCollectionId.value,
282
310
  readApps: readApps.value,
283
311
  readUsers: readUsers.value,
284
312
  writeApps: writeApps.value,
285
313
  writeUsers: writeUsers.value,
286
314
  containsPii: containsPii.value,
287
- settings: (_this$settingsSection = this.settingsSection) == null ? void 0 : _this$settingsSection.getValues(type.value)
315
+ settings: combineFieldSettings(sectionSettings, collectionSettings)
288
316
  };
289
317
  }
290
318
  setFormValues(form, params) {
291
- var _this$settingsSection2;
319
+ var _this$collectionInput2, _this$settingsSection2;
292
320
  const {
293
321
  form: {
294
322
  $
@@ -302,6 +330,7 @@ class CustomFieldModalState {
302
330
  $.writeApps.value = form.writeApps;
303
331
  $.writeUsers.value = form.writeUsers;
304
332
  $.containsPii.value = form.containsPii;
333
+ $.referencedCollectionId.value = form.referencedCollectionId ?? (form.field ? (_this$collectionInput2 = this.collectionInput) == null || _this$collectionInput2.getValue == null ? void 0 : _this$collectionInput2.getValue(form.field) : undefined) ?? ((0, _util.isReferenceField)(form.field) ? form.field.referenceMetadata.referencedCollectionId : undefined);
305
334
  // After `$.type.value` above, so it lands on the picked type's section.
306
335
  (_this$settingsSection2 = this.settingsSection) == null || _this$settingsSection2.setValues(form.field);
307
336
  if (params != null && params.disablePermissionCheckboxes) {
@@ -338,6 +367,17 @@ class CustomFieldModalState {
338
367
  $.writeUsers.value = !!(permissions != null && (_permissions$siteVisi3 = permissions.siteVisitors) != null && _permissions$siteVisi3.defaultWrite);
339
368
  }
340
369
  }
370
+ resetCollectionInput() {
371
+ this.form.$.referencedCollectionId.value = undefined;
372
+ this.form.$.referencedCollectionId.disableAutoValidation();
373
+ this.collectionOptionsState.clearError();
374
+ }
375
+ setReferencedCollectionId(collectionId) {
376
+ this.form.$.referencedCollectionId.onChange(collectionId);
377
+ }
378
+ async loadCollectionOptions() {
379
+ await this.collectionOptionsState.load(this.collectionOptionsLoader);
380
+ }
341
381
  containsKey(key) {
342
382
  return this.fieldManagement.existingFieldKeys.includes(key);
343
383
  }
@@ -365,9 +405,48 @@ class CustomFieldModalState {
365
405
  get selectedFieldType() {
366
406
  return this.fieldManagement.fieldModal.types.find(option => option.id === this.form.$.type.value);
367
407
  }
408
+ get collectionInput() {
409
+ if (!this.selectedFieldType) {
410
+ return undefined;
411
+ }
412
+ const explicitInput = this.selectedFieldType.collectionInput;
413
+ const autoWired = (0, _util.isReferenceFieldType)(this.selectedFieldType.patternsType) && this.fieldManagement.fieldModal.loadReferenceableCollectionOptions;
414
+ if (!explicitInput && !autoWired) {
415
+ return undefined;
416
+ }
417
+ return explicitInput ?? {};
418
+ }
419
+ get collectionOptionsLoader() {
420
+ const collectionInput = this.collectionInput;
421
+ if (!collectionInput || !this.selectedFieldType) {
422
+ return undefined;
423
+ }
424
+ return collectionInput.loadOptions ?? ((0, _util.isReferenceFieldType)(this.selectedFieldType.patternsType) ? this.fieldManagement.fieldModal.loadReferenceableCollectionOptions : undefined);
425
+ }
426
+ get collectionInputLabel() {
427
+ var _this$collectionInput3, _this$selectedFieldTy2;
428
+ return ((_this$collectionInput3 = this.collectionInput) == null ? void 0 : _this$collectionInput3.label) ?? ((_this$selectedFieldTy2 = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy2.label) ?? '';
429
+ }
430
+ get collectionInputPlaceholder() {
431
+ var _this$collectionInput4;
432
+ return ((_this$collectionInput4 = this.collectionInput) == null ? void 0 : _this$collectionInput4.placeholder) ?? this.collectionInputLabel;
433
+ }
434
+ get collectionInputEmptyStateMessage() {
435
+ var _this$collectionInput5;
436
+ return ((_this$collectionInput5 = this.collectionInput) == null ? void 0 : _this$collectionInput5.emptyStateMessage) ?? this.t('cairo.emptyState.subtitle.nothingMatchesCriteria');
437
+ }
438
+ get collectionOptions() {
439
+ return this.collectionOptionsState.options;
440
+ }
441
+ get collectionOptionsLoading() {
442
+ return this.collectionOptionsState.loading;
443
+ }
444
+ get collectionOptionsError() {
445
+ return this.collectionOptionsState.error;
446
+ }
368
447
  get namePlaceholder() {
369
- var _this$selectedFieldTy, _this$selectedFieldTy2;
370
- return ((_this$selectedFieldTy = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy.namePlaceholder) ?? ((_this$selectedFieldTy2 = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy2.label) ?? this.t('cairo.customFields.addCustomField.modal.fieldName.placeholder');
448
+ var _this$selectedFieldTy3, _this$selectedFieldTy4;
449
+ return ((_this$selectedFieldTy3 = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy3.namePlaceholder) ?? ((_this$selectedFieldTy4 = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy4.label) ?? this.t('cairo.customFields.addCustomField.modal.fieldName.placeholder');
371
450
  }
372
451
 
373
452
  /** Whether the PII toggle shows: the picked type decides, and a type with no
@@ -375,29 +454,29 @@ class CustomFieldModalState {
375
454
  * `selectedFieldType` — editing a field whose type the source can't create
376
455
  * finds no option, and the toggle still belongs there. */
377
456
  get typeSupportsPii() {
378
- var _this$selectedFieldTy3;
457
+ var _this$selectedFieldTy5;
379
458
  if (this.form.$.type.value == null) {
380
459
  return false;
381
460
  }
382
- return ((_this$selectedFieldTy3 = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy3.supportsPii) ?? this.fieldManagement.fieldModal.supportsPii ?? false;
461
+ return ((_this$selectedFieldTy5 = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy5.supportsPii) ?? this.fieldManagement.fieldModal.supportsPii ?? false;
383
462
  }
384
463
 
385
464
  /** The picked type's settings section. Editing a field of a type the source
386
465
  * can't create finds no entry for it, so it falls back to the first section
387
466
  * the source declares — that field still has settings to show. */
388
467
  get settingsSection() {
389
- var _this$selectedFieldTy4, _this$fieldManagement;
468
+ var _this$selectedFieldTy6, _this$fieldManagement;
390
469
  if (!this.form.$.type.value) {
391
470
  return undefined;
392
471
  }
393
- return ((_this$selectedFieldTy4 = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy4.settingsSection) ?? ((_this$fieldManagement = this.fieldManagement.fieldModal.types.find(t => t.settingsSection)) == null ? void 0 : _this$fieldManagement.settingsSection);
472
+ return ((_this$selectedFieldTy6 = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy6.settingsSection) ?? ((_this$fieldManagement = this.fieldManagement.fieldModal.types.find(t => t.settingsSection)) == null ? void 0 : _this$fieldManagement.settingsSection);
394
473
  }
395
474
 
396
475
  /** Not a computed: the warning may read data the source loaded outside MobX,
397
476
  * so it's called afresh on every render. Same fallback as `settingsSection`. */
398
477
  get piiWarning() {
399
- var _this$selectedFieldTy5, _this$fieldManagement2;
400
- const warning = ((_this$selectedFieldTy5 = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy5.piiWarning) ?? ((_this$fieldManagement2 = this.fieldManagement.fieldModal.types.find(t => t.piiWarning)) == null ? void 0 : _this$fieldManagement2.piiWarning);
478
+ var _this$selectedFieldTy7, _this$fieldManagement2;
479
+ const warning = ((_this$selectedFieldTy7 = this.selectedFieldType) == null ? void 0 : _this$selectedFieldTy7.piiWarning) ?? ((_this$fieldManagement2 = this.fieldManagement.fieldModal.types.find(t => t.piiWarning)) == null ? void 0 : _this$fieldManagement2.piiWarning);
401
480
  return warning == null ? void 0 : warning();
402
481
  }
403
482
  get showSettings() {
@@ -409,4 +488,20 @@ class CustomFieldModalState {
409
488
  }
410
489
  }
411
490
  exports.CustomFieldModalState = CustomFieldModalState;
491
+ const isRecord = value => typeof value === 'object' && value !== null && !Array.isArray(value);
492
+ const combineFieldSettings = (sectionSettings, collectionSettings) => {
493
+ if (sectionSettings === undefined) {
494
+ return collectionSettings;
495
+ }
496
+ if (collectionSettings === undefined) {
497
+ return sectionSettings;
498
+ }
499
+ if (isRecord(sectionSettings) && isRecord(collectionSettings)) {
500
+ return {
501
+ ...sectionSettings,
502
+ ...collectionSettings
503
+ };
504
+ }
505
+ return collectionSettings;
506
+ };
412
507
  //# sourceMappingURL=CustomFieldModalState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_ConditionalModalState","_CustomFieldModalBiReporter","_formstate","_ToggleState","_util","_isHttpError","CustomFieldModalState","constructor","params","_defineProperty2","default","ToggleState","undefined","ConditionalModalState","onConfirm","mode","fieldManagement","maxReached","form","customFieldModalBiReporter","reportModalEndProcess","t","validation","validate","hasError","enableAutoValidation","Error","settingsHasError","settings","setOn","_this$container$showT","_this$container","draft","getFormValues","onSubmit","endType","addField","editField","key","container","showToast","call","message","type","biName","e","onConfirmError","FormState","FieldState","validators","value","name","containsKey","test","readUsers","readApps","writeUsers","writeApps","containsPii","permissions","read","apps","users","write","$","dirty","fieldCount","reportBi","CustomFieldModalBiReporter","customFieldModalState","makeObservable","selectedFieldType","computed","namePlaceholder","typeSupportsPii","showSettings","isSubmitting","disabledFields","observable","ref","errorToastConfig","reset","action","resetSettingsValues","setFormValues","generateUniqueKey","bound","setKeyFieldIfNotDirty","setDefaultPermissions","_this$errorToastConfi","getResolvedError","errorHandler","runInAction","_httpError$response","_httpError$response2","_httpError$response3","resolvedError","httpError","isHttpError","isDetailsResponse","response","data","isErrorDetails","details","validationError","fieldViolations","some","v","ruleName","text","onClick","window","open","requestId","reportSubmitFailure","errorType","setOff","disableAutoValidation","fieldModal","types","forEach","_type$settingsSection","settingsSection","setValues","_this$settingsSection","getValues","_this$settingsSection2","field","disablePermissionCheckboxes","_permissions$installe","_permissions$siteVisi","installedApps","hide","_permissions$installe2","_permissions$installe3","defaultRead","defaultWrite","siteVisitors","_permissions$siteVisi2","_permissions$siteVisi3","existingFieldKeys","includes","slug","slugify","length","index","translate","modalState","modal","confirming","isLoading","find","option","id","_this$selectedFieldTy","_this$selectedFieldTy2","label","_this$selectedFieldTy3","supportsPii","_this$selectedFieldTy4","_this$fieldManagement","piiWarning","_this$selectedFieldTy5","_this$fieldManagement2","warning","Boolean","_this$settingsSection3","exports"],"sources":["../../../src/state/CustomFieldModalState.ts"],"sourcesContent":["import {\n action,\n computed,\n makeObservable,\n observable,\n runInAction,\n} from 'mobx';\nimport { ConditionalModalState } from './ConditionalModalState';\nimport { CustomFieldModalBiReporter } from './CustomFieldModalBiReporter';\nimport { FieldState, FormState } from 'formstate';\nimport { ToggleState } from './ToggleState';\nimport { CustomFieldOrigin, CustomFieldType, ReportBI } from '../services';\nimport { FieldDraft, FieldManagement } from '../types/FieldsSource';\nimport { WixPatternsContainer } from './WixPatternsContainer';\nimport { isHttpError, slugify } from '../util';\nimport { isDetailsResponse, isErrorDetails } from '../util/isHttpError';\nimport { ToastConfig } from '../model';\n\nexport interface CustomFieldStateParams {\n fieldManagement: FieldManagement;\n container: WixPatternsContainer;\n reportBi: ReportBI;\n /** Field count for the \"numAdded\" BI param. */\n fieldCount: () => number;\n /**\n * Pure mode: when provided, confirm validates and hands the collected draft to\n * `onSubmit` instead of creating/editing the field through `fieldManagement`\n * (no server side effect, no success toast). Used by the CSV import flow, which\n * defers field creation to a single batch step before upload. `fieldManagement`\n * is still required — the form reads its type options/permissions/keys.\n */\n onSubmit?: (draft: FieldDraft) => void;\n}\n\nexport interface CustomFieldForm {\n type?: CustomFieldType;\n key: string;\n name: string;\n readApps: boolean;\n readUsers: boolean;\n writeApps: boolean;\n writeUsers: boolean;\n containsPii: boolean;\n}\n\nexport class CustomFieldModalState {\n fieldManagement: FieldManagement;\n container: WixPatternsContainer;\n fieldCount: () => number;\n customFieldModalBiReporter: CustomFieldModalBiReporter;\n settings = new ToggleState();\n errorToastConfig: ToastConfig | undefined = undefined;\n mode: 'new' | 'edit' = 'new';\n origin: CustomFieldOrigin = 'Custom columns panel';\n customOrigin?: string;\n reportBi: ReportBI;\n private readonly onSubmit?: (draft: FieldDraft) => void;\n\n modalState = new ConditionalModalState({\n onConfirm: async () => {\n if (this.mode === 'new' && this.fieldManagement.maxReached) {\n return;\n }\n const {\n form,\n mode,\n customFieldModalBiReporter: { reportModalEndProcess },\n t,\n } = this;\n\n const validation = await form.validate();\n\n if (validation.hasError) {\n this.enableAutoValidation();\n throw new Error('validation');\n }\n\n if (this.settingsHasError) {\n this.settings.setOn();\n throw new Error('validation');\n }\n\n try {\n const draft = this.getFormValues();\n\n // Pure mode (CSV import): hand the draft back; no server mutation, no\n // success toast (the field isn't created here — it's batched pre-upload).\n if (this.onSubmit) {\n this.onSubmit(draft);\n reportModalEndProcess({ endType: 'Add Field' });\n return;\n }\n\n if (mode === 'new') {\n await this.fieldManagement.addField(draft);\n } else {\n await this.fieldManagement.editField(draft.key, draft);\n }\n\n this.container.showToast?.({\n message:\n mode === 'new'\n ? t('cairo.customFields.successToast')\n : t('cairo.customFields.editCustomField.success.toast'),\n type: 'SUCCESS',\n biName: 'cairo-custom-field-success-toast',\n });\n\n reportModalEndProcess({ endType: 'Add Field' });\n } catch (e: unknown) {\n this.onConfirmError(e);\n }\n },\n });\n\n form = new FormState({\n type: new FieldState<string | undefined>(undefined).validators((value) => {\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldType.error',\n );\n }\n\n return undefined;\n }),\n name: new FieldState('').validators((value) => {\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldName.error',\n );\n }\n\n return undefined;\n }),\n key: new FieldState('').validators((value) => {\n const { t, mode } = this;\n\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldName.error',\n );\n }\n\n if (mode === 'new' && this.containsKey(value)) {\n return t('cairo.customFields.addCustomField.modal.sameKey.error');\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_]*$/g.test(value)) {\n return t('cairo.customFields.addCustomField.modal.keyFormat.error');\n }\n\n return undefined;\n }),\n readUsers: new FieldState(false),\n readApps: new FieldState(false),\n writeUsers: new FieldState(false),\n writeApps: new FieldState(false),\n containsPii: new FieldState(false),\n });\n\n disabledFields = {\n permissions: {\n read: { apps: true, users: true },\n write: { apps: true, users: true },\n },\n };\n\n constructor(params: CustomFieldStateParams) {\n this.fieldManagement = params.fieldManagement;\n this.container = params.container;\n this.fieldCount = params.fieldCount;\n this.reportBi = params.reportBi;\n this.onSubmit = params.onSubmit;\n this.customFieldModalBiReporter = new CustomFieldModalBiReporter({\n customFieldModalState: this,\n });\n\n makeObservable(this, {\n selectedFieldType: computed,\n namePlaceholder: computed,\n typeSupportsPii: computed,\n showSettings: computed,\n settingsHasError: computed,\n isSubmitting: computed,\n disabledFields: observable.ref,\n errorToastConfig: observable.ref,\n mode: observable.ref,\n reset: action,\n resetSettingsValues: action,\n setFormValues: action,\n generateUniqueKey: action.bound,\n setKeyFieldIfNotDirty: action.bound,\n setDefaultPermissions: action,\n });\n }\n\n onConfirmError(e: unknown) {\n const { getResolvedError } = this.container.errorHandler;\n\n runInAction(() => {\n const resolvedError = getResolvedError?.(e);\n const httpError = isHttpError(e) ? e : undefined;\n\n if (\n isDetailsResponse(httpError?.response?.data) &&\n isErrorDetails(httpError?.response?.data.details) &&\n httpError?.response?.data?.details?.validationError?.fieldViolations?.some(\n (v) => v.ruleName === 'EXCEEDED_STORED_DATA_SIZE',\n )\n ) {\n this.errorToastConfig = {\n message: this.t('cairo.customFields.modal.maxFieldsError'),\n action: {\n text: this.t('cairo.error.contactSupport.cta'),\n onClick: () => {\n window.open('https://www.wix.com/contact', '_blank');\n },\n },\n };\n } else {\n this.errorToastConfig = {\n message: resolvedError?.message!,\n action: resolvedError?.action,\n details: resolvedError?.requestId\n ? {\n requestId: resolvedError.requestId,\n }\n : undefined,\n };\n }\n });\n\n this.customFieldModalBiReporter.reportSubmitFailure({\n errorType: this.errorToastConfig?.message,\n });\n\n // Prevents modal closing\n throw e;\n }\n reset() {\n const {\n form,\n settings,\n disabledFields: { permissions },\n } = this;\n\n form.reset();\n settings.setOff();\n this.resetSettingsValues();\n this.errorToastConfig = undefined;\n this.disableAutoValidation();\n\n permissions.read.apps = false;\n permissions.read.users = false;\n permissions.write.apps = false;\n permissions.write.users = false;\n }\n\n /** Clears the settings sections back to their defaults. Goes over every type\n * option rather than the picked one: `reset()` runs after the form is\n * cleared, when no type is picked. */\n resetSettingsValues() {\n this.fieldManagement.fieldModal.types.forEach((type) =>\n type.settingsSection?.setValues(),\n );\n }\n\n enableAutoValidation() {\n const {\n form: {\n $: { key, name, type },\n },\n } = this;\n\n key.enableAutoValidation();\n name.enableAutoValidation();\n type.enableAutoValidation();\n }\n\n disableAutoValidation() {\n const {\n form: {\n $: { key, name, type },\n },\n } = this;\n\n key.disableAutoValidation();\n name.disableAutoValidation();\n type.disableAutoValidation();\n }\n\n getFormValues(): FieldDraft {\n const {\n form: {\n $: {\n type,\n key,\n name,\n readApps,\n readUsers,\n writeApps,\n writeUsers,\n containsPii,\n },\n },\n } = this;\n\n return {\n type: type.value,\n key: key.value,\n name: name.value,\n readApps: readApps.value,\n readUsers: readUsers.value,\n writeApps: writeApps.value,\n writeUsers: writeUsers.value,\n containsPii: containsPii.value,\n settings: this.settingsSection?.getValues(type.value),\n };\n }\n\n setFormValues(\n form: FieldDraft,\n params?: { disablePermissionCheckboxes: boolean },\n ) {\n const {\n form: { $ },\n } = this;\n\n $.key.value = form.key;\n $.name.value = form.name;\n $.type.value = form.type;\n $.readApps.value = form.readApps;\n $.readUsers.value = form.readUsers;\n $.writeApps.value = form.writeApps;\n $.writeUsers.value = form.writeUsers;\n $.containsPii.value = form.containsPii;\n // After `$.type.value` above, so it lands on the picked type's section.\n this.settingsSection?.setValues(form.field);\n if (params?.disablePermissionCheckboxes) {\n if (form.readUsers) {\n this.disabledFields.permissions.read.users = true;\n }\n\n if (form.readApps) {\n this.disabledFields.permissions.read.apps = true;\n }\n\n if (form.writeUsers) {\n this.disabledFields.permissions.write.users = true;\n }\n\n if (form.writeApps) {\n this.disabledFields.permissions.write.apps = true;\n }\n }\n }\n\n setDefaultPermissions() {\n const {\n form: { $ },\n } = this;\n const permissions = this.fieldManagement.fieldModal.permissions;\n if (!permissions?.installedApps?.hide) {\n $.readApps.value = !!permissions?.installedApps?.defaultRead;\n $.writeApps.value = !!permissions?.installedApps?.defaultWrite;\n }\n\n if (!permissions?.siteVisitors?.hide) {\n $.readUsers.value = !!permissions?.siteVisitors?.defaultRead;\n $.writeUsers.value = !!permissions?.siteVisitors?.defaultWrite;\n }\n }\n\n setKeyFieldIfNotDirty = (value: string) => {\n const {\n form: {\n $: { key },\n },\n mode,\n } = this;\n\n if (mode === 'new' && !key.dirty) {\n // In the formstate library setting a field value using\n // the onChange API sets the dirty state of the field to true.\n // However, since here it's not a manual user input\n // we avoid changing the dirty state by setting a value directly.\n key.value = value;\n }\n };\n\n private containsKey(key: string) {\n return this.fieldManagement.existingFieldKeys.includes(key);\n }\n\n generateUniqueKey(name: string) {\n const slug = slugify(name);\n const type = this.form.$.type.value;\n\n if (slug && slug.length >= 4 && !this.containsKey(slug)) {\n return slug;\n }\n\n if (!type) {\n return '';\n }\n\n let index = 1;\n\n while (this.containsKey(`${type}_${index}`)) {\n index += 1;\n }\n\n return `${type}_${index}`;\n }\n\n get t() {\n return this.container.translate;\n }\n\n get isSubmitting() {\n return this.modalState.modal.confirming.isLoading;\n }\n\n get selectedFieldType() {\n return this.fieldManagement.fieldModal.types.find(\n (option) => option.id === this.form.$.type.value,\n );\n }\n\n get namePlaceholder() {\n return (\n this.selectedFieldType?.namePlaceholder ??\n this.selectedFieldType?.label ??\n this.t('cairo.customFields.addCustomField.modal.fieldName.placeholder')\n );\n }\n\n /** Whether the PII toggle shows: the picked type decides, and a type with no\n * opinion follows the source. Checked on the raw value, not on\n * `selectedFieldType` — editing a field whose type the source can't create\n * finds no option, and the toggle still belongs there. */\n get typeSupportsPii() {\n if (this.form.$.type.value == null) {\n return false;\n }\n return (\n this.selectedFieldType?.supportsPii ??\n this.fieldManagement.fieldModal.supportsPii ??\n false\n );\n }\n\n /** The picked type's settings section. Editing a field of a type the source\n * can't create finds no entry for it, so it falls back to the first section\n * the source declares — that field still has settings to show. */\n get settingsSection() {\n if (!this.form.$.type.value) {\n return undefined;\n }\n return (\n this.selectedFieldType?.settingsSection ??\n this.fieldManagement.fieldModal.types.find((t) => t.settingsSection)\n ?.settingsSection\n );\n }\n\n /** Not a computed: the warning may read data the source loaded outside MobX,\n * so it's called afresh on every render. Same fallback as `settingsSection`. */\n get piiWarning() {\n const warning =\n this.selectedFieldType?.piiWarning ??\n this.fieldManagement.fieldModal.types.find((t) => t.piiWarning)\n ?.piiWarning;\n return warning?.();\n }\n\n get showSettings() {\n return (\n Boolean(this.fieldManagement.fieldModal.permissions) ||\n Boolean(this.settingsSection)\n );\n }\n\n get settingsHasError() {\n return Boolean(this.settingsSection?.hasError(this.form.$.type.value));\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_ConditionalModalState","_CustomFieldCollectionOptionsState","_CustomFieldModalBiReporter","_formstate","_ToggleState","_util","_isHttpError","CustomFieldModalState","constructor","params","_defineProperty2","default","ToggleState","undefined","CustomFieldCollectionOptionsState","ConditionalModalState","onConfirm","mode","fieldManagement","maxReached","form","customFieldModalBiReporter","reportModalEndProcess","t","validation","validate","hasError","enableAutoValidation","Error","settingsHasError","settings","setOn","_this$container$showT","_this$container","draft","getFormValues","onSubmit","endType","addField","editField","key","container","showToast","call","message","type","biName","e","onConfirmError","FormState","FieldState","validators","value","name","containsKey","test","readUsers","readApps","writeUsers","writeApps","containsPii","referencedCollectionId","collectionInput","required","_this$selectedFieldTy","errorMessage","label","selectedFieldType","permissions","read","apps","users","write","$","dirty","fieldCount","reportBi","CustomFieldModalBiReporter","customFieldModalState","makeObservable","computed","namePlaceholder","typeSupportsPii","collectionOptionsLoader","collectionInputLabel","collectionInputPlaceholder","collectionInputEmptyStateMessage","collectionOptions","collectionOptionsLoading","collectionOptionsError","showSettings","isSubmitting","disabledFields","observable","ref","errorToastConfig","reset","action","resetSettingsValues","resetCollectionInput","setReferencedCollectionId","bound","loadCollectionOptions","setFormValues","generateUniqueKey","setKeyFieldIfNotDirty","setDefaultPermissions","_this$errorToastConfi","getResolvedError","errorHandler","runInAction","_httpError$response","_httpError$response2","_httpError$response3","resolvedError","httpError","isHttpError","isDetailsResponse","response","data","isErrorDetails","details","validationError","fieldViolations","some","v","ruleName","text","onClick","window","open","requestId","reportSubmitFailure","errorType","setOff","disableAutoValidation","fieldModal","types","forEach","_type$settingsSection","settingsSection","setValues","_this$settingsSection","_this$collectionInput","sectionSettings","getValues","collectionSettings","getSettings","combineFieldSettings","_this$collectionInput2","_this$settingsSection2","field","getValue","isReferenceField","referenceMetadata","disablePermissionCheckboxes","_permissions$installe","_permissions$siteVisi","installedApps","hide","_permissions$installe2","_permissions$installe3","defaultRead","defaultWrite","siteVisitors","_permissions$siteVisi2","_permissions$siteVisi3","collectionOptionsState","clearError","collectionId","onChange","load","existingFieldKeys","includes","slug","slugify","length","index","translate","modalState","modal","confirming","isLoading","find","option","id","explicitInput","autoWired","isReferenceFieldType","patternsType","loadReferenceableCollectionOptions","loadOptions","_this$collectionInput3","_this$selectedFieldTy2","_this$collectionInput4","placeholder","_this$collectionInput5","emptyStateMessage","options","loading","error","_this$selectedFieldTy3","_this$selectedFieldTy4","_this$selectedFieldTy5","supportsPii","_this$selectedFieldTy6","_this$fieldManagement","piiWarning","_this$selectedFieldTy7","_this$fieldManagement2","warning","Boolean","_this$settingsSection3","exports","isRecord","Array","isArray"],"sources":["../../../src/state/CustomFieldModalState.ts"],"sourcesContent":["import {\n action,\n computed,\n makeObservable,\n observable,\n runInAction,\n} from 'mobx';\nimport { ConditionalModalState } from './ConditionalModalState';\nimport { CustomFieldCollectionOptionsState } from './CustomFieldCollectionOptionsState';\nimport { CustomFieldModalBiReporter } from './CustomFieldModalBiReporter';\nimport { FieldState, FormState } from 'formstate';\nimport { ToggleState } from './ToggleState';\nimport { CustomFieldOrigin, CustomFieldType, ReportBI } from '../services';\nimport {\n FieldDraft,\n FieldManagement,\n FieldModalCollectionInput,\n FieldModalCollectionOption,\n FieldModalCollectionOptionsLoader,\n ResolvedFieldTypeOption,\n} from '../types/FieldsSource';\nimport type { FieldSettings } from '../types/Schema';\nimport { WixPatternsContainer } from './WixPatternsContainer';\nimport {\n isHttpError,\n isReferenceField,\n isReferenceFieldType,\n slugify,\n} from '../util';\nimport { isDetailsResponse, isErrorDetails } from '../util/isHttpError';\nimport { ToastConfig } from '../model';\n\nexport interface CustomFieldStateParams {\n fieldManagement: FieldManagement;\n container: WixPatternsContainer;\n reportBi: ReportBI;\n /** Field count for the \"numAdded\" BI param. */\n fieldCount: () => number;\n /**\n * Pure mode: when provided, confirm validates and hands the collected draft to\n * `onSubmit` instead of creating/editing the field through `fieldManagement`\n * (no server side effect, no success toast). Used by the CSV import flow, which\n * defers field creation to a single batch step before upload. `fieldManagement`\n * is still required — the form reads its type options/permissions/keys.\n */\n onSubmit?: (draft: FieldDraft) => void;\n}\n\nexport interface CustomFieldForm {\n type?: CustomFieldType;\n key: string;\n name: string;\n referencedCollectionId?: string;\n readApps: boolean;\n readUsers: boolean;\n writeApps: boolean;\n writeUsers: boolean;\n containsPii: boolean;\n}\n\nexport interface CustomFieldFormFields {\n [key: string]: FieldState<any>;\n type: FieldState<string | undefined>;\n key: FieldState<string>;\n name: FieldState<string>;\n readApps: FieldState<boolean>;\n readUsers: FieldState<boolean>;\n writeApps: FieldState<boolean>;\n writeUsers: FieldState<boolean>;\n containsPii: FieldState<boolean>;\n referencedCollectionId: FieldState<string | undefined>;\n}\n\nexport class CustomFieldModalState {\n fieldManagement: FieldManagement;\n container: WixPatternsContainer;\n fieldCount: () => number;\n customFieldModalBiReporter: CustomFieldModalBiReporter;\n settings = new ToggleState();\n errorToastConfig: ToastConfig | undefined = undefined;\n mode: 'new' | 'edit' = 'new';\n origin: CustomFieldOrigin = 'Custom columns panel';\n customOrigin?: string;\n reportBi: ReportBI;\n private readonly onSubmit?: (draft: FieldDraft) => void;\n private readonly collectionOptionsState =\n new CustomFieldCollectionOptionsState();\n\n modalState = new ConditionalModalState({\n onConfirm: async () => {\n if (this.mode === 'new' && this.fieldManagement.maxReached) {\n return;\n }\n const {\n form,\n mode,\n customFieldModalBiReporter: { reportModalEndProcess },\n t,\n } = this;\n\n const validation = await form.validate();\n\n if (validation.hasError) {\n this.enableAutoValidation();\n throw new Error('validation');\n }\n\n if (this.settingsHasError) {\n this.settings.setOn();\n throw new Error('validation');\n }\n\n try {\n const draft = this.getFormValues();\n\n // Pure mode (CSV import): hand the draft back; no server mutation, no\n // success toast (the field isn't created here — it's batched pre-upload).\n if (this.onSubmit) {\n this.onSubmit(draft);\n reportModalEndProcess({ endType: 'Add Field' });\n return;\n }\n\n if (mode === 'new') {\n await this.fieldManagement.addField(draft);\n } else {\n await this.fieldManagement.editField(draft.key, draft);\n }\n\n this.container.showToast?.({\n message:\n mode === 'new'\n ? t('cairo.customFields.successToast')\n : t('cairo.customFields.editCustomField.success.toast'),\n type: 'SUCCESS',\n biName: 'cairo-custom-field-success-toast',\n });\n\n reportModalEndProcess({ endType: 'Add Field' });\n } catch (e: unknown) {\n this.onConfirmError(e);\n }\n },\n });\n\n form: FormState<CustomFieldFormFields> = new FormState({\n type: new FieldState<string | undefined>(undefined).validators((value) => {\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldType.error',\n );\n }\n\n return undefined;\n }),\n name: new FieldState('').validators((value) => {\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldName.error',\n );\n }\n\n return undefined;\n }),\n key: new FieldState('').validators((value) => {\n const { t, mode } = this;\n\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldName.error',\n );\n }\n\n if (mode === 'new' && this.containsKey(value)) {\n return t('cairo.customFields.addCustomField.modal.sameKey.error');\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_]*$/g.test(value)) {\n return t('cairo.customFields.addCustomField.modal.keyFormat.error');\n }\n\n return undefined;\n }),\n readUsers: new FieldState(false),\n readApps: new FieldState(false),\n writeUsers: new FieldState(false),\n writeApps: new FieldState(false),\n containsPii: new FieldState(false),\n referencedCollectionId: new FieldState<string | undefined>(\n undefined,\n ).validators((value) => {\n const collectionInput = this.collectionInput;\n\n if (\n this.mode === 'new' &&\n collectionInput &&\n (collectionInput.required ?? true) &&\n !value\n ) {\n return (\n collectionInput.errorMessage ??\n collectionInput.label ??\n this.selectedFieldType?.label\n );\n }\n\n return undefined;\n }),\n });\n\n disabledFields = {\n permissions: {\n read: { apps: true, users: true },\n write: { apps: true, users: true },\n },\n };\n\n constructor(params: CustomFieldStateParams) {\n this.fieldManagement = params.fieldManagement;\n this.container = params.container;\n this.fieldCount = params.fieldCount;\n this.reportBi = params.reportBi;\n this.onSubmit = params.onSubmit;\n this.customFieldModalBiReporter = new CustomFieldModalBiReporter({\n customFieldModalState: this,\n });\n\n makeObservable(this, {\n selectedFieldType: computed,\n namePlaceholder: computed,\n typeSupportsPii: computed,\n collectionInput: computed,\n collectionOptionsLoader: computed,\n collectionInputLabel: computed,\n collectionInputPlaceholder: computed,\n collectionInputEmptyStateMessage: computed,\n collectionOptions: computed,\n collectionOptionsLoading: computed,\n collectionOptionsError: computed,\n showSettings: computed,\n settingsHasError: computed,\n isSubmitting: computed,\n disabledFields: observable.ref,\n errorToastConfig: observable.ref,\n mode: observable.ref,\n reset: action,\n resetSettingsValues: action,\n resetCollectionInput: action,\n setReferencedCollectionId: action.bound,\n loadCollectionOptions: action.bound,\n setFormValues: action,\n generateUniqueKey: action.bound,\n setKeyFieldIfNotDirty: action.bound,\n setDefaultPermissions: action,\n });\n }\n\n onConfirmError(e: unknown) {\n const { getResolvedError } = this.container.errorHandler;\n\n runInAction(() => {\n const resolvedError = getResolvedError?.(e);\n const httpError = isHttpError(e) ? e : undefined;\n\n if (\n isDetailsResponse(httpError?.response?.data) &&\n isErrorDetails(httpError?.response?.data.details) &&\n httpError?.response?.data?.details?.validationError?.fieldViolations?.some(\n (v) => v.ruleName === 'EXCEEDED_STORED_DATA_SIZE',\n )\n ) {\n this.errorToastConfig = {\n message: this.t('cairo.customFields.modal.maxFieldsError'),\n action: {\n text: this.t('cairo.error.contactSupport.cta'),\n onClick: () => {\n window.open('https://www.wix.com/contact', '_blank');\n },\n },\n };\n } else {\n this.errorToastConfig = {\n message: resolvedError?.message!,\n action: resolvedError?.action,\n details: resolvedError?.requestId\n ? {\n requestId: resolvedError.requestId,\n }\n : undefined,\n };\n }\n });\n\n this.customFieldModalBiReporter.reportSubmitFailure({\n errorType: this.errorToastConfig?.message,\n });\n\n // Prevents modal closing\n throw e;\n }\n reset() {\n const {\n form,\n settings,\n disabledFields: { permissions },\n } = this;\n\n form.reset();\n settings.setOff();\n this.resetSettingsValues();\n this.resetCollectionInput();\n this.errorToastConfig = undefined;\n this.disableAutoValidation();\n\n permissions.read.apps = false;\n permissions.read.users = false;\n permissions.write.apps = false;\n permissions.write.users = false;\n }\n\n /** Clears the settings sections back to their defaults. Goes over every type\n * option rather than the picked one: `reset()` runs after the form is\n * cleared, when no type is picked. */\n resetSettingsValues() {\n this.fieldManagement.fieldModal.types.forEach((type) =>\n type.settingsSection?.setValues(),\n );\n }\n\n enableAutoValidation() {\n const {\n form: {\n $: { key, name, type },\n },\n } = this;\n\n key.enableAutoValidation();\n name.enableAutoValidation();\n type.enableAutoValidation();\n this.form.$.referencedCollectionId.enableAutoValidation();\n }\n\n disableAutoValidation() {\n const {\n form: {\n $: { key, name, type },\n },\n } = this;\n\n key.disableAutoValidation();\n name.disableAutoValidation();\n type.disableAutoValidation();\n this.form.$.referencedCollectionId.disableAutoValidation();\n }\n\n getFormValues(): FieldDraft {\n const {\n form: {\n $: {\n type,\n key,\n name,\n readApps,\n readUsers,\n writeApps,\n writeUsers,\n containsPii,\n referencedCollectionId,\n },\n },\n } = this;\n const sectionSettings = this.settingsSection?.getValues(type.value);\n const collectionSettings =\n referencedCollectionId.value && this.collectionInput?.getSettings\n ? this.collectionInput.getSettings(referencedCollectionId.value)\n : undefined;\n\n return {\n type: type.value,\n key: key.value,\n name: name.value,\n referencedCollectionId: referencedCollectionId.value,\n readApps: readApps.value,\n readUsers: readUsers.value,\n writeApps: writeApps.value,\n writeUsers: writeUsers.value,\n containsPii: containsPii.value,\n settings: combineFieldSettings(sectionSettings, collectionSettings),\n };\n }\n\n setFormValues(\n form: FieldDraft,\n params?: { disablePermissionCheckboxes: boolean },\n ) {\n const {\n form: { $ },\n } = this;\n\n $.key.value = form.key;\n $.name.value = form.name;\n $.type.value = form.type;\n $.readApps.value = form.readApps;\n $.readUsers.value = form.readUsers;\n $.writeApps.value = form.writeApps;\n $.writeUsers.value = form.writeUsers;\n $.containsPii.value = form.containsPii;\n $.referencedCollectionId.value =\n form.referencedCollectionId ??\n (form.field ? this.collectionInput?.getValue?.(form.field) : undefined) ??\n (isReferenceField(form.field)\n ? form.field.referenceMetadata.referencedCollectionId\n : undefined);\n // After `$.type.value` above, so it lands on the picked type's section.\n this.settingsSection?.setValues(form.field);\n if (params?.disablePermissionCheckboxes) {\n if (form.readUsers) {\n this.disabledFields.permissions.read.users = true;\n }\n\n if (form.readApps) {\n this.disabledFields.permissions.read.apps = true;\n }\n\n if (form.writeUsers) {\n this.disabledFields.permissions.write.users = true;\n }\n\n if (form.writeApps) {\n this.disabledFields.permissions.write.apps = true;\n }\n }\n }\n\n setDefaultPermissions() {\n const {\n form: { $ },\n } = this;\n const permissions = this.fieldManagement.fieldModal.permissions;\n if (!permissions?.installedApps?.hide) {\n $.readApps.value = !!permissions?.installedApps?.defaultRead;\n $.writeApps.value = !!permissions?.installedApps?.defaultWrite;\n }\n\n if (!permissions?.siteVisitors?.hide) {\n $.readUsers.value = !!permissions?.siteVisitors?.defaultRead;\n $.writeUsers.value = !!permissions?.siteVisitors?.defaultWrite;\n }\n }\n\n setKeyFieldIfNotDirty = (value: string) => {\n const {\n form: {\n $: { key },\n },\n mode,\n } = this;\n\n if (mode === 'new' && !key.dirty) {\n // In the formstate library setting a field value using\n // the onChange API sets the dirty state of the field to true.\n // However, since here it's not a manual user input\n // we avoid changing the dirty state by setting a value directly.\n key.value = value;\n }\n };\n\n resetCollectionInput() {\n this.form.$.referencedCollectionId.value = undefined;\n this.form.$.referencedCollectionId.disableAutoValidation();\n this.collectionOptionsState.clearError();\n }\n\n setReferencedCollectionId(collectionId: string | undefined) {\n this.form.$.referencedCollectionId.onChange(collectionId);\n }\n\n async loadCollectionOptions() {\n await this.collectionOptionsState.load(this.collectionOptionsLoader);\n }\n\n private containsKey(key: string) {\n return this.fieldManagement.existingFieldKeys.includes(key);\n }\n\n generateUniqueKey(name: string) {\n const slug = slugify(name);\n const type = this.form.$.type.value;\n\n if (slug && slug.length >= 4 && !this.containsKey(slug)) {\n return slug;\n }\n\n if (!type) {\n return '';\n }\n\n let index = 1;\n\n while (this.containsKey(`${type}_${index}`)) {\n index += 1;\n }\n\n return `${type}_${index}`;\n }\n\n get t() {\n return this.container.translate;\n }\n\n get isSubmitting() {\n return this.modalState.modal.confirming.isLoading;\n }\n\n get selectedFieldType(): ResolvedFieldTypeOption | undefined {\n return this.fieldManagement.fieldModal.types.find(\n (option) => option.id === this.form.$.type.value,\n );\n }\n\n get collectionInput(): FieldModalCollectionInput | undefined {\n if (!this.selectedFieldType) {\n return undefined;\n }\n\n const explicitInput = this.selectedFieldType.collectionInput;\n const autoWired =\n isReferenceFieldType(this.selectedFieldType.patternsType) &&\n this.fieldManagement.fieldModal.loadReferenceableCollectionOptions;\n\n if (!explicitInput && !autoWired) {\n return undefined;\n }\n\n return explicitInput ?? {};\n }\n\n get collectionOptionsLoader(): FieldModalCollectionOptionsLoader | undefined {\n const collectionInput = this.collectionInput;\n\n if (!collectionInput || !this.selectedFieldType) {\n return undefined;\n }\n\n return (\n collectionInput.loadOptions ??\n (isReferenceFieldType(this.selectedFieldType.patternsType)\n ? this.fieldManagement.fieldModal.loadReferenceableCollectionOptions\n : undefined)\n );\n }\n\n get collectionInputLabel() {\n return this.collectionInput?.label ?? this.selectedFieldType?.label ?? '';\n }\n\n get collectionInputPlaceholder() {\n return this.collectionInput?.placeholder ?? this.collectionInputLabel;\n }\n\n get collectionInputEmptyStateMessage() {\n return (\n this.collectionInput?.emptyStateMessage ??\n this.t('cairo.emptyState.subtitle.nothingMatchesCriteria')\n );\n }\n\n get collectionOptions(): FieldModalCollectionOption[] {\n return this.collectionOptionsState.options;\n }\n\n get collectionOptionsLoading() {\n return this.collectionOptionsState.loading;\n }\n\n get collectionOptionsError() {\n return this.collectionOptionsState.error;\n }\n\n get namePlaceholder() {\n return (\n this.selectedFieldType?.namePlaceholder ??\n this.selectedFieldType?.label ??\n this.t('cairo.customFields.addCustomField.modal.fieldName.placeholder')\n );\n }\n\n /** Whether the PII toggle shows: the picked type decides, and a type with no\n * opinion follows the source. Checked on the raw value, not on\n * `selectedFieldType` — editing a field whose type the source can't create\n * finds no option, and the toggle still belongs there. */\n get typeSupportsPii() {\n if (this.form.$.type.value == null) {\n return false;\n }\n return (\n this.selectedFieldType?.supportsPii ??\n this.fieldManagement.fieldModal.supportsPii ??\n false\n );\n }\n\n /** The picked type's settings section. Editing a field of a type the source\n * can't create finds no entry for it, so it falls back to the first section\n * the source declares — that field still has settings to show. */\n get settingsSection() {\n if (!this.form.$.type.value) {\n return undefined;\n }\n return (\n this.selectedFieldType?.settingsSection ??\n this.fieldManagement.fieldModal.types.find((t) => t.settingsSection)\n ?.settingsSection\n );\n }\n\n /** Not a computed: the warning may read data the source loaded outside MobX,\n * so it's called afresh on every render. Same fallback as `settingsSection`. */\n get piiWarning() {\n const warning =\n this.selectedFieldType?.piiWarning ??\n this.fieldManagement.fieldModal.types.find((t) => t.piiWarning)\n ?.piiWarning;\n return warning?.();\n }\n\n get showSettings() {\n return (\n Boolean(this.fieldManagement.fieldModal.permissions) ||\n Boolean(this.settingsSection)\n );\n }\n\n get settingsHasError() {\n return Boolean(this.settingsSection?.hasError(this.form.$.type.value));\n }\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst combineFieldSettings = (\n sectionSettings: FieldSettings | undefined,\n collectionSettings: FieldSettings | undefined,\n): FieldSettings | undefined => {\n if (sectionSettings === undefined) {\n return collectionSettings;\n }\n\n if (collectionSettings === undefined) {\n return sectionSettings;\n }\n\n if (isRecord(sectionSettings) && isRecord(collectionSettings)) {\n return { ...sectionSettings, ...collectionSettings };\n }\n\n return collectionSettings;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -43,7 +43,8 @@ function createInMemorySchemaSource(config) {
43
43
  fieldModal,
44
44
  fieldTypes,
45
45
  supportsPii = false,
46
- references
46
+ references,
47
+ getReferencedCollectionSource
47
48
  } = config;
48
49
 
49
50
  // Mutable in-memory state shared by the backend, schema, and field actions.
@@ -185,6 +186,9 @@ function createInMemorySchemaSource(config) {
185
186
  supportsPii,
186
187
  ...(references && {
187
188
  references
189
+ }),
190
+ ...(getReferencedCollectionSource && {
191
+ getReferencedCollectionSource
188
192
  })
189
193
  });
190
194
  return {
@@ -1 +1 @@
1
- {"version":3,"names":["_SchemaSource","require","_InMemoryBackend","ALL_PERMISSIONS","createField","updateField","deleteField","DEFAULT_FIELD_TYPE_OPTIONS","patternsType","createInMemorySchemaSource","config","_config$fields$","collectionId","idField","displayField","fields","id","schemaPermissions","itemPermissions","fieldModal","fieldTypes","supportsPii","references","forEach","field","schema","keyOf","item","String","fieldsSnapshot","seed","items","backend","InMemoryBackend","paginationMode","total","length","createOne","index","itemKey","collectionBackend","find","query","offset","fetchDataSync","hasNext","get","entityId","Error","create","entity","created","map","set","update","delete","bulkDelete","entityIds","bulkInsert","entities","succeeded","failed","fieldActions","addField","addFields","newFields","editField","fieldId","updates","current","Reflect","deleteProperty","renameField","newName","displayName","makePrimary","loadSchema","source","defineSchemaSource","types"],"sources":["../../../src/testkit/createInMemorySchemaSource.ts"],"sourcesContent":["import {\n defineSchemaSource,\n type FieldModalInput,\n type FieldTypeOption,\n type SchemaSource,\n} from '../types/SchemaSource';\nimport type {\n CollectionBackend,\n FieldActions,\n ItemPermissions,\n LoadedSchema,\n Schema,\n SchemaPermissions,\n} from '../types/Schema';\nimport type { Field } from '../types/Field';\nimport type { FieldTypeDefinition } from '../types/FieldTypeDefinition';\nimport type { OffsetQuery } from '../hooks/paginationModeConfig';\nimport { InMemoryBackend } from '../InMemoryBackend';\n\nconst ALL_PERMISSIONS: SchemaPermissions = {\n createField: true,\n updateField: true,\n deleteField: true,\n};\n\n// The types the add/edit modal offers by default (the ones @wix/data can create).\nconst DEFAULT_FIELD_TYPE_OPTIONS: FieldTypeOption[] = [\n { patternsType: 'SHORT_TEXT' },\n { patternsType: 'NUMBER' },\n { patternsType: 'BOOLEAN' },\n { patternsType: 'DATE' },\n];\n\nexport interface InMemorySchemaSource<T> {\n /** The source to pass anywhere a schema source is accepted. */\n source: SchemaSource<T>;\n /** The in-memory backend holding the rows — read or mutate them directly. */\n backend: InMemoryBackend<T>;\n}\n\nexport interface InMemorySchemaSourceConfig<T> {\n collectionId: string;\n /** The collection's fields (keyed internally by `field.id`). */\n fields: Field[];\n /** Seed rows the backend serves via `find`/`get`. */\n items?: T[];\n /** Defaults to the first field's id, else `idField`. */\n displayField?: string;\n /** Defaults to `_id`. */\n idField?: string;\n /** Defaults to all-true (add/edit/delete allowed). */\n schemaPermissions?: SchemaPermissions;\n itemPermissions?: ItemPermissions;\n /** What the add/edit field modal shows. `types` defaults to\n * text/number/boolean/date. */\n fieldModal?: FieldModalInput;\n /** Consumer-defined field types, resolved by fields with `type: 'CUSTOM'`. */\n fieldTypes?: FieldTypeDefinition[];\n supportsPii?: boolean;\n /** Sources for referenced collections, keyed by referenced collection id. */\n references?: Record<string, SchemaSource<any>>;\n}\n\n/**\n * Builds a real `SchemaSource<T>` backed by in-memory state — no data source (no\n * `@wix/data`, no network). Its backend `find` serves the seeded `items`, and\n * its `fieldActions` mutate the in-memory schema and return the updated fields\n * map, so the create-new-field import flow works end to end (the created column\n * surfaces via the schema-source merge).\n *\n * Returns `{ source, backend }`. Pass `source` anywhere a `SchemaSource` is\n * accepted — a `@wix/patterns/schema` collection hook, or `<Table\n * fieldsSource={...} />` (which the import reads from). Use `backend` to read or\n * assert on the in-memory rows directly.\n */\nexport function createInMemorySchemaSource<\n T extends Record<string, unknown> = Record<string, unknown>,\n>(config: InMemorySchemaSourceConfig<T>): InMemorySchemaSource<T> {\n const {\n collectionId,\n idField = '_id',\n displayField = config.fields[0]?.id ?? idField,\n schemaPermissions = ALL_PERMISSIONS,\n itemPermissions,\n fieldModal,\n fieldTypes,\n supportsPii = false,\n references,\n } = config;\n\n // Mutable in-memory state shared by the backend, schema, and field actions.\n const fields: Schema['fields'] = {};\n config.fields.forEach((field) => {\n fields[field.id] = field;\n });\n\n const schema: Schema = {\n id: collectionId,\n fields,\n displayField,\n idField,\n schemaPermissions,\n ...(itemPermissions && { itemPermissions }),\n };\n\n const keyOf = (item: T): string =>\n String((item as Record<string, unknown>)[idField] ?? '');\n // A fresh copy each mutation, so the schema-source merge sees a new map.\n const fieldsSnapshot = (): Schema['fields'] => ({ ...fields });\n\n // The shared `InMemoryBackend` holds the rows and runs the query logic\n // (ordering, filtering, pagination). The `collectionBackend` below adapts it\n // to the source-neutral contract. Mutations write straight to `backend.map`\n // and reads use the synchronous surface, so operations resolve without the\n // util's simulated async delay (which relies on timers the test suite freezes).\n const seed = config.items ?? [];\n const backend = new InMemoryBackend<T>({\n paginationMode: 'offset',\n total: seed.length,\n createOne: (index) => seed[index],\n itemKey: keyOf,\n });\n\n const collectionBackend: CollectionBackend<T> = {\n paginationMode: 'offset',\n find: async (query: OffsetQuery) => {\n const offset = query.offset ?? 0;\n const { items, total = 0 } = backend.fetchDataSync(query);\n return { items, total, hasNext: offset + items.length < total };\n },\n get: async (entityId) => {\n const item = backend.get(entityId);\n if (!item) {\n throw new Error(`Item \"${entityId}\" not found`);\n }\n return item;\n },\n create: async (entity) => {\n const created = { ...entity } as T;\n backend.map.set(keyOf(created), created);\n return created;\n },\n update: async (entity) => {\n backend.map.set(keyOf(entity), entity);\n return entity;\n },\n delete: async (entityId) => {\n backend.map.delete(entityId);\n },\n bulkDelete: async (entityIds) => {\n entityIds.forEach((entityId) => backend.map.delete(entityId));\n },\n bulkInsert: async (entities) => {\n entities.forEach((entity) => {\n const created = { ...entity } as T;\n backend.map.set(keyOf(created), created);\n });\n return { succeeded: entities.length, failed: 0 };\n },\n };\n\n const fieldActions: FieldActions = {\n addField: async (field) => {\n fields[field.id] = field;\n return fieldsSnapshot();\n },\n addFields: async (newFields) => {\n newFields.forEach((field) => {\n fields[field.id] = field;\n });\n return fieldsSnapshot();\n },\n editField: async (fieldId, updates) => {\n const current = fields[fieldId];\n if (current) {\n fields[fieldId] = { ...current, ...updates } as Field;\n }\n return fieldsSnapshot();\n },\n deleteField: async (fieldId) => {\n Reflect.deleteProperty(fields, fieldId);\n return fieldsSnapshot();\n },\n renameField: async (fieldId, newName) => {\n const current = fields[fieldId];\n if (current) {\n fields[fieldId] = { ...current, displayName: newName } as Field;\n }\n },\n makePrimary: async (fieldId) => {\n schema.displayField = fieldId;\n return fieldsSnapshot();\n },\n };\n\n const loadSchema = async (): Promise<LoadedSchema<T>> => ({\n schema,\n backend: collectionBackend,\n fieldActions,\n });\n\n const source = defineSchemaSource<T>({\n collectionId,\n loadSchema,\n fieldModal: {\n ...fieldModal,\n types: fieldModal?.types ?? DEFAULT_FIELD_TYPE_OPTIONS,\n },\n fieldTypes,\n supportsPii,\n ...(references && { references }),\n });\n\n return { source, backend };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_SchemaSource","require","_InMemoryBackend","ALL_PERMISSIONS","createField","updateField","deleteField","DEFAULT_FIELD_TYPE_OPTIONS","patternsType","createInMemorySchemaSource","config","_config$fields$","collectionId","idField","displayField","fields","id","schemaPermissions","itemPermissions","fieldModal","fieldTypes","supportsPii","references","getReferencedCollectionSource","forEach","field","schema","keyOf","item","String","fieldsSnapshot","seed","items","backend","InMemoryBackend","paginationMode","total","length","createOne","index","itemKey","collectionBackend","find","query","offset","fetchDataSync","hasNext","get","entityId","Error","create","entity","created","map","set","update","delete","bulkDelete","entityIds","bulkInsert","entities","succeeded","failed","fieldActions","addField","addFields","newFields","editField","fieldId","updates","current","Reflect","deleteProperty","renameField","newName","displayName","makePrimary","loadSchema","source","defineSchemaSource","types"],"sources":["../../../src/testkit/createInMemorySchemaSource.ts"],"sourcesContent":["import {\n defineSchemaSource,\n type FieldModalInput,\n type FieldTypeOption,\n type SchemaSource,\n} from '../types/SchemaSource';\nimport type {\n CollectionBackend,\n FieldActions,\n ItemPermissions,\n LoadedSchema,\n Schema,\n SchemaPermissions,\n} from '../types/Schema';\nimport type { Field } from '../types/Field';\nimport type { FieldTypeDefinition } from '../types/FieldTypeDefinition';\nimport type { OffsetQuery } from '../hooks/paginationModeConfig';\nimport { InMemoryBackend } from '../InMemoryBackend';\n\nconst ALL_PERMISSIONS: SchemaPermissions = {\n createField: true,\n updateField: true,\n deleteField: true,\n};\n\n// The types the add/edit modal offers by default (the ones @wix/data can create).\nconst DEFAULT_FIELD_TYPE_OPTIONS: FieldTypeOption[] = [\n { patternsType: 'SHORT_TEXT' },\n { patternsType: 'NUMBER' },\n { patternsType: 'BOOLEAN' },\n { patternsType: 'DATE' },\n];\n\nexport interface InMemorySchemaSource<T> {\n /** The source to pass anywhere a schema source is accepted. */\n source: SchemaSource<T>;\n /** The in-memory backend holding the rows — read or mutate them directly. */\n backend: InMemoryBackend<T>;\n}\n\nexport interface InMemorySchemaSourceConfig<T> {\n collectionId: string;\n /** The collection's fields (keyed internally by `field.id`). */\n fields: Field[];\n /** Seed rows the backend serves via `find`/`get`. */\n items?: T[];\n /** Defaults to the first field's id, else `idField`. */\n displayField?: string;\n /** Defaults to `_id`. */\n idField?: string;\n /** Defaults to all-true (add/edit/delete allowed). */\n schemaPermissions?: SchemaPermissions;\n itemPermissions?: ItemPermissions;\n /** What the add/edit field modal shows. `types` defaults to\n * text/number/boolean/date. */\n fieldModal?: FieldModalInput;\n /** Consumer-defined field types, resolved by fields with `type: 'CUSTOM'`. */\n fieldTypes?: FieldTypeDefinition[];\n supportsPii?: boolean;\n /** Sources for referenced collections, keyed by referenced collection id. */\n references?: Record<string, SchemaSource<any>>;\n getReferencedCollectionSource?: (\n collectionId: string,\n ) => SchemaSource<any> | undefined;\n}\n\n/**\n * Builds a real `SchemaSource<T>` backed by in-memory state — no data source (no\n * `@wix/data`, no network). Its backend `find` serves the seeded `items`, and\n * its `fieldActions` mutate the in-memory schema and return the updated fields\n * map, so the create-new-field import flow works end to end (the created column\n * surfaces via the schema-source merge).\n *\n * Returns `{ source, backend }`. Pass `source` anywhere a `SchemaSource` is\n * accepted — a `@wix/patterns/schema` collection hook, or `<Table\n * fieldsSource={...} />` (which the import reads from). Use `backend` to read or\n * assert on the in-memory rows directly.\n */\nexport function createInMemorySchemaSource<\n T extends Record<string, unknown> = Record<string, unknown>,\n>(config: InMemorySchemaSourceConfig<T>): InMemorySchemaSource<T> {\n const {\n collectionId,\n idField = '_id',\n displayField = config.fields[0]?.id ?? idField,\n schemaPermissions = ALL_PERMISSIONS,\n itemPermissions,\n fieldModal,\n fieldTypes,\n supportsPii = false,\n references,\n getReferencedCollectionSource,\n } = config;\n\n // Mutable in-memory state shared by the backend, schema, and field actions.\n const fields: Schema['fields'] = {};\n config.fields.forEach((field) => {\n fields[field.id] = field;\n });\n\n const schema: Schema = {\n id: collectionId,\n fields,\n displayField,\n idField,\n schemaPermissions,\n ...(itemPermissions && { itemPermissions }),\n };\n\n const keyOf = (item: T): string =>\n String((item as Record<string, unknown>)[idField] ?? '');\n // A fresh copy each mutation, so the schema-source merge sees a new map.\n const fieldsSnapshot = (): Schema['fields'] => ({ ...fields });\n\n // The shared `InMemoryBackend` holds the rows and runs the query logic\n // (ordering, filtering, pagination). The `collectionBackend` below adapts it\n // to the source-neutral contract. Mutations write straight to `backend.map`\n // and reads use the synchronous surface, so operations resolve without the\n // util's simulated async delay (which relies on timers the test suite freezes).\n const seed = config.items ?? [];\n const backend = new InMemoryBackend<T>({\n paginationMode: 'offset',\n total: seed.length,\n createOne: (index) => seed[index],\n itemKey: keyOf,\n });\n\n const collectionBackend: CollectionBackend<T> = {\n paginationMode: 'offset',\n find: async (query: OffsetQuery) => {\n const offset = query.offset ?? 0;\n const { items, total = 0 } = backend.fetchDataSync(query);\n return { items, total, hasNext: offset + items.length < total };\n },\n get: async (entityId) => {\n const item = backend.get(entityId);\n if (!item) {\n throw new Error(`Item \"${entityId}\" not found`);\n }\n return item;\n },\n create: async (entity) => {\n const created = { ...entity } as T;\n backend.map.set(keyOf(created), created);\n return created;\n },\n update: async (entity) => {\n backend.map.set(keyOf(entity), entity);\n return entity;\n },\n delete: async (entityId) => {\n backend.map.delete(entityId);\n },\n bulkDelete: async (entityIds) => {\n entityIds.forEach((entityId) => backend.map.delete(entityId));\n },\n bulkInsert: async (entities) => {\n entities.forEach((entity) => {\n const created = { ...entity } as T;\n backend.map.set(keyOf(created), created);\n });\n return { succeeded: entities.length, failed: 0 };\n },\n };\n\n const fieldActions: FieldActions = {\n addField: async (field) => {\n fields[field.id] = field;\n return fieldsSnapshot();\n },\n addFields: async (newFields) => {\n newFields.forEach((field) => {\n fields[field.id] = field;\n });\n return fieldsSnapshot();\n },\n editField: async (fieldId, updates) => {\n const current = fields[fieldId];\n if (current) {\n fields[fieldId] = { ...current, ...updates } as Field;\n }\n return fieldsSnapshot();\n },\n deleteField: async (fieldId) => {\n Reflect.deleteProperty(fields, fieldId);\n return fieldsSnapshot();\n },\n renameField: async (fieldId, newName) => {\n const current = fields[fieldId];\n if (current) {\n fields[fieldId] = { ...current, displayName: newName } as Field;\n }\n },\n makePrimary: async (fieldId) => {\n schema.displayField = fieldId;\n return fieldsSnapshot();\n },\n };\n\n const loadSchema = async (): Promise<LoadedSchema<T>> => ({\n schema,\n backend: collectionBackend,\n fieldActions,\n });\n\n const source = defineSchemaSource<T>({\n collectionId,\n loadSchema,\n fieldModal: {\n ...fieldModal,\n types: fieldModal?.types ?? DEFAULT_FIELD_TYPE_OPTIONS,\n },\n fieldTypes,\n supportsPii,\n ...(references && { references }),\n ...(getReferencedCollectionSource && { getReferencedCollectionSource }),\n });\n\n return { source, backend };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -57,8 +57,9 @@ function isFilterTypeConfig(filter) {
57
57
  * Props the entity-page form dispatcher passes to a field type's form
58
58
  * component. The dispatcher owns the form wiring (registration, validation
59
59
  * from the definition's `value.validate`) and the field UI (label, required
60
- * marker, error message) the component renders only the input: read
61
- * `value`, report edits through `onChange`.
60
+ * marker, error message); the component renders the input: read `value`,
61
+ * report edits through `onChange`, and hand back the focusable control
62
+ * through `inputRef` so a blocked save can reach it.
62
63
  */
63
64
 
64
65
  /** The entity-page form slot of a field type definition. */