Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

asva-double-panel

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

asva-double-panel

Double panel layout for vue.js

  • 0.1.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Asva double panel

Double panel layout for vue.js.

The gist

Imagine modal. Then modal inside of modal. This library does the same, just with two panels. Parent on the left - child on the right. Child on the left - parent on the right. Makes no sense? Check demo.

Usage examples

Sponsors

Trizeri

Install

  • npm: npm install -D asva-double-panel
  • yarn: yarn add -D asva-double-panel

Commands

  • yarn dev - run dev server (then go to /#/demo)
  • yarn dist - bundle distribution package for npm
  • yarn demo - bundle demo

How to use

First - create a double panel wrapper component.

In example ListPanelExample and CloudPanelExample are root panels (displayed by default).

<template>
    <DoublePanel :left="leftPanel" :right="rightPanel"/>
</template>

<script>
  import { DoublePanel } from 'asva-double-panel'

  import PanelComponent from './PanelComponent.vue'

  export default {
    components: {
      DoublePanel,
      ListPanelExample,
      CloudPanelExample,
    },
    computed: {
      leftPanel: () => PanelComponent,
      rightPanel: () => PanelComponent,
    },
  }
</script>

Let's dive into panel component structure. 2 things to notice here:

  • Register panelMixin in your component to make it a panel component.
  • Add value prop to receive payload (toss data from one panel to another).
<template>
    <div class="panel-component-example">
        <p>
            Test value from prop: {{ value.test }}
        </p>
        <p>
            <button @click="$panel.close()">Close</button>
            <button @click="$panel.closeChild()">Close child</button>
        </p>
        <p>
            <button @click="$panel.create()">Create</button>
        </p>
        <p>
            <button @click="$panel.switchPosition()">Switch position</button>
            Position: {{$panel.position}}
        </p>
        <p>
            <button @click="$panel.toggleFullWidth()">Toggle full-width</button>
            Full width: {{$panel.isFullWidth}}
        </p>
    </div>
</template>

<script>
  import { panelMixin } from 'asva-double-panel'

  export default {
    name: 'panel-component',
    mixins: [panelMixin],
    props: ['value'],
  }
</script>
Styles

You have to import styles for double panel to function properly.

  • css - ~asva-double-panel/dist/css/main.css

Api

  • $panel.close() - close current panel and its descendants.
  • $panel.closeChild() - close only panel descendants.
  • $panel.switchPosition() - move panel from left to right and vice-versa.
  • $panel.toggleFullWidth() - widen the panel to occupy full space (useful for prints and tables).
Create new panel

this.$panel.create(component, [payload, [options]]), where

  • component - component object (the thing you get via import Component from 'Component.vue'). If you want to create same component recursively - use this.constructor.
  • payload - any data you want to provide into newly created component.
  • options - additional options, if you don't provide any - defaults will be used.

Options:

  • replaceSelf - Don't create new panel on top, instead replace current one.
  • fullWidth [Boolean, default: false] - Create panel in fullWidth mode.
  • reuse [Boolean, default: false] - If true, and panel with current component already exists on top of current one - we'll just refresh payload (useful for iframe reuse).
  • position ['same' | 'opposite', default 'opposite'] - Defines whether new panel should be created directly on top of current one in opposite side.

Features

  • Two panel layout.
  • Nested panels.
  • Internal panel component.

Feedback

If you feel something is not right - please leave feedback. I might even tweak library a bit for you needs if you case is common. : 3

Licence

MIT

Keywords

FAQs

Package last updated on 18 Apr 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc