@bigbinary/neeto-folders-frontend 1.2.0 → 2.0.0

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