@unparallel/sliding-panes
TypeScript icon, indicating that this package has built-in type declarations

1.0.0-0 • Public • Published

Sliding panes

Sliding pane component used for react, providing the following features:

  • Stack panes in top of each other
  • Open a pane side by side
  • Open a pane in fullscreen mode

Install

npm install @unparallel/sliding-panes

Usage

Basic usage example showing all the features

import {Pane, PaneManager, PaneManagerControls, ViewMode} from "@unparallel/sliding-panes";
import "@unparallel/sliding-panes/dist/main.css";

interface SideContentProps {
    title: string,
    paneManagerControls:PaneManagerControls
}


interface ContentProps {
    title: string,
    paneManagerControls:PaneManagerControls
}


function SideContent({paneManagerControls, title}:SideContentProps){
    const {closeSidePane} = paneManagerControls
    return (
        (
            <div>
                <h1>{title}</h1>
                <button onClick={closeSidePane}>Close</button>
            </div>
        )
    )
}

function Content({title,paneManagerControls}:ContentProps){
    const {setSidePane, closeSidePane,addPane,closeLastPane} = paneManagerControls

    function setSidePaneBtn(){
        setSidePane({content:()=><SideContent title={"Side Content"} paneManagerControls={paneManagerControls} />,shouldClose:()=>confirm("Should close side pane?")})
    }

    function openNewPane(){
        addPane({content:()=><Content title={"Other panes"} paneManagerControls={paneManagerControls} />,shouldClose:()=>confirm("Should close pane?")})
    }

    function openNewPaneAsFullscreen(){
        addPane({content:()=><Content title={"Second Pane as fullscreen"} paneManagerControls={paneManagerControls} />,viewMode:ViewMode.FullScreen})
    }

    return(
        <div>
            <h1>{title}</h1>
            <button onClick={closeLastPane}>Close Pane</button>
            <button onClick={closeSidePane}>Close side Pane</button>
            <button onClick={setSidePaneBtn}>Set side pane</button>
            <button onClick={openNewPane}>Open new pane</button>
            <button onClick={openNewPaneAsFullscreen}>Open new pane as fullscreen</button>
        </div>

    )
}

export const Main = function(){

    const pane:Pane = {
        content:((paneManagerControls) =><Content title={"First Pane"}   paneManagerControls={paneManagerControls}/> ),shouldClose:()=>confirm("Should close pane?")
    }


    return (
        <PaneManager>
            {(paneManagerControls)=>(
                <div>
                    <h1>Root Content</h1>
                    <button onClick={()=>{paneManagerControls.addPane(pane)}}>Add first pane</button>
                </div>
            )}
        </PaneManager>
    )
}

PaneManager component

Wrapper component which will provide the "paneManagerControls" object containing methods required to open and close panes

Properties

Name Type is Optional Default Value Description
children (paneManagerControls)=>React.ReactNode no Render of Pane Manager root content, the object "paneManagerControls" is provided and could be used to launch new panes
minPaneDistance number yes 10 Minimum distance (in px) between panes
maxPaneDistance number yes 200 Maximum distance (in px) between panes
paneWidth number yes 300 Width for each pane
timeoutMS number yes 500 Duration of the animation during pane opening, close and adjustment

Structures

PaneManagerControls

Object containing several methods to control the behaviour of the Pane manager

Name Type Description
addPane (pane:Pane)=>void Used to add a new pane
closeLastPane ()=>void Close the last pane
closePane (index: number)=>void Close a specific pane
setSidePane (sidePane: SidePane)=>void Add a side pane to the last pane
closeSidePane ()=>void Close side pane

Pane

Object describing a pane

Name Type is Optional Default Value Description
content (paneManagerControls)=>React.ReactNode no null Content of the new pane, a "paneManagerControls" object will be sent to the content
viewMode ViewMode yes ViewMode.Default View mode of the new pane, allowed options ViewMode.Default or ViewMode.Fullscreen
shouldClose ()=>boolean yes ()=>true Confirmation step before closing the pane

SidePane

Object describing a side pane

Name Type is Optional Default Value Description
content (paneManagerControls)=>React.ReactNode no null Content of the new pane, a "paneManagerControls" object is sent to the content
shouldClose ()=>boolean yes ()=>true Confirmation step before closing the pane

Development

npm install
npm start

Readme

Keywords

none

Package Sidebar

Install

npm i @unparallel/sliding-panes

Weekly Downloads

1

Version

1.0.0-0

License

ISC

Unpacked Size

91.5 kB

Total Files

18

Last publish

Collaborators

  • goncalorolo
  • pms.ferreira
  • amr.goncalves
  • unparallel-owner