@progress/kendo-vue-tooltip 9.3.0-develop.2 → 9.3.0-develop.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,6 +14,8 @@
14
14
 
15
15
  The Kendo UI for Vue Tooltip represents a popup with information that is related to a UI element and which is displayed when this UI element is clicked or hovered over.
16
16
 
17
+ The package also includes the Kendo UI for Vue Popover, which displays rich interactive content next to an anchor element.
18
+
17
19
  ## Vue Tooltip
18
20
 
19
21
  > Starting with **version 6.0.0**, Kendo UI for Vue Native components no longer support Vue 2. Please check our [Vue 2 End of Support article](https://www.telerik.com/kendo-vue-ui/components/vue2-deprecation/) for more details.
@@ -28,6 +30,31 @@ Among the features which the Kendo UI for Vue Tooltip component delivers are:
28
30
  * [Customization](https://www.telerik.com/kendo-vue-ui/components/tooltip/tooltip-customization/?utm_medium=referral&utm_source=npm&utm_campaign=kendo-ui-vue-trial-npm-tooltip)—You can place the Tooltip in a specific location and attach its handlers there.
29
31
  * [Theme support](https://www.telerik.com/kendo-vue-ui/components/styling/?utm_medium=referral&utm_source=npm&utm_campaign=kendo-ui-vue-trial-npm-tooltip)—The Kendo UI for Vue Tooltip, as well as all 100+ components in the Kendo UI for Vue suite, are styled in four polished themes (Bootstrap, Material, Default and Fluent) and can be further customized to match your specific design guidelines.
30
32
 
33
+ ## Vue Popover
34
+
35
+ [The Kendo UI for Vue Popover component](https://www.telerik.com/kendo-vue-ui/components/tooltip/popover/?utm_medium=referral&utm_source=npm&utm_campaign=kendo-ui-vue-trial-npm-tooltip) displays rich interactive content next to an anchor element.
36
+
37
+ ```vue
38
+ <template>
39
+ <KButton ref="anchor" @click="show = !show">Show popover</KButton>
40
+ <Popover :anchor="anchor?.$el || anchor" :show="show" :title="'Confirm action'">
41
+ Are you sure you want to continue?
42
+ <PopoverActionsBar>
43
+ <KButton @click="show = false">Close</KButton>
44
+ </PopoverActionsBar>
45
+ </Popover>
46
+ </template>
47
+
48
+ <script setup lang="ts">
49
+ import { ref } from 'vue';
50
+ import { Button as KButton } from '@progress/kendo-vue-buttons';
51
+ import { Popover, PopoverActionsBar } from '@progress/kendo-vue-tooltip';
52
+
53
+ const anchor = ref<HTMLElement | { $el: HTMLElement } | null>(null);
54
+ const show = ref(false);
55
+ </script>
56
+ ```
57
+
31
58
  ## Support Options
32
59
 
33
60
  For any issues you might encounter while working with the Kendo UI for Vue Tooltip, use any of the available support channels:
@@ -12,4 +12,4 @@
12
12
  * Licensed under commercial license. See LICENSE.md in the package root for more information
13
13
  *-------------------------------------------------------------------------------------------
14
14
  */
15
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vue"),require("@progress/kendo-vue-common")):"function"==typeof define&&define.amd?define(["exports","vue","@progress/kendo-vue-common"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).KendoVueTooltip={},t.Vue,t.KendoVueCommon)}(this,function(t,e,o){"use strict";const i=10,n=10,s=(t,e,n,s,l)=>{switch(l){case"bottom":case"top":return"pointer"===s?t-e/2:n.left-e/2+n.width/2;case"left":return"pointer"===s?t-e-i:n.left-e-i;case"right":return"pointer"===s?t+i:n.right+i;default:return"pointer"===s?o.canUseDOM&&t<window.screen.availWidth/2?t-i:t-e+i:o.canUseDOM&&t<window.screen.availWidth/2?n.left:n.right-e}},l=(t,e,s,l,r)=>{switch(r){case"bottom":return"pointer"===l?t+n:e.bottom+n;case"left":case"right":return"pointer"===l?t-s/2:e.top-s/2+e.height/2;case"top":return"pointer"===l?t-s-n:e.top-s-n;default:return"pointer"===l?o.canUseDOM&&t<window.innerHeight/2?t+i:t-s-i:o.canUseDOM&&t<window.innerHeight/2?e.bottom+n:e.top-s-n}},r=["k-tooltip-content","k-animation-container","k-tooltip","k-tooltip-title","k-tooltip k-tooltip-closable","k-icon k-i-x","k-svg-icon k-svg-i-x"],a=t=>{if(null===t)return!1;let e=t;for(;e;){if(null!==e&&e.classList&&e.classList.contains("k-tooltip"))return!0;e=null!==e.parentNode&&e.parentNode}return r.filter(e=>e===t.className).length>0},p={name:"@progress/kendo-vue-tooltip",productName:"Kendo UI for Vue",productCode:"KENDOUIVUE",productCodes:["KENDOUIVUE"],publishDate:1639571344,version:"9.3.0-develop.2",licensingDocsUrl:"https://www.telerik.com/kendo-vue-ui/my-license/?utm_medium=product&utm_source=kendovue&utm_campaign=kendo-ui-vue-purchase-license-keys-warning"},u="_tb_active",h=e.defineComponent({name:"KendoTooltip",inheritAttrs:!1,props:{showCallout:{type:Boolean,default:!0},setCalloutOnPositionAuto:{type:String,default:void 0},anchorElement:{type:String,default:"pointer",validator:function(t){return["pointer","target"].includes(t)}},content:[String,Object,Function],filter:Function,openDelay:{type:Number,default:400},open:{type:Boolean,default:void 0},position:{type:String,default:"auto",validator:function(t){return["right","left","top","bottom","auto"].includes(t)}},updatePosition:{type:Function,default:void 0},updateInterval:Number,className:String,wrapperStyle:Object,tooltipClassName:String,tooltipStyle:Object,targetElement:{type:void 0},parentTitle:{type:Boolean,default:!1}},data:()=>({top:0,left:0,currentTargetElement:null,currentOpen:!1,title:""}),computed:{wrapperClass(){return{"k-animation-container":!0,"k-animation-container-fixed":!0,"k-animation-container-shown":!0,[this.$props.className]:!0}},computedTarget(){return void 0!==this.targetElement?this.targetElement:this.currentTargetElement},computedOpen(){return void 0!==this.open?this.open:this.currentOpen}},inject:{kCurrentZIndex:{default:null}},created(){o.validatePackage(p),this.top=0,this.left=0,this.willOpen=!1},mounted(){this.element=o.getRef(this,"element"),document&&document.body.addEventListener("mousemove",this.handleBodyMousemove)},unmounted(){this.destroyElement()},updated(){if(this.$props.open&&this.$props.targetElement&&this.showToolTip({target:this.$props.targetElement}),this.element=o.getRef(this,"element"),this.element){if(this.resetPosition(),this.computedTarget){const t=this.$props.appendTo?this.$props.appendTo:this.computedTarget.ownerDocument.body;this.element.parentElement!==t&&this.computedTarget.ownerDocument.body.append(this.element)}this.callout=this.calloutRef,this.callout&&(this.callout.className=this.calloutClassName(),"auto"===this.$props.position&&o.canUseDOM&&(this.left<window.screen.availWidth/2?this.callout.style.left=this.$props.setCalloutOnPositionAuto||"25%":this.callout.style.left=this.$props.setCalloutOnPositionAuto||"75%"))}},render(){const t=o.getDefaultSlots(this),i=this.getCurrentZIndex(),n=this.$props.content?o.templateRendering.call(this,this.$props.content,o.getListeners.call(this)):void 0,s=this.title;let l=o.guid()+u;this.computedTarget&&(this.computedTarget.hasAttribute("id")&&(l=this.computedTarget.getAttribute("id")+u),this.computedTarget.setAttribute("aria-describedby",l));const r=o.getTemplate.call(this,{h:e.h,template:n,defaultRendering:s,additionalProps:{title:this.title,target:this.computedTarget}}),a=this.computedOpen&&e.createVNode("div",{class:o.classNames("k-tooltip",this.$props.tooltipClassName),role:"tooltip",id:l,style:{position:"relative",...this.$props.tooltipStyle}},[e.createVNode("div",{class:"k-tooltip-content"},[r]),this.$props.showCallout&&e.createVNode("div",{ref:o.setRef(this,"callout")},null)]),p=this.computedTarget&&this.title&&this.computedTarget.ownerDocument&&e.createVNode("div",{ref:o.setRef(this,"element"),class:this.wrapperClass,style:{zIndex:i,...this.$props.wrapperStyle},tabindex:0,onMouseleave:this.handleTooltipMouseOut},[e.createVNode("div",{class:"k-child-animation-container"},[a])]);return t?e.createVNode("div",{onMouseover:this.handleMouseOver,onMouseout:this.handleMouseOut},[p,t]):p},methods:{destroyElement(){clearTimeout(this.openTimeoutId),clearInterval(this.updateIntervalId),document&&document.body.removeEventListener("mousemove",this.handleBodyMousemove),this.element&&this.element.remove()},handleTooltipMouseOut(t){this.onClose(t)},handleMouseOut(t){const e=this.computedTarget?this.computedTarget.ownerDocument:document;let o=e&&e.elementFromPoint(t.clientX,t.clientY);this.willOpen=!1,!a(o)&&this.computedTarget===t.target&&(this.$props.open||(clearInterval(this.updateIntervalId),this.onClose(t)))},handleMouseOver(t){const e=t.target;!this.isVisible(e)||a(e)||e===this.computedTarget||this.showToolTip(t)},handleBodyMousemove(t){this.top=t.clientY,this.left=t.clientX},onClose(t){this.$emit("close",{event:t,component:this}),this.computedTarget.removeAttribute("aria-describedby"),this.currentTargetElement=null,this.currentOpen=!1,this.title=""},showToolTip(t){clearTimeout(this.openTimeoutId),clearInterval(this.updateIntervalId),t.target.hasChildNodes()&&t.target.childNodes.forEach(e=>{"title"===e.nodeName&&(t.target.titleExpando=e.innerHTML,e.remove())});const e=this.computedTarget||t.target;let i=this.getTitle(e);i.title?(i.element&&(i.element.titleExpando=i.title,i.element.title=""),this.willOpen=!0,this.$props.openDelay?o.canUseDOM&&(this.openTimeoutId=window.setTimeout(()=>{this.willOpen&&(this.currentTargetElement=e,this.currentOpen=!0,this.title=i.title,this.setUpdateInterval())},this.$props.openDelay)):(this.currentTargetElement=e,this.currentOpen=!0,this.title=i.title,this.setUpdateInterval()),this.title!==i.title&&this.$emit("open",{event:t,compoponent:this})):this.computedOpen&&this.onClose(t)},setUpdateInterval(){this.$props.updateInterval&&(this.updateIntervalId=setInterval(this.onIntervalUpdate,this.$props.updateInterval))},onIntervalUpdate(){const t=this.computedTarget;t&&(null===t.parentElement?this.onClose({target:t}):this.showToolTip({target:t}))},resetPosition(){if(this.element){let t=this.setPosition(this.element);this.$props.updatePosition&&(t=this.$props.updatePosition({element:this.element,targetElement:this.computedTarget,mouseTop:this.top,mouseLeft:this.left,anchorElement:this.$props.anchorElement,position:this.$props.position,target:this,defaultPosition:t})),this.element.style.left=t.left+"px",this.element.style.top=t.top+"px"}},isVisible(t){return!this.$props.filter||this.$props.filter(t)},setPosition(t){let e=(t=>null!==t?t.getBoundingClientRect():document.body.getBoundingClientRect())(this.parentTitle?this.getTitle(this.computedTarget).element:this.computedTarget);return{left:s(this.left,t.offsetWidth,e,this.$props.anchorElement,this.$props.position),top:l(this.top,e,t.offsetHeight,this.$props.anchorElement,this.$props.position)}},getTitle(t){for(;t;){if(null!==t.getAttribute("title")||t.titleExpando)return{title:t.getAttribute("title")||t.titleExpando,element:t};t=this.$props.parentTitle&&t.parentElement||null}return{title:"",element:t}},calloutClassName(){switch(this.$props.position){case"bottom":return"k-callout k-callout-n";case"left":return"k-callout k-callout-e";case"right":return"k-callout k-callout-w";case"top":return"k-callout k-callout-s";default:return o.canUseDOM&&this.top<window.innerHeight/2?"k-callout k-callout-n":"k-callout k-callout-s"}},getCurrentZIndex(){return this.kCurrentZIndex?this.kCurrentZIndex:100}}});t.Tooltip=h});
15
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vue"),require("@progress/kendo-vue-common"),require("@progress/kendo-vue-popup")):"function"==typeof define&&define.amd?define(["exports","vue","@progress/kendo-vue-common","@progress/kendo-vue-popup"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).KendoVueTooltip={},t.Vue,t.KendoVueCommon,t.KendoVuePopup)}(this,function(t,e,o,i){"use strict";const n=10,s=10,r=(t,e,i,s,r)=>{switch(r){case"bottom":case"top":return"pointer"===s?t-e/2:i.left-e/2+i.width/2;case"left":return"pointer"===s?t-e-n:i.left-e-n;case"right":return"pointer"===s?t+n:i.right+n;default:return"pointer"===s?o.canUseDOM&&t<window.screen.availWidth/2?t-n:t-e+n:o.canUseDOM&&t<window.screen.availWidth/2?i.left:i.right-e}},l=(t,e,i,r,l)=>{switch(l){case"bottom":return"pointer"===r?t+s:e.bottom+s;case"left":case"right":return"pointer"===r?t-i/2:e.top-i/2+e.height/2;case"top":return"pointer"===r?t-i-s:e.top-i-s;default:return"pointer"===r?o.canUseDOM&&t<window.innerHeight/2?t+n:t-i-n:o.canUseDOM&&t<window.innerHeight/2?e.bottom+s:e.top-i-s}},a=["k-tooltip-content","k-animation-container","k-tooltip","k-tooltip-title","k-tooltip k-tooltip-closable","k-icon k-i-x","k-svg-icon k-svg-i-x"],p=t=>{if(null===t)return!1;let e=t;for(;e;){if(null!==e&&e.classList&&e.classList.contains("k-tooltip"))return!0;e=null!==e.parentNode&&e.parentNode}return a.filter(e=>e===t.className).length>0},d={name:"@progress/kendo-vue-tooltip",productName:"Kendo UI for Vue",productCode:"KENDOUIVUE",productCodes:["KENDOUIVUE"],publishDate:1639571344,version:"9.3.0-develop.4",licensingDocsUrl:"https://www.telerik.com/kendo-vue-ui/my-license/?utm_medium=product&utm_source=kendovue&utm_campaign=kendo-ui-vue-purchase-license-keys-warning"},h="_tb_active",u=e.defineComponent({name:"KendoTooltip",inheritAttrs:!1,props:{showCallout:{type:Boolean,default:!0},setCalloutOnPositionAuto:{type:String,default:void 0},anchorElement:{type:String,default:"pointer",validator:function(t){return["pointer","target"].includes(t)}},content:[String,Object,Function],filter:Function,openDelay:{type:Number,default:400},open:{type:Boolean,default:void 0},position:{type:String,default:"auto",validator:function(t){return["right","left","top","bottom","auto"].includes(t)}},updatePosition:{type:Function,default:void 0},updateInterval:Number,className:String,wrapperStyle:Object,tooltipClassName:String,tooltipStyle:Object,targetElement:{type:void 0},parentTitle:{type:Boolean,default:!1}},data:()=>({top:0,left:0,currentTargetElement:null,currentOpen:!1,title:""}),computed:{wrapperClass(){return{"k-animation-container":!0,"k-animation-container-fixed":!0,"k-animation-container-shown":!0,[this.$props.className]:!0}},computedTarget(){return void 0!==this.targetElement?this.targetElement:this.currentTargetElement},computedOpen(){return void 0!==this.open?this.open:this.currentOpen}},inject:{kCurrentZIndex:{default:null}},created(){o.validatePackage(d),this.top=0,this.left=0,this.willOpen=!1},mounted(){this.element=o.getRef(this,"element"),document&&document.body.addEventListener("mousemove",this.handleBodyMousemove)},unmounted(){this.destroyElement()},updated(){if(this.$props.open&&this.$props.targetElement&&this.showToolTip({target:this.$props.targetElement}),this.element=o.getRef(this,"element"),this.element){if(this.resetPosition(),this.computedTarget){const t=this.$props.appendTo?this.$props.appendTo:this.computedTarget.ownerDocument.body;this.element.parentElement!==t&&t.append(this.element)}this.callout=this.calloutRef,this.callout&&(this.callout.className=this.calloutClassName(),"auto"===this.$props.position&&o.canUseDOM&&(this.left<window.screen.availWidth/2?this.callout.style.left=this.$props.setCalloutOnPositionAuto||"25%":this.callout.style.left=this.$props.setCalloutOnPositionAuto||"75%"))}},render(){const t=o.getDefaultSlots(this),i=this.getCurrentZIndex(),n=this.$props.content?o.templateRendering.call(this,this.$props.content,o.getListeners.call(this)):void 0,s=this.title;let r=o.guid()+h;this.computedTarget&&(this.computedTarget.hasAttribute("id")&&(r=this.computedTarget.getAttribute("id")+h),this.computedTarget.setAttribute("aria-describedby",r));const l=o.getTemplate.call(this,{h:e.h,template:n,defaultRendering:s,additionalProps:{title:this.title,target:this.computedTarget}}),a=this.computedOpen&&e.createVNode("div",{class:o.classNames("k-tooltip",this.$props.tooltipClassName),role:"tooltip",id:r,style:{position:"relative",...this.$props.tooltipStyle}},[e.createVNode("div",{class:"k-tooltip-content"},[l]),this.$props.showCallout&&e.createVNode("div",{ref:o.setRef(this,"callout")},null)]),p=this.computedTarget&&this.title&&this.computedTarget.ownerDocument&&e.createVNode("div",{ref:o.setRef(this,"element"),class:this.wrapperClass,style:{zIndex:i,...this.$props.wrapperStyle},tabindex:0,onMouseleave:this.handleTooltipMouseOut},[e.createVNode("div",{class:"k-child-animation-container"},[a])]);return t?e.createVNode("div",{onMouseover:this.handleMouseOver,onMouseout:this.handleMouseOut},[p,t]):p},methods:{destroyElement(){clearTimeout(this.openTimeoutId),clearInterval(this.updateIntervalId),document&&document.body.removeEventListener("mousemove",this.handleBodyMousemove),this.element&&this.element.remove()},handleTooltipMouseOut(t){this.onClose(t)},handleMouseOut(t){const e=this.computedTarget?this.computedTarget.ownerDocument:document;let o=e&&e.elementFromPoint(t.clientX,t.clientY);this.willOpen=!1,!p(o)&&this.computedTarget===t.target&&(this.$props.open||(clearInterval(this.updateIntervalId),this.onClose(t)))},handleMouseOver(t){const e=t.target;!this.isVisible(e)||p(e)||e===this.computedTarget||this.showToolTip(t)},handleBodyMousemove(t){this.top=t.clientY,this.left=t.clientX},onClose(t){this.$emit("close",{event:t,component:this}),this.computedTarget.removeAttribute("aria-describedby"),this.currentTargetElement=null,this.currentOpen=!1,this.title=""},showToolTip(t){clearTimeout(this.openTimeoutId),clearInterval(this.updateIntervalId),t.target.hasChildNodes()&&t.target.childNodes.forEach(e=>{"title"===e.nodeName&&(t.target.titleExpando=e.innerHTML,e.remove())});const e=this.computedTarget||t.target;let i=this.getTitle(e);i.title?(i.element&&(i.element.titleExpando=i.title,i.element.title=""),this.willOpen=!0,this.$props.openDelay?o.canUseDOM&&(this.openTimeoutId=window.setTimeout(()=>{this.willOpen&&(this.currentTargetElement=e,this.currentOpen=!0,this.title=i.title,this.setUpdateInterval())},this.$props.openDelay)):(this.currentTargetElement=e,this.currentOpen=!0,this.title=i.title,this.setUpdateInterval()),this.title!==i.title&&this.$emit("open",{event:t,compoponent:this})):this.computedOpen&&this.onClose(t)},setUpdateInterval(){this.$props.updateInterval&&(this.updateIntervalId=setInterval(this.onIntervalUpdate,this.$props.updateInterval))},onIntervalUpdate(){const t=this.computedTarget;t&&(null===t.parentElement?this.onClose({target:t}):this.showToolTip({target:t}))},resetPosition(){if(this.element){let t=this.setPosition(this.element);this.$props.updatePosition&&(t=this.$props.updatePosition({element:this.element,targetElement:this.computedTarget,mouseTop:this.top,mouseLeft:this.left,anchorElement:this.$props.anchorElement,position:this.$props.position,target:this,defaultPosition:t})),this.element.style.left=t.left+"px",this.element.style.top=t.top+"px"}},isVisible(t){return!this.$props.filter||this.$props.filter(t)},setPosition(t){let e=(t=>null!==t?t.getBoundingClientRect():document.body.getBoundingClientRect())(this.parentTitle?this.getTitle(this.computedTarget).element:this.computedTarget);return{left:r(this.left,t.offsetWidth,e,this.$props.anchorElement,this.$props.position),top:l(this.top,e,t.offsetHeight,this.$props.anchorElement,this.$props.position)}},getTitle(t){for(;t;){if(null!==t.getAttribute("title")||t.titleExpando)return{title:t.getAttribute("title")||t.titleExpando,element:t};t=this.$props.parentTitle&&t.parentElement||null}return{title:"",element:t}},calloutClassName(){switch(this.$props.position){case"bottom":return"k-callout k-callout-n";case"left":return"k-callout k-callout-e";case"right":return"k-callout k-callout-w";case"top":return"k-callout k-callout-s";default:return o.canUseDOM&&this.top<window.innerHeight/2?"k-callout k-callout-n":"k-callout k-callout-s"}},getCurrentZIndex(){return this.kCurrentZIndex?this.kCurrentZIndex:100}}}),c=e.defineComponent({name:"KendoPopoverActionsBar",props:{alignment:{type:String,default:"stretched"},orientation:{type:String,default:"horizontal"}},render(){return e.createVNode("div",{class:o.classNames("k-popover-actions","k-actions",`k-actions-${this.$props.alignment}`,`k-actions-${this.$props.orientation}`)},[o.getDefaultSlots(this)])}}),m={top:"k-callout-s",left:"k-callout-e",bottom:"k-callout-n",right:"k-callout-w"},g={top:"k-callout-n",left:"k-callout-w",bottom:"k-callout-s",right:"k-callout-e"},f={top:{vertical:"bottom",horizontal:"center"},left:{vertical:"center",horizontal:"right"},bottom:{vertical:"top",horizontal:"center"},right:{vertical:"center",horizontal:"left"}},v={top:{vertical:"top",horizontal:"center"},left:{vertical:"center",horizontal:"left"},bottom:{vertical:"bottom",horizontal:"center"},right:{vertical:"center",horizontal:"right"}},y=e.defineComponent({name:"KendoPopover",inheritAttrs:!1,emits:["open","close","position","keydown"],props:{autoFocus:{type:Boolean,default:!0},title:[String,Object,Function],position:{type:String,default:"top"},callout:{type:Boolean,default:!0},animate:[Boolean,Object],anchor:Object,appendTo:Object,collision:{type:Object,default:()=>({horizontal:"none",vertical:"none"})},margin:Object,positionMode:{type:String,default:"fixed"},scale:Number,offset:Object,popoverClass:[String,Array,Object],className:[String,Array,Object],id:String,style:Object,contentStyle:Object,show:{type:Boolean,default:!1}},inject:{kCurrentZIndex:{default:null}},provide(){return{kCurrentZIndex:this.currentZIndex}},data:()=>({flipped:!1}),computed:{currentZIndex(){return this.kCurrentZIndex?this.kCurrentZIndex+2e3:12e3},popoverId(){return this.$props.id||this._popoverId},headerId(){return`${this.popoverId}-header`},bodyId(){return`${this.popoverId}-body`},popoverMargin(){if(this.$props.margin)return this.$props.margin;const t="top"===this.$props.position||"bottom"===this.$props.position;return{horizontal:this.$props.callout&&!t?15:0,vertical:this.$props.callout&&t?15:0}},calloutClass(){const t=this.$props.position;return this.flipped?g[t]:m[t]}},created(){o.validatePackage(d),this._popoverId=o.guid()},methods:{element(){return document.getElementById(this.popoverId)},handleOpen(){this.$props.autoFocus&&e.nextTick(()=>{var t;const e=null==(t=document.getElementById(this.popoverId))?void 0:t.querySelector(".k-popover-inner"),o=null==e?void 0:e.querySelector('a[href], area[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])');null==o||o.focus()}),this.$emit("open",{target:this})},handleClose(){var t;this.$emit("close",{target:this}),null==(t=this.$props.anchor)||t.focus()},handlePosition(t){this.flipped=t.flipped,this.$emit("position",{target:this,fitted:t.fitted,flipped:t.flipped})},handleKeydown(t){var e;if("Tab"===t.key){const o=Array.from((null==(e=document.getElementById(this.popoverId))?void 0:e.querySelectorAll('a[href], area[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'))||[]),i=o[0],n=o[o.length-1];t.shiftKey&&document.activeElement===i?(t.preventDefault(),n.focus()):!t.shiftKey&&document.activeElement===n&&(t.preventDefault(),i.focus())}"Escape"===t.key&&this.$emit("keydown",{target:this,show:!1})},getContent:t=>t.filter(t=>t.type!==c),getActionBar:t=>t.filter(t=>t.type===c)},render(){const t=o.getDefaultSlots(this)||[];let n=null;"string"==typeof this.$props.title?n=this.$props.title:this.$props.title&&(n=o.getTemplate.call(this,{h:e.h,template:o.templateRendering.call(this,this.$props.title,o.getListeners.call(this)),defaultRendering:this.$props.title}));const s=e.createVNode(e.Fragment,null,[n&&e.createVNode("div",{class:"k-popover-header",id:this.headerId},[n]),e.createVNode("div",{class:"k-popover-body",id:this.bodyId,style:this.$props.contentStyle},[this.getContent(t)]),this.getActionBar(t)]),r=this.$props.position;return e.createVNode(i.Popup,{id:this.popoverId,role:"dialog",ariaLabelledBy:n?this.headerId:void 0,ariaDescribedBy:this.bodyId,animate:this.$props.animate,collision:this.$props.collision,anchor:this.$props.anchor,appendTo:this.$props.appendTo,offset:this.$props.offset,margin:this.popoverMargin,popupAlign:f[r],anchorAlign:v[r],show:this.$props.show,scale:this.$props.scale,positionMode:this.$props.positionMode,style:this.$props.style,className:this.$props.className,popupClass:o.classNames("k-popover",this.$props.popoverClass),onOpen:this.handleOpen,onClose:this.handleClose,onPosition:this.handlePosition,onKeydown:this.handleKeydown},{default:()=>[this.$props.callout?e.createVNode(e.Fragment,null,[e.createVNode("div",{class:o.classNames("k-popover-callout",this.calloutClass)},null),e.createVNode("div",{class:"k-popover-inner"},[s])]):s]})}});t.Popover=y,t.PopoverActionsBar=c,t.Tooltip=u});
package/index.d.mts CHANGED
@@ -5,8 +5,19 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import { Tooltip } from './Tooltip.js';
9
- import { TooltipProps } from './TooltipProps.js';
10
- import { TooltipEvent, TooltipPositionEvent } from './events.js';
11
- import { TooltipPosition } from './utils.js';
8
+ import { Tooltip } from './tooltip/Tooltip.js';
9
+ import { TooltipProps } from './tooltip/TooltipProps.js';
10
+ import { TooltipEvent, TooltipPositionEvent } from './tooltip/events.js';
11
+ import { TooltipPosition } from './tooltip/utils.js';
12
12
  export { Tooltip, type TooltipEvent, type TooltipPositionEvent, type TooltipProps, type TooltipPosition };
13
+ export { Popover, type PopoverHandle } from './popover/Popover.js';
14
+ export { PopoverActionsBar } from './popover/PopoverActionsBar.js';
15
+ export type { PopoverActionsBarProps } from './popover/interfaces/PopoverActionsBarProps.js';
16
+ export type { PopoverAnimation } from './popover/interfaces/PopoverAnimation.js';
17
+ export type { PopoverCollision } from './popover/interfaces/PopoverCollision.js';
18
+ export type { PopoverMargin } from './popover/interfaces/PopoverMargin.js';
19
+ export type { PopoverOffset } from './popover/interfaces/PopoverOffset.js';
20
+ export type { PopoverPosition } from './popover/interfaces/PopoverPosition.js';
21
+ export type { PopoverPositionMode } from './popover/interfaces/PopoverPositionMode.js';
22
+ export type { PopoverProps } from './popover/interfaces/PopoverProps.js';
23
+ export type { PopoverCloseEvent, PopoverKeyDownEvent, PopoverOpenEvent, PopoverPositionEvent } from './popover/interfaces/PopoverEvents.js';
package/index.d.ts CHANGED
@@ -5,8 +5,19 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import { Tooltip } from './Tooltip';
9
- import { TooltipProps } from './TooltipProps';
10
- import { TooltipEvent, TooltipPositionEvent } from './events';
11
- import { TooltipPosition } from './utils';
8
+ import { Tooltip } from './tooltip/Tooltip';
9
+ import { TooltipProps } from './tooltip/TooltipProps';
10
+ import { TooltipEvent, TooltipPositionEvent } from './tooltip/events';
11
+ import { TooltipPosition } from './tooltip/utils';
12
12
  export { Tooltip, type TooltipEvent, type TooltipPositionEvent, type TooltipProps, type TooltipPosition };
13
+ export { Popover, type PopoverHandle } from './popover/Popover';
14
+ export { PopoverActionsBar } from './popover/PopoverActionsBar';
15
+ export type { PopoverActionsBarProps } from './popover/interfaces/PopoverActionsBarProps';
16
+ export type { PopoverAnimation } from './popover/interfaces/PopoverAnimation';
17
+ export type { PopoverCollision } from './popover/interfaces/PopoverCollision';
18
+ export type { PopoverMargin } from './popover/interfaces/PopoverMargin';
19
+ export type { PopoverOffset } from './popover/interfaces/PopoverOffset';
20
+ export type { PopoverPosition } from './popover/interfaces/PopoverPosition';
21
+ export type { PopoverPositionMode } from './popover/interfaces/PopoverPositionMode';
22
+ export type { PopoverProps } from './popover/interfaces/PopoverProps';
23
+ export type { PopoverCloseEvent, PopoverKeyDownEvent, PopoverOpenEvent, PopoverPositionEvent } from './popover/interfaces/PopoverEvents';
package/index.js CHANGED
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./Tooltip.js");exports.Tooltip=o.Tooltip;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./tooltip/Tooltip.js"),e=require("./popover/Popover.js"),r=require("./popover/PopoverActionsBar.js");exports.Tooltip=o.Tooltip;exports.Popover=e.Popover;exports.PopoverActionsBar=r.PopoverActionsBar;
package/index.mjs CHANGED
@@ -5,7 +5,11 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import { Tooltip as r } from "./Tooltip.mjs";
8
+ import { Tooltip as p } from "./tooltip/Tooltip.mjs";
9
+ import { Popover as t } from "./popover/Popover.mjs";
10
+ import { PopoverActionsBar as m } from "./popover/PopoverActionsBar.mjs";
9
11
  export {
10
- r as Tooltip
12
+ t as Popover,
13
+ m as PopoverActionsBar,
14
+ p as Tooltip
11
15
  };
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={name:"@progress/kendo-vue-tooltip",productName:"Kendo UI for Vue",productCode:"KENDOUIVUE",productCodes:["KENDOUIVUE"],publishDate: 1787739323,version:"9.3.0-develop.2",licensingDocsUrl:"https://www.telerik.com/kendo-vue-ui/my-license/?utm_medium=product&utm_source=kendovue&utm_campaign=kendo-ui-vue-purchase-license-keys-warning"};exports.packageMetadata=e;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={name:"@progress/kendo-vue-tooltip",productName:"Kendo UI for Vue",productCode:"KENDOUIVUE",productCodes:["KENDOUIVUE"],publishDate: 1788268220,version:"9.3.0-develop.4",licensingDocsUrl:"https://www.telerik.com/kendo-vue-ui/my-license/?utm_medium=product&utm_source=kendovue&utm_campaign=kendo-ui-vue-purchase-license-keys-warning"};exports.packageMetadata=e;
@@ -10,8 +10,8 @@ const e = {
10
10
  productName: "Kendo UI for Vue",
11
11
  productCode: "KENDOUIVUE",
12
12
  productCodes: ["KENDOUIVUE"],
13
- publishDate: 1787739323,
14
- version: "9.3.0-develop.2",
13
+ publishDate: 1788268220,
14
+ version: "9.3.0-develop.4",
15
15
  licensingDocsUrl: "https://www.telerik.com/kendo-vue-ui/my-license/?utm_medium=product&utm_source=kendovue&utm_campaign=kendo-ui-vue-purchase-license-keys-warning"
16
16
  };
17
17
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-vue-tooltip",
3
- "version": "9.3.0-develop.2",
3
+ "version": "9.3.0-develop.4",
4
4
  "description": "TODO",
5
5
  "author": "Progress",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -25,7 +25,8 @@
25
25
  "sideEffects": false,
26
26
  "peerDependencies": {
27
27
  "@progress/kendo-licensing": "^1.7.2",
28
- "@progress/kendo-vue-common": "9.3.0-develop.2",
28
+ "@progress/kendo-vue-common": "9.3.0-develop.4",
29
+ "@progress/kendo-vue-popup": "9.3.0-develop.4",
29
30
  "vue": "^3.0.2"
30
31
  },
31
32
  "dependencies": {},
@@ -45,7 +46,7 @@
45
46
  "package": {
46
47
  "productName": "Kendo UI for Vue",
47
48
  "productCode": "KENDOUIVUE",
48
- "publishDate": 1787739323,
49
+ "publishDate": 1788268220,
49
50
  "licensingDocsUrl": "https://www.telerik.com/kendo-vue-ui/my-license/?utm_medium=product&utm_source=kendovue&utm_campaign=kendo-ui-vue-purchase-license-keys-warning"
50
51
  }
51
52
  },
@@ -0,0 +1,159 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { PropType, VNode } from 'vue';
9
+ import { PopoverProps } from './interfaces/PopoverProps';
10
+ import { PopoverMargin } from './interfaces/PopoverMargin';
11
+ import { PopoverPosition } from './interfaces/PopoverPosition';
12
+ /**
13
+ * Represents the Popover component instance.
14
+ */
15
+ export interface PopoverHandle {
16
+ /** The props of the Popover. */
17
+ props: PopoverProps;
18
+ /** Returns the rendered Popover element. */
19
+ element(): HTMLElement | null;
20
+ }
21
+ /**
22
+ * Represents the Popover component.
23
+ */
24
+ declare const Popover: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
25
+ autoFocus: {
26
+ type: PropType<boolean>;
27
+ default: boolean;
28
+ };
29
+ title: PropType<string | VNode<import('vue').RendererNode, import('vue').RendererElement, {
30
+ [key: string]: any;
31
+ }> | (() => VNode<import('vue').RendererNode, import('vue').RendererElement, {
32
+ [key: string]: any;
33
+ }>)>;
34
+ position: {
35
+ type: PropType<PopoverPosition>;
36
+ default: string;
37
+ };
38
+ callout: {
39
+ type: PropType<boolean>;
40
+ default: boolean;
41
+ };
42
+ animate: PropType<boolean | import('@progress/kendo-vue-popup').PopupAnimation>;
43
+ anchor: PropType<HTMLElement>;
44
+ appendTo: PropType<HTMLElement>;
45
+ collision: {
46
+ type: PropType<import('..').PopoverCollision>;
47
+ default: () => {
48
+ horizontal: string;
49
+ vertical: string;
50
+ };
51
+ };
52
+ margin: PropType<PopoverMargin>;
53
+ positionMode: {
54
+ type: PropType<import('..').PopoverPositionMode>;
55
+ default: string;
56
+ };
57
+ scale: PropType<number>;
58
+ offset: PropType<import('..').PopoverOffset>;
59
+ popoverClass: PropType<string | string[] | {
60
+ [key: string]: boolean;
61
+ }>;
62
+ className: PropType<string | string[] | {
63
+ [key: string]: boolean;
64
+ }>;
65
+ id: PropType<string>;
66
+ style: PropType<import('vue').CSSProperties>;
67
+ contentStyle: PropType<import('vue').CSSProperties>;
68
+ show: {
69
+ type: PropType<boolean>;
70
+ default: boolean;
71
+ };
72
+ }>, {}, {
73
+ flipped: boolean;
74
+ }, {
75
+ currentZIndex(): number;
76
+ popoverId(): string;
77
+ headerId(): string;
78
+ bodyId(): string;
79
+ popoverMargin(): PopoverMargin;
80
+ calloutClass(): string;
81
+ }, {
82
+ element(): HTMLElement | null;
83
+ handleOpen(): void;
84
+ handleClose(): void;
85
+ handlePosition(event: {
86
+ fitted: boolean;
87
+ flipped: boolean;
88
+ }): void;
89
+ handleKeydown(event: KeyboardEvent): void;
90
+ getContent(slots: VNode[]): VNode<import('vue').RendererNode, import('vue').RendererElement, {
91
+ [key: string]: any;
92
+ }>[];
93
+ getActionBar(slots: VNode[]): VNode<import('vue').RendererNode, import('vue').RendererElement, {
94
+ [key: string]: any;
95
+ }>[];
96
+ }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("close" | "keydown" | "position" | "open")[], "close" | "keydown" | "position" | "open", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
97
+ autoFocus: {
98
+ type: PropType<boolean>;
99
+ default: boolean;
100
+ };
101
+ title: PropType<string | VNode<import('vue').RendererNode, import('vue').RendererElement, {
102
+ [key: string]: any;
103
+ }> | (() => VNode<import('vue').RendererNode, import('vue').RendererElement, {
104
+ [key: string]: any;
105
+ }>)>;
106
+ position: {
107
+ type: PropType<PopoverPosition>;
108
+ default: string;
109
+ };
110
+ callout: {
111
+ type: PropType<boolean>;
112
+ default: boolean;
113
+ };
114
+ animate: PropType<boolean | import('@progress/kendo-vue-popup').PopupAnimation>;
115
+ anchor: PropType<HTMLElement>;
116
+ appendTo: PropType<HTMLElement>;
117
+ collision: {
118
+ type: PropType<import('..').PopoverCollision>;
119
+ default: () => {
120
+ horizontal: string;
121
+ vertical: string;
122
+ };
123
+ };
124
+ margin: PropType<PopoverMargin>;
125
+ positionMode: {
126
+ type: PropType<import('..').PopoverPositionMode>;
127
+ default: string;
128
+ };
129
+ scale: PropType<number>;
130
+ offset: PropType<import('..').PopoverOffset>;
131
+ popoverClass: PropType<string | string[] | {
132
+ [key: string]: boolean;
133
+ }>;
134
+ className: PropType<string | string[] | {
135
+ [key: string]: boolean;
136
+ }>;
137
+ id: PropType<string>;
138
+ style: PropType<import('vue').CSSProperties>;
139
+ contentStyle: PropType<import('vue').CSSProperties>;
140
+ show: {
141
+ type: PropType<boolean>;
142
+ default: boolean;
143
+ };
144
+ }>> & Readonly<{
145
+ onKeydown?: (...args: any[]) => any;
146
+ onClose?: (...args: any[]) => any;
147
+ onOpen?: (...args: any[]) => any;
148
+ onPosition?: (...args: any[]) => any;
149
+ }>, {
150
+ position: PopoverPosition;
151
+ callout: boolean;
152
+ show: boolean;
153
+ collision: import('..').PopoverCollision;
154
+ positionMode: import('..').PopoverPositionMode;
155
+ autoFocus: boolean;
156
+ }, {}, {}, {}, string, () => {
157
+ kCurrentZIndex: any;
158
+ }, true, {}, any>;
159
+ export { Popover };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),s=require("@progress/kendo-vue-common"),p=require("@progress/kendo-vue-popup"),c=require("../package-metadata.js"),l=require("./PopoverActionsBar.js"),d=12e3,h=2e3,a=15,u={top:"k-callout-s",left:"k-callout-e",bottom:"k-callout-n",right:"k-callout-w"},f={top:"k-callout-n",left:"k-callout-w",bottom:"k-callout-s",right:"k-callout-e"},g={top:{vertical:"bottom",horizontal:"center"},left:{vertical:"center",horizontal:"right"},bottom:{vertical:"top",horizontal:"center"},right:{vertical:"center",horizontal:"left"}},m={top:{vertical:"top",horizontal:"center"},left:{vertical:"center",horizontal:"left"},bottom:{vertical:"bottom",horizontal:"center"},right:{vertical:"center",horizontal:"right"}},b=o.defineComponent({name:"KendoPopover",inheritAttrs:!1,emits:["open","close","position","keydown"],props:{autoFocus:{type:Boolean,default:!0},title:[String,Object,Function],position:{type:String,default:"top"},callout:{type:Boolean,default:!0},animate:[Boolean,Object],anchor:Object,appendTo:Object,collision:{type:Object,default:()=>({horizontal:"none",vertical:"none"})},margin:Object,positionMode:{type:String,default:"fixed"},scale:Number,offset:Object,popoverClass:[String,Array,Object],className:[String,Array,Object],id:String,style:Object,contentStyle:Object,show:{type:Boolean,default:!1}},inject:{kCurrentZIndex:{default:null}},provide(){return{kCurrentZIndex:this.currentZIndex}},data(){return{flipped:!1}},computed:{currentZIndex(){return this.kCurrentZIndex?this.kCurrentZIndex+h:d},popoverId(){return this.$props.id||this._popoverId},headerId(){return`${this.popoverId}-header`},bodyId(){return`${this.popoverId}-body`},popoverMargin(){if(this.$props.margin)return this.$props.margin;const t=this.$props.position==="top"||this.$props.position==="bottom";return{horizontal:this.$props.callout&&!t?a:0,vertical:this.$props.callout&&t?a:0}},calloutClass(){const t=this.$props.position;return this.flipped?f[t]:u[t]}},created(){s.validatePackage(c.packageMetadata),this._popoverId=s.guid()},methods:{element(){return document.getElementById(this.popoverId)},handleOpen(){this.$props.autoFocus&&o.nextTick(()=>{var i;const t=(i=document.getElementById(this.popoverId))==null?void 0:i.querySelector(".k-popover-inner"),e=t==null?void 0:t.querySelector('a[href], area[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])');e==null||e.focus()}),this.$emit("open",{target:this})},handleClose(){var t;this.$emit("close",{target:this}),(t=this.$props.anchor)==null||t.focus()},handlePosition(t){this.flipped=t.flipped,this.$emit("position",{target:this,fitted:t.fitted,flipped:t.flipped})},handleKeydown(t){var e;if(t.key==="Tab"){const i=Array.from(((e=document.getElementById(this.popoverId))==null?void 0:e.querySelectorAll('a[href], area[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'))||[]),r=i[0],n=i[i.length-1];t.shiftKey&&document.activeElement===r?(t.preventDefault(),n.focus()):!t.shiftKey&&document.activeElement===n&&(t.preventDefault(),r.focus())}t.key==="Escape"&&this.$emit("keydown",{target:this,show:!1})},getContent(t){return t.filter(e=>e.type!==l.PopoverActionsBar)},getActionBar(t){return t.filter(e=>e.type===l.PopoverActionsBar)}},render(){const t=s.getDefaultSlots(this)||[];let e=null;typeof this.$props.title=="string"?e=this.$props.title:this.$props.title&&(e=s.getTemplate.call(this,{h:o.h,template:s.templateRendering.call(this,this.$props.title,s.getListeners.call(this)),defaultRendering:this.$props.title}));const i=o.createVNode(o.Fragment,null,[e&&o.createVNode("div",{class:"k-popover-header",id:this.headerId},[e]),o.createVNode("div",{class:"k-popover-body",id:this.bodyId,style:this.$props.contentStyle},[this.getContent(t)]),this.getActionBar(t)]),r=this.$props.position;return o.createVNode(p.Popup,{id:this.popoverId,role:"dialog",ariaLabelledBy:e?this.headerId:void 0,ariaDescribedBy:this.bodyId,animate:this.$props.animate,collision:this.$props.collision,anchor:this.$props.anchor,appendTo:this.$props.appendTo,offset:this.$props.offset,margin:this.popoverMargin,popupAlign:g[r],anchorAlign:m[r],show:this.$props.show,scale:this.$props.scale,positionMode:this.$props.positionMode,style:this.$props.style,className:this.$props.className,popupClass:s.classNames("k-popover",this.$props.popoverClass),onOpen:this.handleOpen,onClose:this.handleClose,onPosition:this.handlePosition,onKeydown:this.handleKeydown},{default:()=>[this.$props.callout?o.createVNode(o.Fragment,null,[o.createVNode("div",{class:s.classNames("k-popover-callout",this.calloutClass)},null),o.createVNode("div",{class:"k-popover-inner"},[i])]):i]})}});exports.Popover=b;
@@ -0,0 +1,241 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { defineComponent as c, h as d, createVNode as i, Fragment as n, nextTick as h } from "vue";
9
+ import { getDefaultSlots as u, getTemplate as f, templateRendering as m, getListeners as g, classNames as l, validatePackage as b, guid as y } from "@progress/kendo-vue-common";
10
+ import { Popup as v } from "@progress/kendo-vue-popup";
11
+ import { packageMetadata as $ } from "../package-metadata.mjs";
12
+ import { PopoverActionsBar as p } from "./PopoverActionsBar.mjs";
13
+ const I = 12e3, k = 2e3, a = 15, O = {
14
+ top: "k-callout-s",
15
+ left: "k-callout-e",
16
+ bottom: "k-callout-n",
17
+ right: "k-callout-w"
18
+ }, P = {
19
+ top: "k-callout-n",
20
+ left: "k-callout-w",
21
+ bottom: "k-callout-s",
22
+ right: "k-callout-e"
23
+ }, C = {
24
+ top: {
25
+ vertical: "bottom",
26
+ horizontal: "center"
27
+ },
28
+ left: {
29
+ vertical: "center",
30
+ horizontal: "right"
31
+ },
32
+ bottom: {
33
+ vertical: "top",
34
+ horizontal: "center"
35
+ },
36
+ right: {
37
+ vertical: "center",
38
+ horizontal: "left"
39
+ }
40
+ }, x = {
41
+ top: {
42
+ vertical: "top",
43
+ horizontal: "center"
44
+ },
45
+ left: {
46
+ vertical: "center",
47
+ horizontal: "left"
48
+ },
49
+ bottom: {
50
+ vertical: "bottom",
51
+ horizontal: "center"
52
+ },
53
+ right: {
54
+ vertical: "center",
55
+ horizontal: "right"
56
+ }
57
+ }, w = /* @__PURE__ */ c({
58
+ name: "KendoPopover",
59
+ inheritAttrs: !1,
60
+ emits: ["open", "close", "position", "keydown"],
61
+ props: {
62
+ autoFocus: {
63
+ type: Boolean,
64
+ default: !0
65
+ },
66
+ title: [String, Object, Function],
67
+ position: {
68
+ type: String,
69
+ default: "top"
70
+ },
71
+ callout: {
72
+ type: Boolean,
73
+ default: !0
74
+ },
75
+ animate: [Boolean, Object],
76
+ anchor: Object,
77
+ appendTo: Object,
78
+ collision: {
79
+ type: Object,
80
+ default: () => ({
81
+ horizontal: "none",
82
+ vertical: "none"
83
+ })
84
+ },
85
+ margin: Object,
86
+ positionMode: {
87
+ type: String,
88
+ default: "fixed"
89
+ },
90
+ scale: Number,
91
+ offset: Object,
92
+ popoverClass: [String, Array, Object],
93
+ className: [String, Array, Object],
94
+ id: String,
95
+ style: Object,
96
+ contentStyle: Object,
97
+ show: {
98
+ type: Boolean,
99
+ default: !1
100
+ }
101
+ },
102
+ inject: {
103
+ kCurrentZIndex: {
104
+ default: null
105
+ }
106
+ },
107
+ provide() {
108
+ return {
109
+ kCurrentZIndex: this.currentZIndex
110
+ };
111
+ },
112
+ data() {
113
+ return {
114
+ flipped: !1
115
+ };
116
+ },
117
+ computed: {
118
+ currentZIndex() {
119
+ return this.kCurrentZIndex ? this.kCurrentZIndex + k : I;
120
+ },
121
+ popoverId() {
122
+ return this.$props.id || this._popoverId;
123
+ },
124
+ headerId() {
125
+ return `${this.popoverId}-header`;
126
+ },
127
+ bodyId() {
128
+ return `${this.popoverId}-body`;
129
+ },
130
+ popoverMargin() {
131
+ if (this.$props.margin)
132
+ return this.$props.margin;
133
+ const t = this.$props.position === "top" || this.$props.position === "bottom";
134
+ return {
135
+ horizontal: this.$props.callout && !t ? a : 0,
136
+ vertical: this.$props.callout && t ? a : 0
137
+ };
138
+ },
139
+ calloutClass() {
140
+ const t = this.$props.position;
141
+ return this.flipped ? P[t] : O[t];
142
+ }
143
+ },
144
+ created() {
145
+ b($), this._popoverId = y();
146
+ },
147
+ methods: {
148
+ element() {
149
+ return document.getElementById(this.popoverId);
150
+ },
151
+ handleOpen() {
152
+ this.$props.autoFocus && h(() => {
153
+ var o;
154
+ const t = (o = document.getElementById(this.popoverId)) == null ? void 0 : o.querySelector(".k-popover-inner"), e = t == null ? void 0 : t.querySelector('a[href], area[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])');
155
+ e == null || e.focus();
156
+ }), this.$emit("open", {
157
+ target: this
158
+ });
159
+ },
160
+ handleClose() {
161
+ var t;
162
+ this.$emit("close", {
163
+ target: this
164
+ }), (t = this.$props.anchor) == null || t.focus();
165
+ },
166
+ handlePosition(t) {
167
+ this.flipped = t.flipped, this.$emit("position", {
168
+ target: this,
169
+ fitted: t.fitted,
170
+ flipped: t.flipped
171
+ });
172
+ },
173
+ handleKeydown(t) {
174
+ var e;
175
+ if (t.key === "Tab") {
176
+ const o = Array.from(((e = document.getElementById(this.popoverId)) == null ? void 0 : e.querySelectorAll('a[href], area[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')) || []), s = o[0], r = o[o.length - 1];
177
+ t.shiftKey && document.activeElement === s ? (t.preventDefault(), r.focus()) : !t.shiftKey && document.activeElement === r && (t.preventDefault(), s.focus());
178
+ }
179
+ t.key === "Escape" && this.$emit("keydown", {
180
+ target: this,
181
+ show: !1
182
+ });
183
+ },
184
+ getContent(t) {
185
+ return t.filter((e) => e.type !== p);
186
+ },
187
+ getActionBar(t) {
188
+ return t.filter((e) => e.type === p);
189
+ }
190
+ },
191
+ render() {
192
+ const t = u(this) || [];
193
+ let e = null;
194
+ typeof this.$props.title == "string" ? e = this.$props.title : this.$props.title && (e = f.call(this, {
195
+ h: d,
196
+ template: m.call(this, this.$props.title, g.call(this)),
197
+ defaultRendering: this.$props.title
198
+ }));
199
+ const o = i(n, null, [e && i("div", {
200
+ class: "k-popover-header",
201
+ id: this.headerId
202
+ }, [e]), i("div", {
203
+ class: "k-popover-body",
204
+ id: this.bodyId,
205
+ style: this.$props.contentStyle
206
+ }, [this.getContent(t)]), this.getActionBar(t)]), s = this.$props.position;
207
+ return i(v, {
208
+ id: this.popoverId,
209
+ role: "dialog",
210
+ ariaLabelledBy: e ? this.headerId : void 0,
211
+ ariaDescribedBy: this.bodyId,
212
+ animate: this.$props.animate,
213
+ collision: this.$props.collision,
214
+ anchor: this.$props.anchor,
215
+ appendTo: this.$props.appendTo,
216
+ offset: this.$props.offset,
217
+ margin: this.popoverMargin,
218
+ popupAlign: C[s],
219
+ anchorAlign: x[s],
220
+ show: this.$props.show,
221
+ scale: this.$props.scale,
222
+ positionMode: this.$props.positionMode,
223
+ style: this.$props.style,
224
+ className: this.$props.className,
225
+ popupClass: l("k-popover", this.$props.popoverClass),
226
+ onOpen: this.handleOpen,
227
+ onClose: this.handleClose,
228
+ onPosition: this.handlePosition,
229
+ onKeydown: this.handleKeydown
230
+ }, {
231
+ default: () => [this.$props.callout ? i(n, null, [i("div", {
232
+ class: l("k-popover-callout", this.calloutClass)
233
+ }, null), i("div", {
234
+ class: "k-popover-inner"
235
+ }, [o])]) : o]
236
+ });
237
+ }
238
+ });
239
+ export {
240
+ w as Popover
241
+ };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { PropType } from 'vue';
9
+ /**
10
+ * Represents the PopoverActionsBar component.
11
+ */
12
+ declare const PopoverActionsBar: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
13
+ alignment: {
14
+ type: PropType<"center" | "start" | "end" | "stretched">;
15
+ default: string;
16
+ };
17
+ orientation: {
18
+ type: PropType<"horizontal" | "vertical">;
19
+ default: string;
20
+ };
21
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
22
+ alignment: {
23
+ type: PropType<"center" | "start" | "end" | "stretched">;
24
+ default: string;
25
+ };
26
+ orientation: {
27
+ type: PropType<"horizontal" | "vertical">;
28
+ default: string;
29
+ };
30
+ }>> & Readonly<{}>, {
31
+ orientation: "horizontal" | "vertical";
32
+ alignment: "center" | "start" | "end" | "stretched";
33
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
34
+ export { PopoverActionsBar };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),t=require("@progress/kendo-vue-common"),o=e.defineComponent({name:"KendoPopoverActionsBar",props:{alignment:{type:String,default:"stretched"},orientation:{type:String,default:"horizontal"}},render(){return e.createVNode("div",{class:t.classNames("k-popover-actions","k-actions",`k-actions-${this.$props.alignment}`,`k-actions-${this.$props.orientation}`)},[t.getDefaultSlots(this)])}});exports.PopoverActionsBar=o;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { defineComponent as t, createVNode as o } from "vue";
9
+ import { classNames as e, getDefaultSlots as n } from "@progress/kendo-vue-common";
10
+ const s = /* @__PURE__ */ t({
11
+ name: "KendoPopoverActionsBar",
12
+ props: {
13
+ alignment: {
14
+ type: String,
15
+ default: "stretched"
16
+ },
17
+ orientation: {
18
+ type: String,
19
+ default: "horizontal"
20
+ }
21
+ },
22
+ render() {
23
+ return o("div", {
24
+ class: e("k-popover-actions", "k-actions", `k-actions-${this.$props.alignment}`, `k-actions-${this.$props.orientation}`)
25
+ }, [n(this)]);
26
+ }
27
+ });
28
+ export {
29
+ s as PopoverActionsBar
30
+ };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * Represents the props of the PopoverActionsBar component.
10
+ */
11
+ export interface PopoverActionsBarProps {
12
+ /**
13
+ * Sets the horizontal alignment of the action buttons.
14
+ *
15
+ * @default `stretched`
16
+ */
17
+ alignment?: 'start' | 'center' | 'end' | 'stretched';
18
+ /**
19
+ * Sets the orientation of the action buttons.
20
+ *
21
+ * @default `horizontal`
22
+ */
23
+ orientation?: 'horizontal' | 'vertical';
24
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { PopupAnimation } from '@progress/kendo-vue-popup';
9
+ /**
10
+ * Defines the animation settings of the Popover.
11
+ */
12
+ export type PopoverAnimation = PopupAnimation;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * Defines the horizontal and vertical collision behavior of the Popover.
10
+ */
11
+ export interface PopoverCollision {
12
+ /** The horizontal collision behavior. */
13
+ horizontal: 'fit' | 'flip' | 'none';
14
+ /** The vertical collision behavior. */
15
+ vertical: 'fit' | 'flip' | 'none';
16
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { PopoverHandle } from '../Popover';
9
+ /**
10
+ * Represents the object of the `open` Popover event.
11
+ */
12
+ export interface PopoverOpenEvent {
13
+ /** An event target. */
14
+ target: PopoverHandle;
15
+ }
16
+ /**
17
+ * Represents the object of the `close` Popover event.
18
+ */
19
+ export interface PopoverCloseEvent {
20
+ /** An event target. */
21
+ target: PopoverHandle;
22
+ }
23
+ /**
24
+ * Represents the object of the `position` Popover event.
25
+ */
26
+ export interface PopoverPositionEvent {
27
+ /** An event target. */
28
+ target: PopoverHandle;
29
+ /** Indicates whether the position was fitted. */
30
+ fitted: boolean;
31
+ /** Indicates whether the position was flipped. */
32
+ flipped: boolean;
33
+ }
34
+ /**
35
+ * Represents the object of the `keydown` Popover event.
36
+ */
37
+ export interface PopoverKeyDownEvent {
38
+ /** An event target. */
39
+ target: PopoverHandle;
40
+ /** Indicates whether the Popover is visible. */
41
+ show?: boolean;
42
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * Defines the horizontal and vertical margin between the Popover and its anchor.
10
+ */
11
+ export interface PopoverMargin {
12
+ /** The horizontal margin in pixels. */
13
+ horizontal: number;
14
+ /** The vertical margin in pixels. */
15
+ vertical: number;
16
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * Defines the absolute offset of the Popover.
10
+ */
11
+ export interface PopoverOffset {
12
+ /** The top offset in pixels. */
13
+ top: number;
14
+ /** The left offset in pixels. */
15
+ left: number;
16
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * Defines the position of the Popover relative to its anchor.
10
+ */
11
+ export type PopoverPosition = 'top' | 'left' | 'bottom' | 'right';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * Defines the positioning mode of the Popover.
10
+ */
11
+ export type PopoverPositionMode = 'absolute' | 'fixed';
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { CSSProperties, VNode } from 'vue';
9
+ import { PopoverAnimation } from './PopoverAnimation';
10
+ import { PopoverCollision } from './PopoverCollision';
11
+ import { PopoverMargin } from './PopoverMargin';
12
+ import { PopoverOffset } from './PopoverOffset';
13
+ import { PopoverPosition } from './PopoverPosition';
14
+ import { PopoverPositionMode } from './PopoverPositionMode';
15
+ import { PopoverCloseEvent, PopoverKeyDownEvent, PopoverOpenEvent, PopoverPositionEvent } from './PopoverEvents';
16
+ /**
17
+ * Represents the props of the [Kendo UI for Vue Popover component](slug:overview_popover).
18
+ */
19
+ export interface PopoverProps {
20
+ /** Sets focus to the first focusable Popover element after opening. @default `true` */
21
+ autoFocus?: boolean;
22
+ /** Specifies the title of the Popover. */
23
+ title?: string | VNode | (() => VNode);
24
+ /** Specifies the position of the Popover. @default `top` */
25
+ position?: PopoverPosition;
26
+ /** Controls the visibility of the Popover callout. @default `true` */
27
+ callout?: boolean;
28
+ /** Configures the animation behavior of the Popover. */
29
+ animate?: boolean | PopoverAnimation;
30
+ /** Specifies the element used as the Popover anchor. */
31
+ anchor?: HTMLElement | null;
32
+ /** Defines the container to which the Popover is appended. */
33
+ appendTo?: HTMLElement | null;
34
+ /** Configures the collision behavior of the Popover. */
35
+ collision?: PopoverCollision;
36
+ /** Specifies the margin between the Popover and its anchor. */
37
+ margin?: PopoverMargin;
38
+ /** Specifies the positioning mode of the Popover. @default `fixed` */
39
+ positionMode?: PopoverPositionMode;
40
+ /** Specifies the document scale used to position the Popover. */
41
+ scale?: number;
42
+ /** Specifies the absolute position of the Popover. */
43
+ offset?: PopoverOffset;
44
+ /** Specifies CSS classes for the Popover element. */
45
+ popoverClass?: string | string[] | {
46
+ [key: string]: boolean;
47
+ };
48
+ /** Specifies CSS classes for the Popover animation container. */
49
+ className?: string | string[] | {
50
+ [key: string]: boolean;
51
+ };
52
+ /** Specifies the `id` attribute for the Popover element. */
53
+ id?: string;
54
+ /** Specifies styles for the Popover animation container. */
55
+ style?: CSSProperties;
56
+ /** Specifies styles for the Popover body element. */
57
+ contentStyle?: CSSProperties;
58
+ /** Controls the visibility of the Popover. @default `false` */
59
+ show?: boolean;
60
+ /** Fires after the Popover opens. */
61
+ onOpen?: (event: PopoverOpenEvent) => void;
62
+ /** Fires after the Popover closes. */
63
+ onClose?: (event: PopoverCloseEvent) => void;
64
+ /** Fires after the Popover position is calculated. */
65
+ onPosition?: (event: PopoverPositionEvent) => void;
66
+ /** Fires when Escape is pressed while focus is within the Popover. */
67
+ onKeydown?: (event: PopoverKeyDownEvent) => void;
68
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("vue"),o=require("@progress/kendo-vue-common"),r=require("./utils.js"),d=require("../package-metadata.js"),c=100,p="_tb_active",m=s.defineComponent({name:"KendoTooltip",inheritAttrs:!1,props:{showCallout:{type:Boolean,default:!0},setCalloutOnPositionAuto:{type:String,default:void 0},anchorElement:{type:String,default:"pointer",validator:function(t){return["pointer","target"].includes(t)}},content:[String,Object,Function],filter:Function,openDelay:{type:Number,default:400},open:{type:Boolean,default:void 0},position:{type:String,default:"auto",validator:function(t){return["right","left","top","bottom","auto"].includes(t)}},updatePosition:{type:Function,default:void 0},updateInterval:Number,className:String,wrapperStyle:Object,tooltipClassName:String,tooltipStyle:Object,targetElement:{type:void 0},parentTitle:{type:Boolean,default:!1}},data(){return{top:0,left:0,currentTargetElement:null,currentOpen:!1,title:""}},computed:{wrapperClass(){return{"k-animation-container":!0,"k-animation-container-fixed":!0,"k-animation-container-shown":!0,[this.$props.className]:!0}},computedTarget(){return this.targetElement!==void 0?this.targetElement:this.currentTargetElement},computedOpen(){return this.open!==void 0?this.open:this.currentOpen}},inject:{kCurrentZIndex:{default:null}},created(){o.validatePackage(d.packageMetadata),this.top=0,this.left=0,this.willOpen=!1},mounted(){this.element=o.getRef(this,"element"),document&&document.body.addEventListener("mousemove",this.handleBodyMousemove)},unmounted(){this.destroyElement()},updated(){if(this.$props.open&&this.$props.targetElement&&this.showToolTip({target:this.$props.targetElement}),this.element=o.getRef(this,"element"),!!this.element){if(this.resetPosition(),this.computedTarget){const t=this.$props.appendTo?this.$props.appendTo:this.computedTarget.ownerDocument.body;this.element.parentElement!==t&&t.append(this.element)}this.callout=this.calloutRef,this.callout&&(this.callout.className=this.calloutClassName(),this.$props.position==="auto"&&o.canUseDOM&&(this.left<window.screen.availWidth/2?this.callout.style.left=this.$props.setCalloutOnPositionAuto||"25%":this.callout.style.left=this.$props.setCalloutOnPositionAuto||"75%"))}},render(){const t=o.getDefaultSlots(this),e=this.getCurrentZIndex(),i=this.$props.content?o.templateRendering.call(this,this.$props.content,o.getListeners.call(this)):void 0,n=this.title;let l=o.guid()+p;this.computedTarget&&(this.computedTarget.hasAttribute("id")&&(l=this.computedTarget.getAttribute("id")+p),this.computedTarget.setAttribute("aria-describedby",l));const u=o.getTemplate.call(this,{h:s.h,template:i,defaultRendering:n,additionalProps:{title:this.title,target:this.computedTarget}}),h=this.computedOpen&&s.createVNode("div",{class:o.classNames("k-tooltip",this.$props.tooltipClassName),role:"tooltip",id:l,style:{position:"relative",...this.$props.tooltipStyle}},[s.createVNode("div",{class:"k-tooltip-content"},[u]),this.$props.showCallout&&s.createVNode("div",{ref:o.setRef(this,"callout")},null)]),a=this.computedTarget&&this.title&&this.computedTarget.ownerDocument&&s.createVNode("div",{ref:o.setRef(this,"element"),class:this.wrapperClass,style:{zIndex:e,...this.$props.wrapperStyle},tabindex:0,onMouseleave:this.handleTooltipMouseOut},[s.createVNode("div",{class:"k-child-animation-container"},[h])]);return t?s.createVNode("div",{onMouseover:this.handleMouseOver,onMouseout:this.handleMouseOut},[a,t]):a},methods:{destroyElement(){clearTimeout(this.openTimeoutId),clearInterval(this.updateIntervalId),document&&document.body.removeEventListener("mousemove",this.handleBodyMousemove),this.element&&this.element.remove()},handleTooltipMouseOut(t){this.onClose(t)},handleMouseOut(t){const e=this.computedTarget?this.computedTarget.ownerDocument:document;let i=e&&e.elementFromPoint(t.clientX,t.clientY);this.willOpen=!1,!(r.isTooltipElement(i)||this.computedTarget!==t.target)&&(this.$props.open||(clearInterval(this.updateIntervalId),this.onClose(t)))},handleMouseOver(t){const e=t.target;!this.isVisible(e)||r.isTooltipElement(e)||e===this.computedTarget||this.showToolTip(t)},handleBodyMousemove(t){this.top=t.clientY,this.left=t.clientX},onClose(t){this.$emit("close",{event:t,component:this}),this.computedTarget.removeAttribute("aria-describedby"),this.currentTargetElement=null,this.currentOpen=!1,this.title=""},showToolTip(t){clearTimeout(this.openTimeoutId),clearInterval(this.updateIntervalId),t.target.hasChildNodes()&&t.target.childNodes.forEach(n=>{n.nodeName==="title"&&(t.target.titleExpando=n.innerHTML,n.remove())});const e=this.computedTarget||t.target;let i=this.getTitle(e);if(!i.title){this.computedOpen&&this.onClose(t);return}i.element&&(i.element.titleExpando=i.title,i.element.title=""),this.willOpen=!0,this.$props.openDelay?o.canUseDOM&&(this.openTimeoutId=window.setTimeout(()=>{this.willOpen&&(this.currentTargetElement=e,this.currentOpen=!0,this.title=i.title,this.setUpdateInterval())},this.$props.openDelay)):(this.currentTargetElement=e,this.currentOpen=!0,this.title=i.title,this.setUpdateInterval()),this.title!==i.title&&this.$emit("open",{event:t,compoponent:this})},setUpdateInterval(){this.$props.updateInterval&&(this.updateIntervalId=setInterval(this.onIntervalUpdate,this.$props.updateInterval))},onIntervalUpdate(){const t=this.computedTarget;t&&(t.parentElement===null?this.onClose({target:t}):this.showToolTip({target:t}))},resetPosition(){if(this.element){let t=this.setPosition(this.element);this.$props.updatePosition&&(t=this.$props.updatePosition({element:this.element,targetElement:this.computedTarget,mouseTop:this.top,mouseLeft:this.left,anchorElement:this.$props.anchorElement,position:this.$props.position,target:this,defaultPosition:t})),this.element.style.left=t.left+"px",this.element.style.top=t.top+"px"}},isVisible(t){return!this.$props.filter||this.$props.filter(t)},setPosition(t){const e=this.parentTitle?this.getTitle(this.computedTarget).element:this.computedTarget;let i=r.getDomRect(e);const n=r.getLeftPosition(this.left,t.offsetWidth,i,this.$props.anchorElement,this.$props.position),l=r.getTopPosition(this.top,i,t.offsetHeight,this.$props.anchorElement,this.$props.position);return{left:n,top:l}},getTitle(t){for(;t;){if(t.getAttribute("title")!==null||t.titleExpando)return{title:t.getAttribute("title")||t.titleExpando,element:t};t=this.$props.parentTitle&&t.parentElement||null}return{title:"",element:t}},calloutClassName(){switch(this.$props.position){case"bottom":return"k-callout k-callout-n";case"left":return"k-callout k-callout-e";case"right":return"k-callout k-callout-w";case"top":return"k-callout k-callout-s";default:return o.canUseDOM&&this.top<window.innerHeight/2?"k-callout k-callout-n":"k-callout k-callout-s"}},getCurrentZIndex(){return this.kCurrentZIndex?this.kCurrentZIndex:c}}});exports.Tooltip=m;
@@ -8,8 +8,8 @@
8
8
  import { defineComponent as m, h as f, createVNode as s } from "vue";
9
9
  import { canUseDOM as l, getDefaultSlots as g, templateRendering as T, getListeners as I, guid as $, getTemplate as v, classNames as y, setRef as a, getRef as p, validatePackage as E } from "@progress/kendo-vue-common";
10
10
  import { getDomRect as w, getLeftPosition as O, getTopPosition as b, isTooltipElement as u } from "./utils.mjs";
11
- import { packageMetadata as k } from "./package-metadata.mjs";
12
- const C = 100, h = "_tb_active", N = /* @__PURE__ */ m({
11
+ import { packageMetadata as k } from "../package-metadata.mjs";
12
+ const C = 100, h = "_tb_active", D = /* @__PURE__ */ m({
13
13
  name: "KendoTooltip",
14
14
  inheritAttrs: !1,
15
15
  props: {
@@ -107,7 +107,7 @@ const C = 100, h = "_tb_active", N = /* @__PURE__ */ m({
107
107
  }), this.element = p(this, "element"), !!this.element) {
108
108
  if (this.resetPosition(), this.computedTarget) {
109
109
  const t = this.$props.appendTo ? this.$props.appendTo : this.computedTarget.ownerDocument.body;
110
- this.element.parentElement !== t && this.computedTarget.ownerDocument.body.append(this.element);
110
+ this.element.parentElement !== t && t.append(this.element);
111
111
  }
112
112
  this.callout = this.calloutRef, this.callout && (this.callout.className = this.calloutClassName(), this.$props.position === "auto" && l && (this.left < window.screen.availWidth / 2 ? this.callout.style.left = this.$props.setCalloutOnPositionAuto || "25%" : this.callout.style.left = this.$props.setCalloutOnPositionAuto || "75%"));
113
113
  }
@@ -267,5 +267,5 @@ const C = 100, h = "_tb_active", N = /* @__PURE__ */ m({
267
267
  }
268
268
  });
269
269
  export {
270
- N as Tooltip
270
+ D as Tooltip
271
271
  };
package/Tooltip.js DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * @license
3
- *-------------------------------------------------------------------------------------------
4
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
- * Licensed under commercial license. See LICENSE.md in the package root for more information
6
- *-------------------------------------------------------------------------------------------
7
- */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("vue"),o=require("@progress/kendo-vue-common"),r=require("./utils.js"),d=require("./package-metadata.js"),c=100,p="_tb_active",m=s.defineComponent({name:"KendoTooltip",inheritAttrs:!1,props:{showCallout:{type:Boolean,default:!0},setCalloutOnPositionAuto:{type:String,default:void 0},anchorElement:{type:String,default:"pointer",validator:function(t){return["pointer","target"].includes(t)}},content:[String,Object,Function],filter:Function,openDelay:{type:Number,default:400},open:{type:Boolean,default:void 0},position:{type:String,default:"auto",validator:function(t){return["right","left","top","bottom","auto"].includes(t)}},updatePosition:{type:Function,default:void 0},updateInterval:Number,className:String,wrapperStyle:Object,tooltipClassName:String,tooltipStyle:Object,targetElement:{type:void 0},parentTitle:{type:Boolean,default:!1}},data(){return{top:0,left:0,currentTargetElement:null,currentOpen:!1,title:""}},computed:{wrapperClass(){return{"k-animation-container":!0,"k-animation-container-fixed":!0,"k-animation-container-shown":!0,[this.$props.className]:!0}},computedTarget(){return this.targetElement!==void 0?this.targetElement:this.currentTargetElement},computedOpen(){return this.open!==void 0?this.open:this.currentOpen}},inject:{kCurrentZIndex:{default:null}},created(){o.validatePackage(d.packageMetadata),this.top=0,this.left=0,this.willOpen=!1},mounted(){this.element=o.getRef(this,"element"),document&&document.body.addEventListener("mousemove",this.handleBodyMousemove)},unmounted(){this.destroyElement()},updated(){if(this.$props.open&&this.$props.targetElement&&this.showToolTip({target:this.$props.targetElement}),this.element=o.getRef(this,"element"),!!this.element){if(this.resetPosition(),this.computedTarget){const t=this.$props.appendTo?this.$props.appendTo:this.computedTarget.ownerDocument.body;this.element.parentElement!==t&&this.computedTarget.ownerDocument.body.append(this.element)}this.callout=this.calloutRef,this.callout&&(this.callout.className=this.calloutClassName(),this.$props.position==="auto"&&o.canUseDOM&&(this.left<window.screen.availWidth/2?this.callout.style.left=this.$props.setCalloutOnPositionAuto||"25%":this.callout.style.left=this.$props.setCalloutOnPositionAuto||"75%"))}},render(){const t=o.getDefaultSlots(this),e=this.getCurrentZIndex(),i=this.$props.content?o.templateRendering.call(this,this.$props.content,o.getListeners.call(this)):void 0,n=this.title;let l=o.guid()+p;this.computedTarget&&(this.computedTarget.hasAttribute("id")&&(l=this.computedTarget.getAttribute("id")+p),this.computedTarget.setAttribute("aria-describedby",l));const u=o.getTemplate.call(this,{h:s.h,template:i,defaultRendering:n,additionalProps:{title:this.title,target:this.computedTarget}}),h=this.computedOpen&&s.createVNode("div",{class:o.classNames("k-tooltip",this.$props.tooltipClassName),role:"tooltip",id:l,style:{position:"relative",...this.$props.tooltipStyle}},[s.createVNode("div",{class:"k-tooltip-content"},[u]),this.$props.showCallout&&s.createVNode("div",{ref:o.setRef(this,"callout")},null)]),a=this.computedTarget&&this.title&&this.computedTarget.ownerDocument&&s.createVNode("div",{ref:o.setRef(this,"element"),class:this.wrapperClass,style:{zIndex:e,...this.$props.wrapperStyle},tabindex:0,onMouseleave:this.handleTooltipMouseOut},[s.createVNode("div",{class:"k-child-animation-container"},[h])]);return t?s.createVNode("div",{onMouseover:this.handleMouseOver,onMouseout:this.handleMouseOut},[a,t]):a},methods:{destroyElement(){clearTimeout(this.openTimeoutId),clearInterval(this.updateIntervalId),document&&document.body.removeEventListener("mousemove",this.handleBodyMousemove),this.element&&this.element.remove()},handleTooltipMouseOut(t){this.onClose(t)},handleMouseOut(t){const e=this.computedTarget?this.computedTarget.ownerDocument:document;let i=e&&e.elementFromPoint(t.clientX,t.clientY);this.willOpen=!1,!(r.isTooltipElement(i)||this.computedTarget!==t.target)&&(this.$props.open||(clearInterval(this.updateIntervalId),this.onClose(t)))},handleMouseOver(t){const e=t.target;!this.isVisible(e)||r.isTooltipElement(e)||e===this.computedTarget||this.showToolTip(t)},handleBodyMousemove(t){this.top=t.clientY,this.left=t.clientX},onClose(t){this.$emit("close",{event:t,component:this}),this.computedTarget.removeAttribute("aria-describedby"),this.currentTargetElement=null,this.currentOpen=!1,this.title=""},showToolTip(t){clearTimeout(this.openTimeoutId),clearInterval(this.updateIntervalId),t.target.hasChildNodes()&&t.target.childNodes.forEach(n=>{n.nodeName==="title"&&(t.target.titleExpando=n.innerHTML,n.remove())});const e=this.computedTarget||t.target;let i=this.getTitle(e);if(!i.title){this.computedOpen&&this.onClose(t);return}i.element&&(i.element.titleExpando=i.title,i.element.title=""),this.willOpen=!0,this.$props.openDelay?o.canUseDOM&&(this.openTimeoutId=window.setTimeout(()=>{this.willOpen&&(this.currentTargetElement=e,this.currentOpen=!0,this.title=i.title,this.setUpdateInterval())},this.$props.openDelay)):(this.currentTargetElement=e,this.currentOpen=!0,this.title=i.title,this.setUpdateInterval()),this.title!==i.title&&this.$emit("open",{event:t,compoponent:this})},setUpdateInterval(){this.$props.updateInterval&&(this.updateIntervalId=setInterval(this.onIntervalUpdate,this.$props.updateInterval))},onIntervalUpdate(){const t=this.computedTarget;t&&(t.parentElement===null?this.onClose({target:t}):this.showToolTip({target:t}))},resetPosition(){if(this.element){let t=this.setPosition(this.element);this.$props.updatePosition&&(t=this.$props.updatePosition({element:this.element,targetElement:this.computedTarget,mouseTop:this.top,mouseLeft:this.left,anchorElement:this.$props.anchorElement,position:this.$props.position,target:this,defaultPosition:t})),this.element.style.left=t.left+"px",this.element.style.top=t.top+"px"}},isVisible(t){return!this.$props.filter||this.$props.filter(t)},setPosition(t){const e=this.parentTitle?this.getTitle(this.computedTarget).element:this.computedTarget;let i=r.getDomRect(e);const n=r.getLeftPosition(this.left,t.offsetWidth,i,this.$props.anchorElement,this.$props.position),l=r.getTopPosition(this.top,i,t.offsetHeight,this.$props.anchorElement,this.$props.position);return{left:n,top:l}},getTitle(t){for(;t;){if(t.getAttribute("title")!==null||t.titleExpando)return{title:t.getAttribute("title")||t.titleExpando,element:t};t=this.$props.parentTitle&&t.parentElement||null}return{title:"",element:t}},calloutClassName(){switch(this.$props.position){case"bottom":return"k-callout k-callout-n";case"left":return"k-callout k-callout-e";case"right":return"k-callout k-callout-w";case"top":return"k-callout k-callout-s";default:return o.canUseDOM&&this.top<window.innerHeight/2?"k-callout k-callout-n":"k-callout k-callout-s"}},getCurrentZIndex(){return this.kCurrentZIndex?this.kCurrentZIndex:c}}});exports.Tooltip=m;
File without changes
File without changes
File without changes
File without changes
File without changes