@ndla/ui 19.1.1 → 20.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.
Files changed (98) hide show
  1. package/README.md +1 -1
  2. package/es/Masthead/Masthead.js +1 -0
  3. package/es/Messages/MessageBanner.js +3 -3
  4. package/es/MyNdla/Resource/FolderInput.js +29 -36
  5. package/es/NDLAFilm/FilmSlideshow.js +8 -8
  6. package/es/Resource/ListResource.js +6 -6
  7. package/es/Search/LoadingWrapper.js +2 -2
  8. package/es/Search/SearchResult.js +1 -1
  9. package/es/SearchTypeResult/SearchTypeResult.js +3 -3
  10. package/es/TopicMenu/TopicMenu.js +14 -1
  11. package/es/TreeStructure/FolderItem.js +54 -38
  12. package/es/TreeStructure/FolderItems.js +29 -35
  13. package/es/TreeStructure/FolderNameInput.js +12 -16
  14. package/es/TreeStructure/TreeStructure.js +64 -91
  15. package/es/TreeStructure/arrowNavigation.js +44 -0
  16. package/es/TreeStructure/helperFunctions.js +41 -35
  17. package/es/all.css +1 -1
  18. package/es/index.js +0 -1
  19. package/es/locale/messages-en.js +4 -1
  20. package/es/locale/messages-nb.js +4 -1
  21. package/es/locale/messages-nn.js +4 -1
  22. package/es/locale/messages-se.js +4 -1
  23. package/es/locale/messages-sma.js +4 -1
  24. package/lib/Masthead/Masthead.js +1 -0
  25. package/lib/Messages/MessageBanner.js +3 -3
  26. package/lib/MyNdla/Resource/FolderInput.d.ts +2 -2
  27. package/lib/MyNdla/Resource/FolderInput.js +26 -33
  28. package/lib/NDLAFilm/FilmSlideshow.js +10 -10
  29. package/lib/Resource/ListResource.js +6 -6
  30. package/lib/Search/LoadingWrapper.js +3 -3
  31. package/lib/Search/SearchResult.js +2 -2
  32. package/lib/SearchTypeResult/SearchTypeResult.js +4 -4
  33. package/lib/TopicMenu/TopicMenu.js +14 -1
  34. package/lib/TreeStructure/FolderItem.d.ts +6 -3
  35. package/lib/TreeStructure/FolderItem.js +55 -38
  36. package/lib/TreeStructure/FolderItems.d.ts +1 -1
  37. package/lib/TreeStructure/FolderItems.js +29 -35
  38. package/lib/TreeStructure/FolderNameInput.d.ts +3 -2
  39. package/lib/TreeStructure/FolderNameInput.js +13 -17
  40. package/lib/TreeStructure/TreeStructure.d.ts +1 -6
  41. package/lib/TreeStructure/TreeStructure.js +63 -92
  42. package/lib/TreeStructure/TreeStructure.types.d.ts +13 -20
  43. package/lib/TreeStructure/arrowNavigation.d.ts +9 -0
  44. package/lib/TreeStructure/arrowNavigation.js +54 -0
  45. package/lib/TreeStructure/helperFunctions.d.ts +3 -4
  46. package/lib/TreeStructure/helperFunctions.js +45 -35
  47. package/lib/all.css +1 -1
  48. package/lib/index.d.ts +0 -1
  49. package/lib/index.js +0 -9
  50. package/lib/locale/messages-en.d.ts +3 -0
  51. package/lib/locale/messages-en.js +4 -1
  52. package/lib/locale/messages-nb.d.ts +3 -0
  53. package/lib/locale/messages-nb.js +4 -1
  54. package/lib/locale/messages-nn.d.ts +3 -0
  55. package/lib/locale/messages-nn.js +4 -1
  56. package/lib/locale/messages-se.d.ts +3 -0
  57. package/lib/locale/messages-se.js +4 -1
  58. package/lib/locale/messages-sma.d.ts +3 -0
  59. package/lib/locale/messages-sma.js +4 -1
  60. package/package.json +14 -13
  61. package/src/Masthead/Masthead.tsx +4 -1
  62. package/src/Messages/MessageBanner.tsx +1 -1
  63. package/src/MyNdla/Resource/FolderInput.tsx +41 -44
  64. package/src/NDLAFilm/FilmSlideshow.tsx +1 -1
  65. package/src/Resource/ListResource.tsx +1 -0
  66. package/src/Search/LoadingWrapper.tsx +1 -1
  67. package/src/Search/SearchResult.jsx +1 -1
  68. package/src/SearchTypeResult/SearchTypeResult.tsx +1 -1
  69. package/src/TopicMenu/TopicMenu.jsx +15 -2
  70. package/src/TreeStructure/FolderItem.tsx +63 -40
  71. package/src/TreeStructure/FolderItems.tsx +26 -19
  72. package/src/TreeStructure/FolderNameInput.tsx +10 -12
  73. package/src/TreeStructure/TreeStructure.tsx +56 -71
  74. package/src/TreeStructure/TreeStructure.types.ts +13 -17
  75. package/src/TreeStructure/arrowNavigation.ts +53 -0
  76. package/src/TreeStructure/helperFunctions.ts +17 -25
  77. package/src/index.ts +0 -2
  78. package/src/locale/messages-en.ts +3 -0
  79. package/src/locale/messages-nb.ts +3 -0
  80. package/src/locale/messages-nn.ts +3 -0
  81. package/src/locale/messages-se.ts +3 -0
  82. package/src/locale/messages-sma.ts +3 -0
  83. package/es/Spinner/Spinner.js +0 -42
  84. package/es/Spinner/index.js +0 -2
  85. package/es/TreeStructure/keyboardNavigation/keyboardNavigation.js +0 -194
  86. package/es/TreeStructure/keyboardNavigation/keyboardNavigation.types.js +0 -0
  87. package/lib/Spinner/Spinner.d.ts +0 -16
  88. package/lib/Spinner/Spinner.js +0 -54
  89. package/lib/Spinner/index.d.ts +0 -2
  90. package/lib/Spinner/index.js +0 -13
  91. package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.d.ts +0 -11
  92. package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.js +0 -198
  93. package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.types.d.ts +0 -26
  94. package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.types.js +0 -1
  95. package/src/Spinner/Spinner.tsx +0 -46
  96. package/src/Spinner/index.ts +0 -3
  97. package/src/TreeStructure/keyboardNavigation/keyboardNavigation.ts +0 -161
  98. package/src/TreeStructure/keyboardNavigation/keyboardNavigation.types.ts +0 -28
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.arrowNavigation = void 0;
7
+
8
+ /**
9
+ * Copyright (c) 2022-present, NDLA.
10
+ *
11
+ * This source code is licensed under the GPLv3 license found in the
12
+ * LICENSE file in the root directory of this source tree.
13
+ *
14
+ */
15
+ var navigateVertical = function navigateVertical(visibleFolders, folderId, setFocusedFolderId, direction) {
16
+ var currentIndex = visibleFolders.findIndex(function (id) {
17
+ return id === folderId;
18
+ });
19
+ var target = visibleFolders[currentIndex + direction];
20
+
21
+ if (target !== undefined) {
22
+ setFocusedFolderId(target);
23
+ }
24
+ };
25
+
26
+ var arrowKeys = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];
27
+
28
+ var arrowNavigation = function arrowNavigation(e, id, visibleFolders, setFocusedFolderId, onOpen, onClose) {
29
+ if (!arrowKeys.includes(e.key)) {
30
+ return;
31
+ }
32
+
33
+ e.preventDefault();
34
+ e.stopPropagation();
35
+
36
+ switch (e.key) {
37
+ case 'ArrowUp':
38
+ return navigateVertical(visibleFolders, id, setFocusedFolderId, -1);
39
+
40
+ case 'ArrowDown':
41
+ return navigateVertical(visibleFolders, id, setFocusedFolderId, 1);
42
+
43
+ case 'ArrowLeft':
44
+ return onClose(id);
45
+
46
+ case 'ArrowRight':
47
+ return onOpen(id);
48
+
49
+ default:
50
+ return;
51
+ }
52
+ };
53
+
54
+ exports.arrowNavigation = arrowNavigation;
@@ -1,5 +1,4 @@
1
1
  import { FolderStructureProps } from './TreeStructure.types';
2
- declare const getPathOfFolder: (data: FolderStructureProps[], findId: string) => string[];
3
- declare const getIdPathsOfFolder: (data: FolderStructureProps[], findId: string) => number[];
4
- declare const getFolderName: (data: FolderStructureProps[], findId: string | undefined) => string | undefined;
5
- export { getPathOfFolder, getIdPathsOfFolder, getFolderName };
2
+ export declare const getPathOfFolder: (data: FolderStructureProps[], findId: string) => string[];
3
+ export declare const getFolderName: (data: FolderStructureProps[], findId: string | undefined) => string | undefined;
4
+ export declare const flattenFolders: (folders: FolderStructureProps[], openFolders?: string[] | undefined) => FolderStructureProps[];
@@ -3,7 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getFolderName = exports.getIdPathsOfFolder = exports.getPathOfFolder = void 0;
6
+ exports.flattenFolders = exports.getFolderName = exports.getPathOfFolder = void 0;
7
+
8
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
9
+
10
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
11
+
12
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
+
14
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
15
+
16
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
7
17
 
8
18
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
9
19
 
@@ -20,20 +30,20 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
20
30
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
21
31
 
22
32
  var getPathOfFolder = function getPathOfFolder(data, findId) {
23
- var paths = function paths(dataChildren, path) {
24
- var _iterator = _createForOfIteratorHelper(dataChildren),
33
+ var paths = function paths(folders, path) {
34
+ var _iterator = _createForOfIteratorHelper(folders),
25
35
  _step;
26
36
 
27
37
  try {
28
38
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
29
39
  var _step$value = _step.value,
30
40
  id = _step$value.id,
31
- dataChildrenSub = _step$value.data;
41
+ subfolders = _step$value.subfolders;
32
42
 
33
43
  if (id === findId) {
34
44
  return [].concat(_toConsumableArray(path), [id]);
35
- } else if (dataChildrenSub === null || dataChildrenSub === void 0 ? void 0 : dataChildrenSub.length) {
36
- return paths(dataChildrenSub, [].concat(_toConsumableArray(path), [id]));
45
+ } else if (subfolders === null || subfolders === void 0 ? void 0 : subfolders.length) {
46
+ return paths(subfolders, [].concat(_toConsumableArray(path), [id]));
37
47
  }
38
48
  }
39
49
  } catch (err) {
@@ -50,28 +60,6 @@ var getPathOfFolder = function getPathOfFolder(data, findId) {
50
60
 
51
61
  exports.getPathOfFolder = getPathOfFolder;
52
62
 
53
- var getIdPathsOfFolder = function getIdPathsOfFolder(data, findId) {
54
- var currentPath = [];
55
-
56
- var paths = function paths(dataChildren, path) {
57
- dataChildren.forEach(function (_ref, _index) {
58
- var id = _ref.id,
59
- dataChildrenSub = _ref.data;
60
-
61
- if (id === findId) {
62
- currentPath = [].concat(_toConsumableArray(path), [_index]);
63
- } else if (dataChildrenSub === null || dataChildrenSub === void 0 ? void 0 : dataChildrenSub.length) {
64
- paths(dataChildrenSub, [].concat(_toConsumableArray(path), [_index]));
65
- }
66
- });
67
- };
68
-
69
- paths(data, []);
70
- return currentPath;
71
- };
72
-
73
- exports.getIdPathsOfFolder = getIdPathsOfFolder;
74
-
75
63
  var getFolderName = function getFolderName(data, findId) {
76
64
  if (!findId) {
77
65
  return undefined;
@@ -80,16 +68,16 @@ var getFolderName = function getFolderName(data, findId) {
80
68
  var folderName;
81
69
 
82
70
  var paths = function paths(dataChildren) {
83
- dataChildren.some(function (_ref2, _index) {
84
- var id = _ref2.id,
85
- name = _ref2.name,
86
- dataChildrenSub = _ref2.data;
71
+ dataChildren.some(function (_ref, _index) {
72
+ var id = _ref.id,
73
+ name = _ref.name,
74
+ subfolders = _ref.subfolders;
87
75
 
88
76
  if (id === findId) {
89
77
  folderName = name;
90
78
  return true;
91
- } else if (dataChildrenSub === null || dataChildrenSub === void 0 ? void 0 : dataChildrenSub.length) {
92
- return paths(dataChildrenSub);
79
+ } else if (subfolders === null || subfolders === void 0 ? void 0 : subfolders.length) {
80
+ return paths(subfolders);
93
81
  }
94
82
 
95
83
  return false;
@@ -100,4 +88,26 @@ var getFolderName = function getFolderName(data, findId) {
100
88
  return folderName;
101
89
  };
102
90
 
103
- exports.getFolderName = getFolderName;
91
+ exports.getFolderName = getFolderName;
92
+
93
+ var flattenFolders = function flattenFolders(folders, openFolders) {
94
+ return folders.reduce(function (acc, _ref2) {
95
+ var subfolders = _ref2.subfolders,
96
+ id = _ref2.id,
97
+ rest = _objectWithoutProperties(_ref2, ["subfolders", "id"]);
98
+
99
+ if (!subfolders || openFolders && !openFolders.includes(id)) {
100
+ return acc.concat(_objectSpread({
101
+ subfolders: subfolders,
102
+ id: id
103
+ }, rest));
104
+ }
105
+
106
+ return acc.concat(_objectSpread({
107
+ subfolders: subfolders,
108
+ id: id
109
+ }, rest), flattenFolders(subfolders, openFolders));
110
+ }, []);
111
+ };
112
+
113
+ exports.flattenFolders = flattenFolders;