@bigbinary/neeto-folders-frontend 2.0.20 → 2.0.21

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/README.md CHANGED
@@ -153,7 +153,9 @@ certain properties such as params as necessary.
153
153
  destroy: noop,
154
154
  bulkUpdate: noop,
155
155
  bulkDestroy: noop,
156
- }
156
+ },
157
+ folderActions: { getMoreActions: (node) => [...], getAddActions: (node) => [...] },
158
+ itemActions: { getMoreActions: (node) => [...], getAddActions: (node) => [...] }
157
159
  }
158
160
  ```
159
161
 
@@ -9,7 +9,7 @@ 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-bZjr1L8D.js');
12
+ var useFolderActions = require('../useFolderActions-DDxiCAwt.js');
13
13
  var constants = require('./constants.js');
14
14
  var utils = require('../index-Bkom-uV7.js');
15
15
  var internal = require('../internal-xADvDa75.js');
@@ -43,6 +43,7 @@ var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
43
43
  var Checkbox = require('@bigbinary/neetoui/Checkbox');
44
44
  var Tree = require('@bigbinary/neetoui/Tree');
45
45
  var Lock = require('@bigbinary/neeto-icons/Lock');
46
+ var Plus = require('@bigbinary/neeto-icons/Plus');
46
47
  var antd = require('antd');
47
48
  var formik = require('formik');
48
49
  var Down = require('@bigbinary/neeto-icons/Down');
@@ -364,7 +365,7 @@ var REORDER_TREE_INDENT_WIDTH = 30;
364
365
  var _excluded$5 = ["icon", "itemLabel", "folder", "folderLabel", "depth", "className", "onClick"];
365
366
  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; }
366
367
  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; }
367
- var Node = function Node(_ref, ref) {
368
+ var Node$1 = function Node(_ref, ref) {
368
369
  var _folder$children$leng, _folder$children;
369
370
  var _ref$icon = _ref.icon,
370
371
  icon = _ref$icon === void 0 ? null : _ref$icon,
@@ -415,7 +416,7 @@ var Node = function Node(_ref, ref) {
415
416
  }))]
416
417
  });
417
418
  };
418
- var Node$1 = /*#__PURE__*/React.forwardRef(Node);
419
+ var Node$2 = /*#__PURE__*/React.forwardRef(Node$1);
419
420
 
420
421
  var _excluded$4 = ["folder", "item", "depth", "maxDepth", "disabled", "config"];
421
422
  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; }
@@ -458,7 +459,7 @@ var _SelectableNode = function SelectableNode(_ref) {
458
459
  "opacity-60": isDisabled
459
460
  }),
460
461
  title: isDisabled ? t("moveToFolder.notAllowed") : undefined,
461
- children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$b(_objectSpread$b({}, _objectSpread$b(_objectSpread$b({}, rest), {}, {
462
+ children: [/*#__PURE__*/jsxRuntime.jsx(Node$2, _objectSpread$b(_objectSpread$b({}, _objectSpread$b(_objectSpread$b({}, rest), {}, {
462
463
  depth: depth,
463
464
  folder: folder,
464
465
  folderLabel: folderLabel,
@@ -688,7 +689,7 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
688
689
  });
689
690
  };
690
691
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
691
- children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$9(_objectSpread$9(_objectSpread$9({}, rest), {}, {
692
+ children: [/*#__PURE__*/jsxRuntime.jsx(Node$2, _objectSpread$9(_objectSpread$9(_objectSpread$9({}, rest), {}, {
692
693
  className: classNames({
693
694
  "neeto-ui-rounded-lg hover:neeto-ui-bg-gray-100 w-full min-w-0 cursor-move transition-colors": true,
694
695
  "neeto-ui-bg-gray-100 opacity-50": isDragging,
@@ -839,7 +840,7 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
839
840
  })]
840
841
  }), /*#__PURE__*/reactDom.createPortal(/*#__PURE__*/jsxRuntime.jsx(core.DragOverlay, {
841
842
  zIndex: 99999,
842
- children: dragItem && /*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$8(_objectSpread$8({}, nodeProps), {}, {
843
+ children: dragItem && /*#__PURE__*/jsxRuntime.jsx(Node$2, _objectSpread$8(_objectSpread$8({}, nodeProps), {}, {
843
844
  className: "neeto-ui-bg-gray-200",
844
845
  depth: 0,
845
846
  folder: dragItem,
@@ -994,7 +995,7 @@ var _DraggableNode = function DraggableNode(_ref) {
994
995
  }, "".concat(folder.id, "--container"));
995
996
  };
996
997
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
997
- children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$7(_objectSpread$7({
998
+ children: [/*#__PURE__*/jsxRuntime.jsx(Node$2, _objectSpread$7(_objectSpread$7({
998
999
  depth: folder.meta.depth
999
1000
  }, _objectSpread$7(_objectSpread$7(_objectSpread$7(_objectSpread$7({}, rest), {}, {
1000
1001
  folder: folder
@@ -1182,7 +1183,7 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
1182
1183
  })]
1183
1184
  }), /*#__PURE__*/reactDom.createPortal(/*#__PURE__*/jsxRuntime.jsx(core.DragOverlay, {
1184
1185
  zIndex: 99999,
1185
- children: dragState && /*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$6(_objectSpread$6({}, nodeProps), {}, {
1186
+ children: dragState && /*#__PURE__*/jsxRuntime.jsx(Node$2, _objectSpread$6(_objectSpread$6({}, nodeProps), {}, {
1186
1187
  className: "neeto-ui-bg-gray-200 pl-4 pr-12",
1187
1188
  depth: 0,
1188
1189
  folder: dragState.activeItem,
@@ -1386,14 +1387,27 @@ var MoveToFolderPane = function MoveToFolderPane(_ref) {
1386
1387
  });
1387
1388
  };
1388
1389
 
1389
- var FolderNode = function FolderNode(_ref) {
1390
+ var Node = function Node(_ref) {
1390
1391
  var _isActive = _ref.isActive,
1391
- folder = _ref.folder,
1392
- link = _ref.link;
1392
+ node = _ref.node,
1393
+ link = _ref.link,
1394
+ config = _ref.config;
1393
1395
  var _useTranslation = useTranslation(),
1394
1396
  t = _useTranslation.t;
1395
- var isPrivate = folder.isPrivate,
1396
- name = folder.name;
1397
+ var isPrivate = node.isPrivate,
1398
+ name = node.name,
1399
+ _node$isFolder = node.isFolder,
1400
+ isFolder = _node$isFolder === void 0 ? true : _node$isFolder;
1401
+ var _ref2 = isFolder ? config.folderActions : config.itemActions,
1402
+ _ref2$getMoreActions = _ref2.getMoreActions,
1403
+ getMoreActions = _ref2$getMoreActions === void 0 ? neetoCist.noop : _ref2$getMoreActions,
1404
+ _ref2$getAddActions = _ref2.getAddActions,
1405
+ getAddActions = _ref2$getAddActions === void 0 ? neetoCist.noop : _ref2$getAddActions;
1406
+ var moreActions = getMoreActions(node) || [];
1407
+ var addActions = getAddActions(node) || [];
1408
+ var hasMoreActions = neetoCist.isNotEmpty(moreActions);
1409
+ var hasAddActions = neetoCist.isNotEmpty(addActions);
1410
+ var hasAnyActions = hasMoreActions || hasAddActions;
1397
1411
  return /*#__PURE__*/jsxRuntime.jsx(reactRouterDom.NavLink, {
1398
1412
  activeClassName: "active",
1399
1413
  className: "neeto-sidebar-folders-tree__folder-node",
@@ -1402,20 +1416,48 @@ var FolderNode = function FolderNode(_ref) {
1402
1416
  },
1403
1417
  to: link,
1404
1418
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
1405
- className: "flex items-center",
1406
- "data-cy": "".concat(neetoCist.hyphenate(name), "-folder-sublink"),
1407
- children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
1408
- className: "line-clamp-1 block truncate",
1409
- component: "span",
1410
- style: "body2",
1411
- title: name,
1412
- children: name
1413
- }), isPrivate && /*#__PURE__*/jsxRuntime.jsx("span", {
1414
- title: t("common.private"),
1415
- children: /*#__PURE__*/jsxRuntime.jsx(Lock, {
1416
- className: "flex-shrink-0",
1417
- size: 20
1418
- })
1419
+ className: "flex items-center justify-between w-full group",
1420
+ "data-cy": "".concat(neetoCist.hyphenate(name), "-").concat(isFolder ? "folder" : "item", "-sublink"),
1421
+ title: "",
1422
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
1423
+ className: "flex items-center min-w-0 flex-1",
1424
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
1425
+ className: "line-clamp-1 block truncate",
1426
+ component: "span",
1427
+ style: "body2",
1428
+ title: name,
1429
+ children: name
1430
+ }), isPrivate && /*#__PURE__*/jsxRuntime.jsx("span", {
1431
+ title: t("common.private"),
1432
+ children: /*#__PURE__*/jsxRuntime.jsx(Lock, {
1433
+ className: "flex-shrink-0 ml-1",
1434
+ size: 16
1435
+ })
1436
+ })]
1437
+ }), hasAnyActions && /*#__PURE__*/jsxRuntime.jsxs("div", {
1438
+ className: "flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",
1439
+ onClick: function onClick(e) {
1440
+ e.preventDefault();
1441
+ e.stopPropagation();
1442
+ },
1443
+ children: [hasAddActions && /*#__PURE__*/jsxRuntime.jsx(MoreDropdown, {
1444
+ dropdownProps: {
1445
+ icon: Plus
1446
+ },
1447
+ menuItems: addActions,
1448
+ dropdownButtonProps: {
1449
+ size: "small",
1450
+ tooltipProps: {
1451
+ content: "Add",
1452
+ position: "top"
1453
+ }
1454
+ }
1455
+ }), hasMoreActions && /*#__PURE__*/jsxRuntime.jsx(MoreDropdown, {
1456
+ dropdownButtonProps: {
1457
+ size: "small"
1458
+ },
1459
+ menuItems: moreActions
1460
+ })]
1419
1461
  })]
1420
1462
  })
1421
1463
  });
@@ -1541,8 +1583,9 @@ var FoldersTree = function FoldersTree(_ref) {
1541
1583
  },
1542
1584
  selectedKeys: [activeFolderSid],
1543
1585
  titleRender: function titleRender(node) {
1544
- return /*#__PURE__*/jsxRuntime.jsx(FolderNode, {
1545
- folder: node,
1586
+ return /*#__PURE__*/jsxRuntime.jsx(Node, {
1587
+ config: config,
1588
+ node: node,
1546
1589
  isActive: node.sid === activeFolderSid,
1547
1590
  link: node.link || utils$1.buildUrl(config.folderPath, _objectSpread$1(_objectSpread$1({}, params), {}, {
1548
1591
  folderId: node.sid