Skip to content
This repository was archived by the owner on Jan 24, 2025. It is now read-only.

Commit 20df733

Browse files
NicolaiFrakannimer
authored andcommitted
feat(docz): allow for custom properties in useMenus hook (#1246)
1 parent 87eea50 commit 20df733

File tree

2 files changed

+7
-11
lines changed

2 files changed

+7
-11
lines changed

core/docz/src/hooks/useMenus.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,9 @@ import { Entry, MenuItem, doczState } from '../state'
99

1010
const noMenu = (entry: Entry) => !entry.menu
1111
const fromMenu = (menu: string) => (entry: Entry) => entry.menu === menu
12-
const entryAsMenu = (entry: Entry) => ({
13-
name: entry.name,
14-
route: entry.route,
15-
parent: entry.parent,
16-
})
1712

1813
const entriesOfMenu = (menu: string, entries: Entry[]) =>
19-
entries.filter(fromMenu(menu)).map(entryAsMenu)
14+
entries.filter(fromMenu(menu))
2015

2116
const parseMenu = (entries: Entry[]) => (name: string) => ({
2217
name,
@@ -26,9 +21,9 @@ const parseMenu = (entries: Entry[]) => (name: string) => ({
2621
type Menus = MenuItem[]
2722

2823
const menusFromEntries = (entries: Entry[]) => {
29-
const entriesWithoutMenu = entries.filter(noMenu).map(entryAsMenu) as any
24+
const entriesWithoutMenu = entries.filter(noMenu)
3025
const menus = flatArrFromObject(entries, 'menu').map(parseMenu(entries))
31-
return unionBy('name', menus, entriesWithoutMenu)
26+
return unionBy('name', menus, entriesWithoutMenu as any)
3227
}
3328

3429
const parseItemStr = (item: MenuItem | string) =>
@@ -135,11 +130,11 @@ export const useMenus = (opts?: UseMenusParams) => {
135130
const { entries, config } = useContext(doczState.context)
136131
if (!entries) return null
137132

138-
const arr = entries.map(({ value }) => value)
133+
const arr = entries.map(({ value }) => value) as Entry[]
139134
const entriesMenu = menusFromEntries(arr)
140135
const sorted = useMemo(() => {
141-
const merged = mergeMenus(entriesMenu as MenuItem[], config.menu)
142-
const result = sortMenus(merged, config.menu)
136+
const merged = mergeMenus(entriesMenu as any[], config.menu)
137+
const result = sortMenus(merged, config.menu) as MenuItem[]
143138
return filterMenus(result, opts && opts.filter)
144139
}, [entries, config])
145140

core/docz/src/state.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export interface MenuItem {
2626
menu?: MenuItem[]
2727
order?: number
2828
parent?: string
29+
[key: string]: any
2930
}
3031

3132
export type ThemeConfig = Record<string, any>

0 commit comments

Comments
 (0)