@ndla/ui 14.0.0 → 15.1.1
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/es/Article/Article.js +22 -3
- package/es/Article/ArticleFavoritesButton.js +38 -0
- package/es/Article/index.js +2 -1
- package/es/Breadcrumb/ActionBreadcrumb.js +57 -0
- package/es/Breadcrumb/index.js +1 -0
- package/es/InfoBlock/InfoBlock.js +55 -0
- package/es/InfoBlock/index.js +1 -0
- package/es/MyNdla/Navigation/VerticalNavigation.js +51 -0
- package/es/MyNdla/Navigation/index.js +2 -0
- package/es/MyNdla/Resource/Folder.js +86 -0
- package/es/MyNdla/Resource/FolderInput.js +96 -0
- package/{lib/MyNdla/ResourceDash/ResourcesView.d.ts → es/MyNdla/Resource/index.js} +3 -3
- package/es/MyNdla/index.js +4 -4
- package/es/Resource/BlockResource.js +73 -0
- package/es/Resource/ListResource.js +66 -0
- package/es/Resource/index.js +10 -0
- package/es/Resource/resourceComponents.js +97 -0
- package/es/ResourceGroup/ResourceGroup.js +7 -5
- package/es/ResourceGroup/ResourceItem.js +25 -24
- package/es/ResourceGroup/ResourceList.js +18 -6
- package/es/SnackBar/SnackBar.js +117 -0
- package/es/SnackBar/index.js +9 -0
- package/es/TagSelector/SuggestionInput.js +240 -0
- package/es/TagSelector/Suggestions.js +93 -0
- package/es/TagSelector/TagSelector.js +137 -0
- package/es/TagSelector/index.js +9 -0
- package/es/TreeStructure/FolderItem.js +130 -0
- package/es/TreeStructure/FolderItems.js +123 -0
- package/es/TreeStructure/FolderNameInput.js +112 -0
- package/es/TreeStructure/TreeStructure.js +254 -0
- package/es/TreeStructure/TreeStructure.types.js +0 -0
- package/es/TreeStructure/TreeStructureWrapper.js +13 -0
- package/es/TreeStructure/helperFunctions.js +92 -0
- package/es/TreeStructure/index.js +9 -0
- package/es/TreeStructure/keyboardNavigation/keyboardNavigation.js +182 -0
- package/es/TreeStructure/keyboardNavigation/keyboardNavigation.types.js +0 -0
- package/es/all.css +72 -0
- package/es/index.js +8 -3
- package/es/locale/messages-en.js +62 -4
- package/es/locale/messages-nb.js +61 -3
- package/es/locale/messages-nn.js +61 -3
- package/es/locale/messages-se.js +61 -3
- package/es/locale/messages-sma.js +61 -3
- package/lib/Article/Article.d.ts +3 -1
- package/lib/Article/Article.js +43 -23
- package/lib/Article/ArticleFavoritesButton.d.ts +15 -0
- package/lib/Article/ArticleFavoritesButton.js +56 -0
- package/lib/Article/index.d.ts +2 -1
- package/lib/Article/index.js +8 -0
- package/lib/Breadcrumb/ActionBreadcrumb.d.ts +16 -0
- package/lib/Breadcrumb/ActionBreadcrumb.js +72 -0
- package/lib/Breadcrumb/index.d.ts +1 -0
- package/lib/Breadcrumb/index.js +8 -0
- package/lib/InfoBlock/InfoBlock.d.ts +8 -0
- package/lib/InfoBlock/InfoBlock.js +58 -0
- package/lib/InfoBlock/index.d.ts +1 -0
- package/lib/InfoBlock/index.js +13 -0
- package/lib/MyNdla/Navigation/VerticalNavigation.d.ts +10 -0
- package/lib/MyNdla/Navigation/VerticalNavigation.js +61 -0
- package/lib/MyNdla/Navigation/index.d.ts +2 -0
- package/lib/MyNdla/Navigation/index.js +15 -0
- package/lib/MyNdla/Resource/Folder.d.ts +20 -0
- package/lib/MyNdla/Resource/Folder.js +100 -0
- package/lib/MyNdla/Resource/FolderInput.d.ts +15 -0
- package/lib/MyNdla/Resource/FolderInput.js +116 -0
- package/lib/MyNdla/Resource/index.d.ts +10 -0
- package/lib/MyNdla/Resource/index.js +23 -0
- package/lib/MyNdla/index.d.ts +4 -4
- package/lib/MyNdla/index.js +13 -7
- package/lib/Resource/BlockResource.d.ts +20 -0
- package/lib/Resource/BlockResource.js +84 -0
- package/lib/Resource/ListResource.d.ts +20 -0
- package/lib/Resource/ListResource.js +78 -0
- package/lib/Resource/index.d.ts +11 -0
- package/lib/Resource/index.js +29 -0
- package/lib/Resource/resourceComponents.d.ts +24 -0
- package/lib/Resource/resourceComponents.js +106 -0
- package/lib/ResourceGroup/ResourceGroup.d.ts +2 -1
- package/lib/ResourceGroup/ResourceGroup.js +7 -5
- package/lib/ResourceGroup/ResourceItem.d.ts +5 -1
- package/lib/ResourceGroup/ResourceItem.js +26 -24
- package/lib/ResourceGroup/ResourceList.d.ts +3 -1
- package/lib/ResourceGroup/ResourceList.js +18 -6
- package/lib/SnackBar/SnackBar.d.ts +23 -0
- package/lib/SnackBar/SnackBar.js +127 -0
- package/lib/SnackBar/index.d.ts +10 -0
- package/lib/SnackBar/index.js +15 -0
- package/lib/TagSelector/SuggestionInput.d.ts +19 -0
- package/lib/TagSelector/SuggestionInput.js +255 -0
- package/lib/TagSelector/Suggestions.d.ts +12 -0
- package/lib/TagSelector/Suggestions.js +96 -0
- package/lib/TagSelector/TagSelector.d.ts +16 -0
- package/lib/TagSelector/TagSelector.js +150 -0
- package/lib/TagSelector/index.d.ts +10 -0
- package/lib/TagSelector/index.js +19 -0
- package/lib/TreeStructure/FolderItem.d.ts +27 -0
- package/lib/TreeStructure/FolderItem.js +140 -0
- package/lib/TreeStructure/FolderItems.d.ts +11 -0
- package/lib/TreeStructure/FolderItems.js +130 -0
- package/lib/TreeStructure/FolderNameInput.d.ts +15 -0
- package/lib/TreeStructure/FolderNameInput.js +125 -0
- package/lib/TreeStructure/TreeStructure.d.ts +12 -0
- package/lib/TreeStructure/TreeStructure.js +273 -0
- package/lib/TreeStructure/TreeStructure.types.d.ts +63 -0
- package/lib/TreeStructure/TreeStructure.types.js +1 -0
- package/lib/TreeStructure/TreeStructureWrapper.d.ts +12 -0
- package/lib/TreeStructure/TreeStructureWrapper.js +24 -0
- package/lib/TreeStructure/helperFunctions.d.ts +5 -0
- package/lib/TreeStructure/helperFunctions.js +103 -0
- package/lib/TreeStructure/index.d.ts +10 -0
- package/lib/TreeStructure/index.js +15 -0
- package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.d.ts +11 -0
- package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.js +186 -0
- package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.types.d.ts +26 -0
- package/lib/TreeStructure/keyboardNavigation/keyboardNavigation.types.js +1 -0
- package/lib/User/apiTypes.d.ts +1 -1
- package/lib/User/index.d.ts +2 -2
- package/lib/all.css +72 -0
- package/lib/index.d.ts +13 -4
- package/lib/index.js +75 -9
- package/lib/locale/messages-en.d.ts +58 -0
- package/lib/locale/messages-en.js +62 -4
- package/lib/locale/messages-nb.d.ts +58 -0
- package/lib/locale/messages-nb.js +61 -3
- package/lib/locale/messages-nn.d.ts +58 -0
- package/lib/locale/messages-nn.js +61 -3
- package/lib/locale/messages-se.d.ts +58 -0
- package/lib/locale/messages-se.js +61 -3
- package/lib/locale/messages-sma.d.ts +58 -0
- package/lib/locale/messages-sma.js +61 -3
- package/lib/types.d.ts +1 -1
- package/package.json +12 -11
- package/src/Article/Article.tsx +31 -0
- package/src/Article/ArticleFavoritesButton.tsx +40 -0
- package/src/Article/index.ts +2 -0
- package/src/Breadcrumb/ActionBreadcrumb.tsx +68 -0
- package/src/Breadcrumb/index.ts +2 -0
- package/src/InfoBlock/InfoBlock.tsx +61 -0
- package/src/InfoBlock/index.ts +1 -0
- package/src/MyNdla/Navigation/VerticalNavigation.tsx +93 -0
- package/src/MyNdla/Navigation/index.ts +2 -0
- package/src/MyNdla/Resource/Folder.tsx +145 -0
- package/src/MyNdla/Resource/FolderInput.tsx +104 -0
- package/src/MyNdla/Resource/index.ts +11 -0
- package/src/MyNdla/index.ts +4 -5
- package/src/Resource/BlockResource.tsx +101 -0
- package/src/Resource/ListResource.tsx +111 -0
- package/src/Resource/index.ts +12 -0
- package/src/Resource/resourceComponents.tsx +143 -0
- package/src/ResourceGroup/ResourceGroup.tsx +3 -0
- package/src/ResourceGroup/ResourceItem.tsx +17 -0
- package/src/ResourceGroup/ResourceList.tsx +16 -3
- package/src/SnackBar/SnackBar.tsx +183 -0
- package/src/SnackBar/index.ts +13 -0
- package/src/TagSelector/SuggestionInput.tsx +230 -0
- package/src/TagSelector/Suggestions.tsx +125 -0
- package/src/TagSelector/TagSelector.tsx +111 -0
- package/src/TagSelector/index.ts +13 -0
- package/src/TreeStructure/FolderItem.tsx +160 -0
- package/src/TreeStructure/FolderItems.tsx +109 -0
- package/src/TreeStructure/FolderNameInput.tsx +109 -0
- package/src/TreeStructure/TreeStructure.tsx +184 -0
- package/src/TreeStructure/TreeStructure.types.ts +69 -0
- package/src/TreeStructure/TreeStructureWrapper.tsx +34 -0
- package/src/TreeStructure/helperFunctions.ts +52 -0
- package/src/TreeStructure/index.ts +11 -0
- package/src/TreeStructure/keyboardNavigation/keyboardNavigation.ts +161 -0
- package/src/TreeStructure/keyboardNavigation/keyboardNavigation.types.ts +28 -0
- package/src/User/apiTypes.ts +1 -1
- package/src/User/index.ts +2 -2
- package/src/all.scss +1 -0
- package/src/index.ts +14 -5
- package/src/locale/messages-en.ts +56 -3
- package/src/locale/messages-nb.ts +55 -2
- package/src/locale/messages-nn.ts +55 -2
- package/src/locale/messages-se.ts +55 -2
- package/src/locale/messages-sma.ts +55 -2
- package/src/types.ts +1 -1
- package/es/MyNdla/ResourceDash/Breadcrumbs.js +0 -22
- package/es/MyNdla/ResourceDash/ResourceElement.js +0 -27
- package/es/MyNdla/ResourceDash/ResourcesView.js +0 -43
- package/es/MyNdla/ResourceDash/index.js +0 -4
- package/lib/MyNdla/ResourceDash/Breadcrumbs.d.ts +0 -15
- package/lib/MyNdla/ResourceDash/Breadcrumbs.js +0 -35
- package/lib/MyNdla/ResourceDash/ResourceElement.d.ts +0 -18
- package/lib/MyNdla/ResourceDash/ResourceElement.js +0 -38
- package/lib/MyNdla/ResourceDash/ResourcesView.js +0 -57
- package/lib/MyNdla/ResourceDash/index.d.ts +0 -4
- package/lib/MyNdla/ResourceDash/index.js +0 -31
- package/src/MyNdla/ResourceDash/Breadcrumbs.tsx +0 -31
- package/src/MyNdla/ResourceDash/ResourceElement.tsx +0 -50
- package/src/MyNdla/ResourceDash/ResourcesView.tsx +0 -42
- package/src/MyNdla/ResourceDash/index.ts +0 -5
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import _styled from "@emotion/styled-base";
|
|
2
|
+
|
|
3
|
+
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; }
|
|
4
|
+
|
|
5
|
+
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; }
|
|
6
|
+
|
|
7
|
+
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; }
|
|
8
|
+
|
|
9
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
10
|
+
|
|
11
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
12
|
+
|
|
13
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
14
|
+
|
|
15
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
16
|
+
|
|
17
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
18
|
+
|
|
19
|
+
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; }
|
|
20
|
+
|
|
21
|
+
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
22
|
+
|
|
23
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Copyright (c) 2022-present, NDLA.
|
|
27
|
+
*
|
|
28
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
29
|
+
* LICENSE file in the root directory of this source tree.
|
|
30
|
+
*
|
|
31
|
+
*/
|
|
32
|
+
import React, { useEffect, useState, useRef, useMemo } from 'react';
|
|
33
|
+
import { uuid } from '@ndla/util';
|
|
34
|
+
import Button from '@ndla/button';
|
|
35
|
+
import Tooltip from '@ndla/tooltip';
|
|
36
|
+
import { useTranslation } from 'react-i18next';
|
|
37
|
+
import { spacing, fonts } from '@ndla/core';
|
|
38
|
+
import TreeStructureStyledWrapper from './TreeStructureWrapper';
|
|
39
|
+
import FolderItems from './FolderItems';
|
|
40
|
+
import { getIdPathsOfFolder, getPathOfFolder, getFolderName } from './helperFunctions';
|
|
41
|
+
import keyboardNavigation, { KEYBOARD_KEYS_OF_INTEREST } from './keyboardNavigation/keyboardNavigation';
|
|
42
|
+
import { jsx as ___EmotionJSX } from "@emotion/core";
|
|
43
|
+
export var MAX_LEVEL_FOR_FOLDERS = 4;
|
|
44
|
+
|
|
45
|
+
var StyledLabel = _styled("label", {
|
|
46
|
+
target: "e1dg1gdn0",
|
|
47
|
+
label: "StyledLabel"
|
|
48
|
+
})("font-weight:", fonts.weight.semibold, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVTdHJ1Y3R1cmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCZ0MiLCJmaWxlIjoiVHJlZVN0cnVjdHVyZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMi1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VSZWYsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQG5kbGEvdXRpbCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BuZGxhL2J1dHRvbic7XG5pbXBvcnQgVG9vbHRpcCBmcm9tICdAbmRsYS90b29sdGlwJztcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBzcGFjaW5nLCBmb250cyB9IGZyb20gJ0BuZGxhL2NvcmUnO1xuaW1wb3J0IFRyZWVTdHJ1Y3R1cmVTdHlsZWRXcmFwcGVyIGZyb20gJy4vVHJlZVN0cnVjdHVyZVdyYXBwZXInO1xuaW1wb3J0IEZvbGRlckl0ZW1zIGZyb20gJy4vRm9sZGVySXRlbXMnO1xuaW1wb3J0IHsgZ2V0SWRQYXRoc09mRm9sZGVyLCBnZXRQYXRoT2ZGb2xkZXIsIGdldEZvbGRlck5hbWUgfSBmcm9tICcuL2hlbHBlckZ1bmN0aW9ucyc7XG5pbXBvcnQga2V5Ym9hcmROYXZpZ2F0aW9uLCB7IEtFWUJPQVJEX0tFWVNfT0ZfSU5URVJFU1QgfSBmcm9tICcuL2tleWJvYXJkTmF2aWdhdGlvbi9rZXlib2FyZE5hdmlnYXRpb24nO1xuaW1wb3J0IHsgTmV3Rm9sZGVyUHJvcHMsIFRyZWVTdHJ1Y3R1cmVQcm9wcyB9IGZyb20gJy4vVHJlZVN0cnVjdHVyZS50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBNQVhfTEVWRUxfRk9SX0ZPTERFUlMgPSA0O1xuXG5jb25zdCBTdHlsZWRMYWJlbCA9IHN0eWxlZC5sYWJlbGBcbiAgZm9udC13ZWlnaHQ6ICR7Zm9udHMud2VpZ2h0LnNlbWlib2xkfTtcbmA7XG5cbmNvbnN0IEFkZEZvbGRlcldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tdG9wOiAke3NwYWNpbmcueHNtYWxsfTtcbmA7XG5cbmNvbnN0IFRyZWVTdHJ1Y3R1cmUgPSAoe1xuICBkYXRhLFxuICBsYWJlbCxcbiAgZWRpdGFibGUsXG4gIGxvYWRpbmcsXG4gIG9uTmV3Rm9sZGVyLFxuICBvcGVuT25Gb2xkZXJDbGljayxcbiAgZnJhbWVkLFxuICBmb2xkZXJJZE1hcmtlZEJ5RGVmYXVsdCxcbiAgZGVmYXVsdE9wZW5Gb2xkZXJzLFxufTogVHJlZVN0cnVjdHVyZVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW25ld0ZvbGRlciwgc2V0TmV3Rm9sZGVyXSA9IHVzZVN0YXRlPE5ld0ZvbGRlclByb3BzIHwgdW5kZWZpbmVkPigpO1xuICBjb25zdCBbb3BlbkZvbGRlcnMsIHNldE9wZW5Gb2xkZXJzXSA9IHVzZVN0YXRlPFNldDxzdHJpbmc+PihuZXcgU2V0KGRlZmF1bHRPcGVuRm9sZGVycyB8fCBbXSkpO1xuICBjb25zdCBbZm9jdXNlZEZvbGRlcklkLCBzZXRGb2N1c2VkRm9sZGVySWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICBjb25zdCBbbWFya2VkRm9sZGVySWQsIHNldE1hcmtlZEZvbGRlcklkXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4oZm9sZGVySWRNYXJrZWRCeURlZmF1bHQgfHwgZGF0YVswXS5pZCk7XG4gIGNvbnN0IHRyZWVzdHJ1Y3R1cmVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCB3cmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3Qgcm9vdExldmVsSWQgPSB1c2VNZW1vKCgpID0+IHV1aWQoKSwgW10pOyAvLyBUT0RPOiB1c2UgdXNlSWQgaG9vayB3aGVuIHdlIHVwZGF0ZSB0byBSZWFjdCAxOFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0T3BlbkZvbGRlcnMoKHByZXYpID0+IHtcbiAgICAgIGRlZmF1bHRPcGVuRm9sZGVycz8uZm9yRWFjaCgoaWQpID0+IHByZXYuYWRkKGlkKSk7XG4gICAgICByZXR1cm4gbmV3IFNldChwcmV2KTtcbiAgICB9KTtcbiAgfSwgW2RlZmF1bHRPcGVuRm9sZGVyc10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsb2FkaW5nKSB7XG4gICAgICBzZXROZXdGb2xkZXIodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtsb2FkaW5nXSk7XG5cbiAgY29uc3Qgb25Ub2dnbGVPcGVuID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRPcGVuRm9sZGVycygocHJldikgPT4ge1xuICAgICAgaWYgKHByZXYuaGFzKGlkKSkge1xuICAgICAgICBwcmV2LmRlbGV0ZShpZCk7XG4gICAgICAgIC8vIERpZCB3ZSBqdXN0IGNsb3NlZCBhIGZvbGRlciB3aXRoIGEgbWFya2VkIGZvbGRlciBpbnNpZGUgaXQ/XG4gICAgICAgIC8vIElmIHNvLCB3ZSBuZWVkIHRvIG1hcmsgdGhlIGZvbGRlciB3ZSBqdXN0IGNsb3NlZC5cbiAgICAgICAgaWYgKG1hcmtlZEZvbGRlcklkKSB7XG4gICAgICAgICAgY29uc3QgY2xvc2luZ0ZvbGRlclBhdGggPSBnZXRQYXRoT2ZGb2xkZXIoZGF0YSwgaWQpO1xuICAgICAgICAgIGNvbnN0IG1hcmtlZEZvbGRlclBhdGggPSBnZXRQYXRoT2ZGb2xkZXIoZGF0YSwgbWFya2VkRm9sZGVySWQpO1xuICAgICAgICAgIGNvbnN0IG1hcmtlZEZvbGRlcklzU3ViUGF0aCA9IGNsb3NpbmdGb2xkZXJQYXRoLmV2ZXJ5KFxuICAgICAgICAgICAgKGZvbGRlcklkLCBfaW5kZXgpID0+IG1hcmtlZEZvbGRlclBhdGhbX2luZGV4XSA9PT0gZm9sZGVySWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobWFya2VkRm9sZGVySXNTdWJQYXRoKSB7XG4gICAgICAgICAgICBzZXRNYXJrZWRGb2xkZXJJZChjbG9zaW5nRm9sZGVyUGF0aFtjbG9zaW5nRm9sZGVyUGF0aC5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2LmFkZChpZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFNldChwcmV2KTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNyZWF0ZU5ld0ZvbGRlciA9IChwcm9wczogeyBpZFBhdGhzOiBudW1iZXJbXTsgcGFyZW50SWQ/OiBzdHJpbmcgfSkgPT4ge1xuICAgIHNldE5ld0ZvbGRlcihwcm9wcyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlTmV3Rm9sZGVyID0gYXN5bmMgKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobmV3Rm9sZGVyKSB7XG4gICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIGNyZWF0ZSBhIG5ldyBmb2xkZXIgd2l0aCB0aGUgbmFtZSBvZiB2YWx1ZS5cbiAgICAgIC8vIEl0cyBsb2NhdGlvbiBpbiBzdHJ1Y3R1cmUgaXMgYmFzZWQgb24gbmV3Rm9sZGVyIG9iamVjdFxuICAgICAgY29uc3QgbmV3Rm9sZGVySWQgPSBhd2FpdCBvbk5ld0ZvbGRlcih7IC4uLm5ld0ZvbGRlciwgdmFsdWUgfSk7XG4gICAgICBpZiAobmV3Rm9sZGVySWQpIHtcbiAgICAgICAgc2V0TWFya2VkRm9sZGVySWQobmV3Rm9sZGVySWQpO1xuICAgICAgICBzZXRGb2N1c2VkRm9sZGVySWQobmV3Rm9sZGVySWQpO1xuICAgICAgICAvLyBPcGVuIGN1cnJlbnQgZm9sZGVyIGluIGNhc2UgaXQgd2FzIGNsb3NlZC4uXG4gICAgICAgIHNldE9wZW5Gb2xkZXJzKChwcmV2KSA9PiB7XG4gICAgICAgICAgaWYgKG5ld0ZvbGRlci5wYXJlbnRJZCkge1xuICAgICAgICAgICAgcHJldi5hZGQobmV3Rm9sZGVyLnBhcmVudElkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTZXQocHJldik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkNhbmNlbE5ld0ZvbGRlciA9ICgpID0+IHtcbiAgICBzZXROZXdGb2xkZXIodW5kZWZpbmVkKTtcbiAgfTtcblxuICBjb25zdCBvbk1hcmtGb2xkZXIgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgIHNldE1hcmtlZEZvbGRlcklkKGlkKTtcbiAgICBzZXRGb2N1c2VkRm9sZGVySWQoaWQpO1xuICB9O1xuXG4gIGNvbnN0IGRpc2FibGVBZGRGb2xkZXJCdXR0b24gPVxuICAgIG1hcmtlZEZvbGRlcklkID09PSB1bmRlZmluZWQgfHwgZ2V0UGF0aE9mRm9sZGVyKGRhdGEsIG1hcmtlZEZvbGRlcklkKS5sZW5ndGggPj0gTUFYX0xFVkVMX0ZPUl9GT0xERVJTO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXt0cmVlc3RydWN0dXJlUmVmfVxuICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICBpZiAod3JhcHBlclJlZi5jdXJyZW50Py5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSAmJiBLRVlCT0FSRF9LRVlTX09GX0lOVEVSRVNULmluY2x1ZGVzKGUua2V5KSkge1xuICAgICAgICAgIGtleWJvYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICBlLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHNldEZvY3VzZWRGb2xkZXJJZCxcbiAgICAgICAgICAgIGZvY3VzZWRGb2xkZXJJZCxcbiAgICAgICAgICAgIG9uVG9nZ2xlT3BlbixcbiAgICAgICAgICAgIG9wZW5Gb2xkZXJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9fT5cbiAgICAgIDxTdHlsZWRMYWJlbCBodG1sRm9yPXtyb290TGV2ZWxJZH0+e2xhYmVsfTwvU3R5bGVkTGFiZWw+XG4gICAgICA8VHJlZVN0cnVjdHVyZVN0eWxlZFdyYXBwZXIgcmVmPXt3cmFwcGVyUmVmfSBpZD17cm9vdExldmVsSWR9IGFyaWEtbGFiZWw9XCJNZW51IHRyZWVcIiByb2xlPVwidHJlZVwiIGZyYW1lZD17ZnJhbWVkfT5cbiAgICAgICAgPEZvbGRlckl0ZW1zXG4gICAgICAgICAgaWRQYXRocz17W119XG4gICAgICAgICAgZGF0YT17ZGF0YX1cbiAgICAgICAgICBlZGl0YWJsZT17ZWRpdGFibGV9XG4gICAgICAgICAgb25Ub2dnbGVPcGVuPXtvblRvZ2dsZU9wZW59XG4gICAgICAgICAgbmV3Rm9sZGVyPXtuZXdGb2xkZXJ9XG4gICAgICAgICAgb25DcmVhdGVOZXdGb2xkZXI9e29uQ3JlYXRlTmV3Rm9sZGVyfVxuICAgICAgICAgIG9uQ2FuY2VsTmV3Rm9sZGVyPXtvbkNhbmNlbE5ld0ZvbGRlcn1cbiAgICAgICAgICBvblNhdmVOZXdGb2xkZXI9e29uU2F2ZU5ld0ZvbGRlcn1cbiAgICAgICAgICBvcGVuRm9sZGVycz17b3BlbkZvbGRlcnN9XG4gICAgICAgICAgbWFya2VkRm9sZGVySWQ9e21hcmtlZEZvbGRlcklkfVxuICAgICAgICAgIG9uTWFya0ZvbGRlcj17b25NYXJrRm9sZGVyfVxuICAgICAgICAgIG9wZW5PbkZvbGRlckNsaWNrPXtvcGVuT25Gb2xkZXJDbGlja31cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGZvY3VzZWRGb2xkZXJJZD17Zm9jdXNlZEZvbGRlcklkfVxuICAgICAgICAgIHNldEZvY3VzZWRGb2xkZXJJZD17c2V0Rm9jdXNlZEZvbGRlcklkfVxuICAgICAgICAgIGZpcnN0TGV2ZWxcbiAgICAgICAgLz5cbiAgICAgIDwvVHJlZVN0cnVjdHVyZVN0eWxlZFdyYXBwZXI+XG4gICAgICB7ZWRpdGFibGUgJiYgKFxuICAgICAgICA8QWRkRm9sZGVyV3JhcHBlcj5cbiAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgdG9vbHRpcD17dCgnbXlOZGxhLm5ld0ZvbGRlclVuZGVyJywge1xuICAgICAgICAgICAgICBmb2xkZXJOYW1lOiBnZXRGb2xkZXJOYW1lKGRhdGEsIG1hcmtlZEZvbGRlcklkKSxcbiAgICAgICAgICAgIH0pfT5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgbGlnaHRcbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVBZGRGb2xkZXJCdXR0b259XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRocyA9IGdldFBhdGhPZkZvbGRlcihkYXRhLCBtYXJrZWRGb2xkZXJJZCB8fCAnJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRQYXRocyA9IGdldElkUGF0aHNPZkZvbGRlcihkYXRhLCBtYXJrZWRGb2xkZXJJZCB8fCAnJyk7XG4gICAgICAgICAgICAgICAgc2V0TmV3Rm9sZGVyKHsgaWRQYXRocywgcGFyZW50SWQ6IHBhdGhzW3BhdGhzLmxlbmd0aCAtIDFdIH0pO1xuICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAge3QoJ215TmRsYS5uZXdGb2xkZXInKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9BZGRGb2xkZXJXcmFwcGVyPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRyZWVTdHJ1Y3R1cmU7XG4iXX0= */"));
|
|
49
|
+
|
|
50
|
+
var AddFolderWrapper = _styled("div", {
|
|
51
|
+
target: "e1dg1gdn1",
|
|
52
|
+
label: "AddFolderWrapper"
|
|
53
|
+
})("display:flex;margin-top:", spacing.xsmall, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVTdHJ1Y3R1cmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJCbUMiLCJmaWxlIjoiVHJlZVN0cnVjdHVyZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMi1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VSZWYsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQG5kbGEvdXRpbCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BuZGxhL2J1dHRvbic7XG5pbXBvcnQgVG9vbHRpcCBmcm9tICdAbmRsYS90b29sdGlwJztcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBzcGFjaW5nLCBmb250cyB9IGZyb20gJ0BuZGxhL2NvcmUnO1xuaW1wb3J0IFRyZWVTdHJ1Y3R1cmVTdHlsZWRXcmFwcGVyIGZyb20gJy4vVHJlZVN0cnVjdHVyZVdyYXBwZXInO1xuaW1wb3J0IEZvbGRlckl0ZW1zIGZyb20gJy4vRm9sZGVySXRlbXMnO1xuaW1wb3J0IHsgZ2V0SWRQYXRoc09mRm9sZGVyLCBnZXRQYXRoT2ZGb2xkZXIsIGdldEZvbGRlck5hbWUgfSBmcm9tICcuL2hlbHBlckZ1bmN0aW9ucyc7XG5pbXBvcnQga2V5Ym9hcmROYXZpZ2F0aW9uLCB7IEtFWUJPQVJEX0tFWVNfT0ZfSU5URVJFU1QgfSBmcm9tICcuL2tleWJvYXJkTmF2aWdhdGlvbi9rZXlib2FyZE5hdmlnYXRpb24nO1xuaW1wb3J0IHsgTmV3Rm9sZGVyUHJvcHMsIFRyZWVTdHJ1Y3R1cmVQcm9wcyB9IGZyb20gJy4vVHJlZVN0cnVjdHVyZS50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBNQVhfTEVWRUxfRk9SX0ZPTERFUlMgPSA0O1xuXG5jb25zdCBTdHlsZWRMYWJlbCA9IHN0eWxlZC5sYWJlbGBcbiAgZm9udC13ZWlnaHQ6ICR7Zm9udHMud2VpZ2h0LnNlbWlib2xkfTtcbmA7XG5cbmNvbnN0IEFkZEZvbGRlcldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tdG9wOiAke3NwYWNpbmcueHNtYWxsfTtcbmA7XG5cbmNvbnN0IFRyZWVTdHJ1Y3R1cmUgPSAoe1xuICBkYXRhLFxuICBsYWJlbCxcbiAgZWRpdGFibGUsXG4gIGxvYWRpbmcsXG4gIG9uTmV3Rm9sZGVyLFxuICBvcGVuT25Gb2xkZXJDbGljayxcbiAgZnJhbWVkLFxuICBmb2xkZXJJZE1hcmtlZEJ5RGVmYXVsdCxcbiAgZGVmYXVsdE9wZW5Gb2xkZXJzLFxufTogVHJlZVN0cnVjdHVyZVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW25ld0ZvbGRlciwgc2V0TmV3Rm9sZGVyXSA9IHVzZVN0YXRlPE5ld0ZvbGRlclByb3BzIHwgdW5kZWZpbmVkPigpO1xuICBjb25zdCBbb3BlbkZvbGRlcnMsIHNldE9wZW5Gb2xkZXJzXSA9IHVzZVN0YXRlPFNldDxzdHJpbmc+PihuZXcgU2V0KGRlZmF1bHRPcGVuRm9sZGVycyB8fCBbXSkpO1xuICBjb25zdCBbZm9jdXNlZEZvbGRlcklkLCBzZXRGb2N1c2VkRm9sZGVySWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICBjb25zdCBbbWFya2VkRm9sZGVySWQsIHNldE1hcmtlZEZvbGRlcklkXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4oZm9sZGVySWRNYXJrZWRCeURlZmF1bHQgfHwgZGF0YVswXS5pZCk7XG4gIGNvbnN0IHRyZWVzdHJ1Y3R1cmVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCB3cmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3Qgcm9vdExldmVsSWQgPSB1c2VNZW1vKCgpID0+IHV1aWQoKSwgW10pOyAvLyBUT0RPOiB1c2UgdXNlSWQgaG9vayB3aGVuIHdlIHVwZGF0ZSB0byBSZWFjdCAxOFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0T3BlbkZvbGRlcnMoKHByZXYpID0+IHtcbiAgICAgIGRlZmF1bHRPcGVuRm9sZGVycz8uZm9yRWFjaCgoaWQpID0+IHByZXYuYWRkKGlkKSk7XG4gICAgICByZXR1cm4gbmV3IFNldChwcmV2KTtcbiAgICB9KTtcbiAgfSwgW2RlZmF1bHRPcGVuRm9sZGVyc10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsb2FkaW5nKSB7XG4gICAgICBzZXROZXdGb2xkZXIodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtsb2FkaW5nXSk7XG5cbiAgY29uc3Qgb25Ub2dnbGVPcGVuID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRPcGVuRm9sZGVycygocHJldikgPT4ge1xuICAgICAgaWYgKHByZXYuaGFzKGlkKSkge1xuICAgICAgICBwcmV2LmRlbGV0ZShpZCk7XG4gICAgICAgIC8vIERpZCB3ZSBqdXN0IGNsb3NlZCBhIGZvbGRlciB3aXRoIGEgbWFya2VkIGZvbGRlciBpbnNpZGUgaXQ/XG4gICAgICAgIC8vIElmIHNvLCB3ZSBuZWVkIHRvIG1hcmsgdGhlIGZvbGRlciB3ZSBqdXN0IGNsb3NlZC5cbiAgICAgICAgaWYgKG1hcmtlZEZvbGRlcklkKSB7XG4gICAgICAgICAgY29uc3QgY2xvc2luZ0ZvbGRlclBhdGggPSBnZXRQYXRoT2ZGb2xkZXIoZGF0YSwgaWQpO1xuICAgICAgICAgIGNvbnN0IG1hcmtlZEZvbGRlclBhdGggPSBnZXRQYXRoT2ZGb2xkZXIoZGF0YSwgbWFya2VkRm9sZGVySWQpO1xuICAgICAgICAgIGNvbnN0IG1hcmtlZEZvbGRlcklzU3ViUGF0aCA9IGNsb3NpbmdGb2xkZXJQYXRoLmV2ZXJ5KFxuICAgICAgICAgICAgKGZvbGRlcklkLCBfaW5kZXgpID0+IG1hcmtlZEZvbGRlclBhdGhbX2luZGV4XSA9PT0gZm9sZGVySWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobWFya2VkRm9sZGVySXNTdWJQYXRoKSB7XG4gICAgICAgICAgICBzZXRNYXJrZWRGb2xkZXJJZChjbG9zaW5nRm9sZGVyUGF0aFtjbG9zaW5nRm9sZGVyUGF0aC5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2LmFkZChpZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFNldChwcmV2KTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNyZWF0ZU5ld0ZvbGRlciA9IChwcm9wczogeyBpZFBhdGhzOiBudW1iZXJbXTsgcGFyZW50SWQ/OiBzdHJpbmcgfSkgPT4ge1xuICAgIHNldE5ld0ZvbGRlcihwcm9wcyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlTmV3Rm9sZGVyID0gYXN5bmMgKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobmV3Rm9sZGVyKSB7XG4gICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIGNyZWF0ZSBhIG5ldyBmb2xkZXIgd2l0aCB0aGUgbmFtZSBvZiB2YWx1ZS5cbiAgICAgIC8vIEl0cyBsb2NhdGlvbiBpbiBzdHJ1Y3R1cmUgaXMgYmFzZWQgb24gbmV3Rm9sZGVyIG9iamVjdFxuICAgICAgY29uc3QgbmV3Rm9sZGVySWQgPSBhd2FpdCBvbk5ld0ZvbGRlcih7IC4uLm5ld0ZvbGRlciwgdmFsdWUgfSk7XG4gICAgICBpZiAobmV3Rm9sZGVySWQpIHtcbiAgICAgICAgc2V0TWFya2VkRm9sZGVySWQobmV3Rm9sZGVySWQpO1xuICAgICAgICBzZXRGb2N1c2VkRm9sZGVySWQobmV3Rm9sZGVySWQpO1xuICAgICAgICAvLyBPcGVuIGN1cnJlbnQgZm9sZGVyIGluIGNhc2UgaXQgd2FzIGNsb3NlZC4uXG4gICAgICAgIHNldE9wZW5Gb2xkZXJzKChwcmV2KSA9PiB7XG4gICAgICAgICAgaWYgKG5ld0ZvbGRlci5wYXJlbnRJZCkge1xuICAgICAgICAgICAgcHJldi5hZGQobmV3Rm9sZGVyLnBhcmVudElkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTZXQocHJldik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkNhbmNlbE5ld0ZvbGRlciA9ICgpID0+IHtcbiAgICBzZXROZXdGb2xkZXIodW5kZWZpbmVkKTtcbiAgfTtcblxuICBjb25zdCBvbk1hcmtGb2xkZXIgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgIHNldE1hcmtlZEZvbGRlcklkKGlkKTtcbiAgICBzZXRGb2N1c2VkRm9sZGVySWQoaWQpO1xuICB9O1xuXG4gIGNvbnN0IGRpc2FibGVBZGRGb2xkZXJCdXR0b24gPVxuICAgIG1hcmtlZEZvbGRlcklkID09PSB1bmRlZmluZWQgfHwgZ2V0UGF0aE9mRm9sZGVyKGRhdGEsIG1hcmtlZEZvbGRlcklkKS5sZW5ndGggPj0gTUFYX0xFVkVMX0ZPUl9GT0xERVJTO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXt0cmVlc3RydWN0dXJlUmVmfVxuICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICBpZiAod3JhcHBlclJlZi5jdXJyZW50Py5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSAmJiBLRVlCT0FSRF9LRVlTX09GX0lOVEVSRVNULmluY2x1ZGVzKGUua2V5KSkge1xuICAgICAgICAgIGtleWJvYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICBlLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHNldEZvY3VzZWRGb2xkZXJJZCxcbiAgICAgICAgICAgIGZvY3VzZWRGb2xkZXJJZCxcbiAgICAgICAgICAgIG9uVG9nZ2xlT3BlbixcbiAgICAgICAgICAgIG9wZW5Gb2xkZXJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9fT5cbiAgICAgIDxTdHlsZWRMYWJlbCBodG1sRm9yPXtyb290TGV2ZWxJZH0+e2xhYmVsfTwvU3R5bGVkTGFiZWw+XG4gICAgICA8VHJlZVN0cnVjdHVyZVN0eWxlZFdyYXBwZXIgcmVmPXt3cmFwcGVyUmVmfSBpZD17cm9vdExldmVsSWR9IGFyaWEtbGFiZWw9XCJNZW51IHRyZWVcIiByb2xlPVwidHJlZVwiIGZyYW1lZD17ZnJhbWVkfT5cbiAgICAgICAgPEZvbGRlckl0ZW1zXG4gICAgICAgICAgaWRQYXRocz17W119XG4gICAgICAgICAgZGF0YT17ZGF0YX1cbiAgICAgICAgICBlZGl0YWJsZT17ZWRpdGFibGV9XG4gICAgICAgICAgb25Ub2dnbGVPcGVuPXtvblRvZ2dsZU9wZW59XG4gICAgICAgICAgbmV3Rm9sZGVyPXtuZXdGb2xkZXJ9XG4gICAgICAgICAgb25DcmVhdGVOZXdGb2xkZXI9e29uQ3JlYXRlTmV3Rm9sZGVyfVxuICAgICAgICAgIG9uQ2FuY2VsTmV3Rm9sZGVyPXtvbkNhbmNlbE5ld0ZvbGRlcn1cbiAgICAgICAgICBvblNhdmVOZXdGb2xkZXI9e29uU2F2ZU5ld0ZvbGRlcn1cbiAgICAgICAgICBvcGVuRm9sZGVycz17b3BlbkZvbGRlcnN9XG4gICAgICAgICAgbWFya2VkRm9sZGVySWQ9e21hcmtlZEZvbGRlcklkfVxuICAgICAgICAgIG9uTWFya0ZvbGRlcj17b25NYXJrRm9sZGVyfVxuICAgICAgICAgIG9wZW5PbkZvbGRlckNsaWNrPXtvcGVuT25Gb2xkZXJDbGlja31cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGZvY3VzZWRGb2xkZXJJZD17Zm9jdXNlZEZvbGRlcklkfVxuICAgICAgICAgIHNldEZvY3VzZWRGb2xkZXJJZD17c2V0Rm9jdXNlZEZvbGRlcklkfVxuICAgICAgICAgIGZpcnN0TGV2ZWxcbiAgICAgICAgLz5cbiAgICAgIDwvVHJlZVN0cnVjdHVyZVN0eWxlZFdyYXBwZXI+XG4gICAgICB7ZWRpdGFibGUgJiYgKFxuICAgICAgICA8QWRkRm9sZGVyV3JhcHBlcj5cbiAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgdG9vbHRpcD17dCgnbXlOZGxhLm5ld0ZvbGRlclVuZGVyJywge1xuICAgICAgICAgICAgICBmb2xkZXJOYW1lOiBnZXRGb2xkZXJOYW1lKGRhdGEsIG1hcmtlZEZvbGRlcklkKSxcbiAgICAgICAgICAgIH0pfT5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgbGlnaHRcbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVBZGRGb2xkZXJCdXR0b259XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRocyA9IGdldFBhdGhPZkZvbGRlcihkYXRhLCBtYXJrZWRGb2xkZXJJZCB8fCAnJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRQYXRocyA9IGdldElkUGF0aHNPZkZvbGRlcihkYXRhLCBtYXJrZWRGb2xkZXJJZCB8fCAnJyk7XG4gICAgICAgICAgICAgICAgc2V0TmV3Rm9sZGVyKHsgaWRQYXRocywgcGFyZW50SWQ6IHBhdGhzW3BhdGhzLmxlbmd0aCAtIDFdIH0pO1xuICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAge3QoJ215TmRsYS5uZXdGb2xkZXInKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9BZGRGb2xkZXJXcmFwcGVyPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRyZWVTdHJ1Y3R1cmU7XG4iXX0= */"));
|
|
54
|
+
|
|
55
|
+
var TreeStructure = function TreeStructure(_ref) {
|
|
56
|
+
var data = _ref.data,
|
|
57
|
+
label = _ref.label,
|
|
58
|
+
editable = _ref.editable,
|
|
59
|
+
loading = _ref.loading,
|
|
60
|
+
onNewFolder = _ref.onNewFolder,
|
|
61
|
+
openOnFolderClick = _ref.openOnFolderClick,
|
|
62
|
+
framed = _ref.framed,
|
|
63
|
+
folderIdMarkedByDefault = _ref.folderIdMarkedByDefault,
|
|
64
|
+
defaultOpenFolders = _ref.defaultOpenFolders;
|
|
65
|
+
|
|
66
|
+
var _useTranslation = useTranslation(),
|
|
67
|
+
t = _useTranslation.t;
|
|
68
|
+
|
|
69
|
+
var _useState = useState(),
|
|
70
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
71
|
+
newFolder = _useState2[0],
|
|
72
|
+
setNewFolder = _useState2[1];
|
|
73
|
+
|
|
74
|
+
var _useState3 = useState(new Set(defaultOpenFolders || [])),
|
|
75
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
76
|
+
openFolders = _useState4[0],
|
|
77
|
+
setOpenFolders = _useState4[1];
|
|
78
|
+
|
|
79
|
+
var _useState5 = useState(),
|
|
80
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
81
|
+
focusedFolderId = _useState6[0],
|
|
82
|
+
setFocusedFolderId = _useState6[1];
|
|
83
|
+
|
|
84
|
+
var _useState7 = useState(folderIdMarkedByDefault || data[0].id),
|
|
85
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
86
|
+
markedFolderId = _useState8[0],
|
|
87
|
+
setMarkedFolderId = _useState8[1];
|
|
88
|
+
|
|
89
|
+
var treestructureRef = useRef(null);
|
|
90
|
+
var wrapperRef = useRef(null);
|
|
91
|
+
var rootLevelId = useMemo(function () {
|
|
92
|
+
return uuid();
|
|
93
|
+
}, []); // TODO: use useId hook when we update to React 18
|
|
94
|
+
|
|
95
|
+
useEffect(function () {
|
|
96
|
+
setOpenFolders(function (prev) {
|
|
97
|
+
defaultOpenFolders === null || defaultOpenFolders === void 0 ? void 0 : defaultOpenFolders.forEach(function (id) {
|
|
98
|
+
return prev.add(id);
|
|
99
|
+
});
|
|
100
|
+
return new Set(prev);
|
|
101
|
+
});
|
|
102
|
+
}, [defaultOpenFolders]);
|
|
103
|
+
useEffect(function () {
|
|
104
|
+
if (!loading) {
|
|
105
|
+
setNewFolder(undefined);
|
|
106
|
+
}
|
|
107
|
+
}, [loading]);
|
|
108
|
+
|
|
109
|
+
var onToggleOpen = function onToggleOpen(id) {
|
|
110
|
+
setOpenFolders(function (prev) {
|
|
111
|
+
if (prev.has(id)) {
|
|
112
|
+
prev["delete"](id); // Did we just closed a folder with a marked folder inside it?
|
|
113
|
+
// If so, we need to mark the folder we just closed.
|
|
114
|
+
|
|
115
|
+
if (markedFolderId) {
|
|
116
|
+
var closingFolderPath = getPathOfFolder(data, id);
|
|
117
|
+
var markedFolderPath = getPathOfFolder(data, markedFolderId);
|
|
118
|
+
var markedFolderIsSubPath = closingFolderPath.every(function (folderId, _index) {
|
|
119
|
+
return markedFolderPath[_index] === folderId;
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
if (markedFolderIsSubPath) {
|
|
123
|
+
setMarkedFolderId(closingFolderPath[closingFolderPath.length - 1]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
} else {
|
|
127
|
+
prev.add(id);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return new Set(prev);
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
var onCreateNewFolder = function onCreateNewFolder(props) {
|
|
135
|
+
setNewFolder(props);
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
var onSaveNewFolder = /*#__PURE__*/function () {
|
|
139
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(value) {
|
|
140
|
+
var newFolderId;
|
|
141
|
+
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
142
|
+
while (1) {
|
|
143
|
+
switch (_context.prev = _context.next) {
|
|
144
|
+
case 0:
|
|
145
|
+
if (!newFolder) {
|
|
146
|
+
_context.next = 5;
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
_context.next = 3;
|
|
151
|
+
return onNewFolder(_objectSpread(_objectSpread({}, newFolder), {}, {
|
|
152
|
+
value: value
|
|
153
|
+
}));
|
|
154
|
+
|
|
155
|
+
case 3:
|
|
156
|
+
newFolderId = _context.sent;
|
|
157
|
+
|
|
158
|
+
if (newFolderId) {
|
|
159
|
+
setMarkedFolderId(newFolderId);
|
|
160
|
+
setFocusedFolderId(newFolderId); // Open current folder in case it was closed..
|
|
161
|
+
|
|
162
|
+
setOpenFolders(function (prev) {
|
|
163
|
+
if (newFolder.parentId) {
|
|
164
|
+
prev.add(newFolder.parentId);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return new Set(prev);
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
case 5:
|
|
172
|
+
case "end":
|
|
173
|
+
return _context.stop();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}, _callee);
|
|
177
|
+
}));
|
|
178
|
+
|
|
179
|
+
return function onSaveNewFolder(_x) {
|
|
180
|
+
return _ref2.apply(this, arguments);
|
|
181
|
+
};
|
|
182
|
+
}();
|
|
183
|
+
|
|
184
|
+
var onCancelNewFolder = function onCancelNewFolder() {
|
|
185
|
+
setNewFolder(undefined);
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
var onMarkFolder = function onMarkFolder(id) {
|
|
189
|
+
setMarkedFolderId(id);
|
|
190
|
+
setFocusedFolderId(id);
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
var disableAddFolderButton = markedFolderId === undefined || getPathOfFolder(data, markedFolderId).length >= MAX_LEVEL_FOR_FOLDERS;
|
|
194
|
+
return ___EmotionJSX("div", {
|
|
195
|
+
ref: treestructureRef,
|
|
196
|
+
onKeyDown: function onKeyDown(e) {
|
|
197
|
+
var _wrapperRef$current;
|
|
198
|
+
|
|
199
|
+
if (((_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.contains(document.activeElement)) && KEYBOARD_KEYS_OF_INTEREST.includes(e.key)) {
|
|
200
|
+
keyboardNavigation({
|
|
201
|
+
e: e,
|
|
202
|
+
data: data,
|
|
203
|
+
setFocusedFolderId: setFocusedFolderId,
|
|
204
|
+
focusedFolderId: focusedFolderId,
|
|
205
|
+
onToggleOpen: onToggleOpen,
|
|
206
|
+
openFolders: openFolders
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}, ___EmotionJSX(StyledLabel, {
|
|
211
|
+
htmlFor: rootLevelId
|
|
212
|
+
}, label), ___EmotionJSX(TreeStructureStyledWrapper, {
|
|
213
|
+
ref: wrapperRef,
|
|
214
|
+
id: rootLevelId,
|
|
215
|
+
"aria-label": "Menu tree",
|
|
216
|
+
role: "tree",
|
|
217
|
+
framed: framed
|
|
218
|
+
}, ___EmotionJSX(FolderItems, {
|
|
219
|
+
idPaths: [],
|
|
220
|
+
data: data,
|
|
221
|
+
editable: editable,
|
|
222
|
+
onToggleOpen: onToggleOpen,
|
|
223
|
+
newFolder: newFolder,
|
|
224
|
+
onCreateNewFolder: onCreateNewFolder,
|
|
225
|
+
onCancelNewFolder: onCancelNewFolder,
|
|
226
|
+
onSaveNewFolder: onSaveNewFolder,
|
|
227
|
+
openFolders: openFolders,
|
|
228
|
+
markedFolderId: markedFolderId,
|
|
229
|
+
onMarkFolder: onMarkFolder,
|
|
230
|
+
openOnFolderClick: openOnFolderClick,
|
|
231
|
+
loading: loading,
|
|
232
|
+
focusedFolderId: focusedFolderId,
|
|
233
|
+
setFocusedFolderId: setFocusedFolderId,
|
|
234
|
+
firstLevel: true
|
|
235
|
+
})), editable && ___EmotionJSX(AddFolderWrapper, null, ___EmotionJSX(Tooltip, {
|
|
236
|
+
tooltip: t('myNdla.newFolderUnder', {
|
|
237
|
+
folderName: getFolderName(data, markedFolderId)
|
|
238
|
+
})
|
|
239
|
+
}, ___EmotionJSX(Button, {
|
|
240
|
+
size: "small",
|
|
241
|
+
light: true,
|
|
242
|
+
disabled: disableAddFolderButton,
|
|
243
|
+
onClick: function onClick() {
|
|
244
|
+
var paths = getPathOfFolder(data, markedFolderId || '');
|
|
245
|
+
var idPaths = getIdPathsOfFolder(data, markedFolderId || '');
|
|
246
|
+
setNewFolder({
|
|
247
|
+
idPaths: idPaths,
|
|
248
|
+
parentId: paths[paths.length - 1]
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
}, t('myNdla.newFolder')))));
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
export default TreeStructure;
|
|
File without changes
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import _styled from "@emotion/styled-base";
|
|
2
|
+
import { css } from '@emotion/core';
|
|
3
|
+
import { colors, misc, spacing } from '@ndla/core';
|
|
4
|
+
|
|
5
|
+
var TreeStructureWrapper = _styled("div", {
|
|
6
|
+
target: "ez53f4u0",
|
|
7
|
+
label: "TreeStructureWrapper"
|
|
8
|
+
})("padding:", spacing.xsmall, ";", function (_ref) {
|
|
9
|
+
var framed = _ref.framed;
|
|
10
|
+
return framed ? /*#__PURE__*/css("border:1px solid ", colors.brand.greyLighter, ";border-radius:", misc.borderRadius, ";max-height:400px;overflow-y:scroll;scroll-behavior:smooth;padding:", spacing.small, ";;label:TreeStructureWrapper;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVTdHJ1Y3R1cmVXcmFwcGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQlciLCJmaWxlIjoiVHJlZVN0cnVjdHVyZVdyYXBwZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjItcHJlc2VudCwgTkRMQS5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEx2MyBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9jb3JlJztcbmltcG9ydCB7IGNvbG9ycywgbWlzYywgc3BhY2luZyB9IGZyb20gJ0BuZGxhL2NvcmUnO1xuXG5jb25zdCBUcmVlU3RydWN0dXJlV3JhcHBlciA9IHN0eWxlZC5kaXY8eyBmcmFtZWQ/OiBib29sZWFuIH0+YFxuICBwYWRkaW5nOiAke3NwYWNpbmcueHNtYWxsfTtcbiAgJHsoeyBmcmFtZWQgfSkgPT5cbiAgICBmcmFtZWRcbiAgICAgID8gY3NzYFxuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7Y29sb3JzLmJyYW5kLmdyZXlMaWdodGVyfTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAke21pc2MuYm9yZGVyUmFkaXVzfTtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiA0MDBweDtcbiAgICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgICAgICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gICAgICAgICAgcGFkZGluZzogJHtzcGFjaW5nLnNtYWxsfTtcbiAgICAgICAgYFxuICAgICAgOiBjc3NgXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IC0ke3NwYWNpbmcubWVkaXVtfTtcbiAgICAgICAgYH1cbiAgdHJhbnNpdGlvbjogJHttaXNjLnRyYW5zaXRpb24uZGVmYXVsdH07XG4gICY6Zm9jdXMtd2l0aGluIHtcbiAgICBib3JkZXItY29sb3I6ICR7Y29sb3JzLmJyYW5kLnByaW1hcnl9O1xuICB9XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBUcmVlU3RydWN0dXJlV3JhcHBlcjtcbiJdfQ== */")) : /*#__PURE__*/css("margin-left:-", spacing.medium, ";;label:TreeStructureWrapper;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVTdHJ1Y3R1cmVXcmFwcGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3QlciLCJmaWxlIjoiVHJlZVN0cnVjdHVyZVdyYXBwZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjItcHJlc2VudCwgTkRMQS5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEx2MyBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9jb3JlJztcbmltcG9ydCB7IGNvbG9ycywgbWlzYywgc3BhY2luZyB9IGZyb20gJ0BuZGxhL2NvcmUnO1xuXG5jb25zdCBUcmVlU3RydWN0dXJlV3JhcHBlciA9IHN0eWxlZC5kaXY8eyBmcmFtZWQ/OiBib29sZWFuIH0+YFxuICBwYWRkaW5nOiAke3NwYWNpbmcueHNtYWxsfTtcbiAgJHsoeyBmcmFtZWQgfSkgPT5cbiAgICBmcmFtZWRcbiAgICAgID8gY3NzYFxuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7Y29sb3JzLmJyYW5kLmdyZXlMaWdodGVyfTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAke21pc2MuYm9yZGVyUmFkaXVzfTtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiA0MDBweDtcbiAgICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgICAgICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gICAgICAgICAgcGFkZGluZzogJHtzcGFjaW5nLnNtYWxsfTtcbiAgICAgICAgYFxuICAgICAgOiBjc3NgXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IC0ke3NwYWNpbmcubWVkaXVtfTtcbiAgICAgICAgYH1cbiAgdHJhbnNpdGlvbjogJHttaXNjLnRyYW5zaXRpb24uZGVmYXVsdH07XG4gICY6Zm9jdXMtd2l0aGluIHtcbiAgICBib3JkZXItY29sb3I6ICR7Y29sb3JzLmJyYW5kLnByaW1hcnl9O1xuICB9XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBUcmVlU3RydWN0dXJlV3JhcHBlcjtcbiJdfQ== */"));
|
|
11
|
+
}, " transition:", misc.transition["default"], ";&:focus-within{border-color:", colors.brand.primary, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVTdHJ1Y3R1cmVXcmFwcGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZNkQiLCJmaWxlIjoiVHJlZVN0cnVjdHVyZVdyYXBwZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjItcHJlc2VudCwgTkRMQS5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEx2MyBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9jb3JlJztcbmltcG9ydCB7IGNvbG9ycywgbWlzYywgc3BhY2luZyB9IGZyb20gJ0BuZGxhL2NvcmUnO1xuXG5jb25zdCBUcmVlU3RydWN0dXJlV3JhcHBlciA9IHN0eWxlZC5kaXY8eyBmcmFtZWQ/OiBib29sZWFuIH0+YFxuICBwYWRkaW5nOiAke3NwYWNpbmcueHNtYWxsfTtcbiAgJHsoeyBmcmFtZWQgfSkgPT5cbiAgICBmcmFtZWRcbiAgICAgID8gY3NzYFxuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7Y29sb3JzLmJyYW5kLmdyZXlMaWdodGVyfTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAke21pc2MuYm9yZGVyUmFkaXVzfTtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiA0MDBweDtcbiAgICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgICAgICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gICAgICAgICAgcGFkZGluZzogJHtzcGFjaW5nLnNtYWxsfTtcbiAgICAgICAgYFxuICAgICAgOiBjc3NgXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IC0ke3NwYWNpbmcubWVkaXVtfTtcbiAgICAgICAgYH1cbiAgdHJhbnNpdGlvbjogJHttaXNjLnRyYW5zaXRpb24uZGVmYXVsdH07XG4gICY6Zm9jdXMtd2l0aGluIHtcbiAgICBib3JkZXItY29sb3I6ICR7Y29sb3JzLmJyYW5kLnByaW1hcnl9O1xuICB9XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBUcmVlU3RydWN0dXJlV3JhcHBlcjtcbiJdfQ== */"));
|
|
12
|
+
|
|
13
|
+
export default TreeStructureWrapper;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
|
+
|
|
3
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
+
|
|
5
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
6
|
+
|
|
7
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
8
|
+
|
|
9
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
10
|
+
|
|
11
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
12
|
+
|
|
13
|
+
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; }
|
|
14
|
+
|
|
15
|
+
var getPathOfFolder = function getPathOfFolder(data, findId) {
|
|
16
|
+
var paths = function paths(dataChildren, path) {
|
|
17
|
+
var _iterator = _createForOfIteratorHelper(dataChildren),
|
|
18
|
+
_step;
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
22
|
+
var _step$value = _step.value,
|
|
23
|
+
id = _step$value.id,
|
|
24
|
+
dataChildrenSub = _step$value.data;
|
|
25
|
+
|
|
26
|
+
if (id === findId) {
|
|
27
|
+
return [].concat(_toConsumableArray(path), [id]);
|
|
28
|
+
} else if (dataChildrenSub === null || dataChildrenSub === void 0 ? void 0 : dataChildrenSub.length) {
|
|
29
|
+
return paths(dataChildrenSub, [].concat(_toConsumableArray(path), [id]));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
} catch (err) {
|
|
33
|
+
_iterator.e(err);
|
|
34
|
+
} finally {
|
|
35
|
+
_iterator.f();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return [];
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
return paths(data, []);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
var getIdPathsOfFolder = function getIdPathsOfFolder(data, findId) {
|
|
45
|
+
var currentPath = [];
|
|
46
|
+
|
|
47
|
+
var paths = function paths(dataChildren, path) {
|
|
48
|
+
dataChildren.forEach(function (_ref, _index) {
|
|
49
|
+
var id = _ref.id,
|
|
50
|
+
dataChildrenSub = _ref.data;
|
|
51
|
+
|
|
52
|
+
if (id === findId) {
|
|
53
|
+
currentPath = [].concat(_toConsumableArray(path), [_index]);
|
|
54
|
+
} else if (dataChildrenSub === null || dataChildrenSub === void 0 ? void 0 : dataChildrenSub.length) {
|
|
55
|
+
paths(dataChildrenSub, [].concat(_toConsumableArray(path), [_index]));
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
paths(data, []);
|
|
61
|
+
return currentPath;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
var getFolderName = function getFolderName(data, findId) {
|
|
65
|
+
if (!findId) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
var folderName;
|
|
70
|
+
|
|
71
|
+
var paths = function paths(dataChildren) {
|
|
72
|
+
dataChildren.some(function (_ref2, _index) {
|
|
73
|
+
var id = _ref2.id,
|
|
74
|
+
name = _ref2.name,
|
|
75
|
+
dataChildrenSub = _ref2.data;
|
|
76
|
+
|
|
77
|
+
if (id === findId) {
|
|
78
|
+
folderName = name;
|
|
79
|
+
return true;
|
|
80
|
+
} else if (dataChildrenSub === null || dataChildrenSub === void 0 ? void 0 : dataChildrenSub.length) {
|
|
81
|
+
return paths(dataChildrenSub);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return false;
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
paths(data);
|
|
89
|
+
return folderName;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export { getPathOfFolder, getIdPathsOfFolder, getFolderName };
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
|
+
|
|
3
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
+
|
|
5
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6
|
+
|
|
7
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
8
|
+
|
|
9
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
10
|
+
|
|
11
|
+
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; }
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Copyright (c) 2022-present, NDLA.
|
|
15
|
+
*
|
|
16
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
17
|
+
* LICENSE file in the root directory of this source tree.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
import { MAX_LEVEL_FOR_FOLDERS } from '../TreeStructure';
|
|
21
|
+
export var KEYBOARD_KEYS_OF_INTEREST = ['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', ' ']; // Traverse upwards, incase parent is last element of its parent..
|
|
22
|
+
|
|
23
|
+
var traverseUpwards = function traverseUpwards(inital, setFocusedFolderId, paths, index) {
|
|
24
|
+
var findParent = inital;
|
|
25
|
+
var parentNextIds = [];
|
|
26
|
+
paths.forEach(function (pathIndex) {
|
|
27
|
+
var nextParent = findParent ? findParent[pathIndex + 1] : undefined;
|
|
28
|
+
parentNextIds.push((nextParent === null || nextParent === void 0 ? void 0 : nextParent.id) || false);
|
|
29
|
+
findParent = findParent[pathIndex].data || [];
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
if (!parentNextIds.length) {
|
|
33
|
+
var _findParent;
|
|
34
|
+
|
|
35
|
+
parentNextIds.push(((_findParent = findParent[index + 1]) === null || _findParent === void 0 ? void 0 : _findParent.id) || false);
|
|
36
|
+
} // We use a reversed version of parentNextIds, filtered out falses, to find the next element
|
|
37
|
+
// No newId? We are at the end of the tree so we wont update.
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
var newId = parentNextIds.reverse().filter(function (id) {
|
|
41
|
+
return id;
|
|
42
|
+
})[0];
|
|
43
|
+
|
|
44
|
+
if (newId) {
|
|
45
|
+
setFocusedFolderId(newId);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
var keyboardNavigation = function keyboardNavigation(_ref) {
|
|
50
|
+
var _document$activeEleme, _elementWithKeyFocus$3;
|
|
51
|
+
|
|
52
|
+
var e = _ref.e,
|
|
53
|
+
data = _ref.data,
|
|
54
|
+
onToggleOpen = _ref.onToggleOpen,
|
|
55
|
+
setFocusedFolderId = _ref.setFocusedFolderId,
|
|
56
|
+
id = _ref.focusedFolderId,
|
|
57
|
+
openFolders = _ref.openFolders;
|
|
58
|
+
|
|
59
|
+
if (e.key === ' ' && ((_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.nodeName) === 'INPUT') {
|
|
60
|
+
return;
|
|
61
|
+
} // We are navigating in the tree.
|
|
62
|
+
// We need to find the next folder in the tree
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
var elementWithKeyFocus = {
|
|
66
|
+
paths: [],
|
|
67
|
+
index: 0
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
var updatePathToElementWithKeyFocus = function updatePathToElementWithKeyFocus(data, paths, parent, parentId) {
|
|
71
|
+
return data.some(function (_ref2, _index) {
|
|
72
|
+
var childData = _ref2.data,
|
|
73
|
+
dataId = _ref2.id,
|
|
74
|
+
url = _ref2.url;
|
|
75
|
+
|
|
76
|
+
if (dataId === id) {
|
|
77
|
+
elementWithKeyFocus.paths = paths;
|
|
78
|
+
elementWithKeyFocus.index = _index;
|
|
79
|
+
elementWithKeyFocus.isOpen = openFolders.has(dataId) && childData && childData.length > 0;
|
|
80
|
+
elementWithKeyFocus.data = childData;
|
|
81
|
+
elementWithKeyFocus.parent = parent;
|
|
82
|
+
elementWithKeyFocus.parentId = parentId;
|
|
83
|
+
elementWithKeyFocus.url = url;
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return childData ? updatePathToElementWithKeyFocus(childData, [].concat(_toConsumableArray(paths), [_index]), _toConsumableArray(childData), dataId) : false;
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
if (!updatePathToElementWithKeyFocus(data, [], data)) {
|
|
92
|
+
// Couldn't find its location in the tree.
|
|
93
|
+
// This should not happen, reset its value to root.
|
|
94
|
+
setFocusedFolderId(e.key === 'ArrowDown' ? data[0].id : undefined);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
e.preventDefault();
|
|
99
|
+
e.stopPropagation();
|
|
100
|
+
|
|
101
|
+
if (e.key === ' ') {
|
|
102
|
+
var simulatedEvent = new MouseEvent('click', {
|
|
103
|
+
bubbles: true,
|
|
104
|
+
cancelable: true,
|
|
105
|
+
view: window
|
|
106
|
+
});
|
|
107
|
+
document.activeElement && document.activeElement.dispatchEvent(simulatedEvent);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (e.key === 'ArrowRight') {
|
|
112
|
+
var _elementWithKeyFocus$;
|
|
113
|
+
|
|
114
|
+
if (!elementWithKeyFocus.isOpen && ((_elementWithKeyFocus$ = elementWithKeyFocus.data) === null || _elementWithKeyFocus$ === void 0 ? void 0 : _elementWithKeyFocus$.length) && id && elementWithKeyFocus.paths.length < MAX_LEVEL_FOR_FOLDERS - 1) {
|
|
115
|
+
onToggleOpen(id);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (e.key === 'ArrowLeft') {
|
|
122
|
+
if (id && elementWithKeyFocus.isOpen) {
|
|
123
|
+
onToggleOpen(id);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (!id && e.key === 'ArrowDown') {
|
|
130
|
+
setFocusedFolderId(data[0].id);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (!id) {
|
|
135
|
+
return;
|
|
136
|
+
} // Move up
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
if (e.key === 'ArrowUp') {
|
|
140
|
+
if (elementWithKeyFocus.index > 0) {
|
|
141
|
+
// Move upwards to the parent folder
|
|
142
|
+
setFocusedFolderId(elementWithKeyFocus.parent ? elementWithKeyFocus.parent[elementWithKeyFocus.index - 1].id : undefined);
|
|
143
|
+
} else if (elementWithKeyFocus.paths.length > 0) {
|
|
144
|
+
elementWithKeyFocus.paths.pop();
|
|
145
|
+
var findParent = data;
|
|
146
|
+
elementWithKeyFocus.paths.forEach(function (index) {
|
|
147
|
+
findParent = findParent[index].data;
|
|
148
|
+
});
|
|
149
|
+
var parentsCurrentIndex = findParent.findIndex(function (_ref3) {
|
|
150
|
+
var id = _ref3.id;
|
|
151
|
+
return id === elementWithKeyFocus.parentId;
|
|
152
|
+
});
|
|
153
|
+
setFocusedFolderId(findParent[parentsCurrentIndex].id);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (elementWithKeyFocus.isOpen) {
|
|
160
|
+
var _elementWithKeyFocus$2;
|
|
161
|
+
|
|
162
|
+
if ((_elementWithKeyFocus$2 = elementWithKeyFocus.data) === null || _elementWithKeyFocus$2 === void 0 ? void 0 : _elementWithKeyFocus$2.length) {
|
|
163
|
+
setFocusedFolderId(elementWithKeyFocus.data[0].id);
|
|
164
|
+
} else {
|
|
165
|
+
// move to next child of parent if any... need new traverse :-/
|
|
166
|
+
traverseUpwards(data, setFocusedFolderId, elementWithKeyFocus.paths, elementWithKeyFocus.index);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (elementWithKeyFocus.parent && elementWithKeyFocus.index < ((_elementWithKeyFocus$3 = elementWithKeyFocus.parent) === null || _elementWithKeyFocus$3 === void 0 ? void 0 : _elementWithKeyFocus$3.length) - 1) {
|
|
173
|
+
// Move downwards to the next child
|
|
174
|
+
setFocusedFolderId(elementWithKeyFocus.parent[elementWithKeyFocus.index + 1].id);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
traverseUpwards(data, setFocusedFolderId, elementWithKeyFocus.paths, elementWithKeyFocus.index);
|
|
179
|
+
return;
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
export default keyboardNavigation;
|
|
File without changes
|
package/es/all.css
CHANGED
|
@@ -1,3 +1,75 @@
|
|
|
1
|
+
/* Used to detect in JavaScript if apps have loaded styles or not. */
|
|
2
|
+
:root {
|
|
3
|
+
--reach-menu-button: 1;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
[data-reach-menu] {
|
|
7
|
+
position: relative;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
[data-reach-menu-popover] {
|
|
11
|
+
display: block;
|
|
12
|
+
position: absolute;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
[data-reach-menu-popover][hidden] {
|
|
16
|
+
display: none;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
[data-reach-menu-list],
|
|
20
|
+
[data-reach-menu-items] {
|
|
21
|
+
display: block;
|
|
22
|
+
white-space: nowrap;
|
|
23
|
+
border: solid 1px hsla(0, 0%, 0%, 0.25);
|
|
24
|
+
background: hsla(0, 100%, 100%, 0.99);
|
|
25
|
+
outline: none;
|
|
26
|
+
padding: 1rem 0;
|
|
27
|
+
font-size: 85%;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
[data-reach-menu-item] {
|
|
31
|
+
display: block;
|
|
32
|
+
user-select: none;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/*
|
|
36
|
+
The dom structure of a MenuLink is reach-menu-item > a,
|
|
37
|
+
so to target all items we can use `data-reach-menu-item`
|
|
38
|
+
*/
|
|
39
|
+
[data-reach-menu-item] {
|
|
40
|
+
/*
|
|
41
|
+
These are styled in one rule instead of something like a[data-reach-menu-item]
|
|
42
|
+
and li[data-reach-menu-item] so that apps don't have to fight specificity and
|
|
43
|
+
can style both li and a menu items with one rule,
|
|
44
|
+
ie: `[data-selected] { background: red; }`.
|
|
45
|
+
Otherwise they'd have to define two styles, one for a and one for li.
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
/* reach-menu-item */
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
|
|
51
|
+
/* a */
|
|
52
|
+
display: block;
|
|
53
|
+
color: inherit;
|
|
54
|
+
font: inherit;
|
|
55
|
+
text-decoration: initial;
|
|
56
|
+
|
|
57
|
+
/* both */
|
|
58
|
+
padding: 5px 20px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* pseudo pseudo selector */
|
|
62
|
+
[data-reach-menu-item][data-selected] {
|
|
63
|
+
background: hsl(211, 81%, 36%);
|
|
64
|
+
color: white;
|
|
65
|
+
outline: none;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
[data-reach-menu-item][aria-disabled] {
|
|
69
|
+
opacity: 0.5;
|
|
70
|
+
cursor: not-allowed;
|
|
71
|
+
}
|
|
72
|
+
|
|
1
73
|
:root {
|
|
2
74
|
--reach-tooltip: 1;
|
|
3
75
|
}
|