1- import { DatabaseViewLayout , View , YDatabaseView , YjsDatabaseKey } from '@/application/types' ;
21import { useDatabase , useDatabaseContext } from '@/application/database-yjs' ;
2+ import { DatabaseViewLayout , View , ViewLayout , YDatabaseView , YjsDatabaseKey } from '@/application/types' ;
3+ import PageIcon from '@/components/_shared/view-icon/PageIcon' ;
34import { DatabaseActions } from '@/components/database/components/conditions' ;
45import { useConditionsContext } from '@/components/database/components/conditions/context' ;
56import DatabaseBlockActions from '@/components/database/components/conditions/DatabaseBlockActions' ;
67import { Tooltip } from '@mui/material' ;
7- import {
8- forwardRef ,
9- FunctionComponent ,
10- SVGProps ,
11- useCallback ,
12- useEffect ,
13- useMemo ,
14- useState ,
15- } from 'react' ;
16- import { ViewTabs , ViewTab } from 'src/components/_shared/tabs/ViewTabs' ;
8+ import { forwardRef , useCallback , useEffect , useMemo , useState } from 'react' ;
179import { useTranslation } from 'react-i18next' ;
18-
19- import { ReactComponent as GridSvg } from '@/assets/grid.svg' ;
20- import { ReactComponent as BoardSvg } from '@/assets/board.svg' ;
21- import { ReactComponent as CalendarSvg } from '@/assets/calendar.svg' ;
10+ import { ViewTab , ViewTabs } from 'src/components/_shared/tabs/ViewTabs' ;
2211
2312export interface DatabaseTabBarProps {
2413 viewIds : string [ ] ;
@@ -29,16 +18,8 @@ export interface DatabaseTabBarProps {
2918 hideConditions ?: boolean ;
3019}
3120
32- const DatabaseIcons : {
33- [ key in DatabaseViewLayout ] : FunctionComponent < SVGProps < SVGSVGElement > & { title ?: string | undefined } > ;
34- } = {
35- [ DatabaseViewLayout . Grid ] : GridSvg ,
36- [ DatabaseViewLayout . Board ] : BoardSvg ,
37- [ DatabaseViewLayout . Calendar ] : CalendarSvg ,
38- } ;
39-
4021export const DatabaseTabs = forwardRef < HTMLDivElement , DatabaseTabBarProps > (
41- ( { viewIds, viewName , iidIndex, selectedViewId, setSelectedViewId } , ref ) => {
22+ ( { viewIds, iidIndex, selectedViewId, setSelectedViewId } , ref ) => {
4223 const { t } = useTranslation ( ) ;
4324 const views = useDatabase ( ) . get ( YjsDatabaseKey . views ) ;
4425 const conditionsContext = useConditionsContext ( ) ;
@@ -53,13 +34,13 @@ export const DatabaseTabs = forwardRef<HTMLDivElement, DatabaseTabBarProps>(
5334 } ;
5435
5536 useEffect ( ( ) => {
56- void ( async ( ) => {
57- if ( loadViewMeta ) {
37+ void ( async ( ) => {
38+ if ( loadViewMeta ) {
5839 try {
5940 const meta = await loadViewMeta ( iidIndex , setMeta ) ;
6041
6142 setMeta ( meta ) ;
62- } catch ( e ) {
43+ } catch ( e ) {
6344 // do nothing
6445 }
6546 }
@@ -77,7 +58,7 @@ export const DatabaseTabs = forwardRef<HTMLDivElement, DatabaseTabBarProps>(
7758 const getSelectedTabIndicatorProps = useCallback ( ( ) => {
7859 const selectedTab = document . getElementById ( `view-tab-${ selectedViewId } ` ) ;
7960
80- if ( ! selectedTab ) return ;
61+ if ( ! selectedTab ) return ;
8162
8263 return {
8364 style : {
@@ -91,7 +72,8 @@ export const DatabaseTabs = forwardRef<HTMLDivElement, DatabaseTabBarProps>(
9172 return selectedViewId ? Number ( views ?. get ( selectedViewId ) ?. get ( YjsDatabaseKey . layout ) ) as DatabaseViewLayout : DatabaseViewLayout . Grid ;
9273 } , [ selectedViewId , views ] ) ;
9374
94- if ( viewIds . length === 0 ) return null ;
75+ console . log ( '====' , viewIds , meta ?. children ) ;
76+ if ( viewIds . length === 0 ) return null ;
9577 return (
9678 < div
9779 ref = { ref }
@@ -124,17 +106,24 @@ export const DatabaseTabs = forwardRef<HTMLDivElement, DatabaseTabBarProps>(
124106 { viewIds . map ( ( viewId ) => {
125107 const view = views ?. get ( viewId ) as YDatabaseView | null ;
126108
127- if ( ! view ) return null ;
128- const layout = Number ( view . get ( YjsDatabaseKey . layout ) ) as DatabaseViewLayout ;
129- const Icon = DatabaseIcons [ layout ] ;
130- const name = viewId === iidIndex ? viewName : meta ?. children ?. find ( ( v ) => v . view_id === viewId ) ?. name ;
109+ if ( ! view ) return null ;
110+ const databaseLayout = Number ( view . get ( YjsDatabaseKey . layout ) ) as DatabaseViewLayout ;
111+ const folderView = viewId === iidIndex ? meta : meta ?. children ?. find ( ( v ) => v . view_id === viewId ) ;
112+
113+ const name = folderView ?. name || view . get ( YjsDatabaseKey . name ) || t ( 'untitled' ) ;
131114
132115 return (
133116 < ViewTab
134117 key = { viewId }
135118 id = { `view-tab-${ viewId } ` }
136119 data-testid = { `view-tab-${ viewId } ` }
137- icon = { < Icon className = { 'h-4 w-4' } /> }
120+ icon = { < PageIcon
121+ iconSize = { 16 }
122+ view = { folderView || {
123+ layout : databaseLayout === DatabaseViewLayout . Board ? ViewLayout . Board : databaseLayout === DatabaseViewLayout . Calendar ? ViewLayout . Calendar : ViewLayout . Grid ,
124+ } }
125+ className = { 'h-4 w-4' }
126+ /> }
138127 iconPosition = "start"
139128 color = "inherit"
140129 label = {
0 commit comments