@ndla/ui 27.1.2 → 27.1.3
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/TreeStructure/ComboboxButton.js +3 -3
- package/es/TreeStructure/FolderItem.js +5 -8
- package/es/TreeStructure/TreeStructure.js +34 -29
- package/lib/TreeStructure/ComboboxButton.d.ts +2 -2
- package/lib/TreeStructure/ComboboxButton.js +3 -3
- package/lib/TreeStructure/FolderItem.d.ts +1 -1
- package/lib/TreeStructure/FolderItem.js +5 -8
- package/lib/TreeStructure/TreeStructure.d.ts +1 -0
- package/lib/TreeStructure/TreeStructure.js +34 -29
- package/lib/TreeStructure/index.d.ts +1 -1
- package/lib/TreeStructure/types.d.ts +1 -6
- package/lib/index.d.ts +1 -1
- package/package.json +7 -7
- package/src/TreeStructure/ComboboxButton.tsx +3 -3
- package/src/TreeStructure/FolderItem.tsx +0 -2
- package/src/TreeStructure/TreeStructure.tsx +22 -16
- package/src/TreeStructure/index.ts +1 -1
- package/src/TreeStructure/types.ts +1 -7
- package/src/index.ts +1 -1
- package/src/.DS_Store +0 -0
|
@@ -81,6 +81,7 @@ export interface TreeStructureProps extends CommonTreeStructureProps {
|
|
|
81
81
|
label?: string;
|
|
82
82
|
maxLevel?: number;
|
|
83
83
|
newFolderInput?: NewFolderInputFunc;
|
|
84
|
+
onSelectFolder?: (id: string) => void;
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
const TreeStructure = ({
|
|
@@ -101,8 +102,8 @@ const TreeStructure = ({
|
|
|
101
102
|
const [openFolders, setOpenFolders] = useState<string[]>(defaultOpenFolders || []);
|
|
102
103
|
|
|
103
104
|
const [newFolderParentId, setNewFolderParentId] = useState<string | undefined>();
|
|
104
|
-
const [focusedFolder,
|
|
105
|
-
const [selectedFolder,
|
|
105
|
+
const [focusedFolder, _setFocusedFolder] = useState<FolderType | undefined>();
|
|
106
|
+
const [selectedFolder, _setSelectedFolder] = useState<FolderType | undefined>();
|
|
106
107
|
const [showTree, setShowTree] = useState(type === 'navigation');
|
|
107
108
|
|
|
108
109
|
const flattenedFolders = useMemo(() => flattenFolders(folders, openFolders), [folders, openFolders]);
|
|
@@ -122,9 +123,9 @@ const TreeStructure = ({
|
|
|
122
123
|
if (defaultSelectedFolderId !== undefined) {
|
|
123
124
|
const selected = flattenFolders(folders).find((folder) => folder.id === defaultSelectedFolderId);
|
|
124
125
|
if (selected) {
|
|
125
|
-
|
|
126
|
+
_setSelectedFolder(selected);
|
|
126
127
|
if (type === 'picker') {
|
|
127
|
-
|
|
128
|
+
_setFocusedFolder(selected);
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
}
|
|
@@ -138,6 +139,22 @@ const TreeStructure = ({
|
|
|
138
139
|
}
|
|
139
140
|
};
|
|
140
141
|
|
|
142
|
+
const setSelectedFolder = (folder: FolderType) => {
|
|
143
|
+
_setSelectedFolder(folder);
|
|
144
|
+
onSelectFolder?.(folder.id);
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
const setFocusedFolder = (folder: FolderType) => {
|
|
148
|
+
_setFocusedFolder(folder);
|
|
149
|
+
setNewFolderParentId(undefined);
|
|
150
|
+
|
|
151
|
+
ref.current?.focus();
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
const onOpenFolder = (id: string) => {
|
|
155
|
+
setOpenFolders(uniq(openFolders.concat(id)));
|
|
156
|
+
};
|
|
157
|
+
|
|
141
158
|
const onCloseFolder = (id: string) => {
|
|
142
159
|
const closedFolder = flattenedFolders.find((folder) => folder.id === id);
|
|
143
160
|
|
|
@@ -150,14 +167,9 @@ const TreeStructure = ({
|
|
|
150
167
|
setOpenFolders(openFolders.filter((folderId) => folderId !== id));
|
|
151
168
|
};
|
|
152
169
|
|
|
153
|
-
const onOpenFolder = (id: string) => {
|
|
154
|
-
setOpenFolders(uniq(openFolders.concat(id)));
|
|
155
|
-
};
|
|
156
|
-
|
|
157
170
|
const onNewFolderCreated = (newFolder: IFolder | undefined, parentId: string) => {
|
|
158
171
|
if (newFolder) {
|
|
159
172
|
setSelectedFolder(newFolder);
|
|
160
|
-
onSelectFolder?.(newFolder.id);
|
|
161
173
|
setFocusedFolder(newFolder);
|
|
162
174
|
setOpenFolders(uniq(openFolders.concat(parentId)));
|
|
163
175
|
setNewFolderParentId?.(undefined);
|
|
@@ -170,11 +182,6 @@ const TreeStructure = ({
|
|
|
170
182
|
ref.current?.focus();
|
|
171
183
|
};
|
|
172
184
|
|
|
173
|
-
const setFolderFocus = (folder: FolderType) => {
|
|
174
|
-
setFocusedFolder(folder);
|
|
175
|
-
setNewFolderParentId(undefined);
|
|
176
|
-
ref.current?.focus();
|
|
177
|
-
};
|
|
178
185
|
const canAddFolder = showTree && selectedFolder && selectedFolder?.breadcrumbs.length < (maxLevel || 1);
|
|
179
186
|
|
|
180
187
|
return (
|
|
@@ -224,9 +231,8 @@ const TreeStructure = ({
|
|
|
224
231
|
onCancelNewFolder={onCancelNewFolder}
|
|
225
232
|
onCloseFolder={onCloseFolder}
|
|
226
233
|
onOpenFolder={onOpenFolder}
|
|
227
|
-
onSelectFolder={onSelectFolder}
|
|
228
234
|
openFolders={openFolders}
|
|
229
|
-
setFocusedFolder={
|
|
235
|
+
setFocusedFolder={setFocusedFolder}
|
|
230
236
|
setSelectedFolder={setSelectedFolder}
|
|
231
237
|
targetResource={targetResource}
|
|
232
238
|
visibleFolders={flattenedFolders}
|
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { ReactNode } from 'react';
|
|
10
10
|
import { IFolder, IResource } from '@ndla/types-learningpath-api';
|
|
11
|
-
import { MenuItemProps } from '@ndla/button';
|
|
12
11
|
|
|
13
12
|
export interface FolderType extends IFolder {
|
|
14
13
|
icon?: ReactNode;
|
|
@@ -29,13 +28,8 @@ export type NewFolderInputFunc = ({
|
|
|
29
28
|
onCreate: OnCreatedFunc;
|
|
30
29
|
}) => ReactNode;
|
|
31
30
|
|
|
32
|
-
export interface TreeStructureMenuProps extends Omit<MenuItemProps, 'onClick'> {
|
|
33
|
-
onClick: (e: MouseEvent<HTMLDivElement> | undefined, folder: FolderType) => void;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
31
|
export interface CommonTreeStructureProps {
|
|
37
32
|
loading?: boolean;
|
|
38
|
-
onSelectFolder?: (id: string) => void;
|
|
39
33
|
targetResource?: IResource;
|
|
40
34
|
type: TreeStructureType;
|
|
41
35
|
}
|
package/src/index.ts
CHANGED
|
@@ -252,6 +252,6 @@ export { SnackbarProvider, useSnack, BaseSnack, DefaultSnackbar } from './SnackB
|
|
|
252
252
|
export type { Snack, SnackContext } from './SnackBar';
|
|
253
253
|
export { InfoBlock } from './InfoBlock';
|
|
254
254
|
export { TreeStructure } from './TreeStructure';
|
|
255
|
-
export type { FolderType, TreeStructureProps
|
|
255
|
+
export type { FolderType, TreeStructureProps } from './TreeStructure';
|
|
256
256
|
|
|
257
257
|
export { SearchField, SearchResultList, SearchResultItem, ActiveFilters, ToggleSearchButton } from './Search';
|
package/src/.DS_Store
DELETED
|
Binary file
|