@bigbinary/neeto-folders-frontend 1.2.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +1,33 @@
1
1
  'use strict';
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
- var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
5
- var _regeneratorRuntime = require('@babel/runtime/regenerator');
4
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
6
5
  var shallow = require('zustand/shallow');
6
+ var reactQuery = require('@tanstack/react-query');
7
7
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
8
- var utils = require('@bigbinary/neeto-commons-frontend/utils');
8
+ var utils$1 = require('@bigbinary/neeto-commons-frontend/utils');
9
9
  var Alert = require('@bigbinary/neetoui/Alert');
10
10
  var reactI18next = require('react-i18next');
11
11
  var reactRouterDom = require('react-router-dom');
12
- var useFolderActions = require('../useFolderActions-BaDwQAdE.js');
13
- var pathUtils = require('../pathUtils-CHuLm_t6.js');
12
+ var useFolderActions = require('../useFolderActions-D8xGNhk0.js');
13
+ var constants = require('./constants.js');
14
+ var utils = require('../index-BFO1zYNo.js');
15
+ var internal = require('../internal-CS6_tPWL.js');
14
16
  var jsxRuntime = require('react/jsx-runtime');
15
17
  var Pane = require('@bigbinary/neetoui/Pane');
16
- var react = require('react');
18
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
19
+ var _regeneratorRuntime = require('@babel/runtime/regenerator');
20
+ var React = require('react');
17
21
  var formik = require('formik');
18
22
  var Typography = require('@bigbinary/neetoui/Typography');
19
23
  var Input = require('@bigbinary/neetoui/formik/Input');
20
24
  var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
21
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
25
+ var i18next = require('i18next');
26
+ var yup = require('yup');
22
27
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
28
+ var Switch = require('@bigbinary/neetoui/formik/Switch');
29
+ var Textarea = require('@bigbinary/neetoui/formik/Textarea');
30
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
23
31
  var antd = require('antd');
24
32
  var classNames = require('classnames');
25
33
  var Down = require('@bigbinary/neeto-icons/Down');
@@ -28,21 +36,30 @@ var ramda = require('ramda');
28
36
  var Button = require('@bigbinary/neetoui/Button');
29
37
  var neetoCist = require('@bigbinary/neeto-cist');
30
38
  var Radio = require('@bigbinary/neetoui/Radio');
31
- var Tooltip = require('@bigbinary/neetoui/Tooltip');
32
39
  var core = require('@dnd-kit/core');
33
- var Folder = require('@bigbinary/neeto-icons/Folder');
40
+ var Reorder = require('@bigbinary/neeto-icons/Reorder');
34
41
  var Toastr = require('@bigbinary/neetoui/Toastr');
35
42
  var reactDom = require('react-dom');
36
43
  var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
37
44
  var Checkbox = require('@bigbinary/neetoui/Checkbox');
38
45
  var Tree = require('@bigbinary/neetoui/Tree');
39
- require('i18next');
40
- require('@tanstack/react-query');
41
- require('./constants.js');
42
46
  require('zustand');
43
47
 
44
- function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
45
- function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
48
+ function ownKeys$e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
49
+ function _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
50
+ var useTranslation = function useTranslation(config) {
51
+ var _useDefaultTranslatio = reactI18next.useTranslation(),
52
+ t = _useDefaultTranslatio.t;
53
+ var modT = function modT(key, options) {
54
+ return config !== null && config !== void 0 && config.labels ? t(key, _objectSpread$e(_objectSpread$e({}, config.labels), options)) : t(key, options);
55
+ };
56
+ return {
57
+ t: modT
58
+ };
59
+ };
60
+
61
+ function ownKeys$d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
62
+ function _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
46
63
  var FoldersAlerts = function FoldersAlerts(_ref) {
47
64
  var config = _ref.config;
48
65
  var _useFolderStore = useFolderActions.useFolderStore(function (store) {
@@ -54,8 +71,9 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
54
71
  var queryParams = reactUtils.useQueryParams({
55
72
  toCamelCase: false
56
73
  });
74
+ var queryClient = reactQuery.useQueryClient();
57
75
  var history = reactRouterDom.useHistory();
58
- var _useTranslation = reactI18next.useTranslation(),
76
+ var _useTranslation = useTranslation(config),
59
77
  t = _useTranslation.t;
60
78
  var _useFolderStore2 = useFolderActions.useFolderStore(function (store) {
61
79
  var _store$alertState, _store$alertState2;
@@ -68,7 +86,7 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
68
86
  item = _useFolderStore2.item;
69
87
  var _useDestroyFolder = useFolderActions.useDestroyFolder(config),
70
88
  destroyFolder = _useDestroyFolder.mutateAsync,
71
- isLoading = _useDestroyFolder.isLoading;
89
+ isPending = _useDestroyFolder.isPending;
72
90
  var _useFolders = useFolderActions.useFolders(config),
73
91
  folders = _useFolders.folders;
74
92
  var onClose = function onClose() {
@@ -78,46 +96,33 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
78
96
  };
79
97
  var alertProps = {
80
98
  isOpen: !!type,
81
- isSubmitting: isLoading,
99
+ isSubmitting: isPending,
82
100
  onClose: onClose
83
101
  };
84
- var onConfirmDelete = /*#__PURE__*/function () {
85
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
86
- var path, parent;
87
- return _regeneratorRuntime.wrap(function _callee$(_context) {
88
- while (1) switch (_context.prev = _context.next) {
89
- case 0:
90
- _context.next = 2;
91
- return destroyFolder(item.id);
92
- case 2:
93
- onClose();
94
- if (!(!useFolderActions.isActiveFolder(item.sid) || !folders)) {
95
- _context.next = 5;
96
- break;
97
- }
98
- return _context.abrupt("return");
99
- case 5:
100
- path = pathUtils.pathToFolder(folders, item.id);
101
- parent = path[path.length - 2];
102
- if (parent) {
103
- _context.next = 9;
104
- break;
105
- }
106
- return _context.abrupt("return");
107
- case 9:
108
- history.replace(utils.buildUrl(config.folderPath, _objectSpread$a(_objectSpread$a({}, queryParams), {}, {
109
- folderId: parent.sid
110
- })));
111
- case 10:
112
- case "end":
113
- return _context.stop();
114
- }
115
- }, _callee);
116
- }));
117
- return function onConfirmDelete() {
118
- return _ref2.apply(this, arguments);
102
+ var onConfirmDelete = function onConfirmDelete() {
103
+ var onSuccess = function onSuccess() {
104
+ var isActive = internal.isActiveFolder(config, item.sid);
105
+ // Invalidates items and folder details. Refetch only if not active folder.
106
+ var invalidationKeys = [].concat(_toConsumableArray(config.invalidationKeys), [[constants.QUERY_KEYS.FOLDERS, config.type, constants.QUERY_KEYS.DETAILS]]);
107
+ invalidationKeys.forEach(function (queryKey) {
108
+ queryClient.invalidateQueries({
109
+ refetchType: isActive ? "none" : "active",
110
+ queryKey: queryKey
111
+ });
112
+ });
113
+ if (isActive && folders) {
114
+ var path = utils.pathToFolder(folders, item.id);
115
+ var parent = path[path.length - 2];
116
+ history.replace(utils$1.buildUrl(config.folderPath, _objectSpread$d(_objectSpread$d({}, queryParams), {}, {
117
+ folderId: parent ? parent.sid : ""
118
+ })));
119
+ }
119
120
  };
120
- }();
121
+ destroyFolder(item.id, {
122
+ onSuccess: onSuccess,
123
+ onSettled: onClose
124
+ });
125
+ };
121
126
  if (type === "delete") {
122
127
  alertProps.title = t("deleteFolder.title");
123
128
  alertProps.message = /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
@@ -127,13 +132,41 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
127
132
  if (config.customizeAlerts) config.customizeAlerts(type, item, alertProps);
128
133
  alertProps.onSubmit = onConfirmDelete;
129
134
  }
130
- return /*#__PURE__*/jsxRuntime.jsx(Alert, _objectSpread$a({}, alertProps));
135
+ return /*#__PURE__*/jsxRuntime.jsx(Alert, _objectSpread$d({}, alertProps));
131
136
  };
132
137
 
133
- var _excluded$4 = ["className", "disabled", "fieldNames", "label", "loading", "name", "placeholder", "required", "showSearch", "size", "treeData"];
134
- function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
135
- function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
136
- var TreeSelect = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
138
+ var FORM_VALIDATION_SCHEMA = yup.object().shape({
139
+ name: yup.string().required(i18next.t("errors.blank", {
140
+ entity: i18next.t("common.name")
141
+ }))
142
+ });
143
+
144
+ var _excluded$6 = ["type"];
145
+ function ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
146
+ function _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
147
+ var typeComponentMap = {
148
+ string: Input,
149
+ "boolean": Switch,
150
+ textarea: Textarea
151
+ };
152
+ var ExtraAttributes = function ExtraAttributes(_ref) {
153
+ var attributes = _ref.attributes;
154
+ if (!Array.isArray(attributes)) return null;
155
+ return attributes.map(function (_ref2) {
156
+ var type = _ref2.type,
157
+ rest = _objectWithoutProperties(_ref2, _excluded$6);
158
+ var Component = typeComponentMap[type];
159
+ if (!Component) return null;
160
+ return /*#__PURE__*/React.createElement(Component, _objectSpread$c(_objectSpread$c({}, rest), {}, {
161
+ key: rest.name
162
+ }));
163
+ });
164
+ };
165
+
166
+ var _excluded$5 = ["className", "disabled", "fieldNames", "label", "loading", "name", "placeholder", "required", "showSearch", "size", "treeData"];
167
+ function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
168
+ function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
169
+ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
137
170
  var _fieldNames$label;
138
171
  var className = _ref.className,
139
172
  _ref$disabled = _ref.disabled,
@@ -153,7 +186,7 @@ var TreeSelect = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
153
186
  _ref$size = _ref.size,
154
187
  size = _ref$size === void 0 ? "middle" : _ref$size,
155
188
  treeData = _ref.treeData,
156
- otherProps = _objectWithoutProperties(_ref, _excluded$4);
189
+ otherProps = _objectWithoutProperties(_ref, _excluded$5);
157
190
  var _useField = formik.useField(name),
158
191
  _useField2 = _slicedToArray(_useField, 3),
159
192
  field = _useField2[0],
@@ -171,13 +204,40 @@ var TreeSelect = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
171
204
  children: label
172
205
  }), /*#__PURE__*/jsxRuntime.jsx(antd.ConfigProvider, {
173
206
  theme: {
207
+ token: {
208
+ colorBgContainer: "rgb(var(--neeto-ui-white))",
209
+ colorBorder: "rgb(var(--neeto-ui-gray-300))",
210
+ colorBorderSecondary: "rgb(var(--neeto-ui-gray-200))",
211
+ colorFillAlter: "rgb(var(--neeto-ui-gray-100))",
212
+ colorFillContent: "rgb(var(--neeto-ui-gray-100))",
213
+ colorFillSecondary: "rgb(var(--neeto-ui-gray-100))",
214
+ colorIcon: "rgb(var(--neeto-ui-gray-700))",
215
+ colorIconHover: "rgb(var(--neeto-ui-gray-800))",
216
+ colorLink: "rgb(var(--neeto-ui-primary-500))",
217
+ colorLinkActive: "rgb(var(--neeto-ui-primary-800))",
218
+ colorLinkHover: "rgb(var(--neeto-ui-primary-600))",
219
+ colorPrimary: "rgb(var(--neeto-ui-primary-500))",
220
+ colorSplit: "rgb(var(--neeto-ui-gray-100))",
221
+ colorText: "rgb(var(--neeto-ui-gray-800))",
222
+ colorTextDescription: "rgb(var(--neeto-ui-gray-700))",
223
+ colorTextDisabled: "rgb(var(--neeto-ui-gray-600))",
224
+ colorTextHeading: "rgb(var(--neeto-ui-black))",
225
+ colorTextPlaceholder: "rgb(var(--neeto-ui-gray-500))",
226
+ controlItemBgActive: "rgb(var(--neeto-ui-primary-100))",
227
+ controlItemBgActiveHover: "rgb(var(--neeto-ui-pastel-purple))",
228
+ controlItemBgHover: "rgb(var(--neeto-ui-gray-100))"
229
+ },
174
230
  components: {
175
231
  TreeSelect: {
176
- titleHeight: 28
232
+ titleHeight: 28,
233
+ indentSize: 28,
234
+ nodeHoverBg: "rgb(var(--neeto-ui-gray-100))",
235
+ nodeSelectedBg: "rgb(var(--neeto-ui-primary-500))",
236
+ colorBgElevated: "rgb(var(--neeto-ui-white))"
177
237
  }
178
238
  }
179
239
  },
180
- children: /*#__PURE__*/jsxRuntime.jsx(antd.TreeSelect, _objectSpread$9(_objectSpread$9({
240
+ children: /*#__PURE__*/jsxRuntime.jsx(antd.TreeSelect, _objectSpread$b(_objectSpread$b({
181
241
  treeDataSimpleMode: true,
182
242
  "data-cy": "nui-select-container-wrapper",
183
243
  dropdownStyle: {
@@ -192,8 +252,10 @@ var TreeSelect = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
192
252
  "neeto-ui-tree-select__error": meta.error
193
253
  }),
194
254
  switcherIcon: function switcherIcon(props) {
195
- return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$9(_objectSpread$9({}, props), {}, {
196
- children: /*#__PURE__*/jsxRuntime.jsx(Down, {})
255
+ return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$b(_objectSpread$b({}, props), {}, {
256
+ children: /*#__PURE__*/jsxRuntime.jsx(Down, {
257
+ className: "relative"
258
+ })
197
259
  }));
198
260
  },
199
261
  onBlur: function onBlur() {
@@ -202,7 +264,7 @@ var TreeSelect = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
202
264
  onChange: function onChange(value) {
203
265
  return setValue(value);
204
266
  }
205
- }, _objectSpread$9({
267
+ }, _objectSpread$b({
206
268
  disabled: disabled,
207
269
  fieldNames: fieldNames,
208
270
  loading: loading,
@@ -239,12 +301,35 @@ var createFolderOptions = function createFolderOptions(foldersMap, config) {
239
301
  };
240
302
  });
241
303
  };
304
+ var createInitialValues = function createInitialValues(defaults, extraAttrs) {
305
+ var values = {
306
+ name: "",
307
+ parentId: defaults.parentId || null
308
+ };
309
+ extraAttrs === null || extraAttrs === void 0 || extraAttrs.forEach(function (_ref) {
310
+ var name = _ref.name,
311
+ defaultValue = _ref.defaultValue;
312
+ values[name] = defaultValue;
313
+ });
314
+ return values;
315
+ };
316
+ var createPayload = function createPayload(values, extraAttrs) {
317
+ var payload = {
318
+ name: values.name,
319
+ parentId: values.parentId
320
+ };
321
+ extraAttrs === null || extraAttrs === void 0 || extraAttrs.forEach(function (_ref2) {
322
+ var name = _ref2.name;
323
+ payload[name] = values[name];
324
+ });
325
+ return payload;
326
+ };
242
327
 
243
328
  var AddEditPane = function AddEditPane(_ref) {
244
329
  var setFocusField = _ref.setFocusField,
245
330
  config = _ref.config,
246
331
  onClose = _ref.onClose;
247
- var _useTranslation = reactI18next.useTranslation(),
332
+ var _useTranslation = useTranslation(config),
248
333
  t = _useTranslation.t;
249
334
  var _useFolderStore = useFolderActions.useFolderStore(function (store) {
250
335
  var _store$paneState, _store$paneState2;
@@ -262,32 +347,29 @@ var AddEditPane = function AddEditPane(_ref) {
262
347
  var _useUpdateFolder = useFolderActions.useUpdateFolder(config),
263
348
  updateFolder = _useUpdateFolder.mutateAsync;
264
349
  var isEditing = type === "edit" && item;
265
- var foldersMap = react.useMemo(function () {
266
- return pathUtils.treeToMap(folders, "sid");
350
+ var foldersMap = React.useMemo(function () {
351
+ return utils.treeToMap(folders, "sid");
267
352
  }, [folders]);
268
- var folderOptions = react.useMemo(function () {
353
+ var folderOptions = React.useMemo(function () {
269
354
  return createFolderOptions(foldersMap, config);
270
355
  }, [foldersMap]);
271
- var activeFolderSid = useFolderActions.getActiveFolderId(config);
356
+ var activeFolderSid = internal.getActiveFolderId(config);
272
357
  var activeFolder = foldersMap[activeFolderSid];
273
358
  var isValidParent = (activeFolder === null || activeFolder === void 0 ? void 0 : activeFolder.meta.depth) < config.maxDepth;
274
359
  var parentId = isValidParent ? activeFolder.id : null;
275
- var initialValues = react.useMemo(function () {
276
- return isEditing ? item : {
277
- name: "",
360
+ var extraAttributes = config.extraAttributes;
361
+ var initialValues = React.useMemo(function () {
362
+ return isEditing ? item : createInitialValues({
278
363
  parentId: parentId
279
- };
280
- }, [isEditing, item, parentId]);
364
+ }, extraAttributes);
365
+ }, [isEditing, item, parentId, extraAttributes]);
281
366
  var onSubmitForm = /*#__PURE__*/function () {
282
367
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(values) {
283
368
  var payload;
284
369
  return _regeneratorRuntime.wrap(function _callee$(_context) {
285
370
  while (1) switch (_context.prev = _context.next) {
286
371
  case 0:
287
- payload = {
288
- name: values.name,
289
- parent_id: values.parentId
290
- };
372
+ payload = createPayload(values, extraAttributes);
291
373
  if (!isEditing) {
292
374
  _context.next = 6;
293
375
  break;
@@ -324,16 +406,21 @@ var AddEditPane = function AddEditPane(_ref) {
324
406
  }), /*#__PURE__*/jsxRuntime.jsx(formik.Formik, {
325
407
  initialValues: initialValues,
326
408
  enableReinitialize: true,
409
+ validationSchema: FORM_VALIDATION_SCHEMA,
327
410
  onSubmit: onSubmitForm,
328
411
  children: function children() {
329
412
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
330
413
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
414
+ className: "pb-6",
331
415
  children: /*#__PURE__*/jsxRuntime.jsxs(formik.Form, {
332
416
  className: "w-full space-y-5",
333
417
  children: [/*#__PURE__*/jsxRuntime.jsx(Input, {
418
+ required: true,
334
419
  label: t("folders.name"),
335
420
  name: "name",
336
421
  ref: setFocusField
422
+ }), /*#__PURE__*/jsxRuntime.jsx(ExtraAttributes, {
423
+ attributes: extraAttributes
337
424
  }), /*#__PURE__*/jsxRuntime.jsxs("div", {
338
425
  children: [/*#__PURE__*/jsxRuntime.jsx(TreeSelect, {
339
426
  allowClear: true,
@@ -342,7 +429,8 @@ var AddEditPane = function AddEditPane(_ref) {
342
429
  name: "parentId",
343
430
  treeData: folderOptions
344
431
  }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
345
- style: "nano",
432
+ className: "mt-1",
433
+ style: "body3",
346
434
  children: t("createFolder.parentInfo")
347
435
  })]
348
436
  })]
@@ -360,10 +448,11 @@ var AddEditPane = function AddEditPane(_ref) {
360
448
  });
361
449
  };
362
450
 
363
- var _excluded$3 = ["icon", "itemLabel", "folder", "depth", "className", "onClick"];
364
- function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
365
- function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
366
- var indentSize = 30;
451
+ var REORDER_TREE_INDENT_WIDTH = 30;
452
+
453
+ var _excluded$4 = ["icon", "itemLabel", "folder", "depth", "className", "onClick"];
454
+ function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
455
+ function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
367
456
  var Node = function Node(_ref, ref) {
368
457
  var _folder$children$leng, _folder$children;
369
458
  var _ref$icon = _ref.icon,
@@ -373,7 +462,7 @@ var Node = function Node(_ref, ref) {
373
462
  depth = _ref.depth,
374
463
  className = _ref.className,
375
464
  onClick = _ref.onClick,
376
- rest = _objectWithoutProperties(_ref, _excluded$3);
465
+ rest = _objectWithoutProperties(_ref, _excluded$4);
377
466
  var _useTranslation = reactI18next.useTranslation(),
378
467
  t = _useTranslation.t;
379
468
  var metaInfo = [];
@@ -383,18 +472,18 @@ var Node = function Node(_ref, ref) {
383
472
  }));
384
473
  folder.itemCount > 0 && metaInfo.push("".concat(folder.itemCount, " ").concat(itemLabel));
385
474
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
386
- className: "flex",
475
+ className: "flex w-full min-w-0",
387
476
  children: [Array.from({
388
477
  length: depth
389
478
  }).map(function (_, index) {
390
479
  return /*#__PURE__*/jsxRuntime.jsx("span", {
391
- className: "relative border-l",
480
+ className: "neeto-ui-border-gray-300 relative h-full flex-shrink-0 border-l",
392
481
  style: {
393
- width: indentSize,
394
- left: Math.round(indentSize / 2)
482
+ width: REORDER_TREE_INDENT_WIDTH,
483
+ left: Math.round(REORDER_TREE_INDENT_WIDTH / 2)
395
484
  }
396
485
  }, index);
397
- }), /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread$8(_objectSpread$8({}, _objectSpread$8(_objectSpread$8({}, rest), {}, {
486
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread$a(_objectSpread$a({}, _objectSpread$a(_objectSpread$a({}, rest), {}, {
398
487
  onClick: onClick,
399
488
  ref: ref
400
489
  })), {}, {
@@ -402,12 +491,14 @@ var Node = function Node(_ref, ref) {
402
491
  children: [icon, /*#__PURE__*/jsxRuntime.jsxs("div", {
403
492
  className: "ml-2",
404
493
  children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
405
- style: "body3",
494
+ lineHeight: "snug",
495
+ style: "body1",
406
496
  weight: "medium",
407
497
  children: folder.name
408
498
  }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
409
- className: "relative -top-0.5",
410
- style: "nano",
499
+ className: "relative mt-0.5",
500
+ lineHeight: "snug",
501
+ style: "body3",
411
502
  weight: "normal",
412
503
  children: metaInfo.join(" . ")
413
504
  })]
@@ -415,11 +506,11 @@ var Node = function Node(_ref, ref) {
415
506
  }))]
416
507
  });
417
508
  };
418
- var Node$1 = /*#__PURE__*/react.forwardRef(Node);
509
+ var Node$1 = /*#__PURE__*/React.forwardRef(Node);
419
510
 
420
- var _excluded$2 = ["folder", "item", "depth", "maxDepth", "disabled"];
421
- function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
422
- function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
511
+ var _excluded$3 = ["folder", "item", "depth", "maxDepth", "disabled", "config"];
512
+ function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
513
+ function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
423
514
  var _SelectableNode = function SelectableNode(_ref) {
424
515
  var folder = _ref.folder,
425
516
  item = _ref.item,
@@ -427,16 +518,18 @@ var _SelectableNode = function SelectableNode(_ref) {
427
518
  depth = _ref$depth === void 0 ? 0 : _ref$depth,
428
519
  maxDepth = _ref.maxDepth,
429
520
  disabled = _ref.disabled,
430
- rest = _objectWithoutProperties(_ref, _excluded$2);
521
+ config = _ref.config,
522
+ rest = _objectWithoutProperties(_ref, _excluded$3);
431
523
  var selection = rest.selection,
432
524
  onSelect = rest.onSelect;
433
- var _useTranslation = reactI18next.useTranslation(),
525
+ var _useTranslation = useTranslation(config),
434
526
  t = _useTranslation.t;
435
527
  var isDisabled = disabled || (item === null || item === void 0 ? void 0 : item.id) === folder.id || depth > maxDepth;
436
528
  var renderChildren = function renderChildren() {
437
529
  if (neetoCist.isNotPresent(folder.children)) return null;
438
530
  return folder.children.map(function (child) {
439
- return /*#__PURE__*/react.createElement(_SelectableNode, _objectSpread$7(_objectSpread$7({}, _objectSpread$7(_objectSpread$7({}, rest), {}, {
531
+ return /*#__PURE__*/React.createElement(_SelectableNode, _objectSpread$9(_objectSpread$9({}, _objectSpread$9(_objectSpread$9({}, rest), {}, {
532
+ config: config,
440
533
  item: item,
441
534
  maxDepth: maxDepth
442
535
  })), {}, {
@@ -447,33 +540,31 @@ var _SelectableNode = function SelectableNode(_ref) {
447
540
  }));
448
541
  });
449
542
  };
450
- return /*#__PURE__*/jsxRuntime.jsx(Tooltip, {
451
- content: t("moveToFolder.notAllowed"),
452
- disabled: !isDisabled,
453
- position: "top",
454
- children: /*#__PURE__*/jsxRuntime.jsxs("div", {
455
- className: classNames({
456
- "opacity-40": isDisabled
543
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
544
+ "aria-disabled": isDisabled,
545
+ className: classNames({
546
+ "opacity-60": isDisabled
547
+ }),
548
+ title: isDisabled ? t("moveToFolder.notAllowed") : undefined,
549
+ children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$9(_objectSpread$9({}, _objectSpread$9(_objectSpread$9({}, rest), {}, {
550
+ depth: depth,
551
+ folder: folder
552
+ })), {}, {
553
+ icon: /*#__PURE__*/jsxRuntime.jsx(Radio.Item, {
554
+ readOnly: true,
555
+ checked: selection === folder.id,
556
+ className: "neeto-ui-radio__container",
557
+ name: "move-folder-option"
457
558
  }),
458
- children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$7(_objectSpread$7({}, _objectSpread$7(_objectSpread$7({}, rest), {}, {
459
- depth: depth,
460
- folder: folder
461
- })), {}, {
462
- icon: /*#__PURE__*/jsxRuntime.jsx(Radio.Item, {
463
- readOnly: true,
464
- checked: selection === folder.id,
465
- name: "move-folder-option"
466
- }),
467
- onClick: isDisabled ? neetoCist.noop : function () {
468
- return onSelect(folder);
469
- }
470
- })), renderChildren()]
471
- })
559
+ onClick: isDisabled ? neetoCist.noop : function () {
560
+ return onSelect(folder);
561
+ }
562
+ })), renderChildren()]
472
563
  });
473
564
  };
474
565
 
475
- function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
476
- function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
566
+ function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
567
+ function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
477
568
  var PaneBody = function PaneBody(_ref) {
478
569
  var item = _ref.item,
479
570
  config = _ref.config,
@@ -483,7 +574,7 @@ var PaneBody = function PaneBody(_ref) {
483
574
  onSubmit = _ref.onSubmit,
484
575
  onClose = _ref.onClose,
485
576
  onRemove = _ref.onRemove;
486
- var _useState = react.useState(null),
577
+ var _useState = React.useState(null),
487
578
  _useState2 = _slicedToArray(_useState, 2),
488
579
  selection = _useState2[0],
489
580
  setSelection = _useState2[1];
@@ -496,14 +587,14 @@ var PaneBody = function PaneBody(_ref) {
496
587
  var _useFetchFolders = useFolderActions.useFetchFolders(config),
497
588
  _useFetchFolders$data = _useFetchFolders.data,
498
589
  folders = _useFetchFolders$data === void 0 ? [] : _useFetchFolders$data;
499
- var _useTranslation = reactI18next.useTranslation(),
590
+ var _useTranslation = useTranslation(config),
500
591
  t = _useTranslation.t;
501
592
  var folderDepth = 0;
502
593
  if (item) {
503
594
  // If item is a folder, measure the current depth from current folder to longest leaf.
504
- var foldersMap = pathUtils.treeToMap(folders);
595
+ var foldersMap = utils.treeToMap(folders);
505
596
  var folder = foldersMap[item.id];
506
- if (folder) folderDepth = pathUtils.measureDepth(folder);
597
+ if (folder) folderDepth = utils.measureDepth(folder);
507
598
  }
508
599
  var maxDepth = config.maxDepth - folderDepth;
509
600
  var onAddFolder = function onAddFolder() {
@@ -527,14 +618,16 @@ var PaneBody = function PaneBody(_ref) {
527
618
  onClick: onAddFolder
528
619
  })]
529
620
  }), /*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
621
+ className: "pb-6",
530
622
  children: folders.map(function (folder) {
531
- return /*#__PURE__*/react.createElement(_SelectableNode, {
623
+ return /*#__PURE__*/React.createElement(_SelectableNode, {
624
+ config: config,
532
625
  folder: folder,
533
626
  item: item,
534
627
  maxDepth: maxDepth,
535
628
  selection: selection,
536
629
  disabled: (item === null || item === void 0 ? void 0 : item.id) === folder.id || maxDepth <= 0,
537
- itemLabel: config.itemLabel,
630
+ itemLabel: config.labels.item,
538
631
  key: folder.id,
539
632
  onSelect: function onSelect(folder) {
540
633
  return setSelection(folder.id);
@@ -545,19 +638,19 @@ var PaneBody = function PaneBody(_ref) {
545
638
  className: "space-x-2",
546
639
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
547
640
  className: "flex flex-1 space-x-2",
548
- children: [/*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$6({
641
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$8({
549
642
  disabled: !selection,
550
643
  label: t("common.save"),
551
644
  style: "primary",
552
645
  onClick: function onClick() {
553
646
  return onSubmit(selection);
554
647
  }
555
- }, submitButtonProps)), /*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$6({
648
+ }, submitButtonProps)), /*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$8({
556
649
  label: t("common.cancel"),
557
650
  style: "text",
558
651
  onClick: onClose
559
652
  }, cancelButtonProps))]
560
- }), onRemove && /*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$6({
653
+ }), onRemove && /*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$8({
561
654
  label: t("moveToFolder.remove"),
562
655
  style: "tertiary",
563
656
  onClick: onRemove
@@ -598,14 +691,14 @@ var MoveFolderPane = function MoveFolderPane(_ref) {
598
691
  });
599
692
  };
600
693
 
601
- var _excluded$1 = ["folder", "depth"];
602
- function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
603
- function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
604
- var _DraggableNode = function DraggableNode(_ref) {
694
+ var _excluded$2 = ["folder", "depth"];
695
+ function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
696
+ function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
697
+ var _DraggableNode$1 = function DraggableNode(_ref) {
605
698
  var folder = _ref.folder,
606
699
  _ref$depth = _ref.depth,
607
700
  depth = _ref$depth === void 0 ? 0 : _ref$depth,
608
- rest = _objectWithoutProperties(_ref, _excluded$1);
701
+ rest = _objectWithoutProperties(_ref, _excluded$2);
609
702
  var _useDraggable = core.useDraggable({
610
703
  id: "draggable-item--".concat(folder.id),
611
704
  data: folder,
@@ -625,21 +718,22 @@ var _DraggableNode = function DraggableNode(_ref) {
625
718
  var renderChildren = function renderChildren() {
626
719
  if (neetoCist.isNotPresent(folder.children) || isDragging) return null;
627
720
  return folder.children.map(function (child) {
628
- return /*#__PURE__*/react.createElement(_DraggableNode, _objectSpread$5(_objectSpread$5({}, rest), {}, {
721
+ return /*#__PURE__*/React.createElement(_DraggableNode$1, _objectSpread$7(_objectSpread$7({}, rest), {}, {
629
722
  depth: depth + 1,
630
723
  folder: child,
631
724
  key: child.id
632
725
  }));
633
726
  });
634
727
  };
635
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
636
- children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$5(_objectSpread$5(_objectSpread$5({}, rest), {}, {
728
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
729
+ children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$7(_objectSpread$7(_objectSpread$7({}, rest), {}, {
637
730
  className: classNames({
638
- "neeto-ui-bg-gray-100 opacity-50 ": isDragging,
731
+ "neeto-ui-rounded-lg hover:neeto-ui-bg-gray-100 w-full min-w-0 cursor-move transition-colors": true,
732
+ "neeto-ui-bg-gray-100 opacity-50": isDragging,
639
733
  "neeto-ui-border-primary-500 border": isOver,
640
734
  "border border-transparent": !isOver
641
735
  })
642
- }, _objectSpread$5(_objectSpread$5({
736
+ }, _objectSpread$7(_objectSpread$7({
643
737
  depth: depth,
644
738
  folder: folder
645
739
  }, attributes), listeners)), {}, {
@@ -651,20 +745,20 @@ var _DraggableNode = function DraggableNode(_ref) {
651
745
  });
652
746
  };
653
747
 
654
- function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
655
- function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
656
- var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
748
+ function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
749
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
750
+ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
657
751
  var config = _ref.config,
658
752
  onClose = _ref.onClose;
659
- var _useState = react.useState(null),
753
+ var _useState = React.useState(null),
660
754
  _useState2 = _slicedToArray(_useState, 2),
661
755
  dragItem = _useState2[0],
662
756
  setDragItem = _useState2[1];
663
- var _useState3 = react.useState({}),
757
+ var _useState3 = React.useState({}),
664
758
  _useState4 = _slicedToArray(_useState3, 2),
665
759
  changes = _useState4[0],
666
760
  setChanges = _useState4[1];
667
- var _useTranslation = reactI18next.useTranslation(),
761
+ var _useTranslation = useTranslation(config),
668
762
  t = _useTranslation.t;
669
763
  var _useFetchFolders = useFolderActions.useFetchFolders(config),
670
764
  folders = _useFetchFolders.data;
@@ -686,7 +780,7 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
686
780
  over = _ref2.over;
687
781
  setDragItem(null);
688
782
  if (!over) return;
689
- var foldersMap = pathUtils.treeToMap(tree);
783
+ var foldersMap = utils.treeToMap(tree);
690
784
  var activeFolder = foldersMap[active.data.current.id];
691
785
  var overFolder = foldersMap[over.data.current.id];
692
786
 
@@ -695,7 +789,7 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
695
789
 
696
790
  // Check moving to a folder with depth greater than the allowed limit.
697
791
  // maxDepth + 1 due to extra root node added for the tree
698
- var activeDepth = pathUtils.measureDepth(activeFolder);
792
+ var activeDepth = utils.measureDepth(activeFolder);
699
793
  var overDepth = overFolder.meta.depth;
700
794
  if (activeDepth + overDepth >= config.maxDepth + 1) {
701
795
  Toastr.error(t("moveToFolder.depthExceeded", {
@@ -704,7 +798,7 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
704
798
  return;
705
799
  }
706
800
  activeFolder.meta.parent = overFolder;
707
- var newTree = pathUtils.mapToTree(foldersMap);
801
+ var newTree = utils.mapToTree(foldersMap);
708
802
  setTree(newTree);
709
803
  setChanges(ramda.assoc(activeFolder.id, overFolder.id));
710
804
  };
@@ -717,8 +811,10 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
717
811
  });
718
812
  };
719
813
  var nodeProps = {
720
- icon: /*#__PURE__*/jsxRuntime.jsx(Folder, {}),
721
- itemLabel: config.itemLabel
814
+ icon: /*#__PURE__*/jsxRuntime.jsx(Reorder, {
815
+ className: "neeto-ui-text-gray-500 relative -left-[0.3125rem] flex-shrink-0"
816
+ }),
817
+ itemLabel: config.labels.item
722
818
  };
723
819
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
724
820
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Header, {
@@ -733,12 +829,13 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
733
829
  return setDragItem(active.data.current);
734
830
  },
735
831
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
736
- children: /*#__PURE__*/react.createElement(_DraggableNode, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
832
+ className: "pb-6",
833
+ children: /*#__PURE__*/React.createElement(_DraggableNode$1, _objectSpread$6(_objectSpread$6({}, nodeProps), {}, {
737
834
  folder: tree,
738
835
  key: tree.id
739
836
  }))
740
837
  }), /*#__PURE__*/jsxRuntime.jsxs(Pane.Footer, {
741
- className: "space-x-2",
838
+ className: "gap-2",
742
839
  children: [/*#__PURE__*/jsxRuntime.jsx(Button, {
743
840
  disabled: ramda.isEmpty(changes),
744
841
  label: t("common.save"),
@@ -751,7 +848,7 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
751
848
  })]
752
849
  }), /*#__PURE__*/reactDom.createPortal(/*#__PURE__*/jsxRuntime.jsx(core.DragOverlay, {
753
850
  zIndex: 99999,
754
- children: dragItem && /*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
851
+ children: dragItem && /*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$6(_objectSpread$6({}, nodeProps), {}, {
755
852
  className: "neeto-ui-bg-gray-200",
756
853
  depth: 0,
757
854
  folder: dragItem
@@ -761,6 +858,312 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
761
858
  });
762
859
  };
763
860
 
861
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
862
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
863
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
864
+ var distanceBetween = function distanceBetween(p1, p2) {
865
+ return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));
866
+ };
867
+ var centerOfRectangle = function centerOfRectangle(rect) {
868
+ var left = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : rect.left;
869
+ var top = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : rect.top;
870
+ return {
871
+ x: left + rect.width * 0.5,
872
+ y: top + rect.height * 0.5
873
+ };
874
+ };
875
+ var closestCenter = function closestCenter(_ref) {
876
+ var activeItem = _ref.activeItem;
877
+ return function (_ref2) {
878
+ var collisionRect = _ref2.collisionRect,
879
+ droppableRects = _ref2.droppableRects,
880
+ droppableContainers = _ref2.droppableContainers;
881
+ var centerRect = centerOfRectangle(collisionRect, collisionRect.left - 30, collisionRect.top - 30);
882
+ var minDistance = Number.POSITIVE_INFINITY;
883
+ var collision = {
884
+ id: undefined
885
+ };
886
+
887
+ // eslint-disable-next-line @bigbinary/neeto/use-array-methods
888
+ var _iterator = _createForOfIteratorHelper(droppableContainers),
889
+ _step;
890
+ try {
891
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
892
+ var droppableContainer = _step.value;
893
+ var rect = droppableRects.get(droppableContainer.id);
894
+ if (!rect || droppableContainer.id === activeItem.id) continue;
895
+ var distance = distanceBetween(centerOfRectangle(rect), centerRect);
896
+ if (distance < minDistance) {
897
+ minDistance = distance;
898
+ collision = {
899
+ id: droppableContainer.id,
900
+ data: {
901
+ droppableContainer: droppableContainer,
902
+ value: distance
903
+ }
904
+ };
905
+ }
906
+ }
907
+ } catch (err) {
908
+ _iterator.e(err);
909
+ } finally {
910
+ _iterator.f();
911
+ }
912
+ return [collision];
913
+ };
914
+ };
915
+
916
+ var PlaceholderNode = function PlaceholderNode(_ref) {
917
+ var folder = _ref.folder,
918
+ dragState = _ref.dragState;
919
+ var overItem = dragState.overItem;
920
+ var id = React.useId();
921
+ var isOver = id === (overItem === null || overItem === void 0 ? void 0 : overItem.id);
922
+ var depth = folder.meta.depth + 1;
923
+ var meta = {
924
+ parent: folder,
925
+ index: -1,
926
+ depth: depth
927
+ };
928
+ var _useDroppable = core.useDroppable({
929
+ id: "droppable-placeholder--".concat(folder.name),
930
+ data: {
931
+ id: id,
932
+ meta: meta
933
+ }
934
+ }),
935
+ setDroppableRef = _useDroppable.setNodeRef;
936
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
937
+ className: "flex w-full",
938
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
939
+ style: {
940
+ width: REORDER_TREE_INDENT_WIDTH * depth
941
+ }
942
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
943
+ ref: setDroppableRef,
944
+ className: classNames({
945
+ "min-w-0 flex-1 transition-colors": true,
946
+ "neeto-ui-border-primary-500 border-b-2": isOver
947
+ })
948
+ })]
949
+ });
950
+ };
951
+
952
+ var _excluded$1 = ["folder", "dragState"];
953
+ function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
954
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
955
+ var _DraggableNode = function DraggableNode(_ref) {
956
+ var _overItem$meta$parent;
957
+ var folder = _ref.folder,
958
+ dragState = _ref.dragState,
959
+ rest = _objectWithoutProperties(_ref, _excluded$1);
960
+ var overItem = dragState.overItem;
961
+ var isOverItem = folder.id === (overItem === null || overItem === void 0 ? void 0 : overItem.id);
962
+ var isOverParent = folder.id === (overItem === null || overItem === void 0 || (_overItem$meta$parent = overItem.meta.parent) === null || _overItem$meta$parent === void 0 ? void 0 : _overItem$meta$parent.id);
963
+ var isRoot = folder.meta.depth <= 0;
964
+ var _useDraggable = core.useDraggable({
965
+ id: "draggable-item--".concat(folder.id),
966
+ data: folder,
967
+ disabled: isRoot
968
+ }),
969
+ isDragging = _useDraggable.isDragging,
970
+ attributes = _useDraggable.attributes,
971
+ listeners = _useDraggable.listeners,
972
+ setDraggableRef = _useDraggable.setNodeRef;
973
+ var _useDroppable = core.useDroppable({
974
+ id: "droppable-item--".concat(folder.id),
975
+ data: folder,
976
+ disabled: isRoot || isDragging
977
+ }),
978
+ setDroppableRef = _useDroppable.setNodeRef;
979
+ var renderChildren = function renderChildren() {
980
+ if (isDragging) return null;
981
+ return /*#__PURE__*/jsxRuntime.jsxs(React.Fragment, {
982
+ children: [/*#__PURE__*/jsxRuntime.jsx(PlaceholderNode, {
983
+ dragState: dragState,
984
+ folder: folder
985
+ }), internal.isArray(folder.children) && folder.children.map(function (child) {
986
+ return /*#__PURE__*/React.createElement(_DraggableNode, _objectSpread$5(_objectSpread$5({}, _objectSpread$5(_objectSpread$5({}, rest), {}, {
987
+ dragState: dragState
988
+ })), {}, {
989
+ depth: child.meta.depth,
990
+ folder: child,
991
+ key: child.id
992
+ }));
993
+ })]
994
+ }, "".concat(folder.id, "--container"));
995
+ };
996
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
997
+ children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$5(_objectSpread$5({
998
+ depth: folder.meta.depth
999
+ }, _objectSpread$5(_objectSpread$5(_objectSpread$5({}, rest), {}, {
1000
+ folder: folder
1001
+ }, attributes), listeners)), {}, {
1002
+ className: classNames({
1003
+ "hover:neeto-ui-bg-gray-100 w-full cursor-move transition-colors": true,
1004
+ "neeto-ui-bg-gray-100 opacity-50": isDragging,
1005
+ "neeto-ui-bg-primary-50": isOverParent,
1006
+ "neeto-ui-border-primary-500 border-b-2": isOverItem
1007
+ }),
1008
+ ref: function ref(_ref2) {
1009
+ setDroppableRef(_ref2);
1010
+ setDraggableRef(_ref2);
1011
+ }
1012
+ })), renderChildren()]
1013
+ });
1014
+ };
1015
+
1016
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1017
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1018
+ var initialDragState = {
1019
+ activeItem: null,
1020
+ overItem: null
1021
+ };
1022
+ var sensorConfig = {
1023
+ activationConstraint: {
1024
+ distance: 8
1025
+ }
1026
+ };
1027
+ var measuringConfig = {
1028
+ droppable: {
1029
+ frequency: 500
1030
+ }
1031
+ };
1032
+
1033
+ // Reorder with support for position adjustment
1034
+ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
1035
+ var config = _ref.config,
1036
+ onClose = _ref.onClose;
1037
+ var _useState = React.useState(initialDragState),
1038
+ _useState2 = _slicedToArray(_useState, 2),
1039
+ dragState = _useState2[0],
1040
+ setDragState = _useState2[1];
1041
+ var _useState3 = React.useState({}),
1042
+ _useState4 = _slicedToArray(_useState3, 2),
1043
+ changes = _useState4[0],
1044
+ setChanges = _useState4[1];
1045
+ var _useTranslation = useTranslation(config),
1046
+ t = _useTranslation.t;
1047
+ var _useFetchFolders = useFolderActions.useFetchFolders(config),
1048
+ folders = _useFetchFolders.data;
1049
+ var _useReorderFolders = useFolderActions.useReorderFolders(config),
1050
+ reorderFolders = _useReorderFolders.mutate;
1051
+ var sensors = core.useSensors(core.useSensor(core.PointerSensor, sensorConfig));
1052
+ var _useStateWithDependen = reactUtils.useStateWithDependency(function () {
1053
+ return {
1054
+ name: "/",
1055
+ id: null,
1056
+ children: folders
1057
+ };
1058
+ }, [folders]),
1059
+ _useStateWithDependen2 = _slicedToArray(_useStateWithDependen, 2),
1060
+ baseTree = _useStateWithDependen2[0],
1061
+ setBaseTree = _useStateWithDependen2[1];
1062
+
1063
+ // Decorates tree with meta info. Can be optimized when needed.
1064
+ var tree = React.useMemo(function () {
1065
+ return utils.mapToSortedTree(utils.treeToMap(baseTree));
1066
+ }, [baseTree]);
1067
+ var onDragEnd = function onDragEnd(_ref2) {
1068
+ var active = _ref2.active,
1069
+ over = _ref2.over;
1070
+ setDragState(initialDragState);
1071
+ if (!over) return;
1072
+ var foldersMap = utils.treeToMap(tree);
1073
+ var activeFolder = foldersMap[active.data.current.id];
1074
+ var targetFolder = foldersMap[over.data.current.meta.parent.id];
1075
+ var targetIndex = over.data.current.meta.index + 1; // `index` starts from -1 with placeholder
1076
+
1077
+ // Guards: Check moving inside invalid directories.
1078
+ if (!targetFolder || activeFolder.id === targetFolder.id) return;
1079
+ if (activeFolder.meta.parent.id === targetFolder.id && activeFolder.meta.index === targetIndex) {
1080
+ return;
1081
+ }
1082
+
1083
+ // Check moving to a folder with depth greater than the allowed limit.
1084
+ // maxDepth + 1 due to extra root node added for the tree
1085
+ var srcDepth = utils.measureDepth(activeFolder);
1086
+ var dstDepth = targetFolder.meta.depth;
1087
+ if (srcDepth + dstDepth >= config.maxDepth + 1) {
1088
+ Toastr.error(t("moveToFolder.depthExceeded", {
1089
+ maxDepth: config.maxDepth
1090
+ }));
1091
+ return;
1092
+ }
1093
+ activeFolder.meta.parent = targetFolder;
1094
+ activeFolder.meta.__index = targetIndex;
1095
+ var newTree = utils.mapToSortedTree(foldersMap);
1096
+ setBaseTree(newTree);
1097
+ setChanges(ramda.assoc(activeFolder.id, {
1098
+ parentId: targetFolder.id,
1099
+ index: targetIndex
1100
+ }));
1101
+ };
1102
+ var onSubmit = function onSubmit() {
1103
+ var payload = {
1104
+ changes: changes
1105
+ };
1106
+ reorderFolders(payload, {
1107
+ onSuccess: onClose
1108
+ });
1109
+ };
1110
+ var nodeProps = {
1111
+ icon: /*#__PURE__*/jsxRuntime.jsx(Reorder, {
1112
+ className: "neeto-ui-text-gray-500 relative -left-[0.3125rem] flex-shrink-0"
1113
+ }),
1114
+ itemLabel: config.labels.item
1115
+ };
1116
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1117
+ children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Header, {
1118
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
1119
+ style: "h2",
1120
+ children: t("reorderFolder.title")
1121
+ })
1122
+ }), /*#__PURE__*/jsxRuntime.jsxs(core.DndContext, {
1123
+ onDragEnd: onDragEnd,
1124
+ sensors: sensors,
1125
+ collisionDetection: closestCenter(dragState),
1126
+ measuring: measuringConfig,
1127
+ onDragOver: function onDragOver(_ref3) {
1128
+ var over = _ref3.over;
1129
+ setDragState(ramda.assoc("overItem", over === null || over === void 0 ? void 0 : over.data.current));
1130
+ },
1131
+ onDragStart: function onDragStart(_ref4) {
1132
+ var active = _ref4.active;
1133
+ setDragState(ramda.assoc("activeItem", active.data.current));
1134
+ },
1135
+ children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
1136
+ className: "pb-6",
1137
+ children: /*#__PURE__*/React.createElement(_DraggableNode, _objectSpread$4(_objectSpread$4({}, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
1138
+ dragState: dragState
1139
+ })), {}, {
1140
+ folder: tree,
1141
+ key: tree.id
1142
+ }))
1143
+ }), /*#__PURE__*/jsxRuntime.jsxs(Pane.Footer, {
1144
+ className: "gap-2",
1145
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button, {
1146
+ disabled: ramda.isEmpty(changes),
1147
+ label: t("common.save"),
1148
+ style: "primary",
1149
+ onClick: onSubmit
1150
+ }), /*#__PURE__*/jsxRuntime.jsx(Button, {
1151
+ label: t("common.cancel"),
1152
+ style: "text",
1153
+ onClick: onClose
1154
+ })]
1155
+ }), /*#__PURE__*/reactDom.createPortal(/*#__PURE__*/jsxRuntime.jsx(core.DragOverlay, {
1156
+ zIndex: 99999,
1157
+ children: dragState && /*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
1158
+ className: "neeto-ui-bg-gray-200 pl-4 pr-12",
1159
+ depth: 0,
1160
+ folder: dragState.activeItem
1161
+ }))
1162
+ }), document.body)]
1163
+ })]
1164
+ });
1165
+ };
1166
+
764
1167
  function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
765
1168
  function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
766
1169
  var FoldersPane = function FoldersPane(_ref) {
@@ -788,6 +1191,7 @@ var FoldersPane = function FoldersPane(_ref) {
788
1191
  config: config,
789
1192
  onClose: onClose
790
1193
  };
1194
+ var ReorderPaneComponent = config.reorderMode === "reorder" ? ReorderFoldersPane : RearrangeFoldersPane;
791
1195
  return /*#__PURE__*/jsxRuntime.jsx(Pane, {
792
1196
  onClose: onClose,
793
1197
  isOpen: !!type,
@@ -796,7 +1200,7 @@ var FoldersPane = function FoldersPane(_ref) {
796
1200
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
797
1201
  children: [(type === "edit" || type === "add") && /*#__PURE__*/jsxRuntime.jsx(AddEditPane, _objectSpread$3({}, _objectSpread$3({
798
1202
  setFocusField: setFocusField
799
- }, commonProps))), type === "move" && /*#__PURE__*/jsxRuntime.jsx(MoveFolderPane, _objectSpread$3({}, commonProps)), type === "reorder" && /*#__PURE__*/jsxRuntime.jsx(ReorderFoldersPane, _objectSpread$3({}, commonProps))]
1203
+ }, commonProps))), type === "move" && /*#__PURE__*/jsxRuntime.jsx(MoveFolderPane, _objectSpread$3({}, commonProps)), type === "reorder" && /*#__PURE__*/jsxRuntime.jsx(ReorderPaneComponent, _objectSpread$3({}, commonProps))]
800
1204
  });
801
1205
  }
802
1206
  });
@@ -821,8 +1225,9 @@ var FolderTile = function FolderTile(_ref) {
821
1225
  itemLabel = _ref.itemLabel,
822
1226
  folder = _ref.folder,
823
1227
  actions = _ref.actions,
1228
+ config = _ref.config,
824
1229
  onSelect = _ref.onSelect;
825
- var _useTranslation = reactI18next.useTranslation(),
1230
+ var _useTranslation = useTranslation(config),
826
1231
  t = _useTranslation.t;
827
1232
  var actionCallback = function actionCallback(callback) {
828
1233
  return function (event) {
@@ -850,44 +1255,42 @@ var FolderTile = function FolderTile(_ref) {
850
1255
  }));
851
1256
  metaInfo.push("".concat(folder.itemCount || 0, " ").concat(itemLabel));
852
1257
  return /*#__PURE__*/jsxRuntime.jsxs(reactRouterDom.Link, {
853
- className: "neeto-ui-bg-gray-100 neeto-ui-rounded-md m-2 w-64 border p-3",
1258
+ className: "neeto-ui-bg-gray-50 neeto-ui-border-gray-200 neeto-ui-rounded-md hover:neeto-ui-border-primary-500 relative flex max-w-full items-start gap-2 border-2 p-3 transition-colors ease-in",
854
1259
  to: link,
855
- children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
856
- className: "mb-1 flex items-center justify-between",
857
- children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
858
- className: "flex items-center",
859
- children: [/*#__PURE__*/jsxRuntime.jsx(Checkbox, {
860
- checked: isSelected,
861
- className: "mr-2",
862
- name: folder.id,
863
- onChange: function onChange(event) {
864
- return onSelect(folder, event.target.checked);
865
- },
866
- onClick: function onClick(event) {
867
- return event.stopPropagation();
868
- }
869
- }), /*#__PURE__*/jsxRuntime.jsx(Tooltip, {
870
- content: folder.name,
871
- delay: [300, 0],
872
- children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
873
- className: "line-clamp-1",
874
- style: "body1",
875
- weight: "medium",
876
- children: folder.name
877
- })
878
- })]
879
- }), /*#__PURE__*/jsxRuntime.jsx(MoreDropdown, {
880
- menuItems: menuItems,
881
- dropdownProps: {
882
- onClick: function onClick(event) {
883
- return event.preventDefault();
884
- }
885
- }
1260
+ children: [/*#__PURE__*/jsxRuntime.jsx(Checkbox, {
1261
+ checked: isSelected,
1262
+ className: "m-0 flex-shrink-0 flex-grow-0 pt-0.5",
1263
+ name: folder.id,
1264
+ onChange: function onChange(event) {
1265
+ return onSelect(folder, event.target.checked);
1266
+ },
1267
+ onClick: function onClick(event) {
1268
+ return event.stopPropagation();
1269
+ }
1270
+ }), /*#__PURE__*/jsxRuntime.jsxs("span", {
1271
+ className: "flex min-w-0 flex-grow flex-col gap-2",
1272
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
1273
+ className: "-mt-0.5 line-clamp-2 break-words pr-8",
1274
+ lineHeight: "snug",
1275
+ style: "body1",
1276
+ title: folder.name,
1277
+ weight: "medium",
1278
+ children: folder.name
1279
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
1280
+ className: "neeto-ui-text-gray-600",
1281
+ style: "body3",
1282
+ children: metaInfo.join(" . ")
886
1283
  })]
887
- }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
888
- className: "ml-6",
889
- style: "body3",
890
- children: metaInfo.join(" . ")
1284
+ }), /*#__PURE__*/jsxRuntime.jsx(MoreDropdown, {
1285
+ menuItems: menuItems,
1286
+ dropdownButtonProps: {
1287
+ className: "absolute right-2 top-2"
1288
+ },
1289
+ dropdownProps: {
1290
+ onClick: function onClick(event) {
1291
+ return event.preventDefault();
1292
+ }
1293
+ }
891
1294
  })]
892
1295
  });
893
1296
  };
@@ -901,7 +1304,7 @@ var FoldersList = function FoldersList(_ref) {
901
1304
  onSelect = _ref.onSelect;
902
1305
  var config = _objectSpread$2(_objectSpread$2({}, useFolderActions.DEFAULT_CONFIG), configProps);
903
1306
  var params = reactUtils.useQueryParams();
904
- var _useTranslation = reactI18next.useTranslation(),
1307
+ var _useTranslation = useTranslation(config),
905
1308
  t = _useTranslation.t;
906
1309
  var fetchParams = ramda.pick(["sortBy", "orderBy"], params);
907
1310
  var _useFolders = useFolderActions.useFolders(_objectSpread$2(_objectSpread$2({}, config), {}, {
@@ -917,20 +1320,21 @@ var FoldersList = function FoldersList(_ref) {
917
1320
  return /*#__PURE__*/jsxRuntime.jsxs(FoldersContext, {
918
1321
  config: config,
919
1322
  children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
920
- className: "mb-2 mt-2",
1323
+ className: "my-3",
921
1324
  style: "h4",
922
1325
  children: t("folders.title")
923
1326
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
924
- className: "mb-6 flex flex-wrap justify-items-center",
1327
+ className: "neeto-folders-grid-view-wrapper mb-10 grid w-full gap-4",
925
1328
  children: subFolders.map(function (folder) {
926
- return /*#__PURE__*/react.createElement(FolderTile, {
1329
+ return /*#__PURE__*/React.createElement(FolderTile, {
927
1330
  actions: actions,
1331
+ config: config,
928
1332
  folder: folder,
929
1333
  onSelect: onSelect,
930
1334
  isSelected: selection.includes(folder.id),
931
- itemLabel: config.itemLabel,
1335
+ itemLabel: config.labels.item,
932
1336
  key: folder.id,
933
- link: utils.buildUrl(config.folderPath, _objectSpread$2(_objectSpread$2({}, params), {}, {
1337
+ link: utils$1.buildUrl(config.folderPath, _objectSpread$2(_objectSpread$2({}, params), {}, {
934
1338
  folderId: folder.sid
935
1339
  }))
936
1340
  });
@@ -961,20 +1365,17 @@ var FolderNode = function FolderNode(_ref) {
961
1365
  link = _ref.link;
962
1366
  return /*#__PURE__*/jsxRuntime.jsx(reactRouterDom.NavLink, {
963
1367
  activeClassName: "active",
964
- className: "block",
1368
+ className: "neeto-sidebar-folders-tree__folder-node block",
965
1369
  isActive: function isActive() {
966
1370
  return _isActive;
967
1371
  },
968
1372
  to: link,
969
- children: /*#__PURE__*/jsxRuntime.jsx(Tooltip, {
970
- content: folder.name,
971
- delay: [300, 0],
972
- children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
973
- className: "line-clamp-1",
974
- component: "span",
975
- style: "body2",
976
- children: folder.name
977
- })
1373
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
1374
+ className: "line-clamp-1 block truncate",
1375
+ component: "span",
1376
+ style: "body2",
1377
+ title: folder.name,
1378
+ children: folder.name
978
1379
  })
979
1380
  });
980
1381
  };
@@ -984,16 +1385,16 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
984
1385
  var FoldersTree = function FoldersTree(_ref) {
985
1386
  var configProps = _ref.config;
986
1387
  var config = _objectSpread(_objectSpread({}, useFolderActions.DEFAULT_CONFIG), configProps);
987
- var _useState = react.useState([]),
1388
+ var _useState = React.useState([]),
988
1389
  _useState2 = _slicedToArray(_useState, 2),
989
1390
  expandedKeys = _useState2[0],
990
1391
  setExpandedKeys = _useState2[1];
991
- var _useTranslation = reactI18next.useTranslation(),
1392
+ var _useTranslation = useTranslation(config),
992
1393
  t = _useTranslation.t;
993
1394
  var params = reactUtils.useQueryParams({
994
1395
  toCamelCase: false
995
1396
  });
996
- var activeFolderSid = useFolderActions.getActiveFolderId(config);
1397
+ var activeFolderSid = internal.getActiveFolderId(config);
997
1398
  var _useFetchFolders = useFolderActions.useFetchFolders(config),
998
1399
  folders = _useFetchFolders.data;
999
1400
  var updateExpandedKeys = function updateExpandedKeys() {
@@ -1001,15 +1402,15 @@ var FoldersTree = function FoldersTree(_ref) {
1001
1402
  if (!folders) return;
1002
1403
  // When active folder changes from external sources, update expanded keys to auto expand tree.
1003
1404
  var expandedKeys = [];
1004
- var map = pathUtils.treeToMap(folders, "sid");
1405
+ var map = utils.treeToMap(folders, "sid");
1005
1406
  var activeFolder = map[activeFolderSid];
1006
1407
  var parentSid = activeFolder === null || activeFolder === void 0 || (_activeFolder$meta = activeFolder.meta) === null || _activeFolder$meta === void 0 || (_activeFolder$meta = _activeFolder$meta.parent) === null || _activeFolder$meta === void 0 ? void 0 : _activeFolder$meta.sid;
1007
1408
  if (parentSid) expandedKeys.push(parentSid);
1008
1409
  setExpandedKeys(expandedKeys);
1009
1410
  };
1010
- react.useEffect(function () {
1411
+ React.useEffect(function () {
1011
1412
  // Non urgent update.
1012
- react.startTransition(updateExpandedKeys);
1413
+ React.startTransition(updateExpandedKeys);
1013
1414
  }, [activeFolderSid, folders]);
1014
1415
  if (neetoCist.isNotPresent(folders)) {
1015
1416
  return /*#__PURE__*/jsxRuntime.jsx(Typography, {
@@ -1024,9 +1425,10 @@ var FoldersTree = function FoldersTree(_ref) {
1024
1425
  autoExpandParent: true,
1025
1426
  blockNode: true,
1026
1427
  showLine: true,
1428
+ className: "neeto-sidebar-folders-tree",
1027
1429
  componentToken: {
1028
- titleHeight: 25,
1029
- indentSize: 25
1430
+ titleHeight: 24,
1431
+ indentSize: 24
1030
1432
  },
1031
1433
  fieldNames: {
1032
1434
  key: "sid"
@@ -1037,7 +1439,7 @@ var FoldersTree = function FoldersTree(_ref) {
1037
1439
  return /*#__PURE__*/jsxRuntime.jsx(FolderNode, {
1038
1440
  folder: folder,
1039
1441
  isActive: folder.sid === activeFolderSid,
1040
- link: utils.buildUrl(config.folderPath, _objectSpread(_objectSpread({}, params), {}, {
1442
+ link: utils$1.buildUrl(config.folderPath, _objectSpread(_objectSpread({}, params), {}, {
1041
1443
  folderId: folder.sid
1042
1444
  }))
1043
1445
  });
@@ -1046,6 +1448,11 @@ var FoldersTree = function FoldersTree(_ref) {
1046
1448
  });
1047
1449
  };
1048
1450
 
1451
+ var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
1452
+
1453
+ var css = ".neeto-sidebar-folders-tree__folder-node{color:inherit!important}.neeto-sidebar-folders-tree.ant-tree .ant-tree-node-content-wrapper{min-width:0;padding-inline:6px!important}.neeto-sidebar-folders-tree.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:rgb(var(--neeto-ui-white));color:rgb(var(--neeto-ui-accent-800))!important;font-weight:500}.neeto-sidebar-folders-tree.ant-tree .ant-tree-switcher .ant-tree-switcher-icon{position:relative}.neeto-folders-grid-view-wrapper{grid-template-columns:repeat(auto-fill,minmax(256px,1fr))}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9jb21wb25lbnRzL25lZXRvLWZvbGRlcnMtbmFuby5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUNFLHVCQUNGLENBRUEsb0VBRUUsV0FBQSxDQURBLDRCQUVGLENBRUEsMkZBRUUsMkNBQUEsQ0FEQSwrQ0FBQSxDQUVBLGVBQ0YsQ0FFQSxnRkFDRSxpQkFDRixDQUVBLGlDQUNFLHlEQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLm5lZXRvLXNpZGViYXItZm9sZGVycy10cmVlX19mb2xkZXItbm9kZSB7XG4gIGNvbG9yOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG59XG5cbi5uZWV0by1zaWRlYmFyLWZvbGRlcnMtdHJlZS5hbnQtdHJlZSAuYW50LXRyZWUtbm9kZS1jb250ZW50LXdyYXBwZXIge1xuICBwYWRkaW5nLWlubGluZTogNnB4ICFpbXBvcnRhbnQ7XG4gIG1pbi13aWR0aDogMDtcbn1cblxuLm5lZXRvLXNpZGViYXItZm9sZGVycy10cmVlLmFudC10cmVlIC5hbnQtdHJlZS1ub2RlLWNvbnRlbnQtd3JhcHBlci5hbnQtdHJlZS1ub2RlLXNlbGVjdGVkIHtcbiAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1hY2NlbnQtODAwKSkgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLXdoaXRlKSk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5uZWV0by1zaWRlYmFyLWZvbGRlcnMtdHJlZS5hbnQtdHJlZSAuYW50LXRyZWUtc3dpdGNoZXIgLmFudC10cmVlLXN3aXRjaGVyLWljb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5uZWV0by1mb2xkZXJzLWdyaWQtdmlldy13cmFwcGVyIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjU2cHgsIDFmcikpO1xufSJdfQ== */";
1454
+ n(css,{});
1455
+
1049
1456
  exports.FoldersContext = FoldersContext;
1050
1457
  exports.FoldersList = FoldersList;
1051
1458
  exports.FoldersTree = FoldersTree;