@dialpad/dialtone-vue 3.159.7 → 3.160.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +0 -18
  2. package/dist/component-documentation.json +1 -1
  3. package/dist/recipes/buttons/callbar_button/callbar_button.vue.cjs +0 -1
  4. package/dist/recipes/buttons/callbar_button/callbar_button.vue.cjs.map +1 -1
  5. package/dist/recipes/buttons/callbar_button/callbar_button.vue.js +0 -1
  6. package/dist/recipes/buttons/callbar_button/callbar_button.vue.js.map +1 -1
  7. package/dist/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs +7 -8
  8. package/dist/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs.map +1 -1
  9. package/dist/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js +7 -8
  10. package/dist/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js.map +1 -1
  11. package/dist/recipes/cards/ivr_node/ivr_node.vue.cjs +7 -8
  12. package/dist/recipes/cards/ivr_node/ivr_node.vue.cjs.map +1 -1
  13. package/dist/recipes/cards/ivr_node/ivr_node.vue.js +7 -8
  14. package/dist/recipes/cards/ivr_node/ivr_node.vue.js.map +1 -1
  15. package/dist/recipes/chips/grouped_chip/grouped_chip.vue.cjs +3 -4
  16. package/dist/recipes/chips/grouped_chip/grouped_chip.vue.cjs.map +1 -1
  17. package/dist/recipes/chips/grouped_chip/grouped_chip.vue.js +3 -4
  18. package/dist/recipes/chips/grouped_chip/grouped_chip.vue.js.map +1 -1
  19. package/dist/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs +13 -11
  20. package/dist/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs.map +1 -1
  21. package/dist/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js +13 -11
  22. package/dist/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js.map +1 -1
  23. package/dist/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.cjs +4 -5
  24. package/dist/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.cjs.map +1 -1
  25. package/dist/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.js +4 -5
  26. package/dist/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.js.map +1 -1
  27. package/dist/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.cjs +5 -6
  28. package/dist/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.cjs.map +1 -1
  29. package/dist/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.js +5 -6
  30. package/dist/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.js.map +1 -1
  31. package/dist/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.cjs +3 -4
  32. package/dist/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.cjs.map +1 -1
  33. package/dist/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.js +3 -4
  34. package/dist/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.js.map +1 -1
  35. package/dist/recipes/conversation_view/editor/editor.vue.cjs +22 -23
  36. package/dist/recipes/conversation_view/editor/editor.vue.cjs.map +1 -1
  37. package/dist/recipes/conversation_view/editor/editor.vue.js +22 -23
  38. package/dist/recipes/conversation_view/editor/editor.vue.js.map +1 -1
  39. package/dist/recipes/conversation_view/emoji_row/emoji_row.vue.cjs +8 -6
  40. package/dist/recipes/conversation_view/emoji_row/emoji_row.vue.cjs.map +1 -1
  41. package/dist/recipes/conversation_view/emoji_row/emoji_row.vue.js +8 -6
  42. package/dist/recipes/conversation_view/emoji_row/emoji_row.vue.js.map +1 -1
  43. package/dist/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.cjs +7 -8
  44. package/dist/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.cjs.map +1 -1
  45. package/dist/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.js +7 -8
  46. package/dist/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.js.map +1 -1
  47. package/dist/recipes/conversation_view/feed_item_pill/feed_item_pill_constants.cjs +3 -3
  48. package/dist/recipes/conversation_view/feed_item_pill/feed_item_pill_constants.cjs.map +1 -1
  49. package/dist/recipes/conversation_view/feed_item_pill/feed_item_pill_constants.js +3 -3
  50. package/dist/recipes/conversation_view/feed_item_pill/feed_item_pill_constants.js.map +1 -1
  51. package/dist/recipes/conversation_view/feed_item_row/feed_item_row.vue.cjs +28 -29
  52. package/dist/recipes/conversation_view/feed_item_row/feed_item_row.vue.cjs.map +1 -1
  53. package/dist/recipes/conversation_view/feed_item_row/feed_item_row.vue.js +28 -29
  54. package/dist/recipes/conversation_view/feed_item_row/feed_item_row.vue.js.map +1 -1
  55. package/dist/recipes/conversation_view/feed_item_row/feed_item_row_constants.cjs +2 -2
  56. package/dist/recipes/conversation_view/feed_item_row/feed_item_row_constants.cjs.map +1 -1
  57. package/dist/recipes/conversation_view/feed_item_row/feed_item_row_constants.js +2 -2
  58. package/dist/recipes/conversation_view/feed_item_row/feed_item_row_constants.js.map +1 -1
  59. package/dist/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.cjs +4 -5
  60. package/dist/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.cjs.map +1 -1
  61. package/dist/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.js +4 -5
  62. package/dist/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.js.map +1 -1
  63. package/dist/recipes/conversation_view/message_input/message_input.vue.cjs +26 -27
  64. package/dist/recipes/conversation_view/message_input/message_input.vue.cjs.map +1 -1
  65. package/dist/recipes/conversation_view/message_input/message_input.vue.js +26 -27
  66. package/dist/recipes/conversation_view/message_input/message_input.vue.js.map +1 -1
  67. package/dist/recipes/conversation_view/time_pill/time_pill.vue.cjs +2 -3
  68. package/dist/recipes/conversation_view/time_pill/time_pill.vue.cjs.map +1 -1
  69. package/dist/recipes/conversation_view/time_pill/time_pill.vue.js +2 -3
  70. package/dist/recipes/conversation_view/time_pill/time_pill.vue.js.map +1 -1
  71. package/dist/recipes/header/settings_menu_button/settings_menu_button.vue.cjs +4 -5
  72. package/dist/recipes/header/settings_menu_button/settings_menu_button.vue.cjs.map +1 -1
  73. package/dist/recipes/header/settings_menu_button/settings_menu_button.vue.js +4 -5
  74. package/dist/recipes/header/settings_menu_button/settings_menu_button.vue.js.map +1 -1
  75. package/dist/recipes/item_layout/contact_info/contact_info.vue.cjs +10 -11
  76. package/dist/recipes/item_layout/contact_info/contact_info.vue.cjs.map +1 -1
  77. package/dist/recipes/item_layout/contact_info/contact_info.vue.js +10 -11
  78. package/dist/recipes/item_layout/contact_info/contact_info.vue.js.map +1 -1
  79. package/dist/recipes/leftbar/callbox/callbox.vue.cjs +23 -24
  80. package/dist/recipes/leftbar/callbox/callbox.vue.cjs.map +1 -1
  81. package/dist/recipes/leftbar/callbox/callbox.vue.js +23 -24
  82. package/dist/recipes/leftbar/callbox/callbox.vue.js.map +1 -1
  83. package/dist/recipes/leftbar/callbox/callbox_constants.cjs +3 -3
  84. package/dist/recipes/leftbar/callbox/callbox_constants.cjs.map +1 -1
  85. package/dist/recipes/leftbar/callbox/callbox_constants.js +3 -3
  86. package/dist/recipes/leftbar/callbox/callbox_constants.js.map +1 -1
  87. package/dist/recipes/leftbar/contact_centers_row/contact_centers_row.vue.cjs +26 -27
  88. package/dist/recipes/leftbar/contact_centers_row/contact_centers_row.vue.cjs.map +1 -1
  89. package/dist/recipes/leftbar/contact_centers_row/contact_centers_row.vue.js +26 -27
  90. package/dist/recipes/leftbar/contact_centers_row/contact_centers_row.vue.js.map +1 -1
  91. package/dist/recipes/leftbar/contact_row/contact_row.vue.cjs +7 -7
  92. package/dist/recipes/leftbar/contact_row/contact_row.vue.cjs.map +1 -1
  93. package/dist/recipes/leftbar/contact_row/contact_row.vue.js +7 -7
  94. package/dist/recipes/leftbar/contact_row/contact_row.vue.js.map +1 -1
  95. package/dist/recipes/leftbar/general_row/general_row.vue.cjs +41 -43
  96. package/dist/recipes/leftbar/general_row/general_row.vue.cjs.map +1 -1
  97. package/dist/recipes/leftbar/general_row/general_row.vue.js +42 -44
  98. package/dist/recipes/leftbar/general_row/general_row.vue.js.map +1 -1
  99. package/dist/recipes/leftbar/general_row/leftbar_general_row_icon.vue.cjs +1 -1
  100. package/dist/recipes/leftbar/general_row/leftbar_general_row_icon.vue.cjs.map +1 -1
  101. package/dist/recipes/leftbar/general_row/leftbar_general_row_icon.vue.js +1 -1
  102. package/dist/recipes/leftbar/general_row/leftbar_general_row_icon.vue.js.map +1 -1
  103. package/dist/recipes/leftbar/unread_pill/unread_pill.vue.cjs +3 -4
  104. package/dist/recipes/leftbar/unread_pill/unread_pill.vue.cjs.map +1 -1
  105. package/dist/recipes/leftbar/unread_pill/unread_pill.vue.js +3 -4
  106. package/dist/recipes/leftbar/unread_pill/unread_pill.vue.js.map +1 -1
  107. package/dist/recipes/notices/top_banner_info/top_banner_info.vue.cjs +4 -5
  108. package/dist/recipes/notices/top_banner_info/top_banner_info.vue.cjs.map +1 -1
  109. package/dist/recipes/notices/top_banner_info/top_banner_info.vue.js +4 -5
  110. package/dist/recipes/notices/top_banner_info/top_banner_info.vue.js.map +1 -1
  111. package/dist/types/recipes/chips/grouped_chip/grouped_chip.vue.d.ts.map +1 -1
  112. package/dist/types/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.d.ts.map +1 -1
  113. package/dist/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts.map +1 -1
  114. package/dist/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +4 -4
  115. package/dist/types/recipes/conversation_view/message_input/message_input.vue.d.ts +1 -1
  116. package/dist/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  117. package/dist/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +2 -2
  118. package/dist/types/recipes/leftbar/general_row/general_row.vue.d.ts +6 -6
  119. package/dist/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  120. package/package.json +5 -6
  121. package/dist/style.css +0 -1427
@@ -3,7 +3,6 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const meeting_pill = require("./extensions/meeting_pill/meeting_pill.cjs");
4
4
  const vue3 = require("@dialpad/dialtone-icons/vue3");
5
5
  const vue = require("vue");
6
- ;/* empty css */
7
6
  const _pluginVue_exportHelper = require("../../../_virtual/_plugin-vue_export-helper.cjs");
8
7
  const button = require("../../../components/button/button.vue.cjs");
9
8
  const emoji_picker = require("../../../components/emoji_picker/emoji_picker.vue.cjs");
@@ -444,10 +443,13 @@ const _sfc_main = {
444
443
  onSkinTone(skinTone) {
445
444
  this.$emit("skin-tone", skinTone);
446
445
  },
447
- onSelectEmoji(emoji) {
446
+ onSelectEmoji(emoji, close) {
448
447
  if (!emoji) {
449
448
  return;
450
449
  }
450
+ if (!emoji.shift_key) {
451
+ close();
452
+ }
451
453
  this.$refs.richTextEditor.editor.commands.insertContent({
452
454
  type: "emoji",
453
455
  attrs: {
@@ -482,9 +484,9 @@ const _sfc_main = {
482
484
  }
483
485
  }
484
486
  };
485
- const _hoisted_1 = { class: "dt-message-input__bottom-section" };
486
- const _hoisted_2 = { class: "dt-message-input__bottom-section-left" };
487
- const _hoisted_3 = { class: "dt-message-input__bottom-section-right" };
487
+ const _hoisted_1 = { class: "dt-recipe-message-input__bottom-section" };
488
+ const _hoisted_2 = { class: "dt-recipe-message-input__bottom-section-left" };
489
+ const _hoisted_3 = { class: "dt-recipe-message-input__bottom-section-right" };
488
490
  const _hoisted_4 = { class: "d-d-flex d-ai-center" };
489
491
  const _hoisted_5 = { key: 0 };
490
492
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
@@ -502,9 +504,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
502
504
  const _directive_dt_scrollbar = vue.resolveDirective("dt-scrollbar");
503
505
  const _directive_dt_tooltip = vue.resolveDirective("dt-tooltip");
504
506
  return vue.openBlock(), vue.createElementBlock("div", {
505
- "data-qa": "dt-message-input",
507
+ "data-qa": "dt-recipe-message-input",
506
508
  role: "presentation",
507
- class: vue.normalizeClass(["dt-message-input"]),
509
+ class: vue.normalizeClass(["dt-recipe-message-input"]),
508
510
  onDragover: _cache[10] || (_cache[10] = vue.withModifiers(() => {
509
511
  }, ["prevent"])),
510
512
  onDrop: _cache[11] || (_cache[11] = vue.withModifiers((...args) => $options.onDrop && $options.onDrop(...args), ["prevent"])),
@@ -513,7 +515,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
513
515
  }, [
514
516
  vue.renderSlot(_ctx.$slots, "top"),
515
517
  vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
516
- class: "dt-message-input__editor-wrapper",
518
+ class: "dt-recipe-message-input__editor-wrapper",
517
519
  style: vue.normalizeStyle({ "max-height": $props.maxHeight })
518
520
  }, [
519
521
  vue.createVNode(_component_dt_rich_text_editor, vue.mergeProps({
@@ -555,9 +557,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
555
557
  return [
556
558
  $props.showImagePicker ? vue.withDirectives((vue.openBlock(), vue.createBlock(_component_dt_button, {
557
559
  key: 0,
558
- "data-qa": "dt-message-input-image-btn",
560
+ "data-qa": "dt-recipe-message-input-image-btn",
559
561
  size: "sm",
560
- class: "dt-message-input__button",
562
+ class: "dt-recipe-message-input__button",
561
563
  kind: "muted",
562
564
  importance: "clear",
563
565
  "aria-label": $props.showImagePicker.ariaLabel,
@@ -576,10 +578,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
576
578
  ]) : vue.createCommentVNode("", true),
577
579
  vue.createVNode(_component_dt_input, {
578
580
  ref: "messageInputImageUpload",
579
- "data-qa": "dt-message-input-image-input",
581
+ "data-qa": "dt-recipe-message-input-image-input",
580
582
  accept: "image/*, video/*",
581
583
  type: "file",
582
- class: "dt-message-input__image-input",
584
+ class: "dt-recipe-message-input__image-input",
583
585
  multiple: "",
584
586
  hidden: "",
585
587
  onInput: $options.onImageUpload
@@ -588,15 +590,15 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
588
590
  key: 1,
589
591
  open: $data.emojiPickerOpened,
590
592
  "onUpdate:open": _cache[9] || (_cache[9] = ($event) => $data.emojiPickerOpened = $event),
591
- "data-qa": "dt-message-input-emoji-picker-popover",
593
+ "data-qa": "dt-recipe-message-input-emoji-picker-popover",
592
594
  "initial-focus-element": "#searchInput",
593
595
  padding: "none"
594
596
  }, {
595
597
  anchor: vue.withCtx(({ attrs }) => [
596
598
  vue.withDirectives((vue.openBlock(), vue.createBlock(_component_dt_button, vue.mergeProps(attrs, {
597
- "data-qa": "dt-message-input-emoji-picker-btn",
599
+ "data-qa": "dt-recipe-message-input-emoji-picker-btn",
598
600
  size: "sm",
599
- class: "dt-message-input__button",
601
+ class: "dt-recipe-message-input__button",
600
602
  kind: "muted",
601
603
  importance: "clear",
602
604
  "aria-label": $props.emojiButtonAriaLabel,
@@ -623,10 +625,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
623
625
  content: vue.withCtx(({ close }) => [
624
626
  vue.createVNode(_component_dt_emoji_picker, vue.mergeProps($props.emojiPickerProps, {
625
627
  onSkinTone: $options.onSkinTone,
626
- onSelectedEmoji: (emoji) => {
627
- close();
628
- $options.onSelectEmoji(emoji);
629
- }
628
+ onSelectedEmoji: (emoji) => $options.onSelectEmoji(emoji, close)
630
629
  }), null, 16, ["onSkinTone", "onSelectedEmoji"])
631
630
  ]),
632
631
  _: 1
@@ -648,7 +647,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
648
647
  ]),
649
648
  Boolean($props.showCharacterLimit) ? (vue.openBlock(), vue.createBlock(_component_dt_tooltip, {
650
649
  key: 0,
651
- class: "dt-message-input__remaining-char-tooltip",
650
+ class: "dt-recipe-message-input__remaining-char-tooltip",
652
651
  placement: "top-end",
653
652
  enabled: $options.characterLimitTooltipEnabled,
654
653
  message: $props.showCharacterLimit.message,
@@ -656,8 +655,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
656
655
  }, {
657
656
  anchor: vue.withCtx(() => [
658
657
  vue.withDirectives(vue.createElementVNode("p", {
659
- class: "dt-message-input__remaining-char",
660
- "data-qa": "dt-message-input-character-limit"
658
+ class: "dt-recipe-message-input__remaining-char",
659
+ "data-qa": "dt-recipe-message-input-character-limit"
661
660
  }, vue.toDisplayString($props.showCharacterLimit.count - $options.inputLength), 513), [
662
661
  [vue.vShow, $options.displayCharacterLimitWarning]
663
662
  ])
@@ -666,8 +665,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
666
665
  }, 8, ["enabled", "message"])) : vue.createCommentVNode("", true),
667
666
  $props.showCancel ? (vue.openBlock(), vue.createBlock(_component_dt_button, {
668
667
  key: 1,
669
- "data-qa": "dt-message-input-cancel-button",
670
- class: "dt-message-input__button dt-message-input__cancel-button",
668
+ "data-qa": "dt-recipe-message-input-cancel-button",
669
+ class: "dt-recipe-message-input__button dt-recipe-message-input__cancel-button",
671
670
  size: "sm",
672
671
  kind: "muted",
673
672
  importance: "clear",
@@ -684,14 +683,14 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
684
683
  return [
685
684
  $props.showSend ? vue.withDirectives((vue.openBlock(), vue.createBlock(_component_dt_button, {
686
685
  key: 0,
687
- "data-qa": "dt-message-input-send-btn",
686
+ "data-qa": "dt-recipe-message-input-send-btn",
688
687
  size: "sm",
689
688
  kind: "default",
690
689
  importance: "primary",
691
690
  class: vue.normalizeClass([
692
- "dt-message-input__button dt-message-input__send-button",
691
+ "dt-recipe-message-input__button dt-recipe-message-input__send-button",
693
692
  {
694
- "dt-message-input__send-button--disabled": $options.isSendDisabled,
693
+ "dt-recipe-message-input__send-button--disabled": $options.isSendDisabled,
695
694
  "d-btn--icon-only": $options.showSendIcon
696
695
  }
697
696
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"message_input.vue.cjs","sources":["../../../../recipes/conversation_view/message_input/message_input.vue"],"sourcesContent":["<!-- eslint-disable vue/no-restricted-class -->\n<template>\n <div\n data-qa=\"dt-message-input\"\n role=\"presentation\"\n :class=\"['dt-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 <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n v-dt-scrollbar\n class=\"dt-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=\"allowBlockquote\"\n :allow-bold=\"allowBold\"\n :allow-bullet-list=\"allowBulletList\"\n :allow-codeblock=\"allowCodeblock\"\n :allow-italic=\"allowItalic\"\n :allow-strike=\"allowStrike\"\n :allow-underline=\"allowUnderline\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"inputClass\"\n :output-format=\"outputFormat\"\n :auto-focus=\"autoFocus\"\n :link=\"link\"\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 v-bind=\"$attrs\"\n @input=\"onInput\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"dt-message-input__bottom-section\">\n <!-- Left content -->\n <div class=\"dt-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-message-input-image-btn\"\n size=\"sm\"\n class=\"dt-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-message-input-image-input\"\n accept=\"image/*, video/*\"\n type=\"file\"\n class=\"dt-message-input__image-input\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n <dt-popover\n v-if=\"showEmojiPicker\"\n v-model:open=\"emojiPickerOpened\"\n data-qa=\"dt-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-message-input-emoji-picker-btn\"\n size=\"sm\"\n class=\"dt-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=\"\n (emoji) => {\n close();\n onSelectEmoji(emoji);\n }\n \"\n />\n </template>\n </dt-popover>\n <!-- @slot Slot for emojiGiphy picker -->\n <slot name=\"emojiGiphyPicker\" />\n </dt-stack>\n </div>\n <!-- Right content -->\n <div class=\"dt-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-d-flex d-ai-center\">\n <slot name=\"smsCount\" />\n </div>\n\n <!-- Optionally displayed remaining character counter -->\n <dt-tooltip\n v-if=\"Boolean(showCharacterLimit)\"\n class=\"dt-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=\"dt-message-input__remaining-char\"\n data-qa=\"dt-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-message-input-cancel-button\"\n class=\"dt-message-input__button dt-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-message-input-send-btn\"\n size=\"sm\"\n kind=\"default\"\n importance=\"primary\"\n :class=\"[\n 'dt-message-input__button dt-message-input__send-button',\n {\n 'dt-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 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,\n DtIconVerySatisfied,\n DtIconSatisfied,\n DtIconSend,\n} from '@dialpad/dialtone-icons/vue3';\n\nexport default {\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtInput,\n DtPopover,\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 * 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: 'text',\n validator (outputFormat) {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(outputFormat);\n },\n },\n\n /**\n * Enables the Link extension and optionally passes configurations to it\n */\n link: {\n type: [Boolean, Object],\n default: true,\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 * Whether the input allows for block quote.\n */\n allowBlockquote: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows for bold to be introduced in the text.\n */\n allowBold: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows for bullet list to be introduced in the text.\n */\n allowBulletList: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows for italic to be introduced in the text.\n */\n allowItalic: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows for strike to be introduced in the text.\n */\n allowStrike: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows for underline to be introduced in the text.\n */\n allowUnderline: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows codeblock to be introduced in the text.\n */\n allowCodeblock: {\n type: Boolean,\n default: true,\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 data () {\n return {\n additionalExtensions: [MeetingPill],\n internalInputValue: this.modelValue, // internal input content\n imagePickerFocus: false,\n emojiPickerFocus: false,\n emojiPickerOpened: false,\n };\n },\n\n computed: {\n showSendIcon () {\n return !this.showSend.text;\n },\n\n inputLength () {\n return this.internalInputValue.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 }\n },\n\n methods: {\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) {\n if (!emoji) {\n return;\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};\n</script>\n\n<style lang=\"less\">\n.dt-message-input {\n display: flex;\n flex-direction: column;\n border-radius: var(--dt-size-radius-400);\n border: var(--dt-size-border-100) solid;\n border-color: var(--dt-color-border-default);\n line-height: var(--dt-font-line-height-400);\n cursor: text;\n transition-property: border-color, box-shadow, opacity;\n transition-duration: var(--td50);\n transition-timing-function: var(--ttf-in-out);\n\n &:focus-within {\n border-color: var(--dt-color-border-bold);\n box-shadow: 0 0 var(--dt-size-300) 0 var(--dt-color-surface-moderate-opaque);\n }\n\n &__editor-wrapper {\n padding: var(--dt-space-450) var(--dt-space-500) var(--dt-space-300);\n }\n\n &__remaining-char-tooltip {\n margin-top: auto;\n margin-bottom: auto;\n }\n\n &__remaining-char {\n color: var(--dt-color-foreground-critical);\n font-size: var(--dt-font-size-100);\n margin-right: var(--dt-space-300);\n }\n\n &__button {\n max-height: 2.8rem;\n max-width: 2.8rem;\n border-radius: var(--dt-size-radius-300);\n }\n\n &__send-button.dt-message-input__button:not(.d-btn--icon-only),\n &__cancel-button {\n max-width: unset;\n padding: var(--dt-space-350);\n }\n\n &__send-button--disabled {\n background-color: unset;\n color: var(--dt-color-foreground-muted);\n cursor: default;\n }\n\n &__bottom-section {\n display: flex;\n justify-content: space-between;\n padding: var(--dt-space-300) var(--dt-space-400) var(--dt-space-400);\n }\n\n &__bottom-section-left {\n display: flex;\n }\n\n &__bottom-section-right {\n display: flex;\n }\n\n &__image-input {\n position: absolute;\n }\n}\n</style>\n"],"names":["DtButton","DtEmojiPicker","DtInput","DtPopover","DtRichTextEditor","DtTooltip","DtStack","DtIconImage","DtIconVerySatisfied","DtIconSatisfied","DtIconSend","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","RICH_TEXT_EDITOR_OUTPUT_FORMATS","MeetingPill","_createElementBlock","_normalizeClass","_withModifiers","_renderSlot","_normalizeStyle","_createVNode","_mergeProps","_createElementVNode","_withCtx","_createBlock","_createCommentVNode","_toDisplayString","_createSlots","_openBlock"],"mappings":"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"}
1
+ {"version":3,"file":"message_input.vue.cjs","sources":["../../../../recipes/conversation_view/message_input/message_input.vue"],"sourcesContent":["<!-- eslint-disable vue/no-restricted-class -->\n<template>\n <div\n data-qa=\"dt-recipe-message-input\"\n role=\"presentation\"\n :class=\"['dt-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 <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n v-dt-scrollbar\n class=\"dt-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=\"allowBlockquote\"\n :allow-bold=\"allowBold\"\n :allow-bullet-list=\"allowBulletList\"\n :allow-codeblock=\"allowCodeblock\"\n :allow-italic=\"allowItalic\"\n :allow-strike=\"allowStrike\"\n :allow-underline=\"allowUnderline\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"inputClass\"\n :output-format=\"outputFormat\"\n :auto-focus=\"autoFocus\"\n :link=\"link\"\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 v-bind=\"$attrs\"\n @input=\"onInput\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"dt-recipe-message-input__bottom-section\">\n <!-- Left content -->\n <div class=\"dt-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=\"dt-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=\"dt-recipe-message-input__image-input\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n <dt-popover\n v-if=\"showEmojiPicker\"\n v-model:open=\"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=\"dt-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 </dt-stack>\n </div>\n <!-- Right content -->\n <div class=\"dt-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-d-flex d-ai-center\">\n <slot name=\"smsCount\" />\n </div>\n\n <!-- Optionally displayed remaining character counter -->\n <dt-tooltip\n v-if=\"Boolean(showCharacterLimit)\"\n class=\"dt-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=\"dt-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=\"dt-recipe-message-input__button dt-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 'dt-recipe-message-input__button dt-recipe-message-input__send-button',\n {\n 'dt-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 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,\n DtIconVerySatisfied,\n DtIconSatisfied,\n DtIconSend,\n} from '@dialpad/dialtone-icons/vue3';\n\nexport default {\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtInput,\n DtPopover,\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 * 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: 'text',\n validator (outputFormat) {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(outputFormat);\n },\n },\n\n /**\n * Enables the Link extension and optionally passes configurations to it\n */\n link: {\n type: [Boolean, Object],\n default: true,\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 * Whether the input allows for block quote.\n */\n allowBlockquote: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows for bold to be introduced in the text.\n */\n allowBold: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows for bullet list to be introduced in the text.\n */\n allowBulletList: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows for italic to be introduced in the text.\n */\n allowItalic: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows for strike to be introduced in the text.\n */\n allowStrike: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows for underline to be introduced in the text.\n */\n allowUnderline: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Whether the input allows codeblock to be introduced in the text.\n */\n allowCodeblock: {\n type: Boolean,\n default: true,\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 data () {\n return {\n additionalExtensions: [MeetingPill],\n internalInputValue: this.modelValue, // internal input content\n imagePickerFocus: false,\n emojiPickerFocus: false,\n emojiPickerOpened: false,\n };\n },\n\n computed: {\n showSendIcon () {\n return !this.showSend.text;\n },\n\n inputLength () {\n return this.internalInputValue.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 }\n },\n\n methods: {\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};\n</script>\n"],"names":["DtButton","DtEmojiPicker","DtInput","DtPopover","DtRichTextEditor","DtTooltip","DtStack","DtIconImage","DtIconVerySatisfied","DtIconSatisfied","DtIconSend","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","RICH_TEXT_EDITOR_OUTPUT_FORMATS","MeetingPill","_createElementBlock","_normalizeClass","_withModifiers","_renderSlot","_normalizeStyle","_createVNode","_mergeProps","_createElementVNode","_withCtx","_createBlock","_createCommentVNode","_toDisplayString","_createSlots","_openBlock"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import MeetingPill from "./extensions/meeting_pill/meeting_pill.js";
2
2
  import { DtIconImage, DtIconVerySatisfied, DtIconSatisfied, DtIconSend } from "@dialpad/dialtone-icons/vue3";
3
3
  import { resolveComponent, resolveDirective, openBlock, createElementBlock, normalizeClass, withModifiers, renderSlot, withDirectives, normalizeStyle, createVNode, mergeProps, createElementVNode, withCtx, createBlock, createCommentVNode, toDisplayString, vShow, createSlots } from "vue";
4
- /* empty css */
5
4
  import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
6
5
  import DtButton from "../../../components/button/button.vue.js";
7
6
  import DtEmojiPicker from "../../../components/emoji_picker/emoji_picker.vue.js";
@@ -442,10 +441,13 @@ const _sfc_main = {
442
441
  onSkinTone(skinTone) {
443
442
  this.$emit("skin-tone", skinTone);
444
443
  },
445
- onSelectEmoji(emoji) {
444
+ onSelectEmoji(emoji, close) {
446
445
  if (!emoji) {
447
446
  return;
448
447
  }
448
+ if (!emoji.shift_key) {
449
+ close();
450
+ }
449
451
  this.$refs.richTextEditor.editor.commands.insertContent({
450
452
  type: "emoji",
451
453
  attrs: {
@@ -480,9 +482,9 @@ const _sfc_main = {
480
482
  }
481
483
  }
482
484
  };
483
- const _hoisted_1 = { class: "dt-message-input__bottom-section" };
484
- const _hoisted_2 = { class: "dt-message-input__bottom-section-left" };
485
- const _hoisted_3 = { class: "dt-message-input__bottom-section-right" };
485
+ const _hoisted_1 = { class: "dt-recipe-message-input__bottom-section" };
486
+ const _hoisted_2 = { class: "dt-recipe-message-input__bottom-section-left" };
487
+ const _hoisted_3 = { class: "dt-recipe-message-input__bottom-section-right" };
486
488
  const _hoisted_4 = { class: "d-d-flex d-ai-center" };
487
489
  const _hoisted_5 = { key: 0 };
488
490
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
@@ -500,9 +502,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
500
502
  const _directive_dt_scrollbar = resolveDirective("dt-scrollbar");
501
503
  const _directive_dt_tooltip = resolveDirective("dt-tooltip");
502
504
  return openBlock(), createElementBlock("div", {
503
- "data-qa": "dt-message-input",
505
+ "data-qa": "dt-recipe-message-input",
504
506
  role: "presentation",
505
- class: normalizeClass(["dt-message-input"]),
507
+ class: normalizeClass(["dt-recipe-message-input"]),
506
508
  onDragover: _cache[10] || (_cache[10] = withModifiers(() => {
507
509
  }, ["prevent"])),
508
510
  onDrop: _cache[11] || (_cache[11] = withModifiers((...args) => $options.onDrop && $options.onDrop(...args), ["prevent"])),
@@ -511,7 +513,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
511
513
  }, [
512
514
  renderSlot(_ctx.$slots, "top"),
513
515
  withDirectives((openBlock(), createElementBlock("div", {
514
- class: "dt-message-input__editor-wrapper",
516
+ class: "dt-recipe-message-input__editor-wrapper",
515
517
  style: normalizeStyle({ "max-height": $props.maxHeight })
516
518
  }, [
517
519
  createVNode(_component_dt_rich_text_editor, mergeProps({
@@ -553,9 +555,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
553
555
  return [
554
556
  $props.showImagePicker ? withDirectives((openBlock(), createBlock(_component_dt_button, {
555
557
  key: 0,
556
- "data-qa": "dt-message-input-image-btn",
558
+ "data-qa": "dt-recipe-message-input-image-btn",
557
559
  size: "sm",
558
- class: "dt-message-input__button",
560
+ class: "dt-recipe-message-input__button",
559
561
  kind: "muted",
560
562
  importance: "clear",
561
563
  "aria-label": $props.showImagePicker.ariaLabel,
@@ -574,10 +576,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
574
576
  ]) : createCommentVNode("", true),
575
577
  createVNode(_component_dt_input, {
576
578
  ref: "messageInputImageUpload",
577
- "data-qa": "dt-message-input-image-input",
579
+ "data-qa": "dt-recipe-message-input-image-input",
578
580
  accept: "image/*, video/*",
579
581
  type: "file",
580
- class: "dt-message-input__image-input",
582
+ class: "dt-recipe-message-input__image-input",
581
583
  multiple: "",
582
584
  hidden: "",
583
585
  onInput: $options.onImageUpload
@@ -586,15 +588,15 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
586
588
  key: 1,
587
589
  open: $data.emojiPickerOpened,
588
590
  "onUpdate:open": _cache[9] || (_cache[9] = ($event) => $data.emojiPickerOpened = $event),
589
- "data-qa": "dt-message-input-emoji-picker-popover",
591
+ "data-qa": "dt-recipe-message-input-emoji-picker-popover",
590
592
  "initial-focus-element": "#searchInput",
591
593
  padding: "none"
592
594
  }, {
593
595
  anchor: withCtx(({ attrs }) => [
594
596
  withDirectives((openBlock(), createBlock(_component_dt_button, mergeProps(attrs, {
595
- "data-qa": "dt-message-input-emoji-picker-btn",
597
+ "data-qa": "dt-recipe-message-input-emoji-picker-btn",
596
598
  size: "sm",
597
- class: "dt-message-input__button",
599
+ class: "dt-recipe-message-input__button",
598
600
  kind: "muted",
599
601
  importance: "clear",
600
602
  "aria-label": $props.emojiButtonAriaLabel,
@@ -621,10 +623,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
621
623
  content: withCtx(({ close }) => [
622
624
  createVNode(_component_dt_emoji_picker, mergeProps($props.emojiPickerProps, {
623
625
  onSkinTone: $options.onSkinTone,
624
- onSelectedEmoji: (emoji) => {
625
- close();
626
- $options.onSelectEmoji(emoji);
627
- }
626
+ onSelectedEmoji: (emoji) => $options.onSelectEmoji(emoji, close)
628
627
  }), null, 16, ["onSkinTone", "onSelectedEmoji"])
629
628
  ]),
630
629
  _: 1
@@ -646,7 +645,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
646
645
  ]),
647
646
  Boolean($props.showCharacterLimit) ? (openBlock(), createBlock(_component_dt_tooltip, {
648
647
  key: 0,
649
- class: "dt-message-input__remaining-char-tooltip",
648
+ class: "dt-recipe-message-input__remaining-char-tooltip",
650
649
  placement: "top-end",
651
650
  enabled: $options.characterLimitTooltipEnabled,
652
651
  message: $props.showCharacterLimit.message,
@@ -654,8 +653,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
654
653
  }, {
655
654
  anchor: withCtx(() => [
656
655
  withDirectives(createElementVNode("p", {
657
- class: "dt-message-input__remaining-char",
658
- "data-qa": "dt-message-input-character-limit"
656
+ class: "dt-recipe-message-input__remaining-char",
657
+ "data-qa": "dt-recipe-message-input-character-limit"
659
658
  }, toDisplayString($props.showCharacterLimit.count - $options.inputLength), 513), [
660
659
  [vShow, $options.displayCharacterLimitWarning]
661
660
  ])
@@ -664,8 +663,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
664
663
  }, 8, ["enabled", "message"])) : createCommentVNode("", true),
665
664
  $props.showCancel ? (openBlock(), createBlock(_component_dt_button, {
666
665
  key: 1,
667
- "data-qa": "dt-message-input-cancel-button",
668
- class: "dt-message-input__button dt-message-input__cancel-button",
666
+ "data-qa": "dt-recipe-message-input-cancel-button",
667
+ class: "dt-recipe-message-input__button dt-recipe-message-input__cancel-button",
669
668
  size: "sm",
670
669
  kind: "muted",
671
670
  importance: "clear",
@@ -682,14 +681,14 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
682
681
  return [
683
682
  $props.showSend ? withDirectives((openBlock(), createBlock(_component_dt_button, {
684
683
  key: 0,
685
- "data-qa": "dt-message-input-send-btn",
684
+ "data-qa": "dt-recipe-message-input-send-btn",
686
685
  size: "sm",
687
686
  kind: "default",
688
687
  importance: "primary",
689
688
  class: normalizeClass([
690
- "dt-message-input__button dt-message-input__send-button",
689
+ "dt-recipe-message-input__button dt-recipe-message-input__send-button",
691
690
  {
692
- "dt-message-input__send-button--disabled": $options.isSendDisabled,
691
+ "dt-recipe-message-input__send-button--disabled": $options.isSendDisabled,
693
692
  "d-btn--icon-only": $options.showSendIcon
694
693
  }
695
694
  ]),