@dialpad/dialtone 9.95.0 → 9.97.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 (127) hide show
  1. package/dist/css/dialtone-default-theme.css +45 -1
  2. package/dist/css/dialtone-default-theme.min.css +1 -1
  3. package/dist/css/dialtone.css +45 -1
  4. package/dist/css/dialtone.min.css +1 -1
  5. package/dist/tokens/doc.json +15432 -15432
  6. package/dist/vue2/component-documentation.json +1 -1
  7. package/dist/vue2/components/hovercard/hovercard.vue.cjs +41 -2
  8. package/dist/vue2/components/hovercard/hovercard.vue.cjs.map +1 -1
  9. package/dist/vue2/components/hovercard/hovercard.vue.js +41 -2
  10. package/dist/vue2/components/hovercard/hovercard.vue.js.map +1 -1
  11. package/dist/vue2/components/keyboard_shortcut/keyboard_shortcut.vue.cjs +2 -2
  12. package/dist/vue2/components/keyboard_shortcut/keyboard_shortcut.vue.js +2 -2
  13. package/dist/vue2/components/popover/popover.vue.cjs +36 -60
  14. package/dist/vue2/components/popover/popover.vue.cjs.map +1 -1
  15. package/dist/vue2/components/popover/popover.vue.js +36 -60
  16. package/dist/vue2/components/popover/popover.vue.js.map +1 -1
  17. package/dist/vue2/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.cjs.map +1 -1
  18. package/dist/vue2/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.js.map +1 -1
  19. package/dist/vue2/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.cjs.map +1 -1
  20. package/dist/vue2/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.js.map +1 -1
  21. package/dist/vue2/components/rich_text_editor/rich_text_editor.vue.cjs +160 -17
  22. package/dist/vue2/components/rich_text_editor/rich_text_editor.vue.cjs.map +1 -1
  23. package/dist/vue2/components/rich_text_editor/rich_text_editor.vue.js +161 -18
  24. package/dist/vue2/components/rich_text_editor/rich_text_editor.vue.js.map +1 -1
  25. package/dist/vue2/recipes/conversation_view/editor/editor.vue.cjs +1 -1
  26. package/dist/vue2/recipes/conversation_view/editor/editor.vue.cjs.map +1 -1
  27. package/dist/vue2/recipes/conversation_view/editor/editor.vue.js +1 -1
  28. package/dist/vue2/recipes/conversation_view/editor/editor.vue.js.map +1 -1
  29. package/dist/vue2/recipes/conversation_view/message_input/last_active_nodes.cjs +87 -0
  30. package/dist/vue2/recipes/conversation_view/message_input/last_active_nodes.cjs.map +1 -0
  31. package/dist/vue2/recipes/conversation_view/message_input/last_active_nodes.js +87 -0
  32. package/dist/vue2/recipes/conversation_view/message_input/last_active_nodes.js.map +1 -0
  33. package/dist/vue2/recipes/conversation_view/message_input/message_input.vue.cjs +229 -46
  34. package/dist/vue2/recipes/conversation_view/message_input/message_input.vue.cjs.map +1 -1
  35. package/dist/vue2/recipes/conversation_view/message_input/message_input.vue.js +229 -46
  36. package/dist/vue2/recipes/conversation_view/message_input/message_input.vue.js.map +1 -1
  37. package/dist/vue2/recipes/conversation_view/message_input/message_input_button.vue.cjs +58 -0
  38. package/dist/vue2/recipes/conversation_view/message_input/message_input_button.vue.cjs.map +1 -0
  39. package/dist/vue2/recipes/conversation_view/message_input/message_input_button.vue.js +58 -0
  40. package/dist/vue2/recipes/conversation_view/message_input/message_input_button.vue.js.map +1 -0
  41. package/dist/vue2/recipes/conversation_view/message_input/message_input_link.vue.cjs +108 -0
  42. package/dist/vue2/recipes/conversation_view/message_input/message_input_link.vue.cjs.map +1 -0
  43. package/dist/vue2/recipes/conversation_view/message_input/message_input_link.vue.js +108 -0
  44. package/dist/vue2/recipes/conversation_view/message_input/message_input_link.vue.js.map +1 -0
  45. package/dist/vue2/recipes/conversation_view/message_input/message_input_topbar.vue.cjs +106 -0
  46. package/dist/vue2/recipes/conversation_view/message_input/message_input_topbar.vue.cjs.map +1 -0
  47. package/dist/vue2/recipes/conversation_view/message_input/message_input_topbar.vue.js +106 -0
  48. package/dist/vue2/recipes/conversation_view/message_input/message_input_topbar.vue.js.map +1 -0
  49. package/dist/vue2/types/components/hovercard/hovercard.vue.d.ts.map +1 -1
  50. package/dist/vue2/types/components/popover/popover.vue.d.ts +380 -2
  51. package/dist/vue2/types/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.d.ts.map +1 -1
  52. package/dist/vue2/types/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.d.ts.map +1 -1
  53. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts +37 -1
  54. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  55. package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  56. package/dist/vue2/types/recipes/conversation_view/message_input/last_active_nodes.d.ts +3 -0
  57. package/dist/vue2/types/recipes/conversation_view/message_input/last_active_nodes.d.ts.map +1 -0
  58. package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts +183 -60
  59. package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  60. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_button.vue.d.ts +48 -0
  61. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_button.vue.d.ts.map +1 -0
  62. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts +38 -0
  63. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -0
  64. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +87 -0
  65. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts.map +1 -0
  66. package/dist/vue3/component-documentation.json +1 -1
  67. package/dist/vue3/components/hovercard/hovercard.vue.cjs +55 -22
  68. package/dist/vue3/components/hovercard/hovercard.vue.cjs.map +1 -1
  69. package/dist/vue3/components/hovercard/hovercard.vue.js +56 -23
  70. package/dist/vue3/components/hovercard/hovercard.vue.js.map +1 -1
  71. package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut.vue.cjs +2 -2
  72. package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut.vue.js +2 -2
  73. package/dist/vue3/components/popover/popover.vue.cjs +40 -64
  74. package/dist/vue3/components/popover/popover.vue.cjs.map +1 -1
  75. package/dist/vue3/components/popover/popover.vue.js +40 -64
  76. package/dist/vue3/components/popover/popover.vue.js.map +1 -1
  77. package/dist/vue3/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.cjs.map +1 -1
  78. package/dist/vue3/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.js.map +1 -1
  79. package/dist/vue3/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.cjs.map +1 -1
  80. package/dist/vue3/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.js.map +1 -1
  81. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.cjs +223 -21
  82. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.cjs.map +1 -1
  83. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.js +225 -23
  84. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.js.map +1 -1
  85. package/dist/vue3/recipes/conversation_view/editor/editor.vue.cjs +1 -0
  86. package/dist/vue3/recipes/conversation_view/editor/editor.vue.cjs.map +1 -1
  87. package/dist/vue3/recipes/conversation_view/editor/editor.vue.js +1 -0
  88. package/dist/vue3/recipes/conversation_view/editor/editor.vue.js.map +1 -1
  89. package/dist/vue3/recipes/conversation_view/message_input/last_active_nodes.cjs +87 -0
  90. package/dist/vue3/recipes/conversation_view/message_input/last_active_nodes.cjs.map +1 -0
  91. package/dist/vue3/recipes/conversation_view/message_input/last_active_nodes.js +87 -0
  92. package/dist/vue3/recipes/conversation_view/message_input/last_active_nodes.js.map +1 -0
  93. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.cjs +279 -65
  94. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.cjs.map +1 -1
  95. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.js +280 -66
  96. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.js.map +1 -1
  97. package/dist/vue3/recipes/conversation_view/message_input/message_input_button.vue.cjs +81 -0
  98. package/dist/vue3/recipes/conversation_view/message_input/message_input_button.vue.cjs.map +1 -0
  99. package/dist/vue3/recipes/conversation_view/message_input/message_input_button.vue.js +81 -0
  100. package/dist/vue3/recipes/conversation_view/message_input/message_input_button.vue.js.map +1 -0
  101. package/dist/vue3/recipes/conversation_view/message_input/message_input_link.vue.cjs +193 -0
  102. package/dist/vue3/recipes/conversation_view/message_input/message_input_link.vue.cjs.map +1 -0
  103. package/dist/vue3/recipes/conversation_view/message_input/message_input_link.vue.js +193 -0
  104. package/dist/vue3/recipes/conversation_view/message_input/message_input_link.vue.js.map +1 -0
  105. package/dist/vue3/recipes/conversation_view/message_input/message_input_topbar.vue.cjs +223 -0
  106. package/dist/vue3/recipes/conversation_view/message_input/message_input_topbar.vue.cjs.map +1 -0
  107. package/dist/vue3/recipes/conversation_view/message_input/message_input_topbar.vue.js +223 -0
  108. package/dist/vue3/recipes/conversation_view/message_input/message_input_topbar.vue.js.map +1 -0
  109. package/dist/vue3/types/components/hovercard/hovercard.vue.d.ts.map +1 -1
  110. package/dist/vue3/types/components/popover/popover.vue.d.ts +432 -1
  111. package/dist/vue3/types/components/popover/popover.vue.d.ts.map +1 -1
  112. package/dist/vue3/types/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.d.ts.map +1 -1
  113. package/dist/vue3/types/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.d.ts.map +1 -1
  114. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts +42 -1
  115. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  116. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  117. package/dist/vue3/types/recipes/conversation_view/message_input/last_active_nodes.d.ts +3 -0
  118. package/dist/vue3/types/recipes/conversation_view/message_input/last_active_nodes.d.ts.map +1 -0
  119. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts +185 -61
  120. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  121. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_button.vue.d.ts +50 -0
  122. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_button.vue.d.ts.map +1 -0
  123. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts +42 -0
  124. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -0
  125. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +89 -0
  126. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts.map +1 -0
  127. package/package.json +7 -4
@@ -121,23 +121,23 @@ const _sfc_main = {
121
121
  default: "body",
122
122
  validator: (appendTo) => {
123
123
  return popover_constants.POPOVER_APPEND_TO_VALUES.includes(appendTo) || appendTo instanceof HTMLElement;
124
- },
125
- /**
126
- * The enter delay in milliseconds before the hovercard is shown.
127
- * @type number
128
- */
129
- enterDelay: {
130
- type: Number,
131
- default: tooltip_constants.TOOLTIP_DELAY_MS
132
- },
133
- /**
134
- * The leave delay in milliseconds before the hovercard is hidden.
135
- * @type number
136
- */
137
- leaveDelay: {
138
- type: Number,
139
- default: tooltip_constants.TOOLTIP_DELAY_MS
140
124
  }
125
+ },
126
+ /**
127
+ * The enter delay in milliseconds before the hovercard is shown.
128
+ * @type number
129
+ */
130
+ enterDelay: {
131
+ type: Number,
132
+ default: tooltip_constants.TOOLTIP_DELAY_MS
133
+ },
134
+ /**
135
+ * The leave delay in milliseconds before the hovercard is hidden.
136
+ * @type number
137
+ */
138
+ leaveDelay: {
139
+ type: Number,
140
+ default: tooltip_constants.TOOLTIP_DELAY_MS
141
141
  }
142
142
  },
143
143
  emits: [
@@ -150,11 +150,42 @@ const _sfc_main = {
150
150
  "opened"
151
151
  ],
152
152
  setup(__props) {
153
+ const props = __props;
154
+ const hovercardOpen = vue.ref(props.open);
155
+ const inTimer = vue.ref(null);
156
+ const outTimer = vue.ref(null);
157
+ vue.watch(() => props.open, (open) => {
158
+ hovercardOpen.value = open;
159
+ }, { immediate: true });
160
+ function setInTimer() {
161
+ inTimer.value = setTimeout(() => {
162
+ hovercardOpen.value = true;
163
+ }, props.enterDelay);
164
+ }
165
+ function setOutTimer() {
166
+ outTimer.value = setTimeout(() => {
167
+ hovercardOpen.value = false;
168
+ }, props.leaveDelay);
169
+ }
170
+ function onMouseEnter() {
171
+ if (props.open === null) {
172
+ clearTimeout(outTimer.value);
173
+ setInTimer();
174
+ }
175
+ }
176
+ function onMouseLeave() {
177
+ if (props.open === null) {
178
+ clearTimeout(inTimer.value);
179
+ setOutTimer();
180
+ }
181
+ }
153
182
  return (_ctx, _cache) => {
154
183
  return vue.openBlock(), vue.createBlock(vue.unref(popover.default), {
155
184
  id: __props.id,
185
+ open: hovercardOpen.value,
156
186
  placement: __props.placement,
157
187
  "content-class": __props.contentClass,
188
+ "dialog-class": __props.dialogClass,
158
189
  "fallback-placements": __props.fallbackPlacements,
159
190
  padding: __props.padding,
160
191
  transition: __props.transition ? "fade" : null,
@@ -164,12 +195,14 @@ const _sfc_main = {
164
195
  "header-class": __props.headerClass,
165
196
  "footer-class": __props.footerClass,
166
197
  "append-to": __props.appendTo,
167
- hovercard: true,
168
198
  "data-qa": "dt-hovercard",
169
- open: __props.open,
170
- "enter-delay": _ctx.enterDelay,
171
- "leave-delay": _ctx.leaveDelay,
172
- onOpened: _cache[0] || (_cache[0] = (e) => _ctx.$emit("opened", e))
199
+ "enter-delay": __props.enterDelay,
200
+ "leave-delay": __props.leaveDelay,
201
+ onOpened: _cache[0] || (_cache[0] = (e) => _ctx.$emit("opened", e)),
202
+ onMouseenterPopover: onMouseEnter,
203
+ onMouseleavePopover: onMouseLeave,
204
+ onMouseenterPopoverAnchor: onMouseEnter,
205
+ onMouseleavePopoverAnchor: onMouseLeave
173
206
  }, {
174
207
  anchor: vue.withCtx(({ attrs }) => [
175
208
  vue.renderSlot(_ctx.$slots, "anchor", vue.normalizeProps(vue.guardReactiveProps(attrs)))
@@ -184,7 +217,7 @@ const _sfc_main = {
184
217
  vue.renderSlot(_ctx.$slots, "footerContent")
185
218
  ]),
186
219
  _: 3
187
- }, 8, ["id", "placement", "content-class", "fallback-placements", "padding", "transition", "offset", "header-class", "footer-class", "append-to", "open", "enter-delay", "leave-delay"]);
220
+ }, 8, ["id", "open", "placement", "content-class", "dialog-class", "fallback-placements", "padding", "transition", "offset", "header-class", "footer-class", "append-to", "enter-delay", "leave-delay"]);
188
221
  };
189
222
  }
190
223
  };
@@ -1 +1 @@
1
- {"version":3,"file":"hovercard.vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"hovercard.vue.cjs","sources":["../../../components/hovercard/hovercard.vue"],"sourcesContent":["<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-popover\n :id=\"id\"\n :open=\"hovercardOpen\"\n :placement=\"placement\"\n :content-class=\"contentClass\"\n :dialog-class=\"dialogClass\"\n :fallback-placements=\"fallbackPlacements\"\n :padding=\"padding\"\n :transition=\"transition ? 'fade' : null\"\n :offset=\"offset\"\n :modal=\"false\"\n initial-focus-element=\"none\"\n :header-class=\"headerClass\"\n :footer-class=\"footerClass\"\n :append-to=\"appendTo\"\n data-qa=\"dt-hovercard\"\n :enter-delay=\"enterDelay\"\n :leave-delay=\"leaveDelay\"\n @opened=\"(e) => ($emit('opened', e))\"\n @mouseenter-popover=\"onMouseEnter\"\n @mouseleave-popover=\"onMouseLeave\"\n @mouseenter-popover-anchor=\"onMouseEnter\"\n @mouseleave-popover-anchor=\"onMouseLeave\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the hovercard. Usually a button. -->\n <slot\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content>\n <!-- @slot Slot for the content that is displayed in the hovercard. -->\n <slot name=\"content\" />\n </template>\n <template #headerContent>\n <!-- @slot Slot for hovercard header content -->\n <slot name=\"headerContent\" />\n </template>\n\n <template #footerContent>\n <!-- @slot Slot for the footer content. -->\n <slot name=\"footerContent\" />\n </template>\n </dt-popover>\n</template>\n\n<script setup>\nimport { ref, watch } from 'vue';\nimport { POPOVER_APPEND_TO_VALUES, POPOVER_PADDING_CLASSES, DtPopover } from '@/components/popover/index.js';\nimport { TOOLTIP_DIRECTIONS, TOOLTIP_DELAY_MS } from '@/components/tooltip/index.js';\nimport { getUniqueString } from '@/common/utils';\n\nconst props = defineProps({\n /**\n * Fade transition when the content display is toggled.\n * @type boolean\n * @values true, false\n */\n transition: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls whether the hovercard is shown. Leaving this null will have the hovercard trigger on hover by default.\n * If you set this value, the default trigger behavior will be disabled, and you can control it as you need.\n * Supports .sync modifier\n * @values null, true, false\n */\n open: {\n type: Boolean,\n default: null,\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 * @see https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements\"\n */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the popover displays relative to the anchor.\n * @see https://atomiks.github.io/tippyjs/v6/all-props/#placement\"\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-start',\n validator (placement) {\n return TOOLTIP_DIRECTIONS.includes(placement);\n },\n },\n\n /**\n * Padding size class for the popover content.\n * @values none, small, medium, large\n */\n padding: {\n type: String,\n default: 'large',\n validator: (padding) => {\n return Object.keys(POPOVER_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Displaces the content box from its anchor element\n * by the specified number of pixels.\n * @see https://atomiks.github.io/tippyjs/v6/all-props/#offset\"\n */\n offset: {\n type: Array,\n default: () => [0, 16],\n },\n\n /**\n * The id of the tooltip\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Additional class name for the header content wrapper element.\n */\n headerClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the footer content wrapper element.\n */\n footerClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the dialog element.\n */\n dialogClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the content wrapper element.\n */\n contentClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\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 * The enter delay in milliseconds before the hovercard is shown.\n * @type number\n */\n enterDelay: {\n type: Number,\n default: TOOLTIP_DELAY_MS,\n },\n\n /**\n * The leave delay in milliseconds before the hovercard is hidden.\n * @type number\n */\n leaveDelay: {\n type: Number,\n default: TOOLTIP_DELAY_MS,\n },\n});\n\ndefineEmits([\n /**\n * Emitted when hovercard is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n]);\n\nconst hovercardOpen = ref(props.open);\nconst inTimer = ref(null);\nconst outTimer = ref(null);\n\nwatch(() => props.open, (open) => {\n hovercardOpen.value = open;\n}, { immediate: true });\n\nfunction setInTimer () {\n inTimer.value = setTimeout(() => {\n hovercardOpen.value = true;\n }, props.enterDelay);\n}\n\nfunction setOutTimer () {\n outTimer.value = setTimeout(() => {\n hovercardOpen.value = false;\n }, props.leaveDelay);\n}\n\nfunction onMouseEnter () {\n if (props.open === null) {\n clearTimeout(outTimer.value);\n setInTimer();\n }\n}\n\nfunction onMouseLeave () {\n if (props.open === null) {\n clearTimeout(inTimer.value);\n setOutTimer();\n }\n}\n</script>\n"],"names":["ref","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA,UAAM,QAAQ;AA4Jd,UAAM,gBAAgBA,IAAG,IAAC,MAAM,IAAI;AACpC,UAAM,UAAUA,IAAAA,IAAI,IAAI;AACxB,UAAM,WAAWA,IAAAA,IAAI,IAAI;AAEzBC,QAAK,MAAC,MAAM,MAAM,MAAM,CAAC,SAAS;AAChC,oBAAc,QAAQ;AAAA,IACxB,GAAG,EAAE,WAAW,KAAI,CAAE;AAEtB,aAAS,aAAc;AACrB,cAAQ,QAAQ,WAAW,MAAM;AAC/B,sBAAc,QAAQ;AAAA,MAC1B,GAAK,MAAM,UAAU;AAAA,IACrB;AAEA,aAAS,cAAe;AACtB,eAAS,QAAQ,WAAW,MAAM;AAChC,sBAAc,QAAQ;AAAA,MAC1B,GAAK,MAAM,UAAU;AAAA,IACrB;AAEA,aAAS,eAAgB;AACvB,UAAI,MAAM,SAAS,MAAM;AACvB,qBAAa,SAAS,KAAK;AAC3B;MACD;AAAA,IACH;AAEA,aAAS,eAAgB;AACvB,UAAI,MAAM,SAAS,MAAM;AACvB,qBAAa,QAAQ,KAAK;AAC1B;MACD;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { openBlock, createBlock, unref, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
1
+ import { ref, watch, openBlock, createBlock, unref, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
2
2
  import { getUniqueString } from "../../common/utils.js";
3
3
  import { TOOLTIP_DIRECTIONS, TOOLTIP_DELAY_MS } from "../tooltip/tooltip_constants.js";
4
4
  import { POPOVER_PADDING_CLASSES, POPOVER_APPEND_TO_VALUES } from "../popover/popover_constants.js";
@@ -119,23 +119,23 @@ const _sfc_main = {
119
119
  default: "body",
120
120
  validator: (appendTo) => {
121
121
  return POPOVER_APPEND_TO_VALUES.includes(appendTo) || appendTo instanceof HTMLElement;
122
- },
123
- /**
124
- * The enter delay in milliseconds before the hovercard is shown.
125
- * @type number
126
- */
127
- enterDelay: {
128
- type: Number,
129
- default: TOOLTIP_DELAY_MS
130
- },
131
- /**
132
- * The leave delay in milliseconds before the hovercard is hidden.
133
- * @type number
134
- */
135
- leaveDelay: {
136
- type: Number,
137
- default: TOOLTIP_DELAY_MS
138
122
  }
123
+ },
124
+ /**
125
+ * The enter delay in milliseconds before the hovercard is shown.
126
+ * @type number
127
+ */
128
+ enterDelay: {
129
+ type: Number,
130
+ default: TOOLTIP_DELAY_MS
131
+ },
132
+ /**
133
+ * The leave delay in milliseconds before the hovercard is hidden.
134
+ * @type number
135
+ */
136
+ leaveDelay: {
137
+ type: Number,
138
+ default: TOOLTIP_DELAY_MS
139
139
  }
140
140
  },
141
141
  emits: [
@@ -148,11 +148,42 @@ const _sfc_main = {
148
148
  "opened"
149
149
  ],
150
150
  setup(__props) {
151
+ const props = __props;
152
+ const hovercardOpen = ref(props.open);
153
+ const inTimer = ref(null);
154
+ const outTimer = ref(null);
155
+ watch(() => props.open, (open) => {
156
+ hovercardOpen.value = open;
157
+ }, { immediate: true });
158
+ function setInTimer() {
159
+ inTimer.value = setTimeout(() => {
160
+ hovercardOpen.value = true;
161
+ }, props.enterDelay);
162
+ }
163
+ function setOutTimer() {
164
+ outTimer.value = setTimeout(() => {
165
+ hovercardOpen.value = false;
166
+ }, props.leaveDelay);
167
+ }
168
+ function onMouseEnter() {
169
+ if (props.open === null) {
170
+ clearTimeout(outTimer.value);
171
+ setInTimer();
172
+ }
173
+ }
174
+ function onMouseLeave() {
175
+ if (props.open === null) {
176
+ clearTimeout(inTimer.value);
177
+ setOutTimer();
178
+ }
179
+ }
151
180
  return (_ctx, _cache) => {
152
181
  return openBlock(), createBlock(unref(DtPopover), {
153
182
  id: __props.id,
183
+ open: hovercardOpen.value,
154
184
  placement: __props.placement,
155
185
  "content-class": __props.contentClass,
186
+ "dialog-class": __props.dialogClass,
156
187
  "fallback-placements": __props.fallbackPlacements,
157
188
  padding: __props.padding,
158
189
  transition: __props.transition ? "fade" : null,
@@ -162,12 +193,14 @@ const _sfc_main = {
162
193
  "header-class": __props.headerClass,
163
194
  "footer-class": __props.footerClass,
164
195
  "append-to": __props.appendTo,
165
- hovercard: true,
166
196
  "data-qa": "dt-hovercard",
167
- open: __props.open,
168
- "enter-delay": _ctx.enterDelay,
169
- "leave-delay": _ctx.leaveDelay,
170
- onOpened: _cache[0] || (_cache[0] = (e) => _ctx.$emit("opened", e))
197
+ "enter-delay": __props.enterDelay,
198
+ "leave-delay": __props.leaveDelay,
199
+ onOpened: _cache[0] || (_cache[0] = (e) => _ctx.$emit("opened", e)),
200
+ onMouseenterPopover: onMouseEnter,
201
+ onMouseleavePopover: onMouseLeave,
202
+ onMouseenterPopoverAnchor: onMouseEnter,
203
+ onMouseleavePopoverAnchor: onMouseLeave
171
204
  }, {
172
205
  anchor: withCtx(({ attrs }) => [
173
206
  renderSlot(_ctx.$slots, "anchor", normalizeProps(guardReactiveProps(attrs)))
@@ -182,7 +215,7 @@ const _sfc_main = {
182
215
  renderSlot(_ctx.$slots, "footerContent")
183
216
  ]),
184
217
  _: 3
185
- }, 8, ["id", "placement", "content-class", "fallback-placements", "padding", "transition", "offset", "header-class", "footer-class", "append-to", "open", "enter-delay", "leave-delay"]);
218
+ }, 8, ["id", "open", "placement", "content-class", "dialog-class", "fallback-placements", "padding", "transition", "offset", "header-class", "footer-class", "append-to", "enter-delay", "leave-delay"]);
186
219
  };
187
220
  }
188
221
  };
@@ -1 +1 @@
1
- {"version":3,"file":"hovercard.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"hovercard.vue.js","sources":["../../../components/hovercard/hovercard.vue"],"sourcesContent":["<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-popover\n :id=\"id\"\n :open=\"hovercardOpen\"\n :placement=\"placement\"\n :content-class=\"contentClass\"\n :dialog-class=\"dialogClass\"\n :fallback-placements=\"fallbackPlacements\"\n :padding=\"padding\"\n :transition=\"transition ? 'fade' : null\"\n :offset=\"offset\"\n :modal=\"false\"\n initial-focus-element=\"none\"\n :header-class=\"headerClass\"\n :footer-class=\"footerClass\"\n :append-to=\"appendTo\"\n data-qa=\"dt-hovercard\"\n :enter-delay=\"enterDelay\"\n :leave-delay=\"leaveDelay\"\n @opened=\"(e) => ($emit('opened', e))\"\n @mouseenter-popover=\"onMouseEnter\"\n @mouseleave-popover=\"onMouseLeave\"\n @mouseenter-popover-anchor=\"onMouseEnter\"\n @mouseleave-popover-anchor=\"onMouseLeave\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the hovercard. Usually a button. -->\n <slot\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content>\n <!-- @slot Slot for the content that is displayed in the hovercard. -->\n <slot name=\"content\" />\n </template>\n <template #headerContent>\n <!-- @slot Slot for hovercard header content -->\n <slot name=\"headerContent\" />\n </template>\n\n <template #footerContent>\n <!-- @slot Slot for the footer content. -->\n <slot name=\"footerContent\" />\n </template>\n </dt-popover>\n</template>\n\n<script setup>\nimport { ref, watch } from 'vue';\nimport { POPOVER_APPEND_TO_VALUES, POPOVER_PADDING_CLASSES, DtPopover } from '@/components/popover/index.js';\nimport { TOOLTIP_DIRECTIONS, TOOLTIP_DELAY_MS } from '@/components/tooltip/index.js';\nimport { getUniqueString } from '@/common/utils';\n\nconst props = defineProps({\n /**\n * Fade transition when the content display is toggled.\n * @type boolean\n * @values true, false\n */\n transition: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls whether the hovercard is shown. Leaving this null will have the hovercard trigger on hover by default.\n * If you set this value, the default trigger behavior will be disabled, and you can control it as you need.\n * Supports .sync modifier\n * @values null, true, false\n */\n open: {\n type: Boolean,\n default: null,\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 * @see https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements\"\n */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the popover displays relative to the anchor.\n * @see https://atomiks.github.io/tippyjs/v6/all-props/#placement\"\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-start',\n validator (placement) {\n return TOOLTIP_DIRECTIONS.includes(placement);\n },\n },\n\n /**\n * Padding size class for the popover content.\n * @values none, small, medium, large\n */\n padding: {\n type: String,\n default: 'large',\n validator: (padding) => {\n return Object.keys(POPOVER_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Displaces the content box from its anchor element\n * by the specified number of pixels.\n * @see https://atomiks.github.io/tippyjs/v6/all-props/#offset\"\n */\n offset: {\n type: Array,\n default: () => [0, 16],\n },\n\n /**\n * The id of the tooltip\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Additional class name for the header content wrapper element.\n */\n headerClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the footer content wrapper element.\n */\n footerClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the dialog element.\n */\n dialogClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the content wrapper element.\n */\n contentClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\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 * The enter delay in milliseconds before the hovercard is shown.\n * @type number\n */\n enterDelay: {\n type: Number,\n default: TOOLTIP_DELAY_MS,\n },\n\n /**\n * The leave delay in milliseconds before the hovercard is hidden.\n * @type number\n */\n leaveDelay: {\n type: Number,\n default: TOOLTIP_DELAY_MS,\n },\n});\n\ndefineEmits([\n /**\n * Emitted when hovercard is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n]);\n\nconst hovercardOpen = ref(props.open);\nconst inTimer = ref(null);\nconst outTimer = ref(null);\n\nwatch(() => props.open, (open) => {\n hovercardOpen.value = open;\n}, { immediate: true });\n\nfunction setInTimer () {\n inTimer.value = setTimeout(() => {\n hovercardOpen.value = true;\n }, props.enterDelay);\n}\n\nfunction setOutTimer () {\n outTimer.value = setTimeout(() => {\n hovercardOpen.value = false;\n }, props.leaveDelay);\n}\n\nfunction onMouseEnter () {\n if (props.open === null) {\n clearTimeout(outTimer.value);\n setInTimer();\n }\n}\n\nfunction onMouseLeave () {\n if (props.open === null) {\n clearTimeout(inTimer.value);\n setOutTimer();\n }\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA,UAAM,QAAQ;AA4Jd,UAAM,gBAAgB,IAAI,MAAM,IAAI;AACpC,UAAM,UAAU,IAAI,IAAI;AACxB,UAAM,WAAW,IAAI,IAAI;AAEzB,UAAM,MAAM,MAAM,MAAM,CAAC,SAAS;AAChC,oBAAc,QAAQ;AAAA,IACxB,GAAG,EAAE,WAAW,KAAI,CAAE;AAEtB,aAAS,aAAc;AACrB,cAAQ,QAAQ,WAAW,MAAM;AAC/B,sBAAc,QAAQ;AAAA,MAC1B,GAAK,MAAM,UAAU;AAAA,IACrB;AAEA,aAAS,cAAe;AACtB,eAAS,QAAQ,WAAW,MAAM;AAChC,sBAAc,QAAQ;AAAA,MAC1B,GAAK,MAAM,UAAU;AAAA,IACrB;AAEA,aAAS,eAAgB;AACvB,UAAI,MAAM,SAAS,MAAM;AACvB,qBAAa,SAAS,KAAK;AAC3B;MACD;AAAA,IACH;AAEA,aAAS,eAAgB;AACvB,UAAI,MAAM,SAAS,MAAM;AACvB,qBAAa,QAAQ,KAAK;AAC1B;MACD;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -111,6 +111,6 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
111
111
  }), 256))
112
112
  ], 2);
113
113
  }
114
- const keyboard_shortcut = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["render", _sfc_render]]);
115
- exports.default = keyboard_shortcut;
114
+ const DtKeyboardShortcut = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["render", _sfc_render]]);
115
+ exports.default = DtKeyboardShortcut;
116
116
  //# sourceMappingURL=keyboard_shortcut.vue.cjs.map
@@ -109,8 +109,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
109
109
  }), 256))
110
110
  ], 2);
111
111
  }
112
- const keyboard_shortcut = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
112
+ const DtKeyboardShortcut = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
113
113
  export {
114
- keyboard_shortcut as default
114
+ DtKeyboardShortcut as default
115
115
  };
116
116
  //# sourceMappingURL=keyboard_shortcut.vue.js.map
@@ -10,7 +10,6 @@ const sr_only_close_button = require("../../common/sr_only_close_button.vue.cjs"
10
10
  const vue = require("vue");
11
11
  const _pluginVue_exportHelper = require("../../_virtual/_plugin-vue_export-helper.cjs");
12
12
  const lazy_show = require("../lazy_show/lazy_show.vue.cjs");
13
- const tooltip_constants = require("../tooltip/tooltip_constants.cjs");
14
13
  const _sfc_main = {
15
14
  name: "DtPopover",
16
15
  /********************
@@ -343,30 +342,6 @@ const _sfc_main = {
343
342
  validator: (appendTo) => {
344
343
  return popover_constants.POPOVER_APPEND_TO_VALUES.includes(appendTo) || appendTo instanceof HTMLElement;
345
344
  }
346
- },
347
- /**
348
- * Set this prop to true and popover component will support hovercard behaviour
349
- * It will open on mouseenter and close on mouseleave with timer delay of 300ms
350
- */
351
- hovercard: {
352
- type: Boolean,
353
- default: false
354
- },
355
- /**
356
- * The enter delay in milliseconds before the hovercard is shown.
357
- * @type number
358
- */
359
- enterDelay: {
360
- type: Number,
361
- default: tooltip_constants.TOOLTIP_DELAY_MS
362
- },
363
- /**
364
- * The leave delay in milliseconds before the hovercard is hidden.
365
- * @type number
366
- */
367
- leaveDelay: {
368
- type: Number,
369
- default: tooltip_constants.TOOLTIP_DELAY_MS
370
345
  }
371
346
  },
372
347
  emits: [
@@ -388,7 +363,31 @@ const _sfc_main = {
388
363
  * @event opened
389
364
  * @type {Boolean | Array}
390
365
  */
391
- "opened"
366
+ "opened",
367
+ /**
368
+ * Emitted when the mouse enters the popover
369
+ *
370
+ * @event mouseenter-popover
371
+ */
372
+ "mouseenter-popover",
373
+ /**
374
+ * Emitted when the mouse leaves the popover
375
+ *
376
+ * @event mouseleave-popover
377
+ */
378
+ "mouseleave-popover",
379
+ /**
380
+ * Emitted when the mouse enters the popover anchor
381
+ *
382
+ * @event mouseenter-popover-anchor
383
+ */
384
+ "mouseenter-popover-anchor",
385
+ /**
386
+ * Emitted when the mouse leaves the popover anchor
387
+ *
388
+ * @event mouseleave-popover-anchor
389
+ */
390
+ "mouseleave-popover-anchor"
392
391
  ],
393
392
  data() {
394
393
  return {
@@ -400,9 +399,7 @@ const _sfc_main = {
400
399
  toAppear: false,
401
400
  anchorEl: null,
402
401
  popoverContentEl: null,
403
- hasSlotContent: common_utils.hasSlotContent,
404
- inTimer: null,
405
- outTimer: null
402
+ hasSlotContent: common_utils.hasSlotContent
406
403
  };
407
404
  },
408
405
  computed: {
@@ -556,9 +553,6 @@ const _sfc_main = {
556
553
  },
557
554
  defaultToggleOpen(e) {
558
555
  var _a, _b, _c;
559
- if (this.hovercard) {
560
- return;
561
- }
562
556
  if (this.openOnContext) {
563
557
  return;
564
558
  }
@@ -812,36 +806,18 @@ const _sfc_main = {
812
806
  onShow: this.onShow
813
807
  });
814
808
  },
815
- // ============================================================================
816
- // $ HOVERCARD
817
- // ----------------------------------------------------------------------------
818
- setInTimer() {
819
- this.inTimer = setTimeout(() => {
820
- this.isOpen = true;
821
- }, this.enterDelay);
822
- },
823
- setOutTimer() {
824
- this.outTimer = setTimeout(() => {
825
- this.isOpen = false;
826
- }, this.leaveDelay);
827
- },
828
- openHovercard() {
829
- if (!this.hovercard) return;
830
- if (this.open === null || this.open === void 0) {
831
- clearTimeout(this.outTimer);
832
- this.setInTimer();
833
- }
809
+ onMouseEnter() {
810
+ this.$emit("mouseenter-popover");
834
811
  },
835
- closeHovercard() {
836
- if (!this.hovercard) return;
837
- if (this.open === null || this.open === void 0) {
838
- clearTimeout(this.inTimer);
839
- this.setOutTimer();
840
- }
812
+ onMouseLeave() {
813
+ this.$emit("mouseleave-popover");
814
+ },
815
+ onMouseEnterAnchor() {
816
+ this.$emit("mouseenter-popover-anchor");
817
+ },
818
+ onMouseLeaveAnchor() {
819
+ this.$emit("mouseleave-popover-anchor");
841
820
  }
842
- // ============================================================================
843
- // $ HOVERCARD
844
- // ----------------------------------------------------------------------------
845
821
  }
846
822
  };
847
823
  const _hoisted_1 = ["aria-hidden"];
@@ -883,8 +859,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
883
859
  _cache[7] || (_cache[7] = vue.withKeys(($event) => _ctx.$emit("keydown", $event), ["space"]))
884
860
  ],
885
861
  onKeydownCapture: _cache[5] || (_cache[5] = vue.withKeys((...args) => $options.closePopover && $options.closePopover(...args), ["escape"])),
886
- onMouseenter: _cache[8] || (_cache[8] = (...args) => $options.openHovercard && $options.openHovercard(...args)),
887
- onMouseleave: _cache[9] || (_cache[9] = (...args) => $options.closeHovercard && $options.closeHovercard(...args))
862
+ onMouseenter: _cache[8] || (_cache[8] = (...args) => $options.onMouseEnter && $options.onMouseEnter(...args)),
863
+ onMouseleave: _cache[9] || (_cache[9] = (...args) => $options.onMouseLeave && $options.onMouseLeave(...args))
888
864
  }, [
889
865
  vue.renderSlot(_ctx.$slots, "anchor", {
890
866
  attrs: {
@@ -914,8 +890,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
914
890
  css: _ctx.$attrs.css,
915
891
  tabindex: $props.contentTabindex
916
892
  }, vue.toHandlers($options.popoverListeners), {
917
- onMouseenter: $options.openHovercard,
918
- onMouseleave: $options.closeHovercard
893
+ onMouseenter: $options.onMouseEnterAnchor,
894
+ onMouseleave: $options.onMouseLeaveAnchor
919
895
  }), {
920
896
  default: vue.withCtx(() => [
921
897
  $data.hasSlotContent(_ctx.$slots.headerContent) || $props.showCloseButton ? (vue.openBlock(), vue.createBlock(_component_popover_header_footer, {