@bigbinary/neeto-folders-frontend 2.0.41 → 2.0.43

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/dist/.ready CHANGED
@@ -1 +1 @@
1
- Built at 2026-06-30T09:31:58.922Z
1
+ Built at 2026-07-02T10:30:40.148Z
@@ -568,14 +568,15 @@ var PaneBody = function PaneBody(_ref) {
568
568
  }
569
569
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
570
570
  children: [/*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Sheet.Header, {
571
- className: "flex items-center justify-between",
571
+ className: "flex flex-row items-center justify-between",
572
572
  children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Title, {
573
573
  children: t("moveToFolder.title")
574
574
  }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
575
- className: "me-2",
575
+ className: "absolute end-12 top-3",
576
576
  "data-testid": "add-new-folder-button",
577
577
  label: t("folders.add"),
578
- variant: "link",
578
+ size: "sm",
579
+ variant: "outline",
579
580
  onClick: onAddFolder
580
581
  })]
581
582
  }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Body, {
@@ -823,7 +824,7 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
823
824
  });
824
825
  var nodeProps = {
825
826
  icon: /*#__PURE__*/jsxRuntime.jsx(lucideReact.GripVertical, {
826
- className: "text-muted-foreground relative -start-[0.3125rem] flex-shrink-0"
827
+ className: "text-muted-foreground relative -start-[0.3125rem] size-4 flex-shrink-0"
827
828
  })
828
829
  };
829
830
  if (isFetching) {
@@ -1104,7 +1105,7 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
1104
1105
  });
1105
1106
  var nodeProps = {
1106
1107
  icon: /*#__PURE__*/jsxRuntime.jsx(lucideReact.GripVertical, {
1107
- className: "text-muted-foreground relative -start-[0.3125rem] flex-shrink-0"
1108
+ className: "text-muted-foreground relative -start-[0.3125rem] size-4 flex-shrink-0"
1108
1109
  })
1109
1110
  };
1110
1111
  if (isFetching) {
@@ -1202,6 +1203,7 @@ var FoldersPane = function FoldersPane(_ref) {
1202
1203
  onClose: onClose,
1203
1204
  initialFocusRef: setFocusField,
1204
1205
  isOpen: !!type,
1206
+ size: "large",
1205
1207
  children: [(type === "edit" || type === "add") && /*#__PURE__*/jsxRuntime.jsx(AddEditPane, _objectSpread$c({}, _objectSpread$c({
1206
1208
  setFocusField: setFocusField
1207
1209
  }, commonProps))), type === "move" && /*#__PURE__*/jsxRuntime.jsx(MoveFolderPane, _objectSpread$c({}, commonProps)), type === "reorder" && /*#__PURE__*/jsxRuntime.jsx(ReorderPaneComponent, _objectSpread$c({}, commonProps))]
@@ -1310,13 +1312,16 @@ var FolderTile = function FolderTile(_ref) {
1310
1312
  })]
1311
1313
  }), /*#__PURE__*/jsxRuntime.jsx(MoreDropdown, {
1312
1314
  menuItems: menuItems,
1313
- dropdownButtonProps: {
1314
- className: "absolute end-2 top-2"
1315
- },
1316
1315
  dropdownProps: {
1317
1316
  onClick: function onClick(event) {
1318
1317
  return event.preventDefault();
1319
1318
  }
1319
+ },
1320
+ dropdownButtonProps: {
1321
+ className: "absolute end-2 top-2",
1322
+ onClick: function onClick(event) {
1323
+ return event.preventDefault();
1324
+ }
1320
1325
  }
1321
1326
  })]
1322
1327
  }));
@@ -1411,7 +1416,7 @@ var FoldersList = function FoldersList(_ref) {
1411
1416
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1412
1417
  children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
1413
1418
  className: "my-3",
1414
- variant: "h4",
1419
+ variant: "h6",
1415
1420
  children: t("folders.title")
1416
1421
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
1417
1422
  className: "neeto-folders-grid-view-wrapper mb-10 grid w-full gap-4",
@@ -1464,6 +1469,7 @@ var MoveToFolderPane = function MoveToFolderPane(_ref) {
1464
1469
  return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet, {
1465
1470
  isOpen: isOpen,
1466
1471
  onClose: onClose,
1472
+ size: "large",
1467
1473
  children: /*#__PURE__*/jsxRuntime.jsx(PaneBody, _objectSpread$8({}, _objectSpread$8(_objectSpread$8({}, rest), {}, {
1468
1474
  onClose: onClose
1469
1475
  })))
@@ -1709,17 +1715,46 @@ var FoldersTree = function FoldersTree(_ref) {
1709
1715
  var treeData = React.useMemo(function () {
1710
1716
  return _toAtomsTreeData(buildTreeWithItems(folders, config));
1711
1717
  }, [folders, config.items]);
1718
+ var treeMap = React.useMemo(function () {
1719
+ return treeData ? utils.treeToMap(treeData, "sid") : {};
1720
+ }, [treeData]);
1721
+
1722
+ // Only hand react-arborist keys that actually exist in the current tree. A
1723
+ // missing/undefined selection — no folder in the URL, or a stale sid during
1724
+ // SPA navigation before the tree updates — makes its selectMulti call
1725
+ // identify(undefined) and throw "Cannot read properties of undefined".
1726
+ var selectedKeys = activeFolderSid && treeMap[activeFolderSid] ? [activeFolderSid] : [];
1712
1727
  var updateExpandedKeys = function updateExpandedKeys() {
1713
- var _activeFolder$meta;
1714
1728
  if (!treeData) return;
1715
- // When active folder changes from external sources, update expanded keys to auto expand tree.
1716
- var updatedExpandedKeys = new Set(expandedKeysSet);
1717
- var map = utils.treeToMap(treeData, "sid");
1718
- var activeFolder = map[activeFolderSid];
1719
- 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;
1720
- if (parentSid && !expandedKeysSet.has(parentSid)) {
1721
- updatedExpandedKeys.add(parentSid);
1729
+
1730
+ // Expand every ancestor of the active folder (not just the immediate
1731
+ // parent) so the full path to it is visible — folders nest up to
1732
+ // config.maxDepth. Walk up via treeMap, guarding against cycles.
1733
+ var ancestorSids = [];
1734
+ var seen = new Set();
1735
+ var node = treeMap[activeFolderSid];
1736
+ while ((_node = node) !== null && _node !== void 0 && (_node = _node.meta) !== null && _node !== void 0 && (_node = _node.parent) !== null && _node !== void 0 && _node.sid && !seen.has(node.meta.parent.sid)) {
1737
+ var _node;
1738
+ var parentSid = node.meta.parent.sid;
1739
+ seen.add(parentSid);
1740
+ ancestorSids.push(parentSid);
1741
+ node = treeMap[parentSid];
1722
1742
  }
1743
+ if (!ancestorSids.length) return;
1744
+
1745
+ // Functional update so the newly-expanded ancestors merge with the latest
1746
+ // expansion state (e.g. folders the user opened manually); bail out when
1747
+ // they're all already expanded to avoid a needless re-render.
1748
+ setExpandedKeysSet(function (prev) {
1749
+ if (ancestorSids.every(function (sid) {
1750
+ return prev.has(sid);
1751
+ })) return prev;
1752
+ var next = new Set(prev);
1753
+ ancestorSids.forEach(function (sid) {
1754
+ return next.add(sid);
1755
+ });
1756
+ return next;
1757
+ });
1723
1758
  };
1724
1759
  var handleExpand = function handleExpand(keys, _ref2) {
1725
1760
  var expanded = _ref2.expanded,
@@ -1757,7 +1792,7 @@ var FoldersTree = function FoldersTree(_ref) {
1757
1792
  className: "neeto-sidebar-folders-tree",
1758
1793
  indent: 20,
1759
1794
  rowHeight: 24,
1760
- selectedKeys: [activeFolderSid],
1795
+ selectedKeys: selectedKeys,
1761
1796
  showLine: false,
1762
1797
  switcherIcon: SwitcherIcon,
1763
1798
  titleRender: function titleRender(node) {
@@ -1853,7 +1888,7 @@ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1853
1888
  });
1854
1889
  TreeSelect.displayName = "TreeSelect";
1855
1890
 
1856
- 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:2px!important}.neeto-sidebar-folders-tree.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:rgb(var(--neeto-ui-gray-100));color:rgb(var(--neeto-ui-accent-800))!important;font-weight:500}.neeto-sidebar-folders-tree.ant-tree .ant-tree-switcher{margin-inline-end:0}.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))}.neeto-sidebar-folders-tree.ant-tree .ant-tree-node-content-wrapper:hover .neeto-sidebar-folders-tree__folder-node-actions{background-image:linear-gradient(90deg,rgba(var(--neeto-ui-gray-100),.5) 0,rgba(var(--neeto-ui-gray-100),1) 25%)}.neeto-sidebar-folders-tree.ant-tree .ant-tree-treenode{margin-bottom:6px}.neeto-sidebar-folders-tree.ant-tree .ant-tree-treenode:before{height:6px}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy92Mi9jb21wb25lbnRzL25lZXRvLWZvbGRlcnMtbmFuby5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUNFLHVCQUNGLENBRUEsb0VBRUUsV0FBQSxDQURBLDRCQUVGLENBRUEsMkZBRUUsOENBQUEsQ0FEQSwrQ0FBQSxDQUVBLGVBQ0YsQ0FFQSx3REFDRSxtQkFDRixDQUVBLGdGQUNFLGlCQUNGLENBRUEsaUNBQ0UseURBQ0YsQ0FFQSwySEFDRSxnSEFDRixDQUVBLHdEQUNFLGlCQUNGLENBRUEsK0RBQ0UsVUFDRiIsInNvdXJjZXNDb250ZW50IjpbIi5uZWV0by1zaWRlYmFyLWZvbGRlcnMtdHJlZV9fZm9sZGVyLW5vZGUge1xuICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xufVxuXG4ubmVldG8tc2lkZWJhci1mb2xkZXJzLXRyZWUuYW50LXRyZWUgLmFudC10cmVlLW5vZGUtY29udGVudC13cmFwcGVyIHtcbiAgcGFkZGluZy1pbmxpbmU6IDJweCAhaW1wb3J0YW50O1xuICBtaW4td2lkdGg6IDA7XG59XG5cbi5uZWV0by1zaWRlYmFyLWZvbGRlcnMtdHJlZS5hbnQtdHJlZSAuYW50LXRyZWUtbm9kZS1jb250ZW50LXdyYXBwZXIuYW50LXRyZWUtbm9kZS1zZWxlY3RlZCB7XG4gIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktYWNjZW50LTgwMCkpICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTEwMCkpO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4ubmVldG8tc2lkZWJhci1mb2xkZXJzLXRyZWUuYW50LXRyZWUgLmFudC10cmVlLXN3aXRjaGVyIHtcbiAgbWFyZ2luLWlubGluZS1lbmQ6IDA7XG59XG5cbi5uZWV0by1zaWRlYmFyLWZvbGRlcnMtdHJlZS5hbnQtdHJlZSAuYW50LXRyZWUtc3dpdGNoZXIgLmFudC10cmVlLXN3aXRjaGVyLWljb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5uZWV0by1mb2xkZXJzLWdyaWQtdmlldy13cmFwcGVyIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjU2cHgsIDFmcikpO1xufVxuXG4ubmVldG8tc2lkZWJhci1mb2xkZXJzLXRyZWUuYW50LXRyZWUgLmFudC10cmVlLW5vZGUtY29udGVudC13cmFwcGVyOmhvdmVyIC5uZWV0by1zaWRlYmFyLWZvbGRlcnMtdHJlZV9fZm9sZGVyLW5vZGUtYWN0aW9ucyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTEwMCksIC41KSAwLCByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktMTAwKSwgMSkgMjUlKTtcbn1cblxuLm5lZXRvLXNpZGViYXItZm9sZGVycy10cmVlLmFudC10cmVlIC5hbnQtdHJlZS10cmVlbm9kZSB7XG4gIG1hcmdpbi1ib3R0b206IDZweDtcbn1cblxuLm5lZXRvLXNpZGViYXItZm9sZGVycy10cmVlLmFudC10cmVlIC5hbnQtdHJlZS10cmVlbm9kZTo6YmVmb3JlIHtcbiAgaGVpZ2h0OiA2cHg7XG59XG4iXX0= */";
1891
+ var css = ".neeto-sidebar-folders-tree__folder-node{color:inherit!important}.neeto-folders-grid-view-wrapper{grid-template-columns:repeat(auto-fill,minmax(256px,1fr))}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy92Mi9jb21wb25lbnRzL25lZXRvLWZvbGRlcnMtbmFuby5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLHlDQUNFLHVCQVBGLENBVUEsaUNBQ0UseURBUEYiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgbmVldG8tYXRvbXMgVHJlZSBpcyByZWFjdC1hcmJvcmlzdCBiYXNlZCBhbmQgZW1pdHMgbm8gYC5hbnQtdHJlZWBcbi8vIG1hcmt1cCwgc28gdGhlIGFudGQtc2NvcGVkIHJ1bGVzIGZyb20gdGhlIG5lZXRvLXVpIHZlcnNpb24gKG5vZGUgc3BhY2luZyxcbi8vIHNlbGVjdGVkL2hvdmVyIHN0eWxpbmcsIHN3aXRjaGVyIHR3ZWFrcykgbm8gbG9uZ2VyIG1hdGNoIGFueXRoaW5nIGhlcmUuXG4vLyBUaGV5IGFsc28gY2FycmllZCB0aGUgbGFzdCBsZWdhY3kgbmVldG8tdWkgQ1NTIHZhcmlhYmxlcyBpbiB0aGlzIGZpbGU7IHRoZVxuLy8gYXRvbXMgVHJlZSBvd25zIGl0cyBvd24gc2VsZWN0aW9uL2hvdmVyIHN0eWxpbmcgYW5kIHRoZSBub2RlIGFjdGlvbnMgbm93IGZhZGUgaW5cbi8vIHZpYSBgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwYCBvbiB0aGUgZWxlbWVudCBpdHNlbGYsIHNvIG9ubHkgdGhlXG4vLyB0d28gc2VsZWN0b3JzIGJlbG93IHJlbWFpbiBsaXZlLlxuXG4ubmVldG8tc2lkZWJhci1mb2xkZXJzLXRyZWVfX2ZvbGRlci1ub2RlIHtcbiAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbn1cblxuLm5lZXRvLWZvbGRlcnMtZ3JpZC12aWV3LXdyYXBwZXIge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyNTZweCwgMWZyKSk7XG59XG4iXX0= */";
1857
1892
  injectCss.n(css,{});
1858
1893
 
1859
1894
  exports.AddEditPane = AddEditPane;