primevue
Version:
PrimeVue is a premium UI library for Vue featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBlock, wh
245 lines (239 loc) • 7.61 kB
JavaScript
import { mergeProps, openBlock, createBlock, resolveDynamicComponent, withCtx, renderSlot, normalizeClass } from 'vue';
import BaseComponent from '@primevue/core/basecomponent';
import SidebarStyle from 'primevue/sidebar/style';
var script$1 = {
name: 'BaseSidebar',
"extends": BaseComponent,
props: {
id: {
type: String,
"default": undefined
},
side: {
type: String,
"default": 'left'
},
variant: {
type: String,
"default": 'sidebar'
},
collapsible: {
type: String,
"default": 'icon'
},
overlay: {
type: Boolean,
"default": false
},
open: {
type: Boolean,
"default": undefined
},
openOnHover: {
type: Boolean,
"default": false
},
hoverOpenDelay: {
type: Number,
"default": 50
},
hoverCloseDelay: {
type: Number,
"default": 100
},
dismissable: {
type: Boolean,
"default": true
},
hideOnOutsideClick: {
type: Boolean,
"default": true
},
width: {
type: String,
"default": '16rem'
},
iconWidth: {
type: String,
"default": '3rem'
},
as: {
type: [String, Object],
"default": 'DIV'
},
asChild: {
type: Boolean,
"default": false
}
},
style: SidebarStyle,
provide: function provide() {
return {
$pcSidebar: this,
$parentInstance: this
};
}
};
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
var script = {
name: 'Sidebar',
"extends": script$1,
inheritAttrs: false,
emits: ['update:open'],
inject: {
$pcSidebarLayout: {
"default": null
}
},
data: function data() {
return {
d_open: this.open !== undefined ? this.open : true
};
},
watch: {
open: function open(newValue) {
if (newValue === undefined) return;
this.d_open = newValue;
},
id: function id(newValue, oldValue) {
if (oldValue) {
this.unregisterFromLayout(oldValue);
}
if (newValue) {
this.registerInLayout(newValue);
}
}
},
mounted: function mounted() {
this.registerInLayout(this.id);
},
beforeUnmount: function beforeUnmount() {
this.clearHoverTimer();
this.unregisterFromLayout(this.id);
},
methods: {
registerInLayout: function registerInLayout(id) {
if (!this.$pcSidebarLayout || !id) return;
var self = this;
this.$pcSidebarLayout.registerSidebar(id, {
toggle: function toggle(event) {
return self.toggle(event);
},
get open() {
return self.d_open;
},
get state() {
return self.displayState;
},
get dismissable() {
return self.dismissable;
},
get overlay() {
return self.overlay;
},
get hideOnOutsideClick() {
return self.hideOnOutsideClick;
}
});
},
unregisterFromLayout: function unregisterFromLayout(id) {
if (this.$pcSidebarLayout && id) {
this.$pcSidebarLayout.unregisterSidebar(id);
}
},
clearHoverTimer: function clearHoverTimer() {
if (this.hoverTimer) {
clearTimeout(this.hoverTimer);
this.hoverTimer = null;
}
},
updateOpen: function updateOpen(value, event) {
var next = !!value;
if (this.open === undefined) {
this.d_open = next;
}
this.$emit('update:open', next);
},
toggle: function toggle(event) {
if (this.collapsible === 'none') return;
this.updateOpen(!this.d_open, event);
},
expand: function expand(event) {
this.updateOpen(true, event);
},
collapse: function collapse(event) {
if (this.collapsible === 'none') return;
this.updateOpen(false, event);
},
onPointerEnter: function onPointerEnter(event) {
var _this = this;
if (!this.openOnHover) return;
this.clearHoverTimer();
this.hoverTimer = setTimeout(function () {
return _this.expand(event);
}, this.hoverOpenDelay);
},
onPointerLeave: function onPointerLeave(event) {
var _this2 = this;
if (!this.openOnHover) return;
this.clearHoverTimer();
this.hoverTimer = setTimeout(function () {
return _this2.collapse(event);
}, this.hoverCloseDelay);
},
getSectionAttrs: function getSectionAttrs(section) {
return {
'data-pc-name': 'sidebar',
'data-pc-section': section,
'data-state': this.displayState,
'data-collapsible': this.displayState === 'collapsed' ? this.collapsible : undefined,
'data-collapsible-mode': this.collapsible,
'data-variant': this.variant,
'data-side': this.side,
'data-overlay': this.overlay ? '' : undefined
};
}
},
computed: {
displayState: function displayState() {
return this.d_open ? 'expanded' : 'collapsed';
},
a11yAttrs: function a11yAttrs() {
var hover = this.openOnHover ? {
onPointerenter: this.onPointerEnter,
onPointerleave: this.onPointerLeave
} : {};
return _objectSpread(_objectSpread({}, this.getSectionAttrs('root')), {}, {
style: {
'--px-sidebar-width': this.width,
'--px-sidebar-width-icon': this.iconWidth
}
}, hover);
},
attrs: function attrs() {
return mergeProps(this.a11yAttrs, this.ptmi('root'));
}
}
};
function render(_ctx, _cache, $props, $setup, $data, $options) {
return !_ctx.asChild ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.as), mergeProps({
key: 0,
"class": _ctx.cx('root')
}, $options.attrs), {
"default": withCtx(function () {
return [renderSlot(_ctx.$slots, "default")];
}),
_: 3
}, 16, ["class"])) : renderSlot(_ctx.$slots, "default", {
key: 1,
a11yAttrs: $options.a11yAttrs,
"class": normalizeClass(_ctx.cx('root'))
});
}
script.render = render;
export { script as default };