@dialpad/dialtone-vue 3.119.0 → 3.120.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 (281) hide show
  1. package/dist/chunks/_plugin-vue_export-helper-6_y-gaV6.js +2 -0
  2. package/dist/chunks/_plugin-vue_export-helper-6_y-gaV6.js.map +1 -0
  3. package/dist/chunks/dropdown-UO3UJalk.js +2 -0
  4. package/dist/chunks/dropdown-UO3UJalk.js.map +1 -0
  5. package/dist/chunks/dropdown_constants-KHFvVI2L.js +2 -0
  6. package/dist/chunks/dropdown_constants-KHFvVI2L.js.map +1 -0
  7. package/dist/chunks/icon_constants-2S_OSQ1t.js +2 -0
  8. package/dist/chunks/icon_constants-2S_OSQ1t.js.map +1 -0
  9. package/dist/chunks/index-6tYeqbgP.js +3 -0
  10. package/dist/chunks/index-6tYeqbgP.js.map +1 -0
  11. package/dist/chunks/index-IBtQ5jRJ.js +2 -0
  12. package/dist/chunks/index-IBtQ5jRJ.js.map +1 -0
  13. package/dist/chunks/input-0Uksk4DP.js +2 -0
  14. package/dist/chunks/input-0Uksk4DP.js.map +1 -0
  15. package/dist/chunks/input_group-AS760Cp7.js +2 -0
  16. package/dist/chunks/input_group-AS760Cp7.js.map +1 -0
  17. package/dist/chunks/keyboard_list_navigation-N74Bpdq7.js +2 -0
  18. package/dist/chunks/keyboard_list_navigation-N74Bpdq7.js.map +1 -0
  19. package/dist/chunks/link_constants-Kn6kP4i1.js +2 -0
  20. package/dist/chunks/link_constants-Kn6kP4i1.js.map +1 -0
  21. package/dist/chunks/list_item_constants-Tsz5CO1m.js +2 -0
  22. package/dist/chunks/list_item_constants-Tsz5CO1m.js.map +1 -0
  23. package/dist/chunks/modal-qEzlo0Sj.js +2 -0
  24. package/dist/chunks/modal-qEzlo0Sj.js.map +1 -0
  25. package/dist/chunks/notice_action-jO199emq.js +2 -0
  26. package/dist/chunks/notice_action-jO199emq.js.map +1 -0
  27. package/dist/chunks/notice_constants-mC6al2Dm.js +2 -0
  28. package/dist/chunks/notice_constants-mC6al2Dm.js.map +1 -0
  29. package/dist/chunks/popover_constants-hOEhklvr.js +2 -0
  30. package/dist/chunks/popover_constants-hOEhklvr.js.map +1 -0
  31. package/dist/chunks/sr_only_close_button-iD7s1Pbj.js +3 -0
  32. package/dist/chunks/sr_only_close_button-iD7s1Pbj.js.map +1 -0
  33. package/dist/chunks/stack_constants-m9Ickqw0.js +2 -0
  34. package/dist/chunks/stack_constants-m9Ickqw0.js.map +1 -0
  35. package/dist/chunks/tab-at7WWglk.js +2 -0
  36. package/dist/chunks/tab-at7WWglk.js.map +1 -0
  37. package/dist/component-documentation.json +1 -1
  38. package/dist/dialtone-vue.cjs +2 -0
  39. package/dist/dialtone-vue.cjs.map +1 -0
  40. package/dist/lib/attachment-carousel.cjs +2 -0
  41. package/dist/lib/attachment-carousel.cjs.map +1 -0
  42. package/dist/lib/attachment-carousel.js +2 -3
  43. package/dist/lib/attachment-carousel.js.map +1 -1
  44. package/dist/lib/avatar.cjs +2 -0
  45. package/dist/lib/avatar.cjs.map +1 -0
  46. package/dist/lib/avatar.js +2 -3
  47. package/dist/lib/avatar.js.map +1 -1
  48. package/dist/lib/badge.cjs +2 -0
  49. package/dist/lib/badge.cjs.map +1 -0
  50. package/dist/lib/badge.js +2 -3
  51. package/dist/lib/badge.js.map +1 -1
  52. package/dist/lib/banner.cjs +3 -0
  53. package/dist/lib/banner.cjs.map +1 -0
  54. package/dist/lib/banner.js +6 -7
  55. package/dist/lib/banner.js.map +1 -1
  56. package/dist/lib/breadcrumbs.cjs +2 -0
  57. package/dist/lib/breadcrumbs.cjs.map +1 -0
  58. package/dist/lib/button-group.cjs +2 -0
  59. package/dist/lib/button-group.cjs.map +1 -0
  60. package/dist/lib/button.cjs +2 -0
  61. package/dist/lib/button.cjs.map +1 -0
  62. package/dist/lib/callbar-button-with-popover.cjs +2 -0
  63. package/dist/lib/callbar-button-with-popover.cjs.map +1 -0
  64. package/dist/lib/callbar-button-with-popover.js +9 -10
  65. package/dist/lib/callbar-button-with-popover.js.map +1 -1
  66. package/dist/lib/callbar-button.cjs +2 -0
  67. package/dist/lib/callbar-button.cjs.map +1 -0
  68. package/dist/lib/callbox.cjs +2 -0
  69. package/dist/lib/callbox.cjs.map +1 -0
  70. package/dist/lib/callbox.js +2 -3
  71. package/dist/lib/callbox.js.map +1 -1
  72. package/dist/lib/card.cjs +2 -0
  73. package/dist/lib/card.cjs.map +1 -0
  74. package/dist/lib/checkbox-group.cjs +2 -0
  75. package/dist/lib/checkbox-group.cjs.map +1 -0
  76. package/dist/lib/checkbox.cjs +2 -0
  77. package/dist/lib/checkbox.cjs.map +1 -0
  78. package/dist/lib/chip.cjs +2 -0
  79. package/dist/lib/chip.cjs.map +1 -0
  80. package/dist/lib/chip.js +10 -11
  81. package/dist/lib/chip.js.map +1 -1
  82. package/dist/lib/codeblock.cjs +3 -0
  83. package/dist/lib/codeblock.cjs.map +1 -0
  84. package/dist/lib/collapsible.cjs +2 -0
  85. package/dist/lib/collapsible.cjs.map +1 -0
  86. package/dist/lib/collapsible.js +7 -8
  87. package/dist/lib/collapsible.js.map +1 -1
  88. package/dist/lib/combobox-multi-select.cjs +2 -0
  89. package/dist/lib/combobox-multi-select.cjs.map +1 -0
  90. package/dist/lib/combobox-with-popover.cjs +2 -0
  91. package/dist/lib/combobox-with-popover.cjs.map +1 -0
  92. package/dist/lib/combobox.cjs +2 -0
  93. package/dist/lib/combobox.cjs.map +1 -0
  94. package/dist/lib/constants.cjs +2 -0
  95. package/dist/lib/constants.cjs.map +1 -0
  96. package/dist/lib/contact-info.cjs +2 -0
  97. package/dist/lib/contact-info.cjs.map +1 -0
  98. package/dist/lib/contact-info.js +2 -3
  99. package/dist/lib/contact-info.js.map +1 -1
  100. package/dist/lib/contact-row.cjs +2 -0
  101. package/dist/lib/contact-row.cjs.map +1 -0
  102. package/dist/lib/datepicker.cjs +2 -0
  103. package/dist/lib/datepicker.cjs.map +1 -0
  104. package/dist/lib/datepicker.js +12 -13
  105. package/dist/lib/datepicker.js.map +1 -1
  106. package/dist/lib/dates.cjs +2 -0
  107. package/dist/lib/dates.cjs.map +1 -0
  108. package/dist/lib/description-list.cjs +2 -0
  109. package/dist/lib/description-list.cjs.map +1 -0
  110. package/dist/lib/dropdown.cjs +2 -0
  111. package/dist/lib/dropdown.cjs.map +1 -0
  112. package/dist/lib/dropdown.js +6 -7
  113. package/dist/lib/dropdown.js.map +1 -1
  114. package/dist/lib/editor.cjs +2 -0
  115. package/dist/lib/editor.cjs.map +1 -0
  116. package/dist/lib/emoji-picker.cjs +2 -0
  117. package/dist/lib/emoji-picker.cjs.map +1 -0
  118. package/dist/lib/emoji-picker.js +2 -3
  119. package/dist/lib/emoji-picker.js.map +1 -1
  120. package/dist/lib/emoji-row.cjs +2 -0
  121. package/dist/lib/emoji-row.cjs.map +1 -0
  122. package/dist/lib/emoji-text-wrapper.cjs +2 -0
  123. package/dist/lib/emoji-text-wrapper.cjs.map +1 -0
  124. package/dist/lib/emoji.cjs +2 -0
  125. package/dist/lib/emoji.cjs.map +1 -0
  126. package/dist/lib/feed-item-row.cjs +2 -0
  127. package/dist/lib/feed-item-row.cjs.map +1 -0
  128. package/dist/lib/feed-item-row.js +11 -12
  129. package/dist/lib/feed-item-row.js.map +1 -1
  130. package/dist/lib/feed-pill.cjs +2 -0
  131. package/dist/lib/feed-pill.cjs.map +1 -0
  132. package/dist/lib/feed-pill.js +2 -3
  133. package/dist/lib/feed-pill.js.map +1 -1
  134. package/dist/lib/general-row.cjs +2 -0
  135. package/dist/lib/general-row.cjs.map +1 -0
  136. package/dist/lib/group-row.cjs +2 -0
  137. package/dist/lib/group-row.cjs.map +1 -0
  138. package/dist/lib/group-row.js +1 -1
  139. package/dist/lib/grouped-chip.cjs +2 -0
  140. package/dist/lib/grouped-chip.cjs.map +1 -0
  141. package/dist/lib/grouped-chip.js +5 -6
  142. package/dist/lib/grouped-chip.js.map +1 -1
  143. package/dist/lib/hovercard.cjs +2 -0
  144. package/dist/lib/hovercard.cjs.map +1 -0
  145. package/dist/lib/hovercard.js +7 -8
  146. package/dist/lib/hovercard.js.map +1 -1
  147. package/dist/lib/icon.cjs +2 -0
  148. package/dist/lib/icon.cjs.map +1 -0
  149. package/dist/lib/icon.js +20 -51
  150. package/dist/lib/icon.js.map +1 -1
  151. package/dist/lib/image-viewer.cjs +2 -0
  152. package/dist/lib/image-viewer.cjs.map +1 -0
  153. package/dist/lib/image-viewer.js +9 -10
  154. package/dist/lib/image-viewer.js.map +1 -1
  155. package/dist/lib/input-group.cjs +2 -0
  156. package/dist/lib/input-group.cjs.map +1 -0
  157. package/dist/lib/input.cjs +2 -0
  158. package/dist/lib/input.cjs.map +1 -0
  159. package/dist/lib/item-layout.cjs +2 -0
  160. package/dist/lib/item-layout.cjs.map +1 -0
  161. package/dist/lib/ivr-node.cjs +2 -0
  162. package/dist/lib/ivr-node.cjs.map +1 -0
  163. package/dist/lib/ivr-node.js +4 -5
  164. package/dist/lib/ivr-node.js.map +1 -1
  165. package/dist/lib/keyboard-shortcut.cjs +2 -0
  166. package/dist/lib/keyboard-shortcut.cjs.map +1 -0
  167. package/dist/lib/keyboard-shortcut.js +4 -5
  168. package/dist/lib/keyboard-shortcut.js.map +1 -1
  169. package/dist/lib/lazy-show.cjs +2 -0
  170. package/dist/lib/lazy-show.cjs.map +1 -0
  171. package/dist/lib/link.cjs +2 -0
  172. package/dist/lib/link.cjs.map +1 -0
  173. package/dist/lib/list-item-group.cjs +2 -0
  174. package/dist/lib/list-item-group.cjs.map +1 -0
  175. package/dist/lib/list-item.cjs +2 -0
  176. package/dist/lib/list-item.cjs.map +1 -0
  177. package/dist/lib/list-item.js +2 -3
  178. package/dist/lib/list-item.js.map +1 -1
  179. package/dist/lib/message-input.cjs +2 -0
  180. package/dist/lib/message-input.cjs.map +1 -0
  181. package/dist/lib/message-input.js +148 -100
  182. package/dist/lib/message-input.js.map +1 -1
  183. package/dist/lib/mixins.cjs +2 -0
  184. package/dist/lib/mixins.cjs.map +1 -0
  185. package/dist/lib/modal.cjs +3 -0
  186. package/dist/lib/modal.cjs.map +1 -0
  187. package/dist/lib/modal.js +11 -12
  188. package/dist/lib/modal.js.map +1 -1
  189. package/dist/lib/notice.cjs +2 -0
  190. package/dist/lib/notice.cjs.map +1 -0
  191. package/dist/lib/notice.js +2 -3
  192. package/dist/lib/notice.js.map +1 -1
  193. package/dist/lib/pagination.cjs +2 -0
  194. package/dist/lib/pagination.cjs.map +1 -0
  195. package/dist/lib/pagination.js +2 -3
  196. package/dist/lib/pagination.js.map +1 -1
  197. package/dist/lib/popover.cjs +2 -0
  198. package/dist/lib/popover.cjs.map +1 -0
  199. package/dist/lib/popover.js +4 -5
  200. package/dist/lib/popover.js.map +1 -1
  201. package/dist/lib/presence.cjs +2 -0
  202. package/dist/lib/presence.cjs.map +1 -0
  203. package/dist/lib/radio-group.cjs +2 -0
  204. package/dist/lib/radio-group.cjs.map +1 -0
  205. package/dist/lib/radio.cjs +2 -0
  206. package/dist/lib/radio.cjs.map +1 -0
  207. package/dist/lib/rich-text-editor.cjs +2 -0
  208. package/dist/lib/rich-text-editor.cjs.map +1 -0
  209. package/dist/lib/rich-text-editor.js +174 -142
  210. package/dist/lib/rich-text-editor.js.map +1 -1
  211. package/dist/lib/root-layout.cjs +2 -0
  212. package/dist/lib/root-layout.cjs.map +1 -0
  213. package/dist/lib/scroller.cjs +2 -0
  214. package/dist/lib/scroller.cjs.map +1 -0
  215. package/dist/lib/select-menu.cjs +2 -0
  216. package/dist/lib/select-menu.cjs.map +1 -0
  217. package/dist/lib/settings-menu-button.cjs +2 -0
  218. package/dist/lib/settings-menu-button.cjs.map +1 -0
  219. package/dist/lib/settings-menu-button.js +2 -3
  220. package/dist/lib/settings-menu-button.js.map +1 -1
  221. package/dist/lib/skeleton.cjs +2 -0
  222. package/dist/lib/skeleton.cjs.map +1 -0
  223. package/dist/lib/stack.cjs +2 -0
  224. package/dist/lib/stack.cjs.map +1 -0
  225. package/dist/lib/tabs.cjs +2 -0
  226. package/dist/lib/tabs.cjs.map +1 -0
  227. package/dist/lib/time-pill.cjs +2 -0
  228. package/dist/lib/time-pill.cjs.map +1 -0
  229. package/dist/lib/toast.cjs +2 -0
  230. package/dist/lib/toast.cjs.map +1 -0
  231. package/dist/lib/toast.js +2 -3
  232. package/dist/lib/toast.js.map +1 -1
  233. package/dist/lib/toggle.cjs +2 -0
  234. package/dist/lib/toggle.cjs.map +1 -0
  235. package/dist/lib/tooltip-directive.cjs +2 -0
  236. package/dist/lib/tooltip-directive.cjs.map +1 -0
  237. package/dist/lib/tooltip.cjs +2 -0
  238. package/dist/lib/tooltip.cjs.map +1 -0
  239. package/dist/lib/top-banner-info.cjs +2 -0
  240. package/dist/lib/top-banner-info.cjs.map +1 -0
  241. package/dist/lib/unread-pill.cjs +2 -0
  242. package/dist/lib/unread-pill.cjs.map +1 -0
  243. package/dist/lib/unread-pill.js +2 -3
  244. package/dist/lib/unread-pill.js.map +1 -1
  245. package/dist/lib/utils.cjs +2 -0
  246. package/dist/lib/utils.cjs.map +1 -0
  247. package/dist/lib/validation-messages.cjs +2 -0
  248. package/dist/lib/validation-messages.cjs.map +1 -0
  249. package/dist/lib/validators.cjs +2 -0
  250. package/dist/lib/validators.cjs.map +1 -0
  251. package/dist/style.css +1 -1
  252. package/dist/types/components/avatar/avatar.vue.d.ts +1 -1
  253. package/dist/types/components/button/button.vue.d.ts +2 -2
  254. package/dist/types/components/card/card.vue.d.ts +1 -1
  255. package/dist/types/components/chip/chip.vue.d.ts +1 -1
  256. package/dist/types/components/collapsible/collapsible.vue.d.ts +2 -2
  257. package/dist/types/components/combobox/combobox.vue.d.ts +1 -1
  258. package/dist/types/components/dropdown/dropdown.vue.d.ts +1 -1
  259. package/dist/types/components/emoji/emoji.vue.d.ts +1 -1
  260. package/dist/types/components/icon/icon.vue.d.ts +1 -19
  261. package/dist/types/components/icon/icon.vue.d.ts.map +1 -1
  262. package/dist/types/components/list_item_group/list_item_group.vue.d.ts +1 -1
  263. package/dist/types/components/modal/modal.vue.d.ts +2 -2
  264. package/dist/types/components/popover/popover_header_footer.vue.d.ts +1 -1
  265. package/dist/types/components/rich_text_editor/rich_text_editor.vue.d.ts +91 -1
  266. package/dist/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  267. package/dist/types/components/root_layout/root_layout.vue.d.ts +1 -1
  268. package/dist/types/components/skeleton/skeleton-list-item.vue.d.ts +1 -1
  269. package/dist/types/components/skeleton/skeleton-paragraph.vue.d.ts +3 -3
  270. package/dist/types/components/skeleton/skeleton-shape.vue.d.ts +2 -2
  271. package/dist/types/components/skeleton/skeleton-text.vue.d.ts +2 -2
  272. package/dist/types/components/skeleton/skeleton.vue.d.ts +1 -1
  273. package/dist/types/components/tooltip/tooltip.vue.d.ts +2 -2
  274. package/dist/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +1 -1
  275. package/dist/types/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.d.ts +1 -1
  276. package/dist/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +2 -2
  277. package/dist/types/recipes/conversation_view/message_input/message_input.vue.d.ts +90 -0
  278. package/dist/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  279. package/dist/types/recipes/leftbar/general_row/general_row.vue.d.ts +1 -1
  280. package/dist/types/recipes/leftbar/general_row/leftbar_general_row_icon.vue.d.ts +1 -1
  281. package/package.json +9 -8
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./lib/constants.cjs"),v=require("./lib/validators.cjs"),T=require("./lib/utils.cjs"),O=require("./lib/dates.cjs"),e=require("./chunks/index-IBtQ5jRJ.js"),l=require("./chunks/input-0Uksk4DP.js"),W=require("./chunks/input_group-AS760Cp7.js"),x=require("./chunks/keyboard_list_navigation-N74Bpdq7.js"),i=require("./lib/avatar.cjs"),R=require("./lib/badge.cjs"),w=require("./lib/banner.cjs"),n=require("./lib/breadcrumbs.cjs"),r=require("./lib/button.cjs"),F=require("./lib/button-group.cjs"),y=require("./lib/card.cjs"),X=require("./lib/checkbox.cjs"),J=require("./lib/checkbox-group.cjs"),A=require("./lib/chip.cjs"),z=require("./lib/codeblock.cjs"),Q=require("./lib/collapsible.cjs"),G=require("./chunks/index-6tYeqbgP.js"),o=require("./lib/datepicker.cjs"),V=require("./lib/description-list.cjs"),$=require("./chunks/dropdown-UO3UJalk.js"),ee=require("./lib/dropdown.cjs"),te=require("./chunks/dropdown_constants-KHFvVI2L.js"),I=require("./lib/emoji-picker.cjs"),_e=require("./lib/emoji-text-wrapper.cjs"),Ee=require("./lib/hovercard.cjs"),ie=require("./lib/icon.cjs"),g=require("./chunks/icon_constants-2S_OSQ1t.js"),re=require("./lib/image-viewer.cjs"),s=require("./lib/input.cjs"),oe=require("./lib/input-group.cjs"),Ie=require("./lib/item-layout.cjs"),c=require("./lib/keyboard-shortcut.cjs"),De=require("./lib/lazy-show.cjs"),Se=require("./lib/link.cjs"),K=require("./chunks/link_constants-Kn6kP4i1.js"),Te=require("./lib/list-item.cjs"),H=require("./chunks/list_item_constants-Tsz5CO1m.js"),Oe=require("./lib/list-item-group.cjs"),a=require("./lib/modal.cjs"),Re=require("./lib/notice.cjs"),L=require("./chunks/notice_action-jO199emq.js"),h=require("./chunks/notice_constants-mC6al2Dm.js"),ne=require("./lib/pagination.cjs"),Ae=require("./lib/popover.cjs"),t=require("./chunks/popover_constants-hOEhklvr.js"),C=require("./lib/presence.cjs"),k=require("./lib/radio.cjs"),ce=require("./lib/radio-group.cjs"),P=require("./lib/rich-text-editor.cjs"),b=require("./lib/root-layout.cjs"),ae=require("./lib/scroller.cjs"),p=require("./lib/select-menu.cjs"),E=require("./lib/skeleton.cjs"),Ne=require("./lib/stack.cjs"),M=require("./chunks/stack_constants-m9Ickqw0.js"),D=require("./chunks/tab-at7WWglk.js"),ue=require("./lib/tabs.cjs"),q=require("./lib/toast.cjs"),m=require("./lib/toggle.cjs"),le=require("./lib/tooltip.cjs"),se=require("./lib/validation-messages.cjs"),Le=require("./lib/tooltip-directive.cjs"),Z=require("./lib/callbar-button.cjs"),Ce=require("./lib/callbar-button-with-popover.cjs"),_=require("./lib/ivr-node.cjs"),Pe=require("./lib/grouped-chip.cjs"),N=require("./lib/combobox-multi-select.cjs"),be=require("./lib/combobox-with-popover.cjs"),pe=require("./lib/attachment-carousel.cjs"),Me=require("./lib/editor.cjs"),j=require("./lib/emoji-row.cjs"),d=require("./lib/feed-item-row.cjs"),Y=require("./lib/feed-pill.cjs"),qe=require("./lib/message-input.cjs"),me=require("./lib/time-pill.cjs"),de=require("./lib/settings-menu-button.cjs"),Be=require("./lib/contact-info.cjs"),B=require("./lib/callbox.cjs"),Ue=require("./lib/contact-row.cjs"),S=require("./lib/general-row.cjs"),Fe=require("./lib/group-row.cjs"),U=require("./lib/unread-pill.cjs"),f=require("./lib/top-banner-info.cjs");require("vue");require("date-fns");require("emoji-regex");require("@dialpad/dialtone-emojis");require("./chunks/_plugin-vue_export-helper-6_y-gaV6.js");require("@dialpad/dialtone-icons/icons.json");require("./chunks/modal-qEzlo0Sj.js");require("./chunks/sr_only_close_button-iD7s1Pbj.js");require("@dialpad/dialtone-icons/vue3");require("tippy.js");require("@tiptap/vue-3");require("@tiptap/extension-blockquote");require("@tiptap/extension-code-block");require("@tiptap/extension-document");require("@tiptap/extension-hard-break");require("@tiptap/extension-paragraph");require("@tiptap/extension-placeholder");require("@tiptap/extension-bold");require("@tiptap/extension-bullet-list");require("@tiptap/extension-italic");require("@tiptap/extension-link");require("@tiptap/extension-list-item");require("@tiptap/extension-ordered-list");require("@tiptap/extension-strike");require("@tiptap/extension-underline");require("@tiptap/extension-text");require("@tiptap/extension-text-align");require("@tiptap/core");require("@tiptap/pm/state");require("@tiptap/suggestion");require("@tiptap/extension-mention");exports.DEFAULT_VALIDATION_MESSAGE_TYPE=u.DEFAULT_VALIDATION_MESSAGE_TYPE;exports.DESCRIPTION_SIZE_TYPES=u.DESCRIPTION_SIZE_TYPES;exports.VALIDATION_MESSAGE_TYPES=u.VALIDATION_MESSAGE_TYPES;exports.validationMessageValidator=v.validationMessageValidator;exports.filterFormattedMessages=T.filterFormattedMessages;exports.formatMessages=T.formatMessages;exports.getUniqueString=T.getUniqueString;exports.getValidationState=T.getValidationState;exports.durationInHHMM=O.durationInHHMM;exports.getDateMedium=O.getDateMedium;exports.relativeDate=O.relativeDate;exports.setDateLocale=O.setDateLocale;exports.DtEmoji=e.D;exports.codeToEmojiData=e.o;Object.defineProperty(exports,"customEmojiAssetUrl",{enumerable:!0,get:()=>e.c});exports.defaultEmojiAssetUrl=e.d;Object.defineProperty(exports,"emojiFileExtensionLarge",{enumerable:!0,get:()=>e.g});Object.defineProperty(exports,"emojiFileExtensionSmall",{enumerable:!0,get:()=>e.b});Object.defineProperty(exports,"emojiImageUrlLarge",{enumerable:!0,get:()=>e.f});Object.defineProperty(exports,"emojiImageUrlSmall",{enumerable:!0,get:()=>e.a});exports.emojiJson=e.h;exports.emojiVersion=e.e;exports.filterValidShortCodes=e.q;exports.findEmojis=e.r;exports.findShortCodes=e.p;exports.getEmojiData=e.i;exports.setCustomEmojiJson=e.l;exports.setCustomEmojiUrl=e.k;exports.setEmojiAssetUrlLarge=e.j;exports.setEmojiAssetUrlSmall=e.s;exports.shortcodeToEmojiData=e.m;exports.stringToUnicode=e.n;exports.unicodeToString=e.u;exports.validateCustomEmojiJson=e.v;exports.DtCheckableInputMixin=l.C;exports.DtGroupableInputMixin=l.G;exports.DtInputMixin=l.I;exports.DtInputGroupMixin=W.I;exports.DtKeyboardListNavigationMixin=x.K;exports.AVATAR_COLORS=i.AVATAR_COLORS;exports.AVATAR_GROUP_VALIDATOR=i.AVATAR_GROUP_VALIDATOR;exports.AVATAR_ICON_SIZES=i.AVATAR_ICON_SIZES;exports.AVATAR_KIND_MODIFIERS=i.AVATAR_KIND_MODIFIERS;exports.AVATAR_PRESENCE_SIZE_MODIFIERS=i.AVATAR_PRESENCE_SIZE_MODIFIERS;exports.AVATAR_PRESENCE_STATES=i.AVATAR_PRESENCE_STATES;exports.AVATAR_SIZE_MODIFIERS=i.AVATAR_SIZE_MODIFIERS;exports.DtAvatar=i.DtAvatar;exports.BADGE_DECORATION_MODIFIERS=R.BADGE_DECORATION_MODIFIERS;exports.BADGE_KIND_MODIFIERS=R.BADGE_KIND_MODIFIERS;exports.BADGE_TYPE_MODIFIERS=R.BADGE_TYPE_MODIFIERS;exports.DtBadge=R.DtBadge;exports.DtBanner=w.DtBanner;exports.BREADCRUMBS_INVERTED_MODIFIER=n.BREADCRUMBS_INVERTED_MODIFIER;exports.BREADCRUMB_ITEM_SELECTED_MODIFIER=n.BREADCRUMB_ITEM_SELECTED_MODIFIER;exports.DtBreadcrumbItem=n.DtBreadcrumbItem;exports.DtBreadcrumbs=n.DtBreadcrumbs;exports.BUTTON_ICON_SIZES=r.BUTTON_ICON_SIZES;exports.BUTTON_IMPORTANCE_MODIFIERS=r.BUTTON_IMPORTANCE_MODIFIERS;exports.BUTTON_KIND_MODIFIERS=r.BUTTON_KIND_MODIFIERS;exports.BUTTON_SIZE_MODIFIERS=r.BUTTON_SIZE_MODIFIERS;exports.BUTTON_TYPES=r.BUTTON_TYPES;exports.DtButton=r.DtButton;exports.ICON_POSITION_MODIFIERS=r.ICON_POSITION_MODIFIERS;exports.INVALID_COMBINATION=r.INVALID_COMBINATION;exports.BUTTON_GROUP_ALIGNMENT=F.BUTTON_GROUP_ALIGNMENT;exports.DtButtonGroup=F.DtButtonGroup;exports.DtCard=y.DtCard;exports.DtCheckbox=X.DtCheckbox;exports.DtCheckboxGroup=J.DtCheckboxGroup;exports.CHIP_CLOSE_BUTTON_SIZE_MODIFIERS=A.CHIP_CLOSE_BUTTON_SIZE_MODIFIERS;exports.CHIP_ICON_SIZES=A.CHIP_ICON_SIZES;exports.CHIP_SIZE_MODIFIERS=A.CHIP_SIZE_MODIFIERS;exports.DtChip=A.DtChip;exports.DtCodeblock=z.DtCodeblock;exports.DtCollapsible=Q.DtCollapsible;exports.DtCombobox=G.D;exports.LABEL_SIZES=G.L;exports.DtDatepicker=o.DtDatepicker;exports.formatLong=o.formatLong;exports.formatMedium=o.formatMedium;exports.formatNoYear=o.formatNoYear;exports.formatNumerical=o.formatNumerical;exports.formatShort=o.formatShort;exports.DT_DESCRIPTION_LIST_DIRECTION=V.DT_DESCRIPTION_LIST_DIRECTION;exports.DtDescriptionList=V.DtDescriptionList;exports.DtDropdown=$.D;exports.DtDropdownSeparator=ee.DtDropdownSeparator;exports.DROPDOWN_PADDING_CLASSES=te.D;exports.ARROW_KEYS=I.ARROW_KEYS;exports.CDN_URL=I.CDN_URL;exports.DtEmojiPicker=I.DtEmojiPicker;exports.EMOJIS_PER_ROW=I.EMOJIS_PER_ROW;exports.EMOJI_PICKER_CATEGORIES=I.EMOJI_PICKER_CATEGORIES;exports.EMOJI_PICKER_SKIN_TONE_MODIFIERS=I.EMOJI_PICKER_SKIN_TONE_MODIFIERS;exports.DtEmojiTextWrapper=_e.DtEmojiTextWrapper;exports.DtHovercard=Ee.DtHovercard;exports.DtIcon=ie.DtIcon;exports.ICON_NAMES=g.a;exports.ICON_SIZE_MODIFIERS=g.I;exports.DtImageViewer=re.DtImageViewer;exports.DtInput=s.DtInput;exports.INPUT_SIZES=s.INPUT_SIZES;exports.INPUT_TYPES=s.INPUT_TYPES;exports.DtInputGroup=oe.DtInputGroup;exports.DtItemLayout=Ie.DtItemLayout;exports.DtKeyboardShortcut=c.DtKeyboardShortcut;exports.SHORTCUTS_ALIASES_LIST=c.SHORTCUTS_ALIASES_LIST;exports.SHORTCUTS_ICON_ALIASES=c.SHORTCUTS_ICON_ALIASES;exports.SHORTCUTS_ICON_SEPARATOR=c.SHORTCUTS_ICON_SEPARATOR;exports.DtLazyShow=De.DtLazyShow;exports.DtLink=Se.DtLink;exports.LINK_KIND_MODIFIERS=K.a;exports.LINK_VARIANTS=K.L;exports.DtListItem=Te.DtListItem;exports.LIST_ITEM_NAVIGATION_TYPES=H.a;exports.LIST_ITEM_TYPES=H.L;exports.DtListItemGroup=Oe.DtListItemGroup;exports.DtModal=a.DtModal;exports.MODAL_BANNER_KINDS=a.MODAL_BANNER_KINDS;exports.MODAL_KIND_MODIFIERS=a.MODAL_KIND_MODIFIERS;exports.MODAL_SIZE_MODIFIERS=a.MODAL_SIZE_MODIFIERS;exports.DtNotice=Re.DtNotice;exports.DtNoticeAction=L.D;exports.DtNoticeContent=L.b;exports.DtNoticeIcon=L.a;exports.NOTICE_KINDS=h.N;exports.NOTICE_ROLES=h.a;exports.DtPagination=ne.DtPagination;exports.DtPopover=Ae.DtPopover;exports.POPOVER_APPEND_TO_VALUES=t.e;exports.POPOVER_CONTENT_WIDTHS=t.c;exports.POPOVER_DIRECTIONS=t.g;exports.POPOVER_HEADER_FOOTER_PADDING_CLASSES=t.a;exports.POPOVER_INITIAL_FOCUS_STRINGS=t.d;exports.POPOVER_PADDING_CLASSES=t.P;exports.POPOVER_ROLES=t.b;exports.POPOVER_STICKY_VALUES=t.f;exports.TOOLTIP_DELAY_MS=t.h;exports.TOOLTIP_DIRECTIONS=t.T;exports.TOOLTIP_HIDE_ON_CLICK_VARIANTS=t.k;exports.TOOLTIP_KIND_MODIFIERS=t.i;exports.TOOLTIP_STICKY_VALUES=t.j;exports.DtPresence=C.DtPresence;exports.PRESENCE_STATES=C.PRESENCE_STATES;exports.PRESENCE_STATES_LIST=C.PRESENCE_STATES_LIST;exports.DtRadio=k.DtRadio;exports.RADIO_INPUT_VALIDATION_CLASSES=k.RADIO_INPUT_VALIDATION_CLASSES;exports.DtRadioGroup=ce.DtRadioGroup;exports.DtRichTextEditor=P.DtRichTextEditor;exports.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES=P.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES;exports.RICH_TEXT_EDITOR_OUTPUT_FORMATS=P.RICH_TEXT_EDITOR_OUTPUT_FORMATS;exports.DtRootLayout=b.DtRootLayout;exports.ROOT_LAYOUT_RESPONSIVE_BREAKPOINTS=b.ROOT_LAYOUT_RESPONSIVE_BREAKPOINTS;exports.ROOT_LAYOUT_SIDEBAR_POSITIONS=b.ROOT_LAYOUT_SIDEBAR_POSITIONS;exports.DtScroller=ae.DtScroller;exports.DtSelectMenu=p.DtSelectMenu;exports.SELECT_SIZE_MODIFIERS=p.SELECT_SIZE_MODIFIERS;exports.SELECT_STATE_MODIFIERS=p.SELECT_STATE_MODIFIERS;exports.DtSkeleton=E.DtSkeleton;exports.DtSkeletonListItem=E.DtSkeletonListItem;exports.DtSkeletonParagraph=E.DtSkeletonParagraph;exports.DtSkeletonShape=E.DtSkeletonShape;exports.DtSkeletonText=E.DtSkeletonText;exports.SKELETON_HEADING_HEIGHTS=E.SKELETON_HEADING_HEIGHTS;exports.SKELETON_RIPPLE_DURATION=E.SKELETON_RIPPLE_DURATION;exports.SKELETON_SHAPES=E.SKELETON_SHAPES;exports.SKELETON_SHAPE_SIZES=E.SKELETON_SHAPE_SIZES;exports.SKELETON_TEXT_TYPES=E.SKELETON_TEXT_TYPES;exports.DtStack=Ne.DtStack;exports.DT_STACK_DIRECTION=M.D;exports.DT_STACK_GAP=M.b;exports.DT_STACK_RESPONSIVE_BREAKPOINTS=M.a;exports.DtTab=D.a;exports.DtTabGroup=D.D;exports.TAB_IMPORTANCE_MODIFIERS=D.d;exports.TAB_LIST_IMPORTANCE_MODIFIERS=D.c;exports.TAB_LIST_KIND_MODIFIERS=D.T;exports.TAB_LIST_SIZES=D.b;exports.DtTabPanel=ue.DtTabPanel;exports.DtToast=q.DtToast;exports.TOAST_MIN_DURATION=q.TOAST_MIN_DURATION;exports.TOAST_ROLES=q.TOAST_ROLES;exports.DtToggle=m.DtToggle;exports.TOGGLE_CHECKED_VALUES=m.TOGGLE_CHECKED_VALUES;exports.TOGGLE_SIZE_MODIFIERS=m.TOGGLE_SIZE_MODIFIERS;exports.DtTooltip=le.DtTooltip;exports.DtValidationMessages=se.DtValidationMessages;exports.DtTooltipDirective=Le.DtTooltipDirective;exports.CALLBAR_BUTTON_VALID_WIDTH_SIZE=Z.CALLBAR_BUTTON_VALID_WIDTH_SIZE;exports.DtRecipeCallbarButton=Z.DtRecipeCallbarButton;exports.DtRecipeCallbarButtonWithPopover=Ce.DtRecipeCallbarButtonWithPopover;exports.DtRecipeIvrNode=_.DtRecipeIvrNode;exports.IVR_NODE_BRANCH=_.IVR_NODE_BRANCH;exports.IVR_NODE_EXPERT=_.IVR_NODE_EXPERT;exports.IVR_NODE_GO_TO=_.IVR_NODE_GO_TO;exports.IVR_NODE_HANGUP=_.IVR_NODE_HANGUP;exports.IVR_NODE_ICON_TYPES=_.IVR_NODE_ICON_TYPES;exports.IVR_NODE_LABELS=_.IVR_NODE_LABELS;exports.IVR_NODE_PROMPT_COLLECT=_.IVR_NODE_PROMPT_COLLECT;exports.IVR_NODE_PROMPT_MENU=_.IVR_NODE_PROMPT_MENU;exports.IVR_NODE_PROMPT_PLAY=_.IVR_NODE_PROMPT_PLAY;exports.IVR_NODE_TRANSFER=_.IVR_NODE_TRANSFER;exports.DtRecipeGroupedChip=Pe.DtRecipeGroupedChip;exports.CHIP_SIZES=N.CHIP_SIZES;exports.CHIP_TOP_POSITION=N.CHIP_TOP_POSITION;exports.DtRecipeComboboxMultiSelect=N.DtRecipeComboboxMultiSelect;exports.MULTI_SELECT_SIZES=N.MULTI_SELECT_SIZES;exports.DtRecipeComboboxWithPopover=be.DtRecipeComboboxWithPopover;exports.DtRecipeAttachmentCarousel=pe.DtRecipeAttachmentCarousel;exports.DtRecipeWysiwygEditor=Me.DtRecipeWysiwygEditor;exports.DtRecipeEmojiRow=j.DtRecipeEmojiRow;exports.REACTIONS_ATTRIBUTES=j.REACTIONS_ATTRIBUTES;exports.DEFAULT_FEED_ROW_STATE=d.DEFAULT_FEED_ROW_STATE;exports.DtRecipeFeedItemRow=d.DtRecipeFeedItemRow;exports.FEED_ROW_STATE_BACKGROUND_COLOR=d.FEED_ROW_STATE_BACKGROUND_COLOR;exports.DtRecipeFeedItemPill=Y.DtRecipeFeedItemPill;exports.FEED_ITEM_PILL_BORDER_COLORS=Y.FEED_ITEM_PILL_BORDER_COLORS;exports.DtRecipeMessageInput=qe.DtRecipeMessageInput;exports.DtRecipeTimePill=me.DtRecipeTimePill;exports.DtRecipeSettingsMenuButton=de.DtRecipeSettingsMenuButton;exports.DtRecipeContactInfo=Be.DtRecipeContactInfo;exports.CALLBOX_BADGE_COLORS=B.CALLBOX_BADGE_COLORS;exports.CALLBOX_BORDER_COLORS=B.CALLBOX_BORDER_COLORS;exports.DtRecipeCallbox=B.DtRecipeCallbox;exports.DtRecipeContactRow=Ue.DtRecipeContactRow;exports.DtRecipeGeneralRow=S.DtRecipeGeneralRow;exports.LEFTBAR_GENERAL_ROW_CONTACT_CENTER_COLORS=S.LEFTBAR_GENERAL_ROW_CONTACT_CENTER_COLORS;exports.LEFTBAR_GENERAL_ROW_CONTACT_CENTER_VALIDATION_ERROR=S.LEFTBAR_GENERAL_ROW_CONTACT_CENTER_VALIDATION_ERROR;exports.LEFTBAR_GENERAL_ROW_ICON_MAPPING=S.LEFTBAR_GENERAL_ROW_ICON_MAPPING;exports.LEFTBAR_GENERAL_ROW_ICON_SIZES=S.LEFTBAR_GENERAL_ROW_ICON_SIZES;exports.LEFTBAR_GENERAL_ROW_TYPES=S.LEFTBAR_GENERAL_ROW_TYPES;exports.DtRecipeGroupRow=Fe.DtRecipeGroupRow;exports.DtRecipeUnreadPill=U.DtRecipeUnreadPill;exports.UNREAD_PILL_DIRECTIONS=U.UNREAD_PILL_DIRECTIONS;exports.UNREAD_PILL_KINDS=U.UNREAD_PILL_KINDS;exports.COLOR_CODES=f.COLOR_CODES;exports.DtRecipeTopBannerInfo=f.DtRecipeTopBannerInfo;
2
+ //# sourceMappingURL=dialtone-vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialtone-vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),m=require("../chunks/_plugin-vue_export-helper-6_y-gaV6.js"),b=require("./image-viewer.cjs"),d=require("./button.cjs"),h=require("./icon.cjs");require("../chunks/modal-qEzlo0Sj.js");require("./constants.cjs");require("./utils.cjs");require("../chunks/link_constants-Kn6kP4i1.js");require("@dialpad/dialtone-icons/vue3");require("../chunks/icon_constants-2S_OSQ1t.js");require("@dialpad/dialtone-icons/icons.json");const g={name:"DtProgressBar",props:{progressbarAriaLabel:{type:String,required:!0},progress:{type:Number,default:20}},data:()=>({circleCircumference:50}),computed:{cssVars(){return{"--stroke-dashoffset":this.circleCircumference-this.circleCircumference*this.progress/100,"--stroke-dasharray":this.circleCircumference}}},mounted(){this.circleCircumference=this.$refs.progressbarCircle.getTotalLength()}},p=["aria-label","aria-valuenow"],f={ref:"progressbarCircle",r:"8",cx:"12",cy:"12",class:"progress-bar__circle"},w=e.createElementVNode("circle",{r:"8",cx:"12",cy:"12",class:"progress-bar__circle"},null,-1);function v(r,o,t,u,s,a){return e.openBlock(),e.createElementBlock("div",{role:"progressbar","aria-label":t.progressbarAriaLabel,tabindex:"-1","aria-valuenow":t.progress,"aria-valuemin":"0","aria-valuemax":"100"},[(e.openBlock(),e.createElementBlock("svg",{class:"progress-bar",style:e.normalizeStyle(a.cssVars)},[e.createElementVNode("circle",f,null,512),w],4))],8,p)}const A=m._(g,[["render",v]]),L={name:"DtImageCarousel",components:{DtImageViewer:b.DtImageViewer,DtButton:d.DtButton,DtIcon:h.DtIcon,DtProgressBar:A},props:{mediaItem:{type:Object,required:!0},index:{type:Number,required:!0},closeAriaLabel:{type:String,required:!0},clickToOpenAriaLabel:{type:String,required:!0},progressbarAriaLabel:{type:String,required:!0}},emits:["remove-media"],methods:{removeMediaItem(r){this.$emit("remove-media",r)}}},k={class:"dt-attachment-image"},C={class:"dt-attachment-image__top-right"};function y(r,o,t,u,s,a){const c=e.resolveComponent("dt-image-viewer"),n=e.resolveComponent("dt-progress-bar"),i=e.resolveComponent("dt-icon"),l=e.resolveComponent("dt-button");return e.openBlock(),e.createElementBlock("li",k,[e.createVNode(c,{"image-button-class":"dt-attachment-image__image-viewer","image-src":t.mediaItem.path,"image-alt":t.mediaItem.altText,"close-aria-label":t.closeAriaLabel,"aria-label":t.clickToOpenAriaLabel},null,8,["image-src","image-alt","close-aria-label","aria-label"]),e.createElementVNode("div",C,[t.mediaItem.isUploading?(e.openBlock(),e.createBlock(n,{key:0,class:"dt-attachment-image__progress-bar",progress:t.mediaItem.progress,"progressbar-aria-label":t.progressbarAriaLabel},null,8,["progress","progressbar-aria-label"])):e.createCommentVNode("",!0),e.createVNode(l,{id:`closeButton-${t.index}`,tabindex:"0",class:"dt-attachment-image__close-button",circle:"",size:"xs",importance:"clear","aria-label":t.closeAriaLabel,onClick:o[0]||(o[0]=_=>a.removeMediaItem(t.index))},{icon:e.withCtx(()=>[e.createVNode(i,{name:"close",size:"200"})]),_:1},8,["id","aria-label"])])])}const B=m._(L,[["render",y]]),q=64,x={name:"DtRecipeAttachmentCarousel",components:{DtButton:d.DtButton,DtIcon:h.DtIcon,DtImageCarousel:B},mixins:[],props:{mediaList:{type:Array,default:()=>[]},closeAriaLabel:{type:String,required:!0},clickToOpenAriaLabel:{type:String,required:!0},progressbarAriaLabel:{type:String,required:!0},leftArrowAriaLabel:{type:String,required:!0},rightArrowAriaLabel:{type:String,required:!0}},emits:["remove-media"],data(){return{showCloseButton:{},showRightArrow:!0,showLeftArrow:!1,isMounted:!1}},computed:{filteredMediaList(){return this.mediaList.filter(r=>r.type==="image"||r.type==="video")}},mounted:function(){this.showLeftArrow=this.$refs.carousel.scrollLeft>0,this.showRightArrow=this.$refs.carousel.scrollWidth>this.$refs.carousel.clientWidth},methods:{onItemFocus(r){r.currentTarget.scrollIntoView({behavior:"smooth"})},mediaComponent(r){switch(r){case"image":return"dt-image-carousel";default:return null}},removeMediaItem(r){this.showRightArrow=this.$refs.carousel.scrollWidth>this.$refs.carousel.clientWidth+q,this.$emit("remove-media",r)},closeButton(r,o){this.showCloseButton[o]=r},handleScroll(){const r=this.$refs.carousel;this.showLeftArrow=r.scrollLeft>0,this.showRightArrow=r.scrollLeft+r.clientWidth!==r.scrollWidth},leftScroll(){this.$refs.carousel.scrollTo({left:this.$refs.carousel.scrollLeft-100,behavior:"smooth"})},rightScroll(){this.$refs.carousel.scrollTo({left:this.$refs.carousel.scrollLeft+100,behavior:"smooth"})}}},S={class:"dt-attachment-carousel",role:"presentation"};function D(r,o,t,u,s,a){const c=e.resolveComponent("dt-icon"),n=e.resolveComponent("dt-button");return e.openBlock(),e.createElementBlock("div",S,[t.mediaList.length>0?(e.openBlock(),e.createElementBlock("ul",{key:0,ref:"carousel",class:"dt-attachment-carousel__media-list",onScroll:o[0]||(o[0]=(...i)=>a.handleScroll&&a.handleScroll(...i))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.filteredMediaList,(i,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.mediaComponent(i.type)),{key:`media-${l}`,index:l,"media-item":i,"close-aria-label":t.closeAriaLabel,"click-to-open-aria-label":t.clickToOpenAriaLabel,"progressbar-aria-label":t.progressbarAriaLabel,onRemoveMedia:_=>a.removeMediaItem(l),onFocusin:a.onItemFocus},null,40,["index","media-item","close-aria-label","click-to-open-aria-label","progressbar-aria-label","onRemoveMedia","onFocusin"]))),128))],544)):e.createCommentVNode("",!0),e.withDirectives(e.createVNode(n,{tabindex:"-1","aria-label":t.leftArrowAriaLabel,class:"dt-attachment-carousel__arrow dt-attachment-carousel__arrow--left",circle:"",size:"xs",importance:"clear",onClick:a.leftScroll},{icon:e.withCtx(()=>[e.createVNode(c,{name:"arrow-left",size:"100"})]),_:1},8,["aria-label","onClick"]),[[e.vShow,s.showLeftArrow]]),e.withDirectives(e.createVNode(n,{tabindex:"-1","aria-label":t.rightArrowAriaLabel,class:"dt-attachment-carousel__arrow dt-attachment-carousel__arrow--right",circle:"",size:"xs",importance:"clear",onClick:a.rightScroll},{icon:e.withCtx(()=>[e.createVNode(c,{name:"arrow-right",size:"100"})]),_:1},8,["aria-label","onClick"]),[[e.vShow,s.showRightArrow]])])}const I=m._(x,[["render",D]]);exports.DtRecipeAttachmentCarousel=I;
2
+ //# sourceMappingURL=attachment-carousel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-carousel.cjs","sources":["../../recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue","../../recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue","../../recipes/conversation_view/attachment_carousel/attachment_carousel.vue"],"sourcesContent":["<script>\nexport default {\n name: 'DtProgressBar',\n props: {\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n\n progress: {\n type: Number,\n default: 20,\n },\n },\n\n data: () => ({\n circleCircumference: 50,\n }),\n\n computed: {\n cssVars () {\n return {\n '--stroke-dashoffset':\n (this.circleCircumference - (this.circleCircumference * this.progress / 100)),\n\n '--stroke-dasharray': this.circleCircumference,\n };\n },\n },\n\n mounted () {\n this.circleCircumference = this.$refs.progressbarCircle.getTotalLength();\n },\n};\n</script>\n\n<template>\n <div\n role=\"progressbar\"\n :aria-label=\"progressbarAriaLabel\"\n tabindex=\"-1\"\n :aria-valuenow=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <svg\n class=\"progress-bar\"\n :style=\"cssVars\"\n >\n <circle\n ref=\"progressbarCircle\"\n r=\"8\"\n cx=\"12\"\n cy=\"12\"\n class=\"progress-bar__circle\"\n />\n <circle\n r=\"8\"\n cx=\"12\"\n cy=\"12\"\n class=\"progress-bar__circle\"\n />\n </svg>\n </div>\n</template>\n\n<style lang=\"less\">\n.progress-bar {\n width: var(--dt-size-550);\n height: var(--dt-size-550);\n}\n\n.progress-bar__circle {\n fill: none;\n stroke-width: 2;\n stroke-dasharray: var(--stroke-dasharray);\n}\n\n.progress-bar__circle:nth-child(1) {\n stroke-dashoffset: 0;\n stroke: var(--dt-color-black-100);\n}\n\n.progress-bar__circle:nth-child(2) {\n stroke-dashoffset: var(--stroke-dashoffset);\n stroke: var(--dt-color-purple-500);\n transition: stroke-dashoffset 500ms linear;\n}\n</style>\n","<template>\n <li\n class=\"dt-attachment-image\"\n >\n <dt-image-viewer\n image-button-class=\"dt-attachment-image__image-viewer\"\n :image-src=\"mediaItem.path\"\n :image-alt=\"mediaItem.altText\"\n :close-aria-label=\"closeAriaLabel\"\n :aria-label=\"clickToOpenAriaLabel\"\n />\n\n <!-- Loader / Close button -->\n <div\n class=\"dt-attachment-image__top-right\"\n >\n <dt-progress-bar\n v-if=\"mediaItem.isUploading\"\n class=\"dt-attachment-image__progress-bar\"\n :progress=\"mediaItem.progress\"\n :progressbar-aria-label=\"progressbarAriaLabel\"\n />\n <dt-button\n :id=\"`closeButton-${index}`\"\n tabindex=\"0\"\n class=\"dt-attachment-image__close-button\"\n circle\n size=\"xs\"\n importance=\"clear\"\n :aria-label=\"closeAriaLabel\"\n @click=\"removeMediaItem(index)\"\n >\n <template #icon>\n <dt-icon\n name=\"close\"\n size=\"200\"\n />\n </template>\n </dt-button>\n </div>\n </li>\n</template>\n\n<script>\nimport { DtImageViewer } from '@/components/image_viewer';\nimport { DtButton } from '@/components/button';\nimport { DtIcon } from '@/components/icon';\n\nimport DtProgressBar from './progress_bar.vue';\n\nexport default {\n name: 'DtImageCarousel',\n\n components: {\n DtImageViewer,\n DtButton,\n DtIcon,\n DtProgressBar,\n },\n\n props: {\n mediaItem: {\n type: Object,\n required: true,\n },\n\n index: {\n type: Number,\n required: true,\n },\n\n closeAriaLabel: {\n type: String,\n required: true,\n },\n\n clickToOpenAriaLabel: {\n type: String,\n required: true,\n },\n\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Emitted when media close button is clicked to remove the image\n *\n * @event remove-media\n * @type {Number}\n */\n 'remove-media',\n ],\n\n methods: {\n removeMediaItem (index) {\n this.$emit('remove-media', index);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-attachment-image {\n position: relative;\n\n &:focus-within .dt-attachment-image__close-button, &:hover .dt-attachment-image__close-button {\n opacity: 1;\n }\n}\n.dt-attachment-image__image-viewer {\n height: var(--dt-size-700);\n width: var(--dt-size-700);\n border: var(--dt-space-100) solid;\n border-radius: var(--br4);\n border-width: var(--dt-size-350);\n border-color: var(--dt-color-border-subtle);\n object-fit: cover;\n}\n.dt-attachment-image__top-right {\n position: absolute;\n top: var(--dt-size-100);\n right: var(--dt-size-100);\n}\n.dt-attachment-image__close-button {\n opacity: 0;\n position: absolute;\n top: inherit;\n right: inherit;\n color: var(--dt-color-neutral-white);\n background-color: var(--dt-color-black-400);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-200);\n border-color: var(--dt-color-neutral-white);\n}\n.dt-attachment-image__progress-bar {\n position: absolute;\n top: inherit;\n right: inherit;\n background-color: var(--dt-color-neutral-white);\n border-radius: 50%;\n display: flex;\n transform: rotate(-90deg);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-200);\n border-color: var(--dt-color-border-subtle);\n}\n</style>\n","<template>\n <div\n class=\"dt-attachment-carousel\"\n role=\"presentation\"\n >\n <ul\n v-if=\"mediaList.length > 0\"\n ref=\"carousel\"\n class=\"dt-attachment-carousel__media-list\"\n @scroll=\"handleScroll\"\n >\n <!-- media list -->\n <component\n :is=\"mediaComponent(mediaItem.type)\"\n v-for=\"(mediaItem, index) in filteredMediaList\"\n :key=\"`media-${index}`\"\n :index=\"index\"\n :media-item=\"mediaItem\"\n :close-aria-label=\"closeAriaLabel\"\n :click-to-open-aria-label=\"clickToOpenAriaLabel\"\n :progressbar-aria-label=\"progressbarAriaLabel\"\n @remove-media=\"removeMediaItem(index)\"\n @focusin=\"onItemFocus\"\n />\n </ul>\n\n <!-- Carousel Arrows -->\n <dt-button\n v-show=\"showLeftArrow\"\n tabindex=\"-1\"\n :aria-label=\"leftArrowAriaLabel\"\n class=\"dt-attachment-carousel__arrow dt-attachment-carousel__arrow--left\"\n circle\n size=\"xs\"\n importance=\"clear\"\n @click=\"leftScroll\"\n >\n <template #icon>\n <dt-icon\n name=\"arrow-left\"\n size=\"100\"\n />\n </template>\n </dt-button>\n <dt-button\n v-show=\"showRightArrow\"\n tabindex=\"-1\"\n :aria-label=\"rightArrowAriaLabel\"\n class=\"dt-attachment-carousel__arrow dt-attachment-carousel__arrow--right\"\n circle\n size=\"xs\"\n importance=\"clear\"\n @click=\"rightScroll\"\n >\n <template #icon>\n <dt-icon\n name=\"arrow-right\"\n size=\"100\"\n />\n </template>\n </dt-button>\n </div>\n</template>\n\n<script>\nimport { DtIcon } from '@/components/icon';\nimport { DtButton } from '@/components/button';\n\nimport DtImageCarousel from './media_components/image_carousel.vue';\n\nconst MEDIA_ITEM_WIDTH = 64;\n\nexport default {\n name: 'DtRecipeAttachmentCarousel',\n\n components: {\n DtButton,\n DtIcon,\n DtImageCarousel,\n },\n\n mixins: [],\n\n /* inheritAttrs: false is generally an option we want to set on library\n components. This allows any attributes passed in that are not recognized\n as props to be passed down to another element or component using v-bind:$attrs\n more info: https://vuejs.org/v2/api/#inheritAttrs */\n // inheritAttrs: false,\n\n props: {\n /**\n * media - object array of media objects\n * @type {Array}\n *\n * Object: {\n * path: String,\n * altText: String | null,\n * }\n */\n mediaList: {\n type: Array,\n default: () => [],\n },\n\n closeAriaLabel: {\n type: String,\n required: true,\n },\n\n clickToOpenAriaLabel: {\n type: String,\n required: true,\n },\n\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n\n leftArrowAriaLabel: {\n type: String,\n required: true,\n },\n\n rightArrowAriaLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Emitted when popover is shown or hidden\n *\n * @event remove-media\n * @type {Number}\n */\n 'remove-media',\n ],\n\n data () {\n return {\n showCloseButton: {},\n showRightArrow: true,\n showLeftArrow: false,\n isMounted: false,\n };\n },\n\n computed: {\n filteredMediaList () {\n return this.mediaList.filter((mediaItem) => mediaItem.type === 'image' || mediaItem.type === 'video');\n },\n },\n\n mounted: function () {\n this.showLeftArrow = this.$refs.carousel.scrollLeft > 0;\n this.showRightArrow = this.$refs.carousel.scrollWidth > this.$refs.carousel.clientWidth;\n },\n\n methods: {\n onItemFocus (e) {\n e.currentTarget.scrollIntoView({ behavior: 'smooth' });\n },\n\n mediaComponent (type) {\n switch (type) {\n case 'image':\n return 'dt-image-carousel';\n default:\n // unknown media type\n return null;\n }\n },\n\n removeMediaItem (index) {\n // make sure the carousel arrows is updated. 64 is the width of each media item\n this.showRightArrow = this.$refs.carousel.scrollWidth > (this.$refs.carousel.clientWidth + MEDIA_ITEM_WIDTH);\n this.$emit('remove-media', index);\n },\n\n closeButton (val, index) {\n this.showCloseButton[index] = val;\n },\n\n handleScroll () {\n const carousel = this.$refs.carousel;\n this.showLeftArrow = carousel.scrollLeft > 0;\n this.showRightArrow = !((carousel.scrollLeft + carousel.clientWidth) === carousel.scrollWidth);\n },\n\n leftScroll () {\n this.$refs.carousel.scrollTo({\n left: this.$refs.carousel.scrollLeft - 100,\n behavior: 'smooth',\n });\n },\n\n rightScroll () {\n this.$refs.carousel.scrollTo({\n left: this.$refs.carousel.scrollLeft + 100,\n behavior: 'smooth',\n });\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-attachment-carousel {\n position: relative;\n max-height: 100px;\n width: var(--dt-space-1000);\n}\n\n.dt-attachment-carousel__media-list {\n display: flex;\n flex-direction: row;\n padding-left: 0px;\n overflow-x: scroll;\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.dt-attachment-carousel__arrow {\n position: absolute;\n opacity: 0;\n\n .dt-attachment-carousel:hover & {\n opacity: 1;\n }\n background-color: var(--dt-color-neutral-white);\n top: var(--dt-space-30-percent);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-100);\n border-color: var(--bc-default);\n}\n.dt-attachment-carousel__arrow--left {\n left: var(--dt-space-300);\n}\n.dt-attachment-carousel__arrow--right {\n right: var(--dt-space-300);\n}\n\n.dt-attachment-carousel__image-viewer {\n height: var(--dt-size-700);\n width: var(--dt-size-700);\n border-radius: var(--br4);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-350);\n border-color: var(--dt-color-border-subtle);\n}\n</style>\n"],"names":["_sfc_main","_createElementVNode","_createElementBlock","$props","$options","_hoisted_2","_hoisted_3","DtImageViewer","DtButton","DtIcon","DtProgressBar","index","_hoisted_1","_openBlock","_createVNode","_component_dt_image_viewer","_createBlock","_component_dt_progress_bar","_component_dt_button","_cache","$event","_component_dt_icon","MEDIA_ITEM_WIDTH","DtImageCarousel","mediaItem","e","type","val","carousel","args","_Fragment","_renderList","_resolveDynamicComponent","$data"],"mappings":"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"}
@@ -10,7 +10,6 @@ import "../chunks/link_constants-vIUB92L4.js";
10
10
  import "@dialpad/dialtone-icons/vue3";
11
11
  import "../chunks/icon_constants-OpYAAKwF.js";
12
12
  import "@dialpad/dialtone-icons/icons.json";
13
- import "./skeleton.js";
14
13
  const D = {
15
14
  name: "DtProgressBar",
16
15
  props: {
@@ -322,8 +321,8 @@ function P(e, a, r, g, m, t) {
322
321
  ])
323
322
  ]);
324
323
  }
325
- const ae = /* @__PURE__ */ b(O, [["render", P]]);
324
+ const te = /* @__PURE__ */ b(O, [["render", P]]);
326
325
  export {
327
- ae as DtRecipeAttachmentCarousel
326
+ te as DtRecipeAttachmentCarousel
328
327
  };
329
328
  //# sourceMappingURL=attachment-carousel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment-carousel.js","sources":["../../recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue","../../recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue","../../recipes/conversation_view/attachment_carousel/attachment_carousel.vue"],"sourcesContent":["<script>\nexport default {\n name: 'DtProgressBar',\n props: {\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n\n progress: {\n type: Number,\n default: 20,\n },\n },\n\n data: () => ({\n circleCircumference: 50,\n }),\n\n computed: {\n cssVars () {\n return {\n '--stroke-dashoffset':\n (this.circleCircumference - (this.circleCircumference * this.progress / 100)),\n\n '--stroke-dasharray': this.circleCircumference,\n };\n },\n },\n\n mounted () {\n this.circleCircumference = this.$refs.progressbarCircle.getTotalLength();\n },\n};\n</script>\n\n<template>\n <div\n role=\"progressbar\"\n :aria-label=\"progressbarAriaLabel\"\n tabindex=\"-1\"\n :aria-valuenow=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <svg\n class=\"progress-bar\"\n :style=\"cssVars\"\n >\n <circle\n ref=\"progressbarCircle\"\n r=\"8\"\n cx=\"12\"\n cy=\"12\"\n class=\"progress-bar__circle\"\n />\n <circle\n r=\"8\"\n cx=\"12\"\n cy=\"12\"\n class=\"progress-bar__circle\"\n />\n </svg>\n </div>\n</template>\n\n<style lang=\"less\">\n.progress-bar {\n width: var(--dt-size-550);\n height: var(--dt-size-550);\n}\n\n.progress-bar__circle {\n fill: none;\n stroke-width: 2;\n stroke-dasharray: var(--stroke-dasharray);\n}\n\n.progress-bar__circle:nth-child(1) {\n stroke-dashoffset: 0;\n stroke: var(--dt-color-black-100);\n}\n\n.progress-bar__circle:nth-child(2) {\n stroke-dashoffset: var(--stroke-dashoffset);\n stroke: var(--dt-color-purple-500);\n transition: stroke-dashoffset 500ms linear;\n}\n</style>\n","<template>\n <li\n class=\"dt-attachment-image\"\n >\n <dt-image-viewer\n image-button-class=\"dt-attachment-image__image-viewer\"\n :image-src=\"mediaItem.path\"\n :image-alt=\"mediaItem.altText\"\n :close-aria-label=\"closeAriaLabel\"\n :aria-label=\"clickToOpenAriaLabel\"\n />\n\n <!-- Loader / Close button -->\n <div\n class=\"dt-attachment-image__top-right\"\n >\n <dt-progress-bar\n v-if=\"mediaItem.isUploading\"\n class=\"dt-attachment-image__progress-bar\"\n :progress=\"mediaItem.progress\"\n :progressbar-aria-label=\"progressbarAriaLabel\"\n />\n <dt-button\n :id=\"`closeButton-${index}`\"\n tabindex=\"0\"\n class=\"dt-attachment-image__close-button\"\n circle\n size=\"xs\"\n importance=\"clear\"\n :aria-label=\"closeAriaLabel\"\n @click=\"removeMediaItem(index)\"\n >\n <template #icon>\n <dt-icon\n name=\"close\"\n size=\"200\"\n />\n </template>\n </dt-button>\n </div>\n </li>\n</template>\n\n<script>\nimport { DtImageViewer } from '@/components/image_viewer';\nimport { DtButton } from '@/components/button';\nimport { DtIcon } from '@/components/icon';\n\nimport DtProgressBar from './progress_bar.vue';\n\nexport default {\n name: 'DtImageCarousel',\n\n components: {\n DtImageViewer,\n DtButton,\n DtIcon,\n DtProgressBar,\n },\n\n props: {\n mediaItem: {\n type: Object,\n required: true,\n },\n\n index: {\n type: Number,\n required: true,\n },\n\n closeAriaLabel: {\n type: String,\n required: true,\n },\n\n clickToOpenAriaLabel: {\n type: String,\n required: true,\n },\n\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Emitted when media close button is clicked to remove the image\n *\n * @event remove-media\n * @type {Number}\n */\n 'remove-media',\n ],\n\n methods: {\n removeMediaItem (index) {\n this.$emit('remove-media', index);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-attachment-image {\n position: relative;\n\n &:focus-within .dt-attachment-image__close-button, &:hover .dt-attachment-image__close-button {\n opacity: 1;\n }\n}\n.dt-attachment-image__image-viewer {\n height: var(--dt-size-700);\n width: var(--dt-size-700);\n border: var(--dt-space-100) solid;\n border-radius: var(--br4);\n border-width: var(--dt-size-350);\n border-color: var(--dt-color-border-subtle);\n object-fit: cover;\n}\n.dt-attachment-image__top-right {\n position: absolute;\n top: var(--dt-size-100);\n right: var(--dt-size-100);\n}\n.dt-attachment-image__close-button {\n opacity: 0;\n position: absolute;\n top: inherit;\n right: inherit;\n color: var(--dt-color-neutral-white);\n background-color: var(--dt-color-black-400);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-200);\n border-color: var(--dt-color-neutral-white);\n}\n.dt-attachment-image__progress-bar {\n position: absolute;\n top: inherit;\n right: inherit;\n background-color: var(--dt-color-neutral-white);\n border-radius: 50%;\n display: flex;\n transform: rotate(-90deg);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-200);\n border-color: var(--dt-color-border-subtle);\n}\n</style>\n","<template>\n <div\n class=\"dt-attachment-carousel\"\n role=\"presentation\"\n >\n <ul\n v-if=\"mediaList.length > 0\"\n ref=\"carousel\"\n class=\"dt-attachment-carousel__media-list\"\n @scroll=\"handleScroll\"\n >\n <!-- media list -->\n <component\n :is=\"mediaComponent(mediaItem.type)\"\n v-for=\"(mediaItem, index) in filteredMediaList\"\n :key=\"`media-${index}`\"\n :index=\"index\"\n :media-item=\"mediaItem\"\n :close-aria-label=\"closeAriaLabel\"\n :click-to-open-aria-label=\"clickToOpenAriaLabel\"\n :progressbar-aria-label=\"progressbarAriaLabel\"\n @remove-media=\"removeMediaItem(index)\"\n @focusin=\"onItemFocus\"\n />\n </ul>\n\n <!-- Carousel Arrows -->\n <dt-button\n v-show=\"showLeftArrow\"\n tabindex=\"-1\"\n :aria-label=\"leftArrowAriaLabel\"\n class=\"dt-attachment-carousel__arrow dt-attachment-carousel__arrow--left\"\n circle\n size=\"xs\"\n importance=\"clear\"\n @click=\"leftScroll\"\n >\n <template #icon>\n <dt-icon\n name=\"arrow-left\"\n size=\"100\"\n />\n </template>\n </dt-button>\n <dt-button\n v-show=\"showRightArrow\"\n tabindex=\"-1\"\n :aria-label=\"rightArrowAriaLabel\"\n class=\"dt-attachment-carousel__arrow dt-attachment-carousel__arrow--right\"\n circle\n size=\"xs\"\n importance=\"clear\"\n @click=\"rightScroll\"\n >\n <template #icon>\n <dt-icon\n name=\"arrow-right\"\n size=\"100\"\n />\n </template>\n </dt-button>\n </div>\n</template>\n\n<script>\nimport { DtIcon } from '@/components/icon';\nimport { DtButton } from '@/components/button';\n\nimport DtImageCarousel from './media_components/image_carousel.vue';\n\nconst MEDIA_ITEM_WIDTH = 64;\n\nexport default {\n name: 'DtRecipeAttachmentCarousel',\n\n components: {\n DtButton,\n DtIcon,\n DtImageCarousel,\n },\n\n mixins: [],\n\n /* inheritAttrs: false is generally an option we want to set on library\n components. This allows any attributes passed in that are not recognized\n as props to be passed down to another element or component using v-bind:$attrs\n more info: https://vuejs.org/v2/api/#inheritAttrs */\n // inheritAttrs: false,\n\n props: {\n /**\n * media - object array of media objects\n * @type {Array}\n *\n * Object: {\n * path: String,\n * altText: String | null,\n * }\n */\n mediaList: {\n type: Array,\n default: () => [],\n },\n\n closeAriaLabel: {\n type: String,\n required: true,\n },\n\n clickToOpenAriaLabel: {\n type: String,\n required: true,\n },\n\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n\n leftArrowAriaLabel: {\n type: String,\n required: true,\n },\n\n rightArrowAriaLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Emitted when popover is shown or hidden\n *\n * @event remove-media\n * @type {Number}\n */\n 'remove-media',\n ],\n\n data () {\n return {\n showCloseButton: {},\n showRightArrow: true,\n showLeftArrow: false,\n isMounted: false,\n };\n },\n\n computed: {\n filteredMediaList () {\n return this.mediaList.filter((mediaItem) => mediaItem.type === 'image' || mediaItem.type === 'video');\n },\n },\n\n mounted: function () {\n this.showLeftArrow = this.$refs.carousel.scrollLeft > 0;\n this.showRightArrow = this.$refs.carousel.scrollWidth > this.$refs.carousel.clientWidth;\n },\n\n methods: {\n onItemFocus (e) {\n e.currentTarget.scrollIntoView({ behavior: 'smooth' });\n },\n\n mediaComponent (type) {\n switch (type) {\n case 'image':\n return 'dt-image-carousel';\n default:\n // unknown media type\n return null;\n }\n },\n\n removeMediaItem (index) {\n // make sure the carousel arrows is updated. 64 is the width of each media item\n this.showRightArrow = this.$refs.carousel.scrollWidth > (this.$refs.carousel.clientWidth + MEDIA_ITEM_WIDTH);\n this.$emit('remove-media', index);\n },\n\n closeButton (val, index) {\n this.showCloseButton[index] = val;\n },\n\n handleScroll () {\n const carousel = this.$refs.carousel;\n this.showLeftArrow = carousel.scrollLeft > 0;\n this.showRightArrow = !((carousel.scrollLeft + carousel.clientWidth) === carousel.scrollWidth);\n },\n\n leftScroll () {\n this.$refs.carousel.scrollTo({\n left: this.$refs.carousel.scrollLeft - 100,\n behavior: 'smooth',\n });\n },\n\n rightScroll () {\n this.$refs.carousel.scrollTo({\n left: this.$refs.carousel.scrollLeft + 100,\n behavior: 'smooth',\n });\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-attachment-carousel {\n position: relative;\n max-height: 100px;\n width: var(--dt-space-1000);\n}\n\n.dt-attachment-carousel__media-list {\n display: flex;\n flex-direction: row;\n padding-left: 0px;\n overflow-x: scroll;\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.dt-attachment-carousel__arrow {\n position: absolute;\n opacity: 0;\n\n .dt-attachment-carousel:hover & {\n opacity: 1;\n }\n background-color: var(--dt-color-neutral-white);\n top: var(--dt-space-30-percent);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-100);\n border-color: var(--bc-default);\n}\n.dt-attachment-carousel__arrow--left {\n left: var(--dt-space-300);\n}\n.dt-attachment-carousel__arrow--right {\n right: var(--dt-space-300);\n}\n\n.dt-attachment-carousel__image-viewer {\n height: var(--dt-size-700);\n width: var(--dt-size-700);\n border-radius: var(--br4);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-350);\n border-color: var(--dt-color-border-subtle);\n}\n</style>\n"],"names":["_sfc_main","_createElementVNode","_createElementBlock","$props","$options","_hoisted_2","_hoisted_3","DtImageViewer","DtButton","DtIcon","DtProgressBar","index","_hoisted_1","_openBlock","_createVNode","_component_dt_image_viewer","_createBlock","_component_dt_progress_bar","_component_dt_button","_cache","$event","_component_dt_icon","MEDIA_ITEM_WIDTH","DtImageCarousel","mediaItem","type","val","carousel","args","_Fragment","_renderList","_resolveDynamicComponent","$data"],"mappings":"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"}
1
+ {"version":3,"file":"attachment-carousel.js","sources":["../../recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue","../../recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue","../../recipes/conversation_view/attachment_carousel/attachment_carousel.vue"],"sourcesContent":["<script>\nexport default {\n name: 'DtProgressBar',\n props: {\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n\n progress: {\n type: Number,\n default: 20,\n },\n },\n\n data: () => ({\n circleCircumference: 50,\n }),\n\n computed: {\n cssVars () {\n return {\n '--stroke-dashoffset':\n (this.circleCircumference - (this.circleCircumference * this.progress / 100)),\n\n '--stroke-dasharray': this.circleCircumference,\n };\n },\n },\n\n mounted () {\n this.circleCircumference = this.$refs.progressbarCircle.getTotalLength();\n },\n};\n</script>\n\n<template>\n <div\n role=\"progressbar\"\n :aria-label=\"progressbarAriaLabel\"\n tabindex=\"-1\"\n :aria-valuenow=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <svg\n class=\"progress-bar\"\n :style=\"cssVars\"\n >\n <circle\n ref=\"progressbarCircle\"\n r=\"8\"\n cx=\"12\"\n cy=\"12\"\n class=\"progress-bar__circle\"\n />\n <circle\n r=\"8\"\n cx=\"12\"\n cy=\"12\"\n class=\"progress-bar__circle\"\n />\n </svg>\n </div>\n</template>\n\n<style lang=\"less\">\n.progress-bar {\n width: var(--dt-size-550);\n height: var(--dt-size-550);\n}\n\n.progress-bar__circle {\n fill: none;\n stroke-width: 2;\n stroke-dasharray: var(--stroke-dasharray);\n}\n\n.progress-bar__circle:nth-child(1) {\n stroke-dashoffset: 0;\n stroke: var(--dt-color-black-100);\n}\n\n.progress-bar__circle:nth-child(2) {\n stroke-dashoffset: var(--stroke-dashoffset);\n stroke: var(--dt-color-purple-500);\n transition: stroke-dashoffset 500ms linear;\n}\n</style>\n","<template>\n <li\n class=\"dt-attachment-image\"\n >\n <dt-image-viewer\n image-button-class=\"dt-attachment-image__image-viewer\"\n :image-src=\"mediaItem.path\"\n :image-alt=\"mediaItem.altText\"\n :close-aria-label=\"closeAriaLabel\"\n :aria-label=\"clickToOpenAriaLabel\"\n />\n\n <!-- Loader / Close button -->\n <div\n class=\"dt-attachment-image__top-right\"\n >\n <dt-progress-bar\n v-if=\"mediaItem.isUploading\"\n class=\"dt-attachment-image__progress-bar\"\n :progress=\"mediaItem.progress\"\n :progressbar-aria-label=\"progressbarAriaLabel\"\n />\n <dt-button\n :id=\"`closeButton-${index}`\"\n tabindex=\"0\"\n class=\"dt-attachment-image__close-button\"\n circle\n size=\"xs\"\n importance=\"clear\"\n :aria-label=\"closeAriaLabel\"\n @click=\"removeMediaItem(index)\"\n >\n <template #icon>\n <dt-icon\n name=\"close\"\n size=\"200\"\n />\n </template>\n </dt-button>\n </div>\n </li>\n</template>\n\n<script>\nimport { DtImageViewer } from '@/components/image_viewer';\nimport { DtButton } from '@/components/button';\nimport { DtIcon } from '@/components/icon';\n\nimport DtProgressBar from './progress_bar.vue';\n\nexport default {\n name: 'DtImageCarousel',\n\n components: {\n DtImageViewer,\n DtButton,\n DtIcon,\n DtProgressBar,\n },\n\n props: {\n mediaItem: {\n type: Object,\n required: true,\n },\n\n index: {\n type: Number,\n required: true,\n },\n\n closeAriaLabel: {\n type: String,\n required: true,\n },\n\n clickToOpenAriaLabel: {\n type: String,\n required: true,\n },\n\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Emitted when media close button is clicked to remove the image\n *\n * @event remove-media\n * @type {Number}\n */\n 'remove-media',\n ],\n\n methods: {\n removeMediaItem (index) {\n this.$emit('remove-media', index);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-attachment-image {\n position: relative;\n\n &:focus-within .dt-attachment-image__close-button, &:hover .dt-attachment-image__close-button {\n opacity: 1;\n }\n}\n.dt-attachment-image__image-viewer {\n height: var(--dt-size-700);\n width: var(--dt-size-700);\n border: var(--dt-space-100) solid;\n border-radius: var(--br4);\n border-width: var(--dt-size-350);\n border-color: var(--dt-color-border-subtle);\n object-fit: cover;\n}\n.dt-attachment-image__top-right {\n position: absolute;\n top: var(--dt-size-100);\n right: var(--dt-size-100);\n}\n.dt-attachment-image__close-button {\n opacity: 0;\n position: absolute;\n top: inherit;\n right: inherit;\n color: var(--dt-color-neutral-white);\n background-color: var(--dt-color-black-400);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-200);\n border-color: var(--dt-color-neutral-white);\n}\n.dt-attachment-image__progress-bar {\n position: absolute;\n top: inherit;\n right: inherit;\n background-color: var(--dt-color-neutral-white);\n border-radius: 50%;\n display: flex;\n transform: rotate(-90deg);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-200);\n border-color: var(--dt-color-border-subtle);\n}\n</style>\n","<template>\n <div\n class=\"dt-attachment-carousel\"\n role=\"presentation\"\n >\n <ul\n v-if=\"mediaList.length > 0\"\n ref=\"carousel\"\n class=\"dt-attachment-carousel__media-list\"\n @scroll=\"handleScroll\"\n >\n <!-- media list -->\n <component\n :is=\"mediaComponent(mediaItem.type)\"\n v-for=\"(mediaItem, index) in filteredMediaList\"\n :key=\"`media-${index}`\"\n :index=\"index\"\n :media-item=\"mediaItem\"\n :close-aria-label=\"closeAriaLabel\"\n :click-to-open-aria-label=\"clickToOpenAriaLabel\"\n :progressbar-aria-label=\"progressbarAriaLabel\"\n @remove-media=\"removeMediaItem(index)\"\n @focusin=\"onItemFocus\"\n />\n </ul>\n\n <!-- Carousel Arrows -->\n <dt-button\n v-show=\"showLeftArrow\"\n tabindex=\"-1\"\n :aria-label=\"leftArrowAriaLabel\"\n class=\"dt-attachment-carousel__arrow dt-attachment-carousel__arrow--left\"\n circle\n size=\"xs\"\n importance=\"clear\"\n @click=\"leftScroll\"\n >\n <template #icon>\n <dt-icon\n name=\"arrow-left\"\n size=\"100\"\n />\n </template>\n </dt-button>\n <dt-button\n v-show=\"showRightArrow\"\n tabindex=\"-1\"\n :aria-label=\"rightArrowAriaLabel\"\n class=\"dt-attachment-carousel__arrow dt-attachment-carousel__arrow--right\"\n circle\n size=\"xs\"\n importance=\"clear\"\n @click=\"rightScroll\"\n >\n <template #icon>\n <dt-icon\n name=\"arrow-right\"\n size=\"100\"\n />\n </template>\n </dt-button>\n </div>\n</template>\n\n<script>\nimport { DtIcon } from '@/components/icon';\nimport { DtButton } from '@/components/button';\n\nimport DtImageCarousel from './media_components/image_carousel.vue';\n\nconst MEDIA_ITEM_WIDTH = 64;\n\nexport default {\n name: 'DtRecipeAttachmentCarousel',\n\n components: {\n DtButton,\n DtIcon,\n DtImageCarousel,\n },\n\n mixins: [],\n\n /* inheritAttrs: false is generally an option we want to set on library\n components. This allows any attributes passed in that are not recognized\n as props to be passed down to another element or component using v-bind:$attrs\n more info: https://vuejs.org/v2/api/#inheritAttrs */\n // inheritAttrs: false,\n\n props: {\n /**\n * media - object array of media objects\n * @type {Array}\n *\n * Object: {\n * path: String,\n * altText: String | null,\n * }\n */\n mediaList: {\n type: Array,\n default: () => [],\n },\n\n closeAriaLabel: {\n type: String,\n required: true,\n },\n\n clickToOpenAriaLabel: {\n type: String,\n required: true,\n },\n\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n\n leftArrowAriaLabel: {\n type: String,\n required: true,\n },\n\n rightArrowAriaLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Emitted when popover is shown or hidden\n *\n * @event remove-media\n * @type {Number}\n */\n 'remove-media',\n ],\n\n data () {\n return {\n showCloseButton: {},\n showRightArrow: true,\n showLeftArrow: false,\n isMounted: false,\n };\n },\n\n computed: {\n filteredMediaList () {\n return this.mediaList.filter((mediaItem) => mediaItem.type === 'image' || mediaItem.type === 'video');\n },\n },\n\n mounted: function () {\n this.showLeftArrow = this.$refs.carousel.scrollLeft > 0;\n this.showRightArrow = this.$refs.carousel.scrollWidth > this.$refs.carousel.clientWidth;\n },\n\n methods: {\n onItemFocus (e) {\n e.currentTarget.scrollIntoView({ behavior: 'smooth' });\n },\n\n mediaComponent (type) {\n switch (type) {\n case 'image':\n return 'dt-image-carousel';\n default:\n // unknown media type\n return null;\n }\n },\n\n removeMediaItem (index) {\n // make sure the carousel arrows is updated. 64 is the width of each media item\n this.showRightArrow = this.$refs.carousel.scrollWidth > (this.$refs.carousel.clientWidth + MEDIA_ITEM_WIDTH);\n this.$emit('remove-media', index);\n },\n\n closeButton (val, index) {\n this.showCloseButton[index] = val;\n },\n\n handleScroll () {\n const carousel = this.$refs.carousel;\n this.showLeftArrow = carousel.scrollLeft > 0;\n this.showRightArrow = !((carousel.scrollLeft + carousel.clientWidth) === carousel.scrollWidth);\n },\n\n leftScroll () {\n this.$refs.carousel.scrollTo({\n left: this.$refs.carousel.scrollLeft - 100,\n behavior: 'smooth',\n });\n },\n\n rightScroll () {\n this.$refs.carousel.scrollTo({\n left: this.$refs.carousel.scrollLeft + 100,\n behavior: 'smooth',\n });\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-attachment-carousel {\n position: relative;\n max-height: 100px;\n width: var(--dt-space-1000);\n}\n\n.dt-attachment-carousel__media-list {\n display: flex;\n flex-direction: row;\n padding-left: 0px;\n overflow-x: scroll;\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.dt-attachment-carousel__arrow {\n position: absolute;\n opacity: 0;\n\n .dt-attachment-carousel:hover & {\n opacity: 1;\n }\n background-color: var(--dt-color-neutral-white);\n top: var(--dt-space-30-percent);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-100);\n border-color: var(--bc-default);\n}\n.dt-attachment-carousel__arrow--left {\n left: var(--dt-space-300);\n}\n.dt-attachment-carousel__arrow--right {\n right: var(--dt-space-300);\n}\n\n.dt-attachment-carousel__image-viewer {\n height: var(--dt-size-700);\n width: var(--dt-size-700);\n border-radius: var(--br4);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-350);\n border-color: var(--dt-color-border-subtle);\n}\n</style>\n"],"names":["_sfc_main","_createElementVNode","_createElementBlock","$props","$options","_hoisted_2","_hoisted_3","DtImageViewer","DtButton","DtIcon","DtProgressBar","index","_hoisted_1","_openBlock","_createVNode","_component_dt_image_viewer","_createBlock","_component_dt_progress_bar","_component_dt_button","_cache","$event","_component_dt_icon","MEDIA_ITEM_WIDTH","DtImageCarousel","mediaItem","type","val","carousel","args","_Fragment","_renderList","_resolveDynamicComponent","$data"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./utils.cjs"),f=require("@dialpad/dialtone-icons/icons.json"),S=require("../chunks/icon_constants-2S_OSQ1t.js"),e=require("vue"),I=require("../chunks/_plugin-vue_export-helper-6_y-gaV6.js"),y=require("./presence.cjs"),h=require("./icon.cjs");require("./constants.cjs");require("@dialpad/dialtone-icons/vue3");const n={xs:"d-avatar--xs",sm:"d-avatar--sm",md:"d-avatar--md",lg:"d-avatar--lg",xl:"d-avatar--xl"},m={default:"",icon:"d-avatar__icon",initials:"d-avatar__initials"},_={md:"d-avatar__presence--md",lg:"d-avatar__presence--lg"},c={NONE:"",BUSY:"busy",AWAY:"away",OFFLINE:"offline",ACTIVE:"active"},v={xs:"100",sm:"200",md:"300",lg:"500",xl:"600"},g=["100","200","300","400","500","600","700","800","900","1000","1100","1200","1300","1400","1500","1600","1700","1800"],o=t=>t>1;function E(){return[void 0,...f]}const p=t=>{if(typeof t!="string"||!t.trim())return"";const s=t.trim().split(/\s+/g);return s.length===1?s.join("").substring(0,2):s.filter((a,l)=>l===0||l===s.length-1).map(a=>a.slice(0,1).toUpperCase()).join("")},C=E(),k={name:"DtAvatar",components:{DtPresence:y.DtPresence,DtIcon:h.DtIcon},inheritAttrs:!1,props:{id:{type:String,default(){return u.getUniqueString()}},seed:{type:String,default:void 0},color:{type:String,default:void 0},size:{type:String,default:"md",validator:t=>Object.keys(n).includes(t)},avatarClass:{type:[String,Array,Object],default:""},canvasClass:{type:[String,Array,Object],default:""},iconClass:{type:[String,Array,Object],default:""},presence:{type:String,default:c.NONE,validator:t=>Object.values(c).includes(t)},presenceProps:{type:Object,default:()=>({})},group:{type:Number,default:void 0,validator:t=>o(t)},overlayIcon:{type:String,default:""},overlayText:{type:String,default:""},overlayClass:{type:[String,Array,Object],default:""},imageSrc:{type:String,default:""},imageAlt:{type:String,default:void 0},iconName:{type:String,default:void 0,validator:t=>C.includes(t)},iconSize:{type:String,default:"",validator:t=>!t||Object.keys(S.I).includes(t)},fullName:{type:String,default:""},clickable:{type:Boolean,default:!1},iconAriaLabel:{type:String,default:void 0}},emits:["click"],data(){return{AVATAR_SIZE_MODIFIERS:n,AVATAR_KIND_MODIFIERS:m,AVATAR_PRESENCE_SIZE_MODIFIERS:_,AVATAR_ICON_SIZES:v,imageLoadedSuccessfully:null,formattedInitials:"",initializing:!1}},computed:{isNotIconType(){return!this.iconName},avatarClasses(){return["d-avatar",n[this.validatedSize],this.avatarClass,{"d-avatar--group":this.showGroup,[`d-avatar--color-${this.getColor()}`]:this.isNotIconType,"d-avatar--clickable":this.clickable}]},overlayClasses(){return["d-avatar__overlay",this.overlayClass]},showGroup(){return o(this.group)},formattedGroup(){return this.group>99?"99+":this.group},validatedSize(){return this.group?"xs":this.size},showImage(){return this.imageLoadedSuccessfully!==!1&&this.imageSrc}},watch:{fullName:{immediate:!0,handler(){this.formatInitials()}},size:{immediate:!0,handler(){this.formatInitials()}},group:{immediate:!0,handler(){this.formatInitials()}},imageSrc(t){this.imageLoadedSuccessfully=null,t&&(this.validateProps(),this.setImageListeners())}},mounted(){this.validateProps(),this.setImageListeners()},methods:{async setImageListeners(){await this.$nextTick();const t=this.$refs.avatarImage;t&&(t.addEventListener("load",()=>this._loadedImageEventHandler(t),{once:!0}),t.addEventListener("error",()=>this._erroredImageEventHandler(t),{once:!0}))},formatInitials(){const t=p(this.fullName);this.validatedSize==="xs"?this.formattedInitials="":this.validatedSize==="sm"?this.formattedInitials=t[0]:this.formattedInitials=t},getColor(){return this.color??u.getRandomElement(g,this.seed)},_loadedImageEventHandler(t){this.imageLoadedSuccessfully=!0,t.classList.remove("d-d-none")},_erroredImageEventHandler(t){this.imageLoadedSuccessfully=!1,t.classList.add("d-d-none")},validateProps(){this.imageSrc&&this.imageAlt===void 0&&console.error('image-alt required if image-src is provided. Can be set to "" (empty string) if the image is described in text nearby')},handleClick(t){this.clickable&&this.$emit("click",t)}}},R=["src","alt"],N={key:1,class:"d-avatar__overlay-text"},T={key:1,class:"d-avatar__count","data-qa":"dt-avatar-count"};function O(t,s,a,l,r,i){const d=e.resolveComponent("dt-icon"),A=e.resolveComponent("dt-presence");return e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.clickable?"button":"div"),{id:a.id,class:e.normalizeClass(i.avatarClasses),"data-qa":"dt-avatar",onClick:i.handleClick},{default:e.withCtx(()=>[e.createElementVNode("div",{ref:"canvas",class:e.normalizeClass([a.canvasClass,"d-avatar__canvas",{"d-avatar--image-loaded":r.imageLoadedSuccessfully}])},[i.showImage?(e.openBlock(),e.createElementBlock("img",{key:0,ref:"avatarImage",class:"d-avatar__image","data-qa":"dt-avatar-image",src:a.imageSrc,alt:a.imageAlt},null,8,R)):a.iconName?(e.openBlock(),e.createBlock(d,{key:1,name:a.iconName,"aria-label":a.iconAriaLabel,size:a.iconSize||r.AVATAR_ICON_SIZES[a.size],class:e.normalizeClass([a.iconClass,r.AVATAR_KIND_MODIFIERS.icon]),"data-qa":"dt-avatar-icon"},null,8,["name","aria-label","size","class"])):(e.openBlock(),e.createElementBlock("span",{key:2,class:e.normalizeClass([r.AVATAR_KIND_MODIFIERS.initials])},e.toDisplayString(r.formattedInitials),3))],2),a.overlayIcon||a.overlayText?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(i.overlayClasses)},[a.overlayIcon?(e.openBlock(),e.createBlock(d,{key:0,class:"d-avatar__overlay-icon",name:a.overlayIcon},null,8,["name"])):a.overlayText?(e.openBlock(),e.createElementBlock("p",N,e.toDisplayString(a.overlayText),1)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),i.showGroup?(e.openBlock(),e.createElementBlock("span",T,e.toDisplayString(i.formattedGroup),1)):e.createCommentVNode("",!0),a.presence&&!i.showGroup?(e.openBlock(),e.createBlock(A,e.mergeProps({key:2,presence:a.presence,class:["d-avatar__presence",r.AVATAR_PRESENCE_SIZE_MODIFIERS[a.size]]},a.presenceProps,{"data-qa":"dt-presence"}),null,16,["presence","class"])):e.createCommentVNode("",!0)]),_:1},8,["id","class","onClick"])}const b=I._(k,[["render",O]]);exports.AVATAR_COLORS=g;exports.AVATAR_GROUP_VALIDATOR=o;exports.AVATAR_ICON_SIZES=v;exports.AVATAR_KIND_MODIFIERS=m;exports.AVATAR_PRESENCE_SIZE_MODIFIERS=_;exports.AVATAR_PRESENCE_STATES=c;exports.AVATAR_SIZE_MODIFIERS=n;exports.DtAvatar=b;
2
+ //# sourceMappingURL=avatar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.cjs","sources":["../../components/avatar/avatar_constants.js","../../common/storybook_utils.js","../../components/avatar/utils.js","../../components/avatar/avatar.vue"],"sourcesContent":["export const AVATAR_SIZE_MODIFIERS = {\n xs: 'd-avatar--xs',\n sm: 'd-avatar--sm',\n md: 'd-avatar--md',\n lg: 'd-avatar--lg',\n xl: 'd-avatar--xl',\n};\n\nexport const AVATAR_KIND_MODIFIERS = {\n default: '',\n icon: 'd-avatar__icon',\n initials: 'd-avatar__initials',\n};\n\nexport const AVATAR_PRESENCE_SIZE_MODIFIERS = {\n md: 'd-avatar__presence--md',\n lg: 'd-avatar__presence--lg',\n};\n\nexport const AVATAR_PRESENCE_STATES = {\n NONE: '',\n BUSY: 'busy',\n AWAY: 'away',\n OFFLINE: 'offline',\n ACTIVE: 'active',\n};\n\nexport const AVATAR_ICON_SIZES = {\n xs: '100',\n sm: '200',\n md: '300',\n lg: '500',\n xl: '600',\n};\n\nexport const AVATAR_COLORS = [\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n '1000',\n '1100',\n '1200',\n '1300',\n '1400',\n '1500',\n '1600',\n '1700',\n '1800',\n];\n\nexport const AVATAR_GROUP_VALIDATOR = (group) => group > 1;\n\nexport default {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_ICON_SIZES,\n AVATAR_COLORS,\n AVATAR_GROUP_VALIDATOR,\n};\n","import iconNames from '@dialpad/dialtone-icons/icons.json';\n\n/**\n * Will use a Vue SFC to render the template rather than a template string.\n * This is useful for more complex components that are hard to work with and\n * get messy when rendered via a template string. Will pass args and argTypes\n * into the component so it is able to be live edited with storybook controls addon.\n * @param {object} args storybook control args\n * @param {component} templateComponent vue component template for rendering to storybook.\n * Note this should not be the component itself,\n * but rather the usage of that component.\n * @returns {component} the template component with props and args added.\n */\nexport const createTemplateFromVueFile = (args, argTypes, templateComponent) => ({\n components: { templateComponent },\n setup () {\n return { args };\n },\n template: '<template-component v-bind=\"args\"></template-component>',\n});\n\n/**\n * Gets the full list of icon component names from the dialtone package\n * @returns {string[]} icon component names\n */\nexport function getIconNames () {\n return [undefined, ...iconNames];\n}\n\nexport const generateTemplate = (component,\n { props = [], excludeProps = [], customProps = [], childTemplate } = {}) => {\n if (!component) {\n console.warn('Generate template: Please provide a component');\n return '';\n }\n\n const { name, props: componentProps } = component;\n const finalProps = props.length ? props : Object.keys(componentProps);\n const normalizedName = name.split(/(?=[A-Z])/).join('-').toLowerCase();\n\n const startFragment = `<${normalizedName}`;\n\n const propFragments = finalProps\n .filter(prop => !excludeProps.includes(prop))\n .map(prop => `:${prop}=\"${prop}\"`);\n\n const endFragment = childTemplate ? `>${childTemplate}</${normalizedName}>` : ' />';\n\n return [startFragment, ...propFragments, ...customProps, endFragment].join(' ');\n};\n\nexport default {\n generateTemplate,\n createTemplateFromVueFile,\n getIconNames,\n};\n","export const extractInitialsFromName = (fullName) => {\n if (typeof fullName !== 'string' || !fullName.trim()) return '';\n\n const names = fullName.trim().split(/\\s+/g);\n\n return names.length === 1\n ? names.join('').substring(0, 2)\n : names.filter((_, index) => (index === 0 || index === names.length - 1))\n .map(name => name.slice(0, 1).toUpperCase())\n .join('');\n};\n","<template>\n <component\n :is=\"clickable ? 'button' : 'div'\"\n :id=\"id\"\n :class=\"avatarClasses\"\n data-qa=\"dt-avatar\"\n @click=\"handleClick\"\n >\n <div\n ref=\"canvas\"\n :class=\"[\n canvasClass,\n 'd-avatar__canvas',\n { 'd-avatar--image-loaded': imageLoadedSuccessfully },\n ]\"\n >\n <img\n v-if=\"showImage\"\n ref=\"avatarImage\"\n class=\"d-avatar__image\"\n data-qa=\"dt-avatar-image\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"\n >\n <dt-icon\n v-else-if=\"iconName\"\n :name=\"iconName\"\n :aria-label=\"iconAriaLabel\"\n :size=\"iconSize || AVATAR_ICON_SIZES[size]\"\n :class=\"[iconClass, AVATAR_KIND_MODIFIERS.icon]\"\n data-qa=\"dt-avatar-icon\"\n />\n <span\n v-else\n :class=\"[AVATAR_KIND_MODIFIERS.initials]\"\n >\n {{ formattedInitials }}\n </span>\n </div>\n <div\n v-if=\"overlayIcon || overlayText\"\n :class=\"overlayClasses\"\n >\n <dt-icon\n v-if=\"overlayIcon\"\n class=\"d-avatar__overlay-icon\"\n :name=\"overlayIcon\"\n />\n <p\n v-else-if=\"overlayText\"\n class=\"d-avatar__overlay-text\"\n >\n {{ overlayText }}\n </p>\n </div>\n <span\n v-if=\"showGroup\"\n class=\"d-avatar__count\"\n data-qa=\"dt-avatar-count\"\n >{{ formattedGroup }}</span>\n <dt-presence\n v-if=\"presence && !showGroup\"\n :presence=\"presence\"\n :class=\"[\n 'd-avatar__presence',\n AVATAR_PRESENCE_SIZE_MODIFIERS[size],\n ]\"\n v-bind=\"presenceProps\"\n data-qa=\"dt-presence\"\n />\n </component>\n</template>\n\n<script>\nimport { getUniqueString, getRandomElement } from '@/common/utils';\nimport { DtPresence } from '../presence';\nimport { DtIcon } from '@/components/icon';\nimport {\n AVATAR_KIND_MODIFIERS,\n AVATAR_SIZE_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_COLORS,\n AVATAR_GROUP_VALIDATOR,\n AVATAR_ICON_SIZES,\n} from './avatar_constants';\nimport { getIconNames } from '@/common/storybook_utils.js';\nimport { ICON_SIZE_MODIFIERS } from '@/components/icon/icon_constants.js';\nimport { extractInitialsFromName } from './utils';\n\nconst ICONS_LIST = getIconNames();\n\n/**\n * An avatar is a visual representation of a user or object.\n * @see https://dialtone.dialpad.com/components/avatar.html\n */\nexport default {\n name: 'DtAvatar',\n components: { DtPresence, DtIcon },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Id of the avatar content wrapper element\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Pass in a seed to get the random color generation based on that string. For example if you pass in a\n * user ID as the string it will return the same randomly generated colors every time for that user.\n */\n seed: {\n type: String,\n default: undefined,\n },\n\n /**\n * Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic\n * if the seed prop is set.\n */\n color: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the avatar\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (size) => Object.keys(AVATAR_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Used to customize the avatar container\n */\n avatarClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Set classes on the avatar canvas. Wrapper around the core avatar image.\n */\n canvasClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes. Used to customize the avatar icon\n */\n iconClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Determines whether to show the presence indicator for\n * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',\n * or 'active'. By default, it's null and nothing is shown.\n * @values null, busy, away, offline, active\n */\n presence: {\n type: String,\n default: AVATAR_PRESENCE_STATES.NONE,\n validator: (state) => {\n return Object.values(AVATAR_PRESENCE_STATES).includes(state);\n },\n },\n\n /**\n * A set of props to be passed into the presence component.\n */\n presenceProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Determines whether to show a group avatar.\n * Limit to 2 digits max, more than 99 will be rendered as “99+”.\n * if the number is 1 or less it would just show the regular avatar as if group had not been set.\n */\n group: {\n type: Number,\n default: undefined,\n validator: (group) => AVATAR_GROUP_VALIDATOR(group),\n },\n\n /**\n * The icon that overlays the avatar\n */\n overlayIcon: {\n type: String,\n default: '',\n },\n\n /**\n * The text that overlays the avatar\n */\n overlayText: {\n type: String,\n default: '',\n },\n\n /**\n * Used to customize the avatar overlay\n */\n overlayClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Source of the image\n */\n imageSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Alt attribute of the image, required if imageSrc is provided.\n * Can be set to '' (empty string) if the image is described\n * in text nearby\n */\n imageAlt: {\n type: String,\n default: undefined,\n },\n\n /**\n * Icon name to be displayed on the avatar\n */\n iconName: {\n type: String,\n default: undefined,\n validator: (name) => ICONS_LIST.includes(name),\n },\n\n /**\n * Icon size to be displayed on the avatar\n * @values 100, 200, 300, 400, 500, 600, 700, 800\n */\n iconSize: {\n type: String,\n default: '',\n validator: (size) => !size || Object.keys(ICON_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Full name used to extract initials.\n */\n fullName: {\n type: String,\n default: '',\n },\n\n /**\n * Makes the avatar focusable and clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the icon.\n * To avoid a11y issues, set this prop if clickable and iconName are set.\n */\n iconAriaLabel: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Avatar click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n data () {\n return {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_ICON_SIZES,\n imageLoadedSuccessfully: null,\n formattedInitials: '',\n initializing: false,\n };\n },\n\n computed: {\n isNotIconType () {\n return !this.iconName;\n },\n\n avatarClasses () {\n return [\n 'd-avatar',\n AVATAR_SIZE_MODIFIERS[this.validatedSize],\n this.avatarClass,\n {\n 'd-avatar--group': this.showGroup,\n [`d-avatar--color-${this.getColor()}`]: this.isNotIconType,\n 'd-avatar--clickable': this.clickable,\n },\n ];\n },\n\n overlayClasses () {\n return [\n 'd-avatar__overlay',\n this.overlayClass,\n ];\n },\n\n showGroup () {\n return AVATAR_GROUP_VALIDATOR(this.group);\n },\n\n formattedGroup () {\n return this.group > 99 ? '99+' : this.group;\n },\n\n validatedSize () {\n // TODO: Group only supports xs size for now. Remove this when we support other sizes.\n return this.group ? 'xs' : this.size;\n },\n\n showImage () {\n return this.imageLoadedSuccessfully !== false && this.imageSrc;\n },\n },\n\n watch: {\n fullName: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n group: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n imageSrc (newSrc) {\n this.imageLoadedSuccessfully = null;\n if (!newSrc) return;\n\n this.validateProps();\n this.setImageListeners();\n },\n },\n\n mounted () {\n this.validateProps();\n this.setImageListeners();\n },\n\n methods: {\n async setImageListeners () {\n await this.$nextTick();\n const el = this.$refs.avatarImage;\n if (!el) return;\n\n el.addEventListener('load', () => this._loadedImageEventHandler(el), { once: true });\n el.addEventListener('error', () => this._erroredImageEventHandler(el), { once: true });\n },\n\n formatInitials () {\n const initials = extractInitialsFromName(this.fullName);\n\n if (this.validatedSize === 'xs') {\n this.formattedInitials = '';\n } else if (this.validatedSize === 'sm') {\n this.formattedInitials = initials[0];\n } else {\n this.formattedInitials = initials;\n }\n },\n\n getColor () {\n return this.color ?? getRandomElement(AVATAR_COLORS, this.seed);\n },\n\n _loadedImageEventHandler (el) {\n this.imageLoadedSuccessfully = true;\n el.classList.remove('d-d-none');\n },\n\n _erroredImageEventHandler (el) {\n this.imageLoadedSuccessfully = false;\n el.classList.add('d-d-none');\n },\n\n validateProps () {\n if (this.imageSrc && this.imageAlt === undefined) {\n console.error('image-alt required if image-src is provided. Can be set to \"\" (empty string) if the image is described in text nearby');\n }\n },\n\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n//TODO: Move these classes to dialtone and document.\n.d-avatar--image-loaded {\n background-color: transparent;\n background-image: unset;\n}\n\n.d-avatar__count {\n z-index: var(--zi-base);\n}\n\n.d-avatar__presence {\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay {\n background-color: var(--dt-color-surface-contrast-opaque);\n opacity: var(--dt-opacity-900);\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dt-size-radius-circle);\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay-icon {\n color: var(--dt-color-foreground-primary-inverted);\n width: 100%;\n}\n\n.d-avatar__overlay-text {\n color: var(--dt-color-foreground-primary-inverted);\n font-weight: var(--dt-font-weight-bold);\n font-size: var(--dt-font-size-200);\n width: 100%;\n text-align: center;\n}\n\n.d-avatar--clickable {\n --avatar-color-border: transparent;\n\n cursor: pointer;\n padding: 0;\n background-color: transparent;\n\n border-radius: var(--dt-size-radius-circle);\n border: var(--dt-size-border-100) solid var(--avatar-color-border);\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--dt-shadow-focus);\n }\n\n &:hover {\n --avatar-color-border: var(--dt-color-border-default);\n }\n\n &:active {\n --avatar-color-border: var(--dt-color-border-moderate);\n\n transform: scale(0.98);\n }\n}\n</style>\n"],"names":["AVATAR_SIZE_MODIFIERS","AVATAR_KIND_MODIFIERS","AVATAR_PRESENCE_SIZE_MODIFIERS","AVATAR_PRESENCE_STATES","AVATAR_ICON_SIZES","AVATAR_COLORS","AVATAR_GROUP_VALIDATOR","group","getIconNames","iconNames","extractInitialsFromName","fullName","names","_","index","name","ICONS_LIST","_sfc_main","DtPresence","DtIcon","getUniqueString","size","state","ICON_SIZE_MODIFIERS","newSrc","el","initials","getRandomElement","e","_openBlock","_createBlock","_resolveDynamicComponent","$props","$options","_createElementVNode","_normalizeClass","$data","_createElementBlock","_component_dt_icon","_hoisted_2","_toDisplayString","_hoisted_3","_component_dt_presence","_mergeProps"],"mappings":"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"}
@@ -7,7 +7,6 @@ import { DtPresence as k } from "./presence.js";
7
7
  import { DtIcon as R } from "./icon.js";
8
8
  import "./constants.js";
9
9
  import "@dialpad/dialtone-icons/vue3";
10
- import "./skeleton.js";
11
10
  const u = {
12
11
  xs: "d-avatar--xs",
13
12
  sm: "d-avatar--sm",
@@ -401,7 +400,7 @@ function q(e, s, a, c, r, i) {
401
400
  _: 1
402
401
  }, 8, ["id", "class", "onClick"]);
403
402
  }
404
- const Q = /* @__PURE__ */ O(P, [["render", q]]);
403
+ const J = /* @__PURE__ */ O(P, [["render", q]]);
405
404
  export {
406
405
  L as AVATAR_COLORS,
407
406
  _ as AVATAR_GROUP_VALIDATOR,
@@ -410,6 +409,6 @@ export {
410
409
  T as AVATAR_PRESENCE_SIZE_MODIFIERS,
411
410
  g as AVATAR_PRESENCE_STATES,
412
411
  u as AVATAR_SIZE_MODIFIERS,
413
- Q as DtAvatar
412
+ J as DtAvatar
414
413
  };
415
414
  //# sourceMappingURL=avatar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.js","sources":["../../components/avatar/avatar_constants.js","../../common/storybook_utils.js","../../components/avatar/utils.js","../../components/avatar/avatar.vue"],"sourcesContent":["export const AVATAR_SIZE_MODIFIERS = {\n xs: 'd-avatar--xs',\n sm: 'd-avatar--sm',\n md: 'd-avatar--md',\n lg: 'd-avatar--lg',\n xl: 'd-avatar--xl',\n};\n\nexport const AVATAR_KIND_MODIFIERS = {\n default: '',\n icon: 'd-avatar__icon',\n initials: 'd-avatar__initials',\n};\n\nexport const AVATAR_PRESENCE_SIZE_MODIFIERS = {\n md: 'd-avatar__presence--md',\n lg: 'd-avatar__presence--lg',\n};\n\nexport const AVATAR_PRESENCE_STATES = {\n NONE: '',\n BUSY: 'busy',\n AWAY: 'away',\n OFFLINE: 'offline',\n ACTIVE: 'active',\n};\n\nexport const AVATAR_ICON_SIZES = {\n xs: '100',\n sm: '200',\n md: '300',\n lg: '500',\n xl: '600',\n};\n\nexport const AVATAR_COLORS = [\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n '1000',\n '1100',\n '1200',\n '1300',\n '1400',\n '1500',\n '1600',\n '1700',\n '1800',\n];\n\nexport const AVATAR_GROUP_VALIDATOR = (group) => group > 1;\n\nexport default {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_ICON_SIZES,\n AVATAR_COLORS,\n AVATAR_GROUP_VALIDATOR,\n};\n","import iconNames from '@dialpad/dialtone-icons/icons.json';\n\n/**\n * Will use a Vue SFC to render the template rather than a template string.\n * This is useful for more complex components that are hard to work with and\n * get messy when rendered via a template string. Will pass args and argTypes\n * into the component so it is able to be live edited with storybook controls addon.\n * @param {object} args storybook control args\n * @param {component} templateComponent vue component template for rendering to storybook.\n * Note this should not be the component itself,\n * but rather the usage of that component.\n * @returns {component} the template component with props and args added.\n */\nexport const createTemplateFromVueFile = (args, argTypes, templateComponent) => ({\n components: { templateComponent },\n setup () {\n return { args };\n },\n template: '<template-component v-bind=\"args\"></template-component>',\n});\n\n/**\n * Gets the full list of icon component names from the dialtone package\n * @returns {string[]} icon component names\n */\nexport function getIconNames () {\n return [undefined, ...iconNames];\n}\n\nexport const generateTemplate = (component,\n { props = [], excludeProps = [], customProps = [], childTemplate } = {}) => {\n if (!component) {\n console.warn('Generate template: Please provide a component');\n return '';\n }\n\n const { name, props: componentProps } = component;\n const finalProps = props.length ? props : Object.keys(componentProps);\n const normalizedName = name.split(/(?=[A-Z])/).join('-').toLowerCase();\n\n const startFragment = `<${normalizedName}`;\n\n const propFragments = finalProps\n .filter(prop => !excludeProps.includes(prop))\n .map(prop => `:${prop}=\"${prop}\"`);\n\n const endFragment = childTemplate ? `>${childTemplate}</${normalizedName}>` : ' />';\n\n return [startFragment, ...propFragments, ...customProps, endFragment].join(' ');\n};\n\nexport default {\n generateTemplate,\n createTemplateFromVueFile,\n getIconNames,\n};\n","export const extractInitialsFromName = (fullName) => {\n if (typeof fullName !== 'string' || !fullName.trim()) return '';\n\n const names = fullName.trim().split(/\\s+/g);\n\n return names.length === 1\n ? names.join('').substring(0, 2)\n : names.filter((_, index) => (index === 0 || index === names.length - 1))\n .map(name => name.slice(0, 1).toUpperCase())\n .join('');\n};\n","<template>\n <component\n :is=\"clickable ? 'button' : 'div'\"\n :id=\"id\"\n :class=\"avatarClasses\"\n data-qa=\"dt-avatar\"\n @click=\"handleClick\"\n >\n <div\n ref=\"canvas\"\n :class=\"[\n canvasClass,\n 'd-avatar__canvas',\n { 'd-avatar--image-loaded': imageLoadedSuccessfully },\n ]\"\n >\n <img\n v-if=\"showImage\"\n ref=\"avatarImage\"\n class=\"d-avatar__image\"\n data-qa=\"dt-avatar-image\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"\n >\n <dt-icon\n v-else-if=\"iconName\"\n :name=\"iconName\"\n :aria-label=\"iconAriaLabel\"\n :size=\"iconSize || AVATAR_ICON_SIZES[size]\"\n :class=\"[iconClass, AVATAR_KIND_MODIFIERS.icon]\"\n data-qa=\"dt-avatar-icon\"\n />\n <span\n v-else\n :class=\"[AVATAR_KIND_MODIFIERS.initials]\"\n >\n {{ formattedInitials }}\n </span>\n </div>\n <div\n v-if=\"overlayIcon || overlayText\"\n :class=\"overlayClasses\"\n >\n <dt-icon\n v-if=\"overlayIcon\"\n class=\"d-avatar__overlay-icon\"\n :name=\"overlayIcon\"\n />\n <p\n v-else-if=\"overlayText\"\n class=\"d-avatar__overlay-text\"\n >\n {{ overlayText }}\n </p>\n </div>\n <span\n v-if=\"showGroup\"\n class=\"d-avatar__count\"\n data-qa=\"dt-avatar-count\"\n >{{ formattedGroup }}</span>\n <dt-presence\n v-if=\"presence && !showGroup\"\n :presence=\"presence\"\n :class=\"[\n 'd-avatar__presence',\n AVATAR_PRESENCE_SIZE_MODIFIERS[size],\n ]\"\n v-bind=\"presenceProps\"\n data-qa=\"dt-presence\"\n />\n </component>\n</template>\n\n<script>\nimport { getUniqueString, getRandomElement } from '@/common/utils';\nimport { DtPresence } from '../presence';\nimport { DtIcon } from '@/components/icon';\nimport {\n AVATAR_KIND_MODIFIERS,\n AVATAR_SIZE_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_COLORS,\n AVATAR_GROUP_VALIDATOR,\n AVATAR_ICON_SIZES,\n} from './avatar_constants';\nimport { getIconNames } from '@/common/storybook_utils.js';\nimport { ICON_SIZE_MODIFIERS } from '@/components/icon/icon_constants.js';\nimport { extractInitialsFromName } from './utils';\n\nconst ICONS_LIST = getIconNames();\n\n/**\n * An avatar is a visual representation of a user or object.\n * @see https://dialtone.dialpad.com/components/avatar.html\n */\nexport default {\n name: 'DtAvatar',\n components: { DtPresence, DtIcon },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Id of the avatar content wrapper element\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Pass in a seed to get the random color generation based on that string. For example if you pass in a\n * user ID as the string it will return the same randomly generated colors every time for that user.\n */\n seed: {\n type: String,\n default: undefined,\n },\n\n /**\n * Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic\n * if the seed prop is set.\n */\n color: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the avatar\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (size) => Object.keys(AVATAR_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Used to customize the avatar container\n */\n avatarClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Set classes on the avatar canvas. Wrapper around the core avatar image.\n */\n canvasClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes. Used to customize the avatar icon\n */\n iconClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Determines whether to show the presence indicator for\n * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',\n * or 'active'. By default, it's null and nothing is shown.\n * @values null, busy, away, offline, active\n */\n presence: {\n type: String,\n default: AVATAR_PRESENCE_STATES.NONE,\n validator: (state) => {\n return Object.values(AVATAR_PRESENCE_STATES).includes(state);\n },\n },\n\n /**\n * A set of props to be passed into the presence component.\n */\n presenceProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Determines whether to show a group avatar.\n * Limit to 2 digits max, more than 99 will be rendered as “99+”.\n * if the number is 1 or less it would just show the regular avatar as if group had not been set.\n */\n group: {\n type: Number,\n default: undefined,\n validator: (group) => AVATAR_GROUP_VALIDATOR(group),\n },\n\n /**\n * The icon that overlays the avatar\n */\n overlayIcon: {\n type: String,\n default: '',\n },\n\n /**\n * The text that overlays the avatar\n */\n overlayText: {\n type: String,\n default: '',\n },\n\n /**\n * Used to customize the avatar overlay\n */\n overlayClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Source of the image\n */\n imageSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Alt attribute of the image, required if imageSrc is provided.\n * Can be set to '' (empty string) if the image is described\n * in text nearby\n */\n imageAlt: {\n type: String,\n default: undefined,\n },\n\n /**\n * Icon name to be displayed on the avatar\n */\n iconName: {\n type: String,\n default: undefined,\n validator: (name) => ICONS_LIST.includes(name),\n },\n\n /**\n * Icon size to be displayed on the avatar\n * @values 100, 200, 300, 400, 500, 600, 700, 800\n */\n iconSize: {\n type: String,\n default: '',\n validator: (size) => !size || Object.keys(ICON_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Full name used to extract initials.\n */\n fullName: {\n type: String,\n default: '',\n },\n\n /**\n * Makes the avatar focusable and clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the icon.\n * To avoid a11y issues, set this prop if clickable and iconName are set.\n */\n iconAriaLabel: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Avatar click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n data () {\n return {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_ICON_SIZES,\n imageLoadedSuccessfully: null,\n formattedInitials: '',\n initializing: false,\n };\n },\n\n computed: {\n isNotIconType () {\n return !this.iconName;\n },\n\n avatarClasses () {\n return [\n 'd-avatar',\n AVATAR_SIZE_MODIFIERS[this.validatedSize],\n this.avatarClass,\n {\n 'd-avatar--group': this.showGroup,\n [`d-avatar--color-${this.getColor()}`]: this.isNotIconType,\n 'd-avatar--clickable': this.clickable,\n },\n ];\n },\n\n overlayClasses () {\n return [\n 'd-avatar__overlay',\n this.overlayClass,\n ];\n },\n\n showGroup () {\n return AVATAR_GROUP_VALIDATOR(this.group);\n },\n\n formattedGroup () {\n return this.group > 99 ? '99+' : this.group;\n },\n\n validatedSize () {\n // TODO: Group only supports xs size for now. Remove this when we support other sizes.\n return this.group ? 'xs' : this.size;\n },\n\n showImage () {\n return this.imageLoadedSuccessfully !== false && this.imageSrc;\n },\n },\n\n watch: {\n fullName: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n group: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n imageSrc (newSrc) {\n this.imageLoadedSuccessfully = null;\n if (!newSrc) return;\n\n this.validateProps();\n this.setImageListeners();\n },\n },\n\n mounted () {\n this.validateProps();\n this.setImageListeners();\n },\n\n methods: {\n async setImageListeners () {\n await this.$nextTick();\n const el = this.$refs.avatarImage;\n if (!el) return;\n\n el.addEventListener('load', () => this._loadedImageEventHandler(el), { once: true });\n el.addEventListener('error', () => this._erroredImageEventHandler(el), { once: true });\n },\n\n formatInitials () {\n const initials = extractInitialsFromName(this.fullName);\n\n if (this.validatedSize === 'xs') {\n this.formattedInitials = '';\n } else if (this.validatedSize === 'sm') {\n this.formattedInitials = initials[0];\n } else {\n this.formattedInitials = initials;\n }\n },\n\n getColor () {\n return this.color ?? getRandomElement(AVATAR_COLORS, this.seed);\n },\n\n _loadedImageEventHandler (el) {\n this.imageLoadedSuccessfully = true;\n el.classList.remove('d-d-none');\n },\n\n _erroredImageEventHandler (el) {\n this.imageLoadedSuccessfully = false;\n el.classList.add('d-d-none');\n },\n\n validateProps () {\n if (this.imageSrc && this.imageAlt === undefined) {\n console.error('image-alt required if image-src is provided. Can be set to \"\" (empty string) if the image is described in text nearby');\n }\n },\n\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n//TODO: Move these classes to dialtone and document.\n.d-avatar--image-loaded {\n background-color: transparent;\n background-image: unset;\n}\n\n.d-avatar__count {\n z-index: var(--zi-base);\n}\n\n.d-avatar__presence {\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay {\n background-color: var(--dt-color-surface-contrast-opaque);\n opacity: var(--dt-opacity-900);\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dt-size-radius-circle);\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay-icon {\n color: var(--dt-color-foreground-primary-inverted);\n width: 100%;\n}\n\n.d-avatar__overlay-text {\n color: var(--dt-color-foreground-primary-inverted);\n font-weight: var(--dt-font-weight-bold);\n font-size: var(--dt-font-size-200);\n width: 100%;\n text-align: center;\n}\n\n.d-avatar--clickable {\n --avatar-color-border: transparent;\n\n cursor: pointer;\n padding: 0;\n background-color: transparent;\n\n border-radius: var(--dt-size-radius-circle);\n border: var(--dt-size-border-100) solid var(--avatar-color-border);\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--dt-shadow-focus);\n }\n\n &:hover {\n --avatar-color-border: var(--dt-color-border-default);\n }\n\n &:active {\n --avatar-color-border: var(--dt-color-border-moderate);\n\n transform: scale(0.98);\n }\n}\n</style>\n"],"names":["AVATAR_SIZE_MODIFIERS","AVATAR_KIND_MODIFIERS","AVATAR_PRESENCE_SIZE_MODIFIERS","AVATAR_PRESENCE_STATES","AVATAR_ICON_SIZES","AVATAR_COLORS","AVATAR_GROUP_VALIDATOR","group","getIconNames","iconNames","extractInitialsFromName","fullName","names","_","index","name","ICONS_LIST","_sfc_main","DtPresence","DtIcon","getUniqueString","size","state","ICON_SIZE_MODIFIERS","newSrc","el","initials","getRandomElement","_openBlock","_createBlock","_resolveDynamicComponent","$props","$options","_createElementVNode","_normalizeClass","$data","_createElementBlock","_component_dt_icon","_hoisted_2","_toDisplayString","_hoisted_3","_component_dt_presence","_mergeProps"],"mappings":"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"}
1
+ {"version":3,"file":"avatar.js","sources":["../../components/avatar/avatar_constants.js","../../common/storybook_utils.js","../../components/avatar/utils.js","../../components/avatar/avatar.vue"],"sourcesContent":["export const AVATAR_SIZE_MODIFIERS = {\n xs: 'd-avatar--xs',\n sm: 'd-avatar--sm',\n md: 'd-avatar--md',\n lg: 'd-avatar--lg',\n xl: 'd-avatar--xl',\n};\n\nexport const AVATAR_KIND_MODIFIERS = {\n default: '',\n icon: 'd-avatar__icon',\n initials: 'd-avatar__initials',\n};\n\nexport const AVATAR_PRESENCE_SIZE_MODIFIERS = {\n md: 'd-avatar__presence--md',\n lg: 'd-avatar__presence--lg',\n};\n\nexport const AVATAR_PRESENCE_STATES = {\n NONE: '',\n BUSY: 'busy',\n AWAY: 'away',\n OFFLINE: 'offline',\n ACTIVE: 'active',\n};\n\nexport const AVATAR_ICON_SIZES = {\n xs: '100',\n sm: '200',\n md: '300',\n lg: '500',\n xl: '600',\n};\n\nexport const AVATAR_COLORS = [\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n '1000',\n '1100',\n '1200',\n '1300',\n '1400',\n '1500',\n '1600',\n '1700',\n '1800',\n];\n\nexport const AVATAR_GROUP_VALIDATOR = (group) => group > 1;\n\nexport default {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_ICON_SIZES,\n AVATAR_COLORS,\n AVATAR_GROUP_VALIDATOR,\n};\n","import iconNames from '@dialpad/dialtone-icons/icons.json';\n\n/**\n * Will use a Vue SFC to render the template rather than a template string.\n * This is useful for more complex components that are hard to work with and\n * get messy when rendered via a template string. Will pass args and argTypes\n * into the component so it is able to be live edited with storybook controls addon.\n * @param {object} args storybook control args\n * @param {component} templateComponent vue component template for rendering to storybook.\n * Note this should not be the component itself,\n * but rather the usage of that component.\n * @returns {component} the template component with props and args added.\n */\nexport const createTemplateFromVueFile = (args, argTypes, templateComponent) => ({\n components: { templateComponent },\n setup () {\n return { args };\n },\n template: '<template-component v-bind=\"args\"></template-component>',\n});\n\n/**\n * Gets the full list of icon component names from the dialtone package\n * @returns {string[]} icon component names\n */\nexport function getIconNames () {\n return [undefined, ...iconNames];\n}\n\nexport const generateTemplate = (component,\n { props = [], excludeProps = [], customProps = [], childTemplate } = {}) => {\n if (!component) {\n console.warn('Generate template: Please provide a component');\n return '';\n }\n\n const { name, props: componentProps } = component;\n const finalProps = props.length ? props : Object.keys(componentProps);\n const normalizedName = name.split(/(?=[A-Z])/).join('-').toLowerCase();\n\n const startFragment = `<${normalizedName}`;\n\n const propFragments = finalProps\n .filter(prop => !excludeProps.includes(prop))\n .map(prop => `:${prop}=\"${prop}\"`);\n\n const endFragment = childTemplate ? `>${childTemplate}</${normalizedName}>` : ' />';\n\n return [startFragment, ...propFragments, ...customProps, endFragment].join(' ');\n};\n\nexport default {\n generateTemplate,\n createTemplateFromVueFile,\n getIconNames,\n};\n","export const extractInitialsFromName = (fullName) => {\n if (typeof fullName !== 'string' || !fullName.trim()) return '';\n\n const names = fullName.trim().split(/\\s+/g);\n\n return names.length === 1\n ? names.join('').substring(0, 2)\n : names.filter((_, index) => (index === 0 || index === names.length - 1))\n .map(name => name.slice(0, 1).toUpperCase())\n .join('');\n};\n","<template>\n <component\n :is=\"clickable ? 'button' : 'div'\"\n :id=\"id\"\n :class=\"avatarClasses\"\n data-qa=\"dt-avatar\"\n @click=\"handleClick\"\n >\n <div\n ref=\"canvas\"\n :class=\"[\n canvasClass,\n 'd-avatar__canvas',\n { 'd-avatar--image-loaded': imageLoadedSuccessfully },\n ]\"\n >\n <img\n v-if=\"showImage\"\n ref=\"avatarImage\"\n class=\"d-avatar__image\"\n data-qa=\"dt-avatar-image\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"\n >\n <dt-icon\n v-else-if=\"iconName\"\n :name=\"iconName\"\n :aria-label=\"iconAriaLabel\"\n :size=\"iconSize || AVATAR_ICON_SIZES[size]\"\n :class=\"[iconClass, AVATAR_KIND_MODIFIERS.icon]\"\n data-qa=\"dt-avatar-icon\"\n />\n <span\n v-else\n :class=\"[AVATAR_KIND_MODIFIERS.initials]\"\n >\n {{ formattedInitials }}\n </span>\n </div>\n <div\n v-if=\"overlayIcon || overlayText\"\n :class=\"overlayClasses\"\n >\n <dt-icon\n v-if=\"overlayIcon\"\n class=\"d-avatar__overlay-icon\"\n :name=\"overlayIcon\"\n />\n <p\n v-else-if=\"overlayText\"\n class=\"d-avatar__overlay-text\"\n >\n {{ overlayText }}\n </p>\n </div>\n <span\n v-if=\"showGroup\"\n class=\"d-avatar__count\"\n data-qa=\"dt-avatar-count\"\n >{{ formattedGroup }}</span>\n <dt-presence\n v-if=\"presence && !showGroup\"\n :presence=\"presence\"\n :class=\"[\n 'd-avatar__presence',\n AVATAR_PRESENCE_SIZE_MODIFIERS[size],\n ]\"\n v-bind=\"presenceProps\"\n data-qa=\"dt-presence\"\n />\n </component>\n</template>\n\n<script>\nimport { getUniqueString, getRandomElement } from '@/common/utils';\nimport { DtPresence } from '../presence';\nimport { DtIcon } from '@/components/icon';\nimport {\n AVATAR_KIND_MODIFIERS,\n AVATAR_SIZE_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_COLORS,\n AVATAR_GROUP_VALIDATOR,\n AVATAR_ICON_SIZES,\n} from './avatar_constants';\nimport { getIconNames } from '@/common/storybook_utils.js';\nimport { ICON_SIZE_MODIFIERS } from '@/components/icon/icon_constants.js';\nimport { extractInitialsFromName } from './utils';\n\nconst ICONS_LIST = getIconNames();\n\n/**\n * An avatar is a visual representation of a user or object.\n * @see https://dialtone.dialpad.com/components/avatar.html\n */\nexport default {\n name: 'DtAvatar',\n components: { DtPresence, DtIcon },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Id of the avatar content wrapper element\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Pass in a seed to get the random color generation based on that string. For example if you pass in a\n * user ID as the string it will return the same randomly generated colors every time for that user.\n */\n seed: {\n type: String,\n default: undefined,\n },\n\n /**\n * Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic\n * if the seed prop is set.\n */\n color: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the avatar\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (size) => Object.keys(AVATAR_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Used to customize the avatar container\n */\n avatarClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Set classes on the avatar canvas. Wrapper around the core avatar image.\n */\n canvasClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes. Used to customize the avatar icon\n */\n iconClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Determines whether to show the presence indicator for\n * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',\n * or 'active'. By default, it's null and nothing is shown.\n * @values null, busy, away, offline, active\n */\n presence: {\n type: String,\n default: AVATAR_PRESENCE_STATES.NONE,\n validator: (state) => {\n return Object.values(AVATAR_PRESENCE_STATES).includes(state);\n },\n },\n\n /**\n * A set of props to be passed into the presence component.\n */\n presenceProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Determines whether to show a group avatar.\n * Limit to 2 digits max, more than 99 will be rendered as “99+”.\n * if the number is 1 or less it would just show the regular avatar as if group had not been set.\n */\n group: {\n type: Number,\n default: undefined,\n validator: (group) => AVATAR_GROUP_VALIDATOR(group),\n },\n\n /**\n * The icon that overlays the avatar\n */\n overlayIcon: {\n type: String,\n default: '',\n },\n\n /**\n * The text that overlays the avatar\n */\n overlayText: {\n type: String,\n default: '',\n },\n\n /**\n * Used to customize the avatar overlay\n */\n overlayClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Source of the image\n */\n imageSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Alt attribute of the image, required if imageSrc is provided.\n * Can be set to '' (empty string) if the image is described\n * in text nearby\n */\n imageAlt: {\n type: String,\n default: undefined,\n },\n\n /**\n * Icon name to be displayed on the avatar\n */\n iconName: {\n type: String,\n default: undefined,\n validator: (name) => ICONS_LIST.includes(name),\n },\n\n /**\n * Icon size to be displayed on the avatar\n * @values 100, 200, 300, 400, 500, 600, 700, 800\n */\n iconSize: {\n type: String,\n default: '',\n validator: (size) => !size || Object.keys(ICON_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Full name used to extract initials.\n */\n fullName: {\n type: String,\n default: '',\n },\n\n /**\n * Makes the avatar focusable and clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the icon.\n * To avoid a11y issues, set this prop if clickable and iconName are set.\n */\n iconAriaLabel: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Avatar click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n data () {\n return {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_ICON_SIZES,\n imageLoadedSuccessfully: null,\n formattedInitials: '',\n initializing: false,\n };\n },\n\n computed: {\n isNotIconType () {\n return !this.iconName;\n },\n\n avatarClasses () {\n return [\n 'd-avatar',\n AVATAR_SIZE_MODIFIERS[this.validatedSize],\n this.avatarClass,\n {\n 'd-avatar--group': this.showGroup,\n [`d-avatar--color-${this.getColor()}`]: this.isNotIconType,\n 'd-avatar--clickable': this.clickable,\n },\n ];\n },\n\n overlayClasses () {\n return [\n 'd-avatar__overlay',\n this.overlayClass,\n ];\n },\n\n showGroup () {\n return AVATAR_GROUP_VALIDATOR(this.group);\n },\n\n formattedGroup () {\n return this.group > 99 ? '99+' : this.group;\n },\n\n validatedSize () {\n // TODO: Group only supports xs size for now. Remove this when we support other sizes.\n return this.group ? 'xs' : this.size;\n },\n\n showImage () {\n return this.imageLoadedSuccessfully !== false && this.imageSrc;\n },\n },\n\n watch: {\n fullName: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n group: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n imageSrc (newSrc) {\n this.imageLoadedSuccessfully = null;\n if (!newSrc) return;\n\n this.validateProps();\n this.setImageListeners();\n },\n },\n\n mounted () {\n this.validateProps();\n this.setImageListeners();\n },\n\n methods: {\n async setImageListeners () {\n await this.$nextTick();\n const el = this.$refs.avatarImage;\n if (!el) return;\n\n el.addEventListener('load', () => this._loadedImageEventHandler(el), { once: true });\n el.addEventListener('error', () => this._erroredImageEventHandler(el), { once: true });\n },\n\n formatInitials () {\n const initials = extractInitialsFromName(this.fullName);\n\n if (this.validatedSize === 'xs') {\n this.formattedInitials = '';\n } else if (this.validatedSize === 'sm') {\n this.formattedInitials = initials[0];\n } else {\n this.formattedInitials = initials;\n }\n },\n\n getColor () {\n return this.color ?? getRandomElement(AVATAR_COLORS, this.seed);\n },\n\n _loadedImageEventHandler (el) {\n this.imageLoadedSuccessfully = true;\n el.classList.remove('d-d-none');\n },\n\n _erroredImageEventHandler (el) {\n this.imageLoadedSuccessfully = false;\n el.classList.add('d-d-none');\n },\n\n validateProps () {\n if (this.imageSrc && this.imageAlt === undefined) {\n console.error('image-alt required if image-src is provided. Can be set to \"\" (empty string) if the image is described in text nearby');\n }\n },\n\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n//TODO: Move these classes to dialtone and document.\n.d-avatar--image-loaded {\n background-color: transparent;\n background-image: unset;\n}\n\n.d-avatar__count {\n z-index: var(--zi-base);\n}\n\n.d-avatar__presence {\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay {\n background-color: var(--dt-color-surface-contrast-opaque);\n opacity: var(--dt-opacity-900);\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dt-size-radius-circle);\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay-icon {\n color: var(--dt-color-foreground-primary-inverted);\n width: 100%;\n}\n\n.d-avatar__overlay-text {\n color: var(--dt-color-foreground-primary-inverted);\n font-weight: var(--dt-font-weight-bold);\n font-size: var(--dt-font-size-200);\n width: 100%;\n text-align: center;\n}\n\n.d-avatar--clickable {\n --avatar-color-border: transparent;\n\n cursor: pointer;\n padding: 0;\n background-color: transparent;\n\n border-radius: var(--dt-size-radius-circle);\n border: var(--dt-size-border-100) solid var(--avatar-color-border);\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--dt-shadow-focus);\n }\n\n &:hover {\n --avatar-color-border: var(--dt-color-border-default);\n }\n\n &:active {\n --avatar-color-border: var(--dt-color-border-moderate);\n\n transform: scale(0.98);\n }\n}\n</style>\n"],"names":["AVATAR_SIZE_MODIFIERS","AVATAR_KIND_MODIFIERS","AVATAR_PRESENCE_SIZE_MODIFIERS","AVATAR_PRESENCE_STATES","AVATAR_ICON_SIZES","AVATAR_COLORS","AVATAR_GROUP_VALIDATOR","group","getIconNames","iconNames","extractInitialsFromName","fullName","names","_","index","name","ICONS_LIST","_sfc_main","DtPresence","DtIcon","getUniqueString","size","state","ICON_SIZE_MODIFIERS","newSrc","el","initials","getRandomElement","_openBlock","_createBlock","_resolveDynamicComponent","$props","$options","_createElementVNode","_normalizeClass","$data","_createElementBlock","_component_dt_icon","_hoisted_2","_toDisplayString","_hoisted_3","_component_dt_presence","_mergeProps"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),c=require("../chunks/_plugin-vue_export-helper-6_y-gaV6.js"),l=require("./icon.cjs");require("@dialpad/dialtone-icons/vue3");require("../chunks/icon_constants-2S_OSQ1t.js");require("@dialpad/dialtone-icons/icons.json");const o={default:"",info:"d-badge--info",success:"d-badge--success",warning:"d-badge--warning",critical:"d-badge--critical",bulletin:"d-badge--bulletin",ai:"d-badge--ai"},n={label:"",count:"d-badge--count"},r={"black-400":"d-badge--decorate-black-400","black-500":"d-badge--decorate-black-500","black-900":"d-badge--decorate-black-900","red-200":"d-badge--decorate-red-200","red-300":"d-badge--decorate-red-300","red-400":"d-badge--decorate-red-400","purple-200":"d-badge--decorate-purple-200","purple-300":"d-badge--decorate-purple-300","purple-400":"d-badge--decorate-purple-400","purple-500":"d-badge--decorate-purple-500","blue-200":"d-badge--decorate-blue-200","blue-300":"d-badge--decorate-blue-300","blue-400":"d-badge--decorate-blue-400","green-300":"d-badge--decorate-green-300","green-400":"d-badge--decorate-green-400","green-500":"d-badge--decorate-green-500","gold-300":"d-badge--decorate-gold-300","gold-400":"d-badge--decorate-gold-400","gold-500":"d-badge--decorate-gold-500","magenta-200":"d-badge--decorate-magenta-200","magenta-300":"d-badge--decorate-magenta-300","magenta-400":"d-badge--decorate-magenta-400"},s={name:"DtBadge",components:{DtIcon:l.DtIcon},props:{iconLeft:{type:String,default:""},iconRight:{type:String,default:""},text:{type:String,default:""},kind:{type:String,default:"label",validator:a=>Object.keys(n).includes(a)},type:{type:String,default:"default",validator:a=>Object.keys(o).includes(a)},decoration:{type:String,default:void 0,validator:a=>Object.keys(r).includes(a)},labelClass:{type:[String,Array,Object],default:""}},data(){return{BADGE_TYPE_MODIFIERS:o,BADGE_KIND_MODIFIERS:n,BADGE_DECORATION_MODIFIERS:r}},computed:{hasIcons(){return this.iconLeft!==""||this.iconRight!==""}},watch:{$props:{immediate:!0,deep:!0,handler(){this.validateProps()}}},methods:{validateProps(){this.validateTypePropCombination(),this.validateDecorationPropCombination()},validateTypePropCombination(){this.type==="ai"&&this.kind==="count"&&console.error("DtBadge error: type: 'ai' with kind: 'count' is an invalid combination.")},validateDecorationPropCombination(){this.decoration&&((this.kind!=="label"||this.type!=="default")&&console.error("DtBadge error: decoration prop can only be used with kind: 'label' and type: 'default'."),this.hasIcons&&console.error("DtBadge error: decoration prop cannot be used with iconLeft or iconRight."))}}},g={key:0,class:"d-badge__decorative"},b={key:1,class:"d-badge__icon-left"},u={key:2,class:"d-badge__icon-right"};function p(a,m,t,D,d,f){const i=e.resolveComponent("dt-icon");return e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["d-badge",d.BADGE_TYPE_MODIFIERS[t.type],d.BADGE_KIND_MODIFIERS[t.kind],d.BADGE_DECORATION_MODIFIERS[t.decoration]]),"data-qa":"dt-badge"},[t.decoration?(e.openBlock(),e.createElementBlock("span",g)):e.createCommentVNode("",!0),t.iconLeft||t.type==="ai"?(e.openBlock(),e.createElementBlock("span",b,[e.createVNode(i,{name:t.iconLeft||"dialpad-ai",size:"200"},null,8,["name"])])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass(["d-badge__label",t.labelClass])},[e.renderSlot(a.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(t.text),1)])],2),t.iconRight?(e.openBlock(),e.createElementBlock("span",u,[e.createVNode(i,{name:t.iconRight,size:"200"},null,8,["name"])])):e.createCommentVNode("",!0)],2)}const _=c._(s,[["render",p]]);exports.BADGE_DECORATION_MODIFIERS=r;exports.BADGE_KIND_MODIFIERS=n;exports.BADGE_TYPE_MODIFIERS=o;exports.DtBadge=_;
2
+ //# sourceMappingURL=badge.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.cjs","sources":["../../components/badge/badge_constants.js","../../components/badge/badge.vue"],"sourcesContent":["export const BADGE_TYPE_MODIFIERS = {\n default: '',\n info: 'd-badge--info',\n success: 'd-badge--success',\n warning: 'd-badge--warning',\n critical: 'd-badge--critical',\n bulletin: 'd-badge--bulletin',\n ai: 'd-badge--ai',\n};\n\nexport const BADGE_KIND_MODIFIERS = {\n label: '',\n count: 'd-badge--count',\n};\n\nexport const BADGE_DECORATION_MODIFIERS = {\n 'black-400': 'd-badge--decorate-black-400',\n 'black-500': 'd-badge--decorate-black-500',\n 'black-900': 'd-badge--decorate-black-900',\n 'red-200': 'd-badge--decorate-red-200',\n 'red-300': 'd-badge--decorate-red-300',\n 'red-400': 'd-badge--decorate-red-400',\n 'purple-200': 'd-badge--decorate-purple-200',\n 'purple-300': 'd-badge--decorate-purple-300',\n 'purple-400': 'd-badge--decorate-purple-400',\n 'purple-500': 'd-badge--decorate-purple-500',\n 'blue-200': 'd-badge--decorate-blue-200',\n 'blue-300': 'd-badge--decorate-blue-300',\n 'blue-400': 'd-badge--decorate-blue-400',\n 'green-300': 'd-badge--decorate-green-300',\n 'green-400': 'd-badge--decorate-green-400',\n 'green-500': 'd-badge--decorate-green-500',\n 'gold-300': 'd-badge--decorate-gold-300',\n 'gold-400': 'd-badge--decorate-gold-400',\n 'gold-500': 'd-badge--decorate-gold-500',\n 'magenta-200': 'd-badge--decorate-magenta-200',\n 'magenta-300': 'd-badge--decorate-magenta-300',\n 'magenta-400': 'd-badge--decorate-magenta-400',\n};\n","<template>\n <span\n :class=\"[\n 'd-badge',\n BADGE_TYPE_MODIFIERS[type],\n BADGE_KIND_MODIFIERS[kind],\n BADGE_DECORATION_MODIFIERS[decoration],\n ]\"\n data-qa=\"dt-badge\"\n >\n <span\n v-if=\"decoration\"\n class=\"d-badge__decorative\"\n />\n <span\n v-if=\"iconLeft || type === 'ai'\"\n class=\"d-badge__icon-left\"\n >\n <dt-icon\n :name=\"iconLeft || 'dialpad-ai'\"\n size=\"200\"\n />\n </span>\n <span :class=\"['d-badge__label', labelClass]\">\n <!-- @slot Slot for badge content, defaults to text prop -->\n <slot>\n {{ text }}\n </slot>\n </span>\n <span\n v-if=\"iconRight\"\n class=\"d-badge__icon-right\"\n >\n <dt-icon\n :name=\"iconRight\"\n size=\"200\"\n />\n </span>\n </span>\n</template>\n\n<script>\nimport { BADGE_TYPE_MODIFIERS, BADGE_KIND_MODIFIERS, BADGE_DECORATION_MODIFIERS } from './badge_constants';\nimport { DtIcon } from '@/components/icon';\n\n/**\n * A badge is a compact UI element that provides brief, descriptive information about an element.\n * It is terse, ideally one word.\n * @see https://dialtone.dialpad.com/components/badge.html\n */\nexport default {\n name: 'DtBadge',\n\n components: {\n DtIcon,\n },\n\n props: {\n /**\n * Icon on the left side of the badge. Supports any valid icon name from the icon catalog at\n * https://dialtone.dialpad.com/components/icon.html#icon-catalog. If type:'ai' is set, the ai icon\n * will automatically be shown here, but this can be overridden by setting this prop.\n */\n iconLeft: {\n type: String,\n default: '',\n },\n\n /**\n * Icon on the right side of the badge. Supports any valid icon name from the icon catalog at\n * https://dialtone.dialpad.com/components/icon.html#icon-catalog\n */\n iconRight: {\n type: String,\n default: '',\n },\n\n /**\n * Text for the badge content\n */\n text: {\n type: String,\n default: '',\n },\n\n /**\n * The kind of badge which determines the styling\n * @values label, count\n */\n kind: {\n type: String,\n default: 'label',\n validator: (kind) => Object.keys(BADGE_KIND_MODIFIERS).includes(kind),\n },\n\n /**\n * Color for the badge background\n * @values default, info, success, warning, critical, bulletin, ai\n */\n type: {\n type: String,\n default: 'default',\n validator: (type) => Object.keys(BADGE_TYPE_MODIFIERS).includes(type),\n },\n\n /**\n * Decoration for the badge. This can be only used with kind: label and type: default\n * with no iconLeft and iconRight\n * @values default, black-400, black-500, black-900, red-200, red-300, red-400, purple-200,\n * purple-300, purple-400, purple-500, blue-200, blue-300, blue-400, green-300, green-400,\n * green-500, gold-300, gold-400, gold-500, magenta-200, magenta-300, magenta-400\n */\n decoration: {\n type: String,\n default: undefined,\n validator: (type) => Object.keys(BADGE_DECORATION_MODIFIERS).includes(type),\n },\n\n /**\n * Used to customize the label container\n */\n labelClass: {\n type: [String, Array, Object],\n default: '',\n },\n },\n\n data () {\n return {\n BADGE_TYPE_MODIFIERS,\n BADGE_KIND_MODIFIERS,\n BADGE_DECORATION_MODIFIERS,\n };\n },\n\n computed: {\n hasIcons () {\n return this.iconLeft !== '' || this.iconRight !== '';\n },\n },\n\n watch: {\n $props: {\n immediate: true,\n deep: true,\n handler () {\n this.validateProps();\n },\n },\n },\n\n methods: {\n validateProps () {\n this.validateTypePropCombination();\n this.validateDecorationPropCombination();\n },\n\n validateTypePropCombination () {\n if (this.type === 'ai' && this.kind === 'count') {\n console.error('DtBadge error: type: \\'ai\\' with kind: \\'count\\' is an invalid combination.');\n }\n },\n\n validateDecorationPropCombination () {\n if (!this.decoration) return;\n\n if (this.kind !== 'label' || this.type !== 'default') {\n console.error('DtBadge error: decoration prop can only be used with kind: \\'label\\' and type: \\'default\\'.');\n }\n\n if (this.hasIcons) {\n console.error('DtBadge error: decoration prop cannot be used with iconLeft or iconRight.');\n }\n },\n },\n};\n</script>\n"],"names":["BADGE_TYPE_MODIFIERS","BADGE_KIND_MODIFIERS","BADGE_DECORATION_MODIFIERS","_sfc_main","DtIcon","kind","type","_createElementBlock","_normalizeClass","$data","$props","_openBlock","_hoisted_1","_hoisted_2","_createVNode","_component_dt_icon","_createElementVNode","_renderSlot","_ctx","_hoisted_3"],"mappings":"kUAAY,MAACA,EAAuB,CAClC,QAAS,GACT,KAAM,gBACN,QAAS,mBACT,QAAS,mBACT,SAAU,oBACV,SAAU,oBACV,GAAI,aACN,EAEaC,EAAuB,CAClC,MAAO,GACP,MAAO,gBACT,EAEaC,EAA6B,CACxC,YAAa,8BACb,YAAa,8BACb,YAAa,8BACb,UAAW,4BACX,UAAW,4BACX,UAAW,4BACX,aAAc,+BACd,aAAc,+BACd,aAAc,+BACd,aAAc,+BACd,WAAY,6BACZ,WAAY,6BACZ,WAAY,6BACZ,YAAa,8BACb,YAAa,8BACb,YAAa,8BACb,WAAY,6BACZ,WAAY,6BACZ,WAAY,6BACZ,cAAe,gCACf,cAAe,gCACf,cAAe,+BACjB,ECYKC,EAAU,CACb,KAAM,UAEN,WAAY,CACV,OAAAC,EAAM,MACP,EAED,MAAO,CAML,SAAU,CACR,KAAM,OACN,QAAS,EACV,EAMD,UAAW,CACT,KAAM,OACN,QAAS,EACV,EAKD,KAAM,CACJ,KAAM,OACN,QAAS,EACV,EAMD,KAAM,CACJ,KAAM,OACN,QAAS,QACT,UAAYC,GAAS,OAAO,KAAKJ,CAAoB,EAAE,SAASI,CAAI,CACrE,EAMD,KAAM,CACJ,KAAM,OACN,QAAS,UACT,UAAYC,GAAS,OAAO,KAAKN,CAAoB,EAAE,SAASM,CAAI,CACrE,EASD,WAAY,CACV,KAAM,OACN,QAAS,OACT,UAAYA,GAAS,OAAO,KAAKJ,CAA0B,EAAE,SAASI,CAAI,CAC3E,EAKD,WAAY,CACV,KAAM,CAAC,OAAQ,MAAO,MAAM,EAC5B,QAAS,EACV,CACF,EAED,MAAQ,CACN,MAAO,CACL,qBAAAN,EACA,qBAAAC,EACA,2BAAAC,EAEH,EAED,SAAU,CACR,UAAY,CACV,OAAO,KAAK,WAAa,IAAM,KAAK,YAAc,EACnD,CACF,EAED,MAAO,CACL,OAAQ,CACN,UAAW,GACX,KAAM,GACN,SAAW,CACT,KAAK,cAAa,CACnB,CACF,CACF,EAED,QAAS,CACP,eAAiB,CACf,KAAK,4BAA2B,EAChC,KAAK,kCAAiC,CACvC,EAED,6BAA+B,CACzB,KAAK,OAAS,MAAQ,KAAK,OAAS,SACtC,QAAQ,MAAM,yEAA6E,CAE9F,EAED,mCAAqC,CAC9B,KAAK,cAEN,KAAK,OAAS,SAAW,KAAK,OAAS,YACzC,QAAQ,MAAM,yFAA6F,EAGzG,KAAK,UACP,QAAQ,MAAM,2EAA2E,EAE5F,CACF,CACH,WAnKM,MAAM,gCAIN,MAAM,+BAeN,MAAM,0GA9BVK,EAqCO,mBAAA,OAAA,CApCJ,MAAKC,EAAAA,eAAA,WAA2BC,EAAA,qBAAqBC,EAAI,IAAA,EAASD,EAAA,qBAAqBC,EAAI,IAAA,EAASD,EAAA,2BAA2BC,EAAU,UAAA,IAM1I,UAAQ,aAGAA,EAAU,YADlBC,EAAAA,YAAAJ,EAAAA,mBAGE,OAHFK,CAGE,+BAEMF,EAAA,UAAYA,EAAI,OAAA,MADxBC,EAAAA,YAAAJ,EAAAA,mBAQO,OARPM,EAQO,CAJLC,EAAAA,YAGEC,EAAA,CAFC,KAAML,EAAQ,UAAA,aACf,KAAK,uDAGTM,EAAAA,mBAKO,OAAA,CALA,yCAA0BN,EAAU,UAAA,CAAA,IAEzCO,EAAAA,WAEOC,sBAFP,IAEO,qCADFR,EAAI,IAAA,EAAA,CAAA,QAIHA,EAAS,WADjBC,EAAAA,YAAAJ,EAAAA,mBAQO,OARPY,EAQO,CAJLL,EAAAA,YAGEC,EAAA,CAFC,KAAML,EAAS,UAChB,KAAK"}
package/dist/lib/badge.js CHANGED
@@ -4,7 +4,6 @@ import { DtIcon as h } from "./icon.js";
4
4
  import "@dialpad/dialtone-icons/vue3";
5
5
  import "../chunks/icon_constants-OpYAAKwF.js";
6
6
  import "@dialpad/dialtone-icons/icons.json";
7
- import "./skeleton.js";
8
7
  const l = {
9
8
  default: "",
10
9
  info: "d-badge--info",
@@ -182,11 +181,11 @@ function E(t, S, e, O, o, B) {
182
181
  ])) : n("", !0)
183
182
  ], 2);
184
183
  }
185
- const w = /* @__PURE__ */ f(y, [["render", E]]);
184
+ const T = /* @__PURE__ */ f(y, [["render", E]]);
186
185
  export {
187
186
  s as BADGE_DECORATION_MODIFIERS,
188
187
  g as BADGE_KIND_MODIFIERS,
189
188
  l as BADGE_TYPE_MODIFIERS,
190
- w as DtBadge
189
+ T as DtBadge
191
190
  };
192
191
  //# sourceMappingURL=badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sources":["../../components/badge/badge_constants.js","../../components/badge/badge.vue"],"sourcesContent":["export const BADGE_TYPE_MODIFIERS = {\n default: '',\n info: 'd-badge--info',\n success: 'd-badge--success',\n warning: 'd-badge--warning',\n critical: 'd-badge--critical',\n bulletin: 'd-badge--bulletin',\n ai: 'd-badge--ai',\n};\n\nexport const BADGE_KIND_MODIFIERS = {\n label: '',\n count: 'd-badge--count',\n};\n\nexport const BADGE_DECORATION_MODIFIERS = {\n 'black-400': 'd-badge--decorate-black-400',\n 'black-500': 'd-badge--decorate-black-500',\n 'black-900': 'd-badge--decorate-black-900',\n 'red-200': 'd-badge--decorate-red-200',\n 'red-300': 'd-badge--decorate-red-300',\n 'red-400': 'd-badge--decorate-red-400',\n 'purple-200': 'd-badge--decorate-purple-200',\n 'purple-300': 'd-badge--decorate-purple-300',\n 'purple-400': 'd-badge--decorate-purple-400',\n 'purple-500': 'd-badge--decorate-purple-500',\n 'blue-200': 'd-badge--decorate-blue-200',\n 'blue-300': 'd-badge--decorate-blue-300',\n 'blue-400': 'd-badge--decorate-blue-400',\n 'green-300': 'd-badge--decorate-green-300',\n 'green-400': 'd-badge--decorate-green-400',\n 'green-500': 'd-badge--decorate-green-500',\n 'gold-300': 'd-badge--decorate-gold-300',\n 'gold-400': 'd-badge--decorate-gold-400',\n 'gold-500': 'd-badge--decorate-gold-500',\n 'magenta-200': 'd-badge--decorate-magenta-200',\n 'magenta-300': 'd-badge--decorate-magenta-300',\n 'magenta-400': 'd-badge--decorate-magenta-400',\n};\n","<template>\n <span\n :class=\"[\n 'd-badge',\n BADGE_TYPE_MODIFIERS[type],\n BADGE_KIND_MODIFIERS[kind],\n BADGE_DECORATION_MODIFIERS[decoration],\n ]\"\n data-qa=\"dt-badge\"\n >\n <span\n v-if=\"decoration\"\n class=\"d-badge__decorative\"\n />\n <span\n v-if=\"iconLeft || type === 'ai'\"\n class=\"d-badge__icon-left\"\n >\n <dt-icon\n :name=\"iconLeft || 'dialpad-ai'\"\n size=\"200\"\n />\n </span>\n <span :class=\"['d-badge__label', labelClass]\">\n <!-- @slot Slot for badge content, defaults to text prop -->\n <slot>\n {{ text }}\n </slot>\n </span>\n <span\n v-if=\"iconRight\"\n class=\"d-badge__icon-right\"\n >\n <dt-icon\n :name=\"iconRight\"\n size=\"200\"\n />\n </span>\n </span>\n</template>\n\n<script>\nimport { BADGE_TYPE_MODIFIERS, BADGE_KIND_MODIFIERS, BADGE_DECORATION_MODIFIERS } from './badge_constants';\nimport { DtIcon } from '@/components/icon';\n\n/**\n * A badge is a compact UI element that provides brief, descriptive information about an element.\n * It is terse, ideally one word.\n * @see https://dialtone.dialpad.com/components/badge.html\n */\nexport default {\n name: 'DtBadge',\n\n components: {\n DtIcon,\n },\n\n props: {\n /**\n * Icon on the left side of the badge. Supports any valid icon name from the icon catalog at\n * https://dialtone.dialpad.com/components/icon.html#icon-catalog. If type:'ai' is set, the ai icon\n * will automatically be shown here, but this can be overridden by setting this prop.\n */\n iconLeft: {\n type: String,\n default: '',\n },\n\n /**\n * Icon on the right side of the badge. Supports any valid icon name from the icon catalog at\n * https://dialtone.dialpad.com/components/icon.html#icon-catalog\n */\n iconRight: {\n type: String,\n default: '',\n },\n\n /**\n * Text for the badge content\n */\n text: {\n type: String,\n default: '',\n },\n\n /**\n * The kind of badge which determines the styling\n * @values label, count\n */\n kind: {\n type: String,\n default: 'label',\n validator: (kind) => Object.keys(BADGE_KIND_MODIFIERS).includes(kind),\n },\n\n /**\n * Color for the badge background\n * @values default, info, success, warning, critical, bulletin, ai\n */\n type: {\n type: String,\n default: 'default',\n validator: (type) => Object.keys(BADGE_TYPE_MODIFIERS).includes(type),\n },\n\n /**\n * Decoration for the badge. This can be only used with kind: label and type: default\n * with no iconLeft and iconRight\n * @values default, black-400, black-500, black-900, red-200, red-300, red-400, purple-200,\n * purple-300, purple-400, purple-500, blue-200, blue-300, blue-400, green-300, green-400,\n * green-500, gold-300, gold-400, gold-500, magenta-200, magenta-300, magenta-400\n */\n decoration: {\n type: String,\n default: undefined,\n validator: (type) => Object.keys(BADGE_DECORATION_MODIFIERS).includes(type),\n },\n\n /**\n * Used to customize the label container\n */\n labelClass: {\n type: [String, Array, Object],\n default: '',\n },\n },\n\n data () {\n return {\n BADGE_TYPE_MODIFIERS,\n BADGE_KIND_MODIFIERS,\n BADGE_DECORATION_MODIFIERS,\n };\n },\n\n computed: {\n hasIcons () {\n return this.iconLeft !== '' || this.iconRight !== '';\n },\n },\n\n watch: {\n $props: {\n immediate: true,\n deep: true,\n handler () {\n this.validateProps();\n },\n },\n },\n\n methods: {\n validateProps () {\n this.validateTypePropCombination();\n this.validateDecorationPropCombination();\n },\n\n validateTypePropCombination () {\n if (this.type === 'ai' && this.kind === 'count') {\n console.error('DtBadge error: type: \\'ai\\' with kind: \\'count\\' is an invalid combination.');\n }\n },\n\n validateDecorationPropCombination () {\n if (!this.decoration) return;\n\n if (this.kind !== 'label' || this.type !== 'default') {\n console.error('DtBadge error: decoration prop can only be used with kind: \\'label\\' and type: \\'default\\'.');\n }\n\n if (this.hasIcons) {\n console.error('DtBadge error: decoration prop cannot be used with iconLeft or iconRight.');\n }\n },\n },\n};\n</script>\n"],"names":["BADGE_TYPE_MODIFIERS","BADGE_KIND_MODIFIERS","BADGE_DECORATION_MODIFIERS","_sfc_main","DtIcon","kind","type","_createElementBlock","_normalizeClass","$data","$props","_openBlock","_hoisted_1","_hoisted_2","_createVNode","_component_dt_icon","_createElementVNode","_renderSlot","_ctx","_hoisted_3"],"mappings":";;;;;;;AAAY,MAACA,IAAuB;AAAA,EAClC,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,IAAI;AACN,GAEaC,IAAuB;AAAA,EAClC,OAAO;AAAA,EACP,OAAO;AACT,GAEaC,IAA6B;AAAA,EACxC,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB,GCYKC,IAAU;AAAA,EACb,MAAM;AAAA,EAEN,YAAY;AAAA,IACV,QAAAC;AAAA,EACD;AAAA,EAED,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAACC,MAAS,OAAO,KAAKJ,CAAoB,EAAE,SAASI,CAAI;AAAA,IACrE;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAACC,MAAS,OAAO,KAAKN,CAAoB,EAAE,SAASM,CAAI;AAAA,IACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASD,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAACA,MAAS,OAAO,KAAKJ,CAA0B,EAAE,SAASI,CAAI;AAAA,IAC3E;AAAA;AAAA;AAAA;AAAA,IAKD,YAAY;AAAA,MACV,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EAED,OAAQ;AACN,WAAO;AAAA,MACL,sBAAAN;AAAA,MACA,sBAAAC;AAAA,MACA,4BAAAC;AAAA;EAEH;AAAA,EAED,UAAU;AAAA,IACR,WAAY;AACV,aAAO,KAAK,aAAa,MAAM,KAAK,cAAc;AAAA,IACnD;AAAA,EACF;AAAA,EAED,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,WAAW;AAAA,MACX,MAAM;AAAA,MACN,UAAW;AACT,aAAK,cAAa;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EAED,SAAS;AAAA,IACP,gBAAiB;AACf,WAAK,4BAA2B,GAChC,KAAK,kCAAiC;AAAA,IACvC;AAAA,IAED,8BAA+B;AAC7B,MAAI,KAAK,SAAS,QAAQ,KAAK,SAAS,WACtC,QAAQ,MAAM,yEAA6E;AAAA,IAE9F;AAAA,IAED,oCAAqC;AACnC,MAAK,KAAK,gBAEN,KAAK,SAAS,WAAW,KAAK,SAAS,cACzC,QAAQ,MAAM,yFAA6F,GAGzG,KAAK,YACP,QAAQ,MAAM,2EAA2E;AAAA,IAE5F;AAAA,EACF;AACH;;EAnKM,OAAM;;;EAIN,OAAM;;;EAeN,OAAM;;;;cA9BVK,EAqCO,QAAA;AAAA,IApCJ,OAAKC,EAAA;AAAA;MAA2BC,EAAA,qBAAqBC,EAAI,IAAA;AAAA,MAASD,EAAA,qBAAqBC,EAAI,IAAA;AAAA,MAASD,EAAA,2BAA2BC,EAAU,UAAA;AAAA;IAM1I,WAAQ;AAAA;IAGAA,EAAU,cADlBC,KAAAJ,EAGE,QAHFK,CAGE;IAEMF,EAAA,YAAYA,EAAI,SAAA,QADxBC,KAAAJ,EAQO,QARPM,GAQO;AAAA,MAJLC,EAGEC,GAAA;AAAA,QAFC,MAAML,EAAQ,YAAA;AAAA,QACf,MAAK;AAAA;;IAGTM,EAKO,QAAA;AAAA,MALA,4BAA0BN,EAAU,UAAA,CAAA;AAAA;MAEzCO,EAEOC,yBAFP,MAEO;AAAA,YADFR,EAAI,IAAA,GAAA,CAAA;AAAA;;IAIHA,EAAS,aADjBC,KAAAJ,EAQO,QARPY,GAQO;AAAA,MAJLL,EAGEC,GAAA;AAAA,QAFC,MAAML,EAAS;AAAA,QAChB,MAAK;AAAA;;;;;"}
1
+ {"version":3,"file":"badge.js","sources":["../../components/badge/badge_constants.js","../../components/badge/badge.vue"],"sourcesContent":["export const BADGE_TYPE_MODIFIERS = {\n default: '',\n info: 'd-badge--info',\n success: 'd-badge--success',\n warning: 'd-badge--warning',\n critical: 'd-badge--critical',\n bulletin: 'd-badge--bulletin',\n ai: 'd-badge--ai',\n};\n\nexport const BADGE_KIND_MODIFIERS = {\n label: '',\n count: 'd-badge--count',\n};\n\nexport const BADGE_DECORATION_MODIFIERS = {\n 'black-400': 'd-badge--decorate-black-400',\n 'black-500': 'd-badge--decorate-black-500',\n 'black-900': 'd-badge--decorate-black-900',\n 'red-200': 'd-badge--decorate-red-200',\n 'red-300': 'd-badge--decorate-red-300',\n 'red-400': 'd-badge--decorate-red-400',\n 'purple-200': 'd-badge--decorate-purple-200',\n 'purple-300': 'd-badge--decorate-purple-300',\n 'purple-400': 'd-badge--decorate-purple-400',\n 'purple-500': 'd-badge--decorate-purple-500',\n 'blue-200': 'd-badge--decorate-blue-200',\n 'blue-300': 'd-badge--decorate-blue-300',\n 'blue-400': 'd-badge--decorate-blue-400',\n 'green-300': 'd-badge--decorate-green-300',\n 'green-400': 'd-badge--decorate-green-400',\n 'green-500': 'd-badge--decorate-green-500',\n 'gold-300': 'd-badge--decorate-gold-300',\n 'gold-400': 'd-badge--decorate-gold-400',\n 'gold-500': 'd-badge--decorate-gold-500',\n 'magenta-200': 'd-badge--decorate-magenta-200',\n 'magenta-300': 'd-badge--decorate-magenta-300',\n 'magenta-400': 'd-badge--decorate-magenta-400',\n};\n","<template>\n <span\n :class=\"[\n 'd-badge',\n BADGE_TYPE_MODIFIERS[type],\n BADGE_KIND_MODIFIERS[kind],\n BADGE_DECORATION_MODIFIERS[decoration],\n ]\"\n data-qa=\"dt-badge\"\n >\n <span\n v-if=\"decoration\"\n class=\"d-badge__decorative\"\n />\n <span\n v-if=\"iconLeft || type === 'ai'\"\n class=\"d-badge__icon-left\"\n >\n <dt-icon\n :name=\"iconLeft || 'dialpad-ai'\"\n size=\"200\"\n />\n </span>\n <span :class=\"['d-badge__label', labelClass]\">\n <!-- @slot Slot for badge content, defaults to text prop -->\n <slot>\n {{ text }}\n </slot>\n </span>\n <span\n v-if=\"iconRight\"\n class=\"d-badge__icon-right\"\n >\n <dt-icon\n :name=\"iconRight\"\n size=\"200\"\n />\n </span>\n </span>\n</template>\n\n<script>\nimport { BADGE_TYPE_MODIFIERS, BADGE_KIND_MODIFIERS, BADGE_DECORATION_MODIFIERS } from './badge_constants';\nimport { DtIcon } from '@/components/icon';\n\n/**\n * A badge is a compact UI element that provides brief, descriptive information about an element.\n * It is terse, ideally one word.\n * @see https://dialtone.dialpad.com/components/badge.html\n */\nexport default {\n name: 'DtBadge',\n\n components: {\n DtIcon,\n },\n\n props: {\n /**\n * Icon on the left side of the badge. Supports any valid icon name from the icon catalog at\n * https://dialtone.dialpad.com/components/icon.html#icon-catalog. If type:'ai' is set, the ai icon\n * will automatically be shown here, but this can be overridden by setting this prop.\n */\n iconLeft: {\n type: String,\n default: '',\n },\n\n /**\n * Icon on the right side of the badge. Supports any valid icon name from the icon catalog at\n * https://dialtone.dialpad.com/components/icon.html#icon-catalog\n */\n iconRight: {\n type: String,\n default: '',\n },\n\n /**\n * Text for the badge content\n */\n text: {\n type: String,\n default: '',\n },\n\n /**\n * The kind of badge which determines the styling\n * @values label, count\n */\n kind: {\n type: String,\n default: 'label',\n validator: (kind) => Object.keys(BADGE_KIND_MODIFIERS).includes(kind),\n },\n\n /**\n * Color for the badge background\n * @values default, info, success, warning, critical, bulletin, ai\n */\n type: {\n type: String,\n default: 'default',\n validator: (type) => Object.keys(BADGE_TYPE_MODIFIERS).includes(type),\n },\n\n /**\n * Decoration for the badge. This can be only used with kind: label and type: default\n * with no iconLeft and iconRight\n * @values default, black-400, black-500, black-900, red-200, red-300, red-400, purple-200,\n * purple-300, purple-400, purple-500, blue-200, blue-300, blue-400, green-300, green-400,\n * green-500, gold-300, gold-400, gold-500, magenta-200, magenta-300, magenta-400\n */\n decoration: {\n type: String,\n default: undefined,\n validator: (type) => Object.keys(BADGE_DECORATION_MODIFIERS).includes(type),\n },\n\n /**\n * Used to customize the label container\n */\n labelClass: {\n type: [String, Array, Object],\n default: '',\n },\n },\n\n data () {\n return {\n BADGE_TYPE_MODIFIERS,\n BADGE_KIND_MODIFIERS,\n BADGE_DECORATION_MODIFIERS,\n };\n },\n\n computed: {\n hasIcons () {\n return this.iconLeft !== '' || this.iconRight !== '';\n },\n },\n\n watch: {\n $props: {\n immediate: true,\n deep: true,\n handler () {\n this.validateProps();\n },\n },\n },\n\n methods: {\n validateProps () {\n this.validateTypePropCombination();\n this.validateDecorationPropCombination();\n },\n\n validateTypePropCombination () {\n if (this.type === 'ai' && this.kind === 'count') {\n console.error('DtBadge error: type: \\'ai\\' with kind: \\'count\\' is an invalid combination.');\n }\n },\n\n validateDecorationPropCombination () {\n if (!this.decoration) return;\n\n if (this.kind !== 'label' || this.type !== 'default') {\n console.error('DtBadge error: decoration prop can only be used with kind: \\'label\\' and type: \\'default\\'.');\n }\n\n if (this.hasIcons) {\n console.error('DtBadge error: decoration prop cannot be used with iconLeft or iconRight.');\n }\n },\n },\n};\n</script>\n"],"names":["BADGE_TYPE_MODIFIERS","BADGE_KIND_MODIFIERS","BADGE_DECORATION_MODIFIERS","_sfc_main","DtIcon","kind","type","_createElementBlock","_normalizeClass","$data","$props","_openBlock","_hoisted_1","_hoisted_2","_createVNode","_component_dt_icon","_createElementVNode","_renderSlot","_ctx","_hoisted_3"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../chunks/modal-qEzlo0Sj.js"),l=require("./utils.cjs"),b=require("../chunks/sr_only_close_button-iD7s1Pbj.js"),e=require("vue"),m=require("../chunks/_plugin-vue_export-helper-6_y-gaV6.js"),r=require("../chunks/notice_action-jO199emq.js"),f=require("../chunks/notice_constants-mC6al2Dm.js");require("./constants.cjs");require("./icon.cjs");require("@dialpad/dialtone-icons/vue3");require("../chunks/icon_constants-2S_OSQ1t.js");require("@dialpad/dialtone-icons/icons.json");require("./button.cjs");require("../chunks/link_constants-Kn6kP4i1.js");const g={name:"DtBanner",components:{DtNoticeIcon:r.a,DtNoticeContent:r.b,DtNoticeAction:r.D},mixins:[u.M,b.a],props:{titleId:{type:String,default(){return l.default.getUniqueString()}},contentId:{type:String,default(){return l.default.getUniqueString()}},title:{type:String,default:""},important:{type:Boolean,default:!1},pinned:{type:Boolean,default:!1},kind:{type:String,default:"base",validate(t){return f.N.includes(t)}},closeButtonProps:{type:Object,default:()=>({})},hideClose:{type:Boolean,default:!1},hideIcon:{type:Boolean,default:!1},hideAction:{type:Boolean,default:!1},dialogClass:{type:String,default:""},backgroundImage:{type:String,default:""},backgroundSize:{type:String,default:"cover"}},emits:["close"],computed:{role(){return this.important?"alertdialog":"status"},bannerClass(){return["d-banner",{error:"d-banner--error",info:"d-banner--info",success:"d-banner--success",warning:"d-banner--warning",base:"d-banner--base"}[this.kind],{"d-banner--important":this.important,"d-banner--pinned":this.pinned}]},bannerBackgroundImage(){return this.backgroundImage===""?null:`background-image: url(${this.backgroundImage});
2
+ background-size: ${this.backgroundSize};`}},mounted(){this.important&&this.focusFirstElement()},methods:{trapFocus(t){this.important&&this.focusTrappedTabPress(t)}}},y=["role","aria-labelledby","aria-describedby"];function h(t,o,n,_,C,i){const d=e.resolveComponent("dt-notice-icon"),s=e.resolveComponent("dt-notice-content"),c=e.resolveComponent("dt-notice-action");return e.openBlock(),e.createElementBlock("aside",{class:e.normalizeClass(i.bannerClass),style:e.normalizeStyle(i.bannerBackgroundImage),onKeydown:o[1]||(o[1]=e.withKeys((...a)=>i.trapFocus&&i.trapFocus(...a),["tab"]))},[e.createElementVNode("div",{class:e.normalizeClass(["d-banner__dialog",n.dialogClass]),role:i.role,"aria-labelledby":n.titleId,"aria-describedby":n.contentId},[n.hideIcon?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(d,{key:0,kind:n.kind},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"icon")]),_:3},8,["kind"])),e.createVNode(s,{"title-id":n.titleId,"content-id":n.contentId,title:n.title},{titleOverride:e.withCtx(()=>[e.renderSlot(t.$slots,"titleOverride")]),default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},8,["title-id","content-id","title"]),e.createVNode(c,{"hide-action":n.hideAction,"hide-close":n.hideClose,"close-button-props":n.closeButtonProps,"visually-hidden-close":t.visuallyHiddenClose,"visually-hidden-close-label":t.visuallyHiddenCloseLabel,onClose:o[0]||(o[0]=a=>t.$emit("close"))},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"action")]),_:3},8,["hide-action","hide-close","close-button-props","visually-hidden-close","visually-hidden-close-label"])],10,y)],38)}const p=m._(g,[["render",h]]);exports.DtBanner=p;
3
+ //# sourceMappingURL=banner.cjs.map