All Projects → yansern → Vue Multipane

yansern / Vue Multipane

Licence: other
Resizable split panes for Vue.js.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Vue Multipane

Semantic Ui
Semantic is a UI component framework based around useful principles from natural language.
Stars: ✭ 49,729 (+11546.14%)
Mutual labels:  ui-components, flexbox
resizerjs
Simple resizing for flexbox
Stars: ✭ 16 (-96.25%)
Mutual labels:  resize, flexbox
skelet
Skelet.css a contemporary CSS framework. The basics to get started.
Stars: ✭ 69 (-83.84%)
Mutual labels:  flexbox, ui-components
Radialmenu
A highly customizable radial menu that's very easy to setup.
Stars: ✭ 371 (-13.11%)
Mutual labels:  ui-components
Svelte Materialify
A Material UI Design Component library for Svelte heavily inspired by vuetify.
Stars: ✭ 351 (-17.8%)
Mutual labels:  ui-components
Vue Select
Everything you wish the HTML <select> element could do, wrapped up into a lightweight, extensible Vue component.
Stars: ✭ 4,115 (+863.7%)
Mutual labels:  vue-component
Mort
Storage and image processing server written in Go
Stars: ✭ 420 (-1.64%)
Mutual labels:  resize
Overwatch Ui
A UI library of Overwatch, built with Vue.js
Stars: ✭ 365 (-14.52%)
Mutual labels:  ui-components
Realm Android Adapters
Adapters for combining Realm Java with Android UI components and framework classes
Stars: ✭ 410 (-3.98%)
Mutual labels:  ui-components
Vue Countdown
Countdown component for Vue.js.
Stars: ✭ 393 (-7.96%)
Mutual labels:  vue-component
Accessible components
Listing of accessible components & patterns
Stars: ✭ 393 (-7.96%)
Mutual labels:  ui-components
Sharp
High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, AVIF and TIFF images. Uses the libvips library.
Stars: ✭ 21,131 (+4848.71%)
Mutual labels:  resize
Tentcss
🌿 A CSS survival kit. Includes only the essentials to make camp.
Stars: ✭ 400 (-6.32%)
Mutual labels:  flexbox
Vue Video Player
🎞 @videojs component for @vuejs
Stars: ✭ 4,026 (+842.86%)
Mutual labels:  vue-component
Must Watch Css
A useful list of must-watch talks about CSS
Stars: ✭ 3,966 (+828.81%)
Mutual labels:  flexbox
React Native Responsive Grid
Bringing the Web's Responsive Design to React Native
Stars: ✭ 369 (-13.58%)
Mutual labels:  flexbox
Chart Race React
📊 Seamless bar chart race component for React.
Stars: ✭ 406 (-4.92%)
Mutual labels:  ui-components
Daisyui
⭐️ ⭐️ ⭐️ ⭐️ ⭐️  Tailwind Components
Stars: ✭ 382 (-10.54%)
Mutual labels:  ui-components
Flutter badges
A flutter package for creating badges.
Stars: ✭ 391 (-8.43%)
Mutual labels:  ui-components
Drawer Behavior
Drawer behavior is a library that provide an extra behavior on drawer, such as, move view or scaling view's height while drawer on slide.
Stars: ✭ 394 (-7.73%)
Mutual labels:  ui-components

vue-multipane npm tag

Resizable split panes for Vue.js.


Check out the live demo.

Features

  • Uses CSS3 Flexbox.
  • Supports vertical & horizontal layouts.
  • Supports fixed and fluid panes.
  • Configure everything using CSS!

Installation

$ npm install vue-multipane

Using vue-multipane

First, import vue-multipane into your Vue component.

import { Multipane, MultipaneResizer } from 'vue-multipane';

export default {
  // ...
  components: {
    MultiPane,
    MultiPaneResizer
  }
}

Then, construct your split pane layout using multipane component.

<multipane>
  <div>Pane 1</div>
  <multipane-resizer></multipane-resizer>
  <div>Pane 2</div>
  <multipane-resizer></multipane-resizer>
  <div>Pane 3</div>
</multipane>

Customizing pane layout

You can customize pane layouts using CSS.

  • Create vertical/horizontal layouts using layout="vertical|horizontal" attribute.
  • Set initial pane size using width|height CSS property.
  • Set pane size constraints using min-width|min-height|max-width|max-height CSS property.
  • Create fixed/fluid combination panes by using px|% units.
  • Use flex-grow: 1 for that one pane that should take all remaining space available on the multipane container.

This example below shows a combination of different styling properties you can apply to make the panes render the way you want it to:

<multipane class="foo" layout="vertical">
  <div :style="{ width: '100px', maxWidth: '200px' }">Pane 1</div>
  <multipane-resizer></multipane-resizer>
  <div :style="{ width: '25%', maxWidth: '50%' }">Pane 2</div>
  <multipane-resizer></multipane-resizer>
  <div :style="{ flexGrow: 1 }">Pane 3</div>
</multipane>

Customizing resize handle

By default, vue-multipane creates an invisible 10px resize handle that sits in between 2 panes. You can customize the appearance of the resize handle to fit your needs.

This example below creates a 15px blue resize handle:

.multipane.foo.layout-v .multipane-resizer {
  margin: 0; left: 0; /* reset default styling */
  width: 15px;
  background: blue;
}

.multipane.foo.layout-h .multipane-resizer {
  margin: 0; top: 0; /* reset default styling */
  height: 15px;
  background: blue;
}

Optional resize handle

You can also add resize handle only specific panes by just adding <multipane-resizer> next it.

<multipane>
  <div>Pane 1</div> <!-- No resizing on Pane 1. -->
  <div>Pane 2</div> <!-- Resizing is possible on Pane 2. -->
  <multipane-resizer></multipane-resizer>
  <div>Pane 3</div>
</multipane>

Options

** Multipane **

Property Description Type Default
layout Determine layout of panes. String [vertical, horizontal] vertical

Events

** Multipane **

Event Description Returns
paneresizestart When user clicks on the resize handle to start resizing a pane. pane, container, size
paneresize When user is resizing a pane. pane, container, size
paneresizestop When user release the resize handle to stop resizing a pane. pane, container, size

License

vue-multipane by Yan Sern licensed under MIT.

PS: I would love to know if you're using vue-multipane. Tweet to me at @yansernio.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].