@dialpad/dialtone-vue 2.201.0-next.1 → 2.201.0

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 (57) hide show
  1. package/dist/component-documentation.json +1 -1
  2. package/dist/dialtone-vue.cjs +1 -1
  3. package/dist/dialtone-vue.js +260 -262
  4. package/dist/dialtone-vue.js.map +1 -1
  5. package/dist/lib/avatar/avatar.cjs +1 -1
  6. package/dist/lib/avatar/avatar.cjs.map +1 -1
  7. package/dist/lib/avatar/avatar.js +13 -10
  8. package/dist/lib/avatar/avatar.js.map +1 -1
  9. package/dist/lib/popover/popover.cjs +1 -1
  10. package/dist/lib/popover/popover.cjs.map +1 -1
  11. package/dist/lib/popover/popover.js +31 -13
  12. package/dist/lib/popover/popover.js.map +1 -1
  13. package/dist/lib/popover/tippy-utils.cjs +1 -1
  14. package/dist/lib/popover/tippy-utils.cjs.map +1 -1
  15. package/dist/lib/popover/tippy-utils.js +39 -35
  16. package/dist/lib/popover/tippy-utils.js.map +1 -1
  17. package/dist/lib/split-button/split-button-alpha.cjs +1 -1
  18. package/dist/lib/split-button/split-button-alpha.cjs.map +1 -1
  19. package/dist/lib/split-button/split-button-alpha.js +16 -8
  20. package/dist/lib/split-button/split-button-alpha.js.map +1 -1
  21. package/dist/lib/split-button/split-button-omega.cjs +1 -1
  22. package/dist/lib/split-button/split-button-omega.cjs.map +1 -1
  23. package/dist/lib/split-button/split-button-omega.js +10 -10
  24. package/dist/lib/split-button/split-button-omega.js.map +1 -1
  25. package/dist/lib/tooltip/tooltip.cjs +2 -2
  26. package/dist/lib/tooltip/tooltip.cjs.map +1 -1
  27. package/dist/lib/tooltip/tooltip.js +7 -7
  28. package/dist/lib/tooltip/tooltip.js.map +1 -1
  29. package/dist/lib/tooltip-directive/tooltip.cjs +1 -1
  30. package/dist/lib/tooltip-directive/tooltip.cjs.map +1 -1
  31. package/dist/lib/tooltip-directive/tooltip.js +17 -16
  32. package/dist/lib/tooltip-directive/tooltip.js.map +1 -1
  33. package/dist/localization/en-US.cjs +0 -2
  34. package/dist/localization/en-US.cjs.map +1 -1
  35. package/dist/localization/en-US.js +0 -2
  36. package/dist/localization/en-US.js.map +1 -1
  37. package/dist/types/components/popover/popover.vue.d.ts.map +1 -1
  38. package/dist/types/components/popover/tippy_utils.d.ts.map +1 -1
  39. package/dist/types/components/rich_text_editor/rich_text_editor.vue.d.ts +1 -1
  40. package/dist/types/components/split_button/split_button-alpha.vue.d.ts +6 -1
  41. package/dist/types/components/split_button/split_button.vue.d.ts +2 -2
  42. package/dist/types/directives/tooltip_directive/tooltip.d.ts.map +1 -1
  43. package/dist/types/index.d.ts +0 -1
  44. package/dist/types/recipes/conversation_view/message_input/message_input.vue.d.ts +1 -1
  45. package/package.json +4 -4
  46. package/dist/lib/filter-pill/filter-pill.cjs +0 -2
  47. package/dist/lib/filter-pill/filter-pill.cjs.map +0 -1
  48. package/dist/lib/filter-pill/filter-pill.js +0 -245
  49. package/dist/lib/filter-pill/filter-pill.js.map +0 -1
  50. package/dist/lib/filter-pill/index.cjs +0 -2
  51. package/dist/lib/filter-pill/index.cjs.map +0 -1
  52. package/dist/lib/filter-pill/index.js +0 -5
  53. package/dist/lib/filter-pill/index.js.map +0 -1
  54. package/dist/types/components/filter_pill/filter_pill.vue.d.ts +0 -151
  55. package/dist/types/components/filter_pill/filter_pill.vue.d.ts.map +0 -1
  56. package/dist/types/components/filter_pill/index.d.ts +0 -2
  57. package/dist/types/components/filter_pill/index.d.ts.map +0 -1
@@ -1,9 +1,9 @@
1
1
  import { SPLIT_BUTTON_ICON_SIZES as i } from "./split-button-constants.js";
2
2
  import { DtIconChevronDown as n } from "@dialpad/dialtone-icons/vue2";
3
- import { getUniqueString as o } from "../../common/utils/index.js";
4
- import { n as a } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
3
+ import { getUniqueString as a } from "../../common/utils/index.js";
4
+ import { n as o } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
5
5
  import r from "../button/button.js";
6
- const l = {
6
+ const d = {
7
7
  name: "SplitButtonOmega",
8
8
  components: {
9
9
  DtButton: r,
@@ -37,7 +37,7 @@ const l = {
37
37
  */
38
38
  id: {
39
39
  type: String,
40
- default: o()
40
+ default: a()
41
41
  },
42
42
  /**
43
43
  * The fill and outline of the button associated with its visual importance.
@@ -76,18 +76,18 @@ const l = {
76
76
  };
77
77
  var s = function() {
78
78
  var t = this, e = t._self._c;
79
- return e("dt-button", { directives: [{ name: "dt-tooltip", rawName: "v-dt-tooltip", value: t.tooltipText, expression: "tooltipText" }], class: `d-split-btn__omega d-split-btn__omega--${t.size}`, attrs: { id: t.id, "data-qa": "dt-split-button-omega", active: t.active, "aria-label": t.ariaLabel, disabled: t.disabled, importance: t.importance, kind: t.kind, size: t.size }, scopedSlots: t._u([{ key: "icon", fn: function() {
79
+ return e("dt-button", { directives: [{ name: "dt-tooltip", rawName: "v-dt-tooltip", value: { message: t.tooltipText, inverted: t.kind === "inverted" }, expression: "{ message: tooltipText, inverted: kind === 'inverted' }" }], class: `d-split-btn__omega d-split-btn__omega--${t.size}`, attrs: { id: t.id, "data-qa": "dt-split-button-omega", active: t.active, "aria-label": t.ariaLabel, disabled: t.disabled, importance: t.importance, kind: t.kind, size: t.size }, scopedSlots: t._u([{ key: "icon", fn: function() {
80
80
  return [t._t("icon", function() {
81
81
  return [e("dt-icon-chevron-down", { attrs: { size: t.SPLIT_BUTTON_ICON_SIZES[t.size] } })];
82
82
  }, { size: t.SPLIT_BUTTON_ICON_SIZES[t.size] })];
83
83
  }, proxy: !0 }], null, !0) });
84
- }, d = [], p = /* @__PURE__ */ a(
85
- l,
84
+ }, l = [], p = /* @__PURE__ */ o(
85
+ d,
86
86
  s,
87
- d
87
+ l
88
88
  );
89
- const g = p.exports;
89
+ const v = p.exports;
90
90
  export {
91
- g as default
91
+ v as default
92
92
  };
93
93
  //# sourceMappingURL=split-button-omega.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"split-button-omega.js","sources":["../../../components/split_button/split_button-omega.vue"],"sourcesContent":["<template>\n <dt-button\n :id=\"id\"\n v-dt-tooltip=\"tooltipText\"\n data-qa=\"dt-split-button-omega\"\n :active=\"active\"\n :aria-label=\"ariaLabel\"\n :class=\"`d-split-btn__omega d-split-btn__omega--${size}`\"\n :disabled=\"disabled\"\n :importance=\"importance\"\n :kind=\"kind\"\n :size=\"size\"\n >\n <template #icon>\n <slot\n name=\"icon\"\n :size=\"SPLIT_BUTTON_ICON_SIZES[size]\"\n >\n <dt-icon-chevron-down :size=\"SPLIT_BUTTON_ICON_SIZES[size]\" />\n </slot>\n </template>\n </dt-button>\n</template>\n\n<script>\nimport { SPLIT_BUTTON_ICON_SIZES } from './split_button_constants';\nimport { DtButton } from '@/components/button';\nimport { DtIconChevronDown } from '@dialpad/dialtone-icons/vue2';\nimport { getUniqueString } from '@/common/utils';\n\nexport default {\n name: 'SplitButtonOmega',\n components: {\n DtButton,\n DtIconChevronDown,\n },\n\n props: {\n /**\n * Determines whether the button should have active styling\n */\n active: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the button\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * HTML button disabled attribute\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Element ID, useful in case you need to reference the button\n * as an external anchor for popover\n */\n id: {\n type: String,\n default: getUniqueString(),\n },\n\n /**\n * The fill and outline of the button associated with its visual importance.\n */\n importance: {\n type: String,\n default: 'primary',\n },\n\n /**\n * The color of the button.\n */\n kind: {\n type: String,\n default: 'default',\n },\n\n /**\n * The size of the button.\n */\n size: {\n type: String,\n default: 'md',\n },\n\n /**\n * Text shown in tooltip when you hover the button\n */\n tooltipText: {\n type: String,\n default: '',\n },\n },\n\n data () {\n return {\n SPLIT_BUTTON_ICON_SIZES,\n };\n },\n};\n</script>\n"],"names":["_sfc_main","DtButton","DtIconChevronDown","getUniqueString","SPLIT_BUTTON_ICON_SIZES"],"mappings":";;;;;AA8BA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,IACA,UAAAC;AAAA,IACA,mBAAAC;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAAC,EAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,yBAAAC;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"split-button-omega.js","sources":["../../../components/split_button/split_button-omega.vue"],"sourcesContent":["<template>\n <dt-button\n :id=\"id\"\n v-dt-tooltip=\"{ message: tooltipText, inverted: kind === 'inverted' }\"\n data-qa=\"dt-split-button-omega\"\n :active=\"active\"\n :aria-label=\"ariaLabel\"\n :class=\"`d-split-btn__omega d-split-btn__omega--${size}`\"\n :disabled=\"disabled\"\n :importance=\"importance\"\n :kind=\"kind\"\n :size=\"size\"\n >\n <template #icon>\n <slot\n name=\"icon\"\n :size=\"SPLIT_BUTTON_ICON_SIZES[size]\"\n >\n <dt-icon-chevron-down :size=\"SPLIT_BUTTON_ICON_SIZES[size]\" />\n </slot>\n </template>\n </dt-button>\n</template>\n\n<script>\nimport { SPLIT_BUTTON_ICON_SIZES } from './split_button_constants';\nimport { DtButton } from '@/components/button';\nimport { DtIconChevronDown } from '@dialpad/dialtone-icons/vue2';\nimport { getUniqueString } from '@/common/utils';\n\nexport default {\n name: 'SplitButtonOmega',\n components: {\n DtButton,\n DtIconChevronDown,\n },\n\n props: {\n /**\n * Determines whether the button should have active styling\n */\n active: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the button\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * HTML button disabled attribute\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Element ID, useful in case you need to reference the button\n * as an external anchor for popover\n */\n id: {\n type: String,\n default: getUniqueString(),\n },\n\n /**\n * The fill and outline of the button associated with its visual importance.\n */\n importance: {\n type: String,\n default: 'primary',\n },\n\n /**\n * The color of the button.\n */\n kind: {\n type: String,\n default: 'default',\n },\n\n /**\n * The size of the button.\n */\n size: {\n type: String,\n default: 'md',\n },\n\n /**\n * Text shown in tooltip when you hover the button\n */\n tooltipText: {\n type: String,\n default: '',\n },\n },\n\n data () {\n return {\n SPLIT_BUTTON_ICON_SIZES,\n };\n },\n};\n</script>\n"],"names":["_sfc_main","DtButton","DtIconChevronDown","getUniqueString","SPLIT_BUTTON_ICON_SIZES"],"mappings":";;;;;AA8BA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,IACA,UAAAC;AAAA,IACA,mBAAAC;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAAC,EAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,yBAAAC;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("./tooltip-constants.cjs"),a=require("../popover/popover-constants.cjs"),s=require("../../common/utils/index.cjs"),i=require("../popover/tippy-utils.cjs"),h=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),l={name:"DtTooltip",props:{id:{type:String,default(){return s.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 o.TOOLTIP_DIRECTIONS.includes(e)}},sticky:{type:[Boolean,String],default:!0,validator:e=>o.TOOLTIP_STICKY_VALUES.includes(e)},appendTo:{type:[HTMLElement,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}},emits:["shown","update:show"],data(){return{TOOLTIP_KIND_MODIFIERS:o.TOOLTIP_KIND_MODIFIERS,tip:null,inTimer:null,internalShow:!1,currentPlacement:this.placement}},computed:{tippyProps(){return{offset:this.offset,delay:this.delay?o.TOOLTIP_DELAY_MS:!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:i.getPopperOptions({fallbackPlacements:this.fallbackPlacements,hasHideModifierEnabled:!0})}},anchor(){return this.externalAnchor?document.body.querySelector(this.externalAnchor):i.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&&(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=i.createTippy(this.anchor,this.initOptions()),this.externalAnchor&&(await s.flushPromises(),this.addExternalAnchorEventListeners())},beforeDestroy(){var e,t;this.externalAnchor&&this.removeExternalAnchorEventListeners(),(e=this.anchor)!=null&&e._tippy&&((t=this.tip)==null||t.destroy())},methods:{calculateAnchorZindex(){return this.$el.getRootNode().querySelector(`.d-modal[aria-hidden="false"],
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("./tooltip-constants.cjs"),a=require("../popover/popover-constants.cjs"),s=require("../../common/utils/index.cjs"),o=require("../popover/tippy-utils.cjs"),h=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),l={name:"DtTooltip",props:{id:{type:String,default(){return s.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:[HTMLElement,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}},emits:["shown","update:show"],data(){return{TOOLTIP_KIND_MODIFIERS:i.TOOLTIP_KIND_MODIFIERS,tip:null,inTimer:null,internalShow:!1,currentPlacement:this.placement}},computed:{tippyProps(){return{offset:this.offset,delay:this.delay?i.TOOLTIP_DELAY_MS:!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:o.getPopperOptions({fallbackPlacements:this.fallbackPlacements,hasHideModifierEnabled:!0})}},anchor(){return this.externalAnchor?document.body.querySelector(this.externalAnchor):o.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=o.createTippy(this.anchor,this.initOptions()),this.externalAnchor&&(await s.flushPromises(),this.addExternalAnchorEventListeners())},beforeDestroy(){var e,t;this.externalAnchor&&this.removeExternalAnchorEventListeners(),(e=this.anchor)!=null&&e._tippy&&((t=this.tip)==null||t.destroy())},methods:{calculateAnchorZindex(){return 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])`)||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)},o.TOOLTIP_DELAY_MS):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(){var e;(e=this.tip)==null||e.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(){var e,t;this.tip&&this.tip.setProps&&this.tip.setProps({...this.tippyProps,appendTo:this.appendTo==="body"?(t=(e=this.anchor)==null?void 0:e.getRootNode())==null?void 0:t.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:i.getPopperOptions({hasHideModifierEnabled:!0})}},addExternalAnchorEventListeners(){["focusin","mouseenter"].forEach(e=>{var t;(t=this.anchor)==null||t.addEventListener(e,n=>this.onEnterAnchor(n))}),["focusout","mouseleave","keydown"].forEach(e=>{var t;(t=this.anchor)==null||t.addEventListener(e,n=>this.onLeaveAnchor(n))})},removeExternalAnchorEventListeners(){["focusin","mouseenter"].forEach(e=>{var t;(t=this.anchor)==null||t.removeEventListener(e,n=>this.onEnterAnchor(n))}),["focusout","mouseleave","keydown"].forEach(e=>{var t;(t=this.anchor)==null||t.removeEventListener(e,n=>this.onLeaveAnchor(n))})}}};var u=function(){var t=this,n=t._self._c;return n("div",{attrs:{"data-qa":"dt-tooltip-container"}},[t.externalAnchor?t._e():n("span",{ref:"anchor",attrs:{"data-qa":"dt-tooltip-anchor"},on:{focusin:t.onEnterAnchor,focusout:t.onLeaveAnchor,mouseenter:t.onEnterAnchor,mouseleave:t.onLeaveAnchor,keydown:function(r){return!r.type.indexOf("key")&&t._k(r.keyCode,"esc",27,r.key,["Esc","Escape"])?null:t.onLeaveAnchor.apply(null,arguments)}}},[t._t("anchor")],2),n("div",t._g({ref:"content",class:["d-tooltip",{[t.TOOLTIP_KIND_MODIFIERS.inverted]:t.inverted},t.contentClass],attrs:{id:t.id,"data-qa":"dt-tooltip"}},t.$listeners),[t._t("default",function(){return[t._v(" "+t._s(t.message)+" ")]})],2)])},d=[],c=h.n(l,u,d);const p=c.exports;exports.default=p;
4
+ .d-modal--transparent:not([aria-hidden])`)||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)},i.TOOLTIP_DELAY_MS):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(){var e;(e=this.tip)==null||e.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(){var e,t;!this.tip||!this.tip.setProps||!this.anchor||this.tip&&this.tip.setProps&&this.tip.setProps({...this.tippyProps,appendTo:this.appendTo==="body"?(t=(e=this.anchor)==null?void 0:e.getRootNode())==null?void 0:t.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:o.getPopperOptions({hasHideModifierEnabled:!0})}},addExternalAnchorEventListeners(){["focusin","mouseenter"].forEach(e=>{var t;(t=this.anchor)==null||t.addEventListener(e,n=>this.onEnterAnchor(n))}),["focusout","mouseleave","keydown"].forEach(e=>{var t;(t=this.anchor)==null||t.addEventListener(e,n=>this.onLeaveAnchor(n))})},removeExternalAnchorEventListeners(){["focusin","mouseenter"].forEach(e=>{var t;(t=this.anchor)==null||t.removeEventListener(e,n=>this.onEnterAnchor(n))}),["focusout","mouseleave","keydown"].forEach(e=>{var t;(t=this.anchor)==null||t.removeEventListener(e,n=>this.onLeaveAnchor(n))})}}};var u=function(){var t=this,n=t._self._c;return n("div",{attrs:{"data-qa":"dt-tooltip-container"}},[t.externalAnchor?t._e():n("span",{ref:"anchor",attrs:{"data-qa":"dt-tooltip-anchor"},on:{focusin:t.onEnterAnchor,focusout:t.onLeaveAnchor,mouseenter:t.onEnterAnchor,mouseleave:t.onLeaveAnchor,keydown:function(r){return!r.type.indexOf("key")&&t._k(r.keyCode,"esc",27,r.key,["Esc","Escape"])?null:t.onLeaveAnchor.apply(null,arguments)}}},[t._t("anchor")],2),n("div",t._g({ref:"content",class:["d-tooltip",{[t.TOOLTIP_KIND_MODIFIERS.inverted]:t.inverted},t.contentClass],attrs:{id:t.id,"data-qa":"dt-tooltip"}},t.$listeners),[t._t("default",function(){return[t._v(" "+t._s(t.message)+" ")]})],2)])},d=[],c=h.n(l,u,d);const p=c.exports;exports.default=p;
5
5
  //# sourceMappingURL=tooltip.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.cjs","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\"\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 // eslint-disable-next-line vue/no-restricted-class\n 'd-tooltip',\n {\n [ TOOLTIP_KIND_MODIFIERS.inverted ]: inverted,\n },\n contentClass,\n ]\"\n v-on=\"$listeners\"\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 } 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 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 */\n externalAnchor: {\n type: String,\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 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 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) 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) {\n await flushPromises();\n this.addExternalAnchorEventListeners();\n }\n },\n\n beforeDestroy () {\n this.externalAnchor && 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 (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 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) {\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"],"names":["_sfc_main","getUniqueString","placement","TOOLTIP_DIRECTIONS","sticky","TOOLTIP_STICKY_VALUES","appendTo","POPOVER_APPEND_TO_VALUES","TOOLTIP_KIND_MODIFIERS","TOOLTIP_DELAY_MS","tooltipInstance","getPopperOptions","getAnchor","show","value","createTippy","flushPromises","_a","_b","callingMethod","listener","event"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.cjs","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\"\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 // eslint-disable-next-line vue/no-restricted-class\n 'd-tooltip',\n {\n [ TOOLTIP_KIND_MODIFIERS.inverted ]: inverted,\n },\n contentClass,\n ]\"\n v-on=\"$listeners\"\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 } 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 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 */\n externalAnchor: {\n type: String,\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 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 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) {\n await flushPromises();\n this.addExternalAnchorEventListeners();\n }\n },\n\n beforeDestroy () {\n this.externalAnchor && 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 (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 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"],"names":["_sfc_main","getUniqueString","placement","TOOLTIP_DIRECTIONS","sticky","TOOLTIP_STICKY_VALUES","appendTo","POPOVER_APPEND_TO_VALUES","TOOLTIP_KIND_MODIFIERS","TOOLTIP_DELAY_MS","tooltipInstance","getPopperOptions","getAnchor","show","value","createTippy","flushPromises","_a","_b","callingMethod","listener","event"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TOOLTIP_DELAY_MS as i, TOOLTIP_KIND_MODIFIERS as s, TOOLTIP_STICKY_VALUES as a, TOOLTIP_DIRECTIONS as h } from "./tooltip-constants.js";
1
+ import { TOOLTIP_DELAY_MS as o, TOOLTIP_KIND_MODIFIERS as s, TOOLTIP_STICKY_VALUES as a, TOOLTIP_DIRECTIONS as h } from "./tooltip-constants.js";
2
2
  import { POPOVER_APPEND_TO_VALUES as l } from "../popover/popover-constants.js";
3
3
  import { flushPromises as d, getUniqueString as c } from "../../common/utils/index.js";
4
4
  import { getPopperOptions as r, createTippy as u, getAnchor as p } from "../popover/tippy-utils.js";
@@ -207,7 +207,7 @@ const m = {
207
207
  tippyProps() {
208
208
  return {
209
209
  offset: this.offset,
210
- delay: this.delay ? i : !1,
210
+ delay: this.delay ? o : !1,
211
211
  placement: this.placement,
212
212
  sticky: this.sticky,
213
213
  theme: this.inverted ? "inverted" : this.theme,
@@ -239,7 +239,7 @@ const m = {
239
239
  immediate: !0
240
240
  },
241
241
  internalShow(t) {
242
- this.tip && (t ? (this.setProps(), this.tip.show()) : this.tip.hide());
242
+ !this.tip || !this.anchor || (t ? (this.setProps(), this.tip.show()) : this.tip.hide());
243
243
  },
244
244
  sticky(t) {
245
245
  this.tip.setProps({
@@ -271,7 +271,7 @@ const m = {
271
271
  onEnterAnchor(t) {
272
272
  this.enabled && (this.delay && this.inTimer === null ? this.inTimer = setTimeout(() => {
273
273
  this.triggerShow(t);
274
- }, i) : this.triggerShow(t));
274
+ }, o) : this.triggerShow(t));
275
275
  },
276
276
  triggerShow(t) {
277
277
  t.type === "focusin" ? this.show === null && this.hasVisibleFocus() && (this.internalShow = !0) : this.show === null && (this.internalShow = !0);
@@ -296,7 +296,7 @@ const m = {
296
296
  },
297
297
  setProps() {
298
298
  var t, e;
299
- this.tip && this.tip.setProps && this.tip.setProps({
299
+ !this.tip || !this.tip.setProps || !this.anchor || this.tip && this.tip.setProps && this.tip.setProps({
300
300
  ...this.tippyProps,
301
301
  // these need to be set here rather than in tippyProps because they are non-reactive
302
302
  appendTo: this.appendTo === "body" ? (e = (t = this.anchor) == null ? void 0 : t.getRootNode()) == null ? void 0 : e.querySelector("body") : this.appendTo,
@@ -351,8 +351,8 @@ const m = {
351
351
  };
352
352
  var y = function() {
353
353
  var e = this, n = e._self._c;
354
- return n("div", { attrs: { "data-qa": "dt-tooltip-container" } }, [e.externalAnchor ? e._e() : n("span", { ref: "anchor", attrs: { "data-qa": "dt-tooltip-anchor" }, on: { focusin: e.onEnterAnchor, focusout: e.onLeaveAnchor, mouseenter: e.onEnterAnchor, mouseleave: e.onLeaveAnchor, keydown: function(o) {
355
- return !o.type.indexOf("key") && e._k(o.keyCode, "esc", 27, o.key, ["Esc", "Escape"]) ? null : e.onLeaveAnchor.apply(null, arguments);
354
+ return n("div", { attrs: { "data-qa": "dt-tooltip-container" } }, [e.externalAnchor ? e._e() : n("span", { ref: "anchor", attrs: { "data-qa": "dt-tooltip-anchor" }, on: { focusin: e.onEnterAnchor, focusout: e.onLeaveAnchor, mouseenter: e.onEnterAnchor, mouseleave: e.onLeaveAnchor, keydown: function(i) {
355
+ return !i.type.indexOf("key") && e._k(i.keyCode, "esc", 27, i.key, ["Esc", "Escape"]) ? null : e.onLeaveAnchor.apply(null, arguments);
356
356
  } } }, [e._t("anchor")], 2), n("div", e._g({ ref: "content", class: [
357
357
  // eslint-disable-next-line vue/no-restricted-class
358
358
  "d-tooltip",
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","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\"\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 // eslint-disable-next-line vue/no-restricted-class\n 'd-tooltip',\n {\n [ TOOLTIP_KIND_MODIFIERS.inverted ]: inverted,\n },\n contentClass,\n ]\"\n v-on=\"$listeners\"\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 } 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 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 */\n externalAnchor: {\n type: String,\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 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 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) 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) {\n await flushPromises();\n this.addExternalAnchorEventListeners();\n }\n },\n\n beforeDestroy () {\n this.externalAnchor && 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 (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 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) {\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"],"names":["_sfc_main","getUniqueString","placement","TOOLTIP_DIRECTIONS","sticky","TOOLTIP_STICKY_VALUES","appendTo","POPOVER_APPEND_TO_VALUES","TOOLTIP_KIND_MODIFIERS","TOOLTIP_DELAY_MS","tooltipInstance","getPopperOptions","getAnchor","show","value","createTippy","flushPromises","_a","_b","e","callingMethod","listener","event"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.js","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\"\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 // eslint-disable-next-line vue/no-restricted-class\n 'd-tooltip',\n {\n [ TOOLTIP_KIND_MODIFIERS.inverted ]: inverted,\n },\n contentClass,\n ]\"\n v-on=\"$listeners\"\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 } 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 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 */\n externalAnchor: {\n type: String,\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 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 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) {\n await flushPromises();\n this.addExternalAnchorEventListeners();\n }\n },\n\n beforeDestroy () {\n this.externalAnchor && 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 (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 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"],"names":["_sfc_main","getUniqueString","placement","TOOLTIP_DIRECTIONS","sticky","TOOLTIP_STICKY_VALUES","appendTo","POPOVER_APPEND_TO_VALUES","TOOLTIP_KIND_MODIFIERS","TOOLTIP_DELAY_MS","tooltipInstance","getPopperOptions","getAnchor","show","value","createTippy","flushPromises","_a","_b","e","callingMethod","listener","event"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("../../common/utils/index.cjs"),p=require("../tooltip/tooltip.cjs"),v=require("../tooltip/tooltip-constants.cjs"),n={name:"dt-tooltip-directive",install(s){const r=document.createElement("div");document.body.appendChild(r);const d="top",a=new s({name:"DtTooltipDirectiveApp",components:{DtTooltip:p.default},data(){return{tooltips:[]}},methods:{addOrUpdateTooltip(e,t){const o=this.tooltips.findIndex(i=>i.id===e);o!==-1?this.tooltips.splice(o,1,{id:e,...t}):this.tooltips.push({id:e,...t})},removeTooltip(e){this.tooltips=this.tooltips.filter(t=>t.id!==e)}},render(e){return e("div",{domProps:{id:"dt-tooltip-directive-app"}},[this.tooltips.map(({id:t,...o})=>e(p.default,{key:t,props:{...o,sticky:o.sticky!==void 0?o.sticky:!0,delay:o.delay!==void 0?o.delay:process.env.NODE_ENV!=="test",externalAnchor:`[data-dt-tooltip-id="${t}"]`}}))])}});a.$mount(r),s.directive("dt-tooltip",{bind(e,t){u(e,t)},update(e,t){t.value!==t.oldValue&&u(e,t)},unbind(e){a.removeTooltip(e.getAttribute("data-dt-tooltip-id"))}});function u(e,t){if(t.value===null||t.value===void 0){const l=e.getAttribute("data-dt-tooltip-id");l&&a.removeTooltip(l);return}const o=e.getAttribute("data-dt-tooltip-id")||c.getUniqueString();let i;if(typeof t.value=="string")i={message:t.value,placement:t.arg||d};else if(typeof t.value=="object"&&t.value!==null)i={placement:t.arg||t.value.placement||d,...t.value};else{console.error("DtTooltipDirective: binding value must be string, object, null or undefined");return}Object.keys(t.modifiers).forEach(l=>{switch(l){case"inverted":i.inverted=!0;break;case"no-delay":i.delay=!1;break;case"no-transition":i.transition=!1;break;default:v.TOOLTIP_DIRECTIONS.includes(l)&&(i.placement=l);break}}),e.setAttribute("data-dt-tooltip-id",o),a.addOrUpdateTooltip(o,i)}}};exports.DtTooltipDirective=n;exports.default=n;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("../../common/utils/index.cjs"),v=require("deep-equal"),p=require("../tooltip/tooltip.cjs"),f=require("../tooltip/tooltip-constants.cjs"),n={name:"dt-tooltip-directive",install(r){const s=document.createElement("div");document.body.appendChild(s);const d="top",a=new r({name:"DtTooltipDirectiveApp",components:{DtTooltip:p.default},data(){return{tooltips:[]}},methods:{addOrUpdateTooltip(e,t){const o=this.tooltips.findIndex(i=>i.id===e);o!==-1?this.tooltips.splice(o,1,{id:e,...t}):this.tooltips.push({id:e,...t})},removeTooltip(e){this.tooltips=this.tooltips.filter(t=>t.id!==e)}},render(e){return e("div",{domProps:{id:"dt-tooltip-directive-app"}},[this.tooltips.map(({id:t,...o})=>e(p.default,{key:t,props:{...o,sticky:o.sticky!==void 0?o.sticky:!0,delay:o.delay!==void 0?o.delay:process.env.NODE_ENV!=="test",externalAnchor:`[data-dt-tooltip-id="${t}"]`}}))])}});a.$mount(s),r.directive("dt-tooltip",{bind(e,t){u(e,t)},update(e,t){v(t.value,t.oldValue)||u(e,t)},unbind(e){a.removeTooltip(e.getAttribute("data-dt-tooltip-id"))}});function u(e,t){if(t.value===null||t.value===void 0){const l=e.getAttribute("data-dt-tooltip-id");l&&a.removeTooltip(l);return}const o=e.getAttribute("data-dt-tooltip-id")||c.getUniqueString();let i;if(typeof t.value=="string")i={message:t.value,placement:t.arg||d};else if(typeof t.value=="object"&&t.value!==null)i={placement:t.arg||t.value.placement||d,...t.value};else{console.error("DtTooltipDirective: binding value must be string, object, null or undefined");return}Object.keys(t.modifiers).forEach(l=>{switch(l){case"inverted":i.inverted=!0;break;case"no-delay":i.delay=!1;break;case"no-transition":i.transition=!1;break;default:f.TOOLTIP_DIRECTIONS.includes(l)&&(i.placement=l);break}}),e.setAttribute("data-dt-tooltip-id",o),a.addOrUpdateTooltip(o,i)}}};exports.DtTooltipDirective=n;exports.default=n;
2
2
  //# sourceMappingURL=tooltip.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.cjs","sources":["../../../directives/tooltip_directive/tooltip.js"],"sourcesContent":["import { DtTooltip, TOOLTIP_DIRECTIONS } from '@/components/tooltip';\nimport { getUniqueString } from '@/common/utils';\n\nexport const DtTooltipDirective = {\n name: 'dt-tooltip-directive',\n install (Vue) {\n const mountPoint = document.createElement('div');\n document.body.appendChild(mountPoint);\n\n const DEFAULT_PLACEMENT = 'top';\n const DtTooltipDirectiveApp = new Vue({\n name: 'DtTooltipDirectiveApp',\n components: { DtTooltip },\n data () {\n return {\n tooltips: [],\n };\n },\n\n methods: {\n addOrUpdateTooltip (id, tooltipConfig) {\n const index = this.tooltips.findIndex(tooltip => tooltip.id === id);\n if (index !== -1) {\n // Update existing tooltip\n this.tooltips.splice(index, 1, { id, ...tooltipConfig });\n } else {\n // Add new tooltip\n this.tooltips.push({ id, ...tooltipConfig });\n }\n },\n\n removeTooltip (id) {\n this.tooltips = this.tooltips.filter(tooltip => tooltip.id !== id);\n },\n },\n\n render (h) {\n return h('div',\n {\n domProps: { id: 'dt-tooltip-directive-app' },\n },\n [\n this.tooltips.map(({ id, ...tooltipProps }) => {\n return h(DtTooltip, {\n key: id,\n props: {\n ...tooltipProps,\n sticky: tooltipProps.sticky !== undefined ? tooltipProps.sticky : true,\n /**\n * Set the delay to false when running tests only.\n */\n delay: tooltipProps.delay !== undefined ? tooltipProps.delay : (process.env.NODE_ENV !== 'test'),\n externalAnchor: `[data-dt-tooltip-id=\"${id}\"]`,\n },\n });\n }),\n ],\n );\n },\n });\n\n DtTooltipDirectiveApp.$mount(mountPoint);\n\n Vue.directive('dt-tooltip', {\n bind (anchor, binding) {\n // Initial tooltip setup\n setupTooltip(anchor, binding);\n },\n update (anchor, binding) {\n // Update tooltip on binding value change\n if (binding.value !== binding.oldValue) {\n setupTooltip(anchor, binding);\n }\n },\n unbind (anchor) {\n DtTooltipDirectiveApp.removeTooltip(anchor.getAttribute('data-dt-tooltip-id'));\n },\n });\n\n function setupTooltip (anchor, binding) {\n if (binding.value === null || binding.value === undefined) {\n const tooltipId = anchor.getAttribute('data-dt-tooltip-id');\n if (tooltipId) {\n DtTooltipDirectiveApp.removeTooltip(tooltipId);\n }\n return;\n }\n\n const tooltipId = anchor.getAttribute('data-dt-tooltip-id') || getUniqueString();\n\n let tooltipConfig;\n if (typeof binding.value === 'string') {\n tooltipConfig = {\n message: binding.value,\n placement: binding.arg || DEFAULT_PLACEMENT,\n };\n } else if (typeof binding.value === 'object' && binding.value !== null) {\n tooltipConfig = {\n placement: binding.arg || binding.value.placement || DEFAULT_PLACEMENT,\n ...binding.value,\n };\n } else {\n console.error('DtTooltipDirective: binding value must be string, object, null or undefined');\n return;\n }\n\n Object.keys(binding.modifiers).forEach(modifier => {\n switch (modifier) {\n case 'inverted':\n tooltipConfig.inverted = true;\n break;\n case 'no-delay':\n tooltipConfig.delay = false;\n break;\n case 'no-transition':\n tooltipConfig.transition = false;\n break;\n default:\n if (TOOLTIP_DIRECTIONS.includes(modifier)) {\n tooltipConfig.placement = modifier;\n }\n break;\n }\n });\n\n anchor.setAttribute('data-dt-tooltip-id', tooltipId);\n DtTooltipDirectiveApp.addOrUpdateTooltip(tooltipId, tooltipConfig);\n }\n },\n};\n\nexport default DtTooltipDirective;\n"],"names":["DtTooltipDirective","Vue","mountPoint","DEFAULT_PLACEMENT","DtTooltipDirectiveApp","DtTooltip","id","tooltipConfig","index","tooltip","h","tooltipProps","anchor","binding","setupTooltip","tooltipId","getUniqueString","modifier","TOOLTIP_DIRECTIONS"],"mappings":"8OAGaA,EAAqB,CAChC,KAAM,uBACN,QAASC,EAAK,CACZ,MAAMC,EAAa,SAAS,cAAc,KAAK,EAC/C,SAAS,KAAK,YAAYA,CAAU,EAEpC,MAAMC,EAAoB,MACpBC,EAAwB,IAAIH,EAAI,CACpC,KAAM,wBACN,WAAY,CAAA,UAAEI,EAAAA,OAAS,EACvB,MAAQ,CACN,MAAO,CACL,SAAU,CAAA,CACpB,CACM,EAEA,QAAS,CACP,mBAAoBC,EAAIC,EAAe,CACrC,MAAMC,EAAQ,KAAK,SAAS,UAAUC,GAAWA,EAAQ,KAAOH,CAAE,EAC9DE,IAAU,GAEZ,KAAK,SAAS,OAAOA,EAAO,EAAG,CAAE,GAAAF,EAAI,GAAGC,EAAe,EAGvD,KAAK,SAAS,KAAK,CAAE,GAAAD,EAAI,GAAGC,CAAa,CAAE,CAE/C,EAEA,cAAeD,EAAI,CACjB,KAAK,SAAW,KAAK,SAAS,OAAOG,GAAWA,EAAQ,KAAOH,CAAE,CACnE,CACR,EAEM,OAAQI,EAAG,CACT,OAAOA,EAAE,MACP,CACE,SAAU,CAAE,GAAI,0BAA0B,CACtD,EACU,CACE,KAAK,SAAS,IAAI,CAAC,CAAE,GAAAJ,EAAI,GAAGK,KACnBD,EAAEL,EAAAA,QAAW,CAClB,IAAKC,EACL,MAAO,CACL,GAAGK,EACH,OAAQA,EAAa,SAAW,OAAYA,EAAa,OAAS,GAIlE,MAAOA,EAAa,QAAU,OAAYA,EAAa,MAAS,QAAQ,IAAI,WAAa,OACzF,eAAgB,wBAAwBL,CAAE,IAC5D,CACA,CAAe,CACF,CACb,CACA,CACM,CACN,CAAK,EAEDF,EAAsB,OAAOF,CAAU,EAEvCD,EAAI,UAAU,aAAc,CAC1B,KAAMW,EAAQC,EAAS,CAErBC,EAAaF,EAAQC,CAAO,CAC9B,EACA,OAAQD,EAAQC,EAAS,CAEnBA,EAAQ,QAAUA,EAAQ,UAC5BC,EAAaF,EAAQC,CAAO,CAEhC,EACA,OAAQD,EAAQ,CACdR,EAAsB,cAAcQ,EAAO,aAAa,oBAAoB,CAAC,CAC/E,CACN,CAAK,EAED,SAASE,EAAcF,EAAQC,EAAS,CACtC,GAAIA,EAAQ,QAAU,MAAQA,EAAQ,QAAU,OAAW,CACzD,MAAME,EAAYH,EAAO,aAAa,oBAAoB,EACtDG,GACFX,EAAsB,cAAcW,CAAS,EAE/C,MACF,CAEA,MAAMA,EAAYH,EAAO,aAAa,oBAAoB,GAAKI,EAAAA,gBAAe,EAE9E,IAAIT,EACJ,GAAI,OAAOM,EAAQ,OAAU,SAC3BN,EAAgB,CACd,QAASM,EAAQ,MACjB,UAAWA,EAAQ,KAAOV,CACpC,UACiB,OAAOU,EAAQ,OAAU,UAAYA,EAAQ,QAAU,KAChEN,EAAgB,CACd,UAAWM,EAAQ,KAAOA,EAAQ,MAAM,WAAaV,EACrD,GAAGU,EAAQ,KACrB,MACa,CACL,QAAQ,MAAM,6EAA6E,EAC3F,MACF,CAEA,OAAO,KAAKA,EAAQ,SAAS,EAAE,QAAQI,GAAY,CACjD,OAAQA,EAAQ,CACd,IAAK,WACHV,EAAc,SAAW,GACzB,MACF,IAAK,WACHA,EAAc,MAAQ,GACtB,MACF,IAAK,gBACHA,EAAc,WAAa,GAC3B,MACF,QACMW,EAAAA,mBAAmB,SAASD,CAAQ,IACtCV,EAAc,UAAYU,GAE5B,KACZ,CACM,CAAC,EAEDL,EAAO,aAAa,qBAAsBG,CAAS,EACnDX,EAAsB,mBAAmBW,EAAWR,CAAa,CACnE,CACF,CACF"}
1
+ {"version":3,"file":"tooltip.cjs","sources":["../../../directives/tooltip_directive/tooltip.js"],"sourcesContent":["import { DtTooltip, TOOLTIP_DIRECTIONS } from '@/components/tooltip';\nimport { getUniqueString } from '@/common/utils';\nimport deepEqual from 'deep-equal';\n\nexport const DtTooltipDirective = {\n name: 'dt-tooltip-directive',\n install (Vue) {\n const mountPoint = document.createElement('div');\n document.body.appendChild(mountPoint);\n\n const DEFAULT_PLACEMENT = 'top';\n const DtTooltipDirectiveApp = new Vue({\n name: 'DtTooltipDirectiveApp',\n components: { DtTooltip },\n data () {\n return {\n tooltips: [],\n };\n },\n\n methods: {\n addOrUpdateTooltip (id, tooltipConfig) {\n const index = this.tooltips.findIndex(tooltip => tooltip.id === id);\n if (index !== -1) {\n // Update existing tooltip\n this.tooltips.splice(index, 1, { id, ...tooltipConfig });\n } else {\n // Add new tooltip\n this.tooltips.push({ id, ...tooltipConfig });\n }\n },\n\n removeTooltip (id) {\n this.tooltips = this.tooltips.filter(tooltip => tooltip.id !== id);\n },\n },\n\n render (h) {\n return h('div',\n {\n domProps: { id: 'dt-tooltip-directive-app' },\n },\n [\n this.tooltips.map(({ id, ...tooltipProps }) => {\n return h(DtTooltip, {\n key: id,\n props: {\n ...tooltipProps,\n sticky: tooltipProps.sticky !== undefined ? tooltipProps.sticky : true,\n /**\n * Set the delay to false when running tests only.\n */\n delay: tooltipProps.delay !== undefined ? tooltipProps.delay : (process.env.NODE_ENV !== 'test'),\n externalAnchor: `[data-dt-tooltip-id=\"${id}\"]`,\n },\n });\n }),\n ],\n );\n },\n });\n\n DtTooltipDirectiveApp.$mount(mountPoint);\n\n Vue.directive('dt-tooltip', {\n bind (anchor, binding) {\n // Initial tooltip setup\n setupTooltip(anchor, binding);\n },\n update (anchor, binding) {\n // Update tooltip on binding value change\n // Use deep equality check to prevent infinite loops when objects are passed\n if (!deepEqual(binding.value, binding.oldValue)) {\n setupTooltip(anchor, binding);\n }\n },\n unbind (anchor) {\n DtTooltipDirectiveApp.removeTooltip(anchor.getAttribute('data-dt-tooltip-id'));\n },\n });\n\n function setupTooltip (anchor, binding) {\n if (binding.value === null || binding.value === undefined) {\n const tooltipId = anchor.getAttribute('data-dt-tooltip-id');\n if (tooltipId) {\n DtTooltipDirectiveApp.removeTooltip(tooltipId);\n }\n return;\n }\n\n const tooltipId = anchor.getAttribute('data-dt-tooltip-id') || getUniqueString();\n\n let tooltipConfig;\n if (typeof binding.value === 'string') {\n tooltipConfig = {\n message: binding.value,\n placement: binding.arg || DEFAULT_PLACEMENT,\n };\n } else if (typeof binding.value === 'object' && binding.value !== null) {\n tooltipConfig = {\n placement: binding.arg || binding.value.placement || DEFAULT_PLACEMENT,\n ...binding.value,\n };\n } else {\n console.error('DtTooltipDirective: binding value must be string, object, null or undefined');\n return;\n }\n\n Object.keys(binding.modifiers).forEach(modifier => {\n switch (modifier) {\n case 'inverted':\n tooltipConfig.inverted = true;\n break;\n case 'no-delay':\n tooltipConfig.delay = false;\n break;\n case 'no-transition':\n tooltipConfig.transition = false;\n break;\n default:\n if (TOOLTIP_DIRECTIONS.includes(modifier)) {\n tooltipConfig.placement = modifier;\n }\n break;\n }\n });\n\n anchor.setAttribute('data-dt-tooltip-id', tooltipId);\n DtTooltipDirectiveApp.addOrUpdateTooltip(tooltipId, tooltipConfig);\n }\n },\n};\n\nexport default DtTooltipDirective;\n"],"names":["DtTooltipDirective","Vue","mountPoint","DEFAULT_PLACEMENT","DtTooltipDirectiveApp","DtTooltip","id","tooltipConfig","index","tooltip","h","tooltipProps","anchor","binding","setupTooltip","deepEqual","tooltipId","getUniqueString","modifier","TOOLTIP_DIRECTIONS"],"mappings":"sQAIaA,EAAqB,CAChC,KAAM,uBACN,QAASC,EAAK,CACZ,MAAMC,EAAa,SAAS,cAAc,KAAK,EAC/C,SAAS,KAAK,YAAYA,CAAU,EAEpC,MAAMC,EAAoB,MACpBC,EAAwB,IAAIH,EAAI,CACpC,KAAM,wBACN,WAAY,CAAA,UAAEI,EAAAA,OAAS,EACvB,MAAQ,CACN,MAAO,CACL,SAAU,CAAA,CACpB,CACM,EAEA,QAAS,CACP,mBAAoBC,EAAIC,EAAe,CACrC,MAAMC,EAAQ,KAAK,SAAS,UAAUC,GAAWA,EAAQ,KAAOH,CAAE,EAC9DE,IAAU,GAEZ,KAAK,SAAS,OAAOA,EAAO,EAAG,CAAE,GAAAF,EAAI,GAAGC,EAAe,EAGvD,KAAK,SAAS,KAAK,CAAE,GAAAD,EAAI,GAAGC,CAAa,CAAE,CAE/C,EAEA,cAAeD,EAAI,CACjB,KAAK,SAAW,KAAK,SAAS,OAAOG,GAAWA,EAAQ,KAAOH,CAAE,CACnE,CACR,EAEM,OAAQI,EAAG,CACT,OAAOA,EAAE,MACP,CACE,SAAU,CAAE,GAAI,0BAA0B,CACtD,EACU,CACE,KAAK,SAAS,IAAI,CAAC,CAAE,GAAAJ,EAAI,GAAGK,KACnBD,EAAEL,EAAAA,QAAW,CAClB,IAAKC,EACL,MAAO,CACL,GAAGK,EACH,OAAQA,EAAa,SAAW,OAAYA,EAAa,OAAS,GAIlE,MAAOA,EAAa,QAAU,OAAYA,EAAa,MAAS,QAAQ,IAAI,WAAa,OACzF,eAAgB,wBAAwBL,CAAE,IAC5D,CACA,CAAe,CACF,CACb,CACA,CACM,CACN,CAAK,EAEDF,EAAsB,OAAOF,CAAU,EAEvCD,EAAI,UAAU,aAAc,CAC1B,KAAMW,EAAQC,EAAS,CAErBC,EAAaF,EAAQC,CAAO,CAC9B,EACA,OAAQD,EAAQC,EAAS,CAGlBE,EAAUF,EAAQ,MAAOA,EAAQ,QAAQ,GAC5CC,EAAaF,EAAQC,CAAO,CAEhC,EACA,OAAQD,EAAQ,CACdR,EAAsB,cAAcQ,EAAO,aAAa,oBAAoB,CAAC,CAC/E,CACN,CAAK,EAED,SAASE,EAAcF,EAAQC,EAAS,CACtC,GAAIA,EAAQ,QAAU,MAAQA,EAAQ,QAAU,OAAW,CACzD,MAAMG,EAAYJ,EAAO,aAAa,oBAAoB,EACtDI,GACFZ,EAAsB,cAAcY,CAAS,EAE/C,MACF,CAEA,MAAMA,EAAYJ,EAAO,aAAa,oBAAoB,GAAKK,EAAAA,gBAAe,EAE9E,IAAIV,EACJ,GAAI,OAAOM,EAAQ,OAAU,SAC3BN,EAAgB,CACd,QAASM,EAAQ,MACjB,UAAWA,EAAQ,KAAOV,CACpC,UACiB,OAAOU,EAAQ,OAAU,UAAYA,EAAQ,QAAU,KAChEN,EAAgB,CACd,UAAWM,EAAQ,KAAOA,EAAQ,MAAM,WAAaV,EACrD,GAAGU,EAAQ,KACrB,MACa,CACL,QAAQ,MAAM,6EAA6E,EAC3F,MACF,CAEA,OAAO,KAAKA,EAAQ,SAAS,EAAE,QAAQK,GAAY,CACjD,OAAQA,EAAQ,CACd,IAAK,WACHX,EAAc,SAAW,GACzB,MACF,IAAK,WACHA,EAAc,MAAQ,GACtB,MACF,IAAK,gBACHA,EAAc,WAAa,GAC3B,MACF,QACMY,EAAAA,mBAAmB,SAASD,CAAQ,IACtCX,EAAc,UAAYW,GAE5B,KACZ,CACM,CAAC,EAEDN,EAAO,aAAa,qBAAsBI,CAAS,EACnDZ,EAAsB,mBAAmBY,EAAWT,CAAa,CACnE,CACF,CACF"}
@@ -1,14 +1,15 @@
1
- import { getUniqueString as u } from "../../common/utils/index.js";
2
- import n from "../tooltip/tooltip.js";
3
- import { TOOLTIP_DIRECTIONS as c } from "../tooltip/tooltip-constants.js";
4
- const T = {
1
+ import { getUniqueString as n } from "../../common/utils/index.js";
2
+ import c from "deep-equal";
3
+ import u from "../tooltip/tooltip.js";
4
+ import { TOOLTIP_DIRECTIONS as m } from "../tooltip/tooltip-constants.js";
5
+ const D = {
5
6
  name: "dt-tooltip-directive",
6
7
  install(r) {
7
8
  const d = document.createElement("div");
8
9
  document.body.appendChild(d);
9
- const s = "top", a = new r({
10
+ const p = "top", a = new r({
10
11
  name: "DtTooltipDirectiveApp",
11
- components: { DtTooltip: n },
12
+ components: { DtTooltip: u },
12
13
  data() {
13
14
  return {
14
15
  tooltips: []
@@ -30,7 +31,7 @@ const T = {
30
31
  domProps: { id: "dt-tooltip-directive-app" }
31
32
  },
32
33
  [
33
- this.tooltips.map(({ id: t, ...o }) => e(n, {
34
+ this.tooltips.map(({ id: t, ...o }) => e(u, {
34
35
  key: t,
35
36
  props: {
36
37
  ...o,
@@ -48,31 +49,31 @@ const T = {
48
49
  });
49
50
  a.$mount(d), r.directive("dt-tooltip", {
50
51
  bind(e, t) {
51
- p(e, t);
52
+ s(e, t);
52
53
  },
53
54
  update(e, t) {
54
- t.value !== t.oldValue && p(e, t);
55
+ c(t.value, t.oldValue) || s(e, t);
55
56
  },
56
57
  unbind(e) {
57
58
  a.removeTooltip(e.getAttribute("data-dt-tooltip-id"));
58
59
  }
59
60
  });
60
- function p(e, t) {
61
+ function s(e, t) {
61
62
  if (t.value === null || t.value === void 0) {
62
63
  const l = e.getAttribute("data-dt-tooltip-id");
63
64
  l && a.removeTooltip(l);
64
65
  return;
65
66
  }
66
- const o = e.getAttribute("data-dt-tooltip-id") || u();
67
+ const o = e.getAttribute("data-dt-tooltip-id") || n();
67
68
  let i;
68
69
  if (typeof t.value == "string")
69
70
  i = {
70
71
  message: t.value,
71
- placement: t.arg || s
72
+ placement: t.arg || p
72
73
  };
73
74
  else if (typeof t.value == "object" && t.value !== null)
74
75
  i = {
75
- placement: t.arg || t.value.placement || s,
76
+ placement: t.arg || t.value.placement || p,
76
77
  ...t.value
77
78
  };
78
79
  else {
@@ -91,7 +92,7 @@ const T = {
91
92
  i.transition = !1;
92
93
  break;
93
94
  default:
94
- c.includes(l) && (i.placement = l);
95
+ m.includes(l) && (i.placement = l);
95
96
  break;
96
97
  }
97
98
  }), e.setAttribute("data-dt-tooltip-id", o), a.addOrUpdateTooltip(o, i);
@@ -99,7 +100,7 @@ const T = {
99
100
  }
100
101
  };
101
102
  export {
102
- T as DtTooltipDirective,
103
- T as default
103
+ D as DtTooltipDirective,
104
+ D as default
104
105
  };
105
106
  //# sourceMappingURL=tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sources":["../../../directives/tooltip_directive/tooltip.js"],"sourcesContent":["import { DtTooltip, TOOLTIP_DIRECTIONS } from '@/components/tooltip';\nimport { getUniqueString } from '@/common/utils';\n\nexport const DtTooltipDirective = {\n name: 'dt-tooltip-directive',\n install (Vue) {\n const mountPoint = document.createElement('div');\n document.body.appendChild(mountPoint);\n\n const DEFAULT_PLACEMENT = 'top';\n const DtTooltipDirectiveApp = new Vue({\n name: 'DtTooltipDirectiveApp',\n components: { DtTooltip },\n data () {\n return {\n tooltips: [],\n };\n },\n\n methods: {\n addOrUpdateTooltip (id, tooltipConfig) {\n const index = this.tooltips.findIndex(tooltip => tooltip.id === id);\n if (index !== -1) {\n // Update existing tooltip\n this.tooltips.splice(index, 1, { id, ...tooltipConfig });\n } else {\n // Add new tooltip\n this.tooltips.push({ id, ...tooltipConfig });\n }\n },\n\n removeTooltip (id) {\n this.tooltips = this.tooltips.filter(tooltip => tooltip.id !== id);\n },\n },\n\n render (h) {\n return h('div',\n {\n domProps: { id: 'dt-tooltip-directive-app' },\n },\n [\n this.tooltips.map(({ id, ...tooltipProps }) => {\n return h(DtTooltip, {\n key: id,\n props: {\n ...tooltipProps,\n sticky: tooltipProps.sticky !== undefined ? tooltipProps.sticky : true,\n /**\n * Set the delay to false when running tests only.\n */\n delay: tooltipProps.delay !== undefined ? tooltipProps.delay : (process.env.NODE_ENV !== 'test'),\n externalAnchor: `[data-dt-tooltip-id=\"${id}\"]`,\n },\n });\n }),\n ],\n );\n },\n });\n\n DtTooltipDirectiveApp.$mount(mountPoint);\n\n Vue.directive('dt-tooltip', {\n bind (anchor, binding) {\n // Initial tooltip setup\n setupTooltip(anchor, binding);\n },\n update (anchor, binding) {\n // Update tooltip on binding value change\n if (binding.value !== binding.oldValue) {\n setupTooltip(anchor, binding);\n }\n },\n unbind (anchor) {\n DtTooltipDirectiveApp.removeTooltip(anchor.getAttribute('data-dt-tooltip-id'));\n },\n });\n\n function setupTooltip (anchor, binding) {\n if (binding.value === null || binding.value === undefined) {\n const tooltipId = anchor.getAttribute('data-dt-tooltip-id');\n if (tooltipId) {\n DtTooltipDirectiveApp.removeTooltip(tooltipId);\n }\n return;\n }\n\n const tooltipId = anchor.getAttribute('data-dt-tooltip-id') || getUniqueString();\n\n let tooltipConfig;\n if (typeof binding.value === 'string') {\n tooltipConfig = {\n message: binding.value,\n placement: binding.arg || DEFAULT_PLACEMENT,\n };\n } else if (typeof binding.value === 'object' && binding.value !== null) {\n tooltipConfig = {\n placement: binding.arg || binding.value.placement || DEFAULT_PLACEMENT,\n ...binding.value,\n };\n } else {\n console.error('DtTooltipDirective: binding value must be string, object, null or undefined');\n return;\n }\n\n Object.keys(binding.modifiers).forEach(modifier => {\n switch (modifier) {\n case 'inverted':\n tooltipConfig.inverted = true;\n break;\n case 'no-delay':\n tooltipConfig.delay = false;\n break;\n case 'no-transition':\n tooltipConfig.transition = false;\n break;\n default:\n if (TOOLTIP_DIRECTIONS.includes(modifier)) {\n tooltipConfig.placement = modifier;\n }\n break;\n }\n });\n\n anchor.setAttribute('data-dt-tooltip-id', tooltipId);\n DtTooltipDirectiveApp.addOrUpdateTooltip(tooltipId, tooltipConfig);\n }\n },\n};\n\nexport default DtTooltipDirective;\n"],"names":["DtTooltipDirective","Vue","mountPoint","DEFAULT_PLACEMENT","DtTooltipDirectiveApp","DtTooltip","id","tooltipConfig","index","tooltip","h","tooltipProps","anchor","binding","setupTooltip","tooltipId","getUniqueString","modifier","TOOLTIP_DIRECTIONS"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.js","sources":["../../../directives/tooltip_directive/tooltip.js"],"sourcesContent":["import { DtTooltip, TOOLTIP_DIRECTIONS } from '@/components/tooltip';\nimport { getUniqueString } from '@/common/utils';\nimport deepEqual from 'deep-equal';\n\nexport const DtTooltipDirective = {\n name: 'dt-tooltip-directive',\n install (Vue) {\n const mountPoint = document.createElement('div');\n document.body.appendChild(mountPoint);\n\n const DEFAULT_PLACEMENT = 'top';\n const DtTooltipDirectiveApp = new Vue({\n name: 'DtTooltipDirectiveApp',\n components: { DtTooltip },\n data () {\n return {\n tooltips: [],\n };\n },\n\n methods: {\n addOrUpdateTooltip (id, tooltipConfig) {\n const index = this.tooltips.findIndex(tooltip => tooltip.id === id);\n if (index !== -1) {\n // Update existing tooltip\n this.tooltips.splice(index, 1, { id, ...tooltipConfig });\n } else {\n // Add new tooltip\n this.tooltips.push({ id, ...tooltipConfig });\n }\n },\n\n removeTooltip (id) {\n this.tooltips = this.tooltips.filter(tooltip => tooltip.id !== id);\n },\n },\n\n render (h) {\n return h('div',\n {\n domProps: { id: 'dt-tooltip-directive-app' },\n },\n [\n this.tooltips.map(({ id, ...tooltipProps }) => {\n return h(DtTooltip, {\n key: id,\n props: {\n ...tooltipProps,\n sticky: tooltipProps.sticky !== undefined ? tooltipProps.sticky : true,\n /**\n * Set the delay to false when running tests only.\n */\n delay: tooltipProps.delay !== undefined ? tooltipProps.delay : (process.env.NODE_ENV !== 'test'),\n externalAnchor: `[data-dt-tooltip-id=\"${id}\"]`,\n },\n });\n }),\n ],\n );\n },\n });\n\n DtTooltipDirectiveApp.$mount(mountPoint);\n\n Vue.directive('dt-tooltip', {\n bind (anchor, binding) {\n // Initial tooltip setup\n setupTooltip(anchor, binding);\n },\n update (anchor, binding) {\n // Update tooltip on binding value change\n // Use deep equality check to prevent infinite loops when objects are passed\n if (!deepEqual(binding.value, binding.oldValue)) {\n setupTooltip(anchor, binding);\n }\n },\n unbind (anchor) {\n DtTooltipDirectiveApp.removeTooltip(anchor.getAttribute('data-dt-tooltip-id'));\n },\n });\n\n function setupTooltip (anchor, binding) {\n if (binding.value === null || binding.value === undefined) {\n const tooltipId = anchor.getAttribute('data-dt-tooltip-id');\n if (tooltipId) {\n DtTooltipDirectiveApp.removeTooltip(tooltipId);\n }\n return;\n }\n\n const tooltipId = anchor.getAttribute('data-dt-tooltip-id') || getUniqueString();\n\n let tooltipConfig;\n if (typeof binding.value === 'string') {\n tooltipConfig = {\n message: binding.value,\n placement: binding.arg || DEFAULT_PLACEMENT,\n };\n } else if (typeof binding.value === 'object' && binding.value !== null) {\n tooltipConfig = {\n placement: binding.arg || binding.value.placement || DEFAULT_PLACEMENT,\n ...binding.value,\n };\n } else {\n console.error('DtTooltipDirective: binding value must be string, object, null or undefined');\n return;\n }\n\n Object.keys(binding.modifiers).forEach(modifier => {\n switch (modifier) {\n case 'inverted':\n tooltipConfig.inverted = true;\n break;\n case 'no-delay':\n tooltipConfig.delay = false;\n break;\n case 'no-transition':\n tooltipConfig.transition = false;\n break;\n default:\n if (TOOLTIP_DIRECTIONS.includes(modifier)) {\n tooltipConfig.placement = modifier;\n }\n break;\n }\n });\n\n anchor.setAttribute('data-dt-tooltip-id', tooltipId);\n DtTooltipDirectiveApp.addOrUpdateTooltip(tooltipId, tooltipConfig);\n }\n },\n};\n\nexport default DtTooltipDirective;\n"],"names":["DtTooltipDirective","Vue","mountPoint","DEFAULT_PLACEMENT","DtTooltipDirectiveApp","DtTooltip","id","tooltipConfig","index","tooltip","h","tooltipProps","anchor","binding","setupTooltip","deepEqual","tooltipId","getUniqueString","modifier","TOOLTIP_DIRECTIONS"],"mappings":"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"}
@@ -86,8 +86,6 @@ DIALTONE_EMOJI_PICKER_TABSET_CUSTOM_LABEL = Custom
86
86
 
87
87
  DIALTONE_FEED_ITEM_PILL_ARIA_LABEL = Click to expand
88
88
 
89
- DIALTONE_FILTER_PILL_CLEAR_BUTTON_LABEL = Clear filter
90
-
91
89
  DIALTONE_GENERAL_ROW_ACTIVE_VOICE_CHAT_TEXT = Active voice chat
92
90
  DIALTONE_GENERAL_ROW_CALL_BUTTON_TOOLTIP = Call
93
91
  DIALTONE_GENERAL_ROW_DND_TEXT_TOOLTIP = Do not disturb
@@ -1 +1 @@
1
- {"version":3,"file":"en-US.cjs","sources":["../../localization/en-US.ftl?raw"],"sourcesContent":["export default \"# Dialtone\\nDIALTONE_CLOSE_BUTTON = Click to close\\nDIALTONE_BREADCRUMBS_ARIA_LABEL = breadcrumbs\\nDIALTONE_LOADING = loading\\nDIALTONE_UNREAD_MESSAGE_COUNT_TEXT =\\n { $unreadCount ->\\n [0] No unread messages\\n [1] 1 unread message\\n *[other] {$unreadCount} unread messages\\n }\\nDIALTONE_UNREAD_MENTION_COUNT_TEXT =\\n { $unreadCount ->\\n [0] No unread mentions\\n [1] 1 unread mention\\n *[other] {$unreadCount} unread mentions\\n }\\nDIALTONE_TYPING_TEXT = Typing\\n\\nDIALTONE_ATTACHMENT_CAROUSEL_CLICK_TO_OPEN_ARIA_LABEL = Click to open\\nDIALTONE_ATTACHMENT_CAROUSEL_PROGRESS_BAR_ARIA_LABEL = Uploading\\nDIALTONE_ATTACHMENT_CAROUSEL_LEFT_ARROW_ARIA_LABEL = Previous\\nDIALTONE_ATTACHMENT_CAROUSEL_RIGHT_ARROW_ARIA_LABEL = Next\\n\\nDIALTONE_CALLBAR_BUTTON_WITH_DROPDOWN_ARROW_BUTTON_ARIA_LABEL = Open dropdown\\nDIALTONE_CALLBAR_BUTTON_WITH_POPOVER_ARROW_BUTTON_ARIA_LABEL = Open popover\\n\\nDIALTONE_CONTACT_CENTERS_ROW_MENU_BUTTON_LABEL = Open menu\\n\\nDIALTONE_DATEPICKER_PREVIOUS_MONTH = Previous month\\nDIALTONE_DATEPICKER_NEXT_MONTH = Next month\\nDIALTONE_DATEPICKER_PREVIOUS_YEAR = Previous year\\nDIALTONE_DATEPICKER_NEXT_YEAR = Next year\\nDIALTONE_DATEPICKER_SELECT_DAY = Select day\\nDIALTONE_DATEPICKER_CHANGE_TO = Change to\\n\\nDIALTONE_EDITOR_CONFIRM_SET_LINK_BUTTON =\\n .title = Confirm\\n .aria-label = Confirm set link\\nDIALTONE_EDITOR_REMOVE_LINK_BUTTON =\\n .title = Remove\\n .aria-label = Remove link\\nDIALTONE_EDITOR_CANCEL_SET_LINK_BUTTON =\\n .title = Cancel\\n .aria-label = Cancel set link\\n\\nDIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL = Template\\nDIALTONE_EDITOR_BOLD_BUTTON_LABEL = Bold\\nDIALTONE_EDITOR_ITALICS_BUTTON_LABEL = Italics\\nDIALTONE_EDITOR_UNDERLINE_BUTTON_LABEL = Underline\\nDIALTONE_EDITOR_STRIKE_BUTTON_LABEL = Strike\\nDIALTONE_EDITOR_ALIGN_LEFT_BUTTON_LABEL = Align Left\\nDIALTONE_EDITOR_ALIGN_CENTER_BUTTON_LABEL = Align Center\\nDIALTONE_EDITOR_ALIGN_RIGHT_BUTTON_LABEL = Align Right\\nDIALTONE_EDITOR_ALIGN_JUSTIFY_BUTTON_LABEL = Align Justify\\nDIALTONE_EDITOR_BULLET_LIST_BUTTON_LABEL = Bullet List\\nDIALTONE_EDITOR_ORDERED_LIST_BUTTON_LABEL = Ordered List\\nDIALTONE_EDITOR_QUOTE_BUTTON_LABEL = Quote\\nDIALTONE_EDITOR_CODE_BUTTON_LABEL = Code\\nDIALTONE_EDITOR_IMAGE_BUTTON_LABEL = Image\\nDIALTONE_EDITOR_LINK_BUTTON_LABEL = Link\\nDIALTONE_EDITOR_ADD_LINK_BUTTON =\\n .title = Add Link\\n .aria-label = Input field to add link\\n\\nDIALTONE_EMOJI_ROW_REACTION_LABEL =\\n { $personCount ->\\n *[other] reacted with { $reaction }\\n [one] reacted with { $reaction }\\n }\\n\\nDIALTONE_EMOJI_PICKER_ADD_EMOJI_LABEL = Add emoji\\nDIALTONE_EMOJI_PICKER_SEARCH_NO_RESULTS_LABEL = No results\\nDIALTONE_EMOJI_PICKER_SEARCH_RESULTS_LABEL = Search results\\nDIALTONE_EMOJI_PICKER_SEARCH_PLACEHOLDER_LABEL = Search...\\nDIALTONE_EMOJI_PICKER_SKIN_SELECTOR_BUTTON_TOOLTIP_LABEL = Change default skin tone\\nDIALTONE_EMOJI_PICKER_TABSET_RECENTLY_USED_LABEL = Most recently used\\nDIALTONE_EMOJI_PICKER_TABSET_SMILEYS_AND_PEOPLE_LABEL = Smileys and people\\nDIALTONE_EMOJI_PICKER_TABSET_NATURE_LABEL = Nature\\nDIALTONE_EMOJI_PICKER_TABSET_FOOD_LABEL = Food\\nDIALTONE_EMOJI_PICKER_TABSET_ACTIVITY_LABEL = Activity\\nDIALTONE_EMOJI_PICKER_TABSET_TRAVEL_LABEL = Travel\\nDIALTONE_EMOJI_PICKER_TABSET_OBJECTS_LABEL = Objects\\nDIALTONE_EMOJI_PICKER_TABSET_SYMBOLS_LABEL = Symbols\\nDIALTONE_EMOJI_PICKER_TABSET_FLAGS_LABEL = Flags\\nDIALTONE_EMOJI_PICKER_TABSET_CUSTOM_LABEL = Custom\\n\\nDIALTONE_FEED_ITEM_PILL_ARIA_LABEL = Click to expand\\n\\nDIALTONE_FILTER_PILL_CLEAR_BUTTON_LABEL = Clear filter\\n\\nDIALTONE_GENERAL_ROW_ACTIVE_VOICE_CHAT_TEXT = Active voice chat\\nDIALTONE_GENERAL_ROW_CALL_BUTTON_TOOLTIP = Call\\nDIALTONE_GENERAL_ROW_DND_TEXT_TOOLTIP = Do not disturb\\n\\nDIALTONE_GROUP_ROW_GROUP_COUNT_TEXT =\\n { $count ->\\n [1] 1 user\\n *[other] {$count} users\\n }\\n\\nDIALTONE_IVR_NODE_MENU_BUTTON_ARIA_LABEL = Open menu\\nDIALTONE_IVR_NODE_PROMPTMENU_ARIA_LABEL = prompt menu node\\nDIALTONE_IVR_NODE_PROMPTCOLLECT_ARIA_LABEL = prompt collect node\\nDIALTONE_IVR_NODE_PROMPTPLAY_ARIA_LABEL = prompt play node\\nDIALTONE_IVR_NODE_GOTOEXPERT_ARIA_LABEL = go to expert node\\nDIALTONE_IVR_NODE_BRANCH_ARIA_LABEL = branch node\\nDIALTONE_IVR_NODE_GOTO_ARIA_LABEL = go to node\\nDIALTONE_IVR_NODE_ASSIGN_ARIA_LABEL = assign node\\nDIALTONE_IVR_NODE_CUSTOMERDATA_ARIA_LABEL = customer data node\\nDIALTONE_IVR_NODE_TRANSFER_ARIA_LABEL = transfer node\\nDIALTONE_IVR_NODE_HANGUP_ARIA_LABEL = hangup node\\n\\nDIALTONE_MESSAGE_INPUT_SEND_BUTTON_ARIA_LABEL = Send\\nDIALTONE_MESSAGE_INPUT_IMAGE_PICKER_BUTTON_ARIA_LABEL = Attach Image\\nDIALTONE_MESSAGE_INPUT_EMOJI_PICKER_BUTTON_ARIA_LABEL = Select Emoji\\nDIALTONE_MESSAGE_INPUT_CANCEL_BUTTON_ARIA_LABEL = Cancel\\nDIALTONE_MESSAGE_INPUT_BOLD_BUTTON_LABEL =\\n .aria-label = Toggle bold on selected text\\n .tooltip-text = Bold\\nDIALTONE_MESSAGE_INPUT_ITALIC_BUTTON_LABEL =\\n .aria-label = Toggle italic on selected text\\n .tooltip-text = Italic\\nDIALTONE_MESSAGE_INPUT_STRIKETHROUGH_BUTTON_LABEL =\\n .aria-label = Toggle strikethrough on selected text\\n .tooltip-text = Strikethrough\\nDIALTONE_MESSAGE_INPUT_BULLET_LIST_BUTTON_LABEL =\\n .aria-label = Create or edit bullet list on selected text\\n .tooltip-text = Bullet list\\nDIALTONE_MESSAGE_INPUT_ORDERED_LIST_BUTTON_LABEL =\\n .aria-label = Create or edit ordered list on selected text\\n .tooltip-text = Ordered list\\nDIALTONE_MESSAGE_INPUT_BLOCK_QUOTE_BUTTON_LABEL =\\n .aria-label = Create or edit block quote on selected text\\n .tooltip-text = Block quote\\nDIALTONE_MESSAGE_INPUT_CODE_BUTTON_LABEL =\\n .aria-label = Create or edit code on selected text\\n .tooltip-text = Code\\nDIALTONE_MESSAGE_INPUT_CODE_BLOCK_BUTTON_LABEL =\\n .aria-label = Create or edit code block on selected text\\n .tooltip-text = Code block\\nDIALTONE_MESSAGE_INPUT_LINK_BUTTON_LABEL =\\n .aria-label = Create or edit link on selected text\\n .tooltip-text = Link\\nDIALTONE_MESSAGE_INPUT_LINK_DIALOG_TITLE = Add a link\\nDIALTONE_MESSAGE_INPUT_LINK_TEXT_LABEL = Text to display (optional)\\nDIALTONE_MESSAGE_INPUT_LINK_LINK_LABEL = Link\\nDIALTONE_MESSAGE_INPUT_LINK_LINK_PLACEHOLDER = e.g. https://www.dialpad.com\\nDIALTONE_MESSAGE_INPUT_LINK_REMOVE_LABEL = Remove\\nDIALTONE_MESSAGE_INPUT_LINK_CANCEL_LABEL = Cancel\\nDIALTONE_MESSAGE_INPUT_LINK_CONFIRM_LABEL = Done\\n\\nDIALTONE_PAGINATION_FIRST_PAGE = First page\\nDIALTONE_PAGINATION_PREVIOUS_PAGE = Previous page\\nDIALTONE_PAGINATION_NEXT_PAGE = Next page\\nDIALTONE_PAGINATION_LAST_PAGE = Last page\\nDIALTONE_PAGINATION_PAGE_NUMBER = Page number {$page}\\n\\nDIALTONE_RICH_TEXT_EDITOR_EDIT_BUTTON_LABEL = Edit\\nDIALTONE_RICH_TEXT_EDITOR_OPEN_LINK_BUTTON_LABEL = Open link\\nDIALTONE_RICH_TEXT_EDITOR_REMOVE_BUTTON_LABEL = Remove\\n\\nDIALTONE_SETTINGS_MENU_DEFAULT_BUTTON_LABEL = Settings\\nDIALTONE_SETTINGS_MENU_UPDATE_BUTTON_LABEL = Update\\n\\nDIALTONE_UNREAD_PILL_MENTIONS_TEXT = Unread mentions\\nDIALTONE_UNREAD_PILL_MESSAGES_TEXT = Unread messages\\n\\n# Storybook only\\nSTORYBOOK_LANGUAGE_ENGLISH = English\\nSTORYBOOK_LANGUAGE_CHINESE = Chinese\\nSTORYBOOK_LANGUAGE_DUTCH = Dutch\\nSTORYBOOK_LANGUAGE_FRENCH = French\\nSTORYBOOK_LANGUAGE_GERMAN = German\\nSTORYBOOK_LANGUAGE_ITALIAN = Italian\\nSTORYBOOK_LANGUAGE_JAPANESE = Japanese\\nSTORYBOOK_LANGUAGE_PORTUGUESE = Portuguese\\nSTORYBOOK_LANGUAGE_RUSSIAN = Russian\\nSTORYBOOK_LANGUAGE_SPANISH = Spanish\\nSTORYBOOK_SET_LANGUAGE = Set language\\nSTORYBOOK_YOU = You\\nSTORYBOOK_REACTION_NAMES_2 = Olivia Chen, Benjamin Carter, Sophia Rodriguez, William Kim & Isabella Garcia\\nSTORYBOOK_REACTION_NAMES_3 = Olivia Chen & { STORYBOOK_YOU }\\n\""],"names":["enUS"],"mappings":"4GAAA,MAAAA,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA"}
1
+ {"version":3,"file":"en-US.cjs","sources":["../../localization/en-US.ftl?raw"],"sourcesContent":["export default \"# Dialtone\\nDIALTONE_CLOSE_BUTTON = Click to close\\nDIALTONE_BREADCRUMBS_ARIA_LABEL = breadcrumbs\\nDIALTONE_LOADING = loading\\nDIALTONE_UNREAD_MESSAGE_COUNT_TEXT =\\n { $unreadCount ->\\n [0] No unread messages\\n [1] 1 unread message\\n *[other] {$unreadCount} unread messages\\n }\\nDIALTONE_UNREAD_MENTION_COUNT_TEXT =\\n { $unreadCount ->\\n [0] No unread mentions\\n [1] 1 unread mention\\n *[other] {$unreadCount} unread mentions\\n }\\nDIALTONE_TYPING_TEXT = Typing\\n\\nDIALTONE_ATTACHMENT_CAROUSEL_CLICK_TO_OPEN_ARIA_LABEL = Click to open\\nDIALTONE_ATTACHMENT_CAROUSEL_PROGRESS_BAR_ARIA_LABEL = Uploading\\nDIALTONE_ATTACHMENT_CAROUSEL_LEFT_ARROW_ARIA_LABEL = Previous\\nDIALTONE_ATTACHMENT_CAROUSEL_RIGHT_ARROW_ARIA_LABEL = Next\\n\\nDIALTONE_CALLBAR_BUTTON_WITH_DROPDOWN_ARROW_BUTTON_ARIA_LABEL = Open dropdown\\nDIALTONE_CALLBAR_BUTTON_WITH_POPOVER_ARROW_BUTTON_ARIA_LABEL = Open popover\\n\\nDIALTONE_CONTACT_CENTERS_ROW_MENU_BUTTON_LABEL = Open menu\\n\\nDIALTONE_DATEPICKER_PREVIOUS_MONTH = Previous month\\nDIALTONE_DATEPICKER_NEXT_MONTH = Next month\\nDIALTONE_DATEPICKER_PREVIOUS_YEAR = Previous year\\nDIALTONE_DATEPICKER_NEXT_YEAR = Next year\\nDIALTONE_DATEPICKER_SELECT_DAY = Select day\\nDIALTONE_DATEPICKER_CHANGE_TO = Change to\\n\\nDIALTONE_EDITOR_CONFIRM_SET_LINK_BUTTON =\\n .title = Confirm\\n .aria-label = Confirm set link\\nDIALTONE_EDITOR_REMOVE_LINK_BUTTON =\\n .title = Remove\\n .aria-label = Remove link\\nDIALTONE_EDITOR_CANCEL_SET_LINK_BUTTON =\\n .title = Cancel\\n .aria-label = Cancel set link\\n\\nDIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL = Template\\nDIALTONE_EDITOR_BOLD_BUTTON_LABEL = Bold\\nDIALTONE_EDITOR_ITALICS_BUTTON_LABEL = Italics\\nDIALTONE_EDITOR_UNDERLINE_BUTTON_LABEL = Underline\\nDIALTONE_EDITOR_STRIKE_BUTTON_LABEL = Strike\\nDIALTONE_EDITOR_ALIGN_LEFT_BUTTON_LABEL = Align Left\\nDIALTONE_EDITOR_ALIGN_CENTER_BUTTON_LABEL = Align Center\\nDIALTONE_EDITOR_ALIGN_RIGHT_BUTTON_LABEL = Align Right\\nDIALTONE_EDITOR_ALIGN_JUSTIFY_BUTTON_LABEL = Align Justify\\nDIALTONE_EDITOR_BULLET_LIST_BUTTON_LABEL = Bullet List\\nDIALTONE_EDITOR_ORDERED_LIST_BUTTON_LABEL = Ordered List\\nDIALTONE_EDITOR_QUOTE_BUTTON_LABEL = Quote\\nDIALTONE_EDITOR_CODE_BUTTON_LABEL = Code\\nDIALTONE_EDITOR_IMAGE_BUTTON_LABEL = Image\\nDIALTONE_EDITOR_LINK_BUTTON_LABEL = Link\\nDIALTONE_EDITOR_ADD_LINK_BUTTON =\\n .title = Add Link\\n .aria-label = Input field to add link\\n\\nDIALTONE_EMOJI_ROW_REACTION_LABEL =\\n { $personCount ->\\n *[other] reacted with { $reaction }\\n [one] reacted with { $reaction }\\n }\\n\\nDIALTONE_EMOJI_PICKER_ADD_EMOJI_LABEL = Add emoji\\nDIALTONE_EMOJI_PICKER_SEARCH_NO_RESULTS_LABEL = No results\\nDIALTONE_EMOJI_PICKER_SEARCH_RESULTS_LABEL = Search results\\nDIALTONE_EMOJI_PICKER_SEARCH_PLACEHOLDER_LABEL = Search...\\nDIALTONE_EMOJI_PICKER_SKIN_SELECTOR_BUTTON_TOOLTIP_LABEL = Change default skin tone\\nDIALTONE_EMOJI_PICKER_TABSET_RECENTLY_USED_LABEL = Most recently used\\nDIALTONE_EMOJI_PICKER_TABSET_SMILEYS_AND_PEOPLE_LABEL = Smileys and people\\nDIALTONE_EMOJI_PICKER_TABSET_NATURE_LABEL = Nature\\nDIALTONE_EMOJI_PICKER_TABSET_FOOD_LABEL = Food\\nDIALTONE_EMOJI_PICKER_TABSET_ACTIVITY_LABEL = Activity\\nDIALTONE_EMOJI_PICKER_TABSET_TRAVEL_LABEL = Travel\\nDIALTONE_EMOJI_PICKER_TABSET_OBJECTS_LABEL = Objects\\nDIALTONE_EMOJI_PICKER_TABSET_SYMBOLS_LABEL = Symbols\\nDIALTONE_EMOJI_PICKER_TABSET_FLAGS_LABEL = Flags\\nDIALTONE_EMOJI_PICKER_TABSET_CUSTOM_LABEL = Custom\\n\\nDIALTONE_FEED_ITEM_PILL_ARIA_LABEL = Click to expand\\n\\nDIALTONE_GENERAL_ROW_ACTIVE_VOICE_CHAT_TEXT = Active voice chat\\nDIALTONE_GENERAL_ROW_CALL_BUTTON_TOOLTIP = Call\\nDIALTONE_GENERAL_ROW_DND_TEXT_TOOLTIP = Do not disturb\\n\\nDIALTONE_GROUP_ROW_GROUP_COUNT_TEXT =\\n { $count ->\\n [1] 1 user\\n *[other] {$count} users\\n }\\n\\nDIALTONE_IVR_NODE_MENU_BUTTON_ARIA_LABEL = Open menu\\nDIALTONE_IVR_NODE_PROMPTMENU_ARIA_LABEL = prompt menu node\\nDIALTONE_IVR_NODE_PROMPTCOLLECT_ARIA_LABEL = prompt collect node\\nDIALTONE_IVR_NODE_PROMPTPLAY_ARIA_LABEL = prompt play node\\nDIALTONE_IVR_NODE_GOTOEXPERT_ARIA_LABEL = go to expert node\\nDIALTONE_IVR_NODE_BRANCH_ARIA_LABEL = branch node\\nDIALTONE_IVR_NODE_GOTO_ARIA_LABEL = go to node\\nDIALTONE_IVR_NODE_ASSIGN_ARIA_LABEL = assign node\\nDIALTONE_IVR_NODE_CUSTOMERDATA_ARIA_LABEL = customer data node\\nDIALTONE_IVR_NODE_TRANSFER_ARIA_LABEL = transfer node\\nDIALTONE_IVR_NODE_HANGUP_ARIA_LABEL = hangup node\\n\\nDIALTONE_MESSAGE_INPUT_SEND_BUTTON_ARIA_LABEL = Send\\nDIALTONE_MESSAGE_INPUT_IMAGE_PICKER_BUTTON_ARIA_LABEL = Attach Image\\nDIALTONE_MESSAGE_INPUT_EMOJI_PICKER_BUTTON_ARIA_LABEL = Select Emoji\\nDIALTONE_MESSAGE_INPUT_CANCEL_BUTTON_ARIA_LABEL = Cancel\\nDIALTONE_MESSAGE_INPUT_BOLD_BUTTON_LABEL =\\n .aria-label = Toggle bold on selected text\\n .tooltip-text = Bold\\nDIALTONE_MESSAGE_INPUT_ITALIC_BUTTON_LABEL =\\n .aria-label = Toggle italic on selected text\\n .tooltip-text = Italic\\nDIALTONE_MESSAGE_INPUT_STRIKETHROUGH_BUTTON_LABEL =\\n .aria-label = Toggle strikethrough on selected text\\n .tooltip-text = Strikethrough\\nDIALTONE_MESSAGE_INPUT_BULLET_LIST_BUTTON_LABEL =\\n .aria-label = Create or edit bullet list on selected text\\n .tooltip-text = Bullet list\\nDIALTONE_MESSAGE_INPUT_ORDERED_LIST_BUTTON_LABEL =\\n .aria-label = Create or edit ordered list on selected text\\n .tooltip-text = Ordered list\\nDIALTONE_MESSAGE_INPUT_BLOCK_QUOTE_BUTTON_LABEL =\\n .aria-label = Create or edit block quote on selected text\\n .tooltip-text = Block quote\\nDIALTONE_MESSAGE_INPUT_CODE_BUTTON_LABEL =\\n .aria-label = Create or edit code on selected text\\n .tooltip-text = Code\\nDIALTONE_MESSAGE_INPUT_CODE_BLOCK_BUTTON_LABEL =\\n .aria-label = Create or edit code block on selected text\\n .tooltip-text = Code block\\nDIALTONE_MESSAGE_INPUT_LINK_BUTTON_LABEL =\\n .aria-label = Create or edit link on selected text\\n .tooltip-text = Link\\nDIALTONE_MESSAGE_INPUT_LINK_DIALOG_TITLE = Add a link\\nDIALTONE_MESSAGE_INPUT_LINK_TEXT_LABEL = Text to display (optional)\\nDIALTONE_MESSAGE_INPUT_LINK_LINK_LABEL = Link\\nDIALTONE_MESSAGE_INPUT_LINK_LINK_PLACEHOLDER = e.g. https://www.dialpad.com\\nDIALTONE_MESSAGE_INPUT_LINK_REMOVE_LABEL = Remove\\nDIALTONE_MESSAGE_INPUT_LINK_CANCEL_LABEL = Cancel\\nDIALTONE_MESSAGE_INPUT_LINK_CONFIRM_LABEL = Done\\n\\nDIALTONE_PAGINATION_FIRST_PAGE = First page\\nDIALTONE_PAGINATION_PREVIOUS_PAGE = Previous page\\nDIALTONE_PAGINATION_NEXT_PAGE = Next page\\nDIALTONE_PAGINATION_LAST_PAGE = Last page\\nDIALTONE_PAGINATION_PAGE_NUMBER = Page number {$page}\\n\\nDIALTONE_RICH_TEXT_EDITOR_EDIT_BUTTON_LABEL = Edit\\nDIALTONE_RICH_TEXT_EDITOR_OPEN_LINK_BUTTON_LABEL = Open link\\nDIALTONE_RICH_TEXT_EDITOR_REMOVE_BUTTON_LABEL = Remove\\n\\nDIALTONE_SETTINGS_MENU_DEFAULT_BUTTON_LABEL = Settings\\nDIALTONE_SETTINGS_MENU_UPDATE_BUTTON_LABEL = Update\\n\\nDIALTONE_UNREAD_PILL_MENTIONS_TEXT = Unread mentions\\nDIALTONE_UNREAD_PILL_MESSAGES_TEXT = Unread messages\\n\\n# Storybook only\\nSTORYBOOK_LANGUAGE_ENGLISH = English\\nSTORYBOOK_LANGUAGE_CHINESE = Chinese\\nSTORYBOOK_LANGUAGE_DUTCH = Dutch\\nSTORYBOOK_LANGUAGE_FRENCH = French\\nSTORYBOOK_LANGUAGE_GERMAN = German\\nSTORYBOOK_LANGUAGE_ITALIAN = Italian\\nSTORYBOOK_LANGUAGE_JAPANESE = Japanese\\nSTORYBOOK_LANGUAGE_PORTUGUESE = Portuguese\\nSTORYBOOK_LANGUAGE_RUSSIAN = Russian\\nSTORYBOOK_LANGUAGE_SPANISH = Spanish\\nSTORYBOOK_SET_LANGUAGE = Set language\\nSTORYBOOK_YOU = You\\nSTORYBOOK_REACTION_NAMES_2 = Olivia Chen, Benjamin Carter, Sophia Rodriguez, William Kim & Isabella Garcia\\nSTORYBOOK_REACTION_NAMES_3 = Olivia Chen & { STORYBOOK_YOU }\\n\""],"names":["enUS"],"mappings":"4GAAA,MAAAA,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA"}