import React, { useCallback, useState } from
"react"
;
import
"@blueprintjs/core/lib/css/blueprint.css"
;
import { Button, PanelStack2 } from
"@blueprintjs/core"
;
import
"./App.css"
;
const Panel1 = (props) => {
const openNewPanel = () => {
props.openPanel({
props: {},
renderPanel: Panel2,
title: `Panel-2`,
});
};
return
(
<div className=
"docs-panel-stack-contents-example"
>
<h2>You are at Panel 1.</h2>
<Button onClick={openNewPanel}
text=
"Open New Panel"
/>
</div>
);
};
const Panel2 = (props) => {
const openNewPanel = () => {
props.openPanel({
props: {},
renderPanel: Panel3,
title: `Panel-3`,
});
};
return
(
<div className=
"docs-panel-stack-contents-example"
>
<h2>You are at Panel 2.</h2>
<Button onClick={openNewPanel}
text=
"Open New Panel"
/>
</div>
);
};
const Panel3 = (props) => {
const openNewPanel = () => {
props.openPanel({
props: {},
renderPanel: Panel1,
title: `Panel-1`,
});
};
return
(
<div className=
"docs-panel-stack-contents-example"
>
<h2>You are at Panel 3.</h2>
<Button onClick={openNewPanel}
text=
"Open New Panel"
/>
</div>
);
};
const initialPanel = {
props: {
panelNumber: 1,
},
renderPanel: Panel1,
title:
"Panel 1"
,
};
function
App() {
const [activePanelOnly, setActivePanelOnly] =
useState(
true
);
const [showHeader, setShowHeader] = useState(
true
);
const [currentPanelStack, setCurrentPanelStack] = useState([]);
const addToPanelStack = useCallback(
(newPanel) => setCurrentPanelStack((stack) =>
[...stack, newPanel]),
[]
);
const removeFromPanelStack = useCallback(
() => setCurrentPanelStack((stack) =>
stack.slice(0, -1)),
[]
);
return
(
<div>
<div style={{ textAlign:
"center"
, color:
"green"
}}>
<h1>GeeksforGeeks</h1>
<h2>
ReactJs BluePrint Panel stack v2 Component Panel
</h2>
</div>
<div
className=
"main"
style={{ height:
"240px"
,
width:
"300px"
, margin:
"auto"
}}
>
<PanelStack2
onOpen={addToPanelStack}
onClose={removeFromPanelStack}
renderActivePanelOnly={activePanelOnly}
initialPanel={initialPanel}
className=
"custom-panel"
/>
</div>
</div>
);
}
export
default
App;