@webiny/app-headless-cms 5.22.0-beta.3 → 5.23.0-beta.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 (34) hide show
  1. package/admin/components/ContentEntryForm/functions/createValidators.js +1 -1
  2. package/admin/components/ContentEntryForm/useContentEntryForm.d.ts +1 -0
  3. package/admin/components/ContentEntryForm/useContentEntryForm.js +2 -2
  4. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js +1 -1
  5. package/admin/components/FieldEditor/FieldEditorContext.js +3 -0
  6. package/admin/components/FieldEditor/utils/deleteField.js +1 -1
  7. package/admin/plugins/fieldRenderers/dateTime/Time.js +37 -8
  8. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js +38 -3
  9. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js +39 -2
  10. package/admin/plugins/fieldRenderers/ref/components/MissingEntryHelpText.d.ts +1 -0
  11. package/admin/plugins/fieldRenderers/ref/components/MissingEntryHelpText.js +8 -2
  12. package/admin/plugins/fieldRenderers/ref/components/NewRefEntryFormDialog.js +12 -3
  13. package/admin/plugins/fieldRenderers/ref/components/useReference.js +7 -1
  14. package/admin/plugins/fieldRenderers/ref/components/useReferences.js +7 -1
  15. package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntry.d.ts +2 -1
  16. package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntry.js +30 -4
  17. package/admin/plugins/fieldRenderers/ref/refInput.js +3 -2
  18. package/admin/plugins/fieldRenderers/ref/refInputs.js +3 -2
  19. package/admin/plugins/fields/richText.js +0 -1
  20. package/admin/plugins/transformers/dateTransformer.js +6 -4
  21. package/admin/plugins/validators/dateGte.js +42 -11
  22. package/admin/plugins/validators/dateLte.js +42 -11
  23. package/admin/plugins/validators/gte.js +33 -5
  24. package/admin/plugins/validators/in.js +33 -5
  25. package/admin/plugins/validators/lte.js +33 -5
  26. package/admin/plugins/validators/maxLength.js +33 -5
  27. package/admin/plugins/validators/minLength.js +33 -5
  28. package/admin/plugins/validators/pattern.d.ts +1 -1
  29. package/admin/plugins/validators/pattern.js +49 -20
  30. package/admin/plugins/validators/timeGte.js +32 -6
  31. package/admin/plugins/validators/timeLte.js +32 -6
  32. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.d.ts +3 -3
  33. package/admin/views/contentEntries/ContentEntry.js +2 -1
  34. package/package.json +19 -19
@@ -9,7 +9,7 @@ export var createValidators = function createValidators(validation) {
9
9
  });
10
10
 
11
11
  if (!validatorPlugin || typeof validatorPlugin.validator.validate !== "function") {
12
- return;
12
+ return null;
13
13
  }
14
14
 
15
15
  return /*#__PURE__*/function () {
@@ -17,6 +17,7 @@ export interface UseContentEntryFormParams {
17
17
  };
18
18
  onChange?: FormOnSubmit;
19
19
  onSubmit?: FormOnSubmit;
20
+ addEntryToListCache: boolean;
20
21
  }
21
22
  export declare function useContentEntryForm(params: UseContentEntryFormParams): UseContentEntryForm;
22
23
  export {};
@@ -129,7 +129,7 @@ export function useContentEntryForm(params) {
129
129
 
130
130
  resetInvalidFieldValues();
131
131
 
132
- if (typeof params.onSubmit !== "function") {
132
+ if (params.addEntryToListCache) {
133
133
  GQLCache.addEntryToListCache(contentModel, cache, entry, listQueryVariables);
134
134
  }
135
135
  }
@@ -172,7 +172,7 @@ export function useContentEntryForm(params) {
172
172
  return function (_x) {
173
173
  return _ref.apply(this, arguments);
174
174
  };
175
- }(), [contentModel.modelId, listQueryVariables]);
175
+ }(), [contentModel.modelId, listQueryVariables, params.onSubmit, params.addEntryToListCache]);
176
176
  var updateContent = useCallback( /*#__PURE__*/function () {
177
177
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(revision, data) {
178
178
  var response, error, entry;
@@ -52,7 +52,7 @@ var GeneralTab = function GeneralTab(_ref) {
52
52
  });
53
53
 
54
54
  if (!existingField) {
55
- return;
55
+ return false;
56
56
  }
57
57
 
58
58
  if (existingField.id === field.id) {
@@ -104,6 +104,7 @@ export var FieldEditorProvider = function FieldEditorProvider(_ref) {
104
104
  dropTarget: dropTarget
105
105
  });
106
106
  });
107
+ return null;
107
108
  }, []);
108
109
 
109
110
  var onEndDrag = function onEndDrag(_ref2, monitor) {
@@ -257,6 +258,8 @@ export var FieldEditorProvider = function FieldEditorProvider(_ref) {
257
258
  return dot.set(data, "fields.".concat(i), field);
258
259
  }
259
260
  }
261
+
262
+ return data;
260
263
  });
261
264
  };
262
265
  /**
@@ -18,7 +18,7 @@ export default (function (_ref) {
18
18
  });
19
19
 
20
20
  if (!field) {
21
- return true;
21
+ return;
22
22
  }
23
23
 
24
24
  if (!Array.isArray(newLayout[currentRowIndex])) {
@@ -1,4 +1,6 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
1
2
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
3
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
2
4
  import React, { useEffect } from "react";
3
5
  import { Input } from "./Input";
4
6
  import { getCurrentLocalTime, getDefaultFieldValue } from "./utils";
@@ -19,17 +21,44 @@ export var Time = function Time(props) {
19
21
  return /*#__PURE__*/React.createElement(Input, Object.assign({}, props, {
20
22
  bind: _objectSpread(_objectSpread({}, bind), {}, {
21
23
  value: time,
22
- onChange: function onChange(value) {
23
- if (!value) {
24
- if (bind.value) {
25
- return;
26
- }
24
+ onChange: function () {
25
+ var _onChange = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(value) {
26
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
27
+ while (1) {
28
+ switch (_context.prev = _context.next) {
29
+ case 0:
30
+ if (value) {
31
+ _context.next = 4;
32
+ break;
33
+ }
27
34
 
28
- return bind.onChange("");
35
+ if (!bind.value) {
36
+ _context.next = 3;
37
+ break;
38
+ }
39
+
40
+ return _context.abrupt("return");
41
+
42
+ case 3:
43
+ return _context.abrupt("return", bind.onChange(""));
44
+
45
+ case 4:
46
+ return _context.abrupt("return", bind.onChange(value));
47
+
48
+ case 5:
49
+ case "end":
50
+ return _context.stop();
51
+ }
52
+ }
53
+ }, _callee);
54
+ }));
55
+
56
+ function onChange(_x) {
57
+ return _onChange.apply(this, arguments);
29
58
  }
30
59
 
31
- return bind.onChange(value);
32
- }
60
+ return onChange;
61
+ }()
33
62
  }),
34
63
  type: "time",
35
64
  step: 5
@@ -7,9 +7,11 @@ import debounce from "lodash/debounce";
7
7
  import { AutoComplete } from "@webiny/ui/AutoComplete";
8
8
  import { i18n } from "@webiny/app/i18n";
9
9
  import { Link } from "@webiny/react-router";
10
+ import { useNewRefEntry } from "../hooks/useNewRefEntry";
10
11
  import { useReference } from "./useReference";
11
12
  import { renderItem } from "./renderItem";
12
13
  import { createEntryUrl } from "./createEntryUrl";
14
+ import NewRefEntryFormDialog, { NewEntryButton } from "./NewRefEntryFormDialog";
13
15
  var t = i18n.ns("app-headless-cms/admin/fields/ref");
14
16
  var unpublishedLabel = t(_templateObject || (_templateObject = _taggedTemplateLiteral(["Selected content entry is not published. Make sure to {publishItLink} before publishing the main content entry."])));
15
17
  var publishedLabel = t(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["Selected content entry is published. You can view it {here}."])));
@@ -26,7 +28,7 @@ function ContentEntriesAutocomplete(_ref) {
26
28
  setSearch = _useReference.setSearch,
27
29
  value = _useReference.value,
28
30
  loading = _useReference.loading,
29
- onChange = _useReference.onChange;
31
+ _onChange = _useReference.onChange;
30
32
 
31
33
  var entryInfo = null;
32
34
 
@@ -47,9 +49,41 @@ function ContentEntriesAutocomplete(_ref) {
47
49
  });
48
50
  }
49
51
 
52
+ var _useNewRefEntry = useNewRefEntry({
53
+ field: field
54
+ }),
55
+ renderNewEntryModal = _useNewRefEntry.renderNewEntryModal,
56
+ refModelId = _useNewRefEntry.refModelId,
57
+ helpText = _useNewRefEntry.helpText;
58
+ /*
59
+ * Wrap AutoComplete input in NewRefEntry modal.
60
+ */
61
+
62
+
63
+ if (renderNewEntryModal) {
64
+ return /*#__PURE__*/React.createElement(NewRefEntryFormDialog, {
65
+ modelId: refModelId,
66
+ onChange: function onChange(entry) {
67
+ return _onChange(entry, entry);
68
+ }
69
+ }, /*#__PURE__*/React.createElement(AutoComplete, Object.assign({}, bind, {
70
+ renderItem: renderItem,
71
+ onChange: _onChange,
72
+ loading: loading,
73
+ value: value ? value.id : null,
74
+ options: options,
75
+ label: field.label,
76
+ description: /*#__PURE__*/React.createElement(React.Fragment, null, field.helpText, entryInfo),
77
+ onInput: debounce(function (search) {
78
+ return setSearch(search);
79
+ }, 250),
80
+ noResultFound: /*#__PURE__*/React.createElement(NewEntryButton, null)
81
+ })));
82
+ }
83
+
50
84
  return /*#__PURE__*/React.createElement(AutoComplete, Object.assign({}, bind, {
51
85
  renderItem: renderItem,
52
- onChange: onChange,
86
+ onChange: _onChange,
53
87
  loading: loading,
54
88
  value: value ? value.id : null,
55
89
  options: options,
@@ -57,7 +91,8 @@ function ContentEntriesAutocomplete(_ref) {
57
91
  description: /*#__PURE__*/React.createElement(React.Fragment, null, field.helpText, entryInfo),
58
92
  onInput: debounce(function (search) {
59
93
  return setSearch(search);
60
- }, 250)
94
+ }, 250),
95
+ noResultFound: helpText
61
96
  }));
62
97
  }
63
98
 
@@ -1,14 +1,17 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
1
2
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
3
 
3
4
  var _templateObject;
4
5
 
5
- import React from "react";
6
+ import React, { useCallback } from "react";
6
7
  import debounce from "lodash/debounce";
7
8
  import { MultiAutoComplete } from "@webiny/ui/AutoComplete";
8
9
  import { Link } from "@webiny/react-router";
9
10
  import { i18n } from "@webiny/app/i18n";
10
11
  import { useReferences } from "./useReferences";
11
12
  import { renderItem } from "./renderItem";
13
+ import NewRefEntryFormDialog, { NewEntryButton } from "./NewRefEntryFormDialog";
14
+ import { useNewRefEntry } from "../hooks/useNewRefEntry";
12
15
  var t = i18n.ns("app-headless-cms/admin/fields/ref");
13
16
  var warn = t(_templateObject || (_templateObject = _taggedTemplateLiteral(["Before publishing the main content entry, make sure you publish the following referenced entries: {entries}"])));
14
17
 
@@ -26,6 +29,13 @@ function ContentEntriesMultiAutocomplete(_ref) {
26
29
  loading = _useReferences.loading,
27
30
  onChange = _useReferences.onChange;
28
31
 
32
+ var _useNewRefEntry = useNewRefEntry({
33
+ field: field
34
+ }),
35
+ renderNewEntryModal = _useNewRefEntry.renderNewEntryModal,
36
+ refModelId = _useNewRefEntry.refModelId,
37
+ helpText = _useNewRefEntry.helpText;
38
+
29
39
  var entryWarning = function entryWarning(_ref2, index) {
30
40
  var id = _ref2.id,
31
41
  modelId = _ref2.modelId,
@@ -48,6 +58,32 @@ function ContentEntriesMultiAutocomplete(_ref) {
48
58
  });
49
59
  }
50
60
 
61
+ var refEntryOnChange = useCallback(function (value) {
62
+ /**
63
+ * Append new selected entry at the end of existing entries.
64
+ */
65
+ onChange([].concat(_toConsumableArray(entries), [value]));
66
+ }, [onChange, entries]);
67
+
68
+ if (renderNewEntryModal) {
69
+ return /*#__PURE__*/React.createElement(NewRefEntryFormDialog, {
70
+ modelId: refModelId,
71
+ onChange: refEntryOnChange
72
+ }, /*#__PURE__*/React.createElement(MultiAutoComplete, Object.assign({}, bind, {
73
+ renderItem: renderItem,
74
+ renderListItemLabel: renderItem,
75
+ useMultipleSelectionList: true,
76
+ onChange: onChange,
77
+ loading: loading,
78
+ value: entries,
79
+ options: options,
80
+ label: field.label,
81
+ onInput: debounce(setSearch, 250),
82
+ description: /*#__PURE__*/React.createElement(React.Fragment, null, field.helpText, warning),
83
+ noResultFound: /*#__PURE__*/React.createElement(NewEntryButton, null)
84
+ })));
85
+ }
86
+
51
87
  return /*#__PURE__*/React.createElement(MultiAutoComplete, Object.assign({}, bind, {
52
88
  renderItem: renderItem,
53
89
  renderListItemLabel: renderItem,
@@ -58,7 +94,8 @@ function ContentEntriesMultiAutocomplete(_ref) {
58
94
  options: options,
59
95
  label: field.label,
60
96
  onInput: debounce(setSearch, 250),
61
- description: /*#__PURE__*/React.createElement(React.Fragment, null, field.helpText, warning)
97
+ description: /*#__PURE__*/React.createElement(React.Fragment, null, field.helpText, warning),
98
+ noResultFound: helpText
62
99
  }));
63
100
  }
64
101
 
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ export declare const ReferenceMultipleModelsHelpText: () => JSX.Element;
2
3
  declare const MissingEntryHelpText: React.FC<{
3
4
  refModelId: string;
4
5
  }>;
@@ -1,6 +1,6 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
2
 
3
- var _templateObject, _templateObject2;
3
+ var _templateObject, _templateObject2, _templateObject3;
4
4
 
5
5
  import React from "react";
6
6
  import styled from "@emotion/styled";
@@ -10,10 +10,16 @@ import { createNewEntryUrl } from "./createEntryUrl";
10
10
  import { i18n } from "@webiny/app/i18n";
11
11
  var t = i18n.ns("app-headless-cms/admin/fields/ref");
12
12
  var missingEntryLabel = t(_templateObject || (_templateObject = _taggedTemplateLiteral(["If you can't find the intended reference value in the target model,\n please close this dialog and populate the {newEntryLink} in the target model first."])));
13
+ var referenceMultipleModelsLabel = t(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["The creation of reference values from within this view is only supported\n when a single reference model is selected. To reference values from multiple models,\n please make sure the referenced values exist before setting the reference."])));
13
14
  var HelpTextTypography = /*#__PURE__*/styled(Typography, {
14
15
  label: "HelpTextTypography",
15
16
  target: "ex67440"
16
17
  })("&{display:inline-block;color:var(--mdc-theme-text-secondary-on-background) !important;}");
18
+ export var ReferenceMultipleModelsHelpText = function ReferenceMultipleModelsHelpText() {
19
+ return /*#__PURE__*/React.createElement(HelpTextTypography, {
20
+ use: "caption"
21
+ }, referenceMultipleModelsLabel);
22
+ };
17
23
 
18
24
  var MissingEntryHelpText = function MissingEntryHelpText(_ref) {
19
25
  var refModelId = _ref.refModelId;
@@ -23,7 +29,7 @@ var MissingEntryHelpText = function MissingEntryHelpText(_ref) {
23
29
  newEntryLink: /*#__PURE__*/React.createElement(Link, {
24
30
  to: createNewEntryUrl(refModelId),
25
31
  target: "_blank"
26
- }, t(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["entry"]))))
32
+ }, t(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["entry"]))))
27
33
  }));
28
34
  };
29
35
 
@@ -1,3 +1,4 @@
1
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
1
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
3
4
 
@@ -36,7 +37,8 @@ var EntryForm = function EntryForm(_ref) {
36
37
  onForm: function onForm(form) {
37
38
  return setFormRef(form);
38
39
  },
39
- entry: {}
40
+ entry: {},
41
+ addEntryToListCache: false
40
42
  });
41
43
  };
42
44
 
@@ -108,13 +110,20 @@ var NewRefEntryFormDialog = function NewRefEntryFormDialog(_ref2) {
108
110
  return setOpen(false);
109
111
  }, []);
110
112
  var onCreate = useCallback(function (entry) {
111
- onChange(entry);
113
+ onChange(_objectSpread(_objectSpread({}, entry), {}, {
114
+ /*
115
+ * Format data for AutoComplete.
116
+ */
117
+ published: get(entry, "meta.status") === "published",
118
+ modelId: contentModel.modelId,
119
+ modelName: contentModel.name
120
+ }));
112
121
  /*
113
122
  Close the modal
114
123
  */
115
124
 
116
125
  setOpen(false);
117
- }, [modelId, onChange]);
126
+ }, [onChange, contentModel]);
118
127
 
119
128
  if (!contentModel) {
120
129
  return children;
@@ -143,7 +143,13 @@ export var useReference = function useReference(_ref) {
143
143
  }),
144
144
  query: "__latest__",
145
145
  limit: 10
146
- }
146
+ },
147
+
148
+ /**
149
+ * We cannot update this query response in cache after a reference entry being created/deleted,
150
+ * which result in cached response being stale, therefore, we're setting the fetchPolicy to "network-only" to by passing cache.
151
+ */
152
+ fetchPolicy: "network-only"
147
153
  }).then(function (_ref3) {
148
154
  var data = _ref3.data;
149
155
  var latestEntryData = convertQueryDataToEntryList(data.content.data);
@@ -111,7 +111,13 @@ export var useReferences = function useReferences(_ref) {
111
111
  }),
112
112
  query: "__latest__",
113
113
  limit: 10
114
- }
114
+ },
115
+
116
+ /**
117
+ * We cannot update this query response in cache after a reference entry being created/deleted,
118
+ * which result in cached response being stale, therefore, we're setting the fetchPolicy to "network-only" to by passing cache.
119
+ */
120
+ fetchPolicy: "network-only"
115
121
  }).then(function (_ref3) {
116
122
  var data = _ref3.data;
117
123
  setLatestEntries(data.content.data);
@@ -1,11 +1,12 @@
1
+ import React from "react";
1
2
  import { CmsEditorField } from "../../../../../types";
2
3
  interface UseNewRefEntryParams {
3
4
  field: CmsEditorField;
4
5
  }
5
6
  interface UseNewRefEntry {
6
7
  renderNewEntryModal: boolean;
7
- renderedInPreviewTab: boolean;
8
8
  refModelId: string;
9
+ helpText: React.ReactElement;
9
10
  }
10
11
  export declare const useNewRefEntry: ({ field }: UseNewRefEntryParams) => UseNewRefEntry;
11
12
  export {};
@@ -1,8 +1,14 @@
1
- import { useContext } from "react";
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import React, { useContext } from "react";
2
3
  import { Context as ContentEntriesContext } from "../../../../views/contentEntries/ContentEntriesContext";
4
+ import MissingEntryHelpText, { ReferenceMultipleModelsHelpText } from "../components/MissingEntryHelpText";
3
5
  export var useNewRefEntry = function useNewRefEntry(_ref) {
4
6
  var field = _ref.field;
5
- var refModelId = field.settings.models[0].modelId;
7
+
8
+ var _field$settings$model = _slicedToArray(field.settings.models, 1),
9
+ refModelId = _field$settings$model[0].modelId;
10
+
11
+ var referenceMultipleModels = field.settings.models.length > 1;
6
12
  var contentEntriesContextValue = useContext(ContentEntriesContext);
7
13
  /**
8
14
  * We don't wrap the "ContentEntryForm" with "ContentEntriesContextProvider"
@@ -13,18 +19,38 @@ export var useNewRefEntry = function useNewRefEntry(_ref) {
13
19
  */
14
20
 
15
21
  var renderedInPreviewTab = contentEntriesContextValue === null;
22
+ /**
23
+ * Set "renderNewEntryModal" value.
24
+ */
25
+
16
26
  var renderNewEntryModal;
17
27
 
18
28
  if (renderedInPreviewTab) {
19
29
  renderNewEntryModal = false;
30
+ } else if (referenceMultipleModels) {
31
+ renderNewEntryModal = false;
20
32
  } else {
21
33
  var insideDialog = contentEntriesContextValue.insideDialog;
22
34
  renderNewEntryModal = !insideDialog;
23
35
  }
36
+ /**
37
+ * Set "helpText" value.
38
+ */
39
+
40
+
41
+ var helpText = null;
42
+
43
+ if (referenceMultipleModels) {
44
+ helpText = /*#__PURE__*/React.createElement(ReferenceMultipleModelsHelpText, null);
45
+ } else {
46
+ helpText = /*#__PURE__*/React.createElement(MissingEntryHelpText, {
47
+ refModelId: refModelId
48
+ });
49
+ }
24
50
 
25
51
  return {
26
52
  renderNewEntryModal: renderNewEntryModal,
27
- renderedInPreviewTab: renderedInPreviewTab,
28
- refModelId: refModelId
53
+ refModelId: refModelId,
54
+ helpText: helpText
29
55
  };
30
56
  };
@@ -5,6 +5,7 @@ var _templateObject, _templateObject2;
5
5
  import React from "react";
6
6
  import { i18n } from "@webiny/app/i18n";
7
7
  import ContentEntriesAutocomplete from "./components/ContentEntriesAutocomplete";
8
+ import { NewRefEntryDialogContextProvider } from "./hooks/useNewRefEntryDialog";
8
9
  var t = i18n.ns("app-headless-cms/admin/fields/ref");
9
10
  var plugin = {
10
11
  type: "cms-editor-field-renderer",
@@ -20,9 +21,9 @@ var plugin = {
20
21
  render: function render(props) {
21
22
  var Bind = props.getBind();
22
23
  return /*#__PURE__*/React.createElement(Bind, null, function (bind) {
23
- return /*#__PURE__*/React.createElement(ContentEntriesAutocomplete, Object.assign({}, props, {
24
+ return /*#__PURE__*/React.createElement(NewRefEntryDialogContextProvider, null, /*#__PURE__*/React.createElement(ContentEntriesAutocomplete, Object.assign({}, props, {
24
25
  bind: bind
25
- }));
26
+ })));
26
27
  });
27
28
  }
28
29
  }
@@ -4,6 +4,7 @@ var _templateObject, _templateObject2;
4
4
 
5
5
  import React from "react";
6
6
  import ContentEntriesMultiAutocomplete from "./components/ContentEntriesMultiAutoComplete";
7
+ import { NewRefEntryDialogContextProvider } from "./hooks/useNewRefEntryDialog";
7
8
  import { i18n } from "@webiny/app/i18n";
8
9
  var t = i18n.ns("app-headless-cms/admin/fields/ref");
9
10
 
@@ -25,11 +26,11 @@ var plugin = {
25
26
  render: function render(props) {
26
27
  var Bind = props.getBind();
27
28
  return /*#__PURE__*/React.createElement(Bind, null, function (bind) {
28
- return /*#__PURE__*/React.createElement(ContentEntriesMultiAutocomplete, Object.assign({
29
+ return /*#__PURE__*/React.createElement(NewRefEntryDialogContextProvider, null, /*#__PURE__*/React.createElement(ContentEntriesMultiAutocomplete, Object.assign({
29
30
  key: getKey(props.field, bind)
30
31
  }, props, {
31
32
  bind: bind
32
- }));
33
+ })));
33
34
  });
34
35
  }
35
36
  }
@@ -22,7 +22,6 @@ var plugin = {
22
22
  createField: function createField() {
23
23
  return {
24
24
  type: this.type,
25
- name: this.name,
26
25
  validation: [],
27
26
  renderer: {
28
27
  name: ""
@@ -5,7 +5,7 @@ var throwTransformError = function throwTransformError(params) {
5
5
  var type = params.type,
6
6
  value = params.value,
7
7
  error = params.ex;
8
- throw new WebinyError("Could not transform value to a date.", "TRANSFORM_ERROR", {
8
+ return new WebinyError("Could not transform value to a date.", "TRANSFORM_ERROR", {
9
9
  error: error,
10
10
  type: type,
11
11
  value: value
@@ -14,14 +14,14 @@ var throwTransformError = function throwTransformError(params) {
14
14
 
15
15
  var dateOnly = function dateOnly(value) {
16
16
  if (!value) {
17
- return null; // return new Date().toISOString().substr(0, 10);
17
+ return null;
18
18
  }
19
19
 
20
20
  try {
21
21
  var date = new Date(value).toISOString();
22
22
  return date.substr(0, 10);
23
23
  } catch (ex) {
24
- throwTransformError({
24
+ throw throwTransformError({
25
25
  ex: ex,
26
26
  value: value,
27
27
  type: "date"
@@ -65,6 +65,8 @@ var extractTime = function extractTime(value) {
65
65
  } else if (result.length === 2) {
66
66
  return "".concat(value, ":00");
67
67
  }
68
+
69
+ return null;
68
70
  };
69
71
 
70
72
  var dateTimeWithTimezone = function dateTimeWithTimezone(value) {
@@ -110,7 +112,7 @@ var dateTimeWithoutTimezone = function dateTimeWithoutTimezone(value) {
110
112
  try {
111
113
  return new Date("".concat(value.replace(" ", "T"), ".000Z")).toISOString();
112
114
  } catch (ex) {
113
- throwTransformError({
115
+ throw throwTransformError({
114
116
  ex: ex,
115
117
  value: value,
116
118
  type: "dateTimeWithoutTimezone"
@@ -1,3 +1,5 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
1
3
  import { validation } from "@webiny/validation";
2
4
  export default (function () {
3
5
  return {
@@ -5,19 +7,48 @@ export default (function () {
5
7
  name: "cms-model-field-validator-date-gte",
6
8
  validator: {
7
9
  name: "dateGte",
8
- validate: function validate(value, validator) {
9
- var _validator$settings = validator.settings,
10
- gteValue = _validator$settings.value,
11
- type = _validator$settings.type;
12
-
13
- if (typeof gteValue === "undefined") {
14
- return;
15
- } else if (type === "time") {
16
- return validation.validate(value, "timeGte:".concat(gteValue));
10
+ validate: function () {
11
+ var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(value, validator) {
12
+ var _validator$settings, gteValue, type;
13
+
14
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
15
+ while (1) {
16
+ switch (_context.prev = _context.next) {
17
+ case 0:
18
+ _validator$settings = validator.settings, gteValue = _validator$settings.value, type = _validator$settings.type;
19
+
20
+ if (!(typeof gteValue === "undefined")) {
21
+ _context.next = 5;
22
+ break;
23
+ }
24
+
25
+ return _context.abrupt("return", true);
26
+
27
+ case 5:
28
+ if (!(type === "time")) {
29
+ _context.next = 7;
30
+ break;
31
+ }
32
+
33
+ return _context.abrupt("return", validation.validate(value, "timeGte:".concat(gteValue)));
34
+
35
+ case 7:
36
+ return _context.abrupt("return", validation.validate(value, "dateGte:".concat(gteValue)));
37
+
38
+ case 8:
39
+ case "end":
40
+ return _context.stop();
41
+ }
42
+ }
43
+ }, _callee);
44
+ }));
45
+
46
+ function validate(_x, _x2) {
47
+ return _validate.apply(this, arguments);
17
48
  }
18
49
 
19
- return validation.validate(value, "dateGte:".concat(gteValue));
20
- }
50
+ return validate;
51
+ }()
21
52
  }
22
53
  };
23
54
  });
@@ -1,3 +1,5 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
1
3
  import { validation } from "@webiny/validation";
2
4
  export default (function () {
3
5
  return {
@@ -5,19 +7,48 @@ export default (function () {
5
7
  name: "cms-model-field-validator-date-lte",
6
8
  validator: {
7
9
  name: "dateLte",
8
- validate: function validate(value, validator) {
9
- var _validator$settings = validator.settings,
10
- lteValue = _validator$settings.value,
11
- type = _validator$settings.type;
12
-
13
- if (typeof lteValue === "undefined") {
14
- return;
15
- } else if (type === "time") {
16
- return validation.validate(value, "timeLte:".concat(lteValue));
10
+ validate: function () {
11
+ var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(value, validator) {
12
+ var _validator$settings, lteValue, type;
13
+
14
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
15
+ while (1) {
16
+ switch (_context.prev = _context.next) {
17
+ case 0:
18
+ _validator$settings = validator.settings, lteValue = _validator$settings.value, type = _validator$settings.type;
19
+
20
+ if (!(typeof lteValue === "undefined")) {
21
+ _context.next = 5;
22
+ break;
23
+ }
24
+
25
+ return _context.abrupt("return", true);
26
+
27
+ case 5:
28
+ if (!(type === "time")) {
29
+ _context.next = 7;
30
+ break;
31
+ }
32
+
33
+ return _context.abrupt("return", validation.validate(value, "timeLte:".concat(lteValue)));
34
+
35
+ case 7:
36
+ return _context.abrupt("return", validation.validate(value, "dateLte:".concat(lteValue)));
37
+
38
+ case 8:
39
+ case "end":
40
+ return _context.stop();
41
+ }
42
+ }
43
+ }, _callee);
44
+ }));
45
+
46
+ function validate(_x, _x2) {
47
+ return _validate.apply(this, arguments);
17
48
  }
18
49
 
19
- return validation.validate(value, "dateLte:".concat(lteValue));
20
- }
50
+ return validate;
51
+ }()
21
52
  }
22
53
  };
23
54
  });
@@ -1,15 +1,43 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
1
3
  import { validation } from "@webiny/validation";
2
4
  export default {
3
5
  type: "cms-model-field-validator",
4
6
  name: "cms-model-field-validator-gte",
5
7
  validator: {
6
8
  name: "gte",
7
- validate: function validate(value, validator) {
8
- var gteValue = validator.settings.value;
9
+ validate: function () {
10
+ var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(value, validator) {
11
+ var gteValue;
12
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
13
+ while (1) {
14
+ switch (_context.prev = _context.next) {
15
+ case 0:
16
+ gteValue = validator.settings.value;
9
17
 
10
- if (typeof gteValue !== "undefined") {
11
- return validation.validate(value, "gte:".concat(gteValue));
18
+ if (!(typeof gteValue === "undefined")) {
19
+ _context.next = 3;
20
+ break;
21
+ }
22
+
23
+ return _context.abrupt("return", true);
24
+
25
+ case 3:
26
+ return _context.abrupt("return", validation.validate(value, "gte:".concat(gteValue)));
27
+
28
+ case 4:
29
+ case "end":
30
+ return _context.stop();
31
+ }
32
+ }
33
+ }, _callee);
34
+ }));
35
+
36
+ function validate(_x, _x2) {
37
+ return _validate.apply(this, arguments);
12
38
  }
13
- }
39
+
40
+ return validate;
41
+ }()
14
42
  }
15
43
  };
@@ -1,15 +1,43 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
1
3
  import { validation } from "@webiny/validation";
2
4
  export default {
3
5
  type: "cms-model-field-validator",
4
6
  name: "cms-model-field-validator-in",
5
7
  validator: {
6
8
  name: "in",
7
- validate: function validate(value, validator) {
8
- var values = validator.settings.values;
9
+ validate: function () {
10
+ var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(value, validator) {
11
+ var values;
12
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
13
+ while (1) {
14
+ switch (_context.prev = _context.next) {
15
+ case 0:
16
+ values = validator.settings.values;
9
17
 
10
- if (Array.isArray(values)) {
11
- return validation.validate(value, "in:".concat(values.join(":")));
18
+ if (!(Array.isArray(values) === false || values.length === 0)) {
19
+ _context.next = 3;
20
+ break;
21
+ }
22
+
23
+ return _context.abrupt("return", true);
24
+
25
+ case 3:
26
+ return _context.abrupt("return", validation.validate(value, "in:".concat(values.join(":"))));
27
+
28
+ case 4:
29
+ case "end":
30
+ return _context.stop();
31
+ }
32
+ }
33
+ }, _callee);
34
+ }));
35
+
36
+ function validate(_x, _x2) {
37
+ return _validate.apply(this, arguments);
12
38
  }
13
- }
39
+
40
+ return validate;
41
+ }()
14
42
  }
15
43
  };
@@ -1,15 +1,43 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
1
3
  import { validation } from "@webiny/validation";
2
4
  export default {
3
5
  type: "cms-model-field-validator",
4
6
  name: "cms-model-field-validator-lte",
5
7
  validator: {
6
8
  name: "lte",
7
- validate: function validate(value, validator) {
8
- var lteValue = validator.settings.value;
9
+ validate: function () {
10
+ var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(value, validator) {
11
+ var lteValue;
12
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
13
+ while (1) {
14
+ switch (_context.prev = _context.next) {
15
+ case 0:
16
+ lteValue = validator.settings.value;
9
17
 
10
- if (typeof lteValue !== "undefined") {
11
- return validation.validate(value, "lte:".concat(lteValue));
18
+ if (!(typeof lteValue === "undefined")) {
19
+ _context.next = 3;
20
+ break;
21
+ }
22
+
23
+ return _context.abrupt("return", true);
24
+
25
+ case 3:
26
+ return _context.abrupt("return", validation.validate(value, "lte:".concat(lteValue)));
27
+
28
+ case 4:
29
+ case "end":
30
+ return _context.stop();
31
+ }
32
+ }
33
+ }, _callee);
34
+ }));
35
+
36
+ function validate(_x, _x2) {
37
+ return _validate.apply(this, arguments);
12
38
  }
13
- }
39
+
40
+ return validate;
41
+ }()
14
42
  }
15
43
  };
@@ -1,15 +1,43 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
1
3
  import { validation } from "@webiny/validation";
2
4
  export default {
3
5
  type: "cms-model-field-validator",
4
6
  name: "cms-model-field-validator-max-length",
5
7
  validator: {
6
8
  name: "maxLength",
7
- validate: function validate(value, validator) {
8
- var maxLengthValue = validator.settings.value;
9
+ validate: function () {
10
+ var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(value, validator) {
11
+ var maxLengthValue;
12
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
13
+ while (1) {
14
+ switch (_context.prev = _context.next) {
15
+ case 0:
16
+ maxLengthValue = validator.settings.value;
9
17
 
10
- if (typeof maxLengthValue !== "undefined") {
11
- return validation.validate(value, "maxLength:".concat(maxLengthValue));
18
+ if (!(typeof maxLengthValue === "undefined")) {
19
+ _context.next = 3;
20
+ break;
21
+ }
22
+
23
+ return _context.abrupt("return", true);
24
+
25
+ case 3:
26
+ return _context.abrupt("return", validation.validate(value, "maxLength:".concat(maxLengthValue)));
27
+
28
+ case 4:
29
+ case "end":
30
+ return _context.stop();
31
+ }
32
+ }
33
+ }, _callee);
34
+ }));
35
+
36
+ function validate(_x, _x2) {
37
+ return _validate.apply(this, arguments);
12
38
  }
13
- }
39
+
40
+ return validate;
41
+ }()
14
42
  }
15
43
  };
@@ -1,15 +1,43 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
1
3
  import { validation } from "@webiny/validation";
2
4
  export default {
3
5
  type: "cms-model-field-validator",
4
6
  name: "cms-model-field-validator-min-length",
5
7
  validator: {
6
8
  name: "minLength",
7
- validate: function validate(value, validator) {
8
- var minLengthValue = validator.settings.value;
9
+ validate: function () {
10
+ var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(value, validator) {
11
+ var minLengthValue;
12
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
13
+ while (1) {
14
+ switch (_context.prev = _context.next) {
15
+ case 0:
16
+ minLengthValue = validator.settings.value;
9
17
 
10
- if (typeof minLengthValue !== "undefined") {
11
- return validation.validate(value, "minLength:".concat(minLengthValue));
18
+ if (!(typeof minLengthValue === "undefined")) {
19
+ _context.next = 3;
20
+ break;
21
+ }
22
+
23
+ return _context.abrupt("return", true);
24
+
25
+ case 3:
26
+ return _context.abrupt("return", validation.validate(value, "minLength:".concat(minLengthValue)));
27
+
28
+ case 4:
29
+ case "end":
30
+ return _context.stop();
31
+ }
32
+ }
33
+ }, _callee);
34
+ }));
35
+
36
+ function validate(_x, _x2) {
37
+ return _validate.apply(this, arguments);
12
38
  }
13
- }
39
+
40
+ return validate;
41
+ }()
14
42
  }
15
43
  };
@@ -3,7 +3,7 @@ declare const _default: {
3
3
  name: string;
4
4
  validator: {
5
5
  name: string;
6
- validate: (value: any, validator: any) => boolean;
6
+ validate: (value: any, validator: any) => Promise<boolean>;
7
7
  };
8
8
  };
9
9
  export default _default;
@@ -1,34 +1,63 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
1
3
  import { plugins } from "@webiny/plugins";
2
4
  export default {
3
5
  type: "cms-model-field-validator",
4
6
  name: "cms-model-field-validator-pattern",
5
7
  validator: {
6
8
  name: "pattern",
7
- validate: function validate(value, validator) {
8
- if (!value) {
9
- return true;
10
- }
9
+ validate: function () {
10
+ var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(value, validator) {
11
+ var settings, pattern, patternPlugin;
12
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
13
+ while (1) {
14
+ switch (_context.prev = _context.next) {
15
+ case 0:
16
+ if (value) {
17
+ _context.next = 2;
18
+ break;
19
+ }
11
20
 
12
- var settings = validator.settings;
13
- var pattern;
21
+ return _context.abrupt("return", true);
14
22
 
15
- if (settings.preset === "custom") {
16
- pattern = settings;
17
- } else {
18
- var patternPlugin = plugins.byType("cms-model-field-validator-pattern").find(function (item) {
19
- return item.pattern.name === settings.preset;
20
- });
23
+ case 2:
24
+ settings = validator.settings;
21
25
 
22
- if (patternPlugin) {
23
- pattern = patternPlugin.pattern;
24
- }
25
- }
26
+ if (settings.preset === "custom") {
27
+ pattern = settings;
28
+ } else {
29
+ patternPlugin = plugins.byType("cms-model-field-validator-pattern").find(function (item) {
30
+ return item.pattern.name === settings.preset;
31
+ });
32
+
33
+ if (patternPlugin) {
34
+ pattern = patternPlugin.pattern;
35
+ }
36
+ }
37
+
38
+ if (pattern) {
39
+ _context.next = 6;
40
+ break;
41
+ }
42
+
43
+ return _context.abrupt("return", true);
44
+
45
+ case 6:
46
+ return _context.abrupt("return", new RegExp(pattern.regex, pattern.flags).test(value));
47
+
48
+ case 7:
49
+ case "end":
50
+ return _context.stop();
51
+ }
52
+ }
53
+ }, _callee);
54
+ }));
26
55
 
27
- if (!pattern) {
28
- return true;
56
+ function validate(_x, _x2) {
57
+ return _validate.apply(this, arguments);
29
58
  }
30
59
 
31
- return new RegExp(pattern.regex, pattern.flags).test(value);
32
- }
60
+ return validate;
61
+ }()
33
62
  }
34
63
  };
@@ -1,3 +1,5 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
1
3
  import { validation } from "@webiny/validation";
2
4
  export default (function () {
3
5
  return {
@@ -5,15 +7,39 @@ export default (function () {
5
7
  name: "cms-model-field-validator-time-gte",
6
8
  validator: {
7
9
  name: "timeGte",
8
- validate: function validate(value, validator) {
9
- var gteValue = validator.settings.value;
10
+ validate: function () {
11
+ var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(value, validator) {
12
+ var gteValue;
13
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
14
+ while (1) {
15
+ switch (_context.prev = _context.next) {
16
+ case 0:
17
+ gteValue = validator.settings.value;
10
18
 
11
- if (typeof gteValue === "undefined") {
12
- return;
19
+ if (!(typeof gteValue === "undefined")) {
20
+ _context.next = 3;
21
+ break;
22
+ }
23
+
24
+ return _context.abrupt("return", true);
25
+
26
+ case 3:
27
+ return _context.abrupt("return", validation.validate(value, "timeGte:".concat(gteValue)));
28
+
29
+ case 4:
30
+ case "end":
31
+ return _context.stop();
32
+ }
33
+ }
34
+ }, _callee);
35
+ }));
36
+
37
+ function validate(_x, _x2) {
38
+ return _validate.apply(this, arguments);
13
39
  }
14
40
 
15
- return validation.validate(value, "timeGte:".concat(gteValue));
16
- }
41
+ return validate;
42
+ }()
17
43
  }
18
44
  };
19
45
  });
@@ -1,3 +1,5 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
1
3
  import { validation } from "@webiny/validation";
2
4
  export default (function () {
3
5
  return {
@@ -5,15 +7,39 @@ export default (function () {
5
7
  name: "cms-model-field-validator-time-lte",
6
8
  validator: {
7
9
  name: "timeLte",
8
- validate: function validate(value, validator) {
9
- var lteValue = validator.settings.value;
10
+ validate: function () {
11
+ var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(value, validator) {
12
+ var lteValue;
13
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
14
+ while (1) {
15
+ switch (_context.prev = _context.next) {
16
+ case 0:
17
+ lteValue = validator.settings.value;
10
18
 
11
- if (typeof lteValue === "undefined") {
12
- return;
19
+ if (!(typeof lteValue === "undefined")) {
20
+ _context.next = 3;
21
+ break;
22
+ }
23
+
24
+ return _context.abrupt("return", true);
25
+
26
+ case 3:
27
+ return _context.abrupt("return", validation.validate(value, "timeLte:".concat(lteValue)));
28
+
29
+ case 4:
30
+ case "end":
31
+ return _context.stop();
32
+ }
33
+ }
34
+ }, _callee);
35
+ }));
36
+
37
+ function validate(_x, _x2) {
38
+ return _validate.apply(this, arguments);
13
39
  }
14
40
 
15
- return validation.validate(value, "timeLte:".concat(lteValue));
16
- }
41
+ return validate;
42
+ }()
17
43
  }
18
44
  };
19
45
  });
@@ -20,14 +20,14 @@ export interface ContentEntryContext extends ContentEntriesContext {
20
20
  showEmptyView: boolean;
21
21
  }
22
22
  export declare const Context: React.Context<ContentEntryContext>;
23
- export interface ContentEntryContextProviderProps extends GetContentEntryFormType {
23
+ export interface ContentEntryContextProviderProps extends UseContentEntryProviderProps {
24
24
  children: React.ReactNode;
25
25
  }
26
- interface GetContentEntryFormType {
26
+ interface UseContentEntryProviderProps {
27
27
  getContentId?: () => string | null;
28
28
  isNewEntry?: () => boolean;
29
29
  }
30
- export declare const useContentEntryProviderProps: () => GetContentEntryFormType;
30
+ export declare const useContentEntryProviderProps: () => UseContentEntryProviderProps;
31
31
  export declare const Provider: {
32
32
  ({ children, isNewEntry, getContentId }: ContentEntryContextProviderProps): JSX.Element;
33
33
  displayName: string;
@@ -88,7 +88,8 @@ var ContentEntry = function ContentEntry() {
88
88
  entry: entry,
89
89
  onForm: function onForm(form) {
90
90
  return setFormRef(form);
91
- }
91
+ },
92
+ addEntryToListCache: true
92
93
  })))), /*#__PURE__*/React.createElement(Tab, {
93
94
  label: "Revisions",
94
95
  disabled: loading,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-headless-cms",
3
- "version": "5.22.0-beta.3",
3
+ "version": "5.23.0-beta.0",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,22 +21,22 @@
21
21
  "@fortawesome/free-brands-svg-icons": "5.15.4",
22
22
  "@fortawesome/free-regular-svg-icons": "5.15.4",
23
23
  "@fortawesome/free-solid-svg-icons": "5.15.4",
24
- "@fortawesome/react-fontawesome": "0.1.16",
25
- "@svgr/webpack": "6.2.0",
24
+ "@fortawesome/react-fontawesome": "0.1.17",
25
+ "@svgr/webpack": "6.2.1",
26
26
  "@types/react": "16.14.2",
27
- "@webiny/app": "5.22.0-beta.3",
28
- "@webiny/app-admin": "5.22.0-beta.3",
29
- "@webiny/app-graphql-playground": "5.22.0-beta.3",
30
- "@webiny/app-i18n": "5.22.0-beta.3",
31
- "@webiny/app-plugin-admin-welcome-screen": "5.22.0-beta.3",
32
- "@webiny/app-security": "5.22.0-beta.3",
33
- "@webiny/error": "5.22.0-beta.3",
34
- "@webiny/form": "5.22.0-beta.3",
35
- "@webiny/plugins": "5.22.0-beta.3",
36
- "@webiny/react-router": "5.22.0-beta.3",
37
- "@webiny/ui": "5.22.0-beta.3",
38
- "@webiny/utils": "5.22.0-beta.3",
39
- "@webiny/validation": "5.22.0-beta.3",
27
+ "@webiny/app": "5.23.0-beta.0",
28
+ "@webiny/app-admin": "5.23.0-beta.0",
29
+ "@webiny/app-graphql-playground": "5.23.0-beta.0",
30
+ "@webiny/app-i18n": "5.23.0-beta.0",
31
+ "@webiny/app-plugin-admin-welcome-screen": "5.23.0-beta.0",
32
+ "@webiny/app-security": "5.23.0-beta.0",
33
+ "@webiny/error": "5.23.0-beta.0",
34
+ "@webiny/form": "5.23.0-beta.0",
35
+ "@webiny/plugins": "5.23.0-beta.0",
36
+ "@webiny/react-router": "5.23.0-beta.0",
37
+ "@webiny/ui": "5.23.0-beta.0",
38
+ "@webiny/utils": "5.23.0-beta.0",
39
+ "@webiny/validation": "5.23.0-beta.0",
40
40
  "apollo-cache": "1.3.5",
41
41
  "apollo-client": "2.6.10",
42
42
  "apollo-link": "1.2.14",
@@ -68,8 +68,8 @@
68
68
  "@babel/preset-env": "^7.16.4",
69
69
  "@babel/preset-react": "^7.16.0",
70
70
  "@babel/preset-typescript": "^7.16.0",
71
- "@webiny/cli": "^5.22.0-beta.3",
72
- "@webiny/project-utils": "^5.22.0-beta.3",
71
+ "@webiny/cli": "^5.23.0-beta.0",
72
+ "@webiny/project-utils": "^5.23.0-beta.0",
73
73
  "babel-plugin-emotion": "^9.2.8",
74
74
  "babel-plugin-lodash": "^3.3.4",
75
75
  "babel-plugin-module-resolver": "^4.1.0",
@@ -101,5 +101,5 @@
101
101
  ]
102
102
  }
103
103
  },
104
- "gitHead": "7a6b4ce3b9f31fe0702fffd28b7959c637e9a20b"
104
+ "gitHead": "deb16c58954f7396c848f04806a2028aa53cc97b"
105
105
  }