@dialpad/dialtone 9.123.2 → 9.125.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 (344) hide show
  1. package/README.md +12 -5
  2. package/dist/css/dialtone-default-theme.css +414 -77
  3. package/dist/css/dialtone-default-theme.min.css +1 -1
  4. package/dist/css/dialtone-docs.json +1 -1
  5. package/dist/css/dialtone.css +188 -68
  6. package/dist/css/dialtone.min.css +1 -1
  7. package/dist/css/svg/spot/playlist.svg +1 -0
  8. package/dist/css/vue/spot/SpotPlaylist.vue +3 -0
  9. package/dist/tokens/doc.json +24348 -24348
  10. package/dist/vue2/common/mixins/index.cjs +1 -1
  11. package/dist/vue2/common/mixins/index.js +10 -10
  12. package/dist/vue2/common/mixins/localization.cjs +2 -0
  13. package/dist/vue2/common/mixins/localization.cjs.map +1 -0
  14. package/dist/vue2/common/mixins/localization.js +10 -0
  15. package/dist/vue2/common/mixins/localization.js.map +1 -0
  16. package/dist/vue2/common/utils/index.cjs +1 -1
  17. package/dist/vue2/common/utils/index.cjs.map +1 -1
  18. package/dist/vue2/common/utils/index.js +43 -39
  19. package/dist/vue2/common/utils/index.js.map +1 -1
  20. package/dist/vue2/component-documentation.json +1 -1
  21. package/dist/vue2/dialtone-vue.cjs +1 -1
  22. package/dist/vue2/dialtone-vue.js +341 -340
  23. package/dist/vue2/dialtone-vue.js.map +1 -1
  24. package/dist/vue2/lib/attachment-carousel/attachment-carousel.cjs +1 -1
  25. package/dist/vue2/lib/attachment-carousel/attachment-carousel.cjs.map +1 -1
  26. package/dist/vue2/lib/attachment-carousel/attachment-carousel.js +61 -86
  27. package/dist/vue2/lib/attachment-carousel/attachment-carousel.js.map +1 -1
  28. package/dist/vue2/lib/banner/banner.cjs +2 -2
  29. package/dist/vue2/lib/banner/banner.cjs.map +1 -1
  30. package/dist/vue2/lib/banner/banner.js +25 -33
  31. package/dist/vue2/lib/banner/banner.js.map +1 -1
  32. package/dist/vue2/lib/breadcrumbs/breadcrumbs.cjs +1 -1
  33. package/dist/vue2/lib/breadcrumbs/breadcrumbs.cjs.map +1 -1
  34. package/dist/vue2/lib/breadcrumbs/breadcrumbs.js +14 -12
  35. package/dist/vue2/lib/breadcrumbs/breadcrumbs.js.map +1 -1
  36. package/dist/vue2/lib/button/button.cjs +1 -1
  37. package/dist/vue2/lib/button/button.cjs.map +1 -1
  38. package/dist/vue2/lib/button/button.js +11 -9
  39. package/dist/vue2/lib/button/button.js.map +1 -1
  40. package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs +1 -1
  41. package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs.map +1 -1
  42. package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js +19 -25
  43. package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js.map +1 -1
  44. package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.cjs +1 -1
  45. package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.cjs.map +1 -1
  46. package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.js +18 -21
  47. package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.js.map +1 -1
  48. package/dist/vue2/lib/chip/chip.cjs +1 -1
  49. package/dist/vue2/lib/chip/chip.cjs.map +1 -1
  50. package/dist/vue2/lib/chip/chip.js +24 -29
  51. package/dist/vue2/lib/chip/chip.js.map +1 -1
  52. package/dist/vue2/lib/combobox/combobox-constants.cjs +1 -1
  53. package/dist/vue2/lib/combobox/combobox-constants.cjs.map +1 -1
  54. package/dist/vue2/lib/combobox/combobox-constants.js +2 -2
  55. package/dist/vue2/lib/combobox/combobox-constants.js.map +1 -1
  56. package/dist/vue2/lib/combobox/combobox-empty-list.cjs.map +1 -1
  57. package/dist/vue2/lib/combobox/combobox-empty-list.js.map +1 -1
  58. package/dist/vue2/lib/combobox/combobox-loading-list.cjs.map +1 -1
  59. package/dist/vue2/lib/combobox/combobox-loading-list.js.map +1 -1
  60. package/dist/vue2/lib/combobox/combobox.cjs +2 -2
  61. package/dist/vue2/lib/combobox/combobox.cjs.map +1 -1
  62. package/dist/vue2/lib/combobox/combobox.js +12 -12
  63. package/dist/vue2/lib/combobox/combobox.js.map +1 -1
  64. package/dist/vue2/lib/combobox/index.cjs +1 -1
  65. package/dist/vue2/lib/combobox/index.js +3 -3
  66. package/dist/vue2/lib/combobox-multi-select/combobox-multi-select.cjs +1 -1
  67. package/dist/vue2/lib/combobox-multi-select/combobox-multi-select.cjs.map +1 -1
  68. package/dist/vue2/lib/combobox-multi-select/combobox-multi-select.js +19 -20
  69. package/dist/vue2/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
  70. package/dist/vue2/lib/combobox-with-popover/combobox-with-popover.cjs +1 -1
  71. package/dist/vue2/lib/combobox-with-popover/combobox-with-popover.cjs.map +1 -1
  72. package/dist/vue2/lib/combobox-with-popover/combobox-with-popover.js +22 -24
  73. package/dist/vue2/lib/combobox-with-popover/combobox-with-popover.js.map +1 -1
  74. package/dist/vue2/lib/contact-centers-row/contact-centers-row.cjs +1 -1
  75. package/dist/vue2/lib/contact-centers-row/contact-centers-row.cjs.map +1 -1
  76. package/dist/vue2/lib/contact-centers-row/contact-centers-row.js +40 -36
  77. package/dist/vue2/lib/contact-centers-row/contact-centers-row.js.map +1 -1
  78. package/dist/vue2/lib/contact-row/contact-row.cjs +1 -1
  79. package/dist/vue2/lib/contact-row/contact-row.cjs.map +1 -1
  80. package/dist/vue2/lib/contact-row/contact-row.js +11 -25
  81. package/dist/vue2/lib/contact-row/contact-row.js.map +1 -1
  82. package/dist/vue2/lib/datepicker/datepicker-constants.cjs +1 -1
  83. package/dist/vue2/lib/datepicker/datepicker-constants.cjs.map +1 -1
  84. package/dist/vue2/lib/datepicker/datepicker-constants.js +2 -3
  85. package/dist/vue2/lib/datepicker/datepicker-constants.js.map +1 -1
  86. package/dist/vue2/lib/datepicker/datepicker.cjs +1 -1
  87. package/dist/vue2/lib/datepicker/datepicker.cjs.map +1 -1
  88. package/dist/vue2/lib/datepicker/datepicker.js +143 -229
  89. package/dist/vue2/lib/datepicker/datepicker.js.map +1 -1
  90. package/dist/vue2/lib/datepicker/utils.cjs +1 -1
  91. package/dist/vue2/lib/datepicker/utils.cjs.map +1 -1
  92. package/dist/vue2/lib/datepicker/utils.js +12 -11
  93. package/dist/vue2/lib/datepicker/utils.js.map +1 -1
  94. package/dist/vue2/lib/description-list/description-list.cjs +1 -1
  95. package/dist/vue2/lib/description-list/description-list.cjs.map +1 -1
  96. package/dist/vue2/lib/description-list/description-list.js +8 -8
  97. package/dist/vue2/lib/description-list/description-list.js.map +1 -1
  98. package/dist/vue2/lib/dropdown/dropdown.cjs +1 -1
  99. package/dist/vue2/lib/dropdown/dropdown.cjs.map +1 -1
  100. package/dist/vue2/lib/dropdown/dropdown.js +48 -50
  101. package/dist/vue2/lib/dropdown/dropdown.js.map +1 -1
  102. package/dist/vue2/lib/editor/editor.cjs +1 -1
  103. package/dist/vue2/lib/editor/editor.cjs.map +1 -1
  104. package/dist/vue2/lib/editor/editor.js +78 -87
  105. package/dist/vue2/lib/editor/editor.js.map +1 -1
  106. package/dist/vue2/lib/emoji-picker/emoji-picker-constants.cjs +1 -1
  107. package/dist/vue2/lib/emoji-picker/emoji-picker-constants.cjs.map +1 -1
  108. package/dist/vue2/lib/emoji-picker/emoji-picker-constants.js +6 -19
  109. package/dist/vue2/lib/emoji-picker/emoji-picker-constants.js.map +1 -1
  110. package/dist/vue2/lib/emoji-picker/emoji-picker.cjs +1 -1
  111. package/dist/vue2/lib/emoji-picker/emoji-picker.cjs.map +1 -1
  112. package/dist/vue2/lib/emoji-picker/emoji-picker.js +106 -145
  113. package/dist/vue2/lib/emoji-picker/emoji-picker.js.map +1 -1
  114. package/dist/vue2/lib/emoji-picker/index.cjs +1 -1
  115. package/dist/vue2/lib/emoji-picker/index.js +6 -7
  116. package/dist/vue2/lib/emoji-row/emoji-row-constants.cjs +1 -1
  117. package/dist/vue2/lib/emoji-row/emoji-row-constants.cjs.map +1 -1
  118. package/dist/vue2/lib/emoji-row/emoji-row-constants.js +5 -7
  119. package/dist/vue2/lib/emoji-row/emoji-row-constants.js.map +1 -1
  120. package/dist/vue2/lib/emoji-row/emoji-row.cjs +1 -1
  121. package/dist/vue2/lib/emoji-row/emoji-row.cjs.map +1 -1
  122. package/dist/vue2/lib/emoji-row/emoji-row.js +31 -22
  123. package/dist/vue2/lib/emoji-row/emoji-row.js.map +1 -1
  124. package/dist/vue2/lib/feed-item-pill/feed-item-pill.cjs +1 -1
  125. package/dist/vue2/lib/feed-item-pill/feed-item-pill.cjs.map +1 -1
  126. package/dist/vue2/lib/feed-item-pill/feed-item-pill.js +20 -22
  127. package/dist/vue2/lib/feed-item-pill/feed-item-pill.js.map +1 -1
  128. package/dist/vue2/lib/general-row/general-row.cjs +1 -1
  129. package/dist/vue2/lib/general-row/general-row.cjs.map +1 -1
  130. package/dist/vue2/lib/general-row/general-row.js +63 -52
  131. package/dist/vue2/lib/general-row/general-row.js.map +1 -1
  132. package/dist/vue2/lib/group-row/group-row.cjs +1 -1
  133. package/dist/vue2/lib/group-row/group-row.cjs.map +1 -1
  134. package/dist/vue2/lib/group-row/group-row.js +43 -32
  135. package/dist/vue2/lib/group-row/group-row.js.map +1 -1
  136. package/dist/vue2/lib/icon/icon-constants.cjs.map +1 -1
  137. package/dist/vue2/lib/icon/icon-constants.js.map +1 -1
  138. package/dist/vue2/lib/icon/icon.cjs +1 -1
  139. package/dist/vue2/lib/icon/icon.cjs.map +1 -1
  140. package/dist/vue2/lib/icon/icon.js +12 -8
  141. package/dist/vue2/lib/icon/icon.js.map +1 -1
  142. package/dist/vue2/lib/image-viewer/image-viewer.cjs +1 -1
  143. package/dist/vue2/lib/image-viewer/image-viewer.cjs.map +1 -1
  144. package/dist/vue2/lib/image-viewer/image-viewer.js +30 -31
  145. package/dist/vue2/lib/image-viewer/image-viewer.js.map +1 -1
  146. package/dist/vue2/lib/ivr-node/ivr-node-constants.cjs +1 -1
  147. package/dist/vue2/lib/ivr-node/ivr-node-constants.cjs.map +1 -1
  148. package/dist/vue2/lib/ivr-node/ivr-node-constants.js +24 -24
  149. package/dist/vue2/lib/ivr-node/ivr-node-constants.js.map +1 -1
  150. package/dist/vue2/lib/ivr-node/ivr-node.cjs +1 -1
  151. package/dist/vue2/lib/ivr-node/ivr-node.cjs.map +1 -1
  152. package/dist/vue2/lib/ivr-node/ivr-node.js +38 -36
  153. package/dist/vue2/lib/ivr-node/ivr-node.js.map +1 -1
  154. package/dist/vue2/lib/message-input/message-input-link.cjs +1 -1
  155. package/dist/vue2/lib/message-input/message-input-link.cjs.map +1 -1
  156. package/dist/vue2/lib/message-input/message-input-link.js +48 -23
  157. package/dist/vue2/lib/message-input/message-input-link.js.map +1 -1
  158. package/dist/vue2/lib/message-input/message-input-topbar.cjs +1 -1
  159. package/dist/vue2/lib/message-input/message-input-topbar.cjs.map +1 -1
  160. package/dist/vue2/lib/message-input/message-input-topbar.js +50 -22
  161. package/dist/vue2/lib/message-input/message-input-topbar.js.map +1 -1
  162. package/dist/vue2/lib/message-input/message-input.cjs +1 -1
  163. package/dist/vue2/lib/message-input/message-input.cjs.map +1 -1
  164. package/dist/vue2/lib/message-input/message-input.js +112 -143
  165. package/dist/vue2/lib/message-input/message-input.js.map +1 -1
  166. package/dist/vue2/lib/modal/modal.cjs +1 -2
  167. package/dist/vue2/lib/modal/modal.cjs.map +1 -1
  168. package/dist/vue2/lib/modal/modal.js +25 -42
  169. package/dist/vue2/lib/modal/modal.js.map +1 -1
  170. package/dist/vue2/lib/notice/notice-action.cjs +1 -1
  171. package/dist/vue2/lib/notice/notice-action.cjs.map +1 -1
  172. package/dist/vue2/lib/notice/notice-action.js +19 -26
  173. package/dist/vue2/lib/notice/notice-action.js.map +1 -1
  174. package/dist/vue2/lib/notice/notice.cjs +1 -1
  175. package/dist/vue2/lib/notice/notice.cjs.map +1 -1
  176. package/dist/vue2/lib/notice/notice.js +18 -27
  177. package/dist/vue2/lib/notice/notice.js.map +1 -1
  178. package/dist/vue2/lib/pagination/pagination.cjs +1 -1
  179. package/dist/vue2/lib/pagination/pagination.cjs.map +1 -1
  180. package/dist/vue2/lib/pagination/pagination.js +49 -58
  181. package/dist/vue2/lib/pagination/pagination.js.map +1 -1
  182. package/dist/vue2/lib/popover/popover-header-footer.cjs +1 -1
  183. package/dist/vue2/lib/popover/popover-header-footer.cjs.map +1 -1
  184. package/dist/vue2/lib/popover/popover-header-footer.js +24 -26
  185. package/dist/vue2/lib/popover/popover-header-footer.js.map +1 -1
  186. package/dist/vue2/lib/popover/popover.cjs +1 -1
  187. package/dist/vue2/lib/popover/popover.cjs.map +1 -1
  188. package/dist/vue2/lib/popover/popover.js +26 -35
  189. package/dist/vue2/lib/popover/popover.js.map +1 -1
  190. package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs +5 -5
  191. package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
  192. package/dist/vue2/lib/rich-text-editor/rich-text-editor.js +330 -320
  193. package/dist/vue2/lib/rich-text-editor/rich-text-editor.js.map +1 -1
  194. package/dist/vue2/lib/settings-menu-button/settings-menu-button.cjs.map +1 -1
  195. package/dist/vue2/lib/settings-menu-button/settings-menu-button.js.map +1 -1
  196. package/dist/vue2/lib/time-pill/time-pill.cjs.map +1 -1
  197. package/dist/vue2/lib/time-pill/time-pill.js.map +1 -1
  198. package/dist/vue2/lib/toast/toast.cjs +1 -1
  199. package/dist/vue2/lib/toast/toast.cjs.map +1 -1
  200. package/dist/vue2/lib/toast/toast.js +64 -97
  201. package/dist/vue2/lib/toast/toast.js.map +1 -1
  202. package/dist/vue2/lib/unread-pill/unread-pill.cjs +1 -1
  203. package/dist/vue2/lib/unread-pill/unread-pill.cjs.map +1 -1
  204. package/dist/vue2/lib/unread-pill/unread-pill.js +27 -18
  205. package/dist/vue2/lib/unread-pill/unread-pill.js.map +1 -1
  206. package/dist/vue2/localization/en-US.cjs +185 -0
  207. package/dist/vue2/localization/en-US.cjs.map +1 -0
  208. package/dist/vue2/localization/en-US.js +188 -0
  209. package/dist/vue2/localization/en-US.js.map +1 -0
  210. package/dist/vue2/localization/es-LA.cjs +169 -0
  211. package/dist/vue2/localization/es-LA.cjs.map +1 -0
  212. package/dist/vue2/localization/es-LA.js +172 -0
  213. package/dist/vue2/localization/es-LA.js.map +1 -0
  214. package/dist/vue2/localization/index.cjs +1176 -0
  215. package/dist/vue2/localization/index.cjs.map +1 -0
  216. package/dist/vue2/localization/index.js +1239 -0
  217. package/dist/vue2/localization/index.js.map +1 -0
  218. package/dist/vue2/node_modules/@tiptap/vue-2.cjs.map +1 -1
  219. package/dist/vue2/node_modules/@tiptap/vue-2.js.map +1 -1
  220. package/dist/vue2/shared/sr_only_close_button.cjs +1 -1
  221. package/dist/vue2/shared/sr_only_close_button.cjs.map +1 -1
  222. package/dist/vue2/shared/sr_only_close_button.js +19 -22
  223. package/dist/vue2/shared/sr_only_close_button.js.map +1 -1
  224. package/dist/vue2/types/common/mixins/index.d.ts +1 -1
  225. package/dist/vue2/types/common/mixins/localization.d.ts +8 -0
  226. package/dist/vue2/types/common/mixins/localization.d.ts.map +1 -0
  227. package/dist/vue2/types/common/sr_only_close_button.vue.d.ts +7 -13
  228. package/dist/vue2/types/common/sr_only_close_button.vue.d.ts.map +1 -1
  229. package/dist/vue2/types/common/utils/index.d.ts +1 -0
  230. package/dist/vue2/types/common/utils/index.d.ts.map +1 -1
  231. package/dist/vue2/types/components/banner/banner.vue.d.ts +0 -33
  232. package/dist/vue2/types/components/banner/banner.vue.d.ts.map +1 -1
  233. package/dist/vue2/types/components/breadcrumbs/breadcrumbs.vue.d.ts +5 -1
  234. package/dist/vue2/types/components/button/button.vue.d.ts +6 -2
  235. package/dist/vue2/types/components/chip/chip.vue.d.ts +8 -18
  236. package/dist/vue2/types/components/combobox/combobox_constants.d.ts +2 -2
  237. package/dist/vue2/types/components/combobox/index.d.ts +1 -1
  238. package/dist/vue2/types/components/datepicker/datepicker.vue.d.ts.map +1 -1
  239. package/dist/vue2/types/components/datepicker/datepicker_constants.d.ts +0 -1
  240. package/dist/vue2/types/components/datepicker/datepicker_constants.d.ts.map +1 -1
  241. package/dist/vue2/types/components/datepicker/modules/calendar.vue.d.ts +5 -17
  242. package/dist/vue2/types/components/datepicker/modules/month-year-picker.vue.d.ts +8 -48
  243. package/dist/vue2/types/components/datepicker/utils.d.ts +1 -0
  244. package/dist/vue2/types/components/datepicker/utils.d.ts.map +1 -1
  245. package/dist/vue2/types/components/dropdown/dropdown.vue.d.ts +0 -24
  246. package/dist/vue2/types/components/dropdown/dropdown.vue.d.ts.map +1 -1
  247. package/dist/vue2/types/components/emoji_picker/emoji_picker.vue.d.ts +5 -1
  248. package/dist/vue2/types/components/emoji_picker/emoji_picker_constants.d.ts +0 -13
  249. package/dist/vue2/types/components/icon/icon.vue.d.ts +1 -0
  250. package/dist/vue2/types/components/icon/icon_constants.d.ts.map +1 -1
  251. package/dist/vue2/types/components/image_viewer/image_viewer.vue.d.ts +5 -8
  252. package/dist/vue2/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
  253. package/dist/vue2/types/components/modal/modal.vue.d.ts +3 -33
  254. package/dist/vue2/types/components/notice/notice.vue.d.ts +1 -34
  255. package/dist/vue2/types/components/notice/notice.vue.d.ts.map +1 -1
  256. package/dist/vue2/types/components/notice/notice_action.vue.d.ts +3 -31
  257. package/dist/vue2/types/components/notice/notice_action.vue.d.ts.map +1 -1
  258. package/dist/vue2/types/components/pagination/pagination.vue.d.ts +9 -26
  259. package/dist/vue2/types/components/pagination/pagination.vue.d.ts.map +1 -1
  260. package/dist/vue2/types/components/popover/popover.vue.d.ts +0 -33
  261. package/dist/vue2/types/components/popover/popover.vue.d.ts.map +1 -1
  262. package/dist/vue2/types/components/popover/popover_header_footer.vue.d.ts +8 -11
  263. package/dist/vue2/types/components/popover/popover_header_footer.vue.d.ts.map +1 -1
  264. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts +15 -2
  265. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  266. package/dist/vue2/types/components/toast/layouts/toast_layout_alternate.vue.d.ts +1 -43
  267. package/dist/vue2/types/components/toast/layouts/toast_layout_alternate.vue.d.ts.map +1 -1
  268. package/dist/vue2/types/components/toast/layouts/toast_layout_default.vue.d.ts +1 -34
  269. package/dist/vue2/types/components/toast/layouts/toast_layout_default.vue.d.ts.map +1 -1
  270. package/dist/vue2/types/components/toast/toast.vue.d.ts +3 -111
  271. package/dist/vue2/types/components/toast/toast.vue.d.ts.map +1 -1
  272. package/dist/vue2/types/index.d.ts +1 -0
  273. package/dist/vue2/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +7 -13
  274. package/dist/vue2/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +7 -12
  275. package/dist/vue2/types/recipes/cards/ivr_node/ivr_node.vue.d.ts +8 -10
  276. package/dist/vue2/types/recipes/cards/ivr_node/ivr_node.vue.d.ts.map +1 -1
  277. package/dist/vue2/types/recipes/cards/ivr_node/ivr_node_constants.d.ts +7 -7
  278. package/dist/vue2/types/recipes/cards/ivr_node/ivr_node_constants.d.ts.map +1 -1
  279. package/dist/vue2/types/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.d.ts +1 -25
  280. package/dist/vue2/types/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.d.ts.map +1 -1
  281. package/dist/vue2/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +1 -25
  282. package/dist/vue2/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts.map +1 -1
  283. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +5 -41
  284. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts.map +1 -1
  285. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +8 -26
  286. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.d.ts +2 -2
  287. package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts +20 -61
  288. package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  289. package/dist/vue2/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +6 -1
  290. package/dist/vue2/types/recipes/conversation_view/emoji_row/emoji_row_constants.d.ts.map +1 -1
  291. package/dist/vue2/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +9 -12
  292. package/dist/vue2/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts.map +1 -1
  293. package/dist/vue2/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts +8 -2
  294. package/dist/vue2/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts.map +1 -1
  295. package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts +15 -90
  296. package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  297. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts +14 -2
  298. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +14 -1
  299. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts.map +1 -1
  300. package/dist/vue2/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +10 -11
  301. package/dist/vue2/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts.map +1 -1
  302. package/dist/vue2/types/recipes/leftbar/contact_row/contact_row.vue.d.ts +0 -18
  303. package/dist/vue2/types/recipes/leftbar/contact_row/contact_row.vue.d.ts.map +1 -1
  304. package/dist/vue2/types/recipes/leftbar/general_row/general_row.vue.d.ts +21 -37
  305. package/dist/vue2/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  306. package/dist/vue2/types/recipes/leftbar/group_row/group_row.vue.d.ts +9 -18
  307. package/dist/vue2/types/recipes/leftbar/group_row/group_row.vue.d.ts.map +1 -1
  308. package/dist/vue2/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts +7 -1
  309. package/dist/vue2/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts.map +1 -1
  310. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.cjs +1 -1
  311. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.cjs.map +1 -1
  312. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.js +3 -2
  313. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
  314. package/package.json +4 -3
  315. package/dist/vue2/common/mixins/sr-only-close-button.cjs +0 -3
  316. package/dist/vue2/common/mixins/sr-only-close-button.cjs.map +0 -1
  317. package/dist/vue2/common/mixins/sr-only-close-button.js +0 -44
  318. package/dist/vue2/common/mixins/sr-only-close-button.js.map +0 -1
  319. package/dist/vue2/lib/contact-row/contact-row-constants.cjs +0 -2
  320. package/dist/vue2/lib/contact-row/contact-row-constants.cjs.map +0 -1
  321. package/dist/vue2/lib/contact-row/contact-row-constants.js +0 -5
  322. package/dist/vue2/lib/contact-row/contact-row-constants.js.map +0 -1
  323. package/dist/vue2/lib/emoji/emoji-constants.cjs +0 -2
  324. package/dist/vue2/lib/emoji/emoji-constants.cjs.map +0 -1
  325. package/dist/vue2/lib/emoji/emoji-constants.js +0 -5
  326. package/dist/vue2/lib/emoji/emoji-constants.js.map +0 -1
  327. package/dist/vue2/lib/group-row/group-row-constants.cjs +0 -2
  328. package/dist/vue2/lib/group-row/group-row-constants.cjs.map +0 -1
  329. package/dist/vue2/lib/group-row/group-row-constants.js +0 -8
  330. package/dist/vue2/lib/group-row/group-row-constants.js.map +0 -1
  331. package/dist/vue2/lib/time-pill/time-pill-constants.cjs +0 -2
  332. package/dist/vue2/lib/time-pill/time-pill-constants.cjs.map +0 -1
  333. package/dist/vue2/lib/time-pill/time-pill-constants.js +0 -8
  334. package/dist/vue2/lib/time-pill/time-pill-constants.js.map +0 -1
  335. package/dist/vue2/types/common/mixins/sr_only_close_button.d.ts +0 -30
  336. package/dist/vue2/types/common/mixins/sr_only_close_button.d.ts.map +0 -1
  337. package/dist/vue2/types/components/emoji/emoji_constants.d.ts +0 -3
  338. package/dist/vue2/types/components/emoji/emoji_constants.d.ts.map +0 -1
  339. package/dist/vue2/types/recipes/conversation_view/time_pill/time_pill_constants.d.ts +0 -6
  340. package/dist/vue2/types/recipes/conversation_view/time_pill/time_pill_constants.d.ts.map +0 -1
  341. package/dist/vue2/types/recipes/leftbar/contact_row/contact_row_constants.d.ts +0 -3
  342. package/dist/vue2/types/recipes/leftbar/contact_row/contact_row_constants.d.ts.map +0 -1
  343. package/dist/vue2/types/recipes/leftbar/group_row/group_row_constants.d.ts +0 -6
  344. package/dist/vue2/types/recipes/leftbar/group_row/group_row_constants.d.ts.map +0 -1
@@ -1,19 +1,20 @@
1
1
  import { safeConcatStrings as l } from "../../common/utils/index.js";
2
- import p from "../emoji-text-wrapper/emoji-text-wrapper.js";
3
- import u from "@dialpad/dialtone-icons/vue2/chevron-down";
4
- import b from "@dialpad/dialtone-icons/vue2/headphones";
5
- import { n as f } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
6
- import h from "../button/button.js";
7
- import _ from "../badge/badge.js";
8
- const m = {
2
+ import { DtIconHeadphones as p, DtIconChevronDown as u } from "@dialpad/dialtone-icons/vue2";
3
+ import { n as _ } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
4
+ import b from "../button/button.js";
5
+ import h from "../badge/badge.js";
6
+ import f from "../emoji-text-wrapper/emoji-text-wrapper.js";
7
+ import m from "../../common/mixins/localization.js";
8
+ const w = {
9
9
  name: "DtRecipeContactCentersRow",
10
10
  components: {
11
- DtButton: h,
12
- DtBadge: _,
13
- DtEmojiTextWrapper: p,
14
- DtIconHeadphones: b,
11
+ DtButton: b,
12
+ DtBadge: h,
13
+ DtEmojiTextWrapper: f,
14
+ DtIconHeadphones: p,
15
15
  DtIconChevronDown: u
16
16
  },
17
+ mixins: [m],
17
18
  inheritAttrs: !1,
18
19
  props: {
19
20
  /**
@@ -49,14 +50,10 @@ const m = {
49
50
  */
50
51
  unreadCount: {
51
52
  type: String,
52
- default: null
53
- },
54
- /**
55
- * Aria label for the menu button.
56
- */
57
- menuButtonAriaLabel: {
58
- type: String,
59
- required: !0
53
+ default: null,
54
+ validator(r) {
55
+ return r ? /^\d+\+?$/.test(r) : !0;
56
+ }
60
57
  }
61
58
  },
62
59
  emits: [
@@ -92,10 +89,17 @@ const m = {
92
89
  ];
93
90
  },
94
91
  getAriaLabel() {
95
- return this.ariaLabel ? this.ariaLabel : l([this.description, this.unreadCountTooltip]);
92
+ const r = isNaN(this.unreadCount) ? this.unreadCount : Number(this.unreadCount);
93
+ return this.ariaLabel ? this.ariaLabel : l([
94
+ this.description,
95
+ this.i18n.$t("DIALTONE_UNREAD_MESSAGE_COUNT_TEXT", { unreadCount: r })
96
+ ]);
96
97
  },
97
98
  showUnreadCount() {
98
99
  return !!this.unreadCount;
100
+ },
101
+ menuButtonLabel() {
102
+ return this.i18n.$t("DIALTONE_CONTACT_CENTERS_ROW_MENU_BUTTON_LABEL");
99
103
  }
100
104
  },
101
105
  watch: {
@@ -115,28 +119,28 @@ const m = {
115
119
  methods: {
116
120
  adjustLabelWidth() {
117
121
  var i, s, o, n, c, d;
118
- const a = ((s = (i = this.$el) == null ? void 0 : i.querySelector(".d-recipe-leftbar-row__primary")) == null ? void 0 : s.clientWidth) || 0, e = ((n = (o = this.$el) == null ? void 0 : o.querySelector(".d-recipe-leftbar-row__omega")) == null ? void 0 : n.clientWidth) || 0, t = ((d = (c = this.$el) == null ? void 0 : c.querySelector(".d-recipe-leftbar-row__alpha")) == null ? void 0 : d.clientWidth) || 0, r = 12;
119
- this.labelWidth = a - (e + t + r) + "px";
122
+ const r = ((s = (i = this.$el) == null ? void 0 : i.querySelector(".d-recipe-leftbar-row__primary")) == null ? void 0 : s.clientWidth) || 0, t = ((n = (o = this.$el) == null ? void 0 : o.querySelector(".d-recipe-leftbar-row__omega")) == null ? void 0 : n.clientWidth) || 0, e = ((d = (c = this.$el) == null ? void 0 : c.querySelector(".d-recipe-leftbar-row__alpha")) == null ? void 0 : d.clientWidth) || 0, a = 12;
123
+ this.labelWidth = r - (t + e + a) + "px";
120
124
  }
121
125
  }
122
126
  };
123
- var w = function() {
124
- var e = this, t = e._self._c;
125
- return t("div", { class: [
127
+ var C = function() {
128
+ var t = this, e = t._self._c;
129
+ return e("div", { class: [
126
130
  "d-recipe-leftbar-row__container",
127
- { "d-recipe-leftbar-row__container--off-duty": e.$slots.timer }
128
- ] }, [t("div", { class: e.leftbarContactCentersRowClasses, attrs: { "data-qa": "dt-recipe-contact-centers-row" } }, [t("a", e._g(e._b({ staticClass: "d-recipe-leftbar-row__primary", attrs: { "data-qa": e.$attrs["data-qa"] ?? "d-recipe-leftbar-row-link", "aria-label": e.getAriaLabel, title: e.description, href: e.$attrs.href ?? "javascript:void(0)" } }, "a", e.$attrs, !1), e.$listeners), [t("div", { staticClass: "d-recipe-leftbar-row__alpha" }, [t("dt-icon-headphones", { attrs: { size: "300", "data-qa": "dt-recipe-leftbar-row-icon" } })], 1), t("div", { staticClass: "d-recipe-leftbar-row__label", style: `flex-basis: ${e.labelWidth}` }, [t("dt-emoji-text-wrapper", { staticClass: "d-recipe-leftbar-row__description", attrs: { "data-qa": "dt-recipe-leftbar-row-description", size: "200" } }, [e._v(" " + e._s(e.description) + " ")])], 1)]), t("div", { directives: [{ name: "show", rawName: "v-show", value: !e.hideActions, expression: "!hideActions" }], staticClass: "d-recipe-leftbar-row__omega" }, [e._t("right"), t("div", { staticClass: "d-recipe-leftbar-row__action-container" }, [e.showUnreadCount ? t("dt-badge", { staticClass: "d-recipe-leftbar-row__unread-badge", attrs: { "data-qa": "dt-recipe-leftbar-row-unread-badge", kind: "count", type: "bulletin" } }, [e._v(" " + e._s(e.unreadCount) + " ")]) : e._e(), t("dt-button", { staticClass: "d-recipe-leftbar-row__action", attrs: { "data-qa": "dt-recipe-leftbar-row-action-button", "aria-label": e.menuButtonAriaLabel, importance: "clear", size: "xs", circle: "" }, on: { click: function(r) {
129
- return r.stopPropagation(), e.$emit("click-menu", r);
130
- } }, scopedSlots: e._u([{ key: "icon", fn: function() {
131
- return [t("dt-icon-chevron-down", { attrs: { size: "100" } })];
132
- }, proxy: !0 }]) })], 1)], 2)]), t("div", { staticClass: "d-recipe-leftbar-row__bottom" }, [e._t("timer")], 2)]);
133
- }, C = [], v = /* @__PURE__ */ f(
134
- m,
131
+ { "d-recipe-leftbar-row__container--off-duty": t.$slots.timer }
132
+ ] }, [e("div", { class: t.leftbarContactCentersRowClasses, attrs: { "data-qa": "dt-recipe-contact-centers-row" } }, [e("a", t._g(t._b({ staticClass: "d-recipe-leftbar-row__primary", attrs: { "data-qa": t.$attrs["data-qa"] ?? "d-recipe-leftbar-row-link", "aria-label": t.getAriaLabel, title: t.description, href: t.$attrs.href ?? "javascript:void(0)" } }, "a", t.$attrs, !1), t.$listeners), [e("div", { staticClass: "d-recipe-leftbar-row__alpha" }, [e("dt-icon-headphones", { attrs: { size: "300", "data-qa": "dt-recipe-leftbar-row-icon" } })], 1), e("div", { staticClass: "d-recipe-leftbar-row__label", style: `flex-basis: ${t.labelWidth}` }, [e("dt-emoji-text-wrapper", { staticClass: "d-recipe-leftbar-row__description", attrs: { "data-qa": "dt-recipe-leftbar-row-description", size: "200" } }, [t._v(" " + t._s(t.description) + " ")])], 1)]), e("div", { directives: [{ name: "show", rawName: "v-show", value: !t.hideActions, expression: "!hideActions" }], staticClass: "d-recipe-leftbar-row__omega" }, [t._t("right"), e("div", { staticClass: "d-recipe-leftbar-row__action-container" }, [t.showUnreadCount ? e("dt-badge", { staticClass: "d-recipe-leftbar-row__unread-badge", attrs: { "data-qa": "dt-recipe-leftbar-row-unread-badge", kind: "count", type: "bulletin" } }, [t._v(" " + t._s(t.unreadCount) + " ")]) : t._e(), e("dt-button", { staticClass: "d-recipe-leftbar-row__action", attrs: { "data-qa": "dt-recipe-leftbar-row-action-button", "aria-label": t.menuButtonLabel, title: t.menuButtonLabel, importance: "clear", size: "xs", circle: "" }, on: { click: function(a) {
133
+ return a.stopPropagation(), t.$emit("click-menu", a);
134
+ } }, scopedSlots: t._u([{ key: "icon", fn: function() {
135
+ return [e("dt-icon-chevron-down", { attrs: { size: "100" } })];
136
+ }, proxy: !0 }]) })], 1)], 2)]), e("div", { staticClass: "d-recipe-leftbar-row__bottom" }, [t._t("timer")], 2)]);
137
+ }, v = [], g = /* @__PURE__ */ _(
135
138
  w,
136
- C
139
+ C,
140
+ v
137
141
  );
138
- const z = v.exports;
142
+ const N = g.exports;
139
143
  export {
140
- z as default
144
+ N as default
141
145
  };
142
146
  //# sourceMappingURL=contact-centers-row.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contact-centers-row.js","sources":["../../../recipes/leftbar/contact_centers_row/contact_centers_row.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n 'd-recipe-leftbar-row__container',\n { 'd-recipe-leftbar-row__container--off-duty': $slots.timer },\n ]\"\n >\n <div\n :class=\"leftbarContactCentersRowClasses\"\n data-qa=\"dt-recipe-contact-centers-row\"\n >\n <a\n class=\"d-recipe-leftbar-row__primary\"\n :data-qa=\"$attrs['data-qa'] ?? 'd-recipe-leftbar-row-link'\"\n :aria-label=\"getAriaLabel\"\n :title=\"description\"\n :href=\"$attrs.href ?? 'javascript:void(0)'\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n >\n <div class=\"d-recipe-leftbar-row__alpha\">\n <dt-icon-headphones\n size=\"300\"\n data-qa=\"dt-recipe-leftbar-row-icon\"\n />\n </div>\n <div\n class=\"d-recipe-leftbar-row__label\"\n :style=\"`flex-basis: ${labelWidth}`\"\n >\n <dt-emoji-text-wrapper\n class=\"d-recipe-leftbar-row__description\"\n data-qa=\"dt-recipe-leftbar-row-description\"\n size=\"200\"\n >\n {{ description }}\n </dt-emoji-text-wrapper>\n </div>\n </a>\n <div\n v-show=\"!hideActions\"\n class=\"d-recipe-leftbar-row__omega\"\n >\n <slot name=\"right\" />\n <div class=\"d-recipe-leftbar-row__action-container\">\n <dt-badge\n v-if=\"showUnreadCount\"\n class=\"d-recipe-leftbar-row__unread-badge\"\n data-qa=\"dt-recipe-leftbar-row-unread-badge\"\n kind=\"count\"\n type=\"bulletin\"\n >\n {{ unreadCount }}\n </dt-badge>\n <dt-button\n class=\"d-recipe-leftbar-row__action\"\n data-qa=\"dt-recipe-leftbar-row-action-button\"\n :aria-label=\"menuButtonAriaLabel\"\n importance=\"clear\"\n size=\"xs\"\n circle\n @click.stop=\"$emit('click-menu', $event)\"\n >\n <template #icon>\n <dt-icon-chevron-down size=\"100\" />\n </template>\n </dt-button>\n </div>\n </div>\n </div>\n <div class=\"d-recipe-leftbar-row__bottom\">\n <slot name=\"timer\" />\n </div>\n </div>\n</template>\n\n<script>\nimport { safeConcatStrings } from '@/common/utils';\nimport { DtBadge } from '@/components/badge';\nimport { DtButton } from '@/components/button';\nimport DtEmojiTextWrapper from '@/components/emoji_text_wrapper/emoji_text_wrapper.vue';\nimport DtIconChevronDown from '@dialpad/dialtone-icons/vue2/chevron-down';\nimport DtIconHeadphones from '@dialpad/dialtone-icons/vue2/headphones';\n\nexport default {\n name: 'DtRecipeContactCentersRow',\n\n components: {\n DtButton,\n DtBadge,\n DtEmojiTextWrapper,\n DtIconHeadphones,\n DtIconChevronDown,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Will be read out by a screen reader upon focus of this row. If not defined \"description\" will be read.\n */\n ariaLabel: {\n type: String,\n default: '',\n },\n\n /**\n * Text displayed next to the icon. Required.\n */\n description: {\n type: String,\n required: true,\n },\n\n /**\n * Determines if the row is selected\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Making this true will hide the unread count badge, the chevron button, and the right slot\n */\n hideActions: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Number of unread messages, could be a string to support '99+'\n */\n unreadCount: {\n type: String,\n default: null,\n },\n\n /**\n * Aria label for the menu button.\n */\n menuButtonAriaLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Native click event on the row itself\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n\n /**\n * Menu button clicked\n *\n * @event call\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click-menu',\n ],\n\n data () {\n return {\n labelWidth: 'auto',\n };\n },\n\n computed: {\n leftbarContactCentersRowClasses () {\n return [\n 'd-recipe-leftbar-row',\n 'd-recipe-leftbar-row--contact-centers',\n {\n 'd-recipe-leftbar-row__unread-count': this.showUnreadCount,\n 'd-recipe-leftbar-row--selected': this.selected,\n },\n ];\n },\n\n getAriaLabel () {\n return this.ariaLabel\n ? this.ariaLabel\n : safeConcatStrings([this.description, this.unreadCountTooltip]);\n },\n\n showUnreadCount () {\n return !!this.unreadCount;\n },\n },\n\n watch: {\n $props: {\n deep: true,\n async handler () {\n await this.$nextTick();\n this.adjustLabelWidth();\n },\n },\n },\n\n mounted () {\n this.resizeObserver = new ResizeObserver(this.adjustLabelWidth);\n this.resizeObserver.observe(this.$el);\n this.adjustLabelWidth();\n },\n\n beforeDestroy: function () {\n this.resizeObserver.disconnect();\n },\n\n methods: {\n adjustLabelWidth () {\n const labelWidth = this.$el?.querySelector('.d-recipe-leftbar-row__primary')?.clientWidth || 0;\n const omegaWidth = this.$el?.querySelector('.d-recipe-leftbar-row__omega')?.clientWidth || 0;\n const alphaWidth = this.$el?.querySelector('.d-recipe-leftbar-row__alpha')?.clientWidth || 0;\n const paddings = 12;\n this.labelWidth = labelWidth - (omegaWidth + alphaWidth + paddings) + 'px';\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtButton","DtBadge","DtEmojiTextWrapper","DtIconHeadphones","DtIconChevronDown","safeConcatStrings","labelWidth","_b","_a","omegaWidth","_d","_c","alphaWidth","_f","_e","paddings"],"mappings":";;;;;;;AAoFA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,mBAAAC;AAAA,EACA;AAAA,EAEA,cAAA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,YAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,kCAAA;AACA,aAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,UACA,sCAAA,KAAA;AAAA,UACA,kCAAA,KAAA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,eAAA;AACA,aAAA,KAAA,YACA,KAAA,YACAC,EAAA,CAAA,KAAA,aAAA,KAAA,kBAAA,CAAA;AAAA,IACA;AAAA,IAEA,kBAAA;AACA,aAAA,CAAA,CAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA,UAAA;AACA,cAAA,KAAA,aACA,KAAA,iBAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AACA,SAAA,iBAAA,IAAA,eAAA,KAAA,gBAAA,GACA,KAAA,eAAA,QAAA,KAAA,GAAA,GACA,KAAA,iBAAA;AAAA,EACA;AAAA,EAEA,eAAA,WAAA;AACA,SAAA,eAAA;EACA;AAAA,EAEA,SAAA;AAAA,IACA,mBAAA;;AACA,YAAAC,MAAAC,KAAAC,IAAA,KAAA,QAAA,gBAAAA,EAAA,cAAA,sCAAA,gBAAAD,EAAA,gBAAA,GACAE,MAAAC,KAAAC,IAAA,KAAA,QAAA,gBAAAA,EAAA,cAAA,oCAAA,gBAAAD,EAAA,gBAAA,GACAE,MAAAC,KAAAC,IAAA,KAAA,QAAA,gBAAAA,EAAA,cAAA,oCAAA,gBAAAD,EAAA,gBAAA,GACAE,IAAA;AACA,WAAA,aAAAT,KAAAG,IAAAG,IAAAG,KAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"contact-centers-row.js","sources":["../../../recipes/leftbar/contact_centers_row/contact_centers_row.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n 'd-recipe-leftbar-row__container',\n { 'd-recipe-leftbar-row__container--off-duty': $slots.timer },\n ]\"\n >\n <div\n :class=\"leftbarContactCentersRowClasses\"\n data-qa=\"dt-recipe-contact-centers-row\"\n >\n <a\n class=\"d-recipe-leftbar-row__primary\"\n :data-qa=\"$attrs['data-qa'] ?? 'd-recipe-leftbar-row-link'\"\n :aria-label=\"getAriaLabel\"\n :title=\"description\"\n :href=\"$attrs.href ?? 'javascript:void(0)'\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n >\n <div class=\"d-recipe-leftbar-row__alpha\">\n <dt-icon-headphones\n size=\"300\"\n data-qa=\"dt-recipe-leftbar-row-icon\"\n />\n </div>\n <div\n class=\"d-recipe-leftbar-row__label\"\n :style=\"`flex-basis: ${labelWidth}`\"\n >\n <dt-emoji-text-wrapper\n class=\"d-recipe-leftbar-row__description\"\n data-qa=\"dt-recipe-leftbar-row-description\"\n size=\"200\"\n >\n {{ description }}\n </dt-emoji-text-wrapper>\n </div>\n </a>\n <div\n v-show=\"!hideActions\"\n class=\"d-recipe-leftbar-row__omega\"\n >\n <slot name=\"right\" />\n <div class=\"d-recipe-leftbar-row__action-container\">\n <dt-badge\n v-if=\"showUnreadCount\"\n class=\"d-recipe-leftbar-row__unread-badge\"\n data-qa=\"dt-recipe-leftbar-row-unread-badge\"\n kind=\"count\"\n type=\"bulletin\"\n >\n {{ unreadCount }}\n </dt-badge>\n <dt-button\n class=\"d-recipe-leftbar-row__action\"\n data-qa=\"dt-recipe-leftbar-row-action-button\"\n :aria-label=\"menuButtonLabel\"\n :title=\"menuButtonLabel\"\n importance=\"clear\"\n size=\"xs\"\n circle\n @click.stop=\"$emit('click-menu', $event)\"\n >\n <template #icon>\n <dt-icon-chevron-down size=\"100\" />\n </template>\n </dt-button>\n </div>\n </div>\n </div>\n <div class=\"d-recipe-leftbar-row__bottom\">\n <slot name=\"timer\" />\n </div>\n </div>\n</template>\n\n<script>\nimport { safeConcatStrings } from '@/common/utils';\nimport { DtBadge } from '@/components/badge';\nimport { DtButton } from '@/components/button';\nimport { DtEmojiTextWrapper } from '@/components/emoji_text_wrapper';\nimport { DtIconChevronDown, DtIconHeadphones } from '@dialpad/dialtone-icons/vue2';\nimport { DtLocalizationMixin } from '@/common/mixins';\n\nexport default {\n name: 'DtRecipeContactCentersRow',\n\n components: {\n DtButton,\n DtBadge,\n DtEmojiTextWrapper,\n DtIconHeadphones,\n DtIconChevronDown,\n },\n\n mixins: [DtLocalizationMixin],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Will be read out by a screen reader upon focus of this row. If not defined \"description\" will be read.\n */\n ariaLabel: {\n type: String,\n default: '',\n },\n\n /**\n * Text displayed next to the icon. Required.\n */\n description: {\n type: String,\n required: true,\n },\n\n /**\n * Determines if the row is selected\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Making this true will hide the unread count badge, the chevron button, and the right slot\n */\n hideActions: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Number of unread messages, could be a string to support '99+'\n */\n unreadCount: {\n type: String,\n default: null,\n validator (value) {\n if (!value) return true;\n return /^\\d+\\+?$/.test(value);\n },\n },\n },\n\n emits: [\n /**\n * Native click event on the row itself\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n\n /**\n * Menu button clicked\n *\n * @event call\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click-menu',\n ],\n\n data () {\n return {\n labelWidth: 'auto',\n };\n },\n\n computed: {\n leftbarContactCentersRowClasses () {\n return [\n 'd-recipe-leftbar-row',\n 'd-recipe-leftbar-row--contact-centers',\n {\n 'd-recipe-leftbar-row__unread-count': this.showUnreadCount,\n 'd-recipe-leftbar-row--selected': this.selected,\n },\n ];\n },\n\n getAriaLabel () {\n const count = isNaN(this.unreadCount) ? this.unreadCount : Number(this.unreadCount);\n return this.ariaLabel\n ? this.ariaLabel\n : safeConcatStrings([\n this.description,\n this.i18n.$t('DIALTONE_UNREAD_MESSAGE_COUNT_TEXT', { unreadCount: count }),\n ]);\n },\n\n showUnreadCount () {\n return !!this.unreadCount;\n },\n\n menuButtonLabel () {\n return this.i18n.$t('DIALTONE_CONTACT_CENTERS_ROW_MENU_BUTTON_LABEL');\n },\n },\n\n watch: {\n $props: {\n deep: true,\n async handler () {\n await this.$nextTick();\n this.adjustLabelWidth();\n },\n },\n },\n\n mounted () {\n this.resizeObserver = new ResizeObserver(this.adjustLabelWidth);\n this.resizeObserver.observe(this.$el);\n this.adjustLabelWidth();\n },\n\n beforeDestroy: function () {\n this.resizeObserver.disconnect();\n },\n\n methods: {\n adjustLabelWidth () {\n const labelWidth = this.$el?.querySelector('.d-recipe-leftbar-row__primary')?.clientWidth || 0;\n const omegaWidth = this.$el?.querySelector('.d-recipe-leftbar-row__omega')?.clientWidth || 0;\n const alphaWidth = this.$el?.querySelector('.d-recipe-leftbar-row__alpha')?.clientWidth || 0;\n const paddings = 12;\n this.labelWidth = labelWidth - (omegaWidth + alphaWidth + paddings) + 'px';\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtButton","DtBadge","DtEmojiTextWrapper","DtIconHeadphones","DtIconChevronDown","DtLocalizationMixin","value","count","safeConcatStrings","labelWidth","_b","_a","omegaWidth","_d","_c","alphaWidth","_f","_e","paddings"],"mappings":";;;;;;;AAqFA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,mBAAAC;AAAA,EACA;AAAA,EAEA,QAAA,CAAAC,CAAA;AAAA,EAEA,cAAA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAAC,GAAA;AACA,eAAAA,IACA,WAAA,KAAAA,CAAA,IADA;AAAA,MAEA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,YAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,kCAAA;AACA,aAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,UACA,sCAAA,KAAA;AAAA,UACA,kCAAA,KAAA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,eAAA;AACA,YAAAC,IAAA,MAAA,KAAA,WAAA,IAAA,KAAA,cAAA,OAAA,KAAA,WAAA;AACA,aAAA,KAAA,YACA,KAAA,YACAC,EAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA,KAAA,GAAA,sCAAA,EAAA,aAAAD,GAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,IAEA,kBAAA;AACA,aAAA,CAAA,CAAA,KAAA;AAAA,IACA;AAAA,IAEA,kBAAA;AACA,aAAA,KAAA,KAAA,GAAA,gDAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA,UAAA;AACA,cAAA,KAAA,aACA,KAAA,iBAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AACA,SAAA,iBAAA,IAAA,eAAA,KAAA,gBAAA,GACA,KAAA,eAAA,QAAA,KAAA,GAAA,GACA,KAAA,iBAAA;AAAA,EACA;AAAA,EAEA,eAAA,WAAA;AACA,SAAA,eAAA;EACA;AAAA,EAEA,SAAA;AAAA,IACA,mBAAA;;AACA,YAAAE,MAAAC,KAAAC,IAAA,KAAA,QAAA,gBAAAA,EAAA,cAAA,sCAAA,gBAAAD,EAAA,gBAAA,GACAE,MAAAC,KAAAC,IAAA,KAAA,QAAA,gBAAAA,EAAA,cAAA,oCAAA,gBAAAD,EAAA,gBAAA,GACAE,MAAAC,KAAAC,IAAA,KAAA,QAAA,gBAAAA,EAAA,cAAA,oCAAA,gBAAAD,EAAA,gBAAA,GACAE,IAAA;AACA,WAAA,aAAAT,KAAAG,IAAAG,IAAAG,KAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("../emoji-text-wrapper/emoji-text-wrapper.cjs"),n=require("../avatar/avatar.cjs"),s=require("../../common/utils/index.cjs"),o=require("@dialpad/dialtone-icons/vue2"),l=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),i=require("../general-row/general-row.cjs"),c={name:"DtRecipeContactRow",components:{DtAvatar:n.default,DtRecipeGeneralRow:i.default,DtEmojiTextWrapper:r.default,DtIconUser:o.DtIconUser},inheritAttrs:!1,props:{avatarSrc:{type:String,default:""},avatarPresence:{type:String,default:null},avatarSeed:{type:String,default:null},avatarColor:{type:String,default:null},presenceText:{type:String,default:""},name:{type:String,required:!0},userStatus:{type:String,default:""},muted:{type:Boolean,default:!1},unreadCount:{type:String,default:null},hasUnreads:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},noInitials:{type:Boolean,default:!1},isTyping:{type:Boolean,default:!1},hasCallButton:{type:Boolean,default:!0},callButtonTooltip:{type:String,default:""},unreadCountTooltip:{type:String,default:""}},emits:["click","call"],computed:{presenceFontColorClass(){return{active:"d-recipe-contact-row--active",busy:"d-recipe-contact-row--busy",away:"d-recipe-contact-row--away"}[this.avatarPresence]},contactDescription(){return s.safeConcatStrings([this.name,this.presenceText,this.userStatus])}}};var u=function(){var e=this,t=e._self._c;return t("dt-recipe-general-row",e._g(e._b({attrs:{"unread-count":e.unreadCount,description:e.contactDescription,"has-unreads":e.hasUnreads,selected:e.selected,"has-call-button":e.hasCallButton,muted:e.muted,"is-typing":e.isTyping,"call-button-tooltip":e.callButtonTooltip,"unread-count-tooltip":e.unreadCountTooltip,"data-qa":"contact-row"},scopedSlots:e._u([{key:"left",fn:function(){return[t("dt-avatar",{attrs:{"full-name":e.name,"image-src":e.avatarSrc,color:e.avatarColor,"image-alt":"",size:"sm",seed:e.avatarSeed,presence:e.avatarPresence},scopedSlots:e._u([e.noInitials?{key:"icon",fn:function(){return[t("dt-icon-user",{attrs:{size:"200"}})]},proxy:!0}:null],null,!0)})]},proxy:!0},{key:"label",fn:function(){return[t("dt-emoji-text-wrapper",{staticClass:"d-recipe-leftbar-row__description",attrs:{"data-qa":"dt-recipe-leftbar-row-description",size:"200"}},[e._v(" "+e._s(e.name)+" ")]),t("div",{staticClass:"d-recipe-leftbar-row__status"},[e.presenceText?t("span",{class:["d-recipe-leftbar-row__meta-context",e.presenceFontColorClass],attrs:{"data-qa":"dt-recipe-leftbar-row-presence-text"}},[e._v(" "+e._s(e.presenceText)+" ")]):e._e(),e.userStatus?t("dt-emoji-text-wrapper",{staticClass:"d-recipe-leftbar-row__meta-custom",attrs:{size:"100","element-type":"span","data-qa":"dt-recipe-leftbar-row-user-status"}},[e._v(" "+e._s(e.userStatus)+" ")]):e._e()],1)]},proxy:!0}])},"dt-recipe-general-row",e.$attrs,!1),e.$listeners))},p=[],d=l.n(c,u,p);const f=d.exports;exports.default=f;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("../../common/utils/index.cjs"),s=require("@dialpad/dialtone-icons/vue2"),n=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),o=require("../avatar/avatar.cjs"),l=require("../general-row/general-row.cjs"),c=require("../emoji-text-wrapper/emoji-text-wrapper.cjs"),i={name:"DtRecipeContactRow",components:{DtAvatar:o.default,DtRecipeGeneralRow:l.default,DtEmojiTextWrapper:c.default,DtIconUser:s.DtIconUser},inheritAttrs:!1,props:{avatarSrc:{type:String,default:""},avatarPresence:{type:String,default:null},avatarSeed:{type:String,default:null},avatarColor:{type:String,default:null},presenceText:{type:String,default:""},name:{type:String,required:!0},userStatus:{type:String,default:""},muted:{type:Boolean,default:!1},unreadCount:{type:String,default:null},hasUnreads:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},noInitials:{type:Boolean,default:!1},isTyping:{type:Boolean,default:!1},hasCallButton:{type:Boolean,default:!0}},emits:["click","call"],computed:{presenceFontColorClass(){return{active:"d-recipe-contact-row--active",busy:"d-recipe-contact-row--busy",away:"d-recipe-contact-row--away"}[this.avatarPresence]},contactDescription(){return r.safeConcatStrings([this.name,this.presenceText,this.userStatus])}}};var u=function(){var e=this,t=e._self._c;return t("dt-recipe-general-row",e._g(e._b({attrs:{"unread-count":e.unreadCount,description:e.contactDescription,"has-unreads":e.hasUnreads,selected:e.selected,"has-call-button":e.hasCallButton,muted:e.muted,"is-typing":e.isTyping,"data-qa":"contact-row"},scopedSlots:e._u([{key:"left",fn:function(){return[t("dt-avatar",{attrs:{"full-name":e.name,"image-src":e.avatarSrc,color:e.avatarColor,"image-alt":"",size:"sm",seed:e.avatarSeed,presence:e.avatarPresence},scopedSlots:e._u([e.noInitials?{key:"icon",fn:function(){return[t("dt-icon-user",{attrs:{size:"200"}})]},proxy:!0}:null],null,!0)})]},proxy:!0},{key:"label",fn:function(){return[t("dt-emoji-text-wrapper",{staticClass:"d-recipe-leftbar-row__description",attrs:{"data-qa":"dt-recipe-leftbar-row-description",size:"200"}},[e._v(" "+e._s(e.name)+" ")]),t("div",{staticClass:"d-recipe-leftbar-row__status"},[e.presenceText?t("span",{class:["d-recipe-leftbar-row__meta-context",e.presenceFontColorClass],attrs:{"data-qa":"dt-recipe-leftbar-row-presence-text"}},[e._v(" "+e._s(e.presenceText)+" ")]):e._e(),e.userStatus?t("dt-emoji-text-wrapper",{staticClass:"d-recipe-leftbar-row__meta-custom",attrs:{size:"100","element-type":"span","data-qa":"dt-recipe-leftbar-row-user-status"}},[e._v(" "+e._s(e.userStatus)+" ")]):e._e()],1)]},proxy:!0}])},"dt-recipe-general-row",e.$attrs,!1),e.$listeners))},p=[],d=n.n(i,u,p);const _=d.exports;exports.default=_;
2
2
  //# sourceMappingURL=contact-row.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"contact-row.cjs","sources":["../../../recipes/leftbar/contact_row/contact_row.vue"],"sourcesContent":["<template>\n <dt-recipe-general-row\n :unread-count=\"unreadCount\"\n :description=\"contactDescription\"\n :has-unreads=\"hasUnreads\"\n :selected=\"selected\"\n :has-call-button=\"hasCallButton\"\n :muted=\"muted\"\n :is-typing=\"isTyping\"\n :call-button-tooltip=\"callButtonTooltip\"\n :unread-count-tooltip=\"unreadCountTooltip\"\n v-bind=\"$attrs\"\n data-qa=\"contact-row\"\n v-on=\"$listeners\"\n >\n <template #left>\n <dt-avatar\n :full-name=\"name\"\n :image-src=\"avatarSrc\"\n :color=\"avatarColor\"\n image-alt=\"\"\n size=\"sm\"\n :seed=\"avatarSeed\"\n :presence=\"avatarPresence\"\n >\n <template\n v-if=\"noInitials\"\n #icon\n >\n <dt-icon-user\n size=\"200\"\n />\n </template>\n </dt-avatar>\n </template>\n <template #label>\n <dt-emoji-text-wrapper\n class=\"d-recipe-leftbar-row__description\"\n data-qa=\"dt-recipe-leftbar-row-description\"\n size=\"200\"\n >\n {{ name }}\n </dt-emoji-text-wrapper>\n <div class=\"d-recipe-leftbar-row__status\">\n <span\n v-if=\"presenceText\"\n data-qa=\"dt-recipe-leftbar-row-presence-text\"\n :class=\"['d-recipe-leftbar-row__meta-context', presenceFontColorClass]\"\n >\n {{ presenceText }}\n </span>\n <dt-emoji-text-wrapper\n v-if=\"userStatus\"\n size=\"100\"\n element-type=\"span\"\n data-qa=\"dt-recipe-leftbar-row-user-status\"\n class=\"d-recipe-leftbar-row__meta-custom\"\n >\n {{ userStatus }}\n </dt-emoji-text-wrapper>\n </div>\n </template>\n </dt-recipe-general-row>\n</template>\n\n<script>\nimport { DtRecipeGeneralRow } from '@/recipes/leftbar/general_row';\nimport DtEmojiTextWrapper from '@/components/emoji_text_wrapper/emoji_text_wrapper.vue';\nimport DtAvatar from '@/components/avatar/avatar.vue';\nimport { safeConcatStrings } from '@/common/utils';\nimport { DtIconUser } from '@dialpad/dialtone-icons/vue2';\n\nexport default {\n name: 'DtRecipeContactRow',\n\n components: {\n DtAvatar,\n DtRecipeGeneralRow,\n DtEmojiTextWrapper,\n DtIconUser,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * 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 * defer validation to avatar component.\n * @values null, busy, away, offline, active\n */\n avatarPresence: {\n type: String,\n default: null,\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: null,\n },\n\n /**\n * Avatar color to display if `avatarSrc` is empty.\n */\n avatarColor: {\n type: String,\n default: null,\n },\n\n /**\n * Text describing the user's presence, such as \"in a meeting\"\n */\n presenceText: {\n type: String,\n default: '',\n },\n\n /**\n * Name of the contact\n */\n name: {\n type: String,\n required: true,\n },\n\n /**\n * Status as set by the user.\n */\n userStatus: {\n type: String,\n default: '',\n },\n\n /**\n * Gives a faded style to be used when muted\n */\n muted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Number of unread messages\n */\n unreadCount: {\n type: String,\n default: null,\n },\n\n /**\n * Styles the row with an increased font weight to convey it has unreads. This must be true to see\n * the unread count badge.\n */\n hasUnreads: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines if the row is selected\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Initials will never be shown. Instead it will show a \"User\" icon.\n */\n noInitials: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Shows an \"is typing\" animation over the avatar when true.\n */\n isTyping: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the contact row should display a call button when hovered.\n */\n hasCallButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Text shown when the call button is hovered.\n */\n callButtonTooltip: {\n type: String,\n default: '',\n },\n\n /**\n * Text shown when the unread count is hovered.\n */\n unreadCountTooltip: {\n type: String,\n default: '',\n },\n },\n\n emits: [\n /**\n * Native click event on the row itself\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n\n /**\n * Call button clicked\n *\n * @event call\n * @type {PointerEvent | KeyboardEvent}\n */\n 'call',\n ],\n\n computed: {\n presenceFontColorClass () {\n const presenceFontColors = {\n active: 'd-recipe-contact-row--active',\n busy: 'd-recipe-contact-row--busy',\n away: 'd-recipe-contact-row--away',\n };\n\n return presenceFontColors[this.avatarPresence];\n },\n\n contactDescription () {\n return safeConcatStrings([this.name, this.presenceText, this.userStatus]);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtAvatar","DtRecipeGeneralRow","DtEmojiTextWrapper","DtIconUser","safeConcatStrings"],"mappings":"sYAwEAA,EAAA,CACA,KAAA,qBAEA,WAAA,CACA,SAAAC,EAAA,QACA,mBAAAC,EAAA,QACA,mBAAAC,EAAA,QACA,WAAAC,EAAA,UACA,EAEA,aAAA,GAEA,MAAA,CAKA,UAAA,CACA,KAAA,OACA,QAAA,EACA,EASA,eAAA,CACA,KAAA,OACA,QAAA,IACA,EAKA,WAAA,CACA,KAAA,OACA,QAAA,IACA,EAKA,YAAA,CACA,KAAA,OACA,QAAA,IACA,EAKA,aAAA,CACA,KAAA,OACA,QAAA,EACA,EAKA,KAAA,CACA,KAAA,OACA,SAAA,EACA,EAKA,WAAA,CACA,KAAA,OACA,QAAA,EACA,EAKA,MAAA,CACA,KAAA,QACA,QAAA,EACA,EAKA,YAAA,CACA,KAAA,OACA,QAAA,IACA,EAMA,WAAA,CACA,KAAA,QACA,QAAA,EACA,EAKA,SAAA,CACA,KAAA,QACA,QAAA,EACA,EAKA,WAAA,CACA,KAAA,QACA,QAAA,EACA,EAKA,SAAA,CACA,KAAA,QACA,QAAA,EACA,EAKA,cAAA,CACA,KAAA,QACA,QAAA,EACA,EAKA,kBAAA,CACA,KAAA,OACA,QAAA,EACA,EAKA,mBAAA,CACA,KAAA,OACA,QAAA,EACA,CACA,EAEA,MAAA,CAOA,QAQA,MACA,EAEA,SAAA,CACA,wBAAA,CAOA,MANA,CACA,OAAA,+BACA,KAAA,6BACA,KAAA,4BACA,EAEA,KAAA,cAAA,CACA,EAEA,oBAAA,CACA,OAAAC,EAAA,kBAAA,CAAA,KAAA,KAAA,KAAA,aAAA,KAAA,UAAA,CAAA,CACA,CACA,CACA"}
1
+ {"version":3,"file":"contact-row.cjs","sources":["../../../recipes/leftbar/contact_row/contact_row.vue"],"sourcesContent":["<template>\n <dt-recipe-general-row\n :unread-count=\"unreadCount\"\n :description=\"contactDescription\"\n :has-unreads=\"hasUnreads\"\n :selected=\"selected\"\n :has-call-button=\"hasCallButton\"\n :muted=\"muted\"\n :is-typing=\"isTyping\"\n v-bind=\"$attrs\"\n data-qa=\"contact-row\"\n v-on=\"$listeners\"\n >\n <template #left>\n <dt-avatar\n :full-name=\"name\"\n :image-src=\"avatarSrc\"\n :color=\"avatarColor\"\n image-alt=\"\"\n size=\"sm\"\n :seed=\"avatarSeed\"\n :presence=\"avatarPresence\"\n >\n <template\n v-if=\"noInitials\"\n #icon\n >\n <dt-icon-user\n size=\"200\"\n />\n </template>\n </dt-avatar>\n </template>\n <template #label>\n <dt-emoji-text-wrapper\n class=\"d-recipe-leftbar-row__description\"\n data-qa=\"dt-recipe-leftbar-row-description\"\n size=\"200\"\n >\n {{ name }}\n </dt-emoji-text-wrapper>\n <div class=\"d-recipe-leftbar-row__status\">\n <span\n v-if=\"presenceText\"\n data-qa=\"dt-recipe-leftbar-row-presence-text\"\n :class=\"['d-recipe-leftbar-row__meta-context', presenceFontColorClass]\"\n >\n {{ presenceText }}\n </span>\n <dt-emoji-text-wrapper\n v-if=\"userStatus\"\n size=\"100\"\n element-type=\"span\"\n data-qa=\"dt-recipe-leftbar-row-user-status\"\n class=\"d-recipe-leftbar-row__meta-custom\"\n >\n {{ userStatus }}\n </dt-emoji-text-wrapper>\n </div>\n </template>\n </dt-recipe-general-row>\n</template>\n\n<script>\nimport { DtRecipeGeneralRow } from '@/recipes/leftbar/general_row';\nimport { DtEmojiTextWrapper } from '@/components/emoji_text_wrapper';\nimport { DtAvatar } from '@/components/avatar';\nimport { safeConcatStrings } from '@/common/utils';\nimport { DtIconUser } from '@dialpad/dialtone-icons/vue2';\n\nexport default {\n name: 'DtRecipeContactRow',\n\n components: {\n DtAvatar,\n DtRecipeGeneralRow,\n DtEmojiTextWrapper,\n DtIconUser,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * 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 * defer validation to avatar component.\n * @values null, busy, away, offline, active\n */\n avatarPresence: {\n type: String,\n default: null,\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: null,\n },\n\n /**\n * Avatar color to display if `avatarSrc` is empty.\n */\n avatarColor: {\n type: String,\n default: null,\n },\n\n /**\n * Text describing the user's presence, such as \"in a meeting\"\n */\n presenceText: {\n type: String,\n default: '',\n },\n\n /**\n * Name of the contact\n */\n name: {\n type: String,\n required: true,\n },\n\n /**\n * Status as set by the user.\n */\n userStatus: {\n type: String,\n default: '',\n },\n\n /**\n * Gives a faded style to be used when muted\n */\n muted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Number of unread messages\n */\n unreadCount: {\n type: String,\n default: null,\n },\n\n /**\n * Styles the row with an increased font weight to convey it has unreads. This must be true to see\n * the unread count badge.\n */\n hasUnreads: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines if the row is selected\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Initials will never be shown. Instead it will show a \"User\" icon.\n */\n noInitials: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Shows an \"is typing\" animation over the avatar when true.\n */\n isTyping: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the contact row should display a call button when hovered.\n */\n hasCallButton: {\n type: Boolean,\n default: true,\n },\n },\n\n emits: [\n /**\n * Native click event on the row itself\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n\n /**\n * Call button clicked\n *\n * @event call\n * @type {PointerEvent | KeyboardEvent}\n */\n 'call',\n ],\n\n computed: {\n presenceFontColorClass () {\n const presenceFontColors = {\n active: 'd-recipe-contact-row--active',\n busy: 'd-recipe-contact-row--busy',\n away: 'd-recipe-contact-row--away',\n };\n\n return presenceFontColors[this.avatarPresence];\n },\n\n contactDescription () {\n return safeConcatStrings([this.name, this.presenceText, this.userStatus]);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtAvatar","DtRecipeGeneralRow","DtEmojiTextWrapper","DtIconUser","safeConcatStrings"],"mappings":"sYAsEAA,EAAA,CACA,KAAA,qBAEA,WAAA,CACA,SAAAC,EAAA,QACA,mBAAAC,EAAA,QACA,mBAAAC,EAAA,QACA,WAAAC,EAAA,UACA,EAEA,aAAA,GAEA,MAAA,CAKA,UAAA,CACA,KAAA,OACA,QAAA,EACA,EASA,eAAA,CACA,KAAA,OACA,QAAA,IACA,EAKA,WAAA,CACA,KAAA,OACA,QAAA,IACA,EAKA,YAAA,CACA,KAAA,OACA,QAAA,IACA,EAKA,aAAA,CACA,KAAA,OACA,QAAA,EACA,EAKA,KAAA,CACA,KAAA,OACA,SAAA,EACA,EAKA,WAAA,CACA,KAAA,OACA,QAAA,EACA,EAKA,MAAA,CACA,KAAA,QACA,QAAA,EACA,EAKA,YAAA,CACA,KAAA,OACA,QAAA,IACA,EAMA,WAAA,CACA,KAAA,QACA,QAAA,EACA,EAKA,SAAA,CACA,KAAA,QACA,QAAA,EACA,EAKA,WAAA,CACA,KAAA,QACA,QAAA,EACA,EAKA,SAAA,CACA,KAAA,QACA,QAAA,EACA,EAKA,cAAA,CACA,KAAA,QACA,QAAA,EACA,CACA,EAEA,MAAA,CAOA,QAQA,MACA,EAEA,SAAA,CACA,wBAAA,CAOA,MANA,CACA,OAAA,+BACA,KAAA,6BACA,KAAA,4BACA,EAEA,KAAA,cAAA,CACA,EAEA,oBAAA,CACA,OAAAC,EAAA,kBAAA,CAAA,KAAA,KAAA,KAAA,aAAA,KAAA,UAAA,CAAA,CACA,CACA,CACA"}
@@ -1,15 +1,15 @@
1
- import r from "../emoji-text-wrapper/emoji-text-wrapper.js";
2
- import n from "../avatar/avatar.js";
3
- import { safeConcatStrings as o } from "../../common/utils/index.js";
1
+ import { safeConcatStrings as r } from "../../common/utils/index.js";
4
2
  import { DtIconUser as s } from "@dialpad/dialtone-icons/vue2";
5
- import { n as l } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
3
+ import { n } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
4
+ import o from "../avatar/avatar.js";
6
5
  import c from "../general-row/general-row.js";
6
+ import l from "../emoji-text-wrapper/emoji-text-wrapper.js";
7
7
  const i = {
8
8
  name: "DtRecipeContactRow",
9
9
  components: {
10
- DtAvatar: n,
10
+ DtAvatar: o,
11
11
  DtRecipeGeneralRow: c,
12
- DtEmojiTextWrapper: r,
12
+ DtEmojiTextWrapper: l,
13
13
  DtIconUser: s
14
14
  },
15
15
  inheritAttrs: !1,
@@ -117,20 +117,6 @@ const i = {
117
117
  hasCallButton: {
118
118
  type: Boolean,
119
119
  default: !0
120
- },
121
- /**
122
- * Text shown when the call button is hovered.
123
- */
124
- callButtonTooltip: {
125
- type: String,
126
- default: ""
127
- },
128
- /**
129
- * Text shown when the unread count is hovered.
130
- */
131
- unreadCountTooltip: {
132
- type: String,
133
- default: ""
134
120
  }
135
121
  },
136
122
  emits: [
@@ -158,26 +144,26 @@ const i = {
158
144
  }[this.avatarPresence];
159
145
  },
160
146
  contactDescription() {
161
- return o([this.name, this.presenceText, this.userStatus]);
147
+ return r([this.name, this.presenceText, this.userStatus]);
162
148
  }
163
149
  }
164
150
  };
165
151
  var p = function() {
166
152
  var e = this, t = e._self._c;
167
- return t("dt-recipe-general-row", e._g(e._b({ attrs: { "unread-count": e.unreadCount, description: e.contactDescription, "has-unreads": e.hasUnreads, selected: e.selected, "has-call-button": e.hasCallButton, muted: e.muted, "is-typing": e.isTyping, "call-button-tooltip": e.callButtonTooltip, "unread-count-tooltip": e.unreadCountTooltip, "data-qa": "contact-row" }, scopedSlots: e._u([{ key: "left", fn: function() {
153
+ return t("dt-recipe-general-row", e._g(e._b({ attrs: { "unread-count": e.unreadCount, description: e.contactDescription, "has-unreads": e.hasUnreads, selected: e.selected, "has-call-button": e.hasCallButton, muted: e.muted, "is-typing": e.isTyping, "data-qa": "contact-row" }, scopedSlots: e._u([{ key: "left", fn: function() {
168
154
  return [t("dt-avatar", { attrs: { "full-name": e.name, "image-src": e.avatarSrc, color: e.avatarColor, "image-alt": "", size: "sm", seed: e.avatarSeed, presence: e.avatarPresence }, scopedSlots: e._u([e.noInitials ? { key: "icon", fn: function() {
169
155
  return [t("dt-icon-user", { attrs: { size: "200" } })];
170
156
  }, proxy: !0 } : null], null, !0) })];
171
157
  }, proxy: !0 }, { key: "label", fn: function() {
172
158
  return [t("dt-emoji-text-wrapper", { staticClass: "d-recipe-leftbar-row__description", attrs: { "data-qa": "dt-recipe-leftbar-row-description", size: "200" } }, [e._v(" " + e._s(e.name) + " ")]), t("div", { staticClass: "d-recipe-leftbar-row__status" }, [e.presenceText ? t("span", { class: ["d-recipe-leftbar-row__meta-context", e.presenceFontColorClass], attrs: { "data-qa": "dt-recipe-leftbar-row-presence-text" } }, [e._v(" " + e._s(e.presenceText) + " ")]) : e._e(), e.userStatus ? t("dt-emoji-text-wrapper", { staticClass: "d-recipe-leftbar-row__meta-custom", attrs: { size: "100", "element-type": "span", "data-qa": "dt-recipe-leftbar-row-user-status" } }, [e._v(" " + e._s(e.userStatus) + " ")]) : e._e()], 1)];
173
159
  }, proxy: !0 }]) }, "dt-recipe-general-row", e.$attrs, !1), e.$listeners));
174
- }, u = [], d = /* @__PURE__ */ l(
160
+ }, u = [], d = /* @__PURE__ */ n(
175
161
  i,
176
162
  p,
177
163
  u
178
164
  );
179
- const w = d.exports;
165
+ const S = d.exports;
180
166
  export {
181
- w as default
167
+ S as default
182
168
  };
183
169
  //# sourceMappingURL=contact-row.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contact-row.js","sources":["../../../recipes/leftbar/contact_row/contact_row.vue"],"sourcesContent":["<template>\n <dt-recipe-general-row\n :unread-count=\"unreadCount\"\n :description=\"contactDescription\"\n :has-unreads=\"hasUnreads\"\n :selected=\"selected\"\n :has-call-button=\"hasCallButton\"\n :muted=\"muted\"\n :is-typing=\"isTyping\"\n :call-button-tooltip=\"callButtonTooltip\"\n :unread-count-tooltip=\"unreadCountTooltip\"\n v-bind=\"$attrs\"\n data-qa=\"contact-row\"\n v-on=\"$listeners\"\n >\n <template #left>\n <dt-avatar\n :full-name=\"name\"\n :image-src=\"avatarSrc\"\n :color=\"avatarColor\"\n image-alt=\"\"\n size=\"sm\"\n :seed=\"avatarSeed\"\n :presence=\"avatarPresence\"\n >\n <template\n v-if=\"noInitials\"\n #icon\n >\n <dt-icon-user\n size=\"200\"\n />\n </template>\n </dt-avatar>\n </template>\n <template #label>\n <dt-emoji-text-wrapper\n class=\"d-recipe-leftbar-row__description\"\n data-qa=\"dt-recipe-leftbar-row-description\"\n size=\"200\"\n >\n {{ name }}\n </dt-emoji-text-wrapper>\n <div class=\"d-recipe-leftbar-row__status\">\n <span\n v-if=\"presenceText\"\n data-qa=\"dt-recipe-leftbar-row-presence-text\"\n :class=\"['d-recipe-leftbar-row__meta-context', presenceFontColorClass]\"\n >\n {{ presenceText }}\n </span>\n <dt-emoji-text-wrapper\n v-if=\"userStatus\"\n size=\"100\"\n element-type=\"span\"\n data-qa=\"dt-recipe-leftbar-row-user-status\"\n class=\"d-recipe-leftbar-row__meta-custom\"\n >\n {{ userStatus }}\n </dt-emoji-text-wrapper>\n </div>\n </template>\n </dt-recipe-general-row>\n</template>\n\n<script>\nimport { DtRecipeGeneralRow } from '@/recipes/leftbar/general_row';\nimport DtEmojiTextWrapper from '@/components/emoji_text_wrapper/emoji_text_wrapper.vue';\nimport DtAvatar from '@/components/avatar/avatar.vue';\nimport { safeConcatStrings } from '@/common/utils';\nimport { DtIconUser } from '@dialpad/dialtone-icons/vue2';\n\nexport default {\n name: 'DtRecipeContactRow',\n\n components: {\n DtAvatar,\n DtRecipeGeneralRow,\n DtEmojiTextWrapper,\n DtIconUser,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * 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 * defer validation to avatar component.\n * @values null, busy, away, offline, active\n */\n avatarPresence: {\n type: String,\n default: null,\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: null,\n },\n\n /**\n * Avatar color to display if `avatarSrc` is empty.\n */\n avatarColor: {\n type: String,\n default: null,\n },\n\n /**\n * Text describing the user's presence, such as \"in a meeting\"\n */\n presenceText: {\n type: String,\n default: '',\n },\n\n /**\n * Name of the contact\n */\n name: {\n type: String,\n required: true,\n },\n\n /**\n * Status as set by the user.\n */\n userStatus: {\n type: String,\n default: '',\n },\n\n /**\n * Gives a faded style to be used when muted\n */\n muted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Number of unread messages\n */\n unreadCount: {\n type: String,\n default: null,\n },\n\n /**\n * Styles the row with an increased font weight to convey it has unreads. This must be true to see\n * the unread count badge.\n */\n hasUnreads: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines if the row is selected\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Initials will never be shown. Instead it will show a \"User\" icon.\n */\n noInitials: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Shows an \"is typing\" animation over the avatar when true.\n */\n isTyping: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the contact row should display a call button when hovered.\n */\n hasCallButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Text shown when the call button is hovered.\n */\n callButtonTooltip: {\n type: String,\n default: '',\n },\n\n /**\n * Text shown when the unread count is hovered.\n */\n unreadCountTooltip: {\n type: String,\n default: '',\n },\n },\n\n emits: [\n /**\n * Native click event on the row itself\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n\n /**\n * Call button clicked\n *\n * @event call\n * @type {PointerEvent | KeyboardEvent}\n */\n 'call',\n ],\n\n computed: {\n presenceFontColorClass () {\n const presenceFontColors = {\n active: 'd-recipe-contact-row--active',\n busy: 'd-recipe-contact-row--busy',\n away: 'd-recipe-contact-row--away',\n };\n\n return presenceFontColors[this.avatarPresence];\n },\n\n contactDescription () {\n return safeConcatStrings([this.name, this.presenceText, this.userStatus]);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtAvatar","DtRecipeGeneralRow","DtEmojiTextWrapper","DtIconUser","safeConcatStrings"],"mappings":";;;;;;AAwEA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,UAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,YAAAC;AAAA,EACA;AAAA,EAEA,cAAA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,cAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,eAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,yBAAA;AAOA,aANA;AAAA,QACA,QAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,MACA,EAEA,KAAA,cAAA;AAAA,IACA;AAAA,IAEA,qBAAA;AACA,aAAAC,EAAA,CAAA,KAAA,MAAA,KAAA,cAAA,KAAA,UAAA,CAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"contact-row.js","sources":["../../../recipes/leftbar/contact_row/contact_row.vue"],"sourcesContent":["<template>\n <dt-recipe-general-row\n :unread-count=\"unreadCount\"\n :description=\"contactDescription\"\n :has-unreads=\"hasUnreads\"\n :selected=\"selected\"\n :has-call-button=\"hasCallButton\"\n :muted=\"muted\"\n :is-typing=\"isTyping\"\n v-bind=\"$attrs\"\n data-qa=\"contact-row\"\n v-on=\"$listeners\"\n >\n <template #left>\n <dt-avatar\n :full-name=\"name\"\n :image-src=\"avatarSrc\"\n :color=\"avatarColor\"\n image-alt=\"\"\n size=\"sm\"\n :seed=\"avatarSeed\"\n :presence=\"avatarPresence\"\n >\n <template\n v-if=\"noInitials\"\n #icon\n >\n <dt-icon-user\n size=\"200\"\n />\n </template>\n </dt-avatar>\n </template>\n <template #label>\n <dt-emoji-text-wrapper\n class=\"d-recipe-leftbar-row__description\"\n data-qa=\"dt-recipe-leftbar-row-description\"\n size=\"200\"\n >\n {{ name }}\n </dt-emoji-text-wrapper>\n <div class=\"d-recipe-leftbar-row__status\">\n <span\n v-if=\"presenceText\"\n data-qa=\"dt-recipe-leftbar-row-presence-text\"\n :class=\"['d-recipe-leftbar-row__meta-context', presenceFontColorClass]\"\n >\n {{ presenceText }}\n </span>\n <dt-emoji-text-wrapper\n v-if=\"userStatus\"\n size=\"100\"\n element-type=\"span\"\n data-qa=\"dt-recipe-leftbar-row-user-status\"\n class=\"d-recipe-leftbar-row__meta-custom\"\n >\n {{ userStatus }}\n </dt-emoji-text-wrapper>\n </div>\n </template>\n </dt-recipe-general-row>\n</template>\n\n<script>\nimport { DtRecipeGeneralRow } from '@/recipes/leftbar/general_row';\nimport { DtEmojiTextWrapper } from '@/components/emoji_text_wrapper';\nimport { DtAvatar } from '@/components/avatar';\nimport { safeConcatStrings } from '@/common/utils';\nimport { DtIconUser } from '@dialpad/dialtone-icons/vue2';\n\nexport default {\n name: 'DtRecipeContactRow',\n\n components: {\n DtAvatar,\n DtRecipeGeneralRow,\n DtEmojiTextWrapper,\n DtIconUser,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * 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 * defer validation to avatar component.\n * @values null, busy, away, offline, active\n */\n avatarPresence: {\n type: String,\n default: null,\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: null,\n },\n\n /**\n * Avatar color to display if `avatarSrc` is empty.\n */\n avatarColor: {\n type: String,\n default: null,\n },\n\n /**\n * Text describing the user's presence, such as \"in a meeting\"\n */\n presenceText: {\n type: String,\n default: '',\n },\n\n /**\n * Name of the contact\n */\n name: {\n type: String,\n required: true,\n },\n\n /**\n * Status as set by the user.\n */\n userStatus: {\n type: String,\n default: '',\n },\n\n /**\n * Gives a faded style to be used when muted\n */\n muted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Number of unread messages\n */\n unreadCount: {\n type: String,\n default: null,\n },\n\n /**\n * Styles the row with an increased font weight to convey it has unreads. This must be true to see\n * the unread count badge.\n */\n hasUnreads: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines if the row is selected\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Initials will never be shown. Instead it will show a \"User\" icon.\n */\n noInitials: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Shows an \"is typing\" animation over the avatar when true.\n */\n isTyping: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the contact row should display a call button when hovered.\n */\n hasCallButton: {\n type: Boolean,\n default: true,\n },\n },\n\n emits: [\n /**\n * Native click event on the row itself\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n\n /**\n * Call button clicked\n *\n * @event call\n * @type {PointerEvent | KeyboardEvent}\n */\n 'call',\n ],\n\n computed: {\n presenceFontColorClass () {\n const presenceFontColors = {\n active: 'd-recipe-contact-row--active',\n busy: 'd-recipe-contact-row--busy',\n away: 'd-recipe-contact-row--away',\n };\n\n return presenceFontColors[this.avatarPresence];\n },\n\n contactDescription () {\n return safeConcatStrings([this.name, this.presenceText, this.userStatus]);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtAvatar","DtRecipeGeneralRow","DtEmojiTextWrapper","DtIconUser","safeConcatStrings"],"mappings":";;;;;;AAsEA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,UAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,YAAAC;AAAA,EACA;AAAA,EAEA,cAAA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,cAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,eAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,yBAAA;AAOA,aANA;AAAA,QACA,QAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,MACA,EAEA,KAAA,cAAA;AAAA,IACA;AAAA,IAEA,qBAAA;AACA,aAAAC,EAAA,CAAA,KAAA,MAAA,KAAA,cAAA,KAAA,UAAA,CAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=0,M="MMMM",t="long";exports.INTL_MONTH_FORMAT=t;exports.MONTH_FORMAT=M;exports.WEEK_START=T;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=0,t="long";exports.INTL_MONTH_FORMAT=t;exports.WEEK_START=T;
2
2
  //# sourceMappingURL=datepicker-constants.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker-constants.cjs","sources":["../../../components/datepicker/datepicker_constants.js"],"sourcesContent":["/**\n * Week start day\n * 0 - Sunday\n * 1 - Monday\n */\nexport const WEEK_START = 0;\n\nexport const MONTH_FORMAT = 'MMMM';\n\nexport const INTL_MONTH_FORMAT = 'long';\n"],"names":["WEEK_START","MONTH_FORMAT","INTL_MONTH_FORMAT"],"mappings":"gFAKY,MAACA,EAAa,EAEbC,EAAe,OAEfC,EAAoB"}
1
+ {"version":3,"file":"datepicker-constants.cjs","sources":["../../../components/datepicker/datepicker_constants.js"],"sourcesContent":["/**\n * Week start day\n * 0 - Sunday\n * 1 - Monday\n */\nexport const WEEK_START = 0;\n\nexport const INTL_MONTH_FORMAT = 'long';\n"],"names":["WEEK_START","INTL_MONTH_FORMAT"],"mappings":"gFAKY,MAACA,EAAa,EAEbC,EAAoB"}
@@ -1,7 +1,6 @@
1
- const M = 0, T = "MMMM", o = "long";
1
+ const T = 0, o = "long";
2
2
  export {
3
3
  o as INTL_MONTH_FORMAT,
4
- T as MONTH_FORMAT,
5
- M as WEEK_START
4
+ T as WEEK_START
6
5
  };
7
6
  //# sourceMappingURL=datepicker-constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker-constants.js","sources":["../../../components/datepicker/datepicker_constants.js"],"sourcesContent":["/**\n * Week start day\n * 0 - Sunday\n * 1 - Monday\n */\nexport const WEEK_START = 0;\n\nexport const MONTH_FORMAT = 'MMMM';\n\nexport const INTL_MONTH_FORMAT = 'long';\n"],"names":["WEEK_START","MONTH_FORMAT","INTL_MONTH_FORMAT"],"mappings":"AAKY,MAACA,IAAa,GAEbC,IAAe,QAEfC,IAAoB;"}
1
+ {"version":3,"file":"datepicker-constants.js","sources":["../../../components/datepicker/datepicker_constants.js"],"sourcesContent":["/**\n * Week start day\n * 0 - Sunday\n * 1 - Monday\n */\nexport const WEEK_START = 0;\n\nexport const INTL_MONTH_FORMAT = 'long';\n"],"names":["WEEK_START","INTL_MONTH_FORMAT"],"mappings":"AAKY,MAACA,IAAa,GAEbC,IAAoB;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("@dialpad/dialtone-icons/vue2"),n=require("date-fns"),i=require("./utils.cjs"),u=require("./datepicker-constants.cjs"),f=require("../stack/stack.cjs"),y=require("../tooltip/tooltip.cjs"),p=require("../button/button.cjs"),d=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),D=require("../../common/utils/index.cjs"),_={name:"DtDatepickerMonthYearPicker",components:{DtButton:p.default,DtTooltip:y.default,DtStack:f.default,DtIconChevronLeft:h.DtIconChevronLeft,DtIconChevronsLeft:h.DtIconChevronsLeft,DtIconChevronRight:h.DtIconChevronRight,DtIconChevronsRight:h.DtIconChevronsRight},props:{locale:{type:String,required:!0},prevMonthLabel:{type:String,required:!0},nextMonthLabel:{type:String,required:!0},prevYearLabel:{type:String,required:!0},nextYearLabel:{type:String,required:!0},changeToLabel:{type:String,required:!0},selectedDate:{type:Date,required:!0}},emits:["calendar-days","focus-first-day","focus-last-day","close-datepicker"],data(){return{selectMonth:n.getMonth(this.selectedDate),selectYear:n.getYear(this.selectedDate),highlightedDay:null,focusPicker:0,focusRefs:[],refNames:["prevYearButtonRef","prevMonthButtonRef","nextMonthButtonRef","nextYearButtonRef"]}},computed:{calendarDays(){return i.getCalendarDays(this.selectMonth,this.selectYear,this.highlightedDay)},formattedMonth(){return a=>i.formatMonth(a,u.INTL_MONTH_FORMAT,this.locale)}},watch:{selectMonth:{handler(){this.highlightDay(),this.$emit("calendar-days",this.calendarDays)},immediate:!0},selectYear:{handler(){this.highlightDay(),this.$emit("calendar-days",this.calendarDays)},immediate:!0}},mounted(){this.setButtonsRef(),this.focusMonthYearPicker()},methods:{setButtonsRef(){this.focusRefs=this.refNames.map(a=>this.$refs[a])},focusMonthYearPicker(){this.focusPicker=0,this.focusRefs[0].$el.focus()},handleKeyDown(a){switch(a.key){case"ArrowLeft":a.preventDefault(),this.focusPicker===0?(this.focusPicker=3,this.focusRefs[this.focusPicker].$el.focus()):(this.focusPicker--,this.focusRefs[this.focusPicker].$el.focus());break;case"ArrowRight":a.preventDefault(),this.focusPicker===3?(this.focusPicker=0,this.focusRefs[this.focusPicker].$el.focus()):(this.focusPicker++,this.focusRefs[this.focusPicker].$el.focus());break;case"ArrowDown":a.preventDefault(),this.$emit("focus-first-day");break;case"Tab":a.preventDefault(),this.$emit("focus-first-day");break;case"Escape":this.$emit("close-datepicker");break}},highlightDay(){const a=n.getYear(this.selectedDate),e=n.getMonth(this.selectedDate);a!==this.selectYear||e!==this.selectMonth?this.highlightedDay=null:this.highlightedDay=n.getDate(this.selectedDate)},changeMonth(a){(this.selectMonth===0&&a===-1||this.selectMonth===11&&a===1)&&(this.selectYear+=a);const e=n.set(this.selectedDate,{month:this.selectMonth,year:this.selectYear}),t=a===1?n.addMonths(e,1):n.subMonths(e,1);this.selectMonth=n.getMonth(t)},changeYear(a){this.selectYear=this.selectYear+a},goToNextMonth(){this.changeMonth(1)},goToPrevMonth(){this.changeMonth(-1)}}};var k=function(){var e=this,t=e._self._c;return t("dt-stack",{staticClass:"d-datepicker__month-year",attrs:{direction:"row",gap:"300"}},[t("dt-stack",{staticClass:"d-datepicker__nav",attrs:{as:"nav",direction:"row",gap:"200"}},[t("dt-tooltip",{attrs:{message:e.prevYearLabel,placement:"top","fallback-placements":["top-start","auto"]},scopedSlots:e._u([{key:"anchor",fn:function(){return[t("dt-button",{ref:e.refNames[0],staticClass:"d-datepicker__nav-btn",attrs:{id:"prevYearButton",size:"xs",importance:"clear",kind:"muted",circle:!0,type:"button","aria-label":`${e.changeToLabel} ${e.prevYearLabel} ${e.selectYear-1}`},on:{click:function(s){return e.changeYear(-1)},keydown:function(s){return e.handleKeyDown(s)}}},[t("dt-icon-chevrons-left",{attrs:{size:"200"}})],1)]},proxy:!0}])}),t("dt-tooltip",{attrs:{message:e.prevMonthLabel,placement:"top","fallback-placements":["top-end","auto"]},scopedSlots:e._u([{key:"anchor",fn:function(){return[t("dt-button",{ref:e.refNames[1],staticClass:"d-datepicker__nav-btn",attrs:{id:"prevMonthButton",size:"xs",importance:"clear",kind:"muted",circle:!0,type:"button","aria-label":`${e.changeToLabel} ${e.prevMonthLabel} ${e.formattedMonth(e.selectMonth-1)}`},on:{click:function(s){return e.changeMonth(-1)},keydown:function(s){return e.handleKeyDown(s)}}},[t("dt-icon-chevron-left",{attrs:{size:"200"}})],1)]},proxy:!0}])})],1),t("div",{staticClass:"d-datepicker__month-year-title",attrs:{id:"calendar-heading"}},[e._v(" "+e._s(e.formattedMonth(e.selectMonth))+" "+e._s(e.selectYear)+" ")]),t("dt-stack",{staticClass:"d-datepicker__nav",attrs:{as:"nav",direction:"row",gap:"200"}},[t("dt-tooltip",{attrs:{message:e.nextMonthLabel,placement:"top","fallback-placements":["top-start","auto"]},scopedSlots:e._u([{key:"anchor",fn:function(){return[t("dt-button",{ref:e.refNames[2],staticClass:"d-datepicker__nav-btn",attrs:{id:"nextMonthButton",size:"xs",importance:"clear",circle:!0,kind:"muted",type:"button","aria-label":`${e.changeToLabel} ${e.nextMonthLabel} ${e.formattedMonth(e.selectMonth+1)}`},on:{click:function(s){return e.changeMonth(1)},keydown:function(s){return e.handleKeyDown(s)}}},[t("dt-icon-chevron-right",{attrs:{size:"200"}})],1)]},proxy:!0}])}),t("dt-tooltip",{attrs:{message:e.nextYearLabel,placement:"top","fallback-placements":["top-end","auto"]},scopedSlots:e._u([{key:"anchor",fn:function(){return[t("dt-button",{ref:e.refNames[3],staticClass:"d-datepicker__nav-btn",attrs:{id:"nextYearButton",size:"xs",kind:"muted",circle:!0,importance:"clear",type:"button","aria-label":`${e.changeToLabel} ${e.nextYearLabel} ${e.selectYear+1}`},on:{click:function(s){return e.changeYear(1)},keydown:function(s){return e.handleKeyDown(s)}}},[t("dt-icon-chevrons-right",{attrs:{size:"200"}})],1)]},proxy:!0}])})],1)],1)},m=[],b=d.n(_,k,m);const g=b.exports,$={name:"DtDatepickerCalendar",components:{DtButton:p.default},props:{calendarDays:{type:Array,required:!0},locale:{type:String,required:!0},selectDayLabel:{type:String,required:!0}},emits:["select-date","focus-month-year-picker","close-datepicker"],data(){return{selectedDay:null,focusDay:0,daysRef:[]}},computed:{weekDays(){return i.getWeekDayNames(this.locale,u.WEEK_START)}},watch:{calendarDays(){this.focusDay=0,this.selectedDay=null,this.daysRef=[],this.$nextTick(()=>{this.daysRef=[],this.setDayRef()})}},methods:{dayAriaLabel(a){return`${this.selectDayLabel} ${a.text} ${n.format(a.value,u.MONTH_FORMAT)} ${n.getYear(a.value)}`},setDayRef(a,e){this.calendarDays.forEach((t,s)=>{t.days.forEach((c,r)=>{const l=`buttonRef_${s}_${r}`,o=this.$refs[l];o&&c.currentMonth&&this.daysRef.push({el:o[0],day:c})})})},handleKeyDown(a){switch(a.key){case"ArrowUp":a.preventDefault(),this.focusDay-=7;try{this.daysRef[this.focusDay].el.$el.focus()}catch{const t=i.calculatePrevFocusDate(this.daysRef[this.focusDay+7].day.value);this.$emit("go-to-prev-month"),this.$nextTick(()=>{this.setDayRef(),this.daysRef[t-1].el.$el.focus(),this.focusDay+=t-1})}break;case"ArrowDown":a.preventDefault(),this.focusDay+=7;try{this.daysRef[this.focusDay].el.$el.focus()}catch{const t=i.calculateNextFocusDate(this.daysRef[this.focusDay-7].day.value);this.$emit("go-to-next-month"),this.$nextTick(()=>{this.setDayRef(),this.daysRef[t-1].el.$el.focus(),this.focusDay+=t-1})}break;case"ArrowLeft":a.preventDefault(),this.focusDay>0?(this.focusDay-=1,this.daysRef[this.focusDay].el.$el.focus()):(this.$emit("go-to-prev-month"),this.$nextTick(()=>{this.focusLastDay()}));break;case"ArrowRight":a.preventDefault(),this.focusDay<this.daysRef.length-1?(this.focusDay+=1,this.daysRef[this.focusDay].el.$el.focus()):(this.$emit("go-to-next-month"),this.$nextTick(()=>{this.focusFirstDay()}));break;case"Tab":a.preventDefault(),this.$emit("focus-month-year-picker");break;case"Escape":this.$emit("close-datepicker");break}},focusFirstDay(){this.focusDay=0,this.$nextTick(()=>{this.daysRef[this.focusDay].el.$el.focus()})},focusLastDay(){this.$nextTick(()=>{this.focusDay=this.daysRef.length-1,this.daysRef[this.focusDay].el.$el.focus()})},selectDay(a){a.currentMonth&&(this.selectedDay=a.text,this.$emit("select-date",a.value))}}};var v=function(){var e=this,t=e._self._c;return t("table",{staticClass:"d-datepicker__calendar",attrs:{"aria-labelledby":"calendar-heading"}},[t("thead",[t("tr",e._l(e.weekDays,function(s){return t("th",{key:s,staticClass:"d-datepicker__cell d-datepicker__cell--header",attrs:{scope:"col"}},[t("span",{staticClass:"d-datepicker__weekday",attrs:{title:s,"aria-label":s}},[e._v(" "+e._s(s))])])}),0)]),t("tbody",e._l(e.calendarDays,function(s,c){return t("tr",{key:c},e._l(s.days,function(r,l){return t("td",{key:c+l,staticClass:"d-datepicker__cell",attrs:{role:"listbox"}},[t("dt-button",{ref:`buttonRef_${c}_${l}`,refInFor:!0,staticClass:"d-datepicker__day",class:{"d-datepicker__day--disabled":!r.currentMonth,"d-datepicker__day--selected":e.selectedDay?r.text===e.selectedDay&&r.currentMonth:r.selected},attrs:{circle:!0,size:"sm",importance:"clear",disabled:!r.currentMonth,type:"button","aria-selected":e.selectedDay?r.text===e.selectedDay&&r.currentMonth:r.selected,"aria-label":e.dayAriaLabel(r),role:"option"},on:{click:function(o){return e.selectDay(r)},keydown:function(o){return e.handleKeyDown(o)}}},[e._v(" "+e._s(r.text)+" ")])],1)}),0)}),0)])},M=[],R=d.n($,v,M);const x=R.exports,L={name:"DtDatepicker",components:{DtStack:f.default,MonthYearPicker:g,Calendar:x},props:{prevMonthLabel:{type:String,required:!0},nextMonthLabel:{type:String,required:!0},prevYearLabel:{type:String,required:!0},nextYearLabel:{type:String,required:!0},selectDayLabel:{type:String,required:!0},changeToLabel:{type:String,required:!0},locale:{type:String,default:"en-US"},selectedDate:{type:Date,default:()=>new Date}},emits:["selected-date","close-datepicker"],data(){return{calendarDays:[]}},mounted(){D.warnIfUnmounted(this.$el,this.$options.name)},methods:{updateCalendarDays(a){this.calendarDays=a}}};var Y=function(){var e=this,t=e._self._c;return t("dt-stack",{staticClass:"d-datepicker",attrs:{gap:"400"}},[t("div",{staticClass:"d-datepicker__hd"},[t("month-year-picker",{ref:"monthYearPicker",attrs:{locale:e.locale,"prev-month-label":e.prevMonthLabel,"next-month-label":e.nextMonthLabel,"prev-year-label":e.prevYearLabel,"next-year-label":e.nextYearLabel,"change-to-label":e.changeToLabel,"selected-date":e.selectedDate},on:{"calendar-days":e.updateCalendarDays,"focus-first-day":function(s){return e.$refs.calendar.focusFirstDay()},"focus-last-day":function(s){return e.$refs.calendar.focusLastDay()},"close-datepicker":function(s){return e.$emit("close-datepicker")}}})],1),t("div",{staticClass:"d-datepicker__bd"},[t("calendar",{ref:"calendar",attrs:{locale:e.locale,"calendar-days":e.calendarDays,"select-day-label":e.selectDayLabel},on:{"select-date":function(s){return e.$emit("selected-date",s)},"focus-month-year-picker":function(s){return e.$refs.monthYearPicker.focusMonthYearPicker()},"close-datepicker":function(s){return e.$emit("close-datepicker")},"go-to-next-month":function(s){return e.$refs.monthYearPicker.goToNextMonth()},"go-to-prev-month":function(s){return e.$refs.monthYearPicker.goToPrevMonth()}}})],1)])},w=[],C=d.n(L,Y,w);const T=C.exports;exports.default=T;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("@dialpad/dialtone-icons/vue2"),n=require("date-fns"),i=require("./utils.cjs"),u=require("./datepicker-constants.cjs"),d=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),f=require("../button/button.cjs"),p=require("../tooltip/tooltip.cjs"),_=require("../stack/stack.cjs"),D=require("../../common/mixins/localization.cjs"),y=require("../../common/utils/index.cjs"),k={name:"DtDatepickerMonthYearPicker",components:{DtButton:f.default,DtTooltip:p.default,DtStack:_.default,DtIconChevronLeft:h.DtIconChevronLeft,DtIconChevronsLeft:h.DtIconChevronsLeft,DtIconChevronRight:h.DtIconChevronRight,DtIconChevronsRight:h.DtIconChevronsRight},mixins:[D.default],props:{selectedDate:{type:Date,required:!0}},emits:["calendar-days","focus-first-day","focus-last-day","close-datepicker"],data(){return{selectMonth:n.getMonth(this.selectedDate),selectYear:n.getYear(this.selectedDate),highlightedDay:null,focusPicker:0,focusRefs:[],refNames:["prevYearButtonRef","prevMonthButtonRef","nextMonthButtonRef","nextYearButtonRef"]}},computed:{calendarDays(){return i.getCalendarDays(this.selectMonth,this.selectYear,this.highlightedDay)},formattedMonth(){return s=>i.formatMonth(s,u.INTL_MONTH_FORMAT,this.i18n.currentLocale)},previousYearAriaLabel(){return`${this.i18n.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${this.i18n.$t("DIALTONE_DATEPICKER_PREVIOUS_YEAR")} ${this.selectYear-1}`},previousMonthAriaLabel(){return`${this.i18n.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${this.i18n.$t("DIALTONE_DATEPICKER_PREVIOUS_MONTH")} ${this.formattedMonth(this.selectMonth-1)}`},nextYearAriaLabel(){return`${this.i18n.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${this.i18n.$t("DIALTONE_DATEPICKER_NEXT_YEAR")} ${this.selectYear+1}`},nextMonthAriaLabel(){return`${this.i18n.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${this.i18n.$t("DIALTONE_DATEPICKER_NEXT_MONTH")} ${this.formattedMonth(this.selectMonth+1)}`}},watch:{selectMonth:{handler(){this.highlightDay(),this.$emit("calendar-days",this.calendarDays)},immediate:!0},selectYear:{handler(){this.highlightDay(),this.$emit("calendar-days",this.calendarDays)},immediate:!0}},mounted(){this.setButtonsRef(),this.focusMonthYearPicker()},methods:{setButtonsRef(){this.focusRefs=this.refNames.map(s=>this.$refs[s])},focusMonthYearPicker(){this.focusPicker=0,this.focusRefs[0].$el.focus()},handleKeyDown(s){switch(s.key){case"ArrowLeft":s.preventDefault(),this.focusPicker===0?(this.focusPicker=3,this.focusRefs[this.focusPicker].$el.focus()):(this.focusPicker--,this.focusRefs[this.focusPicker].$el.focus());break;case"ArrowRight":s.preventDefault(),this.focusPicker===3?(this.focusPicker=0,this.focusRefs[this.focusPicker].$el.focus()):(this.focusPicker++,this.focusRefs[this.focusPicker].$el.focus());break;case"ArrowDown":s.preventDefault(),this.$emit("focus-first-day");break;case"Tab":s.preventDefault(),this.$emit("focus-first-day");break;case"Escape":this.$emit("close-datepicker");break}},highlightDay(){const s=n.getYear(this.selectedDate),e=n.getMonth(this.selectedDate);s!==this.selectYear||e!==this.selectMonth?this.highlightedDay=null:this.highlightedDay=n.getDate(this.selectedDate)},changeMonth(s){(this.selectMonth===0&&s===-1||this.selectMonth===11&&s===1)&&(this.selectYear+=s);const e=n.set(this.selectedDate,{month:this.selectMonth,year:this.selectYear}),t=s===1?n.addMonths(e,1):n.subMonths(e,1);this.selectMonth=n.getMonth(t)},changeYear(s){this.selectYear=this.selectYear+s},goToNextMonth(){this.changeMonth(1)},goToPrevMonth(){this.changeMonth(-1)}}};var m=function(){var e=this,t=e._self._c;return t("dt-stack",{staticClass:"d-datepicker__month-year",attrs:{direction:"row",gap:"300"}},[t("dt-stack",{staticClass:"d-datepicker__nav",attrs:{as:"nav",direction:"row",gap:"200"}},[t("dt-tooltip",{attrs:{"fallback-placements":["top-start","auto"],message:e.i18n.$t("DIALTONE_DATEPICKER_PREVIOUS_YEAR"),placement:"top"},scopedSlots:e._u([{key:"anchor",fn:function(){return[t("dt-button",{ref:e.refNames[0],staticClass:"d-datepicker__nav-btn",attrs:{id:"prevYearButton","aria-label":e.previousYearAriaLabel,circle:"",importance:"clear",kind:"muted",size:"xs",type:"button"},on:{click:function(a){return e.changeYear(-1)},keydown:function(a){return e.handleKeyDown(a)}}},[t("dt-icon-chevrons-left",{attrs:{size:"200"}})],1)]},proxy:!0}])}),t("dt-tooltip",{attrs:{"fallback-placements":["top-start","auto"],message:e.i18n.$t("DIALTONE_DATEPICKER_PREVIOUS_MONTH"),placement:"top"},scopedSlots:e._u([{key:"anchor",fn:function(){return[t("dt-button",{ref:e.refNames[1],staticClass:"d-datepicker__nav-btn",attrs:{id:"prevMonthButton","aria-label":e.previousMonthAriaLabel,circle:"",importance:"clear",kind:"muted",size:"xs",type:"button"},on:{click:function(a){return e.changeMonth(-1)},keydown:function(a){return e.handleKeyDown(a)}}},[t("dt-icon-chevron-left",{attrs:{size:"200"}})],1)]},proxy:!0}])})],1),t("div",{staticClass:"d-datepicker__month-year-title",attrs:{id:"calendar-heading"}},[e._v(" "+e._s(e.formattedMonth(e.selectMonth))+" "+e._s(e.selectYear)+" ")]),t("dt-stack",{staticClass:"d-datepicker__nav",attrs:{as:"nav",direction:"row",gap:"200"}},[t("dt-tooltip",{attrs:{"fallback-placements":["top-end","auto"],message:e.i18n.$t("DIALTONE_DATEPICKER_NEXT_MONTH"),placement:"top"},scopedSlots:e._u([{key:"anchor",fn:function(){return[t("dt-button",{ref:e.refNames[2],staticClass:"d-datepicker__nav-btn",attrs:{id:"nextMonthButton","aria-label":e.nextMonthAriaLabel,circle:"",importance:"clear",kind:"muted",size:"xs",type:"button"},on:{click:function(a){return e.changeMonth(1)},keydown:function(a){return e.handleKeyDown(a)}}},[t("dt-icon-chevron-right",{attrs:{size:"200"}})],1)]},proxy:!0}])}),t("dt-tooltip",{attrs:{"fallback-placements":["top-end","auto"],message:e.i18n.$t("DIALTONE_DATEPICKER_NEXT_YEAR"),placement:"top"},scopedSlots:e._u([{key:"anchor",fn:function(){return[t("dt-button",{ref:e.refNames[3],staticClass:"d-datepicker__nav-btn",attrs:{id:"nextYearButton","aria-label":e.nextYearAriaLabel,circle:"",importance:"clear",kind:"muted",size:"xs",type:"button"},on:{click:function(a){return e.changeYear(1)},keydown:function(a){return e.handleKeyDown(a)}}},[t("dt-icon-chevrons-right",{attrs:{size:"200"}})],1)]},proxy:!0}])})],1)],1)},$=[],v=d.n(k,m,$);const R=v.exports,b={name:"DtDatepickerCalendar",components:{DtButton:f.default},mixins:[D.default],props:{calendarDays:{type:Array,required:!0}},emits:["select-date","focus-month-year-picker","close-datepicker"],data(){return{selectedDay:null,focusDay:0,daysRef:[]}},computed:{weekDays(){return i.getWeekDayNames(this.i18n.currentLocale,u.WEEK_START)}},watch:{calendarDays(){this.focusDay=0,this.selectedDay=null,this.daysRef=[],this.$nextTick(()=>{this.daysRef=[],this.setDayRef()})}},methods:{dayAriaLabel(s){return this.i18n.$t("DIALTONE_DATEPICKER_SELECT_DAY")+` ${i.formatDate(s.value,u.INTL_MONTH_FORMAT,this.i18n.currentLocale)}`},setDayRef(s,e){this.calendarDays.forEach((t,a)=>{t.days.forEach((c,r)=>{const l=`buttonRef_${a}_${r}`,o=this.$refs[l];o&&c.currentMonth&&this.daysRef.push({el:o[0],day:c})})})},handleKeyDown(s){switch(s.key){case"ArrowUp":s.preventDefault(),this.focusDay-=7;try{this.daysRef[this.focusDay].el.$el.focus()}catch{const t=i.calculatePrevFocusDate(this.daysRef[this.focusDay+7].day.value);this.$emit("go-to-prev-month"),this.$nextTick(()=>{this.setDayRef(),this.daysRef[t-1].el.$el.focus(),this.focusDay+=t-1})}break;case"ArrowDown":s.preventDefault(),this.focusDay+=7;try{this.daysRef[this.focusDay].el.$el.focus()}catch{const t=i.calculateNextFocusDate(this.daysRef[this.focusDay-7].day.value);this.$emit("go-to-next-month"),this.$nextTick(()=>{this.setDayRef(),this.daysRef[t-1].el.$el.focus(),this.focusDay+=t-1})}break;case"ArrowLeft":s.preventDefault(),this.focusDay>0?(this.focusDay-=1,this.daysRef[this.focusDay].el.$el.focus()):(this.$emit("go-to-prev-month"),this.$nextTick(()=>{this.focusLastDay()}));break;case"ArrowRight":s.preventDefault(),this.focusDay<this.daysRef.length-1?(this.focusDay+=1,this.daysRef[this.focusDay].el.$el.focus()):(this.$emit("go-to-next-month"),this.$nextTick(()=>{this.focusFirstDay()}));break;case"Tab":s.preventDefault(),this.$emit("focus-month-year-picker");break;case"Escape":this.$emit("close-datepicker");break}},focusFirstDay(){this.focusDay=0,this.$nextTick(()=>{this.daysRef[this.focusDay].el.$el.focus()})},focusLastDay(){this.$nextTick(()=>{this.focusDay=this.daysRef.length-1,this.daysRef[this.focusDay].el.$el.focus()})},selectDay(s){s.currentMonth&&(this.selectedDay=s.text,this.$emit("select-date",s.value))}}};var g=function(){var e=this,t=e._self._c;return t("table",{staticClass:"d-datepicker__calendar",attrs:{"aria-labelledby":"calendar-heading"}},[t("thead",[t("tr",e._l(e.weekDays,function(a){return t("th",{key:a,staticClass:"d-datepicker__cell d-datepicker__cell--header",attrs:{scope:"col"}},[t("span",{staticClass:"d-datepicker__weekday",attrs:{title:a,"aria-label":a}},[e._v(" "+e._s(a))])])}),0)]),t("tbody",e._l(e.calendarDays,function(a,c){return t("tr",{key:c},e._l(a.days,function(r,l){return t("td",{key:c+l,staticClass:"d-datepicker__cell",attrs:{role:"listbox"}},[t("dt-button",{ref:`buttonRef_${c}_${l}`,refInFor:!0,staticClass:"d-datepicker__day",class:{"d-datepicker__day--disabled":!r.currentMonth,"d-datepicker__day--selected":e.selectedDay?r.text===e.selectedDay&&r.currentMonth:r.selected},attrs:{circle:!0,size:"sm",importance:"clear",disabled:!r.currentMonth,type:"button","aria-selected":e.selectedDay?r.text===e.selectedDay&&r.currentMonth:r.selected,"aria-label":e.dayAriaLabel(r),role:"option"},on:{click:function(o){return e.selectDay(r)},keydown:function(o){return e.handleKeyDown(o)}}},[e._v(" "+e._s(r.text)+" ")])],1)}),0)}),0)])},E=[],T=d.n(b,g,E);const M=T.exports,A={name:"DtDatepicker",components:{DtStack:_.default,MonthYearPicker:R,Calendar:M},props:{selectedDate:{type:Date,default:()=>new Date}},emits:["selected-date","close-datepicker"],data(){return{calendarDays:[]}},mounted(){y.warnIfUnmounted(this.$el,this.$options.name)},methods:{updateCalendarDays(s){this.calendarDays=s}}};var C=function(){var e=this,t=e._self._c;return t("dt-stack",{staticClass:"d-datepicker",attrs:{gap:"400"}},[t("div",{staticClass:"d-datepicker__hd"},[t("month-year-picker",{ref:"monthYearPicker",attrs:{"selected-date":e.selectedDate},on:{"calendar-days":e.updateCalendarDays,"focus-first-day":function(a){return e.$refs.calendar.focusFirstDay()},"focus-last-day":function(a){return e.$refs.calendar.focusLastDay()},"close-datepicker":function(a){return e.$emit("close-datepicker")}}})],1),t("div",{staticClass:"d-datepicker__bd"},[t("calendar",{ref:"calendar",attrs:{"calendar-days":e.calendarDays},on:{"select-date":function(a){return e.$emit("selected-date",a)},"focus-month-year-picker":function(a){return e.$refs.monthYearPicker.focusMonthYearPicker()},"close-datepicker":function(a){return e.$emit("close-datepicker")},"go-to-next-month":function(a){return e.$refs.monthYearPicker.goToNextMonth()},"go-to-prev-month":function(a){return e.$refs.monthYearPicker.goToPrevMonth()}}})],1)])},I=[],P=d.n(A,C,I);const x=P.exports;exports.default=x;
2
2
  //# sourceMappingURL=datepicker.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker.cjs","sources":["../../../components/datepicker/modules/month-year-picker.vue","../../../components/datepicker/modules/calendar.vue","../../../components/datepicker/datepicker.vue"],"sourcesContent":["<template>\n <dt-stack\n direction=\"row\"\n class=\"d-datepicker__month-year\"\n gap=\"300\"\n >\n <dt-stack\n as=\"nav\"\n direction=\"row\"\n gap=\"200\"\n class=\"d-datepicker__nav\"\n >\n <dt-tooltip\n :message=\"prevYearLabel\"\n placement=\"top\"\n :fallback-placements=\"['top-start', 'auto']\"\n >\n <template #anchor>\n <dt-button\n id=\"prevYearButton\"\n :ref=\"refNames[0]\"\n size=\"xs\"\n importance=\"clear\"\n kind=\"muted\"\n :circle=\"true\"\n class=\"d-datepicker__nav-btn\"\n type=\"button\"\n :aria-label=\"`${changeToLabel} ${prevYearLabel} ${selectYear - 1}`\"\n @click=\"changeYear(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevrons-left\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n <dt-tooltip\n :message=\"prevMonthLabel\"\n placement=\"top\"\n :fallback-placements=\"['top-end', 'auto']\"\n >\n <template #anchor>\n <dt-button\n id=\"prevMonthButton\"\n :ref=\"refNames[1]\"\n size=\"xs\"\n importance=\"clear\"\n kind=\"muted\"\n :circle=\"true\"\n class=\"d-datepicker__nav-btn\"\n type=\"button\"\n :aria-label=\"`${changeToLabel} ${prevMonthLabel} ${formattedMonth(selectMonth - 1)}`\"\n @click=\"changeMonth(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevron-left\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n </dt-stack>\n <div\n id=\"calendar-heading\"\n class=\"d-datepicker__month-year-title\"\n >\n {{ formattedMonth(selectMonth) }}\n\n {{ selectYear }}\n </div>\n <dt-stack\n as=\"nav\"\n direction=\"row\"\n gap=\"200\"\n class=\"d-datepicker__nav\"\n >\n <dt-tooltip\n :message=\"nextMonthLabel\"\n placement=\"top\"\n :fallback-placements=\"['top-start', 'auto']\"\n >\n <template #anchor>\n <dt-button\n id=\"nextMonthButton\"\n :ref=\"refNames[2]\"\n size=\"xs\"\n importance=\"clear\"\n :circle=\"true\"\n kind=\"muted\"\n class=\"d-datepicker__nav-btn\"\n type=\"button\"\n :aria-label=\"`${changeToLabel} ${nextMonthLabel} ${formattedMonth(selectMonth + 1)}`\"\n @click=\"changeMonth(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevron-right\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n <dt-tooltip\n :message=\"nextYearLabel\"\n placement=\"top\"\n :fallback-placements=\"['top-end', 'auto']\"\n >\n <template #anchor>\n <dt-button\n id=\"nextYearButton\"\n :ref=\"refNames[3]\"\n size=\"xs\"\n kind=\"muted\"\n :circle=\"true\"\n importance=\"clear\"\n class=\"d-datepicker__nav-btn\"\n type=\"button\"\n :aria-label=\"`${changeToLabel} ${nextYearLabel} ${selectYear + 1}`\"\n @click=\"changeYear(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevrons-right\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n </dt-stack>\n </dt-stack>\n</template>\n\n<script>\nimport { DtIconChevronLeft, DtIconChevronsLeft, DtIconChevronRight, DtIconChevronsRight } from '@dialpad/dialtone-icons/vue2';\nimport { getYear, addMonths, getMonth, set, subMonths, getDate } from 'date-fns';\nimport { getCalendarDays, formatMonth } from '../utils';\nimport { INTL_MONTH_FORMAT } from '../datepicker_constants';\nimport DtStack from '@/components/stack/stack.vue';\nimport DtTooltip from '@/components/tooltip/tooltip.vue';\nimport DtButton from '@/components/button/button.vue';\n\nexport default {\n name: 'DtDatepickerMonthYearPicker',\n\n components: {\n DtButton,\n DtTooltip,\n DtStack,\n DtIconChevronLeft,\n DtIconChevronsLeft,\n DtIconChevronRight,\n DtIconChevronsRight,\n },\n\n props: {\n locale: {\n type: String,\n required: true,\n },\n\n prevMonthLabel: {\n type: String,\n required: true,\n },\n\n nextMonthLabel: {\n type: String,\n required: true,\n },\n\n prevYearLabel: {\n type: String,\n required: true,\n },\n\n nextYearLabel: {\n type: String,\n required: true,\n },\n\n changeToLabel: {\n type: String,\n required: true,\n },\n\n selectedDate: {\n type: Date,\n required: true,\n },\n },\n\n emits: [\n /**\n * Will retrieve the calendar days of the given date\n *\n * @event calendar-days\n * @type {Array}\n */\n 'calendar-days',\n\n /**\n * Will focus first day in calendar\n *\n * @event focus-first-day\n */\n 'focus-first-day',\n\n /**\n * Will focus last day in calendar\n *\n * @event focus-last-day\n */\n 'focus-last-day',\n\n /**\n * Will close the datepicker\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n ],\n\n data () {\n return {\n selectMonth: getMonth(this.selectedDate),\n selectYear: getYear(this.selectedDate),\n highlightedDay: null,\n focusPicker: 0,\n focusRefs: [],\n refNames: ['prevYearButtonRef', 'prevMonthButtonRef', 'nextMonthButtonRef', 'nextYearButtonRef'],\n };\n },\n\n computed: {\n // Get days for the currently selected month and year and highlight the selected day\n calendarDays () {\n return getCalendarDays(this.selectMonth, this.selectYear, this.highlightedDay);\n },\n\n formattedMonth () {\n return (month) => formatMonth(month, INTL_MONTH_FORMAT, this.locale);\n },\n },\n\n watch: {\n selectMonth: {\n handler () {\n this.highlightDay();\n this.$emit('calendar-days', this.calendarDays);\n },\n\n immediate: true,\n },\n\n selectYear: {\n handler () {\n this.highlightDay();\n this.$emit('calendar-days', this.calendarDays);\n },\n\n immediate: true,\n },\n\n },\n\n mounted () {\n this.setButtonsRef();\n this.focusMonthYearPicker();\n },\n\n methods: {\n setButtonsRef () {\n this.focusRefs = this.refNames.map(refName => this.$refs[refName]);\n },\n\n focusMonthYearPicker () {\n this.focusPicker = 0;\n this.focusRefs[0].$el.focus();\n },\n\n handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (this.focusPicker === 0) {\n this.focusPicker = 3;\n this.focusRefs[this.focusPicker].$el.focus();\n } else {\n this.focusPicker--;\n this.focusRefs[this.focusPicker].$el.focus();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (this.focusPicker === 3) {\n this.focusPicker = 0;\n this.focusRefs[this.focusPicker].$el.focus();\n } else {\n this.focusPicker++;\n this.focusRefs[this.focusPicker].$el.focus();\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.$emit('focus-first-day');\n break;\n\n case 'Tab':\n event.preventDefault();\n this.$emit('focus-first-day');\n break;\n\n case 'Escape':\n this.$emit('close-datepicker');\n break;\n }\n },\n\n highlightDay () {\n const year = getYear(this.selectedDate);\n const month = getMonth(this.selectedDate);\n\n if (year !== this.selectYear || month !== this.selectMonth) {\n this.highlightedDay = null;\n } else {\n this.highlightedDay = getDate(this.selectedDate);\n }\n },\n\n changeMonth (value) {\n // Adjust year when changing from January to December or vice versa\n if ((this.selectMonth === 0 && value === -1) || (this.selectMonth === 11 && value === 1)) {\n this.selectYear += value;\n }\n\n // Calculate the new date by adding or subtracting months\n const initialDate = set(this.selectedDate, { month: this.selectMonth, year: this.selectYear });\n const newDate = value === 1 ? addMonths(initialDate, 1) : subMonths(initialDate, 1);\n\n // Update the selected month\n this.selectMonth = getMonth(newDate);\n },\n\n changeYear (value) {\n this.selectYear = this.selectYear + value;\n },\n\n goToNextMonth () {\n this.changeMonth(1);\n },\n\n goToPrevMonth () {\n this.changeMonth(-1);\n },\n },\n};\n</script>\n","<template>\n <table\n class=\"d-datepicker__calendar\"\n aria-labelledby=\"calendar-heading\"\n >\n <thead>\n <tr>\n <th\n v-for=\"day in weekDays\"\n :key=\"day\"\n scope=\"col\"\n class=\"d-datepicker__cell d-datepicker__cell--header\"\n >\n <span\n class=\"d-datepicker__weekday\"\n :title=\"day\"\n :aria-label=\"day\"\n > {{ day }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"(week, indexWeek) in calendarDays\"\n :key=\"indexWeek\"\n >\n <td\n v-for=\"(day, indexDays) in week.days\"\n :key=\"indexWeek + indexDays\"\n class=\"d-datepicker__cell\"\n role=\"listbox\"\n >\n <dt-button\n :ref=\"`buttonRef_${indexWeek}_${indexDays}`\"\n class=\"d-datepicker__day\"\n :circle=\"true\"\n size=\"sm\"\n importance=\"clear\"\n :disabled=\"!day.currentMonth\"\n :class=\"{\n 'd-datepicker__day--disabled': !day.currentMonth,\n 'd-datepicker__day--selected': selectedDay\n ? ((day.text === selectedDay) && day.currentMonth)\n : day.selected,\n }\"\n type=\"button\"\n :aria-selected=\"!!selectedDay ? ((day.text === selectedDay) && day.currentMonth) : day.selected\"\n :aria-label=\"dayAriaLabel(day)\"\n role=\"option\"\n @click=\"selectDay(day)\"\n @keydown=\"handleKeyDown($event)\"\n >\n {{ day.text }}\n </dt-button>\n </td>\n </tr>\n </tbody>\n </table>\n</template>\n\n<script>\nimport { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate } from '@/components/datepicker/utils';\nimport { WEEK_START, MONTH_FORMAT } from '@/components/datepicker/datepicker_constants.js';\nimport { format, getYear } from 'date-fns';\nimport DtButton from '@/components/button/button.vue';\n\nexport default {\n name: 'DtDatepickerCalendar',\n components: { DtButton },\n\n props: {\n calendarDays: {\n type: Array,\n required: true,\n },\n\n locale: {\n type: String,\n required: true,\n },\n\n selectDayLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Event fired when a date is selected\n *\n * @event select-date\n * @type {Date}\n */\n 'select-date',\n\n /**\n * Will focus the month and year picker\n *\n * @event focus-month-year-picker\n */\n 'focus-month-year-picker',\n\n /**\n * Will close the datepicker\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n ],\n\n data () {\n return {\n // local selectedDay to override the received by props calendarDays\n selectedDay: null,\n focusDay: 0,\n daysRef: [],\n };\n },\n\n computed: {\n weekDays () {\n return getWeekDayNames(this.locale, WEEK_START);\n },\n },\n\n watch: {\n calendarDays () {\n // on calendarDays update, reset our local variables\n this.focusDay = 0;\n this.selectedDay = null;\n\n this.daysRef = [];\n\n this.$nextTick(() => {\n this.daysRef = [];\n this.setDayRef();\n });\n },\n },\n\n methods: {\n dayAriaLabel (day) {\n return `${this.selectDayLabel} ${day.text} ${format(day.value, MONTH_FORMAT)} ${getYear(day.value)}`;\n },\n\n setDayRef (el, day) {\n this.calendarDays.forEach((week, weekIndex) => {\n week.days.forEach((day, dayIndex) => {\n const refKey = `buttonRef_${weekIndex}_${dayIndex}`;\n const dayButton = this.$refs[refKey];\n if (dayButton && day.currentMonth) {\n this.daysRef.push({ el: dayButton[0], day });\n }\n });\n });\n },\n\n handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n this.focusDay -= 7;\n try {\n this.daysRef[this.focusDay].el.$el.focus();\n } catch (error) {\n const prevFocusDate = calculatePrevFocusDate(this.daysRef[this.focusDay + 7].day.value);\n this.$emit('go-to-prev-month');\n this.$nextTick(() => {\n this.setDayRef();\n this.daysRef[prevFocusDate - 1].el.$el.focus();\n this.focusDay += prevFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.focusDay += 7;\n try {\n this.daysRef[this.focusDay].el.$el.focus();\n } catch (error) {\n const nextFocusDate = calculateNextFocusDate(this.daysRef[this.focusDay - 7].day.value);\n this.$emit('go-to-next-month');\n this.$nextTick(() => {\n this.setDayRef();\n this.daysRef[nextFocusDate - 1].el.$el.focus();\n this.focusDay += nextFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n if (this.focusDay > 0) {\n this.focusDay -= 1;\n this.daysRef[this.focusDay].el.$el.focus();\n } else {\n // if we are on month first day, jump to last day of prev month\n this.$emit('go-to-prev-month');\n this.$nextTick(() => {\n this.focusLastDay();\n });\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (this.focusDay < this.daysRef.length - 1) {\n this.focusDay += 1;\n this.daysRef[this.focusDay].el.$el.focus();\n } else {\n // if we are on month last day, jump to first day of next month\n this.$emit('go-to-next-month');\n this.$nextTick(() => {\n this.focusFirstDay();\n });\n }\n break;\n\n case 'Tab':\n event.preventDefault();\n this.$emit('focus-month-year-picker');\n break;\n\n case 'Escape':\n this.$emit('close-datepicker');\n break;\n }\n },\n\n focusFirstDay () {\n this.focusDay = 0;\n this.$nextTick(() => {\n this.daysRef[this.focusDay].el.$el.focus();\n });\n },\n\n focusLastDay () {\n this.$nextTick(() => {\n this.focusDay = this.daysRef.length - 1;\n this.daysRef[this.focusDay].el.$el.focus();\n });\n },\n\n selectDay (day) {\n if (!day.currentMonth) { return; }\n\n // local selectedDay is updated when a day is selected\n this.selectedDay = day.text;\n this.$emit('select-date', day.value);\n },\n },\n};\n</script>\n","<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-stack\n class=\"d-datepicker\"\n gap=\"400\"\n >\n <div class=\"d-datepicker__hd\">\n <month-year-picker\n ref=\"monthYearPicker\"\n :locale=\"locale\"\n :prev-month-label=\"prevMonthLabel\"\n :next-month-label=\"nextMonthLabel\"\n :prev-year-label=\"prevYearLabel\"\n :next-year-label=\"nextYearLabel\"\n :change-to-label=\"changeToLabel\"\n :selected-date=\"selectedDate\"\n @calendar-days=\"updateCalendarDays\"\n @focus-first-day=\"$refs.calendar.focusFirstDay()\"\n @focus-last-day=\"$refs.calendar.focusLastDay()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n />\n </div>\n <div class=\"d-datepicker__bd\">\n <calendar\n ref=\"calendar\"\n :locale=\"locale\"\n :calendar-days=\"calendarDays\"\n :select-day-label=\"selectDayLabel\"\n @select-date=\"$emit('selected-date', $event)\"\n @focus-month-year-picker=\"$refs.monthYearPicker.focusMonthYearPicker()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n @go-to-next-month=\"$refs.monthYearPicker.goToNextMonth()\"\n @go-to-prev-month=\"$refs.monthYearPicker.goToPrevMonth()\"\n />\n </div>\n </dt-stack>\n</template>\n\n<script>\nimport MonthYearPicker from './modules/month-year-picker.vue';\nimport Calendar from './modules/calendar.vue';\nimport DtStack from '@/components/stack/stack.vue';\nimport { warnIfUnmounted } from '@/common/utils';\n\nexport default {\n name: 'DtDatepicker',\n\n components: { DtStack, MonthYearPicker, Calendar },\n\n props: {\n /**\n * Label for the previous month button\n *\n * @type {String}\n * @example 'Previous month'\n */\n prevMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next month button\n *\n * @type {String}\n * @example 'Next month'\n */\n nextMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the previous year button\n *\n * @type {String}\n * @example 'Previous year'\n */\n prevYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next year button\n *\n * @type {String}\n * @example 'Next year'\n */\n nextYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the select day button\n *\n * @type {String}\n * @example 'Select day'\n */\n selectDayLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the change to button\n *\n * @type {String}\n * @example 'Change to'\n */\n changeToLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Locale for the calendar\n *\n * @type {String}\n */\n locale: {\n type: String,\n default: 'en-US',\n },\n\n /**\n * Selected date\n *\n * @type {Date}\n */\n selectedDate: {\n type: Date,\n default: () => (new Date()),\n },\n },\n\n emits: [\n /**\n * Event fired when a date is selected\n *\n * @event selected-date\n * @type {Date}\n */\n 'selected-date',\n\n /**\n * Event fired when user presses the esc key\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n ],\n\n data () {\n return {\n calendarDays: [],\n };\n },\n\n mounted () {\n warnIfUnmounted(this.$el, this.$options.name);\n },\n\n methods: {\n updateCalendarDays (days) {\n this.calendarDays = days;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtButton","DtTooltip","DtStack","DtIconChevronLeft","DtIconChevronsLeft","DtIconChevronRight","DtIconChevronsRight","getMonth","getYear","getCalendarDays","month","formatMonth","INTL_MONTH_FORMAT","refName","event","year","getDate","value","initialDate","set","newDate","addMonths","subMonths","getWeekDayNames","WEEK_START","day","format","MONTH_FORMAT","el","week","weekIndex","dayIndex","refKey","dayButton","prevFocusDate","calculatePrevFocusDate","nextFocusDate","calculateNextFocusDate","MonthYearPicker","Calendar","warnIfUnmounted","days"],"mappings":"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"}
1
+ {"version":3,"file":"datepicker.cjs","sources":["../../../components/datepicker/modules/month-year-picker.vue","../../../components/datepicker/modules/calendar.vue","../../../components/datepicker/datepicker.vue"],"sourcesContent":["<template>\n <dt-stack\n class=\"d-datepicker__month-year\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-stack\n as=\"nav\"\n class=\"d-datepicker__nav\"\n direction=\"row\"\n gap=\"200\"\n >\n <dt-tooltip\n :fallback-placements=\"['top-start', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_YEAR')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"prevYearButton\"\n :ref=\"refNames[0]\"\n :aria-label=\"previousYearAriaLabel\"\n circle\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeYear(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevrons-left\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n <dt-tooltip\n :fallback-placements=\"['top-start', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_MONTH')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"prevMonthButton\"\n :ref=\"refNames[1]\"\n :aria-label=\"previousMonthAriaLabel\"\n circle\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeMonth(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevron-left\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n </dt-stack>\n <div\n id=\"calendar-heading\"\n class=\"d-datepicker__month-year-title\"\n >\n {{ formattedMonth(selectMonth) }}\n\n {{ selectYear }}\n </div>\n <dt-stack\n as=\"nav\"\n class=\"d-datepicker__nav\"\n direction=\"row\"\n gap=\"200\"\n >\n <dt-tooltip\n :fallback-placements=\"['top-end', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_NEXT_MONTH')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"nextMonthButton\"\n :ref=\"refNames[2]\"\n :aria-label=\"nextMonthAriaLabel\"\n circle\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeMonth(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevron-right\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n <dt-tooltip\n :fallback-placements=\"['top-end', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_NEXT_YEAR')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"nextYearButton\"\n :ref=\"refNames[3]\"\n :aria-label=\"nextYearAriaLabel\"\n circle\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeYear(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevrons-right\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n </dt-stack>\n </dt-stack>\n</template>\n\n<script>\nimport {\n DtIconChevronLeft,\n DtIconChevronsLeft,\n DtIconChevronRight,\n DtIconChevronsRight,\n} from '@dialpad/dialtone-icons/vue2';\nimport { getYear, addMonths, getMonth, set, subMonths, getDate } from 'date-fns';\nimport { getCalendarDays, formatMonth } from '../utils';\nimport { INTL_MONTH_FORMAT } from '../datepicker_constants';\nimport { DtStack } from '@/components/stack';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtButton } from '@/components/button';\nimport { DtLocalizationMixin } from '@/common/mixins';\n\nexport default {\n name: 'DtDatepickerMonthYearPicker',\n\n components: {\n DtButton,\n DtTooltip,\n DtStack,\n DtIconChevronLeft,\n DtIconChevronsLeft,\n DtIconChevronRight,\n DtIconChevronsRight,\n },\n\n mixins: [DtLocalizationMixin],\n\n props: {\n selectedDate: {\n type: Date,\n required: true,\n },\n },\n\n emits: [\n /**\n * Will retrieve the calendar days of the given date\n *\n * @event calendar-days\n * @type {Array}\n */\n 'calendar-days',\n\n /**\n * Will focus first day in calendar\n *\n * @event focus-first-day\n */\n 'focus-first-day',\n\n /**\n * Will focus last day in calendar\n *\n * @event focus-last-day\n */\n 'focus-last-day',\n\n /**\n * Will close the datepicker\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n ],\n\n data () {\n return {\n selectMonth: getMonth(this.selectedDate),\n selectYear: getYear(this.selectedDate),\n highlightedDay: null,\n focusPicker: 0,\n focusRefs: [],\n refNames: ['prevYearButtonRef', 'prevMonthButtonRef', 'nextMonthButtonRef', 'nextYearButtonRef'],\n };\n },\n\n computed: {\n // Get days for the currently selected month and year and highlight the selected day\n calendarDays () {\n return getCalendarDays(this.selectMonth, this.selectYear, this.highlightedDay);\n },\n\n formattedMonth () {\n return (month) => formatMonth(month, INTL_MONTH_FORMAT, this.i18n.currentLocale);\n },\n\n previousYearAriaLabel () {\n return `${this.i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${this.i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_YEAR')} ${this.selectYear - 1}`;\n },\n\n previousMonthAriaLabel () {\n return `${this.i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${this.i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_MONTH')} ${this.formattedMonth(this.selectMonth - 1)}`;\n },\n\n nextYearAriaLabel () {\n return `${this.i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${this.i18n.$t('DIALTONE_DATEPICKER_NEXT_YEAR')} ${this.selectYear + 1}`;\n },\n\n nextMonthAriaLabel () {\n return `${this.i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${this.i18n.$t('DIALTONE_DATEPICKER_NEXT_MONTH')} ${this.formattedMonth(this.selectMonth + 1)}`;\n },\n },\n\n watch: {\n selectMonth: {\n handler () {\n this.highlightDay();\n this.$emit('calendar-days', this.calendarDays);\n },\n\n immediate: true,\n },\n\n selectYear: {\n handler () {\n this.highlightDay();\n this.$emit('calendar-days', this.calendarDays);\n },\n\n immediate: true,\n },\n\n },\n\n mounted () {\n this.setButtonsRef();\n this.focusMonthYearPicker();\n },\n\n methods: {\n setButtonsRef () {\n this.focusRefs = this.refNames.map(refName => this.$refs[refName]);\n },\n\n focusMonthYearPicker () {\n this.focusPicker = 0;\n this.focusRefs[0].$el.focus();\n },\n\n handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (this.focusPicker === 0) {\n this.focusPicker = 3;\n this.focusRefs[this.focusPicker].$el.focus();\n } else {\n this.focusPicker--;\n this.focusRefs[this.focusPicker].$el.focus();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (this.focusPicker === 3) {\n this.focusPicker = 0;\n this.focusRefs[this.focusPicker].$el.focus();\n } else {\n this.focusPicker++;\n this.focusRefs[this.focusPicker].$el.focus();\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.$emit('focus-first-day');\n break;\n\n case 'Tab':\n event.preventDefault();\n this.$emit('focus-first-day');\n break;\n\n case 'Escape':\n this.$emit('close-datepicker');\n break;\n }\n },\n\n highlightDay () {\n const year = getYear(this.selectedDate);\n const month = getMonth(this.selectedDate);\n\n if (year !== this.selectYear || month !== this.selectMonth) {\n this.highlightedDay = null;\n } else {\n this.highlightedDay = getDate(this.selectedDate);\n }\n },\n\n changeMonth (value) {\n // Adjust year when changing from January to December or vice versa\n if ((this.selectMonth === 0 && value === -1) || (this.selectMonth === 11 && value === 1)) {\n this.selectYear += value;\n }\n\n // Calculate the new date by adding or subtracting months\n const initialDate = set(this.selectedDate, { month: this.selectMonth, year: this.selectYear });\n const newDate = value === 1 ? addMonths(initialDate, 1) : subMonths(initialDate, 1);\n\n // Update the selected month\n this.selectMonth = getMonth(newDate);\n },\n\n changeYear (value) {\n this.selectYear = this.selectYear + value;\n },\n\n goToNextMonth () {\n this.changeMonth(1);\n },\n\n goToPrevMonth () {\n this.changeMonth(-1);\n },\n },\n};\n</script>\n","<template>\n <table\n class=\"d-datepicker__calendar\"\n aria-labelledby=\"calendar-heading\"\n >\n <thead>\n <tr>\n <th\n v-for=\"day in weekDays\"\n :key=\"day\"\n scope=\"col\"\n class=\"d-datepicker__cell d-datepicker__cell--header\"\n >\n <span\n class=\"d-datepicker__weekday\"\n :title=\"day\"\n :aria-label=\"day\"\n > {{ day }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"(week, indexWeek) in calendarDays\"\n :key=\"indexWeek\"\n >\n <td\n v-for=\"(day, indexDays) in week.days\"\n :key=\"indexWeek + indexDays\"\n class=\"d-datepicker__cell\"\n role=\"listbox\"\n >\n <dt-button\n :ref=\"`buttonRef_${indexWeek}_${indexDays}`\"\n class=\"d-datepicker__day\"\n :circle=\"true\"\n size=\"sm\"\n importance=\"clear\"\n :disabled=\"!day.currentMonth\"\n :class=\"{\n 'd-datepicker__day--disabled': !day.currentMonth,\n 'd-datepicker__day--selected': selectedDay\n ? ((day.text === selectedDay) && day.currentMonth)\n : day.selected,\n }\"\n type=\"button\"\n :aria-selected=\"!!selectedDay ? ((day.text === selectedDay) && day.currentMonth) : day.selected\"\n :aria-label=\"dayAriaLabel(day)\"\n role=\"option\"\n @click=\"selectDay(day)\"\n @keydown=\"handleKeyDown($event)\"\n >\n {{ day.text }}\n </dt-button>\n </td>\n </tr>\n </tbody>\n </table>\n</template>\n\n<script>\nimport { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate, formatDate } from '../utils';\nimport { WEEK_START, INTL_MONTH_FORMAT } from '../datepicker_constants.js';\nimport { DtButton } from '@/components/button';\nimport { DtLocalizationMixin } from '@/common/mixins';\n\nexport default {\n name: 'DtDatepickerCalendar',\n components: { DtButton },\n\n mixins: [DtLocalizationMixin],\n\n props: {\n calendarDays: {\n type: Array,\n required: true,\n },\n },\n\n emits: [\n /**\n * Event fired when a date is selected\n *\n * @event select-date\n * @type {Date}\n */\n 'select-date',\n\n /**\n * Will focus the month and year picker\n *\n * @event focus-month-year-picker\n */\n 'focus-month-year-picker',\n\n /**\n * Will close the datepicker\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n ],\n\n data () {\n return {\n // local selectedDay to override the received by props calendarDays\n selectedDay: null,\n focusDay: 0,\n daysRef: [],\n };\n },\n\n computed: {\n weekDays () {\n return getWeekDayNames(this.i18n.currentLocale, WEEK_START);\n },\n },\n\n watch: {\n calendarDays () {\n // on calendarDays update, reset our local variables\n this.focusDay = 0;\n this.selectedDay = null;\n\n this.daysRef = [];\n\n this.$nextTick(() => {\n this.daysRef = [];\n this.setDayRef();\n });\n },\n },\n\n methods: {\n dayAriaLabel (day) {\n return this.i18n.$t('DIALTONE_DATEPICKER_SELECT_DAY') + ` ${formatDate(day.value, INTL_MONTH_FORMAT, this.i18n.currentLocale)}`;\n },\n\n setDayRef (el, day) {\n this.calendarDays.forEach((week, weekIndex) => {\n week.days.forEach((day, dayIndex) => {\n const refKey = `buttonRef_${weekIndex}_${dayIndex}`;\n const dayButton = this.$refs[refKey];\n if (dayButton && day.currentMonth) {\n this.daysRef.push({ el: dayButton[0], day });\n }\n });\n });\n },\n\n handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n this.focusDay -= 7;\n try {\n this.daysRef[this.focusDay].el.$el.focus();\n } catch (error) {\n const prevFocusDate = calculatePrevFocusDate(this.daysRef[this.focusDay + 7].day.value);\n this.$emit('go-to-prev-month');\n this.$nextTick(() => {\n this.setDayRef();\n this.daysRef[prevFocusDate - 1].el.$el.focus();\n this.focusDay += prevFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.focusDay += 7;\n try {\n this.daysRef[this.focusDay].el.$el.focus();\n } catch (error) {\n const nextFocusDate = calculateNextFocusDate(this.daysRef[this.focusDay - 7].day.value);\n this.$emit('go-to-next-month');\n this.$nextTick(() => {\n this.setDayRef();\n this.daysRef[nextFocusDate - 1].el.$el.focus();\n this.focusDay += nextFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n if (this.focusDay > 0) {\n this.focusDay -= 1;\n this.daysRef[this.focusDay].el.$el.focus();\n } else {\n // if we are on month first day, jump to last day of prev month\n this.$emit('go-to-prev-month');\n this.$nextTick(() => {\n this.focusLastDay();\n });\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (this.focusDay < this.daysRef.length - 1) {\n this.focusDay += 1;\n this.daysRef[this.focusDay].el.$el.focus();\n } else {\n // if we are on month last day, jump to first day of next month\n this.$emit('go-to-next-month');\n this.$nextTick(() => {\n this.focusFirstDay();\n });\n }\n break;\n\n case 'Tab':\n event.preventDefault();\n this.$emit('focus-month-year-picker');\n break;\n\n case 'Escape':\n this.$emit('close-datepicker');\n break;\n }\n },\n\n focusFirstDay () {\n this.focusDay = 0;\n this.$nextTick(() => {\n this.daysRef[this.focusDay].el.$el.focus();\n });\n },\n\n focusLastDay () {\n this.$nextTick(() => {\n this.focusDay = this.daysRef.length - 1;\n this.daysRef[this.focusDay].el.$el.focus();\n });\n },\n\n selectDay (day) {\n if (!day.currentMonth) { return; }\n\n // local selectedDay is updated when a day is selected\n this.selectedDay = day.text;\n this.$emit('select-date', day.value);\n },\n },\n};\n</script>\n","<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-stack\n class=\"d-datepicker\"\n gap=\"400\"\n >\n <div class=\"d-datepicker__hd\">\n <month-year-picker\n ref=\"monthYearPicker\"\n :selected-date=\"selectedDate\"\n @calendar-days=\"updateCalendarDays\"\n @focus-first-day=\"$refs.calendar.focusFirstDay()\"\n @focus-last-day=\"$refs.calendar.focusLastDay()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n />\n </div>\n <div class=\"d-datepicker__bd\">\n <calendar\n ref=\"calendar\"\n :calendar-days=\"calendarDays\"\n @select-date=\"$emit('selected-date', $event)\"\n @focus-month-year-picker=\"$refs.monthYearPicker.focusMonthYearPicker()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n @go-to-next-month=\"$refs.monthYearPicker.goToNextMonth()\"\n @go-to-prev-month=\"$refs.monthYearPicker.goToPrevMonth()\"\n />\n </div>\n </dt-stack>\n</template>\n\n<script>\nimport MonthYearPicker from './modules/month-year-picker.vue';\nimport Calendar from './modules/calendar.vue';\nimport { DtStack } from '@/components/stack';\nimport { warnIfUnmounted } from '@/common/utils';\n\nexport default {\n name: 'DtDatepicker',\n\n components: { DtStack, MonthYearPicker, Calendar },\n\n props: {\n /**\n * Selected date\n *\n * @type {Date}\n */\n selectedDate: {\n type: Date,\n default: () => (new Date()),\n },\n },\n\n emits: [\n /**\n * Event fired when a date is selected\n *\n * @event selected-date\n * @type {Date}\n */\n 'selected-date',\n\n /**\n * Event fired when user presses the esc key\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n ],\n\n data () {\n return {\n calendarDays: [],\n };\n },\n\n mounted () {\n warnIfUnmounted(this.$el, this.$options.name);\n },\n\n methods: {\n updateCalendarDays (days) {\n this.calendarDays = days;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtButton","DtTooltip","DtStack","DtIconChevronLeft","DtIconChevronsLeft","DtIconChevronRight","DtIconChevronsRight","DtLocalizationMixin","getMonth","getYear","getCalendarDays","month","formatMonth","INTL_MONTH_FORMAT","refName","event","year","getDate","value","initialDate","set","newDate","addMonths","subMonths","getWeekDayNames","WEEK_START","day","formatDate","el","week","weekIndex","dayIndex","refKey","dayButton","prevFocusDate","calculatePrevFocusDate","nextFocusDate","calculateNextFocusDate","MonthYearPicker","Calendar","warnIfUnmounted","days"],"mappings":"6eAkJAA,EAAA,CACA,KAAA,8BAEA,WAAA,CACA,SAAAC,EAAA,QACA,UAAAC,EAAA,QACA,QAAAC,EAAA,QACA,kBAAAC,EAAA,kBACA,mBAAAC,EAAA,mBACA,mBAAAC,EAAA,mBACA,oBAAAC,EAAA,mBACA,EAEA,OAAA,CAAAC,EAAAA,OAAA,EAEA,MAAA,CACA,aAAA,CACA,KAAA,KACA,SAAA,EACA,CACA,EAEA,MAAA,CAOA,gBAOA,kBAOA,iBAOA,kBACA,EAEA,MAAA,CACA,MAAA,CACA,YAAAC,EAAAA,SAAA,KAAA,YAAA,EACA,WAAAC,EAAAA,QAAA,KAAA,YAAA,EACA,eAAA,KACA,YAAA,EACA,UAAA,CAAA,EACA,SAAA,CAAA,oBAAA,qBAAA,qBAAA,mBAAA,CACA,CACA,EAEA,SAAA,CAEA,cAAA,CACA,OAAAC,EAAAA,gBAAA,KAAA,YAAA,KAAA,WAAA,KAAA,cAAA,CACA,EAEA,gBAAA,CACA,OAAAC,GAAAC,EAAAA,YAAAD,EAAAE,EAAA,kBAAA,KAAA,KAAA,aAAA,CACA,EAEA,uBAAA,CACA,MAAA,GAAA,KAAA,KAAA,GAAA,+BAAA,CAAA,IAAA,KAAA,KAAA,GAAA,mCAAA,CAAA,IAAA,KAAA,WAAA,CAAA,EACA,EAEA,wBAAA,CACA,MAAA,GAAA,KAAA,KAAA,GAAA,+BAAA,CAAA,IAAA,KAAA,KAAA,GAAA,oCAAA,CAAA,IAAA,KAAA,eAAA,KAAA,YAAA,CAAA,CAAA,EACA,EAEA,mBAAA,CACA,MAAA,GAAA,KAAA,KAAA,GAAA,+BAAA,CAAA,IAAA,KAAA,KAAA,GAAA,+BAAA,CAAA,IAAA,KAAA,WAAA,CAAA,EACA,EAEA,oBAAA,CACA,MAAA,GAAA,KAAA,KAAA,GAAA,+BAAA,CAAA,IAAA,KAAA,KAAA,GAAA,gCAAA,CAAA,IAAA,KAAA,eAAA,KAAA,YAAA,CAAA,CAAA,EACA,CACA,EAEA,MAAA,CACA,YAAA,CACA,SAAA,CACA,KAAA,aAAA,EACA,KAAA,MAAA,gBAAA,KAAA,YAAA,CACA,EAEA,UAAA,EACA,EAEA,WAAA,CACA,SAAA,CACA,KAAA,aAAA,EACA,KAAA,MAAA,gBAAA,KAAA,YAAA,CACA,EAEA,UAAA,EACA,CAEA,EAEA,SAAA,CACA,KAAA,cAAA,EACA,KAAA,qBAAA,CACA,EAEA,QAAA,CACA,eAAA,CACA,KAAA,UAAA,KAAA,SAAA,IAAAC,GAAA,KAAA,MAAAA,CAAA,CAAA,CACA,EAEA,sBAAA,CACA,KAAA,YAAA,EACA,KAAA,UAAA,CAAA,EAAA,IAAA,MAAA,CACA,EAEA,cAAAC,EAAA,CACA,OAAAA,EAAA,IAAA,CACA,IAAA,YACAA,EAAA,eAAA,EACA,KAAA,cAAA,GACA,KAAA,YAAA,EACA,KAAA,UAAA,KAAA,WAAA,EAAA,IAAA,UAEA,KAAA,cACA,KAAA,UAAA,KAAA,WAAA,EAAA,IAAA,SAEA,MAEA,IAAA,aACAA,EAAA,eAAA,EACA,KAAA,cAAA,GACA,KAAA,YAAA,EACA,KAAA,UAAA,KAAA,WAAA,EAAA,IAAA,UAEA,KAAA,cACA,KAAA,UAAA,KAAA,WAAA,EAAA,IAAA,SAEA,MAEA,IAAA,YACAA,EAAA,eAAA,EACA,KAAA,MAAA,iBAAA,EACA,MAEA,IAAA,MACAA,EAAA,eAAA,EACA,KAAA,MAAA,iBAAA,EACA,MAEA,IAAA,SACA,KAAA,MAAA,kBAAA,EACA,KACA,CACA,EAEA,cAAA,CACA,MAAAC,EAAAP,EAAAA,QAAA,KAAA,YAAA,EACAE,EAAAH,EAAAA,SAAA,KAAA,YAAA,EAEAQ,IAAA,KAAA,YAAAL,IAAA,KAAA,YACA,KAAA,eAAA,KAEA,KAAA,eAAAM,EAAAA,QAAA,KAAA,YAAA,CAEA,EAEA,YAAAC,EAAA,EAEA,KAAA,cAAA,GAAAA,IAAA,IAAA,KAAA,cAAA,IAAAA,IAAA,KACA,KAAA,YAAAA,GAIA,MAAAC,EAAAC,EAAAA,IAAA,KAAA,aAAA,CAAA,MAAA,KAAA,YAAA,KAAA,KAAA,UAAA,CAAA,EACAC,EAAAH,IAAA,EAAAI,YAAAH,EAAA,CAAA,EAAAI,EAAA,UAAAJ,EAAA,CAAA,EAGA,KAAA,YAAAX,WAAAa,CAAA,CACA,EAEA,WAAAH,EAAA,CACA,KAAA,WAAA,KAAA,WAAAA,CACA,EAEA,eAAA,CACA,KAAA,YAAA,CAAA,CACA,EAEA,eAAA,CACA,KAAA,YAAA,EAAA,CACA,CACA,CACA,urFC5RAnB,EAAA,CACA,KAAA,uBACA,WAAA,CAAAC,SAAAA,EAAAA,OAAA,EAEA,OAAA,CAAAO,EAAAA,OAAA,EAEA,MAAA,CACA,aAAA,CACA,KAAA,MACA,SAAA,EACA,CACA,EAEA,MAAA,CAOA,cAOA,0BAOA,kBACA,EAEA,MAAA,CACA,MAAA,CAEA,YAAA,KACA,SAAA,EACA,QAAA,CAAA,CACA,CACA,EAEA,SAAA,CACA,UAAA,CACA,OAAAiB,EAAA,gBAAA,KAAA,KAAA,cAAAC,EAAA,UAAA,CACA,CACA,EAEA,MAAA,CACA,cAAA,CAEA,KAAA,SAAA,EACA,KAAA,YAAA,KAEA,KAAA,QAAA,GAEA,KAAA,UAAA,IAAA,CACA,KAAA,QAAA,GACA,KAAA,UAAA,CACA,CAAA,CACA,CACA,EAEA,QAAA,CACA,aAAAC,EAAA,CACA,OAAA,KAAA,KAAA,GAAA,gCAAA,EAAA,IAAAC,EAAAA,WAAAD,EAAA,MAAAb,EAAAA,kBAAA,KAAA,KAAA,aAAA,CAAA,EACA,EAEA,UAAAe,EAAAF,EAAA,CACA,KAAA,aAAA,QAAA,CAAAG,EAAAC,IAAA,CACAD,EAAA,KAAA,QAAA,CAAAH,EAAAK,IAAA,CACA,MAAAC,EAAA,aAAAF,CAAA,IAAAC,CAAA,GACAE,EAAA,KAAA,MAAAD,CAAA,EACAC,GAAAP,EAAA,cACA,KAAA,QAAA,KAAA,CAAA,GAAAO,EAAA,CAAA,EAAA,IAAAP,CAAA,CAAA,CAEA,CAAA,CACA,CAAA,CACA,EAEA,cAAAX,EAAA,CACA,OAAAA,EAAA,IAAA,CACA,IAAA,UACAA,EAAA,eAAA,EACA,KAAA,UAAA,EACA,GAAA,CACA,KAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA,OACA,MAAA,CACA,MAAAmB,EAAAC,EAAAA,uBAAA,KAAA,QAAA,KAAA,SAAA,CAAA,EAAA,IAAA,KAAA,EACA,KAAA,MAAA,kBAAA,EACA,KAAA,UAAA,IAAA,CACA,KAAA,UAAA,EACA,KAAA,QAAAD,EAAA,CAAA,EAAA,GAAA,IAAA,QACA,KAAA,UAAAA,EAAA,CACA,CAAA,CACA,CACA,MAEA,IAAA,YACAnB,EAAA,eAAA,EACA,KAAA,UAAA,EACA,GAAA,CACA,KAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA,OACA,MAAA,CACA,MAAAqB,EAAAC,EAAAA,uBAAA,KAAA,QAAA,KAAA,SAAA,CAAA,EAAA,IAAA,KAAA,EACA,KAAA,MAAA,kBAAA,EACA,KAAA,UAAA,IAAA,CACA,KAAA,UAAA,EACA,KAAA,QAAAD,EAAA,CAAA,EAAA,GAAA,IAAA,QACA,KAAA,UAAAA,EAAA,CACA,CAAA,CACA,CACA,MAEA,IAAA,YACArB,EAAA,eAAA,EACA,KAAA,SAAA,GACA,KAAA,UAAA,EACA,KAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA,UAGA,KAAA,MAAA,kBAAA,EACA,KAAA,UAAA,IAAA,CACA,KAAA,aAAA,CACA,CAAA,GAEA,MAEA,IAAA,aACAA,EAAA,eAAA,EACA,KAAA,SAAA,KAAA,QAAA,OAAA,GACA,KAAA,UAAA,EACA,KAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA,UAGA,KAAA,MAAA,kBAAA,EACA,KAAA,UAAA,IAAA,CACA,KAAA,cAAA,CACA,CAAA,GAEA,MAEA,IAAA,MACAA,EAAA,eAAA,EACA,KAAA,MAAA,yBAAA,EACA,MAEA,IAAA,SACA,KAAA,MAAA,kBAAA,EACA,KACA,CACA,EAEA,eAAA,CACA,KAAA,SAAA,EACA,KAAA,UAAA,IAAA,CACA,KAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA,OACA,CAAA,CACA,EAEA,cAAA,CACA,KAAA,UAAA,IAAA,CACA,KAAA,SAAA,KAAA,QAAA,OAAA,EACA,KAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA,OACA,CAAA,CACA,EAEA,UAAAW,EAAA,CACAA,EAAA,eAGA,KAAA,YAAAA,EAAA,KACA,KAAA,MAAA,cAAAA,EAAA,KAAA,EACA,CACA,CACA,4qCCjNA3B,EAAA,CACA,KAAA,eAEA,WAAA,CAAAG,QAAAA,EAAAA,QAAA,gBAAAoC,EAAA,SAAAC,CAAA,EAEA,MAAA,CAMA,aAAA,CACA,KAAA,KACA,QAAA,IAAA,IAAA,IACA,CACA,EAEA,MAAA,CAOA,gBAOA,kBACA,EAEA,MAAA,CACA,MAAA,CACA,aAAA,CAAA,CACA,CACA,EAEA,SAAA,CACAC,EAAA,gBAAA,KAAA,IAAA,KAAA,SAAA,IAAA,CACA,EAEA,QAAA,CACA,mBAAAC,EAAA,CACA,KAAA,aAAAA,CACA,CACA,CACA"}