@ndla/ui 56.0.13-alpha.0 → 56.0.15-alpha.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/dist/panda.buildinfo.json +7 -2
- package/dist/styles.css +24 -4
- package/es/Article/Article.js +4 -1
- package/es/ContentTypeBadge/ContentTypeBadge.js +2 -0
- package/es/TreeStructure/TreeStructure.js +292 -181
- package/es/TreeStructure/helperFunctions.js +0 -3
- package/es/TreeStructure/index.js +1 -2
- package/es/index.js +0 -1
- package/es/locale/messages-en.js +1 -1
- package/es/locale/messages-nb.js +1 -1
- package/es/locale/messages-nn.js +1 -1
- package/es/locale/messages-se.js +1 -1
- package/es/locale/messages-sma.js +1 -1
- package/es/styles.css +24 -4
- package/lib/Article/Article.js +4 -1
- package/lib/ContentTypeBadge/ContentTypeBadge.js +2 -0
- package/lib/TreeStructure/TreeStructure.d.ts +7 -6
- package/lib/TreeStructure/TreeStructure.js +293 -180
- package/lib/TreeStructure/helperFunctions.d.ts +0 -2
- package/lib/TreeStructure/helperFunctions.js +2 -6
- package/lib/TreeStructure/index.d.ts +1 -2
- package/lib/TreeStructure/index.js +2 -3
- package/lib/TreeStructure/types.d.ts +4 -22
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -7
- package/lib/locale/messages-en.js +1 -1
- package/lib/locale/messages-nb.js +1 -1
- package/lib/locale/messages-nn.js +1 -1
- package/lib/locale/messages-se.js +1 -1
- package/lib/locale/messages-sma.js +1 -1
- package/lib/styles.css +24 -4
- package/package.json +7 -8
- package/src/Article/Article.tsx +4 -1
- package/src/ContentTypeBadge/ContentTypeBadge.tsx +2 -0
- package/src/TreeStructure/TreeStructure.stories.tsx +38 -68
- package/src/TreeStructure/TreeStructure.tsx +307 -194
- package/src/TreeStructure/helperFunctions.ts +0 -5
- package/src/TreeStructure/index.ts +1 -2
- package/src/TreeStructure/types.ts +4 -25
- package/src/index.ts +0 -3
- package/src/locale/messages-en.ts +1 -1
- package/src/locale/messages-nb.ts +1 -1
- package/src/locale/messages-nn.ts +1 -1
- package/src/locale/messages-se.ts +1 -1
- package/src/locale/messages-sma.ts +1 -1
- package/es/ProgrammeCard/ProgrammeCard.js +0 -51
- package/es/ProgrammeCard/index.js +0 -9
- package/es/TreeStructure/AddFolderButton.js +0 -80
- package/es/TreeStructure/ComboboxButton.js +0 -127
- package/es/TreeStructure/FolderItem.js +0 -225
- package/es/TreeStructure/FolderItems.js +0 -95
- package/es/TreeStructure/arrowNavigation.js +0 -35
- package/lib/ProgrammeCard/ProgrammeCard.d.ts +0 -23
- package/lib/ProgrammeCard/ProgrammeCard.js +0 -58
- package/lib/ProgrammeCard/index.d.ts +0 -9
- package/lib/ProgrammeCard/index.js +0 -13
- package/lib/TreeStructure/AddFolderButton.d.ts +0 -17
- package/lib/TreeStructure/AddFolderButton.js +0 -85
- package/lib/TreeStructure/ComboboxButton.d.ts +0 -27
- package/lib/TreeStructure/ComboboxButton.js +0 -134
- package/lib/TreeStructure/FolderItem.d.ts +0 -17
- package/lib/TreeStructure/FolderItem.js +0 -230
- package/lib/TreeStructure/FolderItems.d.ts +0 -22
- package/lib/TreeStructure/FolderItems.js +0 -100
- package/lib/TreeStructure/arrowNavigation.d.ts +0 -10
- package/lib/TreeStructure/arrowNavigation.js +0 -42
- package/src/ProgrammeCard/ProgrammeCard.stories.tsx +0 -35
- package/src/ProgrammeCard/ProgrammeCard.tsx +0 -78
- package/src/ProgrammeCard/index.tsx +0 -10
- package/src/TreeStructure/AddFolderButton.tsx +0 -79
- package/src/TreeStructure/ComboboxButton.tsx +0 -172
- package/src/TreeStructure/FolderItem.tsx +0 -307
- package/src/TreeStructure/FolderItems.tsx +0 -121
- package/src/TreeStructure/arrowNavigation.ts +0 -54
|
@@ -1,121 +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 { ReactNode } from "react";
|
|
10
|
-
import styled from "@emotion/styled";
|
|
11
|
-
import { animations } from "@ndla/core";
|
|
12
|
-
import { IFolder } from "@ndla/types-backend/myndla-api";
|
|
13
|
-
import FolderItem from "./FolderItem";
|
|
14
|
-
import { treestructureId } from "./helperFunctions";
|
|
15
|
-
import { CommonFolderItemsProps, NewFolderInputFunc, OnCreatedFunc } from "./types";
|
|
16
|
-
|
|
17
|
-
const StyledUL = styled.ul`
|
|
18
|
-
${animations.fadeInLeft(animations.durations.fast)};
|
|
19
|
-
animation-fill-mode: forwards;
|
|
20
|
-
@media (prefers-reduced-motion: reduce) {
|
|
21
|
-
animation: none;
|
|
22
|
-
}
|
|
23
|
-
list-style: none;
|
|
24
|
-
padding: 0;
|
|
25
|
-
`;
|
|
26
|
-
|
|
27
|
-
const StyledLI = styled.li`
|
|
28
|
-
display: flex;
|
|
29
|
-
flex-direction: column;
|
|
30
|
-
padding: 0;
|
|
31
|
-
&[data-type="navigation"] {
|
|
32
|
-
align-items: flex-start;
|
|
33
|
-
}
|
|
34
|
-
`;
|
|
35
|
-
|
|
36
|
-
export interface FolderItemsProps extends CommonFolderItemsProps {
|
|
37
|
-
folders: IFolder[];
|
|
38
|
-
newFolderParentId: string | undefined;
|
|
39
|
-
onCancelNewFolder: () => void;
|
|
40
|
-
openFolders: string[];
|
|
41
|
-
parentFolder?: IFolder;
|
|
42
|
-
children?: ReactNode;
|
|
43
|
-
onCreate: OnCreatedFunc;
|
|
44
|
-
newFolderInput?: NewFolderInputFunc;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const FolderItems = ({
|
|
48
|
-
folders,
|
|
49
|
-
level,
|
|
50
|
-
loading,
|
|
51
|
-
newFolderParentId,
|
|
52
|
-
onCancelNewFolder,
|
|
53
|
-
openFolders,
|
|
54
|
-
type,
|
|
55
|
-
parentFolder,
|
|
56
|
-
children,
|
|
57
|
-
onCreate,
|
|
58
|
-
newFolderInput,
|
|
59
|
-
...rest
|
|
60
|
-
}: FolderItemsProps) => (
|
|
61
|
-
<StyledUL
|
|
62
|
-
id={
|
|
63
|
-
level === 0 && type === "picker"
|
|
64
|
-
? treestructureId(type, "popup")
|
|
65
|
-
: parentFolder
|
|
66
|
-
? treestructureId(type, `subfolders-${parentFolder.id}`)
|
|
67
|
-
: undefined
|
|
68
|
-
}
|
|
69
|
-
tabIndex={-1}
|
|
70
|
-
aria-labelledby={level === 0 && type === "picker" ? treestructureId(type, "label") : undefined}
|
|
71
|
-
role={level === 0 ? "tree" : "group"}
|
|
72
|
-
>
|
|
73
|
-
{children}
|
|
74
|
-
{folders.map((folder, index) => {
|
|
75
|
-
const { subfolders, id } = folder;
|
|
76
|
-
const isOpen = openFolders?.includes(id);
|
|
77
|
-
|
|
78
|
-
return (
|
|
79
|
-
<StyledLI key={id} tabIndex={-1} role="none" data-type={type}>
|
|
80
|
-
<FolderItem
|
|
81
|
-
index={index}
|
|
82
|
-
folder={folder}
|
|
83
|
-
isOpen={isOpen}
|
|
84
|
-
level={level}
|
|
85
|
-
loading={loading}
|
|
86
|
-
type={type}
|
|
87
|
-
isCreatingFolder={!!newFolderParentId}
|
|
88
|
-
{...rest}
|
|
89
|
-
/>
|
|
90
|
-
{((subfolders && isOpen) || newFolderParentId === id) && (
|
|
91
|
-
<FolderItems
|
|
92
|
-
parentFolder={folder}
|
|
93
|
-
folders={subfolders}
|
|
94
|
-
level={level + 1}
|
|
95
|
-
loading={loading}
|
|
96
|
-
type={type}
|
|
97
|
-
newFolderParentId={newFolderParentId}
|
|
98
|
-
onCancelNewFolder={onCancelNewFolder}
|
|
99
|
-
openFolders={openFolders}
|
|
100
|
-
newFolderInput={newFolderInput}
|
|
101
|
-
onCreate={onCreate}
|
|
102
|
-
{...rest}
|
|
103
|
-
>
|
|
104
|
-
{newFolderParentId === id && (
|
|
105
|
-
<li role="none">
|
|
106
|
-
{newFolderInput?.({
|
|
107
|
-
parentId: id,
|
|
108
|
-
onClose: onCancelNewFolder,
|
|
109
|
-
onCreate,
|
|
110
|
-
})}
|
|
111
|
-
</li>
|
|
112
|
-
)}
|
|
113
|
-
</FolderItems>
|
|
114
|
-
)}
|
|
115
|
-
</StyledLI>
|
|
116
|
-
);
|
|
117
|
-
})}
|
|
118
|
-
</StyledUL>
|
|
119
|
-
);
|
|
120
|
-
|
|
121
|
-
export default FolderItems;
|
|
@@ -1,54 +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 { KeyboardEvent } from "react";
|
|
10
|
-
import { IFolder } from "@ndla/types-backend/myndla-api";
|
|
11
|
-
|
|
12
|
-
const navigateVertical = (
|
|
13
|
-
visibleFolders: IFolder[],
|
|
14
|
-
folderId: string,
|
|
15
|
-
setFocusedFolderId: (id: IFolder) => void,
|
|
16
|
-
direction: 1 | -1,
|
|
17
|
-
) => {
|
|
18
|
-
const currentIndex = visibleFolders.findIndex((folder) => folder.id === folderId);
|
|
19
|
-
const target = visibleFolders[currentIndex + direction];
|
|
20
|
-
if (target !== undefined) {
|
|
21
|
-
setFocusedFolderId(target);
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const arrowKeys = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter"];
|
|
26
|
-
|
|
27
|
-
export const arrowNavigation = (
|
|
28
|
-
e: KeyboardEvent<HTMLElement>,
|
|
29
|
-
id: string,
|
|
30
|
-
visibleFolders: IFolder[],
|
|
31
|
-
setFocusedFolderId: (id: IFolder) => void,
|
|
32
|
-
onOpen: (id: string) => void,
|
|
33
|
-
onClose: (id: string) => void,
|
|
34
|
-
) => {
|
|
35
|
-
if (!arrowKeys.includes(e.key)) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
e.preventDefault();
|
|
40
|
-
e.stopPropagation();
|
|
41
|
-
|
|
42
|
-
switch (e.key) {
|
|
43
|
-
case "ArrowUp":
|
|
44
|
-
return navigateVertical(visibleFolders, id, setFocusedFolderId, -1);
|
|
45
|
-
case "ArrowDown":
|
|
46
|
-
return navigateVertical(visibleFolders, id, setFocusedFolderId, 1);
|
|
47
|
-
case "ArrowLeft":
|
|
48
|
-
return onClose(id);
|
|
49
|
-
case "ArrowRight":
|
|
50
|
-
return onOpen(id);
|
|
51
|
-
default:
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
};
|