vue-dock
Version:
Easy to use dockable & resizable panels for Vue. Lightweight, zero dependencies, extensible.
92 lines (77 loc) • 2.24 kB
JavaScript
import { openBlock, createElementBlock, normalizeClass, renderSlot, createElementVNode, toDisplayString } from 'vue';
var script$1 = {
name: "DockContainer",
props: {
horizontal: {
type: Boolean,
default: false
}
},
computed: {
containerClass() {
const classes = ["vue-dock-container"];
if (this.horizontal) {
classes.push("vue-dock-horizontal");
}
return classes
}
}
};
function render$1(_ctx, _cache, $props, $setup, $data, $options) {
return (openBlock(), createElementBlock("div", {
class: normalizeClass($options.containerClass)
}, [
renderSlot(_ctx.$slots, "default")
], 2 /* CLASS */))
}
script$1.render = render$1;
script$1.__file = "src/Container.vue";
var script = {
name: "DockPanel",
props: {
title: {
type: String,
default: "Unnamed Panel"
}
},
methods: {
handleClose() {
console.log('close');
}
},
computed: {
panelClass() {
const classes = ["vue-dock-panel"];
if (this.horizontal) {
classes.push("vue-dock-panel-horizontal");
}
return classes
},
horizontal() {
return this.$parent.horizontal
}
}
};
const _hoisted_1 = { class: "vue-dock-panel-header" };
const _hoisted_2 = { class: "vue-dock-panel-header-title" };
const _hoisted_3 = { class: "vue-dock-panel-content" };
function render(_ctx, _cache, $props, $setup, $data, $options) {
return (openBlock(), createElementBlock("div", {
class: normalizeClass($options.panelClass)
}, [
createElementVNode("div", _hoisted_1, [
createElementVNode("span", _hoisted_2, toDisplayString($props.title), 1 /* TEXT */),
renderSlot(_ctx.$slots, "header"),
createElementVNode("button", {
class: "vue-dock-panel-header-close-button",
onClick: _cache[0] || (_cache[0] = (...args) => ($options.handleClose && $options.handleClose(...args)))
}, "x")
]),
createElementVNode("div", _hoisted_3, [
renderSlot(_ctx.$slots, "content")
])
], 2 /* CLASS */))
}
script.render = render;
script.__file = "src/Panel.vue";
export { script$1 as Container, script as Panel };