@bigbinary/neeto-folders-frontend 2.0.9 → 2.0.11

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.
@@ -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-69nKxJCT.js');
12
+ var useFolderActions = require('../useFolderActions-Ok2WR6Ht.js');
13
13
  var constants = require('./constants.js');
14
14
  var utils = require('../index-hg5oms4a.js');
15
15
  var internal = require('../internal-CXN78HoA.js');
@@ -19,6 +19,7 @@ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
19
19
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
20
20
  var React = require('react');
21
21
  var Typography = require('@bigbinary/neetoui/Typography');
22
+ var Spinner = require('@bigbinary/neetoui/Spinner');
22
23
  var Input = require('@bigbinary/neetoui/formik/Input');
23
24
  var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
24
25
  var Form = require('@bigbinary/neetoui/formik/Form');
@@ -349,7 +350,8 @@ var AddEditPane = function AddEditPane(_ref) {
349
350
  type = _useFolderStore.type,
350
351
  item = _useFolderStore.item;
351
352
  var _useFetchFolders = useFolderActions.useFetchFolders(config),
352
- folders = _useFetchFolders.data;
353
+ folders = _useFetchFolders.data,
354
+ isFetching = _useFetchFolders.isFetching;
353
355
  var _useCreateFolder = useFolderActions.useCreateFolder(config),
354
356
  createFolder = _useCreateFolder.mutate;
355
357
  var _useUpdateFolder = useFolderActions.useUpdateFolder(config),
@@ -363,38 +365,59 @@ var AddEditPane = function AddEditPane(_ref) {
363
365
  var isValidParent = (activeFolder === null || activeFolder === void 0 ? void 0 : activeFolder.meta.depth) < config.maxDepth;
364
366
  var parentId = isValidParent ? activeFolder.id : null;
365
367
  var extraAttributes = config.extraAttributes;
368
+ var handleError = function handleError(setStatus, error) {
369
+ var response = error.response;
370
+ if (response && response.data && response.data.errors) {
371
+ setStatus(response.data.errors);
372
+ }
373
+ };
366
374
  var onSubmitForm = /*#__PURE__*/function () {
367
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(values) {
368
- var payload;
375
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(values, _ref2) {
376
+ var setStatus, payload, reactQueryOptions, config;
369
377
  return _regeneratorRuntime.wrap(function _callee$(_context) {
370
378
  while (1) switch (_context.prev = _context.next) {
371
379
  case 0:
380
+ setStatus = _ref2.setStatus;
372
381
  payload = createPayload(values, extraAttributes);
382
+ reactQueryOptions = {
383
+ onSuccess: function onSuccess() {
384
+ utils$1.showThumbsUpToastr();
385
+ onClose();
386
+ },
387
+ onError: function onError(error) {
388
+ return handleError(setStatus, error);
389
+ }
390
+ };
391
+ config = {
392
+ showToastr: false
393
+ };
373
394
  if (!isEditing) {
374
- _context.next = 6;
395
+ _context.next = 9;
375
396
  break;
376
397
  }
377
- _context.next = 4;
398
+ _context.next = 7;
378
399
  return updateFolder({
379
400
  id: item.id,
380
- payload: payload
381
- });
382
- case 4:
383
- _context.next = 8;
401
+ payload: payload,
402
+ config: config
403
+ }, reactQueryOptions);
404
+ case 7:
405
+ _context.next = 11;
384
406
  break;
385
- case 6:
386
- _context.next = 8;
387
- return createFolder(payload);
388
- case 8:
389
- onClose();
390
407
  case 9:
408
+ _context.next = 11;
409
+ return createFolder({
410
+ payload: payload,
411
+ config: config
412
+ }, reactQueryOptions);
413
+ case 11:
391
414
  case "end":
392
415
  return _context.stop();
393
416
  }
394
417
  }, _callee);
395
418
  }));
396
- return function onSubmitForm(_x) {
397
- return _ref2.apply(this, arguments);
419
+ return function onSubmitForm(_x, _x2) {
420
+ return _ref3.apply(this, arguments);
398
421
  };
399
422
  }();
400
423
  var folderOptions = React.useMemo(function () {
@@ -405,6 +428,12 @@ var AddEditPane = function AddEditPane(_ref) {
405
428
  parentId: parentId
406
429
  }, extraAttributes);
407
430
  }, [isEditing, item, parentId, extraAttributes]);
431
+ if (isFetching) {
432
+ return /*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
433
+ className: "flex items-center justify-center",
434
+ children: /*#__PURE__*/jsxRuntime.jsx(Spinner, {})
435
+ });
436
+ }
408
437
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
409
438
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Header, {
410
439
  children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
@@ -419,8 +448,8 @@ var AddEditPane = function AddEditPane(_ref) {
419
448
  validationSchema: FORM_VALIDATION_SCHEMA,
420
449
  onSubmit: onSubmitForm
421
450
  },
422
- children: function children(_ref3) {
423
- var dirty = _ref3.dirty;
451
+ children: function children(_ref4) {
452
+ var dirty = _ref4.dirty;
424
453
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
425
454
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
426
455
  className: "pb-6",
@@ -499,6 +528,7 @@ var Node = function Node(_ref, ref) {
499
528
  onClick: onClick,
500
529
  ref: ref
501
530
  })), {}, {
531
+ "data-cy": "".concat(neetoCist.hyphenate(folder.name), "-folder-node"),
502
532
  className: classNames("relative my-1 flex cursor-pointer items-center px-2 py-1", className),
503
533
  children: [icon, /*#__PURE__*/jsxRuntime.jsxs("div", {
504
534
  className: "ml-2",
@@ -571,6 +601,7 @@ var _SelectableNode = function SelectableNode(_ref) {
571
601
  readOnly: true,
572
602
  checked: selection === folder.id,
573
603
  className: "neeto-ui-radio__container",
604
+ "data-cy": "".concat(neetoCist.hyphenate(folder.name), "-folder-option"),
574
605
  name: "move-folder-option"
575
606
  }),
576
607
  onClick: isDisabled ? neetoCist.noop : function () {
@@ -603,7 +634,8 @@ var PaneBody = function PaneBody(_ref) {
603
634
  setFolderState = _useFolderStore.setFolderState;
604
635
  var _useFetchFolders = useFolderActions.useFetchFolders(config),
605
636
  _useFetchFolders$data = _useFetchFolders.data,
606
- folders = _useFetchFolders$data === void 0 ? [] : _useFetchFolders$data;
637
+ folders = _useFetchFolders$data === void 0 ? [] : _useFetchFolders$data,
638
+ isFetching = _useFetchFolders.isFetching;
607
639
  var _useTranslation = useTranslation(config),
608
640
  t = _useTranslation.t;
609
641
  var _useFolderStore2 = useFolderActions.useFolderStore(function (store) {
@@ -642,6 +674,12 @@ var PaneBody = function PaneBody(_ref) {
642
674
  mode: "global",
643
675
  enabled: !!type
644
676
  });
677
+ if (isFetching) {
678
+ return /*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
679
+ className: "flex items-center justify-center",
680
+ children: /*#__PURE__*/jsxRuntime.jsx(Spinner, {})
681
+ });
682
+ }
645
683
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
646
684
  children: [/*#__PURE__*/jsxRuntime.jsxs(Pane.Header, {
647
685
  className: "flex items-center justify-between",
@@ -650,6 +688,7 @@ var PaneBody = function PaneBody(_ref) {
650
688
  children: t("moveToFolder.title")
651
689
  }), /*#__PURE__*/jsxRuntime.jsx(Button, {
652
690
  className: "mr-2",
691
+ "data-cy": "add-new-folder-button",
653
692
  label: t("folders.add"),
654
693
  style: "link",
655
694
  onClick: onAddFolder
@@ -674,23 +713,29 @@ var PaneBody = function PaneBody(_ref) {
674
713
  className: "space-x-2",
675
714
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
676
715
  className: "flex flex-1 space-x-2",
677
- children: [/*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$8({
716
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$8(_objectSpread$8({
678
717
  disabled: selection === undefined,
679
718
  label: t("common.save"),
680
719
  style: "primary",
681
720
  onClick: function onClick() {
682
721
  return onSubmit(selection);
683
722
  }
684
- }, submitButtonProps)), /*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$8({
723
+ }, submitButtonProps), {}, {
724
+ "data-cy": "save-changes-button"
725
+ })), /*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$8(_objectSpread$8({
685
726
  label: t("common.cancel"),
686
727
  style: "text",
687
728
  onClick: onClose
688
- }, cancelButtonProps))]
689
- }), onRemove && /*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$8({
729
+ }, cancelButtonProps), {}, {
730
+ "data-cy": "cancel-button"
731
+ }))]
732
+ }), onRemove && /*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$8(_objectSpread$8({
690
733
  label: t("moveToFolder.remove"),
691
734
  style: "tertiary",
692
735
  onClick: onRemove
693
- }, removeButtonProps))]
736
+ }, removeButtonProps), {}, {
737
+ "data-cy": "remove-from-folder-button"
738
+ }))]
694
739
  })]
695
740
  });
696
741
  };
@@ -813,7 +858,8 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
813
858
  var _useTranslation = useTranslation(config),
814
859
  t = _useTranslation.t;
815
860
  var _useFetchFolders = useFolderActions.useFetchFolders(config),
816
- folders = _useFetchFolders.data;
861
+ folders = _useFetchFolders.data,
862
+ isFetching = _useFetchFolders.isFetching;
817
863
  var _useReorderFolders = useFolderActions.useReorderFolders(config),
818
864
  reorderFolders = _useReorderFolders.mutate;
819
865
  var _useFolderStore = useFolderActions.useFolderStore(function (store) {
@@ -882,6 +928,12 @@ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
882
928
  className: "neeto-ui-text-gray-500 relative -left-[0.3125rem] flex-shrink-0"
883
929
  })
884
930
  };
931
+ if (isFetching) {
932
+ return /*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
933
+ className: "flex items-center justify-center",
934
+ children: /*#__PURE__*/jsxRuntime.jsx(Spinner, {})
935
+ });
936
+ }
885
937
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
886
938
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Header, {
887
939
  children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
@@ -1128,7 +1180,8 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
1128
1180
  var _useTranslation = useTranslation(config),
1129
1181
  t = _useTranslation.t;
1130
1182
  var _useFetchFolders = useFolderActions.useFetchFolders(config),
1131
- folders = _useFetchFolders.data;
1183
+ folders = _useFetchFolders.data,
1184
+ isFetching = _useFetchFolders.isFetching;
1132
1185
  var _useReorderFolders = useFolderActions.useReorderFolders(config),
1133
1186
  reorderFolders = _useReorderFolders.mutate;
1134
1187
  var sensors = core.useSensors(core.useSensor(core.PointerSensor, sensorConfig));
@@ -1210,6 +1263,12 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
1210
1263
  className: "neeto-ui-text-gray-500 relative -left-[0.3125rem] flex-shrink-0"
1211
1264
  })
1212
1265
  };
1266
+ if (isFetching) {
1267
+ return /*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
1268
+ className: "flex items-center justify-center",
1269
+ children: /*#__PURE__*/jsxRuntime.jsx(Spinner, {})
1270
+ });
1271
+ }
1213
1272
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1214
1273
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Header, {
1215
1274
  children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
@@ -1357,6 +1416,7 @@ var FolderTile = function FolderTile(_ref) {
1357
1416
  metaInfo.push("".concat(folder.itemCount || 0, " ").concat(itemLabel).toLowerCase());
1358
1417
  return /*#__PURE__*/jsxRuntime.jsxs(reactRouterDom.Link, {
1359
1418
  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",
1419
+ "data-cy": "".concat(neetoCist.hyphenate(folder.name), "-folder-tile"),
1360
1420
  to: link,
1361
1421
  children: [/*#__PURE__*/jsxRuntime.jsx(Checkbox, {
1362
1422
  checked: isSelected,
@@ -1372,6 +1432,7 @@ var FolderTile = function FolderTile(_ref) {
1372
1432
  className: "flex min-w-0 flex-grow flex-col gap-2",
1373
1433
  children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
1374
1434
  className: "-mt-0.5 line-clamp-2 break-words pr-8",
1435
+ "data-cy": "folder-name",
1375
1436
  lineHeight: "snug",
1376
1437
  style: "body1",
1377
1438
  title: folder.name,
@@ -1422,6 +1483,7 @@ var FoldersList = function FoldersList(_ref) {
1422
1483
  children: t("folders.title")
1423
1484
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
1424
1485
  className: "neeto-folders-grid-view-wrapper mb-10 grid w-full gap-4",
1486
+ "data-cy": "folders-list",
1425
1487
  children: subFolders.map(function (folder) {
1426
1488
  return /*#__PURE__*/React.createElement(FolderTile, {
1427
1489
  actions: actions,
@@ -1472,6 +1534,7 @@ var FolderNode = function FolderNode(_ref) {
1472
1534
  to: link,
1473
1535
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
1474
1536
  className: "flex items-center",
1537
+ "data-cy": "".concat(neetoCist.hyphenate(name), "-folder-sublink"),
1475
1538
  children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
1476
1539
  className: "line-clamp-1 block truncate",
1477
1540
  component: "span",