primevue
Version:
[](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/primevue) [ • 3.37 kB
JavaScript
import{DomHandler as e}from"primevue/utils";import s from"primevue/basedirective";var t=s.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,t){var l=this,n=this.resolveTarget(s,t);this.$el=n,s.$_pstyleclass_clicklistener=function(){t.value.toggleClass?e.hasClass(n,t.value.toggleClass)?e.removeClass(n,t.value.toggleClass):e.addClass(n,t.value.toggleClass):null===n.offsetParent?l.enter(n,s,t):l.leave(n,t)},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,t,l){l.value.enterActiveClass?s.$_pstyleclass_animating||(s.$_pstyleclass_animating=!0,"slidedown"===l.value.enterActiveClass&&(s.style.height="0px",e.removeClass(s,"hidden"),s.style.maxHeight=s.scrollHeight+"px",e.addClass(s,"hidden"),s.style.height=""),e.addClass(s,l.value.enterActiveClass),l.value.enterClass&&e.removeClass(s,l.value.enterClass),s.$p_styleclass_enterlistener=function(){e.removeClass(s,l.value.enterActiveClass),l.value.enterToClass&&e.addClass(s,l.value.enterToClass),s.removeEventListener("animationend",s.$p_styleclass_enterlistener),"slidedown"===l.value.enterActiveClass&&(s.style.maxHeight=""),s.$_pstyleclass_animating=!1},s.addEventListener("animationend",s.$p_styleclass_enterlistener)):(l.value.enterClass&&e.removeClass(s,l.value.enterClass),l.value.enterToClass&&e.addClass(s,l.value.enterToClass)),l.value.hideOnOutsideClick&&this.bindDocumentListener(s,t,l)},leave:function(s,t){t.value.leaveActiveClass?s.$_pstyleclass_animating||(s.$_pstyleclass_animating=!0,e.addClass(s,t.value.leaveActiveClass),t.value.leaveClass&&e.removeClass(s,t.value.leaveClass),s.$p_styleclass_leavelistener=function(){e.removeClass(s,t.value.leaveActiveClass),t.value.leaveToClass&&e.addClass(s,t.value.leaveToClass),s.removeEventListener("animationend",s.$p_styleclass_leavelistener),s.$_pstyleclass_animating=!1},s.addEventListener("animationend",s.$p_styleclass_leavelistener)):(t.value.leaveClass&&e.removeClass(s,t.value.leaveClass),t.value.leaveToClass&&e.addClass(s,t.value.leaveToClass)),t.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,t){var l=this;e.$p_styleclass_documentlistener||(e.$p_styleclass_documentlistener=function(n){l.isVisible(e)&&"static"!==getComputedStyle(e).getPropertyValue("position")?l.isOutsideClick(n,e,s)&&l.leave(e,t):l.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,t){return!t.isSameNode(e.target)&&!t.contains(e.target)&&!s.contains(e.target)}}});export{t as default};