uikit
Version:
UIkit is a lightweight and modular front-end framework for developing fast and powerful web interfaces.
3 lines (2 loc) • 5.93 kB
JavaScript
/*! UIkit 3.6.19 | https://www.getuikit.com | (c) 2014 - 2021 YOOtheme | MIT License */
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i(require("uikit-util")):"function"==typeof define&&define.amd?define("uikittooltip",["uikit-util"],i):(t="undefined"!=typeof globalThis?globalThis:t||self).UIkitTooltip=i(t.UIkit.util)}(this,function(f){"use strict";var t={mixins:[{props:{container:Boolean},data:{container:!0},computed:{container:function(t){t=t.container;return!0===t&&this.$container||t&&f.$(t)}}},{props:{cls:Boolean,animation:"list",duration:Number,origin:String,transition:String},data:{cls:!1,animation:[!1],duration:200,origin:!1,transition:"linear",clsEnter:"uk-togglabe-enter",clsLeave:"uk-togglabe-leave",initProps:{overflow:"",height:"",paddingTop:"",paddingBottom:"",marginTop:"",marginBottom:""},hideProps:{overflow:"hidden",height:0,paddingTop:0,paddingBottom:0,marginTop:0,marginBottom:0}},computed:{hasAnimation:function(t){return!!t.animation[0]},hasTransition:function(t){t=t.animation;return this.hasAnimation&&!0===t[0]}},methods:{toggleElement:function(i,c,g){var p=this;return new f.Promise(function(t){return f.Promise.all(f.toNodes(i).map(function(t){var i=f.isBoolean(c)?c:!p.isToggled(t);if(!f.trigger(t,"before"+(i?"show":"hide"),[p]))return f.Promise.reject();var s,r,a,l,h,u,d,o=(f.isFunction(g)?g:!1!==g&&p.hasAnimation?p.hasTransition?(r=(e=p).isToggled,a=e.duration,l=e.initProps,h=e.hideProps,u=e.transition,d=e._toggle,function(t,i){var o=f.Transition.inProgress(t),n=t.hasChildNodes?f.toFloat(f.css(t.firstElementChild,"marginTop"))+f.toFloat(f.css(t.lastElementChild,"marginBottom")):0,e=f.isVisible(t)?f.height(t)+(o?0:n):0;f.Transition.cancel(t),r(t)||d(t,!0),f.height(t,""),f.fastdom.flush();n=f.height(t)+(o?0:n);return f.height(t,e),(i?f.Transition.start(t,f.assign({},l,{overflow:"hidden",height:n}),Math.round(a*(1-e/n)),u):f.Transition.start(t,h,Math.round(a*(e/n)),u).then(function(){return d(t,!1)})).then(function(){return f.css(t,l)})}):(s=p,function(t,i){f.Animation.cancel(t);var o=s.animation,n=s.duration,e=s._toggle;return i?(e(t,!0),f.Animation.in(t,o[0],n,s.origin)):f.Animation.out(t,o[1]||o[0],n,s.origin).then(function(){return e(t,!1)})}):p._toggle)(t,i),n=i?p.clsEnter:p.clsLeave;f.addClass(t,n),f.trigger(t,i?"show":"hide",[p]);var e=function(){f.removeClass(t,n),f.trigger(t,i?"shown":"hidden",[p]),p.$update(t)};return o?o.then(e,function(){return f.removeClass(t,n),f.Promise.reject()}):e()})).then(t,f.noop)})},isToggled:function(t){return void 0===t&&(t=this.$el),!!f.hasClass(t,this.clsEnter)||!f.hasClass(t,this.clsLeave)&&(this.cls?f.hasClass(t,this.cls.split(" ")[0]):!f.hasAttr(t,"hidden"))},_toggle:function(t,i){var o;t&&(i=Boolean(i),this.cls?(o=f.includes(this.cls," ")||i!==f.hasClass(t,this.cls))&&f.toggleClass(t,this.cls,f.includes(this.cls," ")?void 0:i):(o=i===t.hidden)&&(t.hidden=!i),f.$$("[autofocus]",t).some(function(t){return f.isVisible(t)?t.focus()||!0:t.blur()}),o&&(f.trigger(t,"toggled",[i,this]),this.$update(t)))}}},{props:{pos:String,offset:null,flip:Boolean,clsPos:String},data:{pos:"bottom-"+(f.isRtl?"right":"left"),flip:!0,offset:!1,clsPos:""},computed:{pos:function(t){t=t.pos;return(t+(f.includes(t,"-")?"":"-center")).split("-")},dir:function(){return this.pos[0]},align:function(){return this.pos[1]}},methods:{positionAt:function(t,i,o){f.removeClasses(t,this.clsPos+"-(top|bottom|left|right)(-[a-z]+)?");var n,e=this.offset,s=this.getAxis();f.isNumeric(e)||(e=(n=f.$(e))?f.offset(n)["x"===s?"left":"top"]-f.offset(i)["x"===s?"right":"bottom"]:0);e=f.positionAt(t,i,"x"===s?f.flipPosition(this.dir)+" "+this.align:this.align+" "+f.flipPosition(this.dir),"x"===s?this.dir+" "+this.align:this.align+" "+this.dir,"x"===s?""+("left"===this.dir?-e:e):" "+("top"===this.dir?-e:e),null,this.flip,o).target,o=e.x,e=e.y;this.dir="x"===s?o:e,this.align="x"===s?e:o,f.toggleClass(t,this.clsPos+"-"+this.dir+"-"+this.align,!1===this.offset)},getAxis:function(){return"top"===this.dir||"bottom"===this.dir?"y":"x"}}}],args:"title",props:{delay:Number,title:String},data:{pos:"top",title:"",delay:0,animation:["uk-animation-scale-up"],duration:100,cls:"uk-active",clsPos:"uk-tooltip"},beforeConnect:function(){var t;this._hasTitle=f.hasAttr(this.$el,"title"),f.attr(this.$el,"title",""),this.updateAria(!1),function(t){return f.isInput(t)||f.matches(t,"a,button")||f.hasAttr(t,"tabindex")}(t=this.$el)||f.attr(t,"tabindex","0")},disconnected:function(){this.hide(),f.attr(this.$el,"title",this._hasTitle?this.title:null)},methods:{show:function(){var i=this;!this.isToggled(this.tooltip||null)&&this.title&&(this._unbind=f.once(document,"show keydown "+f.pointerDown,this.hide,!1,function(t){return t.type===f.pointerDown&&!f.within(t.target,i.$el)||"keydown"===t.type&&27===t.keyCode||"show"===t.type&&t.detail[0]!==i&&t.detail[0].$name===i.$name}),clearTimeout(this.showTimer),this.showTimer=setTimeout(this._show,this.delay))},hide:function(){var t=this;f.matches(this.$el,"input:focus")||(clearTimeout(this.showTimer),this.isToggled(this.tooltip||null)&&this.toggleElement(this.tooltip,!1,!1).then(function(){t.tooltip=f.remove(t.tooltip),t._unbind()}))},_show:function(){var o=this;this.tooltip=f.append(this.container,'<div class="'+this.clsPos+'"> <div class="'+this.clsPos+'-inner">'+this.title+"</div> </div>"),f.on(this.tooltip,"toggled",function(t,i){o.updateAria(i),i&&(o.positionAt(o.tooltip,o.$el),o.origin="y"===o.getAxis()?f.flipPosition(o.dir)+"-"+o.align:o.align+"-"+f.flipPosition(o.dir))}),this.toggleElement(this.tooltip,!0)},updateAria:function(t){f.attr(this.$el,"aria-expanded",t)}},events:((t={focus:"show",blur:"hide"})[f.pointerEnter+" "+f.pointerLeave]=function(t){f.isTouch(t)||this[t.type===f.pointerEnter?"show":"hide"]()},t[f.pointerDown]=function(t){f.isTouch(t)&&this.show()},t)};return"undefined"!=typeof window&&window.UIkit&&window.UIkit.component("tooltip",t),t});