@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.
@@ -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, setFocusedFolder] = useState<FolderType | undefined>();
105
- const [selectedFolder, setSelectedFolder] = useState<FolderType | undefined>();
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
- setSelectedFolder(selected);
126
+ _setSelectedFolder(selected);
126
127
  if (type === 'picker') {
127
- setFocusedFolder(selected);
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={setFolderFocus}
235
+ setFocusedFolder={setFocusedFolder}
230
236
  setSelectedFolder={setSelectedFolder}
231
237
  targetResource={targetResource}
232
238
  visibleFolders={flattenedFolders}
@@ -7,6 +7,6 @@
7
7
  */
8
8
 
9
9
  import TreeStructure from './TreeStructure';
10
- export type { FolderType, TreeStructureMenuProps } from './types';
10
+ export type { FolderType } from './types';
11
11
  export type { TreeStructureProps } from './TreeStructure';
12
12
  export { TreeStructure };
@@ -6,9 +6,8 @@
6
6
  *
7
7
  */
8
8
 
9
- import { MouseEvent, ReactNode } from 'react';
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, TreeStructureMenuProps } from './TreeStructure';
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