@dialpad/dialtone 9.65.1 → 9.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (792) hide show
  1. package/dist/tokens/doc.json +17176 -17176
  2. package/dist/vue2/chunks/{dropdown-6UoczdUY.js → dropdown-YdCyJ5Dq.js} +77 -41
  3. package/dist/vue2/chunks/{dropdown-6UoczdUY.js.map → dropdown-YdCyJ5Dq.js.map} +1 -1
  4. package/dist/vue2/chunks/{dropdown-pHxnQPzT.js → dropdown-mjrYu_mK.js} +77 -41
  5. package/dist/vue2/chunks/{dropdown-pHxnQPzT.js.map → dropdown-mjrYu_mK.js.map} +1 -1
  6. package/dist/vue2/chunks/dropdown_constants-2pGCXy7m.js.map +1 -1
  7. package/dist/vue2/chunks/dropdown_constants-w1MXGC3Z.js.map +1 -1
  8. package/dist/vue2/chunks/{icon_constants-Dy4MEUJL.js → icon_constants-TdxqLsS2.js} +3 -2
  9. package/dist/vue2/chunks/icon_constants-TdxqLsS2.js.map +1 -0
  10. package/dist/vue2/chunks/{icon_constants-QYpmdE0R.js → icon_constants-VEA0wI5C.js} +3 -2
  11. package/dist/vue2/chunks/icon_constants-VEA0wI5C.js.map +1 -0
  12. package/dist/vue2/chunks/{index-gj1jEXP4.js → index-DyqUqjvI.js} +122 -87
  13. package/dist/vue2/chunks/{index-gj1jEXP4.js.map → index-DyqUqjvI.js.map} +1 -1
  14. package/dist/vue2/chunks/{index-anN_sx1F.js → index-NYFNZeHH.js} +5 -13
  15. package/dist/vue2/chunks/{index-anN_sx1F.js.map → index-NYFNZeHH.js.map} +1 -1
  16. package/dist/vue2/chunks/{index-ODod4Oj_.js → index-i65YVk-U.js} +5 -13
  17. package/dist/vue2/chunks/{index-ODod4Oj_.js.map → index-i65YVk-U.js.map} +1 -1
  18. package/dist/vue2/chunks/{index-eJ-WWRdf.js → index-mBWay1Qb.js} +122 -87
  19. package/dist/vue2/chunks/{index-eJ-WWRdf.js.map → index-mBWay1Qb.js.map} +1 -1
  20. package/dist/vue2/chunks/{input-Axw-wFj2.js → input-Hqw33WBe.js} +3 -9
  21. package/dist/vue2/chunks/{input-Axw-wFj2.js.map → input-Hqw33WBe.js.map} +1 -1
  22. package/dist/vue2/chunks/{input-6kbd8Pju.js → input-PhJeBN6r.js} +3 -9
  23. package/dist/vue2/chunks/{input-6kbd8Pju.js.map → input-PhJeBN6r.js.map} +1 -1
  24. package/dist/vue2/chunks/{input_group-qVZaS5Bb.js → input_group-ZI7aVGEp.js} +4 -2
  25. package/dist/vue2/chunks/{input_group-m3cWYUfI.js.map → input_group-ZI7aVGEp.js.map} +1 -1
  26. package/dist/vue2/chunks/{input_group-m3cWYUfI.js → input_group-pE6ec9R3.js} +4 -2
  27. package/dist/vue2/chunks/{input_group-qVZaS5Bb.js.map → input_group-pE6ec9R3.js.map} +1 -1
  28. package/dist/vue2/chunks/{keyboard_list_navigation-ScXhrxya.js → keyboard_list_navigation-YIqTuw1W.js} +6 -5
  29. package/dist/vue2/chunks/{keyboard_list_navigation-fJnl_Iox.js.map → keyboard_list_navigation-YIqTuw1W.js.map} +1 -1
  30. package/dist/vue2/chunks/{keyboard_list_navigation-fJnl_Iox.js → keyboard_list_navigation-x3D6RcC7.js} +6 -5
  31. package/dist/vue2/chunks/{keyboard_list_navigation-ScXhrxya.js.map → keyboard_list_navigation-x3D6RcC7.js.map} +1 -1
  32. package/dist/vue2/chunks/link_constants-AfTWrr-n.js.map +1 -1
  33. package/dist/vue2/chunks/link_constants-x8NwdqmA.js.map +1 -1
  34. package/dist/vue2/chunks/list_item_constants-EiqkqZvP.js.map +1 -1
  35. package/dist/vue2/chunks/list_item_constants-u1xcN9Dd.js.map +1 -1
  36. package/dist/vue2/chunks/{modal-XOr4kiNZ.js → modal-8X6poIZW.js} +4 -2
  37. package/dist/{vue3/chunks/modal-XOr4kiNZ.js.map → vue2/chunks/modal-8X6poIZW.js.map} +1 -1
  38. package/dist/vue2/chunks/{modal-VgxXAQFP.js → modal-OaWxzqNt.js} +4 -2
  39. package/dist/vue2/chunks/{modal-VgxXAQFP.js.map → modal-OaWxzqNt.js.map} +1 -1
  40. package/dist/vue2/chunks/{notice_action-IRUoLX2d.js → notice_action-qQr3K2TC.js} +71 -46
  41. package/dist/vue2/chunks/{notice_action-IRUoLX2d.js.map → notice_action-qQr3K2TC.js.map} +1 -1
  42. package/dist/vue2/chunks/{notice_action-P6uDyE9x.js → notice_action-tEvvMg7Q.js} +71 -46
  43. package/dist/vue2/chunks/{notice_action-P6uDyE9x.js.map → notice_action-tEvvMg7Q.js.map} +1 -1
  44. package/dist/vue2/chunks/notice_constants-7Qt2CQEY.js.map +1 -1
  45. package/dist/vue2/chunks/notice_constants-UXo9e3bS.js.map +1 -1
  46. package/dist/vue2/chunks/{popover_constants-WsOUIY-m.js → popover_constants-6YkPPbnk.js} +26 -47
  47. package/dist/vue2/chunks/{popover_constants-WsOUIY-m.js.map → popover_constants-6YkPPbnk.js.map} +1 -1
  48. package/dist/vue2/chunks/{popover_constants-XnGWXaxX.js → popover_constants-h9MD6WUt.js} +26 -47
  49. package/dist/{vue3/chunks/popover_constants-WsOUIY-m.js.map → vue2/chunks/popover_constants-h9MD6WUt.js.map} +1 -1
  50. package/dist/vue2/chunks/{sr_only_close_button-ZaGdAHz7.js → sr_only_close_button-2Q9Ny1Nc.js} +24 -18
  51. package/dist/vue2/chunks/{sr_only_close_button-ZaGdAHz7.js.map → sr_only_close_button-2Q9Ny1Nc.js.map} +1 -1
  52. package/dist/vue2/chunks/{sr_only_close_button-81bHIpPu.js → sr_only_close_button-IjMVfBDE.js} +24 -18
  53. package/dist/vue2/chunks/{sr_only_close_button-81bHIpPu.js.map → sr_only_close_button-IjMVfBDE.js.map} +1 -1
  54. package/dist/vue2/chunks/stack_constants-HraCekPm.js.map +1 -1
  55. package/dist/vue2/chunks/stack_constants-SMzMWnAQ.js.map +1 -1
  56. package/dist/vue2/chunks/{tab-FcsV5VmK.js → tab-79yMX6m6.js} +86 -68
  57. package/dist/vue2/chunks/{tab-V4cb44Ry.js.map → tab-79yMX6m6.js.map} +1 -1
  58. package/dist/vue2/chunks/{tab-V4cb44Ry.js → tab-muPOS7JE.js} +86 -68
  59. package/dist/vue2/chunks/{tab-FcsV5VmK.js.map → tab-muPOS7JE.js.map} +1 -1
  60. package/dist/vue2/common/constants.cjs.map +1 -1
  61. package/dist/vue2/common/constants.js.map +1 -1
  62. package/dist/vue2/common/dates.cjs +3 -1
  63. package/dist/vue2/common/dates.cjs.map +1 -1
  64. package/dist/vue2/common/dates.js +3 -1
  65. package/dist/vue2/common/dates.js.map +1 -1
  66. package/dist/vue2/common/emoji.cjs +1 -1
  67. package/dist/vue2/common/emoji.js +1 -1
  68. package/dist/vue2/common/mixins.cjs +3 -3
  69. package/dist/vue2/common/mixins.js +3 -3
  70. package/dist/vue2/common/utils.cjs +8 -44
  71. package/dist/vue2/common/utils.cjs.map +1 -1
  72. package/dist/vue2/common/utils.js +8 -44
  73. package/dist/vue2/common/utils.js.map +1 -1
  74. package/dist/vue2/common/validators.cjs.map +1 -1
  75. package/dist/vue2/common/validators.js.map +1 -1
  76. package/dist/vue2/component-documentation.json +1 -1
  77. package/dist/vue2/dialtone-vue.cjs +12 -12
  78. package/dist/vue2/dialtone-vue.js +12 -12
  79. package/dist/vue2/lib/attachment-carousel.cjs +172 -48
  80. package/dist/vue2/lib/attachment-carousel.cjs.map +1 -1
  81. package/dist/vue2/lib/attachment-carousel.js +172 -48
  82. package/dist/vue2/lib/attachment-carousel.js.map +1 -1
  83. package/dist/vue2/lib/avatar.cjs +75 -58
  84. package/dist/vue2/lib/avatar.cjs.map +1 -1
  85. package/dist/vue2/lib/avatar.js +75 -58
  86. package/dist/vue2/lib/avatar.js.map +1 -1
  87. package/dist/vue2/lib/badge.cjs +31 -20
  88. package/dist/vue2/lib/badge.cjs.map +1 -1
  89. package/dist/vue2/lib/badge.js +31 -20
  90. package/dist/vue2/lib/badge.js.map +1 -1
  91. package/dist/vue2/lib/banner.cjs +53 -29
  92. package/dist/vue2/lib/banner.cjs.map +1 -1
  93. package/dist/vue2/lib/banner.js +53 -29
  94. package/dist/vue2/lib/banner.js.map +1 -1
  95. package/dist/vue2/lib/breadcrumbs.cjs +36 -30
  96. package/dist/vue2/lib/breadcrumbs.cjs.map +1 -1
  97. package/dist/vue2/lib/breadcrumbs.js +36 -30
  98. package/dist/vue2/lib/breadcrumbs.js.map +1 -1
  99. package/dist/vue2/lib/button-group.cjs +7 -14
  100. package/dist/vue2/lib/button-group.cjs.map +1 -1
  101. package/dist/vue2/lib/button-group.js +7 -14
  102. package/dist/vue2/lib/button-group.js.map +1 -1
  103. package/dist/vue2/lib/button.cjs +55 -62
  104. package/dist/vue2/lib/button.cjs.map +1 -1
  105. package/dist/vue2/lib/button.js +55 -62
  106. package/dist/vue2/lib/button.js.map +1 -1
  107. package/dist/vue2/lib/callbar-button-with-popover.cjs +91 -23
  108. package/dist/vue2/lib/callbar-button-with-popover.cjs.map +1 -1
  109. package/dist/vue2/lib/callbar-button-with-popover.js +91 -23
  110. package/dist/vue2/lib/callbar-button-with-popover.js.map +1 -1
  111. package/dist/vue2/lib/callbar-button.cjs +49 -33
  112. package/dist/vue2/lib/callbar-button.cjs.map +1 -1
  113. package/dist/vue2/lib/callbar-button.js +49 -33
  114. package/dist/vue2/lib/callbar-button.js.map +1 -1
  115. package/dist/vue2/lib/callbox.cjs +78 -15
  116. package/dist/vue2/lib/callbox.cjs.map +1 -1
  117. package/dist/vue2/lib/callbox.js +78 -15
  118. package/dist/vue2/lib/callbox.js.map +1 -1
  119. package/dist/vue2/lib/card.cjs +16 -23
  120. package/dist/vue2/lib/card.cjs.map +1 -1
  121. package/dist/vue2/lib/card.js +16 -23
  122. package/dist/vue2/lib/card.js.map +1 -1
  123. package/dist/vue2/lib/checkbox-group.cjs +3 -15
  124. package/dist/vue2/lib/checkbox-group.cjs.map +1 -1
  125. package/dist/vue2/lib/checkbox-group.js +3 -15
  126. package/dist/vue2/lib/checkbox-group.js.map +1 -1
  127. package/dist/vue2/lib/checkbox.cjs +52 -16
  128. package/dist/vue2/lib/checkbox.cjs.map +1 -1
  129. package/dist/vue2/lib/checkbox.js +52 -16
  130. package/dist/vue2/lib/checkbox.js.map +1 -1
  131. package/dist/vue2/lib/chip.cjs +58 -26
  132. package/dist/vue2/lib/chip.cjs.map +1 -1
  133. package/dist/vue2/lib/chip.js +58 -26
  134. package/dist/vue2/lib/chip.js.map +1 -1
  135. package/dist/vue2/lib/codeblock.cjs +4 -11
  136. package/dist/vue2/lib/codeblock.cjs.map +1 -1
  137. package/dist/vue2/lib/codeblock.js +4 -11
  138. package/dist/vue2/lib/codeblock.js.map +1 -1
  139. package/dist/vue2/lib/collapsible.cjs +91 -34
  140. package/dist/vue2/lib/collapsible.cjs.map +1 -1
  141. package/dist/vue2/lib/collapsible.js +91 -34
  142. package/dist/vue2/lib/collapsible.js.map +1 -1
  143. package/dist/vue2/lib/combobox-multi-select.cjs +131 -38
  144. package/dist/vue2/lib/combobox-multi-select.cjs.map +1 -1
  145. package/dist/vue2/lib/combobox-multi-select.js +131 -38
  146. package/dist/vue2/lib/combobox-multi-select.js.map +1 -1
  147. package/dist/vue2/lib/combobox-with-popover.cjs +130 -39
  148. package/dist/vue2/lib/combobox-with-popover.cjs.map +1 -1
  149. package/dist/vue2/lib/combobox-with-popover.js +130 -39
  150. package/dist/vue2/lib/combobox-with-popover.js.map +1 -1
  151. package/dist/vue2/lib/combobox.cjs +3 -3
  152. package/dist/vue2/lib/combobox.js +3 -3
  153. package/dist/vue2/lib/contact-centers-row.cjs +86 -29
  154. package/dist/vue2/lib/contact-centers-row.cjs.map +1 -1
  155. package/dist/vue2/lib/contact-centers-row.js +86 -29
  156. package/dist/vue2/lib/contact-centers-row.js.map +1 -1
  157. package/dist/vue2/lib/contact-info.cjs +95 -24
  158. package/dist/vue2/lib/contact-info.cjs.map +1 -1
  159. package/dist/vue2/lib/contact-info.js +95 -24
  160. package/dist/vue2/lib/contact-info.js.map +1 -1
  161. package/dist/vue2/lib/contact-row.cjs +61 -18
  162. package/dist/vue2/lib/contact-row.cjs.map +1 -1
  163. package/dist/vue2/lib/contact-row.js +61 -18
  164. package/dist/vue2/lib/contact-row.js.map +1 -1
  165. package/dist/vue2/lib/datepicker.cjs +361 -102
  166. package/dist/vue2/lib/datepicker.cjs.map +1 -1
  167. package/dist/vue2/lib/datepicker.js +361 -102
  168. package/dist/vue2/lib/datepicker.js.map +1 -1
  169. package/dist/vue2/lib/description-list.cjs +11 -12
  170. package/dist/vue2/lib/description-list.cjs.map +1 -1
  171. package/dist/vue2/lib/description-list.js +11 -12
  172. package/dist/vue2/lib/description-list.js.map +1 -1
  173. package/dist/vue2/lib/dropdown.cjs +13 -17
  174. package/dist/vue2/lib/dropdown.cjs.map +1 -1
  175. package/dist/vue2/lib/dropdown.js +13 -17
  176. package/dist/vue2/lib/dropdown.js.map +1 -1
  177. package/dist/vue2/lib/editor.cjs +409 -109
  178. package/dist/vue2/lib/editor.cjs.map +1 -1
  179. package/dist/vue2/lib/editor.js +409 -109
  180. package/dist/vue2/lib/editor.js.map +1 -1
  181. package/dist/vue2/lib/emoji-picker.cjs +512 -234
  182. package/dist/vue2/lib/emoji-picker.cjs.map +1 -1
  183. package/dist/vue2/lib/emoji-picker.js +512 -234
  184. package/dist/vue2/lib/emoji-picker.js.map +1 -1
  185. package/dist/vue2/lib/emoji-row.cjs +69 -31
  186. package/dist/vue2/lib/emoji-row.cjs.map +1 -1
  187. package/dist/vue2/lib/emoji-row.js +69 -31
  188. package/dist/vue2/lib/emoji-row.js.map +1 -1
  189. package/dist/vue2/lib/emoji-text-wrapper.cjs +14 -22
  190. package/dist/vue2/lib/emoji-text-wrapper.cjs.map +1 -1
  191. package/dist/vue2/lib/emoji-text-wrapper.js +14 -22
  192. package/dist/vue2/lib/emoji-text-wrapper.js.map +1 -1
  193. package/dist/vue2/lib/emoji.cjs +40 -13
  194. package/dist/vue2/lib/emoji.cjs.map +1 -1
  195. package/dist/vue2/lib/emoji.js +40 -13
  196. package/dist/vue2/lib/emoji.js.map +1 -1
  197. package/dist/vue2/lib/empty-state.cjs +27 -12
  198. package/dist/vue2/lib/empty-state.cjs.map +1 -1
  199. package/dist/vue2/lib/empty-state.js +27 -12
  200. package/dist/vue2/lib/empty-state.js.map +1 -1
  201. package/dist/vue2/lib/feed-item-row.cjs +106 -27
  202. package/dist/vue2/lib/feed-item-row.cjs.map +1 -1
  203. package/dist/vue2/lib/feed-item-row.js +106 -27
  204. package/dist/vue2/lib/feed-item-row.js.map +1 -1
  205. package/dist/vue2/lib/feed-pill.cjs +90 -35
  206. package/dist/vue2/lib/feed-pill.cjs.map +1 -1
  207. package/dist/vue2/lib/feed-pill.js +90 -35
  208. package/dist/vue2/lib/feed-pill.js.map +1 -1
  209. package/dist/vue2/lib/general-row.cjs +184 -75
  210. package/dist/vue2/lib/general-row.cjs.map +1 -1
  211. package/dist/vue2/lib/general-row.js +184 -75
  212. package/dist/vue2/lib/general-row.js.map +1 -1
  213. package/dist/vue2/lib/group-row.cjs +27 -16
  214. package/dist/vue2/lib/group-row.cjs.map +1 -1
  215. package/dist/vue2/lib/group-row.js +27 -16
  216. package/dist/vue2/lib/group-row.js.map +1 -1
  217. package/dist/vue2/lib/grouped-chip.cjs +68 -20
  218. package/dist/vue2/lib/grouped-chip.cjs.map +1 -1
  219. package/dist/vue2/lib/grouped-chip.js +68 -20
  220. package/dist/vue2/lib/grouped-chip.js.map +1 -1
  221. package/dist/vue2/lib/hovercard.cjs +71 -41
  222. package/dist/vue2/lib/hovercard.cjs.map +1 -1
  223. package/dist/vue2/lib/hovercard.js +71 -41
  224. package/dist/vue2/lib/hovercard.js.map +1 -1
  225. package/dist/vue2/lib/icon.cjs +10 -12
  226. package/dist/vue2/lib/icon.cjs.map +1 -1
  227. package/dist/vue2/lib/icon.js +10 -12
  228. package/dist/vue2/lib/icon.js.map +1 -1
  229. package/dist/vue2/lib/illustration.cjs +9 -12
  230. package/dist/vue2/lib/illustration.cjs.map +1 -1
  231. package/dist/vue2/lib/illustration.js +9 -12
  232. package/dist/vue2/lib/illustration.js.map +1 -1
  233. package/dist/vue2/lib/image-viewer.cjs +98 -23
  234. package/dist/vue2/lib/image-viewer.cjs.map +1 -1
  235. package/dist/vue2/lib/image-viewer.js +98 -23
  236. package/dist/vue2/lib/image-viewer.js.map +1 -1
  237. package/dist/vue2/lib/input-group.cjs +24 -14
  238. package/dist/vue2/lib/input-group.cjs.map +1 -1
  239. package/dist/vue2/lib/input-group.js +24 -14
  240. package/dist/vue2/lib/input-group.js.map +1 -1
  241. package/dist/vue2/lib/input.cjs +108 -40
  242. package/dist/vue2/lib/input.cjs.map +1 -1
  243. package/dist/vue2/lib/input.js +108 -40
  244. package/dist/vue2/lib/input.js.map +1 -1
  245. package/dist/vue2/lib/item-layout.cjs +42 -11
  246. package/dist/vue2/lib/item-layout.cjs.map +1 -1
  247. package/dist/vue2/lib/item-layout.js +42 -11
  248. package/dist/vue2/lib/item-layout.js.map +1 -1
  249. package/dist/vue2/lib/ivr-node.cjs +135 -47
  250. package/dist/vue2/lib/ivr-node.cjs.map +1 -1
  251. package/dist/vue2/lib/ivr-node.js +135 -47
  252. package/dist/vue2/lib/ivr-node.js.map +1 -1
  253. package/dist/vue2/lib/keyboard-shortcut.cjs +35 -23
  254. package/dist/vue2/lib/keyboard-shortcut.cjs.map +1 -1
  255. package/dist/vue2/lib/keyboard-shortcut.js +35 -23
  256. package/dist/vue2/lib/keyboard-shortcut.js.map +1 -1
  257. package/dist/vue2/lib/lazy-show.cjs +15 -11
  258. package/dist/vue2/lib/lazy-show.cjs.map +1 -1
  259. package/dist/vue2/lib/lazy-show.js +15 -11
  260. package/dist/vue2/lib/lazy-show.js.map +1 -1
  261. package/dist/vue2/lib/link.cjs +9 -15
  262. package/dist/vue2/lib/link.cjs.map +1 -1
  263. package/dist/vue2/lib/link.js +9 -15
  264. package/dist/vue2/lib/link.js.map +1 -1
  265. package/dist/vue2/lib/list-item-group.cjs +17 -11
  266. package/dist/vue2/lib/list-item-group.cjs.map +1 -1
  267. package/dist/vue2/lib/list-item-group.js +17 -11
  268. package/dist/vue2/lib/list-item-group.js.map +1 -1
  269. package/dist/vue2/lib/list-item.cjs +42 -23
  270. package/dist/vue2/lib/list-item.cjs.map +1 -1
  271. package/dist/vue2/lib/list-item.js +42 -23
  272. package/dist/vue2/lib/list-item.js.map +1 -1
  273. package/dist/vue2/lib/message-input.cjs +360 -97
  274. package/dist/vue2/lib/message-input.cjs.map +1 -1
  275. package/dist/vue2/lib/message-input.js +360 -97
  276. package/dist/vue2/lib/message-input.js.map +1 -1
  277. package/dist/vue2/lib/modal.cjs +94 -36
  278. package/dist/vue2/lib/modal.cjs.map +1 -1
  279. package/dist/vue2/lib/modal.js +94 -36
  280. package/dist/vue2/lib/modal.js.map +1 -1
  281. package/dist/vue2/lib/notice.cjs +40 -21
  282. package/dist/vue2/lib/notice.cjs.map +1 -1
  283. package/dist/vue2/lib/notice.js +40 -21
  284. package/dist/vue2/lib/notice.js.map +1 -1
  285. package/dist/vue2/lib/pagination.cjs +81 -20
  286. package/dist/vue2/lib/pagination.cjs.map +1 -1
  287. package/dist/vue2/lib/pagination.js +81 -20
  288. package/dist/vue2/lib/pagination.js.map +1 -1
  289. package/dist/vue2/lib/popover.cjs +194 -75
  290. package/dist/vue2/lib/popover.cjs.map +1 -1
  291. package/dist/vue2/lib/popover.js +195 -76
  292. package/dist/vue2/lib/popover.js.map +1 -1
  293. package/dist/vue2/lib/presence.cjs +23 -22
  294. package/dist/vue2/lib/presence.cjs.map +1 -1
  295. package/dist/vue2/lib/presence.js +23 -22
  296. package/dist/vue2/lib/presence.js.map +1 -1
  297. package/dist/vue2/lib/radio-group.cjs +2 -11
  298. package/dist/vue2/lib/radio-group.cjs.map +1 -1
  299. package/dist/vue2/lib/radio-group.js +2 -11
  300. package/dist/vue2/lib/radio-group.js.map +1 -1
  301. package/dist/vue2/lib/radio.cjs +47 -15
  302. package/dist/vue2/lib/radio.cjs.map +1 -1
  303. package/dist/vue2/lib/radio.js +47 -15
  304. package/dist/vue2/lib/radio.js.map +1 -1
  305. package/dist/vue2/lib/rich-text-editor.cjs +336 -317
  306. package/dist/vue2/lib/rich-text-editor.cjs.map +1 -1
  307. package/dist/vue2/lib/rich-text-editor.js +336 -317
  308. package/dist/vue2/lib/rich-text-editor.js.map +1 -1
  309. package/dist/vue2/lib/root-layout.cjs +33 -15
  310. package/dist/vue2/lib/root-layout.cjs.map +1 -1
  311. package/dist/vue2/lib/root-layout.js +33 -15
  312. package/dist/vue2/lib/root-layout.js.map +1 -1
  313. package/dist/vue2/lib/scrollbar-directive.cjs.map +1 -1
  314. package/dist/vue2/lib/scrollbar-directive.js.map +1 -1
  315. package/dist/vue2/lib/select-menu.cjs +52 -33
  316. package/dist/vue2/lib/select-menu.cjs.map +1 -1
  317. package/dist/vue2/lib/select-menu.js +52 -33
  318. package/dist/vue2/lib/select-menu.js.map +1 -1
  319. package/dist/vue2/lib/settings-menu-button.cjs +42 -16
  320. package/dist/vue2/lib/settings-menu-button.cjs.map +1 -1
  321. package/dist/vue2/lib/settings-menu-button.js +42 -16
  322. package/dist/vue2/lib/settings-menu-button.js.map +1 -1
  323. package/dist/vue2/lib/skeleton.cjs +118 -93
  324. package/dist/vue2/lib/skeleton.cjs.map +1 -1
  325. package/dist/vue2/lib/skeleton.js +118 -93
  326. package/dist/vue2/lib/skeleton.js.map +1 -1
  327. package/dist/vue2/lib/split-button.cjs +164 -64
  328. package/dist/vue2/lib/split-button.cjs.map +1 -1
  329. package/dist/vue2/lib/split-button.js +164 -64
  330. package/dist/vue2/lib/split-button.js.map +1 -1
  331. package/dist/vue2/lib/stack.cjs +21 -33
  332. package/dist/vue2/lib/stack.cjs.map +1 -1
  333. package/dist/vue2/lib/stack.js +21 -33
  334. package/dist/vue2/lib/stack.js.map +1 -1
  335. package/dist/vue2/lib/tabs.cjs +20 -13
  336. package/dist/vue2/lib/tabs.cjs.map +1 -1
  337. package/dist/vue2/lib/tabs.js +20 -13
  338. package/dist/vue2/lib/tabs.js.map +1 -1
  339. package/dist/vue2/lib/time-pill.cjs +8 -11
  340. package/dist/vue2/lib/time-pill.cjs.map +1 -1
  341. package/dist/vue2/lib/time-pill.js +8 -11
  342. package/dist/vue2/lib/time-pill.js.map +1 -1
  343. package/dist/vue2/lib/toast.cjs +42 -21
  344. package/dist/vue2/lib/toast.cjs.map +1 -1
  345. package/dist/vue2/lib/toast.js +42 -21
  346. package/dist/vue2/lib/toast.js.map +1 -1
  347. package/dist/vue2/lib/toggle.cjs +28 -24
  348. package/dist/vue2/lib/toggle.cjs.map +1 -1
  349. package/dist/vue2/lib/toggle.js +28 -24
  350. package/dist/vue2/lib/toggle.js.map +1 -1
  351. package/dist/vue2/lib/tooltip-directive.cjs +32 -26
  352. package/dist/vue2/lib/tooltip-directive.cjs.map +1 -1
  353. package/dist/vue2/lib/tooltip-directive.js +32 -26
  354. package/dist/vue2/lib/tooltip-directive.js.map +1 -1
  355. package/dist/vue2/lib/tooltip.cjs +31 -21
  356. package/dist/vue2/lib/tooltip.cjs.map +1 -1
  357. package/dist/vue2/lib/tooltip.js +32 -22
  358. package/dist/vue2/lib/tooltip.js.map +1 -1
  359. package/dist/vue2/lib/top-banner-info.cjs +18 -21
  360. package/dist/vue2/lib/top-banner-info.cjs.map +1 -1
  361. package/dist/vue2/lib/top-banner-info.js +18 -21
  362. package/dist/vue2/lib/top-banner-info.js.map +1 -1
  363. package/dist/vue2/lib/unread-pill.cjs +18 -12
  364. package/dist/vue2/lib/unread-pill.cjs.map +1 -1
  365. package/dist/vue2/lib/unread-pill.js +18 -12
  366. package/dist/vue2/lib/unread-pill.js.map +1 -1
  367. package/dist/vue2/lib/validation-messages.cjs +23 -16
  368. package/dist/vue2/lib/validation-messages.cjs.map +1 -1
  369. package/dist/vue2/lib/validation-messages.js +23 -16
  370. package/dist/vue2/lib/validation-messages.js.map +1 -1
  371. package/dist/vue2/types/common/emoji/index.d.ts +2 -59236
  372. package/dist/vue2/types/common/emoji/index.d.ts.map +1 -1
  373. package/dist/vue2/types/components/button/button.vue.d.ts +1 -1
  374. package/dist/vue2/types/components/chip/chip.vue.d.ts +1 -1
  375. package/dist/vue2/types/components/combobox/combobox.vue.d.ts +1 -1
  376. package/dist/vue2/types/components/icon/icon.vue.d.ts +2 -2
  377. package/dist/vue2/types/components/icon/icon_constants.d.ts +1 -1
  378. package/dist/vue2/types/components/icon/icon_constants.d.ts.map +1 -1
  379. package/dist/vue2/types/components/illustration/illustration.vue.d.ts +2 -2
  380. package/dist/vue2/types/components/illustration/illustration_constants.d.ts +1 -1
  381. package/dist/vue2/types/components/illustration/illustration_constants.d.ts.map +1 -1
  382. package/dist/vue2/types/components/image_viewer/image_viewer.vue.d.ts +21 -0
  383. package/dist/vue2/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
  384. package/dist/vue2/types/components/input/input.vue.d.ts +1 -1
  385. package/dist/vue2/types/components/modal/modal.vue.d.ts +1 -1
  386. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts +1 -1
  387. package/dist/vue2/types/components/split_button/split_button-alpha.vue.d.ts +1 -1
  388. package/dist/vue2/types/components/toast/toast.vue.d.ts +1 -1
  389. package/dist/vue2/types/components/tooltip/tooltip.vue.d.ts +1 -1
  390. package/dist/vue2/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +1 -1
  391. package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts +1 -1
  392. package/dist/vue2/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +1 -1
  393. package/dist/vue3/chunks/{dropdown-oA-_Gotg.js → dropdown-6HXkh24e.js} +40 -45
  394. package/dist/vue3/chunks/{dropdown-p-Azgwov.js.map → dropdown-6HXkh24e.js.map} +1 -1
  395. package/dist/vue3/chunks/{dropdown-p-Azgwov.js → dropdown-QNvAb160.js} +40 -45
  396. package/dist/vue3/chunks/{dropdown-oA-_Gotg.js.map → dropdown-QNvAb160.js.map} +1 -1
  397. package/dist/vue3/chunks/dropdown_constants-2pGCXy7m.js.map +1 -1
  398. package/dist/vue3/chunks/dropdown_constants-w1MXGC3Z.js.map +1 -1
  399. package/dist/vue3/chunks/{icon_constants-QYpmdE0R.js → icon_constants-bvhFNOPu.js} +3 -2
  400. package/dist/vue3/chunks/icon_constants-bvhFNOPu.js.map +1 -0
  401. package/dist/vue3/chunks/{icon_constants-Dy4MEUJL.js → icon_constants-gIQj4mf7.js} +3 -2
  402. package/dist/vue3/chunks/icon_constants-gIQj4mf7.js.map +1 -0
  403. package/dist/vue3/chunks/{index-b_MgDylR.js → index-T15rAIdX.js} +71 -84
  404. package/dist/vue3/chunks/{index-b_MgDylR.js.map → index-T15rAIdX.js.map} +1 -1
  405. package/dist/vue3/chunks/{index-GVD15GIB.js → index-dfdrE-3M.js} +3 -12
  406. package/dist/vue3/chunks/{index-GVD15GIB.js.map → index-dfdrE-3M.js.map} +1 -1
  407. package/dist/vue3/chunks/{index-lu2o2f4r.js → index-fEp0B-5Z.js} +3 -12
  408. package/dist/vue3/chunks/{index-lu2o2f4r.js.map → index-fEp0B-5Z.js.map} +1 -1
  409. package/dist/vue3/chunks/{index-4qgKeErp.js → index-ouh7Bvm-.js} +71 -84
  410. package/dist/vue3/chunks/{index-4qgKeErp.js.map → index-ouh7Bvm-.js.map} +1 -1
  411. package/dist/vue3/chunks/{input-NmYDD5bn.js → input-HIysg24t.js} +3 -9
  412. package/dist/vue3/chunks/{input-NmYDD5bn.js.map → input-HIysg24t.js.map} +1 -1
  413. package/dist/vue3/chunks/{input-ttnte8zB.js → input-dLLo3Wtg.js} +3 -9
  414. package/dist/vue3/chunks/{input-ttnte8zB.js.map → input-dLLo3Wtg.js.map} +1 -1
  415. package/dist/vue3/chunks/{input_group-jWnq2DJT.js → input_group-hV1WT2it.js} +4 -2
  416. package/dist/vue3/chunks/{input_group-jWnq2DJT.js.map → input_group-hV1WT2it.js.map} +1 -1
  417. package/dist/vue3/chunks/{input_group-M-D25pOJ.js → input_group-rE6nhye8.js} +4 -2
  418. package/dist/vue3/chunks/{input_group-M-D25pOJ.js.map → input_group-rE6nhye8.js.map} +1 -1
  419. package/dist/vue3/chunks/{keyboard_list_navigation-ScXhrxya.js → keyboard_list_navigation-YIqTuw1W.js} +6 -5
  420. package/dist/vue3/chunks/{keyboard_list_navigation-fJnl_Iox.js.map → keyboard_list_navigation-YIqTuw1W.js.map} +1 -1
  421. package/dist/vue3/chunks/{keyboard_list_navigation-fJnl_Iox.js → keyboard_list_navigation-x3D6RcC7.js} +6 -5
  422. package/dist/vue3/chunks/{keyboard_list_navigation-ScXhrxya.js.map → keyboard_list_navigation-x3D6RcC7.js.map} +1 -1
  423. package/dist/vue3/chunks/link_constants-AfTWrr-n.js.map +1 -1
  424. package/dist/vue3/chunks/link_constants-x8NwdqmA.js.map +1 -1
  425. package/dist/vue3/chunks/list_item_constants-EiqkqZvP.js.map +1 -1
  426. package/dist/vue3/chunks/list_item_constants-u1xcN9Dd.js.map +1 -1
  427. package/dist/vue3/chunks/{modal-XOr4kiNZ.js → modal-8X6poIZW.js} +4 -2
  428. package/dist/vue3/chunks/{modal-VgxXAQFP.js.map → modal-8X6poIZW.js.map} +1 -1
  429. package/dist/vue3/chunks/{modal-VgxXAQFP.js → modal-OaWxzqNt.js} +4 -2
  430. package/dist/{vue2/chunks/modal-XOr4kiNZ.js.map → vue3/chunks/modal-OaWxzqNt.js.map} +1 -1
  431. package/dist/vue3/chunks/{notice_action-WTucGhvr.js → notice_action-3ed0uIMN.js} +40 -61
  432. package/dist/vue3/chunks/{notice_action-p-ePanW_.js.map → notice_action-3ed0uIMN.js.map} +1 -1
  433. package/dist/vue3/chunks/{notice_action-p-ePanW_.js → notice_action-e08Lw5W6.js} +40 -61
  434. package/dist/vue3/chunks/{notice_action-WTucGhvr.js.map → notice_action-e08Lw5W6.js.map} +1 -1
  435. package/dist/vue3/chunks/notice_constants-7Qt2CQEY.js.map +1 -1
  436. package/dist/vue3/chunks/notice_constants-UXo9e3bS.js.map +1 -1
  437. package/dist/vue3/chunks/{popover_constants-WsOUIY-m.js → popover_constants-6YkPPbnk.js} +26 -47
  438. package/dist/{vue2/chunks/popover_constants-XnGWXaxX.js.map → vue3/chunks/popover_constants-6YkPPbnk.js.map} +1 -1
  439. package/dist/vue3/chunks/{popover_constants-XnGWXaxX.js → popover_constants-h9MD6WUt.js} +26 -47
  440. package/dist/vue3/chunks/{popover_constants-XnGWXaxX.js.map → popover_constants-h9MD6WUt.js.map} +1 -1
  441. package/dist/vue3/chunks/{sr_only_close_button-3EdsV-dH.js → sr_only_close_button-Ji3Zlts6.js} +4 -4
  442. package/dist/vue3/chunks/{sr_only_close_button-3EdsV-dH.js.map → sr_only_close_button-Ji3Zlts6.js.map} +1 -1
  443. package/dist/vue3/chunks/{sr_only_close_button-xGrHFjwA.js → sr_only_close_button-gKr0Vlbz.js} +4 -4
  444. package/dist/vue3/chunks/{sr_only_close_button-xGrHFjwA.js.map → sr_only_close_button-gKr0Vlbz.js.map} +1 -1
  445. package/dist/vue3/chunks/stack_constants-HraCekPm.js.map +1 -1
  446. package/dist/vue3/chunks/stack_constants-SMzMWnAQ.js.map +1 -1
  447. package/dist/vue3/chunks/{tab-qc3f42Yp.js → tab-X7IvNGTl.js} +46 -49
  448. package/dist/vue3/chunks/{tab-qc3f42Yp.js.map → tab-X7IvNGTl.js.map} +1 -1
  449. package/dist/vue3/chunks/{tab-RTDgnD9-.js → tab-aD6t0MNo.js} +46 -49
  450. package/dist/vue3/chunks/{tab-RTDgnD9-.js.map → tab-aD6t0MNo.js.map} +1 -1
  451. package/dist/vue3/common/constants.cjs.map +1 -1
  452. package/dist/vue3/common/constants.js.map +1 -1
  453. package/dist/vue3/common/dates.cjs +3 -1
  454. package/dist/vue3/common/dates.cjs.map +1 -1
  455. package/dist/vue3/common/dates.js +3 -1
  456. package/dist/vue3/common/dates.js.map +1 -1
  457. package/dist/vue3/common/emoji.cjs +1 -1
  458. package/dist/vue3/common/emoji.js +1 -1
  459. package/dist/vue3/common/mixins.cjs +3 -3
  460. package/dist/vue3/common/mixins.js +3 -3
  461. package/dist/vue3/common/utils.cjs +11 -45
  462. package/dist/vue3/common/utils.cjs.map +1 -1
  463. package/dist/vue3/common/utils.js +11 -45
  464. package/dist/vue3/common/utils.js.map +1 -1
  465. package/dist/vue3/common/validators.cjs.map +1 -1
  466. package/dist/vue3/common/validators.js.map +1 -1
  467. package/dist/vue3/component-documentation.json +1 -1
  468. package/dist/vue3/dialtone-vue.cjs +12 -12
  469. package/dist/vue3/dialtone-vue.js +12 -12
  470. package/dist/vue3/lib/attachment-carousel.cjs +87 -108
  471. package/dist/vue3/lib/attachment-carousel.cjs.map +1 -1
  472. package/dist/vue3/lib/attachment-carousel.js +87 -108
  473. package/dist/vue3/lib/attachment-carousel.js.map +1 -1
  474. package/dist/vue3/lib/avatar.cjs +56 -88
  475. package/dist/vue3/lib/avatar.cjs.map +1 -1
  476. package/dist/vue3/lib/avatar.js +56 -88
  477. package/dist/vue3/lib/avatar.js.map +1 -1
  478. package/dist/vue3/lib/badge.cjs +15 -31
  479. package/dist/vue3/lib/badge.cjs.map +1 -1
  480. package/dist/vue3/lib/badge.js +15 -31
  481. package/dist/vue3/lib/badge.js.map +1 -1
  482. package/dist/vue3/lib/banner.cjs +38 -56
  483. package/dist/vue3/lib/banner.cjs.map +1 -1
  484. package/dist/vue3/lib/banner.js +38 -56
  485. package/dist/vue3/lib/banner.js.map +1 -1
  486. package/dist/vue3/lib/breadcrumbs.cjs +25 -36
  487. package/dist/vue3/lib/breadcrumbs.cjs.map +1 -1
  488. package/dist/vue3/lib/breadcrumbs.js +25 -36
  489. package/dist/vue3/lib/breadcrumbs.js.map +1 -1
  490. package/dist/vue3/lib/button-group.cjs +2 -7
  491. package/dist/vue3/lib/button-group.cjs.map +1 -1
  492. package/dist/vue3/lib/button-group.js +2 -7
  493. package/dist/vue3/lib/button-group.js.map +1 -1
  494. package/dist/vue3/lib/button.cjs +44 -69
  495. package/dist/vue3/lib/button.cjs.map +1 -1
  496. package/dist/vue3/lib/button.js +44 -69
  497. package/dist/vue3/lib/button.js.map +1 -1
  498. package/dist/vue3/lib/callbar-button-with-popover.cjs +68 -81
  499. package/dist/vue3/lib/callbar-button-with-popover.cjs.map +1 -1
  500. package/dist/vue3/lib/callbar-button-with-popover.js +68 -81
  501. package/dist/vue3/lib/callbar-button-with-popover.js.map +1 -1
  502. package/dist/vue3/lib/callbar-button.cjs +32 -45
  503. package/dist/vue3/lib/callbar-button.cjs.map +1 -1
  504. package/dist/vue3/lib/callbar-button.js +32 -45
  505. package/dist/vue3/lib/callbar-button.js.map +1 -1
  506. package/dist/vue3/lib/callbox.cjs +38 -57
  507. package/dist/vue3/lib/callbox.cjs.map +1 -1
  508. package/dist/vue3/lib/callbox.js +38 -57
  509. package/dist/vue3/lib/callbox.js.map +1 -1
  510. package/dist/vue3/lib/card.cjs +13 -33
  511. package/dist/vue3/lib/card.cjs.map +1 -1
  512. package/dist/vue3/lib/card.js +13 -33
  513. package/dist/vue3/lib/card.js.map +1 -1
  514. package/dist/vue3/lib/checkbox-group.cjs +2 -5
  515. package/dist/vue3/lib/checkbox-group.cjs.map +1 -1
  516. package/dist/vue3/lib/checkbox-group.js +2 -5
  517. package/dist/vue3/lib/checkbox-group.js.map +1 -1
  518. package/dist/vue3/lib/checkbox.cjs +41 -45
  519. package/dist/vue3/lib/checkbox.cjs.map +1 -1
  520. package/dist/vue3/lib/checkbox.js +41 -45
  521. package/dist/vue3/lib/checkbox.js.map +1 -1
  522. package/dist/vue3/lib/chip.cjs +38 -53
  523. package/dist/vue3/lib/chip.cjs.map +1 -1
  524. package/dist/vue3/lib/chip.js +38 -53
  525. package/dist/vue3/lib/chip.js.map +1 -1
  526. package/dist/vue3/lib/codeblock.cjs +4 -6
  527. package/dist/vue3/lib/codeblock.cjs.map +1 -1
  528. package/dist/vue3/lib/codeblock.js +4 -6
  529. package/dist/vue3/lib/codeblock.js.map +1 -1
  530. package/dist/vue3/lib/collapsible.cjs +62 -76
  531. package/dist/vue3/lib/collapsible.cjs.map +1 -1
  532. package/dist/vue3/lib/collapsible.js +62 -76
  533. package/dist/vue3/lib/collapsible.js.map +1 -1
  534. package/dist/vue3/lib/combobox-multi-select.cjs +75 -88
  535. package/dist/vue3/lib/combobox-multi-select.cjs.map +1 -1
  536. package/dist/vue3/lib/combobox-multi-select.js +75 -88
  537. package/dist/vue3/lib/combobox-multi-select.js.map +1 -1
  538. package/dist/vue3/lib/combobox-with-popover.cjs +77 -85
  539. package/dist/vue3/lib/combobox-with-popover.cjs.map +1 -1
  540. package/dist/vue3/lib/combobox-with-popover.js +77 -85
  541. package/dist/vue3/lib/combobox-with-popover.js.map +1 -1
  542. package/dist/vue3/lib/combobox.cjs +3 -3
  543. package/dist/vue3/lib/combobox.js +3 -3
  544. package/dist/vue3/lib/contact-centers-row.cjs +65 -89
  545. package/dist/vue3/lib/contact-centers-row.cjs.map +1 -1
  546. package/dist/vue3/lib/contact-centers-row.js +65 -89
  547. package/dist/vue3/lib/contact-centers-row.js.map +1 -1
  548. package/dist/vue3/lib/contact-info.cjs +58 -73
  549. package/dist/vue3/lib/contact-info.cjs.map +1 -1
  550. package/dist/vue3/lib/contact-info.js +58 -73
  551. package/dist/vue3/lib/contact-info.js.map +1 -1
  552. package/dist/vue3/lib/contact-row.cjs +37 -47
  553. package/dist/vue3/lib/contact-row.cjs.map +1 -1
  554. package/dist/vue3/lib/contact-row.js +37 -47
  555. package/dist/vue3/lib/contact-row.js.map +1 -1
  556. package/dist/vue3/lib/datepicker.cjs +267 -263
  557. package/dist/vue3/lib/datepicker.cjs.map +1 -1
  558. package/dist/vue3/lib/datepicker.js +267 -263
  559. package/dist/vue3/lib/datepicker.js.map +1 -1
  560. package/dist/vue3/lib/description-list.cjs +9 -14
  561. package/dist/vue3/lib/description-list.cjs.map +1 -1
  562. package/dist/vue3/lib/description-list.js +9 -14
  563. package/dist/vue3/lib/description-list.js.map +1 -1
  564. package/dist/vue3/lib/dropdown.cjs +6 -6
  565. package/dist/vue3/lib/dropdown.cjs.map +1 -1
  566. package/dist/vue3/lib/dropdown.js +6 -6
  567. package/dist/vue3/lib/dropdown.js.map +1 -1
  568. package/dist/vue3/lib/editor.cjs +312 -249
  569. package/dist/vue3/lib/editor.cjs.map +1 -1
  570. package/dist/vue3/lib/editor.js +312 -249
  571. package/dist/vue3/lib/editor.js.map +1 -1
  572. package/dist/vue3/lib/emoji-picker.cjs +387 -419
  573. package/dist/vue3/lib/emoji-picker.cjs.map +1 -1
  574. package/dist/vue3/lib/emoji-picker.js +387 -419
  575. package/dist/vue3/lib/emoji-picker.js.map +1 -1
  576. package/dist/vue3/lib/emoji-row.cjs +59 -69
  577. package/dist/vue3/lib/emoji-row.cjs.map +1 -1
  578. package/dist/vue3/lib/emoji-row.js +59 -69
  579. package/dist/vue3/lib/emoji-row.js.map +1 -1
  580. package/dist/vue3/lib/emoji-text-wrapper.cjs +13 -12
  581. package/dist/vue3/lib/emoji-text-wrapper.cjs.map +1 -1
  582. package/dist/vue3/lib/emoji-text-wrapper.js +13 -12
  583. package/dist/vue3/lib/emoji-text-wrapper.js.map +1 -1
  584. package/dist/vue3/lib/emoji.cjs +19 -23
  585. package/dist/vue3/lib/emoji.cjs.map +1 -1
  586. package/dist/vue3/lib/emoji.js +19 -23
  587. package/dist/vue3/lib/emoji.js.map +1 -1
  588. package/dist/vue3/lib/empty-state.cjs +20 -30
  589. package/dist/vue3/lib/empty-state.cjs.map +1 -1
  590. package/dist/vue3/lib/empty-state.js +20 -30
  591. package/dist/vue3/lib/empty-state.js.map +1 -1
  592. package/dist/vue3/lib/feed-item-row.cjs +43 -74
  593. package/dist/vue3/lib/feed-item-row.cjs.map +1 -1
  594. package/dist/vue3/lib/feed-item-row.js +43 -74
  595. package/dist/vue3/lib/feed-item-row.js.map +1 -1
  596. package/dist/vue3/lib/feed-pill.cjs +45 -55
  597. package/dist/vue3/lib/feed-pill.cjs.map +1 -1
  598. package/dist/vue3/lib/feed-pill.js +45 -55
  599. package/dist/vue3/lib/feed-pill.js.map +1 -1
  600. package/dist/vue3/lib/general-row.cjs +115 -165
  601. package/dist/vue3/lib/general-row.cjs.map +1 -1
  602. package/dist/vue3/lib/general-row.js +115 -165
  603. package/dist/vue3/lib/general-row.js.map +1 -1
  604. package/dist/vue3/lib/group-row.cjs +7 -9
  605. package/dist/vue3/lib/group-row.cjs.map +1 -1
  606. package/dist/vue3/lib/group-row.js +7 -9
  607. package/dist/vue3/lib/group-row.js.map +1 -1
  608. package/dist/vue3/lib/grouped-chip.cjs +27 -48
  609. package/dist/vue3/lib/grouped-chip.cjs.map +1 -1
  610. package/dist/vue3/lib/grouped-chip.js +27 -48
  611. package/dist/vue3/lib/grouped-chip.js.map +1 -1
  612. package/dist/vue3/lib/hovercard.cjs +25 -33
  613. package/dist/vue3/lib/hovercard.cjs.map +1 -1
  614. package/dist/vue3/lib/hovercard.js +25 -33
  615. package/dist/vue3/lib/hovercard.js.map +1 -1
  616. package/dist/vue3/lib/icon.cjs +1 -1
  617. package/dist/vue3/lib/icon.cjs.map +1 -1
  618. package/dist/vue3/lib/icon.js +1 -1
  619. package/dist/vue3/lib/icon.js.map +1 -1
  620. package/dist/vue3/lib/illustration.cjs +2 -1
  621. package/dist/vue3/lib/illustration.cjs.map +1 -1
  622. package/dist/vue3/lib/illustration.js +2 -1
  623. package/dist/vue3/lib/illustration.js.map +1 -1
  624. package/dist/vue3/lib/image-viewer.cjs +62 -66
  625. package/dist/vue3/lib/image-viewer.cjs.map +1 -1
  626. package/dist/vue3/lib/image-viewer.js +62 -66
  627. package/dist/vue3/lib/image-viewer.js.map +1 -1
  628. package/dist/vue3/lib/input-group.cjs +15 -19
  629. package/dist/vue3/lib/input-group.cjs.map +1 -1
  630. package/dist/vue3/lib/input-group.js +15 -19
  631. package/dist/vue3/lib/input-group.js.map +1 -1
  632. package/dist/vue3/lib/input.cjs +76 -104
  633. package/dist/vue3/lib/input.cjs.map +1 -1
  634. package/dist/vue3/lib/input.js +76 -104
  635. package/dist/vue3/lib/input.js.map +1 -1
  636. package/dist/vue3/lib/item-layout.cjs +10 -27
  637. package/dist/vue3/lib/item-layout.cjs.map +1 -1
  638. package/dist/vue3/lib/item-layout.js +10 -27
  639. package/dist/vue3/lib/item-layout.js.map +1 -1
  640. package/dist/vue3/lib/ivr-node.cjs +80 -89
  641. package/dist/vue3/lib/ivr-node.cjs.map +1 -1
  642. package/dist/vue3/lib/ivr-node.js +80 -89
  643. package/dist/vue3/lib/ivr-node.js.map +1 -1
  644. package/dist/vue3/lib/keyboard-shortcut.cjs +26 -31
  645. package/dist/vue3/lib/keyboard-shortcut.cjs.map +1 -1
  646. package/dist/vue3/lib/keyboard-shortcut.js +26 -31
  647. package/dist/vue3/lib/keyboard-shortcut.js.map +1 -1
  648. package/dist/vue3/lib/lazy-show.cjs +6 -8
  649. package/dist/vue3/lib/lazy-show.cjs.map +1 -1
  650. package/dist/vue3/lib/lazy-show.js +6 -8
  651. package/dist/vue3/lib/lazy-show.js.map +1 -1
  652. package/dist/vue3/lib/link.cjs +2 -7
  653. package/dist/vue3/lib/link.cjs.map +1 -1
  654. package/dist/vue3/lib/link.js +2 -7
  655. package/dist/vue3/lib/link.js.map +1 -1
  656. package/dist/vue3/lib/list-item-group.cjs +7 -14
  657. package/dist/vue3/lib/list-item-group.cjs.map +1 -1
  658. package/dist/vue3/lib/list-item-group.js +7 -14
  659. package/dist/vue3/lib/list-item-group.js.map +1 -1
  660. package/dist/vue3/lib/list-item.cjs +24 -25
  661. package/dist/vue3/lib/list-item.cjs.map +1 -1
  662. package/dist/vue3/lib/list-item.js +24 -25
  663. package/dist/vue3/lib/list-item.js.map +1 -1
  664. package/dist/vue3/lib/message-input.cjs +227 -264
  665. package/dist/vue3/lib/message-input.cjs.map +1 -1
  666. package/dist/vue3/lib/message-input.js +227 -264
  667. package/dist/vue3/lib/message-input.js.map +1 -1
  668. package/dist/vue3/lib/modal.cjs +59 -99
  669. package/dist/vue3/lib/modal.cjs.map +1 -1
  670. package/dist/vue3/lib/modal.js +59 -99
  671. package/dist/vue3/lib/modal.js.map +1 -1
  672. package/dist/vue3/lib/notice.cjs +33 -46
  673. package/dist/vue3/lib/notice.cjs.map +1 -1
  674. package/dist/vue3/lib/notice.js +33 -46
  675. package/dist/vue3/lib/notice.js.map +1 -1
  676. package/dist/vue3/lib/pagination.cjs +49 -61
  677. package/dist/vue3/lib/pagination.cjs.map +1 -1
  678. package/dist/vue3/lib/pagination.js +49 -61
  679. package/dist/vue3/lib/pagination.js.map +1 -1
  680. package/dist/vue3/lib/popover.cjs +133 -156
  681. package/dist/vue3/lib/popover.cjs.map +1 -1
  682. package/dist/vue3/lib/popover.js +134 -157
  683. package/dist/vue3/lib/popover.js.map +1 -1
  684. package/dist/vue3/lib/presence.cjs +9 -17
  685. package/dist/vue3/lib/presence.cjs.map +1 -1
  686. package/dist/vue3/lib/presence.js +9 -17
  687. package/dist/vue3/lib/presence.js.map +1 -1
  688. package/dist/vue3/lib/radio-group.cjs +1 -1
  689. package/dist/vue3/lib/radio-group.cjs.map +1 -1
  690. package/dist/vue3/lib/radio-group.js +1 -1
  691. package/dist/vue3/lib/radio-group.js.map +1 -1
  692. package/dist/vue3/lib/radio.cjs +34 -41
  693. package/dist/vue3/lib/radio.cjs.map +1 -1
  694. package/dist/vue3/lib/radio.js +34 -41
  695. package/dist/vue3/lib/radio.js.map +1 -1
  696. package/dist/vue3/lib/rich-text-editor.cjs +292 -288
  697. package/dist/vue3/lib/rich-text-editor.cjs.map +1 -1
  698. package/dist/vue3/lib/rich-text-editor.js +292 -288
  699. package/dist/vue3/lib/rich-text-editor.js.map +1 -1
  700. package/dist/vue3/lib/root-layout.cjs +24 -39
  701. package/dist/vue3/lib/root-layout.cjs.map +1 -1
  702. package/dist/vue3/lib/root-layout.js +24 -39
  703. package/dist/vue3/lib/root-layout.js.map +1 -1
  704. package/dist/vue3/lib/scrollbar-directive.cjs.map +1 -1
  705. package/dist/vue3/lib/scrollbar-directive.js.map +1 -1
  706. package/dist/vue3/lib/scroller.cjs +100 -83
  707. package/dist/vue3/lib/scroller.cjs.map +1 -1
  708. package/dist/vue3/lib/scroller.js +100 -83
  709. package/dist/vue3/lib/scroller.js.map +1 -1
  710. package/dist/vue3/lib/select-menu.cjs +40 -67
  711. package/dist/vue3/lib/select-menu.cjs.map +1 -1
  712. package/dist/vue3/lib/select-menu.js +40 -67
  713. package/dist/vue3/lib/select-menu.js.map +1 -1
  714. package/dist/vue3/lib/settings-menu-button.cjs +10 -16
  715. package/dist/vue3/lib/settings-menu-button.cjs.map +1 -1
  716. package/dist/vue3/lib/settings-menu-button.js +10 -16
  717. package/dist/vue3/lib/settings-menu-button.js.map +1 -1
  718. package/dist/vue3/lib/skeleton.cjs +74 -93
  719. package/dist/vue3/lib/skeleton.cjs.map +1 -1
  720. package/dist/vue3/lib/skeleton.js +74 -93
  721. package/dist/vue3/lib/skeleton.js.map +1 -1
  722. package/dist/vue3/lib/split-button.cjs +68 -74
  723. package/dist/vue3/lib/split-button.cjs.map +1 -1
  724. package/dist/vue3/lib/split-button.js +68 -74
  725. package/dist/vue3/lib/split-button.js.map +1 -1
  726. package/dist/vue3/lib/stack.cjs +18 -26
  727. package/dist/vue3/lib/stack.cjs.map +1 -1
  728. package/dist/vue3/lib/stack.js +18 -26
  729. package/dist/vue3/lib/stack.js.map +1 -1
  730. package/dist/vue3/lib/tabs.cjs +3 -7
  731. package/dist/vue3/lib/tabs.cjs.map +1 -1
  732. package/dist/vue3/lib/tabs.js +3 -7
  733. package/dist/vue3/lib/tabs.js.map +1 -1
  734. package/dist/vue3/lib/time-pill.cjs.map +1 -1
  735. package/dist/vue3/lib/time-pill.js.map +1 -1
  736. package/dist/vue3/lib/toast.cjs +35 -51
  737. package/dist/vue3/lib/toast.cjs.map +1 -1
  738. package/dist/vue3/lib/toast.js +35 -51
  739. package/dist/vue3/lib/toast.js.map +1 -1
  740. package/dist/vue3/lib/toggle.cjs +24 -34
  741. package/dist/vue3/lib/toggle.cjs.map +1 -1
  742. package/dist/vue3/lib/toggle.js +24 -34
  743. package/dist/vue3/lib/toggle.js.map +1 -1
  744. package/dist/vue3/lib/tooltip-directive.cjs +26 -19
  745. package/dist/vue3/lib/tooltip-directive.cjs.map +1 -1
  746. package/dist/vue3/lib/tooltip-directive.js +26 -19
  747. package/dist/vue3/lib/tooltip-directive.js.map +1 -1
  748. package/dist/vue3/lib/tooltip.cjs +21 -32
  749. package/dist/vue3/lib/tooltip.cjs.map +1 -1
  750. package/dist/vue3/lib/tooltip.js +22 -33
  751. package/dist/vue3/lib/tooltip.js.map +1 -1
  752. package/dist/vue3/lib/top-banner-info.cjs +8 -23
  753. package/dist/vue3/lib/top-banner-info.cjs.map +1 -1
  754. package/dist/vue3/lib/top-banner-info.js +8 -23
  755. package/dist/vue3/lib/top-banner-info.js.map +1 -1
  756. package/dist/vue3/lib/unread-pill.cjs +8 -11
  757. package/dist/vue3/lib/unread-pill.cjs.map +1 -1
  758. package/dist/vue3/lib/unread-pill.js +8 -11
  759. package/dist/vue3/lib/unread-pill.js.map +1 -1
  760. package/dist/vue3/lib/validation-messages.cjs +14 -17
  761. package/dist/vue3/lib/validation-messages.cjs.map +1 -1
  762. package/dist/vue3/lib/validation-messages.js +14 -17
  763. package/dist/vue3/lib/validation-messages.js.map +1 -1
  764. package/dist/vue3/types/components/button/button.vue.d.ts +1 -1
  765. package/dist/vue3/types/components/chip/chip.vue.d.ts +1 -1
  766. package/dist/vue3/types/components/combobox/combobox.vue.d.ts +1 -1
  767. package/dist/vue3/types/components/datepicker/modules/month-year-picker.vue.d.ts +1 -1
  768. package/dist/vue3/types/components/icon/icon.vue.d.ts +2 -2
  769. package/dist/vue3/types/components/icon/icon_constants.d.ts +1 -1
  770. package/dist/vue3/types/components/icon/icon_constants.d.ts.map +1 -1
  771. package/dist/vue3/types/components/illustration/illustration_constants.d.ts +1 -1
  772. package/dist/vue3/types/components/illustration/illustration_constants.d.ts.map +1 -1
  773. package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts +21 -0
  774. package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
  775. package/dist/vue3/types/components/input/input.vue.d.ts +1 -1
  776. package/dist/vue3/types/components/modal/modal.vue.d.ts +1 -1
  777. package/dist/vue3/types/components/notice/notice.vue.d.ts +1 -1
  778. package/dist/vue3/types/components/radio/radio.vue.d.ts +1 -1
  779. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts +1 -1
  780. package/dist/vue3/types/components/scroller/modules/scroller_item.vue.d.ts +1 -1
  781. package/dist/vue3/types/components/split_button/split_button-alpha.vue.d.ts +1 -1
  782. package/dist/vue3/types/components/tabs/tab.vue.d.ts +1 -1
  783. package/dist/vue3/types/components/toast/toast.vue.d.ts +2 -2
  784. package/dist/vue3/types/components/tooltip/tooltip.vue.d.ts +1 -1
  785. package/dist/vue3/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +1 -1
  786. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts +1 -1
  787. package/dist/vue3/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +1 -1
  788. package/package.json +3 -3
  789. package/dist/vue2/chunks/icon_constants-Dy4MEUJL.js.map +0 -1
  790. package/dist/vue2/chunks/icon_constants-QYpmdE0R.js.map +0 -1
  791. package/dist/vue3/chunks/icon_constants-Dy4MEUJL.js.map +0 -1
  792. package/dist/vue3/chunks/icon_constants-QYpmdE0R.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"emoji-picker.js","sources":["../../components/emoji_picker/modules/emoji_tabset.vue","../../components/emoji_picker/modules/emoji_search.vue","../../components/emoji_picker/modules/emoji_selector.vue","../../components/emoji_picker/emoji_picker_constants.js","../../components/emoji_picker/modules/emoji_description.vue","../../components/emoji_picker/modules/emoji_skin_selector.vue","../../components/emoji_picker/emoji_picker.vue"],"sourcesContent":["<template>\n <div class=\"d-emoji-picker__tabset\">\n <dt-tab-group\n tab-list-class=\"d-emoji-picker__tabset-list\"\n :selected=\"selectedTab\"\n >\n <template #tabs>\n <dt-tab\n v-for=\"(tab, index) in tabs\"\n :id=\"tab.id\"\n :ref=\"`tabsetRef-${index}`\"\n :key=\"tab.id\"\n :panel-id=\"tab.panelId\"\n :label=\"tab.label\"\n aria-controls=\"d-emoji-picker-list\"\n :tabindex=\"index + 1\"\n @click.capture.stop=\"selectTabset(tab.id)\"\n @keydown=\"handleKeyDown($event, tab.id)\"\n >\n <dt-icon\n size=\"400\"\n :name=\"tab.icon\"\n />\n </dt-tab>\n </template>\n </dt-tab-group>\n </div>\n</template>\n\n<script>\nimport DtTabGroup from '@/components/tabs/tab_group.vue';\nimport DtTab from '@/components/tabs/tab.vue';\nimport DtIcon from '@/components/icon/icon.vue';\nimport { EMOJI_PICKER_CATEGORIES } from '@/components/emoji_picker';\n\nexport default {\n name: 'EmojiTabset',\n\n components: {\n DtTabGroup,\n DtTab,\n DtIcon,\n },\n\n props: {\n showRecentlyUsedTab: {\n type: Boolean,\n default: false,\n },\n\n scrollIntoTab: {\n type: Number,\n required: true,\n },\n\n isScrolling: {\n type: Boolean,\n default: false,\n },\n\n emojiFilter: {\n type: String,\n default: '',\n },\n\n tabSetLabels: {\n type: Array,\n required: true,\n },\n },\n\n data () {\n return {\n selectedTab: '1',\n tabsetRef: [],\n TABS_DATA: [\n { label: EMOJI_PICKER_CATEGORIES.MOST_RECENTLY_USED, icon: 'clock' },\n { label: EMOJI_PICKER_CATEGORIES.SMILEYS_AND_PEOPLE, icon: 'satisfied' },\n { label: EMOJI_PICKER_CATEGORIES.NATURE, icon: 'living-thing' },\n { label: EMOJI_PICKER_CATEGORIES.FOOD, icon: 'food' },\n { label: EMOJI_PICKER_CATEGORIES.ACTIVITY, icon: 'object' },\n { label: EMOJI_PICKER_CATEGORIES.TRAVEL, icon: 'transportation' },\n { label: EMOJI_PICKER_CATEGORIES.OBJECTS, icon: 'lightbulb' },\n { label: EMOJI_PICKER_CATEGORIES.SYMBOLS, icon: 'heart' },\n { label: EMOJI_PICKER_CATEGORIES.FLAGS, icon: 'flag' },\n ],\n };\n },\n\n computed: {\n tabs () {\n const tabsData = this.showRecentlyUsedTab ? this.TABS_DATA : this.TABS_DATA.slice(1);\n return tabsData.map((tab, index) => ({\n ...tab,\n label: this.tabSetLabels[index],\n id: (index + 1).toString(),\n panelId: (index + 1).toString(),\n }));\n },\n\n isSearching () {\n return this.emojiFilter.length > 0;\n },\n },\n\n watch: {\n scrollIntoTab: function (newVal) {\n if (!this.isScrolling && !this.isSearching) {\n this.selectedTab = (newVal + 1).toString();\n }\n },\n\n isSearching: function (newVal) {\n if (newVal) {\n this.selectedTab = null;\n }\n },\n },\n\n mounted () {\n this.$nextTick(() => {\n this.setTabsetRef();\n });\n },\n\n methods: {\n selectTabset (id) {\n if (!this.isScrolling) {\n this.selectedTab = id;\n }\n this.$emit('selected-tabset', id);\n },\n\n setTabsetRef () {\n this.tabs.forEach((skin, index) => {\n const refKey = `tabsetRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.tabsetRef, index, this.$refs[refKey][0].$el);\n }\n });\n },\n\n focusTabset () {\n if (this.tabsetRef[0]) {\n this.tabsetRef[0].focus();\n }\n },\n\n // eslint-disable-next-line complexity\n handleKeyDown (event, tabId) {\n if (event.key === 'Enter') {\n this.selectTabset(tabId);\n if (this.tabsetRef[tabId - 1]) {\n this.tabsetRef[tabId - 1].blur();\n }\n }\n\n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n this.$emit('focus-skin-selector');\n } else {\n this.$emit('focus-search-input');\n }\n }\n\n if (event.key === 'ArrowDown') {\n this.$emit('focus-search-input');\n }\n },\n },\n};\n</script>\n","<template>\n <div class=\"d-emoji-picker__search d-emoji-picker__alignment\">\n <dt-input\n id=\"searchInput\"\n ref=\"searchInputRef\"\n :placeholder=\"searchPlaceholderLabel\"\n :value=\"modelValue\"\n @input=\"updateModelValue\"\n @keydown.up=\"focusTabset\"\n @keydown.down.prevent=\"focusEmojiSelector\"\n @keydown.enter=\"selectFirstEmoji\"\n >\n <template #leftIcon>\n <dt-icon\n name=\"search\"\n size=\"200\"\n />\n </template>\n <template\n v-if=\"modelValue.length > 0\"\n #rightIcon\n >\n <dt-button\n importance=\"clear\"\n kind=\"muted\"\n @click=\"clearSearch\"\n >\n <template #icon>\n <dt-icon\n name=\"x-circle\"\n size=\"200\"\n />\n </template>\n </dt-button>\n </template>\n </dt-input>\n </div>\n</template>\n\n<script>\nimport { DtInput } from '@/components/input';\nimport { DtIcon } from '@/components/icon';\nimport { DtButton } from '@/components/button';\n\nexport default {\n name: 'EmojiSearch',\n\n components: {\n DtInput,\n DtIcon,\n DtButton,\n },\n\n props: {\n searchPlaceholderLabel: {\n type: String,\n required: true,\n },\n\n modelValue: {\n type: String,\n default: '',\n },\n },\n\n mounted () {\n this.focusSearchInput();\n },\n\n methods: {\n updateModelValue (value) {\n this.$emit('update:model-value', value);\n },\n\n focusEmojiSelector () {\n this.$emit('focus-emoji-selector');\n },\n\n focusTabset () {\n this.$emit('focus-tabset');\n },\n\n selectFirstEmoji () {\n this.$emit('select-first-emoji');\n },\n\n clearSearch () {\n this.$emit('update:model-value', '');\n this.focusSearchInput();\n },\n\n focusSearchInput () {\n this.$refs.searchInputRef.focus();\n },\n },\n};\n</script>\n","<template>\n <div\n class=\"d-emoji-picker__selector\"\n >\n <div\n id=\"d-emoji-picker-list\"\n ref=\"listRef\"\n class=\"d-emoji-picker__list\"\n >\n <p\n v-if=\"emojiFilter\"\n class=\"d-emoji-picker__search-label d-emoji-picker__alignment\"\n >\n {{ filteredEmojis.length > 0 ? searchResultsLabel : searchNoResultsLabel }}\n </p>\n <div\n v-else\n ref=\"tabCategoryRef\"\n class=\"d-emoji-picker__category d-emoji-picker__alignment\"\n >\n <p>\n {{ fixedLabel }}\n </p>\n </div>\n <div\n v-for=\"(tabLabel, indexTab) in tabLabels\"\n v-show=\"!emojiFilter\"\n :key=\"indexTab\"\n :ref=\"`tabLabelRef-${indexTab}`\"\n class=\"d-emoji-picker__alignment\"\n >\n <p\n v-if=\"indexTab\"\n >\n {{ tabLabel.label }}\n </p>\n <div\n class=\"d-emoji-picker__tab\"\n >\n <button\n v-for=\"(emoji, indexEmoji) in\n (emojis[tabs[indexTab] + skinTone] ? emojis[tabs[indexTab] + skinTone] : emojis[tabs[indexTab]])\"\n :key=\"emoji.shortname\"\n :ref=\"`emojiRef-${indexTab}`\"\n type=\"button\"\n :aria-label=\"emoji.name\"\n @click=\"$emit('selected-emoji', emoji)\"\n @focusin=\"$emit('highlighted-emoji', emoji)\"\n @focusout=\"$emit('highlighted-emoji', null)\"\n @mouseover=\"$emit('highlighted-emoji', emoji)\"\n @mouseleave=\"$emit('highlighted-emoji', null)\"\n @keydown=\"event => handleKeyDown(event, indexTab, indexEmoji, emoji)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"getImgSrc(emoji.unicode_character)\"\n @error=\"handleImageError\"\n >\n </button>\n </div>\n </div>\n <div\n v-if=\"emojiFilter\"\n class=\"d-emoji-picker__alignment\"\n >\n <div\n class=\"d-emoji-picker__tab \"\n data-qa=\"filtered-emojis\"\n >\n <button\n v-for=\"(emoji, index) in filteredEmojis\"\n :key=\"emoji.shortname\"\n :ref=\"`filteredEmoji-${index}`\"\n type=\"button\"\n :aria-label=\"emoji.name\"\n :class=\"{\n 'hover-emoji': (index === 0 && hoverFirstEmoji),\n }\"\n @click=\"$emit('selected-emoji', emoji)\"\n @focusin=\"$emit('highlighted-emoji', emoji)\"\n @focusout=\"$emit('highlighted-emoji', null)\"\n @mouseover=\"hoverEmoji(emoji)\"\n @mouseleave=\"hoverEmoji(null)\"\n @keydown=\"event => handleKeyDownFilteredEmojis(event, index, emoji)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"`${CDN_URL + emoji.unicode_character}.png`\"\n >\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-len */\n/* eslint-disable max-lines */\nimport { emojisGrouped as emojisImported } from '@dialpad/dialtone-emojis';\nimport { CDN_URL, EMOJIS_PER_ROW } from '@/components/emoji_picker';\n\nexport default {\n name: 'EmojiSelector',\n\n props: {\n emojiFilter: {\n type: String,\n default: '',\n },\n\n skinTone: {\n type: String,\n required: true,\n },\n\n tabSetLabels: {\n type: Array,\n required: true,\n },\n\n selectedTabset: {\n type: Object,\n required: true,\n },\n\n searchResultsLabel: {\n type: String,\n required: true,\n },\n\n searchNoResultsLabel: {\n type: String,\n required: true,\n },\n\n recentlyUsedEmojis: {\n type: Array,\n default: () => [],\n },\n },\n\n data () {\n return {\n emojiRefs: [],\n emojiFilteredRefs: [],\n isFiltering: false,\n hoverFirstEmoji: true,\n fixedLabel: '',\n filteredEmojis: [],\n TABS_DATA: ['Recently used', 'People', 'Nature', 'Food', 'Activity', 'Travel', 'Objects', 'Symbols', 'Flags'],\n tabLabelObserver: null,\n };\n },\n\n computed: {\n /* eslint-disable-next-line complexity */\n currentEmojis () {\n return [\n ...this.emojis[`People${this.skinTone}`] || [],\n ...this.emojis.Nature || [],\n ...this.emojis.Food || [],\n ...this.emojis[`Activity${this.skinTone}`] || [],\n ...this.emojis.Travel || [],\n ...this.emojis[`Objects${this.skinTone}`] || [],\n ...this.emojis.Symbols || [],\n ...this.emojis.Flags || [],\n ];\n },\n\n emojis () {\n return emojisImported;\n },\n\n CDN_URL () {\n return CDN_URL;\n },\n\n tabLabels () {\n return this.recentlyUsedEmojis.length\n ? this.tabSetLabels.map((label, index) => ({ label, ref: this.$refs[`tabLabelRef-${index}`] }))\n : this.tabSetLabels.slice(1).map((label, index) => ({ label, ref: this.$refs[`tabLabelRef-${index}`] }));\n },\n\n tabs () {\n return this.recentlyUsedEmojis.length ? this.TABS_DATA : this.TABS_DATA.slice(1);\n },\n },\n\n watch: {\n currentEmojis: {\n handler () {\n this.searchByNameAndKeywords();\n },\n\n immediate: true,\n },\n\n recentlyUsedEmojis: {\n handler (newValue) {\n this.emojis['Recently used'] = newValue;\n },\n\n immediate: true,\n },\n\n emojiFilter: {\n handler (newFilter) {\n this.resetScroll();\n if (newFilter) {\n this.isFiltering = true;\n } else {\n this.isFiltering = false;\n this.$emit('highlighted-emoji', null);\n }\n\n this.debouncedSearch();\n },\n },\n\n selectedTabset: {\n handler (newValue) {\n this.scrollToTab(newValue.tabId);\n },\n\n deep: true,\n },\n },\n\n created () {\n this.debouncedSearch = this.debounce(this.searchByNameAndKeywords, 300);\n },\n\n mounted () {\n this.$nextTick(() => {\n this.setupEmojiRefs();\n this.setupFilteredRefs();\n this.setupTabLabelRefs();\n this.setTabLabelObserver();\n });\n },\n\n beforeDestroy () {\n if (this.tabLabelObserver) {\n this.tabLabelObserver.disconnect();\n }\n },\n\n methods: {\n setupTabLabelRefs () {\n this.tabSetLabels?.forEach((label, index) => {\n const refKey = `tabLabelRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.tabLabels, index, { label, ref: this.$refs[refKey] });\n }\n });\n },\n\n setupFilteredRefs () {\n // it is necessary to clean the array before setting the new refs\n this.emojiFilteredRefs = [];\n\n this.filteredEmojis.forEach((emoji, index) => {\n const refKey = `filteredEmoji-${index}`;\n if (this.$refs[refKey]) {\n this.setFilteredRef(this.$refs[refKey], index);\n }\n });\n },\n\n setupEmojiRefs () {\n for (let i = 0; i < this.tabs.length; i++) {\n const refKey = `emojiRef-${i}`;\n if (this.$refs[refKey]) {\n this.$refs[refKey].forEach((el, indexEmoji) => {\n if (el) {\n this.setEmojiRef(el, i, indexEmoji);\n }\n });\n }\n }\n },\n\n searchByNameAndKeywords () {\n const searchStr = this.emojiFilter.toLowerCase();\n this.filteredEmojis = this.currentEmojis.filter(function (obj) {\n const nameIncludesSearchStr = obj.name.toLowerCase().includes(searchStr);\n const keywordsIncludeSearchStr = obj.keywords.some(function (keyword) {\n return keyword.toLowerCase().includes(searchStr);\n });\n return nameIncludesSearchStr || keywordsIncludeSearchStr;\n });\n this.$nextTick(function () {\n if (searchStr) {\n this.hoverEmoji(this.filteredEmojis[0], true);\n this.setupFilteredRefs();\n }\n });\n },\n\n debounce: function (fn, delay) {\n if (delay === undefined) { delay = 300; }\n let timeout;\n return function () {\n const args = []; let len = arguments.length;\n while (len--) args[len] = arguments[len];\n\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn.apply(undefined, args);\n }, delay);\n };\n },\n\n getImgSrc: function (emoji) {\n return this.CDN_URL + emoji + '.png';\n },\n\n handleImageError: function (event) {\n event.target.parentNode.style.display = 'none';\n },\n\n scrollToTab: function (tabIndex, focusFirstEmoji) {\n const vm = this;\n if (focusFirstEmoji === undefined) { focusFirstEmoji = true; }\n const tabLabel = vm.tabLabels[tabIndex - 1];\n const tabElement = tabLabel.ref[0];\n\n vm.$nextTick(function () {\n const container = vm.$refs.listRef;\n const offsetTop = tabIndex === '1' ? 0 : tabElement.offsetTop - 20;\n\n let isScrolling = true;\n let prevScrollTop = container.scrollTop;\n vm.$emit('is-scrolling', true);\n\n /* eslint-disable-next-line complexity */\n container.addEventListener('scroll', function () {\n if (isScrolling) {\n const scrollTop = container.scrollTop;\n if (\n (prevScrollTop < scrollTop && scrollTop >= offsetTop) ||\n (prevScrollTop > scrollTop && scrollTop <= offsetTop)\n ) {\n isScrolling = false;\n vm.$emit('is-scrolling', false);\n }\n prevScrollTop = scrollTop;\n }\n });\n\n container.scrollTop = offsetTop;\n\n if (focusFirstEmoji) {\n vm.focusEmoji(tabIndex - 1, 0);\n }\n });\n },\n\n resetScroll: function () {\n const container = this.$refs.listRef;\n container.scrollTop = 0;\n },\n\n focusEmojiSelector: function () {\n this.focusEmoji(0, 0);\n },\n\n hoverEmoji (emoji, isFirst) {\n if (isFirst === undefined) { isFirst = false; }\n this.hoverFirstEmoji = isFirst;\n this.$emit('highlighted-emoji', emoji);\n },\n\n setEmojiRef: function (el, indexTab, indexEmoji) {\n if (!this.emojiRefs[indexTab]) {\n this.$set(this.emojiRefs, indexTab, []);\n }\n this.$set(this.emojiRefs[indexTab], indexEmoji, el);\n },\n\n setFilteredRef: function (el, index) {\n this.$set(this.emojiFilteredRefs, index, el);\n },\n\n focusEmoji: function (indexTab, indexEmoji) {\n // eslint-disable-next-line max-len\n const emojiRef = this.isFiltering ? this.emojiFilteredRefs[indexEmoji]?.[0] : this.emojiRefs[indexTab] && this.emojiRefs[indexTab][indexEmoji];\n if (emojiRef) {\n emojiRef.focus();\n return true;\n }\n\n return false;\n },\n\n // eslint-disable-next-line complexity\n handleKeyDown: function (event, indexTab, indexEmoji, emoji) {\n event.preventDefault();\n\n if (event.key === 'ArrowUp') {\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n if (indexTab === 0) {\n // we are on the first emoji tab, then we should jump to the last row of the last emoji tab\n const numberOfMissingEmojis =\n EMOJIS_PER_ROW - (this.emojiRefs[this.emojiRefs.length - 1].length % EMOJIS_PER_ROW);\n\n const emojiToJump =\n this.emojiRefs[this.emojiRefs.length - 1].length + numberOfMissingEmojis - (EMOJIS_PER_ROW - position);\n\n if (!this.focusEmoji(this.emojiRefs.length - 1, emojiToJump)) {\n // if there is no emoji in this position, jump to the last emoji of the row\n this.focusEmoji(this.emojiRefs.length - 1, this.emojiRefs[this.emojiRefs.length - 1].length - 1);\n }\n return;\n }\n\n // if we are not on the first tab, we should jump to the previous row of the current tab\n if (!this.focusEmoji(indexTab, indexEmoji - EMOJIS_PER_ROW)) {\n // if there is no previous row, we should jump to emoji in the sampe position of the previous tab\n const previousTab = indexTab - 1 < 0 ? 0 : indexTab - 1;\n const emojisInPreviousTab = this.emojiRefs[previousTab].length;\n const lastEmojiPosition = emojisInPreviousTab - (emojisInPreviousTab % EMOJIS_PER_ROW) + position;\n\n if (!this.focusEmoji(previousTab, lastEmojiPosition)) {\n // if there is no emoji in this position, jump to the last emoji of the row\n this.focusEmoji(indexTab - 1, this.emojiRefs[indexTab - 1].length - 1);\n }\n }\n }\n\n if (event.key === 'ArrowDown') {\n if (!this.focusEmoji(indexTab, indexEmoji + EMOJIS_PER_ROW)) {\n // if cannot go down\n\n // Calculate position from cell 0 to cell 8\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n // check if it exists a next row in the current tab\n if (this.emojiRefs?.[indexTab]?.[indexEmoji + (EMOJIS_PER_ROW - position)]) {\n // if it exists, we should focus the last emoji of the next row in the current tab\n this.focusEmoji(indexTab, this.emojiRefs[indexTab].length - 1);\n // if we are at the end of the list it will do nothing\n } else {\n // We don't have next row, we are in the last of the tab, then jump\n // to the next tab but in the equal emoji position in row 0.\n\n if (!this.focusEmoji(indexTab + 1, position)) {\n // We are on the bottom!, should jump to the same position emoji in the first row of the first tabset\n // if it doesn't has, jump to the last\n if (!this.focusEmoji(0, position)) {\n this.focusEmoji(0, this.emojiRefs[0].length - 1);\n }\n }\n }\n }\n }\n\n if (event.key === 'ArrowLeft') {\n this.handleHorizontalNavigation('left', indexTab, indexEmoji);\n }\n\n if (event.key === 'ArrowRight') {\n this.handleHorizontalNavigation('right', indexTab, indexEmoji);\n }\n\n if (event.key === 'Tab') {\n if (this.focusEmoji(indexTab + 1, 0)) {\n this.scrollToTab((indexTab + 1) + 1, false);\n } else {\n // We are on the last emoji tabset, jump to the skin selector\n this.$emit('focus-skin-selector');\n }\n }\n\n if (event.key === 'Tab' && event.shiftKey) {\n if (this.focusEmoji(indexTab, 0) && indexTab > 0) {\n this.scrollToTab(indexTab, true);\n } else {\n this.scrollToTab(1, false);\n this.$emit('focus-search-input');\n }\n }\n\n if (event.key === 'Enter') {\n this.$emit('selected-emoji', emoji);\n }\n },\n\n /* eslint-disable-next-line complexity */\n handleHorizontalNavigation: function (direction, indexTab, indexEmoji) {\n if (this.isFiltering) {\n if (direction === 'left') {\n this.handleArrowLeftFiltered(indexTab, indexEmoji);\n } else if (direction === 'right') {\n this.handleArrowRightFiltered(indexTab, indexEmoji);\n }\n } else {\n if (direction === 'left') {\n this.handleArrowLeft(indexTab, indexEmoji);\n } else if (direction === 'right') {\n this.handleArrowRight(indexTab, indexEmoji);\n }\n }\n },\n\n handleArrowLeftFiltered: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(0, indexEmoji - 1)) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n }\n },\n\n handleArrowRightFiltered: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(0, indexEmoji + 1)) {\n this.focusEmoji(0, 0);\n }\n },\n\n handleArrowLeft: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(indexTab, indexEmoji - 1)) {\n if (this.emojiRefs[indexTab - 1]) {\n this.focusEmoji(indexTab - 1, this.emojiRefs[indexTab - 1].length - 1);\n } else {\n this.focusEmoji(this.emojiRefs.length - 1, this.emojiRefs[this.emojiRefs.length - 1].length - 1);\n }\n }\n },\n\n handleArrowRight: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(indexTab, indexEmoji + 1)) {\n if (!this.focusEmoji(indexTab + 1, 0)) {\n this.focusEmoji(0, 0);\n }\n }\n },\n\n /* eslint-disable-next-line complexity */\n handleKeyDownFilteredEmojis (event, indexEmoji, emoji) {\n event.preventDefault();\n this.hoverFirstEmoji = false;\n\n if (event.key === 'ArrowUp') {\n const position = indexEmoji % EMOJIS_PER_ROW;\n if (!this.focusEmoji(0, indexEmoji - EMOJIS_PER_ROW)) {\n const lastEmojiPosition =\n this.emojiFilteredRefs.length - (this.emojiFilteredRefs.length % EMOJIS_PER_ROW) + position;\n\n this.focusEmoji(0, lastEmojiPosition);\n\n if (!this.focusEmoji(0, lastEmojiPosition)) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n }\n }\n }\n\n if (event.key === 'ArrowDown') {\n if (!this.focusEmoji(0, indexEmoji + EMOJIS_PER_ROW)) {\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n if (this.emojiFilteredRefs?.[indexEmoji + (EMOJIS_PER_ROW - position)]) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n } else {\n this.focusEmoji(0, position);\n }\n }\n }\n\n if (event.key === 'ArrowLeft') {\n this.handleHorizontalNavigation('left', 0, indexEmoji);\n }\n\n if (event.key === 'ArrowRight') {\n this.handleHorizontalNavigation('right', 0, indexEmoji);\n }\n\n if (event.key === 'Tab') {\n this.$emit('focus-skin-selector');\n }\n\n if (event.key === 'Enter') {\n this.$emit('selected-emoji', emoji);\n }\n },\n\n setTabLabelObserver () {\n this.tabLabelObserver = new IntersectionObserver(entries => {\n this.$emit('is-scrolling', false);\n /* eslint-disable-next-line complexity */\n entries.forEach(entry => {\n const { target } = entry;\n const index = parseInt(target.dataset.index);\n\n if (entry.isIntersecting && target.offsetTop <= this.$refs.tabCategoryRef?.offsetTop + 50) {\n this.fixedLabel = this.tabLabels[index - 1]?.label ?? this.tabLabels[0]?.label;\n this.$emit('scroll-into-tab', index - 1);\n } else if (entry.boundingClientRect.bottom <= this.$refs.tabCategoryRef?.getBoundingClientRect().bottom) {\n this.$emit('scroll-into-tab', index);\n this.fixedLabel = this.tabLabels[index]?.label;\n } else if (index === 1) {\n this.$emit('scroll-into-tab', index);\n this.fixedLabel = this.tabLabels[0]?.label;\n }\n });\n });\n\n this.tabLabelObserver.observe(this.$refs.tabCategoryRef);\n\n Array.from(this.$refs.listRef.children).forEach((child, index) => {\n this.tabLabelObserver.observe(child);\n child.dataset.index = index;\n });\n },\n\n focusLastEmoji () {\n this.focusEmoji(this.tabs.length - 1, 0);\n },\n\n },\n\n};\n</script>\n","export const CDN_URL = 'https://static.dialpadcdn.com/joypixels/png/unicode/32/';\nexport const EMOJIS_PER_ROW = 9;\nexport const EMOJI_PICKER_SKIN_TONE_MODIFIERS = {\n DEFAULT: 'Default',\n LIGHT: 'Light',\n MEDIUM_LIGHT: 'MediumLight',\n MEDIUM: 'Medium',\n MEDIUM_DARK: 'MediumDark',\n DARK: 'Dark',\n};\n\nexport const EMOJI_PICKER_CATEGORIES = {\n MOST_RECENTLY_USED: 'Most recently used',\n SMILEYS_AND_PEOPLE: 'Smileys and people',\n NATURE: 'Nature',\n FOOD: 'Food',\n ACTIVITY: 'Activity',\n TRAVEL: 'Travel',\n OBJECTS: 'Objects',\n SYMBOLS: 'Symbols',\n FLAGS: 'Flags',\n};\n\nexport default {\n EMOJI_PICKER_SKIN_TONE_MODIFIERS,\n EMOJI_PICKER_CATEGORIES,\n};\n","<template>\n <div class=\"d-emoji-picker__data\">\n <img\n v-if=\"emoji\"\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"`${CDN_URL + emoji.unicode_character}.png`\"\n >\n <div>{{ emoji?.name }}</div>\n </div>\n</template>\n\n<script>\nimport { CDN_URL } from '@/components/emoji_picker/emoji_picker_constants';\n\nexport default {\n name: 'EmojiDescription',\n\n props: {\n /**\n * Emoji data\n * @type {Object}\n * @default null\n */\n emoji: {\n type: Object,\n default: () => null,\n },\n },\n\n data () {\n return {\n CDN_URL,\n };\n },\n};\n</script>\n","<template>\n <div data-qa=\"skin-selector\">\n <div\n v-show=\"isOpen\"\n class=\"d-emoji-picker__skin-list\"\n >\n <button\n v-for=\"(skin, index) in skinList\"\n :key=\"skin.name\"\n :ref=\"`skinRef-${index}`\"\n :class=\"{\n 'selected': skinSelected?.skinCode === skin.skinCode,\n }\"\n @click=\"selectSkin(skin)\"\n @keydown=\"event => handleKeyDown(event, skin, index)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"skin.name\"\n :aria-label=\"skin.name\"\n :title=\"skin.name\"\n :src=\"`${cdnUrl + skin.unicode_output}.png`\"\n >\n </button>\n </div>\n <div\n v-show=\"!isOpen\"\n class=\"d-emoji-picker__skin-selected\"\n >\n <dt-tooltip placement=\"top-end\">\n {{ skinSelectorButtonTooltipLabel }}\n <template #anchor>\n <button\n ref=\"skinSelectorRef\"\n :aria-label=\"skinSelectorButtonTooltipLabel\"\n tabindex=\"-1\"\n @click=\"toggleSkinList\"\n @keydown=\"event => handleKeyDown(event)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"skinSelected?.name\"\n :aria-label=\"skinSelected?.name\"\n :title=\"skinSelected?.name\"\n :src=\"`${cdnUrl + skinSelected?.unicode_output}.png`\"\n >\n </button>\n </template>\n </dt-tooltip>\n </div>\n </div>\n</template>\n\n<script>\nimport DtTooltip from '@/components/tooltip/tooltip.vue';\nimport { CDN_URL, EMOJI_PICKER_SKIN_TONE_MODIFIERS } from '@/components/emoji_picker/emoji_picker_constants';\n\nexport default {\n name: 'EmojiSkinSelector',\n\n components: {\n DtTooltip,\n },\n\n props: {\n skinTone: {\n type: String,\n required: true,\n },\n\n isHovering: {\n type: Boolean,\n default: false,\n },\n\n skinSelectorButtonTooltipLabel: {\n type: String,\n required: true,\n },\n },\n\n data () {\n return {\n isOpen: false,\n skinSelected: null,\n skinsRef: [],\n cdnUrl: CDN_URL,\n };\n },\n\n computed: {\n skinPassedIn () {\n return this.skinList.find(skin => skin.skinTone === this.skinTone);\n },\n\n skinList () {\n return [\n {\n name: ':wave_tone1:',\n unicode_output: '1f44b-1f3fb',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.LIGHT,\n skinCode: '_tone1',\n },\n {\n name: ':wave_tone2:',\n unicode_output: '1f44b-1f3fc',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_LIGHT,\n skinCode: '_tone2',\n },\n {\n name: ':wave_tone3:',\n unicode_output: '1f44b-1f3fd',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM,\n skinCode: '_tone3',\n },\n {\n name: ':wave_tone4:',\n unicode_output: '1f44b-1f3fe',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_DARK,\n skinCode: '_tone4',\n },\n {\n name: ':wave_tone5:',\n unicode_output: '1f44b-1f3ff',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.DARK,\n skinCode: '_tone5',\n },\n {\n name: ':wave:',\n unicode_output: '1f44b',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.DEFAULT,\n skinCode: '',\n },\n ];\n },\n },\n\n watch: {\n isHovering (newVal) {\n if (newVal) {\n this.isOpen = false;\n }\n },\n\n skinTone (newVal, oldVal) {\n if (newVal !== oldVal) {\n this.skinSelected = this.skinPassedIn;\n }\n },\n },\n\n mounted () {\n this.skinSelected = this.skinPassedIn;\n this.$nextTick(() => {\n this.setupSkinRefs();\n });\n },\n\n methods: {\n setupSkinRefs () {\n this.skinList.forEach((skin, index) => {\n const refKey = `skinRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.skinsRef, index, this.$refs[refKey][0]);\n }\n });\n },\n\n focusSkinSelector () {\n if (this.$refs.skinSelectorRef) {\n this.$refs.skinSelectorRef.focus();\n }\n },\n\n selectSkin (skin) {\n this.skinSelected = skin;\n this.isOpen = false;\n this.$emit('skin-tone', skin.skinTone);\n this.$nextTick(() => {\n this.focusSkinSelector();\n });\n },\n\n handleKeyDown (event, skin, index) {\n event.preventDefault();\n\n if (event.key === 'ArrowLeft') {\n if (index === 0) this.skinsRef[this.skinsRef.length - 1]?.focus();\n this.skinsRef[index - 1]?.focus();\n }\n\n if (event.key === 'ArrowRight') {\n if (this.skinsRef.length) this.skinsRef[0]?.focus();\n this.skinsRef[index + 1]?.focus();\n }\n\n if (event.key === 'Enter') {\n if (skin) { this.selectSkin(skin); } else {\n this.toggleSkinList();\n }\n }\n\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n this.$emit('focus-last-emoji');\n } else {\n this.$emit('focus-tabset');\n }\n }\n },\n\n toggleSkinList () {\n this.isOpen = !this.isOpen;\n this.$nextTick(() => {\n if (this.skinsRef[0]) {\n this.skinsRef[0].focus();\n }\n });\n },\n },\n};\n</script>\n","<template>\n <div\n class=\"d-emoji-picker\"\n >\n <div class=\"d-emoji-picker--header\">\n <emoji-tabset\n ref=\"tabsetRef\"\n :emoji-filter=\"internalSearchQuery\"\n :show-recently-used-tab=\"showRecentlyUsedTab\"\n :scroll-into-tab=\"scrollIntoTab\"\n :tab-set-labels=\"tabSetLabels\"\n :is-scrolling=\"isScrolling\"\n @focus-skin-selector=\"$refs.skinSelectorRef.focusSkinSelector()\"\n @focus-search-input=\"showSearch ? $refs.searchInputRef.focusSearchInput() : $refs.emojiSelectorRef.focusEmojiSelector()\"\n @selected-tabset=\"scrollToSelectedTabset\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n <div class=\"d-emoji-picker--body\">\n <emoji-search\n v-if=\"showSearch\"\n ref=\"searchInputRef\"\n :model-value=\"internalSearchQuery\"\n :search-placeholder-label=\"searchPlaceholderLabel\"\n @update:model-value=\"newValue => internalSearchQuery = newValue\"\n @select-first-emoji=\"$emit('selected-emoji', highlightedEmoji)\"\n @focus-tabset=\"$refs.tabsetRef.focusTabset()\"\n @focus-emoji-selector=\"$refs.emojiSelectorRef.focusEmojiSelector()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n <emoji-selector\n ref=\"emojiSelectorRef\"\n :emoji-filter=\"internalSearchQuery\"\n :skin-tone=\"skinTone\"\n :tab-set-labels=\"tabSetLabels\"\n :search-results-label=\"searchResultsLabel\"\n :search-no-results-label=\"searchNoResultsLabel\"\n :recently-used-emojis=\"recentlyUsedEmojis\"\n :selected-tabset=\"selectedTabset\"\n @scroll-into-tab=\"updateScrollIntoTab\"\n @is-scrolling=\"updateIsScrolling\"\n @highlighted-emoji=\"updateHighlightedEmoji\"\n @selected-emoji=\"$emit('selected-emoji', $event)\"\n @focus-skin-selector=\"$refs.skinSelectorRef.focusSkinSelector()\"\n @focus-search-input=\"showSearch ? $refs.searchInputRef.focusSearchInput() : $refs.tabsetRef.focusTabset()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n <div class=\"d-emoji-picker--footer\">\n <emoji-description :emoji=\"highlightedEmoji\" />\n <emoji-skin-selector\n ref=\"skinSelectorRef\"\n :is-hovering=\"!!highlightedEmoji\"\n :skin-selector-button-tooltip-label=\"skinSelectorButtonTooltipLabel\"\n :skin-tone=\"skinTone\"\n @skin-tone=\"$emit('skin-tone', $event)\"\n @focus-tabset=\"$refs.tabsetRef.focusTabset()\"\n @focus-last-emoji=\"$refs.emojiSelectorRef.focusLastEmoji()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport EmojiTabset from './modules/emoji_tabset.vue';\nimport EmojiSearch from './modules/emoji_search.vue';\nimport EmojiSelector from './modules/emoji_selector.vue';\nimport EmojiDescription from './modules/emoji_description.vue';\nimport EmojiSkinSelector from './modules/emoji_skin_selector.vue';\n\nexport default {\n name: 'DtEmojiPicker',\n\n components: {\n EmojiTabset,\n EmojiSearch,\n EmojiSelector,\n EmojiDescription,\n EmojiSkinSelector,\n },\n\n props: {\n /**\n * The array with recently used emoji object\n * This list is necessary to fill the recently used tab\n * @type {Array}\n * @default []\n * @example\n * <dt-emoji-picker :recentlyUsedEmojis=\"[emojiObject, emojiObject]\" />\n */\n // TODO try to simplify this to achieve an array of unicode characters and not an entire emoji data object\n recentlyUsedEmojis: {\n type: Array,\n },\n\n /**\n * The placeholder text for the search input\n * @type {String}\n * @required\n * @example\n * <dt-emoji-picker :searchPlaceholderLabel=\"'Search...'\" />\n */\n searchPlaceholderLabel: {\n type: String,\n required: true,\n },\n\n /**\n * The label for the search results tab\n * @type {String}\n * @required\n * @example\n * <dt-emoji-picker :searchResultsLabel=\"'Search results'\" />\n */\n searchResultsLabel: {\n type: String,\n required: true,\n },\n\n /**\n * The label for the search no results\n * @type {String}\n * @required\n * @example\n * <dt-emoji-picker :searchNoResultsLabel=\"'No results'\" />\n */\n searchNoResultsLabel: {\n type: String,\n required: true,\n },\n\n /**\n * The list of tabsets to show, it is necessary to be updated with the correct language\n * It must respect the provided order.\n * @type {Array}\n * @required\n * @example\n * <dt-emoji-picker\n * :tabSetLabels=\"['Most recently used', 'Smileys and people', 'Nature',\n * 'Food', 'Activity', 'Travel', 'Objects', 'Symbols', 'Flags']\" />\n */\n tabSetLabels: {\n type: Array,\n required: true,\n },\n\n /**\n * The skin tone to show the emojis\n * This prop gives the possibility to use the skin tone selected by the user previously\n * @type {String}\n * @default 'Default'\n * @values 'Default', 'Light', 'MediumLight', 'Medium', 'MediumDark', 'Dark'\n * @example\n * <dt-emoji-picker :skinTone=\"'Default'\" />\n */\n skinTone: {\n type: String,\n default: 'Default',\n },\n\n /**\n * Tooltip shown when skin selector button is hovered.\n * @type {String}\n * @required\n * @example\n * <dt-emoji-picker :skin-selector-button-tooltip-label=\"'Change default skin tone'\" />\n */\n skinSelectorButtonTooltipLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Sets the search query that filters emojis.\n * @type {String}\n * @example\n * <dt-emoji-picker search-query=\"smile\" />\n */\n searchQuery: {\n type: String,\n default: '',\n },\n\n /**\n * Shows the search input\n * @type {Boolean}\n * @example\n * <dt-emoji-picker :show-search=\"false\" />\n */\n showSearch: {\n type: Boolean,\n default: true,\n },\n },\n\n data () {\n return {\n internalSearchQuery: this.searchQuery,\n highlightedEmoji: null,\n selectedTabset: {},\n scrollIntoTab: 0,\n isScrolling: false,\n };\n },\n\n computed: {\n showRecentlyUsedTab () {\n return this.recentlyUsedEmojis?.length > 0;\n },\n },\n\n watch: {\n searchQuery (value) {\n this.internalSearchQuery = value;\n },\n },\n\n methods: {\n scrollToSelectedTabset (tabId) {\n this.internalSearchQuery = '';\n this.selectedTabset = { ...this.selectedTabset, tabId };\n },\n\n updateScrollIntoTab (value) {\n this.scrollIntoTab = value;\n },\n\n updateIsScrolling (value) {\n this.isScrolling = value;\n },\n\n updateHighlightedEmoji (emoji) {\n this.highlightedEmoji = emoji;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","emojisImported"],"mappings":"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"}
1
+ {"version":3,"file":"emoji-picker.js","sources":["../../components/emoji_picker/modules/emoji_tabset.vue","../../components/emoji_picker/modules/emoji_search.vue","../../components/emoji_picker/modules/emoji_selector.vue","../../components/emoji_picker/emoji_picker_constants.js","../../components/emoji_picker/modules/emoji_description.vue","../../components/emoji_picker/modules/emoji_skin_selector.vue","../../components/emoji_picker/emoji_picker.vue"],"sourcesContent":["<template>\n <div class=\"d-emoji-picker__tabset\">\n <dt-tab-group\n tab-list-class=\"d-emoji-picker__tabset-list\"\n :selected=\"selectedTab\"\n >\n <template #tabs>\n <dt-tab\n v-for=\"(tab, index) in tabs\"\n :id=\"tab.id\"\n :ref=\"`tabsetRef-${index}`\"\n :key=\"tab.id\"\n :panel-id=\"tab.panelId\"\n :label=\"tab.label\"\n aria-controls=\"d-emoji-picker-list\"\n :tabindex=\"index + 1\"\n @click.capture.stop=\"selectTabset(tab.id)\"\n @keydown=\"handleKeyDown($event, tab.id)\"\n >\n <dt-icon\n size=\"400\"\n :name=\"tab.icon\"\n />\n </dt-tab>\n </template>\n </dt-tab-group>\n </div>\n</template>\n\n<script>\nimport DtTabGroup from '@/components/tabs/tab_group.vue';\nimport DtTab from '@/components/tabs/tab.vue';\nimport DtIcon from '@/components/icon/icon.vue';\nimport { EMOJI_PICKER_CATEGORIES } from '@/components/emoji_picker';\n\nexport default {\n name: 'EmojiTabset',\n\n components: {\n DtTabGroup,\n DtTab,\n DtIcon,\n },\n\n props: {\n showRecentlyUsedTab: {\n type: Boolean,\n default: false,\n },\n\n scrollIntoTab: {\n type: Number,\n required: true,\n },\n\n isScrolling: {\n type: Boolean,\n default: false,\n },\n\n emojiFilter: {\n type: String,\n default: '',\n },\n\n tabSetLabels: {\n type: Array,\n required: true,\n },\n },\n\n data () {\n return {\n selectedTab: '1',\n tabsetRef: [],\n TABS_DATA: [\n { label: EMOJI_PICKER_CATEGORIES.MOST_RECENTLY_USED, icon: 'clock' },\n { label: EMOJI_PICKER_CATEGORIES.SMILEYS_AND_PEOPLE, icon: 'satisfied' },\n { label: EMOJI_PICKER_CATEGORIES.NATURE, icon: 'living-thing' },\n { label: EMOJI_PICKER_CATEGORIES.FOOD, icon: 'food' },\n { label: EMOJI_PICKER_CATEGORIES.ACTIVITY, icon: 'object' },\n { label: EMOJI_PICKER_CATEGORIES.TRAVEL, icon: 'transportation' },\n { label: EMOJI_PICKER_CATEGORIES.OBJECTS, icon: 'lightbulb' },\n { label: EMOJI_PICKER_CATEGORIES.SYMBOLS, icon: 'heart' },\n { label: EMOJI_PICKER_CATEGORIES.FLAGS, icon: 'flag' },\n ],\n };\n },\n\n computed: {\n tabs () {\n const tabsData = this.showRecentlyUsedTab ? this.TABS_DATA : this.TABS_DATA.slice(1);\n return tabsData.map((tab, index) => ({\n ...tab,\n label: this.tabSetLabels[index],\n id: (index + 1).toString(),\n panelId: (index + 1).toString(),\n }));\n },\n\n isSearching () {\n return this.emojiFilter.length > 0;\n },\n },\n\n watch: {\n scrollIntoTab: function (newVal) {\n if (!this.isScrolling && !this.isSearching) {\n this.selectedTab = (newVal + 1).toString();\n }\n },\n\n isSearching: function (newVal) {\n if (newVal) {\n this.selectedTab = null;\n }\n },\n },\n\n mounted () {\n this.$nextTick(() => {\n this.setTabsetRef();\n });\n },\n\n methods: {\n selectTabset (id) {\n if (!this.isScrolling) {\n this.selectedTab = id;\n }\n this.$emit('selected-tabset', id);\n },\n\n setTabsetRef () {\n this.tabs.forEach((skin, index) => {\n const refKey = `tabsetRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.tabsetRef, index, this.$refs[refKey][0].$el);\n }\n });\n },\n\n focusTabset () {\n if (this.tabsetRef[0]) {\n this.tabsetRef[0].focus();\n }\n },\n\n // eslint-disable-next-line complexity\n handleKeyDown (event, tabId) {\n if (event.key === 'Enter') {\n this.selectTabset(tabId);\n if (this.tabsetRef[tabId - 1]) {\n this.tabsetRef[tabId - 1].blur();\n }\n }\n\n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n this.$emit('focus-skin-selector');\n } else {\n this.$emit('focus-search-input');\n }\n }\n\n if (event.key === 'ArrowDown') {\n this.$emit('focus-search-input');\n }\n },\n },\n};\n</script>\n","<template>\n <div class=\"d-emoji-picker__search d-emoji-picker__alignment\">\n <dt-input\n id=\"searchInput\"\n ref=\"searchInputRef\"\n :placeholder=\"searchPlaceholderLabel\"\n :value=\"modelValue\"\n @input=\"updateModelValue\"\n @keydown.up=\"focusTabset\"\n @keydown.down.prevent=\"focusEmojiSelector\"\n @keydown.enter=\"selectFirstEmoji\"\n >\n <template #leftIcon>\n <dt-icon\n name=\"search\"\n size=\"200\"\n />\n </template>\n <template\n v-if=\"modelValue.length > 0\"\n #rightIcon\n >\n <dt-button\n importance=\"clear\"\n kind=\"muted\"\n @click=\"clearSearch\"\n >\n <template #icon>\n <dt-icon\n name=\"x-circle\"\n size=\"200\"\n />\n </template>\n </dt-button>\n </template>\n </dt-input>\n </div>\n</template>\n\n<script>\nimport { DtInput } from '@/components/input';\nimport { DtIcon } from '@/components/icon';\nimport { DtButton } from '@/components/button';\n\nexport default {\n name: 'EmojiSearch',\n\n components: {\n DtInput,\n DtIcon,\n DtButton,\n },\n\n props: {\n searchPlaceholderLabel: {\n type: String,\n required: true,\n },\n\n modelValue: {\n type: String,\n default: '',\n },\n },\n\n mounted () {\n this.focusSearchInput();\n },\n\n methods: {\n updateModelValue (value) {\n this.$emit('update:model-value', value);\n },\n\n focusEmojiSelector () {\n this.$emit('focus-emoji-selector');\n },\n\n focusTabset () {\n this.$emit('focus-tabset');\n },\n\n selectFirstEmoji () {\n this.$emit('select-first-emoji');\n },\n\n clearSearch () {\n this.$emit('update:model-value', '');\n this.focusSearchInput();\n },\n\n focusSearchInput () {\n this.$refs.searchInputRef.focus();\n },\n },\n};\n</script>\n","<template>\n <div\n class=\"d-emoji-picker__selector\"\n >\n <div\n id=\"d-emoji-picker-list\"\n ref=\"listRef\"\n class=\"d-emoji-picker__list\"\n >\n <p\n v-if=\"emojiFilter\"\n class=\"d-emoji-picker__search-label d-emoji-picker__alignment\"\n >\n {{ filteredEmojis.length > 0 ? searchResultsLabel : searchNoResultsLabel }}\n </p>\n <div\n v-else\n ref=\"tabCategoryRef\"\n class=\"d-emoji-picker__category d-emoji-picker__alignment\"\n >\n <p>\n {{ fixedLabel }}\n </p>\n </div>\n <div\n v-for=\"(tabLabel, indexTab) in tabLabels\"\n v-show=\"!emojiFilter\"\n :key=\"indexTab\"\n :ref=\"`tabLabelRef-${indexTab}`\"\n class=\"d-emoji-picker__alignment\"\n >\n <p\n v-if=\"indexTab\"\n >\n {{ tabLabel.label }}\n </p>\n <div\n class=\"d-emoji-picker__tab\"\n >\n <button\n v-for=\"(emoji, indexEmoji) in\n (emojis[tabs[indexTab] + skinTone] ? emojis[tabs[indexTab] + skinTone] : emojis[tabs[indexTab]])\"\n :key=\"emoji.shortname\"\n :ref=\"`emojiRef-${indexTab}`\"\n type=\"button\"\n :aria-label=\"emoji.name\"\n @click=\"$emit('selected-emoji', emoji)\"\n @focusin=\"$emit('highlighted-emoji', emoji)\"\n @focusout=\"$emit('highlighted-emoji', null)\"\n @mouseover=\"$emit('highlighted-emoji', emoji)\"\n @mouseleave=\"$emit('highlighted-emoji', null)\"\n @keydown=\"event => handleKeyDown(event, indexTab, indexEmoji, emoji)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"getImgSrc(emoji.unicode_character)\"\n @error=\"handleImageError\"\n >\n </button>\n </div>\n </div>\n <div\n v-if=\"emojiFilter\"\n class=\"d-emoji-picker__alignment\"\n >\n <div\n class=\"d-emoji-picker__tab \"\n data-qa=\"filtered-emojis\"\n >\n <button\n v-for=\"(emoji, index) in filteredEmojis\"\n :key=\"emoji.shortname\"\n :ref=\"`filteredEmoji-${index}`\"\n type=\"button\"\n :aria-label=\"emoji.name\"\n :class=\"{\n 'hover-emoji': (index === 0 && hoverFirstEmoji),\n }\"\n @click=\"$emit('selected-emoji', emoji)\"\n @focusin=\"$emit('highlighted-emoji', emoji)\"\n @focusout=\"$emit('highlighted-emoji', null)\"\n @mouseover=\"hoverEmoji(emoji)\"\n @mouseleave=\"hoverEmoji(null)\"\n @keydown=\"event => handleKeyDownFilteredEmojis(event, index, emoji)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"`${CDN_URL + emoji.unicode_character}.png`\"\n >\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-len */\n/* eslint-disable max-lines */\nimport { emojisGrouped as emojisImported } from '@dialpad/dialtone-emojis';\nimport { CDN_URL, EMOJIS_PER_ROW } from '@/components/emoji_picker';\n\nexport default {\n name: 'EmojiSelector',\n\n props: {\n emojiFilter: {\n type: String,\n default: '',\n },\n\n skinTone: {\n type: String,\n required: true,\n },\n\n tabSetLabels: {\n type: Array,\n required: true,\n },\n\n selectedTabset: {\n type: Object,\n required: true,\n },\n\n searchResultsLabel: {\n type: String,\n required: true,\n },\n\n searchNoResultsLabel: {\n type: String,\n required: true,\n },\n\n recentlyUsedEmojis: {\n type: Array,\n default: () => [],\n },\n },\n\n data () {\n return {\n emojiRefs: [],\n emojiFilteredRefs: [],\n isFiltering: false,\n hoverFirstEmoji: true,\n fixedLabel: '',\n filteredEmojis: [],\n TABS_DATA: ['Recently used', 'People', 'Nature', 'Food', 'Activity', 'Travel', 'Objects', 'Symbols', 'Flags'],\n tabLabelObserver: null,\n };\n },\n\n computed: {\n /* eslint-disable-next-line complexity */\n currentEmojis () {\n return [\n ...this.emojis[`People${this.skinTone}`] || [],\n ...this.emojis.Nature || [],\n ...this.emojis.Food || [],\n ...this.emojis[`Activity${this.skinTone}`] || [],\n ...this.emojis.Travel || [],\n ...this.emojis[`Objects${this.skinTone}`] || [],\n ...this.emojis.Symbols || [],\n ...this.emojis.Flags || [],\n ];\n },\n\n emojis () {\n return emojisImported;\n },\n\n CDN_URL () {\n return CDN_URL;\n },\n\n tabLabels () {\n return this.recentlyUsedEmojis.length\n ? this.tabSetLabels.map((label, index) => ({ label, ref: this.$refs[`tabLabelRef-${index}`] }))\n : this.tabSetLabels.slice(1).map((label, index) => ({ label, ref: this.$refs[`tabLabelRef-${index}`] }));\n },\n\n tabs () {\n return this.recentlyUsedEmojis.length ? this.TABS_DATA : this.TABS_DATA.slice(1);\n },\n },\n\n watch: {\n currentEmojis: {\n handler () {\n this.searchByNameAndKeywords();\n },\n\n immediate: true,\n },\n\n recentlyUsedEmojis: {\n handler (newValue) {\n this.emojis['Recently used'] = newValue;\n },\n\n immediate: true,\n },\n\n emojiFilter: {\n handler (newFilter) {\n this.resetScroll();\n if (newFilter) {\n this.isFiltering = true;\n } else {\n this.isFiltering = false;\n this.$emit('highlighted-emoji', null);\n }\n\n this.debouncedSearch();\n },\n },\n\n selectedTabset: {\n handler (newValue) {\n this.scrollToTab(newValue.tabId);\n },\n\n deep: true,\n },\n },\n\n created () {\n this.debouncedSearch = this.debounce(this.searchByNameAndKeywords, 300);\n },\n\n mounted () {\n this.$nextTick(() => {\n this.setupEmojiRefs();\n this.setupFilteredRefs();\n this.setupTabLabelRefs();\n this.setTabLabelObserver();\n });\n },\n\n beforeDestroy () {\n if (this.tabLabelObserver) {\n this.tabLabelObserver.disconnect();\n }\n },\n\n methods: {\n setupTabLabelRefs () {\n this.tabSetLabels?.forEach((label, index) => {\n const refKey = `tabLabelRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.tabLabels, index, { label, ref: this.$refs[refKey] });\n }\n });\n },\n\n setupFilteredRefs () {\n // it is necessary to clean the array before setting the new refs\n this.emojiFilteredRefs = [];\n\n this.filteredEmojis.forEach((emoji, index) => {\n const refKey = `filteredEmoji-${index}`;\n if (this.$refs[refKey]) {\n this.setFilteredRef(this.$refs[refKey], index);\n }\n });\n },\n\n setupEmojiRefs () {\n for (let i = 0; i < this.tabs.length; i++) {\n const refKey = `emojiRef-${i}`;\n if (this.$refs[refKey]) {\n this.$refs[refKey].forEach((el, indexEmoji) => {\n if (el) {\n this.setEmojiRef(el, i, indexEmoji);\n }\n });\n }\n }\n },\n\n searchByNameAndKeywords () {\n const searchStr = this.emojiFilter.toLowerCase();\n this.filteredEmojis = this.currentEmojis.filter(function (obj) {\n const nameIncludesSearchStr = obj.name.toLowerCase().includes(searchStr);\n const keywordsIncludeSearchStr = obj.keywords.some(function (keyword) {\n return keyword.toLowerCase().includes(searchStr);\n });\n return nameIncludesSearchStr || keywordsIncludeSearchStr;\n });\n this.$nextTick(function () {\n if (searchStr) {\n this.hoverEmoji(this.filteredEmojis[0], true);\n this.setupFilteredRefs();\n }\n });\n },\n\n debounce: function (fn, delay) {\n if (delay === undefined) { delay = 300; }\n let timeout;\n return function () {\n const args = []; let len = arguments.length;\n while (len--) args[len] = arguments[len];\n\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn.apply(undefined, args);\n }, delay);\n };\n },\n\n getImgSrc: function (emoji) {\n return this.CDN_URL + emoji + '.png';\n },\n\n handleImageError: function (event) {\n event.target.parentNode.style.display = 'none';\n },\n\n scrollToTab: function (tabIndex, focusFirstEmoji) {\n const vm = this;\n if (focusFirstEmoji === undefined) { focusFirstEmoji = true; }\n const tabLabel = vm.tabLabels[tabIndex - 1];\n const tabElement = tabLabel.ref[0];\n\n vm.$nextTick(function () {\n const container = vm.$refs.listRef;\n const offsetTop = tabIndex === '1' ? 0 : tabElement.offsetTop - 20;\n\n let isScrolling = true;\n let prevScrollTop = container.scrollTop;\n vm.$emit('is-scrolling', true);\n\n /* eslint-disable-next-line complexity */\n container.addEventListener('scroll', function () {\n if (isScrolling) {\n const scrollTop = container.scrollTop;\n if (\n (prevScrollTop < scrollTop && scrollTop >= offsetTop) ||\n (prevScrollTop > scrollTop && scrollTop <= offsetTop)\n ) {\n isScrolling = false;\n vm.$emit('is-scrolling', false);\n }\n prevScrollTop = scrollTop;\n }\n });\n\n container.scrollTop = offsetTop;\n\n if (focusFirstEmoji) {\n vm.focusEmoji(tabIndex - 1, 0);\n }\n });\n },\n\n resetScroll: function () {\n const container = this.$refs.listRef;\n container.scrollTop = 0;\n },\n\n focusEmojiSelector: function () {\n this.focusEmoji(0, 0);\n },\n\n hoverEmoji (emoji, isFirst) {\n if (isFirst === undefined) { isFirst = false; }\n this.hoverFirstEmoji = isFirst;\n this.$emit('highlighted-emoji', emoji);\n },\n\n setEmojiRef: function (el, indexTab, indexEmoji) {\n if (!this.emojiRefs[indexTab]) {\n this.$set(this.emojiRefs, indexTab, []);\n }\n this.$set(this.emojiRefs[indexTab], indexEmoji, el);\n },\n\n setFilteredRef: function (el, index) {\n this.$set(this.emojiFilteredRefs, index, el);\n },\n\n focusEmoji: function (indexTab, indexEmoji) {\n // eslint-disable-next-line max-len\n const emojiRef = this.isFiltering ? this.emojiFilteredRefs[indexEmoji]?.[0] : this.emojiRefs[indexTab] && this.emojiRefs[indexTab][indexEmoji];\n if (emojiRef) {\n emojiRef.focus();\n return true;\n }\n\n return false;\n },\n\n // eslint-disable-next-line complexity\n handleKeyDown: function (event, indexTab, indexEmoji, emoji) {\n event.preventDefault();\n\n if (event.key === 'ArrowUp') {\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n if (indexTab === 0) {\n // we are on the first emoji tab, then we should jump to the last row of the last emoji tab\n const numberOfMissingEmojis =\n EMOJIS_PER_ROW - (this.emojiRefs[this.emojiRefs.length - 1].length % EMOJIS_PER_ROW);\n\n const emojiToJump =\n this.emojiRefs[this.emojiRefs.length - 1].length + numberOfMissingEmojis - (EMOJIS_PER_ROW - position);\n\n if (!this.focusEmoji(this.emojiRefs.length - 1, emojiToJump)) {\n // if there is no emoji in this position, jump to the last emoji of the row\n this.focusEmoji(this.emojiRefs.length - 1, this.emojiRefs[this.emojiRefs.length - 1].length - 1);\n }\n return;\n }\n\n // if we are not on the first tab, we should jump to the previous row of the current tab\n if (!this.focusEmoji(indexTab, indexEmoji - EMOJIS_PER_ROW)) {\n // if there is no previous row, we should jump to emoji in the sampe position of the previous tab\n const previousTab = indexTab - 1 < 0 ? 0 : indexTab - 1;\n const emojisInPreviousTab = this.emojiRefs[previousTab].length;\n const lastEmojiPosition = emojisInPreviousTab - (emojisInPreviousTab % EMOJIS_PER_ROW) + position;\n\n if (!this.focusEmoji(previousTab, lastEmojiPosition)) {\n // if there is no emoji in this position, jump to the last emoji of the row\n this.focusEmoji(indexTab - 1, this.emojiRefs[indexTab - 1].length - 1);\n }\n }\n }\n\n if (event.key === 'ArrowDown') {\n if (!this.focusEmoji(indexTab, indexEmoji + EMOJIS_PER_ROW)) {\n // if cannot go down\n\n // Calculate position from cell 0 to cell 8\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n // check if it exists a next row in the current tab\n if (this.emojiRefs?.[indexTab]?.[indexEmoji + (EMOJIS_PER_ROW - position)]) {\n // if it exists, we should focus the last emoji of the next row in the current tab\n this.focusEmoji(indexTab, this.emojiRefs[indexTab].length - 1);\n // if we are at the end of the list it will do nothing\n } else {\n // We don't have next row, we are in the last of the tab, then jump\n // to the next tab but in the equal emoji position in row 0.\n\n if (!this.focusEmoji(indexTab + 1, position)) {\n // We are on the bottom!, should jump to the same position emoji in the first row of the first tabset\n // if it doesn't has, jump to the last\n if (!this.focusEmoji(0, position)) {\n this.focusEmoji(0, this.emojiRefs[0].length - 1);\n }\n }\n }\n }\n }\n\n if (event.key === 'ArrowLeft') {\n this.handleHorizontalNavigation('left', indexTab, indexEmoji);\n }\n\n if (event.key === 'ArrowRight') {\n this.handleHorizontalNavigation('right', indexTab, indexEmoji);\n }\n\n if (event.key === 'Tab') {\n if (this.focusEmoji(indexTab + 1, 0)) {\n this.scrollToTab((indexTab + 1) + 1, false);\n } else {\n // We are on the last emoji tabset, jump to the skin selector\n this.$emit('focus-skin-selector');\n }\n }\n\n if (event.key === 'Tab' && event.shiftKey) {\n if (this.focusEmoji(indexTab, 0) && indexTab > 0) {\n this.scrollToTab(indexTab, true);\n } else {\n this.scrollToTab(1, false);\n this.$emit('focus-search-input');\n }\n }\n\n if (event.key === 'Enter') {\n this.$emit('selected-emoji', emoji);\n }\n },\n\n /* eslint-disable-next-line complexity */\n handleHorizontalNavigation: function (direction, indexTab, indexEmoji) {\n if (this.isFiltering) {\n if (direction === 'left') {\n this.handleArrowLeftFiltered(indexTab, indexEmoji);\n } else if (direction === 'right') {\n this.handleArrowRightFiltered(indexTab, indexEmoji);\n }\n } else {\n if (direction === 'left') {\n this.handleArrowLeft(indexTab, indexEmoji);\n } else if (direction === 'right') {\n this.handleArrowRight(indexTab, indexEmoji);\n }\n }\n },\n\n handleArrowLeftFiltered: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(0, indexEmoji - 1)) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n }\n },\n\n handleArrowRightFiltered: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(0, indexEmoji + 1)) {\n this.focusEmoji(0, 0);\n }\n },\n\n handleArrowLeft: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(indexTab, indexEmoji - 1)) {\n if (this.emojiRefs[indexTab - 1]) {\n this.focusEmoji(indexTab - 1, this.emojiRefs[indexTab - 1].length - 1);\n } else {\n this.focusEmoji(this.emojiRefs.length - 1, this.emojiRefs[this.emojiRefs.length - 1].length - 1);\n }\n }\n },\n\n handleArrowRight: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(indexTab, indexEmoji + 1)) {\n if (!this.focusEmoji(indexTab + 1, 0)) {\n this.focusEmoji(0, 0);\n }\n }\n },\n\n /* eslint-disable-next-line complexity */\n handleKeyDownFilteredEmojis (event, indexEmoji, emoji) {\n event.preventDefault();\n this.hoverFirstEmoji = false;\n\n if (event.key === 'ArrowUp') {\n const position = indexEmoji % EMOJIS_PER_ROW;\n if (!this.focusEmoji(0, indexEmoji - EMOJIS_PER_ROW)) {\n const lastEmojiPosition =\n this.emojiFilteredRefs.length - (this.emojiFilteredRefs.length % EMOJIS_PER_ROW) + position;\n\n this.focusEmoji(0, lastEmojiPosition);\n\n if (!this.focusEmoji(0, lastEmojiPosition)) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n }\n }\n }\n\n if (event.key === 'ArrowDown') {\n if (!this.focusEmoji(0, indexEmoji + EMOJIS_PER_ROW)) {\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n if (this.emojiFilteredRefs?.[indexEmoji + (EMOJIS_PER_ROW - position)]) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n } else {\n this.focusEmoji(0, position);\n }\n }\n }\n\n if (event.key === 'ArrowLeft') {\n this.handleHorizontalNavigation('left', 0, indexEmoji);\n }\n\n if (event.key === 'ArrowRight') {\n this.handleHorizontalNavigation('right', 0, indexEmoji);\n }\n\n if (event.key === 'Tab') {\n this.$emit('focus-skin-selector');\n }\n\n if (event.key === 'Enter') {\n this.$emit('selected-emoji', emoji);\n }\n },\n\n setTabLabelObserver () {\n this.tabLabelObserver = new IntersectionObserver(entries => {\n this.$emit('is-scrolling', false);\n /* eslint-disable-next-line complexity */\n entries.forEach(entry => {\n const { target } = entry;\n const index = parseInt(target.dataset.index);\n\n if (entry.isIntersecting && target.offsetTop <= this.$refs.tabCategoryRef?.offsetTop + 50) {\n this.fixedLabel = this.tabLabels[index - 1]?.label ?? this.tabLabels[0]?.label;\n this.$emit('scroll-into-tab', index - 1);\n } else if (entry.boundingClientRect.bottom <= this.$refs.tabCategoryRef?.getBoundingClientRect().bottom) {\n this.$emit('scroll-into-tab', index);\n this.fixedLabel = this.tabLabels[index]?.label;\n } else if (index === 1) {\n this.$emit('scroll-into-tab', index);\n this.fixedLabel = this.tabLabels[0]?.label;\n }\n });\n });\n\n this.tabLabelObserver.observe(this.$refs.tabCategoryRef);\n\n Array.from(this.$refs.listRef.children).forEach((child, index) => {\n this.tabLabelObserver.observe(child);\n child.dataset.index = index;\n });\n },\n\n focusLastEmoji () {\n this.focusEmoji(this.tabs.length - 1, 0);\n },\n\n },\n\n};\n</script>\n","export const CDN_URL = 'https://static.dialpadcdn.com/joypixels/png/unicode/32/';\nexport const EMOJIS_PER_ROW = 9;\nexport const EMOJI_PICKER_SKIN_TONE_MODIFIERS = {\n DEFAULT: 'Default',\n LIGHT: 'Light',\n MEDIUM_LIGHT: 'MediumLight',\n MEDIUM: 'Medium',\n MEDIUM_DARK: 'MediumDark',\n DARK: 'Dark',\n};\n\nexport const EMOJI_PICKER_CATEGORIES = {\n MOST_RECENTLY_USED: 'Most recently used',\n SMILEYS_AND_PEOPLE: 'Smileys and people',\n NATURE: 'Nature',\n FOOD: 'Food',\n ACTIVITY: 'Activity',\n TRAVEL: 'Travel',\n OBJECTS: 'Objects',\n SYMBOLS: 'Symbols',\n FLAGS: 'Flags',\n};\n\nexport default {\n EMOJI_PICKER_SKIN_TONE_MODIFIERS,\n EMOJI_PICKER_CATEGORIES,\n};\n","<template>\n <div class=\"d-emoji-picker__data\">\n <img\n v-if=\"emoji\"\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"`${CDN_URL + emoji.unicode_character}.png`\"\n >\n <div>{{ emoji?.name }}</div>\n </div>\n</template>\n\n<script>\nimport { CDN_URL } from '@/components/emoji_picker/emoji_picker_constants';\n\nexport default {\n name: 'EmojiDescription',\n\n props: {\n /**\n * Emoji data\n * @type {Object}\n * @default null\n */\n emoji: {\n type: Object,\n default: () => null,\n },\n },\n\n data () {\n return {\n CDN_URL,\n };\n },\n};\n</script>\n","<template>\n <div data-qa=\"skin-selector\">\n <div\n v-show=\"isOpen\"\n class=\"d-emoji-picker__skin-list\"\n >\n <button\n v-for=\"(skin, index) in skinList\"\n :key=\"skin.name\"\n :ref=\"`skinRef-${index}`\"\n :class=\"{\n 'selected': skinSelected?.skinCode === skin.skinCode,\n }\"\n @click=\"selectSkin(skin)\"\n @keydown=\"event => handleKeyDown(event, skin, index)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"skin.name\"\n :aria-label=\"skin.name\"\n :title=\"skin.name\"\n :src=\"`${cdnUrl + skin.unicode_output}.png`\"\n >\n </button>\n </div>\n <div\n v-show=\"!isOpen\"\n class=\"d-emoji-picker__skin-selected\"\n >\n <dt-tooltip placement=\"top-end\">\n {{ skinSelectorButtonTooltipLabel }}\n <template #anchor>\n <button\n ref=\"skinSelectorRef\"\n :aria-label=\"skinSelectorButtonTooltipLabel\"\n tabindex=\"-1\"\n @click=\"toggleSkinList\"\n @keydown=\"event => handleKeyDown(event)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"skinSelected?.name\"\n :aria-label=\"skinSelected?.name\"\n :title=\"skinSelected?.name\"\n :src=\"`${cdnUrl + skinSelected?.unicode_output}.png`\"\n >\n </button>\n </template>\n </dt-tooltip>\n </div>\n </div>\n</template>\n\n<script>\nimport DtTooltip from '@/components/tooltip/tooltip.vue';\nimport { CDN_URL, EMOJI_PICKER_SKIN_TONE_MODIFIERS } from '@/components/emoji_picker/emoji_picker_constants';\n\nexport default {\n name: 'EmojiSkinSelector',\n\n components: {\n DtTooltip,\n },\n\n props: {\n skinTone: {\n type: String,\n required: true,\n },\n\n isHovering: {\n type: Boolean,\n default: false,\n },\n\n skinSelectorButtonTooltipLabel: {\n type: String,\n required: true,\n },\n },\n\n data () {\n return {\n isOpen: false,\n skinSelected: null,\n skinsRef: [],\n cdnUrl: CDN_URL,\n };\n },\n\n computed: {\n skinPassedIn () {\n return this.skinList.find(skin => skin.skinTone === this.skinTone);\n },\n\n skinList () {\n return [\n {\n name: ':wave_tone1:',\n unicode_output: '1f44b-1f3fb',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.LIGHT,\n skinCode: '_tone1',\n },\n {\n name: ':wave_tone2:',\n unicode_output: '1f44b-1f3fc',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_LIGHT,\n skinCode: '_tone2',\n },\n {\n name: ':wave_tone3:',\n unicode_output: '1f44b-1f3fd',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM,\n skinCode: '_tone3',\n },\n {\n name: ':wave_tone4:',\n unicode_output: '1f44b-1f3fe',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_DARK,\n skinCode: '_tone4',\n },\n {\n name: ':wave_tone5:',\n unicode_output: '1f44b-1f3ff',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.DARK,\n skinCode: '_tone5',\n },\n {\n name: ':wave:',\n unicode_output: '1f44b',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.DEFAULT,\n skinCode: '',\n },\n ];\n },\n },\n\n watch: {\n isHovering (newVal) {\n if (newVal) {\n this.isOpen = false;\n }\n },\n\n skinTone (newVal, oldVal) {\n if (newVal !== oldVal) {\n this.skinSelected = this.skinPassedIn;\n }\n },\n },\n\n mounted () {\n this.skinSelected = this.skinPassedIn;\n this.$nextTick(() => {\n this.setupSkinRefs();\n });\n },\n\n methods: {\n setupSkinRefs () {\n this.skinList.forEach((skin, index) => {\n const refKey = `skinRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.skinsRef, index, this.$refs[refKey][0]);\n }\n });\n },\n\n focusSkinSelector () {\n if (this.$refs.skinSelectorRef) {\n this.$refs.skinSelectorRef.focus();\n }\n },\n\n selectSkin (skin) {\n this.skinSelected = skin;\n this.isOpen = false;\n this.$emit('skin-tone', skin.skinTone);\n this.$nextTick(() => {\n this.focusSkinSelector();\n });\n },\n\n handleKeyDown (event, skin, index) {\n event.preventDefault();\n\n if (event.key === 'ArrowLeft') {\n if (index === 0) this.skinsRef[this.skinsRef.length - 1]?.focus();\n this.skinsRef[index - 1]?.focus();\n }\n\n if (event.key === 'ArrowRight') {\n if (this.skinsRef.length) this.skinsRef[0]?.focus();\n this.skinsRef[index + 1]?.focus();\n }\n\n if (event.key === 'Enter') {\n if (skin) { this.selectSkin(skin); } else {\n this.toggleSkinList();\n }\n }\n\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n this.$emit('focus-last-emoji');\n } else {\n this.$emit('focus-tabset');\n }\n }\n },\n\n toggleSkinList () {\n this.isOpen = !this.isOpen;\n this.$nextTick(() => {\n if (this.skinsRef[0]) {\n this.skinsRef[0].focus();\n }\n });\n },\n },\n};\n</script>\n","<template>\n <div\n class=\"d-emoji-picker\"\n >\n <div class=\"d-emoji-picker--header\">\n <emoji-tabset\n ref=\"tabsetRef\"\n :emoji-filter=\"internalSearchQuery\"\n :show-recently-used-tab=\"showRecentlyUsedTab\"\n :scroll-into-tab=\"scrollIntoTab\"\n :tab-set-labels=\"tabSetLabels\"\n :is-scrolling=\"isScrolling\"\n @focus-skin-selector=\"$refs.skinSelectorRef.focusSkinSelector()\"\n @focus-search-input=\"showSearch ? $refs.searchInputRef.focusSearchInput() : $refs.emojiSelectorRef.focusEmojiSelector()\"\n @selected-tabset=\"scrollToSelectedTabset\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n <div class=\"d-emoji-picker--body\">\n <emoji-search\n v-if=\"showSearch\"\n ref=\"searchInputRef\"\n :model-value=\"internalSearchQuery\"\n :search-placeholder-label=\"searchPlaceholderLabel\"\n @update:model-value=\"newValue => internalSearchQuery = newValue\"\n @select-first-emoji=\"$emit('selected-emoji', highlightedEmoji)\"\n @focus-tabset=\"$refs.tabsetRef.focusTabset()\"\n @focus-emoji-selector=\"$refs.emojiSelectorRef.focusEmojiSelector()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n <emoji-selector\n ref=\"emojiSelectorRef\"\n :emoji-filter=\"internalSearchQuery\"\n :skin-tone=\"skinTone\"\n :tab-set-labels=\"tabSetLabels\"\n :search-results-label=\"searchResultsLabel\"\n :search-no-results-label=\"searchNoResultsLabel\"\n :recently-used-emojis=\"recentlyUsedEmojis\"\n :selected-tabset=\"selectedTabset\"\n @scroll-into-tab=\"updateScrollIntoTab\"\n @is-scrolling=\"updateIsScrolling\"\n @highlighted-emoji=\"updateHighlightedEmoji\"\n @selected-emoji=\"$emit('selected-emoji', $event)\"\n @focus-skin-selector=\"$refs.skinSelectorRef.focusSkinSelector()\"\n @focus-search-input=\"showSearch ? $refs.searchInputRef.focusSearchInput() : $refs.tabsetRef.focusTabset()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n <div class=\"d-emoji-picker--footer\">\n <emoji-description :emoji=\"highlightedEmoji\" />\n <emoji-skin-selector\n ref=\"skinSelectorRef\"\n :is-hovering=\"!!highlightedEmoji\"\n :skin-selector-button-tooltip-label=\"skinSelectorButtonTooltipLabel\"\n :skin-tone=\"skinTone\"\n @skin-tone=\"$emit('skin-tone', $event)\"\n @focus-tabset=\"$refs.tabsetRef.focusTabset()\"\n @focus-last-emoji=\"$refs.emojiSelectorRef.focusLastEmoji()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport EmojiTabset from './modules/emoji_tabset.vue';\nimport EmojiSearch from './modules/emoji_search.vue';\nimport EmojiSelector from './modules/emoji_selector.vue';\nimport EmojiDescription from './modules/emoji_description.vue';\nimport EmojiSkinSelector from './modules/emoji_skin_selector.vue';\n\nexport default {\n name: 'DtEmojiPicker',\n\n components: {\n EmojiTabset,\n EmojiSearch,\n EmojiSelector,\n EmojiDescription,\n EmojiSkinSelector,\n },\n\n props: {\n /**\n * The array with recently used emoji object\n * This list is necessary to fill the recently used tab\n * @type {Array}\n * @default []\n * @example\n * <dt-emoji-picker :recentlyUsedEmojis=\"[emojiObject, emojiObject]\" />\n */\n // TODO try to simplify this to achieve an array of unicode characters and not an entire emoji data object\n recentlyUsedEmojis: {\n type: Array,\n },\n\n /**\n * The placeholder text for the search input\n * @type {String}\n * @required\n * @example\n * <dt-emoji-picker :searchPlaceholderLabel=\"'Search...'\" />\n */\n searchPlaceholderLabel: {\n type: String,\n required: true,\n },\n\n /**\n * The label for the search results tab\n * @type {String}\n * @required\n * @example\n * <dt-emoji-picker :searchResultsLabel=\"'Search results'\" />\n */\n searchResultsLabel: {\n type: String,\n required: true,\n },\n\n /**\n * The label for the search no results\n * @type {String}\n * @required\n * @example\n * <dt-emoji-picker :searchNoResultsLabel=\"'No results'\" />\n */\n searchNoResultsLabel: {\n type: String,\n required: true,\n },\n\n /**\n * The list of tabsets to show, it is necessary to be updated with the correct language\n * It must respect the provided order.\n * @type {Array}\n * @required\n * @example\n * <dt-emoji-picker\n * :tabSetLabels=\"['Most recently used', 'Smileys and people', 'Nature',\n * 'Food', 'Activity', 'Travel', 'Objects', 'Symbols', 'Flags']\" />\n */\n tabSetLabels: {\n type: Array,\n required: true,\n },\n\n /**\n * The skin tone to show the emojis\n * This prop gives the possibility to use the skin tone selected by the user previously\n * @type {String}\n * @default 'Default'\n * @values 'Default', 'Light', 'MediumLight', 'Medium', 'MediumDark', 'Dark'\n * @example\n * <dt-emoji-picker :skinTone=\"'Default'\" />\n */\n skinTone: {\n type: String,\n default: 'Default',\n },\n\n /**\n * Tooltip shown when skin selector button is hovered.\n * @type {String}\n * @required\n * @example\n * <dt-emoji-picker :skin-selector-button-tooltip-label=\"'Change default skin tone'\" />\n */\n skinSelectorButtonTooltipLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Sets the search query that filters emojis.\n * @type {String}\n * @example\n * <dt-emoji-picker search-query=\"smile\" />\n */\n searchQuery: {\n type: String,\n default: '',\n },\n\n /**\n * Shows the search input\n * @type {Boolean}\n * @example\n * <dt-emoji-picker :show-search=\"false\" />\n */\n showSearch: {\n type: Boolean,\n default: true,\n },\n },\n\n data () {\n return {\n internalSearchQuery: this.searchQuery,\n highlightedEmoji: null,\n selectedTabset: {},\n scrollIntoTab: 0,\n isScrolling: false,\n };\n },\n\n computed: {\n showRecentlyUsedTab () {\n return this.recentlyUsedEmojis?.length > 0;\n },\n },\n\n watch: {\n searchQuery (value) {\n this.internalSearchQuery = value;\n },\n },\n\n methods: {\n scrollToSelectedTabset (tabId) {\n this.internalSearchQuery = '';\n this.selectedTabset = { ...this.selectedTabset, tabId };\n },\n\n updateScrollIntoTab (value) {\n this.scrollIntoTab = value;\n },\n\n updateIsScrolling (value) {\n this.isScrolling = value;\n },\n\n updateHighlightedEmoji (emoji) {\n this.highlightedEmoji = emoji;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","name","components","DtTabGroup","DtTab","DtIcon","props","showRecentlyUsedTab","type","Boolean","default","scrollIntoTab","Number","required","isScrolling","emojiFilter","String","tabSetLabels","Array","data","selectedTab","tabsetRef","TABS_DATA","label","EMOJI_PICKER_CATEGORIES","MOST_RECENTLY_USED","icon","SMILEYS_AND_PEOPLE","NATURE","FOOD","ACTIVITY","TRAVEL","OBJECTS","SYMBOLS","FLAGS","computed","tabs","tabsData","slice","map","tab","index","id","toString","panelId","isSearching","length","watch","newVal","mounted","$nextTick","setTabsetRef","methods","selectTabset","$emit","forEach","skin","refKey","$refs","$set","$el","focusTabset","focus","handleKeyDown","event","tabId","key","blur","preventDefault","shiftKey","DtInput","DtButton","searchPlaceholderLabel","modelValue","focusSearchInput","updateModelValue","value","focusEmojiSelector","selectFirstEmoji","clearSearch","searchInputRef","skinTone","selectedTabset","Object","searchResultsLabel","searchNoResultsLabel","recentlyUsedEmojis","emojiRefs","emojiFilteredRefs","isFiltering","hoverFirstEmoji","fixedLabel","filteredEmojis","tabLabelObserver","currentEmojis","emojis","Nature","Food","Travel","Symbols","Flags","emojisImported","CDN_URL","tabLabels","ref","handler","searchByNameAndKeywords","immediate","newValue","newFilter","resetScroll","debouncedSearch","scrollToTab","deep","created","debounce","setupEmojiRefs","setupFilteredRefs","setupTabLabelRefs","setTabLabelObserver","beforeDestroy","disconnect","emoji","setFilteredRef","i","el","indexEmoji","setEmojiRef","searchStr","toLowerCase","filter","obj","nameIncludesSearchStr","includes","keywordsIncludeSearchStr","keywords","some","keyword","hoverEmoji","fn","delay","undefined","timeout","args","len","arguments","clearTimeout","setTimeout","apply","getImgSrc","handleImageError","target","parentNode","style","display","tabIndex","focusFirstEmoji","vm","tabLabel","tabElement","container","listRef","offsetTop","prevScrollTop","scrollTop","addEventListener","focusEmoji","isFirst","indexTab","emojiRef","position","EMOJIS_PER_ROW","numberOfMissingEmojis","emojiToJump","previousTab","emojisInPreviousTab","lastEmojiPosition","handleHorizontalNavigation","direction","handleArrowLeftFiltered","handleArrowRightFiltered","handleArrowLeft","handleArrowRight","handleKeyDownFilteredEmojis","IntersectionObserver","entries","entry","parseInt","dataset","isIntersecting","tabCategoryRef","boundingClientRect","bottom","getBoundingClientRect","observe","from","children","child","focusLastEmoji","EMOJI_PICKER_SKIN_TONE_MODIFIERS","DEFAULT","LIGHT","MEDIUM_LIGHT","MEDIUM","MEDIUM_DARK","DARK","DtTooltip","isHovering","skinSelectorButtonTooltipLabel","isOpen","skinSelected","skinsRef","cdnUrl","skinPassedIn","skinList","find","unicode_output","skinCode","oldVal","setupSkinRefs","focusSkinSelector","skinSelectorRef","selectSkin","toggleSkinList","EmojiTabset","EmojiSearch","EmojiSelector","EmojiDescription","EmojiSkinSelector","searchQuery","showSearch","internalSearchQuery","highlightedEmoji","scrollToSelectedTabset","updateScrollIntoTab","updateIsScrolling","updateHighlightedEmoji"],"mappings":"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"}
@@ -5,27 +5,26 @@ const lib_tooltip = require("./tooltip.cjs");
5
5
  const lib_button = require("./button.cjs");
6
6
  const lib_emoji = require("./emoji.cjs");
7
7
  const lib_emojiTextWrapper = require("./emoji-text-wrapper.cjs");
8
- require("../chunks/popover_constants-XnGWXaxX.js");
8
+ require("../chunks/popover_constants-h9MD6WUt.js");
9
9
  require("tippy.js");
10
10
  require("../common/utils.cjs");
11
11
  require("../common/constants.cjs");
12
12
  require("vue");
13
13
  require("../chunks/link_constants-x8NwdqmA.js");
14
- require("../chunks/index-anN_sx1F.js");
14
+ require("../chunks/index-NYFNZeHH.js");
15
15
  require("emoji-toolkit/emoji_strategy.json");
16
16
  require("./skeleton.cjs");
17
- require("../chunks/icon_constants-QYpmdE0R.js");
17
+ require("../chunks/icon_constants-VEA0wI5C.js");
18
18
  require("@dialpad/dialtone-icons/icons.json");
19
- const REACTIONS_ATTRIBUTES = [
20
- "emojiUnicodeOrShortname",
21
- "isSelected",
22
- "ariaLabel",
23
- "tooltip",
24
- "num"
25
- ];
19
+ const REACTIONS_ATTRIBUTES = ["emojiUnicodeOrShortname", "isSelected", "ariaLabel", "tooltip", "num"];
26
20
  const _sfc_main = {
27
21
  name: "DtRecipeEmojiRow",
28
- components: { DtTooltip: lib_tooltip.DtTooltip, DtButton: lib_button.DtButton, DtEmoji: lib_emoji.DtEmoji, DtEmojiTextWrapper: lib_emojiTextWrapper.DtEmojiTextWrapper },
22
+ components: {
23
+ DtTooltip: lib_tooltip.DtTooltip,
24
+ DtButton: lib_button.DtButton,
25
+ DtEmoji: lib_emoji.DtEmoji,
26
+ DtEmojiTextWrapper: lib_emojiTextWrapper.DtEmojiTextWrapper
27
+ },
29
28
  mixins: [],
30
29
  props: {
31
30
  /**
@@ -44,10 +43,7 @@ const _sfc_main = {
44
43
  }
45
44
  }
46
45
  },
47
- emits: [
48
- "emoji-clicked",
49
- "emoji-hovered"
50
- ],
46
+ emits: ["emoji-clicked", "emoji-hovered"],
51
47
  methods: {
52
48
  emojiClicked(reaction) {
53
49
  this.$emit("emoji-clicked", reaction.emojiUnicodeOrShortname);
@@ -62,25 +58,67 @@ const _sfc_main = {
62
58
  };
63
59
  var _sfc_render = function render() {
64
60
  var _vm = this, _c = _vm._self._c;
65
- return _c("span", { staticClass: "dt-emoji-row" }, [_vm._l(_vm.reactions, function(reaction) {
66
- return _c("span", { key: reaction.unicodeOutput, attrs: { "reaction": reaction } }, [_c("dt-tooltip", { staticClass: "dt-emoji-row__tooltip", attrs: { "content-class": "d-wmx464", "sticky": "popper" }, on: { "shown": (shown) => _vm.emojiHovered(reaction, shown) }, scopedSlots: _vm._u([{ key: "anchor", fn: function({ attrs }) {
67
- return [_c("dt-button", { class: ["dt-emoji-row__reaction", reaction.isSelected ? "dt-emoji-row__reaction--selected" : ""], attrs: { "importance": "clear", "size": "sm", "data-qa": "feed-item-reaction-button", "aria-label": reaction.ariaLabel, "attrs": attrs }, on: { "click": function($event) {
68
- return _vm.emojiClicked(reaction);
69
- } } }, [_c("span", { staticClass: "dt-emoji-row__emoji" }, [_c("dt-emoji", { attrs: { "size": "200", "code": reaction.emojiUnicodeOrShortname } })], 1), _c("span", { staticClass: "dt-emoji-row__reaction-number" }, [_vm._v(" " + _vm._s(reaction.num) + " ")])])];
70
- } }], null, true) }, [_c("span", { attrs: { "aria-hidden": "true" } }, [_c("dt-emoji-text-wrapper", { attrs: { "size": "200" } }, [_vm._v(" " + _vm._s(reaction.tooltip) + " ")])], 1)])], 1);
61
+ return _c("span", {
62
+ staticClass: "dt-emoji-row"
63
+ }, [_vm._l(_vm.reactions, function(reaction) {
64
+ return _c("span", {
65
+ key: reaction.unicodeOutput,
66
+ attrs: {
67
+ "reaction": reaction
68
+ }
69
+ }, [_c("dt-tooltip", {
70
+ staticClass: "dt-emoji-row__tooltip",
71
+ attrs: {
72
+ "content-class": "d-wmx464",
73
+ "sticky": "popper"
74
+ },
75
+ on: {
76
+ "shown": (shown) => _vm.emojiHovered(reaction, shown)
77
+ },
78
+ scopedSlots: _vm._u([{
79
+ key: "anchor",
80
+ fn: function({
81
+ attrs
82
+ }) {
83
+ return [_c("dt-button", {
84
+ class: ["dt-emoji-row__reaction", reaction.isSelected ? "dt-emoji-row__reaction--selected" : ""],
85
+ attrs: {
86
+ "importance": "clear",
87
+ "size": "sm",
88
+ "data-qa": "feed-item-reaction-button",
89
+ "aria-label": reaction.ariaLabel,
90
+ "attrs": attrs
91
+ },
92
+ on: {
93
+ "click": function($event) {
94
+ return _vm.emojiClicked(reaction);
95
+ }
96
+ }
97
+ }, [_c("span", {
98
+ staticClass: "dt-emoji-row__emoji"
99
+ }, [_c("dt-emoji", {
100
+ attrs: {
101
+ "size": "200",
102
+ "code": reaction.emojiUnicodeOrShortname
103
+ }
104
+ })], 1), _c("span", {
105
+ staticClass: "dt-emoji-row__reaction-number"
106
+ }, [_vm._v(" " + _vm._s(reaction.num) + " ")])])];
107
+ }
108
+ }], null, true)
109
+ }, [_c("span", {
110
+ attrs: {
111
+ "aria-hidden": "true"
112
+ }
113
+ }, [_c("dt-emoji-text-wrapper", {
114
+ attrs: {
115
+ "size": "200"
116
+ }
117
+ }, [_vm._v(" " + _vm._s(reaction.tooltip) + " ")])], 1)])], 1);
71
118
  }), _vm._t("picker")], 2);
72
119
  };
73
120
  var _sfc_staticRenderFns = [];
74
- var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
75
- _sfc_main,
76
- _sfc_render,
77
- _sfc_staticRenderFns,
78
- false,
79
- null,
80
- null,
81
- null,
82
- null
83
- );
121
+ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(_sfc_main, _sfc_render, _sfc_staticRenderFns, false, null, null, null, null);
84
122
  const emoji_row = __component__.exports;
85
123
  exports.DtRecipeEmojiRow = emoji_row;
86
124
  exports.REACTIONS_ATTRIBUTES = REACTIONS_ATTRIBUTES;
@@ -1 +1 @@
1
- {"version":3,"file":"emoji-row.cjs","sources":["../../recipes/conversation_view/emoji_row/emoji_row_constants.js","../../recipes/conversation_view/emoji_row/emoji_row.vue"],"sourcesContent":["export const REACTIONS_ATTRIBUTES = [\n 'emojiUnicodeOrShortname',\n 'isSelected',\n 'ariaLabel',\n 'tooltip',\n 'num',\n];\n\nexport default {\n REACTIONS_ATTRIBUTES,\n};\n","<template>\n <span class=\"dt-emoji-row\">\n <span\n v-for=\"reaction in reactions\"\n :key=\"reaction.unicodeOutput\"\n :reaction=\"reaction\"\n >\n <dt-tooltip\n class=\"dt-emoji-row__tooltip\"\n content-class=\"d-wmx464\"\n sticky=\"popper\"\n @shown=\"(shown) => emojiHovered(reaction, shown)\"\n >\n <span aria-hidden=\"true\">\n <dt-emoji-text-wrapper size=\"200\">\n {{ reaction.tooltip }}\n </dt-emoji-text-wrapper>\n </span>\n <template #anchor=\"{ attrs }\">\n <dt-button\n importance=\"clear\"\n size=\"sm\"\n data-qa=\"feed-item-reaction-button\"\n :class=\"['dt-emoji-row__reaction', reaction.isSelected ? 'dt-emoji-row__reaction--selected' : '']\"\n :aria-label=\"reaction.ariaLabel\"\n :attrs=\"attrs\"\n @click=\"emojiClicked(reaction)\"\n >\n <span class=\"dt-emoji-row__emoji\">\n <dt-emoji\n size=\"200\"\n :code=\"reaction.emojiUnicodeOrShortname\"\n />\n </span>\n <span class=\"dt-emoji-row__reaction-number\">\n {{ reaction.num }}\n </span>\n </dt-button>\n </template>\n </dt-tooltip>\n </span>\n <!-- @slot Slot for emoji picker component, including the anchor. -->\n <slot name=\"picker\" />\n </span>\n</template>\n\n<script>\nimport { REACTIONS_ATTRIBUTES } from './emoji_row_constants.js';\nimport { DtButton } from '../../../components/button';\nimport { DtTooltip } from '../../../components/tooltip';\nimport { DtEmoji } from '../../../components/emoji';\nimport { DtEmojiTextWrapper } from '../../../components/emoji_text_wrapper';\n\nexport default {\n name: 'DtRecipeEmojiRow',\n\n components: { DtTooltip, DtButton, DtEmoji, DtEmojiTextWrapper },\n\n mixins: [],\n\n props: {\n /**\n * Provide an array of reaction objects to be shown.\n */\n reactions: {\n type: Array,\n default: () => [],\n validator: (reactions) => {\n for (const reaction of reactions) {\n const validInput = REACTIONS_ATTRIBUTES.every((attribute) => reaction[attribute] !== undefined ?? false);\n if (!validInput) return false;\n }\n return true;\n },\n },\n },\n\n emits: [\n 'emoji-clicked',\n 'emoji-hovered',\n ],\n\n methods: {\n emojiClicked (reaction) {\n this.$emit('emoji-clicked', reaction.emojiUnicodeOrShortname);\n },\n\n emojiHovered (reaction, state) {\n this.$emit('emoji-hovered', {\n reaction: reaction.emojiUnicodeOrShortname,\n state,\n });\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-emoji-row {\n display: flex;\n flex-wrap: wrap;\n gap: var(--dt-space-300);\n\n &__tooltip {\n display: inline-block;\n }\n\n &__reaction {\n --emoji-item-color-inset-shadow: transparent;\n --emoji-item-color-foreground: var(--dt-action-color-foreground-muted-default);\n --emoji-item-color-background: var(--dt-action-color-background-muted-hover);\n\n padding: var(--dt-space-300) var(--dt-space-400);\n border-radius: var(--dt-size-radius-pill);\n border: 0;\n color: var(--emoji-item-color-foreground);\n background-color: var(--emoji-item-color-background);\n box-shadow: inset 0 0 0 var(--dt-size-border-150) var(--emoji-item-color-inset-shadow);\n height: var(--dt-size-550);\n\n &.dt-emoji-row__picker {\n padding: var(--dt-space-200) var(--dt-space-350);\n }\n\n &:hover {\n --emoji-item-color-inset-shadow: var(--dt-color-border-subtle);\n --emoji-item-color-foreground: var(--dt-action-color-foreground-muted-hover);\n }\n\n &:active {\n --emoji-item-color-background: var(--dt-action-color-background-muted-active);\n --emoji-item-color-foreground: var(--dt-action-color-foreground-muted-active);\n\n transform: scale(.98);\n }\n\n &--selected {\n --emoji-item-color-inset-shadow: var(--dt-color-border-brand);\n --emoji-item-color-foreground: var(--dt-color-link-primary);\n --emoji-item-color-background: var(--dt-action-color-background-base-hover);\n\n .dt-emoji-row__reaction-number {\n font-weight: var(--dt-font-weight-bold);\n }\n\n &:hover {\n --emoji-item-color-inset-shadow: var(--dt-color-border-brand-strong);\n --emoji-item-color-foreground: var(--dt-color-link-primary-hover);\n }\n\n &:active {\n --emoji-item-color-background: var(--dt-action-color-background-base-active);\n }\n }\n }\n\n &__emoji {\n margin-right: var(--dt-space-300);\n display: inline-flex;\n }\n\n &__reaction-number {\n // set font properties individually to change line height,\n // as font shorthand property will override line-height.\n font-weight: var(--dt-typography-body-sm-font-weight);\n font-size: var(--dt-typography-body-sm-font-size);\n font-family: var(--dt-typography-body-sm-font-family);\n line-height: var(--dt-font-line-height-100);\n font-variant: tabular-nums;\n }\n}\n</style>\n"],"names":["DtTooltip","DtButton","DtEmoji","DtEmojiTextWrapper"],"mappings":";;;;;;;;;;;;;;;;;;AAAY,MAAC,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AC+CA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA,EAAA,WAAAA,YAAA,WAAA,UAAAC,qBAAAC,SAAAA,UAAAA,SAAAC,oBAAAA,qBAAAA,mBAAA;AAAA,EAEA,QAAA,CAAA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,CAAA;AAAA,MACA,WAAA,CAAA,cAAA;AACA,mBAAA,YAAA,WAAA;AACA,gBAAA,aAAA,qBAAA,MAAA,CAAA,cAAA,SAAA,SAAA,MAAA,MAAA;AACA,cAAA,CAAA;AAAA,mBAAA;AAAA,QACA;AACA,eAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,aAAA,UAAA;AACA,WAAA,MAAA,iBAAA,SAAA,uBAAA;AAAA,IACA;AAAA,IAEA,aAAA,UAAA,OAAA;AACA,WAAA,MAAA,iBAAA;AAAA,QACA,UAAA,SAAA;AAAA,QACA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"emoji-row.cjs","sources":["../../recipes/conversation_view/emoji_row/emoji_row_constants.js","../../recipes/conversation_view/emoji_row/emoji_row.vue"],"sourcesContent":["export const REACTIONS_ATTRIBUTES = [\n 'emojiUnicodeOrShortname',\n 'isSelected',\n 'ariaLabel',\n 'tooltip',\n 'num',\n];\n\nexport default {\n REACTIONS_ATTRIBUTES,\n};\n","<template>\n <span class=\"dt-emoji-row\">\n <span\n v-for=\"reaction in reactions\"\n :key=\"reaction.unicodeOutput\"\n :reaction=\"reaction\"\n >\n <dt-tooltip\n class=\"dt-emoji-row__tooltip\"\n content-class=\"d-wmx464\"\n sticky=\"popper\"\n @shown=\"(shown) => emojiHovered(reaction, shown)\"\n >\n <span aria-hidden=\"true\">\n <dt-emoji-text-wrapper size=\"200\">\n {{ reaction.tooltip }}\n </dt-emoji-text-wrapper>\n </span>\n <template #anchor=\"{ attrs }\">\n <dt-button\n importance=\"clear\"\n size=\"sm\"\n data-qa=\"feed-item-reaction-button\"\n :class=\"['dt-emoji-row__reaction', reaction.isSelected ? 'dt-emoji-row__reaction--selected' : '']\"\n :aria-label=\"reaction.ariaLabel\"\n :attrs=\"attrs\"\n @click=\"emojiClicked(reaction)\"\n >\n <span class=\"dt-emoji-row__emoji\">\n <dt-emoji\n size=\"200\"\n :code=\"reaction.emojiUnicodeOrShortname\"\n />\n </span>\n <span class=\"dt-emoji-row__reaction-number\">\n {{ reaction.num }}\n </span>\n </dt-button>\n </template>\n </dt-tooltip>\n </span>\n <!-- @slot Slot for emoji picker component, including the anchor. -->\n <slot name=\"picker\" />\n </span>\n</template>\n\n<script>\nimport { REACTIONS_ATTRIBUTES } from './emoji_row_constants.js';\nimport { DtButton } from '../../../components/button';\nimport { DtTooltip } from '../../../components/tooltip';\nimport { DtEmoji } from '../../../components/emoji';\nimport { DtEmojiTextWrapper } from '../../../components/emoji_text_wrapper';\n\nexport default {\n name: 'DtRecipeEmojiRow',\n\n components: { DtTooltip, DtButton, DtEmoji, DtEmojiTextWrapper },\n\n mixins: [],\n\n props: {\n /**\n * Provide an array of reaction objects to be shown.\n */\n reactions: {\n type: Array,\n default: () => [],\n validator: (reactions) => {\n for (const reaction of reactions) {\n const validInput = REACTIONS_ATTRIBUTES.every((attribute) => reaction[attribute] !== undefined ?? false);\n if (!validInput) return false;\n }\n return true;\n },\n },\n },\n\n emits: [\n 'emoji-clicked',\n 'emoji-hovered',\n ],\n\n methods: {\n emojiClicked (reaction) {\n this.$emit('emoji-clicked', reaction.emojiUnicodeOrShortname);\n },\n\n emojiHovered (reaction, state) {\n this.$emit('emoji-hovered', {\n reaction: reaction.emojiUnicodeOrShortname,\n state,\n });\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-emoji-row {\n display: flex;\n flex-wrap: wrap;\n gap: var(--dt-space-300);\n\n &__tooltip {\n display: inline-block;\n }\n\n &__reaction {\n --emoji-item-color-inset-shadow: transparent;\n --emoji-item-color-foreground: var(--dt-action-color-foreground-muted-default);\n --emoji-item-color-background: var(--dt-action-color-background-muted-hover);\n\n padding: var(--dt-space-300) var(--dt-space-400);\n border-radius: var(--dt-size-radius-pill);\n border: 0;\n color: var(--emoji-item-color-foreground);\n background-color: var(--emoji-item-color-background);\n box-shadow: inset 0 0 0 var(--dt-size-border-150) var(--emoji-item-color-inset-shadow);\n height: var(--dt-size-550);\n\n &.dt-emoji-row__picker {\n padding: var(--dt-space-200) var(--dt-space-350);\n }\n\n &:hover {\n --emoji-item-color-inset-shadow: var(--dt-color-border-subtle);\n --emoji-item-color-foreground: var(--dt-action-color-foreground-muted-hover);\n }\n\n &:active {\n --emoji-item-color-background: var(--dt-action-color-background-muted-active);\n --emoji-item-color-foreground: var(--dt-action-color-foreground-muted-active);\n\n transform: scale(.98);\n }\n\n &--selected {\n --emoji-item-color-inset-shadow: var(--dt-color-border-brand);\n --emoji-item-color-foreground: var(--dt-color-link-primary);\n --emoji-item-color-background: var(--dt-action-color-background-base-hover);\n\n .dt-emoji-row__reaction-number {\n font-weight: var(--dt-font-weight-bold);\n }\n\n &:hover {\n --emoji-item-color-inset-shadow: var(--dt-color-border-brand-strong);\n --emoji-item-color-foreground: var(--dt-color-link-primary-hover);\n }\n\n &:active {\n --emoji-item-color-background: var(--dt-action-color-background-base-active);\n }\n }\n }\n\n &__emoji {\n margin-right: var(--dt-space-300);\n display: inline-flex;\n }\n\n &__reaction-number {\n // set font properties individually to change line height,\n // as font shorthand property will override line-height.\n font-weight: var(--dt-typography-body-sm-font-weight);\n font-size: var(--dt-typography-body-sm-font-size);\n font-family: var(--dt-typography-body-sm-font-family);\n line-height: var(--dt-font-line-height-100);\n font-variant: tabular-nums;\n }\n}\n</style>\n"],"names":["REACTIONS_ATTRIBUTES","_sfc_main","name","components","DtTooltip","DtButton","DtEmoji","DtEmojiTextWrapper","mixins","props","reactions","type","Array","default","validator","reaction","validInput","every","attribute","undefined","emits","methods","emojiClicked","$emit","emojiUnicodeOrShortname","emojiHovered","state"],"mappings":";;;;;;;;;;;;;;;;;;AAAaA,MAAAA,uBAAuB,CAClC,2BACA,cACA,aACA,WACA,KAAK;ACgDP,MAAAC,YAAA;AAAA,EACAC,MAAA;AAAA,EAEAC,YAAA;AAAA,eAAAC,YAAA;AAAA,cAAAC,WAAA;AAAA,aAAAC,UAAA;AAAA,IAAAC,oBAAAA,qBAAAA;AAAAA,EAAA;AAAA,EAEAC,QAAA,CAAA;AAAA,EAEAC,OAAA;AAAA;AAAA;AAAA;AAAA,IAIAC,WAAA;AAAA,MACAC,MAAAC;AAAAA,MACAC,SAAAA,MAAA,CAAA;AAAA,MACAC,WAAAJ,eAAA;AACA,mBAAAK,YAAAL,WAAA;AACA,gBAAAM,aAAAhB,qBAAAiB,MAAAC,eAAAH,SAAAG,SAAA,MAAAC,MAAA;AACA,cAAA,CAAAH;AAAA,mBAAA;AAAA,QACA;AACA,eAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEAI,OAAA,CACA,iBACA,eAAA;AAAA,EAGAC,SAAA;AAAA,IACAC,aAAAP,UAAA;AACA,WAAAQ,MAAA,iBAAAR,SAAAS,uBAAA;AAAA,IACA;AAAA,IAEAC,aAAAV,UAAAW,OAAA;AACA,WAAAH,MAAA,iBAAA;AAAA,QACAR,UAAAA,SAAAS;AAAAA,QACAE;AAAAA,MACA,CAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,27 +3,26 @@ import { DtTooltip } from "./tooltip.js";
3
3
  import { DtButton } from "./button.js";
4
4
  import { DtEmoji } from "./emoji.js";
5
5
  import { DtEmojiTextWrapper } from "./emoji-text-wrapper.js";
6
- import "../chunks/popover_constants-WsOUIY-m.js";
6
+ import "../chunks/popover_constants-6YkPPbnk.js";
7
7
  import "tippy.js";
8
8
  import "../common/utils.js";
9
9
  import "../common/constants.js";
10
10
  import "vue";
11
11
  import "../chunks/link_constants-AfTWrr-n.js";
12
- import "../chunks/index-ODod4Oj_.js";
12
+ import "../chunks/index-i65YVk-U.js";
13
13
  import "emoji-toolkit/emoji_strategy.json";
14
14
  import "./skeleton.js";
15
- import "../chunks/icon_constants-Dy4MEUJL.js";
15
+ import "../chunks/icon_constants-TdxqLsS2.js";
16
16
  import "@dialpad/dialtone-icons/icons.json";
17
- const REACTIONS_ATTRIBUTES = [
18
- "emojiUnicodeOrShortname",
19
- "isSelected",
20
- "ariaLabel",
21
- "tooltip",
22
- "num"
23
- ];
17
+ const REACTIONS_ATTRIBUTES = ["emojiUnicodeOrShortname", "isSelected", "ariaLabel", "tooltip", "num"];
24
18
  const _sfc_main = {
25
19
  name: "DtRecipeEmojiRow",
26
- components: { DtTooltip, DtButton, DtEmoji, DtEmojiTextWrapper },
20
+ components: {
21
+ DtTooltip,
22
+ DtButton,
23
+ DtEmoji,
24
+ DtEmojiTextWrapper
25
+ },
27
26
  mixins: [],
28
27
  props: {
29
28
  /**
@@ -42,10 +41,7 @@ const _sfc_main = {
42
41
  }
43
42
  }
44
43
  },
45
- emits: [
46
- "emoji-clicked",
47
- "emoji-hovered"
48
- ],
44
+ emits: ["emoji-clicked", "emoji-hovered"],
49
45
  methods: {
50
46
  emojiClicked(reaction) {
51
47
  this.$emit("emoji-clicked", reaction.emojiUnicodeOrShortname);
@@ -60,25 +56,67 @@ const _sfc_main = {
60
56
  };
61
57
  var _sfc_render = function render() {
62
58
  var _vm = this, _c = _vm._self._c;
63
- return _c("span", { staticClass: "dt-emoji-row" }, [_vm._l(_vm.reactions, function(reaction) {
64
- return _c("span", { key: reaction.unicodeOutput, attrs: { "reaction": reaction } }, [_c("dt-tooltip", { staticClass: "dt-emoji-row__tooltip", attrs: { "content-class": "d-wmx464", "sticky": "popper" }, on: { "shown": (shown) => _vm.emojiHovered(reaction, shown) }, scopedSlots: _vm._u([{ key: "anchor", fn: function({ attrs }) {
65
- return [_c("dt-button", { class: ["dt-emoji-row__reaction", reaction.isSelected ? "dt-emoji-row__reaction--selected" : ""], attrs: { "importance": "clear", "size": "sm", "data-qa": "feed-item-reaction-button", "aria-label": reaction.ariaLabel, "attrs": attrs }, on: { "click": function($event) {
66
- return _vm.emojiClicked(reaction);
67
- } } }, [_c("span", { staticClass: "dt-emoji-row__emoji" }, [_c("dt-emoji", { attrs: { "size": "200", "code": reaction.emojiUnicodeOrShortname } })], 1), _c("span", { staticClass: "dt-emoji-row__reaction-number" }, [_vm._v(" " + _vm._s(reaction.num) + " ")])])];
68
- } }], null, true) }, [_c("span", { attrs: { "aria-hidden": "true" } }, [_c("dt-emoji-text-wrapper", { attrs: { "size": "200" } }, [_vm._v(" " + _vm._s(reaction.tooltip) + " ")])], 1)])], 1);
59
+ return _c("span", {
60
+ staticClass: "dt-emoji-row"
61
+ }, [_vm._l(_vm.reactions, function(reaction) {
62
+ return _c("span", {
63
+ key: reaction.unicodeOutput,
64
+ attrs: {
65
+ "reaction": reaction
66
+ }
67
+ }, [_c("dt-tooltip", {
68
+ staticClass: "dt-emoji-row__tooltip",
69
+ attrs: {
70
+ "content-class": "d-wmx464",
71
+ "sticky": "popper"
72
+ },
73
+ on: {
74
+ "shown": (shown) => _vm.emojiHovered(reaction, shown)
75
+ },
76
+ scopedSlots: _vm._u([{
77
+ key: "anchor",
78
+ fn: function({
79
+ attrs
80
+ }) {
81
+ return [_c("dt-button", {
82
+ class: ["dt-emoji-row__reaction", reaction.isSelected ? "dt-emoji-row__reaction--selected" : ""],
83
+ attrs: {
84
+ "importance": "clear",
85
+ "size": "sm",
86
+ "data-qa": "feed-item-reaction-button",
87
+ "aria-label": reaction.ariaLabel,
88
+ "attrs": attrs
89
+ },
90
+ on: {
91
+ "click": function($event) {
92
+ return _vm.emojiClicked(reaction);
93
+ }
94
+ }
95
+ }, [_c("span", {
96
+ staticClass: "dt-emoji-row__emoji"
97
+ }, [_c("dt-emoji", {
98
+ attrs: {
99
+ "size": "200",
100
+ "code": reaction.emojiUnicodeOrShortname
101
+ }
102
+ })], 1), _c("span", {
103
+ staticClass: "dt-emoji-row__reaction-number"
104
+ }, [_vm._v(" " + _vm._s(reaction.num) + " ")])])];
105
+ }
106
+ }], null, true)
107
+ }, [_c("span", {
108
+ attrs: {
109
+ "aria-hidden": "true"
110
+ }
111
+ }, [_c("dt-emoji-text-wrapper", {
112
+ attrs: {
113
+ "size": "200"
114
+ }
115
+ }, [_vm._v(" " + _vm._s(reaction.tooltip) + " ")])], 1)])], 1);
69
116
  }), _vm._t("picker")], 2);
70
117
  };
71
118
  var _sfc_staticRenderFns = [];
72
- var __component__ = /* @__PURE__ */ normalizeComponent(
73
- _sfc_main,
74
- _sfc_render,
75
- _sfc_staticRenderFns,
76
- false,
77
- null,
78
- null,
79
- null,
80
- null
81
- );
119
+ var __component__ = /* @__PURE__ */ normalizeComponent(_sfc_main, _sfc_render, _sfc_staticRenderFns, false, null, null, null, null);
82
120
  const emoji_row = __component__.exports;
83
121
  export {
84
122
  emoji_row as DtRecipeEmojiRow,