UNPKG

primevue

Version:

PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBloc

2 lines (1 loc) 3.93 kB
"use strict";var e=require("primevue/utils");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=s(require("primevue/basedirective")).default.extend({}).extend("styleclass",{mounted:function(e,s){e.setAttribute("data-pd-styleclass",!0),this.bind(e,s)},unmounted:function(e){this.unbind(e)},methods:{bind:function(s,l){var a=this,t=this.resolveTarget(s,l);this.$el=t,s.$_pstyleclass_clicklistener=function(){l.value.toggleClass?e.DomHandler.hasClass(t,l.value.toggleClass)?e.DomHandler.removeClass(t,l.value.toggleClass):e.DomHandler.addClass(t,l.value.toggleClass):null===t.offsetParent?a.enter(t,s,l):a.leave(t,l)},s.addEventListener("click",s.$_pstyleclass_clicklistener)},unbind:function(e){e.$_pstyleclass_clicklistener&&(e.removeEventListener("click",e.$_pstyleclass_clicklistener),e.$_pstyleclass_clicklistener=null),this.unbindDocumentListener(e)},enter:function(s,l,a){a.value.enterActiveClass?s.$_pstyleclass_animating||(s.$_pstyleclass_animating=!0,"slidedown"===a.value.enterActiveClass&&(s.style.height="0px",e.DomHandler.removeClass(s,"hidden"),s.style.maxHeight=s.scrollHeight+"px",e.DomHandler.addClass(s,"hidden"),s.style.height=""),e.DomHandler.addClass(s,a.value.enterActiveClass),a.value.enterClass&&e.DomHandler.removeClass(s,a.value.enterClass),a.value.enterFromClass&&e.DomHandler.removeClass(s,a.value.enterFromClass),s.$p_styleclass_enterlistener=function(){e.DomHandler.removeClass(s,a.value.enterActiveClass),a.value.enterToClass&&e.DomHandler.addClass(s,a.value.enterToClass),s.removeEventListener("animationend",s.$p_styleclass_enterlistener),"slidedown"===a.value.enterActiveClass&&(s.style.maxHeight=""),s.$_pstyleclass_animating=!1},s.addEventListener("animationend",s.$p_styleclass_enterlistener)):(a.value.enterClass&&e.DomHandler.removeClass(s,a.value.enterClass),a.value.enterFromClass&&e.DomHandler.removeClass(s,a.value.enterFromClass),a.value.enterToClass&&e.DomHandler.addClass(s,a.value.enterToClass)),a.value.hideOnOutsideClick&&this.bindDocumentListener(s,l,a)},leave:function(s,l){l.value.leaveActiveClass?s.$_pstyleclass_animating||(s.$_pstyleclass_animating=!0,e.DomHandler.addClass(s,l.value.leaveActiveClass),l.value.leaveClass&&e.DomHandler.removeClass(s,l.value.leaveClass),l.value.leaveFromClass&&e.DomHandler.removeClass(s,l.value.leaveFromClass),s.$p_styleclass_leavelistener=function(){e.DomHandler.removeClass(s,l.value.leaveActiveClass),l.value.leaveToClass&&e.DomHandler.addClass(s,l.value.leaveToClass),s.removeEventListener("animationend",s.$p_styleclass_leavelistener),s.$_pstyleclass_animating=!1},s.addEventListener("animationend",s.$p_styleclass_leavelistener)):(l.value.leaveClass&&e.DomHandler.removeClass(s,l.value.leaveClass),l.value.leaveFromClass&&e.DomHandler.removeClass(s,l.value.leaveFromClass),l.value.leaveToClass&&e.DomHandler.addClass(s,l.value.leaveToClass)),l.value.hideOnOutsideClick&&this.unbindDocumentListener(s)},resolveTarget:function(e,s){switch(s.value.selector){case"@next":return e.nextElementSibling;case"@prev":return e.previousElementSibling;case"@parent":return e.parentElement;case"@grandparent":return e.parentElement.parentElement;default:return document.querySelector(s.value.selector)}},bindDocumentListener:function(e,s,l){var a=this;e.$p_styleclass_documentlistener||(e.$p_styleclass_documentlistener=function(t){a.isVisible(e)&&"static"!==getComputedStyle(e).getPropertyValue("position")?a.isOutsideClick(t,e,s)&&a.leave(e,l):a.unbindDocumentListener(e)},e.ownerDocument.addEventListener("click",e.$p_styleclass_documentlistener))},unbindDocumentListener:function(e){e.$p_styleclass_documentlistener&&(e.ownerDocument.removeEventListener("click",e.$p_styleclass_documentlistener),e.$p_styleclass_documentlistener=null)},isVisible:function(e){return null!==e.offsetParent},isOutsideClick:function(e,s,l){return!l.isSameNode(e.target)&&!l.contains(e.target)&&!s.contains(e.target)}}});module.exports=l;