@bigbinary/neeto-folders-frontend 2.0.0 → 2.0.2

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.
@@ -5,6 +5,7 @@
5
5
  "edit": "Edit",
6
6
  "move": "Move",
7
7
  "save": "Save",
8
+ "name": "Name",
8
9
  "folder": "Folder",
9
10
  "folders": "Folders",
10
11
  "item": "Item",
@@ -35,5 +36,9 @@
35
36
  },
36
37
  "reorderFolder": {
37
38
  "title": "Reorder {{ folders }}"
39
+ },
40
+
41
+ "errors": {
42
+ "blank": "{{entity}} cannot be blank"
38
43
  }
39
44
  }
@@ -22,6 +22,8 @@ var formik = require('formik');
22
22
  var Typography = require('@bigbinary/neetoui/Typography');
23
23
  var Input = require('@bigbinary/neetoui/formik/Input');
24
24
  var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
25
+ var i18next = require('i18next');
26
+ var yup = require('yup');
25
27
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
26
28
  var Switch = require('@bigbinary/neetoui/formik/Switch');
27
29
  var Textarea = require('@bigbinary/neetoui/formik/Textarea');
@@ -41,7 +43,6 @@ var reactDom = require('react-dom');
41
43
  var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
42
44
  var Checkbox = require('@bigbinary/neetoui/Checkbox');
43
45
  var Tree = require('@bigbinary/neetoui/Tree');
44
- require('i18next');
45
46
  require('zustand');
46
47
 
47
48
  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; }
@@ -134,6 +135,12 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
134
135
  return /*#__PURE__*/jsxRuntime.jsx(Alert, _objectSpread$d({}, alertProps));
135
136
  };
136
137
 
138
+ var FORM_VALIDATION_SCHEMA = yup.object().shape({
139
+ name: yup.string().required(i18next.t("errors.blank", {
140
+ entity: i18next.t("common.name")
141
+ }))
142
+ });
143
+
137
144
  var _excluded$6 = ["type"];
138
145
  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; }
139
146
  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; }
@@ -399,6 +406,7 @@ var AddEditPane = function AddEditPane(_ref) {
399
406
  }), /*#__PURE__*/jsxRuntime.jsx(formik.Formik, {
400
407
  initialValues: initialValues,
401
408
  enableReinitialize: true,
409
+ validationSchema: FORM_VALIDATION_SCHEMA,
402
410
  onSubmit: onSubmitForm,
403
411
  children: function children() {
404
412
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
@@ -407,6 +415,7 @@ var AddEditPane = function AddEditPane(_ref) {
407
415
  children: /*#__PURE__*/jsxRuntime.jsxs(formik.Form, {
408
416
  className: "w-full space-y-5",
409
417
  children: [/*#__PURE__*/jsxRuntime.jsx(Input, {
418
+ required: true,
410
419
  label: t("folders.name"),
411
420
  name: "name",
412
421
  ref: setFocusField
@@ -565,7 +574,7 @@ var PaneBody = function PaneBody(_ref) {
565
574
  onSubmit = _ref.onSubmit,
566
575
  onClose = _ref.onClose,
567
576
  onRemove = _ref.onRemove;
568
- var _useState = React.useState(null),
577
+ var _useState = React.useState(undefined),
569
578
  _useState2 = _slicedToArray(_useState, 2),
570
579
  selection = _useState2[0],
571
580
  setSelection = _useState2[1];
@@ -580,6 +589,13 @@ var PaneBody = function PaneBody(_ref) {
580
589
  folders = _useFetchFolders$data === void 0 ? [] : _useFetchFolders$data;
581
590
  var _useTranslation = useTranslation(config),
582
591
  t = _useTranslation.t;
592
+ var tree = React.useMemo(function () {
593
+ return [{
594
+ name: "/",
595
+ id: null,
596
+ children: folders
597
+ }];
598
+ }, [folders]);
583
599
  var folderDepth = 0;
584
600
  if (item) {
585
601
  // If item is a folder, measure the current depth from current folder to longest leaf.
@@ -587,7 +603,7 @@ var PaneBody = function PaneBody(_ref) {
587
603
  var folder = foldersMap[item.id];
588
604
  if (folder) folderDepth = utils.measureDepth(folder);
589
605
  }
590
- var maxDepth = config.maxDepth - folderDepth;
606
+ var maxDepth = config.maxDepth - folderDepth + 1;
591
607
  var onAddFolder = function onAddFolder() {
592
608
  setFolderState({
593
609
  paneState: {
@@ -610,7 +626,7 @@ var PaneBody = function PaneBody(_ref) {
610
626
  })]
611
627
  }), /*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
612
628
  className: "pb-6",
613
- children: folders.map(function (folder) {
629
+ children: tree.map(function (folder) {
614
630
  return /*#__PURE__*/React.createElement(_SelectableNode, {
615
631
  config: config,
616
632
  folder: folder,
@@ -630,7 +646,7 @@ var PaneBody = function PaneBody(_ref) {
630
646
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
631
647
  className: "flex flex-1 space-x-2",
632
648
  children: [/*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$8({
633
- disabled: !selection,
649
+ disabled: selection === undefined,
634
650
  label: t("common.save"),
635
651
  style: "primary",
636
652
  onClick: function onClick() {