@@ -6,12 +6,9 @@ import {
6
6
getTextContent
7
7
} from 'notion-utils'
8
8
import { useLocalStorage , useWindowSize } from 'react-use'
9
- import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
10
9
11
10
import { CollectionRow } from './collection-row'
12
11
import { CollectionViewIcon } from '../icons/collection-view-icon'
13
- import CheckIcon from '../icons/check'
14
- import { ChevronDownIcon } from '../icons/chevron-down-icon'
15
12
import { CollectionView } from './collection-view'
16
13
import { PropertyImplMemo } from './property'
17
14
import { PageIcon } from '../components/page-icon'
@@ -123,7 +120,7 @@ const CollectionViewBlock: React.FC<{
123
120
recordMap . collection_query [ collectionId ] ?. [ collectionViewId ]
124
121
const parentPage = getBlockParentPage ( block , recordMap )
125
122
126
- const { style , width, padding } = React . useMemo ( ( ) => {
123
+ const { width, padding } = React . useMemo ( ( ) => {
127
124
const style : React . CSSProperties = { }
128
125
129
126
if ( collectionView ?. type !== 'table' && collectionView ?. type !== 'board' ) {
@@ -185,86 +182,69 @@ const CollectionViewBlock: React.FC<{
185
182
}
186
183
187
184
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 }
196
193
/>
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 >
210
209
</ 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
+ </ >
220
220
)
221
221
}
222
222
223
- const CollectionViewDropdownMenu : React . FC < {
223
+ const CollectionViewTabs : React . FC < {
224
224
collectionViewId : string
225
- collectionView : types . CollectionView
226
225
viewIds : string [ ]
227
226
onChangeView : ( viewId : string ) => unknown
228
- } > = ( { collectionViewId, collectionView , viewIds, onChangeView } ) => {
227
+ } > = ( { collectionViewId, viewIds, onChangeView } ) => {
229
228
const { recordMap } = useNotionContext ( )
230
229
231
230
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
+ ) }
243
241
>
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 >
268
248
)
269
249
}
270
250
0 commit comments