ngx-resizable-ex
Version:
A Resizable Split-Pane Layout for Angular6+
129 lines (114 loc) • 4.69 kB
Markdown
# Resizable Split Pane Layout
This has been adapted from the [@11mb/angular-resizable](https://github.com/11mb/angular-resizable), itself an Angular2 version of [@reklino/angular-resizable](https://github.com/Reklino/angular-resizable) for AngularJS. Similar work in JavaScript: [@RickStrahl/jquery-resizable](https://github.com/RickStrahl/jquery-resizable); [Split.js](https://split.js.org/) by [@nathancahill](https://github.com/nathancahill/split/).
## Usage
Installation instructions
Install ngx-bootstrap from npm:
```
npm install @3dgenomes/ngx-resizable --save
```
Add needed package to NgModule imports:
```
import { NgxResizableModule } from '@3dgenomes/ngx-resizable';
@NgModule({
...
imports: [ResizableComponent,...]
...
})
```
Use component `<rsz-layout>` to your HTML:
### Default layout - HTML-like table rows:
```
+--------+--------+
| > | [Directions]
Row 1 | Cell 1 > Cell 2 | Rows: dragbar on bottom 'v'
| > | Cells: dragbar on right '>'
+ v v v v v v v v +
| > |
Row 2 | Cell 3 > Cell 4 |
| > |
+--------+--------+
```
```
<div class="content">
<rsz-layout class="row" [directions]="['bottom']" [rFlex]="true">
<rsz-layout class="cell" [directions]="['right']" [rFlex]="true">
<p>Cell Content 1</p>
</rsz-layout>
<rsz-layout class="cell" [directions]="['none']" [rFlex]="false">
<p>Cell Content 2</p>
</rsz-layout>
</rsz-layout>
<rsz-layout class="row" [directions]="['none']" [rFlex]="false">
<rsz-layout class="cell" [directions]="['right']" [rFlex]="true">
<p>Cell Content 3</p>
</rsz-layout>
<rsz-layout class="cell" [directions]="['none']" [rFlex]="false">
<p>Cell Content 4</p>
</rsz-layout>
</rsz-layout>
</div>
```
### Columns layout:
```
Col 1 Col 2
+--------+--------+
| > | [Directions]
| Cell 1 > Cell 3 | Rows: dragbar on right '>'
| > | Cells: dragbar on bottom 'v'
| v v v > v v v |
| > |
| Cell 2 > Cell 4 |
| > |
+--------+--------+
Drag bar
```
```
<div class="content cols">
<rsz-layout class="row" [directions]="['right']" [rFlex]="true">
<rsz-layout class="cell" [directions]="['bottom']" [rFlex]="true">
<p>Cell Content 1</p>
</rsz-layout>
<rsz-layout class="cell" [directions]="['none']" [rFlex]="false">
<p>Cell Content 2</p>
</rsz-layout>
</rsz-layout>
<rsz-layout class="row" [directions]="['none']" [rFlex]="false">
<rsz-layout class="cell" [directions]="['bottom']" [rFlex]="true">
<p>Cell Content 3</p>
</rsz-layout>
<rsz-layout class="cell" [directions]="['none']" [rFlex]="false">
<p>Cell Content 4</p>
</rsz-layout>
</rsz-layout>
</div>
```
## Options
Attributes | Default | Accepts | Description
--- | --- | --- | ---
rDirections | ['right'] | ['top', 'right', 'bottom', 'left',] | Determines which sides of the element are resizable.
rFlex | false | boolean | Set as true if you are using flexbox on a cell.
## Events
### angular-resizable.resizeStart
This event is emitted at the beginning of a resize with the following info object:
- `info.width` : The width of the directive at time of resize start. **Will be false if resizing vertically**
- `info.height` : The height of the directive at time of resize start. **Will be false if resizing horizontally**
- `info.id` : The id of the directive. **Will be false if there is no id set.**
- `info.evt` : original mouse event object
### angular-resizable.resizing
Called repeatedly while the mouse is being moved. By default, only calls once every 100ms to keep CPU usage low.
- `info.width` : The width of the directive at time of resize end. **Will be false if resizing vertically**
- `info.height` : The height of the directive at time of resize end. **Will be false if resizing horizontally**
- `info.id` : The id of the directive. **Will be false if there is no id set.**
- `info.evt` : original mouse event object
### angular-resizable.resizeEnd
This event is emitted at the end of a resize with the following object as an argument:
- `info.width` : The width of the directive at time of resize end. **Will be false if resizing vertically**
- `info.height` : The height of the directive at time of resize end. **Will be false if resizing horizontally**
- `info.id` : The id of the directive. **Will be false if there is no id set.**
- `info.evt` : original mouse event object
## Version notes
### 1.0.1
- Add README.md
- Export component via public_api.ts
## License
MIT