@bigbinary/neeto-folders-frontend 2.0.49-beta1 → 2.0.49
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.
- package/app/javascript/src/translations/en.json +2 -0
- package/dist/.ready +1 -1
- package/dist/cjs/components.js +94 -40
- package/dist/cjs/components.js.map +1 -1
- package/dist/cjs/utils.js +1 -1
- package/dist/cjs/v2/components.js +88 -43
- package/dist/cjs/v2/components.js.map +1 -1
- package/dist/components.js +95 -41
- package/dist/components.js.map +1 -1
- package/dist/{index-BfobK2xL.js → index-BXvkr7vp.js} +2 -2
- package/dist/{index-BfobK2xL.js.map → index-BXvkr7vp.js.map} +1 -1
- package/dist/{index-BuO0HoGs.js → index-DCIRHXw_.js} +2 -1
- package/dist/{index-BuO0HoGs.js.map → index-DCIRHXw_.js.map} +1 -1
- package/dist/utils.js +1 -1
- package/dist/v2/components.js +90 -45
- package/dist/v2/components.js.map +1 -1
- package/package.json +9 -9
- package/types.d.ts +1 -0
|
@@ -94,5 +94,5 @@ var pathToFolder = function pathToFolder(folders, folderId) {
|
|
|
94
94
|
return path;
|
|
95
95
|
};
|
|
96
96
|
|
|
97
|
-
export { mapToTree as a, mapToSortedTree as b, flattenTree as f, measureDepth as m, pathToFolder as p, treeToMap as t };
|
|
98
|
-
//# sourceMappingURL=index-
|
|
97
|
+
export { _walkTree as _, mapToTree as a, mapToSortedTree as b, flattenTree as f, measureDepth as m, pathToFolder as p, treeToMap as t };
|
|
98
|
+
//# sourceMappingURL=index-BXvkr7vp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-BXvkr7vp.js","sources":["../app/javascript/src/utils/treeUtils.js","../app/javascript/src/utils/index.js"],"sourcesContent":["import { isNotPresent } from \"neetocist\";\nimport { isNil } from \"ramda\";\n\nimport { isArray } from \"./internal\";\n\nconst sortByIndex = (a, b) => {\n if (isNil(a.meta.__index) && isNil(b.meta.__index)) {\n return a.meta.index - b.meta.index;\n } else if (isNil(a.meta.__index)) {\n return a.meta.index < b.meta.__index ? -1 : 1;\n } else if (isNil(b.meta.__index)) {\n return a.meta.__index <= b.meta.index ? -1 : 1;\n }\n\n return a.meta.__index - b.meta.__index;\n};\n\nexport const foldersToTree = folders => {\n const map = {};\n let root;\n\n folders.forEach(item => {\n map[item.id] = { ...item, children: [] };\n // Destroy existing temporary meta attributes.\n delete map[item.id].meta.__index;\n });\n\n folders.forEach(item => {\n if (!item.meta.parent) root = map[item.id];\n else map[item.meta.parent.id].children.push(map[item.id]);\n });\n\n return root;\n};\n\nexport const walkTree = (\n tree,\n fn,\n meta = { index: 0, depth: 0, parent: null }\n) => {\n if (!tree) return;\n\n fn(tree, meta);\n if (isArray(tree.children)) {\n tree.children.forEach((folder, index) =>\n walkTree(folder, fn, { parent: tree, index, depth: meta.depth + 1 })\n );\n }\n};\n\n// Measures the maximum depth to bottom of the tree\nexport const measureDepth = tree => {\n let maxDepth = 0;\n\n walkTree(tree, (_, meta) => {\n if (meta.depth > maxDepth) maxDepth = meta.depth;\n });\n\n return maxDepth;\n};\n\n// Convert tree to lookup table\nexport const treeToMap = (tree, key = \"id\") => {\n if (isNotPresent(tree)) return {};\n\n const roots = isArray(tree) ? tree : [tree];\n const foldersMap = {};\n\n roots.forEach(root => {\n walkTree(root, (folder, meta) => {\n foldersMap[folder[key]] = { ...folder, meta };\n });\n });\n\n return foldersMap;\n};\n\n// Convert result of treeToMap back to tree\nexport const mapToTree = foldersMap => foldersToTree(Object.values(foldersMap));\nexport const mapToSortedTree = foldersMap =>\n foldersToTree(Object.values(foldersMap).sort(sortByIndex));\n","import { pipe, values } from \"ramda\";\n\nimport { toastApiError } from \"./internal\";\nimport { treeToMap } from \"./treeUtils\";\n\nconst flattenTree = pipe(treeToMap, values);\n\nconst pathToFolder = (folders, folderId) => {\n const path = [];\n const folderMap = treeToMap(folders);\n if (!folderMap[folderId]) return path;\n\n let current = folderMap[folderId];\n while (current) {\n path.unshift(current);\n current = folderMap[current.meta.parent?.id];\n }\n\n return path;\n};\n\nexport { pathToFolder, flattenTree, toastApiError };\n"],"names":["sortByIndex","a","b","isNil","meta","__index","index","foldersToTree","folders","map","root","forEach","item","id","_objectSpread","children","parent","push","walkTree","tree","fn","arguments","length","undefined","depth","isArray","folder","measureDepth","maxDepth","_","treeToMap","key","isNotPresent","roots","foldersMap","mapToTree","Object","values","mapToSortedTree","sort","flattenTree","pipe","pathToFolder","folderId","path","folderMap","current","_current$meta$parent","unshift"],"mappings":"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"}
|
|
@@ -96,10 +96,11 @@ var pathToFolder = function pathToFolder(folders, folderId) {
|
|
|
96
96
|
return path;
|
|
97
97
|
};
|
|
98
98
|
|
|
99
|
+
exports._walkTree = _walkTree;
|
|
99
100
|
exports.flattenTree = flattenTree;
|
|
100
101
|
exports.mapToSortedTree = mapToSortedTree;
|
|
101
102
|
exports.mapToTree = mapToTree;
|
|
102
103
|
exports.measureDepth = measureDepth;
|
|
103
104
|
exports.pathToFolder = pathToFolder;
|
|
104
105
|
exports.treeToMap = treeToMap;
|
|
105
|
-
//# sourceMappingURL=index-
|
|
106
|
+
//# sourceMappingURL=index-DCIRHXw_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-DCIRHXw_.js","sources":["../app/javascript/src/utils/treeUtils.js","../app/javascript/src/utils/index.js"],"sourcesContent":["import { isNotPresent } from \"neetocist\";\nimport { isNil } from \"ramda\";\n\nimport { isArray } from \"./internal\";\n\nconst sortByIndex = (a, b) => {\n if (isNil(a.meta.__index) && isNil(b.meta.__index)) {\n return a.meta.index - b.meta.index;\n } else if (isNil(a.meta.__index)) {\n return a.meta.index < b.meta.__index ? -1 : 1;\n } else if (isNil(b.meta.__index)) {\n return a.meta.__index <= b.meta.index ? -1 : 1;\n }\n\n return a.meta.__index - b.meta.__index;\n};\n\nexport const foldersToTree = folders => {\n const map = {};\n let root;\n\n folders.forEach(item => {\n map[item.id] = { ...item, children: [] };\n // Destroy existing temporary meta attributes.\n delete map[item.id].meta.__index;\n });\n\n folders.forEach(item => {\n if (!item.meta.parent) root = map[item.id];\n else map[item.meta.parent.id].children.push(map[item.id]);\n });\n\n return root;\n};\n\nexport const walkTree = (\n tree,\n fn,\n meta = { index: 0, depth: 0, parent: null }\n) => {\n if (!tree) return;\n\n fn(tree, meta);\n if (isArray(tree.children)) {\n tree.children.forEach((folder, index) =>\n walkTree(folder, fn, { parent: tree, index, depth: meta.depth + 1 })\n );\n }\n};\n\n// Measures the maximum depth to bottom of the tree\nexport const measureDepth = tree => {\n let maxDepth = 0;\n\n walkTree(tree, (_, meta) => {\n if (meta.depth > maxDepth) maxDepth = meta.depth;\n });\n\n return maxDepth;\n};\n\n// Convert tree to lookup table\nexport const treeToMap = (tree, key = \"id\") => {\n if (isNotPresent(tree)) return {};\n\n const roots = isArray(tree) ? tree : [tree];\n const foldersMap = {};\n\n roots.forEach(root => {\n walkTree(root, (folder, meta) => {\n foldersMap[folder[key]] = { ...folder, meta };\n });\n });\n\n return foldersMap;\n};\n\n// Convert result of treeToMap back to tree\nexport const mapToTree = foldersMap => foldersToTree(Object.values(foldersMap));\nexport const mapToSortedTree = foldersMap =>\n foldersToTree(Object.values(foldersMap).sort(sortByIndex));\n","import { pipe, values } from \"ramda\";\n\nimport { toastApiError } from \"./internal\";\nimport { treeToMap } from \"./treeUtils\";\n\nconst flattenTree = pipe(treeToMap, values);\n\nconst pathToFolder = (folders, folderId) => {\n const path = [];\n const folderMap = treeToMap(folders);\n if (!folderMap[folderId]) return path;\n\n let current = folderMap[folderId];\n while (current) {\n path.unshift(current);\n current = folderMap[current.meta.parent?.id];\n }\n\n return path;\n};\n\nexport { pathToFolder, flattenTree, toastApiError };\n"],"names":["sortByIndex","a","b","isNil","meta","__index","index","foldersToTree","folders","map","root","forEach","item","id","_objectSpread","children","parent","push","walkTree","tree","fn","arguments","length","undefined","depth","isArray","folder","measureDepth","maxDepth","_","treeToMap","key","isNotPresent","roots","foldersMap","mapToTree","Object","values","mapToSortedTree","sort","flattenTree","pipe","pathToFolder","folderId","path","folderMap","current","_current$meta$parent","unshift"],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'ramda';
|
|
2
2
|
export { t as toastApiError } from './internal-UIifJzTd.js';
|
|
3
|
-
export { f as flattenTree, p as pathToFolder } from './index-
|
|
3
|
+
export { f as flattenTree, p as pathToFolder } from './index-BXvkr7vp.js';
|
|
4
4
|
import '@bigbinary/neeto-atoms';
|
|
5
5
|
import 'react-router-dom';
|
|
6
6
|
import '@babel/runtime/helpers/defineProperty';
|
package/dist/v2/components.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
3
3
|
import { shallow } from 'zustand/shallow';
|
|
4
|
-
import { Alert, Sheet, Spinner, Typography, Button,
|
|
4
|
+
import { Alert, Sheet, Spinner, Typography, Toastr, Button, Callout, Checkbox, Tree } from '@bigbinary/neeto-atoms';
|
|
5
5
|
import { useQueryClient } from '@tanstack/react-query';
|
|
6
6
|
import { useQueryParams, useStateWithDependency } from '@bigbinary/neeto-commons-frontend/v2/react-utils';
|
|
7
7
|
import { buildUrl, showThumbsUpToastr } from '@bigbinary/neeto-commons-frontend/v2/utils';
|
|
@@ -10,7 +10,7 @@ import { useHistory, Link, NavLink } from 'react-router-dom';
|
|
|
10
10
|
import { c as useFolderStore, d as useDestroyFolder, b as useFolders, e as useFetchFolders, f as useCreateFolder, g as useUpdateFolder, h as useReorderFolders, D as DEFAULT_CONFIG, u as useFolder, a as useFolderActions } from '../useFolderActions-DCKQrv0G.js';
|
|
11
11
|
import { u as useTranslation, R as REORDER_TREE_INDENT_WIDTH, c as closestCenter, n } from '../inject-css-Bkrn7lFS.js';
|
|
12
12
|
import { QUERY_KEYS } from '../constants.js';
|
|
13
|
-
import { p as pathToFolder, t as treeToMap, m as measureDepth, a as mapToTree, b as mapToSortedTree } from '../index-
|
|
13
|
+
import { p as pathToFolder, t as treeToMap, m as measureDepth, a as mapToTree, b as mapToSortedTree } from '../index-BXvkr7vp.js';
|
|
14
14
|
import { a as isActiveFolder, g as getActiveFolderId, t as toastApiError, i as isArray } from '../internal-UIifJzTd.js';
|
|
15
15
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
16
16
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
@@ -22,9 +22,9 @@ import { t } from 'i18next';
|
|
|
22
22
|
import { object, string } from 'yup';
|
|
23
23
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
24
24
|
import { RadioGroupItem, RadioGroup } from '@bigbinary/neeto-atoms/primitives';
|
|
25
|
+
import { hyphenate, isNotPresent, noop, isNotEmpty, removeById } from '@bigbinary/neeto-cist';
|
|
25
26
|
import useHotkeys from '@bigbinary/neeto-hotkeys';
|
|
26
|
-
import {
|
|
27
|
-
import { isEmpty, assoc } from 'ramda';
|
|
27
|
+
import { pluck, isEmpty, assoc } from 'ramda';
|
|
28
28
|
import classNames from 'classnames';
|
|
29
29
|
import { useDraggable, useDroppable, DndContext, DragOverlay, useSensors, useSensor, PointerSensor } from '@dnd-kit/core';
|
|
30
30
|
import { GripVertical, FolderOpen, Folder, Lock, Plus } from 'lucide-react';
|
|
@@ -215,6 +215,7 @@ var AddEditPane = function AddEditPane(_ref) {
|
|
|
215
215
|
var response = error.response;
|
|
216
216
|
if (response && response.data && response.data.errors) {
|
|
217
217
|
setStatus(response.data.errors);
|
|
218
|
+
if (response.data.errors.base) Toastr.error(response.data.errors.base[0]);
|
|
218
219
|
}
|
|
219
220
|
};
|
|
220
221
|
var onSubmitForm = /*#__PURE__*/function () {
|
|
@@ -318,6 +319,7 @@ var AddEditPane = function AddEditPane(_ref) {
|
|
|
318
319
|
config: config,
|
|
319
320
|
allowClear: true,
|
|
320
321
|
showSearch: true,
|
|
322
|
+
excludedFolderId: isEditing ? item.id : null,
|
|
321
323
|
initialValue: folderSid,
|
|
322
324
|
label: t("createFolder.parentTitle"),
|
|
323
325
|
name: "parentId"
|
|
@@ -409,7 +411,7 @@ var Node$2 = function Node(_ref, ref) {
|
|
|
409
411
|
};
|
|
410
412
|
var Node$1 = /*#__PURE__*/forwardRef(Node$2);
|
|
411
413
|
|
|
412
|
-
var _excluded$5 = ["folder", "
|
|
414
|
+
var _excluded$5 = ["folder", "movedIds", "depth", "maxDepth", "disabled", "config"];
|
|
413
415
|
function ownKeys$g(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; }
|
|
414
416
|
function _objectSpread$g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$g(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
415
417
|
var toRadioValue = function toRadioValue(id) {
|
|
@@ -418,7 +420,8 @@ var toRadioValue = function toRadioValue(id) {
|
|
|
418
420
|
var _SelectableNode = function SelectableNode(_ref) {
|
|
419
421
|
var _folder$children$leng, _folder$children;
|
|
420
422
|
var folder = _ref.folder,
|
|
421
|
-
|
|
423
|
+
_ref$movedIds = _ref.movedIds,
|
|
424
|
+
movedIds = _ref$movedIds === void 0 ? [] : _ref$movedIds,
|
|
422
425
|
_ref$depth = _ref.depth,
|
|
423
426
|
depth = _ref$depth === void 0 ? 0 : _ref$depth,
|
|
424
427
|
maxDepth = _ref.maxDepth,
|
|
@@ -429,7 +432,11 @@ var _SelectableNode = function SelectableNode(_ref) {
|
|
|
429
432
|
var onSelect = rest.onSelect;
|
|
430
433
|
var _useTranslation = useTranslation(config),
|
|
431
434
|
t = _useTranslation.t;
|
|
432
|
-
var
|
|
435
|
+
var isDepthExceeded = depth >= maxDepth;
|
|
436
|
+
var isDisabled = disabled || movedIds.includes(folder.id) || isDepthExceeded;
|
|
437
|
+
var disabledTitle = isDepthExceeded ? t("moveToFolder.depthExceeded", {
|
|
438
|
+
maxDepth: config.maxDepth
|
|
439
|
+
}) : t("moveToFolder.notAllowed");
|
|
433
440
|
var itemLabel = config.labels[folder.itemCount > 1 ? "items" : "item"];
|
|
434
441
|
var folderLabel = config.labels[((_folder$children$leng = (_folder$children = folder.children) === null || _folder$children === void 0 ? void 0 : _folder$children.length) !== null && _folder$children$leng !== void 0 ? _folder$children$leng : 0) > 1 ? "folders" : "folder"];
|
|
435
442
|
var renderChildren = function renderChildren() {
|
|
@@ -437,8 +444,8 @@ var _SelectableNode = function SelectableNode(_ref) {
|
|
|
437
444
|
return folder.children.map(function (child) {
|
|
438
445
|
return /*#__PURE__*/createElement(_SelectableNode, _objectSpread$g(_objectSpread$g({}, _objectSpread$g(_objectSpread$g({}, rest), {}, {
|
|
439
446
|
config: config,
|
|
440
|
-
|
|
441
|
-
|
|
447
|
+
maxDepth: maxDepth,
|
|
448
|
+
movedIds: movedIds
|
|
442
449
|
})), {}, {
|
|
443
450
|
depth: depth + 1,
|
|
444
451
|
disabled: isDisabled,
|
|
@@ -449,7 +456,7 @@ var _SelectableNode = function SelectableNode(_ref) {
|
|
|
449
456
|
};
|
|
450
457
|
return /*#__PURE__*/jsxs("div", {
|
|
451
458
|
"aria-disabled": isDisabled,
|
|
452
|
-
title: isDisabled ?
|
|
459
|
+
title: isDisabled ? disabledTitle : undefined,
|
|
453
460
|
className: classNames("flex flex-col w-full min-w-0", {
|
|
454
461
|
"opacity-60": isDisabled
|
|
455
462
|
}),
|
|
@@ -484,6 +491,7 @@ var PaneBody = function PaneBody(_ref) {
|
|
|
484
491
|
var _ref$isRootEnabled = _ref.isRootEnabled,
|
|
485
492
|
isRootEnabled = _ref$isRootEnabled === void 0 ? true : _ref$isRootEnabled,
|
|
486
493
|
item = _ref.item,
|
|
494
|
+
items = _ref.items,
|
|
487
495
|
config = _ref.config,
|
|
488
496
|
submitButtonProps = _ref.submitButtonProps,
|
|
489
497
|
cancelButtonProps = _ref.cancelButtonProps,
|
|
@@ -519,15 +527,28 @@ var PaneBody = function PaneBody(_ref) {
|
|
|
519
527
|
var tree = useMemo(function () {
|
|
520
528
|
return createTree(folders, isRootEnabled);
|
|
521
529
|
}, [folders, isRootEnabled]);
|
|
530
|
+
var movedItems = items !== null && items !== void 0 ? items : item ? [item] : [];
|
|
531
|
+
var movedIds = pluck("id", movedItems);
|
|
522
532
|
var maxDepth = Number.POSITIVE_INFINITY;
|
|
523
|
-
|
|
524
|
-
|
|
533
|
+
var nestingWarning = null;
|
|
534
|
+
if (isNotEmpty(movedItems)) {
|
|
535
|
+
// For moved folders, measure the depth from the tallest folder to its longest leaf.
|
|
525
536
|
var foldersMap = treeToMap(folders);
|
|
526
|
-
var
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
537
|
+
var movedFolders = movedIds.map(function (id) {
|
|
538
|
+
return foldersMap[id];
|
|
539
|
+
}).filter(Boolean);
|
|
540
|
+
if (isNotEmpty(movedFolders)) {
|
|
541
|
+
var subtreeHeight = Math.max.apply(Math, _toConsumableArray(movedFolders.map(measureDepth)));
|
|
542
|
+
maxDepth = config.maxDepth - (subtreeHeight + 1); // +1 for own depth;
|
|
530
543
|
if (isRootEnabled) maxDepth += 1; // +1 for root folder.
|
|
544
|
+
|
|
545
|
+
if (subtreeHeight > 0) {
|
|
546
|
+
nestingWarning = t("moveToFolder.nestingRestricted", {
|
|
547
|
+
count: movedFolders.length,
|
|
548
|
+
name: movedFolders[0].name,
|
|
549
|
+
maxDepth: config.maxDepth
|
|
550
|
+
});
|
|
551
|
+
}
|
|
531
552
|
}
|
|
532
553
|
}
|
|
533
554
|
var onAddFolder = function onAddFolder() {
|
|
@@ -577,26 +598,29 @@ var PaneBody = function PaneBody(_ref) {
|
|
|
577
598
|
variant: "outline",
|
|
578
599
|
onClick: onAddFolder
|
|
579
600
|
})]
|
|
580
|
-
}), /*#__PURE__*/
|
|
601
|
+
}), /*#__PURE__*/jsxs(Sheet.Body, {
|
|
581
602
|
className: "pb-6",
|
|
582
|
-
children: /*#__PURE__*/jsx(
|
|
603
|
+
children: [nestingWarning && /*#__PURE__*/jsx(Callout, {
|
|
604
|
+
className: "mb-4",
|
|
605
|
+
variant: "warning",
|
|
606
|
+
children: nestingWarning
|
|
607
|
+
}), /*#__PURE__*/jsx(RadioGroup, {
|
|
583
608
|
className: "contents",
|
|
584
609
|
value: toRadioValue(selection),
|
|
585
610
|
children: tree.map(function (folder) {
|
|
586
611
|
return /*#__PURE__*/createElement(_SelectableNode, {
|
|
587
612
|
config: config,
|
|
588
613
|
folder: folder,
|
|
589
|
-
item: item,
|
|
590
614
|
maxDepth: maxDepth,
|
|
615
|
+
movedIds: movedIds,
|
|
591
616
|
selection: selection,
|
|
592
|
-
disabled: (item === null || item === void 0 ? void 0 : item.id) === folder.id || maxDepth <= 0,
|
|
593
617
|
key: folder.id,
|
|
594
618
|
onSelect: function onSelect(folder) {
|
|
595
619
|
return setSelection(folder.id);
|
|
596
620
|
}
|
|
597
621
|
});
|
|
598
622
|
})
|
|
599
|
-
})
|
|
623
|
+
})]
|
|
600
624
|
}), /*#__PURE__*/jsxs(Sheet.Footer, {
|
|
601
625
|
className: "space-x-2",
|
|
602
626
|
children: [/*#__PURE__*/jsxs("div", {
|
|
@@ -673,7 +697,7 @@ var MoveFolderPane = function MoveFolderPane(_ref) {
|
|
|
673
697
|
});
|
|
674
698
|
};
|
|
675
699
|
|
|
676
|
-
var _excluded$4 = ["folder", "depth", "config", "folderLabel", "itemLabel"];
|
|
700
|
+
var _excluded$4 = ["folder", "depth", "config", "folderLabel", "itemLabel", "isAncestorDragging"];
|
|
677
701
|
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; }
|
|
678
702
|
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), true).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; }
|
|
679
703
|
var _DraggableNode$1 = function DraggableNode(_ref) {
|
|
@@ -683,6 +707,8 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
|
|
|
683
707
|
config = _ref.config,
|
|
684
708
|
folderLabel = _ref.folderLabel,
|
|
685
709
|
itemLabel = _ref.itemLabel,
|
|
710
|
+
_ref$isAncestorDraggi = _ref.isAncestorDragging,
|
|
711
|
+
isAncestorDragging = _ref$isAncestorDraggi === void 0 ? false : _ref$isAncestorDraggi,
|
|
686
712
|
rest = _objectWithoutProperties(_ref, _excluded$4);
|
|
687
713
|
var _useDraggable = useDraggable({
|
|
688
714
|
id: "draggable-item--".concat(folder.id),
|
|
@@ -693,15 +719,18 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
|
|
|
693
719
|
attributes = _useDraggable.attributes,
|
|
694
720
|
listeners = _useDraggable.listeners,
|
|
695
721
|
setDraggableRef = _useDraggable.setNodeRef;
|
|
722
|
+
var isInDraggedSubtree = isDragging || isAncestorDragging;
|
|
696
723
|
var _useDroppable = useDroppable({
|
|
697
724
|
id: "droppable-item--".concat(folder.id),
|
|
698
725
|
data: folder,
|
|
699
|
-
disabled:
|
|
726
|
+
disabled: isInDraggedSubtree
|
|
700
727
|
}),
|
|
701
728
|
isOver = _useDroppable.isOver,
|
|
702
729
|
setDroppableRef = _useDroppable.setNodeRef;
|
|
730
|
+
|
|
731
|
+
// Children stay rendered while dragging so the list height, and its scroll, don't shift under the drag overlay.
|
|
703
732
|
var renderChildren = function renderChildren() {
|
|
704
|
-
if (isNotPresent(folder.children)
|
|
733
|
+
if (isNotPresent(folder.children)) return null;
|
|
705
734
|
return folder.children.map(function (child) {
|
|
706
735
|
var _child$children$lengt, _child$children;
|
|
707
736
|
return /*#__PURE__*/createElement(_DraggableNode$1, _objectSpread$e(_objectSpread$e({}, _objectSpread$e(_objectSpread$e({}, rest), {}, {
|
|
@@ -709,6 +738,7 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
|
|
|
709
738
|
})), {}, {
|
|
710
739
|
depth: depth + 1,
|
|
711
740
|
folder: child,
|
|
741
|
+
isAncestorDragging: isInDraggedSubtree,
|
|
712
742
|
itemLabel: config.labels[(child === null || child === void 0 ? void 0 : child.itemCount) > 1 ? "items" : "item"],
|
|
713
743
|
key: child.id,
|
|
714
744
|
folderLabel: config.labels[((_child$children$lengt = child === null || child === void 0 || (_child$children = child.children) === null || _child$children === void 0 ? void 0 : _child$children.length) !== null && _child$children$lengt !== void 0 ? _child$children$lengt : 0) > 1 ? "folders" : "folder"]
|
|
@@ -719,7 +749,7 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
|
|
|
719
749
|
children: [/*#__PURE__*/jsx(Node$1, _objectSpread$e(_objectSpread$e(_objectSpread$e({}, rest), {}, {
|
|
720
750
|
className: classNames({
|
|
721
751
|
"rounded-lg hover:bg-muted w-full min-w-0 cursor-move transition-colors": true,
|
|
722
|
-
"bg-muted opacity-50":
|
|
752
|
+
"bg-muted opacity-50": isInDraggedSubtree,
|
|
723
753
|
"border-primary border": isOver,
|
|
724
754
|
"border border-transparent": !isOver
|
|
725
755
|
})
|
|
@@ -790,10 +820,11 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
|
|
|
790
820
|
if (((_activeFolder$meta$pa = activeFolder.meta.parent) === null || _activeFolder$meta$pa === void 0 ? void 0 : _activeFolder$meta$pa.id) === overFolder.id) return;
|
|
791
821
|
|
|
792
822
|
// Check moving to a folder with depth greater than the allowed limit.
|
|
793
|
-
//
|
|
823
|
+
// The extra root node puts top-level folders at depth 1, so the deepest moved
|
|
824
|
+
// folder lands at level (target depth + subtree height + 1).
|
|
794
825
|
var activeDepth = measureDepth(activeFolder);
|
|
795
826
|
var overDepth = overFolder.meta.depth;
|
|
796
|
-
if (activeDepth + overDepth >= config.maxDepth
|
|
827
|
+
if (activeDepth + overDepth >= config.maxDepth) {
|
|
797
828
|
Toastr.error(t("moveToFolder.depthExceeded", {
|
|
798
829
|
maxDepth: config.maxDepth
|
|
799
830
|
}));
|
|
@@ -882,7 +913,9 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
|
|
|
882
913
|
|
|
883
914
|
var PlaceholderNode = function PlaceholderNode(_ref) {
|
|
884
915
|
var folder = _ref.folder,
|
|
885
|
-
dragState = _ref.dragState
|
|
916
|
+
dragState = _ref.dragState,
|
|
917
|
+
_ref$disabled = _ref.disabled,
|
|
918
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
886
919
|
var overItem = dragState.overItem;
|
|
887
920
|
var id = useId();
|
|
888
921
|
var isOver = id === (overItem === null || overItem === void 0 ? void 0 : overItem.id);
|
|
@@ -897,7 +930,8 @@ var PlaceholderNode = function PlaceholderNode(_ref) {
|
|
|
897
930
|
data: {
|
|
898
931
|
id: id,
|
|
899
932
|
meta: meta
|
|
900
|
-
}
|
|
933
|
+
},
|
|
934
|
+
disabled: disabled
|
|
901
935
|
}),
|
|
902
936
|
setDroppableRef = _useDroppable.setNodeRef;
|
|
903
937
|
return /*#__PURE__*/jsxs("div", {
|
|
@@ -916,7 +950,7 @@ var PlaceholderNode = function PlaceholderNode(_ref) {
|
|
|
916
950
|
});
|
|
917
951
|
};
|
|
918
952
|
|
|
919
|
-
var _excluded$3 = ["folder", "config", "dragState", "folderLabel", "itemLabel"];
|
|
953
|
+
var _excluded$3 = ["folder", "config", "dragState", "folderLabel", "itemLabel", "isAncestorDragging"];
|
|
920
954
|
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; }
|
|
921
955
|
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), true).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; }
|
|
922
956
|
var _DraggableNode = function DraggableNode(_ref) {
|
|
@@ -926,6 +960,8 @@ var _DraggableNode = function DraggableNode(_ref) {
|
|
|
926
960
|
dragState = _ref.dragState,
|
|
927
961
|
folderLabel = _ref.folderLabel,
|
|
928
962
|
itemLabel = _ref.itemLabel,
|
|
963
|
+
_ref$isAncestorDraggi = _ref.isAncestorDragging,
|
|
964
|
+
isAncestorDragging = _ref$isAncestorDraggi === void 0 ? false : _ref$isAncestorDraggi,
|
|
929
965
|
rest = _objectWithoutProperties(_ref, _excluded$3);
|
|
930
966
|
var overItem = dragState.overItem;
|
|
931
967
|
var isOverItem = folder.id === (overItem === null || overItem === void 0 ? void 0 : overItem.id);
|
|
@@ -940,18 +976,21 @@ var _DraggableNode = function DraggableNode(_ref) {
|
|
|
940
976
|
attributes = _useDraggable.attributes,
|
|
941
977
|
listeners = _useDraggable.listeners,
|
|
942
978
|
setDraggableRef = _useDraggable.setNodeRef;
|
|
979
|
+
var isInDraggedSubtree = isDragging || isAncestorDragging;
|
|
943
980
|
var _useDroppable = useDroppable({
|
|
944
981
|
id: "droppable-item--".concat(folder.id),
|
|
945
982
|
data: folder,
|
|
946
|
-
disabled: isRoot ||
|
|
983
|
+
disabled: isRoot || isInDraggedSubtree
|
|
947
984
|
}),
|
|
948
985
|
setDroppableRef = _useDroppable.setNodeRef;
|
|
986
|
+
|
|
987
|
+
// Children stay rendered while dragging so the list height, and its scroll, don't shift under the drag overlay.
|
|
949
988
|
var renderChildren = function renderChildren() {
|
|
950
|
-
if (isDragging) return null;
|
|
951
989
|
return /*#__PURE__*/jsxs(React.Fragment, {
|
|
952
990
|
children: [/*#__PURE__*/jsx(PlaceholderNode, {
|
|
953
991
|
dragState: dragState,
|
|
954
|
-
folder: folder
|
|
992
|
+
folder: folder,
|
|
993
|
+
disabled: isInDraggedSubtree
|
|
955
994
|
}), isArray(folder.children) && folder.children.map(function (child) {
|
|
956
995
|
var _child$children$lengt, _child$children;
|
|
957
996
|
return /*#__PURE__*/createElement(_DraggableNode, _objectSpread$c(_objectSpread$c({}, _objectSpread$c(_objectSpread$c({}, rest), {}, {
|
|
@@ -960,6 +999,7 @@ var _DraggableNode = function DraggableNode(_ref) {
|
|
|
960
999
|
})), {}, {
|
|
961
1000
|
depth: child.meta.depth,
|
|
962
1001
|
folder: child,
|
|
1002
|
+
isAncestorDragging: isInDraggedSubtree,
|
|
963
1003
|
itemLabel: config.labels[(child === null || child === void 0 ? void 0 : child.itemCount) > 1 ? "items" : "item"],
|
|
964
1004
|
key: child.id,
|
|
965
1005
|
folderLabel: config.labels[((_child$children$lengt = child === null || child === void 0 || (_child$children = child.children) === null || _child$children === void 0 ? void 0 : _child$children.length) !== null && _child$children$lengt !== void 0 ? _child$children$lengt : 0) > 1 ? "folders" : "folder"]
|
|
@@ -978,7 +1018,7 @@ var _DraggableNode = function DraggableNode(_ref) {
|
|
|
978
1018
|
})), {}, {
|
|
979
1019
|
className: classNames({
|
|
980
1020
|
"hover:bg-muted w-full cursor-move transition-colors": true,
|
|
981
|
-
"bg-muted opacity-50":
|
|
1021
|
+
"bg-muted opacity-50": isInDraggedSubtree,
|
|
982
1022
|
"bg-accent": isOverParent,
|
|
983
1023
|
"border-primary border-b-2": isOverItem
|
|
984
1024
|
}),
|
|
@@ -1067,10 +1107,11 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
|
|
|
1067
1107
|
}
|
|
1068
1108
|
|
|
1069
1109
|
// Check moving to a folder with depth greater than the allowed limit.
|
|
1070
|
-
//
|
|
1110
|
+
// The extra root node puts top-level folders at depth 1, so the deepest moved
|
|
1111
|
+
// folder lands at level (target depth + subtree height + 1).
|
|
1071
1112
|
var srcDepth = measureDepth(activeFolder);
|
|
1072
1113
|
var dstDepth = targetFolder.meta.depth;
|
|
1073
|
-
if (srcDepth + dstDepth >= config.maxDepth
|
|
1114
|
+
if (srcDepth + dstDepth >= config.maxDepth) {
|
|
1074
1115
|
Toastr.error(t("moveToFolder.depthExceeded", {
|
|
1075
1116
|
maxDepth: config.maxDepth
|
|
1076
1117
|
}));
|
|
@@ -1804,19 +1845,21 @@ var FoldersTree = function FoldersTree(_ref) {
|
|
|
1804
1845
|
|
|
1805
1846
|
function ownKeys$1(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; }
|
|
1806
1847
|
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1848
|
+
|
|
1807
1849
|
// neeto-atoms TreeSelect expects nested treeData ({ key, title, children }) and
|
|
1808
1850
|
// has no `treeDataSimpleMode`, unlike neetoui's antd TreeSelect which consumed a
|
|
1809
1851
|
// flat list keyed by pId. Build the nested shape directly from the folders tree,
|
|
1810
|
-
// pruning folders at/below maxDepth (and their subtrees).
|
|
1852
|
+
// pruning folders at/below maxDepth and the excluded folder (and their subtrees).
|
|
1811
1853
|
//
|
|
1812
1854
|
// Depth is derived structurally from the recursion level (roots = 0), matching
|
|
1813
1855
|
// treeToMap/walkTree — the raw `folders` from the API don't carry a computed
|
|
1814
1856
|
// `meta.depth`; v1 only had it because it passed the treeToMap'd map.
|
|
1815
|
-
var _createFolderOptions = function createFolderOptions(folders,
|
|
1816
|
-
var
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1857
|
+
var _createFolderOptions = function createFolderOptions(folders, maxDepth) {
|
|
1858
|
+
var excludedFolderId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
1859
|
+
var depth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
1860
|
+
if (depth >= maxDepth) return [];
|
|
1861
|
+
return removeById(excludedFolderId, folders !== null && folders !== void 0 ? folders : []).map(function (folder) {
|
|
1862
|
+
var children = _createFolderOptions(folder.children, maxDepth, excludedFolderId, depth + 1);
|
|
1820
1863
|
return _objectSpread$1({
|
|
1821
1864
|
key: folder.id,
|
|
1822
1865
|
title: folder.name
|
|
@@ -1826,7 +1869,7 @@ var _createFolderOptions = function createFolderOptions(folders, config) {
|
|
|
1826
1869
|
});
|
|
1827
1870
|
};
|
|
1828
1871
|
|
|
1829
|
-
var _excluded = ["label", "name", "placeholder", "disabled", "required", "showSearch", "allowClear", "config", "initialValue"];
|
|
1872
|
+
var _excluded = ["label", "name", "placeholder", "disabled", "required", "showSearch", "allowClear", "config", "initialValue", "excludedFolderId"];
|
|
1830
1873
|
function ownKeys(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; }
|
|
1831
1874
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1832
1875
|
var TreeSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
@@ -1845,6 +1888,8 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
1845
1888
|
allowClear = _ref$allowClear === void 0 ? false : _ref$allowClear,
|
|
1846
1889
|
config = _ref.config,
|
|
1847
1890
|
initialValue = _ref.initialValue,
|
|
1891
|
+
_ref$excludedFolderId = _ref.excludedFolderId,
|
|
1892
|
+
excludedFolderId = _ref$excludedFolderId === void 0 ? null : _ref$excludedFolderId,
|
|
1848
1893
|
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
1849
1894
|
var _useFetchFolders = useFetchFolders(config),
|
|
1850
1895
|
folders = _useFetchFolders.data;
|
|
@@ -1863,8 +1908,8 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
1863
1908
|
setFieldValue(name, parentId);
|
|
1864
1909
|
}, [parentId, name]);
|
|
1865
1910
|
var folderOptions = useMemo(function () {
|
|
1866
|
-
return _createFolderOptions(folders !== null && folders !== void 0 ? folders : [], config);
|
|
1867
|
-
}, [folders]);
|
|
1911
|
+
return _createFolderOptions(folders !== null && folders !== void 0 ? folders : [], config.maxDepth, excludedFolderId);
|
|
1912
|
+
}, [folders, config.maxDepth, excludedFolderId]);
|
|
1868
1913
|
return /*#__PURE__*/jsx(TreeSelect$1, _objectSpread({
|
|
1869
1914
|
isClearable: allowClear,
|
|
1870
1915
|
isDisabled: disabled,
|