@window-splitter/solid 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/main.ts +24 -0
- package/.storybook/preview.ts +14 -0
- package/.tshy/build.json +8 -0
- package/.tshy/esm.json +18 -0
- package/.turbo/turbo-build.log +5 -0
- package/.turbo/turbo-lint.log +5 -0
- package/CHANGELOG.md +66 -0
- package/README.md +54 -0
- package/dist/esm/SolidWIndowSplitter.d.ts +19 -0
- package/dist/esm/SolidWIndowSplitter.d.ts.map +1 -0
- package/dist/esm/SolidWIndowSplitter.jsx +506 -0
- package/dist/esm/SolidWIndowSplitter.jsx.map +1 -0
- package/dist/esm/SolidWindowSplitter.stories.d.ts +52 -0
- package/dist/esm/SolidWindowSplitter.stories.d.ts.map +1 -0
- package/dist/esm/SolidWindowSplitter.stories.jsx +470 -0
- package/dist/esm/SolidWindowSplitter.stories.jsx.map +1 -0
- package/dist/esm/SolidWindowSplitter.test.d.ts +2 -0
- package/dist/esm/SolidWindowSplitter.test.d.ts.map +1 -0
- package/dist/esm/SolidWindowSplitter.test.jsx +197 -0
- package/dist/esm/SolidWindowSplitter.test.jsx.map +1 -0
- package/dist/esm/context.d.ts +18 -0
- package/dist/esm/context.d.ts.map +1 -0
- package/dist/esm/context.jsx +38 -0
- package/dist/esm/context.jsx.map +1 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/mergeSolidAttributes.d.ts +6 -0
- package/dist/esm/mergeSolidAttributes.d.ts.map +1 -0
- package/dist/esm/mergeSolidAttributes.js +45 -0
- package/dist/esm/mergeSolidAttributes.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/doctor-storybook.log +29 -0
- package/eslint.config.js +10 -0
- package/index.html +11 -0
- package/package.json +104 -0
- package/rsbuild.config.js +25 -0
- package/src/SolidWIndowSplitter.tsx +683 -0
- package/src/SolidWindowSplitter.stories.tsx +689 -0
- package/src/SolidWindowSplitter.test.tsx +333 -0
- package/src/__snapshots__/SolidWindowSplitter.test.tsx.snap +56 -0
- package/src/context.tsx +58 -0
- package/src/index.ts +1 -0
- package/src/mergeSolidAttributes.ts +61 -0
- package/tsconfig.json +8 -0
- package/vite.config.js +6 -0
- package/vitest.config.ts +22 -0
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
import { spring } from "framer-motion";
|
|
2
|
+
import { PanelGroup, PanelResizer, Panel, } from "./SolidWIndowSplitter.jsx";
|
|
3
|
+
import { createSignal, Show, splitProps } from "solid-js";
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "Components/Solid",
|
|
6
|
+
component: PanelGroup,
|
|
7
|
+
};
|
|
8
|
+
export default meta;
|
|
9
|
+
function StyledPanelGroup(props) {
|
|
10
|
+
return (<PanelGroup {...props} style={{
|
|
11
|
+
border: "1px solid rgba(0, 0, 0, 0.3)",
|
|
12
|
+
background: "rgba(0, 0, 0, 0.1)",
|
|
13
|
+
"border-radius": "12px",
|
|
14
|
+
"box-sizing": "border-box",
|
|
15
|
+
...props.style,
|
|
16
|
+
}}/>);
|
|
17
|
+
}
|
|
18
|
+
function StyledPanel(props) {
|
|
19
|
+
const [, attrs] = splitProps(props, ["children"]);
|
|
20
|
+
return (<Panel style={{
|
|
21
|
+
overflow: "hidden",
|
|
22
|
+
}} {...attrs}>
|
|
23
|
+
<div style={{
|
|
24
|
+
height: "100%",
|
|
25
|
+
width: "100%",
|
|
26
|
+
padding: "20px",
|
|
27
|
+
display: "flex",
|
|
28
|
+
"align-items": "center",
|
|
29
|
+
"justify-content": "center",
|
|
30
|
+
overflow: "hidden",
|
|
31
|
+
"box-sizing": "border-box",
|
|
32
|
+
}}>
|
|
33
|
+
{props.children}
|
|
34
|
+
</div>
|
|
35
|
+
</Panel>);
|
|
36
|
+
}
|
|
37
|
+
function StyledResizer(props) {
|
|
38
|
+
return <PanelResizer size="10px" style={{ background: "red" }} {...props}/>;
|
|
39
|
+
}
|
|
40
|
+
export function Simple(props) {
|
|
41
|
+
return (<StyledPanelGroup handle={props.handle} style={{ height: "200px" }}>
|
|
42
|
+
<StyledPanel>Panel 1</StyledPanel>
|
|
43
|
+
<StyledResizer />
|
|
44
|
+
<StyledPanel min="100px">Panel 2</StyledPanel>
|
|
45
|
+
</StyledPanelGroup>);
|
|
46
|
+
}
|
|
47
|
+
export function Autosave(props) {
|
|
48
|
+
return (<StyledPanelGroup autosaveId="autosave-example-solid" handle={props.handle} snapshot={props.snapshot}>
|
|
49
|
+
<StyledPanel id="1">Panel 1</StyledPanel>
|
|
50
|
+
<StyledResizer id="resizer"/>
|
|
51
|
+
<StyledPanel id="2">Panel 2</StyledPanel>
|
|
52
|
+
</StyledPanelGroup>);
|
|
53
|
+
}
|
|
54
|
+
export function AutosaveCookie(props) {
|
|
55
|
+
return (<StyledPanelGroup autosaveId="autosave-cookie-solid" autosaveStrategy="cookie" style={{ height: "200px" }} handle={props.handle} snapshot={props.snapshot}>
|
|
56
|
+
<StyledPanel id="1">Panel 1</StyledPanel>
|
|
57
|
+
<StyledResizer id="resizer1" size="10px" style={{ background: "red" }}/>
|
|
58
|
+
<StyledPanel id="2">Panel 2</StyledPanel>
|
|
59
|
+
</StyledPanelGroup>);
|
|
60
|
+
}
|
|
61
|
+
export function AutosaveCollapsible(props) {
|
|
62
|
+
return (<StyledPanelGroup autosaveId="autosave-example-2" handle={props.handle}>
|
|
63
|
+
<StyledPanel id="1" collapsible collapsedSize="100px" min="140px" onCollapseChange={props.onCollapseChange}>
|
|
64
|
+
Collapsible
|
|
65
|
+
</StyledPanel>
|
|
66
|
+
<StyledResizer id="resizer"/>
|
|
67
|
+
<StyledPanel id="2">Panel 2</StyledPanel>
|
|
68
|
+
</StyledPanelGroup>);
|
|
69
|
+
}
|
|
70
|
+
// TODO: fix this
|
|
71
|
+
export function DynamicConstraints(props) {
|
|
72
|
+
const [customOn, setCustomOn] = createSignal(false);
|
|
73
|
+
return (<>
|
|
74
|
+
<StyledPanelGroup handle={props.handle}>
|
|
75
|
+
<StyledPanel default="100px" min={customOn() ? "200px" : "100px"}>
|
|
76
|
+
<div>Panel 1</div>
|
|
77
|
+
</StyledPanel>
|
|
78
|
+
<StyledResizer />
|
|
79
|
+
<StyledPanel min="100px">
|
|
80
|
+
<div>Panel 2</div>
|
|
81
|
+
</StyledPanel>
|
|
82
|
+
<StyledResizer />
|
|
83
|
+
<StyledPanel min={customOn() ? "100px" : "400px"} max={customOn() ? "300px" : "700px"}>
|
|
84
|
+
<div>Panel 3</div>
|
|
85
|
+
</StyledPanel>
|
|
86
|
+
</StyledPanelGroup>
|
|
87
|
+
<button type="button" onClick={() => setCustomOn(!customOn())}>
|
|
88
|
+
Toggle Custom
|
|
89
|
+
</button>
|
|
90
|
+
</>);
|
|
91
|
+
}
|
|
92
|
+
export function SimpleMin() {
|
|
93
|
+
return (<StyledPanelGroup>
|
|
94
|
+
<StyledPanel min="100px">
|
|
95
|
+
<div>Panel 1</div>
|
|
96
|
+
</StyledPanel>
|
|
97
|
+
<StyledResizer />
|
|
98
|
+
<StyledPanel min="100px">
|
|
99
|
+
<div>Panel 2</div>
|
|
100
|
+
</StyledPanel>
|
|
101
|
+
<StyledResizer />
|
|
102
|
+
<StyledPanel min="100px">
|
|
103
|
+
<div>Panel 3</div>
|
|
104
|
+
</StyledPanel>
|
|
105
|
+
</StyledPanelGroup>);
|
|
106
|
+
}
|
|
107
|
+
export function SimpleMinMax() {
|
|
108
|
+
return (<StyledPanelGroup>
|
|
109
|
+
<StyledPanel min="100px" max="200px">
|
|
110
|
+
<div>Panel 1</div>
|
|
111
|
+
</StyledPanel>
|
|
112
|
+
<StyledResizer />
|
|
113
|
+
<StyledPanel min="100px">
|
|
114
|
+
<div>Panel 2</div>
|
|
115
|
+
</StyledPanel>
|
|
116
|
+
<StyledResizer size="20px"/>
|
|
117
|
+
<StyledPanel min="100px">
|
|
118
|
+
<div>Panel 3</div>
|
|
119
|
+
</StyledPanel>
|
|
120
|
+
</StyledPanelGroup>);
|
|
121
|
+
}
|
|
122
|
+
export function SimpleConstraints() {
|
|
123
|
+
return (<StyledPanelGroup>
|
|
124
|
+
<StyledPanel min="100px" max="50%">
|
|
125
|
+
<div>Panel 1</div>
|
|
126
|
+
</StyledPanel>
|
|
127
|
+
<StyledResizer />
|
|
128
|
+
<StyledPanel>
|
|
129
|
+
<div>Panel 2</div>
|
|
130
|
+
</StyledPanel>
|
|
131
|
+
</StyledPanelGroup>);
|
|
132
|
+
}
|
|
133
|
+
export function HorizontalLayout() {
|
|
134
|
+
return (<StyledPanelGroup orientation="horizontal">
|
|
135
|
+
<StyledPanel default="30%" min="20%">
|
|
136
|
+
left
|
|
137
|
+
</StyledPanel>
|
|
138
|
+
<StyledResizer />
|
|
139
|
+
<StyledPanel min="20%">middle</StyledPanel>
|
|
140
|
+
<StyledResizer />
|
|
141
|
+
<StyledPanel default="30%" min="20%">
|
|
142
|
+
right
|
|
143
|
+
</StyledPanel>
|
|
144
|
+
</StyledPanelGroup>);
|
|
145
|
+
}
|
|
146
|
+
export function VerticalLayout(props) {
|
|
147
|
+
return (<StyledPanelGroup orientation="vertical" style={{ height: "322px" }} handle={props.handle}>
|
|
148
|
+
<StyledPanel default="30%" min="20%">
|
|
149
|
+
top
|
|
150
|
+
</StyledPanel>
|
|
151
|
+
<StyledResizer />
|
|
152
|
+
<StyledPanel min="20%">middle</StyledPanel>
|
|
153
|
+
<StyledResizer />
|
|
154
|
+
<StyledPanel default="30%" min="20%">
|
|
155
|
+
bottom
|
|
156
|
+
</StyledPanel>
|
|
157
|
+
</StyledPanelGroup>);
|
|
158
|
+
}
|
|
159
|
+
export function VerticalLayout2() {
|
|
160
|
+
return (<StyledPanelGroup orientation="vertical" style={{ height: "calc(100vh - 100px)" }}>
|
|
161
|
+
<StyledPanel default="200px" min="200px">
|
|
162
|
+
top
|
|
163
|
+
</StyledPanel>
|
|
164
|
+
<StyledResizer />
|
|
165
|
+
<StyledPanel min="200px" collapsedSize="60px" defaultCollapsed collapsible>
|
|
166
|
+
middle
|
|
167
|
+
</StyledPanel>
|
|
168
|
+
</StyledPanelGroup>);
|
|
169
|
+
}
|
|
170
|
+
export function NestedGroups() {
|
|
171
|
+
return (<PanelGroup orientation="horizontal" style={{
|
|
172
|
+
border: "1px solid rgba(0, 0, 0, 0.3)",
|
|
173
|
+
"border-radius": "12px",
|
|
174
|
+
height: "400px",
|
|
175
|
+
}}>
|
|
176
|
+
<Panel min="10%">1</Panel>
|
|
177
|
+
<StyledResizer />
|
|
178
|
+
<Panel min="10%">
|
|
179
|
+
<PanelGroup orientation="vertical">
|
|
180
|
+
<Panel min="10%">2-1</Panel>
|
|
181
|
+
<StyledResizer />
|
|
182
|
+
<Panel min="10%">
|
|
183
|
+
<PanelGroup orientation="horizontal">
|
|
184
|
+
<Panel min="20%">2-2-1</Panel>
|
|
185
|
+
<StyledResizer />
|
|
186
|
+
<Panel min="20%">2-2-2</Panel>
|
|
187
|
+
</PanelGroup>
|
|
188
|
+
</Panel>
|
|
189
|
+
</PanelGroup>
|
|
190
|
+
</Panel>
|
|
191
|
+
<StyledResizer />
|
|
192
|
+
<Panel min="10%">3</Panel>
|
|
193
|
+
</PanelGroup>);
|
|
194
|
+
}
|
|
195
|
+
export function WithOverflow() {
|
|
196
|
+
return (<StyledPanelGroup style={{ height: "400px" }}>
|
|
197
|
+
<Panel min="200px">
|
|
198
|
+
<div style={{
|
|
199
|
+
overflow: "auto",
|
|
200
|
+
padding: "40px",
|
|
201
|
+
height: "100%",
|
|
202
|
+
"box-sizing": "border-box",
|
|
203
|
+
}}>
|
|
204
|
+
<p>
|
|
205
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec
|
|
206
|
+
euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu
|
|
207
|
+
tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies
|
|
208
|
+
ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.
|
|
209
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
210
|
+
eu tincidunt nisl nisl eu nisl.
|
|
211
|
+
</p>
|
|
212
|
+
<p>
|
|
213
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
214
|
+
eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies
|
|
215
|
+
ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.
|
|
216
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
217
|
+
eu tincidunt nisl nisl eu nisl.
|
|
218
|
+
</p>
|
|
219
|
+
<p>
|
|
220
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
221
|
+
eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies
|
|
222
|
+
ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.
|
|
223
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
224
|
+
eu tincidunt nisl nisl eu nisl.
|
|
225
|
+
</p>
|
|
226
|
+
<p>
|
|
227
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
228
|
+
eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies
|
|
229
|
+
ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.
|
|
230
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
231
|
+
eu tincidunt nisl nisl eu nisl.
|
|
232
|
+
</p>
|
|
233
|
+
<p>
|
|
234
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
235
|
+
eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies
|
|
236
|
+
ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.
|
|
237
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
238
|
+
eu tincidunt nisl nisl eu nisl.
|
|
239
|
+
</p>
|
|
240
|
+
</div>
|
|
241
|
+
</Panel>
|
|
242
|
+
<StyledResizer />
|
|
243
|
+
<Panel min="200px">
|
|
244
|
+
<div style={{
|
|
245
|
+
overflow: "auto",
|
|
246
|
+
padding: "40px",
|
|
247
|
+
height: "100%",
|
|
248
|
+
"box-sizing": "border-box",
|
|
249
|
+
}}>
|
|
250
|
+
<p>
|
|
251
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec
|
|
252
|
+
euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu
|
|
253
|
+
tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies
|
|
254
|
+
ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.
|
|
255
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
256
|
+
eu tincidunt nisl nisl eu nisl.
|
|
257
|
+
</p>
|
|
258
|
+
<p>
|
|
259
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
260
|
+
eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies
|
|
261
|
+
ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.
|
|
262
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
263
|
+
eu tincidunt nisl nisl eu nisl.
|
|
264
|
+
</p>
|
|
265
|
+
<p>
|
|
266
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
267
|
+
eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies
|
|
268
|
+
ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.
|
|
269
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
270
|
+
eu tincidunt nisl nisl eu nisl.
|
|
271
|
+
</p>
|
|
272
|
+
<p>
|
|
273
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
274
|
+
eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies
|
|
275
|
+
ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.
|
|
276
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
277
|
+
eu tincidunt nisl nisl eu nisl.
|
|
278
|
+
</p>
|
|
279
|
+
<p>
|
|
280
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
281
|
+
eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies
|
|
282
|
+
ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.
|
|
283
|
+
Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,
|
|
284
|
+
eu tincidunt nisl nisl eu nisl.
|
|
285
|
+
</p>
|
|
286
|
+
</div>
|
|
287
|
+
</Panel>
|
|
288
|
+
</StyledPanelGroup>);
|
|
289
|
+
}
|
|
290
|
+
export function Collapsible(props) {
|
|
291
|
+
const [collapsed, setCollapsed] = createSignal(true);
|
|
292
|
+
return (<StyledPanelGroup handle={props.handle}>
|
|
293
|
+
<StyledPanel handle={props.leftPanelHandle} min="100px" collapsible collapsedSize="60px" style={{ border: "10px solid green", "box-sizing": "border-box" }} onCollapseChange={(isCollapsed) => {
|
|
294
|
+
console.log("COLLAPSE PASSIVE", isCollapsed);
|
|
295
|
+
}}>
|
|
296
|
+
<div>1</div>
|
|
297
|
+
</StyledPanel>
|
|
298
|
+
<StyledResizer />
|
|
299
|
+
<StyledPanel min="100px">
|
|
300
|
+
<div>2</div>
|
|
301
|
+
</StyledPanel>
|
|
302
|
+
<StyledResizer id="resizer-2"/>
|
|
303
|
+
<StyledPanel handle={props.rightPanelHandle} min="100px" collapsible collapsedSize="60px" collapseAnimation={{ easing: "bounce", duration: 1000 }} style={{ border: "10px solid blue", "box-sizing": "border-box" }} collapsed={collapsed} onCollapseChange={setCollapsed}>
|
|
304
|
+
<div>3</div>
|
|
305
|
+
</StyledPanel>
|
|
306
|
+
</StyledPanelGroup>);
|
|
307
|
+
}
|
|
308
|
+
export function CustomCollapseAnimation() {
|
|
309
|
+
const springFn = spring({
|
|
310
|
+
keyframes: [0, 1],
|
|
311
|
+
velocity: 1,
|
|
312
|
+
stiffness: 100,
|
|
313
|
+
damping: 10,
|
|
314
|
+
mass: 1.0,
|
|
315
|
+
});
|
|
316
|
+
return (<StyledPanelGroup>
|
|
317
|
+
<StyledPanel min="100px" collapsible collapsedSize="60px" style={{ border: "10px solid green", "box-sizing": "border-box" }}>
|
|
318
|
+
1
|
|
319
|
+
</StyledPanel>
|
|
320
|
+
<StyledResizer />
|
|
321
|
+
<StyledPanel min="100px">2</StyledPanel>
|
|
322
|
+
<StyledResizer />
|
|
323
|
+
<StyledPanel style={{ border: "10px solid blue", "box-sizing": "border-box" }} min="100px" collapsible collapsedSize="60px" defaultCollapsed collapseAnimation={{
|
|
324
|
+
easing: (t) => springFn.next(t * 1000).value,
|
|
325
|
+
duration: 1000,
|
|
326
|
+
}}>
|
|
327
|
+
3
|
|
328
|
+
</StyledPanel>
|
|
329
|
+
</StyledPanelGroup>);
|
|
330
|
+
}
|
|
331
|
+
export function ImperativePanel() {
|
|
332
|
+
let groupRef;
|
|
333
|
+
let panelRef;
|
|
334
|
+
return (<>
|
|
335
|
+
<StyledPanelGroup handle={(v) => (groupRef = v)}>
|
|
336
|
+
<StyledPanel handle={(v) => (panelRef = v)} min="100px" collapsible collapsedSize="60px">
|
|
337
|
+
1
|
|
338
|
+
</StyledPanel>
|
|
339
|
+
<StyledResizer />
|
|
340
|
+
<StyledPanel min="100px">2</StyledPanel>
|
|
341
|
+
<StyledResizer />
|
|
342
|
+
<StyledPanel min="100px" collapsible collapsedSize="60px" defaultCollapsed>
|
|
343
|
+
3
|
|
344
|
+
</StyledPanel>
|
|
345
|
+
</StyledPanelGroup>
|
|
346
|
+
|
|
347
|
+
<div>
|
|
348
|
+
<button type="button" onClick={() => alert(`Sizes: ${groupRef?.getPixelSizes()}`)}>
|
|
349
|
+
Get pixel sizes
|
|
350
|
+
</button>
|
|
351
|
+
<button type="button" onClick={() => alert(`Sizes: ${groupRef?.getPercentageSizes()}`)}>
|
|
352
|
+
Get percent sizes
|
|
353
|
+
</button>
|
|
354
|
+
<button type="button" onClick={() => groupRef?.setSizes(["200px", "10px", "50%", "10px", "150px"])}>
|
|
355
|
+
Override sizes
|
|
356
|
+
</button>
|
|
357
|
+
</div>
|
|
358
|
+
|
|
359
|
+
<div>
|
|
360
|
+
<button type="button" onClick={() => panelRef?.collapse()}>
|
|
361
|
+
Collapse
|
|
362
|
+
</button>
|
|
363
|
+
<button type="button" onClick={() => alert(`Collapsed: ${panelRef?.isCollapsed()}`)}>
|
|
364
|
+
Is Collapsed?
|
|
365
|
+
</button>
|
|
366
|
+
<button type="button" onClick={() => panelRef?.expand()}>
|
|
367
|
+
Expand
|
|
368
|
+
</button>
|
|
369
|
+
<button type="button" onClick={() => alert(`Expanded: ${panelRef?.isExpanded()}`)}>
|
|
370
|
+
Is Expanded?
|
|
371
|
+
</button>
|
|
372
|
+
<button type="button" onClick={() => alert(`Id: ${panelRef?.getId()}`)}>
|
|
373
|
+
Get Id
|
|
374
|
+
</button>
|
|
375
|
+
<button type="button" onClick={() => alert(`Size: ${panelRef?.getPixelSize()}`)}>
|
|
376
|
+
Get Pixel Size
|
|
377
|
+
</button>
|
|
378
|
+
<button type="button" onClick={() => alert(`Percentage: ${panelRef?.getPercentageSize()}`)}>
|
|
379
|
+
Get Percentage Size
|
|
380
|
+
</button>
|
|
381
|
+
<button type="button" onClick={() => panelRef?.setSize("30px")}>
|
|
382
|
+
Set size to 100px
|
|
383
|
+
</button>
|
|
384
|
+
<button type="button" onClick={() => panelRef?.setSize("50%")}>
|
|
385
|
+
Set size to 50%
|
|
386
|
+
</button>
|
|
387
|
+
</div>
|
|
388
|
+
</>);
|
|
389
|
+
}
|
|
390
|
+
export function ConditionalPanel(props) {
|
|
391
|
+
const [isExpanded, setIsExpanded] = createSignal(false);
|
|
392
|
+
return (<>
|
|
393
|
+
<StyledPanelGroup handle={props.handle}>
|
|
394
|
+
<StyledPanel id="panel-1" min="100px" collapsible collapsedSize="60px">
|
|
395
|
+
<div>1</div>
|
|
396
|
+
</StyledPanel>
|
|
397
|
+
<StyledResizer id="handle-1"/>
|
|
398
|
+
<StyledPanel id="panel-2" min="100px">
|
|
399
|
+
<div>2</div>
|
|
400
|
+
</StyledPanel>
|
|
401
|
+
|
|
402
|
+
{isExpanded() && (<>
|
|
403
|
+
<StyledResizer id="handle-2"/>
|
|
404
|
+
<StyledPanel id="panel-3" min="100px">
|
|
405
|
+
3
|
|
406
|
+
<button type="button" onClick={() => setIsExpanded(false)}>
|
|
407
|
+
Close
|
|
408
|
+
</button>
|
|
409
|
+
</StyledPanel>
|
|
410
|
+
</>)}
|
|
411
|
+
</StyledPanelGroup>
|
|
412
|
+
|
|
413
|
+
<button type="button" onClick={() => setIsExpanded(true)}>
|
|
414
|
+
Expand
|
|
415
|
+
</button>
|
|
416
|
+
</>);
|
|
417
|
+
}
|
|
418
|
+
export function ConditionalPanelComplex() {
|
|
419
|
+
const [isExpanded, setIsExpanded] = createSignal(false);
|
|
420
|
+
return (<>
|
|
421
|
+
<StyledPanelGroup>
|
|
422
|
+
<StyledPanel id="panel-1" min="100px" collapsible collapsedSize="60px">
|
|
423
|
+
<div>1</div>
|
|
424
|
+
</StyledPanel>
|
|
425
|
+
<StyledResizer id="handle-1"/>
|
|
426
|
+
<StyledPanel id="panel-2" min="100px">
|
|
427
|
+
<div>2</div>
|
|
428
|
+
</StyledPanel>
|
|
429
|
+
<StyledResizer id="handle-2"/>
|
|
430
|
+
<StyledPanel id="panel-3" min="100px">
|
|
431
|
+
<div>3</div>
|
|
432
|
+
</StyledPanel>
|
|
433
|
+
<Show when={isExpanded()}>
|
|
434
|
+
<StyledResizer id="handle-3"/>
|
|
435
|
+
<StyledPanel id="panel-4" min="100px">
|
|
436
|
+
expanded
|
|
437
|
+
<button type="button" onClick={() => setIsExpanded(false)}>
|
|
438
|
+
Close
|
|
439
|
+
</button>
|
|
440
|
+
</StyledPanel>
|
|
441
|
+
</Show>
|
|
442
|
+
<StyledResizer id="handle-4"/>
|
|
443
|
+
<StyledPanel min="200px" collapsible collapsedSize="60px" defaultCollapsed id="panel-5">
|
|
444
|
+
<div>4</div>
|
|
445
|
+
</StyledPanel>
|
|
446
|
+
</StyledPanelGroup>
|
|
447
|
+
<button type="button" onClick={() => setIsExpanded(true)}>
|
|
448
|
+
Expand
|
|
449
|
+
</button>
|
|
450
|
+
</>);
|
|
451
|
+
}
|
|
452
|
+
export function WithDefaultWidth() {
|
|
453
|
+
return (<PanelGroup style={{ height: "400px" }}>
|
|
454
|
+
<Panel style={{ "background-color": "#333366" }}/>
|
|
455
|
+
<PanelResizer size="3px"/>
|
|
456
|
+
<Panel default="100px" min="100px" max="400px" style={{ "background-color": "#ff3366" }}/>
|
|
457
|
+
</PanelGroup>);
|
|
458
|
+
}
|
|
459
|
+
export function StaticAtRest() {
|
|
460
|
+
return (<StyledPanelGroup style={{ height: "200px" }}>
|
|
461
|
+
<StyledPanel min="100px" max="300px" isStaticAtRest>
|
|
462
|
+
Panel 1
|
|
463
|
+
</StyledPanel>
|
|
464
|
+
<StyledResizer />
|
|
465
|
+
<StyledPanel min="100px">Panel 2</StyledPanel>
|
|
466
|
+
<StyledResizer />
|
|
467
|
+
<StyledPanel min="100px">Panel 3</StyledPanel>
|
|
468
|
+
</StyledPanelGroup>);
|
|
469
|
+
}
|
|
470
|
+
//# sourceMappingURL=SolidWindowSplitter.stories.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolidWindowSplitter.stories.jsx","sourceRoot":"","sources":["../../src/SolidWindowSplitter.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Meta } from \"storybook-solidjs\";\nimport { spring } from \"framer-motion\";\n\nimport {\n PanelGroup,\n PanelResizer,\n Panel,\n PanelGroupProps,\n PanelProps,\n PanelResizerProps,\n} from \"./SolidWIndowSplitter.jsx\";\nimport { createSignal, Ref, Show, splitProps } from \"solid-js\";\nimport { PanelHandle } from \"@window-splitter/interface\";\nimport { PanelGroupHandle } from \"@window-splitter/interface\";\nimport { GroupMachineContextValue } from \"@window-splitter/state\";\n\nconst meta = {\n title: \"Components/Solid\",\n component: PanelGroup,\n} satisfies Meta<typeof PanelGroup>;\n\nexport default meta;\n\nfunction StyledPanelGroup(props: PanelGroupProps) {\n return (\n <PanelGroup\n {...props}\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n background: \"rgba(0, 0, 0, 0.1)\",\n \"border-radius\": \"12px\",\n \"box-sizing\": \"border-box\",\n ...props.style,\n }}\n />\n );\n}\n\nfunction StyledPanel(props: PanelProps) {\n const [, attrs] = splitProps(props, [\"children\"]);\n return (\n <Panel\n style={{\n overflow: \"hidden\",\n }}\n {...attrs}\n >\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n padding: \"20px\",\n display: \"flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\",\n overflow: \"hidden\",\n \"box-sizing\": \"border-box\",\n }}\n >\n {props.children}\n </div>\n </Panel>\n );\n}\n\nfunction StyledResizer(props: PanelResizerProps) {\n return <PanelResizer size=\"10px\" style={{ background: \"red\" }} {...props} />;\n}\n\nexport function Simple(props: { handle?: Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={props.handle} style={{ height: \"200px\" }}>\n <StyledPanel>Panel 1</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function Autosave(props: {\n handle?: Ref<PanelGroupHandle>;\n snapshot?: GroupMachineContextValue;\n}) {\n return (\n <StyledPanelGroup\n autosaveId=\"autosave-example-solid\"\n handle={props.handle}\n snapshot={props.snapshot}\n >\n <StyledPanel id=\"1\">Panel 1</StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function AutosaveCookie(props: {\n handle?: Ref<PanelGroupHandle>;\n snapshot?: GroupMachineContextValue;\n}) {\n return (\n <StyledPanelGroup\n autosaveId=\"autosave-cookie-solid\"\n autosaveStrategy=\"cookie\"\n style={{ height: \"200px\" }}\n handle={props.handle}\n snapshot={props.snapshot}\n >\n <StyledPanel id=\"1\">Panel 1</StyledPanel>\n <StyledResizer id=\"resizer1\" size=\"10px\" style={{ background: \"red\" }} />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function AutosaveCollapsible(props: {\n handle?: Ref<PanelGroupHandle>;\n onCollapseChange?: (isCollapsed: boolean) => void;\n}) {\n return (\n <StyledPanelGroup autosaveId=\"autosave-example-2\" handle={props.handle}>\n <StyledPanel\n id=\"1\"\n collapsible\n collapsedSize=\"100px\"\n min=\"140px\"\n onCollapseChange={props.onCollapseChange}\n >\n Collapsible\n </StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\n// TODO: fix this\nexport function DynamicConstraints(props: { handle?: Ref<PanelGroupHandle> }) {\n const [customOn, setCustomOn] = createSignal(false);\n\n return (\n <>\n <StyledPanelGroup handle={props.handle}>\n <StyledPanel default=\"100px\" min={customOn() ? \"200px\" : \"100px\"}>\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n min={customOn() ? \"100px\" : \"400px\"}\n max={customOn() ? \"300px\" : \"700px\"}\n >\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setCustomOn(!customOn())}>\n Toggle Custom\n </button>\n </>\n );\n}\n\nexport function SimpleMin() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleMinMax() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"200px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer size=\"20px\" />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleConstraints() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"50%\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel>\n <div>Panel 2</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function HorizontalLayout() {\n return (\n <StyledPanelGroup orientation=\"horizontal\">\n <StyledPanel default=\"30%\" min=\"20%\">\n left\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n right\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout(props: { handle?: Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup\n orientation=\"vertical\"\n style={{ height: \"322px\" }}\n handle={props.handle}\n >\n <StyledPanel default=\"30%\" min=\"20%\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n bottom\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout2() {\n return (\n <StyledPanelGroup\n orientation=\"vertical\"\n style={{ height: \"calc(100vh - 100px)\" }}\n >\n <StyledPanel default=\"200px\" min=\"200px\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"200px\"\n collapsedSize=\"60px\"\n defaultCollapsed\n collapsible\n >\n middle\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function NestedGroups() {\n return (\n <PanelGroup\n orientation=\"horizontal\"\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n \"border-radius\": \"12px\",\n height: \"400px\",\n }}\n >\n <Panel min=\"10%\">1</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"vertical\">\n <Panel min=\"10%\">2-1</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"horizontal\">\n <Panel min=\"20%\">2-2-1</Panel>\n <StyledResizer />\n <Panel min=\"20%\">2-2-2</Panel>\n </PanelGroup>\n </Panel>\n </PanelGroup>\n </Panel>\n <StyledResizer />\n <Panel min=\"10%\">3</Panel>\n </PanelGroup>\n );\n}\n\nexport function WithOverflow() {\n return (\n <StyledPanelGroup style={{ height: \"400px\" }}>\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: \"40px\",\n height: \"100%\",\n \"box-sizing\": \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n <StyledResizer />\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: \"40px\",\n height: \"100%\",\n \"box-sizing\": \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n </StyledPanelGroup>\n );\n}\n\nexport function Collapsible(props: {\n handle?: Ref<PanelGroupHandle>;\n rightPanelHandle?: Ref<PanelHandle>;\n leftPanelHandle?: Ref<PanelHandle>;\n}) {\n const [collapsed, setCollapsed] = createSignal(true);\n\n return (\n <StyledPanelGroup handle={props.handle}>\n <StyledPanel\n handle={props.leftPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", \"box-sizing\": \"border-box\" }}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE PASSIVE\", isCollapsed);\n }}\n >\n <div>1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={props.rightPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n collapseAnimation={{ easing: \"bounce\", duration: 1000 }}\n style={{ border: \"10px solid blue\", \"box-sizing\": \"border-box\" }}\n collapsed={collapsed}\n onCollapseChange={setCollapsed}\n >\n <div>3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function CustomCollapseAnimation() {\n const springFn = spring({\n keyframes: [0, 1],\n velocity: 1,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n });\n\n return (\n <StyledPanelGroup>\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", \"box-sizing\": \"border-box\" }}\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n style={{ border: \"10px solid blue\", \"box-sizing\": \"border-box\" }}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{\n easing: (t) => springFn.next(t * 1000).value,\n duration: 1000,\n }}\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function ImperativePanel() {\n let groupRef: PanelGroupHandle | undefined;\n let panelRef: PanelHandle | undefined;\n\n return (\n <>\n <StyledPanelGroup handle={(v) => (groupRef = v)}>\n <StyledPanel\n handle={(v) => (panelRef = v)}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n\n <div>\n <button\n type=\"button\"\n onClick={() => alert(`Sizes: ${groupRef?.getPixelSizes()}`)}\n >\n Get pixel sizes\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Sizes: ${groupRef?.getPercentageSizes()}`)}\n >\n Get percent sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n groupRef?.setSizes([\"200px\", \"10px\", \"50%\", \"10px\", \"150px\"])\n }\n >\n Override sizes\n </button>\n </div>\n\n <div>\n <button type=\"button\" onClick={() => panelRef?.collapse()}>\n Collapse\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Collapsed: ${panelRef?.isCollapsed()}`)}\n >\n Is Collapsed?\n </button>\n <button type=\"button\" onClick={() => panelRef?.expand()}>\n Expand\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Expanded: ${panelRef?.isExpanded()}`)}\n >\n Is Expanded?\n </button>\n <button type=\"button\" onClick={() => alert(`Id: ${panelRef?.getId()}`)}>\n Get Id\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Size: ${panelRef?.getPixelSize()}`)}\n >\n Get Pixel Size\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Percentage: ${panelRef?.getPercentageSize()}`)}\n >\n Get Percentage Size\n </button>\n <button type=\"button\" onClick={() => panelRef?.setSize(\"30px\")}>\n Set size to 100px\n </button>\n <button type=\"button\" onClick={() => panelRef?.setSize(\"50%\")}>\n Set size to 50%\n </button>\n </div>\n </>\n );\n}\n\nexport function ConditionalPanel(props: { handle?: Ref<PanelGroupHandle> }) {\n const [isExpanded, setIsExpanded] = createSignal(false);\n\n return (\n <>\n <StyledPanelGroup handle={props.handle}>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n\n {isExpanded() && (\n <>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n 3\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </>\n )}\n </StyledPanelGroup>\n\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </>\n );\n}\n\nexport function ConditionalPanelComplex() {\n const [isExpanded, setIsExpanded] = createSignal(false);\n\n return (\n <>\n <StyledPanelGroup>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n <div>3</div>\n </StyledPanel>\n <Show when={isExpanded()}>\n <StyledResizer id=\"handle-3\" />\n <StyledPanel id=\"panel-4\" min=\"100px\">\n expanded\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </Show>\n <StyledResizer id=\"handle-4\" />\n <StyledPanel\n min=\"200px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n id=\"panel-5\"\n >\n <div>4</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </>\n );\n}\n\nexport function WithDefaultWidth() {\n return (\n <PanelGroup style={{ height: \"400px\" }}>\n <Panel style={{ \"background-color\": \"#333366\" }} />\n <PanelResizer size=\"3px\" />\n <Panel\n default=\"100px\"\n min=\"100px\"\n max=\"400px\"\n style={{ \"background-color\": \"#ff3366\" }}\n />\n </PanelGroup>\n );\n}\n\nexport function StaticAtRest() {\n return (\n <StyledPanelGroup style={{ height: \"200px\" }}>\n <StyledPanel min=\"100px\" max=\"300px\" isStaticAtRest>\n Panel 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 3</StyledPanel>\n </StyledPanelGroup>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolidWindowSplitter.test.d.ts","sourceRoot":"","sources":["../../src/SolidWindowSplitter.test.tsx"],"names":[],"mappings":""}
|