@@ -2,14 +2,17 @@ import { Box, Button, ColorInput, Overlay, Select, Stack, Sx, Tabs, TextInput }
2
2
import { useModals } from '@mantine/modals' ;
3
3
import { IconArrowsLeftRight , IconTrash } from '@tabler/icons-react' ;
4
4
import { observer } from 'mobx-react-lite' ;
5
- import { ReactNode , useMemo } from 'react' ;
5
+ import { useMemo } from 'react' ;
6
6
import { Plus } from 'tabler-icons-react' ;
7
7
import { DashboardViewRender } from '~/components/view' ;
8
8
import { useEditContentModelContext } from '~/contexts' ;
9
9
import { EViewComponentType , TabModelInstance , ViewMetaInstance , ViewTabsConfigInstance } from '~/model' ;
10
10
11
11
const getStyles = ( { variant, orientation } : ViewTabsConfigInstance ) => {
12
12
const ret : Record < string , any > = {
13
+ root : {
14
+ height : '100%' ,
15
+ } ,
13
16
tab : { } ,
14
17
panel : {
15
18
padding : '16px' ,
@@ -40,7 +43,7 @@ const getTabSX = (t: TabModelInstance): Sx => {
40
43
return { } ;
41
44
} ;
42
45
43
- export const PreviewViewTabs = observer ( ( { children , view } : { children : ReactNode ; view : ViewMetaInstance } ) => {
46
+ export const PreviewViewTabs = observer ( ( { view } : { view : ViewMetaInstance } ) => {
44
47
const modals = useModals ( ) ;
45
48
const model = useEditContentModelContext ( ) ;
46
49
const options = useMemo (
@@ -64,71 +67,69 @@ export const PreviewViewTabs = observer(({ children, view }: { children: ReactNo
64
67
65
68
const onlyOneTabLeft = config . tabs . length === 0 ;
66
69
return (
67
- < Box className = "preview-view-tabs" >
68
- < Tabs
69
- variant = { config . variant }
70
- orientation = { config . orientation }
71
- defaultValue = { config . tabs . length > 0 ? config . tabs [ 0 ] . id : '0' }
72
- styles = { getStyles ( config ) }
73
- >
74
- < Tabs . List grow = { config . grow } >
75
- { config . tabs . map ( ( t ) => (
76
- < Tabs . Tab key = { t . id } value = { t . id } sx = { getTabSX ( t ) } >
77
- { t . name ?? t . id }
78
- </ Tabs . Tab >
79
- ) ) }
80
- < Tabs . Tab onClick = { config . addTab } value = "add" className = "add-a-tab" >
81
- < Plus size = { 18 } color = "#228be6" />
70
+ < Tabs
71
+ className = "preview-view-tabs"
72
+ variant = { config . variant }
73
+ orientation = { config . orientation }
74
+ defaultValue = { config . tabs . length > 0 ? config . tabs [ 0 ] . id : '0' }
75
+ styles = { getStyles ( config ) }
76
+ >
77
+ < Tabs . List grow = { config . grow } >
78
+ { config . tabs . map ( ( t ) => (
79
+ < Tabs . Tab key = { t . id } value = { t . id } sx = { getTabSX ( t ) } >
80
+ { t . name ?? t . id }
82
81
</ Tabs . Tab >
83
- </ Tabs . List >
84
- { config . tabs . map ( ( t , i ) => {
85
- const tabView = model . views . findByID ( t . view_id ) ;
86
- return (
87
- < Tabs . Panel key = { t . id } value = { t . id } sx = { { position : 'relative' } } >
88
- < Box sx = { { position : 'absolute' , top : 0 , left : 0 , right : 0 , bottom : 0 , zIndex : 200 } } >
89
- < Overlay opacity = { 0.8 } color = "#FFF" blur = { 10 } zIndex = { 100 } />
90
-
91
- < Stack mx = "auto" mt = { 100 } sx = { { width : '300px' , position : 'relative' , zIndex : 200 } } >
92
- < TextInput label = "Tab Name" value = { t . name } onChange = { ( e ) => t . setName ( e . currentTarget . value ) } />
93
- < Select label = "View" value = { t . view_id } onChange = { t . setViewID } data = { options } />
94
- < ColorInput
95
- label = "Color"
96
- value = { t . color }
97
- onChange = { t . setColor }
98
- disabled = { config . variant !== 'default' }
99
- />
82
+ ) ) }
83
+ < Tabs . Tab onClick = { config . addTab } value = "add" className = "add-a-tab" >
84
+ < Plus size = { 18 } color = "#228be6" />
85
+ </ Tabs . Tab >
86
+ </ Tabs . List >
87
+ { config . tabs . map ( ( t , i ) => {
88
+ const tabView = model . views . findByID ( t . view_id ) ;
89
+ return (
90
+ < Tabs . Panel key = { t . id } value = { t . id } sx = { { position : 'relative' } } >
91
+ < Box sx = { { position : 'absolute' , top : 0 , left : 0 , right : 0 , bottom : 0 , zIndex : 200 } } >
92
+ < Overlay opacity = { 0.8 } color = "#FFF" blur = { 10 } zIndex = { 100 } />
100
93
101
- { tabView && (
102
- < Button
103
- mt = { 20 }
104
- variant = "gradient"
105
- leftIcon = { < IconArrowsLeftRight size = { 18 } /> }
106
- gradient = { { from : 'cyan' , to : 'indigo' } }
107
- onClick = { ( ) => model . views . setIDOfVIE ( tabView . id ) }
108
- >
109
- Swith to View: { tabView . name }
110
- </ Button >
111
- ) }
94
+ < Stack mx = "auto" mt = { 100 } sx = { { width : '300px' , position : 'relative' , zIndex : 200 } } >
95
+ < TextInput label = "Tab Name" value = { t . name } onChange = { ( e ) => t . setName ( e . currentTarget . value ) } />
96
+ < Select label = "View" value = { t . view_id } onChange = { t . setViewID } data = { options } />
97
+ < ColorInput
98
+ label = "Color"
99
+ value = { t . color }
100
+ onChange = { t . setColor }
101
+ disabled = { config . variant !== 'default' }
102
+ />
112
103
104
+ { tabView && (
113
105
< Button
114
106
mt = { 20 }
115
- variant = "subtle"
116
- color = "red"
117
- onClick = { ( ) => remove ( i ) }
118
- disabled = { onlyOneTabLeft }
119
- leftIcon = { < IconTrash size = { 14 } /> }
107
+ variant = "gradient"
108
+ leftIcon = { < IconArrowsLeftRight size = { 18 } /> }
109
+ gradient = { { from : 'cyan' , to : 'indigo' } }
110
+ onClick = { ( ) => model . views . setIDOfVIE ( tabView . id ) }
120
111
>
121
- Delete This Tab
112
+ Swith to View: { tabView . name }
122
113
</ Button >
123
- </ Stack >
124
- </ Box >
114
+ ) }
115
+
116
+ < Button
117
+ mt = { 20 }
118
+ variant = "subtle"
119
+ color = "red"
120
+ onClick = { ( ) => remove ( i ) }
121
+ disabled = { onlyOneTabLeft }
122
+ leftIcon = { < IconTrash size = { 14 } /> }
123
+ >
124
+ Delete This Tab
125
+ </ Button >
126
+ </ Stack >
127
+ </ Box >
125
128
126
- { tabView && < DashboardViewRender view = { tabView } /> }
127
- </ Tabs . Panel >
128
- ) ;
129
- } ) }
130
- </ Tabs >
131
- { children }
132
- </ Box >
129
+ { tabView && < DashboardViewRender view = { tabView } /> }
130
+ </ Tabs . Panel >
131
+ ) ;
132
+ } ) }
133
+ </ Tabs >
133
134
) ;
134
135
} ) ;
0 commit comments