@bigbinary/neeto-folders-frontend 2.0.4 → 2.0.6

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
@@ -222,7 +222,7 @@ import * as components from "@bigbinary/neeto-folders-frontend/components";
222
222
  />;
223
223
  ```
224
224
 
225
- 4. `MoveToFoldersPane`: This component can be used in host applications to move
225
+ 4. `MoveToFolderPane`: This component can be used in host applications to move
226
226
  items to a folder. Component renders current list of folders in pane with
227
227
  radio buttons and invokes callbacks for folder selections.
228
228
 
@@ -255,9 +255,9 @@ import * as components from "@bigbinary/neeto-folders-frontend/components";
255
255
  Sample usage:
256
256
 
257
257
  ```jsx
258
- import { MoveToFoldersPane } from "@bigbinary/neeto-folders-frontend/components";
258
+ import { MoveToFolderPane } from "@bigbinary/neeto-folders-frontend/components";
259
259
  // ....
260
- <MoveToFoldersPane
260
+ <MoveToFolderPane
261
261
  item={itemToMove}
262
262
  onSelect={onSelectFolder}
263
263
  selection={folderSelection}
@@ -10,9 +10,9 @@
10
10
  "folders": "Folders",
11
11
  "item": "Item",
12
12
  "items": "Items",
13
- "private": "Private"
13
+ "private": "Private",
14
+ "moveToFolder": "Move to folder"
14
15
  },
15
-
16
16
  "createFolder": {
17
17
  "parentInfo": "Leave the option empty to create {{ folder }} at the root level",
18
18
  "parentTitle": "Parent {{ folder }}"
@@ -26,7 +26,6 @@
26
26
  "add": "Add new {{ folder }}",
27
27
  "edit": "Edit {{ folder }}",
28
28
  "name": "{{ folder }} name",
29
- "subfolderCount": "{{count}} sub {{ folders }}",
30
29
  "noFolders": "No {{ folder }} to show"
31
30
  },
32
31
  "moveToFolder": {
@@ -38,7 +37,6 @@
38
37
  "reorderFolder": {
39
38
  "title": "Reorder {{ folders }}"
40
39
  },
41
-
42
40
  "errors": {
43
41
  "blank": "{{entity}} cannot be blank"
44
42
  }
@@ -18,10 +18,10 @@ var Pane = require('@bigbinary/neetoui/Pane');
18
18
  var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
19
19
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
20
20
  var React = require('react');
21
- var formik = require('formik');
22
21
  var Typography = require('@bigbinary/neetoui/Typography');
23
22
  var Input = require('@bigbinary/neetoui/formik/Input');
24
23
  var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
24
+ var Form = require('@bigbinary/neetoui/formik/Form');
25
25
  var i18next = require('i18next');
26
26
  var yup = require('yup');
27
27
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
@@ -30,9 +30,11 @@ var Textarea = require('@bigbinary/neetoui/formik/Textarea');
30
30
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
31
31
  var antd = require('antd');
32
32
  var classNames = require('classnames');
33
+ var formik = require('formik');
33
34
  var Down = require('@bigbinary/neeto-icons/Down');
34
35
  var Label = require('@bigbinary/neetoui/Label');
35
36
  var ramda = require('ramda');
37
+ var useHotkeys = require('@bigbinary/neeto-hotkeys');
36
38
  var Button = require('@bigbinary/neetoui/Button');
37
39
  var neetoCist = require('@bigbinary/neeto-cist');
38
40
  var Radio = require('@bigbinary/neetoui/Radio');
@@ -102,6 +104,7 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
102
104
  };
103
105
  var onConfirmDelete = function onConfirmDelete() {
104
106
  var onSuccess = function onSuccess() {
107
+ var _config$onUpdateSucce;
105
108
  var isActive = internal.isActiveFolder(config, item.sid);
106
109
  // Invalidates items and folder details. Refetch only if not active folder.
107
110
  var invalidationKeys = [].concat(_toConsumableArray(config.invalidationKeys), [[constants.QUERY_KEYS.FOLDERS, config.type, constants.QUERY_KEYS.DETAILS]]);
@@ -119,6 +122,7 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
119
122
  })) : "/";
120
123
  history.replace(redirectUrl);
121
124
  }
125
+ (_config$onUpdateSucce = config.onUpdateSuccess) === null || _config$onUpdateSucce === void 0 || _config$onUpdateSucce.call(config);
122
126
  };
123
127
  destroyFolder(item.id, {
124
128
  onSuccess: onSuccess,
@@ -250,7 +254,7 @@ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
250
254
  suffixIcon: /*#__PURE__*/jsxRuntime.jsx(Down, {}),
251
255
  treeNodeFilterProp: (_fieldNames$label = fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.label) !== null && _fieldNames$label !== void 0 ? _fieldNames$label : "title",
252
256
  value: field.value || undefined,
253
- className: classNames("neeto-ui-tree-select__wrapper", className, {
257
+ className: classNames("neeto-ui-tree-select__wrapper nf-tree-select", className, {
254
258
  "neeto-ui-tree-select__error": meta.error
255
259
  }),
256
260
  switcherIcon: function switcherIcon(props) {
@@ -405,54 +409,55 @@ var AddEditPane = function AddEditPane(_ref) {
405
409
  style: "h2",
406
410
  children: isEditing ? t("folders.edit") : t("folders.add")
407
411
  })
408
- }), /*#__PURE__*/jsxRuntime.jsx(formik.Formik, {
409
- initialValues: initialValues,
410
- enableReinitialize: true,
411
- validationSchema: FORM_VALIDATION_SCHEMA,
412
- onSubmit: onSubmitForm,
413
- children: function children() {
414
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
415
- children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
416
- className: "pb-6",
417
- children: /*#__PURE__*/jsxRuntime.jsxs(formik.Form, {
418
- className: "w-full space-y-5",
419
- children: [/*#__PURE__*/jsxRuntime.jsx(Input, {
420
- required: true,
421
- label: t("folders.name"),
422
- name: "name",
423
- ref: setFocusField
424
- }), /*#__PURE__*/jsxRuntime.jsx(ExtraAttributes, {
425
- attributes: extraAttributes
426
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
427
- children: [/*#__PURE__*/jsxRuntime.jsx(TreeSelect, {
428
- allowClear: true,
429
- showSearch: true,
430
- label: t("createFolder.parentTitle"),
431
- name: "parentId",
432
- treeData: folderOptions
433
- }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
434
- className: "mt-1",
435
- style: "body3",
436
- children: t("createFolder.parentInfo")
437
- })]
412
+ }), /*#__PURE__*/jsxRuntime.jsx(Form, {
413
+ className: "flex flex-grow flex-col",
414
+ formikProps: {
415
+ initialValues: initialValues,
416
+ enableReinitialize: true,
417
+ validationSchema: FORM_VALIDATION_SCHEMA,
418
+ onSubmit: onSubmitForm
419
+ },
420
+ children: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
421
+ children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
422
+ className: "pb-6",
423
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
424
+ className: "w-full space-y-5",
425
+ children: [/*#__PURE__*/jsxRuntime.jsx(Input, {
426
+ required: true,
427
+ label: t("folders.name"),
428
+ name: "name",
429
+ ref: setFocusField
430
+ }), /*#__PURE__*/jsxRuntime.jsx(ExtraAttributes, {
431
+ attributes: extraAttributes
432
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
433
+ children: [/*#__PURE__*/jsxRuntime.jsx(TreeSelect, {
434
+ allowClear: true,
435
+ showSearch: true,
436
+ label: t("createFolder.parentTitle"),
437
+ name: "parentId",
438
+ treeData: folderOptions
439
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
440
+ className: "mt-1",
441
+ style: "body3",
442
+ children: t("createFolder.parentInfo")
438
443
  })]
439
- })
440
- }), /*#__PURE__*/jsxRuntime.jsx(Pane.Footer, {
441
- children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock, {
442
- cancelButtonProps: {
443
- onClick: onClose
444
- }
445
- })
446
- })]
447
- });
448
- }
444
+ })]
445
+ })
446
+ }), /*#__PURE__*/jsxRuntime.jsx(Pane.Footer, {
447
+ children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock, {
448
+ cancelButtonProps: {
449
+ onClick: onClose
450
+ }
451
+ })
452
+ })]
453
+ })
449
454
  })]
450
455
  });
451
456
  };
452
457
 
453
458
  var REORDER_TREE_INDENT_WIDTH = 30;
454
459
 
455
- var _excluded$4 = ["icon", "itemLabel", "folder", "depth", "className", "onClick"];
460
+ var _excluded$4 = ["icon", "itemLabel", "folder", "folderLabel", "depth", "className", "onClick"];
456
461
  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; }
457
462
  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; }
458
463
  var Node = function Node(_ref, ref) {
@@ -461,18 +466,15 @@ var Node = function Node(_ref, ref) {
461
466
  icon = _ref$icon === void 0 ? null : _ref$icon,
462
467
  itemLabel = _ref.itemLabel,
463
468
  folder = _ref.folder,
469
+ folderLabel = _ref.folderLabel,
464
470
  depth = _ref.depth,
465
471
  className = _ref.className,
466
472
  onClick = _ref.onClick,
467
473
  rest = _objectWithoutProperties(_ref, _excluded$4);
468
- var _useTranslation = reactI18next.useTranslation(),
469
- t = _useTranslation.t;
470
474
  var metaInfo = [];
471
475
  var childCount = (_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;
472
- childCount > 0 && metaInfo.push(t("folders.subfolderCount", {
473
- count: childCount
474
- }));
475
- folder.itemCount > 0 && metaInfo.push("".concat(folder.itemCount, " ").concat(itemLabel));
476
+ childCount > 0 && metaInfo.push("".concat(childCount, " ").concat(folderLabel).toLowerCase());
477
+ folder.itemCount > 0 && metaInfo.push("".concat(folder.itemCount, " ").concat(itemLabel).toLowerCase());
476
478
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
477
479
  className: "flex w-full min-w-0",
478
480
  children: [Array.from({
@@ -514,6 +516,7 @@ var _excluded$3 = ["folder", "item", "depth", "maxDepth", "disabled", "config"];
514
516
  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; }
515
517
  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; }
516
518
  var _SelectableNode = function SelectableNode(_ref) {
519
+ var _folder$children$leng, _folder$children;
517
520
  var folder = _ref.folder,
518
521
  item = _ref.item,
519
522
  _ref$depth = _ref.depth,
@@ -527,6 +530,8 @@ var _SelectableNode = function SelectableNode(_ref) {
527
530
  var _useTranslation = useTranslation(config),
528
531
  t = _useTranslation.t;
529
532
  var isDisabled = disabled || (item === null || item === void 0 ? void 0 : item.id) === folder.id || depth > maxDepth;
533
+ var itemLabel = config.labels[folder.itemCount > 1 ? "items" : "item"];
534
+ 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"];
530
535
  var renderChildren = function renderChildren() {
531
536
  if (neetoCist.isNotPresent(folder.children)) return null;
532
537
  return folder.children.map(function (child) {
@@ -550,7 +555,9 @@ var _SelectableNode = function SelectableNode(_ref) {
550
555
  title: isDisabled ? t("moveToFolder.notAllowed") : undefined,
551
556
  children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$9(_objectSpread$9({}, _objectSpread$9(_objectSpread$9({}, rest), {}, {
552
557
  depth: depth,
553
- folder: folder
558
+ folder: folder,
559
+ folderLabel: folderLabel,
560
+ itemLabel: itemLabel
554
561
  })), {}, {
555
562
  icon: /*#__PURE__*/jsxRuntime.jsx(Radio.Item, {
556
563
  readOnly: true,
@@ -591,6 +598,13 @@ var PaneBody = function PaneBody(_ref) {
591
598
  folders = _useFetchFolders$data === void 0 ? [] : _useFetchFolders$data;
592
599
  var _useTranslation = useTranslation(config),
593
600
  t = _useTranslation.t;
601
+ var _useFolderStore2 = useFolderActions.useFolderStore(function (store) {
602
+ var _store$paneState;
603
+ return {
604
+ type: (_store$paneState = store["paneState"]) === null || _store$paneState === void 0 ? void 0 : _store$paneState["type"]
605
+ };
606
+ }, shallow.shallow),
607
+ type = _useFolderStore2.type;
594
608
  var tree = React.useMemo(function () {
595
609
  return [{
596
610
  name: "/",
@@ -614,6 +628,12 @@ var PaneBody = function PaneBody(_ref) {
614
628
  }
615
629
  });
616
630
  };
631
+ useHotkeys(["command+enter", "enter"], function () {
632
+ return onSubmit(selection);
633
+ }, {
634
+ mode: "global",
635
+ enabled: !!type
636
+ });
617
637
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
618
638
  children: [/*#__PURE__*/jsxRuntime.jsxs(Pane.Header, {
619
639
  className: "flex items-center justify-between",
@@ -636,7 +656,6 @@ var PaneBody = function PaneBody(_ref) {
636
656
  maxDepth: maxDepth,
637
657
  selection: selection,
638
658
  disabled: (item === null || item === void 0 ? void 0 : item.id) === folder.id || maxDepth <= 0,
639
- itemLabel: config.labels.item,
640
659
  key: folder.id,
641
660
  onSelect: function onSelect(folder) {
642
661
  return setSelection(folder.id);
@@ -689,7 +708,11 @@ var MoveFolderPane = function MoveFolderPane(_ref) {
689
708
  id: item.id,
690
709
  payload: payload
691
710
  }, {
692
- onSuccess: onClose
711
+ onSuccess: function onSuccess() {
712
+ var _config$onUpdateSucce;
713
+ onClose();
714
+ (_config$onUpdateSucce = config.onUpdateSuccess) === null || _config$onUpdateSucce === void 0 || _config$onUpdateSucce.call(config);
715
+ }
693
716
  });
694
717
  };
695
718
  return /*#__PURE__*/jsxRuntime.jsx(PaneBody, {
@@ -700,13 +723,16 @@ var MoveFolderPane = function MoveFolderPane(_ref) {
700
723
  });
701
724
  };
702
725
 
703
- var _excluded$2 = ["folder", "depth"];
726
+ var _excluded$2 = ["folder", "depth", "config", "folderLabel", "itemLabel"];
704
727
  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; }
705
728
  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; }
706
729
  var _DraggableNode$1 = function DraggableNode(_ref) {
707
730
  var folder = _ref.folder,
708
731
  _ref$depth = _ref.depth,
709
732
  depth = _ref$depth === void 0 ? 0 : _ref$depth,
733
+ config = _ref.config,
734
+ folderLabel = _ref.folderLabel,
735
+ itemLabel = _ref.itemLabel,
710
736
  rest = _objectWithoutProperties(_ref, _excluded$2);
711
737
  var _useDraggable = core.useDraggable({
712
738
  id: "draggable-item--".concat(folder.id),
@@ -727,10 +753,15 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
727
753
  var renderChildren = function renderChildren() {
728
754
  if (neetoCist.isNotPresent(folder.children) || isDragging) return null;
729
755
  return folder.children.map(function (child) {
730
- return /*#__PURE__*/React.createElement(_DraggableNode$1, _objectSpread$7(_objectSpread$7({}, rest), {}, {
756
+ var _child$children$lengt, _child$children;
757
+ return /*#__PURE__*/React.createElement(_DraggableNode$1, _objectSpread$7(_objectSpread$7({}, _objectSpread$7(_objectSpread$7({}, rest), {}, {
758
+ config: config
759
+ })), {}, {
731
760
  depth: depth + 1,
732
761
  folder: child,
733
- key: child.id
762
+ itemLabel: config.labels[(child === null || child === void 0 ? void 0 : child.itemCount) > 1 ? "items" : "item"],
763
+ key: child.id,
764
+ 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"]
734
765
  }));
735
766
  });
736
767
  };
@@ -742,10 +773,13 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
742
773
  "neeto-ui-border-primary-500 border": isOver,
743
774
  "border border-transparent": !isOver
744
775
  })
745
- }, _objectSpread$7(_objectSpread$7({
776
+ }, _objectSpread$7(_objectSpread$7(_objectSpread$7({
746
777
  depth: depth,
747
778
  folder: folder
748
- }, attributes), listeners)), {}, {
779
+ }, attributes), listeners), {}, {
780
+ folderLabel: folderLabel,
781
+ itemLabel: itemLabel
782
+ })), {}, {
749
783
  ref: function ref(_ref2) {
750
784
  setDroppableRef(_ref2);
751
785
  setDraggableRef(_ref2);
@@ -757,6 +791,7 @@ var _DraggableNode$1 = function DraggableNode(_ref) {
757
791
  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; }
758
792
  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; }
759
793
  var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
794
+ var _tree$children$length, _tree$children, _dragItem$children$le, _dragItem$children;
760
795
  var config = _ref.config,
761
796
  onClose = _ref.onClose;
762
797
  var _useState = React.useState(null),
@@ -773,6 +808,13 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
773
808
  folders = _useFetchFolders.data;
774
809
  var _useReorderFolders = useFolderActions.useReorderFolders(config),
775
810
  reorderFolders = _useReorderFolders.mutate;
811
+ var _useFolderStore = useFolderActions.useFolderStore(function (store) {
812
+ var _store$paneState;
813
+ return {
814
+ type: (_store$paneState = store["paneState"]) === null || _store$paneState === void 0 ? void 0 : _store$paneState["type"]
815
+ };
816
+ }, shallow.shallow),
817
+ type = _useFolderStore.type;
776
818
  var _useStateWithDependen = reactUtils.useStateWithDependency(function () {
777
819
  return {
778
820
  name: "/",
@@ -816,14 +858,21 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
816
858
  changes: changes
817
859
  };
818
860
  reorderFolders(payload, {
819
- onSuccess: onClose
861
+ onSuccess: function onSuccess() {
862
+ var _config$onUpdateSucce;
863
+ onClose();
864
+ (_config$onUpdateSucce = config.onUpdateSuccess) === null || _config$onUpdateSucce === void 0 || _config$onUpdateSucce.call(config);
865
+ }
820
866
  });
821
867
  };
868
+ useHotkeys(["command+enter", "enter"], onSubmit, {
869
+ mode: "global",
870
+ enabled: !!type
871
+ });
822
872
  var nodeProps = {
823
873
  icon: /*#__PURE__*/jsxRuntime.jsx(Reorder, {
824
874
  className: "neeto-ui-text-gray-500 relative -left-[0.3125rem] flex-shrink-0"
825
- }),
826
- itemLabel: config.labels.item
875
+ })
827
876
  };
828
877
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
829
878
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Header, {
@@ -839,9 +888,13 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
839
888
  },
840
889
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
841
890
  className: "pb-6",
842
- children: /*#__PURE__*/React.createElement(_DraggableNode$1, _objectSpread$6(_objectSpread$6({}, nodeProps), {}, {
891
+ children: /*#__PURE__*/React.createElement(_DraggableNode$1, _objectSpread$6(_objectSpread$6({}, _objectSpread$6(_objectSpread$6({}, nodeProps), {}, {
892
+ config: config
893
+ })), {}, {
843
894
  folder: tree,
844
- key: tree.id
895
+ itemLabel: config.labels[(tree === null || tree === void 0 ? void 0 : tree.itemCount) > 1 ? "items" : "item"],
896
+ key: tree.id,
897
+ folderLabel: config.labels[((_tree$children$length = tree === null || tree === void 0 || (_tree$children = tree.children) === null || _tree$children === void 0 ? void 0 : _tree$children.length) !== null && _tree$children$length !== void 0 ? _tree$children$length : 0) > 1 ? "folders" : "folder"]
845
898
  }))
846
899
  }), /*#__PURE__*/jsxRuntime.jsxs(Pane.Footer, {
847
900
  className: "gap-2",
@@ -860,7 +913,9 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
860
913
  children: dragItem && /*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$6(_objectSpread$6({}, nodeProps), {}, {
861
914
  className: "neeto-ui-bg-gray-200",
862
915
  depth: 0,
863
- folder: dragItem
916
+ folder: dragItem,
917
+ folderLabel: config.labels[((_dragItem$children$le = dragItem === null || dragItem === void 0 || (_dragItem$children = dragItem.children) === null || _dragItem$children === void 0 ? void 0 : _dragItem$children.length) !== null && _dragItem$children$le !== void 0 ? _dragItem$children$le : 0) > 1 ? "folders" : "folder"],
918
+ itemLabel: config.labels[(dragItem === null || dragItem === void 0 ? void 0 : dragItem.itemCount) > 1 ? "items" : "item"]
864
919
  }))
865
920
  }), document.body)]
866
921
  })]
@@ -958,13 +1013,16 @@ var PlaceholderNode = function PlaceholderNode(_ref) {
958
1013
  });
959
1014
  };
960
1015
 
961
- var _excluded$1 = ["folder", "dragState"];
1016
+ var _excluded$1 = ["folder", "config", "dragState", "folderLabel", "itemLabel"];
962
1017
  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; }
963
1018
  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; }
964
1019
  var _DraggableNode = function DraggableNode(_ref) {
965
1020
  var _overItem$meta$parent;
966
1021
  var folder = _ref.folder,
1022
+ config = _ref.config,
967
1023
  dragState = _ref.dragState,
1024
+ folderLabel = _ref.folderLabel,
1025
+ itemLabel = _ref.itemLabel,
968
1026
  rest = _objectWithoutProperties(_ref, _excluded$1);
969
1027
  var overItem = dragState.overItem;
970
1028
  var isOverItem = folder.id === (overItem === null || overItem === void 0 ? void 0 : overItem.id);
@@ -992,12 +1050,16 @@ var _DraggableNode = function DraggableNode(_ref) {
992
1050
  dragState: dragState,
993
1051
  folder: folder
994
1052
  }), internal.isArray(folder.children) && folder.children.map(function (child) {
1053
+ var _child$children$lengt, _child$children;
995
1054
  return /*#__PURE__*/React.createElement(_DraggableNode, _objectSpread$5(_objectSpread$5({}, _objectSpread$5(_objectSpread$5({}, rest), {}, {
1055
+ config: config,
996
1056
  dragState: dragState
997
1057
  })), {}, {
998
1058
  depth: child.meta.depth,
999
1059
  folder: child,
1000
- key: child.id
1060
+ itemLabel: config.labels[(child === null || child === void 0 ? void 0 : child.itemCount) > 1 ? "items" : "item"],
1061
+ key: child.id,
1062
+ 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"]
1001
1063
  }));
1002
1064
  })]
1003
1065
  }, "".concat(folder.id, "--container"));
@@ -1005,9 +1067,12 @@ var _DraggableNode = function DraggableNode(_ref) {
1005
1067
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1006
1068
  children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$5(_objectSpread$5({
1007
1069
  depth: folder.meta.depth
1008
- }, _objectSpread$5(_objectSpread$5(_objectSpread$5({}, rest), {}, {
1070
+ }, _objectSpread$5(_objectSpread$5(_objectSpread$5(_objectSpread$5({}, rest), {}, {
1009
1071
  folder: folder
1010
- }, attributes), listeners)), {}, {
1072
+ }, attributes), listeners), {}, {
1073
+ folderLabel: folderLabel,
1074
+ itemLabel: itemLabel
1075
+ })), {}, {
1011
1076
  className: classNames({
1012
1077
  "hover:neeto-ui-bg-gray-100 w-full cursor-move transition-colors": true,
1013
1078
  "neeto-ui-bg-gray-100 opacity-50": isDragging,
@@ -1041,6 +1106,7 @@ var measuringConfig = {
1041
1106
 
1042
1107
  // Reorder with support for position adjustment
1043
1108
  var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
1109
+ var _tree$children$length, _tree$children, _dragState$activeItem, _dragState$activeItem2, _dragState$activeItem3;
1044
1110
  var config = _ref.config,
1045
1111
  onClose = _ref.onClose;
1046
1112
  var _useState = React.useState(initialDragState),
@@ -1058,6 +1124,13 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
1058
1124
  var _useReorderFolders = useFolderActions.useReorderFolders(config),
1059
1125
  reorderFolders = _useReorderFolders.mutate;
1060
1126
  var sensors = core.useSensors(core.useSensor(core.PointerSensor, sensorConfig));
1127
+ var _useFolderStore = useFolderActions.useFolderStore(function (store) {
1128
+ var _store$paneState;
1129
+ return {
1130
+ type: (_store$paneState = store["paneState"]) === null || _store$paneState === void 0 ? void 0 : _store$paneState["type"]
1131
+ };
1132
+ }, shallow.shallow),
1133
+ type = _useFolderStore.type;
1061
1134
  var _useStateWithDependen = reactUtils.useStateWithDependency(function () {
1062
1135
  return {
1063
1136
  name: "/",
@@ -1113,14 +1186,21 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
1113
1186
  changes: changes
1114
1187
  };
1115
1188
  reorderFolders(payload, {
1116
- onSuccess: onClose
1189
+ onSuccess: function onSuccess() {
1190
+ var _config$onUpdateSucce;
1191
+ onClose();
1192
+ (_config$onUpdateSucce = config.onUpdateSuccess) === null || _config$onUpdateSucce === void 0 || _config$onUpdateSucce.call(config);
1193
+ }
1117
1194
  });
1118
1195
  };
1196
+ useHotkeys(["command+enter", "enter"], onSubmit, {
1197
+ mode: "global",
1198
+ enabled: !!type
1199
+ });
1119
1200
  var nodeProps = {
1120
1201
  icon: /*#__PURE__*/jsxRuntime.jsx(Reorder, {
1121
1202
  className: "neeto-ui-text-gray-500 relative -left-[0.3125rem] flex-shrink-0"
1122
- }),
1123
- itemLabel: config.labels.item
1203
+ })
1124
1204
  };
1125
1205
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1126
1206
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Header, {
@@ -1144,10 +1224,13 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
1144
1224
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
1145
1225
  className: "pb-6",
1146
1226
  children: /*#__PURE__*/React.createElement(_DraggableNode, _objectSpread$4(_objectSpread$4({}, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
1227
+ config: config,
1147
1228
  dragState: dragState
1148
1229
  })), {}, {
1149
1230
  folder: tree,
1150
- key: tree.id
1231
+ itemLabel: config.labels[(tree === null || tree === void 0 ? void 0 : tree.itemCount) > 1 ? "items" : "item"],
1232
+ key: tree.id,
1233
+ folderLabel: config.labels[((_tree$children$length = tree === null || tree === void 0 || (_tree$children = tree.children) === null || _tree$children === void 0 ? void 0 : _tree$children.length) !== null && _tree$children$length !== void 0 ? _tree$children$length : 0) > 1 ? "folders" : "folder"]
1151
1234
  }))
1152
1235
  }), /*#__PURE__*/jsxRuntime.jsxs(Pane.Footer, {
1153
1236
  className: "gap-2",
@@ -1166,7 +1249,9 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
1166
1249
  children: dragState && /*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
1167
1250
  className: "neeto-ui-bg-gray-200 pl-4 pr-12",
1168
1251
  depth: 0,
1169
- folder: dragState.activeItem
1252
+ folder: dragState.activeItem,
1253
+ folderLabel: config.labels[((_dragState$activeItem = (_dragState$activeItem2 = dragState.activeItem) === null || _dragState$activeItem2 === void 0 || (_dragState$activeItem2 = _dragState$activeItem2.children) === null || _dragState$activeItem2 === void 0 ? void 0 : _dragState$activeItem2.length) !== null && _dragState$activeItem !== void 0 ? _dragState$activeItem : 0) > 1 ? "folders" : "folder"],
1254
+ itemLabel: config.labels[((_dragState$activeItem3 = dragState.activeItem) === null || _dragState$activeItem3 === void 0 ? void 0 : _dragState$activeItem3.itemCount) > 1 ? "items" : "item"]
1170
1255
  }))
1171
1256
  }), document.body)]
1172
1257
  })]
@@ -1228,10 +1313,9 @@ var FoldersContext = function FoldersContext(_ref) {
1228
1313
  };
1229
1314
 
1230
1315
  var FolderTile = function FolderTile(_ref) {
1231
- var _folder$children$leng, _folder$children;
1316
+ var _folder$children$leng, _folder$children, _folder$children$leng2, _folder$children2;
1232
1317
  var isSelected = _ref.isSelected,
1233
1318
  link = _ref.link,
1234
- itemLabel = _ref.itemLabel,
1235
1319
  folder = _ref.folder,
1236
1320
  actions = _ref.actions,
1237
1321
  config = _ref.config,
@@ -1250,7 +1334,7 @@ var FolderTile = function FolderTile(_ref) {
1250
1334
  onClick: actionCallback(actions.onEdit)
1251
1335
  }, {
1252
1336
  key: "move",
1253
- label: t("common.move"),
1337
+ label: t("common.moveToFolder"),
1254
1338
  onClick: actionCallback(actions.onMove)
1255
1339
  }, {
1256
1340
  key: "delete",
@@ -1259,10 +1343,10 @@ var FolderTile = function FolderTile(_ref) {
1259
1343
  }];
1260
1344
  var metaInfo = [];
1261
1345
  var childCount = (_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;
1262
- childCount > 0 && metaInfo.push(t("folders.subfolderCount", {
1263
- count: childCount
1264
- }));
1265
- metaInfo.push("".concat(folder.itemCount || 0, " ").concat(itemLabel));
1346
+ var itemLabel = config.labels[folder.itemCount > 1 ? "items" : "item"];
1347
+ var folderLabel = config.labels[((_folder$children$leng2 = (_folder$children2 = folder.children) === null || _folder$children2 === void 0 ? void 0 : _folder$children2.length) !== null && _folder$children$leng2 !== void 0 ? _folder$children$leng2 : 0) > 1 ? "folders" : "folder"];
1348
+ childCount > 0 && metaInfo.push("".concat(childCount, " ").concat(folderLabel).toLowerCase());
1349
+ metaInfo.push("".concat(folder.itemCount || 0, " ").concat(itemLabel).toLowerCase());
1266
1350
  return /*#__PURE__*/jsxRuntime.jsxs(reactRouterDom.Link, {
1267
1351
  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",
1268
1352
  to: link,
@@ -1337,7 +1421,6 @@ var FoldersList = function FoldersList(_ref) {
1337
1421
  folder: folder,
1338
1422
  onSelect: onSelect,
1339
1423
  isSelected: selection.includes(folder.id),
1340
- itemLabel: config.labels.item,
1341
1424
  key: folder.id,
1342
1425
  link: utils$1.buildUrl(config.folderPath, _objectSpread$2(_objectSpread$2({}, params), {}, {
1343
1426
  folderId: folder.sid
@@ -1468,7 +1551,7 @@ var FoldersTree = function FoldersTree(_ref) {
1468
1551
 
1469
1552
  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}}
1470
1553
 
1471
- 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== */";
1554
+ 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))}.nf-tree-select .ant-select-clear{height:16px;margin-top:-8px;width:16px}.nf-tree-select .ant-select-clear svg{height:16px;width:16px}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9jb21wb25lbnRzL25lZXRvLWZvbGRlcnMtbmFuby5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUNFLHVCQUNGLENBRUEsb0VBRUUsV0FBQSxDQURBLDRCQUVGLENBRUEsMkZBR0UsMkNBQUEsQ0FEQSwrQ0FBQSxDQUVBLGVBQUYsQ0FHQSxnRkFHRSxpQkFGRixDQUtBLGlDQUNFLHlEQUZGLENBTUUsa0NBRUUsV0FBQSxDQUNBLGVBQUEsQ0FGQSxVQURKLENBS0ksc0NBRUUsV0FBQSxDQURBLFVBRk4iLCJzb3VyY2VzQ29udGVudCI6WyIubmVldG8tc2lkZWJhci1mb2xkZXJzLXRyZWVfX2ZvbGRlci1ub2RlIHtcbiAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbn1cblxuLm5lZXRvLXNpZGViYXItZm9sZGVycy10cmVlLmFudC10cmVlIC5hbnQtdHJlZS1ub2RlLWNvbnRlbnQtd3JhcHBlciB7XG4gIHBhZGRpbmctaW5saW5lOiA2cHggIWltcG9ydGFudDtcbiAgbWluLXdpZHRoOiAwO1xufVxuXG4ubmVldG8tc2lkZWJhci1mb2xkZXJzLXRyZWUuYW50LXRyZWVcbiAgLmFudC10cmVlLW5vZGUtY29udGVudC13cmFwcGVyLmFudC10cmVlLW5vZGUtc2VsZWN0ZWQge1xuICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWFjY2VudC04MDApKSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktd2hpdGUpKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLm5lZXRvLXNpZGViYXItZm9sZGVycy10cmVlLmFudC10cmVlXG4gIC5hbnQtdHJlZS1zd2l0Y2hlclxuICAuYW50LXRyZWUtc3dpdGNoZXItaWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm5lZXRvLWZvbGRlcnMtZ3JpZC12aWV3LXdyYXBwZXIge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyNTZweCwgMWZyKSk7XG59XG5cbi5uZi10cmVlLXNlbGVjdCB7XG4gIC5hbnQtc2VsZWN0LWNsZWFyIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgbWFyZ2luLXRvcDogLThweDtcblxuICAgIHN2ZyB7XG4gICAgICB3aWR0aDogMTZweDtcbiAgICAgIGhlaWdodDogMTZweDtcbiAgICB9XG4gIH1cbn1cbiJdfQ== */";
1472
1555
  n(css,{});
1473
1556
 
1474
1557
  exports.FoldersContext = FoldersContext;