diff --git a/src/store/folder/hooks.ts b/src/store/folder/hooks.ts index ddd937d4..6ce9d985 100644 --- a/src/store/folder/hooks.ts +++ b/src/store/folder/hooks.ts @@ -58,27 +58,32 @@ export const useFoldersByView = (view: FolderView): Array => { export const useFoldersAccordionByView = ( view: FolderView, - CustomComponent: ComponentType<{ folder: Folder }> + CustomComponent: ComponentType<{ folder: Folder }>, + itemProps?: (item: AccordionFolder) => Record ): Array => { const roots = useRoots(); return useMemo( () => roots ? mapNodes(Object.values(roots), { - mapFunction: (f) => ({ - id: f.id, - label: f.name, - CustomComponent, - items: [], - folder: f, - disableHover: isRoot(f) - }), + mapFunction: (f) => { + const item = { + id: f.id, + label: f.name, + CustomComponent, + items: [], + folder: f, + disableHover: isRoot(f) + }; + const props = itemProps?.(item) ?? {}; + return { ...item, ...props }; + }, filterFunction: folderViewFilter(view), recursionKey: 'items', sortFunction: sortFolders, deep: false }) : [], - [CustomComponent, roots, view] + [CustomComponent, itemProps, roots, view] ); }; diff --git a/types/exports/index.d.ts b/types/exports/index.d.ts index 8a9493e5..c7efe132 100644 --- a/types/exports/index.d.ts +++ b/types/exports/index.d.ts @@ -31,7 +31,7 @@ import { SoapFetch } from '../account'; import { Mods, TagActionResponse, CreateTagResponse, SoapNotify, SoapRefresh } from '../network'; -import { HistoryParams, ShellModes } from '../misc'; +import { HistoryParams, ShellModes, AccordionFolder } from '../misc'; import { Tag, Tags } from '../tags'; import { Folder, Folders } from '../folder'; import { QueryChip } from '../search'; @@ -219,7 +219,8 @@ export const useFoldersByView: (view: string) => Array; export const useFoldersAccordionByView: ( view: string, - CustomComponent: ComponentType<{ folder: Folder }> + CustomComponent: ComponentType<{ folder: Folder }>, + itemProps?: (item: AccordionFolder) => Record ) => Array; // Run Search diff --git a/types/misc/index.d.ts b/types/misc/index.d.ts index bccd3af3..f53a55b7 100644 --- a/types/misc/index.d.ts +++ b/types/misc/index.d.ts @@ -10,6 +10,7 @@ import { i18n } from 'i18next'; import { ComponentType } from 'react'; import { CarbonioModule, PanelMode } from '../apps'; +// eslint-disable-next-line no-shadow export enum JSNS { ACCOUNT = 'urn:zimbraAccount', ADMIN = 'urn:zimbraAdmin',