@dialpad/dialtone-vue 3.222.0 → 3.222.1

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.
Files changed (87) hide show
  1. package/dist/common/constants/index.cjs +1 -1
  2. package/dist/common/constants/index.cjs.map +1 -1
  3. package/dist/common/constants/index.d.ts +4 -0
  4. package/dist/common/constants/index.d.ts.map +1 -1
  5. package/dist/common/constants/index.js +10 -10
  6. package/dist/common/constants/index.js.map +1 -1
  7. package/dist/component-documentation.json +1 -1
  8. package/dist/components/combobox_with_popover/combobox_with_popover.vue.d.ts +18 -18
  9. package/dist/components/combobox_with_popover/combobox_with_popover.vue.d.ts.map +1 -1
  10. package/dist/components/dropdown/dropdown.vue.d.ts +18 -18
  11. package/dist/components/dropdown/dropdown.vue.d.ts.map +1 -1
  12. package/dist/components/emoji_picker/emoji_picker.vue.d.ts +22 -0
  13. package/dist/components/emoji_picker/modules/emoji_search.vue.d.ts +22 -0
  14. package/dist/components/emoji_picker/modules/emoji_search.vue.d.ts.map +1 -1
  15. package/dist/components/hovercard/hovercard.vue.d.ts +32 -32
  16. package/dist/components/hovercard/hovercard.vue.d.ts.map +1 -1
  17. package/dist/components/input/input.vue.d.ts +11 -0
  18. package/dist/components/input/input.vue.d.ts.map +1 -1
  19. package/dist/components/modal/modal.vue.d.ts +5 -5
  20. package/dist/components/popover/popover.vue.d.ts +13 -13
  21. package/dist/components/popover/popover.vue.d.ts.map +1 -1
  22. package/dist/components/resizable/composables/useResizableGroup.d.ts.map +1 -1
  23. package/dist/components/rich_text_editor/extensions/variable/VariableComponent.vue.d.ts +24 -13
  24. package/dist/components/split_button/split_button.vue.d.ts +18 -18
  25. package/dist/components/tooltip/tooltip.vue.d.ts +8 -8
  26. package/dist/components/tooltip/tooltip.vue.d.ts.map +1 -1
  27. package/dist/dialtone-vue.cjs +1 -1
  28. package/dist/dialtone-vue.js +149 -149
  29. package/dist/lib/combobox-multi-select/combobox-multi-select.cjs +1 -1
  30. package/dist/lib/combobox-multi-select/combobox-multi-select.cjs.map +1 -1
  31. package/dist/lib/combobox-multi-select/combobox-multi-select.js +49 -48
  32. package/dist/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
  33. package/dist/lib/combobox-with-popover/combobox-with-popover.cjs +1 -1
  34. package/dist/lib/combobox-with-popover/combobox-with-popover.cjs.map +1 -1
  35. package/dist/lib/combobox-with-popover/combobox-with-popover.js +43 -42
  36. package/dist/lib/combobox-with-popover/combobox-with-popover.js.map +1 -1
  37. package/dist/lib/dropdown/dropdown.cjs +1 -1
  38. package/dist/lib/dropdown/dropdown.cjs.map +1 -1
  39. package/dist/lib/dropdown/dropdown.js +33 -33
  40. package/dist/lib/dropdown/dropdown.js.map +1 -1
  41. package/dist/lib/hovercard/hovercard.cjs +1 -1
  42. package/dist/lib/hovercard/hovercard.cjs.map +1 -1
  43. package/dist/lib/hovercard/hovercard.js +28 -27
  44. package/dist/lib/hovercard/hovercard.js.map +1 -1
  45. package/dist/lib/input/input.cjs +1 -1
  46. package/dist/lib/input/input.cjs.map +1 -1
  47. package/dist/lib/input/input.js +6 -6
  48. package/dist/lib/input/input.js.map +1 -1
  49. package/dist/lib/modal/modal.cjs +1 -1
  50. package/dist/lib/modal/modal.cjs.map +1 -1
  51. package/dist/lib/modal/modal.js +56 -56
  52. package/dist/lib/modal/modal.js.map +1 -1
  53. package/dist/lib/popover/popover.cjs +1 -1
  54. package/dist/lib/popover/popover.cjs.map +1 -1
  55. package/dist/lib/popover/popover.js +75 -74
  56. package/dist/lib/popover/popover.js.map +1 -1
  57. package/dist/lib/resizable/index.cjs +1 -1
  58. package/dist/lib/resizable/index.js +1 -1
  59. package/dist/lib/resizable/resizable.cjs +1 -1
  60. package/dist/lib/resizable/resizable.js +1 -1
  61. package/dist/lib/tooltip/tooltip.cjs +2 -2
  62. package/dist/lib/tooltip/tooltip.cjs.map +1 -1
  63. package/dist/lib/tooltip/tooltip.js +30 -29
  64. package/dist/lib/tooltip/tooltip.js.map +1 -1
  65. package/dist/recipes/buttons/callbar_button/callbar_button.vue.d.ts +8 -8
  66. package/dist/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +26 -26
  67. package/dist/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +21 -21
  68. package/dist/recipes/cards/ivr_node/ivr_node.vue.d.ts +18 -18
  69. package/dist/recipes/conversation_view/editor/EditorToolbarDropdownButton.vue.d.ts +18 -18
  70. package/dist/recipes/conversation_view/editor/EditorToolbarPopoverButton.vue.d.ts +13 -13
  71. package/dist/recipes/conversation_view/editor/editor.vue.d.ts +63 -52
  72. package/dist/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  73. package/dist/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +8 -8
  74. package/dist/recipes/conversation_view/message_input/message_input.vue.d.ts +94 -50
  75. package/dist/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  76. package/dist/recipes/conversation_view/message_input/message_input_button.vue.d.ts +8 -8
  77. package/dist/recipes/conversation_view/message_input/message_input_link.vue.d.ts +32 -21
  78. package/dist/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -1
  79. package/dist/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +8 -8
  80. package/dist/recipes/leftbar/contact_row/contact_row.vue.d.ts +8 -8
  81. package/dist/recipes/leftbar/general_row/general_row.vue.d.ts +8 -8
  82. package/dist/recipes/leftbar/group_row/group_row.vue.d.ts +8 -8
  83. package/dist/{resizable-aOVGO_Os.cjs → resizable-BOCf9EIc.cjs} +2 -2
  84. package/dist/{resizable-aOVGO_Os.cjs.map → resizable-BOCf9EIc.cjs.map} +1 -1
  85. package/dist/{resizable-D4-peBOl.js → resizable-CPaF9dgG.js} +7 -3
  86. package/dist/{resizable-D4-peBOl.js.map → resizable-CPaF9dgG.js.map} +1 -1
  87. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../../chunk-Bmb41Sf3.cjs`);const e=require(`../../common/utils/index.cjs`),t=require(`../../_plugin-vue_export-helper-D8jCH6HB.cjs`),n=require(`../popover/tippy-utils.cjs`),r=require(`./tooltip-constants.cjs`),i=require(`../popover/popover-constants.cjs`);let a=require(`vue`);var o={compatConfig:{MODE:3},name:`DtTooltip`,props:{id:{type:String,default(){return e.getUniqueString()}},fallbackPlacements:{type:Array,default:()=>[`auto`]},inverted:{type:Boolean,default:!1},offset:{type:Array,default:()=>[0,12]},placement:{type:String,default:`top`,validator(e){return r.TOOLTIP_DIRECTIONS.includes(e)}},sticky:{type:[Boolean,String],default:!0,validator:e=>r.TOOLTIP_STICKY_VALUES.includes(e)},appendTo:{type:[HTMLElement,String],default:`body`,validator:e=>i.POPOVER_APPEND_TO_VALUES.includes(e)||e instanceof HTMLElement},contentClass:{type:[String,Object,Array],default:``},message:{type:String,default:``},enabled:{type:Boolean,default:!0},show:{type:Boolean,default:null},transition:{type:Boolean,default:!0},delay:{type:Boolean,default:!0},theme:{type:String,default:null},externalAnchor:{type:String,default:null},externalAnchorElement:{type:HTMLElement,default:null}},emits:[`shown`,`update:show`],data(){return{TOOLTIP_KIND_MODIFIERS:r.TOOLTIP_KIND_MODIFIERS,hasSlotContent:e.hasSlotContent,tip:null,inTimer:null,internalShow:!1,currentPlacement:this.placement}},computed:{tippyProps(){return{offset:this.offset,delay:this.delay?300:!1,placement:this.placement,sticky:this.sticky,theme:this.inverted?`inverted`:this.theme,animation:this.transition?`fade`:!1,onShown:e=>this.onShow(e,`onShown`),onShow:e=>this.onShow(e,`onShow`),onHidden:this.onHide,popperOptions:n.getPopperOptions({fallbackPlacements:this.fallbackPlacements,hasHideModifierEnabled:!0,onChangePlacement:this.onChangePlacement})}},anchor(){return this.externalAnchorElement?this.externalAnchorElement:this.externalAnchor?document.body.querySelector(this.externalAnchor):n.getAnchor(this.$refs.anchor)}},watch:{tippyProps:{handler:`setProps`,deep:!0},show:{handler:function(e){e!==null&&this.enabled&&(this.internalShow=e)},immediate:!0},internalShow(e){!this.tip||!this.anchor||(e?(this.setProps(),this.tip.show()):this.tip.hide())},sticky(e){this.tip.setProps({sticky:e})}},async mounted(){!this.enabled&&this.show!=null&&(console.warn(`Tooltip: You cannot use both the enabled and show props at the same time.`),console.warn(`The show prop will be ignored.`)),this.tip=n.createTippy(this.anchor,this.initOptions()),(this.externalAnchor||this.externalAnchorElement)&&(await e.flushPromises(),this.addExternalAnchorEventListeners()),e.warnIfUnmounted(e.returnFirstEl(this.$el),this.$options.name)},beforeUnmount(){(this.externalAnchor||this.externalAnchorElement)&&this.removeExternalAnchorEventListeners(),this.anchor?._tippy&&this.tip?.destroy()},methods:{calculateAnchorZindex(){return e.returnFirstEl(this.$el).getRootNode().querySelector(`.d-modal[aria-hidden="false"],
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../../chunk-Bmb41Sf3.cjs`);const e=require(`../../common/constants/index.cjs`),t=require(`../../common/utils/index.cjs`),n=require(`../../_plugin-vue_export-helper-D8jCH6HB.cjs`),r=require(`../popover/tippy-utils.cjs`),i=require(`./tooltip-constants.cjs`),a=require(`../popover/popover-constants.cjs`);let o=require(`vue`);var s={compatConfig:{MODE:3},name:`DtTooltip`,props:{id:{type:String,default(){return t.getUniqueString()}},fallbackPlacements:{type:Array,default:()=>[`auto`]},inverted:{type:Boolean,default:!1},offset:{type:Array,default:()=>[0,12]},placement:{type:String,default:`top`,validator(e){return i.TOOLTIP_DIRECTIONS.includes(e)}},sticky:{type:[Boolean,String],default:!0,validator:e=>i.TOOLTIP_STICKY_VALUES.includes(e)},appendTo:{type:[e.HTML_ELEMENT_TYPE,String],default:`body`,validator:e=>a.POPOVER_APPEND_TO_VALUES.includes(e)||e instanceof HTMLElement},contentClass:{type:[String,Object,Array],default:``},message:{type:String,default:``},enabled:{type:Boolean,default:!0},show:{type:Boolean,default:null},transition:{type:Boolean,default:!0},delay:{type:Boolean,default:!0},theme:{type:String,default:null},externalAnchor:{type:String,default:null},externalAnchorElement:{type:e.HTML_ELEMENT_TYPE,default:null}},emits:[`shown`,`update:show`],data(){return{TOOLTIP_KIND_MODIFIERS:i.TOOLTIP_KIND_MODIFIERS,hasSlotContent:t.hasSlotContent,tip:null,inTimer:null,internalShow:!1,currentPlacement:this.placement}},computed:{tippyProps(){return{offset:this.offset,delay:this.delay?300:!1,placement:this.placement,sticky:this.sticky,theme:this.inverted?`inverted`:this.theme,animation:this.transition?`fade`:!1,onShown:e=>this.onShow(e,`onShown`),onShow:e=>this.onShow(e,`onShow`),onHidden:this.onHide,popperOptions:r.getPopperOptions({fallbackPlacements:this.fallbackPlacements,hasHideModifierEnabled:!0,onChangePlacement:this.onChangePlacement})}},anchor(){return this.externalAnchorElement?this.externalAnchorElement:this.externalAnchor?document.body.querySelector(this.externalAnchor):r.getAnchor(this.$refs.anchor)}},watch:{tippyProps:{handler:`setProps`,deep:!0},show:{handler:function(e){e!==null&&this.enabled&&(this.internalShow=e)},immediate:!0},internalShow(e){!this.tip||!this.anchor||(e?(this.setProps(),this.tip.show()):this.tip.hide())},sticky(e){this.tip.setProps({sticky:e})}},async mounted(){!this.enabled&&this.show!=null&&(console.warn(`Tooltip: You cannot use both the enabled and show props at the same time.`),console.warn(`The show prop will be ignored.`)),this.tip=r.createTippy(this.anchor,this.initOptions()),(this.externalAnchor||this.externalAnchorElement)&&(await t.flushPromises(),this.addExternalAnchorEventListeners()),t.warnIfUnmounted(t.returnFirstEl(this.$el),this.$options.name)},beforeUnmount(){(this.externalAnchor||this.externalAnchorElement)&&this.removeExternalAnchorEventListeners(),this.anchor?._tippy&&this.tip?.destroy()},methods:{calculateAnchorZindex(){return t.returnFirstEl(this.$el).getRootNode().querySelector(`.d-modal[aria-hidden="false"],
2
2
  .d-modal--transparent[aria-hidden="false"],
3
3
  .d-modal:not([aria-hidden]),
4
- .d-modal--transparent:not([aria-hidden])`)||e.returnFirstEl(this.$el).closest(`.d-zi-drawer`)?651:400},hasVisibleFocus(){return this.anchor.matches(`:focus-visible`)},onEnterAnchor(e){this.enabled&&(this.delay&&this.inTimer===null?this.inTimer=setTimeout(()=>{this.triggerShow(e)},300):this.triggerShow(e))},triggerShow(e){e.type===`focusin`?this.show===null&&this.hasVisibleFocus()&&(this.internalShow=!0):this.show===null&&(this.internalShow=!0)},onLeaveAnchor(e){e.type===`keydown`&&e.code!==`Escape`||(clearTimeout(this.inTimer),this.inTimer=null,this.triggerHide())},triggerHide(){this.show===null&&(this.internalShow=!1)},onChangePlacement(e){this.currentPlacement=e},onHide(){this.tip?.unmount(),this.$emit(`shown`,!1),this.show!==null&&this.$emit(`update:show`,!1)},onShow(e,t){if(!this.tooltipHasContent(e))return!1;this.transition&&t===`onShow`||(this.$emit(`shown`,!0),this.show!==null&&this.$emit(`update:show`,!0))},setProps(){!this.tip||!this.tip.setProps||!this.anchor||this.tip&&this.tip.setProps&&this.tip.setProps({...this.tippyProps,appendTo:this.appendTo===`body`?this.anchor?.getRootNode()?.querySelector(`body`):this.appendTo,zIndex:this.calculateAnchorZindex()})},onMount(){this.setProps()},tooltipHasContent(e){return e.props.content.textContent.trim().length!==0},initOptions(){return{content:this.$refs.content,arrow:`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="7"><path d="M 14.5,7 8,0 1.5,7 Z"/></svg>`,duration:180,interactive:!1,trigger:`manual`,hideOnClick:!1,touch:!1,onMount:this.onMount,showOnCreate:this.internalShow,popperOptions:n.getPopperOptions({hasHideModifierEnabled:!0})}},addExternalAnchorEventListeners(){[`focusin`,`mouseenter`].forEach(e=>{this.anchor?.addEventListener(e,e=>this.onEnterAnchor(e))}),[`focusout`,`mouseleave`,`keydown`].forEach(e=>{this.anchor?.addEventListener(e,e=>this.onLeaveAnchor(e))})},removeExternalAnchorEventListeners(){[`focusin`,`mouseenter`].forEach(e=>{this.anchor?.removeEventListener(e,e=>this.onEnterAnchor(e))}),[`focusout`,`mouseleave`,`keydown`].forEach(e=>{this.anchor?.removeEventListener(e,e=>this.onLeaveAnchor(e))})}}},s={"data-qa":`dt-tooltip-container`},c=[`id`];function l(e,t,n,r,i,o){return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,s,[!n.externalAnchor&&!n.externalAnchorElement?((0,a.openBlock)(),(0,a.createElementBlock)(`span`,{key:0,ref:`anchor`,"data-qa":`dt-tooltip-anchor`,onFocusin:t[0]||(t[0]=(...e)=>o.onEnterAnchor&&o.onEnterAnchor(...e)),onFocusout:t[1]||(t[1]=(...e)=>o.onLeaveAnchor&&o.onLeaveAnchor(...e)),onMouseenter:t[2]||(t[2]=(...e)=>o.onEnterAnchor&&o.onEnterAnchor(...e)),onMouseleave:t[3]||(t[3]=(...e)=>o.onLeaveAnchor&&o.onLeaveAnchor(...e)),onKeydown:t[4]||(t[4]=(0,a.withKeys)((...e)=>o.onLeaveAnchor&&o.onLeaveAnchor(...e),[`esc`]))},[(0,a.renderSlot)(e.$slots,`anchor`)],544)):(0,a.createCommentVNode)(``,!0),(0,a.createElementVNode)(`div`,{id:n.id,ref:`content`,"data-qa":`dt-tooltip`,class:(0,a.normalizeClass)([`d-tooltip`,{[i.TOOLTIP_KIND_MODIFIERS.inverted]:n.inverted},n.contentClass])},[(0,a.renderSlot)(e.$slots,`default`,{},()=>[(0,a.createTextVNode)((0,a.toDisplayString)(n.message),1)])],10,c)])}var u=t.t(o,[[`render`,l]]);exports.default=u;
4
+ .d-modal--transparent:not([aria-hidden])`)||t.returnFirstEl(this.$el).closest(`.d-zi-drawer`)?651:400},hasVisibleFocus(){return this.anchor.matches(`:focus-visible`)},onEnterAnchor(e){this.enabled&&(this.delay&&this.inTimer===null?this.inTimer=setTimeout(()=>{this.triggerShow(e)},300):this.triggerShow(e))},triggerShow(e){e.type===`focusin`?this.show===null&&this.hasVisibleFocus()&&(this.internalShow=!0):this.show===null&&(this.internalShow=!0)},onLeaveAnchor(e){e.type===`keydown`&&e.code!==`Escape`||(clearTimeout(this.inTimer),this.inTimer=null,this.triggerHide())},triggerHide(){this.show===null&&(this.internalShow=!1)},onChangePlacement(e){this.currentPlacement=e},onHide(){this.tip?.unmount(),this.$emit(`shown`,!1),this.show!==null&&this.$emit(`update:show`,!1)},onShow(e,t){if(!this.tooltipHasContent(e))return!1;this.transition&&t===`onShow`||(this.$emit(`shown`,!0),this.show!==null&&this.$emit(`update:show`,!0))},setProps(){!this.tip||!this.tip.setProps||!this.anchor||this.tip&&this.tip.setProps&&this.tip.setProps({...this.tippyProps,appendTo:this.appendTo===`body`?this.anchor?.getRootNode()?.querySelector(`body`):this.appendTo,zIndex:this.calculateAnchorZindex()})},onMount(){this.setProps()},tooltipHasContent(e){return e.props.content.textContent.trim().length!==0},initOptions(){return{content:this.$refs.content,arrow:`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="7"><path d="M 14.5,7 8,0 1.5,7 Z"/></svg>`,duration:180,interactive:!1,trigger:`manual`,hideOnClick:!1,touch:!1,onMount:this.onMount,showOnCreate:this.internalShow,popperOptions:r.getPopperOptions({hasHideModifierEnabled:!0})}},addExternalAnchorEventListeners(){[`focusin`,`mouseenter`].forEach(e=>{this.anchor?.addEventListener(e,e=>this.onEnterAnchor(e))}),[`focusout`,`mouseleave`,`keydown`].forEach(e=>{this.anchor?.addEventListener(e,e=>this.onLeaveAnchor(e))})},removeExternalAnchorEventListeners(){[`focusin`,`mouseenter`].forEach(e=>{this.anchor?.removeEventListener(e,e=>this.onEnterAnchor(e))}),[`focusout`,`mouseleave`,`keydown`].forEach(e=>{this.anchor?.removeEventListener(e,e=>this.onLeaveAnchor(e))})}}},c={"data-qa":`dt-tooltip-container`},l=[`id`];function u(e,t,n,r,i,a){return(0,o.openBlock)(),(0,o.createElementBlock)(`div`,c,[!n.externalAnchor&&!n.externalAnchorElement?((0,o.openBlock)(),(0,o.createElementBlock)(`span`,{key:0,ref:`anchor`,"data-qa":`dt-tooltip-anchor`,onFocusin:t[0]||(t[0]=(...e)=>a.onEnterAnchor&&a.onEnterAnchor(...e)),onFocusout:t[1]||(t[1]=(...e)=>a.onLeaveAnchor&&a.onLeaveAnchor(...e)),onMouseenter:t[2]||(t[2]=(...e)=>a.onEnterAnchor&&a.onEnterAnchor(...e)),onMouseleave:t[3]||(t[3]=(...e)=>a.onLeaveAnchor&&a.onLeaveAnchor(...e)),onKeydown:t[4]||(t[4]=(0,o.withKeys)((...e)=>a.onLeaveAnchor&&a.onLeaveAnchor(...e),[`esc`]))},[(0,o.renderSlot)(e.$slots,`anchor`)],544)):(0,o.createCommentVNode)(``,!0),(0,o.createElementVNode)(`div`,{id:n.id,ref:`content`,"data-qa":`dt-tooltip`,class:(0,o.normalizeClass)([`d-tooltip`,{[i.TOOLTIP_KIND_MODIFIERS.inverted]:n.inverted},n.contentClass])},[(0,o.renderSlot)(e.$slots,`default`,{},()=>[(0,o.createTextVNode)((0,o.toDisplayString)(n.message),1)])],10,l)])}var d=n.t(s,[[`render`,u]]);exports.default=d;
5
5
  //# sourceMappingURL=tooltip.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.cjs","names":[],"sources":["../../../components/tooltip/tooltip.vue"],"sourcesContent":["<template>\n <div data-qa=\"dt-tooltip-container\">\n <!-- disabling as the below events are for capturing events from interactive\n elements within the span rather than on the span itself -->\n <!-- eslint-disable-next-line vuejs-accessibility/no-static-element-interactions -->\n <span\n v-if=\"!externalAnchor && !externalAnchorElement\"\n ref=\"anchor\"\n data-qa=\"dt-tooltip-anchor\"\n @focusin=\"onEnterAnchor\"\n @focusout=\"onLeaveAnchor\"\n @mouseenter=\"onEnterAnchor\"\n @mouseleave=\"onLeaveAnchor\"\n @keydown.esc=\"onLeaveAnchor\"\n >\n <!-- @slot Slot for the anchor element -->\n <slot\n name=\"anchor\"\n />\n </span>\n <div\n :id=\"id\"\n ref=\"content\"\n data-qa=\"dt-tooltip\"\n :class=\"[\n 'd-tooltip',\n {\n [ TOOLTIP_KIND_MODIFIERS.inverted ]: inverted,\n },\n contentClass,\n ]\"\n >\n <!-- In case when transitionend event doesn't work correct (for ex. tooltip component with custom trigger) -->\n <!-- after-leave event can be used instead of transitionend -->\n <!-- @slot Slot for the content, defaults to message prop -->\n <slot>\n {{ message }}\n </slot>\n </div>\n </div>\n</template>\n\n<script>\nimport {\n TOOLTIP_KIND_MODIFIERS,\n TOOLTIP_DIRECTIONS,\n TOOLTIP_STICKY_VALUES,\n TOOLTIP_DELAY_MS,\n} from './tooltip_constants.js';\nimport {\n POPOVER_APPEND_TO_VALUES,\n} from '../popover/popover_constants';\nimport { flushPromises, getUniqueString, hasSlotContent, warnIfUnmounted, returnFirstEl } from '@/common/utils';\nimport {\n createTippy,\n getAnchor,\n getPopperOptions,\n} from '@/components/popover/tippy_utils';\n\n/**\n * A tooltip is a floating label that briefly explains an action, function, or an element.\n * Its content is exclusively text and shouldn't be vital information for users.\n * If richer media is desired, consider using a popover instead.\n * @see https://dialtone.dialpad.com/components/tooltip.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtTooltip',\n\n props: {\n /**\n * The id of the tooltip\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * If the popover does not fit in the direction described by \"placement\",\n * it will attempt to change its direction to the \"fallbackPlacements\"\n * if defined, otherwise it will automatically position to a new location\n * as it sees best fit. See\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * */\n fallbackPlacements: {\n type: Array,\n default: () => ['auto'],\n },\n\n /**\n * If true, applies inverted styles to the tooltip\n * @values true, false\n */\n inverted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Displaces the tooltip from its reference element\n * by the specified number of pixels. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#offset\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n */\n offset: {\n type: Array,\n default: () => [0, 12],\n },\n\n /**\n * The direction the popover displays relative to the anchor. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#placement\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n */\n placement: {\n type: String,\n default: 'top',\n validator (placement) {\n return TOOLTIP_DIRECTIONS.includes(placement);\n },\n },\n\n /**\n * If the tooltip sticks to the anchor. This is usually not needed, but can be needed\n * if the reference element's position is animating, or to automatically update the popover\n * position in those cases the DOM layout changes the reference element's position.\n * `true` enables it, `reference` only checks the \"reference\" rect for changes and `popper` only\n * checks the \"popper\" rect for changes. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#sticky\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n * @values true, false, reference, popper\n */\n sticky: {\n type: [Boolean, String],\n default: true,\n validator: (sticky) => {\n return TOOLTIP_STICKY_VALUES.includes(sticky);\n },\n },\n\n /**\n * Sets the element to which the tooltip is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * This prop is not reactive, must be set on initial render.\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * Additional css classes for the tooltip content element.\n * Can accept all of: String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n contentClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * A provided message for the tooltip content\n */\n message: {\n type: String,\n default: '',\n },\n\n /**\n * Controls whether hover/focus causes the tooltip to appear.\n * Cannot be combined with the show prop. show value will be ignored.\n * by default this is true, if you override with false, the tooltip will never show up.\n */\n enabled: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Controls whether the tooltip is shown. Leaving this null will have the tooltip trigger on mouseover by default.\n * If you set this value, the default mouseover behavior will be disabled and you can control it as you need.\n * Supports .sync modifier\n * @values null, true, false\n */\n show: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Whether the tooltip should have a transition effect (fade).\n */\n transition: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the tooltip will have a delay when being focused or moused over.\n * @values true, false\n */\n delay: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Set a custom theme on the tooltip. See https://atomiks.github.io/tippyjs/v6/themes/\n */\n theme: {\n type: String,\n default: null,\n },\n\n /**\n * External anchor id to use in those cases the anchor can't be provided via the slot.\n * For instance, using the combobox's input as the anchor for the popover.\n * @deprecated Use externalAnchorElement instead for Shadow DOM compatibility.\n */\n externalAnchor: {\n type: String,\n default: null,\n },\n\n /**\n * External anchor element reference. Use this instead of externalAnchor when\n * the anchor may be inside a Shadow DOM, as querySelector cannot pierce shadow boundaries.\n */\n externalAnchorElement: {\n type: HTMLElement,\n default: null,\n },\n },\n\n emits: [\n /**\n * Emitted when tooltip is shown or hidden\n *\n * @event shown\n * @type {Boolean}\n */\n 'shown',\n\n /**\n * Sync show value\n *\n * @event update:show\n */\n 'update:show',\n ],\n\n data () {\n return {\n TOOLTIP_KIND_MODIFIERS,\n hasSlotContent,\n tip: null,\n\n inTimer: null,\n\n // Internal state for whether the tooltip is shown. Changing the prop\n // will update this.\n internalShow: false,\n\n // this is where the placement currently is, this can be different than\n // the placement prop when there is not enough available room for the tip\n // to display and it uses a fallback placement.\n currentPlacement: this.placement,\n };\n },\n\n computed: {\n\n tippyProps () {\n return {\n offset: this.offset,\n delay: this.delay ? TOOLTIP_DELAY_MS : false,\n placement: this.placement,\n sticky: this.sticky,\n theme: this.inverted ? 'inverted' : this.theme,\n animation: this.transition ? 'fade' : false,\n // onShown only triggers when transition is truthy\n onShown: (tooltipInstance) => this.onShow(tooltipInstance, 'onShown'),\n // onShown will always be called, but it will be called before the animation is complete\n onShow: (tooltipInstance) => this.onShow(tooltipInstance, 'onShow'),\n onHidden: this.onHide,\n\n popperOptions: getPopperOptions({\n fallbackPlacements: this.fallbackPlacements,\n hasHideModifierEnabled: true,\n onChangePlacement: this.onChangePlacement,\n }),\n };\n },\n\n anchor () {\n if (this.externalAnchorElement) return this.externalAnchorElement;\n return this.externalAnchor ? document.body.querySelector(this.externalAnchor) : getAnchor(this.$refs.anchor);\n },\n },\n\n watch: {\n\n tippyProps: {\n handler: 'setProps',\n deep: true,\n },\n\n show: {\n handler: function (show) {\n if (show !== null && this.enabled) {\n this.internalShow = show;\n }\n },\n\n immediate: true,\n },\n\n internalShow (value) {\n if (!this.tip || !this.anchor) return;\n\n if (value) {\n this.setProps();\n this.tip.show();\n } else {\n this.tip.hide();\n }\n },\n\n sticky (sticky) {\n this.tip.setProps({\n sticky,\n });\n },\n },\n\n async mounted () {\n if (!this.enabled && this.show != null) {\n console.warn('Tooltip: You cannot use both the enabled and show props at the same time.');\n console.warn('The show prop will be ignored.');\n }\n\n this.tip = createTippy(this.anchor, this.initOptions());\n if (this.externalAnchor || this.externalAnchorElement) {\n await flushPromises();\n this.addExternalAnchorEventListeners();\n }\n warnIfUnmounted(returnFirstEl(this.$el), this.$options.name);\n },\n\n beforeUnmount () {\n (this.externalAnchor || this.externalAnchorElement) && this.removeExternalAnchorEventListeners();\n\n if (this.anchor?._tippy) {\n this.tip?.destroy();\n }\n },\n\n methods: {\n calculateAnchorZindex () {\n // if a modal is currently active render at modal-element z-index, otherwise at tooltip z-index\n if (returnFirstEl(this.$el).getRootNode()\n .querySelector(\n `.d-modal[aria-hidden=\"false\"],\n .d-modal--transparent[aria-hidden=\"false\"],\n .d-modal:not([aria-hidden]),\n .d-modal--transparent:not([aria-hidden])`) ||\n // Special case because we don't have any dialtone drawer component yet. Render at 651 when\n // anchor of popover is within a drawer.\n returnFirstEl(this.$el).closest('.d-zi-drawer')) {\n return 651;\n } else {\n return 400;\n }\n },\n\n hasVisibleFocus () {\n return this.anchor.matches(':focus-visible');\n },\n\n onEnterAnchor (e) {\n if (!this.enabled) return;\n if (this.delay && this.inTimer === null) {\n this.inTimer = setTimeout(() => {\n this.triggerShow(e);\n }, TOOLTIP_DELAY_MS);\n } else {\n this.triggerShow(e);\n }\n },\n\n triggerShow (e) {\n if (e.type === 'focusin') {\n // only show tooltips on visible focus when triggered via focus.\n // when the user is using the mouse they only want tooltips to display\n // on mouseover.\n //\n // Example: anchor of a popover is a button with tooltip.\n // closing it with the mouse would trigger the tooltip to display as\n // the anchor is focused on close. Not what we want.\n if (this.show === null && this.hasVisibleFocus()) {\n this.internalShow = true;\n }\n } else {\n if (this.show === null) this.internalShow = true;\n }\n },\n\n onLeaveAnchor (e) {\n if (e.type === 'keydown' && e.code !== 'Escape') return;\n\n clearTimeout(this.inTimer);\n this.inTimer = null;\n this.triggerHide();\n },\n\n triggerHide () {\n if (this.show === null) this.internalShow = false;\n },\n\n onChangePlacement (placement) {\n this.currentPlacement = placement;\n },\n\n onHide () {\n this.tip?.unmount();\n this.$emit('shown', false);\n if (this.show !== null) {\n this.$emit('update:show', false);\n }\n },\n\n onShow (tooltipInstance, callingMethod) {\n if (!this.tooltipHasContent(tooltipInstance)) {\n return false;\n }\n if (this.transition && callingMethod === 'onShow') {\n return;\n }\n this.$emit('shown', true);\n if (this.show !== null) {\n this.$emit('update:show', true);\n }\n },\n\n setProps () {\n if (!this.tip || !this.tip.setProps || !this.anchor) return;\n\n if (this.tip && this.tip.setProps) {\n this.tip.setProps({\n ...this.tippyProps,\n // these need to be set here rather than in tippyProps because they are non-reactive\n appendTo: this.appendTo === 'body' ? this.anchor?.getRootNode()?.querySelector('body') : this.appendTo,\n zIndex: this.calculateAnchorZindex(),\n });\n }\n },\n\n onMount () {\n this.setProps();\n },\n\n tooltipHasContent (tooltipInstance) {\n // don't show tooltip when no content\n if (tooltipInstance.props.content.textContent.trim().length === 0) {\n return false;\n }\n return true;\n },\n\n // set initial options here. If any of the options need to dynamically change, they should be put in\n // tippyProps instead.\n initOptions () {\n const template = this.$refs.content;\n return {\n content: template,\n arrow: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"7\"><path d=\"M 14.5,7 8,0 1.5,7 Z\"/></svg>',\n // transition duration - same as our custom fade delay in dialtone-globals.less\n duration: 180,\n interactive: false,\n trigger: 'manual',\n hideOnClick: false,\n // disable tooltip from displaying on touch devices\n touch: false,\n onMount: this.onMount,\n showOnCreate: this.internalShow,\n popperOptions: getPopperOptions({\n hasHideModifierEnabled: true,\n }),\n };\n },\n\n addExternalAnchorEventListeners () {\n ['focusin', 'mouseenter'].forEach(listener => {\n this.anchor?.addEventListener(listener, (event) => this.onEnterAnchor(event));\n });\n ['focusout', 'mouseleave', 'keydown'].forEach(listener => {\n this.anchor?.addEventListener(listener, (event) => this.onLeaveAnchor(event));\n });\n },\n\n removeExternalAnchorEventListeners () {\n ['focusin', 'mouseenter'].forEach(listener => {\n this.anchor?.removeEventListener(listener, (event) => this.onEnterAnchor(event));\n });\n ['focusout', 'mouseleave', 'keydown'].forEach(listener => {\n this.anchor?.removeEventListener(listener, (event) => this.onLeaveAnchor(event));\n });\n },\n },\n};\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.cjs","names":[],"sources":["../../../components/tooltip/tooltip.vue"],"sourcesContent":["<template>\n <div data-qa=\"dt-tooltip-container\">\n <!-- disabling as the below events are for capturing events from interactive\n elements within the span rather than on the span itself -->\n <!-- eslint-disable-next-line vuejs-accessibility/no-static-element-interactions -->\n <span\n v-if=\"!externalAnchor && !externalAnchorElement\"\n ref=\"anchor\"\n data-qa=\"dt-tooltip-anchor\"\n @focusin=\"onEnterAnchor\"\n @focusout=\"onLeaveAnchor\"\n @mouseenter=\"onEnterAnchor\"\n @mouseleave=\"onLeaveAnchor\"\n @keydown.esc=\"onLeaveAnchor\"\n >\n <!-- @slot Slot for the anchor element -->\n <slot\n name=\"anchor\"\n />\n </span>\n <div\n :id=\"id\"\n ref=\"content\"\n data-qa=\"dt-tooltip\"\n :class=\"[\n 'd-tooltip',\n {\n [ TOOLTIP_KIND_MODIFIERS.inverted ]: inverted,\n },\n contentClass,\n ]\"\n >\n <!-- In case when transitionend event doesn't work correct (for ex. tooltip component with custom trigger) -->\n <!-- after-leave event can be used instead of transitionend -->\n <!-- @slot Slot for the content, defaults to message prop -->\n <slot>\n {{ message }}\n </slot>\n </div>\n </div>\n</template>\n\n<script>\nimport {\n TOOLTIP_KIND_MODIFIERS,\n TOOLTIP_DIRECTIONS,\n TOOLTIP_STICKY_VALUES,\n TOOLTIP_DELAY_MS,\n} from './tooltip_constants.js';\nimport {\n POPOVER_APPEND_TO_VALUES,\n} from '../popover/popover_constants';\nimport { flushPromises, getUniqueString, hasSlotContent, warnIfUnmounted, returnFirstEl } from '@/common/utils';\nimport { HTML_ELEMENT_TYPE } from '@/common/constants';\nimport {\n createTippy,\n getAnchor,\n getPopperOptions,\n} from '@/components/popover/tippy_utils';\n\n/**\n * A tooltip is a floating label that briefly explains an action, function, or an element.\n * Its content is exclusively text and shouldn't be vital information for users.\n * If richer media is desired, consider using a popover instead.\n * @see https://dialtone.dialpad.com/components/tooltip.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtTooltip',\n\n props: {\n /**\n * The id of the tooltip\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * If the popover does not fit in the direction described by \"placement\",\n * it will attempt to change its direction to the \"fallbackPlacements\"\n * if defined, otherwise it will automatically position to a new location\n * as it sees best fit. See\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * */\n fallbackPlacements: {\n type: Array,\n default: () => ['auto'],\n },\n\n /**\n * If true, applies inverted styles to the tooltip\n * @values true, false\n */\n inverted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Displaces the tooltip from its reference element\n * by the specified number of pixels. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#offset\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n */\n offset: {\n type: Array,\n default: () => [0, 12],\n },\n\n /**\n * The direction the popover displays relative to the anchor. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#placement\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n */\n placement: {\n type: String,\n default: 'top',\n validator (placement) {\n return TOOLTIP_DIRECTIONS.includes(placement);\n },\n },\n\n /**\n * If the tooltip sticks to the anchor. This is usually not needed, but can be needed\n * if the reference element's position is animating, or to automatically update the popover\n * position in those cases the DOM layout changes the reference element's position.\n * `true` enables it, `reference` only checks the \"reference\" rect for changes and `popper` only\n * checks the \"popper\" rect for changes. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#sticky\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n * @values true, false, reference, popper\n */\n sticky: {\n type: [Boolean, String],\n default: true,\n validator: (sticky) => {\n return TOOLTIP_STICKY_VALUES.includes(sticky);\n },\n },\n\n /**\n * Sets the element to which the tooltip is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * This prop is not reactive, must be set on initial render.\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTML_ELEMENT_TYPE, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * Additional css classes for the tooltip content element.\n * Can accept all of: String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n contentClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * A provided message for the tooltip content\n */\n message: {\n type: String,\n default: '',\n },\n\n /**\n * Controls whether hover/focus causes the tooltip to appear.\n * Cannot be combined with the show prop. show value will be ignored.\n * by default this is true, if you override with false, the tooltip will never show up.\n */\n enabled: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Controls whether the tooltip is shown. Leaving this null will have the tooltip trigger on mouseover by default.\n * If you set this value, the default mouseover behavior will be disabled and you can control it as you need.\n * Supports .sync modifier\n * @values null, true, false\n */\n show: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Whether the tooltip should have a transition effect (fade).\n */\n transition: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the tooltip will have a delay when being focused or moused over.\n * @values true, false\n */\n delay: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Set a custom theme on the tooltip. See https://atomiks.github.io/tippyjs/v6/themes/\n */\n theme: {\n type: String,\n default: null,\n },\n\n /**\n * External anchor id to use in those cases the anchor can't be provided via the slot.\n * For instance, using the combobox's input as the anchor for the popover.\n * @deprecated Use externalAnchorElement instead for Shadow DOM compatibility.\n */\n externalAnchor: {\n type: String,\n default: null,\n },\n\n /**\n * External anchor element reference. Use this instead of externalAnchor when\n * the anchor may be inside a Shadow DOM, as querySelector cannot pierce shadow boundaries.\n */\n externalAnchorElement: {\n type: HTML_ELEMENT_TYPE,\n default: null,\n },\n },\n\n emits: [\n /**\n * Emitted when tooltip is shown or hidden\n *\n * @event shown\n * @type {Boolean}\n */\n 'shown',\n\n /**\n * Sync show value\n *\n * @event update:show\n */\n 'update:show',\n ],\n\n data () {\n return {\n TOOLTIP_KIND_MODIFIERS,\n hasSlotContent,\n tip: null,\n\n inTimer: null,\n\n // Internal state for whether the tooltip is shown. Changing the prop\n // will update this.\n internalShow: false,\n\n // this is where the placement currently is, this can be different than\n // the placement prop when there is not enough available room for the tip\n // to display and it uses a fallback placement.\n currentPlacement: this.placement,\n };\n },\n\n computed: {\n\n tippyProps () {\n return {\n offset: this.offset,\n delay: this.delay ? TOOLTIP_DELAY_MS : false,\n placement: this.placement,\n sticky: this.sticky,\n theme: this.inverted ? 'inverted' : this.theme,\n animation: this.transition ? 'fade' : false,\n // onShown only triggers when transition is truthy\n onShown: (tooltipInstance) => this.onShow(tooltipInstance, 'onShown'),\n // onShown will always be called, but it will be called before the animation is complete\n onShow: (tooltipInstance) => this.onShow(tooltipInstance, 'onShow'),\n onHidden: this.onHide,\n\n popperOptions: getPopperOptions({\n fallbackPlacements: this.fallbackPlacements,\n hasHideModifierEnabled: true,\n onChangePlacement: this.onChangePlacement,\n }),\n };\n },\n\n anchor () {\n if (this.externalAnchorElement) return this.externalAnchorElement;\n return this.externalAnchor ? document.body.querySelector(this.externalAnchor) : getAnchor(this.$refs.anchor);\n },\n },\n\n watch: {\n\n tippyProps: {\n handler: 'setProps',\n deep: true,\n },\n\n show: {\n handler: function (show) {\n if (show !== null && this.enabled) {\n this.internalShow = show;\n }\n },\n\n immediate: true,\n },\n\n internalShow (value) {\n if (!this.tip || !this.anchor) return;\n\n if (value) {\n this.setProps();\n this.tip.show();\n } else {\n this.tip.hide();\n }\n },\n\n sticky (sticky) {\n this.tip.setProps({\n sticky,\n });\n },\n },\n\n async mounted () {\n if (!this.enabled && this.show != null) {\n console.warn('Tooltip: You cannot use both the enabled and show props at the same time.');\n console.warn('The show prop will be ignored.');\n }\n\n this.tip = createTippy(this.anchor, this.initOptions());\n if (this.externalAnchor || this.externalAnchorElement) {\n await flushPromises();\n this.addExternalAnchorEventListeners();\n }\n warnIfUnmounted(returnFirstEl(this.$el), this.$options.name);\n },\n\n beforeUnmount () {\n (this.externalAnchor || this.externalAnchorElement) && this.removeExternalAnchorEventListeners();\n\n if (this.anchor?._tippy) {\n this.tip?.destroy();\n }\n },\n\n methods: {\n calculateAnchorZindex () {\n // if a modal is currently active render at modal-element z-index, otherwise at tooltip z-index\n if (returnFirstEl(this.$el).getRootNode()\n .querySelector(\n `.d-modal[aria-hidden=\"false\"],\n .d-modal--transparent[aria-hidden=\"false\"],\n .d-modal:not([aria-hidden]),\n .d-modal--transparent:not([aria-hidden])`) ||\n // Special case because we don't have any dialtone drawer component yet. Render at 651 when\n // anchor of popover is within a drawer.\n returnFirstEl(this.$el).closest('.d-zi-drawer')) {\n return 651;\n } else {\n return 400;\n }\n },\n\n hasVisibleFocus () {\n return this.anchor.matches(':focus-visible');\n },\n\n onEnterAnchor (e) {\n if (!this.enabled) return;\n if (this.delay && this.inTimer === null) {\n this.inTimer = setTimeout(() => {\n this.triggerShow(e);\n }, TOOLTIP_DELAY_MS);\n } else {\n this.triggerShow(e);\n }\n },\n\n triggerShow (e) {\n if (e.type === 'focusin') {\n // only show tooltips on visible focus when triggered via focus.\n // when the user is using the mouse they only want tooltips to display\n // on mouseover.\n //\n // Example: anchor of a popover is a button with tooltip.\n // closing it with the mouse would trigger the tooltip to display as\n // the anchor is focused on close. Not what we want.\n if (this.show === null && this.hasVisibleFocus()) {\n this.internalShow = true;\n }\n } else {\n if (this.show === null) this.internalShow = true;\n }\n },\n\n onLeaveAnchor (e) {\n if (e.type === 'keydown' && e.code !== 'Escape') return;\n\n clearTimeout(this.inTimer);\n this.inTimer = null;\n this.triggerHide();\n },\n\n triggerHide () {\n if (this.show === null) this.internalShow = false;\n },\n\n onChangePlacement (placement) {\n this.currentPlacement = placement;\n },\n\n onHide () {\n this.tip?.unmount();\n this.$emit('shown', false);\n if (this.show !== null) {\n this.$emit('update:show', false);\n }\n },\n\n onShow (tooltipInstance, callingMethod) {\n if (!this.tooltipHasContent(tooltipInstance)) {\n return false;\n }\n if (this.transition && callingMethod === 'onShow') {\n return;\n }\n this.$emit('shown', true);\n if (this.show !== null) {\n this.$emit('update:show', true);\n }\n },\n\n setProps () {\n if (!this.tip || !this.tip.setProps || !this.anchor) return;\n\n if (this.tip && this.tip.setProps) {\n this.tip.setProps({\n ...this.tippyProps,\n // these need to be set here rather than in tippyProps because they are non-reactive\n appendTo: this.appendTo === 'body' ? this.anchor?.getRootNode()?.querySelector('body') : this.appendTo,\n zIndex: this.calculateAnchorZindex(),\n });\n }\n },\n\n onMount () {\n this.setProps();\n },\n\n tooltipHasContent (tooltipInstance) {\n // don't show tooltip when no content\n if (tooltipInstance.props.content.textContent.trim().length === 0) {\n return false;\n }\n return true;\n },\n\n // set initial options here. If any of the options need to dynamically change, they should be put in\n // tippyProps instead.\n initOptions () {\n const template = this.$refs.content;\n return {\n content: template,\n arrow: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"7\"><path d=\"M 14.5,7 8,0 1.5,7 Z\"/></svg>',\n // transition duration - same as our custom fade delay in dialtone-globals.less\n duration: 180,\n interactive: false,\n trigger: 'manual',\n hideOnClick: false,\n // disable tooltip from displaying on touch devices\n touch: false,\n onMount: this.onMount,\n showOnCreate: this.internalShow,\n popperOptions: getPopperOptions({\n hasHideModifierEnabled: true,\n }),\n };\n },\n\n addExternalAnchorEventListeners () {\n ['focusin', 'mouseenter'].forEach(listener => {\n this.anchor?.addEventListener(listener, (event) => this.onEnterAnchor(event));\n });\n ['focusout', 'mouseleave', 'keydown'].forEach(listener => {\n this.anchor?.addEventListener(listener, (event) => this.onLeaveAnchor(event));\n });\n },\n\n removeExternalAnchorEventListeners () {\n ['focusin', 'mouseenter'].forEach(listener => {\n this.anchor?.removeEventListener(listener, (event) => this.onEnterAnchor(event));\n });\n ['focusout', 'mouseleave', 'keydown'].forEach(listener => {\n this.anchor?.removeEventListener(listener, (event) => this.onLeaveAnchor(event));\n });\n },\n },\n};\n</script>\n"],"mappings":"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"}
@@ -1,18 +1,19 @@
1
- import { flushPromises as e, getUniqueString as t, hasSlotContent as n, returnFirstEl as r, warnIfUnmounted as i } from "../../common/utils/index.js";
2
- import { t as a } from "../../_plugin-vue_export-helper-BTgDAbhb.js";
3
- import { createTippy as o, getAnchor as s, getPopperOptions as c } from "../popover/tippy-utils.js";
4
- import { TOOLTIP_DIRECTIONS as l, TOOLTIP_KIND_MODIFIERS as u, TOOLTIP_STICKY_VALUES as d } from "./tooltip-constants.js";
5
- import { POPOVER_APPEND_TO_VALUES as f } from "../popover/popover-constants.js";
6
- import { createCommentVNode as p, createElementBlock as m, createElementVNode as h, createTextVNode as g, normalizeClass as _, openBlock as v, renderSlot as y, toDisplayString as b, withKeys as x } from "vue";
1
+ import { HTML_ELEMENT_TYPE as e } from "../../common/constants/index.js";
2
+ import { flushPromises as t, getUniqueString as n, hasSlotContent as r, returnFirstEl as i, warnIfUnmounted as a } from "../../common/utils/index.js";
3
+ import { t as o } from "../../_plugin-vue_export-helper-BTgDAbhb.js";
4
+ import { createTippy as s, getAnchor as c, getPopperOptions as l } from "../popover/tippy-utils.js";
5
+ import { TOOLTIP_DIRECTIONS as u, TOOLTIP_KIND_MODIFIERS as d, TOOLTIP_STICKY_VALUES as f } from "./tooltip-constants.js";
6
+ import { POPOVER_APPEND_TO_VALUES as p } from "../popover/popover-constants.js";
7
+ import { createCommentVNode as m, createElementBlock as h, createElementVNode as g, createTextVNode as _, normalizeClass as v, openBlock as y, renderSlot as b, toDisplayString as x, withKeys as S } from "vue";
7
8
  //#region components/tooltip/tooltip.vue
8
- var S = {
9
+ var C = {
9
10
  compatConfig: { MODE: 3 },
10
11
  name: "DtTooltip",
11
12
  props: {
12
13
  id: {
13
14
  type: String,
14
15
  default() {
15
- return t();
16
+ return n();
16
17
  }
17
18
  },
18
19
  fallbackPlacements: {
@@ -31,18 +32,18 @@ var S = {
31
32
  type: String,
32
33
  default: "top",
33
34
  validator(e) {
34
- return l.includes(e);
35
+ return u.includes(e);
35
36
  }
36
37
  },
37
38
  sticky: {
38
39
  type: [Boolean, String],
39
40
  default: !0,
40
- validator: (e) => d.includes(e)
41
+ validator: (e) => f.includes(e)
41
42
  },
42
43
  appendTo: {
43
- type: [HTMLElement, String],
44
+ type: [e, String],
44
45
  default: "body",
45
- validator: (e) => f.includes(e) || e instanceof HTMLElement
46
+ validator: (e) => p.includes(e) || e instanceof HTMLElement
46
47
  },
47
48
  contentClass: {
48
49
  type: [
@@ -81,15 +82,15 @@ var S = {
81
82
  default: null
82
83
  },
83
84
  externalAnchorElement: {
84
- type: HTMLElement,
85
+ type: e,
85
86
  default: null
86
87
  }
87
88
  },
88
89
  emits: ["shown", "update:show"],
89
90
  data() {
90
91
  return {
91
- TOOLTIP_KIND_MODIFIERS: u,
92
- hasSlotContent: n,
92
+ TOOLTIP_KIND_MODIFIERS: d,
93
+ hasSlotContent: r,
93
94
  tip: null,
94
95
  inTimer: null,
95
96
  internalShow: !1,
@@ -108,7 +109,7 @@ var S = {
108
109
  onShown: (e) => this.onShow(e, "onShown"),
109
110
  onShow: (e) => this.onShow(e, "onShow"),
110
111
  onHidden: this.onHide,
111
- popperOptions: c({
112
+ popperOptions: l({
112
113
  fallbackPlacements: this.fallbackPlacements,
113
114
  hasHideModifierEnabled: !0,
114
115
  onChangePlacement: this.onChangePlacement
@@ -116,7 +117,7 @@ var S = {
116
117
  };
117
118
  },
118
119
  anchor() {
119
- return this.externalAnchorElement ? this.externalAnchorElement : this.externalAnchor ? document.body.querySelector(this.externalAnchor) : s(this.$refs.anchor);
120
+ return this.externalAnchorElement ? this.externalAnchorElement : this.externalAnchor ? document.body.querySelector(this.externalAnchor) : c(this.$refs.anchor);
120
121
  }
121
122
  },
122
123
  watch: {
@@ -138,14 +139,14 @@ var S = {
138
139
  }
139
140
  },
140
141
  async mounted() {
141
- !this.enabled && this.show != null && (console.warn("Tooltip: You cannot use both the enabled and show props at the same time."), console.warn("The show prop will be ignored.")), this.tip = o(this.anchor, this.initOptions()), (this.externalAnchor || this.externalAnchorElement) && (await e(), this.addExternalAnchorEventListeners()), i(r(this.$el), this.$options.name);
142
+ !this.enabled && this.show != null && (console.warn("Tooltip: You cannot use both the enabled and show props at the same time."), console.warn("The show prop will be ignored.")), this.tip = s(this.anchor, this.initOptions()), (this.externalAnchor || this.externalAnchorElement) && (await t(), this.addExternalAnchorEventListeners()), a(i(this.$el), this.$options.name);
142
143
  },
143
144
  beforeUnmount() {
144
145
  (this.externalAnchor || this.externalAnchorElement) && this.removeExternalAnchorEventListeners(), this.anchor?._tippy && this.tip?.destroy();
145
146
  },
146
147
  methods: {
147
148
  calculateAnchorZindex() {
148
- return r(this.$el).getRootNode().querySelector(".d-modal[aria-hidden=\"false\"],\n .d-modal--transparent[aria-hidden=\"false\"],\n .d-modal:not([aria-hidden]),\n .d-modal--transparent:not([aria-hidden])") || r(this.$el).closest(".d-zi-drawer") ? 651 : 400;
149
+ return i(this.$el).getRootNode().querySelector(".d-modal[aria-hidden=\"false\"],\n .d-modal--transparent[aria-hidden=\"false\"],\n .d-modal:not([aria-hidden]),\n .d-modal--transparent:not([aria-hidden])") || i(this.$el).closest(".d-zi-drawer") ? 651 : 400;
149
150
  },
150
151
  hasVisibleFocus() {
151
152
  return this.anchor.matches(":focus-visible");
@@ -198,7 +199,7 @@ var S = {
198
199
  touch: !1,
199
200
  onMount: this.onMount,
200
201
  showOnCreate: this.internalShow,
201
- popperOptions: c({ hasHideModifierEnabled: !0 })
202
+ popperOptions: l({ hasHideModifierEnabled: !0 })
202
203
  };
203
204
  },
204
205
  addExternalAnchorEventListeners() {
@@ -224,9 +225,9 @@ var S = {
224
225
  });
225
226
  }
226
227
  }
227
- }, C = { "data-qa": "dt-tooltip-container" }, w = ["id"];
228
- function T(e, t, n, r, i, a) {
229
- return v(), m("div", C, [!n.externalAnchor && !n.externalAnchorElement ? (v(), m("span", {
228
+ }, w = { "data-qa": "dt-tooltip-container" }, T = ["id"];
229
+ function E(e, t, n, r, i, a) {
230
+ return y(), h("div", w, [!n.externalAnchor && !n.externalAnchorElement ? (y(), h("span", {
230
231
  key: 0,
231
232
  ref: "anchor",
232
233
  "data-qa": "dt-tooltip-anchor",
@@ -234,20 +235,20 @@ function T(e, t, n, r, i, a) {
234
235
  onFocusout: t[1] || (t[1] = (...e) => a.onLeaveAnchor && a.onLeaveAnchor(...e)),
235
236
  onMouseenter: t[2] || (t[2] = (...e) => a.onEnterAnchor && a.onEnterAnchor(...e)),
236
237
  onMouseleave: t[3] || (t[3] = (...e) => a.onLeaveAnchor && a.onLeaveAnchor(...e)),
237
- onKeydown: t[4] || (t[4] = x((...e) => a.onLeaveAnchor && a.onLeaveAnchor(...e), ["esc"]))
238
- }, [y(e.$slots, "anchor")], 544)) : p("", !0), h("div", {
238
+ onKeydown: t[4] || (t[4] = S((...e) => a.onLeaveAnchor && a.onLeaveAnchor(...e), ["esc"]))
239
+ }, [b(e.$slots, "anchor")], 544)) : m("", !0), g("div", {
239
240
  id: n.id,
240
241
  ref: "content",
241
242
  "data-qa": "dt-tooltip",
242
- class: _([
243
+ class: v([
243
244
  "d-tooltip",
244
245
  { [i.TOOLTIP_KIND_MODIFIERS.inverted]: n.inverted },
245
246
  n.contentClass
246
247
  ])
247
- }, [y(e.$slots, "default", {}, () => [g(b(n.message), 1)])], 10, w)]);
248
+ }, [b(e.$slots, "default", {}, () => [_(x(n.message), 1)])], 10, T)]);
248
249
  }
249
- var E = /* @__PURE__ */ a(S, [["render", T]]);
250
+ var D = /* @__PURE__ */ o(C, [["render", E]]);
250
251
  //#endregion
251
- export { E as default };
252
+ export { D as default };
252
253
 
253
254
  //# sourceMappingURL=tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","names":[],"sources":["../../../components/tooltip/tooltip.vue"],"sourcesContent":["<template>\n <div data-qa=\"dt-tooltip-container\">\n <!-- disabling as the below events are for capturing events from interactive\n elements within the span rather than on the span itself -->\n <!-- eslint-disable-next-line vuejs-accessibility/no-static-element-interactions -->\n <span\n v-if=\"!externalAnchor && !externalAnchorElement\"\n ref=\"anchor\"\n data-qa=\"dt-tooltip-anchor\"\n @focusin=\"onEnterAnchor\"\n @focusout=\"onLeaveAnchor\"\n @mouseenter=\"onEnterAnchor\"\n @mouseleave=\"onLeaveAnchor\"\n @keydown.esc=\"onLeaveAnchor\"\n >\n <!-- @slot Slot for the anchor element -->\n <slot\n name=\"anchor\"\n />\n </span>\n <div\n :id=\"id\"\n ref=\"content\"\n data-qa=\"dt-tooltip\"\n :class=\"[\n 'd-tooltip',\n {\n [ TOOLTIP_KIND_MODIFIERS.inverted ]: inverted,\n },\n contentClass,\n ]\"\n >\n <!-- In case when transitionend event doesn't work correct (for ex. tooltip component with custom trigger) -->\n <!-- after-leave event can be used instead of transitionend -->\n <!-- @slot Slot for the content, defaults to message prop -->\n <slot>\n {{ message }}\n </slot>\n </div>\n </div>\n</template>\n\n<script>\nimport {\n TOOLTIP_KIND_MODIFIERS,\n TOOLTIP_DIRECTIONS,\n TOOLTIP_STICKY_VALUES,\n TOOLTIP_DELAY_MS,\n} from './tooltip_constants.js';\nimport {\n POPOVER_APPEND_TO_VALUES,\n} from '../popover/popover_constants';\nimport { flushPromises, getUniqueString, hasSlotContent, warnIfUnmounted, returnFirstEl } from '@/common/utils';\nimport {\n createTippy,\n getAnchor,\n getPopperOptions,\n} from '@/components/popover/tippy_utils';\n\n/**\n * A tooltip is a floating label that briefly explains an action, function, or an element.\n * Its content is exclusively text and shouldn't be vital information for users.\n * If richer media is desired, consider using a popover instead.\n * @see https://dialtone.dialpad.com/components/tooltip.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtTooltip',\n\n props: {\n /**\n * The id of the tooltip\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * If the popover does not fit in the direction described by \"placement\",\n * it will attempt to change its direction to the \"fallbackPlacements\"\n * if defined, otherwise it will automatically position to a new location\n * as it sees best fit. See\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * */\n fallbackPlacements: {\n type: Array,\n default: () => ['auto'],\n },\n\n /**\n * If true, applies inverted styles to the tooltip\n * @values true, false\n */\n inverted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Displaces the tooltip from its reference element\n * by the specified number of pixels. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#offset\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n */\n offset: {\n type: Array,\n default: () => [0, 12],\n },\n\n /**\n * The direction the popover displays relative to the anchor. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#placement\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n */\n placement: {\n type: String,\n default: 'top',\n validator (placement) {\n return TOOLTIP_DIRECTIONS.includes(placement);\n },\n },\n\n /**\n * If the tooltip sticks to the anchor. This is usually not needed, but can be needed\n * if the reference element's position is animating, or to automatically update the popover\n * position in those cases the DOM layout changes the reference element's position.\n * `true` enables it, `reference` only checks the \"reference\" rect for changes and `popper` only\n * checks the \"popper\" rect for changes. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#sticky\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n * @values true, false, reference, popper\n */\n sticky: {\n type: [Boolean, String],\n default: true,\n validator: (sticky) => {\n return TOOLTIP_STICKY_VALUES.includes(sticky);\n },\n },\n\n /**\n * Sets the element to which the tooltip is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * This prop is not reactive, must be set on initial render.\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * Additional css classes for the tooltip content element.\n * Can accept all of: String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n contentClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * A provided message for the tooltip content\n */\n message: {\n type: String,\n default: '',\n },\n\n /**\n * Controls whether hover/focus causes the tooltip to appear.\n * Cannot be combined with the show prop. show value will be ignored.\n * by default this is true, if you override with false, the tooltip will never show up.\n */\n enabled: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Controls whether the tooltip is shown. Leaving this null will have the tooltip trigger on mouseover by default.\n * If you set this value, the default mouseover behavior will be disabled and you can control it as you need.\n * Supports .sync modifier\n * @values null, true, false\n */\n show: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Whether the tooltip should have a transition effect (fade).\n */\n transition: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the tooltip will have a delay when being focused or moused over.\n * @values true, false\n */\n delay: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Set a custom theme on the tooltip. See https://atomiks.github.io/tippyjs/v6/themes/\n */\n theme: {\n type: String,\n default: null,\n },\n\n /**\n * External anchor id to use in those cases the anchor can't be provided via the slot.\n * For instance, using the combobox's input as the anchor for the popover.\n * @deprecated Use externalAnchorElement instead for Shadow DOM compatibility.\n */\n externalAnchor: {\n type: String,\n default: null,\n },\n\n /**\n * External anchor element reference. Use this instead of externalAnchor when\n * the anchor may be inside a Shadow DOM, as querySelector cannot pierce shadow boundaries.\n */\n externalAnchorElement: {\n type: HTMLElement,\n default: null,\n },\n },\n\n emits: [\n /**\n * Emitted when tooltip is shown or hidden\n *\n * @event shown\n * @type {Boolean}\n */\n 'shown',\n\n /**\n * Sync show value\n *\n * @event update:show\n */\n 'update:show',\n ],\n\n data () {\n return {\n TOOLTIP_KIND_MODIFIERS,\n hasSlotContent,\n tip: null,\n\n inTimer: null,\n\n // Internal state for whether the tooltip is shown. Changing the prop\n // will update this.\n internalShow: false,\n\n // this is where the placement currently is, this can be different than\n // the placement prop when there is not enough available room for the tip\n // to display and it uses a fallback placement.\n currentPlacement: this.placement,\n };\n },\n\n computed: {\n\n tippyProps () {\n return {\n offset: this.offset,\n delay: this.delay ? TOOLTIP_DELAY_MS : false,\n placement: this.placement,\n sticky: this.sticky,\n theme: this.inverted ? 'inverted' : this.theme,\n animation: this.transition ? 'fade' : false,\n // onShown only triggers when transition is truthy\n onShown: (tooltipInstance) => this.onShow(tooltipInstance, 'onShown'),\n // onShown will always be called, but it will be called before the animation is complete\n onShow: (tooltipInstance) => this.onShow(tooltipInstance, 'onShow'),\n onHidden: this.onHide,\n\n popperOptions: getPopperOptions({\n fallbackPlacements: this.fallbackPlacements,\n hasHideModifierEnabled: true,\n onChangePlacement: this.onChangePlacement,\n }),\n };\n },\n\n anchor () {\n if (this.externalAnchorElement) return this.externalAnchorElement;\n return this.externalAnchor ? document.body.querySelector(this.externalAnchor) : getAnchor(this.$refs.anchor);\n },\n },\n\n watch: {\n\n tippyProps: {\n handler: 'setProps',\n deep: true,\n },\n\n show: {\n handler: function (show) {\n if (show !== null && this.enabled) {\n this.internalShow = show;\n }\n },\n\n immediate: true,\n },\n\n internalShow (value) {\n if (!this.tip || !this.anchor) return;\n\n if (value) {\n this.setProps();\n this.tip.show();\n } else {\n this.tip.hide();\n }\n },\n\n sticky (sticky) {\n this.tip.setProps({\n sticky,\n });\n },\n },\n\n async mounted () {\n if (!this.enabled && this.show != null) {\n console.warn('Tooltip: You cannot use both the enabled and show props at the same time.');\n console.warn('The show prop will be ignored.');\n }\n\n this.tip = createTippy(this.anchor, this.initOptions());\n if (this.externalAnchor || this.externalAnchorElement) {\n await flushPromises();\n this.addExternalAnchorEventListeners();\n }\n warnIfUnmounted(returnFirstEl(this.$el), this.$options.name);\n },\n\n beforeUnmount () {\n (this.externalAnchor || this.externalAnchorElement) && this.removeExternalAnchorEventListeners();\n\n if (this.anchor?._tippy) {\n this.tip?.destroy();\n }\n },\n\n methods: {\n calculateAnchorZindex () {\n // if a modal is currently active render at modal-element z-index, otherwise at tooltip z-index\n if (returnFirstEl(this.$el).getRootNode()\n .querySelector(\n `.d-modal[aria-hidden=\"false\"],\n .d-modal--transparent[aria-hidden=\"false\"],\n .d-modal:not([aria-hidden]),\n .d-modal--transparent:not([aria-hidden])`) ||\n // Special case because we don't have any dialtone drawer component yet. Render at 651 when\n // anchor of popover is within a drawer.\n returnFirstEl(this.$el).closest('.d-zi-drawer')) {\n return 651;\n } else {\n return 400;\n }\n },\n\n hasVisibleFocus () {\n return this.anchor.matches(':focus-visible');\n },\n\n onEnterAnchor (e) {\n if (!this.enabled) return;\n if (this.delay && this.inTimer === null) {\n this.inTimer = setTimeout(() => {\n this.triggerShow(e);\n }, TOOLTIP_DELAY_MS);\n } else {\n this.triggerShow(e);\n }\n },\n\n triggerShow (e) {\n if (e.type === 'focusin') {\n // only show tooltips on visible focus when triggered via focus.\n // when the user is using the mouse they only want tooltips to display\n // on mouseover.\n //\n // Example: anchor of a popover is a button with tooltip.\n // closing it with the mouse would trigger the tooltip to display as\n // the anchor is focused on close. Not what we want.\n if (this.show === null && this.hasVisibleFocus()) {\n this.internalShow = true;\n }\n } else {\n if (this.show === null) this.internalShow = true;\n }\n },\n\n onLeaveAnchor (e) {\n if (e.type === 'keydown' && e.code !== 'Escape') return;\n\n clearTimeout(this.inTimer);\n this.inTimer = null;\n this.triggerHide();\n },\n\n triggerHide () {\n if (this.show === null) this.internalShow = false;\n },\n\n onChangePlacement (placement) {\n this.currentPlacement = placement;\n },\n\n onHide () {\n this.tip?.unmount();\n this.$emit('shown', false);\n if (this.show !== null) {\n this.$emit('update:show', false);\n }\n },\n\n onShow (tooltipInstance, callingMethod) {\n if (!this.tooltipHasContent(tooltipInstance)) {\n return false;\n }\n if (this.transition && callingMethod === 'onShow') {\n return;\n }\n this.$emit('shown', true);\n if (this.show !== null) {\n this.$emit('update:show', true);\n }\n },\n\n setProps () {\n if (!this.tip || !this.tip.setProps || !this.anchor) return;\n\n if (this.tip && this.tip.setProps) {\n this.tip.setProps({\n ...this.tippyProps,\n // these need to be set here rather than in tippyProps because they are non-reactive\n appendTo: this.appendTo === 'body' ? this.anchor?.getRootNode()?.querySelector('body') : this.appendTo,\n zIndex: this.calculateAnchorZindex(),\n });\n }\n },\n\n onMount () {\n this.setProps();\n },\n\n tooltipHasContent (tooltipInstance) {\n // don't show tooltip when no content\n if (tooltipInstance.props.content.textContent.trim().length === 0) {\n return false;\n }\n return true;\n },\n\n // set initial options here. If any of the options need to dynamically change, they should be put in\n // tippyProps instead.\n initOptions () {\n const template = this.$refs.content;\n return {\n content: template,\n arrow: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"7\"><path d=\"M 14.5,7 8,0 1.5,7 Z\"/></svg>',\n // transition duration - same as our custom fade delay in dialtone-globals.less\n duration: 180,\n interactive: false,\n trigger: 'manual',\n hideOnClick: false,\n // disable tooltip from displaying on touch devices\n touch: false,\n onMount: this.onMount,\n showOnCreate: this.internalShow,\n popperOptions: getPopperOptions({\n hasHideModifierEnabled: true,\n }),\n };\n },\n\n addExternalAnchorEventListeners () {\n ['focusin', 'mouseenter'].forEach(listener => {\n this.anchor?.addEventListener(listener, (event) => this.onEnterAnchor(event));\n });\n ['focusout', 'mouseleave', 'keydown'].forEach(listener => {\n this.anchor?.addEventListener(listener, (event) => this.onLeaveAnchor(event));\n });\n },\n\n removeExternalAnchorEventListeners () {\n ['focusin', 'mouseenter'].forEach(listener => {\n this.anchor?.removeEventListener(listener, (event) => this.onEnterAnchor(event));\n });\n ['focusout', 'mouseleave', 'keydown'].forEach(listener => {\n this.anchor?.removeEventListener(listener, (event) => this.onLeaveAnchor(event));\n });\n },\n },\n};\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.js","names":[],"sources":["../../../components/tooltip/tooltip.vue"],"sourcesContent":["<template>\n <div data-qa=\"dt-tooltip-container\">\n <!-- disabling as the below events are for capturing events from interactive\n elements within the span rather than on the span itself -->\n <!-- eslint-disable-next-line vuejs-accessibility/no-static-element-interactions -->\n <span\n v-if=\"!externalAnchor && !externalAnchorElement\"\n ref=\"anchor\"\n data-qa=\"dt-tooltip-anchor\"\n @focusin=\"onEnterAnchor\"\n @focusout=\"onLeaveAnchor\"\n @mouseenter=\"onEnterAnchor\"\n @mouseleave=\"onLeaveAnchor\"\n @keydown.esc=\"onLeaveAnchor\"\n >\n <!-- @slot Slot for the anchor element -->\n <slot\n name=\"anchor\"\n />\n </span>\n <div\n :id=\"id\"\n ref=\"content\"\n data-qa=\"dt-tooltip\"\n :class=\"[\n 'd-tooltip',\n {\n [ TOOLTIP_KIND_MODIFIERS.inverted ]: inverted,\n },\n contentClass,\n ]\"\n >\n <!-- In case when transitionend event doesn't work correct (for ex. tooltip component with custom trigger) -->\n <!-- after-leave event can be used instead of transitionend -->\n <!-- @slot Slot for the content, defaults to message prop -->\n <slot>\n {{ message }}\n </slot>\n </div>\n </div>\n</template>\n\n<script>\nimport {\n TOOLTIP_KIND_MODIFIERS,\n TOOLTIP_DIRECTIONS,\n TOOLTIP_STICKY_VALUES,\n TOOLTIP_DELAY_MS,\n} from './tooltip_constants.js';\nimport {\n POPOVER_APPEND_TO_VALUES,\n} from '../popover/popover_constants';\nimport { flushPromises, getUniqueString, hasSlotContent, warnIfUnmounted, returnFirstEl } from '@/common/utils';\nimport { HTML_ELEMENT_TYPE } from '@/common/constants';\nimport {\n createTippy,\n getAnchor,\n getPopperOptions,\n} from '@/components/popover/tippy_utils';\n\n/**\n * A tooltip is a floating label that briefly explains an action, function, or an element.\n * Its content is exclusively text and shouldn't be vital information for users.\n * If richer media is desired, consider using a popover instead.\n * @see https://dialtone.dialpad.com/components/tooltip.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtTooltip',\n\n props: {\n /**\n * The id of the tooltip\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * If the popover does not fit in the direction described by \"placement\",\n * it will attempt to change its direction to the \"fallbackPlacements\"\n * if defined, otherwise it will automatically position to a new location\n * as it sees best fit. See\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * */\n fallbackPlacements: {\n type: Array,\n default: () => ['auto'],\n },\n\n /**\n * If true, applies inverted styles to the tooltip\n * @values true, false\n */\n inverted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Displaces the tooltip from its reference element\n * by the specified number of pixels. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#offset\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n */\n offset: {\n type: Array,\n default: () => [0, 12],\n },\n\n /**\n * The direction the popover displays relative to the anchor. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#placement\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n */\n placement: {\n type: String,\n default: 'top',\n validator (placement) {\n return TOOLTIP_DIRECTIONS.includes(placement);\n },\n },\n\n /**\n * If the tooltip sticks to the anchor. This is usually not needed, but can be needed\n * if the reference element's position is animating, or to automatically update the popover\n * position in those cases the DOM layout changes the reference element's position.\n * `true` enables it, `reference` only checks the \"reference\" rect for changes and `popper` only\n * checks the \"popper\" rect for changes. See\n * <a\n * class=\"d-link\"\n * href=\"https://atomiks.github.io/tippyjs/v6/all-props/#sticky\"\n * target=\"_blank\"\n * >\n * Tippy.js docs\n * </a>\n * @values true, false, reference, popper\n */\n sticky: {\n type: [Boolean, String],\n default: true,\n validator: (sticky) => {\n return TOOLTIP_STICKY_VALUES.includes(sticky);\n },\n },\n\n /**\n * Sets the element to which the tooltip is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * This prop is not reactive, must be set on initial render.\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTML_ELEMENT_TYPE, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * Additional css classes for the tooltip content element.\n * Can accept all of: String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n contentClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * A provided message for the tooltip content\n */\n message: {\n type: String,\n default: '',\n },\n\n /**\n * Controls whether hover/focus causes the tooltip to appear.\n * Cannot be combined with the show prop. show value will be ignored.\n * by default this is true, if you override with false, the tooltip will never show up.\n */\n enabled: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Controls whether the tooltip is shown. Leaving this null will have the tooltip trigger on mouseover by default.\n * If you set this value, the default mouseover behavior will be disabled and you can control it as you need.\n * Supports .sync modifier\n * @values null, true, false\n */\n show: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Whether the tooltip should have a transition effect (fade).\n */\n transition: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the tooltip will have a delay when being focused or moused over.\n * @values true, false\n */\n delay: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Set a custom theme on the tooltip. See https://atomiks.github.io/tippyjs/v6/themes/\n */\n theme: {\n type: String,\n default: null,\n },\n\n /**\n * External anchor id to use in those cases the anchor can't be provided via the slot.\n * For instance, using the combobox's input as the anchor for the popover.\n * @deprecated Use externalAnchorElement instead for Shadow DOM compatibility.\n */\n externalAnchor: {\n type: String,\n default: null,\n },\n\n /**\n * External anchor element reference. Use this instead of externalAnchor when\n * the anchor may be inside a Shadow DOM, as querySelector cannot pierce shadow boundaries.\n */\n externalAnchorElement: {\n type: HTML_ELEMENT_TYPE,\n default: null,\n },\n },\n\n emits: [\n /**\n * Emitted when tooltip is shown or hidden\n *\n * @event shown\n * @type {Boolean}\n */\n 'shown',\n\n /**\n * Sync show value\n *\n * @event update:show\n */\n 'update:show',\n ],\n\n data () {\n return {\n TOOLTIP_KIND_MODIFIERS,\n hasSlotContent,\n tip: null,\n\n inTimer: null,\n\n // Internal state for whether the tooltip is shown. Changing the prop\n // will update this.\n internalShow: false,\n\n // this is where the placement currently is, this can be different than\n // the placement prop when there is not enough available room for the tip\n // to display and it uses a fallback placement.\n currentPlacement: this.placement,\n };\n },\n\n computed: {\n\n tippyProps () {\n return {\n offset: this.offset,\n delay: this.delay ? TOOLTIP_DELAY_MS : false,\n placement: this.placement,\n sticky: this.sticky,\n theme: this.inverted ? 'inverted' : this.theme,\n animation: this.transition ? 'fade' : false,\n // onShown only triggers when transition is truthy\n onShown: (tooltipInstance) => this.onShow(tooltipInstance, 'onShown'),\n // onShown will always be called, but it will be called before the animation is complete\n onShow: (tooltipInstance) => this.onShow(tooltipInstance, 'onShow'),\n onHidden: this.onHide,\n\n popperOptions: getPopperOptions({\n fallbackPlacements: this.fallbackPlacements,\n hasHideModifierEnabled: true,\n onChangePlacement: this.onChangePlacement,\n }),\n };\n },\n\n anchor () {\n if (this.externalAnchorElement) return this.externalAnchorElement;\n return this.externalAnchor ? document.body.querySelector(this.externalAnchor) : getAnchor(this.$refs.anchor);\n },\n },\n\n watch: {\n\n tippyProps: {\n handler: 'setProps',\n deep: true,\n },\n\n show: {\n handler: function (show) {\n if (show !== null && this.enabled) {\n this.internalShow = show;\n }\n },\n\n immediate: true,\n },\n\n internalShow (value) {\n if (!this.tip || !this.anchor) return;\n\n if (value) {\n this.setProps();\n this.tip.show();\n } else {\n this.tip.hide();\n }\n },\n\n sticky (sticky) {\n this.tip.setProps({\n sticky,\n });\n },\n },\n\n async mounted () {\n if (!this.enabled && this.show != null) {\n console.warn('Tooltip: You cannot use both the enabled and show props at the same time.');\n console.warn('The show prop will be ignored.');\n }\n\n this.tip = createTippy(this.anchor, this.initOptions());\n if (this.externalAnchor || this.externalAnchorElement) {\n await flushPromises();\n this.addExternalAnchorEventListeners();\n }\n warnIfUnmounted(returnFirstEl(this.$el), this.$options.name);\n },\n\n beforeUnmount () {\n (this.externalAnchor || this.externalAnchorElement) && this.removeExternalAnchorEventListeners();\n\n if (this.anchor?._tippy) {\n this.tip?.destroy();\n }\n },\n\n methods: {\n calculateAnchorZindex () {\n // if a modal is currently active render at modal-element z-index, otherwise at tooltip z-index\n if (returnFirstEl(this.$el).getRootNode()\n .querySelector(\n `.d-modal[aria-hidden=\"false\"],\n .d-modal--transparent[aria-hidden=\"false\"],\n .d-modal:not([aria-hidden]),\n .d-modal--transparent:not([aria-hidden])`) ||\n // Special case because we don't have any dialtone drawer component yet. Render at 651 when\n // anchor of popover is within a drawer.\n returnFirstEl(this.$el).closest('.d-zi-drawer')) {\n return 651;\n } else {\n return 400;\n }\n },\n\n hasVisibleFocus () {\n return this.anchor.matches(':focus-visible');\n },\n\n onEnterAnchor (e) {\n if (!this.enabled) return;\n if (this.delay && this.inTimer === null) {\n this.inTimer = setTimeout(() => {\n this.triggerShow(e);\n }, TOOLTIP_DELAY_MS);\n } else {\n this.triggerShow(e);\n }\n },\n\n triggerShow (e) {\n if (e.type === 'focusin') {\n // only show tooltips on visible focus when triggered via focus.\n // when the user is using the mouse they only want tooltips to display\n // on mouseover.\n //\n // Example: anchor of a popover is a button with tooltip.\n // closing it with the mouse would trigger the tooltip to display as\n // the anchor is focused on close. Not what we want.\n if (this.show === null && this.hasVisibleFocus()) {\n this.internalShow = true;\n }\n } else {\n if (this.show === null) this.internalShow = true;\n }\n },\n\n onLeaveAnchor (e) {\n if (e.type === 'keydown' && e.code !== 'Escape') return;\n\n clearTimeout(this.inTimer);\n this.inTimer = null;\n this.triggerHide();\n },\n\n triggerHide () {\n if (this.show === null) this.internalShow = false;\n },\n\n onChangePlacement (placement) {\n this.currentPlacement = placement;\n },\n\n onHide () {\n this.tip?.unmount();\n this.$emit('shown', false);\n if (this.show !== null) {\n this.$emit('update:show', false);\n }\n },\n\n onShow (tooltipInstance, callingMethod) {\n if (!this.tooltipHasContent(tooltipInstance)) {\n return false;\n }\n if (this.transition && callingMethod === 'onShow') {\n return;\n }\n this.$emit('shown', true);\n if (this.show !== null) {\n this.$emit('update:show', true);\n }\n },\n\n setProps () {\n if (!this.tip || !this.tip.setProps || !this.anchor) return;\n\n if (this.tip && this.tip.setProps) {\n this.tip.setProps({\n ...this.tippyProps,\n // these need to be set here rather than in tippyProps because they are non-reactive\n appendTo: this.appendTo === 'body' ? this.anchor?.getRootNode()?.querySelector('body') : this.appendTo,\n zIndex: this.calculateAnchorZindex(),\n });\n }\n },\n\n onMount () {\n this.setProps();\n },\n\n tooltipHasContent (tooltipInstance) {\n // don't show tooltip when no content\n if (tooltipInstance.props.content.textContent.trim().length === 0) {\n return false;\n }\n return true;\n },\n\n // set initial options here. If any of the options need to dynamically change, they should be put in\n // tippyProps instead.\n initOptions () {\n const template = this.$refs.content;\n return {\n content: template,\n arrow: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"7\"><path d=\"M 14.5,7 8,0 1.5,7 Z\"/></svg>',\n // transition duration - same as our custom fade delay in dialtone-globals.less\n duration: 180,\n interactive: false,\n trigger: 'manual',\n hideOnClick: false,\n // disable tooltip from displaying on touch devices\n touch: false,\n onMount: this.onMount,\n showOnCreate: this.internalShow,\n popperOptions: getPopperOptions({\n hasHideModifierEnabled: true,\n }),\n };\n },\n\n addExternalAnchorEventListeners () {\n ['focusin', 'mouseenter'].forEach(listener => {\n this.anchor?.addEventListener(listener, (event) => this.onEnterAnchor(event));\n });\n ['focusout', 'mouseleave', 'keydown'].forEach(listener => {\n this.anchor?.addEventListener(listener, (event) => this.onLeaveAnchor(event));\n });\n },\n\n removeExternalAnchorEventListeners () {\n ['focusin', 'mouseenter'].forEach(listener => {\n this.anchor?.removeEventListener(listener, (event) => this.onEnterAnchor(event));\n });\n ['focusout', 'mouseleave', 'keydown'].forEach(listener => {\n this.anchor?.removeEventListener(listener, (event) => this.onLeaveAnchor(event));\n });\n },\n },\n};\n</script>\n"],"mappings":"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"}
@@ -451,10 +451,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
451
451
  validator: (sticky: unknown) => boolean;
452
452
  };
453
453
  appendTo: {
454
- type: (StringConstructor | {
454
+ type: ({
455
455
  new (): HTMLElement;
456
456
  prototype: HTMLElement;
457
- })[];
457
+ } | ObjectConstructor | StringConstructor)[];
458
458
  default: string;
459
459
  validator: (appendTo: unknown) => boolean;
460
460
  };
@@ -494,7 +494,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
494
494
  type: {
495
495
  new (): HTMLElement;
496
496
  prototype: HTMLElement;
497
- };
497
+ } | ObjectConstructor;
498
498
  default: null;
499
499
  };
500
500
  }>, {}, {
@@ -626,10 +626,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
626
626
  validator: (sticky: unknown) => boolean;
627
627
  };
628
628
  appendTo: {
629
- type: (StringConstructor | {
629
+ type: ({
630
630
  new (): HTMLElement;
631
631
  prototype: HTMLElement;
632
- })[];
632
+ } | ObjectConstructor | StringConstructor)[];
633
633
  default: string;
634
634
  validator: (appendTo: unknown) => boolean;
635
635
  };
@@ -669,7 +669,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
669
669
  type: {
670
670
  new (): HTMLElement;
671
671
  prototype: HTMLElement;
672
- };
672
+ } | ObjectConstructor;
673
673
  default: null;
674
674
  };
675
675
  }>> & Readonly<{
@@ -683,7 +683,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
683
683
  contentClass: string | unknown[] | Record<string, any>;
684
684
  show: boolean;
685
685
  transition: boolean;
686
- appendTo: string | HTMLElement;
686
+ appendTo: string | HTMLElement | Record<string, any>;
687
687
  delay: boolean;
688
688
  placement: string;
689
689
  sticky: string | boolean;
@@ -691,7 +691,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
691
691
  fallbackPlacements: unknown[];
692
692
  enabled: boolean;
693
693
  externalAnchor: string;
694
- externalAnchorElement: HTMLElement;
694
+ externalAnchorElement: any;
695
695
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
696
696
  }, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
697
697
  export default _default;