@guillotinaweb/react-gmi 0.29.1 → 0.29.2-alpha.3

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 (70) hide show
  1. package/README.md +2 -1
  2. package/dist/actions/copy_item.d.ts +2 -2
  3. package/dist/actions/move_item.d.ts +2 -2
  4. package/dist/actions/remove_item.d.ts +2 -2
  5. package/dist/components/behaviors/iattachment.d.ts +4 -2
  6. package/dist/components/behaviors/imultiimageorderedattachment.d.ts +3 -1
  7. package/dist/components/behaviors/iworkflow.d.ts +1 -1
  8. package/dist/components/context_toolbar.d.ts +1 -1
  9. package/dist/components/fields/editComponent.d.ts +5 -4
  10. package/dist/components/fields/editableField.d.ts +4 -2
  11. package/dist/components/fields/renderField.d.ts +8 -5
  12. package/dist/components/flash.d.ts +1 -1
  13. package/dist/components/input/email.d.ts +2 -2
  14. package/dist/components/input/form_builder.d.ts +2 -2
  15. package/dist/components/input/input.d.ts +1 -1
  16. package/dist/components/input/search_input.d.ts +1 -1
  17. package/dist/components/input/search_input_list.d.ts +2 -2
  18. package/dist/components/input/select_vocabulary.d.ts +2 -2
  19. package/dist/components/input/upload.d.ts +1 -2
  20. package/dist/components/pagination.d.ts +1 -1
  21. package/dist/components/panel/permissions.d.ts +1 -1
  22. package/dist/components/panel/permissions_prinperm.d.ts +2 -2
  23. package/dist/components/panel/permissions_prinrole.d.ts +1 -1
  24. package/dist/components/panel/permissions_roleperm.d.ts +1 -1
  25. package/dist/components/path.d.ts +1 -1
  26. package/dist/components/properties_view.d.ts +2 -2
  27. package/dist/components/search_labels.d.ts +1 -1
  28. package/dist/components/search_options_labels.d.ts +1 -1
  29. package/dist/components/search_vocabulary_labels.d.ts +2 -2
  30. package/dist/components/selected_items_actions.d.ts +14 -0
  31. package/dist/components/tabs.d.ts +4 -2
  32. package/dist/components/widgets/tags.d.ts +4 -1
  33. package/dist/contexts/index.d.ts +21 -19
  34. package/dist/forms/required_fields.d.ts +2 -3
  35. package/dist/forms/users.d.ts +1 -1
  36. package/dist/hooks/useClickAway.d.ts +2 -1
  37. package/dist/hooks/useConfig.d.ts +4 -2
  38. package/dist/hooks/useCrudContext.d.ts +11 -10
  39. package/dist/hooks/useInput.d.ts +4 -3
  40. package/dist/hooks/useRegistry.d.ts +29 -29
  41. package/dist/hooks/useSetState.d.ts +6 -1
  42. package/dist/hooks/useVocabulary.d.ts +1 -1
  43. package/dist/lib/auth.d.ts +14 -19
  44. package/dist/lib/client.d.ts +49 -36
  45. package/dist/lib/helpers.d.ts +10 -18
  46. package/dist/lib/processResponse.d.ts +9 -0
  47. package/dist/lib/rest.d.ts +9 -16
  48. package/dist/lib/utils.d.ts +3 -2
  49. package/dist/lib/validators.d.ts +1 -1
  50. package/dist/locales/generic_messages.d.ts +248 -370
  51. package/dist/models/index.d.ts +5 -5
  52. package/dist/models/sharing.d.ts +5 -5
  53. package/dist/react-gmi.esm.js +1179 -900
  54. package/dist/react-gmi.esm.js.map +1 -1
  55. package/dist/react-gmi.js +1178 -900
  56. package/dist/react-gmi.js.map +1 -1
  57. package/dist/react-gmi.modern.js +1161 -856
  58. package/dist/react-gmi.modern.js.map +1 -1
  59. package/dist/react-gmi.umd.js +1178 -900
  60. package/dist/react-gmi.umd.js.map +1 -1
  61. package/dist/reducers/guillotina.d.ts +22 -8
  62. package/dist/types/global.d.ts +9 -0
  63. package/dist/types/guillotina.d.ts +153 -19
  64. package/dist/views/folder.d.ts +1 -1
  65. package/dist/views/groups.d.ts +1 -1
  66. package/dist/views/item.d.ts +1 -1
  67. package/dist/views/users.d.ts +1 -1
  68. package/package.json +3 -2
  69. package/dist/lib/search.test.d.ts +0 -1
  70. package/dist/setupTests.d.ts +0 -1
@@ -107,6 +107,97 @@
107
107
  return it.next.bind(it);
108
108
  }
109
109
 
110
+ var initialState = {
111
+ path: '',
112
+ loading: false,
113
+ context: undefined,
114
+ flash: {
115
+ message: undefined,
116
+ type: undefined
117
+ },
118
+ action: {
119
+ action: undefined,
120
+ params: undefined
121
+ },
122
+ permissions: [],
123
+ errorStatus: undefined,
124
+ registry: {},
125
+ refresh: undefined
126
+ };
127
+ var GuillotinaReducerActionTypes;
128
+
129
+ (function (GuillotinaReducerActionTypes) {
130
+ GuillotinaReducerActionTypes["SET_PATH"] = "SET_PATH";
131
+ GuillotinaReducerActionTypes["SET_CONTEXT"] = "SET_CONTEXT";
132
+ GuillotinaReducerActionTypes["SET_ERROR"] = "SET_ERROR";
133
+ GuillotinaReducerActionTypes["SET_FLASH"] = "SET_FLASH";
134
+ GuillotinaReducerActionTypes["CLEAR_FLASH"] = "CLEAR_FLASH";
135
+ GuillotinaReducerActionTypes["SET_ACTION"] = "SET_ACTION";
136
+ GuillotinaReducerActionTypes["CLEAR_ACTION"] = "CLEAR_ACTION";
137
+ GuillotinaReducerActionTypes["REFRESH"] = "REFRESH";
138
+ GuillotinaReducerActionTypes["APPLY"] = "APPLY";
139
+ })(GuillotinaReducerActionTypes || (GuillotinaReducerActionTypes = {}));
140
+
141
+ function guillotinaReducer(state, action) {
142
+ switch (action.type) {
143
+ case GuillotinaReducerActionTypes.SET_PATH:
144
+ return _extends({}, state, {
145
+ path: action.payload.path,
146
+ loading: true
147
+ });
148
+
149
+ case GuillotinaReducerActionTypes.SET_CONTEXT:
150
+ return _extends({}, state, action.payload, {
151
+ errorStatus: undefined,
152
+ loading: false
153
+ });
154
+
155
+ case GuillotinaReducerActionTypes.SET_ERROR:
156
+ return _extends({}, state, {
157
+ errorStatus: action.payload.errorStatus,
158
+ loading: false
159
+ });
160
+
161
+ case GuillotinaReducerActionTypes.SET_FLASH:
162
+ return _extends({}, state, action.payload);
163
+
164
+ case GuillotinaReducerActionTypes.CLEAR_FLASH:
165
+ return _extends({}, state, {
166
+ flash: {
167
+ message: undefined,
168
+ type: undefined
169
+ }
170
+ });
171
+
172
+ case GuillotinaReducerActionTypes.SET_ACTION:
173
+ return _extends({}, state, {
174
+ action: action.payload
175
+ });
176
+
177
+ case GuillotinaReducerActionTypes.CLEAR_ACTION:
178
+ return _extends({}, state, {
179
+ action: {
180
+ action: undefined,
181
+ params: undefined
182
+ }
183
+ });
184
+
185
+ case GuillotinaReducerActionTypes.REFRESH:
186
+ return _extends({}, state, {
187
+ refresh: Date.now(),
188
+ loading: !action.payload.transparent
189
+ });
190
+
191
+ case GuillotinaReducerActionTypes.APPLY:
192
+ return _extends({}, state, {
193
+ context: _extends({}, state.context, action.payload.context)
194
+ });
195
+
196
+ default:
197
+ return state;
198
+ }
199
+ }
200
+
110
201
  var AuthContext = React.createContext({});
111
202
  var ClientContext = React.createContext(null);
112
203
  var Traversal = /*#__PURE__*/function () {
@@ -137,7 +228,7 @@
137
228
  transparent = _ref2$transparent === void 0 ? false : _ref2$transparent;
138
229
 
139
230
  this.dispatch({
140
- type: 'REFRESH',
231
+ type: GuillotinaReducerActionTypes.REFRESH,
141
232
  payload: {
142
233
  transparent: transparent
143
234
  }
@@ -145,15 +236,18 @@
145
236
  };
146
237
 
147
238
  _proto.apply = function apply(data) {
239
+ // apply a optimistic update to context
148
240
  this.dispatch({
149
- type: 'APPLY',
150
- payload: data
241
+ type: GuillotinaReducerActionTypes.APPLY,
242
+ payload: {
243
+ context: data
244
+ }
151
245
  });
152
246
  };
153
247
 
154
248
  _proto.flash = function flash(message, type) {
155
249
  this.dispatch({
156
- type: 'SET_FLASH',
250
+ type: GuillotinaReducerActionTypes.SET_FLASH,
157
251
  payload: {
158
252
  flash: {
159
253
  message: message,
@@ -170,7 +264,8 @@
170
264
 
171
265
  _proto.clearFlash = function clearFlash() {
172
266
  this.dispatch({
173
- type: 'CLEAR_FLASH'
267
+ type: GuillotinaReducerActionTypes.CLEAR_FLASH,
268
+ payload: {}
174
269
  });
175
270
  };
176
271
 
@@ -180,7 +275,7 @@
180
275
  }
181
276
 
182
277
  this.dispatch({
183
- type: 'SET_ACTION',
278
+ type: GuillotinaReducerActionTypes.SET_ACTION,
184
279
  payload: {
185
280
  action: action,
186
281
  params: params
@@ -190,7 +285,8 @@
190
285
 
191
286
  _proto.cancelAction = function cancelAction() {
192
287
  this.dispatch({
193
- type: 'CLEAR_ACTION'
288
+ type: GuillotinaReducerActionTypes.CLEAR_ACTION,
289
+ payload: {}
194
290
  });
195
291
  };
196
292
 
@@ -227,6 +323,10 @@
227
323
  }, {
228
324
  key: "context",
229
325
  get: function get() {
326
+ if (this.state.context === undefined) {
327
+ throw new Error('Context is not loaded');
328
+ }
329
+
230
330
  return this.state.context;
231
331
  }
232
332
  }, {
@@ -249,7 +349,13 @@
249
349
  });
250
350
  }
251
351
  function useTraversal() {
252
- return React.useContext(TraversalContext);
352
+ var traversal = React.useContext(TraversalContext);
353
+
354
+ if (!traversal) {
355
+ throw new Error('useTraversal must be used within a TraversalProvider');
356
+ }
357
+
358
+ return traversal;
253
359
  }
254
360
  function ClientProvider(_ref4) {
255
361
  var children = _ref4.children,
@@ -260,7 +366,13 @@
260
366
  });
261
367
  }
262
368
  function useGuillotinaClient() {
263
- return React.useContext(ClientContext);
369
+ var client = React.useContext(ClientContext);
370
+
371
+ if (!client) {
372
+ throw new Error('useGuillotinaClient must be used within a ClientProvider');
373
+ }
374
+
375
+ return client;
264
376
  }
265
377
 
266
378
  var genericMessages = reactIntl.defineMessages({
@@ -767,8 +879,10 @@
767
879
  return bytes;
768
880
  }
769
881
  function stringToSlug(str) {
770
- str = str.replace(/^\s+|\s+$/g, '');
771
- str = str.toLowerCase();
882
+ str = str.replace(/^\s+|\s+$/g, ''); // trim
883
+
884
+ str = str.toLowerCase(); // remove accents, swap ñ for n, etc
885
+
772
886
  var from = 'àáäâèéëêìíïîòóöôùúüûñç·/_,:;';
773
887
  var to = 'aaaaeeeeiiiioooouuuunc------';
774
888
 
@@ -776,13 +890,16 @@
776
890
  str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
777
891
  }
778
892
 
779
- str = str.replace(/[^a-z0-9 -]/g, '').replace(/\s+/g, '-').replace(/-+/g, '-');
893
+ str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
894
+ .replace(/\s+/g, '-') // collapse whitespace and replace by -
895
+ .replace(/-+/g, '-'); // collapse dashes
896
+
780
897
  return str;
781
898
  }
782
899
  function sleep(ms) {
783
900
  return new Promise(function (resolve) {
784
901
  setTimeout(function () {
785
- resolve(null);
902
+ resolve();
786
903
  }, ms);
787
904
  });
788
905
  }
@@ -811,8 +928,6 @@
811
928
  };
812
929
 
813
930
  var Button = function Button(_ref) {
814
- var _ref2;
815
-
816
931
  var children = _ref.children,
817
932
  _ref$className = _ref.className,
818
933
  className = _ref$className === void 0 ? 'is-primary' : _ref$className,
@@ -824,9 +939,7 @@
824
939
  _ref$disabled = _ref.disabled,
825
940
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
826
941
  dataTest = _ref.dataTest;
827
-
828
- var css = (_ref2 = []).concat.apply(_ref2, ['button'].concat(className.split(' ')));
829
-
942
+ var css = [].concat(className.split(' '), ['button']);
830
943
  if (loading) css = css.concat('is-loading');
831
944
  return jsxRuntime.jsx("p", {
832
945
  className: "control",
@@ -841,6 +954,50 @@
841
954
  });
842
955
  };
843
956
 
957
+ var formatDate = function formatDate(str) {
958
+ var d = new Date(str);
959
+ var minutes = d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes();
960
+ return d.getDate() + "/" + (d.getMonth() + 1) + "/" + d.getFullYear() + " " + d.getHours() + ":" + minutes;
961
+ };
962
+ var get = function get(obj, path, defValue) {
963
+ var _pathArray$reduce;
964
+
965
+ // If path is not defined or it has false value
966
+ if (!path) return defValue; // Check if path is string or array. Regex : ensure that we do not have '.' and brackets.
967
+ // Regex explained: https://regexr.com/58j0k
968
+
969
+ var pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g); // Find value if exist return otherwise return undefined value;
970
+
971
+ if (pathArray === null) return defValue;
972
+ return (_pathArray$reduce = pathArray.reduce(function (prevObj, key) {
973
+ return prevObj && prevObj[key];
974
+ }, obj)) != null ? _pathArray$reduce : defValue;
975
+ };
976
+ function getNewId(id) {
977
+ if (id === void 0) {
978
+ id = '';
979
+ }
980
+
981
+ var suffix = '-copy-';
982
+ var rgx = new RegExp("($|" + suffix + "\\d*)");
983
+ return stringToSlug(id).replace(rgx, function (r) {
984
+ var num = parseInt(r.replace(suffix, '') || '0');
985
+ return "" + suffix + (num + 1);
986
+ });
987
+ }
988
+ function debounce(callback, wait) {
989
+ var timer;
990
+ return function () {
991
+ var _arguments = arguments;
992
+ clearTimeout(timer);
993
+ return new Promise(function (resolve) {
994
+ timer = setTimeout(function () {
995
+ return resolve(callback.apply(void 0, [].slice.call(_arguments)));
996
+ }, wait);
997
+ });
998
+ };
999
+ }
1000
+
844
1001
  function Modal(props) {
845
1002
  var isActive = props.isActive,
846
1003
  setActive = props.setActive,
@@ -920,7 +1077,8 @@
920
1077
  })]
921
1078
  })]
922
1079
  });
923
- }
1080
+ } // @todo Improve it... Replacing the inputText to a tree
1081
+
924
1082
  function PathTree(_ref2) {
925
1083
  var title = _ref2.title,
926
1084
  defaultPath = _ref2.defaultPath,
@@ -936,7 +1094,7 @@
936
1094
  }), jsxRuntime.jsxs("form", {
937
1095
  onSubmit: function onSubmit(e) {
938
1096
  e.preventDefault();
939
- onConfirm(e.target[0].value, e.target);
1097
+ onConfirm(get(e, 'target.0.value', ''), e.target);
940
1098
  },
941
1099
  children: [jsxRuntime.jsx("small", {
942
1100
  style: {
@@ -968,51 +1126,6 @@
968
1126
  });
969
1127
  }
970
1128
 
971
- function useSetState(initialState) {
972
- var _useState = React.useState(initialState),
973
- state = _useState[0],
974
- set = _useState[1];
975
-
976
- var setState = React.useCallback(function (patch) {
977
- set(function (prevState) {
978
- return Object.assign({}, prevState, patch instanceof Function ? patch(prevState) : patch);
979
- });
980
- }, [set]);
981
- return [state, setState];
982
- }
983
-
984
- function _catch(body, recover) {
985
- try {
986
- var result = body();
987
- } catch (e) {
988
- return recover(e);
989
- }
990
-
991
- if (result && result.then) {
992
- return result.then(void 0, recover);
993
- }
994
-
995
- return result;
996
- }
997
-
998
- var initial = {
999
- loading: undefined,
1000
- isError: false,
1001
- errorMessage: undefined,
1002
- result: undefined,
1003
- response: undefined
1004
- };
1005
-
1006
- var getErrorMessage = function getErrorMessage(dataError, defaultValue) {
1007
- if (dataError && dataError.details) {
1008
- return dataError.details;
1009
- } else if (dataError && dataError.reason) {
1010
- return dataError.reason;
1011
- }
1012
-
1013
- return defaultValue;
1014
- };
1015
-
1016
1129
  var processResponse = function processResponse(res, ready_body) {
1017
1130
  if (ready_body === void 0) {
1018
1131
  ready_body = true;
@@ -1032,7 +1145,7 @@
1032
1145
  return {
1033
1146
  isError: true,
1034
1147
  loading: false,
1035
- errorMessage: getErrorMessage(_res$json2, res.status),
1148
+ errorMessage: getErrorMessage(_res$json2, res.status).toString(),
1036
1149
  response: res
1037
1150
  };
1038
1151
  });
@@ -1041,10 +1154,66 @@
1041
1154
  }
1042
1155
  };
1043
1156
 
1044
- var patch = function patch(setState, Ctx) {
1157
+ var getErrorMessage = function getErrorMessage(dataError, defaultValue) {
1158
+ if (dataError && dataError.details) {
1159
+ return dataError.details;
1160
+ } else if (dataError && dataError.reason) {
1161
+ return dataError.reason;
1162
+ }
1163
+
1164
+ return defaultValue;
1165
+ };
1166
+
1167
+ /**
1168
+ * Do setState like react class component.
1169
+ */
1170
+
1171
+ function useSetState(initialState) {
1172
+ var _useState = React.useState(initialState),
1173
+ state = _useState[0],
1174
+ setState = _useState[1]; // Function which accepts a partial state to merge
1175
+
1176
+
1177
+ var setCustomState = React.useCallback(function (newPartialState) {
1178
+ try {
1179
+ setState(function (prevState) {
1180
+ return _extends({}, prevState, newPartialState);
1181
+ });
1182
+ } catch (error) {
1183
+ // eslint-disable-next-line no-console
1184
+ console.error(error);
1185
+ }
1186
+ }, []); // Return
1187
+
1188
+ return [state, setCustomState];
1189
+ } // **** Export Default **** //
1190
+
1191
+ function _catch(body, recover) {
1192
+ try {
1193
+ var result = body();
1194
+ } catch (e) {
1195
+ return recover(e);
1196
+ }
1197
+
1198
+ if (result && result.then) {
1199
+ return result.then(void 0, recover);
1200
+ }
1201
+
1202
+ return result;
1203
+ }
1204
+
1205
+ var initial = {
1206
+ loading: undefined,
1207
+ isError: false,
1208
+ errorMessage: undefined,
1209
+ result: undefined,
1210
+ response: undefined
1211
+ };
1212
+
1213
+ function patch(setState, Ctx) {
1045
1214
  return function (data, endpoint, body) {
1046
- if (endpoint === void 0) {
1047
- endpoint = undefined;
1215
+ if (data === void 0) {
1216
+ data = {};
1048
1217
  }
1049
1218
 
1050
1219
  if (body === void 0) {
@@ -1052,7 +1221,7 @@
1052
1221
  }
1053
1222
 
1054
1223
  try {
1055
- function _temp5() {
1224
+ function _temp3() {
1056
1225
  setState(newState);
1057
1226
  return newState;
1058
1227
  }
@@ -1062,7 +1231,7 @@
1062
1231
  });
1063
1232
  var newState = {};
1064
1233
 
1065
- var _temp6 = _catch(function () {
1234
+ var _temp4 = _catch(function () {
1066
1235
  var path = endpoint ? "" + Ctx.path + endpoint : Ctx.path;
1067
1236
  return Promise.resolve(Ctx.client.patch(path, data)).then(function (res) {
1068
1237
  return Promise.resolve(processResponse(res, body)).then(function (_processResponse) {
@@ -1077,29 +1246,25 @@
1077
1246
  };
1078
1247
  });
1079
1248
 
1080
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp5) : _temp5(_temp6));
1249
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
1081
1250
  } catch (e) {
1082
1251
  return Promise.reject(e);
1083
1252
  }
1084
1253
  };
1085
- };
1254
+ }
1086
1255
 
1087
- var del = function del(setState, Ctx) {
1256
+ function del(setState, Ctx) {
1088
1257
  return function (data, endpoint, body) {
1089
1258
  if (data === void 0) {
1090
1259
  data = {};
1091
1260
  }
1092
1261
 
1093
- if (endpoint === void 0) {
1094
- endpoint = undefined;
1095
- }
1096
-
1097
1262
  if (body === void 0) {
1098
1263
  body = false;
1099
1264
  }
1100
1265
 
1101
1266
  try {
1102
- function _temp9() {
1267
+ function _temp7() {
1103
1268
  setState(newState);
1104
1269
  return newState;
1105
1270
  }
@@ -1109,7 +1274,7 @@
1109
1274
  });
1110
1275
  var newState = {};
1111
1276
 
1112
- var _temp10 = _catch(function () {
1277
+ var _temp8 = _catch(function () {
1113
1278
  var path = endpoint ? "" + Ctx.path + endpoint : Ctx.path;
1114
1279
  return Promise.resolve(Ctx.client.delete(path, data)).then(function (res) {
1115
1280
  return Promise.resolve(processResponse(res, body)).then(function (_processResponse2) {
@@ -1124,17 +1289,17 @@
1124
1289
  };
1125
1290
  });
1126
1291
 
1127
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
1292
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8));
1128
1293
  } catch (e) {
1129
1294
  return Promise.reject(e);
1130
1295
  }
1131
1296
  };
1132
- };
1297
+ }
1133
1298
 
1134
- var post = function post(setState, Ctx) {
1299
+ function post(setState, Ctx) {
1135
1300
  return function (data, endpoint, body) {
1136
- if (endpoint === void 0) {
1137
- endpoint = undefined;
1301
+ if (data === void 0) {
1302
+ data = {};
1138
1303
  }
1139
1304
 
1140
1305
  if (body === void 0) {
@@ -1142,7 +1307,7 @@
1142
1307
  }
1143
1308
 
1144
1309
  try {
1145
- function _temp13() {
1310
+ function _temp11() {
1146
1311
  setState(newState);
1147
1312
  return newState;
1148
1313
  }
@@ -1152,7 +1317,7 @@
1152
1317
  });
1153
1318
  var newState = {};
1154
1319
 
1155
- var _temp14 = _catch(function () {
1320
+ var _temp12 = _catch(function () {
1156
1321
  var path = endpoint ? "" + Ctx.path + endpoint : Ctx.path;
1157
1322
  return Promise.resolve(Ctx.client.post(path, data)).then(function (res) {
1158
1323
  return Promise.resolve(processResponse(res, body)).then(function (_processResponse3) {
@@ -1167,21 +1332,17 @@
1167
1332
  };
1168
1333
  });
1169
1334
 
1170
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
1335
+ return Promise.resolve(_temp12 && _temp12.then ? _temp12.then(_temp11) : _temp11(_temp12));
1171
1336
  } catch (e) {
1172
1337
  return Promise.reject(e);
1173
1338
  }
1174
1339
  };
1175
- };
1340
+ }
1176
1341
 
1177
- var get = function get(setState, Ctx) {
1342
+ function get$1(setState, Ctx) {
1178
1343
  return function (endpoint) {
1179
- if (endpoint === void 0) {
1180
- endpoint = undefined;
1181
- }
1182
-
1183
1344
  try {
1184
- function _temp17() {
1345
+ function _temp15() {
1185
1346
  setState(newState);
1186
1347
  return newState;
1187
1348
  }
@@ -1191,7 +1352,7 @@
1191
1352
  });
1192
1353
  var newState = {};
1193
1354
 
1194
- var _temp18 = _catch(function () {
1355
+ var _temp16 = _catch(function () {
1195
1356
  var path = endpoint ? "" + Ctx.path + endpoint : Ctx.path;
1196
1357
  return Promise.resolve(Ctx.client.get(path)).then(function (res) {
1197
1358
  return Promise.resolve(processResponse(res, true)).then(function (_processResponse4) {
@@ -1206,12 +1367,16 @@
1206
1367
  };
1207
1368
  });
1208
1369
 
1209
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
1370
+ return Promise.resolve(_temp16 && _temp16.then ? _temp16.then(_temp15) : _temp15(_temp16));
1210
1371
  } catch (e) {
1211
1372
  return Promise.reject(e);
1212
1373
  }
1213
1374
  };
1214
- };
1375
+ } // const get = (
1376
+ // setState: (value: Partial<State>) => void,
1377
+ // Ctx: Traversal
1378
+ // ) =>
1379
+
1215
1380
 
1216
1381
  function useCrudContext() {
1217
1382
  var Ctx = useTraversal();
@@ -1225,7 +1390,7 @@
1225
1390
  patch: patch(setState, Ctx),
1226
1391
  del: del(setState, Ctx),
1227
1392
  post: post(setState, Ctx),
1228
- get: get(setState, Ctx)
1393
+ get: get$1(setState, Ctx)
1229
1394
  });
1230
1395
  }
1231
1396
 
@@ -1273,9 +1438,6 @@
1273
1438
  children: jsxRuntime.jsx(Form, {
1274
1439
  loading: loading,
1275
1440
  onSubmit: doSubmit,
1276
- onError: function onError(err) {
1277
- return console.log(err);
1278
- },
1279
1441
  actionName: 'Add ' + type,
1280
1442
  title: 'Add ' + type,
1281
1443
  type: type,
@@ -1285,31 +1447,52 @@
1285
1447
  }
1286
1448
 
1287
1449
  var Permissions = ['guillotina.AddContent', 'guillotina.ModifyContent', 'guillotina.ViewContent', 'guillotina.DeleteContent', 'guillotina.AccessContent', 'guillotina.SeePermissions', 'guillotina.ChangePermissions', 'guillotina.MoveContent', 'guillotina.DuplicateContent', 'guillotina.ReadConfiguration', 'guillotina.RegisterConfigurations', 'guillotina.WriteConfiguration', 'guillotina.ManageAddons', 'guillotina.swagger.View'];
1288
- var Config = {
1450
+ var defaultConfig = {
1289
1451
  DisabledTypes: ['UserManager', 'GroupManager'],
1290
1452
  PageSize: 10,
1291
1453
  DelayActions: 200,
1292
1454
  Permissions: Permissions,
1293
1455
  SearchEngine: 'PostreSQL',
1456
+ // Elasticsearch
1294
1457
  fieldHaveDeleteButton: function fieldHaveDeleteButton(schema) {
1295
1458
  return (schema == null ? void 0 : schema.widget) === 'file' || (schema == null ? void 0 : schema.widget) === 'select' || (schema == null ? void 0 : schema.type) === 'array';
1296
1459
  }
1297
1460
  };
1298
- var calculated = Object.assign({}, Config);
1299
-
1300
- var addConfig = function addConfig(additional, original) {
1301
- var rest = Object.assign({}, original);
1302
- Object.keys(additional).forEach(function (item) {
1303
- if (typeof Config[item] === 'object' && Array.isArray(Config[item])) {
1304
- rest[item] = [].concat(Config[item], additional[item]);
1305
- } else if (typeof Config[item] === 'object') {
1306
- rest[item] = Object.assign({}, Config[item], additional[item]);
1461
+ var calculated = Object.assign({}, defaultConfig);
1462
+
1463
+ function addConfig(updates, currentConfig) {
1464
+ var updatedConfig = _extends({}, currentConfig);
1465
+
1466
+ Object.entries(updates).forEach(function (_ref) {
1467
+ var key = _ref[0],
1468
+ value = _ref[1];
1469
+ var currentKey = key;
1470
+ var currentValue = currentConfig[currentKey];
1471
+
1472
+ if (Array.isArray(value) && Array.isArray(currentValue)) {
1473
+ var _extends2;
1474
+
1475
+ // Correctly type the array concatenation
1476
+ updatedConfig = _extends({}, updatedConfig, (_extends2 = {}, _extends2[currentKey] = [].concat(currentValue, value), _extends2));
1477
+ } else if (isPlainObject(value) && isPlainObject(currentValue)) {
1478
+ var _extends3;
1479
+
1480
+ // Correctly type the object merging
1481
+ updatedConfig = _extends({}, updatedConfig, (_extends3 = {}, _extends3[currentKey] = _extends({}, currentValue, value), _extends3));
1307
1482
  } else {
1308
- rest[item] = additional[item];
1483
+ var _extends4;
1484
+
1485
+ // Directly assign all other types
1486
+ updatedConfig = _extends({}, updatedConfig, (_extends4 = {}, _extends4[currentKey] = value, _extends4));
1309
1487
  }
1310
1488
  });
1311
- return rest;
1312
- };
1489
+ return updatedConfig;
1490
+ } // Helper function to check if a value is a plain object (and not a React node, etc.)
1491
+
1492
+
1493
+ function isPlainObject(value) {
1494
+ return Object.prototype.toString.call(value) === '[object Object]';
1495
+ }
1313
1496
 
1314
1497
  function useConfig(cfg) {
1315
1498
  if (cfg === void 0) {
@@ -1333,7 +1516,7 @@
1333
1516
  setLoading(true);
1334
1517
  var actions = items.map(function (item) {
1335
1518
  try {
1336
- return Promise.resolve(Ctx.client.delete("" + Ctx.path + item['@name'])).then(function (res) {
1519
+ return Promise.resolve(Ctx.client.delete("" + Ctx.path + item.id, {})).then(function (res) {
1337
1520
  var _temp = function () {
1338
1521
  if (!res.ok) {
1339
1522
  return Promise.resolve(res.json()).then(function (err) {
@@ -1347,7 +1530,9 @@
1347
1530
  } catch (e) {
1348
1531
  return Promise.reject(e);
1349
1532
  }
1350
- });
1533
+ }); // this sleep is here, to let elasticsearch, wait for
1534
+ // index our operations... (will work 99% of use cases)
1535
+
1351
1536
  actions.push(sleep(cfg.DelayActions));
1352
1537
  return Promise.resolve(Promise.all(actions)).then(function () {
1353
1538
  if (errors.length === 0) {
@@ -1377,9 +1562,9 @@
1377
1562
 
1378
1563
  var _props$items = props.items,
1379
1564
  items = _props$items === void 0 ? [] : _props$items;
1380
- var last = items[items.length - 1]['@name'];
1565
+ var last = items[items.length - 1].id;
1381
1566
  var itemsNames = items.map(function (item) {
1382
- return item['@name'];
1567
+ return item.id;
1383
1568
  }).join(', ').replace(", " + last, " and " + last);
1384
1569
  return jsxRuntime.jsx(Confirm, {
1385
1570
  loading: loading,
@@ -1406,7 +1591,7 @@
1406
1591
  dataTest = _ref.dataTest;
1407
1592
  var inputRef = React.useRef(null);
1408
1593
 
1409
- var _useState = React.useState(checked),
1594
+ var _useState = React.useState(!!checked),
1410
1595
  state = _useState[0],
1411
1596
  setState = _useState[1];
1412
1597
 
@@ -1425,13 +1610,13 @@
1425
1610
  className: "field",
1426
1611
  children: jsxRuntime.jsxs("label", {
1427
1612
  htmlFor: id,
1428
- className: classnames(['checkbox', className]),
1613
+ className: classnames(['checkbox', className != null ? className : '']),
1429
1614
  children: [jsxRuntime.jsx("input", {
1430
1615
  ref: inputRef,
1431
1616
  disabled: disabled || loading,
1432
1617
  id: id,
1433
1618
  type: "checkbox",
1434
- className: classnames(['checkbox', classNameInput]),
1619
+ className: classnames(['checkbox', classNameInput != null ? classNameInput : '']),
1435
1620
  checked: state,
1436
1621
  onChange: updateState,
1437
1622
  "data-test": dataTest
@@ -1469,7 +1654,7 @@
1469
1654
  return result;
1470
1655
  };
1471
1656
 
1472
- var useInput = function useInput(onChange, value, validator) {
1657
+ var useInput = function useInput(onChange, value, validators) {
1473
1658
  var _useState = React.useState({
1474
1659
  hasError: false,
1475
1660
  value: value
@@ -1478,7 +1663,7 @@
1478
1663
  setState = _useState[1];
1479
1664
 
1480
1665
  var onUpdate = function onUpdate(ev) {
1481
- var value = ev && ev.target ? ev.target.value : ev ? ev : '';
1666
+ var value = ev && ev.target ? ev.target.value : '';
1482
1667
  setState({
1483
1668
  value: value,
1484
1669
  hasError: false
@@ -1487,7 +1672,7 @@
1487
1672
  };
1488
1673
 
1489
1674
  var onBlur = function onBlur() {
1490
- var hasError = applyValidators(state.value, validator) === false;
1675
+ var hasError = applyValidators(state.value, validators) === false;
1491
1676
  if (hasError) setState({
1492
1677
  value: state.value,
1493
1678
  hasError: hasError
@@ -1517,6 +1702,9 @@
1517
1702
  };
1518
1703
  };
1519
1704
 
1705
+ // From github.com/protonmail/proton-shared
1706
+
1707
+ /* eslint-disable no-useless-escape */
1520
1708
  var REGEX_EMAIL = /(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/i;
1521
1709
  var REGEX_URL = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-_]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!\/\\\w]*))?)/;
1522
1710
  var REGEX_HEX_COLOR = /^#([a-f0-9]{3,4}|[a-f0-9]{4}(?:[a-f0-9]{2}){1,2})\b$/i;
@@ -1617,10 +1805,10 @@
1617
1805
  dataTest = _ref$dataTest === void 0 ? 'testInput' : _ref$dataTest,
1618
1806
  disabled = _ref.disabled,
1619
1807
  onKeyUp = _ref.onKeyUp;
1620
- var validatorFn = null;
1808
+ var validatorFn = [];
1621
1809
 
1622
1810
  if (required) {
1623
- validatorFn = Array.isArray(validator) ? validator.push(notEmpty) : [validator, notEmpty];
1811
+ validatorFn = Array.isArray(validator) ? [].concat(validator, [notEmpty]) : [validator, notEmpty];
1624
1812
  }
1625
1813
 
1626
1814
  var _useInput = useInput(onChange, value != null ? value : '', validatorFn),
@@ -1632,17 +1820,18 @@
1632
1820
 
1633
1821
  var _useState2 = React.useState(false),
1634
1822
  mounted = _useState2[0],
1635
- setMounted = _useState2[1];
1823
+ setMounted = _useState2[1]; // eslint-disable-next-line
1824
+
1636
1825
 
1637
- ref = ref || React.useRef();
1826
+ var newRef = ref || React.useRef();
1638
1827
  React.useEffect(function () {
1639
1828
  setMounted(true);
1640
1829
  }, []);
1641
1830
  React.useEffect(function () {
1642
- if (autofocus && !error && ref != null && typeof ref !== 'function') {
1643
- ref.current.focus();
1831
+ if (autofocus && !error && newRef != null && typeof newRef !== 'function' && newRef.current) {
1832
+ newRef.current.focus();
1644
1833
  }
1645
- }, [mounted, autofocus, ref, error]);
1834
+ }, [mounted, autofocus, newRef, error]);
1646
1835
  var theError = state.hasError ? errorMessage || 'invalid field' : '';
1647
1836
  var statusClasses = state.hasError ? 'is-danger' : '';
1648
1837
 
@@ -1683,7 +1872,8 @@
1683
1872
 
1684
1873
  var Icon = function Icon(_ref) {
1685
1874
  var icon = _ref.icon,
1686
- className = _ref.className,
1875
+ _ref$className = _ref.className,
1876
+ className = _ref$className === void 0 ? '' : _ref$className,
1687
1877
  align = _ref.align;
1688
1878
  var addClass = className ? className.split(' ') : [className];
1689
1879
  align = align || 'is-right';
@@ -1700,7 +1890,8 @@
1700
1890
  value = _ref$value === void 0 ? '' : _ref$value,
1701
1891
  dataTest = _ref.dataTest,
1702
1892
  placeholder = _ref.placeholder,
1703
- id = _ref.id;
1893
+ id = _ref.id,
1894
+ onChange = _ref.onChange;
1704
1895
  var intl = reactIntl.useIntl();
1705
1896
  return jsxRuntime.jsx(Input, {
1706
1897
  type: "email",
@@ -1718,7 +1909,8 @@
1718
1909
  icon: "fas fa-envelope"
1719
1910
  }),
1720
1911
  id: id,
1721
- placeholder: placeholder
1912
+ placeholder: placeholder,
1913
+ onChange: onChange
1722
1914
  });
1723
1915
  };
1724
1916
 
@@ -1792,24 +1984,26 @@
1792
1984
  remotes = _ref$remotes === void 0 ? {} : _ref$remotes,
1793
1985
  _ref$submitButton = _ref.submitButton,
1794
1986
  submitButton = _ref$submitButton === void 0 ? true : _ref$submitButton;
1795
- var ref = React.useRef();
1987
+ var ref = React.useRef(null);
1796
1988
  var properties = schema.properties,
1797
1989
  required = schema.required;
1798
- var values = Object.assign({}, formData || {});
1990
+ var values = Object.assign({}, formData || {}); // build initial state
1991
+
1799
1992
  var initialState = {};
1800
1993
  var fields = Object.keys(properties).filter(function (x) {
1801
1994
  return !exclude.includes(x);
1802
1995
  });
1803
1996
  fields.forEach(function (element) {
1804
1997
  initialState[element] = values[element] || undefined;
1805
- });
1998
+ }); // Register remotes
1806
1999
 
1807
- if (!ref.current) {
2000
+ if (ref.current === null) {
1808
2001
  ref.current = {};
1809
2002
  Object.keys(remotes).forEach(function (item) {
1810
2003
  return ref.current[item] = remotes[item];
1811
2004
  });
1812
2005
  } else {
2006
+ // apply remote changes
1813
2007
  Object.keys(remotes).forEach(function (key) {
1814
2008
  if (JSON.stringify(ref.current[key]) !== JSON.stringify(remotes[key])) {
1815
2009
  ref.current[key] = remotes[key];
@@ -1820,15 +2014,16 @@
1820
2014
  ref.current = ref.current || {};
1821
2015
 
1822
2016
  var onUpdate = function onUpdate(field) {
1823
- return function (ev) {
1824
- ref.current[field] = ev.target ? ev.target.value : ev.value || ev;
2017
+ return function (value) {
2018
+ ref.current[field] = value;
1825
2019
  };
1826
2020
  };
1827
2021
 
1828
2022
  var GetTag = function GetTag(_ref2) {
1829
2023
  var field = _ref2.field;
1830
2024
  var property = properties[field];
1831
- var Tag = formComponents[property.widget || property.type];
2025
+ var key = property.widget || property.type;
2026
+ var Tag = formComponents[key];
1832
2027
  var props = {
1833
2028
  value: initialState[field],
1834
2029
  onChange: onUpdate(field),
@@ -1843,7 +2038,6 @@
1843
2038
  props.placeholder += ' *';
1844
2039
  }
1845
2040
 
1846
- Tag.displayName = field + "Field";
1847
2041
  return jsxRuntime.jsx(Tag, _extends({}, props));
1848
2042
  };
1849
2043
 
@@ -1912,9 +2106,13 @@
1912
2106
  selectValue = selectValue.concat([ev.target.selectedOptions[i].value]);
1913
2107
  }
1914
2108
 
1915
- onChange(selectValue);
2109
+ if (onChange) {
2110
+ onChange(selectValue);
2111
+ }
1916
2112
  } else {
1917
- onChange(ev.target.value);
2113
+ if (onChange) {
2114
+ onChange(ev.target.value);
2115
+ }
1918
2116
  }
1919
2117
  };
1920
2118
 
@@ -1963,33 +2161,6 @@
1963
2161
  });
1964
2162
  Select.displayName = 'Select';
1965
2163
 
1966
- var formatDate = function formatDate(str) {
1967
- var d = new Date(str);
1968
- var minutes = d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes();
1969
- return d.getDate() + "/" + (d.getMonth() + 1) + "/" + d.getFullYear() + " " + d.getHours() + ":" + minutes;
1970
- };
1971
- var get$1 = function get(obj, path, defValue) {
1972
- var _pathArray$reduce;
1973
-
1974
- if (!path) return undefined;
1975
- var pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
1976
- return (_pathArray$reduce = pathArray.reduce(function (prevObj, key) {
1977
- return prevObj && prevObj[key];
1978
- }, obj)) != null ? _pathArray$reduce : defValue;
1979
- };
1980
- function getNewId(id) {
1981
- if (id === void 0) {
1982
- id = '';
1983
- }
1984
-
1985
- var suffix = '-copy-';
1986
- var rgx = new RegExp("($|" + suffix + "\\d*)");
1987
- return stringToSlug(id).replace(rgx, function (r) {
1988
- var num = parseInt(r.replace(suffix, '') || '0');
1989
- return "" + suffix + (num + 1);
1990
- });
1991
- }
1992
-
1993
2164
  function _catch$1(body, recover) {
1994
2165
  try {
1995
2166
  var result = body();
@@ -2005,10 +2176,6 @@
2005
2176
  }
2006
2177
 
2007
2178
  function useVocabulary(vocabularyName, path) {
2008
- if (path === void 0) {
2009
- path = null;
2010
- }
2011
-
2012
2179
  var traversal = useTraversal();
2013
2180
 
2014
2181
  var _useSetState = useSetState({
@@ -2077,8 +2244,10 @@
2077
2244
  var vocabulary = useVocabulary(vocabularyName);
2078
2245
 
2079
2246
  var getOptions = function getOptions() {
2080
- if (get$1(vocabulary, 'data.items', null)) {
2081
- var vocData = vocabulary.data.items.map(function (item) {
2247
+ if (get(vocabulary, 'data.items', null)) {
2248
+ var _vocabulary$data$item, _vocabulary$data;
2249
+
2250
+ var vocData = ((_vocabulary$data$item = vocabulary == null ? void 0 : (_vocabulary$data = vocabulary.data) == null ? void 0 : _vocabulary$data.items) != null ? _vocabulary$data$item : []).map(function (item) {
2082
2251
  return {
2083
2252
  text: item.title,
2084
2253
  value: item.token
@@ -2124,6 +2293,8 @@
2124
2293
  });
2125
2294
  SelectVocabulary.displayName = 'SelectVocabulary';
2126
2295
 
2296
+ // https://github.com/molefrog/wouter
2297
+
2127
2298
  var setURLParams = function setURLParams(p) {
2128
2299
  return window.history.pushState(0, '0', '' + '?' + p.toString().replace(/%2F/g, '/'));
2129
2300
  };
@@ -2143,7 +2314,10 @@
2143
2314
 
2144
2315
  var prevPath = React.useRef(path);
2145
2316
  React.useEffect(function () {
2146
- patchHistoryEvents();
2317
+ patchHistoryEvents(); // this function checks if the location has been changed since the
2318
+ // last render and updates the state only when needed.
2319
+ // unfortunately, we can't rely on `path` value here, since it can be stale,
2320
+ // that's why we store the last pathname in a ref.
2147
2321
 
2148
2322
  var checkForUpdates = function checkForUpdates() {
2149
2323
  var pathname = currentSearchParams();
@@ -2153,14 +2327,22 @@
2153
2327
  var events = ['popstate', 'pushState', 'replaceState'];
2154
2328
  events.map(function (e) {
2155
2329
  return window.addEventListener(e, checkForUpdates);
2156
- });
2330
+ }); // it's possible that an update has occurred between render and the effect handler,
2331
+ // so we run additional check on mount to catch these updates. Based on:
2332
+ // https://gist.github.com/bvaughn/e25397f70e8c65b0ae0d7c90b731b189
2333
+
2157
2334
  checkForUpdates();
2158
2335
  return function () {
2159
2336
  events.map(function (e) {
2160
2337
  return window.removeEventListener(e, checkForUpdates);
2161
2338
  });
2162
2339
  };
2163
- }, []);
2340
+ }, []); // the 2nd argument of the `useLocation` return value is a function
2341
+ // that allows to perform a navigation.
2342
+ //
2343
+ // the function reference should stay the same between re-renders, so that
2344
+ // it can be passed down as an element prop without any performance concerns.
2345
+
2164
2346
  var navigate = React.useCallback(function (to, replace) {
2165
2347
  if (replace) {
2166
2348
  clean(to);
@@ -2179,23 +2361,40 @@
2179
2361
  setURLParams(current);
2180
2362
  }, [path]);
2181
2363
  return [path, navigate, remove];
2182
- };
2364
+ }; // While History API does have `popstate` event, the only
2365
+ // proper way to listen to changes via `push/replaceState`
2366
+ // is to monkey-patch these methods.
2367
+ //
2368
+ // See https://stackoverflow.com/a/4585031
2369
+
2183
2370
  var patched = 0;
2184
2371
 
2185
2372
  var patchHistoryEvents = function patchHistoryEvents() {
2186
2373
  if (patched) return;
2187
- ['pushState', 'replaceState'].map(function (type) {
2188
- var original = window.history[type];
2189
-
2190
- window.history[type] = function () {
2191
- var args = [].slice.call(arguments);
2192
- var result = original.apply(this, args);
2193
- var event = new Event(type);
2194
- event.arguments = args;
2195
- dispatchEvent(event);
2196
- return result;
2197
- };
2198
- });
2374
+ var originalPushState = window.history.pushState;
2375
+
2376
+ window.history.pushState = function () {
2377
+ var args = [].slice.call(arguments);
2378
+ var result = originalPushState.apply(this, args); // eslint-disable-next-line @typescript-eslint/no-explicit-any
2379
+
2380
+ var event = new Event('pushState');
2381
+ event.arguments = args;
2382
+ dispatchEvent(event);
2383
+ return result;
2384
+ };
2385
+
2386
+ var originalReplaceState = window.history.replaceState;
2387
+
2388
+ window.history.replaceState = function () {
2389
+ var args = [].slice.call(arguments);
2390
+ var result = originalReplaceState.apply(this, args); // eslint-disable-next-line @typescript-eslint/no-explicit-any
2391
+
2392
+ var event = new Event('replaceState');
2393
+ event.arguments = args;
2394
+ dispatchEvent(event);
2395
+ return result;
2396
+ };
2397
+
2199
2398
  return patched = 1;
2200
2399
  };
2201
2400
 
@@ -2250,7 +2449,7 @@
2250
2449
  children = _ref.children,
2251
2450
  _ref$style = _ref.style,
2252
2451
  style = _ref$style === void 0 ? {} : _ref$style;
2253
- var link = React.useRef();
2452
+ var link = React.useRef(null);
2254
2453
 
2255
2454
  function onClick() {
2256
2455
  if (link && link.current) {
@@ -2357,15 +2556,7 @@
2357
2556
 
2358
2557
  var _proto = RestClient.prototype;
2359
2558
 
2360
- _proto.request = function request(path, data, headers) {
2361
- if (data === void 0) {
2362
- data = undefined;
2363
- }
2364
-
2365
- if (headers === void 0) {
2366
- headers = undefined;
2367
- }
2368
-
2559
+ _proto.request = function request(path, data, headers, signal) {
2369
2560
  try {
2370
2561
  var _this2 = this;
2371
2562
 
@@ -2381,9 +2572,18 @@
2381
2572
  path = "/" + path;
2382
2573
  }
2383
2574
 
2384
- data = data || {};
2385
- data.headers = headers || _this2.getHeaders();
2386
- return Promise.resolve(fetch("" + _this2.url + path, data));
2575
+ var dataRequest = data || {};
2576
+ dataRequest.headers = _this2.getHeaders();
2577
+
2578
+ if (headers) {
2579
+ dataRequest.headers = _extends({}, dataRequest.headers, headers);
2580
+ }
2581
+
2582
+ if (signal) {
2583
+ dataRequest.signal = signal;
2584
+ }
2585
+
2586
+ return Promise.resolve(fetch("" + _this2.url + path, dataRequest));
2387
2587
  } catch (e) {
2388
2588
  return Promise.reject(e);
2389
2589
  }
@@ -2391,12 +2591,12 @@
2391
2591
 
2392
2592
  _proto.getHeaders = function getHeaders() {
2393
2593
  var authToken = this.auth.getToken();
2394
- if (!authToken) return {};
2395
- return {
2396
- Accept: 'application/json',
2397
- 'Content-Type': 'application/json',
2398
- Authorization: 'Bearer ' + authToken
2399
- };
2594
+ var headersInit = {};
2595
+ if (!authToken) return headersInit;
2596
+ headersInit.Accept = 'application/json';
2597
+ headersInit['Content-Type'] = 'application/json';
2598
+ headersInit.Authorization = 'Bearer ' + authToken;
2599
+ return headersInit;
2400
2600
  };
2401
2601
 
2402
2602
  _proto.post = function post(path, data) {
@@ -2412,11 +2612,11 @@
2412
2612
  }
2413
2613
  };
2414
2614
 
2415
- _proto.get = function get(path) {
2615
+ _proto.get = function get(path, signal) {
2416
2616
  try {
2417
2617
  var _this6 = this;
2418
2618
 
2419
- return Promise.resolve(_this6.request(path));
2619
+ return Promise.resolve(_this6.request(path, undefined, undefined, signal));
2420
2620
  } catch (e) {
2421
2621
  return Promise.reject(e);
2422
2622
  }
@@ -2454,24 +2654,20 @@
2454
2654
 
2455
2655
  var headers = _this12.getHeaders();
2456
2656
 
2457
- delete headers['Content-Type'];
2458
- headers['Content-Type'] = data['content-type'];
2459
- headers['X-UPLOAD-FILENAME'] = data.filename;
2460
- headers['Content-Encoding'] = 'base64';
2657
+ var newHeaders = {};
2658
+ newHeaders['Content-Type'] = data['content-type'];
2659
+ newHeaders['X-UPLOAD-FILENAME'] = data.filename;
2660
+ newHeaders['Content-Encoding'] = 'base64';
2461
2661
  return Promise.resolve(_this12.request(path, {
2462
2662
  method: 'PATCH',
2463
2663
  body: data.data
2464
- }, headers));
2664
+ }, _extends({}, headers, newHeaders)));
2465
2665
  } catch (e) {
2466
2666
  return Promise.reject(e);
2467
2667
  }
2468
2668
  };
2469
2669
 
2470
2670
  _proto.delete = function _delete(path, data) {
2471
- if (data === void 0) {
2472
- data = undefined;
2473
- }
2474
-
2475
2671
  try {
2476
2672
  var _this14 = this;
2477
2673
 
@@ -2612,6 +2808,14 @@
2612
2808
  }
2613
2809
  };
2614
2810
 
2811
+ _proto.getQueryParamsSearchFunction = function getQueryParamsSearchFunction(name) {
2812
+ if (name === 'getQueryParamsElasticsearch') {
2813
+ return this.getQueryParamsElasticsearch;
2814
+ }
2815
+
2816
+ return this.getQueryParamsPostresql;
2817
+ };
2818
+
2615
2819
  _proto.getQueryParamsPostresql = function getQueryParamsPostresql(_ref) {
2616
2820
  var _ref$start = _ref.start,
2617
2821
  start = _ref$start === void 0 ? 0 : _ref$start,
@@ -2703,7 +2907,7 @@
2703
2907
  label: 'id/name',
2704
2908
  key: 'title',
2705
2909
  isSortable: true,
2706
- child: function child(m, navigate, search) {
2910
+ child: function child(m, _navigate, search) {
2707
2911
  return jsxRuntime.jsxs(TdLink, {
2708
2912
  model: m,
2709
2913
  children: [m.name, search && jsxRuntime.jsxs(React__default['default'].Fragment, {
@@ -2737,15 +2941,19 @@
2737
2941
  });
2738
2942
  }
2739
2943
  }];
2740
- };
2944
+ } // BBB API changes. Compat G5 and G6
2945
+ ;
2741
2946
 
2742
2947
  _proto.applyCompat = function applyCompat(data) {
2743
- data.member = data.items;
2744
- data.items_count = data.items_total;
2745
- return data;
2948
+ var result = _extends({}, data, {
2949
+ member: data.items,
2950
+ items_count: data.items_total
2951
+ });
2952
+
2953
+ return result;
2746
2954
  };
2747
2955
 
2748
- _proto.search = function search(path, params, container, prepare) {
2956
+ _proto.search = function search(path, params, container, prepare, signal) {
2749
2957
  if (container === void 0) {
2750
2958
  container = false;
2751
2959
  }
@@ -2767,7 +2975,7 @@
2767
2975
 
2768
2976
  var query = prepare ? toQueryString(params) : params;
2769
2977
  var url = path + "@search?" + query;
2770
- return Promise.resolve(_this7.rest.get(url)).then(function (res) {
2978
+ return Promise.resolve(_this7.rest.get(url, signal)).then(function (res) {
2771
2979
  return Promise.resolve(res.json()).then(function (data) {
2772
2980
  return _this7.applyCompat(data);
2773
2981
  });
@@ -2897,7 +3105,8 @@
2897
3105
 
2898
3106
  var _temp4 = function () {
2899
3107
  if (!cacheSchemas[name]) {
2900
- var url = _this25.getContainerFromPath(path);
3108
+ var url = _this25.getContainerFromPath(path); // todo: handle db case (only addable containers)
3109
+
2901
3110
 
2902
3111
  return Promise.resolve(_this25.rest.get(url + "@types/" + name)).then(function (res) {
2903
3112
  return Promise.resolve(res.json()).then(function (_res$json) {
@@ -2978,23 +3187,53 @@
2978
3187
  var users = _this37.getUsers(path);
2979
3188
 
2980
3189
  return Promise.resolve(Promise.all([groups, users])).then(function (_ref3) {
2981
- var gr = _ref3[0],
2982
- usr = _ref3[1];
3190
+ var responseGroups = _ref3[0],
3191
+ responseUsers = _ref3[1];
2983
3192
 
2984
- function _temp6(_gr$json) {
2985
- function _temp5(_usr$json) {
3193
+ function _temp8() {
3194
+ function _temp6() {
2986
3195
  return {
2987
- groups: _gr$json,
2988
- users: _usr$json
3196
+ groups: groupsData,
3197
+ users: usersData
2989
3198
  };
2990
3199
  }
2991
3200
 
2992
- var _usr$ok = usr.ok;
2993
- return _usr$ok ? Promise.resolve(usr.json()).then(_temp5) : _temp5([]);
3201
+ var _temp5 = function () {
3202
+ if (responseUsers) {
3203
+ return Promise.resolve(responseUsers.json()).then(function (usersDataResponse) {
3204
+ usersData = usersDataResponse.map(function (user) {
3205
+ return {
3206
+ '@name': user.id,
3207
+ user_roles: user.roles,
3208
+ fullname: user.fullname,
3209
+ email: user.email
3210
+ };
3211
+ });
3212
+ });
3213
+ }
3214
+ }();
3215
+
3216
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
2994
3217
  }
2995
3218
 
2996
- var _gr$ok = gr.ok;
2997
- return _gr$ok ? Promise.resolve(gr.json()).then(_temp6) : _temp6([]);
3219
+ var groupsData = [];
3220
+ var usersData = [];
3221
+
3222
+ var _temp7 = function () {
3223
+ if (responseGroups.ok) {
3224
+ return Promise.resolve(responseGroups.json()).then(function (groupsDataResponse) {
3225
+ groupsData = groupsDataResponse.map(function (group) {
3226
+ return {
3227
+ '@name': group.id,
3228
+ user_roles: group.roles,
3229
+ users: group.users
3230
+ };
3231
+ });
3232
+ });
3233
+ }
3234
+ }();
3235
+
3236
+ return _temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7);
2998
3237
  });
2999
3238
  } catch (e) {
3000
3239
  return Promise.reject(e);
@@ -3016,6 +3255,7 @@
3016
3255
  try {
3017
3256
  var _this41 = this;
3018
3257
 
3258
+ // paths used to query the API always has to start without a "/"
3019
3259
  if (path.startsWith('/')) {
3020
3260
  path = path.slice(1);
3021
3261
  }
@@ -3035,7 +3275,7 @@
3035
3275
  try {
3036
3276
  var _this43 = this;
3037
3277
 
3038
- function _temp10() {
3278
+ function _temp12() {
3039
3279
  return cacheTypes[path];
3040
3280
  }
3041
3281
 
@@ -3043,10 +3283,10 @@
3043
3283
  path = path.slice(1);
3044
3284
  }
3045
3285
 
3046
- var _temp11 = function () {
3286
+ var _temp13 = function () {
3047
3287
  if (!cacheTypes[path]) {
3048
3288
  return Promise.resolve(_this43.rest.get(path + '@addable-types')).then(function (types) {
3049
- var _temp7 = function () {
3289
+ var _temp9 = function () {
3050
3290
  if (types.status === 401 || types.status === 404) {
3051
3291
  cacheTypes[path] = [];
3052
3292
  } else {
@@ -3056,12 +3296,12 @@
3056
3296
  }
3057
3297
  }();
3058
3298
 
3059
- if (_temp7 && _temp7.then) return _temp7.then(function () {});
3299
+ if (_temp9 && _temp9.then) return _temp9.then(function () {});
3060
3300
  });
3061
3301
  }
3062
3302
  }();
3063
3303
 
3064
- return Promise.resolve(_temp11 && _temp11.then ? _temp11.then(_temp10) : _temp10(_temp11));
3304
+ return Promise.resolve(_temp13 && _temp13.then ? _temp13.then(_temp12) : _temp12(_temp13));
3065
3305
  } catch (e) {
3066
3306
  return Promise.reject(e);
3067
3307
  }
@@ -3073,17 +3313,24 @@
3073
3313
  return new GuillotinaClient(new RestClient(url, container, auth), container === '/');
3074
3314
  }
3075
3315
  var lightFileReader = function lightFileReader(file) {
3076
- return new Promise(function (resolve) {
3316
+ return new Promise(function (resolve, reject) {
3077
3317
  var reader = new FileReader();
3078
3318
  reader.readAsArrayBuffer(file);
3079
3319
 
3080
3320
  reader.onloadend = function (e) {
3081
- var fileData = e.target.result;
3082
- resolve({
3083
- filename: file.name.normalize('NFD').replace(/[\u0300-\u036f]/g, ''),
3084
- data: fileData,
3085
- 'content-type': file.type
3086
- });
3321
+ var _e$target;
3322
+
3323
+ var fileData = e == null ? void 0 : (_e$target = e.target) == null ? void 0 : _e$target.result;
3324
+
3325
+ if (fileData) {
3326
+ resolve({
3327
+ filename: file.name.normalize('NFD').replace(/[\u0300-\u036f]/g, ''),
3328
+ data: fileData,
3329
+ 'content-type': file.type
3330
+ });
3331
+ } else {
3332
+ reject('Error reading file');
3333
+ }
3087
3334
  };
3088
3335
  });
3089
3336
  };
@@ -3114,9 +3361,15 @@
3114
3361
 
3115
3362
  var changed = function changed(event) {
3116
3363
  try {
3117
- return Promise.resolve(lightFileReader(event.target.files[0])).then(function (fileToUpload) {
3118
- onChange(fileToUpload);
3119
- });
3364
+ var _temp2 = function () {
3365
+ if (event.target.files) {
3366
+ return Promise.resolve(lightFileReader(event.target.files[0])).then(function (fileToUpload) {
3367
+ onChange(fileToUpload);
3368
+ });
3369
+ }
3370
+ }();
3371
+
3372
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
3120
3373
  } catch (e) {
3121
3374
  return Promise.reject(e);
3122
3375
  }
@@ -3207,12 +3460,12 @@
3207
3460
 
3208
3461
  var defaultEvents = ['mousedown', 'touchstart'];
3209
3462
 
3210
- var on = function on(obj) {
3211
- return obj.addEventListener.apply(obj, [].slice.call(arguments, 1));
3463
+ var on = function on(obj, type, handler) {
3464
+ return obj.addEventListener(type, handler);
3212
3465
  };
3213
3466
 
3214
- var off = function off(obj) {
3215
- return obj.removeEventListener.apply(obj, [].slice.call(arguments, 1));
3467
+ var off = function off(obj, type, handler) {
3468
+ return obj.removeEventListener(type, handler);
3216
3469
  };
3217
3470
 
3218
3471
  function useClickAway(ref, onClickAway, events) {
@@ -3244,23 +3497,7 @@
3244
3497
  }, [events, ref]);
3245
3498
  }
3246
3499
 
3247
- function debounce(func, wait) {
3248
- var timeout;
3249
- return function () {
3250
- var context = this;
3251
- var args = arguments;
3252
-
3253
- var later = function later() {
3254
- timeout = null;
3255
- func.apply(context, args);
3256
- };
3257
-
3258
- clearTimeout(timeout);
3259
- timeout = setTimeout(later, wait);
3260
- };
3261
- }
3262
-
3263
- var initialState = {
3500
+ var initialState$1 = {
3264
3501
  page: 0,
3265
3502
  items: undefined,
3266
3503
  loading: false,
@@ -3270,10 +3507,9 @@
3270
3507
  var onChange = _ref.onChange,
3271
3508
  error = _ref.error,
3272
3509
  errorZoneClassName = _ref.errorZoneClassName,
3273
- _ref$traversal = _ref.traversal,
3274
- traversal = _ref$traversal === void 0 ? null : _ref$traversal,
3510
+ traversal = _ref.traversal,
3275
3511
  _ref$path = _ref.path,
3276
- path = _ref$path === void 0 ? null : _ref$path,
3512
+ path = _ref$path === void 0 ? undefined : _ref$path,
3277
3513
  _ref$qs = _ref.qs,
3278
3514
  qs = _ref$qs === void 0 ? [] : _ref$qs,
3279
3515
  _ref$queryCondition = _ref.queryCondition,
@@ -3288,14 +3524,14 @@
3288
3524
  _ref$dataTestItem = _ref.dataTestItem,
3289
3525
  dataTestItem = _ref$dataTestItem === void 0 ? 'searchInputItemTest' : _ref$dataTestItem,
3290
3526
  _ref$renderTextItemOp = _ref.renderTextItemOption,
3291
- renderTextItemOption = _ref$renderTextItemOp === void 0 ? null : _ref$renderTextItemOp,
3527
+ renderTextItemOption = _ref$renderTextItemOp === void 0 ? undefined : _ref$renderTextItemOp,
3292
3528
  _ref$typeNameQuery = _ref.typeNameQuery,
3293
- typeNameQuery = _ref$typeNameQuery === void 0 ? null : _ref$typeNameQuery,
3529
+ typeNameQuery = _ref$typeNameQuery === void 0 ? undefined : _ref$typeNameQuery,
3294
3530
  _ref$labelProperty = _ref.labelProperty,
3295
3531
  labelProperty = _ref$labelProperty === void 0 ? 'id' : _ref$labelProperty;
3296
3532
  var intl = reactIntl.useIntl();
3297
3533
 
3298
- var _useSetState = useSetState(initialState),
3534
+ var _useSetState = useSetState(initialState$1),
3299
3535
  options = _useSetState[0],
3300
3536
  setOptions = _useSetState[1];
3301
3537
 
@@ -3349,7 +3585,7 @@
3349
3585
  var searchTermParsed = ["id", value];
3350
3586
  var getSearch = traversal.registry.get;
3351
3587
  var fnName = getSearch('searchEngineQueryParamsFunction', SearchEngine);
3352
- var qsParsed = traversal.client[fnName]({
3588
+ var qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({
3353
3589
  path: traversal.path,
3354
3590
  start: 0,
3355
3591
  pageSize: PageSize,
@@ -3367,7 +3603,7 @@
3367
3603
 
3368
3604
  return Promise.resolve(traversal.client.search(path ? path : traversal.client.getContainerFromPath(traversal.path), searchTermQs, false, false)).then(function (data) {
3369
3605
  var newValuesLabel = data.items.reduce(function (result, item) {
3370
- result[item.id] = get$1(item, labelProperty, item.id);
3606
+ result[item.id] = get(item, labelProperty, item.id);
3371
3607
  return result;
3372
3608
  }, {});
3373
3609
  setValueLabel(newValuesLabel);
@@ -3395,6 +3631,7 @@
3395
3631
  }
3396
3632
 
3397
3633
  try {
3634
+ console.log('handle search input');
3398
3635
  setOptions({
3399
3636
  loading: true
3400
3637
  });
@@ -3409,7 +3646,7 @@
3409
3646
 
3410
3647
  var fnName = _get('searchEngineQueryParamsFunction', SearchEngine);
3411
3648
 
3412
- var qsParsed = traversal.client[fnName]({
3649
+ var qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({
3413
3650
  path: traversal.path,
3414
3651
  start: page * PageSize,
3415
3652
  pageSize: PageSize,
@@ -3422,7 +3659,7 @@
3422
3659
  typeNameParsed = parser("type_name__in=" + typeNameQuery);
3423
3660
  }
3424
3661
 
3425
- if (qs.length > 0 || searchTermParsed.length > 0 || qsParsed.length > 0 || typeNameParsed.length > 0) {
3662
+ if (qs.length > 0 || searchTermParsed.length > 0 || qsParsed.length > 0 || typeNameParsed.length > 0 || sortParsed.length > 0) {
3426
3663
  searchTermQs = buildQs([].concat(qs, searchTermParsed, qsParsed, typeNameParsed, sortParsed));
3427
3664
  }
3428
3665
 
@@ -3447,7 +3684,7 @@
3447
3684
  return renderTextItemOption(item);
3448
3685
  }
3449
3686
 
3450
- return get$1(item, labelProperty, item.title) || item['@name'];
3687
+ return get(item, labelProperty, item.title) || item['@name'];
3451
3688
  };
3452
3689
 
3453
3690
  React.useEffect(function () {
@@ -3473,7 +3710,7 @@
3473
3710
  if (!ev.currentTarget.contains(ev.relatedTarget)) {
3474
3711
  if (searchTerm !== '') {
3475
3712
  setSearchTerm('');
3476
- setOptions(initialState);
3713
+ setOptions(initialState$1);
3477
3714
  }
3478
3715
 
3479
3716
  setIsOpen(false);
@@ -3491,6 +3728,7 @@
3491
3728
  }
3492
3729
 
3493
3730
  setIsOpen(!isOpen);
3731
+ console.log('on clic btn', options);
3494
3732
 
3495
3733
  if (!options.loading && !options.items) {
3496
3734
  handleSearch(options.page);
@@ -3499,7 +3737,7 @@
3499
3737
  "aria-haspopup": "true",
3500
3738
  "aria-controls": "dropdown-menu",
3501
3739
  children: [jsxRuntime.jsx("span", {
3502
- children: value ? get$1(valueLabel, value, value) : intl.formatMessage(genericMessages.choose)
3740
+ children: value ? get(valueLabel, value, value) : intl.formatMessage(genericMessages.choose)
3503
3741
  }), jsxRuntime.jsx("span", {
3504
3742
  className: "icon",
3505
3743
  children: jsxRuntime.jsx("i", {
@@ -3573,23 +3811,7 @@
3573
3811
  });
3574
3812
  };
3575
3813
 
3576
- function debounce$1(func, wait) {
3577
- var timeout;
3578
- return function () {
3579
- var context = this;
3580
- var args = arguments;
3581
-
3582
- var later = function later() {
3583
- timeout = null;
3584
- func.apply(context, args);
3585
- };
3586
-
3587
- clearTimeout(timeout);
3588
- timeout = setTimeout(later, wait);
3589
- };
3590
- }
3591
-
3592
- var initialState$1 = {
3814
+ var initialState$2 = {
3593
3815
  page: 0,
3594
3816
  items: undefined,
3595
3817
  loading: false,
@@ -3599,10 +3821,9 @@
3599
3821
  var onChange = _ref.onChange,
3600
3822
  error = _ref.error,
3601
3823
  errorZoneClassName = _ref.errorZoneClassName,
3602
- _ref$traversal = _ref.traversal,
3603
- traversal = _ref$traversal === void 0 ? null : _ref$traversal,
3824
+ traversal = _ref.traversal,
3604
3825
  _ref$path = _ref.path,
3605
- path = _ref$path === void 0 ? null : _ref$path,
3826
+ path = _ref$path === void 0 ? undefined : _ref$path,
3606
3827
  _ref$qs = _ref.qs,
3607
3828
  qs = _ref$qs === void 0 ? [] : _ref$qs,
3608
3829
  _ref$queryCondition = _ref.queryCondition,
@@ -3617,14 +3838,14 @@
3617
3838
  _ref$dataTestItem = _ref.dataTestItem,
3618
3839
  dataTestItem = _ref$dataTestItem === void 0 ? 'searchInputItemTest' : _ref$dataTestItem,
3619
3840
  _ref$renderTextItemOp = _ref.renderTextItemOption,
3620
- renderTextItemOption = _ref$renderTextItemOp === void 0 ? null : _ref$renderTextItemOp,
3841
+ renderTextItemOption = _ref$renderTextItemOp === void 0 ? undefined : _ref$renderTextItemOp,
3621
3842
  _ref$typeNameQuery = _ref.typeNameQuery,
3622
- typeNameQuery = _ref$typeNameQuery === void 0 ? null : _ref$typeNameQuery,
3843
+ typeNameQuery = _ref$typeNameQuery === void 0 ? undefined : _ref$typeNameQuery,
3623
3844
  _ref$labelProperty = _ref.labelProperty,
3624
3845
  labelProperty = _ref$labelProperty === void 0 ? 'id' : _ref$labelProperty;
3625
3846
  var intl = reactIntl.useIntl();
3626
3847
 
3627
- var _useSetState = useSetState(initialState$1),
3848
+ var _useSetState = useSetState(initialState$2),
3628
3849
  options = _useSetState[0],
3629
3850
  setOptions = _useSetState[1];
3630
3851
 
@@ -3670,7 +3891,7 @@
3670
3891
  };
3671
3892
  };
3672
3893
 
3673
- var delayedQuery = React.useCallback(debounce$1(function (value) {
3894
+ var delayedQuery = React.useCallback(debounce(function (value) {
3674
3895
  return handleSearch(0, false, value);
3675
3896
  }, 500), []);
3676
3897
 
@@ -3702,7 +3923,7 @@
3702
3923
 
3703
3924
  var fnName = _get('searchEngineQueryParamsFunction', SearchEngine);
3704
3925
 
3705
- var qsParsed = traversal.client[fnName]({
3926
+ var qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({
3706
3927
  path: traversal.path,
3707
3928
  start: page * PageSize,
3708
3929
  pageSize: PageSize,
@@ -3744,7 +3965,7 @@
3744
3965
  var searchTermParsed = ['__or', "id=" + value.join('%26id=')];
3745
3966
  var getSearch = traversal.registry.get;
3746
3967
  var fnName = getSearch('searchEngineQueryParamsFunction', SearchEngine);
3747
- var qsParsed = traversal.client[fnName]({
3968
+ var qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({
3748
3969
  path: traversal.path,
3749
3970
  start: 0,
3750
3971
  pageSize: 100,
@@ -3760,9 +3981,9 @@
3760
3981
  searchTermQs = buildQs([].concat(qs, [searchTermParsed], qsParsed, typeNameParsed));
3761
3982
  }
3762
3983
 
3763
- return Promise.resolve(traversal.client.search(path ? path : traversal.client.getContainerFromPath(traversal.path), searchTermQs, false, false, 0, 100)).then(function (data) {
3984
+ return Promise.resolve(traversal.client.search(path ? path : traversal.client.getContainerFromPath(traversal.path), searchTermQs, false, false)).then(function (data) {
3764
3985
  var newValuesLabel = data.items.reduce(function (result, item) {
3765
- result[item.id] = get$1(item, labelProperty, item.id);
3986
+ result[item.id] = get(item, labelProperty, item.id);
3766
3987
  return result;
3767
3988
  }, {});
3768
3989
  setValuesLabels(newValuesLabel);
@@ -3782,7 +4003,7 @@
3782
4003
  return renderTextItemOption(item);
3783
4004
  }
3784
4005
 
3785
- return get$1(item, labelProperty, item.title) || item['@name'];
4006
+ return get(item, labelProperty, item.title) || item['@name'];
3786
4007
  };
3787
4008
 
3788
4009
  React.useEffect(function () {
@@ -3805,7 +4026,7 @@
3805
4026
  children: value.map(function (tag, index) {
3806
4027
  return jsxRuntime.jsxs("div", {
3807
4028
  className: "tag is-info is-medium",
3808
- children: [get$1(valuesLabel, tag, tag), jsxRuntime.jsx("button", {
4029
+ children: [get(valuesLabel, tag, tag), jsxRuntime.jsx("button", {
3809
4030
  className: "delete is-small",
3810
4031
  onClick: function onClick(ev) {
3811
4032
  ev.stopPropagation();
@@ -3825,7 +4046,7 @@
3825
4046
  if (!ev.currentTarget.contains(ev.relatedTarget)) {
3826
4047
  if (searchTerm !== '') {
3827
4048
  setSearchTerm('');
3828
- setOptions(initialState$1);
4049
+ setOptions(initialState$2);
3829
4050
  }
3830
4051
 
3831
4052
  setIsOpen(false);
@@ -3889,7 +4110,7 @@
3889
4110
  if (onChange && !value.includes(item.id)) {
3890
4111
  var _extends2;
3891
4112
 
3892
- setValuesLabels(_extends({}, valuesLabel, (_extends2 = {}, _extends2[item.id] = get$1(item, labelProperty, item.id), _extends2)));
4113
+ setValuesLabels(_extends({}, valuesLabel, (_extends2 = {}, _extends2[item.id] = get(item, labelProperty, item.id), _extends2)));
3893
4114
  onChange([].concat(value, [item.id]));
3894
4115
  }
3895
4116
  },
@@ -4077,7 +4298,7 @@
4077
4298
  ref.current.focus();
4078
4299
  }
4079
4300
  });
4080
- var canModified = modifyContent && !get$1(schema, 'readonly', false);
4301
+ var canModified = schema !== undefined && modifyContent && !get(schema, 'readonly', false);
4081
4302
 
4082
4303
  var saveField = function saveField(ev) {
4083
4304
  try {
@@ -4143,7 +4364,7 @@
4143
4364
  var deleteField = function deleteField(ev) {
4144
4365
  try {
4145
4366
  if (ev) ev.preventDefault();
4146
- return Promise.resolve(function () {
4367
+ return Promise.resolve(function (_schema$items) {
4147
4368
  if ((schema == null ? void 0 : schema.widget) === 'file') {
4148
4369
  var _ns2, _ref4, _ref5;
4149
4370
 
@@ -4171,7 +4392,7 @@
4171
4392
  });
4172
4393
  } else if ((schema == null ? void 0 : schema.type) === 'string' && schema != null && schema.enum) {
4173
4394
  setValue(null);
4174
- } else if ((schema == null ? void 0 : schema.type) === 'array' && (schema == null ? void 0 : schema.items.type) === 'string') {
4395
+ } else if ((schema == null ? void 0 : schema.type) === 'array' && (schema == null ? void 0 : (_schema$items = schema.items) == null ? void 0 : _schema$items.type) === 'string') {
4175
4396
  setValue([]);
4176
4397
  }
4177
4398
  }());
@@ -4228,7 +4449,7 @@
4228
4449
  dataTest: "editableFieldBtnCancelTest",
4229
4450
  children: intl.formatMessage(genericMessages.cancel)
4230
4451
  })
4231
- }), !required && fieldHaveDeleteButton(schema) && jsxRuntime.jsx("div", {
4452
+ }), !required && schema && fieldHaveDeleteButton(schema) && jsxRuntime.jsx("div", {
4232
4453
  className: "control",
4233
4454
  children: jsxRuntime.jsx(Button, {
4234
4455
  className: "is-small is-danger",
@@ -4257,7 +4478,8 @@
4257
4478
  var blob = new Blob([text], {
4258
4479
  type: data.content_type
4259
4480
  });
4260
- var url = window.URL.createObjectURL(blob);
4481
+ var url = window.URL.createObjectURL(blob); // Create blob link to download
4482
+
4261
4483
  var link = document.createElement('a');
4262
4484
  link.href = url;
4263
4485
 
@@ -4272,6 +4494,7 @@
4272
4494
  setTimeout(function () {
4273
4495
  var _link$parentNode;
4274
4496
 
4497
+ // For Firefox it is necessary to delay revoking the ObjectURL
4275
4498
  window.URL.revokeObjectURL(url);
4276
4499
  (_link$parentNode = link.parentNode) == null ? void 0 : _link$parentNode.removeChild(link);
4277
4500
  }, 100);
@@ -4347,23 +4570,27 @@
4347
4570
  }
4348
4571
 
4349
4572
  if (type === 'object') {
4573
+ var _schema$properties;
4574
+
4350
4575
  if (Array.isArray(value)) {
4351
- return value.map(function (item) {
4576
+ return value.map(function (item, index) {
4352
4577
  return jsxRuntime.jsx("div", {
4353
4578
  children: jsxRuntime.jsx(RenderField, {
4354
4579
  value: item
4355
4580
  })
4356
- }, item);
4581
+ }, "renderField_" + index + "_" + (schema == null ? void 0 : schema.title));
4357
4582
  });
4358
4583
  }
4359
4584
 
4360
- return Object.keys(value).map(function (key) {
4361
- return jsxRuntime.jsx(FieldValue, {
4362
- field: get$1(schema, "properties." + key + ".title", key),
4363
- schema: get$1(schema, "properties." + key, {}),
4364
- value: value[key]
4365
- }, key);
4366
- });
4585
+ if ((schema == null ? void 0 : (_schema$properties = schema.properties) == null ? void 0 : _schema$properties.key) !== undefined) {
4586
+ return Object.keys(value).map(function (key) {
4587
+ return jsxRuntime.jsx(FieldValue, {
4588
+ field: get(schema, "properties." + key + ".title", key),
4589
+ schema: schema.properties.key,
4590
+ value: get(value, key, {})
4591
+ }, key);
4592
+ });
4593
+ }
4367
4594
  }
4368
4595
 
4369
4596
  return jsxRuntime.jsxs("p", {
@@ -4407,6 +4634,7 @@
4407
4634
  var schema = _ref3.schema,
4408
4635
  value = _ref3.value,
4409
4636
  modifyContent = _ref3.modifyContent;
4637
+ console.log('search render fields');
4410
4638
  var intl = reactIntl.useIntl();
4411
4639
 
4412
4640
  var _useState = React.useState([]),
@@ -4431,7 +4659,7 @@
4431
4659
  var searchTermParsed = ['__or', "id=" + valuesToSearch.join('%26id=')];
4432
4660
  var getSearch = traversal.registry.get;
4433
4661
  var fnName = getSearch('searchEngineQueryParamsFunction', SearchEngine);
4434
- var qsParsed = traversal.client[fnName]({
4662
+ var qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({
4435
4663
  path: traversal.path,
4436
4664
  start: 0,
4437
4665
  pageSize: 100,
@@ -4442,11 +4670,11 @@
4442
4670
  searchTermQs = buildQs([searchTermParsed].concat(qsParsed));
4443
4671
  }
4444
4672
 
4445
- return Promise.resolve(traversal.client.search(traversal.client.getContainerFromPath(traversal.path), searchTermQs, false, false, 0, 100)).then(function (data) {
4673
+ return Promise.resolve(traversal.client.search(traversal.client.getContainerFromPath(traversal.path), searchTermQs, false, false)).then(function (data) {
4446
4674
  var newValuesLabel = data.items.map(function (item) {
4447
4675
  var _schema$labelProperty;
4448
4676
 
4449
- return get$1(item, (_schema$labelProperty = schema == null ? void 0 : schema.labelProperty) != null ? _schema$labelProperty : 'title', item.id);
4677
+ return get(item, (_schema$labelProperty = schema == null ? void 0 : schema.labelProperty) != null ? _schema$labelProperty : 'title', item.id);
4450
4678
  });
4451
4679
  setValuesLabels(newValuesLabel);
4452
4680
  setIsLoadingData(false);
@@ -4456,13 +4684,15 @@
4456
4684
  }
4457
4685
  };
4458
4686
 
4459
- var valuesToSearch = value;
4687
+ var valuesToSearch = [];
4460
4688
 
4461
- if (typeof valuesToSearch === 'string') {
4462
- valuesToSearch = [valuesToSearch];
4689
+ if (typeof value === 'string' && value) {
4690
+ valuesToSearch = [value];
4691
+ } else if (Array.isArray(value)) {
4692
+ valuesToSearch = value;
4463
4693
  }
4464
4694
 
4465
- if (valuesToSearch !== undefined && valuesToSearch.length > 0) {
4695
+ if (valuesToSearch.length > 0) {
4466
4696
  fetchData(valuesToSearch);
4467
4697
  } else {
4468
4698
  setValuesLabels([]);
@@ -4497,7 +4727,7 @@
4497
4727
  modifyContent = _ref4.modifyContent;
4498
4728
  var intl = reactIntl.useIntl();
4499
4729
  var DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl);
4500
- var vocabularyName = (schema == null ? void 0 : (_schema$items = schema.items) == null ? void 0 : _schema$items.vocabularyName) || (schema == null ? void 0 : schema.vocabularyName);
4730
+ var vocabularyName = (schema == null ? void 0 : (_schema$items = schema.items) == null ? void 0 : _schema$items.vocabularyName) || (schema == null ? void 0 : schema.vocabularyName) || '';
4501
4731
  var vocabulary = useVocabulary(vocabularyName);
4502
4732
 
4503
4733
  var getRenderProps = function getRenderProps() {
@@ -4508,7 +4738,7 @@
4508
4738
  if (schema != null && schema.vocabularyName) {
4509
4739
  var _vocabularyValue$titl;
4510
4740
 
4511
- var vocabularyValue = get$1(vocabulary, 'data.items', []).find(function (item) {
4741
+ var vocabularyValue = get(vocabulary, 'data.items', []).find(function (item) {
4512
4742
  return item.token === value;
4513
4743
  });
4514
4744
  renderProps['value'] = (_vocabularyValue$titl = vocabularyValue == null ? void 0 : vocabularyValue.title) != null ? _vocabularyValue$titl : '';
@@ -4518,7 +4748,7 @@
4518
4748
  renderProps['value'] = ((_renderProps$value = renderProps['value']) != null ? _renderProps$value : []).map(function (value) {
4519
4749
  var _get$find$title, _get$find;
4520
4750
 
4521
- return (_get$find$title = (_get$find = get$1(vocabulary, 'data.items', []).find(function (item) {
4751
+ return (_get$find$title = (_get$find = get(vocabulary, 'data.items', []).find(function (item) {
4522
4752
  return item.token === value;
4523
4753
  })) == null ? void 0 : _get$find.title) != null ? _get$find$title : '';
4524
4754
  });
@@ -4595,7 +4825,7 @@
4595
4825
  queryCondition: schema != null && schema.queryCondition ? schema.queryCondition : 'title__in',
4596
4826
  path: schema.queryPath,
4597
4827
  labelProperty: schema != null && schema.labelProperty ? schema.labelProperty : 'title',
4598
- typeNameQuery: schema != null && schema.typeNameQuery ? schema.typeNameQuery : null
4828
+ typeNameQuery: schema == null ? void 0 : schema.typeNameQuery
4599
4829
  })]
4600
4830
  });
4601
4831
  } else if ((schema == null ? void 0 : schema.widget) === 'search') {
@@ -4612,7 +4842,7 @@
4612
4842
  queryCondition: schema != null && schema.queryCondition ? schema.queryCondition : 'title__in',
4613
4843
  path: schema.queryPath,
4614
4844
  labelProperty: schema != null && schema.labelProperty ? schema.labelProperty : 'title',
4615
- typeNameQuery: schema != null && schema.typeNameQuery ? schema.typeNameQuery : null
4845
+ typeNameQuery: schema == null ? void 0 : schema.typeNameQuery
4616
4846
  })]
4617
4847
  });
4618
4848
  } else if ((schema == null ? void 0 : schema.widget) === 'textarea' || (schema == null ? void 0 : schema.widget) === 'richtext') {
@@ -4642,7 +4872,7 @@
4642
4872
 
4643
4873
  if (schema.items.vocabularyName) {
4644
4874
  return jsxRuntime.jsx(SelectVocabulary, {
4645
- vocabularyName: get$1(schema, 'items.vocabularyName', null),
4875
+ vocabularyName: get(schema, 'items.vocabularyName', ''),
4646
4876
  val: val || [],
4647
4877
  className: className,
4648
4878
  classWrap: "is-fullwidth",
@@ -4679,22 +4909,25 @@
4679
4909
  }), jsxRuntime.jsx(InputList, {
4680
4910
  value: val || [],
4681
4911
  className: className,
4682
- onChange: function onChange(ev) {
4683
- return _setValue(ev);
4912
+ onChange: function onChange(val) {
4913
+ return _setValue(val);
4684
4914
  },
4685
4915
  ref: ref,
4686
4916
  dataTest: dataTest
4687
4917
  })]
4688
4918
  });
4689
4919
  } else if ((schema == null ? void 0 : schema.widget) === 'file') {
4920
+ var value = val;
4690
4921
  return jsxRuntime.jsx(FileUpload, {
4691
4922
  onChange: function onChange(ev) {
4692
4923
  return _setValue(ev);
4693
4924
  },
4694
- label: get$1(val, 'filename', null),
4925
+ label: get(value, 'filename', undefined),
4695
4926
  dataTest: dataTest
4696
4927
  });
4697
4928
  } else if ((schema == null ? void 0 : schema.widget) === 'select' && schema.type === 'string') {
4929
+ var _schema$vocabulary;
4930
+
4698
4931
  if (schema != null && schema.vocabularyName) {
4699
4932
  return jsxRuntime.jsx(SelectVocabulary, {
4700
4933
  val: val || '',
@@ -4703,7 +4936,7 @@
4703
4936
  classWrap: "is-fullwidth",
4704
4937
  dataTest: dataTest,
4705
4938
  onChange: _setValue,
4706
- vocabularyName: get$1(schema, 'vocabularyName', null),
4939
+ vocabularyName: get(schema, 'vocabularyName', ''),
4707
4940
  placeholder: placeholder,
4708
4941
  id: id
4709
4942
  });
@@ -4715,7 +4948,7 @@
4715
4948
  appendDefault: true,
4716
4949
  classWrap: "is-fullwidth",
4717
4950
  dataTest: dataTest,
4718
- options: schema == null ? void 0 : schema.vocabulary.map(function (item) {
4951
+ options: ((_schema$vocabulary = schema == null ? void 0 : schema.vocabulary) != null ? _schema$vocabulary : []).map(function (item) {
4719
4952
  return {
4720
4953
  text: item,
4721
4954
  value: item
@@ -4726,26 +4959,27 @@
4726
4959
  id: id
4727
4960
  });
4728
4961
  } else if ((schema == null ? void 0 : schema.type) === 'object' && schema.widget !== 'file') {
4729
- var value = val;
4962
+ var _value = val;
4730
4963
  return jsxRuntime.jsxs(jsxRuntime.Fragment, {
4731
4964
  children: [schema.title && jsxRuntime.jsx("h4", {
4732
4965
  className: "subtitle mt-2",
4733
4966
  children: schema.title
4734
- }), Object.keys(get$1(schema, 'properties', {})).map(function (key) {
4967
+ }), Object.keys(get(schema, 'properties', {})).map(function (key) {
4735
4968
  var _subSchema$title;
4736
4969
 
4737
- var subSchema = get$1(schema, 'properties', {})[key];
4738
- var requiredFields = get$1(schema, 'required', []);
4970
+ var subSchema = get(schema, "properties." + key, null);
4971
+ var requiredFields = get(schema, 'required', []);
4972
+ if (!subSchema) return null;
4739
4973
  return jsxRuntime.jsx(EditComponent, {
4740
4974
  id: id + "[" + key + "]",
4741
4975
  schema: subSchema,
4742
- val: value && key in value ? value[key] : '',
4976
+ val: _value && key in _value ? _value[key] : '',
4743
4977
  placeholder: (_subSchema$title = subSchema == null ? void 0 : subSchema.title) != null ? _subSchema$title : '',
4744
4978
  required: requiredFields.includes(key),
4745
4979
  setValue: function setValue(ev) {
4746
4980
  var _extends2;
4747
4981
 
4748
- _setValue(_extends({}, value, (_extends2 = {}, _extends2[key] = ev, _extends2)));
4982
+ _setValue(_extends({}, _value, (_extends2 = {}, _extends2[key] = ev, _extends2)));
4749
4983
  },
4750
4984
  dataTest: key + "TestInput"
4751
4985
  }, id + "[" + key + "]");
@@ -4807,9 +5041,9 @@
4807
5041
  }, 1), jsxRuntime.jsx("td", {
4808
5042
  children: jsxRuntime.jsx(EditableField, {
4809
5043
  field: key,
4810
- value: values[key],
5044
+ value: values.file,
4811
5045
  ns: "guillotina.behaviors.attachment.IAttachment",
4812
- schema: properties[key],
5046
+ schema: properties.file,
4813
5047
  modifyContent: modifyContent && ['file'].includes(key)
4814
5048
  })
4815
5049
  }, 2)]
@@ -4859,6 +5093,11 @@
4859
5093
 
4860
5094
  setLoading(true);
4861
5095
  setError(undefined);
5096
+
5097
+ if (!file) {
5098
+ return Promise.resolve();
5099
+ }
5100
+
4862
5101
  var endpoint = Ctx.path + "@upload/files/" + fileKey;
4863
5102
  return Promise.resolve(Ctx.client.upload(endpoint, file)).then(function (req) {
4864
5103
  if (req.status !== 200) {
@@ -4927,7 +5166,7 @@
4927
5166
  field: "files/" + key,
4928
5167
  value: values['files'][key],
4929
5168
  ns: "guillotina.behaviors.attachment.IMultiAttachment.files",
4930
- schema: properties['files']['additionalProperties'],
5169
+ schema: get(properties, 'files.additionalProperties', {}),
4931
5170
  modifyContent: false
4932
5171
  }), jsxRuntime.jsx("div", {
4933
5172
  className: "ml-5",
@@ -5151,13 +5390,18 @@
5151
5390
  ev.preventDefault();
5152
5391
  setLoading(true);
5153
5392
  setError(undefined);
5393
+
5394
+ if (!file) {
5395
+ return Promise.resolve();
5396
+ }
5397
+
5154
5398
  var endpoint = Ctx.path + "@upload/image";
5155
5399
  return Promise.resolve(Ctx.client.upload(endpoint, file)).then(function (req) {
5156
5400
  var _exit;
5157
5401
 
5158
5402
  function _temp4(_result) {
5159
5403
  if (_exit) return _result;
5160
- setFile(undefined);
5404
+ setFile(null);
5161
5405
  setLoading(false);
5162
5406
  Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success');
5163
5407
  Ctx.refresh();
@@ -5438,7 +5682,7 @@
5438
5682
  fileKey = _useState[0],
5439
5683
  setFileKey = _useState[1];
5440
5684
 
5441
- var _useState2 = React.useState(null),
5685
+ var _useState2 = React.useState(undefined),
5442
5686
  file = _useState2[0],
5443
5687
  setFile = _useState2[1];
5444
5688
 
@@ -5471,6 +5715,11 @@
5471
5715
 
5472
5716
  setLoading(true);
5473
5717
  setError(undefined);
5718
+
5719
+ if (!file) {
5720
+ return Promise.resolve();
5721
+ }
5722
+
5474
5723
  var endpoint = Ctx.path + "@upload/images/" + fileKey;
5475
5724
  return Promise.resolve(Ctx.client.upload(endpoint, file)).then(function (req) {
5476
5725
  var _exit;
@@ -5573,7 +5822,7 @@
5573
5822
  field: "images/" + key,
5574
5823
  value: values['images'][key],
5575
5824
  ns: "guillotina.contrib.image.behaviors.IMultiImageAttachment.images",
5576
- schema: properties['images']['additionalProperties'],
5825
+ schema: get(properties, 'images.additionalProperties', {}),
5577
5826
  modifyContent: false,
5578
5827
  required: false
5579
5828
  }), jsxRuntime.jsx("div", {
@@ -5863,7 +6112,7 @@
5863
6112
  sortedList = _useState2[0],
5864
6113
  setSortedList = _useState2[1];
5865
6114
 
5866
- var _useState3 = React.useState(null),
6115
+ var _useState3 = React.useState(undefined),
5867
6116
  file = _useState3[0],
5868
6117
  setFile = _useState3[1];
5869
6118
 
@@ -6007,7 +6256,7 @@
6007
6256
  field: "images/" + key,
6008
6257
  value: values['images'][key],
6009
6258
  ns: "guillotina.contrib.image.behaviors.IMultiImageAttachment.images",
6010
- schema: properties['images']['additionalProperties'],
6259
+ schema: get(properties, 'images.additionalProperties', {}),
6011
6260
  modifyContent: false,
6012
6261
  required: false
6013
6262
  }), jsxRuntime.jsx("div", {
@@ -6062,163 +6311,6 @@
6062
6311
  });
6063
6312
  }
6064
6313
 
6065
- var base = {
6066
- local: {
6067
- roleperm: {},
6068
- prinperm: {},
6069
- prinrole: {}
6070
- },
6071
- inherit: []
6072
- };
6073
- var Sharing = /*#__PURE__*/function () {
6074
- function Sharing(element) {
6075
- this.local = void 0;
6076
- this.inherit = void 0;
6077
- Object.assign(this, element || base);
6078
- }
6079
-
6080
- var _proto = Sharing.prototype;
6081
-
6082
- _proto.getRole = function getRole(role) {
6083
- return this.local.roleperm[role];
6084
- };
6085
-
6086
- _proto.getPrincipals = function getPrincipals(principal) {
6087
- return this.local.prinperm[principal];
6088
- };
6089
-
6090
- _proto.getPrinroles = function getPrinroles(role) {
6091
- return this.local.prinrole[role];
6092
- };
6093
-
6094
- _createClass(Sharing, [{
6095
- key: "roles",
6096
- get: function get() {
6097
- return Object.keys(this.local.roleperm);
6098
- }
6099
- }, {
6100
- key: "principals",
6101
- get: function get() {
6102
- return Object.keys(this.local.prinperm);
6103
- }
6104
- }, {
6105
- key: "prinrole",
6106
- get: function get() {
6107
- return Object.keys(this.local.prinrole);
6108
- }
6109
- }]);
6110
-
6111
- return Sharing;
6112
- }();
6113
-
6114
- var ItemModel = /*#__PURE__*/function () {
6115
- function ItemModel(item, url) {
6116
- if (url === void 0) {
6117
- url = '';
6118
- }
6119
-
6120
- this.item = void 0;
6121
- this.url = void 0;
6122
- this.item = item;
6123
- this.url = url;
6124
- }
6125
-
6126
- _createClass(ItemModel, [{
6127
- key: "path",
6128
- get: function get() {
6129
- var item = this.item['@id'] ? this.item['@id'] : this.item['@absolute_url'];
6130
- var path = item.split('//')[1].split('/').splice(1).join('/');
6131
- path = "/" + path + "/";
6132
-
6133
- if (this.url.length > 0) {
6134
- if (this.url.startsWith('/')) {
6135
- path = path.replace(this.url.substring(1), '');
6136
- } else {
6137
- path = path.replace(this.url, '');
6138
- }
6139
- }
6140
-
6141
- return path;
6142
- }
6143
- }, {
6144
- key: "name",
6145
- get: function get() {
6146
- return this.item.title || this.item['@name'];
6147
- }
6148
- }, {
6149
- key: "icon",
6150
- get: function get() {
6151
- var cfg = useConfig();
6152
-
6153
- if (cfg.icons && cfg.icons[this.type]) {
6154
- return cfg.icons[this.type];
6155
- }
6156
-
6157
- switch (this.type) {
6158
- case 'GroupManager':
6159
- return 'fas fa-users-cog';
6160
-
6161
- case 'UserManager':
6162
- return 'fas fa-user-cog';
6163
-
6164
- case 'User':
6165
- return 'fas fa-user';
6166
-
6167
- case 'Group':
6168
- return 'fas fa-users';
6169
-
6170
- case 'Folder':
6171
- return 'fas fa-folder';
6172
-
6173
- default:
6174
- return 'fas fa-file';
6175
- }
6176
- }
6177
- }, {
6178
- key: "fullPath",
6179
- get: function get() {
6180
- return this.url + this.item.id;
6181
- }
6182
- }, {
6183
- key: "id",
6184
- get: function get() {
6185
- if (this.item.id) {
6186
- return this.item.id;
6187
- }
6188
-
6189
- var id = this.item['@id'].split('&')[0].split('/');
6190
- return id[id.length - 1];
6191
- }
6192
- }, {
6193
- key: "uid",
6194
- get: function get() {
6195
- return this.item['@uid'];
6196
- }
6197
- }, {
6198
- key: "type",
6199
- get: function get() {
6200
- return this.item['@type'] || this.item.type_name;
6201
- }
6202
- }, {
6203
- key: "title",
6204
- get: function get() {
6205
- return this.item.title;
6206
- }
6207
- }, {
6208
- key: "created",
6209
- get: function get() {
6210
- return this.item.creation_date ? formatDate(this.item.creation_date) : '';
6211
- }
6212
- }, {
6213
- key: "updated",
6214
- get: function get() {
6215
- return this.item.modification_date ? formatDate(this.item.modification_date) : '';
6216
- }
6217
- }]);
6218
-
6219
- return ItemModel;
6220
- }();
6221
-
6222
6314
  var messages$1 = reactIntl.defineMessages({
6223
6315
  status_changed_ok: {
6224
6316
  id: "status_changed_ok",
@@ -6294,13 +6386,12 @@
6294
6386
  definition = _useState[0],
6295
6387
  setDefinition = _useState[1];
6296
6388
 
6297
- var _useState2 = React.useState(null),
6389
+ var _useState2 = React.useState(undefined),
6298
6390
  workflowAction = _useState2[0],
6299
6391
  setWorkflowAction = _useState2[1];
6300
6392
 
6301
- var model = new ItemModel(Ctx.context);
6302
6393
  var vocabulary = useVocabulary('workflow_states');
6303
- var currentState = model.item['guillotina.contrib.workflows.interfaces.IWorkflowBehavior']['review_state'];
6394
+ var currentState = Ctx.context['guillotina.contrib.workflows.interfaces.IWorkflowBehavior']['review_state'];
6304
6395
  React.useEffect(function () {
6305
6396
  loadDefinition();
6306
6397
  }, [Ctx.path]);
@@ -6320,7 +6411,7 @@
6320
6411
  }
6321
6412
 
6322
6413
  Ctx.refresh();
6323
- setWorkflowAction(null);
6414
+ setWorkflowAction(undefined);
6324
6415
  });
6325
6416
  });
6326
6417
  } catch (e) {
@@ -6329,21 +6420,23 @@
6329
6420
  };
6330
6421
 
6331
6422
  var getStateTitle = function getStateTitle() {
6332
- var _vocabulary$data, _vocabulary$data$item;
6423
+ var _vocabulary$data$item, _vocabulary$data;
6333
6424
 
6334
- if (((_vocabulary$data = vocabulary.data) == null ? void 0 : (_vocabulary$data$item = _vocabulary$data.items) == null ? void 0 : _vocabulary$data$item.length) > 0) {
6335
- var vocabularyValue = vocabulary.data.items.find(function (item) {
6425
+ if (((_vocabulary$data$item = (_vocabulary$data = vocabulary.data) == null ? void 0 : _vocabulary$data.items) != null ? _vocabulary$data$item : []).length > 0) {
6426
+ var _vocabulary$data2;
6427
+
6428
+ var vocabularyValue = vocabulary == null ? void 0 : (_vocabulary$data2 = vocabulary.data) == null ? void 0 : _vocabulary$data2.items.find(function (item) {
6336
6429
  return item.token === currentState;
6337
6430
  });
6338
6431
 
6339
6432
  if (vocabularyValue) {
6340
- var translatedValue = get$1(vocabularyValue, "title.translated_title." + intl.locale, null);
6433
+ var translatedValue = get(vocabularyValue, "title.translated_title." + intl.locale, null);
6341
6434
 
6342
6435
  if (translatedValue !== null) {
6343
6436
  return translatedValue;
6344
6437
  }
6345
6438
 
6346
- var titleValue = get$1(vocabularyValue, "title.title." + intl.locale, null);
6439
+ var titleValue = get(vocabularyValue, "title.title." + intl.locale, null);
6347
6440
 
6348
6441
  if (titleValue !== null) {
6349
6442
  return titleValue;
@@ -6359,7 +6452,7 @@
6359
6452
  children: [workflowAction && jsxRuntime.jsx(Confirm, {
6360
6453
  loading: loading,
6361
6454
  onCancel: function onCancel() {
6362
- return setWorkflowAction(null);
6455
+ return setWorkflowAction(undefined);
6363
6456
  },
6364
6457
  onConfirm: doWorkflowAction,
6365
6458
  message: intl.formatMessage(messages$1.confirm_message, {
@@ -6385,7 +6478,7 @@
6385
6478
  onClick: function onClick() {
6386
6479
  return setWorkflowAction(transition['@id'].split('@workflow')[1].slice(1));
6387
6480
  },
6388
- children: get$1(transition, "metadata.translated_title." + intl.locale, transition.title)
6481
+ children: get(transition, "metadata.translated_title." + intl.locale, transition.title)
6389
6482
  }, transition['@id']);
6390
6483
  })]
6391
6484
  })]
@@ -6411,14 +6504,17 @@
6411
6504
 
6412
6505
  return jsxRuntime.jsx(React.Fragment, {
6413
6506
  children: Object.keys(ACTIONS_OBJECT).map(function (actionKey) {
6414
- if (hasPerm(ACTIONS_OBJECT[actionKey].perms)) {
6507
+ var actionKeyTyped = actionKey;
6508
+ var actionObject = ACTIONS_OBJECT[actionKeyTyped];
6509
+
6510
+ if (hasPerm(actionObject.perms)) {
6415
6511
  return jsxRuntime.jsx("button", {
6416
6512
  className: "button mr-4",
6417
6513
  onClick: function onClick() {
6418
- onAction(actionKey);
6514
+ onAction(actionKeyTyped);
6419
6515
  },
6420
- children: ACTIONS_OBJECT[actionKey].text
6421
- }, "panel_action_" + ACTIONS_OBJECT[actionKey].text);
6516
+ children: actionObject.text
6517
+ }, "panel_action_" + actionObject.text);
6422
6518
  }
6423
6519
  })
6424
6520
  });
@@ -6460,7 +6556,8 @@
6460
6556
  "value": "Installed Addons"
6461
6557
  }]
6462
6558
  }
6463
- });
6559
+ }); // TODO: Refactor without useAsync... just crudContext
6560
+
6464
6561
  function PanelAddons() {
6465
6562
  var _state$data$available, _state$data, _state$data$available2, _state$data2, _state$data$installed, _state$data3, _state$data$installed2, _state$data4;
6466
6563
 
@@ -6615,8 +6712,9 @@
6615
6712
 
6616
6713
  var arrayToObject = function arrayToObject(array) {
6617
6714
  return array.reduce(function (obj, item) {
6618
- obj[item.id] = item;
6619
- return obj;
6715
+ var _extends2;
6716
+
6717
+ return _extends({}, obj, (_extends2 = {}, _extends2[item.id] = item, _extends2));
6620
6718
  }, {});
6621
6719
  };
6622
6720
 
@@ -6778,8 +6876,9 @@
6778
6876
 
6779
6877
  function onSelectAllItems(checked) {
6780
6878
  setSelected(items.reduce(function (obj, item) {
6781
- obj[item.path + "/" + item.id] = checked;
6782
- return obj;
6879
+ var _extends2;
6880
+
6881
+ return _extends({}, obj, (_extends2 = {}, _extends2[item.path + "/" + item.id] = checked, _extends2));
6783
6882
  }, {
6784
6883
  all: checked
6785
6884
  }));
@@ -6787,11 +6886,11 @@
6787
6886
 
6788
6887
  function onSelectOneItem(item) {
6789
6888
  setSelected(function (state) {
6790
- var _extends2;
6889
+ var _extends3;
6791
6890
 
6792
- return _extends({}, state, (_extends2 = {
6891
+ return _extends({}, state, (_extends3 = {
6793
6892
  all: false
6794
- }, _extends2[item.path + "/" + item.id] = !state[item.path + "/" + item.id], _extends2));
6893
+ }, _extends3[item.path + "/" + item.id] = !state[item.path + "/" + item.id], _extends3));
6795
6894
  });
6796
6895
  }
6797
6896
 
@@ -6813,13 +6912,38 @@
6813
6912
  children: children
6814
6913
  });
6815
6914
  }
6816
- function AllItemsCheckbox(_ref2) {
6817
- var dataTest = _ref2.dataTest;
6818
6915
 
6916
+ var useItemsActions = function useItemsActions() {
6819
6917
  var _useContext = React.useContext(ItemsActionsCtx),
6918
+ onAction = _useContext.onAction,
6919
+ onSelectOneItem = _useContext.onSelectOneItem,
6820
6920
  onSelectAllItems = _useContext.onSelectAllItems,
6821
6921
  selected = _useContext.selected;
6822
6922
 
6923
+ if (!onAction || !onSelectOneItem || !onSelectAllItems || !selected) {
6924
+ throw new Error('useItemsActions must be used inside ItemsActionsProvider');
6925
+ }
6926
+
6927
+ return {
6928
+ onAction: onAction,
6929
+ onSelectOneItem: onSelectOneItem,
6930
+ onSelectAllItems: onSelectAllItems,
6931
+ selected: selected
6932
+ };
6933
+ };
6934
+ /**
6935
+ * Checkbox component without props that consume the ItemsActionsContext
6936
+ * and it select/unselect all items of the page.
6937
+ */
6938
+
6939
+
6940
+ function AllItemsCheckbox(_ref2) {
6941
+ var dataTest = _ref2.dataTest;
6942
+
6943
+ var _useItemsActions = useItemsActions(),
6944
+ onSelectAllItems = _useItemsActions.onSelectAllItems,
6945
+ selected = _useItemsActions.selected;
6946
+
6823
6947
  return jsxRuntime.jsx(Checkbox, {
6824
6948
  onChange: onSelectAllItems,
6825
6949
  checked: selected.all,
@@ -6830,9 +6954,9 @@
6830
6954
  var item = _ref3.item,
6831
6955
  dataTest = _ref3.dataTest;
6832
6956
 
6833
- var _useContext2 = React.useContext(ItemsActionsCtx),
6834
- selected = _useContext2.selected,
6835
- onSelectOneItem = _useContext2.onSelectOneItem;
6957
+ var _useItemsActions2 = useItemsActions(),
6958
+ selected = _useItemsActions2.selected,
6959
+ onSelectOneItem = _useItemsActions2.onSelectOneItem;
6836
6960
 
6837
6961
  var absId = item.path + "/" + item.id;
6838
6962
  var value = selected[absId];
@@ -6844,14 +6968,18 @@
6844
6968
  dataTest: dataTest
6845
6969
  });
6846
6970
  }
6971
+ /**
6972
+ * Dropdown to choose some action to apply to the selected items.
6973
+ */
6974
+
6847
6975
  function ItemsActionsDropdown() {
6848
6976
  var intl = reactIntl.useIntl();
6849
6977
  var ACTIONS_OBJECT = getActionsObject(intl, true);
6850
6978
  var traversal = useTraversal();
6851
6979
 
6852
- var _useContext3 = React.useContext(ItemsActionsCtx),
6853
- selected = _useContext3.selected,
6854
- onAction = _useContext3.onAction;
6980
+ var _useItemsActions3 = useItemsActions(),
6981
+ selected = _useItemsActions3.selected,
6982
+ onAction = _useItemsActions3.onAction;
6855
6983
 
6856
6984
  var disabled = Object.values(selected).every(function (v) {
6857
6985
  return !v;
@@ -6935,6 +7063,7 @@
6935
7063
  "aria-label": "pagination",
6936
7064
  children: [jsxRuntime.jsx("a", {
6937
7065
  className: "pagination-previous is-small",
7066
+ // disabled={current === 0}
6938
7067
  onClick: function onClick() {
6939
7068
  return current > 0 ? doPaginate(current - 1) : null;
6940
7069
  },
@@ -6946,6 +7075,7 @@
6946
7075
  })
6947
7076
  }), jsxRuntime.jsx("a", {
6948
7077
  className: "pagination-next is-small",
7078
+ // disabled={current >= maxPages - 1}
6949
7079
  onClick: function onClick() {
6950
7080
  return doPaginate(current + 1);
6951
7081
  },
@@ -6960,6 +7090,170 @@
6960
7090
  });
6961
7091
  }
6962
7092
 
7093
+ var base = {
7094
+ local: {
7095
+ roleperm: {},
7096
+ prinperm: {},
7097
+ prinrole: {}
7098
+ },
7099
+ inherit: []
7100
+ };
7101
+ var Sharing = /*#__PURE__*/function () {
7102
+ function Sharing(element) {
7103
+ this.local = void 0;
7104
+ this.inherit = void 0;
7105
+
7106
+ if (element === undefined) {
7107
+ throw new Error('Sharing element is undefined');
7108
+ }
7109
+
7110
+ this.local = element.local || base.local;
7111
+ this.inherit = element.inherit || base.inherit;
7112
+ }
7113
+
7114
+ var _proto = Sharing.prototype;
7115
+
7116
+ _proto.getRole = function getRole(role) {
7117
+ return this.local.roleperm[role];
7118
+ };
7119
+
7120
+ _proto.getPrincipals = function getPrincipals(principal) {
7121
+ return this.local.prinperm[principal];
7122
+ };
7123
+
7124
+ _proto.getPrinroles = function getPrinroles(role) {
7125
+ return this.local.prinrole[role];
7126
+ };
7127
+
7128
+ _createClass(Sharing, [{
7129
+ key: "roles",
7130
+ get: function get() {
7131
+ return Object.keys(this.local.roleperm);
7132
+ }
7133
+ }, {
7134
+ key: "principals",
7135
+ get: function get() {
7136
+ return Object.keys(this.local.prinperm);
7137
+ }
7138
+ }, {
7139
+ key: "prinrole",
7140
+ get: function get() {
7141
+ return Object.keys(this.local.prinrole);
7142
+ }
7143
+ }]);
7144
+
7145
+ return Sharing;
7146
+ }();
7147
+
7148
+ var ItemModel = /*#__PURE__*/function () {
7149
+ function ItemModel(item, url) {
7150
+ if (url === void 0) {
7151
+ url = '';
7152
+ }
7153
+
7154
+ this.item = void 0;
7155
+ this.url = void 0;
7156
+ this.item = item;
7157
+ this.url = url;
7158
+ }
7159
+
7160
+ _createClass(ItemModel, [{
7161
+ key: "path",
7162
+ get: function get() {
7163
+ // Compat
7164
+ var item = this.item['@id'] ? this.item['@id'] : this.item['@absolute_url'];
7165
+ var path = item.split('//')[1].split('/').splice(1).join('/');
7166
+ path = "/" + path + "/";
7167
+
7168
+ if (this.url.length > 0) {
7169
+ if (this.url.startsWith('/')) {
7170
+ path = path.replace(this.url.substring(1), '');
7171
+ } else {
7172
+ path = path.replace(this.url, '');
7173
+ }
7174
+ }
7175
+
7176
+ return path;
7177
+ }
7178
+ }, {
7179
+ key: "name",
7180
+ get: function get() {
7181
+ return this.item.title || this.item['@name'];
7182
+ }
7183
+ }, {
7184
+ key: "icon",
7185
+ get: function get() {
7186
+ var cfg = useConfig();
7187
+
7188
+ if (cfg.icons && cfg.icons[this.type]) {
7189
+ return cfg.icons[this.type];
7190
+ }
7191
+
7192
+ switch (this.type) {
7193
+ case 'GroupManager':
7194
+ return 'fas fa-users-cog';
7195
+
7196
+ case 'UserManager':
7197
+ return 'fas fa-user-cog';
7198
+
7199
+ case 'User':
7200
+ return 'fas fa-user';
7201
+
7202
+ case 'Group':
7203
+ return 'fas fa-users';
7204
+
7205
+ case 'Folder':
7206
+ return 'fas fa-folder';
7207
+
7208
+ default:
7209
+ return 'fas fa-file';
7210
+ }
7211
+ }
7212
+ }, {
7213
+ key: "fullPath",
7214
+ get: function get() {
7215
+ return this.url + this.id;
7216
+ }
7217
+ }, {
7218
+ key: "id",
7219
+ get: function get() {
7220
+ if ('id' in this.item) {
7221
+ return this.item.id;
7222
+ }
7223
+
7224
+ var id = this.item['@id'].split('&')[0].split('/');
7225
+ return id[id.length - 1];
7226
+ }
7227
+ }, {
7228
+ key: "uid",
7229
+ get: function get() {
7230
+ return this.item['@uid'];
7231
+ }
7232
+ }, {
7233
+ key: "type",
7234
+ get: function get() {
7235
+ return this.item['@type'] || this.item.type_name;
7236
+ }
7237
+ }, {
7238
+ key: "title",
7239
+ get: function get() {
7240
+ return this.item.title;
7241
+ }
7242
+ }, {
7243
+ key: "created",
7244
+ get: function get() {
7245
+ return this.item.creation_date ? formatDate(this.item.creation_date) : '';
7246
+ }
7247
+ }, {
7248
+ key: "updated",
7249
+ get: function get() {
7250
+ return this.item.modification_date ? formatDate(this.item.modification_date) : '';
7251
+ }
7252
+ }]);
7253
+
7254
+ return ItemModel;
7255
+ }();
7256
+
6963
7257
  function Item(_ref) {
6964
7258
  var item = _ref.item,
6965
7259
  icon = _ref.icon;
@@ -7100,11 +7394,11 @@
7100
7394
  renderValue = _useState[0],
7101
7395
  setRenderValue = _useState[1];
7102
7396
 
7103
- var defaultRenderValue = location.get(query);
7397
+ var defaultRenderValue = location.get(query) || '';
7104
7398
  React.useEffect(function () {
7105
7399
  var value = defaultRenderValue;
7106
7400
 
7107
- if ((options != null ? options : []).length > 0) {
7401
+ if (options && (options != null ? options : []).length > 0) {
7108
7402
  var option = options.find(function (item) {
7109
7403
  return item.value === value;
7110
7404
  });
@@ -7153,14 +7447,16 @@
7153
7447
  setRenderValue = _useState[1];
7154
7448
 
7155
7449
  var vocabulary = useVocabulary(vocabularyName);
7156
- var defaultRenderValue = location.get(query);
7450
+ var defaultRenderValue = location.get(query) || '';
7157
7451
  React.useEffect(function () {
7158
7452
  var _vocabulary$data$item, _vocabulary$data;
7159
7453
 
7160
7454
  var value = defaultRenderValue;
7161
7455
 
7162
7456
  if (((_vocabulary$data$item = vocabulary == null ? void 0 : (_vocabulary$data = vocabulary.data) == null ? void 0 : _vocabulary$data.items) != null ? _vocabulary$data$item : []).length > 0) {
7163
- var vocabularyValue = vocabulary.data.items.find(function (item) {
7457
+ var _vocabulary$data2;
7458
+
7459
+ var vocabularyValue = vocabulary == null ? void 0 : (_vocabulary$data2 = vocabulary.data) == null ? void 0 : _vocabulary$data2.items.find(function (item) {
7164
7460
  return item.token === value;
7165
7461
  });
7166
7462
 
@@ -7194,7 +7490,7 @@
7194
7490
  return null;
7195
7491
  }
7196
7492
 
7197
- var initialState$2 = {
7493
+ var initialState$3 = {
7198
7494
  page: 0,
7199
7495
  items: [],
7200
7496
  loading: true,
@@ -7213,7 +7509,7 @@
7213
7509
  var intl = reactIntl.useIntl();
7214
7510
  var Ctx = useTraversal();
7215
7511
 
7216
- var _useSetState = useSetState(initialState$2),
7512
+ var _useSetState = useSetState(initialState$3),
7217
7513
  state = _useSetState[0],
7218
7514
  setState = _useSetState[1];
7219
7515
 
@@ -7229,7 +7525,7 @@
7229
7525
  var page;
7230
7526
 
7231
7527
  try {
7232
- page = parseInt(location.get('page')) || 0;
7528
+ page = parseInt(location.get('page') || '0');
7233
7529
  } catch (_unused) {
7234
7530
  page = 0;
7235
7531
  }
@@ -7276,7 +7572,7 @@
7276
7572
  var resultQueryParams = [];
7277
7573
  var resultDynamicLocation = [];
7278
7574
  filterSchema.forEach(function (filter) {
7279
- var itemParam = location.get(filter.attribute_key);
7575
+ var itemParam = location.get(filter.attribute_key) || '';
7280
7576
  resultDynamicLocation.push(itemParam);
7281
7577
 
7282
7578
  if (itemParam) {
@@ -7288,53 +7584,51 @@
7288
7584
  var controller = new AbortController();
7289
7585
  if (Ctx.state.loading) return;
7290
7586
 
7291
- try {
7292
- setState({
7293
- loading: true,
7294
- total: Ctx.context.length
7295
- });
7296
- var get = Ctx.registry.get;
7297
- var fnName = get('searchEngineQueryParamsFunction', SearchEngine);
7298
-
7299
- if (sortParsed === undefined) {
7300
- var defaultSortValue = Ctx.registry.getDefaultSortValue(Ctx.context['@type'], {
7301
- key: 'id',
7302
- direction: 'des'
7587
+ var getData = function getData() {
7588
+ try {
7589
+ setState({
7590
+ loading: true,
7591
+ total: Ctx.context.length
7303
7592
  });
7304
- sortParsed = parser("_sort_" + defaultSortValue.direction + "=" + defaultSortValue.key);
7305
- }
7593
+ var get = Ctx.registry.get;
7594
+ var fnName = get('searchEngineQueryParamsFunction', SearchEngine);
7306
7595
 
7307
- var qsParsed = Ctx.client[fnName]({
7308
- path: Ctx.path,
7309
- start: page * PageSize,
7310
- pageSize: PageSize
7311
- });
7312
- var qs = '';
7596
+ if (sortParsed === undefined) {
7597
+ var defaultSortValue = Ctx.registry.getDefaultSortValue(Ctx.context['@type']);
7598
+ sortParsed = parser("_sort_" + defaultSortValue.direction + "=" + defaultSortValue.key);
7599
+ }
7313
7600
 
7314
- if (search || type || resultQueryParams.length > 0) {
7315
- var _searchParsed, _typeParsed, _sortParsed;
7601
+ var qsParsed = Ctx.client.getQueryParamsSearchFunction(fnName)({
7602
+ path: Ctx.path,
7603
+ start: page * PageSize,
7604
+ pageSize: PageSize
7605
+ });
7606
+ var qs = '';
7316
7607
 
7317
- qs = buildQs([].concat(qsParsed, (_searchParsed = searchParsed) != null ? _searchParsed : [], (_typeParsed = typeParsed) != null ? _typeParsed : [], (_sortParsed = sortParsed) != null ? _sortParsed : [], resultQueryParams));
7318
- } else {
7319
- var _sortParsed2;
7608
+ if (search || type || resultQueryParams.length > 0) {
7609
+ var _searchParsed, _typeParsed, _sortParsed;
7320
7610
 
7321
- qs = buildQs([].concat(qsParsed, (_sortParsed2 = sortParsed) != null ? _sortParsed2 : []));
7322
- }
7611
+ qs = buildQs([].concat(qsParsed, (_searchParsed = searchParsed) != null ? _searchParsed : [], (_typeParsed = typeParsed) != null ? _typeParsed : [], (_sortParsed = sortParsed) != null ? _sortParsed : [], resultQueryParams));
7612
+ } else {
7613
+ var _sortParsed2;
7323
7614
 
7324
- var signal = controller.signal;
7325
- return Promise.resolve(Ctx.client.search(Ctx.path, qs, false, false, {
7326
- signal: signal
7327
- })).then(function (data) {
7328
- setState({
7329
- items: data.member,
7330
- loading: false,
7331
- total: data.items_count
7615
+ qs = buildQs([].concat(qsParsed, (_sortParsed2 = sortParsed) != null ? _sortParsed2 : []));
7616
+ }
7617
+
7618
+ var signal = controller.signal;
7619
+ return Promise.resolve(Ctx.client.search(Ctx.path, qs, false, false, signal)).then(function (data) {
7620
+ setState({
7621
+ items: data.items,
7622
+ loading: false,
7623
+ total: data.items_count
7624
+ });
7332
7625
  });
7333
- });
7334
- } catch (e) {
7335
- Promise.reject(e);
7336
- }
7626
+ } catch (e) {
7627
+ return Promise.reject(e);
7628
+ }
7629
+ };
7337
7630
 
7631
+ getData();
7338
7632
  return function () {
7339
7633
  controller.abort();
7340
7634
  };
@@ -7379,12 +7673,14 @@
7379
7673
  var _filter$values;
7380
7674
 
7381
7675
  if (filter.type === 'select' && ((_filter$values = filter.values) != null ? _filter$values : []).length > 0) {
7676
+ var _filter$values2;
7677
+
7382
7678
  return jsxRuntime.jsx(Select, {
7383
7679
  id: filter.attribute_key,
7384
7680
  placeholder: filter.label,
7385
7681
  appendDefault: true,
7386
7682
  classWrap: "is-size-7 is-fullwidth",
7387
- options: filter.values,
7683
+ options: (_filter$values2 = filter.values) != null ? _filter$values2 : [],
7388
7684
  value: location.get(filter.attribute_key) || '',
7389
7685
  dataTest: "filterInput" + filter.attribute_key,
7390
7686
  onChange: function onChange(value) {
@@ -7451,7 +7747,7 @@
7451
7747
  var filterData = location.get(filter.attribute_key);
7452
7748
 
7453
7749
  if (filterData) {
7454
- var _filter$values2;
7750
+ var _filter$values3;
7455
7751
 
7456
7752
  if (filter.type === 'select' && filter.vocabulary) {
7457
7753
  return jsxRuntime.jsx("div", {
@@ -7460,7 +7756,7 @@
7460
7756
  vocabularyName: filter == null ? void 0 : filter.vocabulary
7461
7757
  })
7462
7758
  }, filter.attribute_key);
7463
- } else if (filter.type === 'select' && ((_filter$values2 = filter.values) != null ? _filter$values2 : []).length > 0) {
7759
+ } else if (filter.type === 'select' && ((_filter$values3 = filter.values) != null ? _filter$values3 : []).length > 0) {
7464
7760
  return jsxRuntime.jsx("div", {
7465
7761
  children: jsxRuntime.jsx(SearchOptionsLabels, {
7466
7762
  query: filter.attribute_key,
@@ -7506,7 +7802,7 @@
7506
7802
  className: "has-text-info is-flex is-align-items-center",
7507
7803
  children: [jsxRuntime.jsx("span", {
7508
7804
  children: column.label
7509
- }), getIcon(column.key, column.isSortable)]
7805
+ }), getIcon(column.key, !!column.isSortable)]
7510
7806
  })
7511
7807
  }, "table-col-" + column.label);
7512
7808
  }), jsxRuntime.jsx("th", {
@@ -7517,7 +7813,7 @@
7517
7813
  children: [items && items.map(function (item) {
7518
7814
  return jsxRuntime.jsx(RItem, {
7519
7815
  item: item,
7520
- search: search,
7816
+ search: search != null ? search : '',
7521
7817
  columns: columns
7522
7818
  }, item['@uid']);
7523
7819
  }), items && items.length === 0 && jsxRuntime.jsx("tr", {
@@ -7541,17 +7837,19 @@
7541
7837
  }
7542
7838
 
7543
7839
  function BehaviorsView(_ref) {
7840
+ var _context$__behaviors_;
7841
+
7544
7842
  var context = _ref.context,
7545
7843
  schema = _ref.schema;
7546
7844
  var Ctx = useTraversal();
7547
7845
  var getBehavior = Ctx.registry.getBehavior;
7548
- var behaviors = [].concat(context.__behaviors__, context['@static_behaviors']);
7846
+ var behaviors = [].concat((_context$__behaviors_ = context.__behaviors__) != null ? _context$__behaviors_ : [], Object(context['@static_behaviors']));
7549
7847
 
7550
- var GetBehavior = function GetBehavior(b) {
7551
- var Cls = getBehavior(b, BehaviorNotImplemented);
7848
+ var GetBehavior = function GetBehavior(behaviorName) {
7849
+ var Cls = getBehavior(behaviorName, BehaviorNotImplemented);
7552
7850
  return jsxRuntime.jsx(Cls, {
7553
- values: context[b],
7554
- properties: get$1(schema, ['definitions', b, 'properties'], {})
7851
+ values: context[behaviorName],
7852
+ properties: get(schema, ['definitions', behaviorName, 'properties'], {})
7555
7853
  });
7556
7854
  };
7557
7855
 
@@ -7647,9 +7945,11 @@
7647
7945
  var properties = Object.keys((schema == null ? void 0 : (_schema$data = schema.data) == null ? void 0 : _schema$data.properties) || []).filter(function (key) {
7648
7946
  return !ignoreFields.includes(key);
7649
7947
  }).map(function (key) {
7948
+ var _schema$data2;
7949
+
7650
7950
  return {
7651
7951
  key: key,
7652
- value: schema.data.properties[key]
7952
+ value: schema == null ? void 0 : (_schema$data2 = schema.data) == null ? void 0 : _schema$data2.properties[key]
7653
7953
  };
7654
7954
  });
7655
7955
  React.useEffect(function () {
@@ -7661,7 +7961,7 @@
7661
7961
  setSchema({
7662
7962
  loading: true
7663
7963
  });
7664
- return Promise.resolve(Ctx.client.getTypeSchema(Ctx.path, model.type)).then(function (dataJson) {
7964
+ return Promise.resolve(Ctx.client.getTypeSchema(Ctx.path, Ctx.context.type_name)).then(function (dataJson) {
7665
7965
  setSchema({
7666
7966
  loading: false,
7667
7967
  data: dataJson
@@ -7736,7 +8036,7 @@
7736
8036
  }), jsxRuntime.jsx("td", {
7737
8037
  children: jsxRuntime.jsx(EditableField, {
7738
8038
  field: prop,
7739
- value: Ctx.context[prop],
8039
+ value: get(Ctx.context, prop, ''),
7740
8040
  modifyContent: false
7741
8041
  })
7742
8042
  })]
@@ -7760,7 +8060,7 @@
7760
8060
  })
7761
8061
  }), jsxRuntime.jsx("tbody", {
7762
8062
  children: properties.map(function (_ref) {
7763
- var _schema$data$required, _schema$data2;
8063
+ var _schema$data$required, _schema$data3;
7764
8064
 
7765
8065
  var key = _ref.key,
7766
8066
  value = _ref.value;
@@ -7773,10 +8073,10 @@
7773
8073
  }), jsxRuntime.jsx("td", {
7774
8074
  children: jsxRuntime.jsx(EditableField, {
7775
8075
  field: key,
7776
- value: Ctx.context[key],
8076
+ value: get(Ctx.context, key, ''),
7777
8077
  schema: value,
7778
8078
  modifyContent: modifyContent,
7779
- required: ((_schema$data$required = (_schema$data2 = schema.data) == null ? void 0 : _schema$data2.required) != null ? _schema$data$required : []).includes(key)
8079
+ required: ((_schema$data$required = (_schema$data3 = schema.data) == null ? void 0 : _schema$data3.required) != null ? _schema$data$required : []).includes(key)
7780
8080
  })
7781
8081
  })]
7782
8082
  }, 'prop' + key);
@@ -7812,14 +8112,6 @@
7812
8112
  state = _useSetState[0],
7813
8113
  setState = _useSetState[1];
7814
8114
 
7815
- var getMultiples = function getMultiples(field, setter) {
7816
- return function (values) {
7817
- var _setter;
7818
-
7819
- setter((_setter = {}, _setter[field] = values, _setter));
7820
- };
7821
- };
7822
-
7823
8115
  var savePermission = function savePermission() {
7824
8116
  try {
7825
8117
  if (!state.principal || !state.setting || state.permission.length === 0) {
@@ -7869,7 +8161,7 @@
7869
8161
  children: intl.formatMessage(genericMessages.select_principal)
7870
8162
  }), jsxRuntime.jsx(Select, {
7871
8163
  appendDefault: true,
7872
- options: principals,
8164
+ options: principals != null ? principals : [],
7873
8165
  onChange: function onChange(value) {
7874
8166
  return setState({
7875
8167
  principal: value
@@ -7883,8 +8175,12 @@
7883
8175
  className: "label",
7884
8176
  children: intl.formatMessage(genericMessages.select_permissions)
7885
8177
  }), jsxRuntime.jsx(Select, {
7886
- options: permissions,
7887
- onChange: getMultiples('permission', setState),
8178
+ options: permissions != null ? permissions : [],
8179
+ onChange: function onChange(values) {
8180
+ setState({
8181
+ permission: values
8182
+ });
8183
+ },
7888
8184
  size: 5,
7889
8185
  multiple: true,
7890
8186
  dataTest: "selectPermissionsTest"
@@ -7935,14 +8231,6 @@
7935
8231
  state = _useSetState[0],
7936
8232
  setState = _useSetState[1];
7937
8233
 
7938
- var getMultiples = function getMultiples(field, setter) {
7939
- return function (values) {
7940
- var _setter;
7941
-
7942
- setter((_setter = {}, _setter[field] = values, _setter));
7943
- };
7944
- };
7945
-
7946
8234
  var savePermission = function savePermission() {
7947
8235
  try {
7948
8236
  if (!state.principal || !state.setting || state.roles.length === 0) {
@@ -7992,7 +8280,7 @@
7992
8280
  children: intl.formatMessage(genericMessages.select_principal)
7993
8281
  }), jsxRuntime.jsx(Select, {
7994
8282
  appendDefault: true,
7995
- options: principals,
8283
+ options: principals != null ? principals : [],
7996
8284
  onChange: function onChange(value) {
7997
8285
  return setState({
7998
8286
  principal: value
@@ -8007,7 +8295,11 @@
8007
8295
  children: intl.formatMessage(genericMessages.select_role)
8008
8296
  }), jsxRuntime.jsx(Select, {
8009
8297
  options: roles,
8010
- onChange: getMultiples('roles', setState),
8298
+ onChange: function onChange(values) {
8299
+ setState({
8300
+ roles: values
8301
+ });
8302
+ },
8011
8303
  size: 5,
8012
8304
  multiple: true,
8013
8305
  dataTest: "selectRoleTest"
@@ -8058,14 +8350,6 @@
8058
8350
  state = _useSetState[0],
8059
8351
  setState = _useSetState[1];
8060
8352
 
8061
- var getMultiples = function getMultiples(field, setter) {
8062
- return function (values) {
8063
- var _setter;
8064
-
8065
- setter((_setter = {}, _setter[field] = values, _setter));
8066
- };
8067
- };
8068
-
8069
8353
  var savePermission = function savePermission() {
8070
8354
  try {
8071
8355
  if (!state.role || !state.setting || state.permission.length === 0) {
@@ -8129,8 +8413,12 @@
8129
8413
  className: "label",
8130
8414
  children: intl.formatMessage(genericMessages.select_permissions)
8131
8415
  }), jsxRuntime.jsx(Select, {
8132
- options: permissions,
8133
- onChange: getMultiples('permission', setState),
8416
+ options: permissions != null ? permissions : [],
8417
+ onChange: function onChange(values) {
8418
+ setState({
8419
+ permission: values
8420
+ });
8421
+ },
8134
8422
  dataTest: "selectPermissionsTest",
8135
8423
  size: 5,
8136
8424
  multiple: true
@@ -8263,7 +8551,18 @@
8263
8551
  React.useEffect(function () {
8264
8552
  get('@sharing');
8265
8553
  }, [reset]);
8266
- var perms = new Sharing(result);
8554
+ var perms = React.useMemo(function () {
8555
+ if (result) {
8556
+ return new Sharing(result);
8557
+ }
8558
+
8559
+ return null;
8560
+ }, [result]);
8561
+
8562
+ if (perms === null) {
8563
+ return null;
8564
+ }
8565
+
8267
8566
  return jsxRuntime.jsxs("div", {
8268
8567
  className: "columns",
8269
8568
  children: [!loading && jsxRuntime.jsxs("div", {
@@ -8421,14 +8720,14 @@
8421
8720
  return Promise.resolve(Ctx.client.getPrincipals(Ctx.path)).then(function (principalsData) {
8422
8721
  var groups = principalsData.groups.map(function (group) {
8423
8722
  return {
8424
- text: group.id,
8425
- value: group.id
8723
+ text: group['@name'],
8724
+ value: group['@name']
8426
8725
  };
8427
8726
  });
8428
8727
  var users = principalsData.users.map(function (user) {
8429
8728
  return {
8430
- text: user.fullname || user.id,
8431
- value: user.id
8729
+ text: user.fullname || user['@name'],
8730
+ value: user['@name']
8432
8731
  };
8433
8732
  });
8434
8733
  principals = [].concat(groups, users);
@@ -8499,18 +8798,6 @@
8499
8798
  text: "Add " + title
8500
8799
  };
8501
8800
  if (items.length === 0) return [];
8502
-
8503
- if (items[0] && typeof items[0] === 'string') {
8504
- return [def].concat(items.map(function (x) {
8505
- return {
8506
- value: x,
8507
- text: x
8508
- };
8509
- })).filter(function (item) {
8510
- return !already.includes(item.value);
8511
- });
8512
- }
8513
-
8514
8801
  return [def].concat(items).filter(function (item) {
8515
8802
  return !already.includes(item.value);
8516
8803
  });
@@ -8523,7 +8810,7 @@
8523
8810
  noData = _ref.noData,
8524
8811
  onChange = _ref.onChange,
8525
8812
  loading = _ref.loading;
8526
- var selectRef = React.useRef();
8813
+ var selectRef = React.useRef(null);
8527
8814
 
8528
8815
  var _useState = React.useState(items),
8529
8816
  result = _useState[0],
@@ -8571,7 +8858,7 @@
8571
8858
  marginBottom: '20px'
8572
8859
  },
8573
8860
  children: noData
8574
- }), available.length > 1 && jsxRuntime.jsx("li", {
8861
+ }), (available != null ? available : []).length > 1 && jsxRuntime.jsx("li", {
8575
8862
  className: "widget-list-add select is-small",
8576
8863
  children: jsxRuntime.jsx(Select, {
8577
8864
  options: availableData,
@@ -8589,13 +8876,13 @@
8589
8876
  });
8590
8877
  }
8591
8878
 
8592
- var initialState$3 = {
8593
- types: undefined
8879
+ var initialState$4 = {
8880
+ types: []
8594
8881
  };
8595
8882
  function CreateButton() {
8596
8883
  var intl = reactIntl.useIntl();
8597
8884
 
8598
- var _useSetState = useSetState(initialState$3),
8885
+ var _useSetState = useSetState(initialState$4),
8599
8886
  state = _useSetState[0],
8600
8887
  setState = _useSetState[1];
8601
8888
 
@@ -8643,7 +8930,8 @@
8643
8930
 
8644
8931
  if (state.types && state.types.length === 0) {
8645
8932
  return null;
8646
- }
8933
+ } // Implement some kind of filtering
8934
+
8647
8935
 
8648
8936
  return jsxRuntime.jsx(Dropdown, {
8649
8937
  id: "dropdown-menu",
@@ -8682,7 +8970,7 @@
8682
8970
  var AddButton = _ref.AddButton;
8683
8971
  var intl = reactIntl.useIntl();
8684
8972
 
8685
- var _useSetState2 = useSetState(initialState$3),
8973
+ var _useSetState2 = useSetState(initialState$4),
8686
8974
  state = _useSetState2[0],
8687
8975
  setState = _useSetState2[1];
8688
8976
 
@@ -8693,7 +8981,7 @@
8693
8981
 
8694
8982
  var traversal = useTraversal();
8695
8983
  var Config = useConfig();
8696
- var searchText = location.get('q');
8984
+ var searchText = location.get('q') || '';
8697
8985
 
8698
8986
  var _useState = React.useState(searchText || ''),
8699
8987
  searchValue = _useState[0],
@@ -8706,14 +8994,13 @@
8706
8994
  setSearchValue(searchText);
8707
8995
  }, [searchText]);
8708
8996
 
8709
- var onSearchQuery = function onSearchQuery(ev) {
8710
- var search = ev.target[0].value;
8997
+ var onSearchQuery = function onSearchQuery(event) {
8998
+ event.preventDefault();
8711
8999
  setLocation({
8712
- q: search,
9000
+ q: event.currentTarget.elements.filterInput.value,
8713
9001
  tab: 'Items',
8714
9002
  page: 0
8715
9003
  });
8716
- ev.preventDefault();
8717
9004
  };
8718
9005
 
8719
9006
  var onSearchByType = function onSearchByType(typeText) {
@@ -8747,7 +9034,8 @@
8747
9034
  type: "text",
8748
9035
  className: "input is-size-7",
8749
9036
  placeholder: intl.formatMessage(genericMessages.search),
8750
- "data-test": "inputFilterTest"
9037
+ "data-test": "inputFilterTest",
9038
+ id: "filterInput"
8751
9039
  })
8752
9040
  }), jsxRuntime.jsx("div", {
8753
9041
  className: "control",
@@ -8774,7 +9062,9 @@
8774
9062
  value: item
8775
9063
  };
8776
9064
  }),
8777
- onChange: onSearchByType
9065
+ onChange: function onChange(value) {
9066
+ return onSearchByType(value);
9067
+ }
8778
9068
  })
8779
9069
  }), traversal.hasPerm('guillotina.AddContent') && jsxRuntime.jsx("div", {
8780
9070
  className: "level-item",
@@ -8815,11 +9105,11 @@
8815
9105
  location = _useLocation[0],
8816
9106
  setLocation = _useLocation[1];
8817
9107
 
8818
- if (location.get('tab')) {
8819
- currentTab = location.get('tab');
8820
- } else {
8821
- currentTab = currentTab || Object.keys(tabs)[0];
8822
- }
9108
+ currentTab = location.get('tab') || Object.keys(tabs)[0];
9109
+ /*if (!Object.keys(tabs).includes(currentTab)) {
9110
+ setLocation(defaultTab)
9111
+ currentTab = defaultTab
9112
+ }*/
8823
9113
 
8824
9114
  var _useState = React.useState(currentTab),
8825
9115
  current = _useState[0],
@@ -8828,7 +9118,7 @@
8828
9118
  var CurrentComp = tabs[current] || fallback;
8829
9119
  React__default['default'].useEffect(function () {
8830
9120
  if (Object.keys(tabs).includes(currentTab)) {
8831
- setTab(currentTab);
9121
+ setTab(currentTab); // setLocation({tab: currentTab})
8832
9122
  }
8833
9123
  }, [currentTab, tabs]);
8834
9124
 
@@ -8887,14 +9177,14 @@
8887
9177
  Behaviors: 'guillotina.ModifyContent',
8888
9178
  Permissions: 'guillotina.SeePermissions'
8889
9179
  };
8890
- function FolderCtx(props) {
9180
+ function FolderCtx() {
8891
9181
  var ctx = useTraversal();
8892
9182
  var calculated = ctx.filterTabs(tabs, tabsPermissions);
8893
- return jsxRuntime.jsx(TabsPanel, _extends({
9183
+ return jsxRuntime.jsx(TabsPanel, {
8894
9184
  tabs: calculated,
8895
9185
  currentTab: "Items",
8896
- rightToolbar: jsxRuntime.jsx(ContextToolbar, _extends({}, props))
8897
- }, props));
9186
+ rightToolbar: jsxRuntime.jsx(ContextToolbar, {})
9187
+ });
8898
9188
  }
8899
9189
 
8900
9190
  var tabs$1 = {
@@ -8908,13 +9198,13 @@
8908
9198
  Behaviors: 'guillotina.ModifyContent',
8909
9199
  Permissions: 'guillotina.SeePermissions'
8910
9200
  };
8911
- function ItemCtx(props) {
9201
+ function ItemCtx() {
8912
9202
  var ctx = useTraversal();
8913
9203
  var calculated = ctx.filterTabs(tabs$1, tabsPermissions$1);
8914
- return jsxRuntime.jsx(TabsPanel, _extends({
9204
+ return jsxRuntime.jsx(TabsPanel, {
8915
9205
  tabs: calculated,
8916
9206
  currentTab: "Properties"
8917
- }, props));
9207
+ });
8918
9208
  }
8919
9209
 
8920
9210
  function _catch$7(body, recover) {
@@ -8933,8 +9223,9 @@
8933
9223
 
8934
9224
  function ApplicationCtx() {
8935
9225
  var intl = reactIntl.useIntl();
8936
- var context = useTraversal();
8937
- var databases = context.state.context.databases;
9226
+ var traversal = useTraversal();
9227
+ var appContext = traversal.state.context;
9228
+ var databases = appContext.databases;
8938
9229
  return jsxRuntime.jsxs(jsxRuntime.Fragment, {
8939
9230
  children: [jsxRuntime.jsx("h3", {
8940
9231
  children: intl.formatMessage({
@@ -8948,22 +9239,26 @@
8948
9239
  className: "container",
8949
9240
  children: [jsxRuntime.jsx(ItemTitle, {
8950
9241
  title: "Objects"
8951
- }), databases.map(function (db) {
8952
- return jsxRuntime.jsx(Item, {
8953
- item: {
8954
- id: db,
8955
- path: "/" + db + "/"
8956
- },
8957
- icon: 'fas fa-database'
8958
- }, db);
9242
+ }), jsxRuntime.jsx("table", {
9243
+ children: jsxRuntime.jsx("tbody", {
9244
+ children: databases.map(function (db) {
9245
+ return jsxRuntime.jsx(Item, {
9246
+ item: {
9247
+ id: db,
9248
+ path: "/" + db + "/"
9249
+ },
9250
+ icon: 'fas fa-database'
9251
+ }, db);
9252
+ })
9253
+ })
8959
9254
  })]
8960
9255
  })]
8961
9256
  });
8962
9257
  }
8963
9258
  function DatabaseCtx() {
8964
- var context = useTraversal();
8965
- var containers = context.state.context.containers;
8966
- var path = context.state.path;
9259
+ var traversal = useTraversal();
9260
+ var containers = traversal.state.context.containers;
9261
+ var path = traversal.state.path;
8967
9262
  return jsxRuntime.jsx(jsxRuntime.Fragment, {
8968
9263
  children: jsxRuntime.jsxs("div", {
8969
9264
  className: "container",
@@ -9251,17 +9546,17 @@
9251
9546
 
9252
9547
  var searchText = location.get('q');
9253
9548
 
9254
- var onSearchQuery = function onSearchQuery(ev) {
9255
- var search = ev.target[0].value;
9549
+ var onSearchQuery = function onSearchQuery(event) {
9550
+ event.preventDefault();
9256
9551
  setLocation({
9257
- q: search,
9552
+ q: event.currentTarget.elements.filterInput.value,
9258
9553
  page: 0
9259
9554
  });
9260
- ev.preventDefault();
9261
- };
9555
+ }; // cleanup form on state.search change
9556
+
9262
9557
 
9263
9558
  React.useEffect(function () {
9264
- if (!searchText || searchText === '') {
9559
+ if (ref.current && (!searchText || searchText === '')) {
9265
9560
  ref.current.value = '';
9266
9561
  }
9267
9562
  }, [searchText]);
@@ -9281,7 +9576,8 @@
9281
9576
  type: "text",
9282
9577
  className: "input is-size-7",
9283
9578
  placeholder: intl.formatMessage(genericMessages.search),
9284
- "data-test": "inputFilterTest"
9579
+ "data-test": "inputFilterTest",
9580
+ id: "filterInput"
9285
9581
  })
9286
9582
  }), jsxRuntime.jsx("div", {
9287
9583
  className: "control",
@@ -9313,12 +9609,12 @@
9313
9609
  })]
9314
9610
  });
9315
9611
  }
9316
- function UsersCtx(props) {
9317
- return jsxRuntime.jsx(TabsPanel, _extends({
9612
+ function UsersCtx() {
9613
+ return jsxRuntime.jsx(TabsPanel, {
9318
9614
  tabs: tabs$3,
9319
9615
  currentTab: "Users",
9320
9616
  rightToolbar: jsxRuntime.jsx(UsersToolbar, {})
9321
- }, props));
9617
+ });
9322
9618
  }
9323
9619
  function UserCtx() {
9324
9620
  var intl = reactIntl.useIntl();
@@ -9335,9 +9631,10 @@
9335
9631
  state = _useState[0],
9336
9632
  setState = _useState[1];
9337
9633
 
9634
+ var userDataContext = Ctx.context;
9338
9635
  var fields = {
9339
9636
  user_groups: [],
9340
- user_roles: Ctx.context.user_roles
9637
+ user_roles: userDataContext.user_roles
9341
9638
  };
9342
9639
 
9343
9640
  var _useRemoteField = useRemoteField(fields),
@@ -9441,7 +9738,7 @@
9441
9738
  "value": "Username"
9442
9739
  }]
9443
9740
  }), ":", ' ']
9444
- }), ' ', Ctx.context.username, " (", Ctx.context.email, ")"]
9741
+ }), ' ', userDataContext.username, " (", userDataContext.email, ")"]
9445
9742
  }), jsxRuntime.jsxs("p", {
9446
9743
  children: [jsxRuntime.jsxs("label", {
9447
9744
  children: [' ', intl.formatMessage({
@@ -9451,7 +9748,7 @@
9451
9748
  "value": "Creation Date"
9452
9749
  }]
9453
9750
  }), ":", ' ']
9454
- }), ' ', formatDate(Ctx.context.creation_date)]
9751
+ }), ' ', formatDate(userDataContext.creation_date)]
9455
9752
  }), jsxRuntime.jsxs("p", {
9456
9753
  children: [jsxRuntime.jsxs("label", {
9457
9754
  children: [' ', intl.formatMessage({
@@ -9461,7 +9758,7 @@
9461
9758
  "value": "Modification Date"
9462
9759
  }]
9463
9760
  }), ":", ' ']
9464
- }), ' ', formatDate(Ctx.context.modification_date)]
9761
+ }), ' ', formatDate(userDataContext.modification_date)]
9465
9762
  }), jsxRuntime.jsx(Button, {
9466
9763
  className: "is-size-7 is-info",
9467
9764
  onClick: function onClick() {
@@ -9480,7 +9777,7 @@
9480
9777
  onSubmit: function onSubmit(ev) {
9481
9778
  return updateObject(ev);
9482
9779
  },
9483
- formData: Ctx.context,
9780
+ formData: userDataContext,
9484
9781
  exclude: ['password'],
9485
9782
  remotes: remotes,
9486
9783
  submitButton: false,
@@ -9494,7 +9791,7 @@
9494
9791
  className: "column",
9495
9792
  children: [jsxRuntime.jsx(TagsWidget, {
9496
9793
  onChange: updateRemote('user_groups'),
9497
- items: Ctx.context.user_groups,
9794
+ items: userDataContext.user_groups,
9498
9795
  title: "Groups",
9499
9796
  noData: intl.formatMessage({
9500
9797
  id: "there_is_no_groups_for_this_user",
@@ -9515,7 +9812,12 @@
9515
9812
  "value": "The user doesn't have any role"
9516
9813
  }]
9517
9814
  }),
9518
- available: state.roles
9815
+ available: state.roles.map(function (x) {
9816
+ return {
9817
+ value: x,
9818
+ text: x
9819
+ };
9820
+ })
9519
9821
  })]
9520
9822
  })]
9521
9823
  })]
@@ -9531,7 +9833,7 @@
9531
9833
  try {
9532
9834
  return Promise.resolve(Promise.all(items.map(function (item, i) {
9533
9835
  var input = form[i + 1] || {};
9534
- return Ctx.client.post("" + Ctx.path + item['@name'] + "/@duplicate", {
9836
+ return Ctx.client.post("" + Ctx.path + item.id + "/@duplicate", {
9535
9837
  destination: path,
9536
9838
  new_id: input.value || getNewId(item.id)
9537
9839
  });
@@ -9577,7 +9879,7 @@
9577
9879
  }), jsxRuntime.jsx("input", {
9578
9880
  type: "text",
9579
9881
  className: "input",
9580
- "data-test": "inputCopyIdTest-" + item['@name'],
9882
+ "data-test": "inputCopyIdTest-" + item.id,
9581
9883
  defaultValue: getNewId(item.id)
9582
9884
  })]
9583
9885
  }, item.id);
@@ -9650,9 +9952,9 @@
9650
9952
  var moveItems = function moveItems(path) {
9651
9953
  try {
9652
9954
  return Promise.resolve(Promise.all(items.map(function (item) {
9653
- return Ctx.client.post("" + Ctx.path + item['@name'] + "/@move", {
9955
+ return Ctx.client.post("" + Ctx.path + item.id + "/@move", {
9654
9956
  destination: path,
9655
- new_id: item['@name']
9957
+ new_id: item.id
9656
9958
  });
9657
9959
  }))).then(function (responses) {
9658
9960
  Ctx.refresh();
@@ -9989,17 +10291,17 @@
9989
10291
 
9990
10292
  var searchText = location.get('q');
9991
10293
 
9992
- var onSearchQuery = function onSearchQuery(ev) {
9993
- var search = ev.target[0].value;
10294
+ var onSearchQuery = function onSearchQuery(event) {
10295
+ event.preventDefault();
9994
10296
  setLocation({
9995
- q: search,
10297
+ q: event.currentTarget.elements.filterInput.value,
9996
10298
  page: 0
9997
10299
  });
9998
- ev.preventDefault();
9999
- };
10300
+ }; // cleanup form on state.search change
10301
+
10000
10302
 
10001
10303
  React.useEffect(function () {
10002
- if (!searchText || searchText === '') {
10304
+ if (ref.current && (!searchText || searchText === '')) {
10003
10305
  ref.current.value = '';
10004
10306
  }
10005
10307
  }, [searchText]);
@@ -10019,7 +10321,8 @@
10019
10321
  type: "text",
10020
10322
  className: "input is-size-7",
10021
10323
  placeholder: intl.formatMessage(genericMessages.search),
10022
- "data-test": "inputFilterTest"
10324
+ "data-test": "inputFilterTest",
10325
+ id: "filterInput"
10023
10326
  })
10024
10327
  }), jsxRuntime.jsx("div", {
10025
10328
  className: "control",
@@ -10057,12 +10360,12 @@
10057
10360
  })]
10058
10361
  });
10059
10362
  }
10060
- function GroupsCtx(props) {
10061
- return jsxRuntime.jsx(TabsPanel, _extends({
10363
+ function GroupsCtx() {
10364
+ return jsxRuntime.jsx(TabsPanel, {
10062
10365
  tabs: tabs$4,
10063
10366
  currentTab: "Groups",
10064
10367
  rightToolbar: jsxRuntime.jsx(GroupToolbar, {})
10065
- }, props));
10368
+ });
10066
10369
  }
10067
10370
  var sortParsed = parser("_sort_asc=id");
10068
10371
  var searchParsed = parser('type_name=User');
@@ -10077,6 +10380,7 @@
10077
10380
  roles = _useState[0],
10078
10381
  setRoles = _useState[1];
10079
10382
 
10383
+ var groupDataContext = Ctx.context;
10080
10384
  React.useEffect(function () {
10081
10385
  var getRoles = function getRoles() {
10082
10386
  try {
@@ -10130,11 +10434,11 @@
10130
10434
  var addRole = function addRole(role) {
10131
10435
  try {
10132
10436
  return Promise.resolve(patch({
10133
- user_roles: Ctx.context.user_roles.concat(role)
10437
+ user_roles: groupDataContext.user_roles.concat(role)
10134
10438
  })).then(function (_ref) {
10135
10439
  var isError = _ref.isError,
10136
10440
  errorMessage = _ref.errorMessage;
10137
- handleResponse(isError, intl.formatMessage({
10441
+ handleResponse(!!isError, intl.formatMessage({
10138
10442
  id: "role_added_to_group",
10139
10443
  defaultMessage: [{
10140
10444
  "type": 0,
@@ -10148,7 +10452,7 @@
10148
10452
  }]
10149
10453
  }, {
10150
10454
  role: role
10151
- }), errorMessage);
10455
+ }), errorMessage != null ? errorMessage : '');
10152
10456
  });
10153
10457
  } catch (e) {
10154
10458
  return Promise.reject(e);
@@ -10158,13 +10462,13 @@
10158
10462
  var removeRole = function removeRole(role) {
10159
10463
  try {
10160
10464
  return Promise.resolve(patch({
10161
- user_roles: Ctx.context.user_roles.filter(function (r) {
10465
+ user_roles: groupDataContext.user_roles.filter(function (r) {
10162
10466
  return r !== role;
10163
10467
  })
10164
10468
  })).then(function (_ref2) {
10165
10469
  var isError = _ref2.isError,
10166
10470
  errorMessage = _ref2.errorMessage;
10167
- handleResponse(isError, intl.formatMessage({
10471
+ handleResponse(!!isError, intl.formatMessage({
10168
10472
  id: "role_removed_from_group",
10169
10473
  defaultMessage: [{
10170
10474
  "type": 0,
@@ -10178,7 +10482,7 @@
10178
10482
  }]
10179
10483
  }, {
10180
10484
  role: role
10181
- }), errorMessage);
10485
+ }), errorMessage != null ? errorMessage : '');
10182
10486
  });
10183
10487
  } catch (e) {
10184
10488
  return Promise.reject(e);
@@ -10188,30 +10492,32 @@
10188
10492
  var addUser = function addUser(newUserId) {
10189
10493
  try {
10190
10494
  var data = {};
10191
- Ctx.context.users.forEach(function (user) {
10495
+ groupDataContext.users.forEach(function (user) {
10192
10496
  data[user] = true;
10193
10497
  });
10194
10498
  data[newUserId] = true;
10195
10499
  return Promise.resolve(Ctx.client.rest.patch(Ctx.containerPath + "@groups/" + Ctx.context['@name'], {
10196
10500
  users: data
10197
- })).then(function (_ref3) {
10198
- var isError = _ref3.isError,
10199
- errorMessage = _ref3.errorMessage;
10200
- handleResponse(isError, intl.formatMessage({
10201
- id: "user_added_to_group",
10202
- defaultMessage: [{
10203
- "type": 0,
10204
- "value": "User "
10205
- }, {
10206
- "type": 1,
10207
- "value": "user"
10501
+ })).then(function (response) {
10502
+ return Promise.resolve(processResponse(response)).then(function (_ref3) {
10503
+ var isError = _ref3.isError,
10504
+ errorMessage = _ref3.errorMessage;
10505
+ handleResponse(isError, intl.formatMessage({
10506
+ id: "user_added_to_group",
10507
+ defaultMessage: [{
10508
+ "type": 0,
10509
+ "value": "User "
10510
+ }, {
10511
+ "type": 1,
10512
+ "value": "user"
10513
+ }, {
10514
+ "type": 0,
10515
+ "value": " added to group"
10516
+ }]
10208
10517
  }, {
10209
- "type": 0,
10210
- "value": " added to group"
10211
- }]
10212
- }, {
10213
- user: newUserId
10214
- }), errorMessage);
10518
+ user: newUserId
10519
+ }), errorMessage != null ? errorMessage : '');
10520
+ });
10215
10521
  });
10216
10522
  } catch (e) {
10217
10523
  return Promise.reject(e);
@@ -10221,29 +10527,31 @@
10221
10527
  var removeUser = function removeUser(userToRemove) {
10222
10528
  try {
10223
10529
  var data = {};
10224
- Ctx.context.users.forEach(function (user) {
10530
+ groupDataContext.users.forEach(function (user) {
10225
10531
  data[user] = userToRemove !== user;
10226
10532
  });
10227
10533
  return Promise.resolve(Ctx.client.rest.patch(Ctx.containerPath + "@groups/" + Ctx.context['@name'], {
10228
10534
  users: data
10229
- })).then(function (_ref4) {
10230
- var isError = _ref4.isError,
10231
- errorMessage = _ref4.errorMessage;
10232
- handleResponse(isError, intl.formatMessage({
10233
- id: "user_removed_from_group",
10234
- defaultMessage: [{
10235
- "type": 0,
10236
- "value": "User "
10237
- }, {
10238
- "type": 1,
10239
- "value": "user"
10535
+ })).then(function (response) {
10536
+ return Promise.resolve(processResponse(response)).then(function (_ref4) {
10537
+ var isError = _ref4.isError,
10538
+ errorMessage = _ref4.errorMessage;
10539
+ handleResponse(isError, intl.formatMessage({
10540
+ id: "user_removed_from_group",
10541
+ defaultMessage: [{
10542
+ "type": 0,
10543
+ "value": "User "
10544
+ }, {
10545
+ "type": 1,
10546
+ "value": "user"
10547
+ }, {
10548
+ "type": 0,
10549
+ "value": " removed from group"
10550
+ }]
10240
10551
  }, {
10241
- "type": 0,
10242
- "value": " removed from group"
10243
- }]
10244
- }, {
10245
- user: userToRemove
10246
- }), errorMessage);
10552
+ user: userToRemove
10553
+ }), errorMessage != null ? errorMessage : '');
10554
+ });
10247
10555
  });
10248
10556
  } catch (e) {
10249
10557
  return Promise.reject(e);
@@ -10298,11 +10606,13 @@
10298
10606
  })
10299
10607
  }), jsxRuntime.jsx(Select, {
10300
10608
  options: roles.filter(function (role) {
10301
- return !Ctx.context.user_roles.includes(role.value);
10609
+ return !groupDataContext.user_roles.includes(role.value);
10302
10610
  }),
10303
10611
  appendDefault: true,
10304
- onChange: addRole
10305
- }), jsxRuntime.jsx("hr", {}), Ctx.context.user_roles.map(function (urole) {
10612
+ onChange: function onChange(value) {
10613
+ return addRole(value);
10614
+ }
10615
+ }), jsxRuntime.jsx("hr", {}), groupDataContext.user_roles.map(function (urole) {
10306
10616
  return jsxRuntime.jsx("p", {
10307
10617
  className: "control",
10308
10618
  children: jsxRuntime.jsx(Tag, {
@@ -10334,7 +10644,7 @@
10334
10644
  traversal: Ctx,
10335
10645
  onChange: addUser,
10336
10646
  btnClass: "is-small"
10337
- }), jsxRuntime.jsx("hr", {}), Ctx.context.users.map(function (user) {
10647
+ }), jsxRuntime.jsx("hr", {}), groupDataContext.users.map(function (user) {
10338
10648
  return jsxRuntime.jsx("p", {
10339
10649
  className: "control",
10340
10650
  children: jsxRuntime.jsx(Tag, {
@@ -10483,7 +10793,7 @@
10483
10793
  var links = buildPaths(segments);
10484
10794
 
10485
10795
  if (segments.length === 1) {
10486
- return false;
10796
+ return null;
10487
10797
  }
10488
10798
 
10489
10799
  return jsxRuntime.jsx("nav", {
@@ -10617,11 +10927,13 @@
10617
10927
  fallback = undefined;
10618
10928
  }
10619
10929
 
10620
- if (!context) return;
10930
+ if (!context) return; // console.log("Component for path", path)
10931
+ // lookup by path
10621
10932
 
10622
10933
  if (registry.paths[path]) {
10623
10934
  return registry.paths[path];
10624
- }
10935
+ } // by type
10936
+
10625
10937
 
10626
10938
  if (registry.views[context['@type']]) {
10627
10939
  return registry.views[context['@type']];
@@ -10644,19 +10956,15 @@
10644
10956
  return undefined;
10645
10957
  };
10646
10958
 
10647
- var getForm = function getForm(type, fallback) {
10648
- if (fallback === void 0) {
10649
- fallback = BaseForm;
10650
- }
10959
+ var getView = function getView(name) {
10960
+ return registry.views[name];
10961
+ };
10651
10962
 
10652
- return registry.forms[type] || fallback;
10963
+ var getForm = function getForm(type, fallback) {
10964
+ return registry.forms[type] || fallback || BaseForm;
10653
10965
  };
10654
10966
 
10655
10967
  var getAction = function getAction(type, fallback) {
10656
- if (fallback === void 0) {
10657
- fallback = undefined;
10658
- }
10659
-
10660
10968
  return registry.actions[type] || fallback;
10661
10969
  };
10662
10970
 
@@ -10673,10 +10981,21 @@
10673
10981
  };
10674
10982
 
10675
10983
  var getFieldsToFilter = function getFieldsToFilter(type, fallback) {
10984
+ if (fallback === void 0) {
10985
+ fallback = ['title'];
10986
+ }
10987
+
10676
10988
  return registry.fieldsToFilter[type] || fallback;
10677
10989
  };
10678
10990
 
10679
10991
  var getDefaultSortValue = function getDefaultSortValue(type, fallback) {
10992
+ if (fallback === void 0) {
10993
+ fallback = {
10994
+ key: 'id',
10995
+ direction: 'des'
10996
+ };
10997
+ }
10998
+
10680
10999
  return registry.defaultSortValue[type] || fallback;
10681
11000
  };
10682
11001
 
@@ -10684,12 +11003,14 @@
10684
11003
  return context.is_folderish ? FolderCtx : ItemCtx;
10685
11004
  };
10686
11005
  function useRegistry(data) {
11006
+ // if data is provided we need to merge it into actual registry
10687
11007
  var ref = React__default['default'].useRef();
10688
11008
 
10689
11009
  if (data && !ref.current) {
10690
11010
  ref.current = true;
10691
11011
  Object.keys(data).map(function (key) {
10692
- return registry[key] = _extends({}, registry[key], data[key]);
11012
+ var registryKey = key;
11013
+ registry[registryKey] = _extends({}, registry[registryKey], data[registryKey]);
10693
11014
  });
10694
11015
  }
10695
11016
 
@@ -10704,86 +11025,26 @@
10704
11025
  getItemsColumn: getItemsColumn,
10705
11026
  getFieldsToFilter: getFieldsToFilter,
10706
11027
  getDefaultSortValue: getDefaultSortValue,
10707
- getSchemas: getSchemas
11028
+ getSchemas: getSchemas,
11029
+ getView: getView
10708
11030
  };
10709
11031
  }
11032
+ /*
10710
11033
 
10711
- var initialState$4 = {
10712
- path: '',
10713
- loading: false,
10714
- context: undefined,
10715
- flash: {
10716
- message: undefined,
10717
- type: undefined
10718
- },
10719
- action: {
10720
- action: undefined,
10721
- params: undefined
11034
+ const registry = {
11035
+ paths: {
11036
+ "/db/guillotina/tags/": TagsContext
10722
11037
  },
10723
- permissions: undefined,
10724
- errorStatus: undefined,
10725
- registry: {},
10726
- refresh: undefined
10727
- };
10728
- function guillotinaReducer(state, action) {
10729
- switch (action.type) {
10730
- case 'SET_PATH':
10731
- return _extends({}, state, {
10732
- path: action.payload,
10733
- loading: true
10734
- });
10735
-
10736
- case 'SET_CONTEXT':
10737
- return _extends({}, state, action.payload, {
10738
- errorStatus: undefined,
10739
- loading: false
10740
- });
10741
-
10742
- case 'SET_ERROR':
10743
- return _extends({}, state, {
10744
- errorStatus: action.payload,
10745
- loading: false
10746
- });
10747
-
10748
- case 'SET_FLASH':
10749
- return _extends({}, state, action.payload);
10750
-
10751
- case 'CLEAR_FLASH':
10752
- return _extends({}, state, {
10753
- flash: {
10754
- message: undefined,
10755
- type: undefined
10756
- }
10757
- });
10758
-
10759
- case 'SET_ACTION':
10760
- return _extends({}, state, {
10761
- action: action.payload
10762
- });
11038
+ forms: {
11039
+ Tag: AddTagForm
11040
+ }
11041
+ }
10763
11042
 
10764
- case 'CLEAR_ACTION':
10765
- return _extends({}, state, {
10766
- action: {
10767
- action: undefined,
10768
- params: undefined
10769
- }
10770
- });
10771
11043
 
10772
- case 'REFRESH':
10773
- return _extends({}, state, {
10774
- refresh: Date.now(),
10775
- loading: !action.payload.transparent
10776
- });
11044
+ <guillotina registry={registry} />
10777
11045
 
10778
- case 'APPLY':
10779
- return _extends({}, state, {
10780
- context: _extends({}, state.context, action.payload)
10781
- });
10782
11046
 
10783
- default:
10784
- return state;
10785
- }
10786
- }
11047
+ */
10787
11048
 
10788
11049
  var actions = [
10789
11050
  {
@@ -13594,25 +13855,27 @@
13594
13855
  props = _objectWithoutPropertiesLoose(_ref, ["auth", "locale"]);
13595
13856
 
13596
13857
  var messages = loadLocaleData(locale);
13597
- var url = props.url || 'http://localhost:8080';
13858
+ var url = props.url || 'http://localhost:8080'; // without trailing slash
13859
+
13598
13860
  var config = props.config || {};
13599
13861
  var client = useGuillotinaClient();
13600
13862
 
13601
13863
  var _useConfig = useConfig(config),
13602
13864
  Permissions = _useConfig.Permissions;
13603
13865
 
13604
- var registry = useRegistry(props.registry || {});
13866
+ var registry = useRegistry(props.registry); // Location is cooked routing solution (only uses search params)
13605
13867
 
13606
13868
  var _useLocation = useLocation(),
13607
- location = _useLocation[0];
13869
+ location = _useLocation[0]; // if there is no path provided just go to root
13870
+
13608
13871
 
13609
13872
  var searchPath = location.get('path') || '/';
13610
13873
 
13611
13874
  if (searchPath && searchPath !== '') {
13612
- initialState$4.path = searchPath;
13875
+ initialState.path = searchPath;
13613
13876
  }
13614
13877
 
13615
- var _useReducer = React.useReducer(guillotinaReducer, initialState$4),
13878
+ var _useReducer = React.useReducer(guillotinaReducer, initialState),
13616
13879
  state = _useReducer[0],
13617
13880
  dispatch = _useReducer[1];
13618
13881
 
@@ -13620,8 +13883,10 @@
13620
13883
  refresh = state.refresh;
13621
13884
  React.useEffect(function () {
13622
13885
  dispatch({
13623
- type: 'SET_PATH',
13624
- payload: searchPath
13886
+ type: GuillotinaReducerActionTypes.SET_PATH,
13887
+ payload: {
13888
+ path: searchPath
13889
+ }
13625
13890
  });
13626
13891
  }, [searchPath]);
13627
13892
  React.useEffect(function () {
@@ -13630,14 +13895,18 @@
13630
13895
  return Promise.resolve(client.getContext(path)).then(function (data) {
13631
13896
  if (data.status === 401) {
13632
13897
  dispatch({
13633
- type: 'SET_ERROR',
13634
- payload: 'notallowed'
13898
+ type: GuillotinaReducerActionTypes.SET_ERROR,
13899
+ payload: {
13900
+ errorStatus: 'notallowed'
13901
+ }
13635
13902
  });
13636
13903
  return;
13637
13904
  } else if (data.status === 404) {
13638
13905
  dispatch({
13639
- type: 'SET_ERROR',
13640
- payload: 'notfound'
13906
+ type: GuillotinaReducerActionTypes.SET_ERROR,
13907
+ payload: {
13908
+ errorStatus: 'notallowed'
13909
+ }
13641
13910
  });
13642
13911
  return;
13643
13912
  }
@@ -13646,7 +13915,7 @@
13646
13915
  return Promise.resolve(client.canido(path, Permissions)).then(function (pr) {
13647
13916
  return Promise.resolve(pr.json()).then(function (permissions) {
13648
13917
  dispatch({
13649
- type: 'SET_CONTEXT',
13918
+ type: GuillotinaReducerActionTypes.SET_CONTEXT,
13650
13919
  payload: {
13651
13920
  context: context,
13652
13921
  permissions: permissions
@@ -13663,9 +13932,9 @@
13663
13932
 
13664
13933
  initContext();
13665
13934
  }, [path, refresh, client]);
13666
- var ErrorBoundary = registry.get('views', 'ErrorBoundary');
13667
- var NotAllowed = registry.get('views', 'NotAllowed');
13668
- var NotFound = registry.get('views', 'NotFound');
13935
+ var ErrorBoundary = registry.getView('ErrorBoundary');
13936
+ var NotAllowed = registry.getView('NotAllowed');
13937
+ var NotFound = registry.getView('NotFound');
13669
13938
  var Path = registry.get('components', 'Path');
13670
13939
  var contextData = {
13671
13940
  url: url,
@@ -13688,7 +13957,7 @@
13688
13957
  children: jsxRuntime.jsxs(ErrorBoundary, {
13689
13958
  children: [!errorStatus && jsxRuntime.jsx(TraversalProvider, _extends({}, contextData, {
13690
13959
  children: permissions && jsxRuntime.jsxs(React__default['default'].Fragment, {
13691
- children: [action.action && jsxRuntime.jsx(Action, _extends({}, action.params)), jsxRuntime.jsx("div", {
13960
+ children: [action.action && Action !== null && jsxRuntime.jsx(Action, _extends({}, action.params)), jsxRuntime.jsx("div", {
13692
13961
  className: "level",
13693
13962
  children: jsxRuntime.jsx("div", {
13694
13963
  className: "level-left",
@@ -13697,7 +13966,7 @@
13697
13966
  children: jsxRuntime.jsx(Path, {})
13698
13967
  })
13699
13968
  })
13700
- }), jsxRuntime.jsx(Flash, {}), Main && jsxRuntime.jsx(ErrorBoundary, {
13969
+ }), jsxRuntime.jsx(Flash, {}), Main !== undefined && jsxRuntime.jsx(ErrorBoundary, {
13701
13970
  children: jsxRuntime.jsxs("div", {
13702
13971
  className: "box main-panel",
13703
13972
  children: [state.loading && jsxRuntime.jsx(Loading, {}), !state.loading && jsxRuntime.jsx(Main, {
@@ -13807,7 +14076,7 @@
13807
14076
  var initialState$5 = {
13808
14077
  username: '',
13809
14078
  password: '',
13810
- loading: undefined,
14079
+ loading: false,
13811
14080
  errors: undefined
13812
14081
  };
13813
14082
  var Login = function Login(_ref) {
@@ -13823,7 +14092,7 @@
13823
14092
 
13824
14093
  var inputRef = React.useRef(null);
13825
14094
  React.useEffect(function () {
13826
- if (inputRef) {
14095
+ if (inputRef && inputRef.current) {
13827
14096
  inputRef.current.focus();
13828
14097
  }
13829
14098
  }, [inputRef]);
@@ -14044,30 +14313,30 @@
14044
14313
  dataTest: dataTest,
14045
14314
  children: [schema && schema.data && !schema.loading && schema.formFields.map(function (key) {
14046
14315
  if (!ignoreFiels.includes(key)) {
14047
- var _value$title;
14316
+ var _schema$data, _value$title, _schema$data2;
14048
14317
 
14049
- var value = schema.data.properties[key];
14318
+ var value = (_schema$data = schema.data) == null ? void 0 : _schema$data.properties[key];
14050
14319
  return jsxRuntime.jsx(EditComponent, {
14051
14320
  id: key,
14052
14321
  placeholder: (_value$title = value == null ? void 0 : value.title) != null ? _value$title : '',
14053
14322
  className: "",
14054
14323
  required: true,
14055
- schema: schema.data.properties[key],
14056
- setValue: function setValue(ev) {
14324
+ schema: (_schema$data2 = schema.data) == null ? void 0 : _schema$data2.properties[key],
14325
+ setValue: function setValue(value) {
14057
14326
  if (key === 'title') {
14058
14327
  var _extends2;
14059
14328
 
14060
14329
  setFormData(_extends({}, formData, (_extends2 = {
14061
- uuid: stringToSlug(ev)
14062
- }, _extends2[key] = ev, _extends2)));
14330
+ uuid: stringToSlug(value)
14331
+ }, _extends2[key] = value, _extends2)));
14063
14332
  } else if (key === 'uuid') {
14064
14333
  setFormData(_extends({}, formData, {
14065
- uuid: stringToSlug(ev)
14334
+ uuid: stringToSlug(value)
14066
14335
  }));
14067
14336
  } else {
14068
14337
  var _extends3;
14069
14338
 
14070
- setFormData(_extends({}, formData, (_extends3 = {}, _extends3[key] = ev, _extends3)));
14339
+ setFormData(_extends({}, formData, (_extends3 = {}, _extends3[key] = value, _extends3)));
14071
14340
  }
14072
14341
  },
14073
14342
  error: errors[key],
@@ -14198,6 +14467,7 @@
14198
14467
  method: 'post'
14199
14468
  })).then(function (data) {
14200
14469
  if (data.status === 401) {
14470
+ // invalid token
14201
14471
  _this4.cleanAuth();
14202
14472
 
14203
14473
  _this4.logout();
@@ -14260,7 +14530,7 @@
14260
14530
 
14261
14531
  if (!authToken) return {};
14262
14532
 
14263
- if (this.willExpire(expires) && this.retryRefresh < this.maxRetry) {
14533
+ if (this.willExpire(expires != null ? expires : '') && this.retryRefresh < this.maxRetry) {
14264
14534
 
14265
14535
  (function () {
14266
14536
  try {
@@ -14318,6 +14588,13 @@
14318
14588
  return Auth;
14319
14589
  }();
14320
14590
 
14591
+ (function (Setting) {
14592
+ Setting["Allow"] = "Allow";
14593
+ Setting["AllowSingle"] = "AllowSingle";
14594
+ Setting["Deny"] = "Deny";
14595
+ Setting["Unset"] = "Unset";
14596
+ })(exports.Setting || (exports.Setting = {}));
14597
+
14321
14598
  exports.AddItem = AddItem;
14322
14599
  exports.AddPermission = AddPermission;
14323
14600
  exports.AllItemsCheckbox = AllItemsCheckbox;
@@ -14331,7 +14608,6 @@
14331
14608
  exports.Checkbox = Checkbox;
14332
14609
  exports.ClientContext = ClientContext;
14333
14610
  exports.ClientProvider = ClientProvider;
14334
- exports.Config = Config;
14335
14611
  exports.Confirm = Confirm;
14336
14612
  exports.ContainerCtx = ContainerCtx;
14337
14613
  exports.ContextToolbar = ContextToolbar;
@@ -14429,12 +14705,14 @@
14429
14705
  exports.base64ToArrayBuffer = base64ToArrayBuffer;
14430
14706
  exports.buildQs = buildQs;
14431
14707
  exports.classnames = classnames;
14708
+ exports.debounce = debounce;
14432
14709
  exports.defaultComponent = defaultComponent;
14710
+ exports.defaultConfig = defaultConfig;
14433
14711
  exports.formatDate = formatDate;
14434
14712
  exports.generateUID = generateUID;
14435
14713
  exports.genericFileMessages = genericFileMessages;
14436
14714
  exports.genericMessages = genericMessages;
14437
- exports.get = get$1;
14715
+ exports.get = get;
14438
14716
  exports.getActionsObject = getActionsObject;
14439
14717
  exports.getClient = getClient;
14440
14718
  exports.getNewId = getNewId;