split-pane-react-fixed
v0.2.8
Published
Resizable split panes for React.js.
Downloads
129
Maintainers
Readme
split-pane-react-fixed
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.
reference
Installing
# use npm
npm install split-pane-react-fixed
# or if you use yarn
yarn add split-pane-react-fixed
Example Usage
import React, { useState } from 'react';
import SplitPane, { Pane } from 'split-pane-react-fixed';
import 'split-pane-react-fixed/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
| Property | Description | Type | Default | | -------------- | ---------------- | :--------: | :----------: | | split | Determine layout of panes. | 'vertical' |'horizontal' |'vertical' | | sizes | Collection of different panel sizes,Only support controlled mode, so it's required | (string | number)[] |[] | | resizerSize | Specify the size for resizer | number |4 | | allowResize | Should allowed to resized | boolean |true | | className | split pane custom class name | string |void | | sashRender | User defined sliding axis function | (index: number, active: boolean) => void |void | | performanceMode | High performance mode to avoid excessive pressure on the browser | boolean | false | | onChange | Callback of size change | (sizes: number[],e:MouseEvent) => void |void | | onDragStart | This callback is invoked when a drag starts | (e:MouseEvent) => void |void | | onDragEnd | This callback is invoked when a drag ends | (e:MouseEvent) => void |void | | onSashMouseEnter | This callback is invoked when mouse in sash | (e:MouseEvent,index:number)=>void |void |
Pane
| Property | Description | Type | Default | | ------------------ | ---------------- | :--------: | ------------------ | | className | pane class name | string | void | | minSize | Limit the minimum size of the panel | string | number | void | | maxSize | Limit the maximum size of this panel | string|number | void | | primary | The size of the pane will not be changed first | boolean | false |
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.