@dialpad/dialtone 9.107.0 → 9.107.2

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 (189) hide show
  1. package/dist/css/dialtone-default-theme.css +1 -0
  2. package/dist/css/dialtone-default-theme.min.css +1 -1
  3. package/dist/css/dialtone.css +1 -0
  4. package/dist/css/dialtone.min.css +1 -1
  5. package/dist/tokens/doc.json +16848 -16848
  6. package/dist/vue3/common/config.cjs +8 -0
  7. package/dist/vue3/common/config.cjs.map +1 -0
  8. package/dist/vue3/common/config.js +9 -0
  9. package/dist/vue3/common/config.js.map +1 -0
  10. package/dist/vue3/common/mixins/keyboard_list_navigation.cjs +2 -1
  11. package/dist/vue3/common/mixins/keyboard_list_navigation.cjs.map +1 -1
  12. package/dist/vue3/common/mixins/keyboard_list_navigation.js +2 -1
  13. package/dist/vue3/common/mixins/keyboard_list_navigation.js.map +1 -1
  14. package/dist/vue3/common/mixins/modal.cjs +4 -2
  15. package/dist/vue3/common/mixins/modal.cjs.map +1 -1
  16. package/dist/vue3/common/mixins/modal.js +4 -2
  17. package/dist/vue3/common/mixins/modal.js.map +1 -1
  18. package/dist/vue3/common/utils.cjs +28 -0
  19. package/dist/vue3/common/utils.cjs.map +1 -1
  20. package/dist/vue3/common/utils.js +28 -0
  21. package/dist/vue3/common/utils.js.map +1 -1
  22. package/dist/vue3/components/avatar/avatar.vue.cjs +3 -1
  23. package/dist/vue3/components/avatar/avatar.vue.cjs.map +1 -1
  24. package/dist/vue3/components/avatar/avatar.vue.js +4 -2
  25. package/dist/vue3/components/avatar/avatar.vue.js.map +1 -1
  26. package/dist/vue3/components/breadcrumbs/breadcrumb_item.vue.cjs +11 -6
  27. package/dist/vue3/components/breadcrumbs/breadcrumb_item.vue.cjs.map +1 -1
  28. package/dist/vue3/components/breadcrumbs/breadcrumb_item.vue.js +12 -7
  29. package/dist/vue3/components/breadcrumbs/breadcrumb_item.vue.js.map +1 -1
  30. package/dist/vue3/components/checkbox/checkbox.vue.cjs +6 -3
  31. package/dist/vue3/components/checkbox/checkbox.vue.cjs.map +1 -1
  32. package/dist/vue3/components/checkbox/checkbox.vue.js +7 -4
  33. package/dist/vue3/components/checkbox/checkbox.vue.js.map +1 -1
  34. package/dist/vue3/components/datepicker/composables/useCalendar.cjs +9 -8
  35. package/dist/vue3/components/datepicker/composables/useCalendar.cjs.map +1 -1
  36. package/dist/vue3/components/datepicker/composables/useCalendar.js +9 -8
  37. package/dist/vue3/components/datepicker/composables/useCalendar.js.map +1 -1
  38. package/dist/vue3/components/datepicker/composables/useMonthYearPicker.cjs +6 -5
  39. package/dist/vue3/components/datepicker/composables/useMonthYearPicker.cjs.map +1 -1
  40. package/dist/vue3/components/datepicker/composables/useMonthYearPicker.js +6 -5
  41. package/dist/vue3/components/datepicker/composables/useMonthYearPicker.js.map +1 -1
  42. package/dist/vue3/components/datepicker/datepicker.vue.cjs +2 -2
  43. package/dist/vue3/components/datepicker/datepicker.vue.cjs.map +1 -1
  44. package/dist/vue3/components/datepicker/datepicker.vue.js +2 -2
  45. package/dist/vue3/components/datepicker/datepicker.vue.js.map +1 -1
  46. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.cjs +2 -1
  47. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.cjs.map +1 -1
  48. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.js +2 -1
  49. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.js.map +1 -1
  50. package/dist/vue3/components/emoji_text_wrapper/emoji_text_wrapper.vue.cjs +2 -0
  51. package/dist/vue3/components/emoji_text_wrapper/emoji_text_wrapper.vue.cjs.map +1 -1
  52. package/dist/vue3/components/emoji_text_wrapper/emoji_text_wrapper.vue.js +3 -1
  53. package/dist/vue3/components/emoji_text_wrapper/emoji_text_wrapper.vue.js.map +1 -1
  54. package/dist/vue3/components/image_viewer/image_viewer.vue.cjs +3 -2
  55. package/dist/vue3/components/image_viewer/image_viewer.vue.cjs.map +1 -1
  56. package/dist/vue3/components/image_viewer/image_viewer.vue.js +3 -2
  57. package/dist/vue3/components/image_viewer/image_viewer.vue.js.map +1 -1
  58. package/dist/vue3/components/input/input.vue.cjs +8 -7
  59. package/dist/vue3/components/input/input.vue.cjs.map +1 -1
  60. package/dist/vue3/components/input/input.vue.js +10 -9
  61. package/dist/vue3/components/input/input.vue.js.map +1 -1
  62. package/dist/vue3/components/modal/modal.vue.cjs +2 -2
  63. package/dist/vue3/components/modal/modal.vue.cjs.map +1 -1
  64. package/dist/vue3/components/modal/modal.vue.js +3 -3
  65. package/dist/vue3/components/modal/modal.vue.js.map +1 -1
  66. package/dist/vue3/components/popover/popover.vue.cjs +7 -7
  67. package/dist/vue3/components/popover/popover.vue.cjs.map +1 -1
  68. package/dist/vue3/components/popover/popover.vue.js +8 -8
  69. package/dist/vue3/components/popover/popover.vue.js.map +1 -1
  70. package/dist/vue3/components/popover/popover_header_footer.vue.cjs +1 -1
  71. package/dist/vue3/components/popover/popover_header_footer.vue.cjs.map +1 -1
  72. package/dist/vue3/components/popover/popover_header_footer.vue.js +2 -2
  73. package/dist/vue3/components/popover/popover_header_footer.vue.js.map +1 -1
  74. package/dist/vue3/components/radio/radio.vue.cjs +5 -3
  75. package/dist/vue3/components/radio/radio.vue.cjs.map +1 -1
  76. package/dist/vue3/components/radio/radio.vue.js +7 -5
  77. package/dist/vue3/components/radio/radio.vue.js.map +1 -1
  78. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.cjs +2 -2
  79. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.cjs.map +1 -1
  80. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.js +3 -3
  81. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.js.map +1 -1
  82. package/dist/vue3/components/scroller/modules/dynamic_scroller.vue.cjs +4 -3
  83. package/dist/vue3/components/scroller/modules/dynamic_scroller.vue.cjs.map +1 -1
  84. package/dist/vue3/components/scroller/modules/dynamic_scroller.vue.js +4 -3
  85. package/dist/vue3/components/scroller/modules/dynamic_scroller.vue.js.map +1 -1
  86. package/dist/vue3/components/scroller/modules/scroller_item.vue.cjs +6 -5
  87. package/dist/vue3/components/scroller/modules/scroller_item.vue.cjs.map +1 -1
  88. package/dist/vue3/components/scroller/modules/scroller_item.vue.js +6 -5
  89. package/dist/vue3/components/scroller/modules/scroller_item.vue.js.map +1 -1
  90. package/dist/vue3/components/select_menu/select_menu.vue.cjs +5 -3
  91. package/dist/vue3/components/select_menu/select_menu.vue.cjs.map +1 -1
  92. package/dist/vue3/components/select_menu/select_menu.vue.js +7 -5
  93. package/dist/vue3/components/select_menu/select_menu.vue.js.map +1 -1
  94. package/dist/vue3/components/split_button/split_button.vue.cjs +5 -3
  95. package/dist/vue3/components/split_button/split_button.vue.cjs.map +1 -1
  96. package/dist/vue3/components/split_button/split_button.vue.js +6 -4
  97. package/dist/vue3/components/split_button/split_button.vue.js.map +1 -1
  98. package/dist/vue3/components/tab/tab_panel.vue.cjs +3 -2
  99. package/dist/vue3/components/tab/tab_panel.vue.cjs.map +1 -1
  100. package/dist/vue3/components/tab/tab_panel.vue.js +3 -2
  101. package/dist/vue3/components/tab/tab_panel.vue.js.map +1 -1
  102. package/dist/vue3/components/toggle/toggle.vue.cjs +10 -10
  103. package/dist/vue3/components/toggle/toggle.vue.cjs.map +1 -1
  104. package/dist/vue3/components/toggle/toggle.vue.js +11 -11
  105. package/dist/vue3/components/toggle/toggle.vue.js.map +1 -1
  106. package/dist/vue3/components/tooltip/tooltip.vue.cjs +3 -3
  107. package/dist/vue3/components/tooltip/tooltip.vue.cjs.map +1 -1
  108. package/dist/vue3/components/tooltip/tooltip.vue.js +4 -4
  109. package/dist/vue3/components/tooltip/tooltip.vue.js.map +1 -1
  110. package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.cjs +10 -5
  111. package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.cjs.map +1 -1
  112. package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.js +12 -7
  113. package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.js.map +1 -1
  114. package/dist/vue3/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.cjs +6 -5
  115. package/dist/vue3/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.cjs.map +1 -1
  116. package/dist/vue3/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.js +8 -7
  117. package/dist/vue3/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.js.map +1 -1
  118. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs +6 -5
  119. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs.map +1 -1
  120. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js +8 -7
  121. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js.map +1 -1
  122. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs +2 -2
  123. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs.map +1 -1
  124. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js +3 -3
  125. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js.map +1 -1
  126. package/dist/vue3/recipes/conversation_view/editor/editor.vue.cjs +7 -5
  127. package/dist/vue3/recipes/conversation_view/editor/editor.vue.cjs.map +1 -1
  128. package/dist/vue3/recipes/conversation_view/editor/editor.vue.js +8 -6
  129. package/dist/vue3/recipes/conversation_view/editor/editor.vue.js.map +1 -1
  130. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.cjs +10 -6
  131. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.cjs.map +1 -1
  132. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.js +11 -7
  133. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.js.map +1 -1
  134. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.cjs +19 -19
  135. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.cjs.map +1 -1
  136. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.js +20 -20
  137. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.js.map +1 -1
  138. package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.cjs +12 -10
  139. package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.cjs.map +1 -1
  140. package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.js +14 -12
  141. package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.js.map +1 -1
  142. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.cjs +9 -10
  143. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.cjs.map +1 -1
  144. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.js +11 -12
  145. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.js.map +1 -1
  146. package/dist/vue3/types/common/config/index.d.ts +3 -0
  147. package/dist/vue3/types/common/config/index.d.ts.map +1 -0
  148. package/dist/vue3/types/common/mixins/keyboard_list_navigation.d.ts.map +1 -1
  149. package/dist/vue3/types/common/mixins/modal.d.ts.map +1 -1
  150. package/dist/vue3/types/common/utils/index.d.ts +12 -0
  151. package/dist/vue3/types/common/utils/index.d.ts.map +1 -1
  152. package/dist/vue3/types/components/avatar/avatar.vue.d.ts.map +1 -1
  153. package/dist/vue3/types/components/breadcrumbs/breadcrumb_item.vue.d.ts +5 -1
  154. package/dist/vue3/types/components/breadcrumbs/breadcrumb_item.vue.d.ts.map +1 -1
  155. package/dist/vue3/types/components/checkbox/checkbox.vue.d.ts +3 -0
  156. package/dist/vue3/types/components/checkbox/checkbox.vue.d.ts.map +1 -1
  157. package/dist/vue3/types/components/datepicker/composables/useCalendar.d.ts.map +1 -1
  158. package/dist/vue3/types/components/datepicker/composables/useMonthYearPicker.d.ts.map +1 -1
  159. package/dist/vue3/types/components/emoji_picker/modules/emoji_tabset.vue.d.ts.map +1 -1
  160. package/dist/vue3/types/components/emoji_text_wrapper/emoji_text_wrapper.vue.d.ts.map +1 -1
  161. package/dist/vue3/types/components/input/input.vue.d.ts +3 -1
  162. package/dist/vue3/types/components/input/input.vue.d.ts.map +1 -1
  163. package/dist/vue3/types/components/modal/modal.vue.d.ts.map +1 -1
  164. package/dist/vue3/types/components/popover/popover.vue.d.ts.map +1 -1
  165. package/dist/vue3/types/components/popover/popover_header_footer.vue.d.ts.map +1 -1
  166. package/dist/vue3/types/components/radio/radio.vue.d.ts +3 -1
  167. package/dist/vue3/types/components/radio/radio.vue.d.ts.map +1 -1
  168. package/dist/vue3/types/components/select_menu/select_menu.vue.d.ts +3 -1
  169. package/dist/vue3/types/components/select_menu/select_menu.vue.d.ts.map +1 -1
  170. package/dist/vue3/types/components/split_button/split_button.vue.d.ts +2 -0
  171. package/dist/vue3/types/components/toggle/toggle.vue.d.ts +3 -4
  172. package/dist/vue3/types/components/toggle/toggle.vue.d.ts.map +1 -1
  173. package/dist/vue3/types/components/tooltip/tooltip.vue.d.ts.map +1 -1
  174. package/dist/vue3/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts +5 -1
  175. package/dist/vue3/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts.map +1 -1
  176. package/dist/vue3/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +3 -0
  177. package/dist/vue3/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts.map +1 -1
  178. package/dist/vue3/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +3 -0
  179. package/dist/vue3/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts.map +1 -1
  180. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts +3 -0
  181. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  182. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts +3 -0
  183. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  184. package/dist/vue3/types/recipes/leftbar/callbox/callbox.vue.d.ts.map +1 -1
  185. package/dist/vue3/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +3 -0
  186. package/dist/vue3/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts.map +1 -1
  187. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts +3 -0
  188. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  189. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"message_input.vue.js","sources":["../../../../recipes/conversation_view/message_input/message_input.vue"],"sourcesContent":["<!-- eslint-disable max-lines -->\n<template>\n <div\n data-qa=\"dt-recipe-message-input\"\n role=\"presentation\"\n class=\"d-recipe-message-input\"\n @dragover.prevent\n @drop.prevent=\"onDrop\"\n @paste=\"onPaste\"\n @mousedown=\"onMousedown\"\n >\n <!-- @slot Renders above the input, but still within the borders. -->\n <slot name=\"top\" />\n\n <!-- set key to selectedText to force update. otherwise this component may not reflect the active selection -->\n <dt-recipe-message-input-topbar\n v-if=\"richText\"\n :key=\"selectedText\"\n :bold-button-options=\"boldButtonOptions\"\n :italic-button-options=\"italicButtonOptions\"\n :strike-button-options=\"strikeButtonOptions\"\n :bullet-list-button-options=\"bulletListButtonOptions\"\n :ordered-list-button-options=\"orderedListButtonOptions\"\n :block-quote-button-options=\"blockQuoteButtonOptions\"\n :code-button-options=\"codeButtonOptions\"\n :code-block-button-options=\"codeBlockButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @click=\"handleTopbarClick\"\n >\n <template #link>\n <dt-recipe-message-input-link\n ref=\"link\"\n :open=\"linkDialogOpen\"\n :link-button-options=\"linkButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @opened=\"linkDialogOpened\"\n @set-link=\"setLink\"\n @remove-link=\"removeLink\"\n />\n </template>\n </dt-recipe-message-input-topbar>\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n v-dt-scrollbar\n class=\"d-recipe-message-input__editor-wrapper\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :allow-blockquote=\"richText\"\n :allow-bold=\"richText\"\n :allow-bullet-list=\"richText\"\n :allow-code=\"richText\"\n :allow-codeblock=\"richText\"\n :allow-italic=\"richText\"\n :allow-strike=\"richText\"\n :allow-underline=\"richText\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"inputClass\"\n :output-format=\"outputFormat\"\n :auto-focus=\"autoFocus\"\n :link=\"richText\"\n :placeholder=\"placeholder\"\n :prevent-typing=\"preventTyping\"\n :mention-suggestion=\"mentionSuggestion\"\n :channel-suggestion=\"channelSuggestion\"\n :slash-command-suggestion=\"slashCommandSuggestion\"\n :additional-extensions=\"additionalExtensions\"\n :hide-link-bubble-menu=\"hideLinkBubbleMenu\"\n v-bind=\"$attrs\"\n @input=\"onInput\"\n @text-input=\"onTextInput\"\n @enter=\"onSend\"\n @selected=\"selectedText = $event\"\n @edit-link=\"initLinkDialog\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"d-recipe-message-input__bottom-section\">\n <!-- Left content -->\n <div class=\"d-recipe-message-input__bottom-section-left\">\n <dt-stack\n gap=\"200\"\n direction=\"row\"\n >\n <dt-button\n v-if=\"showImagePicker\"\n v-dt-tooltip:top-start=\"showImagePicker?.tooltipLabel\"\n data-qa=\"dt-recipe-message-input-image-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"showImagePicker.ariaLabel\"\n @click=\"onSelectImage\"\n @mouseenter=\"imagePickerFocus = true\"\n @mouseleave=\"imagePickerFocus = false\"\n @focus=\"imagePickerFocus = true\"\n @blur=\"imagePickerFocus = false\"\n >\n <template #icon>\n <dt-icon-image size=\"300\" />\n </template>\n </dt-button>\n <dt-input\n ref=\"messageInputImageUpload\"\n data-qa=\"dt-recipe-message-input-image-input\"\n accept=\"image/*, video/*\"\n type=\"file\"\n class=\"d-recipe-message-input__image-input\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n <dt-popover\n v-if=\"showEmojiPicker\"\n open.sync=\"emojiPickerOpened\"\n data-qa=\"dt-recipe-message-input-emoji-picker-popover\"\n initial-focus-element=\"#searchInput\"\n padding=\"none\"\n >\n <template #anchor=\"{ attrs }\">\n <dt-button\n v-dt-tooltip=\"emojiTooltipMessage\"\n v-bind=\"attrs\"\n data-qa=\"dt-recipe-message-input-emoji-picker-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"emojiButtonAriaLabel\"\n @click=\"toggleEmojiPicker\"\n @mouseenter=\"emojiPickerFocus = true\"\n @mouseleave=\"emojiPickerFocus = false\"\n @focus=\"emojiPickerFocus = true\"\n @blur=\"emojiPickerFocus = false\"\n >\n <template #icon>\n <dt-icon-very-satisfied\n v-if=\"emojiPickerHovered\"\n size=\"300\"\n />\n <dt-icon-satisfied\n v-else\n size=\"300\"\n />\n </template>\n </dt-button>\n </template>\n <template #content=\"{ close }\">\n <dt-emoji-picker\n v-bind=\"emojiPickerProps\"\n @skin-tone=\"onSkinTone\"\n @selected-emoji=\"(emoji) => onSelectEmoji(emoji, close)\"\n />\n </template>\n </dt-popover>\n <!-- @slot Slot for emojiGiphy picker -->\n <slot name=\"emojiGiphyPicker\" />\n <!-- @slot Slot to add extra action icons next to default ones -->\n <slot name=\"customActionIcons\" />\n </dt-stack>\n </div>\n <!-- Right content -->\n <div class=\"d-recipe-message-input__bottom-section-right\">\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n >\n <!-- @slot Slot for sms count -->\n <div class=\"d-recipe-message-input__sms-count\">\n <slot name=\"smsCount\" />\n </div>\n\n <!-- Optionally displayed remaining character counter -->\n <dt-tooltip\n v-if=\"Boolean(showCharacterLimit)\"\n class=\"d-recipe-message-input__remaining-char-tooltip\"\n placement=\"top-end\"\n :enabled=\"characterLimitTooltipEnabled\"\n :message=\"showCharacterLimit.message\"\n :offset=\"[10, 8]\"\n >\n <template #anchor>\n <p\n v-show=\"displayCharacterLimitWarning\"\n class=\"d-recipe-message-input__remaining-char\"\n data-qa=\"dt-recipe-message-input-character-limit\"\n >\n {{ showCharacterLimit.count - inputLength }}\n </p>\n </template>\n </dt-tooltip>\n\n <!-- Cancel button for edit mode -->\n <dt-button\n v-if=\"showCancel\"\n data-qa=\"dt-recipe-message-input-cancel-button\"\n class=\"d-recipe-message-input__button d-recipe-message-input__cancel-button\"\n size=\"sm\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"showCancel.ariaLabel\"\n @click=\"onCancel\"\n >\n <p>{{ showCancel.text }}</p>\n </dt-button>\n\n <!-- @slot Slot for sendButton picker -->\n <slot name=\"sendButton\">\n <!-- Send button -->\n <!-- Right positioned UI - send button -->\n <dt-button\n v-if=\"showSend\"\n v-dt-tooltip:top-end=\"showSend?.tooltipLabel\"\n data-qa=\"dt-recipe-message-input-send-btn\"\n size=\"sm\"\n kind=\"default\"\n importance=\"primary\"\n :class=\"[\n 'd-recipe-message-input__button d-recipe-message-input__send-button',\n {\n 'd-recipe-message-input__send-button--disabled': isSendDisabled,\n 'd-btn--icon-only': showSendIcon,\n },\n ]\"\n :aria-label=\"showSend.ariaLabel\"\n :aria-disabled=\"isSendDisabled\"\n @click=\"onSend\"\n >\n <template\n v-if=\"showSendIcon\"\n #icon\n >\n <!-- @slot Slot for send button icon -->\n <slot\n name=\"sendIcon\"\n :icon-size=\"sendIconSize\"\n >\n <dt-icon-send :size=\"sendIconSize\" />\n </slot>\n </template>\n <template v-if=\"showSend.text\">\n <p>{{ showSend.text }}</p>\n </template>\n </dt-button>\n </slot>\n </dt-stack>\n </div>\n </section>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport lastActiveNodes from './last_active_nodes';\nimport MeetingPill from './extensions/meeting_pill/meeting_pill';\nimport { DtButton } from '@/components/button';\nimport { DtEmojiPicker } from '@/components/emoji_picker';\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtStack } from '@/components/stack';\nimport {\n DtIconImage, DtIconVerySatisfied, DtIconSatisfied, DtIconSend,\n} from '@dialpad/dialtone-icons/vue3';\nimport DtRecipeMessageInputTopbar from './message_input_topbar.vue';\nimport DtRecipeMessageInputLink from './message_input_link.vue';\n\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from '../editor/editor_constants.js';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtInput,\n DtPopover,\n DtRecipeMessageInputTopbar,\n DtRecipeMessageInputLink,\n DtRichTextEditor,\n DtTooltip,\n DtStack,\n DtIconImage,\n DtIconVerySatisfied,\n DtIconSatisfied,\n DtIconSend,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Displays all the buttons for rich text formatting above the message input, and enables it within the editor.\n * Rich text formatting for the purposes of this component is defined as:\n *\n * bold, italic, strikethrough, lists, blockquotes, inline code tags, and code blocks.\n *\n * If you are sending a message to a phone rather than a Dialpad to Dialpad message, you should have this as false.\n */\n richText: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n modelValue: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Prevents the user from typing any further. Deleting text will still work.\n */\n preventTyping: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * The output format that the editor uses when emitting the \"@input\" event.\n * One of `text`, `json`, `html`. See https://tiptap.dev/guide/output for\n * examples.\n * @values text, json, html\n */\n outputFormat: {\n type: String,\n default: 'json',\n validator (outputFormat) {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(outputFormat);\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Disable Send Button\n */\n disableSend: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n // Emoji picker props\n showEmojiPicker: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Props to pass into the emoji picker.\n */\n emojiPickerProps: {\n type: Object,\n default: () => ({}),\n validate (emojiPickerProps) {\n return [\n 'searchNoResultsLabel',\n 'searchResultsLabel',\n 'searchPlaceholderLabel',\n 'skinSelectorButtonTooltipLabel',\n 'tabSetLabels',\n ].every((prop) => emojiPickerProps[prop] != null);\n },\n },\n\n /**\n * Emoji button tooltip label\n */\n emojiTooltipMessage: {\n type: String,\n default: 'Emoji',\n },\n\n // Aria label for buttons\n /**\n * Emoji button aria label\n */\n emojiButtonAriaLabel: {\n type: String,\n default: 'emoji button',\n },\n\n /**\n * Enable character Limit warning\n */\n showCharacterLimit: {\n type: [Boolean, Object],\n default: () => ({ count: 1500, warning: 500, message: '' }),\n },\n\n showImagePicker: {\n type: [Boolean, Object],\n default: () => ({\n tooltipLabel: 'Attach Image',\n ariaLabel: 'image button',\n }),\n },\n\n /**\n * Send button defaults.\n */\n showSend: {\n type: [Boolean, Object],\n default: () => ({}),\n },\n\n /**\n * Cancel button defaults.\n */\n showCancel: {\n type: [Boolean, Object],\n default: () => ({ text: 'Cancel' }),\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the contacts for suggestion.\n * items({ query }) => { return [ContactObject]; }\n * ContactObject format:\n * { name: string, avatarSrc: string, id: string }\n *\n * When null, it does not add the plugin.\n */\n mentionSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the channels for suggestion.\n * items({ query }) => { return [ChannelObject]; }\n * ChannelObject format:\n * { name: string, id: string, locked: boolean }\n *\n * When null, it does not add the plugin. Setting locked to true will display a lock rather than hash.\n */\n channelSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the slash commands for suggestion.\n * items({ query }) => { return [SlashCommandObject]; }\n * SlashCommandObject format:\n * { command: string, description: string, parametersExample?: string }\n * The \"parametersExample\" parameter is optional, and describes an example\n * of the parameters that command can take.\n *\n * When null, it does not add the plugin.\n */\n slashCommandSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * descriptive text fields for the bold button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n boldButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle bold on selected text',\n tooltipText: 'Bold',\n keyboardShortcutText: 'Mod + B',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n italicButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle italic on selected text',\n tooltipText: 'Italic',\n keyboardShortcutText: 'Mod + I',\n }),\n },\n\n /**\n * descriptive text fields for the strikethrough button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n strikeButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle strikethrough on selected text',\n tooltipText: 'Strikethrough',\n keyboardShortcutText: 'Mod + Shift + S',\n }),\n },\n\n /**\n * descriptive text fields for the link button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n linkButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Create or edit link on selected text',\n tooltipText: 'Link',\n // TODO: implement mod k\n keyboardShortcutText: 'Mod + K',\n dialogTitle: 'Add a link',\n textLabel: 'Text to display (optional)',\n linkLabel: 'Link',\n linkPlaceholder: 'e.g. https://www.dialpad.com',\n removeLabel: 'Remove',\n cancelLabel: 'Cancel',\n confirmLabel: 'Done',\n visuallyHiddenCloseText: 'Close link dialog',\n }),\n },\n\n /**\n * descriptive text fields for the bullet list button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n bulletListButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle bullet list on selected text',\n tooltipText: 'Bullet list',\n keyboardShortcutText: 'Mod + Shift + 8',\n }),\n },\n\n /**\n * descriptive text fields for the ordered list button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n orderedListButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle ordered list on selected text',\n tooltipText: 'Ordered list',\n keyboardShortcutText: 'Mod + Shift + 7',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n blockQuoteButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle Blockquote on selected text',\n tooltipText: 'Blockquote',\n keyboardShortcutText: 'Mod + Shift + B',\n }),\n },\n\n /**\n * descriptive text fields for the code button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n codeButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle code tag on selected text',\n tooltipText: 'Code',\n keyboardShortcutText: 'Mod + E',\n }),\n },\n\n /**\n * descriptive text fields for the code block button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n codeBlockButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle code block on selected text',\n tooltipText: 'Code block',\n keyboardShortcutText: 'Mod + Alt + C',\n }),\n },\n },\n\n emits: [\n /**\n * Fires when send button is clicked\n *\n * @event submit\n * @type {String}\n */\n 'submit',\n\n /**\n * Fires when media is selected from image button\n *\n * @event select-media\n * @type {Array}\n */\n 'select-media',\n\n /**\n * Fires when media is dropped into the message input\n *\n * @event add-media\n * @type {Array}\n */\n 'add-media',\n\n /**\n * Fires when media is pasted into the message input\n *\n * @event paste-media\n * @type {Array}\n */\n 'paste-media',\n\n /**\n * Fires when cancel button is pressed (only on edit mode)\n *\n * @event cancel\n * @type {Boolean}\n */\n 'cancel',\n\n /**\n * Fires when skin tone is selected from the emoji picker\n *\n * @event skin-tone\n * @type {String}\n */\n 'skin-tone',\n\n /**\n * Fires when emoji is selected from the emoji picker\n *\n * @event selected-emoji\n * @type {String}\n */\n 'selected-emoji',\n\n /**\n * Fires when a slash command is selected\n *\n * @event selected-command\n * @type {String}\n */\n 'selected-command',\n\n /**\n * Fires when meeting pill is closed\n *\n * @event meeting-pill-close\n * @type {String}\n */\n 'meeting-pill-close',\n\n /**\n * Event to sync the value with the parent\n * @event update:modelValue\n * @type {String|JSON}\n */\n 'update:modelValue',\n\n /**\n * Emitted when input changes, returns text content only\n * @event text-input\n * @type {String}\n */\n 'text-input',\n ],\n\n data () {\n return {\n // If an ordered list is nested within an unordered list, we only want to show the currently selected list as\n // active. This function performs the logic to determine the farthest active node from the root.\n lastActiveNodes,\n additionalExtensions: [MeetingPill],\n internalInputValue: this.modelValue, // internal input content\n imagePickerFocus: false,\n emojiPickerFocus: false,\n emojiPickerOpened: false,\n isFocused: false,\n linkOptions: {\n class: 'd-link d-c-text d-d-inline-block',\n },\n\n linkDialogOpen: false,\n selectedText: '',\n text: '',\n hideLinkBubbleMenu: false,\n };\n },\n\n computed: {\n\n showSendIcon () {\n return !this.showSend.text;\n },\n\n inputLength () {\n return this.text.length;\n },\n\n displayCharacterLimitWarning () {\n return (\n Boolean(this.showCharacterLimit) &&\n this.showCharacterLimit.count - this.inputLength <=\n this.showCharacterLimit.warning\n );\n },\n\n characterLimitTooltipEnabled () {\n return (\n this.showCharacterLimit.message &&\n this.showCharacterLimit.count - this.inputLength < 0\n );\n },\n\n isSendDisabled () {\n return (\n this.disableSend ||\n (this.showCharacterLimit &&\n this.inputLength > this.showCharacterLimit.count)\n );\n },\n\n computedCloseButtonProps () {\n return {\n ariaLabel: 'Close',\n };\n },\n\n emojiPickerHovered () {\n return this.emojiPickerFocus || this.emojiPickerOpened;\n },\n\n sendIconSize () {\n return '300';\n },\n },\n\n watch: {\n modelValue (newValue) {\n this.internalInputValue = newValue;\n },\n\n emojiPickerOpened (newValue) {\n if (!newValue) {\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n },\n\n created () {\n if (this.modelValue && this.outputFormat === 'text') {\n this.internalInputValue = this.modelValue.replace(/\\n/g, '<br>');\n } else {\n this.internalInputValue = this.modelValue;\n }\n },\n\n methods: {\n linkDialogOpened (value) {\n this.linkDialogOpen = value;\n if (value === true) {\n this.initLinkDialog();\n } else {\n this.hideLinkBubbleMenu = false;\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n\n // eslint-disable-next-line complexity\n handleTopbarClick (type) {\n const editor = this.$refs.richTextEditor?.editor;\n // Key is the name returned in the event, value is the name of the TipTap command function to run.\n const typeToCommandMap = {\n bold: () => editor?.chain().focus().toggleBold().run(),\n italic: () => editor?.chain().focus().toggleItalic().run(),\n strike: () => editor?.chain().focus().toggleStrike().run(),\n bulletList: () => editor?.chain().focus().toggleBulletList().run(),\n orderedList: () => editor?.chain().focus().toggleOrderedList().run(),\n blockquote: () => editor?.chain().focus().toggleBlockquote().run(),\n code: () => editor?.chain().focus().toggleCode().run(),\n codeBlock: () => editor?.chain().focus().toggleCodeBlock().run(),\n };\n\n if (editor && typeToCommandMap[type]) {\n typeToCommandMap[type]();\n }\n },\n\n // Checks if the node currently selected is active ex/ the bold button is active if the selected text is bold\n isSelectionActive (type) {\n if (['bulletList', 'orderedList'].includes(type)) {\n return this.lastActiveNodes(this.$refs.richTextEditor?.editor?.state, [{ type: 'bulletList' }, { type: 'orderedList' }]).includes(type) && this.isFocused;\n }\n return this.$refs.richTextEditor?.editor?.isActive(type) && this.isFocused;\n },\n\n initLinkDialog () {\n this.$refs.link.setInitialValues(this.selectedText, this.$refs.richTextEditor?.editor?.getAttributes('link')?.href);\n this.hideLinkBubbleMenu = true;\n this.linkDialogOpen = true;\n },\n\n removeLink () {\n this.$refs.richTextEditor?.removeLink();\n this.linkDialogOpen = false;\n },\n\n setLink (linkText, linkInput) {\n this.$refs.richTextEditor.setLink(\n linkInput, linkText, this.linkOptions, EDITOR_SUPPORTED_LINK_PROTOCOLS, EDITOR_DEFAULT_LINK_PREFIX,\n );\n this.linkDialogOpen = false;\n },\n\n // Mousedown instead of click because it fires before the blur event.\n onMousedown (e) {\n const isWithinInput = this.$refs.richTextEditor.$el\n .querySelector('.tiptap')\n .contains(e.target);\n\n // If the click is not within the tiptap rich text editor input itself, but still within the wrapping div,\n // focus the editor.\n if (!isWithinInput) {\n // Prevent default prevents blurring the rich text editor input when it is already focused.\n e.preventDefault();\n this.$refs.richTextEditor.focusEditor();\n }\n },\n\n onDrop (e) {\n const dt = e.dataTransfer;\n const files = Array.from(dt.files);\n this.$emit('add-media', files);\n },\n\n onPaste (e) {\n if (e.clipboardData.files.length) {\n e.stopPropagation();\n e.preventDefault();\n const files = [...e.clipboardData.files];\n this.$emit('paste-media', files);\n }\n },\n\n onSkinTone (skinTone) {\n this.$emit('skin-tone', skinTone);\n },\n\n onSelectEmoji (emoji, close) {\n if (!emoji) {\n return;\n }\n\n if (!emoji.shift_key) {\n close();\n }\n\n // Insert emoji into the editor\n this.$refs.richTextEditor.editor.commands.insertContent({\n type: 'emoji',\n attrs: {\n code: emoji.shortname,\n },\n });\n this.$emit('selected-emoji', emoji);\n },\n\n onSelectImage () {\n this.$refs.messageInputImageUpload.$refs.input.click();\n },\n\n onImageUpload () {\n this.$emit(\n 'select-media',\n this.$refs.messageInputImageUpload.$refs.input.files,\n );\n },\n\n toggleEmojiPicker () {\n this.emojiPickerOpened = !this.emojiPickerOpened;\n },\n\n onSend () {\n if (this.isSendDisabled) {\n return;\n }\n this.$emit('submit', this.internalInputValue);\n },\n\n onCancel () {\n this.$emit('cancel');\n },\n\n onInput (event) {\n this.$emit('update:modelValue', event);\n },\n\n onTextInput (event) {\n this.text = event;\n this.$emit('text-input', event);\n },\n },\n};\n</script>\n"],"names":["_createElementBlock","_withModifiers","_renderSlot","_createBlock","_createVNode","_createCommentVNode","_normalizeStyle","_mergeProps","_createElementVNode","_withCtx","_toDisplayString","_normalizeClass","_createSlots","_openBlock"],"mappings":"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"}
1
+ {"version":3,"file":"message_input.vue.js","sources":["../../../../recipes/conversation_view/message_input/message_input.vue"],"sourcesContent":["<!-- eslint-disable max-lines -->\n<template>\n <div\n data-qa=\"dt-recipe-message-input\"\n role=\"presentation\"\n class=\"d-recipe-message-input\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n @dragover.prevent\n @drop.prevent=\"onDrop\"\n @paste=\"onPaste\"\n @mousedown=\"onMousedown\"\n >\n <!-- @slot Renders above the input, but still within the borders. -->\n <slot name=\"top\" />\n\n <!-- set key to selectedText to force update. otherwise this component may not reflect the active selection -->\n <dt-recipe-message-input-topbar\n v-if=\"richText\"\n :key=\"selectedText\"\n :bold-button-options=\"boldButtonOptions\"\n :italic-button-options=\"italicButtonOptions\"\n :strike-button-options=\"strikeButtonOptions\"\n :bullet-list-button-options=\"bulletListButtonOptions\"\n :ordered-list-button-options=\"orderedListButtonOptions\"\n :block-quote-button-options=\"blockQuoteButtonOptions\"\n :code-button-options=\"codeButtonOptions\"\n :code-block-button-options=\"codeBlockButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @click=\"handleTopbarClick\"\n >\n <template #link>\n <dt-recipe-message-input-link\n ref=\"link\"\n :open=\"linkDialogOpen\"\n :link-button-options=\"linkButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @opened=\"linkDialogOpened\"\n @set-link=\"setLink\"\n @remove-link=\"removeLink\"\n />\n </template>\n </dt-recipe-message-input-topbar>\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n v-dt-scrollbar\n class=\"d-recipe-message-input__editor-wrapper\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :allow-blockquote=\"richText\"\n :allow-bold=\"richText\"\n :allow-bullet-list=\"richText\"\n :allow-code=\"richText\"\n :allow-codeblock=\"richText\"\n :allow-italic=\"richText\"\n :allow-strike=\"richText\"\n :allow-underline=\"richText\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"inputClass\"\n :output-format=\"outputFormat\"\n :auto-focus=\"autoFocus\"\n :link=\"richText\"\n :placeholder=\"placeholder\"\n :prevent-typing=\"preventTyping\"\n :mention-suggestion=\"mentionSuggestion\"\n :channel-suggestion=\"channelSuggestion\"\n :slash-command-suggestion=\"slashCommandSuggestion\"\n :additional-extensions=\"additionalExtensions\"\n :hide-link-bubble-menu=\"hideLinkBubbleMenu\"\n v-bind=\"removeClassStyleAttrs($attrs)\"\n @input=\"onInput\"\n @text-input=\"onTextInput\"\n @enter=\"onSend\"\n @selected=\"selectedText = $event\"\n @edit-link=\"initLinkDialog\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"d-recipe-message-input__bottom-section\">\n <!-- Left content -->\n <div class=\"d-recipe-message-input__bottom-section-left\">\n <dt-stack\n gap=\"200\"\n direction=\"row\"\n >\n <dt-button\n v-if=\"showImagePicker\"\n v-dt-tooltip:top-start=\"showImagePicker?.tooltipLabel\"\n data-qa=\"dt-recipe-message-input-image-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"showImagePicker.ariaLabel\"\n @click=\"onSelectImage\"\n @mouseenter=\"imagePickerFocus = true\"\n @mouseleave=\"imagePickerFocus = false\"\n @focus=\"imagePickerFocus = true\"\n @blur=\"imagePickerFocus = false\"\n >\n <template #icon>\n <dt-icon-image size=\"300\" />\n </template>\n </dt-button>\n <dt-input\n ref=\"messageInputImageUpload\"\n data-qa=\"dt-recipe-message-input-image-input\"\n accept=\"image/*, video/*\"\n type=\"file\"\n class=\"d-recipe-message-input__image-input\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n <dt-popover\n v-if=\"showEmojiPicker\"\n open.sync=\"emojiPickerOpened\"\n data-qa=\"dt-recipe-message-input-emoji-picker-popover\"\n initial-focus-element=\"#searchInput\"\n padding=\"none\"\n >\n <template #anchor=\"{ attrs }\">\n <dt-button\n v-dt-tooltip=\"emojiTooltipMessage\"\n v-bind=\"attrs\"\n data-qa=\"dt-recipe-message-input-emoji-picker-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"emojiButtonAriaLabel\"\n @click=\"toggleEmojiPicker\"\n @mouseenter=\"emojiPickerFocus = true\"\n @mouseleave=\"emojiPickerFocus = false\"\n @focus=\"emojiPickerFocus = true\"\n @blur=\"emojiPickerFocus = false\"\n >\n <template #icon>\n <dt-icon-very-satisfied\n v-if=\"emojiPickerHovered\"\n size=\"300\"\n />\n <dt-icon-satisfied\n v-else\n size=\"300\"\n />\n </template>\n </dt-button>\n </template>\n <template #content=\"{ close }\">\n <dt-emoji-picker\n v-bind=\"emojiPickerProps\"\n @skin-tone=\"onSkinTone\"\n @selected-emoji=\"(emoji) => onSelectEmoji(emoji, close)\"\n />\n </template>\n </dt-popover>\n <!-- @slot Slot for emojiGiphy picker -->\n <slot name=\"emojiGiphyPicker\" />\n <!-- @slot Slot to add extra action icons next to default ones -->\n <slot name=\"customActionIcons\" />\n </dt-stack>\n </div>\n <!-- Right content -->\n <div class=\"d-recipe-message-input__bottom-section-right\">\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n >\n <!-- @slot Slot for sms count -->\n <div class=\"d-recipe-message-input__sms-count\">\n <slot name=\"smsCount\" />\n </div>\n\n <!-- Optionally displayed remaining character counter -->\n <dt-tooltip\n v-if=\"Boolean(showCharacterLimit)\"\n class=\"d-recipe-message-input__remaining-char-tooltip\"\n placement=\"top-end\"\n :enabled=\"characterLimitTooltipEnabled\"\n :message=\"showCharacterLimit.message\"\n :offset=\"[10, 8]\"\n >\n <template #anchor>\n <p\n v-show=\"displayCharacterLimitWarning\"\n class=\"d-recipe-message-input__remaining-char\"\n data-qa=\"dt-recipe-message-input-character-limit\"\n >\n {{ showCharacterLimit.count - inputLength }}\n </p>\n </template>\n </dt-tooltip>\n\n <!-- Cancel button for edit mode -->\n <dt-button\n v-if=\"showCancel\"\n data-qa=\"dt-recipe-message-input-cancel-button\"\n class=\"d-recipe-message-input__button d-recipe-message-input__cancel-button\"\n size=\"sm\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"showCancel.ariaLabel\"\n @click=\"onCancel\"\n >\n <p>{{ showCancel.text }}</p>\n </dt-button>\n\n <!-- @slot Slot for sendButton picker -->\n <slot name=\"sendButton\">\n <!-- Send button -->\n <!-- Right positioned UI - send button -->\n <dt-button\n v-if=\"showSend\"\n v-dt-tooltip:top-end=\"showSend?.tooltipLabel\"\n data-qa=\"dt-recipe-message-input-send-btn\"\n size=\"sm\"\n kind=\"default\"\n importance=\"primary\"\n :class=\"[\n 'd-recipe-message-input__button d-recipe-message-input__send-button',\n {\n 'd-recipe-message-input__send-button--disabled': isSendDisabled,\n 'd-btn--icon-only': showSendIcon,\n },\n ]\"\n :aria-label=\"showSend.ariaLabel\"\n :aria-disabled=\"isSendDisabled\"\n @click=\"onSend\"\n >\n <template\n v-if=\"showSendIcon\"\n #icon\n >\n <!-- @slot Slot for send button icon -->\n <slot\n name=\"sendIcon\"\n :icon-size=\"sendIconSize\"\n >\n <dt-icon-send :size=\"sendIconSize\" />\n </slot>\n </template>\n <template v-if=\"showSend.text\">\n <p>{{ showSend.text }}</p>\n </template>\n </dt-button>\n </slot>\n </dt-stack>\n </div>\n </section>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport lastActiveNodes from './last_active_nodes';\nimport { removeClassStyleAttrs, returnFirstEl, addClassStyleAttrs } from '@/common/utils';\nimport MeetingPill from './extensions/meeting_pill/meeting_pill';\nimport { DtButton } from '@/components/button';\nimport { DtEmojiPicker } from '@/components/emoji_picker';\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtStack } from '@/components/stack';\nimport {\n DtIconImage, DtIconVerySatisfied, DtIconSatisfied, DtIconSend,\n} from '@dialpad/dialtone-icons/vue3';\nimport DtRecipeMessageInputTopbar from './message_input_topbar.vue';\nimport DtRecipeMessageInputLink from './message_input_link.vue';\n\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from '../editor/editor_constants.js';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtInput,\n DtPopover,\n DtRecipeMessageInputTopbar,\n DtRecipeMessageInputLink,\n DtRichTextEditor,\n DtTooltip,\n DtStack,\n DtIconImage,\n DtIconVerySatisfied,\n DtIconSatisfied,\n DtIconSend,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Displays all the buttons for rich text formatting above the message input, and enables it within the editor.\n * Rich text formatting for the purposes of this component is defined as:\n *\n * bold, italic, strikethrough, lists, blockquotes, inline code tags, and code blocks.\n *\n * If you are sending a message to a phone rather than a Dialpad to Dialpad message, you should have this as false.\n */\n richText: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n modelValue: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Prevents the user from typing any further. Deleting text will still work.\n */\n preventTyping: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * The output format that the editor uses when emitting the \"@input\" event.\n * One of `text`, `json`, `html`. See https://tiptap.dev/guide/output for\n * examples.\n * @values text, json, html\n */\n outputFormat: {\n type: String,\n default: 'json',\n validator (outputFormat) {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(outputFormat);\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Disable Send Button\n */\n disableSend: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n // Emoji picker props\n showEmojiPicker: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Props to pass into the emoji picker.\n */\n emojiPickerProps: {\n type: Object,\n default: () => ({}),\n validate (emojiPickerProps) {\n return [\n 'searchNoResultsLabel',\n 'searchResultsLabel',\n 'searchPlaceholderLabel',\n 'skinSelectorButtonTooltipLabel',\n 'tabSetLabels',\n ].every((prop) => emojiPickerProps[prop] != null);\n },\n },\n\n /**\n * Emoji button tooltip label\n */\n emojiTooltipMessage: {\n type: String,\n default: 'Emoji',\n },\n\n // Aria label for buttons\n /**\n * Emoji button aria label\n */\n emojiButtonAriaLabel: {\n type: String,\n default: 'emoji button',\n },\n\n /**\n * Enable character Limit warning\n */\n showCharacterLimit: {\n type: [Boolean, Object],\n default: () => ({ count: 1500, warning: 500, message: '' }),\n },\n\n showImagePicker: {\n type: [Boolean, Object],\n default: () => ({\n tooltipLabel: 'Attach Image',\n ariaLabel: 'image button',\n }),\n },\n\n /**\n * Send button defaults.\n */\n showSend: {\n type: [Boolean, Object],\n default: () => ({}),\n },\n\n /**\n * Cancel button defaults.\n */\n showCancel: {\n type: [Boolean, Object],\n default: () => ({ text: 'Cancel' }),\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the contacts for suggestion.\n * items({ query }) => { return [ContactObject]; }\n * ContactObject format:\n * { name: string, avatarSrc: string, id: string }\n *\n * When null, it does not add the plugin.\n */\n mentionSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the channels for suggestion.\n * items({ query }) => { return [ChannelObject]; }\n * ChannelObject format:\n * { name: string, id: string, locked: boolean }\n *\n * When null, it does not add the plugin. Setting locked to true will display a lock rather than hash.\n */\n channelSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the slash commands for suggestion.\n * items({ query }) => { return [SlashCommandObject]; }\n * SlashCommandObject format:\n * { command: string, description: string, parametersExample?: string }\n * The \"parametersExample\" parameter is optional, and describes an example\n * of the parameters that command can take.\n *\n * When null, it does not add the plugin.\n */\n slashCommandSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * descriptive text fields for the bold button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n boldButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle bold on selected text',\n tooltipText: 'Bold',\n keyboardShortcutText: 'Mod + B',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n italicButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle italic on selected text',\n tooltipText: 'Italic',\n keyboardShortcutText: 'Mod + I',\n }),\n },\n\n /**\n * descriptive text fields for the strikethrough button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n strikeButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle strikethrough on selected text',\n tooltipText: 'Strikethrough',\n keyboardShortcutText: 'Mod + Shift + S',\n }),\n },\n\n /**\n * descriptive text fields for the link button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n linkButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Create or edit link on selected text',\n tooltipText: 'Link',\n // TODO: implement mod k\n keyboardShortcutText: 'Mod + K',\n dialogTitle: 'Add a link',\n textLabel: 'Text to display (optional)',\n linkLabel: 'Link',\n linkPlaceholder: 'e.g. https://www.dialpad.com',\n removeLabel: 'Remove',\n cancelLabel: 'Cancel',\n confirmLabel: 'Done',\n visuallyHiddenCloseText: 'Close link dialog',\n }),\n },\n\n /**\n * descriptive text fields for the bullet list button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n bulletListButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle bullet list on selected text',\n tooltipText: 'Bullet list',\n keyboardShortcutText: 'Mod + Shift + 8',\n }),\n },\n\n /**\n * descriptive text fields for the ordered list button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n orderedListButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle ordered list on selected text',\n tooltipText: 'Ordered list',\n keyboardShortcutText: 'Mod + Shift + 7',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n blockQuoteButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle Blockquote on selected text',\n tooltipText: 'Blockquote',\n keyboardShortcutText: 'Mod + Shift + B',\n }),\n },\n\n /**\n * descriptive text fields for the code button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n codeButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle code tag on selected text',\n tooltipText: 'Code',\n keyboardShortcutText: 'Mod + E',\n }),\n },\n\n /**\n * descriptive text fields for the code block button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n codeBlockButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle code block on selected text',\n tooltipText: 'Code block',\n keyboardShortcutText: 'Mod + Alt + C',\n }),\n },\n },\n\n emits: [\n /**\n * Fires when send button is clicked\n *\n * @event submit\n * @type {String}\n */\n 'submit',\n\n /**\n * Fires when media is selected from image button\n *\n * @event select-media\n * @type {Array}\n */\n 'select-media',\n\n /**\n * Fires when media is dropped into the message input\n *\n * @event add-media\n * @type {Array}\n */\n 'add-media',\n\n /**\n * Fires when media is pasted into the message input\n *\n * @event paste-media\n * @type {Array}\n */\n 'paste-media',\n\n /**\n * Fires when cancel button is pressed (only on edit mode)\n *\n * @event cancel\n * @type {Boolean}\n */\n 'cancel',\n\n /**\n * Fires when skin tone is selected from the emoji picker\n *\n * @event skin-tone\n * @type {String}\n */\n 'skin-tone',\n\n /**\n * Fires when emoji is selected from the emoji picker\n *\n * @event selected-emoji\n * @type {String}\n */\n 'selected-emoji',\n\n /**\n * Fires when a slash command is selected\n *\n * @event selected-command\n * @type {String}\n */\n 'selected-command',\n\n /**\n * Fires when meeting pill is closed\n *\n * @event meeting-pill-close\n * @type {String}\n */\n 'meeting-pill-close',\n\n /**\n * Event to sync the value with the parent\n * @event update:modelValue\n * @type {String|JSON}\n */\n 'update:modelValue',\n\n /**\n * Emitted when input changes, returns text content only\n * @event text-input\n * @type {String}\n */\n 'text-input',\n ],\n\n data () {\n return {\n // If an ordered list is nested within an unordered list, we only want to show the currently selected list as\n // active. This function performs the logic to determine the farthest active node from the root.\n lastActiveNodes,\n additionalExtensions: [MeetingPill],\n internalInputValue: this.modelValue, // internal input content\n imagePickerFocus: false,\n emojiPickerFocus: false,\n emojiPickerOpened: false,\n isFocused: false,\n linkOptions: {\n class: 'd-link d-c-text d-d-inline-block',\n },\n\n linkDialogOpen: false,\n selectedText: '',\n text: '',\n hideLinkBubbleMenu: false,\n };\n },\n\n computed: {\n\n showSendIcon () {\n return !this.showSend.text;\n },\n\n inputLength () {\n return this.text.length;\n },\n\n displayCharacterLimitWarning () {\n return (\n Boolean(this.showCharacterLimit) &&\n this.showCharacterLimit.count - this.inputLength <=\n this.showCharacterLimit.warning\n );\n },\n\n characterLimitTooltipEnabled () {\n return (\n this.showCharacterLimit.message &&\n this.showCharacterLimit.count - this.inputLength < 0\n );\n },\n\n isSendDisabled () {\n return (\n this.disableSend ||\n (this.showCharacterLimit &&\n this.inputLength > this.showCharacterLimit.count)\n );\n },\n\n computedCloseButtonProps () {\n return {\n ariaLabel: 'Close',\n };\n },\n\n emojiPickerHovered () {\n return this.emojiPickerFocus || this.emojiPickerOpened;\n },\n\n sendIconSize () {\n return '300';\n },\n },\n\n watch: {\n modelValue (newValue) {\n this.internalInputValue = newValue;\n },\n\n emojiPickerOpened (newValue) {\n if (!newValue) {\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n },\n\n created () {\n if (this.modelValue && this.outputFormat === 'text') {\n this.internalInputValue = this.modelValue.replace(/\\n/g, '<br>');\n } else {\n this.internalInputValue = this.modelValue;\n }\n },\n\n methods: {\n removeClassStyleAttrs,\n addClassStyleAttrs,\n\n linkDialogOpened (value) {\n this.linkDialogOpen = value;\n if (value === true) {\n this.initLinkDialog();\n } else {\n this.hideLinkBubbleMenu = false;\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n\n // eslint-disable-next-line complexity\n handleTopbarClick (type) {\n const editor = this.$refs.richTextEditor?.editor;\n // Key is the name returned in the event, value is the name of the TipTap command function to run.\n const typeToCommandMap = {\n bold: () => editor?.chain().focus().toggleBold().run(),\n italic: () => editor?.chain().focus().toggleItalic().run(),\n strike: () => editor?.chain().focus().toggleStrike().run(),\n bulletList: () => editor?.chain().focus().toggleBulletList().run(),\n orderedList: () => editor?.chain().focus().toggleOrderedList().run(),\n blockquote: () => editor?.chain().focus().toggleBlockquote().run(),\n code: () => editor?.chain().focus().toggleCode().run(),\n codeBlock: () => editor?.chain().focus().toggleCodeBlock().run(),\n };\n\n if (editor && typeToCommandMap[type]) {\n typeToCommandMap[type]();\n }\n },\n\n // Checks if the node currently selected is active ex/ the bold button is active if the selected text is bold\n isSelectionActive (type) {\n if (['bulletList', 'orderedList'].includes(type)) {\n return this.lastActiveNodes(this.$refs.richTextEditor?.editor?.state, [{ type: 'bulletList' }, { type: 'orderedList' }]).includes(type) && this.isFocused;\n }\n return this.$refs.richTextEditor?.editor?.isActive(type) && this.isFocused;\n },\n\n initLinkDialog () {\n this.$refs.link.setInitialValues(this.selectedText, this.$refs.richTextEditor?.editor?.getAttributes('link')?.href);\n this.hideLinkBubbleMenu = true;\n this.linkDialogOpen = true;\n },\n\n removeLink () {\n this.$refs.richTextEditor?.removeLink();\n this.linkDialogOpen = false;\n },\n\n setLink (linkText, linkInput) {\n this.$refs.richTextEditor.setLink(\n linkInput, linkText, this.linkOptions, EDITOR_SUPPORTED_LINK_PROTOCOLS, EDITOR_DEFAULT_LINK_PREFIX,\n );\n this.linkDialogOpen = false;\n },\n\n // Mousedown instead of click because it fires before the blur event.\n onMousedown (e) {\n const isWithinInput = returnFirstEl(this.$refs.richTextEditor.$el)\n .querySelector('.tiptap')\n .contains(e.target);\n\n // If the click is not within the tiptap rich text editor input itself, but still within the wrapping div,\n // focus the editor.\n if (!isWithinInput) {\n // Prevent default prevents blurring the rich text editor input when it is already focused.\n e.preventDefault();\n this.$refs.richTextEditor.focusEditor();\n }\n },\n\n onDrop (e) {\n const dt = e.dataTransfer;\n const files = Array.from(dt.files);\n this.$emit('add-media', files);\n },\n\n onPaste (e) {\n if (e.clipboardData.files.length) {\n e.stopPropagation();\n e.preventDefault();\n const files = [...e.clipboardData.files];\n this.$emit('paste-media', files);\n }\n },\n\n onSkinTone (skinTone) {\n this.$emit('skin-tone', skinTone);\n },\n\n onSelectEmoji (emoji, close) {\n if (!emoji) {\n return;\n }\n\n if (!emoji.shift_key) {\n close();\n }\n\n // Insert emoji into the editor\n this.$refs.richTextEditor.editor.commands.insertContent({\n type: 'emoji',\n attrs: {\n code: emoji.shortname,\n },\n });\n this.$emit('selected-emoji', emoji);\n },\n\n onSelectImage () {\n this.$refs.messageInputImageUpload.$refs.input.click();\n },\n\n onImageUpload () {\n this.$emit(\n 'select-media',\n this.$refs.messageInputImageUpload.$refs.input.files,\n );\n },\n\n toggleEmojiPicker () {\n this.emojiPickerOpened = !this.emojiPickerOpened;\n },\n\n onSend () {\n if (this.isSendDisabled) {\n return;\n }\n this.$emit('submit', this.internalInputValue);\n },\n\n onCancel () {\n this.$emit('cancel');\n },\n\n onInput (event) {\n this.$emit('update:modelValue', event);\n },\n\n onTextInput (event) {\n this.text = event;\n this.$emit('text-input', event);\n },\n },\n};\n</script>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","_withModifiers","_renderSlot","_createBlock","_createVNode","_createCommentVNode","_normalizeStyle","_createElementVNode","_withCtx","_toDisplayString","_normalizeClass","_createSlots"],"mappings":"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"}
@@ -111,32 +111,28 @@ const _sfc_main = {
111
111
  }
112
112
  };
113
113
  const _hoisted_1 = {
114
- "data-qa": "dt-recipe-callbox",
115
- class: "d-recipe-callbox"
116
- };
117
- const _hoisted_2 = {
118
114
  key: 0,
119
115
  "data-qa": "dt-recipe-callbox__video-wrapper",
120
116
  class: "d-recipe-callbox__video"
121
117
  };
122
- const _hoisted_3 = { class: "d-recipe-callbox__main-content-top" };
123
- const _hoisted_4 = { class: "d-recipe-callbox__content" };
124
- const _hoisted_5 = {
118
+ const _hoisted_2 = { class: "d-recipe-callbox__main-content-top" };
119
+ const _hoisted_3 = { class: "d-recipe-callbox__content" };
120
+ const _hoisted_4 = {
125
121
  key: 0,
126
122
  "data-qa": "dt-recipe-callbox__badge-wrapper",
127
123
  class: "d-recipe-callbox__content-badge"
128
124
  };
129
- const _hoisted_6 = {
125
+ const _hoisted_5 = {
130
126
  key: 1,
131
127
  "data-qa": "dt-recipe-callbox__subtitle-wrapper",
132
128
  class: "d-recipe-callbox__content-subtitle"
133
129
  };
134
- const _hoisted_7 = {
130
+ const _hoisted_6 = {
135
131
  key: 1,
136
132
  "data-qa": "dt-recipe-callbox__right-wrapper",
137
133
  class: "d-recipe-callbox__right"
138
134
  };
139
- const _hoisted_8 = {
135
+ const _hoisted_7 = {
140
136
  key: 0,
141
137
  "data-qa": "dt-recipe-callbox__bottom-wrapper",
142
138
  class: "d-recipe-callbox__main-content-bottom"
@@ -145,15 +141,19 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
145
141
  const _component_dt_icon_pause = vue.resolveComponent("dt-icon-pause");
146
142
  const _component_dt_avatar = vue.resolveComponent("dt-avatar");
147
143
  const _component_dt_badge = vue.resolveComponent("dt-badge");
148
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
149
- _ctx.$slots.video ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
144
+ return vue.openBlock(), vue.createElementBlock("div", {
145
+ "data-qa": "dt-recipe-callbox",
146
+ class: vue.normalizeClass([_ctx.$attrs.class, "d-recipe-callbox"]),
147
+ style: vue.normalizeStyle(_ctx.$attrs.style)
148
+ }, [
149
+ _ctx.$slots.video ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
150
150
  vue.renderSlot(_ctx.$slots, "video")
151
151
  ])) : vue.createCommentVNode("", true),
152
152
  vue.createElementVNode("div", {
153
153
  "data-qa": "dt-recipe-callbox__main-content",
154
154
  class: vue.normalizeClass(["d-recipe-callbox__main-content", $options.borderClass, { "d-recipe-callbox--clickable": $props.clickable }])
155
155
  }, [
156
- vue.createElementVNode("div", _hoisted_3, [
156
+ vue.createElementVNode("div", _hoisted_2, [
157
157
  $options.shouldShowAvatar ? (vue.openBlock(), vue.createBlock(_component_dt_avatar, {
158
158
  key: 0,
159
159
  "avatar-class": "d-recipe-callbox__avatar",
@@ -173,7 +173,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
173
173
  key: "0"
174
174
  } : void 0
175
175
  ]), 1032, ["image-src", "full-name", "seed", "clickable", "onClick"])) : vue.createCommentVNode("", true),
176
- vue.createElementVNode("div", _hoisted_4, [
176
+ vue.createElementVNode("div", _hoisted_3, [
177
177
  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($props.clickable ? "button" : "span"), {
178
178
  "data-qa": "dt-recipe-callbox__title",
179
179
  class: "d-recipe-callbox__content-title",
@@ -184,7 +184,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
184
184
  ]),
185
185
  _: 1
186
186
  }, 8, ["onClick"])),
187
- _ctx.$slots.badge || $props.badgeText ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
187
+ _ctx.$slots.badge || $props.badgeText ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
188
188
  vue.renderSlot(_ctx.$slots, "badge", {}, () => [
189
189
  vue.createVNode(_component_dt_badge, {
190
190
  class: vue.normalizeClass($options.badgeClass),
@@ -192,19 +192,19 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
192
192
  }, null, 8, ["class", "text"])
193
193
  ])
194
194
  ])) : vue.createCommentVNode("", true),
195
- _ctx.$slots.subtitle ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
195
+ _ctx.$slots.subtitle ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
196
196
  vue.renderSlot(_ctx.$slots, "subtitle")
197
197
  ])) : vue.createCommentVNode("", true)
198
198
  ]),
199
- _ctx.$slots.right ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [
199
+ _ctx.$slots.right ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
200
200
  vue.renderSlot(_ctx.$slots, "right")
201
201
  ])) : vue.createCommentVNode("", true)
202
202
  ]),
203
- _ctx.$slots.bottom ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8, [
203
+ _ctx.$slots.bottom ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [
204
204
  vue.renderSlot(_ctx.$slots, "bottom")
205
205
  ])) : vue.createCommentVNode("", true)
206
206
  ], 2)
207
- ]);
207
+ ], 6);
208
208
  }
209
209
  const callbox = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["render", _sfc_render]]);
210
210
  exports.default = callbox;
@@ -1 +1 @@
1
- {"version":3,"file":"callbox.vue.cjs","sources":["../../../../recipes/leftbar/callbox/callbox.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-recipe-callbox\"\n class=\"d-recipe-callbox\"\n >\n <div\n v-if=\"$slots.video\"\n data-qa=\"dt-recipe-callbox__video-wrapper\"\n class=\"d-recipe-callbox__video\"\n >\n <!-- @slot Slot for video stream -->\n <slot name=\"video\" />\n </div>\n <div\n data-qa=\"dt-recipe-callbox__main-content\"\n :class=\"['d-recipe-callbox__main-content', borderClass, { 'd-recipe-callbox--clickable': clickable }]\"\n >\n <div\n class=\"d-recipe-callbox__main-content-top\"\n >\n <dt-avatar\n v-if=\"shouldShowAvatar\"\n avatar-class=\"d-recipe-callbox__avatar\"\n :image-src=\"avatarSrc\"\n image-alt=\"\"\n :full-name=\"avatarFullName\"\n :seed=\"avatarSeed\"\n :clickable=\"clickable\"\n size=\"sm\"\n @click=\"handleClick\"\n >\n <template\n v-if=\"isOnHold\"\n #overlayIcon\n >\n <dt-icon-pause />\n </template>\n </dt-avatar>\n <div class=\"d-recipe-callbox__content\">\n <component\n :is=\"clickable ? 'button' : 'span'\"\n data-qa=\"dt-recipe-callbox__title\"\n class=\"d-recipe-callbox__content-title\"\n @click=\"handleClick\"\n >\n {{ title }}\n </component>\n <div\n v-if=\"$slots.badge || badgeText\"\n data-qa=\"dt-recipe-callbox__badge-wrapper\"\n class=\"d-recipe-callbox__content-badge\"\n >\n <!-- @slot Slot for call center badge -->\n <slot name=\"badge\">\n <dt-badge\n :class=\"badgeClass\"\n :text=\"badgeText\"\n />\n </slot>\n </div>\n <div\n v-if=\"$slots.subtitle\"\n data-qa=\"dt-recipe-callbox__subtitle-wrapper\"\n class=\"d-recipe-callbox__content-subtitle\"\n >\n <!-- @slot Slot for subtitle -->\n <slot name=\"subtitle\" />\n </div>\n </div>\n <div\n v-if=\"$slots.right\"\n data-qa=\"dt-recipe-callbox__right-wrapper\"\n class=\"d-recipe-callbox__right\"\n >\n <!-- @slot Slot for right icons -->\n <slot name=\"right\" />\n </div>\n </div>\n <div\n v-if=\"$slots.bottom\"\n data-qa=\"dt-recipe-callbox__bottom-wrapper\"\n class=\"d-recipe-callbox__main-content-bottom\"\n >\n <slot name=\"bottom\" />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { CALLBOX_BADGE_COLORS, CALLBOX_BORDER_COLORS } from './callbox_constants';\nimport DtAvatar from '@/components/avatar/avatar.vue';\nimport DtBadge from '@/components/badge/badge.vue';\nimport { DtIconPause } from '@dialpad/dialtone-icons/vue3';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeCallbox',\n\n components: { DtBadge, DtAvatar, DtIconPause },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Text for the badge element\n */\n badgeText: {\n type: String,\n default: '',\n },\n\n /**\n * Color for the badge element\n * @values null, warning\n */\n badgeColor: {\n type: String,\n default: null,\n validator: (color) => color === null || Object.keys(CALLBOX_BADGE_COLORS).includes(color),\n },\n\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar's full name, used to extract initials\n * to display if `avatarSrc` is empty.\n */\n avatarFullName: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox title\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox border color\n * @values default, ai, critical\n */\n borderColor: {\n type: String,\n default: 'default',\n validator: (color) => Object.keys(CALLBOX_BORDER_COLORS).includes(color),\n },\n\n /**\n * Makes the callbox avatar and title clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls the avatars overlay icon\n */\n isOnHold: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Callbox click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n computed: {\n shouldShowAvatar () {\n return this.avatarFullName || this.avatarSrc;\n },\n\n badgeClass () {\n return CALLBOX_BADGE_COLORS[this.badgeColor];\n },\n\n borderClass () {\n return CALLBOX_BORDER_COLORS[this.borderColor];\n },\n },\n\n methods: {\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n"],"names":["DtBadge","DtAvatar","DtIconPause","CALLBOX_BADGE_COLORS","CALLBOX_BORDER_COLORS","_openBlock","_createElementBlock","_renderSlot","_createCommentVNode","_createElementVNode","_normalizeClass","_createBlock","_createSlots","_withCtx","_createVNode","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;AA+FA,MAAK,YAAU;AAAA,EACb,cAAc,EAAE,MAAM,EAAG;AAAA,EACzB,MAAM;AAAA,EAEN,YAAY,EAAEA,SAAAA,MAAAA,mBAASC,OAAQ,SAAA,aAAEC,iBAAa;AAAA,EAE9C,cAAc;AAAA,EAEd,OAAO;AAAA;AAAA;AAAA;AAAA,IAIL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,UAAU,UAAU,QAAQ,OAAO,KAAKC,kBAAoB,oBAAA,EAAE,SAAS,KAAK;AAAA,IACzF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,UAAU,OAAO,KAAKC,uCAAqB,EAAE,SAAS,KAAK;AAAA,IACxE;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EAED,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOL;AAAA,EACD;AAAA,EAED,UAAU;AAAA,IACR,mBAAoB;AAClB,aAAO,KAAK,kBAAkB,KAAK;AAAA,IACpC;AAAA,IAED,aAAc;AACZ,aAAOD,kBAAoB,qBAAC,KAAK,UAAU;AAAA,IAC5C;AAAA,IAED,cAAe;AACb,aAAOC,kBAAqB,sBAAC,KAAK,WAAW;AAAA,IAC9C;AAAA,EACF;AAAA,EAED,SAAS;AAAA,IACP,YAAa,GAAG;AACd,UAAI,CAAC,KAAK,UAAW;AACrB,WAAK,MAAM,SAAS,CAAC;AAAA,IACtB;AAAA,EACF;AACH;;EApNI,WAAQ;AAAA,EACR,OAAM;;;EAHV,KAAA;AAAA,EAOM,WAAQ;AAAA,EACR,OAAM;;AAUJ,MAAA,aAAA,EAAA,OAAM,qCAAoC;AAoBrC,MAAA,aAAA,EAAA,OAAM,4BAA2B;;EAtC9C,KAAA;AAAA,EAiDY,WAAQ;AAAA,EACR,OAAM;;;EAlDlB,KAAA;AAAA,EA8DY,WAAQ;AAAA,EACR,OAAM;;;EA/DlB,KAAA;AAAA,EAuEU,WAAQ;AAAA,EACR,OAAM;;;EAxEhB,KAAA;AAAA,EAgFQ,WAAQ;AAAA,EACR,OAAM;;;;;;AAhFZ,SAAAC,cAAA,GAAAC,uBAqFM,OArFN,YAqFM;AAAA,IAhFI,KAAA,OAAO,SADfD,IAAAA,aAAAC,IAAAA,mBAOM,OAPN,YAOM;AAAA,MADJC,eAAqB,KAAA,QAAA,OAAA;AAAA,UAX3BC,IAAA,mBAAA,IAAA,IAAA;AAAA,IAaIC,IAAAA,mBAwEM,OAAA;AAAA,MAvEJ,WAAQ;AAAA,MACP,OAfPC,IAAAA,eAAA,CAAA,kCAeiD,SAAW,aAAA,EAAA,+BAAmC,OAAS,UAAA,CAAA,CAAA;AAAA;MAElGD,IAAA,mBA4DM,OA5DN,YA4DM;AAAA,QAxDI,SAAgB,qCADxBE,IAiBY,YAAA,sBAAA;AAAA,UArCpB,KAAA;AAAA,UAsBU,gBAAa;AAAA,UACZ,aAAW,OAAS;AAAA,UACrB,aAAU;AAAA,UACT,aAAW,OAAc;AAAA,UACzB,MAAM,OAAU;AAAA,UAChB,WAAW,OAAS;AAAA,UACrB,MAAK;AAAA,UACJ,SAAO,SAAW;AAAA,QA7B7B,GAAAC,gBAAA,EAAA,GAAA,KAAA;AAAA,UAgCkB,OAAQ;YAhC1B,MAiCa;AAAA,YAjCb,IAAAC,IAAA,QAmCY,MAAiB;AAAA,cAAjBC,IAAAA,YAAiB,wBAAA;AAAA;YAnC7B,KAAA;AAAA,cAAA;AAAA,iFAAAN,IAAA,mBAAA,IAAA,IAAA;AAAA,QAsCQC,IAAA,mBA8BM,OA9BN,YA8BM;AAAA,4BA7BJE,IAAAA,YAvCVI,4BAwCiB,OAAS,YAAA,WAAA,MAAA,GAAA;AAAA,YACd,WAAQ;AAAA,YACR,OAAM;AAAA,YACL,SAAO,SAAW;AAAA;YA3C/B,SAAAF,IAAA,QA6CY,MAAW;AAAA,cA7CvBG,IAAAA,gBAAAC,IAAAA,gBA6Ce,OAAK,KAAA,GAAA,CAAA;AAAA;YA7CpB,GAAA;AAAA;UAgDkB,KAAM,OAAC,SAAS,OAAS,aADjCZ,IAAAA,aAAAC,IAAAA,mBAYM,OAZN,YAYM;AAAA,YANJC,IAAAA,WAKO,0BALP,MAKO;AAAA,cAJLO,IAAAA,YAGE,qBAAA;AAAA,gBAFC,OAvDjBJ,IAAAA,eAuDwB,SAAU,UAAA;AAAA,gBACjB,MAAM,OAAS;AAAA;;gBAxDhCF,IAAA,mBAAA,IAAA,IAAA;AAAA,UA6DkB,KAAA,OAAO,YADfH,IAAAA,aAAAC,IAAAA,mBAOM,OAPN,YAOM;AAAA,YADJC,eAAwB,KAAA,QAAA,UAAA;AAAA,gBAlEpCC,IAAA,mBAAA,IAAA,IAAA;AAAA;QAsEgB,KAAA,OAAO,SADfH,IAAAA,aAAAC,IAAAA,mBAOM,OAPN,YAOM;AAAA,UADJC,eAAqB,KAAA,QAAA,OAAA;AAAA,cA3E/BC,IAAA,mBAAA,IAAA,IAAA;AAAA;MA+Ec,KAAA,OAAO,UADfH,IAAAA,aAAAC,IAAAA,mBAMM,OANN,YAMM;AAAA,QADJC,eAAsB,KAAA,QAAA,QAAA;AAAA,YAnF9BC,IAAA,mBAAA,IAAA,IAAA;AAAA;;;;;"}
1
+ {"version":3,"file":"callbox.vue.cjs","sources":["../../../../recipes/leftbar/callbox/callbox.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-recipe-callbox\"\n :class=\"[$attrs.class, 'd-recipe-callbox']\"\n :style=\"$attrs.style\"\n >\n <div\n v-if=\"$slots.video\"\n data-qa=\"dt-recipe-callbox__video-wrapper\"\n class=\"d-recipe-callbox__video\"\n >\n <!-- @slot Slot for video stream -->\n <slot name=\"video\" />\n </div>\n <div\n data-qa=\"dt-recipe-callbox__main-content\"\n :class=\"['d-recipe-callbox__main-content', borderClass, { 'd-recipe-callbox--clickable': clickable }]\"\n >\n <div\n class=\"d-recipe-callbox__main-content-top\"\n >\n <dt-avatar\n v-if=\"shouldShowAvatar\"\n avatar-class=\"d-recipe-callbox__avatar\"\n :image-src=\"avatarSrc\"\n image-alt=\"\"\n :full-name=\"avatarFullName\"\n :seed=\"avatarSeed\"\n :clickable=\"clickable\"\n size=\"sm\"\n @click=\"handleClick\"\n >\n <template\n v-if=\"isOnHold\"\n #overlayIcon\n >\n <dt-icon-pause />\n </template>\n </dt-avatar>\n <div class=\"d-recipe-callbox__content\">\n <component\n :is=\"clickable ? 'button' : 'span'\"\n data-qa=\"dt-recipe-callbox__title\"\n class=\"d-recipe-callbox__content-title\"\n @click=\"handleClick\"\n >\n {{ title }}\n </component>\n <div\n v-if=\"$slots.badge || badgeText\"\n data-qa=\"dt-recipe-callbox__badge-wrapper\"\n class=\"d-recipe-callbox__content-badge\"\n >\n <!-- @slot Slot for call center badge -->\n <slot name=\"badge\">\n <dt-badge\n :class=\"badgeClass\"\n :text=\"badgeText\"\n />\n </slot>\n </div>\n <div\n v-if=\"$slots.subtitle\"\n data-qa=\"dt-recipe-callbox__subtitle-wrapper\"\n class=\"d-recipe-callbox__content-subtitle\"\n >\n <!-- @slot Slot for subtitle -->\n <slot name=\"subtitle\" />\n </div>\n </div>\n <div\n v-if=\"$slots.right\"\n data-qa=\"dt-recipe-callbox__right-wrapper\"\n class=\"d-recipe-callbox__right\"\n >\n <!-- @slot Slot for right icons -->\n <slot name=\"right\" />\n </div>\n </div>\n <div\n v-if=\"$slots.bottom\"\n data-qa=\"dt-recipe-callbox__bottom-wrapper\"\n class=\"d-recipe-callbox__main-content-bottom\"\n >\n <slot name=\"bottom\" />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { CALLBOX_BADGE_COLORS, CALLBOX_BORDER_COLORS } from './callbox_constants';\nimport DtAvatar from '@/components/avatar/avatar.vue';\nimport DtBadge from '@/components/badge/badge.vue';\nimport { DtIconPause } from '@dialpad/dialtone-icons/vue3';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeCallbox',\n\n components: { DtBadge, DtAvatar, DtIconPause },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Text for the badge element\n */\n badgeText: {\n type: String,\n default: '',\n },\n\n /**\n * Color for the badge element\n * @values null, warning\n */\n badgeColor: {\n type: String,\n default: null,\n validator: (color) => color === null || Object.keys(CALLBOX_BADGE_COLORS).includes(color),\n },\n\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar's full name, used to extract initials\n * to display if `avatarSrc` is empty.\n */\n avatarFullName: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox title\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox border color\n * @values default, ai, critical\n */\n borderColor: {\n type: String,\n default: 'default',\n validator: (color) => Object.keys(CALLBOX_BORDER_COLORS).includes(color),\n },\n\n /**\n * Makes the callbox avatar and title clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls the avatars overlay icon\n */\n isOnHold: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Callbox click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n computed: {\n shouldShowAvatar () {\n return this.avatarFullName || this.avatarSrc;\n },\n\n badgeClass () {\n return CALLBOX_BADGE_COLORS[this.badgeColor];\n },\n\n borderClass () {\n return CALLBOX_BORDER_COLORS[this.borderColor];\n },\n },\n\n methods: {\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n"],"names":["DtBadge","DtAvatar","DtIconPause","CALLBOX_BADGE_COLORS","CALLBOX_BORDER_COLORS","_createElementBlock","_normalizeClass","_normalizeStyle","_openBlock","_renderSlot","_createCommentVNode","_createElementVNode","_createBlock","_createSlots","_withCtx","_createVNode","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { CALLBOX_BADGE_COLORS, CALLBOX_BORDER_COLORS } from "./callbox_constants
2
2
  import DtAvatar from "../../../components/avatar/avatar.vue.js";
3
3
  import DtBadge from "../../../components/badge/badge.vue.js";
4
4
  import { DtIconPause } from "@dialpad/dialtone-icons/vue3";
5
- import { resolveComponent, openBlock, createElementBlock, renderSlot, createCommentVNode, createElementVNode, normalizeClass, createBlock, createSlots, withCtx, createVNode, resolveDynamicComponent, createTextVNode, toDisplayString } from "vue";
5
+ import { resolveComponent, openBlock, createElementBlock, normalizeClass, normalizeStyle, renderSlot, createCommentVNode, createElementVNode, createBlock, createSlots, withCtx, createVNode, resolveDynamicComponent, createTextVNode, toDisplayString } from "vue";
6
6
  import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
7
7
  const _sfc_main = {
8
8
  compatConfig: { MODE: 3 },
@@ -109,32 +109,28 @@ const _sfc_main = {
109
109
  }
110
110
  };
111
111
  const _hoisted_1 = {
112
- "data-qa": "dt-recipe-callbox",
113
- class: "d-recipe-callbox"
114
- };
115
- const _hoisted_2 = {
116
112
  key: 0,
117
113
  "data-qa": "dt-recipe-callbox__video-wrapper",
118
114
  class: "d-recipe-callbox__video"
119
115
  };
120
- const _hoisted_3 = { class: "d-recipe-callbox__main-content-top" };
121
- const _hoisted_4 = { class: "d-recipe-callbox__content" };
122
- const _hoisted_5 = {
116
+ const _hoisted_2 = { class: "d-recipe-callbox__main-content-top" };
117
+ const _hoisted_3 = { class: "d-recipe-callbox__content" };
118
+ const _hoisted_4 = {
123
119
  key: 0,
124
120
  "data-qa": "dt-recipe-callbox__badge-wrapper",
125
121
  class: "d-recipe-callbox__content-badge"
126
122
  };
127
- const _hoisted_6 = {
123
+ const _hoisted_5 = {
128
124
  key: 1,
129
125
  "data-qa": "dt-recipe-callbox__subtitle-wrapper",
130
126
  class: "d-recipe-callbox__content-subtitle"
131
127
  };
132
- const _hoisted_7 = {
128
+ const _hoisted_6 = {
133
129
  key: 1,
134
130
  "data-qa": "dt-recipe-callbox__right-wrapper",
135
131
  class: "d-recipe-callbox__right"
136
132
  };
137
- const _hoisted_8 = {
133
+ const _hoisted_7 = {
138
134
  key: 0,
139
135
  "data-qa": "dt-recipe-callbox__bottom-wrapper",
140
136
  class: "d-recipe-callbox__main-content-bottom"
@@ -143,15 +139,19 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
143
139
  const _component_dt_icon_pause = resolveComponent("dt-icon-pause");
144
140
  const _component_dt_avatar = resolveComponent("dt-avatar");
145
141
  const _component_dt_badge = resolveComponent("dt-badge");
146
- return openBlock(), createElementBlock("div", _hoisted_1, [
147
- _ctx.$slots.video ? (openBlock(), createElementBlock("div", _hoisted_2, [
142
+ return openBlock(), createElementBlock("div", {
143
+ "data-qa": "dt-recipe-callbox",
144
+ class: normalizeClass([_ctx.$attrs.class, "d-recipe-callbox"]),
145
+ style: normalizeStyle(_ctx.$attrs.style)
146
+ }, [
147
+ _ctx.$slots.video ? (openBlock(), createElementBlock("div", _hoisted_1, [
148
148
  renderSlot(_ctx.$slots, "video")
149
149
  ])) : createCommentVNode("", true),
150
150
  createElementVNode("div", {
151
151
  "data-qa": "dt-recipe-callbox__main-content",
152
152
  class: normalizeClass(["d-recipe-callbox__main-content", $options.borderClass, { "d-recipe-callbox--clickable": $props.clickable }])
153
153
  }, [
154
- createElementVNode("div", _hoisted_3, [
154
+ createElementVNode("div", _hoisted_2, [
155
155
  $options.shouldShowAvatar ? (openBlock(), createBlock(_component_dt_avatar, {
156
156
  key: 0,
157
157
  "avatar-class": "d-recipe-callbox__avatar",
@@ -171,7 +171,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
171
171
  key: "0"
172
172
  } : void 0
173
173
  ]), 1032, ["image-src", "full-name", "seed", "clickable", "onClick"])) : createCommentVNode("", true),
174
- createElementVNode("div", _hoisted_4, [
174
+ createElementVNode("div", _hoisted_3, [
175
175
  (openBlock(), createBlock(resolveDynamicComponent($props.clickable ? "button" : "span"), {
176
176
  "data-qa": "dt-recipe-callbox__title",
177
177
  class: "d-recipe-callbox__content-title",
@@ -182,7 +182,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
182
182
  ]),
183
183
  _: 1
184
184
  }, 8, ["onClick"])),
185
- _ctx.$slots.badge || $props.badgeText ? (openBlock(), createElementBlock("div", _hoisted_5, [
185
+ _ctx.$slots.badge || $props.badgeText ? (openBlock(), createElementBlock("div", _hoisted_4, [
186
186
  renderSlot(_ctx.$slots, "badge", {}, () => [
187
187
  createVNode(_component_dt_badge, {
188
188
  class: normalizeClass($options.badgeClass),
@@ -190,19 +190,19 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
190
190
  }, null, 8, ["class", "text"])
191
191
  ])
192
192
  ])) : createCommentVNode("", true),
193
- _ctx.$slots.subtitle ? (openBlock(), createElementBlock("div", _hoisted_6, [
193
+ _ctx.$slots.subtitle ? (openBlock(), createElementBlock("div", _hoisted_5, [
194
194
  renderSlot(_ctx.$slots, "subtitle")
195
195
  ])) : createCommentVNode("", true)
196
196
  ]),
197
- _ctx.$slots.right ? (openBlock(), createElementBlock("div", _hoisted_7, [
197
+ _ctx.$slots.right ? (openBlock(), createElementBlock("div", _hoisted_6, [
198
198
  renderSlot(_ctx.$slots, "right")
199
199
  ])) : createCommentVNode("", true)
200
200
  ]),
201
- _ctx.$slots.bottom ? (openBlock(), createElementBlock("div", _hoisted_8, [
201
+ _ctx.$slots.bottom ? (openBlock(), createElementBlock("div", _hoisted_7, [
202
202
  renderSlot(_ctx.$slots, "bottom")
203
203
  ])) : createCommentVNode("", true)
204
204
  ], 2)
205
- ]);
205
+ ], 6);
206
206
  }
207
207
  const callbox = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
208
208
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"callbox.vue.js","sources":["../../../../recipes/leftbar/callbox/callbox.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-recipe-callbox\"\n class=\"d-recipe-callbox\"\n >\n <div\n v-if=\"$slots.video\"\n data-qa=\"dt-recipe-callbox__video-wrapper\"\n class=\"d-recipe-callbox__video\"\n >\n <!-- @slot Slot for video stream -->\n <slot name=\"video\" />\n </div>\n <div\n data-qa=\"dt-recipe-callbox__main-content\"\n :class=\"['d-recipe-callbox__main-content', borderClass, { 'd-recipe-callbox--clickable': clickable }]\"\n >\n <div\n class=\"d-recipe-callbox__main-content-top\"\n >\n <dt-avatar\n v-if=\"shouldShowAvatar\"\n avatar-class=\"d-recipe-callbox__avatar\"\n :image-src=\"avatarSrc\"\n image-alt=\"\"\n :full-name=\"avatarFullName\"\n :seed=\"avatarSeed\"\n :clickable=\"clickable\"\n size=\"sm\"\n @click=\"handleClick\"\n >\n <template\n v-if=\"isOnHold\"\n #overlayIcon\n >\n <dt-icon-pause />\n </template>\n </dt-avatar>\n <div class=\"d-recipe-callbox__content\">\n <component\n :is=\"clickable ? 'button' : 'span'\"\n data-qa=\"dt-recipe-callbox__title\"\n class=\"d-recipe-callbox__content-title\"\n @click=\"handleClick\"\n >\n {{ title }}\n </component>\n <div\n v-if=\"$slots.badge || badgeText\"\n data-qa=\"dt-recipe-callbox__badge-wrapper\"\n class=\"d-recipe-callbox__content-badge\"\n >\n <!-- @slot Slot for call center badge -->\n <slot name=\"badge\">\n <dt-badge\n :class=\"badgeClass\"\n :text=\"badgeText\"\n />\n </slot>\n </div>\n <div\n v-if=\"$slots.subtitle\"\n data-qa=\"dt-recipe-callbox__subtitle-wrapper\"\n class=\"d-recipe-callbox__content-subtitle\"\n >\n <!-- @slot Slot for subtitle -->\n <slot name=\"subtitle\" />\n </div>\n </div>\n <div\n v-if=\"$slots.right\"\n data-qa=\"dt-recipe-callbox__right-wrapper\"\n class=\"d-recipe-callbox__right\"\n >\n <!-- @slot Slot for right icons -->\n <slot name=\"right\" />\n </div>\n </div>\n <div\n v-if=\"$slots.bottom\"\n data-qa=\"dt-recipe-callbox__bottom-wrapper\"\n class=\"d-recipe-callbox__main-content-bottom\"\n >\n <slot name=\"bottom\" />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { CALLBOX_BADGE_COLORS, CALLBOX_BORDER_COLORS } from './callbox_constants';\nimport DtAvatar from '@/components/avatar/avatar.vue';\nimport DtBadge from '@/components/badge/badge.vue';\nimport { DtIconPause } from '@dialpad/dialtone-icons/vue3';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeCallbox',\n\n components: { DtBadge, DtAvatar, DtIconPause },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Text for the badge element\n */\n badgeText: {\n type: String,\n default: '',\n },\n\n /**\n * Color for the badge element\n * @values null, warning\n */\n badgeColor: {\n type: String,\n default: null,\n validator: (color) => color === null || Object.keys(CALLBOX_BADGE_COLORS).includes(color),\n },\n\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar's full name, used to extract initials\n * to display if `avatarSrc` is empty.\n */\n avatarFullName: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox title\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox border color\n * @values default, ai, critical\n */\n borderColor: {\n type: String,\n default: 'default',\n validator: (color) => Object.keys(CALLBOX_BORDER_COLORS).includes(color),\n },\n\n /**\n * Makes the callbox avatar and title clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls the avatars overlay icon\n */\n isOnHold: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Callbox click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n computed: {\n shouldShowAvatar () {\n return this.avatarFullName || this.avatarSrc;\n },\n\n badgeClass () {\n return CALLBOX_BADGE_COLORS[this.badgeColor];\n },\n\n borderClass () {\n return CALLBOX_BORDER_COLORS[this.borderColor];\n },\n },\n\n methods: {\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n"],"names":["_openBlock","_createElementBlock","_renderSlot","_createCommentVNode","_createElementVNode","_normalizeClass","_createBlock","_createSlots","_withCtx","_createVNode","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":"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"}
1
+ {"version":3,"file":"callbox.vue.js","sources":["../../../../recipes/leftbar/callbox/callbox.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-recipe-callbox\"\n :class=\"[$attrs.class, 'd-recipe-callbox']\"\n :style=\"$attrs.style\"\n >\n <div\n v-if=\"$slots.video\"\n data-qa=\"dt-recipe-callbox__video-wrapper\"\n class=\"d-recipe-callbox__video\"\n >\n <!-- @slot Slot for video stream -->\n <slot name=\"video\" />\n </div>\n <div\n data-qa=\"dt-recipe-callbox__main-content\"\n :class=\"['d-recipe-callbox__main-content', borderClass, { 'd-recipe-callbox--clickable': clickable }]\"\n >\n <div\n class=\"d-recipe-callbox__main-content-top\"\n >\n <dt-avatar\n v-if=\"shouldShowAvatar\"\n avatar-class=\"d-recipe-callbox__avatar\"\n :image-src=\"avatarSrc\"\n image-alt=\"\"\n :full-name=\"avatarFullName\"\n :seed=\"avatarSeed\"\n :clickable=\"clickable\"\n size=\"sm\"\n @click=\"handleClick\"\n >\n <template\n v-if=\"isOnHold\"\n #overlayIcon\n >\n <dt-icon-pause />\n </template>\n </dt-avatar>\n <div class=\"d-recipe-callbox__content\">\n <component\n :is=\"clickable ? 'button' : 'span'\"\n data-qa=\"dt-recipe-callbox__title\"\n class=\"d-recipe-callbox__content-title\"\n @click=\"handleClick\"\n >\n {{ title }}\n </component>\n <div\n v-if=\"$slots.badge || badgeText\"\n data-qa=\"dt-recipe-callbox__badge-wrapper\"\n class=\"d-recipe-callbox__content-badge\"\n >\n <!-- @slot Slot for call center badge -->\n <slot name=\"badge\">\n <dt-badge\n :class=\"badgeClass\"\n :text=\"badgeText\"\n />\n </slot>\n </div>\n <div\n v-if=\"$slots.subtitle\"\n data-qa=\"dt-recipe-callbox__subtitle-wrapper\"\n class=\"d-recipe-callbox__content-subtitle\"\n >\n <!-- @slot Slot for subtitle -->\n <slot name=\"subtitle\" />\n </div>\n </div>\n <div\n v-if=\"$slots.right\"\n data-qa=\"dt-recipe-callbox__right-wrapper\"\n class=\"d-recipe-callbox__right\"\n >\n <!-- @slot Slot for right icons -->\n <slot name=\"right\" />\n </div>\n </div>\n <div\n v-if=\"$slots.bottom\"\n data-qa=\"dt-recipe-callbox__bottom-wrapper\"\n class=\"d-recipe-callbox__main-content-bottom\"\n >\n <slot name=\"bottom\" />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { CALLBOX_BADGE_COLORS, CALLBOX_BORDER_COLORS } from './callbox_constants';\nimport DtAvatar from '@/components/avatar/avatar.vue';\nimport DtBadge from '@/components/badge/badge.vue';\nimport { DtIconPause } from '@dialpad/dialtone-icons/vue3';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeCallbox',\n\n components: { DtBadge, DtAvatar, DtIconPause },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Text for the badge element\n */\n badgeText: {\n type: String,\n default: '',\n },\n\n /**\n * Color for the badge element\n * @values null, warning\n */\n badgeColor: {\n type: String,\n default: null,\n validator: (color) => color === null || Object.keys(CALLBOX_BADGE_COLORS).includes(color),\n },\n\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar's full name, used to extract initials\n * to display if `avatarSrc` is empty.\n */\n avatarFullName: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox title\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox border color\n * @values default, ai, critical\n */\n borderColor: {\n type: String,\n default: 'default',\n validator: (color) => Object.keys(CALLBOX_BORDER_COLORS).includes(color),\n },\n\n /**\n * Makes the callbox avatar and title clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls the avatars overlay icon\n */\n isOnHold: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Callbox click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n computed: {\n shouldShowAvatar () {\n return this.avatarFullName || this.avatarSrc;\n },\n\n badgeClass () {\n return CALLBOX_BADGE_COLORS[this.badgeColor];\n },\n\n borderClass () {\n return CALLBOX_BORDER_COLORS[this.borderColor];\n },\n },\n\n methods: {\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_normalizeStyle","_openBlock","_renderSlot","_createCommentVNode","_createElementVNode","_createBlock","_createSlots","_withCtx","_createVNode","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":"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"}
@@ -116,18 +116,20 @@ const _sfc_main = {
116
116
  },
117
117
  mounted() {
118
118
  this.resizeObserver = new ResizeObserver(this.adjustLabelWidth);
119
- this.resizeObserver.observe(this.$el);
119
+ this.resizeObserver.observe(common_utils.returnFirstEl(this.$el));
120
120
  this.adjustLabelWidth();
121
121
  },
122
122
  beforeUnmount: function() {
123
123
  this.resizeObserver.disconnect();
124
124
  },
125
125
  methods: {
126
+ removeClassStyleAttrs: common_utils.removeClassStyleAttrs,
127
+ addClassStyleAttrs: common_utils.addClassStyleAttrs,
126
128
  adjustLabelWidth() {
127
129
  var _a, _b, _c, _d, _e, _f;
128
- const labelWidth = ((_b = (_a = this.$el) == null ? void 0 : _a.querySelector(".d-recipe-leftbar-row__primary")) == null ? void 0 : _b.clientWidth) || 0;
129
- const omegaWidth = ((_d = (_c = this.$el) == null ? void 0 : _c.querySelector(".d-recipe-leftbar-row__omega")) == null ? void 0 : _d.clientWidth) || 0;
130
- const alphaWidth = ((_f = (_e = this.$el) == null ? void 0 : _e.querySelector(".d-recipe-leftbar-row__alpha")) == null ? void 0 : _f.clientWidth) || 0;
130
+ const labelWidth = ((_b = (_a = common_utils.returnFirstEl(this.$el)) == null ? void 0 : _a.querySelector(".d-recipe-leftbar-row__primary")) == null ? void 0 : _b.clientWidth) || 0;
131
+ const omegaWidth = ((_d = (_c = common_utils.returnFirstEl(this.$el)) == null ? void 0 : _c.querySelector(".d-recipe-leftbar-row__omega")) == null ? void 0 : _d.clientWidth) || 0;
132
+ const alphaWidth = ((_f = (_e = common_utils.returnFirstEl(this.$el)) == null ? void 0 : _e.querySelector(".d-recipe-leftbar-row__alpha")) == null ? void 0 : _f.clientWidth) || 0;
131
133
  const paddings = 12;
132
134
  this.labelWidth = labelWidth - (omegaWidth + alphaWidth + paddings) + "px";
133
135
  }
@@ -147,12 +149,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
147
149
  const _component_dt_badge = vue.resolveComponent("dt-badge");
148
150
  const _component_dt_icon_chevron_down = vue.resolveComponent("dt-icon-chevron-down");
149
151
  const _component_dt_button = vue.resolveComponent("dt-button");
150
- return vue.openBlock(), vue.createElementBlock("div", {
151
- class: vue.normalizeClass([
152
+ return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
153
+ class: [
152
154
  "d-recipe-leftbar-row__container",
153
155
  { "d-recipe-leftbar-row__container--off-duty": _ctx.$slots.timer }
154
- ])
155
- }, [
156
+ ]
157
+ }, $options.addClassStyleAttrs(_ctx.$attrs)), [
156
158
  vue.createElementVNode("div", {
157
159
  class: vue.normalizeClass($options.leftbarContactCentersRowClasses),
158
160
  "data-qa": "dt-recipe-contact-centers-row"
@@ -163,7 +165,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
163
165
  "aria-label": $options.getAriaLabel,
164
166
  title: $props.description,
165
167
  href: _ctx.$attrs.href ?? "javascript:void(0)"
166
- }, _ctx.$attrs, vue.toHandlers($options.contactRowListeners, true), {
168
+ }, $options.removeClassStyleAttrs(_ctx.$attrs), vue.toHandlers($options.contactRowListeners, true), {
167
169
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click", $event))
168
170
  }), [
169
171
  vue.createElementVNode("div", _hoisted_2, [
@@ -223,7 +225,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
223
225
  vue.createElementVNode("div", _hoisted_5, [
224
226
  vue.renderSlot(_ctx.$slots, "timer")
225
227
  ])
226
- ], 2);
228
+ ], 16);
227
229
  }
228
230
  const contact_centers_row = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["render", _sfc_render]]);
229
231
  exports.default = contact_centers_row;