@dialpad/dialtone 9.29.1 → 9.30.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 (864) hide show
  1. package/dist/css/dialtone.css +2 -2
  2. package/dist/tokens/css/variables-dark.css +1 -1
  3. package/dist/tokens/css/variables-expressive-dark.css +937 -0
  4. package/dist/tokens/css/variables-expressive-light.css +817 -0
  5. package/dist/tokens/css/{variables-cox-dark.css → variables-expressive-sm-dark.css} +68 -67
  6. package/dist/tokens/css/{variables-cox-light.css → variables-expressive-sm-light.css} +67 -66
  7. package/dist/tokens/css/variables-light.css +1 -1
  8. package/dist/tokens/css/variables-tmo-dark.css +1 -1
  9. package/dist/tokens/css/variables-tmo-light.css +1 -1
  10. package/dist/tokens/doc.json +21010 -294
  11. package/dist/tokens/less/variables-dark.less +1 -1
  12. package/dist/tokens/less/variables-expressive-dark.less +934 -0
  13. package/dist/tokens/less/variables-expressive-light.less +814 -0
  14. package/dist/tokens/less/{variables-cox-dark.less → variables-expressive-sm-dark.less} +67 -66
  15. package/dist/tokens/less/{variables-cox-light.less → variables-expressive-sm-light.less} +66 -65
  16. package/dist/tokens/less/variables-light.less +1 -1
  17. package/dist/tokens/less/variables-tmo-dark.less +1 -1
  18. package/dist/tokens/less/variables-tmo-light.less +1 -1
  19. package/dist/vue2/chunks/_plugin-vue2_normalizer-1aBeR4AK.js +59 -0
  20. package/dist/vue2/chunks/_plugin-vue2_normalizer-1aBeR4AK.js.map +1 -0
  21. package/dist/vue2/chunks/_plugin-vue2_normalizer-sOSkiPF3.js +60 -0
  22. package/dist/vue2/chunks/_plugin-vue2_normalizer-sOSkiPF3.js.map +1 -0
  23. package/dist/vue2/chunks/{dropdown-SMWaTWyF.js → dropdown-DTtcQEFC.js} +131 -84
  24. package/dist/vue2/chunks/{dropdown-SMWaTWyF.js.map → dropdown-DTtcQEFC.js.map} +1 -1
  25. package/dist/vue2/chunks/dropdown-IaLNHmVd.js +403 -0
  26. package/dist/vue2/chunks/{dropdown-zhMEz3bn.js.map → dropdown-IaLNHmVd.js.map} +1 -1
  27. package/dist/vue2/chunks/dropdown_constants-2pGCXy7m.js +8 -0
  28. package/dist/vue2/chunks/dropdown_constants-2pGCXy7m.js.map +1 -0
  29. package/dist/vue2/chunks/dropdown_constants-w1MXGC3Z.js +9 -0
  30. package/dist/vue2/chunks/dropdown_constants-w1MXGC3Z.js.map +1 -0
  31. package/dist/vue2/chunks/{icon_constants-OpYAAKwF.js → icon_constants-Dy4MEUJL.js} +7 -6
  32. package/dist/vue2/chunks/{icon_constants-2S_OSQ1t.js.map → icon_constants-Dy4MEUJL.js.map} +1 -1
  33. package/dist/vue2/chunks/icon_constants-QYpmdE0R.js +16 -0
  34. package/dist/{vue3/chunks/icon_constants-2S_OSQ1t.js.map → vue2/chunks/icon_constants-QYpmdE0R.js.map} +1 -1
  35. package/dist/vue2/chunks/index-eJ-WWRdf.js +442 -0
  36. package/dist/vue2/chunks/{index-2jPosQBn.js.map → index-eJ-WWRdf.js.map} +1 -1
  37. package/dist/vue2/chunks/index-gj1jEXP4.js +441 -0
  38. package/dist/vue2/chunks/{index-nIyl_PL6.js.map → index-gj1jEXP4.js.map} +1 -1
  39. package/dist/{vue3/chunks/input-4UQWegUk.js → vue2/chunks/input-6kbd8Pju.js} +83 -60
  40. package/dist/vue2/chunks/{input-o-fc1X4b.js.map → input-6kbd8Pju.js.map} +1 -1
  41. package/dist/vue2/chunks/input-Axw-wFj2.js +295 -0
  42. package/dist/vue2/chunks/{input-1tm09l_-.js.map → input-Axw-wFj2.js.map} +1 -1
  43. package/dist/vue2/chunks/input_group-m3cWYUfI.js +143 -0
  44. package/dist/vue2/chunks/{input_group-zcAq3DQl.js.map → input_group-m3cWYUfI.js.map} +1 -1
  45. package/dist/vue2/chunks/{input_group-zcAq3DQl.js → input_group-qVZaS5Bb.js} +27 -24
  46. package/dist/vue2/chunks/{input_group-j2gTtc1C.js.map → input_group-qVZaS5Bb.js.map} +1 -1
  47. package/dist/vue2/chunks/keyboard_list_navigation-ScXhrxya.js +284 -0
  48. package/dist/vue2/chunks/{keyboard_list_navigation-N74Bpdq7.js.map → keyboard_list_navigation-ScXhrxya.js.map} +1 -1
  49. package/dist/vue2/chunks/keyboard_list_navigation-fJnl_Iox.js +283 -0
  50. package/dist/{vue3/chunks/keyboard_list_navigation-F0O8nht0.js.map → vue2/chunks/keyboard_list_navigation-fJnl_Iox.js.map} +1 -1
  51. package/dist/vue2/chunks/link_constants-Huj7D_hm.js +22 -0
  52. package/dist/vue2/chunks/{link_constants-Kn6kP4i1.js.map → link_constants-Huj7D_hm.js.map} +1 -1
  53. package/dist/vue2/chunks/link_constants-nWVlXQBs.js +23 -0
  54. package/dist/{vue3/chunks/link_constants-Kn6kP4i1.js.map → vue2/chunks/link_constants-nWVlXQBs.js.map} +1 -1
  55. package/dist/vue2/chunks/list_item_constants-EiqkqZvP.js +13 -0
  56. package/dist/vue2/chunks/{list_item_constants-Tsz5CO1m.js.map → list_item_constants-EiqkqZvP.js.map} +1 -1
  57. package/dist/vue2/chunks/list_item_constants-u1xcN9Dd.js +14 -0
  58. package/dist/{vue3/chunks/list_item_constants-Tsz5CO1m.js.map → vue2/chunks/list_item_constants-u1xcN9Dd.js.map} +1 -1
  59. package/dist/vue2/chunks/modal-VgxXAQFP.js +105 -0
  60. package/dist/vue2/chunks/{modal-qEzlo0Sj.js.map → modal-VgxXAQFP.js.map} +1 -1
  61. package/dist/vue2/chunks/modal-XOr4kiNZ.js +106 -0
  62. package/dist/{vue3/chunks/modal-VuMFkZFH.js.map → vue2/chunks/modal-XOr4kiNZ.js.map} +1 -1
  63. package/dist/vue2/chunks/notice_action-IRUoLX2d.js +196 -0
  64. package/dist/vue2/chunks/{notice_action-u3ZKIhit.js.map → notice_action-IRUoLX2d.js.map} +1 -1
  65. package/dist/vue2/chunks/notice_action-P6uDyE9x.js +195 -0
  66. package/dist/vue2/chunks/{notice_action-9NmtQRai.js.map → notice_action-P6uDyE9x.js.map} +1 -1
  67. package/dist/vue2/chunks/notice_constants-7Qt2CQEY.js +7 -0
  68. package/dist/vue2/chunks/{notice_constants-mC6al2Dm.js.map → notice_constants-7Qt2CQEY.js.map} +1 -1
  69. package/dist/vue2/chunks/notice_constants-UXo9e3bS.js +6 -0
  70. package/dist/{vue3/chunks/notice_constants-mC6al2Dm.js.map → vue2/chunks/notice_constants-UXo9e3bS.js.map} +1 -1
  71. package/dist/vue2/chunks/popover_constants-JwBF9h1Z.js +143 -0
  72. package/dist/{vue3/chunks/popover_constants-hOEhklvr.js.map → vue2/chunks/popover_constants-JwBF9h1Z.js.map} +1 -1
  73. package/dist/vue2/chunks/popover_constants-Qkpb0yh2.js +144 -0
  74. package/dist/vue2/chunks/{popover_constants-hOEhklvr.js.map → popover_constants-Qkpb0yh2.js.map} +1 -1
  75. package/dist/vue2/chunks/sr_only_close_button-81bHIpPu.js +95 -0
  76. package/dist/vue2/chunks/{sr_only_close_button-ErijKGYR.js.map → sr_only_close_button-81bHIpPu.js.map} +1 -1
  77. package/dist/vue2/chunks/sr_only_close_button-ZaGdAHz7.js +94 -0
  78. package/dist/vue2/chunks/{sr_only_close_button-JGole5Xi.js.map → sr_only_close_button-ZaGdAHz7.js.map} +1 -1
  79. package/dist/vue2/chunks/stack_constants-HraCekPm.js +15 -0
  80. package/dist/vue2/chunks/{stack_constants-m9Ickqw0.js.map → stack_constants-HraCekPm.js.map} +1 -1
  81. package/dist/vue2/chunks/stack_constants-SMzMWnAQ.js +14 -0
  82. package/dist/{vue3/chunks/stack_constants-m9Ickqw0.js.map → vue2/chunks/stack_constants-SMzMWnAQ.js.map} +1 -1
  83. package/dist/vue2/chunks/tab-FcsV5VmK.js +386 -0
  84. package/dist/vue2/chunks/{tab-7hJQSLFx.js.map → tab-FcsV5VmK.js.map} +1 -1
  85. package/dist/vue2/chunks/tab-V4cb44Ry.js +387 -0
  86. package/dist/vue2/chunks/{tab-Qm9LVkYj.js.map → tab-V4cb44Ry.js.map} +1 -1
  87. package/dist/vue2/common/constants.cjs +60 -0
  88. package/dist/vue2/{lib → common}/constants.cjs.map +1 -1
  89. package/dist/{vue3/lib → vue2/common}/constants.js +25 -18
  90. package/dist/vue2/{lib → common}/constants.js.map +1 -1
  91. package/dist/vue2/common/dates.cjs +72 -0
  92. package/dist/{vue3/lib → vue2/common}/dates.cjs.map +1 -1
  93. package/dist/vue2/common/dates.js +72 -0
  94. package/dist/vue2/{lib → common}/dates.js.map +1 -1
  95. package/dist/vue2/common/emoji.cjs +163 -0
  96. package/dist/vue2/common/emoji.cjs.map +1 -0
  97. package/dist/vue2/common/emoji.js +168 -0
  98. package/dist/vue2/common/emoji.js.map +1 -0
  99. package/dist/vue2/common/mixins.cjs +17 -0
  100. package/dist/vue2/{lib → common}/mixins.cjs.map +1 -1
  101. package/dist/vue2/common/mixins.js +17 -0
  102. package/dist/vue2/common/utils.cjs +237 -0
  103. package/dist/vue2/{lib → common}/utils.cjs.map +1 -1
  104. package/dist/vue2/common/utils.js +237 -0
  105. package/dist/vue2/{lib → common}/utils.js.map +1 -1
  106. package/dist/vue2/common/validators.cjs +23 -0
  107. package/dist/vue2/{lib → common}/validators.cjs.map +1 -1
  108. package/dist/vue2/common/validators.js +23 -0
  109. package/dist/vue2/{lib → common}/validators.js.map +1 -1
  110. package/dist/vue2/dialtone-vue.cjs +372 -1
  111. package/dist/vue2/dialtone-vue.cjs.map +1 -1
  112. package/dist/vue2/dialtone-vue.js +325 -324
  113. package/dist/vue2/dialtone-vue.js.map +1 -1
  114. package/dist/vue2/lib/attachment-carousel.cjs +260 -1
  115. package/dist/vue2/lib/attachment-carousel.cjs.map +1 -1
  116. package/dist/vue2/lib/attachment-carousel.js +96 -84
  117. package/dist/vue2/lib/attachment-carousel.js.map +1 -1
  118. package/dist/vue2/lib/avatar.cjs +399 -1
  119. package/dist/vue2/lib/avatar.cjs.map +1 -1
  120. package/dist/vue2/lib/avatar.js +111 -79
  121. package/dist/vue2/lib/avatar.js.map +1 -1
  122. package/dist/vue2/lib/badge.cjs +182 -1
  123. package/dist/vue2/lib/badge.cjs.map +1 -1
  124. package/dist/vue2/lib/badge.js +53 -38
  125. package/dist/vue2/lib/badge.js.map +1 -1
  126. package/dist/vue2/lib/banner.cjs +209 -2
  127. package/dist/vue2/lib/banner.cjs.map +1 -1
  128. package/dist/vue2/lib/banner.js +58 -47
  129. package/dist/vue2/lib/banner.js.map +1 -1
  130. package/dist/vue2/lib/breadcrumbs.cjs +146 -1
  131. package/dist/vue2/lib/breadcrumbs.cjs.map +1 -1
  132. package/dist/vue2/lib/breadcrumbs.js +57 -48
  133. package/dist/vue2/lib/breadcrumbs.js.map +1 -1
  134. package/dist/vue2/lib/button-group.cjs +47 -1
  135. package/dist/vue2/lib/button-group.cjs.map +1 -1
  136. package/dist/vue2/lib/button-group.js +21 -18
  137. package/dist/vue2/lib/button-group.js.map +1 -1
  138. package/dist/vue2/lib/button.cjs +349 -1
  139. package/dist/vue2/lib/button.cjs.map +1 -1
  140. package/dist/vue2/lib/button.js +98 -76
  141. package/dist/vue2/lib/button.js.map +1 -1
  142. package/dist/vue2/lib/callbar-button-with-popover.cjs +249 -1
  143. package/dist/vue2/lib/callbar-button-with-popover.cjs.map +1 -1
  144. package/dist/vue2/lib/callbar-button-with-popover.js +66 -50
  145. package/dist/vue2/lib/callbar-button-with-popover.js.map +1 -1
  146. package/dist/vue2/lib/callbar-button.cjs +182 -1
  147. package/dist/vue2/lib/callbar-button.cjs.map +1 -1
  148. package/dist/vue2/lib/callbar-button.js +42 -34
  149. package/dist/vue2/lib/callbar-button.js.map +1 -1
  150. package/dist/vue2/lib/callbox.cjs +146 -1
  151. package/dist/vue2/lib/callbox.cjs.map +1 -1
  152. package/dist/vue2/lib/callbox.js +38 -32
  153. package/dist/vue2/lib/callbox.js.map +1 -1
  154. package/dist/vue2/lib/card.cjs +73 -1
  155. package/dist/vue2/lib/card.cjs.map +1 -1
  156. package/dist/vue2/lib/card.js +22 -20
  157. package/dist/vue2/lib/card.js.map +1 -1
  158. package/dist/vue2/lib/checkbox-group.cjs +129 -1
  159. package/dist/vue2/lib/checkbox-group.cjs.map +1 -1
  160. package/dist/vue2/lib/checkbox-group.js +42 -29
  161. package/dist/vue2/lib/checkbox-group.js.map +1 -1
  162. package/dist/vue2/lib/checkbox.cjs +127 -1
  163. package/dist/vue2/lib/checkbox.cjs.map +1 -1
  164. package/dist/vue2/lib/checkbox.js +46 -35
  165. package/dist/vue2/lib/checkbox.js.map +1 -1
  166. package/dist/vue2/lib/chip.cjs +198 -1
  167. package/dist/vue2/lib/chip.cjs.map +1 -1
  168. package/dist/vue2/lib/chip.js +59 -45
  169. package/dist/vue2/lib/chip.js.map +1 -1
  170. package/dist/vue2/lib/codeblock.cjs +29 -2
  171. package/dist/vue2/lib/codeblock.cjs.map +1 -1
  172. package/dist/vue2/lib/codeblock.js +15 -14
  173. package/dist/vue2/lib/codeblock.js.map +1 -1
  174. package/dist/vue2/lib/collapsible.cjs +334 -1
  175. package/dist/vue2/lib/collapsible.cjs.map +1 -1
  176. package/dist/vue2/lib/collapsible.js +91 -68
  177. package/dist/vue2/lib/collapsible.js.map +1 -1
  178. package/dist/vue2/lib/combobox-multi-select.cjs +519 -1
  179. package/dist/vue2/lib/combobox-multi-select.cjs.map +1 -1
  180. package/dist/vue2/lib/combobox-multi-select.js +223 -136
  181. package/dist/vue2/lib/combobox-multi-select.js.map +1 -1
  182. package/dist/vue2/lib/combobox-with-popover.cjs +384 -1
  183. package/dist/vue2/lib/combobox-with-popover.cjs.map +1 -1
  184. package/dist/vue2/lib/combobox-with-popover.js +130 -86
  185. package/dist/vue2/lib/combobox-with-popover.js.map +1 -1
  186. package/dist/vue2/lib/combobox.cjs +18 -1
  187. package/dist/vue2/lib/combobox.cjs.map +1 -1
  188. package/dist/vue2/lib/combobox.js +9 -9
  189. package/dist/vue2/lib/contact-info.cjs +145 -1
  190. package/dist/vue2/lib/contact-info.cjs.map +1 -1
  191. package/dist/vue2/lib/contact-info.js +34 -32
  192. package/dist/vue2/lib/contact-info.js.map +1 -1
  193. package/dist/vue2/lib/contact-row.cjs +205 -1
  194. package/dist/vue2/lib/contact-row.cjs.map +1 -1
  195. package/dist/vue2/lib/contact-row.js +42 -39
  196. package/dist/vue2/lib/contact-row.js.map +1 -1
  197. package/dist/vue2/lib/datepicker.cjs +662 -1
  198. package/dist/vue2/lib/datepicker.cjs.map +1 -1
  199. package/dist/vue2/lib/datepicker.js +330 -218
  200. package/dist/vue2/lib/datepicker.js.map +1 -1
  201. package/dist/vue2/lib/description-list.cjs +114 -1
  202. package/dist/vue2/lib/description-list.cjs.map +1 -1
  203. package/dist/vue2/lib/description-list.js +51 -19
  204. package/dist/vue2/lib/description-list.js.map +1 -1
  205. package/dist/vue2/lib/dropdown.cjs +45 -1
  206. package/dist/vue2/lib/dropdown.cjs.map +1 -1
  207. package/dist/vue2/lib/dropdown.js +27 -25
  208. package/dist/vue2/lib/dropdown.js.map +1 -1
  209. package/dist/vue2/lib/editor.cjs +555 -1
  210. package/dist/vue2/lib/editor.cjs.map +1 -1
  211. package/dist/vue2/lib/editor.js +191 -162
  212. package/dist/vue2/lib/editor.js.map +1 -1
  213. package/dist/vue2/lib/emoji-picker.cjs +1063 -1
  214. package/dist/vue2/lib/emoji-picker.cjs.map +1 -1
  215. package/dist/vue2/lib/emoji-picker.js +638 -374
  216. package/dist/vue2/lib/emoji-picker.js.map +1 -1
  217. package/dist/vue2/lib/emoji-row.cjs +88 -1
  218. package/dist/vue2/lib/emoji-row.cjs.map +1 -1
  219. package/dist/vue2/lib/emoji-row.js +46 -40
  220. package/dist/vue2/lib/emoji-row.js.map +1 -1
  221. package/dist/vue2/lib/emoji-text-wrapper.cjs +109 -1
  222. package/dist/vue2/lib/emoji-text-wrapper.cjs.map +1 -1
  223. package/dist/vue2/lib/emoji-text-wrapper.js +49 -35
  224. package/dist/vue2/lib/emoji-text-wrapper.js.map +1 -1
  225. package/dist/vue2/lib/emoji.cjs +145 -1
  226. package/dist/vue2/lib/emoji.cjs.map +1 -1
  227. package/dist/vue2/lib/emoji.js +140 -5
  228. package/dist/vue2/lib/emoji.js.map +1 -1
  229. package/dist/vue2/lib/feed-item-row.cjs +213 -1
  230. package/dist/vue2/lib/feed-item-row.cjs.map +1 -1
  231. package/dist/vue2/lib/feed-item-row.js +71 -63
  232. package/dist/vue2/lib/feed-item-row.js.map +1 -1
  233. package/dist/vue2/lib/feed-pill.cjs +149 -1
  234. package/dist/vue2/lib/feed-pill.cjs.map +1 -1
  235. package/dist/vue2/lib/feed-pill.js +60 -51
  236. package/dist/vue2/lib/feed-pill.js.map +1 -1
  237. package/dist/vue2/lib/general-row.cjs +405 -1
  238. package/dist/vue2/lib/general-row.cjs.map +1 -1
  239. package/dist/vue2/lib/general-row.js +133 -106
  240. package/dist/vue2/lib/general-row.js.map +1 -1
  241. package/dist/vue2/lib/group-row.cjs +117 -1
  242. package/dist/vue2/lib/group-row.cjs.map +1 -1
  243. package/dist/vue2/lib/group-row.js +33 -30
  244. package/dist/vue2/lib/group-row.js.map +1 -1
  245. package/dist/vue2/lib/grouped-chip.cjs +45 -1
  246. package/dist/vue2/lib/grouped-chip.cjs.map +1 -1
  247. package/dist/vue2/lib/grouped-chip.js +28 -26
  248. package/dist/vue2/lib/grouped-chip.js.map +1 -1
  249. package/dist/vue2/lib/hovercard.cjs +227 -1
  250. package/dist/vue2/lib/hovercard.cjs.map +1 -1
  251. package/dist/vue2/lib/hovercard.js +98 -63
  252. package/dist/vue2/lib/hovercard.js.map +1 -1
  253. package/dist/vue2/lib/icon.cjs +59 -1
  254. package/dist/vue2/lib/icon.cjs.map +1 -1
  255. package/dist/vue2/lib/icon.js +22 -20
  256. package/dist/vue2/lib/icon.js.map +1 -1
  257. package/dist/vue2/lib/image-viewer.cjs +190 -1
  258. package/dist/vue2/lib/image-viewer.cjs.map +1 -1
  259. package/dist/vue2/lib/image-viewer.js +83 -62
  260. package/dist/vue2/lib/image-viewer.js.map +1 -1
  261. package/dist/vue2/lib/input-group.cjs +91 -1
  262. package/dist/vue2/lib/input-group.cjs.map +1 -1
  263. package/dist/vue2/lib/input-group.js +29 -27
  264. package/dist/vue2/lib/input-group.js.map +1 -1
  265. package/dist/vue2/lib/input.cjs +492 -1
  266. package/dist/vue2/lib/input.cjs.map +1 -1
  267. package/dist/vue2/lib/input.js +127 -89
  268. package/dist/vue2/lib/input.js.map +1 -1
  269. package/dist/vue2/lib/item-layout.cjs +40 -1
  270. package/dist/vue2/lib/item-layout.cjs.map +1 -1
  271. package/dist/vue2/lib/item-layout.js +15 -13
  272. package/dist/vue2/lib/item-layout.js.map +1 -1
  273. package/dist/vue2/lib/ivr-node.cjs +209 -1
  274. package/dist/vue2/lib/ivr-node.cjs.map +1 -1
  275. package/dist/vue2/lib/ivr-node.js +115 -99
  276. package/dist/vue2/lib/ivr-node.js.map +1 -1
  277. package/dist/vue2/lib/keyboard-shortcut.cjs +106 -1
  278. package/dist/vue2/lib/keyboard-shortcut.cjs.map +1 -1
  279. package/dist/vue2/lib/keyboard-shortcut.js +42 -34
  280. package/dist/vue2/lib/keyboard-shortcut.js.map +1 -1
  281. package/dist/vue2/lib/lazy-show.cjs +80 -1
  282. package/dist/vue2/lib/lazy-show.cjs.map +1 -1
  283. package/dist/vue2/lib/lazy-show.js +20 -16
  284. package/dist/vue2/lib/lazy-show.js.map +1 -1
  285. package/dist/vue2/lib/link.cjs +70 -1
  286. package/dist/vue2/lib/link.cjs.map +1 -1
  287. package/dist/vue2/lib/link.js +22 -20
  288. package/dist/vue2/lib/link.js.map +1 -1
  289. package/dist/vue2/lib/list-item-group.cjs +60 -1
  290. package/dist/vue2/lib/list-item-group.cjs.map +1 -1
  291. package/dist/vue2/lib/list-item-group.js +19 -17
  292. package/dist/vue2/lib/list-item-group.js.map +1 -1
  293. package/dist/vue2/lib/list-item.cjs +204 -1
  294. package/dist/vue2/lib/list-item.cjs.map +1 -1
  295. package/dist/vue2/lib/list-item.js +67 -56
  296. package/dist/vue2/lib/list-item.js.map +1 -1
  297. package/dist/vue2/lib/message-input.cjs +554 -1
  298. package/dist/vue2/lib/message-input.cjs.map +1 -1
  299. package/dist/vue2/lib/message-input.js +174 -152
  300. package/dist/vue2/lib/message-input.js.map +1 -1
  301. package/dist/vue2/lib/modal.cjs +350 -2
  302. package/dist/vue2/lib/modal.cjs.map +1 -1
  303. package/dist/vue2/lib/modal.js +118 -90
  304. package/dist/vue2/lib/modal.js.map +1 -1
  305. package/dist/vue2/lib/notice.cjs +159 -1
  306. package/dist/vue2/lib/notice.cjs.map +1 -1
  307. package/dist/vue2/lib/notice.js +46 -43
  308. package/dist/vue2/lib/notice.js.map +1 -1
  309. package/dist/vue2/lib/pagination.cjs +152 -1
  310. package/dist/vue2/lib/pagination.cjs.map +1 -1
  311. package/dist/vue2/lib/pagination.js +60 -48
  312. package/dist/vue2/lib/pagination.js.map +1 -1
  313. package/dist/vue2/lib/popover.cjs +956 -1
  314. package/dist/vue2/lib/popover.cjs.map +1 -1
  315. package/dist/vue2/lib/popover.js +401 -221
  316. package/dist/vue2/lib/popover.js.map +1 -1
  317. package/dist/vue2/lib/presence.cjs +65 -1
  318. package/dist/vue2/lib/presence.cjs.map +1 -1
  319. package/dist/vue2/lib/presence.js +32 -26
  320. package/dist/vue2/lib/presence.js.map +1 -1
  321. package/dist/vue2/lib/radio-group.cjs +98 -1
  322. package/dist/vue2/lib/radio-group.cjs.map +1 -1
  323. package/dist/vue2/lib/radio-group.js +24 -22
  324. package/dist/vue2/lib/radio-group.js.map +1 -1
  325. package/dist/vue2/lib/radio.cjs +118 -1
  326. package/dist/vue2/lib/radio.cjs.map +1 -1
  327. package/dist/vue2/lib/radio.js +43 -35
  328. package/dist/vue2/lib/radio.js.map +1 -1
  329. package/dist/vue2/lib/rich-text-editor.cjs +1138 -1
  330. package/dist/vue2/lib/rich-text-editor.cjs.map +1 -1
  331. package/dist/vue2/lib/rich-text-editor.js +574 -387
  332. package/dist/vue2/lib/rich-text-editor.js.map +1 -1
  333. package/dist/vue2/lib/root-layout.cjs +130 -1
  334. package/dist/vue2/lib/root-layout.cjs.map +1 -1
  335. package/dist/vue2/lib/root-layout.js +28 -24
  336. package/dist/vue2/lib/root-layout.js.map +1 -1
  337. package/dist/vue2/lib/select-menu.cjs +282 -1
  338. package/dist/vue2/lib/select-menu.cjs.map +1 -1
  339. package/dist/vue2/lib/select-menu.js +101 -61
  340. package/dist/vue2/lib/select-menu.js.map +1 -1
  341. package/dist/vue2/lib/settings-menu-button.cjs +65 -1
  342. package/dist/vue2/lib/settings-menu-button.cjs.map +1 -1
  343. package/dist/vue2/lib/settings-menu-button.js +26 -24
  344. package/dist/vue2/lib/settings-menu-button.js.map +1 -1
  345. package/dist/vue2/lib/skeleton.cjs +612 -1
  346. package/dist/vue2/lib/skeleton.cjs.map +1 -1
  347. package/dist/vue2/lib/skeleton.js +174 -135
  348. package/dist/vue2/lib/skeleton.js.map +1 -1
  349. package/dist/vue2/lib/stack.cjs +127 -1
  350. package/dist/vue2/lib/stack.cjs.map +1 -1
  351. package/dist/vue2/lib/stack.js +66 -56
  352. package/dist/vue2/lib/stack.js.map +1 -1
  353. package/dist/vue2/lib/tabs.cjs +99 -1
  354. package/dist/vue2/lib/tabs.cjs.map +1 -1
  355. package/dist/vue2/lib/tabs.js +42 -35
  356. package/dist/vue2/lib/tabs.js.map +1 -1
  357. package/dist/vue2/lib/time-pill.cjs +47 -1
  358. package/dist/vue2/lib/time-pill.cjs.map +1 -1
  359. package/dist/vue2/lib/time-pill.js +21 -16
  360. package/dist/vue2/lib/time-pill.js.map +1 -1
  361. package/dist/vue2/lib/toast.cjs +247 -1
  362. package/dist/vue2/lib/toast.cjs.map +1 -1
  363. package/dist/vue2/lib/toast.js +78 -55
  364. package/dist/vue2/lib/toast.js.map +1 -1
  365. package/dist/vue2/lib/toggle.cjs +177 -1
  366. package/dist/vue2/lib/toggle.cjs.map +1 -1
  367. package/dist/vue2/lib/toggle.js +46 -37
  368. package/dist/vue2/lib/toggle.js.map +1 -1
  369. package/dist/vue2/lib/tooltip-directive.cjs +87 -1
  370. package/dist/vue2/lib/tooltip-directive.cjs.map +1 -1
  371. package/dist/vue2/lib/tooltip-directive.js +55 -41
  372. package/dist/vue2/lib/tooltip-directive.js.map +1 -1
  373. package/dist/vue2/lib/tooltip.cjs +436 -1
  374. package/dist/vue2/lib/tooltip.cjs.map +1 -1
  375. package/dist/vue2/lib/tooltip.js +152 -90
  376. package/dist/vue2/lib/tooltip.js.map +1 -1
  377. package/dist/vue2/lib/top-banner-info.cjs +63 -1
  378. package/dist/vue2/lib/top-banner-info.cjs.map +1 -1
  379. package/dist/vue2/lib/top-banner-info.js +22 -18
  380. package/dist/vue2/lib/top-banner-info.js.map +1 -1
  381. package/dist/vue2/lib/unread-pill.cjs +63 -1
  382. package/dist/vue2/lib/unread-pill.cjs.map +1 -1
  383. package/dist/vue2/lib/unread-pill.js +25 -21
  384. package/dist/vue2/lib/unread-pill.js.map +1 -1
  385. package/dist/vue2/lib/validation-messages.cjs +85 -1
  386. package/dist/vue2/lib/validation-messages.cjs.map +1 -1
  387. package/dist/vue2/lib/validation-messages.js +32 -29
  388. package/dist/vue2/lib/validation-messages.js.map +1 -1
  389. package/dist/vue2/style.css +1214 -1
  390. package/dist/vue2/types/components/rich_text_editor/extensions/emoji/EmojiComponent.vue.d.ts +2 -2
  391. package/dist/vue2/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts +2 -2
  392. package/dist/vue3/chunks/_plugin-vue_export-helper-caHeSgYY.js +11 -0
  393. package/dist/vue3/chunks/_plugin-vue_export-helper-caHeSgYY.js.map +1 -0
  394. package/dist/vue3/chunks/_plugin-vue_export-helper-fhnQq0tA.js +10 -0
  395. package/dist/vue3/chunks/_plugin-vue_export-helper-fhnQq0tA.js.map +1 -0
  396. package/dist/vue3/chunks/{dropdown-eWOvBvwq.js → dropdown-Hn-TeTvZ.js} +151 -104
  397. package/dist/vue3/chunks/{dropdown-UO3UJalk.js.map → dropdown-Hn-TeTvZ.js.map} +1 -1
  398. package/dist/vue3/chunks/dropdown-w8Do29L5.js +442 -0
  399. package/dist/vue3/chunks/{dropdown-eWOvBvwq.js.map → dropdown-w8Do29L5.js.map} +1 -1
  400. package/dist/vue3/chunks/dropdown_constants-2pGCXy7m.js +8 -0
  401. package/dist/vue3/chunks/dropdown_constants-2pGCXy7m.js.map +1 -0
  402. package/dist/vue3/chunks/dropdown_constants-w1MXGC3Z.js +9 -0
  403. package/dist/vue3/chunks/dropdown_constants-w1MXGC3Z.js.map +1 -0
  404. package/dist/vue3/chunks/{icon_constants-OpYAAKwF.js → icon_constants-Dy4MEUJL.js} +7 -6
  405. package/dist/{vue2/chunks/icon_constants-OpYAAKwF.js.map → vue3/chunks/icon_constants-Dy4MEUJL.js.map} +1 -1
  406. package/dist/vue3/chunks/icon_constants-QYpmdE0R.js +16 -0
  407. package/dist/vue3/chunks/{icon_constants-OpYAAKwF.js.map → icon_constants-QYpmdE0R.js.map} +1 -1
  408. package/dist/vue3/chunks/index-4qgKeErp.js +446 -0
  409. package/dist/vue3/chunks/{index-b4iXYvId.js.map → index-4qgKeErp.js.map} +1 -1
  410. package/dist/vue3/chunks/index-b_MgDylR.js +447 -0
  411. package/dist/vue3/chunks/{index-6tYeqbgP.js.map → index-b_MgDylR.js.map} +1 -1
  412. package/dist/{vue2/chunks/input-1tm09l_-.js → vue3/chunks/input-NmYDD5bn.js} +83 -60
  413. package/dist/vue3/chunks/{input-0Uksk4DP.js.map → input-NmYDD5bn.js.map} +1 -1
  414. package/dist/vue3/chunks/input-ttnte8zB.js +295 -0
  415. package/dist/vue3/chunks/{input-4UQWegUk.js.map → input-ttnte8zB.js.map} +1 -1
  416. package/dist/vue3/chunks/input_group-M-D25pOJ.js +152 -0
  417. package/dist/vue3/chunks/{input_group-bBKaq3Wi.js.map → input_group-M-D25pOJ.js.map} +1 -1
  418. package/dist/vue3/chunks/{input_group-bBKaq3Wi.js → input_group-jWnq2DJT.js} +27 -24
  419. package/dist/vue3/chunks/{input_group-AS760Cp7.js.map → input_group-jWnq2DJT.js.map} +1 -1
  420. package/dist/vue3/chunks/keyboard_list_navigation-ScXhrxya.js +284 -0
  421. package/dist/vue3/chunks/{keyboard_list_navigation-N74Bpdq7.js.map → keyboard_list_navigation-ScXhrxya.js.map} +1 -1
  422. package/dist/vue3/chunks/keyboard_list_navigation-fJnl_Iox.js +283 -0
  423. package/dist/{vue2/chunks/keyboard_list_navigation-F0O8nht0.js.map → vue3/chunks/keyboard_list_navigation-fJnl_Iox.js.map} +1 -1
  424. package/dist/vue3/chunks/link_constants-Huj7D_hm.js +22 -0
  425. package/dist/{vue2/chunks/link_constants-vIUB92L4.js.map → vue3/chunks/link_constants-Huj7D_hm.js.map} +1 -1
  426. package/dist/vue3/chunks/link_constants-nWVlXQBs.js +23 -0
  427. package/dist/vue3/chunks/{link_constants-vIUB92L4.js.map → link_constants-nWVlXQBs.js.map} +1 -1
  428. package/dist/vue3/chunks/list_item_constants-EiqkqZvP.js +13 -0
  429. package/dist/{vue2/chunks/list_item_constants-LTUc74pD.js.map → vue3/chunks/list_item_constants-EiqkqZvP.js.map} +1 -1
  430. package/dist/vue3/chunks/list_item_constants-u1xcN9Dd.js +14 -0
  431. package/dist/vue3/chunks/{list_item_constants-LTUc74pD.js.map → list_item_constants-u1xcN9Dd.js.map} +1 -1
  432. package/dist/vue3/chunks/modal-VgxXAQFP.js +105 -0
  433. package/dist/vue3/chunks/{modal-qEzlo0Sj.js.map → modal-VgxXAQFP.js.map} +1 -1
  434. package/dist/vue3/chunks/modal-XOr4kiNZ.js +106 -0
  435. package/dist/{vue2/chunks/modal-VuMFkZFH.js.map → vue3/chunks/modal-XOr4kiNZ.js.map} +1 -1
  436. package/dist/vue3/chunks/notice_action-WTucGhvr.js +222 -0
  437. package/dist/vue3/chunks/{notice_action-tJfD5Qw1.js.map → notice_action-WTucGhvr.js.map} +1 -1
  438. package/dist/vue3/chunks/notice_action-p-ePanW_.js +223 -0
  439. package/dist/vue3/chunks/{notice_action-jO199emq.js.map → notice_action-p-ePanW_.js.map} +1 -1
  440. package/dist/vue3/chunks/notice_constants-7Qt2CQEY.js +7 -0
  441. package/dist/{vue2/chunks/notice_constants-c--hBFQw.js.map → vue3/chunks/notice_constants-7Qt2CQEY.js.map} +1 -1
  442. package/dist/vue3/chunks/notice_constants-UXo9e3bS.js +6 -0
  443. package/dist/vue3/chunks/{notice_constants-c--hBFQw.js.map → notice_constants-UXo9e3bS.js.map} +1 -1
  444. package/dist/vue3/chunks/popover_constants-JwBF9h1Z.js +143 -0
  445. package/dist/{vue2/chunks/popover_constants-qjlEkroB.js.map → vue3/chunks/popover_constants-JwBF9h1Z.js.map} +1 -1
  446. package/dist/vue3/chunks/popover_constants-Qkpb0yh2.js +144 -0
  447. package/dist/vue3/chunks/{popover_constants-qjlEkroB.js.map → popover_constants-Qkpb0yh2.js.map} +1 -1
  448. package/dist/vue3/chunks/{sr_only_close_button-7O-Ev8uM.js → sr_only_close_button-3EdsV-dH.js} +28 -24
  449. package/dist/vue3/chunks/{sr_only_close_button-iD7s1Pbj.js.map → sr_only_close_button-3EdsV-dH.js.map} +1 -1
  450. package/dist/vue3/chunks/sr_only_close_button-xGrHFjwA.js +91 -0
  451. package/dist/vue3/chunks/{sr_only_close_button-7O-Ev8uM.js.map → sr_only_close_button-xGrHFjwA.js.map} +1 -1
  452. package/dist/vue3/chunks/stack_constants-HraCekPm.js +15 -0
  453. package/dist/{vue2/chunks/stack_constants-u7tNqGtc.js.map → vue3/chunks/stack_constants-HraCekPm.js.map} +1 -1
  454. package/dist/vue3/chunks/stack_constants-SMzMWnAQ.js +14 -0
  455. package/dist/vue3/chunks/{stack_constants-u7tNqGtc.js.map → stack_constants-SMzMWnAQ.js.map} +1 -1
  456. package/dist/vue3/chunks/tab-RTDgnD9-.js +391 -0
  457. package/dist/vue3/chunks/{tab-at7WWglk.js.map → tab-RTDgnD9-.js.map} +1 -1
  458. package/dist/vue3/chunks/tab-qc3f42Yp.js +390 -0
  459. package/dist/vue3/chunks/{tab-GQZFMq83.js.map → tab-qc3f42Yp.js.map} +1 -1
  460. package/dist/vue3/common/constants.cjs +60 -0
  461. package/dist/vue3/{lib → common}/constants.cjs.map +1 -1
  462. package/dist/{vue2/lib → vue3/common}/constants.js +25 -18
  463. package/dist/vue3/{lib → common}/constants.js.map +1 -1
  464. package/dist/vue3/common/dates.cjs +72 -0
  465. package/dist/{vue2/lib → vue3/common}/dates.cjs.map +1 -1
  466. package/dist/vue3/common/dates.js +72 -0
  467. package/dist/vue3/{lib → common}/dates.js.map +1 -1
  468. package/dist/vue3/common/emoji.cjs +163 -0
  469. package/dist/vue3/common/emoji.cjs.map +1 -0
  470. package/dist/vue3/common/emoji.js +168 -0
  471. package/dist/vue3/common/emoji.js.map +1 -0
  472. package/dist/vue3/common/mixins.cjs +17 -0
  473. package/dist/vue3/{lib → common}/mixins.cjs.map +1 -1
  474. package/dist/vue3/common/mixins.js +17 -0
  475. package/dist/vue3/common/utils.cjs +243 -0
  476. package/dist/vue3/{lib → common}/utils.cjs.map +1 -1
  477. package/dist/vue3/common/utils.js +243 -0
  478. package/dist/vue3/{lib → common}/utils.js.map +1 -1
  479. package/dist/vue3/common/validators.cjs +23 -0
  480. package/dist/vue3/{lib → common}/validators.cjs.map +1 -1
  481. package/dist/vue3/common/validators.js +23 -0
  482. package/dist/vue3/{lib → common}/validators.js.map +1 -1
  483. package/dist/vue3/dialtone-vue.cjs +373 -1
  484. package/dist/vue3/dialtone-vue.cjs.map +1 -1
  485. package/dist/vue3/dialtone-vue.js +328 -327
  486. package/dist/vue3/dialtone-vue.js.map +1 -1
  487. package/dist/vue3/lib/attachment-carousel.cjs +345 -1
  488. package/dist/vue3/lib/attachment-carousel.cjs.map +1 -1
  489. package/dist/vue3/lib/attachment-carousel.js +126 -108
  490. package/dist/vue3/lib/attachment-carousel.js.map +1 -1
  491. package/dist/vue3/lib/avatar.cjs +447 -1
  492. package/dist/vue3/lib/avatar.cjs.map +1 -1
  493. package/dist/vue3/lib/avatar.js +135 -101
  494. package/dist/vue3/lib/avatar.js.map +1 -1
  495. package/dist/vue3/lib/badge.cjs +206 -1
  496. package/dist/vue3/lib/badge.cjs.map +1 -1
  497. package/dist/vue3/lib/badge.js +64 -48
  498. package/dist/vue3/lib/badge.js.map +1 -1
  499. package/dist/vue3/lib/banner.cjs +242 -2
  500. package/dist/vue3/lib/banner.cjs.map +1 -1
  501. package/dist/vue3/lib/banner.js +81 -71
  502. package/dist/vue3/lib/banner.js.map +1 -1
  503. package/dist/vue3/lib/breadcrumbs.cjs +150 -1
  504. package/dist/vue3/lib/breadcrumbs.cjs.map +1 -1
  505. package/dist/vue3/lib/breadcrumbs.js +60 -52
  506. package/dist/vue3/lib/breadcrumbs.js.map +1 -1
  507. package/dist/vue3/lib/button-group.cjs +41 -1
  508. package/dist/vue3/lib/button-group.cjs.map +1 -1
  509. package/dist/vue3/lib/button-group.js +15 -14
  510. package/dist/vue3/lib/button-group.js.map +1 -1
  511. package/dist/vue3/lib/button.cjs +356 -1
  512. package/dist/vue3/lib/button.cjs.map +1 -1
  513. package/dist/vue3/lib/button.js +108 -88
  514. package/dist/vue3/lib/button.js.map +1 -1
  515. package/dist/vue3/lib/callbar-button-with-popover.cjs +322 -1
  516. package/dist/vue3/lib/callbar-button-with-popover.cjs.map +1 -1
  517. package/dist/vue3/lib/callbar-button-with-popover.js +101 -83
  518. package/dist/vue3/lib/callbar-button-with-popover.js.map +1 -1
  519. package/dist/vue3/lib/callbar-button.cjs +200 -1
  520. package/dist/vue3/lib/callbar-button.cjs.map +1 -1
  521. package/dist/vue3/lib/callbar-button.js +52 -45
  522. package/dist/vue3/lib/callbar-button.js.map +1 -1
  523. package/dist/vue3/lib/callbox.cjs +217 -1
  524. package/dist/vue3/lib/callbox.cjs.map +1 -1
  525. package/dist/vue3/lib/callbox.js +80 -67
  526. package/dist/vue3/lib/callbox.js.map +1 -1
  527. package/dist/vue3/lib/card.cjs +91 -1
  528. package/dist/vue3/lib/card.cjs.map +1 -1
  529. package/dist/vue3/lib/card.js +27 -27
  530. package/dist/vue3/lib/card.js.map +1 -1
  531. package/dist/vue3/lib/checkbox-group.cjs +115 -1
  532. package/dist/vue3/lib/checkbox-group.cjs.map +1 -1
  533. package/dist/vue3/lib/checkbox-group.js +34 -23
  534. package/dist/vue3/lib/checkbox-group.js.map +1 -1
  535. package/dist/vue3/lib/checkbox.cjs +156 -1
  536. package/dist/vue3/lib/checkbox.cjs.map +1 -1
  537. package/dist/vue3/lib/checkbox.js +72 -60
  538. package/dist/vue3/lib/checkbox.js.map +1 -1
  539. package/dist/vue3/lib/chip.cjs +235 -1
  540. package/dist/vue3/lib/chip.cjs.map +1 -1
  541. package/dist/vue3/lib/chip.js +84 -67
  542. package/dist/vue3/lib/chip.js.map +1 -1
  543. package/dist/vue3/lib/codeblock.cjs +23 -2
  544. package/dist/vue3/lib/codeblock.cjs.map +1 -1
  545. package/dist/vue3/lib/codeblock.js +13 -13
  546. package/dist/vue3/lib/codeblock.js.map +1 -1
  547. package/dist/vue3/lib/collapsible.cjs +398 -1
  548. package/dist/vue3/lib/collapsible.cjs.map +1 -1
  549. package/dist/vue3/lib/collapsible.js +123 -100
  550. package/dist/vue3/lib/collapsible.js.map +1 -1
  551. package/dist/vue3/lib/combobox-multi-select.cjs +589 -1
  552. package/dist/vue3/lib/combobox-multi-select.cjs.map +1 -1
  553. package/dist/vue3/lib/combobox-multi-select.js +270 -177
  554. package/dist/vue3/lib/combobox-multi-select.js.map +1 -1
  555. package/dist/vue3/lib/combobox-with-popover.cjs +452 -1
  556. package/dist/vue3/lib/combobox-with-popover.cjs.map +1 -1
  557. package/dist/vue3/lib/combobox-with-popover.js +172 -127
  558. package/dist/vue3/lib/combobox-with-popover.js.map +1 -1
  559. package/dist/vue3/lib/combobox.cjs +18 -1
  560. package/dist/vue3/lib/combobox.cjs.map +1 -1
  561. package/dist/vue3/lib/combobox.js +9 -9
  562. package/dist/vue3/lib/contact-info.cjs +205 -1
  563. package/dist/vue3/lib/contact-info.cjs.map +1 -1
  564. package/dist/vue3/lib/contact-info.js +69 -60
  565. package/dist/vue3/lib/contact-info.js.map +1 -1
  566. package/dist/vue3/lib/contact-row.cjs +246 -1
  567. package/dist/vue3/lib/contact-row.cjs.map +1 -1
  568. package/dist/vue3/lib/contact-row.js +67 -63
  569. package/dist/vue3/lib/contact-row.js.map +1 -1
  570. package/dist/vue3/lib/datepicker.cjs +854 -1
  571. package/dist/vue3/lib/datepicker.cjs.map +1 -1
  572. package/dist/vue3/lib/datepicker.js +585 -441
  573. package/dist/vue3/lib/datepicker.js.map +1 -1
  574. package/dist/vue3/lib/description-list.cjs +116 -1
  575. package/dist/vue3/lib/description-list.cjs.map +1 -1
  576. package/dist/vue3/lib/description-list.js +56 -24
  577. package/dist/vue3/lib/description-list.js.map +1 -1
  578. package/dist/vue3/lib/dropdown.cjs +36 -1
  579. package/dist/vue3/lib/dropdown.cjs.map +1 -1
  580. package/dist/vue3/lib/dropdown.js +22 -21
  581. package/dist/vue3/lib/dropdown.js.map +1 -1
  582. package/dist/vue3/lib/editor.cjs +711 -1
  583. package/dist/vue3/lib/editor.cjs.map +1 -1
  584. package/dist/vue3/lib/editor.js +271 -235
  585. package/dist/vue3/lib/editor.js.map +1 -1
  586. package/dist/vue3/lib/emoji-picker.cjs +1277 -1
  587. package/dist/vue3/lib/emoji-picker.cjs.map +1 -1
  588. package/dist/vue3/lib/emoji-picker.js +859 -569
  589. package/dist/vue3/lib/emoji-picker.js.map +1 -1
  590. package/dist/vue3/lib/emoji-row.cjs +128 -1
  591. package/dist/vue3/lib/emoji-row.cjs.map +1 -1
  592. package/dist/vue3/lib/emoji-row.js +89 -75
  593. package/dist/vue3/lib/emoji-row.js.map +1 -1
  594. package/dist/vue3/lib/emoji-text-wrapper.cjs +102 -1
  595. package/dist/vue3/lib/emoji-text-wrapper.cjs.map +1 -1
  596. package/dist/vue3/lib/emoji-text-wrapper.js +42 -31
  597. package/dist/vue3/lib/emoji-text-wrapper.js.map +1 -1
  598. package/dist/vue3/lib/emoji.cjs +158 -1
  599. package/dist/vue3/lib/emoji.cjs.map +1 -1
  600. package/dist/vue3/lib/emoji.js +153 -6
  601. package/dist/vue3/lib/emoji.js.map +1 -1
  602. package/dist/vue3/lib/feed-item-row.cjs +296 -1
  603. package/dist/vue3/lib/feed-item-row.cjs.map +1 -1
  604. package/dist/vue3/lib/feed-item-row.js +119 -100
  605. package/dist/vue3/lib/feed-item-row.js.map +1 -1
  606. package/dist/vue3/lib/feed-pill.cjs +173 -1
  607. package/dist/vue3/lib/feed-pill.cjs.map +1 -1
  608. package/dist/vue3/lib/feed-pill.js +70 -57
  609. package/dist/vue3/lib/feed-pill.js.map +1 -1
  610. package/dist/vue3/lib/general-row.cjs +518 -1
  611. package/dist/vue3/lib/general-row.cjs.map +1 -1
  612. package/dist/vue3/lib/general-row.js +186 -148
  613. package/dist/vue3/lib/general-row.js.map +1 -1
  614. package/dist/vue3/lib/group-row.cjs +116 -1
  615. package/dist/vue3/lib/group-row.cjs.map +1 -1
  616. package/dist/vue3/lib/group-row.js +37 -35
  617. package/dist/vue3/lib/group-row.js.map +1 -1
  618. package/dist/vue3/lib/grouped-chip.cjs +96 -1
  619. package/dist/vue3/lib/grouped-chip.cjs.map +1 -1
  620. package/dist/vue3/lib/grouped-chip.js +51 -46
  621. package/dist/vue3/lib/grouped-chip.js.map +1 -1
  622. package/dist/vue3/lib/hovercard.cjs +223 -1
  623. package/dist/vue3/lib/hovercard.cjs.map +1 -1
  624. package/dist/vue3/lib/hovercard.js +115 -80
  625. package/dist/vue3/lib/hovercard.js.map +1 -1
  626. package/dist/vue3/lib/icon.cjs +58 -1
  627. package/dist/vue3/lib/icon.cjs.map +1 -1
  628. package/dist/vue3/lib/icon.js +20 -20
  629. package/dist/vue3/lib/icon.js.map +1 -1
  630. package/dist/vue3/lib/image-viewer.cjs +243 -1
  631. package/dist/vue3/lib/image-viewer.cjs.map +1 -1
  632. package/dist/vue3/lib/image-viewer.js +104 -80
  633. package/dist/vue3/lib/image-viewer.js.map +1 -1
  634. package/dist/vue3/lib/input-group.cjs +91 -1
  635. package/dist/vue3/lib/input-group.cjs.map +1 -1
  636. package/dist/vue3/lib/input-group.js +41 -39
  637. package/dist/vue3/lib/input-group.js.map +1 -1
  638. package/dist/vue3/lib/input.cjs +578 -1
  639. package/dist/vue3/lib/input.cjs.map +1 -1
  640. package/dist/vue3/lib/input.js +185 -137
  641. package/dist/vue3/lib/input.js.map +1 -1
  642. package/dist/vue3/lib/item-layout.cjs +91 -1
  643. package/dist/vue3/lib/item-layout.cjs.map +1 -1
  644. package/dist/vue3/lib/item-layout.js +45 -39
  645. package/dist/vue3/lib/item-layout.js.map +1 -1
  646. package/dist/vue3/lib/ivr-node.cjs +263 -1
  647. package/dist/vue3/lib/ivr-node.cjs.map +1 -1
  648. package/dist/vue3/lib/ivr-node.js +130 -112
  649. package/dist/vue3/lib/ivr-node.js.map +1 -1
  650. package/dist/vue3/lib/keyboard-shortcut.cjs +119 -1
  651. package/dist/vue3/lib/keyboard-shortcut.cjs.map +1 -1
  652. package/dist/vue3/lib/keyboard-shortcut.js +58 -48
  653. package/dist/vue3/lib/keyboard-shortcut.js.map +1 -1
  654. package/dist/vue3/lib/lazy-show.cjs +82 -1
  655. package/dist/vue3/lib/lazy-show.cjs.map +1 -1
  656. package/dist/vue3/lib/lazy-show.js +21 -19
  657. package/dist/vue3/lib/lazy-show.js.map +1 -1
  658. package/dist/vue3/lib/link.cjs +43 -1
  659. package/dist/vue3/lib/link.cjs.map +1 -1
  660. package/dist/vue3/lib/link.js +20 -19
  661. package/dist/vue3/lib/link.js.map +1 -1
  662. package/dist/vue3/lib/list-item-group.cjs +67 -1
  663. package/dist/vue3/lib/list-item-group.cjs.map +1 -1
  664. package/dist/vue3/lib/list-item-group.js +24 -22
  665. package/dist/vue3/lib/list-item-group.js.map +1 -1
  666. package/dist/vue3/lib/list-item.cjs +216 -1
  667. package/dist/vue3/lib/list-item.cjs.map +1 -1
  668. package/dist/vue3/lib/list-item.js +71 -60
  669. package/dist/vue3/lib/list-item.js.map +1 -1
  670. package/dist/vue3/lib/message-input.cjs +708 -1
  671. package/dist/vue3/lib/message-input.cjs.map +1 -1
  672. package/dist/vue3/lib/message-input.js +232 -206
  673. package/dist/vue3/lib/message-input.js.map +1 -1
  674. package/dist/vue3/lib/modal.cjs +444 -2
  675. package/dist/vue3/lib/modal.cjs.map +1 -1
  676. package/dist/vue3/lib/modal.js +153 -120
  677. package/dist/vue3/lib/modal.js.map +1 -1
  678. package/dist/vue3/lib/notice.cjs +197 -1
  679. package/dist/vue3/lib/notice.cjs.map +1 -1
  680. package/dist/vue3/lib/notice.js +66 -63
  681. package/dist/vue3/lib/notice.js.map +1 -1
  682. package/dist/vue3/lib/pagination.cjs +205 -1
  683. package/dist/vue3/lib/pagination.cjs.map +1 -1
  684. package/dist/vue3/lib/pagination.js +96 -81
  685. package/dist/vue3/lib/pagination.js.map +1 -1
  686. package/dist/vue3/lib/popover.cjs +1080 -1
  687. package/dist/vue3/lib/popover.cjs.map +1 -1
  688. package/dist/vue3/lib/popover.js +447 -267
  689. package/dist/vue3/lib/popover.js.map +1 -1
  690. package/dist/vue3/lib/presence.cjs +70 -1
  691. package/dist/vue3/lib/presence.cjs.map +1 -1
  692. package/dist/vue3/lib/presence.js +33 -27
  693. package/dist/vue3/lib/presence.js.map +1 -1
  694. package/dist/vue3/lib/radio-group.cjs +88 -1
  695. package/dist/vue3/lib/radio-group.cjs.map +1 -1
  696. package/dist/vue3/lib/radio-group.js +18 -18
  697. package/dist/vue3/lib/radio-group.js.map +1 -1
  698. package/dist/vue3/lib/radio.cjs +162 -1
  699. package/dist/vue3/lib/radio.cjs.map +1 -1
  700. package/dist/vue3/lib/radio.js +66 -57
  701. package/dist/vue3/lib/radio.js.map +1 -1
  702. package/dist/vue3/lib/rich-text-editor.cjs +1137 -1
  703. package/dist/vue3/lib/rich-text-editor.cjs.map +1 -1
  704. package/dist/vue3/lib/rich-text-editor.js +567 -386
  705. package/dist/vue3/lib/rich-text-editor.js.map +1 -1
  706. package/dist/vue3/lib/root-layout.cjs +158 -1
  707. package/dist/vue3/lib/root-layout.cjs.map +1 -1
  708. package/dist/vue3/lib/root-layout.js +33 -31
  709. package/dist/vue3/lib/root-layout.js.map +1 -1
  710. package/dist/vue3/lib/scroller.cjs +1090 -1
  711. package/dist/vue3/lib/scroller.cjs.map +1 -1
  712. package/dist/vue3/lib/scroller.js +668 -345
  713. package/dist/vue3/lib/scroller.js.map +1 -1
  714. package/dist/vue3/lib/select-menu.cjs +312 -1
  715. package/dist/vue3/lib/select-menu.cjs.map +1 -1
  716. package/dist/vue3/lib/select-menu.js +124 -79
  717. package/dist/vue3/lib/select-menu.js.map +1 -1
  718. package/dist/vue3/lib/settings-menu-button.cjs +77 -1
  719. package/dist/vue3/lib/settings-menu-button.cjs.map +1 -1
  720. package/dist/vue3/lib/settings-menu-button.js +31 -30
  721. package/dist/vue3/lib/settings-menu-button.js.map +1 -1
  722. package/dist/vue3/lib/skeleton.cjs +635 -1
  723. package/dist/vue3/lib/skeleton.cjs.map +1 -1
  724. package/dist/vue3/lib/skeleton.js +189 -152
  725. package/dist/vue3/lib/skeleton.js.map +1 -1
  726. package/dist/vue3/lib/stack.cjs +123 -1
  727. package/dist/vue3/lib/stack.cjs.map +1 -1
  728. package/dist/vue3/lib/stack.js +61 -53
  729. package/dist/vue3/lib/stack.js.map +1 -1
  730. package/dist/vue3/lib/tabs.cjs +102 -1
  731. package/dist/vue3/lib/tabs.cjs.map +1 -1
  732. package/dist/vue3/lib/tabs.js +47 -41
  733. package/dist/vue3/lib/tabs.js.map +1 -1
  734. package/dist/vue3/lib/time-pill.cjs +41 -1
  735. package/dist/vue3/lib/time-pill.cjs.map +1 -1
  736. package/dist/vue3/lib/time-pill.js +18 -14
  737. package/dist/vue3/lib/time-pill.js.map +1 -1
  738. package/dist/vue3/lib/toast.cjs +281 -1
  739. package/dist/vue3/lib/toast.cjs.map +1 -1
  740. package/dist/vue3/lib/toast.js +96 -74
  741. package/dist/vue3/lib/toast.js.map +1 -1
  742. package/dist/vue3/lib/toggle.cjs +192 -1
  743. package/dist/vue3/lib/toggle.cjs.map +1 -1
  744. package/dist/vue3/lib/toggle.js +60 -49
  745. package/dist/vue3/lib/toggle.js.map +1 -1
  746. package/dist/vue3/lib/tooltip-directive.cjs +84 -1
  747. package/dist/vue3/lib/tooltip-directive.cjs.map +1 -1
  748. package/dist/vue3/lib/tooltip-directive.js +56 -42
  749. package/dist/vue3/lib/tooltip-directive.js.map +1 -1
  750. package/dist/vue3/lib/tooltip.cjs +460 -1
  751. package/dist/vue3/lib/tooltip.cjs.map +1 -1
  752. package/dist/vue3/lib/tooltip.js +162 -103
  753. package/dist/vue3/lib/tooltip.js.map +1 -1
  754. package/dist/vue3/lib/top-banner-info.cjs +71 -1
  755. package/dist/vue3/lib/top-banner-info.cjs.map +1 -1
  756. package/dist/vue3/lib/top-banner-info.js +27 -22
  757. package/dist/vue3/lib/top-banner-info.js.map +1 -1
  758. package/dist/vue3/lib/unread-pill.cjs +73 -1
  759. package/dist/vue3/lib/unread-pill.cjs.map +1 -1
  760. package/dist/vue3/lib/unread-pill.js +28 -25
  761. package/dist/vue3/lib/unread-pill.js.map +1 -1
  762. package/dist/vue3/lib/validation-messages.cjs +89 -1
  763. package/dist/vue3/lib/validation-messages.cjs.map +1 -1
  764. package/dist/vue3/lib/validation-messages.js +41 -36
  765. package/dist/vue3/lib/validation-messages.js.map +1 -1
  766. package/dist/vue3/style.css +1257 -1
  767. package/dist/vue3/types/components/rich_text_editor/extensions/emoji/EmojiComponent.vue.d.ts +2 -2
  768. package/dist/vue3/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts +2 -2
  769. package/package.json +35 -35
  770. package/dist/vue2/chunks/_plugin-vue2_normalizer-ZK80B3OL.js +0 -2
  771. package/dist/vue2/chunks/_plugin-vue2_normalizer-ZK80B3OL.js.map +0 -1
  772. package/dist/vue2/chunks/_plugin-vue2_normalizer-u6G_3nkj.js +0 -33
  773. package/dist/vue2/chunks/_plugin-vue2_normalizer-u6G_3nkj.js.map +0 -1
  774. package/dist/vue2/chunks/dropdown-zhMEz3bn.js +0 -2
  775. package/dist/vue2/chunks/dropdown_constants-EUcDxBrX.js +0 -9
  776. package/dist/vue2/chunks/dropdown_constants-EUcDxBrX.js.map +0 -1
  777. package/dist/vue2/chunks/dropdown_constants-KHFvVI2L.js +0 -2
  778. package/dist/vue2/chunks/dropdown_constants-KHFvVI2L.js.map +0 -1
  779. package/dist/vue2/chunks/icon_constants-2S_OSQ1t.js +0 -2
  780. package/dist/vue2/chunks/index-2jPosQBn.js +0 -3
  781. package/dist/vue2/chunks/index-YkSDT8-g.js +0 -244
  782. package/dist/vue2/chunks/index-YkSDT8-g.js.map +0 -1
  783. package/dist/vue2/chunks/index-nIyl_PL6.js +0 -372
  784. package/dist/vue2/chunks/index-sdfB7Aok.js +0 -2
  785. package/dist/vue2/chunks/index-sdfB7Aok.js.map +0 -1
  786. package/dist/vue2/chunks/input-o-fc1X4b.js +0 -2
  787. package/dist/vue2/chunks/input_group-j2gTtc1C.js +0 -2
  788. package/dist/vue2/chunks/keyboard_list_navigation-F0O8nht0.js +0 -197
  789. package/dist/vue2/chunks/keyboard_list_navigation-N74Bpdq7.js +0 -2
  790. package/dist/vue2/chunks/link_constants-Kn6kP4i1.js +0 -2
  791. package/dist/vue2/chunks/link_constants-vIUB92L4.js +0 -16
  792. package/dist/vue2/chunks/list_item_constants-LTUc74pD.js +0 -13
  793. package/dist/vue2/chunks/list_item_constants-Tsz5CO1m.js +0 -2
  794. package/dist/vue2/chunks/modal-VuMFkZFH.js +0 -82
  795. package/dist/vue2/chunks/modal-qEzlo0Sj.js +0 -2
  796. package/dist/vue2/chunks/notice_action-9NmtQRai.js +0 -182
  797. package/dist/vue2/chunks/notice_action-u3ZKIhit.js +0 -2
  798. package/dist/vue2/chunks/notice_constants-c--hBFQw.js +0 -6
  799. package/dist/vue2/chunks/notice_constants-mC6al2Dm.js +0 -2
  800. package/dist/vue2/chunks/popover_constants-hOEhklvr.js +0 -2
  801. package/dist/vue2/chunks/popover_constants-qjlEkroB.js +0 -114
  802. package/dist/vue2/chunks/sr_only_close_button-ErijKGYR.js +0 -3
  803. package/dist/vue2/chunks/sr_only_close_button-JGole5Xi.js +0 -86
  804. package/dist/vue2/chunks/stack_constants-m9Ickqw0.js +0 -2
  805. package/dist/vue2/chunks/stack_constants-u7tNqGtc.js +0 -13
  806. package/dist/vue2/chunks/tab-7hJQSLFx.js +0 -2
  807. package/dist/vue2/chunks/tab-Qm9LVkYj.js +0 -346
  808. package/dist/vue2/lib/constants.cjs +0 -2
  809. package/dist/vue2/lib/dates.cjs +0 -2
  810. package/dist/vue2/lib/dates.js +0 -57
  811. package/dist/vue2/lib/mixins.cjs +0 -2
  812. package/dist/vue2/lib/mixins.js +0 -17
  813. package/dist/vue2/lib/utils.cjs +0 -2
  814. package/dist/vue2/lib/utils.js +0 -175
  815. package/dist/vue2/lib/validators.cjs +0 -2
  816. package/dist/vue2/lib/validators.js +0 -12
  817. package/dist/vue3/chunks/_plugin-vue_export-helper-6_y-gaV6.js +0 -2
  818. package/dist/vue3/chunks/_plugin-vue_export-helper-6_y-gaV6.js.map +0 -1
  819. package/dist/vue3/chunks/_plugin-vue_export-helper-hUChTQA_.js +0 -10
  820. package/dist/vue3/chunks/_plugin-vue_export-helper-hUChTQA_.js.map +0 -1
  821. package/dist/vue3/chunks/dropdown-UO3UJalk.js +0 -2
  822. package/dist/vue3/chunks/dropdown_constants-EUcDxBrX.js +0 -9
  823. package/dist/vue3/chunks/dropdown_constants-EUcDxBrX.js.map +0 -1
  824. package/dist/vue3/chunks/dropdown_constants-KHFvVI2L.js +0 -2
  825. package/dist/vue3/chunks/dropdown_constants-KHFvVI2L.js.map +0 -1
  826. package/dist/vue3/chunks/icon_constants-2S_OSQ1t.js +0 -2
  827. package/dist/vue3/chunks/index-6tYeqbgP.js +0 -3
  828. package/dist/vue3/chunks/index-IBtQ5jRJ.js +0 -2
  829. package/dist/vue3/chunks/index-IBtQ5jRJ.js.map +0 -1
  830. package/dist/vue3/chunks/index-b4iXYvId.js +0 -399
  831. package/dist/vue3/chunks/index-mRmwpCBG.js +0 -256
  832. package/dist/vue3/chunks/index-mRmwpCBG.js.map +0 -1
  833. package/dist/vue3/chunks/input-0Uksk4DP.js +0 -2
  834. package/dist/vue3/chunks/input_group-AS760Cp7.js +0 -2
  835. package/dist/vue3/chunks/keyboard_list_navigation-F0O8nht0.js +0 -197
  836. package/dist/vue3/chunks/keyboard_list_navigation-N74Bpdq7.js +0 -2
  837. package/dist/vue3/chunks/link_constants-Kn6kP4i1.js +0 -2
  838. package/dist/vue3/chunks/link_constants-vIUB92L4.js +0 -16
  839. package/dist/vue3/chunks/list_item_constants-LTUc74pD.js +0 -13
  840. package/dist/vue3/chunks/list_item_constants-Tsz5CO1m.js +0 -2
  841. package/dist/vue3/chunks/modal-VuMFkZFH.js +0 -82
  842. package/dist/vue3/chunks/modal-qEzlo0Sj.js +0 -2
  843. package/dist/vue3/chunks/notice_action-jO199emq.js +0 -2
  844. package/dist/vue3/chunks/notice_action-tJfD5Qw1.js +0 -209
  845. package/dist/vue3/chunks/notice_constants-c--hBFQw.js +0 -6
  846. package/dist/vue3/chunks/notice_constants-mC6al2Dm.js +0 -2
  847. package/dist/vue3/chunks/popover_constants-hOEhklvr.js +0 -2
  848. package/dist/vue3/chunks/popover_constants-qjlEkroB.js +0 -114
  849. package/dist/vue3/chunks/sr_only_close_button-iD7s1Pbj.js +0 -3
  850. package/dist/vue3/chunks/stack_constants-m9Ickqw0.js +0 -2
  851. package/dist/vue3/chunks/stack_constants-u7tNqGtc.js +0 -13
  852. package/dist/vue3/chunks/tab-GQZFMq83.js +0 -367
  853. package/dist/vue3/chunks/tab-at7WWglk.js +0 -2
  854. package/dist/vue3/lib/constants.cjs +0 -2
  855. package/dist/vue3/lib/dates.cjs +0 -2
  856. package/dist/vue3/lib/dates.js +0 -57
  857. package/dist/vue3/lib/mixins.cjs +0 -2
  858. package/dist/vue3/lib/mixins.js +0 -17
  859. package/dist/vue3/lib/utils.cjs +0 -2
  860. package/dist/vue3/lib/utils.js +0 -171
  861. package/dist/vue3/lib/validators.cjs +0 -2
  862. package/dist/vue3/lib/validators.js +0 -12
  863. /package/dist/vue2/{lib → common}/mixins.js.map +0 -0
  864. /package/dist/vue3/{lib → common}/mixins.js.map +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"message-input.js","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=\"['d-d-flex', 'd-fd-column', 'd-bar8', 'd-baw1', 'd-ba', 'd-c-text',\n { 'd-bc-bold d-bs-sm': hasFocus, 'd-bc-default': !hasFocus }]\"\n @click=\"$refs.richTextEditor?.focusEditor()\"\n @drag-enter=\"onDrag\"\n @drag-over=\"onDrag\"\n @drop=\"onDrop\"\n @keydown.enter.exact=\"onSend\"\n @paste=\"onPaste\"\n >\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n class=\"d-of-auto d-mx16 d-mt8 d-mb4\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\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 :mention-suggestion=\"mentionSuggestion\"\n :allow-blockquote=\"allowBlockquote\"\n :allow-bold=\"allowBold\"\n :allow-bullet-list=\"allowBulletList\"\n :allow-italic=\"allowItalic\"\n :allow-strike=\"allowStrike\"\n :allow-underline=\"allowUnderline\"\n v-bind=\"$attrs\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @input=\"onInput($event)\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"d-d-flex d-jc-space-between d-mx8 d-my4\">\n <!-- Left content -->\n <div class=\"d-d-flex\">\n <dt-tooltip\n v-if=\"showImagePicker\"\n placement=\"top-start\"\n :message=\"showImagePicker.tooltipLabel\"\n :offset=\"[-4, -4]\"\n >\n <template #anchor>\n <dt-button\n data-qa=\"dt-message-input-image-btn\"\n size=\"sm\"\n circle\n :kind=\"imagePickerFocus ? 'default' : '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\n name=\"image\"\n size=\"300\"\n />\n </template>\n </dt-button>\n <dt-input\n ref=\"messageInputImageUpload\"\n data-qa=\"dt-message-input-image-input\"\n type=\"file\"\n class=\"d-ps-absolute\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n </template>\n </dt-tooltip>\n <dt-popover\n v-if=\"showEmojiPicker\"\n data-qa=\"dt-message-input-emoji-picker-popover\"\n :open=\"emojiPickerOpened\"\n initial-focus-element=\"#searchInput\"\n padding=\"none\"\n @opened=\"(open) => { emojiPickerOpened = open }\"\n >\n <template #anchor>\n <dt-tooltip\n :message=\"emojiTooltipMessage\"\n :offset=\"[0, -4]\"\n >\n <template #anchor>\n <dt-button\n data-qa=\"dt-message-input-emoji-picker-btn\"\n size=\"sm\"\n circle\n :kind=\"emojiPickerHovered ? 'default' : 'muted'\"\n importance=\"clear\"\n :aria-label=\"emojiButtonAriaLabel\"\n :offset=\"[0, 0]\"\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\n :name=\"!emojiPickerHovered ? 'satisfied' : 'very-satisfied'\"\n size=\"300\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n <template #content>\n <dt-emoji-picker\n v-bind=\"emojiPickerProps\"\n @skin-tone=\"onSkinTone\"\n @selected-emoji=\"onSelectEmoji\"\n />\n </template>\n </dt-popover>\n </div>\n <!-- Right content -->\n <div class=\"d-d-flex\">\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=\"d-fc-error d-mr16 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--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 <!-- Send button -->\n <dt-tooltip\n v-if=\"showSend\"\n placement=\"top-end\"\n :enabled=\"!showSend\"\n :message=\"showSend.tooltipLabel\"\n :show=\"!isSendDisabled && sendButtonFocus\"\n :offset=\"[6, -8]\"\n >\n <template #anchor>\n <!-- Right positioned UI - send button -->\n <dt-button\n data-qa=\"dt-message-input-send-btn\"\n size=\"sm\"\n kind=\"default\"\n importance=\"primary\"\n :class=\"[\n {\n 'message-input-button__disabled d-fc-muted': isSendDisabled,\n 'd-btn--circle': showSend.icon,\n },\n ]\"\n :aria-label=\"showSend.ariaLabel\"\n :aria-disabled=\"isSendDisabled\"\n @click=\"onSend\"\n @mouseenter=\"sendButtonFocus = true\"\n @mouseleave=\"sendButtonFocus = false\"\n @focus=\"sendButtonFocus = true\"\n @blur=\"sendButtonFocus = false\"\n >\n <template\n v-if=\"showSend.icon\"\n #icon\n >\n <dt-icon\n :name=\"showSend.icon\"\n size=\"300\"\n />\n </template>\n <template\n v-if=\"showSend.text\"\n >\n <p>{{ showSend.text }}</p>\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\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 { DtButton } from '@/components/button';\nimport { DtIcon } from '@/components/icon';\nimport { DtEmojiPicker } from '@/components/emoji_picker';\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\n\nexport default {\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtIcon,\n DtInput,\n DtPopover,\n DtRichTextEditor,\n DtTooltip,\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 value: {\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 * 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: false,\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: () => ({ tooltipLabel: 'Attach Image', ariaLabel: 'image button' }),\n },\n\n /**\n * Send button defaults.\n */\n showSend: {\n type: [Boolean, Object],\n default: () => ({ icon: 'send' }),\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 * 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 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 * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n ],\n\n data () {\n return {\n internalInputValue: this.value, // internal input content\n hasFocus: false,\n imagePickerFocus: false,\n emojiPickerFocus: false,\n sendButtonFocus: false,\n emojiPickerOpened: false,\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n displayCharacterLimitWarning () {\n return Boolean(this.showCharacterLimit) &&\n ((this.showCharacterLimit.count - this.inputLength) <= this.showCharacterLimit.warning);\n },\n\n characterLimitTooltipEnabled () {\n return this.showCharacterLimit.message && (this.showCharacterLimit.count - this.inputLength < 0);\n },\n\n isSendDisabled () {\n return this.disableSend ||\n (this.showCharacterLimit && this.inputLength > this.showCharacterLimit.count);\n },\n\n computedCloseButtonProps () {\n return {\n ariaLabel: 'Close',\n };\n },\n\n emojiPickerHovered () {\n return this.emojiPickerFocus || this.emojiPickerOpened;\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n onDrag (e) {\n e.stopPropagation();\n e.preventDefault();\n },\n\n onDrop (e) {\n e.stopPropagation();\n e.preventDefault();\n\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 this.emojiPickerOpened = false;\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.emojiPickerOpened = false;\n this.$emit('selected-emoji', emoji);\n },\n\n onSelectImage () {\n this.$refs.messageInputImageUpload.$refs.input.click();\n },\n\n onImageUpload () {\n this.$emit('select-media', this.$refs.messageInputImageUpload.$refs.input.files);\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 onFocus (event) {\n this.hasFocus = true;\n this.$refs.richTextEditor?.focusEditor();\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-message-input--remaining-char-tooltip {\n margin-top: auto;\n margin-bottom: auto;\n}\n.dt-message-input--remaining-char {\n font-size: 1.2rem;\n}\n\n.message-input-button__disabled {\n background-color: unset;\n color: var(--theme-sidebar-icon-color);\n cursor: default;\n}\n\n.dt-message-input--cancel-button {\n margin-right: var(--dt-space-300);\n}\n</style>\n"],"names":["_sfc_main","DtButton","DtEmojiPicker","DtIcon","DtInput","DtPopover","DtRichTextEditor","DtTooltip","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","outputFormat","RICH_TEXT_EDITOR_OUTPUT_FORMATS","emojiPickerProps","prop","newValue","e","dt","files","skinTone","emoji","event","_a"],"mappings":"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"}
1
+ {"version":3,"file":"message-input.js","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=\"['d-d-flex', 'd-fd-column', 'd-bar8', 'd-baw1', 'd-ba', 'd-c-text',\n { 'd-bc-bold d-bs-sm': hasFocus, 'd-bc-default': !hasFocus }]\"\n @click=\"$refs.richTextEditor?.focusEditor()\"\n @drag-enter=\"onDrag\"\n @drag-over=\"onDrag\"\n @drop=\"onDrop\"\n @keydown.enter.exact=\"onSend\"\n @paste=\"onPaste\"\n >\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n class=\"d-of-auto d-mx16 d-mt8 d-mb4\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\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 :mention-suggestion=\"mentionSuggestion\"\n :allow-blockquote=\"allowBlockquote\"\n :allow-bold=\"allowBold\"\n :allow-bullet-list=\"allowBulletList\"\n :allow-italic=\"allowItalic\"\n :allow-strike=\"allowStrike\"\n :allow-underline=\"allowUnderline\"\n v-bind=\"$attrs\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @input=\"onInput($event)\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"d-d-flex d-jc-space-between d-mx8 d-my4\">\n <!-- Left content -->\n <div class=\"d-d-flex\">\n <dt-tooltip\n v-if=\"showImagePicker\"\n placement=\"top-start\"\n :message=\"showImagePicker.tooltipLabel\"\n :offset=\"[-4, -4]\"\n >\n <template #anchor>\n <dt-button\n data-qa=\"dt-message-input-image-btn\"\n size=\"sm\"\n circle\n :kind=\"imagePickerFocus ? 'default' : '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\n name=\"image\"\n size=\"300\"\n />\n </template>\n </dt-button>\n <dt-input\n ref=\"messageInputImageUpload\"\n data-qa=\"dt-message-input-image-input\"\n type=\"file\"\n class=\"d-ps-absolute\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n </template>\n </dt-tooltip>\n <dt-popover\n v-if=\"showEmojiPicker\"\n data-qa=\"dt-message-input-emoji-picker-popover\"\n :open=\"emojiPickerOpened\"\n initial-focus-element=\"#searchInput\"\n padding=\"none\"\n @opened=\"(open) => { emojiPickerOpened = open }\"\n >\n <template #anchor>\n <dt-tooltip\n :message=\"emojiTooltipMessage\"\n :offset=\"[0, -4]\"\n >\n <template #anchor>\n <dt-button\n data-qa=\"dt-message-input-emoji-picker-btn\"\n size=\"sm\"\n circle\n :kind=\"emojiPickerHovered ? 'default' : 'muted'\"\n importance=\"clear\"\n :aria-label=\"emojiButtonAriaLabel\"\n :offset=\"[0, 0]\"\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\n :name=\"!emojiPickerHovered ? 'satisfied' : 'very-satisfied'\"\n size=\"300\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n <template #content>\n <dt-emoji-picker\n v-bind=\"emojiPickerProps\"\n @skin-tone=\"onSkinTone\"\n @selected-emoji=\"onSelectEmoji\"\n />\n </template>\n </dt-popover>\n </div>\n <!-- Right content -->\n <div class=\"d-d-flex\">\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=\"d-fc-error d-mr16 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--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 <!-- Send button -->\n <dt-tooltip\n v-if=\"showSend\"\n placement=\"top-end\"\n :enabled=\"!showSend\"\n :message=\"showSend.tooltipLabel\"\n :show=\"!isSendDisabled && sendButtonFocus\"\n :offset=\"[6, -8]\"\n >\n <template #anchor>\n <!-- Right positioned UI - send button -->\n <dt-button\n data-qa=\"dt-message-input-send-btn\"\n size=\"sm\"\n kind=\"default\"\n importance=\"primary\"\n :class=\"[\n {\n 'message-input-button__disabled d-fc-muted': isSendDisabled,\n 'd-btn--circle': showSend.icon,\n },\n ]\"\n :aria-label=\"showSend.ariaLabel\"\n :aria-disabled=\"isSendDisabled\"\n @click=\"onSend\"\n @mouseenter=\"sendButtonFocus = true\"\n @mouseleave=\"sendButtonFocus = false\"\n @focus=\"sendButtonFocus = true\"\n @blur=\"sendButtonFocus = false\"\n >\n <template\n v-if=\"showSend.icon\"\n #icon\n >\n <dt-icon\n :name=\"showSend.icon\"\n size=\"300\"\n />\n </template>\n <template\n v-if=\"showSend.text\"\n >\n <p>{{ showSend.text }}</p>\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\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 { DtButton } from '@/components/button';\nimport { DtIcon } from '@/components/icon';\nimport { DtEmojiPicker } from '@/components/emoji_picker';\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\n\nexport default {\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtIcon,\n DtInput,\n DtPopover,\n DtRichTextEditor,\n DtTooltip,\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 value: {\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 * 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: false,\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: () => ({ tooltipLabel: 'Attach Image', ariaLabel: 'image button' }),\n },\n\n /**\n * Send button defaults.\n */\n showSend: {\n type: [Boolean, Object],\n default: () => ({ icon: 'send' }),\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 * 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 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 * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n ],\n\n data () {\n return {\n internalInputValue: this.value, // internal input content\n hasFocus: false,\n imagePickerFocus: false,\n emojiPickerFocus: false,\n sendButtonFocus: false,\n emojiPickerOpened: false,\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n displayCharacterLimitWarning () {\n return Boolean(this.showCharacterLimit) &&\n ((this.showCharacterLimit.count - this.inputLength) <= this.showCharacterLimit.warning);\n },\n\n characterLimitTooltipEnabled () {\n return this.showCharacterLimit.message && (this.showCharacterLimit.count - this.inputLength < 0);\n },\n\n isSendDisabled () {\n return this.disableSend ||\n (this.showCharacterLimit && this.inputLength > this.showCharacterLimit.count);\n },\n\n computedCloseButtonProps () {\n return {\n ariaLabel: 'Close',\n };\n },\n\n emojiPickerHovered () {\n return this.emojiPickerFocus || this.emojiPickerOpened;\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n onDrag (e) {\n e.stopPropagation();\n e.preventDefault();\n },\n\n onDrop (e) {\n e.stopPropagation();\n e.preventDefault();\n\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 this.emojiPickerOpened = false;\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.emojiPickerOpened = false;\n this.$emit('selected-emoji', emoji);\n },\n\n onSelectImage () {\n this.$refs.messageInputImageUpload.$refs.input.click();\n },\n\n onImageUpload () {\n this.$emit('select-media', this.$refs.messageInputImageUpload.$refs.input.files);\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 onFocus (event) {\n this.hasFocus = true;\n this.$refs.richTextEditor?.focusEditor();\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-message-input--remaining-char-tooltip {\n margin-top: auto;\n margin-bottom: auto;\n}\n.dt-message-input--remaining-char {\n font-size: 1.2rem;\n}\n\n.message-input-button__disabled {\n background-color: unset;\n color: var(--theme-sidebar-icon-color);\n cursor: default;\n}\n\n.dt-message-input--cancel-button {\n margin-right: var(--dt-space-300);\n}\n</style>\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,351 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../chunks/modal-qEzlo0Sj.js"),d=require("./utils.cjs"),s=require("./constants.cjs"),i=require("../chunks/sr_only_close_button-ErijKGYR.js"),c=require("../chunks/_plugin-vue2_normalizer-ZK80B3OL.js"),u=require("./lazy-show.cjs"),_=require("./button.cjs"),m=require("./icon.cjs"),f=require("../chunks/notice_constants-mC6al2Dm.js");require("vue");require("../chunks/link_constants-Kn6kP4i1.js");require("@dialpad/dialtone-icons/vue2");require("../chunks/icon_constants-2S_OSQ1t.js");require("@dialpad/dialtone-icons/icons.json");const l={default:"",danger:"d-modal--danger"},o={default:"",full:"d-modal--full"},r={error:"d-modal__banner--critical",info:"d-modal__banner--info",success:"d-modal__banner--success",warning:"d-modal__banner--warning",base:"d-modal__banner--general"},h={name:"DtModal",components:{DtLazyShow:u.DtLazyShow,DtButton:_.DtButton,DtIcon:m.DtIcon,SrOnlyCloseButton:i.S},mixins:[n.M,i.a],props:{closeButtonProps:{type:Object,required:!0,validator:t=>!!t.ariaLabel},copy:{type:String,default:""},describedById:{type:String,default:""},labelledById:{type:String,default:function(){return d.getUniqueString()}},show:{type:Boolean,default:!1},title:{type:String,default:""},bannerTitle:{type:String,default:""},kind:{type:String,default:"default",validator:t=>Object.keys(l).includes(t)},size:{type:String,default:"default",validator:t=>Object.keys(o).includes(t)},modalClass:{type:[String,Object,Array],default:""},dialogClass:{type:[String,Object,Array],default:""},contentClass:{type:[String,Object,Array],default:""},bannerKind:{type:String,default:"warning",validate(t){return f.N.includes(t)}},bannerClass:{type:[String,Object,Array],default:""},hideClose:{type:Boolean,default:!1},closeOnClick:{type:Boolean,default:!0},fixedHeaderFooter:{type:Boolean,default:!0},initialFocusElement:{type:[String,HTMLElement],default:"first",validator:t=>t==="first"||t instanceof HTMLElement||t.startsWith("#")}},emits:["update:show"],data(){return{MODAL_KIND_MODIFIERS:l,MODAL_SIZE_MODIFIERS:o,MODAL_BANNER_KINDS:r,EVENT_KEYNAMES:s.EVENT_KEYNAMES}},computed:{modalListeners(){return{...this.$listeners,click:t=>{this.closeOnClick&&(t.target===t.currentTarget&&this.close(),this.$emit("click",t))},keydown:t=>{switch(t.code){case s.EVENT_KEYNAMES.esc:case s.EVENT_KEYNAMES.escape:this.close();break;case s.EVENT_KEYNAMES.tab:this.trapFocus(t);break}this.$emit("keydown",t)},"after-enter":t=>{this.$emit("update:show",!0),t.target===t.currentTarget&&this.setFocusAfterTransition()}}},open(){return`${!this.show}`},hasFooterSlot(){return!!this.$slots.footer},bannerKindClass(){return r[this.bannerKind]}},watch:{show:{immediate:!0,handler(t){var e;t?this.previousActiveElement=document.activeElement:((e=this.previousActiveElement)==null||e.focus(),this.previousActiveElement=null)}},$props:{immediate:!0,deep:!0,handler(){this.validateProps()}}},methods:{close(){this.$emit("update:show",!1)},setFocusAfterTransition(){this.initialFocusElement==="first"?this.focusFirstElement():this.initialFocusElement.startsWith("#")?this.focusElementById(this.initialFocusElement):this.initialFocusElement instanceof HTMLElement&&this.initialFocusElement.focus()},trapFocus(t){this.show&&this.focusTrappedTabPress(t)},validateProps(){this.hideClose&&!this.visuallyHiddenClose&&console.error(`If hideClose prop is true, visuallyHiddenClose and visuallyHiddenCloseLabel props
2
- need to be set so the component always includes a close button`)}}};var p=function(){var e=this,a=e._self._c;return a("dt-lazy-show",e._g({class:["d-modal",e.MODAL_KIND_MODIFIERS[e.kind],e.MODAL_SIZE_MODIFIERS[e.size],e.modalClass],attrs:{transition:"d-zoom",show:e.show,"data-qa":"dt-modal","aria-hidden":e.open}},e.modalListeners),[e.show&&(e.$slots.banner||e.bannerTitle)?a("div",{class:["d-modal__banner",e.bannerClass,e.bannerKindClass],attrs:{"data-qa":"dt-modal-banner"}},[e._t("banner",function(){return[e._v(" "+e._s(e.bannerTitle)+" ")]})],2):e._e(),a("transition",{attrs:{appear:"",name:"d-modal__dialog"}},[a("div",{directives:[{name:"show",rawName:"v-show",value:e.show,expression:"show"}],class:["d-modal__dialog",{"d-modal__dialog--scrollable":e.fixedHeaderFooter},e.dialogClass],attrs:{role:"dialog","aria-modal":"true","aria-describedby":e.describedById,"aria-labelledby":e.labelledById}},[e.$slots.header?a("div",{staticClass:"d-modal__header",attrs:{id:e.labelledById,"data-qa":"dt-modal-title"}},[e._t("header")],2):a("h2",{staticClass:"d-modal__header",attrs:{id:e.labelledById,"data-qa":"dt-modal-title"}},[e._v(" "+e._s(e.title)+" ")]),e.$slots.default?a("div",{class:["d-modal__content",e.contentClass],attrs:{"data-qa":"dt-modal-copy"}},[e._t("default")],2):a("p",{class:["d-modal__content",e.contentClass],attrs:{"data-qa":"dt-modal-copy"}},[e._v(" "+e._s(e.copy)+" ")]),e.hasFooterSlot?a("footer",{staticClass:"d-modal__footer"},[e._t("footer")],2):e._e(),e.hideClose?e._e():a("dt-button",e._b({staticClass:"d-modal__close",attrs:{circle:"",size:"lg",importance:"clear","aria-label":e.closeButtonProps.ariaLabel},on:{click:e.close},scopedSlots:e._u([{key:"icon",fn:function(){return[a("dt-icon",{attrs:{name:"close",size:"400"}})]},proxy:!0}],null,!1,1709155279)},"dt-button",e.closeButtonProps,!1)),e.showVisuallyHiddenClose?a("sr-only-close-button",{attrs:{"visually-hidden-close-label":e.visuallyHiddenCloseLabel},on:{close:e.close}}):e._e()],1)])],1)},b=[],y=c.n(h,p,b,!1,null,null,null,null);const E=y.exports;exports.DtModal=E;exports.MODAL_BANNER_KINDS=r;exports.MODAL_KIND_MODIFIERS=l;exports.MODAL_SIZE_MODIFIERS=o;
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const modal$1 = require("../chunks/modal-VgxXAQFP.js");
4
+ const common_utils = require("../common/utils.cjs");
5
+ const common_constants = require("../common/constants.cjs");
6
+ const sr_only_close_button = require("../chunks/sr_only_close_button-ZaGdAHz7.js");
7
+ const _pluginVue2_normalizer = require("../chunks/_plugin-vue2_normalizer-1aBeR4AK.js");
8
+ const lib_lazyShow = require("./lazy-show.cjs");
9
+ const lib_button = require("./button.cjs");
10
+ const lib_icon = require("./icon.cjs");
11
+ const notice_constants = require("../chunks/notice_constants-UXo9e3bS.js");
12
+ require("vue");
13
+ require("../chunks/link_constants-Huj7D_hm.js");
14
+ require("@dialpad/dialtone-icons/vue2");
15
+ require("../chunks/icon_constants-QYpmdE0R.js");
16
+ require("@dialpad/dialtone-icons/icons.json");
17
+ const MODAL_KIND_MODIFIERS = {
18
+ default: "",
19
+ danger: "d-modal--danger"
20
+ };
21
+ const MODAL_SIZE_MODIFIERS = {
22
+ default: "",
23
+ full: "d-modal--full"
24
+ };
25
+ const MODAL_BANNER_KINDS = {
26
+ error: "d-modal__banner--critical",
27
+ info: "d-modal__banner--info",
28
+ success: "d-modal__banner--success",
29
+ warning: "d-modal__banner--warning",
30
+ base: "d-modal__banner--general"
31
+ };
32
+ const _sfc_main = {
33
+ name: "DtModal",
34
+ components: {
35
+ DtLazyShow: lib_lazyShow.DtLazyShow,
36
+ DtButton: lib_button.DtButton,
37
+ DtIcon: lib_icon.DtIcon,
38
+ SrOnlyCloseButton: sr_only_close_button.SrOnlyCloseButton
39
+ },
40
+ mixins: [modal$1.Modal, sr_only_close_button.SrOnlyCloseButtonMixin],
41
+ props: {
42
+ /**
43
+ * A set of props to be passed into the modal's close button.
44
+ * Requires an 'ariaLabel' property.
45
+ */
46
+ closeButtonProps: {
47
+ type: Object,
48
+ required: true,
49
+ validator: (props) => {
50
+ return !!props.ariaLabel;
51
+ }
52
+ },
53
+ /**
54
+ * Body text to display as the modal's main content.
55
+ */
56
+ copy: {
57
+ type: String,
58
+ default: ""
59
+ },
60
+ /**
61
+ * Id to use for the dialog's aria-describedby.
62
+ * Recommended only if the dialog content itself isn't enough to give full context,
63
+ * as screen readers should recite the dialog contents by default before any aria-description.
64
+ */
65
+ describedById: {
66
+ type: String,
67
+ default: ""
68
+ },
69
+ /**
70
+ * Id to use for the dialog's aria-labelledby.
71
+ */
72
+ labelledById: {
73
+ type: String,
74
+ default: function() {
75
+ return common_utils.getUniqueString();
76
+ }
77
+ },
78
+ /**
79
+ * Whether the modal should be shown.
80
+ * Parent component can sync on this value to control the modal's visibility.
81
+ * @values true, false
82
+ */
83
+ show: {
84
+ type: Boolean,
85
+ default: false
86
+ },
87
+ /**
88
+ * Title text to display in the modal header.
89
+ */
90
+ title: {
91
+ type: String,
92
+ default: ""
93
+ },
94
+ /**
95
+ * Title text to display in the modal banner.
96
+ */
97
+ bannerTitle: {
98
+ type: String,
99
+ default: ""
100
+ },
101
+ /**
102
+ * The theme of the modal. kind - default or danger,
103
+ * @values default, danger
104
+ */
105
+ kind: {
106
+ type: String,
107
+ default: "default",
108
+ validator: (k) => Object.keys(MODAL_KIND_MODIFIERS).includes(k)
109
+ },
110
+ /**
111
+ * The size of the modal. size - default or full,
112
+ * @values default, full
113
+ */
114
+ size: {
115
+ type: String,
116
+ default: "default",
117
+ validator: (s) => Object.keys(MODAL_SIZE_MODIFIERS).includes(s)
118
+ },
119
+ /**
120
+ * Additional class name for the root modal element.
121
+ * Can accept String, Object, and Array, i.e. has the
122
+ * same API as Vue's built-in handling of the class attribute.
123
+ */
124
+ modalClass: {
125
+ type: [String, Object, Array],
126
+ default: ""
127
+ },
128
+ /**
129
+ * Additional class name for the dialog element within the modal.
130
+ * Can accept String, Object, and Array, i.e. has the
131
+ * same API as Vue's built-in handling of the class attribute.
132
+ */
133
+ dialogClass: {
134
+ type: [String, Object, Array],
135
+ default: ""
136
+ },
137
+ /**
138
+ * Additional class name for the content element within the modal.
139
+ * Can accept String, Object, and Array, i.e. has the
140
+ * same API as Vue's built-in handling of the class attribute.
141
+ */
142
+ contentClass: {
143
+ type: [String, Object, Array],
144
+ default: ""
145
+ },
146
+ /**
147
+ * Sets the color of the banner.
148
+ * @values base, error, info, success, warning
149
+ */
150
+ bannerKind: {
151
+ type: String,
152
+ default: "warning",
153
+ validate(kind) {
154
+ return notice_constants.NOTICE_KINDS.includes(kind);
155
+ }
156
+ },
157
+ /**
158
+ * Additional class name for the banner element within the modal.
159
+ * Can accept String, Object, and Array, i.e. has the
160
+ * same API as Vue's built-in handling of the class attribute.
161
+ */
162
+ bannerClass: {
163
+ type: [String, Object, Array],
164
+ default: ""
165
+ },
166
+ /**
167
+ * Hides the close button on the modal
168
+ * @values true, false
169
+ */
170
+ hideClose: {
171
+ type: Boolean,
172
+ default: false
173
+ },
174
+ /**
175
+ * Whether the modal will close when you click outside of the dialog on the overlay.
176
+ * @values true, false
177
+ */
178
+ closeOnClick: {
179
+ type: Boolean,
180
+ default: true
181
+ },
182
+ /**
183
+ * Scrollable modal that allows scroll the modal content keeping the header and footer fixed
184
+ * @values true, false
185
+ */
186
+ fixedHeaderFooter: {
187
+ type: Boolean,
188
+ default: true
189
+ },
190
+ /**
191
+ * The element that is focused when the modal is opened. This can be an
192
+ * HTMLElement within the modal, a string starting with '#' which will
193
+ * find the element by ID. 'first' which will automatically focus
194
+ * the first element, or 'dialog' which will focus the dialog window itself.
195
+ * If the dialog is modal this prop cannot be 'none'.
196
+ */
197
+ initialFocusElement: {
198
+ type: [String, HTMLElement],
199
+ default: "first",
200
+ validator: (initialFocusElement) => {
201
+ return initialFocusElement === "first" || initialFocusElement instanceof HTMLElement || initialFocusElement.startsWith("#");
202
+ }
203
+ }
204
+ },
205
+ emits: [
206
+ /**
207
+ * The modal will emit a "false" boolean value for this event when the user performs a modal-closing action.
208
+ * Parent components can sync on this value to create a 2-way binding to control modal visibility.
209
+ *
210
+ * @event update:show
211
+ * @type {Boolean}
212
+ */
213
+ "update:show"
214
+ ],
215
+ data() {
216
+ return {
217
+ MODAL_KIND_MODIFIERS,
218
+ MODAL_SIZE_MODIFIERS,
219
+ MODAL_BANNER_KINDS,
220
+ EVENT_KEYNAMES: common_constants.EVENT_KEYNAMES
221
+ };
222
+ },
223
+ computed: {
224
+ modalListeners() {
225
+ return {
226
+ ...this.$listeners,
227
+ click: (event) => {
228
+ if (!this.closeOnClick)
229
+ return;
230
+ event.target === event.currentTarget && this.close();
231
+ this.$emit("click", event);
232
+ },
233
+ keydown: (event) => {
234
+ switch (event.code) {
235
+ case common_constants.EVENT_KEYNAMES.esc:
236
+ case common_constants.EVENT_KEYNAMES.escape:
237
+ this.close();
238
+ break;
239
+ case common_constants.EVENT_KEYNAMES.tab:
240
+ this.trapFocus(event);
241
+ break;
242
+ }
243
+ this.$emit("keydown", event);
244
+ },
245
+ "after-enter": (event) => {
246
+ this.$emit("update:show", true);
247
+ event.target === event.currentTarget && this.setFocusAfterTransition();
248
+ }
249
+ };
250
+ },
251
+ open() {
252
+ return `${!this.show}`;
253
+ },
254
+ hasFooterSlot() {
255
+ return !!this.$slots.footer;
256
+ },
257
+ bannerKindClass() {
258
+ return MODAL_BANNER_KINDS[this.bannerKind];
259
+ }
260
+ },
261
+ watch: {
262
+ show: {
263
+ immediate: true,
264
+ handler(isShowing) {
265
+ var _a;
266
+ if (isShowing) {
267
+ this.previousActiveElement = document.activeElement;
268
+ } else {
269
+ (_a = this.previousActiveElement) == null ? void 0 : _a.focus();
270
+ this.previousActiveElement = null;
271
+ }
272
+ }
273
+ },
274
+ $props: {
275
+ immediate: true,
276
+ deep: true,
277
+ handler() {
278
+ this.validateProps();
279
+ }
280
+ }
281
+ },
282
+ methods: {
283
+ close() {
284
+ this.$emit("update:show", false);
285
+ },
286
+ setFocusAfterTransition() {
287
+ if (this.initialFocusElement === "first") {
288
+ this.focusFirstElement();
289
+ } else if (this.initialFocusElement.startsWith("#")) {
290
+ this.focusElementById(this.initialFocusElement);
291
+ } else if (this.initialFocusElement instanceof HTMLElement) {
292
+ this.initialFocusElement.focus();
293
+ }
294
+ },
295
+ trapFocus(e) {
296
+ if (this.show) {
297
+ this.focusTrappedTabPress(e);
298
+ }
299
+ },
300
+ validateProps() {
301
+ if (this.hideClose && !this.visuallyHiddenClose) {
302
+ console.error(`If hideClose prop is true, visuallyHiddenClose and visuallyHiddenCloseLabel props
303
+ need to be set so the component always includes a close button`);
304
+ }
305
+ }
306
+ }
307
+ };
308
+ var _sfc_render = function render() {
309
+ var _vm = this, _c = _vm._self._c;
310
+ return _c("dt-lazy-show", _vm._g({ class: [
311
+ "d-modal",
312
+ _vm.MODAL_KIND_MODIFIERS[_vm.kind],
313
+ _vm.MODAL_SIZE_MODIFIERS[_vm.size],
314
+ _vm.modalClass
315
+ ], attrs: { "transition": "d-zoom", "show": _vm.show, "data-qa": "dt-modal", "aria-hidden": _vm.open } }, _vm.modalListeners), [_vm.show && (_vm.$slots.banner || _vm.bannerTitle) ? _c("div", { class: [
316
+ "d-modal__banner",
317
+ _vm.bannerClass,
318
+ _vm.bannerKindClass
319
+ ], attrs: { "data-qa": "dt-modal-banner" } }, [_vm._t("banner", function() {
320
+ return [_vm._v(" " + _vm._s(_vm.bannerTitle) + " ")];
321
+ })], 2) : _vm._e(), _c("transition", { attrs: { "appear": "", "name": "d-modal__dialog" } }, [_c("div", { directives: [{ name: "show", rawName: "v-show", value: _vm.show, expression: "show" }], class: [
322
+ "d-modal__dialog",
323
+ { "d-modal__dialog--scrollable": _vm.fixedHeaderFooter },
324
+ _vm.dialogClass
325
+ ], attrs: { "role": "dialog", "aria-modal": "true", "aria-describedby": _vm.describedById, "aria-labelledby": _vm.labelledById } }, [_vm.$slots.header ? _c("div", { staticClass: "d-modal__header", attrs: { "id": _vm.labelledById, "data-qa": "dt-modal-title" } }, [_vm._t("header")], 2) : _c("h2", { staticClass: "d-modal__header", attrs: { "id": _vm.labelledById, "data-qa": "dt-modal-title" } }, [_vm._v(" " + _vm._s(_vm.title) + " ")]), _vm.$slots.default ? _c("div", { class: [
326
+ "d-modal__content",
327
+ _vm.contentClass
328
+ ], attrs: { "data-qa": "dt-modal-copy" } }, [_vm._t("default")], 2) : _c("p", { class: [
329
+ "d-modal__content",
330
+ _vm.contentClass
331
+ ], attrs: { "data-qa": "dt-modal-copy" } }, [_vm._v(" " + _vm._s(_vm.copy) + " ")]), _vm.hasFooterSlot ? _c("footer", { staticClass: "d-modal__footer" }, [_vm._t("footer")], 2) : _vm._e(), !_vm.hideClose ? _c("dt-button", _vm._b({ staticClass: "d-modal__close", attrs: { "circle": "", "size": "lg", "importance": "clear", "aria-label": _vm.closeButtonProps.ariaLabel }, on: { "click": _vm.close }, scopedSlots: _vm._u([{ key: "icon", fn: function() {
332
+ return [_c("dt-icon", { attrs: { "name": "close", "size": "400" } })];
333
+ }, proxy: true }], null, false, 1709155279) }, "dt-button", _vm.closeButtonProps, false)) : _vm._e(), _vm.showVisuallyHiddenClose ? _c("sr-only-close-button", { attrs: { "visually-hidden-close-label": _vm.visuallyHiddenCloseLabel }, on: { "close": _vm.close } }) : _vm._e()], 1)])], 1);
334
+ };
335
+ var _sfc_staticRenderFns = [];
336
+ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
337
+ _sfc_main,
338
+ _sfc_render,
339
+ _sfc_staticRenderFns,
340
+ false,
341
+ null,
342
+ null,
343
+ null,
344
+ null
345
+ );
346
+ const modal = __component__.exports;
347
+ exports.DtModal = modal;
348
+ exports.MODAL_BANNER_KINDS = MODAL_BANNER_KINDS;
349
+ exports.MODAL_KIND_MODIFIERS = MODAL_KIND_MODIFIERS;
350
+ exports.MODAL_SIZE_MODIFIERS = MODAL_SIZE_MODIFIERS;
3
351
  //# sourceMappingURL=modal.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal.cjs","sources":["../../components/modal/modal_constants.js","../../components/modal/modal.vue"],"sourcesContent":["// Modal style modifiers\nexport const MODAL_KIND_MODIFIERS = {\n default: '',\n danger: 'd-modal--danger',\n};\n\n// Modal size modifiers\nexport const MODAL_SIZE_MODIFIERS = {\n default: '',\n full: 'd-modal--full',\n};\n\nexport const MODAL_BANNER_KINDS = {\n error: 'd-modal__banner--critical',\n info: 'd-modal__banner--info',\n success: 'd-modal__banner--success',\n warning: 'd-modal__banner--warning',\n base: 'd-modal__banner--general',\n};\n","<template>\n <dt-lazy-show\n transition=\"d-zoom\"\n :show=\"show\"\n :class=\"[\n 'd-modal',\n MODAL_KIND_MODIFIERS[kind],\n MODAL_SIZE_MODIFIERS[size],\n modalClass,\n ]\"\n data-qa=\"dt-modal\"\n :aria-hidden=\"open\"\n v-on=\"modalListeners\"\n >\n <div\n v-if=\"show && ($slots.banner || bannerTitle)\"\n data-qa=\"dt-modal-banner\"\n :class=\"[\n 'd-modal__banner',\n bannerClass,\n bannerKindClass,\n ]\"\n >\n <!-- @slot Slot for the banner, defaults to bannerTitle prop -->\n <slot name=\"banner\">\n {{ bannerTitle }}\n </slot>\n </div>\n <transition\n appear\n name=\"d-modal__dialog\"\n >\n <div\n v-show=\"show\"\n :class=\"[\n 'd-modal__dialog',\n { 'd-modal__dialog--scrollable': fixedHeaderFooter },\n dialogClass,\n ]\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-describedby=\"describedById\"\n :aria-labelledby=\"labelledById\"\n >\n <div\n v-if=\"$slots.header\"\n :id=\"labelledById\"\n class=\"d-modal__header\"\n data-qa=\"dt-modal-title\"\n >\n <!-- @slot Slot for dialog header section, taking the place of any \"title\" text prop -->\n <slot name=\"header\" />\n </div>\n <h2\n v-else\n :id=\"labelledById\"\n class=\"d-modal__header\"\n data-qa=\"dt-modal-title\"\n >\n {{ title }}\n </h2>\n <div\n v-if=\"$slots.default\"\n :class=\"[\n 'd-modal__content',\n contentClass,\n ]\"\n data-qa=\"dt-modal-copy\"\n >\n <!-- @slot Default slot for dialog body section, taking the place of any \"copy\" text prop -->\n <slot />\n </div>\n <p\n v-else\n :class=\"[\n 'd-modal__content',\n contentClass,\n ]\"\n data-qa=\"dt-modal-copy\"\n >\n {{ copy }}\n </p>\n <footer\n v-if=\"hasFooterSlot\"\n class=\"d-modal__footer\"\n >\n <!-- @slot Slot for dialog footer content, often containing cancel and confirm buttons. -->\n <slot name=\"footer\" />\n </footer>\n <dt-button\n v-if=\"!hideClose\"\n class=\"d-modal__close\"\n circle\n size=\"lg\"\n importance=\"clear\"\n :aria-label=\"closeButtonProps.ariaLabel\"\n v-bind=\"closeButtonProps\"\n @click=\"close\"\n >\n <template #icon>\n <dt-icon\n name=\"close\"\n size=\"400\"\n />\n </template>\n </dt-button>\n <sr-only-close-button\n v-if=\"showVisuallyHiddenClose\"\n :visually-hidden-close-label=\"visuallyHiddenCloseLabel\"\n @close=\"close\"\n />\n </div>\n </transition>\n </dt-lazy-show>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport { DtButton } from '@/components/button';\nimport { DtIcon } from '@/components/icon';\nimport Modal from '@/common/mixins/modal';\nimport {\n MODAL_BANNER_KINDS,\n MODAL_KIND_MODIFIERS,\n MODAL_SIZE_MODIFIERS,\n} from './modal_constants';\nimport { getUniqueString } from '@/common/utils';\nimport { DtLazyShow } from '@/components/lazy_show';\nimport { EVENT_KEYNAMES } from '@/common/constants';\nimport SrOnlyCloseButtonMixin from '@/common/mixins/sr_only_close_button';\nimport SrOnlyCloseButton from '@/common/sr_only_close_button.vue';\nimport { NOTICE_KINDS } from '@/components/notice';\n\n/**\n * Modals focus the user’s attention exclusively on one task or piece of information\n * via a window that sits on top of the page content.\n * @see https://dialtone.dialpad.com/components/modal.html\n */\nexport default {\n name: 'DtModal',\n\n components: {\n DtLazyShow,\n DtButton,\n DtIcon,\n SrOnlyCloseButton,\n },\n\n mixins: [Modal, SrOnlyCloseButtonMixin],\n\n props: {\n /**\n * A set of props to be passed into the modal's close button.\n * Requires an 'ariaLabel' property.\n */\n closeButtonProps: {\n type: Object,\n required: true,\n validator: (props) => {\n return !!props.ariaLabel;\n },\n },\n\n /**\n * Body text to display as the modal's main content.\n */\n copy: {\n type: String,\n default: '',\n },\n\n /**\n * Id to use for the dialog's aria-describedby.\n * Recommended only if the dialog content itself isn't enough to give full context,\n * as screen readers should recite the dialog contents by default before any aria-description.\n */\n describedById: {\n type: String,\n default: '',\n },\n\n /**\n * Id to use for the dialog's aria-labelledby.\n */\n labelledById: {\n type: String,\n default: function () { return getUniqueString(); },\n },\n\n /**\n * Whether the modal should be shown.\n * Parent component can sync on this value to control the modal's visibility.\n * @values true, false\n */\n show: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Title text to display in the modal header.\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Title text to display in the modal banner.\n */\n bannerTitle: {\n type: String,\n default: '',\n },\n\n /**\n * The theme of the modal. kind - default or danger,\n * @values default, danger\n */\n kind: {\n type: String,\n default: 'default',\n validator: (k) => Object.keys(MODAL_KIND_MODIFIERS).includes(k),\n },\n\n /**\n * The size of the modal. size - default or full,\n * @values default, full\n */\n size: {\n type: String,\n default: 'default',\n validator: (s) => Object.keys(MODAL_SIZE_MODIFIERS).includes(s),\n },\n\n /**\n * Additional class name for the root modal element.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n modalClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the dialog element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n dialogClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the content element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n contentClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Sets the color of the banner.\n * @values base, error, info, success, warning\n */\n bannerKind: {\n type: String,\n default: 'warning',\n validate (kind) {\n return NOTICE_KINDS.includes(kind);\n },\n },\n\n /**\n * Additional class name for the banner element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n bannerClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Hides the close button on the modal\n * @values true, false\n */\n hideClose: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the modal will close when you click outside of the dialog on the overlay.\n * @values true, false\n */\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Scrollable modal that allows scroll the modal content keeping the header and footer fixed\n * @values true, false\n */\n fixedHeaderFooter: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The element that is focused when the modal is opened. This can be an\n * HTMLElement within the modal, a string starting with '#' which will\n * find the element by ID. 'first' which will automatically focus\n * the first element, or 'dialog' which will focus the dialog window itself.\n * If the dialog is modal this prop cannot be 'none'.\n */\n initialFocusElement: {\n type: [String, HTMLElement],\n default: 'first',\n validator: initialFocusElement => {\n return initialFocusElement === 'first' ||\n (initialFocusElement instanceof HTMLElement) ||\n initialFocusElement.startsWith('#');\n },\n },\n },\n\n emits: [\n /**\n * The modal will emit a \"false\" boolean value for this event when the user performs a modal-closing action.\n * Parent components can sync on this value to create a 2-way binding to control modal visibility.\n *\n * @event update:show\n * @type {Boolean}\n */\n 'update:show',\n ],\n\n data () {\n return {\n MODAL_KIND_MODIFIERS,\n MODAL_SIZE_MODIFIERS,\n MODAL_BANNER_KINDS,\n EVENT_KEYNAMES,\n };\n },\n\n computed: {\n modalListeners () {\n return {\n ...this.$listeners,\n\n click: event => {\n if (!this.closeOnClick) return;\n (event.target === event.currentTarget) && this.close();\n this.$emit('click', event);\n },\n\n keydown: event => {\n switch (event.code) {\n case EVENT_KEYNAMES.esc:\n case EVENT_KEYNAMES.escape:\n this.close();\n break;\n case EVENT_KEYNAMES.tab:\n this.trapFocus(event);\n break;\n }\n this.$emit('keydown', event);\n },\n\n 'after-enter': event => {\n this.$emit('update:show', true);\n (event.target === event.currentTarget) && this.setFocusAfterTransition();\n },\n };\n },\n\n open () {\n return `${!this.show}`;\n },\n\n hasFooterSlot () {\n return !!this.$slots.footer;\n },\n\n bannerKindClass () {\n return MODAL_BANNER_KINDS[this.bannerKind];\n },\n },\n\n watch: {\n show: {\n immediate: true,\n handler (isShowing) {\n if (isShowing) {\n // Set a reference to the previously-active element, to which we'll return focus on modal close.\n this.previousActiveElement = document.activeElement;\n } else {\n // Modal is being hidden, so return focus to the previously active element before clearing the reference.\n this.previousActiveElement?.focus();\n this.previousActiveElement = null;\n }\n },\n },\n\n $props: {\n immediate: true,\n deep: true,\n handler () {\n this.validateProps();\n },\n },\n },\n\n methods: {\n close () {\n this.$emit('update:show', false);\n },\n\n setFocusAfterTransition () {\n if (this.initialFocusElement === 'first') {\n this.focusFirstElement();\n } else if (this.initialFocusElement.startsWith('#')) {\n this.focusElementById(this.initialFocusElement);\n } else if (this.initialFocusElement instanceof HTMLElement) {\n this.initialFocusElement.focus();\n }\n },\n\n trapFocus (e) {\n if (this.show) {\n this.focusTrappedTabPress(e);\n }\n },\n\n validateProps () {\n if (this.hideClose && !this.visuallyHiddenClose) {\n console.error(`If hideClose prop is true, visuallyHiddenClose and visuallyHiddenCloseLabel props\n need to be set so the component always includes a close button`);\n }\n },\n },\n};\n</script>\n"],"names":["MODAL_KIND_MODIFIERS","MODAL_SIZE_MODIFIERS","MODAL_BANNER_KINDS","_sfc_main","DtLazyShow","DtButton","DtIcon","SrOnlyCloseButton","Modal","SrOnlyCloseButtonMixin","props","getUniqueString","k","s","kind","NOTICE_KINDS","initialFocusElement","EVENT_KEYNAMES","event","isShowing","_a","e"],"mappings":"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"}
1
+ {"version":3,"file":"modal.cjs","sources":["../../components/modal/modal_constants.js","../../components/modal/modal.vue"],"sourcesContent":["// Modal style modifiers\nexport const MODAL_KIND_MODIFIERS = {\n default: '',\n danger: 'd-modal--danger',\n};\n\n// Modal size modifiers\nexport const MODAL_SIZE_MODIFIERS = {\n default: '',\n full: 'd-modal--full',\n};\n\nexport const MODAL_BANNER_KINDS = {\n error: 'd-modal__banner--critical',\n info: 'd-modal__banner--info',\n success: 'd-modal__banner--success',\n warning: 'd-modal__banner--warning',\n base: 'd-modal__banner--general',\n};\n","<template>\n <dt-lazy-show\n transition=\"d-zoom\"\n :show=\"show\"\n :class=\"[\n 'd-modal',\n MODAL_KIND_MODIFIERS[kind],\n MODAL_SIZE_MODIFIERS[size],\n modalClass,\n ]\"\n data-qa=\"dt-modal\"\n :aria-hidden=\"open\"\n v-on=\"modalListeners\"\n >\n <div\n v-if=\"show && ($slots.banner || bannerTitle)\"\n data-qa=\"dt-modal-banner\"\n :class=\"[\n 'd-modal__banner',\n bannerClass,\n bannerKindClass,\n ]\"\n >\n <!-- @slot Slot for the banner, defaults to bannerTitle prop -->\n <slot name=\"banner\">\n {{ bannerTitle }}\n </slot>\n </div>\n <transition\n appear\n name=\"d-modal__dialog\"\n >\n <div\n v-show=\"show\"\n :class=\"[\n 'd-modal__dialog',\n { 'd-modal__dialog--scrollable': fixedHeaderFooter },\n dialogClass,\n ]\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-describedby=\"describedById\"\n :aria-labelledby=\"labelledById\"\n >\n <div\n v-if=\"$slots.header\"\n :id=\"labelledById\"\n class=\"d-modal__header\"\n data-qa=\"dt-modal-title\"\n >\n <!-- @slot Slot for dialog header section, taking the place of any \"title\" text prop -->\n <slot name=\"header\" />\n </div>\n <h2\n v-else\n :id=\"labelledById\"\n class=\"d-modal__header\"\n data-qa=\"dt-modal-title\"\n >\n {{ title }}\n </h2>\n <div\n v-if=\"$slots.default\"\n :class=\"[\n 'd-modal__content',\n contentClass,\n ]\"\n data-qa=\"dt-modal-copy\"\n >\n <!-- @slot Default slot for dialog body section, taking the place of any \"copy\" text prop -->\n <slot />\n </div>\n <p\n v-else\n :class=\"[\n 'd-modal__content',\n contentClass,\n ]\"\n data-qa=\"dt-modal-copy\"\n >\n {{ copy }}\n </p>\n <footer\n v-if=\"hasFooterSlot\"\n class=\"d-modal__footer\"\n >\n <!-- @slot Slot for dialog footer content, often containing cancel and confirm buttons. -->\n <slot name=\"footer\" />\n </footer>\n <dt-button\n v-if=\"!hideClose\"\n class=\"d-modal__close\"\n circle\n size=\"lg\"\n importance=\"clear\"\n :aria-label=\"closeButtonProps.ariaLabel\"\n v-bind=\"closeButtonProps\"\n @click=\"close\"\n >\n <template #icon>\n <dt-icon\n name=\"close\"\n size=\"400\"\n />\n </template>\n </dt-button>\n <sr-only-close-button\n v-if=\"showVisuallyHiddenClose\"\n :visually-hidden-close-label=\"visuallyHiddenCloseLabel\"\n @close=\"close\"\n />\n </div>\n </transition>\n </dt-lazy-show>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport { DtButton } from '@/components/button';\nimport { DtIcon } from '@/components/icon';\nimport Modal from '@/common/mixins/modal';\nimport {\n MODAL_BANNER_KINDS,\n MODAL_KIND_MODIFIERS,\n MODAL_SIZE_MODIFIERS,\n} from './modal_constants';\nimport { getUniqueString } from '@/common/utils';\nimport { DtLazyShow } from '@/components/lazy_show';\nimport { EVENT_KEYNAMES } from '@/common/constants';\nimport SrOnlyCloseButtonMixin from '@/common/mixins/sr_only_close_button';\nimport SrOnlyCloseButton from '@/common/sr_only_close_button.vue';\nimport { NOTICE_KINDS } from '@/components/notice';\n\n/**\n * Modals focus the user’s attention exclusively on one task or piece of information\n * via a window that sits on top of the page content.\n * @see https://dialtone.dialpad.com/components/modal.html\n */\nexport default {\n name: 'DtModal',\n\n components: {\n DtLazyShow,\n DtButton,\n DtIcon,\n SrOnlyCloseButton,\n },\n\n mixins: [Modal, SrOnlyCloseButtonMixin],\n\n props: {\n /**\n * A set of props to be passed into the modal's close button.\n * Requires an 'ariaLabel' property.\n */\n closeButtonProps: {\n type: Object,\n required: true,\n validator: (props) => {\n return !!props.ariaLabel;\n },\n },\n\n /**\n * Body text to display as the modal's main content.\n */\n copy: {\n type: String,\n default: '',\n },\n\n /**\n * Id to use for the dialog's aria-describedby.\n * Recommended only if the dialog content itself isn't enough to give full context,\n * as screen readers should recite the dialog contents by default before any aria-description.\n */\n describedById: {\n type: String,\n default: '',\n },\n\n /**\n * Id to use for the dialog's aria-labelledby.\n */\n labelledById: {\n type: String,\n default: function () { return getUniqueString(); },\n },\n\n /**\n * Whether the modal should be shown.\n * Parent component can sync on this value to control the modal's visibility.\n * @values true, false\n */\n show: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Title text to display in the modal header.\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Title text to display in the modal banner.\n */\n bannerTitle: {\n type: String,\n default: '',\n },\n\n /**\n * The theme of the modal. kind - default or danger,\n * @values default, danger\n */\n kind: {\n type: String,\n default: 'default',\n validator: (k) => Object.keys(MODAL_KIND_MODIFIERS).includes(k),\n },\n\n /**\n * The size of the modal. size - default or full,\n * @values default, full\n */\n size: {\n type: String,\n default: 'default',\n validator: (s) => Object.keys(MODAL_SIZE_MODIFIERS).includes(s),\n },\n\n /**\n * Additional class name for the root modal element.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n modalClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the dialog element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n dialogClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the content element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n contentClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Sets the color of the banner.\n * @values base, error, info, success, warning\n */\n bannerKind: {\n type: String,\n default: 'warning',\n validate (kind) {\n return NOTICE_KINDS.includes(kind);\n },\n },\n\n /**\n * Additional class name for the banner element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n bannerClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Hides the close button on the modal\n * @values true, false\n */\n hideClose: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the modal will close when you click outside of the dialog on the overlay.\n * @values true, false\n */\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Scrollable modal that allows scroll the modal content keeping the header and footer fixed\n * @values true, false\n */\n fixedHeaderFooter: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The element that is focused when the modal is opened. This can be an\n * HTMLElement within the modal, a string starting with '#' which will\n * find the element by ID. 'first' which will automatically focus\n * the first element, or 'dialog' which will focus the dialog window itself.\n * If the dialog is modal this prop cannot be 'none'.\n */\n initialFocusElement: {\n type: [String, HTMLElement],\n default: 'first',\n validator: initialFocusElement => {\n return initialFocusElement === 'first' ||\n (initialFocusElement instanceof HTMLElement) ||\n initialFocusElement.startsWith('#');\n },\n },\n },\n\n emits: [\n /**\n * The modal will emit a \"false\" boolean value for this event when the user performs a modal-closing action.\n * Parent components can sync on this value to create a 2-way binding to control modal visibility.\n *\n * @event update:show\n * @type {Boolean}\n */\n 'update:show',\n ],\n\n data () {\n return {\n MODAL_KIND_MODIFIERS,\n MODAL_SIZE_MODIFIERS,\n MODAL_BANNER_KINDS,\n EVENT_KEYNAMES,\n };\n },\n\n computed: {\n modalListeners () {\n return {\n ...this.$listeners,\n\n click: event => {\n if (!this.closeOnClick) return;\n (event.target === event.currentTarget) && this.close();\n this.$emit('click', event);\n },\n\n keydown: event => {\n switch (event.code) {\n case EVENT_KEYNAMES.esc:\n case EVENT_KEYNAMES.escape:\n this.close();\n break;\n case EVENT_KEYNAMES.tab:\n this.trapFocus(event);\n break;\n }\n this.$emit('keydown', event);\n },\n\n 'after-enter': event => {\n this.$emit('update:show', true);\n (event.target === event.currentTarget) && this.setFocusAfterTransition();\n },\n };\n },\n\n open () {\n return `${!this.show}`;\n },\n\n hasFooterSlot () {\n return !!this.$slots.footer;\n },\n\n bannerKindClass () {\n return MODAL_BANNER_KINDS[this.bannerKind];\n },\n },\n\n watch: {\n show: {\n immediate: true,\n handler (isShowing) {\n if (isShowing) {\n // Set a reference to the previously-active element, to which we'll return focus on modal close.\n this.previousActiveElement = document.activeElement;\n } else {\n // Modal is being hidden, so return focus to the previously active element before clearing the reference.\n this.previousActiveElement?.focus();\n this.previousActiveElement = null;\n }\n },\n },\n\n $props: {\n immediate: true,\n deep: true,\n handler () {\n this.validateProps();\n },\n },\n },\n\n methods: {\n close () {\n this.$emit('update:show', false);\n },\n\n setFocusAfterTransition () {\n if (this.initialFocusElement === 'first') {\n this.focusFirstElement();\n } else if (this.initialFocusElement.startsWith('#')) {\n this.focusElementById(this.initialFocusElement);\n } else if (this.initialFocusElement instanceof HTMLElement) {\n this.initialFocusElement.focus();\n }\n },\n\n trapFocus (e) {\n if (this.show) {\n this.focusTrappedTabPress(e);\n }\n },\n\n validateProps () {\n if (this.hideClose && !this.visuallyHiddenClose) {\n console.error(`If hideClose prop is true, visuallyHiddenClose and visuallyHiddenCloseLabel props\n need to be set so the component always includes a close button`);\n }\n },\n },\n};\n</script>\n"],"names":["DtLazyShow","DtButton","DtIcon","SrOnlyCloseButton","Modal","SrOnlyCloseButtonMixin","getUniqueString","NOTICE_KINDS","EVENT_KEYNAMES"],"mappings":"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"}