@@ -6,12 +6,9 @@ import {
66 getTextContent
77} from 'notion-utils'
88import { useLocalStorage , useWindowSize } from 'react-use'
9- import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
109
1110import { CollectionRow } from './collection-row'
1211import { CollectionViewIcon } from '../icons/collection-view-icon'
13- import CheckIcon from '../icons/check'
14- import { ChevronDownIcon } from '../icons/chevron-down-icon'
1512import { CollectionView } from './collection-view'
1613import { PropertyImplMemo } from './property'
1714import { PageIcon } from '../components/page-icon'
@@ -123,7 +120,7 @@ const CollectionViewBlock: React.FC<{
123120 recordMap . collection_query [ collectionId ] ?. [ collectionViewId ]
124121 const parentPage = getBlockParentPage ( block , recordMap )
125122
126- const { style , width, padding } = React . useMemo ( ( ) => {
123+ const { width, padding } = React . useMemo ( ( ) => {
127124 const style : React . CSSProperties = { }
128125
129126 if ( collectionView ?. type !== 'table' && collectionView ?. type !== 'board' ) {
@@ -185,86 +182,69 @@ const CollectionViewBlock: React.FC<{
185182 }
186183
187184 return (
188- < div className = { cs ( 'notion-collection' , className ) } >
189- < div className = 'notion-collection-header' style = { style } >
190- { title && (
191- < div className = 'notion-collection-header-title' >
192- < PageIcon
193- block = { block }
194- className = 'notion-page-title-icon'
195- hideDefaultIcon
185+ < >
186+ < div >
187+ < div >
188+ { viewIds . length > 1 && showCollectionViewDropdown && (
189+ < CollectionViewTabs
190+ collectionViewId = { collectionViewId }
191+ viewIds = { viewIds }
192+ onChangeView = { onChangeView }
196193 />
197-
198- { title }
199- </ div >
200- ) }
201-
202- { viewIds . length > 1 && showCollectionViewDropdown && (
203- < CollectionViewDropdownMenu
204- collectionView = { collectionView }
205- collectionViewId = { collectionViewId }
206- viewIds = { viewIds }
207- onChangeView = { onChangeView }
208- />
209- ) }
194+ ) }
195+ </ div >
196+ < div className = 'notion-collection-header' >
197+ { /*TODO: only show if no full DB*/ }
198+ { title && (
199+ < div className = 'notion-collection-header-title' >
200+ < PageIcon
201+ block = { block }
202+ className = 'notion-page-title-icon'
203+ hideDefaultIcon
204+ />
205+ { title }
206+ </ div >
207+ ) }
208+ </ div >
210209 </ div >
211-
212- < CollectionView
213- collection = { collection }
214- collectionView = { collectionView }
215- collectionData = { collectionData }
216- padding = { padding }
217- width = { width }
218- />
219- </ div >
210+ < div className = { cs ( 'notion-collection' , className ) } >
211+ < CollectionView
212+ collection = { collection }
213+ collectionView = { collectionView }
214+ collectionData = { collectionData }
215+ padding = { padding }
216+ width = { width }
217+ />
218+ </ div >
219+ </ >
220220 )
221221}
222222
223- const CollectionViewDropdownMenu : React . FC < {
223+ const CollectionViewTabs : React . FC < {
224224 collectionViewId : string
225- collectionView : types . CollectionView
226225 viewIds : string [ ]
227226 onChangeView : ( viewId : string ) => unknown
228- } > = ( { collectionViewId, collectionView , viewIds, onChangeView } ) => {
227+ } > = ( { collectionViewId, viewIds, onChangeView } ) => {
229228 const { recordMap } = useNotionContext ( )
230229
231230 return (
232- < DropdownMenu . Root >
233- < DropdownMenu . Trigger className = 'notion-collection-view-dropdown' >
234- < CollectionViewColumnDesc collectionView = { collectionView } >
235- < ChevronDownIcon className = 'notion-collection-view-dropdown-icon' />
236- </ CollectionViewColumnDesc >
237- </ DropdownMenu . Trigger >
238-
239- < DropdownMenu . Content className = 'notion-collection-view-dropdown-content' >
240- < DropdownMenu . RadioGroup
241- value = { collectionViewId }
242- onValueChange = { onChangeView }
231+ < div className = 'notion-collection-view-tabs-row' >
232+ { viewIds . map ( ( viewId ) => (
233+ < button
234+ onClick = { ( ) => onChangeView ( viewId ) }
235+ key = { viewId }
236+ className = { cs (
237+ 'notion-collection-view-tabs-content-item' ,
238+ collectionViewId === viewId &&
239+ 'notion-collection-view-tabs-content-item-active'
240+ ) }
243241 >
244- { viewIds . map ( ( viewId ) => (
245- < DropdownMenu . RadioItem
246- key = { viewId }
247- value = { viewId }
248- className = { cs (
249- 'notion-collection-view-dropdown-content-item' ,
250- collectionViewId === viewId &&
251- 'notion-collection-view-dropdown-content-item-active'
252- ) }
253- >
254- { collectionViewId === viewId && (
255- < div className = 'notion-collection-view-dropdown-content-item-active-icon' >
256- < CheckIcon />
257- </ div >
258- ) }
259-
260- < CollectionViewColumnDesc
261- collectionView = { recordMap . collection_view [ viewId ] ?. value }
262- />
263- </ DropdownMenu . RadioItem >
264- ) ) }
265- </ DropdownMenu . RadioGroup >
266- </ DropdownMenu . Content >
267- </ DropdownMenu . Root >
242+ < CollectionViewColumnDesc
243+ collectionView = { recordMap . collection_view [ viewId ] ?. value }
244+ />
245+ </ button >
246+ ) ) }
247+ </ div >
268248 )
269249}
270250
0 commit comments