OutlinePanel now autohides
This commit is contained in:
parent
09c9978713
commit
3d26f840ae
7 changed files with 75 additions and 44 deletions
|
@ -13,6 +13,7 @@ import PanelWrapper from './PanelWrapper'
|
|||
import {ErrorBoundary} from 'react-error-boundary'
|
||||
import {IoClose} from 'react-icons/all'
|
||||
import getStudio from '@theatre/studio/getStudio'
|
||||
import {panelZIndexes} from '@theatre/studio/panels/panelZIndexes'
|
||||
|
||||
const defaultPosition: PanelPosition = {
|
||||
edges: {
|
||||
|
@ -45,6 +46,7 @@ const Container = styled(PanelWrapper)`
|
|||
flex-direction: column;
|
||||
|
||||
box-shadow: 2px 2px 0 rgb(0 0 0 / 11%);
|
||||
z-index: ${panelZIndexes.pluginPanes};
|
||||
`
|
||||
|
||||
const Title = styled.div`
|
||||
|
|
|
@ -11,6 +11,7 @@ import PanelWrapper from '@theatre/studio/panels/BasePanel/PanelWrapper'
|
|||
import PanelDragZone from '@theatre/studio/panels/BasePanel/PanelDragZone'
|
||||
import {isSheetObject} from '@theatre/shared/instanceTypes'
|
||||
import type SheetObject from '@theatre/core/sheetObjects/SheetObject'
|
||||
import {panelZIndexes} from '@theatre/studio/panels/panelZIndexes'
|
||||
|
||||
const Container = styled(PanelWrapper)`
|
||||
overflow-y: hidden;
|
||||
|
@ -19,6 +20,7 @@ const Container = styled(PanelWrapper)`
|
|||
background-color: transparent;
|
||||
/* background-color: #282b2ff0; */
|
||||
box-shadow: none;
|
||||
z-index: ${panelZIndexes.propsPanel};
|
||||
|
||||
&:after {
|
||||
position: absolute;
|
||||
|
|
|
@ -1,42 +1,44 @@
|
|||
import {usePrism} from '@theatre/dataverse-react'
|
||||
import React from 'react'
|
||||
import styled from 'styled-components'
|
||||
import {panelZIndexes} from '@theatre/studio/panels/panelZIndexes'
|
||||
import ProjectsList from './ProjectsList/ProjectsList'
|
||||
import type {PanelPosition} from '@theatre/studio/store/types'
|
||||
import BasePanel from '@theatre/studio/panels/BasePanel/BasePanel'
|
||||
import PanelWrapper from '@theatre/studio/panels/BasePanel/PanelWrapper'
|
||||
import PanelDragZone from '@theatre/studio/panels/BasePanel/PanelDragZone'
|
||||
|
||||
const defaultPosition: PanelPosition = {
|
||||
edges: {
|
||||
left: {from: 'screenLeft', distance: 0.2},
|
||||
right: {from: 'screenLeft', distance: 0.4},
|
||||
top: {from: 'screenTop', distance: 0.2},
|
||||
bottom: {from: 'screenBottom', distance: 0.2},
|
||||
},
|
||||
const Container = styled.div`
|
||||
background-color: transparent;
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50px;
|
||||
bottom: 8px;
|
||||
right: 0;
|
||||
z-index: ${panelZIndexes.outlinePanel};
|
||||
|
||||
&:before {
|
||||
display: block;
|
||||
content: ' ';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 20px;
|
||||
pointer-events: auto;
|
||||
}
|
||||
`
|
||||
|
||||
const minDims = {width: 300, height: 300}
|
||||
|
||||
const OutlinePanel: React.FC<{}> = (props) => {
|
||||
return (
|
||||
<BasePanel
|
||||
panelId="outlinePanel"
|
||||
defaultPosition={defaultPosition}
|
||||
minDims={minDims}
|
||||
>
|
||||
<Content />
|
||||
</BasePanel>
|
||||
)
|
||||
}
|
||||
|
||||
const Container = styled(PanelWrapper)`
|
||||
const Content = styled.div`
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
overflow-y: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background-color: transparent;
|
||||
box-shadow: none;
|
||||
pointer-events: none;
|
||||
transform: translateX(-100%);
|
||||
pointer-events: auto;
|
||||
|
||||
${Container}:hover & {
|
||||
transform: translateX(0);
|
||||
}
|
||||
`
|
||||
|
||||
const Title = styled.div`
|
||||
|
@ -53,21 +55,19 @@ const F2 = styled.div`
|
|||
padding: 0;
|
||||
`
|
||||
|
||||
const Content: React.FC = () => {
|
||||
return usePrism(() => {
|
||||
const OutlinePanel: React.FC<{}> = (props) => {
|
||||
return (
|
||||
<Container>
|
||||
<PanelDragZone>
|
||||
<Content>
|
||||
<Header>
|
||||
<Title>Outline</Title>
|
||||
</Header>
|
||||
</PanelDragZone>
|
||||
<F2>
|
||||
<ProjectsList />
|
||||
</F2>
|
||||
</Content>
|
||||
</Container>
|
||||
)
|
||||
}, [])
|
||||
}
|
||||
|
||||
export default OutlinePanel
|
||||
|
|
|
@ -9,6 +9,7 @@ const Container = styled.ul`
|
|||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-right: 4px;
|
||||
`
|
||||
|
||||
const ProjectsList: React.FC<{}> = (props) => {
|
||||
|
|
|
@ -25,8 +25,11 @@ import type Sheet from '@theatre/core/sheets/Sheet'
|
|||
import {isSheet, isSheetObject} from '@theatre/shared/instanceTypes'
|
||||
import {uniq} from 'lodash-es'
|
||||
import GraphEditorToggle from './GraphEditorToggle'
|
||||
import {panelZIndexes} from '@theatre/studio/panels/panelZIndexes'
|
||||
|
||||
const Container = styled(PanelWrapper)``
|
||||
const Container = styled(PanelWrapper)`
|
||||
z-index: ${panelZIndexes.sequenceEditorPanel};
|
||||
`
|
||||
|
||||
const LeftBackground = styled.div`
|
||||
background-color: #282b2fed;
|
||||
|
|
21
theatre/studio/src/panels/panelZIndexes.tsx
Normal file
21
theatre/studio/src/panels/panelZIndexes.tsx
Normal file
|
@ -0,0 +1,21 @@
|
|||
export const panelZIndexes = {
|
||||
get outlinePanel() {
|
||||
return 1
|
||||
},
|
||||
|
||||
get propsPanel() {
|
||||
return panelZIndexes.outlinePanel
|
||||
},
|
||||
|
||||
get sequenceEditorPanel() {
|
||||
return this.outlinePanel - 1
|
||||
},
|
||||
|
||||
get toolbar() {
|
||||
return this.outlinePanel + 1
|
||||
},
|
||||
|
||||
get pluginPanes() {
|
||||
return this.sequenceEditorPanel - 1
|
||||
},
|
||||
}
|
|
@ -1,11 +1,13 @@
|
|||
import {useVal} from '@theatre/dataverse-react'
|
||||
import getStudio from '@theatre/studio/getStudio'
|
||||
import {panelZIndexes} from '@theatre/studio/panels/panelZIndexes'
|
||||
import React from 'react'
|
||||
import styled from 'styled-components'
|
||||
|
||||
const Container = styled.div`
|
||||
position: fixed;
|
||||
z-index: 50;
|
||||
z-index: ${panelZIndexes.toolbar};
|
||||
|
||||
top: 12px;
|
||||
right: 12px;
|
||||
left: 12px;
|
||||
|
|
Loading…
Reference in a new issue