@ndla/ui 30.8.3 → 31.0.0
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 +3 -3
- package/es/Article/ArticleSideBar.js +5 -5
- package/es/AudioPlayer/Controls.js +26 -26
- package/es/AudioPlayer/SpeechControl.js +1 -1
- package/es/Frontpage/FrontpageSearch.js +2 -9
- package/es/MediaList/MediaList.js +1 -0
- package/es/Messages/MessageBox.js +10 -10
- package/es/NDLAFilm/AllMoviesAlphabetically.js +11 -11
- package/es/NDLAFilm/FilmSlideshow.js +7 -7
- package/es/NDLAFilm/MovieGrid.js +4 -4
- package/es/Programme/Programme.js +5 -5
- package/es/ResourceGroup/ResourceItem.js +12 -13
- package/es/ResourceGroup/ResourceList.js +3 -4
- package/es/Search/SearchField.js +2 -3
- package/es/Subject/SubjectNewContent.js +10 -10
- package/es/TreeStructure/AddFolderButton.js +9 -9
- package/es/TreeStructure/ComboboxButton.js +30 -5
- package/es/TreeStructure/FolderItem.js +11 -10
- package/es/TreeStructure/FolderItems.js +28 -37
- package/es/TreeStructure/TreeStructure.js +9 -7
- package/es/i18n/index.js +1 -2
- package/es/index.js +1 -1
- package/lib/Article/Article.js +3 -3
- package/lib/Article/ArticleSideBar.js +5 -5
- package/lib/AudioPlayer/Controls.js +26 -26
- package/lib/AudioPlayer/SpeechControl.js +1 -1
- package/lib/Frontpage/FrontpageSearch.js +2 -9
- package/lib/MediaList/MediaList.js +1 -0
- package/lib/Messages/MessageBox.js +10 -10
- package/lib/NDLAFilm/AllMoviesAlphabetically.js +11 -11
- package/lib/NDLAFilm/FilmSlideshow.js +7 -7
- package/lib/NDLAFilm/MovieGrid.js +4 -4
- package/lib/Programme/Programme.js +5 -5
- package/lib/ResourceGroup/ResourceItem.js +11 -11
- package/lib/ResourceGroup/ResourceList.js +2 -2
- package/lib/Search/SearchField.js +2 -3
- package/lib/Subject/SubjectNewContent.js +10 -10
- package/lib/TreeStructure/AddFolderButton.d.ts +4 -3
- package/lib/TreeStructure/AddFolderButton.js +9 -9
- package/lib/TreeStructure/ComboboxButton.d.ts +8 -6
- package/lib/TreeStructure/ComboboxButton.js +29 -3
- package/lib/TreeStructure/FolderItem.d.ts +5 -3
- package/lib/TreeStructure/FolderItem.js +11 -10
- package/lib/TreeStructure/FolderItems.d.ts +4 -3
- package/lib/TreeStructure/FolderItems.js +28 -36
- package/lib/TreeStructure/TreeStructure.d.ts +3 -2
- package/lib/TreeStructure/TreeStructure.js +9 -7
- package/lib/TreeStructure/arrowNavigation.d.ts +2 -2
- package/lib/TreeStructure/helperFunctions.d.ts +3 -2
- package/lib/TreeStructure/index.d.ts +0 -1
- package/lib/TreeStructure/types.d.ts +5 -9
- package/lib/i18n/index.d.ts +0 -1
- package/lib/i18n/index.js +1 -8
- package/lib/index.d.ts +2 -2
- package/lib/index.js +0 -7
- package/package.json +10 -12
- package/src/Article/Article.tsx +1 -1
- package/src/Article/ArticleSideBar.tsx +1 -1
- package/src/AudioPlayer/Controls.tsx +1 -0
- package/src/AudioPlayer/SpeechControl.tsx +1 -0
- package/src/Frontpage/FrontpageSearch.tsx +0 -7
- package/src/MediaList/MediaList.tsx +1 -0
- package/src/Messages/MessageBox.tsx +1 -1
- package/src/NDLAFilm/AllMoviesAlphabetically.tsx +1 -1
- package/src/NDLAFilm/FilmSlideshow.tsx +1 -1
- package/src/NDLAFilm/MovieGrid.tsx +2 -1
- package/src/Programme/Programme.tsx +1 -2
- package/src/ResourceGroup/ResourceItem.tsx +1 -2
- package/src/ResourceGroup/ResourceList.tsx +1 -2
- package/src/Search/SearchField.tsx +1 -2
- package/src/Subject/SubjectNewContent.tsx +2 -2
- package/src/TreeStructure/AddFolderButton.tsx +18 -19
- package/src/TreeStructure/ComboboxButton.tsx +52 -26
- package/src/TreeStructure/FolderItem.tsx +10 -7
- package/src/TreeStructure/FolderItems.tsx +31 -36
- package/src/TreeStructure/TreeStructure.tsx +8 -6
- package/src/TreeStructure/arrowNavigation.ts +5 -5
- package/src/TreeStructure/helperFunctions.ts +4 -3
- package/src/TreeStructure/index.ts +0 -1
- package/src/TreeStructure/types.ts +5 -10
- package/src/i18n/index.ts +0 -1
- package/src/index.ts +2 -2
- package/es/TreeStructure/NavigationLink.js +0 -91
- package/es/i18n/formatMessage.js +0 -45
- package/lib/TreeStructure/NavigationLink.d.ts +0 -14
- package/lib/TreeStructure/NavigationLink.js +0 -93
- package/lib/i18n/formatMessage.d.ts +0 -14
- package/lib/i18n/formatMessage.js +0 -53
- package/src/TreeStructure/NavigationLink.tsx +0 -107
- package/src/i18n/__tests__/formatMessage-test.ts +0 -34
- package/src/i18n/formatMessage.ts +0 -61
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import _styled from "@emotion/styled/base";
|
|
2
|
-
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
3
|
-
/**
|
|
4
|
-
* Copyright (c) 2022-present, NDLA.
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the GPLv3 license found in the
|
|
7
|
-
* LICENSE file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { colors, fonts, spacing } from '@ndla/core';
|
|
12
|
-
import React, { useEffect, useRef } from 'react';
|
|
13
|
-
import SafeLink from '@ndla/safelink';
|
|
14
|
-
import { arrowNavigation } from './arrowNavigation';
|
|
15
|
-
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
16
|
-
import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
17
|
-
var StyledSafeLink = /*#__PURE__*/_styled(SafeLink, {
|
|
18
|
-
target: "et3arba1",
|
|
19
|
-
label: "StyledSafeLink"
|
|
20
|
-
})("display:grid;grid-template-columns:", spacing.medium, " 1fr;align-items:center;padding:", spacing.xxsmall, ";margin:", spacing.xsmall, " 0;gap:", spacing.xxsmall, ";box-shadow:none;color:", function (_ref) {
|
|
21
|
-
var selected = _ref.selected;
|
|
22
|
-
return selected ? colors.brand.primary : colors.text.primary;
|
|
23
|
-
}, ";font-weight:", function (_ref2) {
|
|
24
|
-
var selected = _ref2.selected;
|
|
25
|
-
return selected ? fonts.weight.semibold : fonts.weight.normal;
|
|
26
|
-
}, ";", fonts.sizes('16px'), ";:hover,:focus{color:", colors.brand.primary, ";}svg{height:26px;width:26px;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmlnYXRpb25MaW5rLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQm9EIiwiZmlsZSI6Ik5hdmlnYXRpb25MaW5rLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIyLXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgY29sb3JzLCBmb250cywgc3BhY2luZyB9IGZyb20gJ0BuZGxhL2NvcmUnO1xuaW1wb3J0IFJlYWN0LCB7IEtleWJvYXJkRXZlbnQsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFNhZmVMaW5rIGZyb20gJ0BuZGxhL3NhZmVsaW5rJztcbmltcG9ydCB7IGFycm93TmF2aWdhdGlvbiB9IGZyb20gJy4vYXJyb3dOYXZpZ2F0aW9uJztcbmltcG9ydCB7IENvbW1vbkZvbGRlckl0ZW1zUHJvcHMsIEZvbGRlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIFN0eWxlZFByb3BzIHtcbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWRTYWZlTGluayA9IHN0eWxlZChTYWZlTGluayk8U3R5bGVkUHJvcHM+YFxuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICR7c3BhY2luZy5tZWRpdW19IDFmcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogJHtzcGFjaW5nLnh4c21hbGx9O1xuICBtYXJnaW46ICR7c3BhY2luZy54c21hbGx9IDA7XG4gIGdhcDogJHtzcGFjaW5nLnh4c21hbGx9O1xuICBib3gtc2hhZG93OiBub25lO1xuXG4gIGNvbG9yOiAkeyh7IHNlbGVjdGVkIH0pID0+IChzZWxlY3RlZCA/IGNvbG9ycy5icmFuZC5wcmltYXJ5IDogY29sb3JzLnRleHQucHJpbWFyeSl9O1xuICBmb250LXdlaWdodDogJHsoeyBzZWxlY3RlZCB9KSA9PiAoc2VsZWN0ZWQgPyBmb250cy53ZWlnaHQuc2VtaWJvbGQgOiBmb250cy53ZWlnaHQubm9ybWFsKX07XG4gICR7Zm9udHMuc2l6ZXMoJzE2cHgnKX07XG5cbiAgOmhvdmVyLFxuICA6Zm9jdXMge1xuICAgIGNvbG9yOiAke2NvbG9ycy5icmFuZC5wcmltYXJ5fTtcbiAgfVxuICBzdmcge1xuICAgIGhlaWdodDogMjZweDtcbiAgICB3aWR0aDogMjZweDtcbiAgfVxuYDtcblxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5gO1xuXG5pbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBDb21tb25Gb2xkZXJJdGVtc1Byb3BzIHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBmb2xkZXI6IEZvbGRlclR5cGU7XG59XG5cbmNvbnN0IE5hdmlnYXRpb25MaW5rID0gKHtcbiAgbG9hZGluZyxcbiAgZm9sZGVyLFxuICBzZWxlY3RlZEZvbGRlcixcbiAgZm9jdXNlZEZvbGRlcixcbiAgc2V0U2VsZWN0ZWRGb2xkZXIsXG4gIHNldEZvY3VzZWRGb2xkZXIsXG4gIHZpc2libGVGb2xkZXJzLFxuICBvbk9wZW5Gb2xkZXIsXG4gIG9uQ2xvc2VGb2xkZXIsXG59OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IGlkLCBpY29uLCBuYW1lIH0gPSBmb2xkZXI7XG4gIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRGb2xkZXIgJiYgc2VsZWN0ZWRGb2xkZXIuaWQgPT09IGlkO1xuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQgJiBIVE1MQW5jaG9yRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGZvY3VzZWQgPSBmb2N1c2VkRm9sZGVyPy5pZCA9PT0gaWQ7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgc2V0U2VsZWN0ZWRGb2xkZXIoZm9sZGVyKTtcbiAgICAgIHNldEZvY3VzZWRGb2xkZXIoZm9sZGVyKTtcbiAgICB9XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZm9jdXNlZEZvbGRlcj8uaWQgPT09IGlkKSB7XG4gICAgICByZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICB9XG4gIH0sIFtmb2N1c2VkRm9sZGVyLCByZWYsIGlkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU2FmZUxpbmtcbiAgICAgIHJvbGU9XCJ0cmVlaXRlbVwiXG4gICAgICByZWY9e3JlZn1cbiAgICAgIG9uS2V5RG93bj17KGU6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgIHNldFNlbGVjdGVkRm9sZGVyKGZvbGRlcik7XG4gICAgICAgICAgc2V0Rm9jdXNlZEZvbGRlcihmb2xkZXIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhcnJvd05hdmlnYXRpb24oZSwgaWQsIHZpc2libGVGb2xkZXJzLCBzZXRGb2N1c2VkRm9sZGVyLCBvbk9wZW5Gb2xkZXIsIG9uQ2xvc2VGb2xkZXIpO1xuICAgICAgfX1cbiAgICAgIGFyaWEtY3VycmVudD17c2VsZWN0ZWQgPyAncGFnZScgOiB1bmRlZmluZWR9XG4gICAgICB0YWJJbmRleD17c2VsZWN0ZWQgfHwgZm9jdXNlZCA/IDAgOiAtMX1cbiAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgIG9uRm9jdXM9eygpID0+IHNldEZvY3VzZWRGb2xkZXIoZm9sZGVyKX1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgdG89e2xvYWRpbmcgPyAnJyA6IGAvbWlubmRsYS8ke2lkfWB9PlxuICAgICAgPEljb25XcmFwcGVyPntpY29ufTwvSWNvbldyYXBwZXI+XG4gICAgICB7bmFtZX1cbiAgICA8L1N0eWxlZFNhZmVMaW5rPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTmF2aWdhdGlvbkxpbms7XG4iXX0= */"));
|
|
27
|
-
var IconWrapper = /*#__PURE__*/_styled("span", {
|
|
28
|
-
target: "et3arba0",
|
|
29
|
-
label: "IconWrapper"
|
|
30
|
-
})(process.env.NODE_ENV === "production" ? {
|
|
31
|
-
name: "1wnowod",
|
|
32
|
-
styles: "display:flex;align-items:center;justify-content:center"
|
|
33
|
-
} : {
|
|
34
|
-
name: "1wnowod",
|
|
35
|
-
styles: "display:flex;align-items:center;justify-content:center",
|
|
36
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmlnYXRpb25MaW5rLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwQytCIiwiZmlsZSI6Ik5hdmlnYXRpb25MaW5rLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIyLXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgY29sb3JzLCBmb250cywgc3BhY2luZyB9IGZyb20gJ0BuZGxhL2NvcmUnO1xuaW1wb3J0IFJlYWN0LCB7IEtleWJvYXJkRXZlbnQsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFNhZmVMaW5rIGZyb20gJ0BuZGxhL3NhZmVsaW5rJztcbmltcG9ydCB7IGFycm93TmF2aWdhdGlvbiB9IGZyb20gJy4vYXJyb3dOYXZpZ2F0aW9uJztcbmltcG9ydCB7IENvbW1vbkZvbGRlckl0ZW1zUHJvcHMsIEZvbGRlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIFN0eWxlZFByb3BzIHtcbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWRTYWZlTGluayA9IHN0eWxlZChTYWZlTGluayk8U3R5bGVkUHJvcHM+YFxuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICR7c3BhY2luZy5tZWRpdW19IDFmcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogJHtzcGFjaW5nLnh4c21hbGx9O1xuICBtYXJnaW46ICR7c3BhY2luZy54c21hbGx9IDA7XG4gIGdhcDogJHtzcGFjaW5nLnh4c21hbGx9O1xuICBib3gtc2hhZG93OiBub25lO1xuXG4gIGNvbG9yOiAkeyh7IHNlbGVjdGVkIH0pID0+IChzZWxlY3RlZCA/IGNvbG9ycy5icmFuZC5wcmltYXJ5IDogY29sb3JzLnRleHQucHJpbWFyeSl9O1xuICBmb250LXdlaWdodDogJHsoeyBzZWxlY3RlZCB9KSA9PiAoc2VsZWN0ZWQgPyBmb250cy53ZWlnaHQuc2VtaWJvbGQgOiBmb250cy53ZWlnaHQubm9ybWFsKX07XG4gICR7Zm9udHMuc2l6ZXMoJzE2cHgnKX07XG5cbiAgOmhvdmVyLFxuICA6Zm9jdXMge1xuICAgIGNvbG9yOiAke2NvbG9ycy5icmFuZC5wcmltYXJ5fTtcbiAgfVxuICBzdmcge1xuICAgIGhlaWdodDogMjZweDtcbiAgICB3aWR0aDogMjZweDtcbiAgfVxuYDtcblxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5gO1xuXG5pbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBDb21tb25Gb2xkZXJJdGVtc1Byb3BzIHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBmb2xkZXI6IEZvbGRlclR5cGU7XG59XG5cbmNvbnN0IE5hdmlnYXRpb25MaW5rID0gKHtcbiAgbG9hZGluZyxcbiAgZm9sZGVyLFxuICBzZWxlY3RlZEZvbGRlcixcbiAgZm9jdXNlZEZvbGRlcixcbiAgc2V0U2VsZWN0ZWRGb2xkZXIsXG4gIHNldEZvY3VzZWRGb2xkZXIsXG4gIHZpc2libGVGb2xkZXJzLFxuICBvbk9wZW5Gb2xkZXIsXG4gIG9uQ2xvc2VGb2xkZXIsXG59OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IGlkLCBpY29uLCBuYW1lIH0gPSBmb2xkZXI7XG4gIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRGb2xkZXIgJiYgc2VsZWN0ZWRGb2xkZXIuaWQgPT09IGlkO1xuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQgJiBIVE1MQW5jaG9yRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGZvY3VzZWQgPSBmb2N1c2VkRm9sZGVyPy5pZCA9PT0gaWQ7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgc2V0U2VsZWN0ZWRGb2xkZXIoZm9sZGVyKTtcbiAgICAgIHNldEZvY3VzZWRGb2xkZXIoZm9sZGVyKTtcbiAgICB9XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZm9jdXNlZEZvbGRlcj8uaWQgPT09IGlkKSB7XG4gICAgICByZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICB9XG4gIH0sIFtmb2N1c2VkRm9sZGVyLCByZWYsIGlkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU2FmZUxpbmtcbiAgICAgIHJvbGU9XCJ0cmVlaXRlbVwiXG4gICAgICByZWY9e3JlZn1cbiAgICAgIG9uS2V5RG93bj17KGU6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgIHNldFNlbGVjdGVkRm9sZGVyKGZvbGRlcik7XG4gICAgICAgICAgc2V0Rm9jdXNlZEZvbGRlcihmb2xkZXIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhcnJvd05hdmlnYXRpb24oZSwgaWQsIHZpc2libGVGb2xkZXJzLCBzZXRGb2N1c2VkRm9sZGVyLCBvbk9wZW5Gb2xkZXIsIG9uQ2xvc2VGb2xkZXIpO1xuICAgICAgfX1cbiAgICAgIGFyaWEtY3VycmVudD17c2VsZWN0ZWQgPyAncGFnZScgOiB1bmRlZmluZWR9XG4gICAgICB0YWJJbmRleD17c2VsZWN0ZWQgfHwgZm9jdXNlZCA/IDAgOiAtMX1cbiAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgIG9uRm9jdXM9eygpID0+IHNldEZvY3VzZWRGb2xkZXIoZm9sZGVyKX1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgdG89e2xvYWRpbmcgPyAnJyA6IGAvbWlubmRsYS8ke2lkfWB9PlxuICAgICAgPEljb25XcmFwcGVyPntpY29ufTwvSWNvbldyYXBwZXI+XG4gICAgICB7bmFtZX1cbiAgICA8L1N0eWxlZFNhZmVMaW5rPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTmF2aWdhdGlvbkxpbms7XG4iXX0= */",
|
|
37
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
38
|
-
});
|
|
39
|
-
var NavigationLink = function NavigationLink(_ref3) {
|
|
40
|
-
var loading = _ref3.loading,
|
|
41
|
-
folder = _ref3.folder,
|
|
42
|
-
selectedFolder = _ref3.selectedFolder,
|
|
43
|
-
focusedFolder = _ref3.focusedFolder,
|
|
44
|
-
setSelectedFolder = _ref3.setSelectedFolder,
|
|
45
|
-
setFocusedFolder = _ref3.setFocusedFolder,
|
|
46
|
-
visibleFolders = _ref3.visibleFolders,
|
|
47
|
-
onOpenFolder = _ref3.onOpenFolder,
|
|
48
|
-
onCloseFolder = _ref3.onCloseFolder;
|
|
49
|
-
var id = folder.id,
|
|
50
|
-
icon = folder.icon,
|
|
51
|
-
name = folder.name;
|
|
52
|
-
var selected = selectedFolder && selectedFolder.id === id;
|
|
53
|
-
var ref = useRef(null);
|
|
54
|
-
var focused = (focusedFolder === null || focusedFolder === void 0 ? void 0 : focusedFolder.id) === id;
|
|
55
|
-
var handleClick = function handleClick() {
|
|
56
|
-
if (!selected) {
|
|
57
|
-
setSelectedFolder(folder);
|
|
58
|
-
setFocusedFolder(folder);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
useEffect(function () {
|
|
62
|
-
if ((focusedFolder === null || focusedFolder === void 0 ? void 0 : focusedFolder.id) === id) {
|
|
63
|
-
var _ref$current;
|
|
64
|
-
(_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
|
|
65
|
-
}
|
|
66
|
-
}, [focusedFolder, ref, id]);
|
|
67
|
-
return _jsxs(StyledSafeLink, {
|
|
68
|
-
role: "treeitem",
|
|
69
|
-
ref: ref,
|
|
70
|
-
onKeyDown: function onKeyDown(e) {
|
|
71
|
-
if (e.key === 'Enter') {
|
|
72
|
-
setSelectedFolder(folder);
|
|
73
|
-
setFocusedFolder(folder);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
arrowNavigation(e, id, visibleFolders, setFocusedFolder, onOpenFolder, onCloseFolder);
|
|
77
|
-
},
|
|
78
|
-
"aria-current": selected ? 'page' : undefined,
|
|
79
|
-
tabIndex: selected || focused ? 0 : -1,
|
|
80
|
-
selected: selected,
|
|
81
|
-
onFocus: function onFocus() {
|
|
82
|
-
return setFocusedFolder(folder);
|
|
83
|
-
},
|
|
84
|
-
onClick: handleClick,
|
|
85
|
-
to: loading ? '' : "/minndla/".concat(id),
|
|
86
|
-
children: [_jsx(IconWrapper, {
|
|
87
|
-
children: icon
|
|
88
|
-
}), name]
|
|
89
|
-
});
|
|
90
|
-
};
|
|
91
|
-
export default NavigationLink;
|
package/es/i18n/formatMessage.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2017-present, NDLA.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import invariant from 'invariant';
|
|
10
|
-
export var formatMessage = function formatMessage(locale, messages, getMessageFormat, id) {
|
|
11
|
-
var values = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
|
|
12
|
-
// `id` is a required parameter.
|
|
13
|
-
invariant(id, 'An `id` must be provided to format a message.');
|
|
14
|
-
var message = messages && messages[id];
|
|
15
|
-
var hasValues = Object.keys(values).length > 0;
|
|
16
|
-
|
|
17
|
-
// Avoid expensive message formatting for simple messages without values. In
|
|
18
|
-
// development messages will always be formatted in case of missing values.
|
|
19
|
-
if (!hasValues && process.env.NODE_ENV === 'production') {
|
|
20
|
-
return message || id;
|
|
21
|
-
}
|
|
22
|
-
var formattedMessage;
|
|
23
|
-
if (message) {
|
|
24
|
-
try {
|
|
25
|
-
var formatter = getMessageFormat(message, locale, {});
|
|
26
|
-
formattedMessage = formatter.format(values);
|
|
27
|
-
} catch (e) {
|
|
28
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
29
|
-
// eslint-disable-next-line no-console
|
|
30
|
-
console.error("Error formatting message: \"".concat(id, "\" for locale: \"").concat(locale, "\"\n").concat(e));
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
} else if (process.env.NODE_ENV !== 'production') {
|
|
34
|
-
// eslint-disable-next-line no-console
|
|
35
|
-
console.error("Missing message: \"".concat(id, "\" for locale: \"").concat(locale, "\", using id as fallback"));
|
|
36
|
-
return id;
|
|
37
|
-
}
|
|
38
|
-
if (!formattedMessage) {
|
|
39
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
40
|
-
// eslint-disable-next-line no-console
|
|
41
|
-
console.error("Cannot format message: \"".concat(id, "\", using message source as fallback."));
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return formattedMessage || message || id;
|
|
45
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022-present, NDLA.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
import { CommonFolderItemsProps, FolderType } from './types';
|
|
9
|
-
interface Props extends CommonFolderItemsProps {
|
|
10
|
-
isOpen: boolean;
|
|
11
|
-
folder: FolderType;
|
|
12
|
-
}
|
|
13
|
-
declare const NavigationLink: ({ loading, folder, selectedFolder, focusedFolder, setSelectedFolder, setFocusedFolder, visibleFolders, onOpenFolder, onCloseFolder, }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
14
|
-
export default NavigationLink;
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports["default"] = void 0;
|
|
8
|
-
var _base = _interopRequireDefault(require("@emotion/styled/base"));
|
|
9
|
-
var _core = require("@ndla/core");
|
|
10
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
var _safelink = _interopRequireDefault(require("@ndla/safelink"));
|
|
12
|
-
var _arrowNavigation = require("./arrowNavigation");
|
|
13
|
-
var _jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
14
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
17
|
-
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
18
|
-
var StyledSafeLink = /*#__PURE__*/(0, _base["default"])(_safelink["default"], {
|
|
19
|
-
target: "et3arba1",
|
|
20
|
-
label: "StyledSafeLink"
|
|
21
|
-
})("display:grid;grid-template-columns:", _core.spacing.medium, " 1fr;align-items:center;padding:", _core.spacing.xxsmall, ";margin:", _core.spacing.xsmall, " 0;gap:", _core.spacing.xxsmall, ";box-shadow:none;color:", function (_ref) {
|
|
22
|
-
var selected = _ref.selected;
|
|
23
|
-
return selected ? _core.colors.brand.primary : _core.colors.text.primary;
|
|
24
|
-
}, ";font-weight:", function (_ref2) {
|
|
25
|
-
var selected = _ref2.selected;
|
|
26
|
-
return selected ? _core.fonts.weight.semibold : _core.fonts.weight.normal;
|
|
27
|
-
}, ";", _core.fonts.sizes('16px'), ";:hover,:focus{color:", _core.colors.brand.primary, ";}svg{height:26px;width:26px;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmlnYXRpb25MaW5rLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQm9EIiwiZmlsZSI6Ik5hdmlnYXRpb25MaW5rLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIyLXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgY29sb3JzLCBmb250cywgc3BhY2luZyB9IGZyb20gJ0BuZGxhL2NvcmUnO1xuaW1wb3J0IFJlYWN0LCB7IEtleWJvYXJkRXZlbnQsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFNhZmVMaW5rIGZyb20gJ0BuZGxhL3NhZmVsaW5rJztcbmltcG9ydCB7IGFycm93TmF2aWdhdGlvbiB9IGZyb20gJy4vYXJyb3dOYXZpZ2F0aW9uJztcbmltcG9ydCB7IENvbW1vbkZvbGRlckl0ZW1zUHJvcHMsIEZvbGRlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIFN0eWxlZFByb3BzIHtcbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWRTYWZlTGluayA9IHN0eWxlZChTYWZlTGluayk8U3R5bGVkUHJvcHM+YFxuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICR7c3BhY2luZy5tZWRpdW19IDFmcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogJHtzcGFjaW5nLnh4c21hbGx9O1xuICBtYXJnaW46ICR7c3BhY2luZy54c21hbGx9IDA7XG4gIGdhcDogJHtzcGFjaW5nLnh4c21hbGx9O1xuICBib3gtc2hhZG93OiBub25lO1xuXG4gIGNvbG9yOiAkeyh7IHNlbGVjdGVkIH0pID0+IChzZWxlY3RlZCA/IGNvbG9ycy5icmFuZC5wcmltYXJ5IDogY29sb3JzLnRleHQucHJpbWFyeSl9O1xuICBmb250LXdlaWdodDogJHsoeyBzZWxlY3RlZCB9KSA9PiAoc2VsZWN0ZWQgPyBmb250cy53ZWlnaHQuc2VtaWJvbGQgOiBmb250cy53ZWlnaHQubm9ybWFsKX07XG4gICR7Zm9udHMuc2l6ZXMoJzE2cHgnKX07XG5cbiAgOmhvdmVyLFxuICA6Zm9jdXMge1xuICAgIGNvbG9yOiAke2NvbG9ycy5icmFuZC5wcmltYXJ5fTtcbiAgfVxuICBzdmcge1xuICAgIGhlaWdodDogMjZweDtcbiAgICB3aWR0aDogMjZweDtcbiAgfVxuYDtcblxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5gO1xuXG5pbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBDb21tb25Gb2xkZXJJdGVtc1Byb3BzIHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBmb2xkZXI6IEZvbGRlclR5cGU7XG59XG5cbmNvbnN0IE5hdmlnYXRpb25MaW5rID0gKHtcbiAgbG9hZGluZyxcbiAgZm9sZGVyLFxuICBzZWxlY3RlZEZvbGRlcixcbiAgZm9jdXNlZEZvbGRlcixcbiAgc2V0U2VsZWN0ZWRGb2xkZXIsXG4gIHNldEZvY3VzZWRGb2xkZXIsXG4gIHZpc2libGVGb2xkZXJzLFxuICBvbk9wZW5Gb2xkZXIsXG4gIG9uQ2xvc2VGb2xkZXIsXG59OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IGlkLCBpY29uLCBuYW1lIH0gPSBmb2xkZXI7XG4gIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRGb2xkZXIgJiYgc2VsZWN0ZWRGb2xkZXIuaWQgPT09IGlkO1xuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQgJiBIVE1MQW5jaG9yRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGZvY3VzZWQgPSBmb2N1c2VkRm9sZGVyPy5pZCA9PT0gaWQ7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgc2V0U2VsZWN0ZWRGb2xkZXIoZm9sZGVyKTtcbiAgICAgIHNldEZvY3VzZWRGb2xkZXIoZm9sZGVyKTtcbiAgICB9XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZm9jdXNlZEZvbGRlcj8uaWQgPT09IGlkKSB7XG4gICAgICByZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICB9XG4gIH0sIFtmb2N1c2VkRm9sZGVyLCByZWYsIGlkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU2FmZUxpbmtcbiAgICAgIHJvbGU9XCJ0cmVlaXRlbVwiXG4gICAgICByZWY9e3JlZn1cbiAgICAgIG9uS2V5RG93bj17KGU6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgIHNldFNlbGVjdGVkRm9sZGVyKGZvbGRlcik7XG4gICAgICAgICAgc2V0Rm9jdXNlZEZvbGRlcihmb2xkZXIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhcnJvd05hdmlnYXRpb24oZSwgaWQsIHZpc2libGVGb2xkZXJzLCBzZXRGb2N1c2VkRm9sZGVyLCBvbk9wZW5Gb2xkZXIsIG9uQ2xvc2VGb2xkZXIpO1xuICAgICAgfX1cbiAgICAgIGFyaWEtY3VycmVudD17c2VsZWN0ZWQgPyAncGFnZScgOiB1bmRlZmluZWR9XG4gICAgICB0YWJJbmRleD17c2VsZWN0ZWQgfHwgZm9jdXNlZCA/IDAgOiAtMX1cbiAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgIG9uRm9jdXM9eygpID0+IHNldEZvY3VzZWRGb2xkZXIoZm9sZGVyKX1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgdG89e2xvYWRpbmcgPyAnJyA6IGAvbWlubmRsYS8ke2lkfWB9PlxuICAgICAgPEljb25XcmFwcGVyPntpY29ufTwvSWNvbldyYXBwZXI+XG4gICAgICB7bmFtZX1cbiAgICA8L1N0eWxlZFNhZmVMaW5rPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTmF2aWdhdGlvbkxpbms7XG4iXX0= */"));
|
|
28
|
-
var IconWrapper = /*#__PURE__*/(0, _base["default"])("span", {
|
|
29
|
-
target: "et3arba0",
|
|
30
|
-
label: "IconWrapper"
|
|
31
|
-
})(process.env.NODE_ENV === "production" ? {
|
|
32
|
-
name: "1wnowod",
|
|
33
|
-
styles: "display:flex;align-items:center;justify-content:center"
|
|
34
|
-
} : {
|
|
35
|
-
name: "1wnowod",
|
|
36
|
-
styles: "display:flex;align-items:center;justify-content:center",
|
|
37
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmlnYXRpb25MaW5rLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwQytCIiwiZmlsZSI6Ik5hdmlnYXRpb25MaW5rLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIyLXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgY29sb3JzLCBmb250cywgc3BhY2luZyB9IGZyb20gJ0BuZGxhL2NvcmUnO1xuaW1wb3J0IFJlYWN0LCB7IEtleWJvYXJkRXZlbnQsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFNhZmVMaW5rIGZyb20gJ0BuZGxhL3NhZmVsaW5rJztcbmltcG9ydCB7IGFycm93TmF2aWdhdGlvbiB9IGZyb20gJy4vYXJyb3dOYXZpZ2F0aW9uJztcbmltcG9ydCB7IENvbW1vbkZvbGRlckl0ZW1zUHJvcHMsIEZvbGRlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIFN0eWxlZFByb3BzIHtcbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWRTYWZlTGluayA9IHN0eWxlZChTYWZlTGluayk8U3R5bGVkUHJvcHM+YFxuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICR7c3BhY2luZy5tZWRpdW19IDFmcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogJHtzcGFjaW5nLnh4c21hbGx9O1xuICBtYXJnaW46ICR7c3BhY2luZy54c21hbGx9IDA7XG4gIGdhcDogJHtzcGFjaW5nLnh4c21hbGx9O1xuICBib3gtc2hhZG93OiBub25lO1xuXG4gIGNvbG9yOiAkeyh7IHNlbGVjdGVkIH0pID0+IChzZWxlY3RlZCA/IGNvbG9ycy5icmFuZC5wcmltYXJ5IDogY29sb3JzLnRleHQucHJpbWFyeSl9O1xuICBmb250LXdlaWdodDogJHsoeyBzZWxlY3RlZCB9KSA9PiAoc2VsZWN0ZWQgPyBmb250cy53ZWlnaHQuc2VtaWJvbGQgOiBmb250cy53ZWlnaHQubm9ybWFsKX07XG4gICR7Zm9udHMuc2l6ZXMoJzE2cHgnKX07XG5cbiAgOmhvdmVyLFxuICA6Zm9jdXMge1xuICAgIGNvbG9yOiAke2NvbG9ycy5icmFuZC5wcmltYXJ5fTtcbiAgfVxuICBzdmcge1xuICAgIGhlaWdodDogMjZweDtcbiAgICB3aWR0aDogMjZweDtcbiAgfVxuYDtcblxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5gO1xuXG5pbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBDb21tb25Gb2xkZXJJdGVtc1Byb3BzIHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBmb2xkZXI6IEZvbGRlclR5cGU7XG59XG5cbmNvbnN0IE5hdmlnYXRpb25MaW5rID0gKHtcbiAgbG9hZGluZyxcbiAgZm9sZGVyLFxuICBzZWxlY3RlZEZvbGRlcixcbiAgZm9jdXNlZEZvbGRlcixcbiAgc2V0U2VsZWN0ZWRGb2xkZXIsXG4gIHNldEZvY3VzZWRGb2xkZXIsXG4gIHZpc2libGVGb2xkZXJzLFxuICBvbk9wZW5Gb2xkZXIsXG4gIG9uQ2xvc2VGb2xkZXIsXG59OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IGlkLCBpY29uLCBuYW1lIH0gPSBmb2xkZXI7XG4gIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRGb2xkZXIgJiYgc2VsZWN0ZWRGb2xkZXIuaWQgPT09IGlkO1xuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQgJiBIVE1MQW5jaG9yRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGZvY3VzZWQgPSBmb2N1c2VkRm9sZGVyPy5pZCA9PT0gaWQ7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgc2V0U2VsZWN0ZWRGb2xkZXIoZm9sZGVyKTtcbiAgICAgIHNldEZvY3VzZWRGb2xkZXIoZm9sZGVyKTtcbiAgICB9XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZm9jdXNlZEZvbGRlcj8uaWQgPT09IGlkKSB7XG4gICAgICByZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICB9XG4gIH0sIFtmb2N1c2VkRm9sZGVyLCByZWYsIGlkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU2FmZUxpbmtcbiAgICAgIHJvbGU9XCJ0cmVlaXRlbVwiXG4gICAgICByZWY9e3JlZn1cbiAgICAgIG9uS2V5RG93bj17KGU6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgIHNldFNlbGVjdGVkRm9sZGVyKGZvbGRlcik7XG4gICAgICAgICAgc2V0Rm9jdXNlZEZvbGRlcihmb2xkZXIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhcnJvd05hdmlnYXRpb24oZSwgaWQsIHZpc2libGVGb2xkZXJzLCBzZXRGb2N1c2VkRm9sZGVyLCBvbk9wZW5Gb2xkZXIsIG9uQ2xvc2VGb2xkZXIpO1xuICAgICAgfX1cbiAgICAgIGFyaWEtY3VycmVudD17c2VsZWN0ZWQgPyAncGFnZScgOiB1bmRlZmluZWR9XG4gICAgICB0YWJJbmRleD17c2VsZWN0ZWQgfHwgZm9jdXNlZCA/IDAgOiAtMX1cbiAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgIG9uRm9jdXM9eygpID0+IHNldEZvY3VzZWRGb2xkZXIoZm9sZGVyKX1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgdG89e2xvYWRpbmcgPyAnJyA6IGAvbWlubmRsYS8ke2lkfWB9PlxuICAgICAgPEljb25XcmFwcGVyPntpY29ufTwvSWNvbldyYXBwZXI+XG4gICAgICB7bmFtZX1cbiAgICA8L1N0eWxlZFNhZmVMaW5rPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTmF2aWdhdGlvbkxpbms7XG4iXX0= */",
|
|
38
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
39
|
-
});
|
|
40
|
-
var NavigationLink = function NavigationLink(_ref3) {
|
|
41
|
-
var loading = _ref3.loading,
|
|
42
|
-
folder = _ref3.folder,
|
|
43
|
-
selectedFolder = _ref3.selectedFolder,
|
|
44
|
-
focusedFolder = _ref3.focusedFolder,
|
|
45
|
-
setSelectedFolder = _ref3.setSelectedFolder,
|
|
46
|
-
setFocusedFolder = _ref3.setFocusedFolder,
|
|
47
|
-
visibleFolders = _ref3.visibleFolders,
|
|
48
|
-
onOpenFolder = _ref3.onOpenFolder,
|
|
49
|
-
onCloseFolder = _ref3.onCloseFolder;
|
|
50
|
-
var id = folder.id,
|
|
51
|
-
icon = folder.icon,
|
|
52
|
-
name = folder.name;
|
|
53
|
-
var selected = selectedFolder && selectedFolder.id === id;
|
|
54
|
-
var ref = (0, _react.useRef)(null);
|
|
55
|
-
var focused = (focusedFolder === null || focusedFolder === void 0 ? void 0 : focusedFolder.id) === id;
|
|
56
|
-
var handleClick = function handleClick() {
|
|
57
|
-
if (!selected) {
|
|
58
|
-
setSelectedFolder(folder);
|
|
59
|
-
setFocusedFolder(folder);
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
(0, _react.useEffect)(function () {
|
|
63
|
-
if ((focusedFolder === null || focusedFolder === void 0 ? void 0 : focusedFolder.id) === id) {
|
|
64
|
-
var _ref$current;
|
|
65
|
-
(_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
|
|
66
|
-
}
|
|
67
|
-
}, [focusedFolder, ref, id]);
|
|
68
|
-
return (0, _jsxRuntime.jsxs)(StyledSafeLink, {
|
|
69
|
-
role: "treeitem",
|
|
70
|
-
ref: ref,
|
|
71
|
-
onKeyDown: function onKeyDown(e) {
|
|
72
|
-
if (e.key === 'Enter') {
|
|
73
|
-
setSelectedFolder(folder);
|
|
74
|
-
setFocusedFolder(folder);
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
(0, _arrowNavigation.arrowNavigation)(e, id, visibleFolders, setFocusedFolder, onOpenFolder, onCloseFolder);
|
|
78
|
-
},
|
|
79
|
-
"aria-current": selected ? 'page' : undefined,
|
|
80
|
-
tabIndex: selected || focused ? 0 : -1,
|
|
81
|
-
selected: selected,
|
|
82
|
-
onFocus: function onFocus() {
|
|
83
|
-
return setFocusedFolder(folder);
|
|
84
|
-
},
|
|
85
|
-
onClick: handleClick,
|
|
86
|
-
to: loading ? '' : "/minndla/".concat(id),
|
|
87
|
-
children: [(0, _jsxRuntime.jsx)(IconWrapper, {
|
|
88
|
-
children: icon
|
|
89
|
-
}), name]
|
|
90
|
-
});
|
|
91
|
-
};
|
|
92
|
-
var _default = NavigationLink;
|
|
93
|
-
exports["default"] = _default;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2017-present, NDLA.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
interface Messages {
|
|
9
|
-
[key: string]: string;
|
|
10
|
-
}
|
|
11
|
-
export declare const formatMessage: (locale: string, messages: Messages, getMessageFormat: any, id: string, values?: {
|
|
12
|
-
[key: string]: any;
|
|
13
|
-
}) => string;
|
|
14
|
-
export {};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.formatMessage = void 0;
|
|
7
|
-
var _invariant = _interopRequireDefault(require("invariant"));
|
|
8
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
/**
|
|
10
|
-
* Copyright (c) 2017-present, NDLA.
|
|
11
|
-
*
|
|
12
|
-
* This source code is licensed under the GPLv3 license found in the
|
|
13
|
-
* LICENSE file in the root directory of this source tree.
|
|
14
|
-
*
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
var formatMessage = function formatMessage(locale, messages, getMessageFormat, id) {
|
|
18
|
-
var values = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
|
|
19
|
-
// `id` is a required parameter.
|
|
20
|
-
(0, _invariant["default"])(id, 'An `id` must be provided to format a message.');
|
|
21
|
-
var message = messages && messages[id];
|
|
22
|
-
var hasValues = Object.keys(values).length > 0;
|
|
23
|
-
|
|
24
|
-
// Avoid expensive message formatting for simple messages without values. In
|
|
25
|
-
// development messages will always be formatted in case of missing values.
|
|
26
|
-
if (!hasValues && process.env.NODE_ENV === 'production') {
|
|
27
|
-
return message || id;
|
|
28
|
-
}
|
|
29
|
-
var formattedMessage;
|
|
30
|
-
if (message) {
|
|
31
|
-
try {
|
|
32
|
-
var formatter = getMessageFormat(message, locale, {});
|
|
33
|
-
formattedMessage = formatter.format(values);
|
|
34
|
-
} catch (e) {
|
|
35
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
36
|
-
// eslint-disable-next-line no-console
|
|
37
|
-
console.error("Error formatting message: \"".concat(id, "\" for locale: \"").concat(locale, "\"\n").concat(e));
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
} else if (process.env.NODE_ENV !== 'production') {
|
|
41
|
-
// eslint-disable-next-line no-console
|
|
42
|
-
console.error("Missing message: \"".concat(id, "\" for locale: \"").concat(locale, "\", using id as fallback"));
|
|
43
|
-
return id;
|
|
44
|
-
}
|
|
45
|
-
if (!formattedMessage) {
|
|
46
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
47
|
-
// eslint-disable-next-line no-console
|
|
48
|
-
console.error("Cannot format message: \"".concat(id, "\", using message source as fallback."));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return formattedMessage || message || id;
|
|
52
|
-
};
|
|
53
|
-
exports.formatMessage = formatMessage;
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022-present, NDLA.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import styled from '@emotion/styled';
|
|
10
|
-
import { colors, fonts, spacing } from '@ndla/core';
|
|
11
|
-
import React, { KeyboardEvent, useEffect, useRef } from 'react';
|
|
12
|
-
import SafeLink from '@ndla/safelink';
|
|
13
|
-
import { arrowNavigation } from './arrowNavigation';
|
|
14
|
-
import { CommonFolderItemsProps, FolderType } from './types';
|
|
15
|
-
|
|
16
|
-
interface StyledProps {
|
|
17
|
-
selected?: boolean;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const StyledSafeLink = styled(SafeLink)<StyledProps>`
|
|
21
|
-
display: grid;
|
|
22
|
-
grid-template-columns: ${spacing.medium} 1fr;
|
|
23
|
-
align-items: center;
|
|
24
|
-
padding: ${spacing.xxsmall};
|
|
25
|
-
margin: ${spacing.xsmall} 0;
|
|
26
|
-
gap: ${spacing.xxsmall};
|
|
27
|
-
box-shadow: none;
|
|
28
|
-
|
|
29
|
-
color: ${({ selected }) => (selected ? colors.brand.primary : colors.text.primary)};
|
|
30
|
-
font-weight: ${({ selected }) => (selected ? fonts.weight.semibold : fonts.weight.normal)};
|
|
31
|
-
${fonts.sizes('16px')};
|
|
32
|
-
|
|
33
|
-
:hover,
|
|
34
|
-
:focus {
|
|
35
|
-
color: ${colors.brand.primary};
|
|
36
|
-
}
|
|
37
|
-
svg {
|
|
38
|
-
height: 26px;
|
|
39
|
-
width: 26px;
|
|
40
|
-
}
|
|
41
|
-
`;
|
|
42
|
-
|
|
43
|
-
const IconWrapper = styled.span`
|
|
44
|
-
display: flex;
|
|
45
|
-
align-items: center;
|
|
46
|
-
justify-content: center;
|
|
47
|
-
`;
|
|
48
|
-
|
|
49
|
-
interface Props extends CommonFolderItemsProps {
|
|
50
|
-
isOpen: boolean;
|
|
51
|
-
folder: FolderType;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const NavigationLink = ({
|
|
55
|
-
loading,
|
|
56
|
-
folder,
|
|
57
|
-
selectedFolder,
|
|
58
|
-
focusedFolder,
|
|
59
|
-
setSelectedFolder,
|
|
60
|
-
setFocusedFolder,
|
|
61
|
-
visibleFolders,
|
|
62
|
-
onOpenFolder,
|
|
63
|
-
onCloseFolder,
|
|
64
|
-
}: Props) => {
|
|
65
|
-
const { id, icon, name } = folder;
|
|
66
|
-
const selected = selectedFolder && selectedFolder.id === id;
|
|
67
|
-
const ref = useRef<HTMLButtonElement & HTMLAnchorElement>(null);
|
|
68
|
-
const focused = focusedFolder?.id === id;
|
|
69
|
-
|
|
70
|
-
const handleClick = () => {
|
|
71
|
-
if (!selected) {
|
|
72
|
-
setSelectedFolder(folder);
|
|
73
|
-
setFocusedFolder(folder);
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
useEffect(() => {
|
|
78
|
-
if (focusedFolder?.id === id) {
|
|
79
|
-
ref.current?.focus();
|
|
80
|
-
}
|
|
81
|
-
}, [focusedFolder, ref, id]);
|
|
82
|
-
|
|
83
|
-
return (
|
|
84
|
-
<StyledSafeLink
|
|
85
|
-
role="treeitem"
|
|
86
|
-
ref={ref}
|
|
87
|
-
onKeyDown={(e: KeyboardEvent<HTMLElement>) => {
|
|
88
|
-
if (e.key === 'Enter') {
|
|
89
|
-
setSelectedFolder(folder);
|
|
90
|
-
setFocusedFolder(folder);
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
arrowNavigation(e, id, visibleFolders, setFocusedFolder, onOpenFolder, onCloseFolder);
|
|
94
|
-
}}
|
|
95
|
-
aria-current={selected ? 'page' : undefined}
|
|
96
|
-
tabIndex={selected || focused ? 0 : -1}
|
|
97
|
-
selected={selected}
|
|
98
|
-
onFocus={() => setFocusedFolder(folder)}
|
|
99
|
-
onClick={handleClick}
|
|
100
|
-
to={loading ? '' : `/minndla/${id}`}>
|
|
101
|
-
<IconWrapper>{icon}</IconWrapper>
|
|
102
|
-
{name}
|
|
103
|
-
</StyledSafeLink>
|
|
104
|
-
);
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
export default NavigationLink;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2016-present, NDLA.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/* eslint-env jest */
|
|
10
|
-
import IntlMessageFormat from 'intl-messageformat';
|
|
11
|
-
import memoizeIntlConstructor from 'intl-format-cache';
|
|
12
|
-
import { formatMessage } from '../formatMessage';
|
|
13
|
-
|
|
14
|
-
const getMessageFormat = memoizeIntlConstructor(IntlMessageFormat);
|
|
15
|
-
const locale = 'nb';
|
|
16
|
-
const messages = {
|
|
17
|
-
helloworld: 'Hello world',
|
|
18
|
-
'test.me': 'Test me {test}',
|
|
19
|
-
'welcome.to.my.unittest': 'Welcome to my unittest',
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
test('@ndla/i18n/formatMessage message with matching ID', () => {
|
|
23
|
-
expect(formatMessage(locale, messages, getMessageFormat, 'helloworld')).toBe('Hello world');
|
|
24
|
-
});
|
|
25
|
-
test('@ndla/i18n/formatMessage message without matching ID', () => {
|
|
26
|
-
expect(formatMessage(locale, messages, getMessageFormat, 'does.not.exists')).toBe('does.not.exists');
|
|
27
|
-
});
|
|
28
|
-
test('@ndla/i18n/formatMessage matching message with value', () => {
|
|
29
|
-
expect(
|
|
30
|
-
formatMessage(locale, messages, getMessageFormat, 'test.me', {
|
|
31
|
-
test: '1337',
|
|
32
|
-
}),
|
|
33
|
-
).toBe('Test me 1337');
|
|
34
|
-
});
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2017-present, NDLA.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import invariant from 'invariant';
|
|
10
|
-
|
|
11
|
-
interface Messages {
|
|
12
|
-
[key: string]: string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export const formatMessage = (
|
|
16
|
-
locale: string,
|
|
17
|
-
messages: Messages,
|
|
18
|
-
getMessageFormat: any,
|
|
19
|
-
id: string,
|
|
20
|
-
values: { [key: string]: any } = {},
|
|
21
|
-
): string => {
|
|
22
|
-
// `id` is a required parameter.
|
|
23
|
-
invariant(id, 'An `id` must be provided to format a message.');
|
|
24
|
-
|
|
25
|
-
const message = messages && messages[id];
|
|
26
|
-
const hasValues = Object.keys(values).length > 0;
|
|
27
|
-
|
|
28
|
-
// Avoid expensive message formatting for simple messages without values. In
|
|
29
|
-
// development messages will always be formatted in case of missing values.
|
|
30
|
-
if (!hasValues && process.env.NODE_ENV === 'production') {
|
|
31
|
-
return message || id;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
let formattedMessage;
|
|
35
|
-
|
|
36
|
-
if (message) {
|
|
37
|
-
try {
|
|
38
|
-
const formatter = getMessageFormat(message, locale, {});
|
|
39
|
-
|
|
40
|
-
formattedMessage = formatter.format(values);
|
|
41
|
-
} catch (e) {
|
|
42
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
43
|
-
// eslint-disable-next-line no-console
|
|
44
|
-
console.error(`Error formatting message: "${id}" for locale: "${locale}"\n${e}`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
} else if (process.env.NODE_ENV !== 'production') {
|
|
48
|
-
// eslint-disable-next-line no-console
|
|
49
|
-
console.error(`Missing message: "${id}" for locale: "${locale}", using id as fallback`);
|
|
50
|
-
return id;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (!formattedMessage) {
|
|
54
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
55
|
-
// eslint-disable-next-line no-console
|
|
56
|
-
console.error(`Cannot format message: "${id}", using message source as fallback.`);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return formattedMessage || message || id;
|
|
61
|
-
};
|