@bigbinary/neeto-folders-frontend 2.0.48 → 2.0.49-beta2
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 +16 -16
- package/types.d.ts +1 -0
package/dist/cjs/utils.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('ramda');
|
|
4
4
|
var internal = require('../internal-DAkDv0P1.js');
|
|
5
|
-
var utils = require('../index-
|
|
5
|
+
var utils = require('../index-DCIRHXw_.js');
|
|
6
6
|
require('@bigbinary/neeto-atoms');
|
|
7
7
|
require('react-router-dom');
|
|
8
8
|
require('@babel/runtime/helpers/defineProperty');
|
|
@@ -12,7 +12,7 @@ var reactRouterDom = require('react-router-dom');
|
|
|
12
12
|
var useFolderActions = require('../../useFolderActions-DImaQ3gr.js');
|
|
13
13
|
var injectCss = require('../../inject-css-D3Ee0dJK.js');
|
|
14
14
|
var constants = require('../constants.js');
|
|
15
|
-
var utils = require('../../index-
|
|
15
|
+
var utils = require('../../index-DCIRHXw_.js');
|
|
16
16
|
var internal = require('../../internal-DAkDv0P1.js');
|
|
17
17
|
var jsxRuntime = require('react/jsx-runtime');
|
|
18
18
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
@@ -24,8 +24,8 @@ var i18next = require('i18next');
|
|
|
24
24
|
var yup = require('yup');
|
|
25
25
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
26
26
|
var primitives = require('@bigbinary/neeto-atoms/primitives');
|
|
27
|
-
var useHotkeys = require('@bigbinary/neeto-hotkeys');
|
|
28
27
|
var neetoCist = require('@bigbinary/neeto-cist');
|
|
28
|
+
var useHotkeys = require('@bigbinary/neeto-hotkeys');
|
|
29
29
|
var ramda = require('ramda');
|
|
30
30
|
var classNames = require('classnames');
|
|
31
31
|
var core = require('@dnd-kit/core');
|
|
@@ -217,6 +217,7 @@ var AddEditPane = function AddEditPane(_ref) {
|
|
|
217
217
|
var response = error.response;
|
|
218
218
|
if (response && response.data && response.data.errors) {
|
|
219
219
|
setStatus(response.data.errors);
|
|
220
|
+
if (response.data.errors.base) neetoAtoms.Toastr.error(response.data.errors.base[0]);
|
|
220
221
|
}
|
|
221
222
|
};
|
|
222
223
|
var onSubmitForm = /*#__PURE__*/function () {
|
|
@@ -320,6 +321,7 @@ var AddEditPane = function AddEditPane(_ref) {
|
|
|
320
321
|
config: config,
|
|
321
322
|
allowClear: true,
|
|
322
323
|
showSearch: true,
|
|
324
|
+
excludedFolderId: isEditing ? item.id : null,
|
|
323
325
|
initialValue: folderSid,
|
|
324
326
|
label: t("createFolder.parentTitle"),
|
|
325
327
|
name: "parentId"
|
|
@@ -411,7 +413,7 @@ var Node$1 = function Node(_ref, ref) {
|
|
|
411
413
|
};
|
|
412
414
|
var Node$2 = /*#__PURE__*/React.forwardRef(Node$1);
|
|
413
415
|
|
|
414
|
-
var _excluded$5 = ["folder", "
|
|
416
|
+
var _excluded$5 = ["folder", "movedIds", "depth", "maxDepth", "disabled", "config"];
|
|
415
417
|
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; }
|
|
416
418
|
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; }
|
|
417
419
|
var toRadioValue = function toRadioValue(id) {
|
|
@@ -420,7 +422,8 @@ var toRadioValue = function toRadioValue(id) {
|
|
|
420
422
|
var _SelectableNode = function SelectableNode(_ref) {
|
|
421
423
|
var _folder$children$leng, _folder$children;
|
|
422
424
|
var folder = _ref.folder,
|
|
423
|
-
|
|
425
|
+
_ref$movedIds = _ref.movedIds,
|
|
426
|
+
movedIds = _ref$movedIds === void 0 ? [] : _ref$movedIds,
|
|
424
427
|
_ref$depth = _ref.depth,
|
|
425
428
|
depth = _ref$depth === void 0 ? 0 : _ref$depth,
|
|
426
429
|
maxDepth = _ref.maxDepth,
|
|
@@ -431,7 +434,11 @@ var _SelectableNode = function SelectableNode(_ref) {
|
|
|
431
434
|
var onSelect = rest.onSelect;
|
|
432
435
|
var _useTranslation = injectCss.useTranslation(config),
|
|
433
436
|
t = _useTranslation.t;
|
|
434
|
-
var
|
|
437
|
+
var isDepthExceeded = depth >= maxDepth;
|
|
438
|
+
var isDisabled = disabled || movedIds.includes(folder.id) || isDepthExceeded;
|
|
439
|
+
var disabledTitle = isDepthExceeded ? t("moveToFolder.depthExceeded", {
|
|
440
|
+
maxDepth: config.maxDepth
|
|
441
|
+
}) : t("moveToFolder.notAllowed");
|
|
435
442
|
var itemLabel = config.labels[folder.itemCount > 1 ? "items" : "item"];
|
|
436
443
|
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"];
|
|
437
444
|
var renderChildren = function renderChildren() {
|
|
@@ -439,8 +446,8 @@ var _SelectableNode = function SelectableNode(_ref) {
|
|
|
439
446
|
return folder.children.map(function (child) {
|
|
440
447
|
return /*#__PURE__*/React.createElement(_SelectableNode, _objectSpread$g(_objectSpread$g({}, _objectSpread$g(_objectSpread$g({}, rest), {}, {
|
|
441
448
|
config: config,
|
|
442
|
-
|
|
443
|
-
|
|
449
|
+
maxDepth: maxDepth,
|
|
450
|
+
movedIds: movedIds
|
|
444
451
|
})), {}, {
|
|
445
452
|
depth: depth + 1,
|
|
446
453
|
disabled: isDisabled,
|
|
@@ -451,7 +458,7 @@ var _SelectableNode = function SelectableNode(_ref) {
|
|
|
451
458
|
};
|
|
452
459
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
453
460
|
"aria-disabled": isDisabled,
|
|
454
|
-
title: isDisabled ?
|
|
461
|
+
title: isDisabled ? disabledTitle : undefined,
|
|
455
462
|
className: classNames("flex flex-col w-full min-w-0", {
|
|
456
463
|
"opacity-60": isDisabled
|
|
457
464
|
}),
|
|
@@ -486,6 +493,7 @@ var PaneBody = function PaneBody(_ref) {
|
|
|
486
493
|
var _ref$isRootEnabled = _ref.isRootEnabled,
|
|
487
494
|
isRootEnabled = _ref$isRootEnabled === void 0 ? true : _ref$isRootEnabled,
|
|
488
495
|
item = _ref.item,
|
|
496
|
+
items = _ref.items,
|
|
489
497
|
config = _ref.config,
|
|
490
498
|
submitButtonProps = _ref.submitButtonProps,
|
|
491
499
|
cancelButtonProps = _ref.cancelButtonProps,
|
|
@@ -521,15 +529,28 @@ var PaneBody = function PaneBody(_ref) {
|
|
|
521
529
|
var tree = React.useMemo(function () {
|
|
522
530
|
return createTree(folders, isRootEnabled);
|
|
523
531
|
}, [folders, isRootEnabled]);
|
|
532
|
+
var movedItems = items !== null && items !== void 0 ? items : item ? [item] : [];
|
|
533
|
+
var movedIds = ramda.pluck("id", movedItems);
|
|
524
534
|
var maxDepth = Number.POSITIVE_INFINITY;
|
|
525
|
-
|
|
526
|
-
|
|
535
|
+
var nestingWarning = null;
|
|
536
|
+
if (neetoCist.isNotEmpty(movedItems)) {
|
|
537
|
+
// For moved folders, measure the depth from the tallest folder to its longest leaf.
|
|
527
538
|
var foldersMap = utils.treeToMap(folders);
|
|
528
|
-
var
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
539
|
+
var movedFolders = movedIds.map(function (id) {
|
|
540
|
+
return foldersMap[id];
|
|
541
|
+
}).filter(Boolean);
|
|
542
|
+
if (neetoCist.isNotEmpty(movedFolders)) {
|
|
543
|
+
var subtreeHeight = Math.max.apply(Math, _toConsumableArray(movedFolders.map(utils.measureDepth)));
|
|
544
|
+
maxDepth = config.maxDepth - (subtreeHeight + 1); // +1 for own depth;
|
|
532
545
|
if (isRootEnabled) maxDepth += 1; // +1 for root folder.
|
|
546
|
+
|
|
547
|
+
if (subtreeHeight > 0) {
|
|
548
|
+
nestingWarning = t("moveToFolder.nestingRestricted", {
|
|
549
|
+
count: movedFolders.length,
|
|
550
|
+
name: movedFolders[0].name,
|
|
551
|
+
maxDepth: config.maxDepth
|
|
552
|
+
});
|
|
553
|
+
}
|
|
533
554
|
}
|
|
534
555
|
}
|
|
535
556
|
var onAddFolder = function onAddFolder() {
|
|
@@ -579,26 +600,29 @@ var PaneBody = function PaneBody(_ref) {
|
|
|
579
600
|
variant: "outline",
|
|
580
601
|
onClick: onAddFolder
|
|
581
602
|
})]
|
|
582
|
-
}), /*#__PURE__*/jsxRuntime.
|
|
603
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Sheet.Body, {
|
|
583
604
|
className: "pb-6",
|
|
584
|
-
children: /*#__PURE__*/jsxRuntime.jsx(
|
|
605
|
+
children: [nestingWarning && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Callout, {
|
|
606
|
+
className: "mb-4",
|
|
607
|
+
variant: "warning",
|
|
608
|
+
children: nestingWarning
|
|
609
|
+
}), /*#__PURE__*/jsxRuntime.jsx(primitives.RadioGroup, {
|
|
585
610
|
className: "contents",
|
|
586
611
|
value: toRadioValue(selection),
|
|
587
612
|
children: tree.map(function (folder) {
|
|
588
613
|
return /*#__PURE__*/React.createElement(_SelectableNode, {
|
|
589
614
|
config: config,
|
|
590
615
|
folder: folder,
|
|
591
|
-
item: item,
|
|
592
616
|
maxDepth: maxDepth,
|
|
617
|
+
movedIds: movedIds,
|
|
593
618
|
selection: selection,
|
|
594
|
-
disabled: (item === null || item === void 0 ? void 0 : item.id) === folder.id || maxDepth <= 0,
|
|
595
619
|
key: folder.id,
|
|
596
620
|
onSelect: function onSelect(folder) {
|
|
597
621
|
return setSelection(folder.id);
|
|
598
622
|
}
|
|
599
623
|
});
|
|
600
624
|
})
|
|
601
|
-
})
|
|
625
|
+
})]
|
|
602
626
|
}), /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Sheet.Footer, {
|
|
603
627
|
className: "space-x-2",
|
|
604
628
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
@@ -675,7 +699,7 @@ var MoveFolderPane = function MoveFolderPane(_ref) {
|
|
|
675
699
|
});
|
|
676
700
|
};
|
|
677
701
|
|
|
678
|
-
var _excluded$4 = ["folder", "depth", "config", "folderLabel", "itemLabel"];
|
|
702
|
+
var _excluded$4 = ["folder", "depth", "config", "folderLabel", "itemLabel", "isAncestorDragging"];
|
|
679
703
|
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; }
|
|
680
704
|
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; }
|
|
681
705
|
var _DraggableNode$1 = function DraggableNode(_ref) {
|
|
@@ -685,6 +709,8 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
|
|
|
685
709
|
config = _ref.config,
|
|
686
710
|
folderLabel = _ref.folderLabel,
|
|
687
711
|
itemLabel = _ref.itemLabel,
|
|
712
|
+
_ref$isAncestorDraggi = _ref.isAncestorDragging,
|
|
713
|
+
isAncestorDragging = _ref$isAncestorDraggi === void 0 ? false : _ref$isAncestorDraggi,
|
|
688
714
|
rest = _objectWithoutProperties(_ref, _excluded$4);
|
|
689
715
|
var _useDraggable = core.useDraggable({
|
|
690
716
|
id: "draggable-item--".concat(folder.id),
|
|
@@ -695,15 +721,18 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
|
|
|
695
721
|
attributes = _useDraggable.attributes,
|
|
696
722
|
listeners = _useDraggable.listeners,
|
|
697
723
|
setDraggableRef = _useDraggable.setNodeRef;
|
|
724
|
+
var isInDraggedSubtree = isDragging || isAncestorDragging;
|
|
698
725
|
var _useDroppable = core.useDroppable({
|
|
699
726
|
id: "droppable-item--".concat(folder.id),
|
|
700
727
|
data: folder,
|
|
701
|
-
disabled:
|
|
728
|
+
disabled: isInDraggedSubtree
|
|
702
729
|
}),
|
|
703
730
|
isOver = _useDroppable.isOver,
|
|
704
731
|
setDroppableRef = _useDroppable.setNodeRef;
|
|
732
|
+
|
|
733
|
+
// Children stay rendered while dragging so the list height, and its scroll, don't shift under the drag overlay.
|
|
705
734
|
var renderChildren = function renderChildren() {
|
|
706
|
-
if (neetoCist.isNotPresent(folder.children)
|
|
735
|
+
if (neetoCist.isNotPresent(folder.children)) return null;
|
|
707
736
|
return folder.children.map(function (child) {
|
|
708
737
|
var _child$children$lengt, _child$children;
|
|
709
738
|
return /*#__PURE__*/React.createElement(_DraggableNode$1, _objectSpread$e(_objectSpread$e({}, _objectSpread$e(_objectSpread$e({}, rest), {}, {
|
|
@@ -711,6 +740,7 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
|
|
|
711
740
|
})), {}, {
|
|
712
741
|
depth: depth + 1,
|
|
713
742
|
folder: child,
|
|
743
|
+
isAncestorDragging: isInDraggedSubtree,
|
|
714
744
|
itemLabel: config.labels[(child === null || child === void 0 ? void 0 : child.itemCount) > 1 ? "items" : "item"],
|
|
715
745
|
key: child.id,
|
|
716
746
|
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"]
|
|
@@ -721,7 +751,7 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
|
|
|
721
751
|
children: [/*#__PURE__*/jsxRuntime.jsx(Node$2, _objectSpread$e(_objectSpread$e(_objectSpread$e({}, rest), {}, {
|
|
722
752
|
className: classNames({
|
|
723
753
|
"rounded-lg hover:bg-muted w-full min-w-0 cursor-move transition-colors": true,
|
|
724
|
-
"bg-muted opacity-50":
|
|
754
|
+
"bg-muted opacity-50": isInDraggedSubtree,
|
|
725
755
|
"border-primary border": isOver,
|
|
726
756
|
"border border-transparent": !isOver
|
|
727
757
|
})
|
|
@@ -792,10 +822,11 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
|
|
|
792
822
|
if (((_activeFolder$meta$pa = activeFolder.meta.parent) === null || _activeFolder$meta$pa === void 0 ? void 0 : _activeFolder$meta$pa.id) === overFolder.id) return;
|
|
793
823
|
|
|
794
824
|
// Check moving to a folder with depth greater than the allowed limit.
|
|
795
|
-
//
|
|
825
|
+
// The extra root node puts top-level folders at depth 1, so the deepest moved
|
|
826
|
+
// folder lands at level (target depth + subtree height + 1).
|
|
796
827
|
var activeDepth = utils.measureDepth(activeFolder);
|
|
797
828
|
var overDepth = overFolder.meta.depth;
|
|
798
|
-
if (activeDepth + overDepth >= config.maxDepth
|
|
829
|
+
if (activeDepth + overDepth >= config.maxDepth) {
|
|
799
830
|
neetoAtoms.Toastr.error(t("moveToFolder.depthExceeded", {
|
|
800
831
|
maxDepth: config.maxDepth
|
|
801
832
|
}));
|
|
@@ -884,7 +915,9 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
|
|
|
884
915
|
|
|
885
916
|
var PlaceholderNode = function PlaceholderNode(_ref) {
|
|
886
917
|
var folder = _ref.folder,
|
|
887
|
-
dragState = _ref.dragState
|
|
918
|
+
dragState = _ref.dragState,
|
|
919
|
+
_ref$disabled = _ref.disabled,
|
|
920
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
888
921
|
var overItem = dragState.overItem;
|
|
889
922
|
var id = React.useId();
|
|
890
923
|
var isOver = id === (overItem === null || overItem === void 0 ? void 0 : overItem.id);
|
|
@@ -899,7 +932,8 @@ var PlaceholderNode = function PlaceholderNode(_ref) {
|
|
|
899
932
|
data: {
|
|
900
933
|
id: id,
|
|
901
934
|
meta: meta
|
|
902
|
-
}
|
|
935
|
+
},
|
|
936
|
+
disabled: disabled
|
|
903
937
|
}),
|
|
904
938
|
setDroppableRef = _useDroppable.setNodeRef;
|
|
905
939
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
@@ -918,7 +952,7 @@ var PlaceholderNode = function PlaceholderNode(_ref) {
|
|
|
918
952
|
});
|
|
919
953
|
};
|
|
920
954
|
|
|
921
|
-
var _excluded$3 = ["folder", "config", "dragState", "folderLabel", "itemLabel"];
|
|
955
|
+
var _excluded$3 = ["folder", "config", "dragState", "folderLabel", "itemLabel", "isAncestorDragging"];
|
|
922
956
|
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; }
|
|
923
957
|
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; }
|
|
924
958
|
var _DraggableNode = function DraggableNode(_ref) {
|
|
@@ -928,6 +962,8 @@ var _DraggableNode = function DraggableNode(_ref) {
|
|
|
928
962
|
dragState = _ref.dragState,
|
|
929
963
|
folderLabel = _ref.folderLabel,
|
|
930
964
|
itemLabel = _ref.itemLabel,
|
|
965
|
+
_ref$isAncestorDraggi = _ref.isAncestorDragging,
|
|
966
|
+
isAncestorDragging = _ref$isAncestorDraggi === void 0 ? false : _ref$isAncestorDraggi,
|
|
931
967
|
rest = _objectWithoutProperties(_ref, _excluded$3);
|
|
932
968
|
var overItem = dragState.overItem;
|
|
933
969
|
var isOverItem = folder.id === (overItem === null || overItem === void 0 ? void 0 : overItem.id);
|
|
@@ -942,18 +978,21 @@ var _DraggableNode = function DraggableNode(_ref) {
|
|
|
942
978
|
attributes = _useDraggable.attributes,
|
|
943
979
|
listeners = _useDraggable.listeners,
|
|
944
980
|
setDraggableRef = _useDraggable.setNodeRef;
|
|
981
|
+
var isInDraggedSubtree = isDragging || isAncestorDragging;
|
|
945
982
|
var _useDroppable = core.useDroppable({
|
|
946
983
|
id: "droppable-item--".concat(folder.id),
|
|
947
984
|
data: folder,
|
|
948
|
-
disabled: isRoot ||
|
|
985
|
+
disabled: isRoot || isInDraggedSubtree
|
|
949
986
|
}),
|
|
950
987
|
setDroppableRef = _useDroppable.setNodeRef;
|
|
988
|
+
|
|
989
|
+
// Children stay rendered while dragging so the list height, and its scroll, don't shift under the drag overlay.
|
|
951
990
|
var renderChildren = function renderChildren() {
|
|
952
|
-
if (isDragging) return null;
|
|
953
991
|
return /*#__PURE__*/jsxRuntime.jsxs(React.Fragment, {
|
|
954
992
|
children: [/*#__PURE__*/jsxRuntime.jsx(PlaceholderNode, {
|
|
955
993
|
dragState: dragState,
|
|
956
|
-
folder: folder
|
|
994
|
+
folder: folder,
|
|
995
|
+
disabled: isInDraggedSubtree
|
|
957
996
|
}), internal.isArray(folder.children) && folder.children.map(function (child) {
|
|
958
997
|
var _child$children$lengt, _child$children;
|
|
959
998
|
return /*#__PURE__*/React.createElement(_DraggableNode, _objectSpread$c(_objectSpread$c({}, _objectSpread$c(_objectSpread$c({}, rest), {}, {
|
|
@@ -962,6 +1001,7 @@ var _DraggableNode = function DraggableNode(_ref) {
|
|
|
962
1001
|
})), {}, {
|
|
963
1002
|
depth: child.meta.depth,
|
|
964
1003
|
folder: child,
|
|
1004
|
+
isAncestorDragging: isInDraggedSubtree,
|
|
965
1005
|
itemLabel: config.labels[(child === null || child === void 0 ? void 0 : child.itemCount) > 1 ? "items" : "item"],
|
|
966
1006
|
key: child.id,
|
|
967
1007
|
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"]
|
|
@@ -980,7 +1020,7 @@ var _DraggableNode = function DraggableNode(_ref) {
|
|
|
980
1020
|
})), {}, {
|
|
981
1021
|
className: classNames({
|
|
982
1022
|
"hover:bg-muted w-full cursor-move transition-colors": true,
|
|
983
|
-
"bg-muted opacity-50":
|
|
1023
|
+
"bg-muted opacity-50": isInDraggedSubtree,
|
|
984
1024
|
"bg-accent": isOverParent,
|
|
985
1025
|
"border-primary border-b-2": isOverItem
|
|
986
1026
|
}),
|
|
@@ -1069,10 +1109,11 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
|
|
|
1069
1109
|
}
|
|
1070
1110
|
|
|
1071
1111
|
// Check moving to a folder with depth greater than the allowed limit.
|
|
1072
|
-
//
|
|
1112
|
+
// The extra root node puts top-level folders at depth 1, so the deepest moved
|
|
1113
|
+
// folder lands at level (target depth + subtree height + 1).
|
|
1073
1114
|
var srcDepth = utils.measureDepth(activeFolder);
|
|
1074
1115
|
var dstDepth = targetFolder.meta.depth;
|
|
1075
|
-
if (srcDepth + dstDepth >= config.maxDepth
|
|
1116
|
+
if (srcDepth + dstDepth >= config.maxDepth) {
|
|
1076
1117
|
neetoAtoms.Toastr.error(t("moveToFolder.depthExceeded", {
|
|
1077
1118
|
maxDepth: config.maxDepth
|
|
1078
1119
|
}));
|
|
@@ -1806,19 +1847,21 @@ var FoldersTree = function FoldersTree(_ref) {
|
|
|
1806
1847
|
|
|
1807
1848
|
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; }
|
|
1808
1849
|
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; }
|
|
1850
|
+
|
|
1809
1851
|
// neeto-atoms TreeSelect expects nested treeData ({ key, title, children }) and
|
|
1810
1852
|
// has no `treeDataSimpleMode`, unlike neetoui's antd TreeSelect which consumed a
|
|
1811
1853
|
// flat list keyed by pId. Build the nested shape directly from the folders tree,
|
|
1812
|
-
// pruning folders at/below maxDepth (and their subtrees).
|
|
1854
|
+
// pruning folders at/below maxDepth and the excluded folder (and their subtrees).
|
|
1813
1855
|
//
|
|
1814
1856
|
// Depth is derived structurally from the recursion level (roots = 0), matching
|
|
1815
1857
|
// treeToMap/walkTree — the raw `folders` from the API don't carry a computed
|
|
1816
1858
|
// `meta.depth`; v1 only had it because it passed the treeToMap'd map.
|
|
1817
|
-
var _createFolderOptions = function createFolderOptions(folders,
|
|
1818
|
-
var
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1859
|
+
var _createFolderOptions = function createFolderOptions(folders, maxDepth) {
|
|
1860
|
+
var excludedFolderId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
1861
|
+
var depth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
1862
|
+
if (depth >= maxDepth) return [];
|
|
1863
|
+
return neetoCist.removeById(excludedFolderId, folders !== null && folders !== void 0 ? folders : []).map(function (folder) {
|
|
1864
|
+
var children = _createFolderOptions(folder.children, maxDepth, excludedFolderId, depth + 1);
|
|
1822
1865
|
return _objectSpread$1({
|
|
1823
1866
|
key: folder.id,
|
|
1824
1867
|
title: folder.name
|
|
@@ -1828,7 +1871,7 @@ var _createFolderOptions = function createFolderOptions(folders, config) {
|
|
|
1828
1871
|
});
|
|
1829
1872
|
};
|
|
1830
1873
|
|
|
1831
|
-
var _excluded = ["label", "name", "placeholder", "disabled", "required", "showSearch", "allowClear", "config", "initialValue"];
|
|
1874
|
+
var _excluded = ["label", "name", "placeholder", "disabled", "required", "showSearch", "allowClear", "config", "initialValue", "excludedFolderId"];
|
|
1832
1875
|
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; }
|
|
1833
1876
|
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; }
|
|
1834
1877
|
var TreeSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
@@ -1847,6 +1890,8 @@ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1847
1890
|
allowClear = _ref$allowClear === void 0 ? false : _ref$allowClear,
|
|
1848
1891
|
config = _ref.config,
|
|
1849
1892
|
initialValue = _ref.initialValue,
|
|
1893
|
+
_ref$excludedFolderId = _ref.excludedFolderId,
|
|
1894
|
+
excludedFolderId = _ref$excludedFolderId === void 0 ? null : _ref$excludedFolderId,
|
|
1850
1895
|
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
1851
1896
|
var _useFetchFolders = useFolderActions.useFetchFolders(config),
|
|
1852
1897
|
folders = _useFetchFolders.data;
|
|
@@ -1865,8 +1910,8 @@ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1865
1910
|
setFieldValue(name, parentId);
|
|
1866
1911
|
}, [parentId, name]);
|
|
1867
1912
|
var folderOptions = React.useMemo(function () {
|
|
1868
|
-
return _createFolderOptions(folders !== null && folders !== void 0 ? folders : [], config);
|
|
1869
|
-
}, [folders]);
|
|
1913
|
+
return _createFolderOptions(folders !== null && folders !== void 0 ? folders : [], config.maxDepth, excludedFolderId);
|
|
1914
|
+
}, [folders, config.maxDepth, excludedFolderId]);
|
|
1870
1915
|
return /*#__PURE__*/jsxRuntime.jsx(formik.TreeSelect, _objectSpread({
|
|
1871
1916
|
isClearable: allowClear,
|
|
1872
1917
|
isDisabled: disabled,
|