0.0.3 • Published 7 months ago

@inbuild/split-pane-react v0.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

中文

split-pane-react

Resizable split panes for React.js.Check out the live demo. Different themes.

Features

  • 💪Simple api and support for multiple panels.
  • 🔥Supports vertical & horizontal layouts and fluid pane.
  • 🎉Use controlled component mode, flexible use.
  • 😎React16.8 version at least, and React18 version at the same time.
  • 👷‍♂️Support flexible and convenient customization of sash.

Installing

# use npm
npm install split-pane-react

# or if you use yarn
yarn add split-pane-react

Example Usage

import React, { useState } from 'react';
import SplitPane, { Pane } from 'split-pane-react';
import 'split-pane-react/esm/themes/default.css';

function style (color) {
  return {
    height: '100%',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center',
    backgroundColor: color
  };
}

function App () {
  const [sizes, setSizes] = useState([100, '30%', 'auto']);

  return (
    <div style={{ height: 500 }}>
      <SplitPane
        split='vertical'
        sizes={sizes}
        onChange={setSizes}
      >
        <Pane minSize={50} maxSize='50%'>
          <div style={style('#ddd')}>
            pane1
          </div>
        </Pane>
        <div style={style('#ccc')}>
          pane2
        </div>
        <div style={style('#eee')}>
          pane3
        </div>
      </SplitPane>
    </div>
  );
};

props

SplitPane

PropertyDescriptionTypeDefault
splitDetermine layout of panes.'vertical' |'horizontal''vertical'
sizesCollection of different panel sizes,Only support controlled mode, so it's required(string | number)[][]
resizerSizeSpecify the size for resizernumber4
allowResizeShould allowed to resizedbooleantrue
classNamesplit pane custom class namestringvoid
sashRenderUser defined sliding axis function(index: number, active: boolean) => voidvoid
performanceModeHigh performance mode to avoid excessive pressure on the browserbooleanfalse
onChangeCallback of size change(sizes: number[]) => voidvoid
onDragStartThis callback is invoked when a drag starts() => voidvoid
onDragEndThis callback is invoked when a drag ends() => voidvoid

Pane

PropertyDescriptionTypeDefault
classNamepane class namestringvoid
minSizeLimit the minimum size of the panelstring | numbervoid
maxSizeLimit the maximum size of this panelstring|numbervoid

themes

You can use the sashRender parameter to configure the theme you need:

  • The default theme style refers to vscode style
  • At the same time, we have built in a theme similar to sublime
  • Other demo themes.

License

split-pane-react licensed under MIT.

PS: I would love to know if you're using split-pane-react. If you have any use problems, you can raise the issue, and I will repair them as soon as possible. The project will always be maintained. If you have a good idea, you can propose a merge. If this component helps you, please leave your star. Those who need it will be very grateful.