| 12345678910111213141516171819202122232425262728293031323334353637 |
- export type CategoryTreeNodeLike = {
- id: string
- children?: CategoryTreeNodeLike[]
- }
- export function categoryChildCount(node: CategoryTreeNodeLike | null | undefined): number {
- const children = Array.isArray(node?.children) ? node!.children! : []
- return children.length
- }
- export function categoryChildMetaLabel(node: CategoryTreeNodeLike | null | undefined): string {
- const n = categoryChildCount(node)
- return n > 0 ? `${n} 个子类` : '末级'
- }
- export function collectExpandIds(
- nodes: CategoryTreeNodeLike[],
- acc: Record<string, boolean> = {}
- ): Record<string, boolean> {
- for (const node of nodes) {
- if (categoryChildCount(node) > 0) {
- acc[node.id] = true
- collectExpandIds(node.children || [], acc)
- }
- }
- return acc
- }
- export function areAllExpandableExpanded(
- nodes: CategoryTreeNodeLike[],
- expandedIds: Record<string, boolean>
- ): boolean {
- const required = collectExpandIds(nodes, {})
- const ids = Object.keys(required)
- if (!ids.length) return true
- return ids.every((id) => !!expandedIds[id])
- }
|