1+ import React from 'react' ;
2+ import * as Space from 'react-spaces' ;
3+
4+ export const Pinnable = ( ) => {
5+ const [ leftOpen , setLeftOpen ] = React . useState ( false ) ;
6+ const [ leftPinned , setLeftPinned ] = React . useState ( false ) ;
7+ const [ rightOpen , setRightOpen ] = React . useState ( false ) ;
8+ const [ rightPinned , setRightPinned ] = React . useState ( false ) ;
9+
10+ return (
11+ < >
12+ < Space . Fill >
13+ < Space . LeftResizable
14+ order = { 1 }
15+ size = { leftOpen ? "25%" : 50 }
16+ zIndex = { leftPinned ? 1 : 2 }
17+ style = { { background : "yellow" , opacity : 0.8 } }
18+ >
19+ < Space . Top size = { 40 } centerContent = { Space . CenterType . HorizontalVertical } >
20+ < button onClick = { ( ) => setLeftOpen ( prev => ! prev ) } >
21+ { leftOpen ? "Close" : "Open" }
22+ </ button >
23+ { leftOpen && (
24+ < button onClick = { ( ) => setLeftPinned ( prev => ! prev ) } >
25+ { leftPinned ? "Unpin" : "Pin" }
26+ </ button >
27+ ) }
28+ </ Space . Top >
29+ < Space . Fill style = { { padding : 10 } } >
30+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ab incidunt
31+ commodi id doloremque inventore laudantium maxime saepe veritatis,
32+ dolorem labore magnam. Quod, tempore inventore omnis doloremque
33+ accusantium commodi ratione dignissimos eos doloribus aliquid
34+ quibusdam officiis qui porro neque modi, fugiat iusto suscipit
35+ perspiciatis? Corporis, necessitatibus quia soluta illum perferendis
36+ beatae.
37+ </ Space . Fill >
38+ </ Space . LeftResizable >
39+ < Space . Left
40+ zIndex = { 1 }
41+ order = { 2 }
42+ size = "25%"
43+ style = { { background : "orange" } }
44+ >
45+ < Space . Top size = { 40 } />
46+ < Space . Fill style = { { padding : 10 } } >
47+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quod a,
48+ facilis qui perspiciatis excepturi culpa! Vero sit eum nobis itaque
49+ nemo culpa sed quasi recusandae, voluptatum, debitis dolores qui dolor
50+ libero ipsam minima animi voluptates! Ad excepturi modi eius velit,
51+ debitis impedit maxime voluptates consequatur rem dolore nesciunt,
52+ earum cum.
53+ </ Space . Fill >
54+ </ Space . Left >
55+ < Space . Fill zIndex = { 1 } style = { { background : "pink" } } >
56+ < Space . Top size = { 40 } />
57+ < Space . Fill style = { { padding : 10 } } >
58+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo dicta
59+ dolore nisi veniam maiores iusto magnam fuga facere ipsum, recusandae,
60+ reprehenderit quasi illum sequi doloribus molestias. Consectetur qui
61+ unde dolore odio similique quidem perferendis, eligendi sequi
62+ recusandae explicabo. Excepturi ratione molestias et temporibus
63+ perferendis vitae ab voluptatum repellat corporis assumenda.
64+ </ Space . Fill >
65+ </ Space . Fill >
66+ < Space . Right
67+ size = { rightOpen ? "25%" : 50 }
68+ zIndex = { rightPinned ? 1 : 2 }
69+ style = { { background : "lime" , opacity : 0.8 } }
70+ >
71+ < Space . Top size = { 40 } centerContent = { Space . CenterType . HorizontalVertical } >
72+ < button onClick = { ( ) => setRightOpen ( prev => ! prev ) } >
73+ { rightOpen ? "Close" : "Open" }
74+ </ button >
75+ { rightOpen && (
76+ < button onClick = { ( ) => setRightPinned ( prev => ! prev ) } >
77+ { rightPinned ? "Unpin" : "Pin" }
78+ </ button >
79+ ) }
80+ </ Space . Top >
81+ < Space . Fill style = { { padding : 10 } } >
82+ Lorem, ipsum dolor sit amet consectetur adipisicing elit. Iure,
83+ inventore! Deserunt quasi hic atque natus quod totam. Quia molestias
84+ obcaecati quibusdam illum sint dolorem doloremque eos unde natus
85+ nesciunt officia corrupti recusandae ipsam, accusamus, sed amet optio
86+ numquam minima eaque inventore enim esse. Natus saepe laboriosam dolor
87+ magnam at illo.
88+ </ Space . Fill >
89+ </ Space . Right >
90+ </ Space . Fill >
91+ </ >
92+ ) ;
93+ } ;
0 commit comments