import * as React from 'react' import { PageBlock } from 'notion-types' import { CollectionCard } from './collection-card' import { CollectionGroup } from './collection-group' import { CollectionViewProps } from '../types' import { cs } from '../utils' import { EmptyIcon } from '../icons/empty-icon' import { getCollectionGroups } from './collection-utils' import { Property } from './property' import { useNotionContext } from '../context' export const CollectionViewBoard: React.FC = ({ collection, collectionView, collectionData, padding }) => { const isGroupedCollection = collectionView?.format?.collection_group_by if (isGroupedCollection) { const collectionGroups = getCollectionGroups( collection, collectionView, collectionData, padding ) return collectionGroups.map((group, index) => ( ( )} /> )) } return ( ) } function Board({ collectionView, collectionData, collection, padding }) { const { recordMap } = useNotionContext() const { board_cover = { type: 'none' }, board_cover_size = 'medium', board_cover_aspect = 'cover' } = collectionView?.format || {} const boardGroups = collectionView?.format?.board_columns || collectionView?.format?.board_groups2 || [] const boardStyle = React.useMemo( () => ({ paddingLeft: padding }), [padding] ) return (
{boardGroups.map((p, index) => { if (!(collectionData as any).board_columns?.results) { // no groupResults in the data when collection is in a toggle return null } const group = (collectionData as any).board_columns.results![ index ] const schema = collection.schema[p.property] if (!group || !schema || p.hidden) { return null } return (
{group.value?.value ? ( ) : ( No Select )} {group.total}
) })}
{boardGroups.map((p, index) => { const boardResults = (collectionData as any).board_columns?.results if (!boardResults) return null if (!p?.value?.type) return null const schema = collection.schema[p.property] const group = (collectionData as any)[ `results:${p?.value?.type}:${p?.value?.value || 'uncategorized'}` ] if (!group || !schema || p.hidden) { return null } return (
{group.blockIds?.map((blockId: string) => { const block = recordMap.block[blockId]?.value as PageBlock if (!block) return null return ( ) })}
) })}
) }