diff --git a/src/pages/Scenes/ExpanderCard.tsx b/src/pages/Scenes/ExpanderCard.tsx
new file mode 100644
index 00000000..03a23366
--- /dev/null
+++ b/src/pages/Scenes/ExpanderCard.tsx
@@ -0,0 +1,98 @@
+import { useState } from 'react'
+import Box from '@mui/material/Box'
+import {
+ Card,
+ Collapse,
+ IconButton,
+ IconButtonProps,
+ styled,
+ Typography,
+ useTheme
+} from '@mui/material'
+import useStore from '../../store/useStore'
+import ExpandMoreIcon from '@mui/icons-material/ExpandMore'
+
+interface ExpandMoreProps extends IconButtonProps {
+ expand: boolean
+}
+
+const ExpandMore = styled((props: ExpandMoreProps) => {
+ const { expand, ...other } = props
+ return
+})(({ theme }) => ({
+ marginLeft: 'auto',
+ transition: theme.transitions.create('transform', {
+ duration: theme.transitions.duration.shortest
+ }),
+ variants: [
+ {
+ props: ({ expand }) => !expand,
+ style: {
+ transform: 'rotate(0deg)'
+ }
+ },
+ {
+ props: ({ expand }) => !!expand,
+ style: {
+ transform: 'rotate(180deg)'
+ }
+ }
+ ]
+}))
+
+const ExpanderCard = ({
+ title,
+ cardKey,
+ children
+}: {
+ title: string
+ cardKey: string
+ children: React.ReactNode
+}) => {
+ const theme = useTheme()
+ const setExpander = useStore((state) => state.setExpander)
+ const expander = useStore((state) => state.uiPersist.expander)
+
+ const handleExpandClick = () => {
+ setExpander(cardKey, !expander[cardKey])
+ }
+
+ return (
+
+
+ {title}
+
+
+
+
+
+
+ {children}
+
+
+
+ )
+}
+
+export default ExpanderCard
diff --git a/src/pages/Scenes/ScenesMostUsed.tsx b/src/pages/Scenes/ScenesMostUsed.tsx
index 884f4ffd..41611133 100644
--- a/src/pages/Scenes/ScenesMostUsed.tsx
+++ b/src/pages/Scenes/ScenesMostUsed.tsx
@@ -1,14 +1,14 @@
import { useEffect } from 'react'
-import Box from '@mui/material/Box'
import {
DataGrid,
GridColDef,
GridEventListener,
GridRenderCellParams
} from '@mui/x-data-grid'
-import { Card, Typography, useMediaQuery, useTheme } from '@mui/material'
+import { useMediaQuery, useTheme } from '@mui/material'
import useStore from '../../store/useStore'
import SceneImage from './ScenesImage'
+import ExpanderCard from './ExpanderCard'
export default function ScenesMostUsed({
scenes,
@@ -62,78 +62,47 @@ export default function ScenesMostUsed({
]
return (
-
-
+ c.field !== 'used') : columns}
+ hideFooter
+ // headerHeight={1}
+ pageSizeOptions={[5]}
+ disableColumnSorting={xsmallScreen}
+ disableColumnMenu={xsmallScreen}
+ disableRowSelectionOnClick
+ rows={Object.values(mostUsedScenes)
+ .filter((scene: any) => sceneBlenderFilter(scene.name))
+ .map((v: any, i: number) => ({
+ id: i + 1,
+ ...v
+ }))}
+ initialState={{
+ // pagination: {
+ // pageSize: 100,
+ // },
+ sorting: {
+ sortModel: [{ field: 'used', sort: 'desc' }]
+ },
+ columns: {
+ columnVisibilityModel: {
+ id: false,
+ scene_tags: false
+ }
+ }
+ }}
sx={{
- height: db ? 301 : 293,
- width: '100%',
- maxWidth: xsmallScreen ? 'unset' : '470px',
- m: '0 auto'
+ borderColor: db ? 'transparent' : theme.palette.divider,
+ '&.MuiDataGrid-root .MuiDataGrid-cell:focus-within': {
+ outline: 'none !important'
+ },
+ '& .MuiDataGrid-row:hover': {
+ cursor: 'pointer'
+ }
}}
- >
- {!db && (
-
- {title}
-
- )}
- c.field !== 'used') : columns}
- hideFooter
- // headerHeight={1}
- pageSizeOptions={[5]}
- disableColumnSorting={xsmallScreen}
- disableColumnMenu={xsmallScreen}
- disableRowSelectionOnClick
- rows={Object.values(mostUsedScenes)
- .filter((scene: any) => sceneBlenderFilter(scene.name))
- .map((v: any, i: number) => ({
- id: i + 1,
- ...v
- }))}
- initialState={{
- // pagination: {
- // pageSize: 100,
- // },
- sorting: {
- sortModel: [{ field: 'used', sort: 'desc' }]
- },
- columns: {
- columnVisibilityModel: {
- id: false,
- scene_tags: false
- }
- }
- }}
- sx={{
- borderColor: db ? 'transparent' : theme.palette.divider,
- '&.MuiDataGrid-root .MuiDataGrid-cell:focus-within': {
- outline: 'none !important'
- },
- '& .MuiDataGrid-row:hover': {
- cursor: 'pointer'
- }
- }}
- />
-
-
+ />
+
)
}
diff --git a/src/pages/Scenes/ScenesRecent.tsx b/src/pages/Scenes/ScenesRecent.tsx
index 5482b7d1..b9a357d9 100644
--- a/src/pages/Scenes/ScenesRecent.tsx
+++ b/src/pages/Scenes/ScenesRecent.tsx
@@ -1,17 +1,16 @@
import { useEffect, useState } from 'react'
-import Box from '@mui/material/Box'
import {
DataGrid,
GridColDef,
GridEventListener,
GridRenderCellParams
} from '@mui/x-data-grid'
-import { Card, Typography, useMediaQuery, useTheme } from '@mui/material'
+import { useMediaQuery } from '@mui/material'
import useStore from '../../store/useStore'
import SceneImage from './ScenesImage'
+import ExpanderCard from './ExpanderCard'
export default function ScenesRecent({ scenes, activateScene, title }: any) {
- const theme = useTheme()
const recentScenes = useStore((state) => state.recentScenes)
const [theScenes, setTheScenes] = useState({})
const xsmallScreen = useMediaQuery('(max-width: 475px)')
@@ -57,57 +56,41 @@ export default function ScenesRecent({ scenes, activateScene, title }: any) {
}, [scenes, recentScenes])
return (
-
-
-
- {title}
-
- ({
- id: i + 1,
- ...v
- }))}
- initialState={{
- // pagination: {
- // pageSize: 100,
- // },
- sorting: {
- sortModel: [{ field: 'used', sort: 'asc' }]
- },
- columns: {
- columnVisibilityModel: {
- id: false,
- scene_tags: false
- }
+
+ ({
+ id: i + 1,
+ ...v
+ }))}
+ initialState={{
+ // pagination: {
+ // pageSize: 100,
+ // },
+ sorting: {
+ sortModel: [{ field: 'used', sort: 'asc' }]
+ },
+ columns: {
+ columnVisibilityModel: {
+ id: false,
+ scene_tags: false
}
- }}
- sx={{
- '&.MuiDataGrid-root .MuiDataGrid-cell:focus-within': {
- outline: 'none !important'
- }
- }}
- />
-
-
+ }
+ }}
+ sx={{
+ '&.MuiDataGrid-root .MuiDataGrid-cell:focus-within': {
+ outline: 'none !important'
+ }
+ }}
+ />
+
)
}
diff --git a/src/store/ui-persist/storeUIpersist.tsx b/src/store/ui-persist/storeUIpersist.tsx
index aacab7ea..63d42432 100644
--- a/src/store/ui-persist/storeUIpersist.tsx
+++ b/src/store/ui-persist/storeUIpersist.tsx
@@ -18,6 +18,10 @@ const storeUIPersist = (set: any) => ({
matrixGroups: true,
pixelMode: true
},
+ expander: {
+ scenesRecent: false,
+ scenesMostUsed: false
+ } as Record,
warnings: {
lessPixels: true
},
diff --git a/src/store/ui-persist/storeUIpersistActions.tsx b/src/store/ui-persist/storeUIpersistActions.tsx
index 7b21ead1..cc8ddb76 100644
--- a/src/store/ui-persist/storeUIpersistActions.tsx
+++ b/src/store/ui-persist/storeUIpersistActions.tsx
@@ -55,6 +55,14 @@ const storeUIPersistActions = (set: any) => ({
}),
false,
'uiPersist/setPixelGraphSettings'
+ ),
+ setExpander: (key: string, val: boolean): void =>
+ set(
+ produce((state: IStore) => {
+ state.uiPersist.expander[key] = val
+ }),
+ false,
+ 'uiPersist/setExpander'
)
})