@dialpad/dialtone 9.126.5 → 9.127.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 (449) hide show
  1. package/README.md +1 -1
  2. package/dist/tokens/doc.json +29906 -29906
  3. package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs +1 -1
  4. package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs.map +1 -1
  5. package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js +7 -7
  6. package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js.map +1 -1
  7. package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.cjs +1 -1
  8. package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.cjs.map +1 -1
  9. package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.js +5 -5
  10. package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.js.map +1 -1
  11. package/dist/vue2/lib/datepicker/datepicker.cjs +1 -1
  12. package/dist/vue2/lib/datepicker/datepicker.cjs.map +1 -1
  13. package/dist/vue2/lib/datepicker/datepicker.js +10 -10
  14. package/dist/vue2/lib/datepicker/datepicker.js.map +1 -1
  15. package/dist/vue2/lib/dropdown/dropdown.cjs +1 -1
  16. package/dist/vue2/lib/dropdown/dropdown.cjs.map +1 -1
  17. package/dist/vue2/lib/dropdown/dropdown.js +24 -26
  18. package/dist/vue2/lib/dropdown/dropdown.js.map +1 -1
  19. package/dist/vue2/lib/emoji-picker/emoji-picker.cjs.map +1 -1
  20. package/dist/vue2/lib/emoji-picker/emoji-picker.js +1 -0
  21. package/dist/vue2/lib/emoji-picker/emoji-picker.js.map +1 -1
  22. package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs +3 -3
  23. package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
  24. package/dist/vue2/lib/rich-text-editor/rich-text-editor.js +65 -65
  25. package/dist/vue2/lib/rich-text-editor/rich-text-editor.js.map +1 -1
  26. package/dist/vue2/lib/toast/toast.cjs.map +1 -1
  27. package/dist/vue2/lib/toast/toast.js.map +1 -1
  28. package/dist/vue2/localization/de-DE.cjs +1 -13
  29. package/dist/vue2/localization/de-DE.cjs.map +1 -1
  30. package/dist/vue2/localization/de-DE.js +1 -13
  31. package/dist/vue2/localization/de-DE.js.map +1 -1
  32. package/dist/vue2/localization/es-LA.cjs +1 -13
  33. package/dist/vue2/localization/es-LA.cjs.map +1 -1
  34. package/dist/vue2/localization/es-LA.js +1 -13
  35. package/dist/vue2/localization/es-LA.js.map +1 -1
  36. package/dist/vue2/localization/fr-FR.cjs +1 -13
  37. package/dist/vue2/localization/fr-FR.cjs.map +1 -1
  38. package/dist/vue2/localization/fr-FR.js +1 -13
  39. package/dist/vue2/localization/fr-FR.js.map +1 -1
  40. package/dist/vue2/localization/it-IT.cjs +1 -13
  41. package/dist/vue2/localization/it-IT.cjs.map +1 -1
  42. package/dist/vue2/localization/it-IT.js +1 -13
  43. package/dist/vue2/localization/it-IT.js.map +1 -1
  44. package/dist/vue2/localization/ja-JP.cjs +1 -8
  45. package/dist/vue2/localization/ja-JP.cjs.map +1 -1
  46. package/dist/vue2/localization/ja-JP.js +1 -8
  47. package/dist/vue2/localization/ja-JP.js.map +1 -1
  48. package/dist/vue2/localization/nl-NL.cjs +1 -13
  49. package/dist/vue2/localization/nl-NL.cjs.map +1 -1
  50. package/dist/vue2/localization/nl-NL.js +1 -13
  51. package/dist/vue2/localization/nl-NL.js.map +1 -1
  52. package/dist/vue2/localization/pt-BR.cjs +1 -13
  53. package/dist/vue2/localization/pt-BR.cjs.map +1 -1
  54. package/dist/vue2/localization/pt-BR.js +1 -13
  55. package/dist/vue2/localization/pt-BR.js.map +1 -1
  56. package/dist/vue2/localization/ru-RU.cjs +1 -23
  57. package/dist/vue2/localization/ru-RU.cjs.map +1 -1
  58. package/dist/vue2/localization/ru-RU.js +1 -23
  59. package/dist/vue2/localization/ru-RU.js.map +1 -1
  60. package/dist/vue2/localization/zh-CN.cjs +1 -8
  61. package/dist/vue2/localization/zh-CN.cjs.map +1 -1
  62. package/dist/vue2/localization/zh-CN.js +1 -8
  63. package/dist/vue2/localization/zh-CN.js.map +1 -1
  64. package/dist/vue2/types/components/dropdown/dropdown.vue.d.ts.map +1 -1
  65. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  66. package/dist/vue2/types/components/toast/layouts/toast_layout_alternate.vue.d.ts.map +1 -1
  67. package/dist/vue2/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +1 -1
  68. package/dist/vue2/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts.map +1 -1
  69. package/dist/vue2/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +1 -1
  70. package/dist/vue2/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts.map +1 -1
  71. package/dist/vue3/common/mixins/index.cjs +1 -1
  72. package/dist/vue3/common/mixins/index.js +8 -10
  73. package/dist/vue3/common/mixins/index.js.map +1 -1
  74. package/dist/vue3/common/utils/index.cjs +1 -1
  75. package/dist/vue3/common/utils/index.cjs.map +1 -1
  76. package/dist/vue3/common/utils/index.js +42 -38
  77. package/dist/vue3/common/utils/index.js.map +1 -1
  78. package/dist/vue3/component-documentation.json +1 -1
  79. package/dist/vue3/dialtone-vue.cjs +1 -1
  80. package/dist/vue3/dialtone-vue.js +298 -299
  81. package/dist/vue3/lib/attachment-carousel/attachment-carousel.cjs +1 -1
  82. package/dist/vue3/lib/attachment-carousel/attachment-carousel.cjs.map +1 -1
  83. package/dist/vue3/lib/attachment-carousel/attachment-carousel.js +86 -110
  84. package/dist/vue3/lib/attachment-carousel/attachment-carousel.js.map +1 -1
  85. package/dist/vue3/lib/banner/banner.cjs +2 -2
  86. package/dist/vue3/lib/banner/banner.cjs.map +1 -1
  87. package/dist/vue3/lib/banner/banner.js +27 -38
  88. package/dist/vue3/lib/banner/banner.js.map +1 -1
  89. package/dist/vue3/lib/breadcrumbs/breadcrumbs.cjs +1 -1
  90. package/dist/vue3/lib/breadcrumbs/breadcrumbs.cjs.map +1 -1
  91. package/dist/vue3/lib/breadcrumbs/breadcrumbs.js +20 -18
  92. package/dist/vue3/lib/breadcrumbs/breadcrumbs.js.map +1 -1
  93. package/dist/vue3/lib/button/button.cjs +1 -1
  94. package/dist/vue3/lib/button/button.cjs.map +1 -1
  95. package/dist/vue3/lib/button/button.js +26 -24
  96. package/dist/vue3/lib/button/button.js.map +1 -1
  97. package/dist/vue3/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs +1 -1
  98. package/dist/vue3/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs.map +1 -1
  99. package/dist/vue3/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js +36 -41
  100. package/dist/vue3/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js.map +1 -1
  101. package/dist/vue3/lib/callbar-button-with-popover/callbar-button-with-popover.cjs +1 -1
  102. package/dist/vue3/lib/callbar-button-with-popover/callbar-button-with-popover.cjs.map +1 -1
  103. package/dist/vue3/lib/callbar-button-with-popover/callbar-button-with-popover.js +35 -37
  104. package/dist/vue3/lib/callbar-button-with-popover/callbar-button-with-popover.js.map +1 -1
  105. package/dist/vue3/lib/chip/chip.cjs +1 -1
  106. package/dist/vue3/lib/chip/chip.cjs.map +1 -1
  107. package/dist/vue3/lib/chip/chip.js +54 -57
  108. package/dist/vue3/lib/chip/chip.js.map +1 -1
  109. package/dist/vue3/lib/combobox/combobox-constants.cjs +1 -1
  110. package/dist/vue3/lib/combobox/combobox-constants.cjs.map +1 -1
  111. package/dist/vue3/lib/combobox/combobox-constants.js +2 -2
  112. package/dist/vue3/lib/combobox/combobox-constants.js.map +1 -1
  113. package/dist/vue3/lib/combobox/combobox-empty-list.cjs.map +1 -1
  114. package/dist/vue3/lib/combobox/combobox-empty-list.js.map +1 -1
  115. package/dist/vue3/lib/combobox/combobox-loading-list.cjs.map +1 -1
  116. package/dist/vue3/lib/combobox/combobox-loading-list.js.map +1 -1
  117. package/dist/vue3/lib/combobox/combobox.cjs +2 -2
  118. package/dist/vue3/lib/combobox/combobox.cjs.map +1 -1
  119. package/dist/vue3/lib/combobox/combobox.js +20 -20
  120. package/dist/vue3/lib/combobox/combobox.js.map +1 -1
  121. package/dist/vue3/lib/combobox/index.cjs +1 -1
  122. package/dist/vue3/lib/combobox/index.js +3 -3
  123. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.cjs +1 -1
  124. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.cjs.map +1 -1
  125. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.js +119 -124
  126. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
  127. package/dist/vue3/lib/combobox-with-popover/combobox-with-popover.cjs +1 -1
  128. package/dist/vue3/lib/combobox-with-popover/combobox-with-popover.cjs.map +1 -1
  129. package/dist/vue3/lib/combobox-with-popover/combobox-with-popover.js +76 -80
  130. package/dist/vue3/lib/combobox-with-popover/combobox-with-popover.js.map +1 -1
  131. package/dist/vue3/lib/contact-centers-row/contact-centers-row.cjs +1 -1
  132. package/dist/vue3/lib/contact-centers-row/contact-centers-row.cjs.map +1 -1
  133. package/dist/vue3/lib/contact-centers-row/contact-centers-row.js +68 -63
  134. package/dist/vue3/lib/contact-centers-row/contact-centers-row.js.map +1 -1
  135. package/dist/vue3/lib/contact-row/contact-row.cjs +1 -1
  136. package/dist/vue3/lib/contact-row/contact-row.cjs.map +1 -1
  137. package/dist/vue3/lib/contact-row/contact-row.js +32 -48
  138. package/dist/vue3/lib/contact-row/contact-row.js.map +1 -1
  139. package/dist/vue3/lib/datepicker/datepicker-constants.cjs +1 -1
  140. package/dist/vue3/lib/datepicker/datepicker-constants.cjs.map +1 -1
  141. package/dist/vue3/lib/datepicker/datepicker-constants.js +2 -3
  142. package/dist/vue3/lib/datepicker/datepicker-constants.js.map +1 -1
  143. package/dist/vue3/lib/datepicker/datepicker.cjs +1 -1
  144. package/dist/vue3/lib/datepicker/datepicker.cjs.map +1 -1
  145. package/dist/vue3/lib/datepicker/datepicker.js +264 -349
  146. package/dist/vue3/lib/datepicker/datepicker.js.map +1 -1
  147. package/dist/vue3/lib/datepicker/formatUtils.cjs +1 -1
  148. package/dist/vue3/lib/datepicker/formatUtils.cjs.map +1 -1
  149. package/dist/vue3/lib/datepicker/formatUtils.js +21 -20
  150. package/dist/vue3/lib/datepicker/formatUtils.js.map +1 -1
  151. package/dist/vue3/lib/datepicker/utils.cjs +1 -1
  152. package/dist/vue3/lib/datepicker/utils.cjs.map +1 -1
  153. package/dist/vue3/lib/datepicker/utils.js +12 -11
  154. package/dist/vue3/lib/datepicker/utils.js.map +1 -1
  155. package/dist/vue3/lib/description-list/description-list.cjs +1 -1
  156. package/dist/vue3/lib/description-list/description-list.cjs.map +1 -1
  157. package/dist/vue3/lib/description-list/description-list.js +10 -10
  158. package/dist/vue3/lib/description-list/description-list.js.map +1 -1
  159. package/dist/vue3/lib/dropdown/dropdown.cjs +1 -1
  160. package/dist/vue3/lib/dropdown/dropdown.cjs.map +1 -1
  161. package/dist/vue3/lib/dropdown/dropdown.js +36 -46
  162. package/dist/vue3/lib/dropdown/dropdown.js.map +1 -1
  163. package/dist/vue3/lib/editor/editor.cjs +1 -1
  164. package/dist/vue3/lib/editor/editor.cjs.map +1 -1
  165. package/dist/vue3/lib/editor/editor.js +169 -186
  166. package/dist/vue3/lib/editor/editor.js.map +1 -1
  167. package/dist/vue3/lib/editor/index.cjs +1 -1
  168. package/dist/vue3/lib/editor/index.js +2 -2
  169. package/dist/vue3/lib/emoji-picker/emoji-picker-constants.cjs +1 -1
  170. package/dist/vue3/lib/emoji-picker/emoji-picker-constants.cjs.map +1 -1
  171. package/dist/vue3/lib/emoji-picker/emoji-picker-constants.js +7 -20
  172. package/dist/vue3/lib/emoji-picker/emoji-picker-constants.js.map +1 -1
  173. package/dist/vue3/lib/emoji-picker/emoji-picker.cjs +1 -1
  174. package/dist/vue3/lib/emoji-picker/emoji-picker.cjs.map +1 -1
  175. package/dist/vue3/lib/emoji-picker/emoji-picker.js +419 -477
  176. package/dist/vue3/lib/emoji-picker/emoji-picker.js.map +1 -1
  177. package/dist/vue3/lib/emoji-picker/index.cjs +1 -1
  178. package/dist/vue3/lib/emoji-picker/index.js +3 -4
  179. package/dist/vue3/lib/emoji-row/emoji-row-constants.cjs +1 -1
  180. package/dist/vue3/lib/emoji-row/emoji-row-constants.cjs.map +1 -1
  181. package/dist/vue3/lib/emoji-row/emoji-row-constants.js +6 -7
  182. package/dist/vue3/lib/emoji-row/emoji-row-constants.js.map +1 -1
  183. package/dist/vue3/lib/emoji-row/emoji-row.cjs +1 -1
  184. package/dist/vue3/lib/emoji-row/emoji-row.cjs.map +1 -1
  185. package/dist/vue3/lib/emoji-row/emoji-row.js +53 -43
  186. package/dist/vue3/lib/emoji-row/emoji-row.js.map +1 -1
  187. package/dist/vue3/lib/feed-item-pill/feed-item-pill.cjs +1 -1
  188. package/dist/vue3/lib/feed-item-pill/feed-item-pill.cjs.map +1 -1
  189. package/dist/vue3/lib/feed-item-pill/feed-item-pill.js +52 -53
  190. package/dist/vue3/lib/feed-item-pill/feed-item-pill.js.map +1 -1
  191. package/dist/vue3/lib/general-row/general-row.cjs +1 -1
  192. package/dist/vue3/lib/general-row/general-row.cjs.map +1 -1
  193. package/dist/vue3/lib/general-row/general-row.js +133 -118
  194. package/dist/vue3/lib/general-row/general-row.js.map +1 -1
  195. package/dist/vue3/lib/group-row/group-row.cjs +1 -1
  196. package/dist/vue3/lib/group-row/group-row.cjs.map +1 -1
  197. package/dist/vue3/lib/group-row/group-row.js +53 -39
  198. package/dist/vue3/lib/group-row/group-row.js.map +1 -1
  199. package/dist/vue3/lib/icon/icon-constants.cjs.map +1 -1
  200. package/dist/vue3/lib/icon/icon-constants.js.map +1 -1
  201. package/dist/vue3/lib/icon/icon.cjs +1 -1
  202. package/dist/vue3/lib/icon/icon.cjs.map +1 -1
  203. package/dist/vue3/lib/icon/icon.js +15 -11
  204. package/dist/vue3/lib/icon/icon.js.map +1 -1
  205. package/dist/vue3/lib/image-viewer/image-viewer.cjs +1 -1
  206. package/dist/vue3/lib/image-viewer/image-viewer.cjs.map +1 -1
  207. package/dist/vue3/lib/image-viewer/image-viewer.js +51 -47
  208. package/dist/vue3/lib/image-viewer/image-viewer.js.map +1 -1
  209. package/dist/vue3/lib/ivr-node/ivr-node-constants.cjs +1 -1
  210. package/dist/vue3/lib/ivr-node/ivr-node-constants.cjs.map +1 -1
  211. package/dist/vue3/lib/ivr-node/ivr-node-constants.js +24 -24
  212. package/dist/vue3/lib/ivr-node/ivr-node-constants.js.map +1 -1
  213. package/dist/vue3/lib/ivr-node/ivr-node.cjs +1 -1
  214. package/dist/vue3/lib/ivr-node/ivr-node.cjs.map +1 -1
  215. package/dist/vue3/lib/ivr-node/ivr-node.js +80 -76
  216. package/dist/vue3/lib/ivr-node/ivr-node.js.map +1 -1
  217. package/dist/vue3/lib/message-input/message-input-link.cjs +1 -1
  218. package/dist/vue3/lib/message-input/message-input-link.cjs.map +1 -1
  219. package/dist/vue3/lib/message-input/message-input-link.js +100 -77
  220. package/dist/vue3/lib/message-input/message-input-link.js.map +1 -1
  221. package/dist/vue3/lib/message-input/message-input-topbar.cjs +1 -1
  222. package/dist/vue3/lib/message-input/message-input-topbar.cjs.map +1 -1
  223. package/dist/vue3/lib/message-input/message-input-topbar.js +126 -94
  224. package/dist/vue3/lib/message-input/message-input-topbar.js.map +1 -1
  225. package/dist/vue3/lib/message-input/message-input.cjs +1 -1
  226. package/dist/vue3/lib/message-input/message-input.cjs.map +1 -1
  227. package/dist/vue3/lib/message-input/message-input.js +272 -296
  228. package/dist/vue3/lib/message-input/message-input.js.map +1 -1
  229. package/dist/vue3/lib/modal/modal.cjs +1 -2
  230. package/dist/vue3/lib/modal/modal.cjs.map +1 -1
  231. package/dist/vue3/lib/modal/modal.js +64 -79
  232. package/dist/vue3/lib/modal/modal.js.map +1 -1
  233. package/dist/vue3/lib/notice/notice-action.cjs +1 -1
  234. package/dist/vue3/lib/notice/notice-action.cjs.map +1 -1
  235. package/dist/vue3/lib/notice/notice-action.js +38 -39
  236. package/dist/vue3/lib/notice/notice-action.js.map +1 -1
  237. package/dist/vue3/lib/notice/notice.cjs +1 -1
  238. package/dist/vue3/lib/notice/notice.cjs.map +1 -1
  239. package/dist/vue3/lib/notice/notice.js +37 -49
  240. package/dist/vue3/lib/notice/notice.js.map +1 -1
  241. package/dist/vue3/lib/pagination/pagination.cjs +1 -1
  242. package/dist/vue3/lib/pagination/pagination.cjs.map +1 -1
  243. package/dist/vue3/lib/pagination/pagination.js +72 -81
  244. package/dist/vue3/lib/pagination/pagination.js.map +1 -1
  245. package/dist/vue3/lib/popover/popover-header-footer.cjs +1 -1
  246. package/dist/vue3/lib/popover/popover-header-footer.cjs.map +1 -1
  247. package/dist/vue3/lib/popover/popover-header-footer.js +44 -45
  248. package/dist/vue3/lib/popover/popover-header-footer.js.map +1 -1
  249. package/dist/vue3/lib/popover/popover.cjs +1 -1
  250. package/dist/vue3/lib/popover/popover.cjs.map +1 -1
  251. package/dist/vue3/lib/popover/popover.js +26 -37
  252. package/dist/vue3/lib/popover/popover.js.map +1 -1
  253. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs +4 -4
  254. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
  255. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js +187 -185
  256. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js.map +1 -1
  257. package/dist/vue3/lib/settings-menu-button/settings-menu-button.cjs.map +1 -1
  258. package/dist/vue3/lib/settings-menu-button/settings-menu-button.js.map +1 -1
  259. package/dist/vue3/lib/time-pill/time-pill.cjs.map +1 -1
  260. package/dist/vue3/lib/time-pill/time-pill.js.map +1 -1
  261. package/dist/vue3/lib/toast/toast.cjs +1 -1
  262. package/dist/vue3/lib/toast/toast.cjs.map +1 -1
  263. package/dist/vue3/lib/toast/toast.js +83 -127
  264. package/dist/vue3/lib/toast/toast.js.map +1 -1
  265. package/dist/vue3/lib/unread-pill/unread-pill.cjs +1 -1
  266. package/dist/vue3/lib/unread-pill/unread-pill.cjs.map +1 -1
  267. package/dist/vue3/lib/unread-pill/unread-pill.js +25 -14
  268. package/dist/vue3/lib/unread-pill/unread-pill.js.map +1 -1
  269. package/dist/vue3/localization/de-DE.cjs +157 -0
  270. package/dist/vue3/localization/de-DE.cjs.map +1 -0
  271. package/dist/vue3/localization/de-DE.js +160 -0
  272. package/dist/vue3/localization/de-DE.js.map +1 -0
  273. package/dist/vue3/localization/en-US.cjs +175 -0
  274. package/dist/vue3/localization/en-US.cjs.map +1 -0
  275. package/dist/vue3/localization/en-US.js +178 -0
  276. package/dist/vue3/localization/en-US.js.map +1 -0
  277. package/dist/vue3/localization/es-LA.cjs +157 -0
  278. package/dist/vue3/localization/es-LA.cjs.map +1 -0
  279. package/dist/vue3/localization/es-LA.js +160 -0
  280. package/dist/vue3/localization/es-LA.js.map +1 -0
  281. package/dist/vue3/localization/fr-FR.cjs +157 -0
  282. package/dist/vue3/localization/fr-FR.cjs.map +1 -0
  283. package/dist/vue3/localization/fr-FR.js +160 -0
  284. package/dist/vue3/localization/fr-FR.js.map +1 -0
  285. package/dist/vue3/localization/index.cjs +2 -0
  286. package/dist/vue3/localization/index.cjs.map +1 -0
  287. package/dist/vue3/localization/index.js +82 -0
  288. package/dist/vue3/localization/index.js.map +1 -0
  289. package/dist/vue3/localization/it-IT.cjs +157 -0
  290. package/dist/vue3/localization/it-IT.cjs.map +1 -0
  291. package/dist/vue3/localization/it-IT.js +160 -0
  292. package/dist/vue3/localization/it-IT.js.map +1 -0
  293. package/dist/vue3/localization/ja-JP.cjs +157 -0
  294. package/dist/vue3/localization/ja-JP.cjs.map +1 -0
  295. package/dist/vue3/localization/ja-JP.js +160 -0
  296. package/dist/vue3/localization/ja-JP.js.map +1 -0
  297. package/dist/vue3/localization/nl-NL.cjs +157 -0
  298. package/dist/vue3/localization/nl-NL.cjs.map +1 -0
  299. package/dist/vue3/localization/nl-NL.js +160 -0
  300. package/dist/vue3/localization/nl-NL.js.map +1 -0
  301. package/dist/vue3/localization/pt-BR.cjs +157 -0
  302. package/dist/vue3/localization/pt-BR.cjs.map +1 -0
  303. package/dist/vue3/localization/pt-BR.js +160 -0
  304. package/dist/vue3/localization/pt-BR.js.map +1 -0
  305. package/dist/vue3/localization/ru-RU.cjs +157 -0
  306. package/dist/vue3/localization/ru-RU.cjs.map +1 -0
  307. package/dist/vue3/localization/ru-RU.js +160 -0
  308. package/dist/vue3/localization/ru-RU.js.map +1 -0
  309. package/dist/vue3/localization/zh-CN.cjs +157 -0
  310. package/dist/vue3/localization/zh-CN.cjs.map +1 -0
  311. package/dist/vue3/localization/zh-CN.js +160 -0
  312. package/dist/vue3/localization/zh-CN.js.map +1 -0
  313. package/dist/vue3/shared/sr_only_close_button.cjs +1 -1
  314. package/dist/vue3/shared/sr_only_close_button.cjs.map +1 -1
  315. package/dist/vue3/shared/sr_only_close_button.js +27 -25
  316. package/dist/vue3/shared/sr_only_close_button.js.map +1 -1
  317. package/dist/vue3/types/common/mixins/index.d.ts +0 -1
  318. package/dist/vue3/types/common/sr_only_close_button.vue.d.ts +8 -15
  319. package/dist/vue3/types/common/sr_only_close_button.vue.d.ts.map +1 -1
  320. package/dist/vue3/types/common/utils/index.d.ts +1 -0
  321. package/dist/vue3/types/common/utils/index.d.ts.map +1 -1
  322. package/dist/vue3/types/components/banner/banner.vue.d.ts +0 -33
  323. package/dist/vue3/types/components/banner/banner.vue.d.ts.map +1 -1
  324. package/dist/vue3/types/components/breadcrumbs/breadcrumbs.vue.d.ts +2 -0
  325. package/dist/vue3/types/components/breadcrumbs/breadcrumbs.vue.d.ts.map +1 -1
  326. package/dist/vue3/types/components/button/button.vue.d.ts +2 -0
  327. package/dist/vue3/types/components/button/button.vue.d.ts.map +1 -1
  328. package/dist/vue3/types/components/chip/chip.vue.d.ts +3 -15
  329. package/dist/vue3/types/components/chip/chip.vue.d.ts.map +1 -1
  330. package/dist/vue3/types/components/combobox/combobox.vue.d.ts.map +1 -1
  331. package/dist/vue3/types/components/combobox/combobox_constants.d.ts +2 -2
  332. package/dist/vue3/types/components/combobox/index.d.ts +1 -1
  333. package/dist/vue3/types/components/datepicker/composables/useCalendar.d.ts.map +1 -1
  334. package/dist/vue3/types/components/datepicker/composables/useMonthYearPicker.d.ts +5 -1
  335. package/dist/vue3/types/components/datepicker/composables/useMonthYearPicker.d.ts.map +1 -1
  336. package/dist/vue3/types/components/datepicker/datepicker.vue.d.ts.map +1 -1
  337. package/dist/vue3/types/components/datepicker/datepicker_constants.d.ts +0 -1
  338. package/dist/vue3/types/components/datepicker/datepicker_constants.d.ts.map +1 -1
  339. package/dist/vue3/types/components/datepicker/formatUtils.d.ts +5 -5
  340. package/dist/vue3/types/components/datepicker/formatUtils.d.ts.map +1 -1
  341. package/dist/vue3/types/components/datepicker/modules/calendar.vue.d.ts +0 -4
  342. package/dist/vue3/types/components/datepicker/modules/calendar.vue.d.ts.map +1 -1
  343. package/dist/vue3/types/components/datepicker/modules/month-year-picker.vue.d.ts +0 -12
  344. package/dist/vue3/types/components/datepicker/modules/month-year-picker.vue.d.ts.map +1 -1
  345. package/dist/vue3/types/components/datepicker/utils.d.ts +1 -0
  346. package/dist/vue3/types/components/datepicker/utils.d.ts.map +1 -1
  347. package/dist/vue3/types/components/dropdown/dropdown.vue.d.ts +0 -24
  348. package/dist/vue3/types/components/dropdown/dropdown.vue.d.ts.map +1 -1
  349. package/dist/vue3/types/components/emoji_picker/emoji_picker_constants.d.ts +0 -13
  350. package/dist/vue3/types/components/emoji_picker/modules/emoji_tabset.vue.d.ts.map +1 -1
  351. package/dist/vue3/types/components/icon/icon.vue.d.ts +1 -0
  352. package/dist/vue3/types/components/icon/icon_constants.d.ts.map +1 -1
  353. package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts +3 -8
  354. package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
  355. package/dist/vue3/types/components/modal/modal.vue.d.ts +3 -35
  356. package/dist/vue3/types/components/modal/modal.vue.d.ts.map +1 -1
  357. package/dist/vue3/types/components/notice/notice.vue.d.ts +1 -34
  358. package/dist/vue3/types/components/notice/notice.vue.d.ts.map +1 -1
  359. package/dist/vue3/types/components/notice/notice_action.vue.d.ts +7 -35
  360. package/dist/vue3/types/components/notice/notice_action.vue.d.ts.map +1 -1
  361. package/dist/vue3/types/components/pagination/pagination.vue.d.ts +5 -24
  362. package/dist/vue3/types/components/pagination/pagination.vue.d.ts.map +1 -1
  363. package/dist/vue3/types/components/popover/popover.vue.d.ts +0 -33
  364. package/dist/vue3/types/components/popover/popover.vue.d.ts.map +1 -1
  365. package/dist/vue3/types/components/popover/popover_header_footer.vue.d.ts +5 -10
  366. package/dist/vue3/types/components/popover/popover_header_footer.vue.d.ts.map +1 -1
  367. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts +2 -0
  368. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  369. package/dist/vue3/types/components/toast/layouts/toast_layout_alternate.vue.d.ts +2 -46
  370. package/dist/vue3/types/components/toast/layouts/toast_layout_alternate.vue.d.ts.map +1 -1
  371. package/dist/vue3/types/components/toast/layouts/toast_layout_default.vue.d.ts +1 -34
  372. package/dist/vue3/types/components/toast/layouts/toast_layout_default.vue.d.ts.map +1 -1
  373. package/dist/vue3/types/components/toast/toast.vue.d.ts +4 -115
  374. package/dist/vue3/types/components/toast/toast.vue.d.ts.map +1 -1
  375. package/dist/vue3/types/index.d.ts +1 -0
  376. package/dist/vue3/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +3 -11
  377. package/dist/vue3/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts.map +1 -1
  378. package/dist/vue3/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +3 -10
  379. package/dist/vue3/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts.map +1 -1
  380. package/dist/vue3/types/recipes/cards/ivr_node/ivr_node.vue.d.ts +4 -8
  381. package/dist/vue3/types/recipes/cards/ivr_node/ivr_node.vue.d.ts.map +1 -1
  382. package/dist/vue3/types/recipes/cards/ivr_node/ivr_node_constants.d.ts +7 -7
  383. package/dist/vue3/types/recipes/cards/ivr_node/ivr_node_constants.d.ts.map +1 -1
  384. package/dist/vue3/types/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.d.ts.map +1 -1
  385. package/dist/vue3/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +1 -25
  386. package/dist/vue3/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts.map +1 -1
  387. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +3 -41
  388. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts.map +1 -1
  389. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +6 -25
  390. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts.map +1 -1
  391. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.d.ts +2 -2
  392. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts +6 -49
  393. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  394. package/dist/vue3/types/recipes/conversation_view/editor/index.d.ts +1 -1
  395. package/dist/vue3/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +6 -2
  396. package/dist/vue3/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts.map +1 -1
  397. package/dist/vue3/types/recipes/conversation_view/emoji_row/emoji_row_constants.d.ts.map +1 -1
  398. package/dist/vue3/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +3 -8
  399. package/dist/vue3/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts.map +1 -1
  400. package/dist/vue3/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +1 -1
  401. package/dist/vue3/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts +6 -1
  402. package/dist/vue3/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts.map +1 -1
  403. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts +12 -88
  404. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  405. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts +11 -1
  406. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -1
  407. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +13 -1
  408. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts.map +1 -1
  409. package/dist/vue3/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +5 -8
  410. package/dist/vue3/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts.map +1 -1
  411. package/dist/vue3/types/recipes/leftbar/contact_row/contact_row.vue.d.ts +0 -18
  412. package/dist/vue3/types/recipes/leftbar/contact_row/contact_row.vue.d.ts.map +1 -1
  413. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts +9 -27
  414. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  415. package/dist/vue3/types/recipes/leftbar/group_row/group_row.vue.d.ts +11 -21
  416. package/dist/vue3/types/recipes/leftbar/group_row/group_row.vue.d.ts.map +1 -1
  417. package/dist/vue3/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts +6 -2
  418. package/dist/vue3/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts.map +1 -1
  419. package/package.json +2 -2
  420. package/dist/vue3/common/mixins/sr-only-close-button.cjs +0 -3
  421. package/dist/vue3/common/mixins/sr-only-close-button.cjs.map +0 -1
  422. package/dist/vue3/common/mixins/sr-only-close-button.js +0 -44
  423. package/dist/vue3/common/mixins/sr-only-close-button.js.map +0 -1
  424. package/dist/vue3/lib/contact-row/contact-row-constants.cjs +0 -2
  425. package/dist/vue3/lib/contact-row/contact-row-constants.cjs.map +0 -1
  426. package/dist/vue3/lib/contact-row/contact-row-constants.js +0 -5
  427. package/dist/vue3/lib/contact-row/contact-row-constants.js.map +0 -1
  428. package/dist/vue3/lib/emoji/emoji-constants.cjs +0 -2
  429. package/dist/vue3/lib/emoji/emoji-constants.cjs.map +0 -1
  430. package/dist/vue3/lib/emoji/emoji-constants.js +0 -5
  431. package/dist/vue3/lib/emoji/emoji-constants.js.map +0 -1
  432. package/dist/vue3/lib/group-row/group-row-constants.cjs +0 -2
  433. package/dist/vue3/lib/group-row/group-row-constants.cjs.map +0 -1
  434. package/dist/vue3/lib/group-row/group-row-constants.js +0 -8
  435. package/dist/vue3/lib/group-row/group-row-constants.js.map +0 -1
  436. package/dist/vue3/lib/time-pill/time-pill-constants.cjs +0 -2
  437. package/dist/vue3/lib/time-pill/time-pill-constants.cjs.map +0 -1
  438. package/dist/vue3/lib/time-pill/time-pill-constants.js +0 -8
  439. package/dist/vue3/lib/time-pill/time-pill-constants.js.map +0 -1
  440. package/dist/vue3/types/common/mixins/sr_only_close_button.d.ts +0 -30
  441. package/dist/vue3/types/common/mixins/sr_only_close_button.d.ts.map +0 -1
  442. package/dist/vue3/types/components/emoji/emoji_constants.d.ts +0 -3
  443. package/dist/vue3/types/components/emoji/emoji_constants.d.ts.map +0 -1
  444. package/dist/vue3/types/recipes/conversation_view/time_pill/time_pill_constants.d.ts +0 -6
  445. package/dist/vue3/types/recipes/conversation_view/time_pill/time_pill_constants.d.ts.map +0 -1
  446. package/dist/vue3/types/recipes/leftbar/contact_row/contact_row_constants.d.ts +0 -3
  447. package/dist/vue3/types/recipes/leftbar/contact_row/contact_row_constants.d.ts.map +0 -1
  448. package/dist/vue3/types/recipes/leftbar/group_row/group_row_constants.d.ts +0 -6
  449. package/dist/vue3/types/recipes/leftbar/group_row/group_row_constants.d.ts.map +0 -1
@@ -1,9 +1,9 @@
1
1
  import { DtIconChevronLeft as D, DtIconChevronsLeft as _, DtIconChevronRight as y, DtIconChevronsRight as m } from "@dialpad/dialtone-icons/vue2";
2
2
  import { getMonth as o, getYear as l, getDate as k, set as $, addMonths as v, subMonths as R } from "date-fns";
3
3
  import { getCalendarDays as E, formatMonth as b, getWeekDayNames as T, formatDate as g, calculateNextFocusDate as A, calculatePrevFocusDate as M } from "./utils.js";
4
- import { INTL_MONTH_FORMAT as d, WEEK_START as C } from "./datepicker-constants.js";
4
+ import { INTL_MONTH_FORMAT as u, WEEK_START as C } from "./datepicker-constants.js";
5
5
  import { n as h } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
6
- import u from "../button/button.js";
6
+ import d from "../button/button.js";
7
7
  import P from "../tooltip/tooltip.js";
8
8
  import f from "../stack/stack.js";
9
9
  import p from "../../common/mixins/localization.js";
@@ -11,7 +11,7 @@ import { warnIfUnmounted as x } from "../../common/utils/index.js";
11
11
  const I = {
12
12
  name: "DtDatepickerMonthYearPicker",
13
13
  components: {
14
- DtButton: u,
14
+ DtButton: d,
15
15
  DtTooltip: P,
16
16
  DtStack: f,
17
17
  DtIconChevronLeft: D,
@@ -69,7 +69,7 @@ const I = {
69
69
  return E(this.selectMonth, this.selectYear, this.highlightedDay);
70
70
  },
71
71
  formattedMonth() {
72
- return (s) => b(s, d, this.i18n.currentLocale);
72
+ return (s) => b(s, u, this.i18n.currentLocale);
73
73
  },
74
74
  previousYearAriaLabel() {
75
75
  return `${this.i18n.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${this.i18n.$t("DIALTONE_DATEPICKER_PREVIOUS_YEAR")} ${this.selectYear - 1}`;
@@ -150,25 +150,25 @@ const I = {
150
150
  var N = function() {
151
151
  var t = this, e = t._self._c;
152
152
  return e("dt-stack", { staticClass: "d-datepicker__month-year", attrs: { direction: "row", gap: "300" } }, [e("dt-stack", { staticClass: "d-datepicker__nav", attrs: { as: "nav", direction: "row", gap: "200" } }, [e("dt-tooltip", { attrs: { "fallback-placements": ["top-start", "auto"], message: t.i18n.$t("DIALTONE_DATEPICKER_PREVIOUS_YEAR"), placement: "top" }, scopedSlots: t._u([{ key: "anchor", fn: function() {
153
- return [e("dt-button", { ref: t.refNames[0], staticClass: "d-datepicker__nav-btn", attrs: { id: "prevYearButton", "aria-label": t.previousYearAriaLabel, circle: "", importance: "clear", kind: "muted", size: "xs", type: "button" }, on: { click: function(a) {
153
+ return [e("dt-button", { ref: t.refNames[0], staticClass: "d-datepicker__nav-btn", attrs: { id: "prevYearButton", "aria-label": t.previousYearAriaLabel, circle: !0, importance: "clear", kind: "muted", size: "xs", type: "button" }, on: { click: function(a) {
154
154
  return t.changeYear(-1);
155
155
  }, keydown: function(a) {
156
156
  return t.handleKeyDown(a);
157
157
  } } }, [e("dt-icon-chevrons-left", { attrs: { size: "200" } })], 1)];
158
158
  }, proxy: !0 }]) }), e("dt-tooltip", { attrs: { "fallback-placements": ["top-start", "auto"], message: t.i18n.$t("DIALTONE_DATEPICKER_PREVIOUS_MONTH"), placement: "top" }, scopedSlots: t._u([{ key: "anchor", fn: function() {
159
- return [e("dt-button", { ref: t.refNames[1], staticClass: "d-datepicker__nav-btn", attrs: { id: "prevMonthButton", "aria-label": t.previousMonthAriaLabel, circle: "", importance: "clear", kind: "muted", size: "xs", type: "button" }, on: { click: function(a) {
159
+ return [e("dt-button", { ref: t.refNames[1], staticClass: "d-datepicker__nav-btn", attrs: { id: "prevMonthButton", "aria-label": t.previousMonthAriaLabel, circle: !0, importance: "clear", kind: "muted", size: "xs", type: "button" }, on: { click: function(a) {
160
160
  return t.changeMonth(-1);
161
161
  }, keydown: function(a) {
162
162
  return t.handleKeyDown(a);
163
163
  } } }, [e("dt-icon-chevron-left", { attrs: { size: "200" } })], 1)];
164
164
  }, proxy: !0 }]) })], 1), e("div", { staticClass: "d-datepicker__month-year-title", attrs: { id: "calendar-heading" } }, [t._v(" " + t._s(t.formattedMonth(t.selectMonth)) + " " + t._s(t.selectYear) + " ")]), e("dt-stack", { staticClass: "d-datepicker__nav", attrs: { as: "nav", direction: "row", gap: "200" } }, [e("dt-tooltip", { attrs: { "fallback-placements": ["top-end", "auto"], message: t.i18n.$t("DIALTONE_DATEPICKER_NEXT_MONTH"), placement: "top" }, scopedSlots: t._u([{ key: "anchor", fn: function() {
165
- return [e("dt-button", { ref: t.refNames[2], staticClass: "d-datepicker__nav-btn", attrs: { id: "nextMonthButton", "aria-label": t.nextMonthAriaLabel, circle: "", importance: "clear", kind: "muted", size: "xs", type: "button" }, on: { click: function(a) {
165
+ return [e("dt-button", { ref: t.refNames[2], staticClass: "d-datepicker__nav-btn", attrs: { id: "nextMonthButton", "aria-label": t.nextMonthAriaLabel, circle: !0, importance: "clear", kind: "muted", size: "xs", type: "button" }, on: { click: function(a) {
166
166
  return t.changeMonth(1);
167
167
  }, keydown: function(a) {
168
168
  return t.handleKeyDown(a);
169
169
  } } }, [e("dt-icon-chevron-right", { attrs: { size: "200" } })], 1)];
170
170
  }, proxy: !0 }]) }), e("dt-tooltip", { attrs: { "fallback-placements": ["top-end", "auto"], message: t.i18n.$t("DIALTONE_DATEPICKER_NEXT_YEAR"), placement: "top" }, scopedSlots: t._u([{ key: "anchor", fn: function() {
171
- return [e("dt-button", { ref: t.refNames[3], staticClass: "d-datepicker__nav-btn", attrs: { id: "nextYearButton", "aria-label": t.nextYearAriaLabel, circle: "", importance: "clear", kind: "muted", size: "xs", type: "button" }, on: { click: function(a) {
171
+ return [e("dt-button", { ref: t.refNames[3], staticClass: "d-datepicker__nav-btn", attrs: { id: "nextYearButton", "aria-label": t.nextYearAriaLabel, circle: !0, importance: "clear", kind: "muted", size: "xs", type: "button" }, on: { click: function(a) {
172
172
  return t.changeYear(1);
173
173
  }, keydown: function(a) {
174
174
  return t.handleKeyDown(a);
@@ -181,7 +181,7 @@ var N = function() {
181
181
  );
182
182
  const w = L.exports, O = {
183
183
  name: "DtDatepickerCalendar",
184
- components: { DtButton: u },
184
+ components: { DtButton: d },
185
185
  mixins: [p],
186
186
  props: {
187
187
  calendarDays: {
@@ -232,7 +232,7 @@ const w = L.exports, O = {
232
232
  },
233
233
  methods: {
234
234
  dayAriaLabel(s) {
235
- return this.i18n.$t("DIALTONE_DATEPICKER_SELECT_DAY") + ` ${g(s.value, d, this.i18n.currentLocale)}`;
235
+ return this.i18n.$t("DIALTONE_DATEPICKER_SELECT_DAY") + ` ${g(s.value, u, this.i18n.currentLocale)}`;
236
236
  },
237
237
  setDayRef(s, t) {
238
238
  this.calendarDays.forEach((e, a) => {
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker.js","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":";;;;;;;;;;AAkJA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,qBAAAC;AAAA,EACA;AAAA,EAEA,QAAA,CAAAC,CAAA;AAAA,EAEA,OAAA;AAAA,IACA,cAAA;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,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,aAAAC,EAAA,KAAA,YAAA;AAAA,MACA,YAAAC,EAAA,KAAA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA,CAAA;AAAA,MACA,UAAA,CAAA,qBAAA,sBAAA,sBAAA,mBAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA;AAAA,IAEA,eAAA;AACA,aAAAC,EAAA,KAAA,aAAA,KAAA,YAAA,KAAA,cAAA;AAAA,IACA;AAAA,IAEA,iBAAA;AACA,aAAA,CAAAC,MAAAC,EAAAD,GAAAE,GAAA,KAAA,KAAA,aAAA;AAAA,IACA;AAAA,IAEA,wBAAA;AACA,aAAA,GAAA,KAAA,KAAA,GAAA,+BAAA,CAAA,IAAA,KAAA,KAAA,GAAA,mCAAA,CAAA,IAAA,KAAA,aAAA,CAAA;AAAA,IACA;AAAA,IAEA,yBAAA;AACA,aAAA,GAAA,KAAA,KAAA,GAAA,+BAAA,CAAA,IAAA,KAAA,KAAA,GAAA,oCAAA,CAAA,IAAA,KAAA,eAAA,KAAA,cAAA,CAAA,CAAA;AAAA,IACA;AAAA,IAEA,oBAAA;AACA,aAAA,GAAA,KAAA,KAAA,GAAA,+BAAA,CAAA,IAAA,KAAA,KAAA,GAAA,+BAAA,CAAA,IAAA,KAAA,aAAA,CAAA;AAAA,IACA;AAAA,IAEA,qBAAA;AACA,aAAA,GAAA,KAAA,KAAA,GAAA,+BAAA,CAAA,IAAA,KAAA,KAAA,GAAA,gCAAA,CAAA,IAAA,KAAA,eAAA,KAAA,cAAA,CAAA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,aAAA;AAAA,MACA,UAAA;AACA,aAAA,aAAA,GACA,KAAA,MAAA,iBAAA,KAAA,YAAA;AAAA,MACA;AAAA,MAEA,WAAA;AAAA,IACA;AAAA,IAEA,YAAA;AAAA,MACA,UAAA;AACA,aAAA,aAAA,GACA,KAAA,MAAA,iBAAA,KAAA,YAAA;AAAA,MACA;AAAA,MAEA,WAAA;AAAA,IACA;AAAA,EAEA;AAAA,EAEA,UAAA;AACA,SAAA,cAAA,GACA,KAAA,qBAAA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,gBAAA;AACA,WAAA,YAAA,KAAA,SAAA,IAAA,CAAAC,MAAA,KAAA,MAAAA,CAAA,CAAA;AAAA,IACA;AAAA,IAEA,uBAAA;AACA,WAAA,cAAA,GACA,KAAA,UAAA,CAAA,EAAA,IAAA,MAAA;AAAA,IACA;AAAA,IAEA,cAAAC,GAAA;AACA,cAAAA,EAAA,KAAA;AAAA,QACA,KAAA;AACA,UAAAA,EAAA,eAAA,GACA,KAAA,gBAAA,KACA,KAAA,cAAA,GACA,KAAA,UAAA,KAAA,WAAA,EAAA,IAAA,YAEA,KAAA,eACA,KAAA,UAAA,KAAA,WAAA,EAAA,IAAA;AAEA;AAAA,QAEA,KAAA;AACA,UAAAA,EAAA,eAAA,GACA,KAAA,gBAAA,KACA,KAAA,cAAA,GACA,KAAA,UAAA,KAAA,WAAA,EAAA,IAAA,YAEA,KAAA,eACA,KAAA,UAAA,KAAA,WAAA,EAAA,IAAA;AAEA;AAAA,QAEA,KAAA;AACA,UAAAA,EAAA,eAAA,GACA,KAAA,MAAA,iBAAA;AACA;AAAA,QAEA,KAAA;AACA,UAAAA,EAAA,eAAA,GACA,KAAA,MAAA,iBAAA;AACA;AAAA,QAEA,KAAA;AACA,eAAA,MAAA,kBAAA;AACA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,eAAA;AACA,YAAAC,IAAAP,EAAA,KAAA,YAAA,GACAE,IAAAH,EAAA,KAAA,YAAA;AAEA,MAAAQ,MAAA,KAAA,cAAAL,MAAA,KAAA,cACA,KAAA,iBAAA,OAEA,KAAA,iBAAAM,EAAA,KAAA,YAAA;AAAA,IAEA;AAAA,IAEA,YAAAC,GAAA;AAEA,OAAA,KAAA,gBAAA,KAAAA,MAAA,MAAA,KAAA,gBAAA,MAAAA,MAAA,OACA,KAAA,cAAAA;AAIA,YAAAC,IAAAC,EAAA,KAAA,cAAA,EAAA,OAAA,KAAA,aAAA,MAAA,KAAA,WAAA,CAAA,GACAC,IAAAH,MAAA,IAAAI,EAAAH,GAAA,CAAA,IAAAI,EAAAJ,GAAA,CAAA;AAGA,WAAA,cAAAX,EAAAa,CAAA;AAAA,IACA;AAAA,IAEA,WAAAH,GAAA;AACA,WAAA,aAAA,KAAA,aAAAA;AAAA,IACA;AAAA,IAEA,gBAAA;AACA,WAAA,YAAA,CAAA;AAAA,IACA;AAAA,IAEA,gBAAA;AACA,WAAA,YAAA,EAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBC5RAnB,IAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA,EAAA,UAAAC,EAAA;AAAA,EAEA,QAAA,CAAAO,CAAA;AAAA,EAEA,OAAA;AAAA,IACA,cAAA;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,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA;AAAA,MAEA,aAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,WAAA;AACA,aAAAiB,EAAA,KAAA,KAAA,eAAAC,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,eAAA;AAEA,WAAA,WAAA,GACA,KAAA,cAAA,MAEA,KAAA,UAAA,IAEA,KAAA,UAAA,MAAA;AACA,aAAA,UAAA,IACA,KAAA,UAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,aAAAC,GAAA;AACA,aAAA,KAAA,KAAA,GAAA,gCAAA,IAAA,IAAAC,EAAAD,EAAA,OAAAb,GAAA,KAAA,KAAA,aAAA,CAAA;AAAA,IACA;AAAA,IAEA,UAAAe,GAAAF,GAAA;AACA,WAAA,aAAA,QAAA,CAAAG,GAAAC,MAAA;AACA,QAAAD,EAAA,KAAA,QAAA,CAAAH,GAAAK,MAAA;AACA,gBAAAC,IAAA,aAAAF,CAAA,IAAAC,CAAA,IACAE,IAAA,KAAA,MAAAD,CAAA;AACA,UAAAC,KAAAP,EAAA,gBACA,KAAA,QAAA,KAAA,EAAA,IAAAO,EAAA,CAAA,GAAA,KAAAP,EAAA,CAAA;AAAA,QAEA,CAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,IAEA,cAAAX,GAAA;AACA,cAAAA,EAAA,KAAA;AAAA,QACA,KAAA;AACA,UAAAA,EAAA,eAAA,GACA,KAAA,YAAA;AACA,cAAA;AACA,iBAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA;UACA,QAAA;AACA,kBAAAmB,IAAAC,EAAA,KAAA,QAAA,KAAA,WAAA,CAAA,EAAA,IAAA,KAAA;AACA,iBAAA,MAAA,kBAAA,GACA,KAAA,UAAA,MAAA;AACA,mBAAA,UAAA,GACA,KAAA,QAAAD,IAAA,CAAA,EAAA,GAAA,IAAA,SACA,KAAA,YAAAA,IAAA;AAAA,YACA,CAAA;AAAA,UACA;AACA;AAAA,QAEA,KAAA;AACA,UAAAnB,EAAA,eAAA,GACA,KAAA,YAAA;AACA,cAAA;AACA,iBAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA;UACA,QAAA;AACA,kBAAAqB,IAAAC,EAAA,KAAA,QAAA,KAAA,WAAA,CAAA,EAAA,IAAA,KAAA;AACA,iBAAA,MAAA,kBAAA,GACA,KAAA,UAAA,MAAA;AACA,mBAAA,UAAA,GACA,KAAA,QAAAD,IAAA,CAAA,EAAA,GAAA,IAAA,SACA,KAAA,YAAAA,IAAA;AAAA,YACA,CAAA;AAAA,UACA;AACA;AAAA,QAEA,KAAA;AACA,UAAArB,EAAA,eAAA,GACA,KAAA,WAAA,KACA,KAAA,YAAA,GACA,KAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA,YAGA,KAAA,MAAA,kBAAA,GACA,KAAA,UAAA,MAAA;AACA,iBAAA,aAAA;AAAA,UACA,CAAA;AAEA;AAAA,QAEA,KAAA;AACA,UAAAA,EAAA,eAAA,GACA,KAAA,WAAA,KAAA,QAAA,SAAA,KACA,KAAA,YAAA,GACA,KAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA,YAGA,KAAA,MAAA,kBAAA,GACA,KAAA,UAAA,MAAA;AACA,iBAAA,cAAA;AAAA,UACA,CAAA;AAEA;AAAA,QAEA,KAAA;AACA,UAAAA,EAAA,eAAA,GACA,KAAA,MAAA,yBAAA;AACA;AAAA,QAEA,KAAA;AACA,eAAA,MAAA,kBAAA;AACA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,gBAAA;AACA,WAAA,WAAA,GACA,KAAA,UAAA,MAAA;AACA,aAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA;MACA,CAAA;AAAA,IACA;AAAA,IAEA,eAAA;AACA,WAAA,UAAA,MAAA;AACA,aAAA,WAAA,KAAA,QAAA,SAAA,GACA,KAAA,QAAA,KAAA,QAAA,EAAA,GAAA,IAAA;MACA,CAAA;AAAA,IACA;AAAA,IAEA,UAAAW,GAAA;AACA,MAAAA,EAAA,iBAGA,KAAA,cAAAA,EAAA,MACA,KAAA,MAAA,eAAAA,EAAA,KAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;qBCjNA3B,IAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA,EAAA,SAAAG,GAAA,iBAAAoC,GAAA,UAAAC,EAAA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,cAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,oBAAA;IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,cAAA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AACA,IAAAC,EAAA,KAAA,KAAA,KAAA,SAAA,IAAA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,mBAAAC,GAAA;AACA,WAAA,eAAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"datepicker.js","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=\"true\"\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=\"true\"\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=\"true\"\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=\"true\"\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":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("../../common/mixins/keyboard-list-navigation.cjs"),s=require("./dropdown-constants.cjs"),l=require("../../common/utils/index.cjs"),n=require("../../common/constants/index.cjs"),d=require("../../shared/sr_only_close_button.cjs"),h=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),u=require("../popover/popover.cjs"),r=require("../list-item/list-item-constants.cjs"),p=require("../popover/popover-constants.cjs"),g={name:"DtDropdown",components:{DtPopover:u.default,SrOnlyCloseButton:d.default},mixins:[a.default({indexKey:"highlightIndex",idKey:"highlightId",listElementKey:"getListElement",listItemRole:"menuitem",afterHighlightMethod:"afterHighlight",beginningOfListMethod:"beginningOfListMethod",endOfListMethod:"endOfListMethod",activeItemKey:"activeItemEl",focusOnKeyboardNavigation:!0})],props:{open:{type:Boolean,default:null},openOnContext:{type:Boolean,default:!1},padding:{type:String,default:"small",validator:e=>Object.keys(s.DROPDOWN_PADDING_CLASSES).some(t=>t===e)},modal:{type:Boolean,default:!0},contentWidth:{type:String,default:null},maxHeight:{type:String,default:""},maxWidth:{type:String,default:""},listId:{type:String,default(){return l.getUniqueString()}},navigationType:{type:String,default:r.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS,validator:e=>Object.values(r.LIST_ITEM_NAVIGATION_TYPES).includes(e)},fallbackPlacements:{type:Array,default:()=>["auto"]},placement:{type:String,default:"bottom"},onBeginningOfList:{type:Function,default:null},onEndOfList:{type:Function,default:null},listClass:{type:[String,Array,Object],default:""},appendTo:{type:[HTMLElement,String],default:"body",validator:e=>p.POPOVER_APPEND_TO_VALUES.includes(e)||e instanceof HTMLElement},tether:{type:Boolean,default:!0},transition:{type:String,default:"fade"}},emits:["highlight","opened","update:open"],data(){return{LIST_ITEM_NAVIGATION_TYPES:r.LIST_ITEM_NAVIGATION_TYPES,DROPDOWN_PADDING_CLASSES:s.DROPDOWN_PADDING_CLASSES,EVENT_KEYNAMES:n.EVENT_KEYNAMES,openedWithKeyboard:!1,isOpen:null}},computed:{dropdownListeners(){return{...this.$listeners,opened:e=>{this.updateInitialHighlightIndex(e)},keydown:e=>{switch(e.code){case n.EVENT_KEYNAMES.up:case n.EVENT_KEYNAMES.arrowup:this.onUpKeyPress(e),e.stopPropagation(),e.preventDefault();break;case n.EVENT_KEYNAMES.down:case n.EVENT_KEYNAMES.arrowdown:this.onDownKeyPress(e),e.stopPropagation(),e.preventDefault();break;case n.EVENT_KEYNAMES.space:case n.EVENT_KEYNAMES.spacebar:this.onSpaceKey();break;case n.EVENT_KEYNAMES.enter:this.onEnterKey();break;case n.EVENT_KEYNAMES.home:this.onHomeKeyPress(e),e.stopPropagation(),e.preventDefault();break;case n.EVENT_KEYNAMES.end:this.onEndKeyPress(e),e.stopPropagation(),e.preventDefault();break;default:this.onKeyPress(e);break}this.$emit("keydown",e)}}},beginningOfListMethod(){return this.onBeginningOfList||this.jumpToEnd},endOfListMethod(){return this.onEndOfList||this.jumpToBeginning},activeItemEl(){return this.getListElement().querySelector("#"+this.highlightId)},isArrowKeyNav(){return this.navigationType===this.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS},listClasses(){return["d-dropdown-list",s.DROPDOWN_PADDING_CLASSES[this.padding],this.listClass,{"d-context-menu-list":this.openOnContext}]},shouldOpenWithArrowKeys(){return!this.openOnContext}},methods:{onMouseHighlight(e){const t=e.target.closest("li");t&&t.role&&this.highlightId!==t.id&&(this.setHighlightId(t.id),t.focus())},getListElement(){return this.$refs.listWrapper},clearHighlightIndex(){this.setHighlightIndex(-1)},afterHighlight(){this.highlightIndex!==this._itemsLength()-1&&this.$emit("highlight",this.highlightIndex)},updateInitialHighlightIndex(e){this.isOpen=e,e?(this.openedWithKeyboard&&this.isArrowKeyNav&&this.setHighlightIndex(0),this.$emit("opened",!0)):(this.clearHighlightIndex(),this.openedWithKeyboard=!1,this.$emit("opened",!1))},onSpaceKey(){this.open||(this.openedWithKeyboard=!0)},onEnterKey(){this.open||(this.openedWithKeyboard=!0)},onUpKeyPress(){if(!this.isOpen){this.openedWithKeyboard=!0;return}if(this.isArrowKeyNav)return this.onUpKey()},onDownKeyPress(){if(!this.isOpen){this.openedWithKeyboard=!0;return}if(this.isArrowKeyNav)return this.onDownKey()},onHomeKeyPress(){if(!(!this.isOpen||!this.isArrowKeyNav))return this.onHomeKey()},onEndKeyPress(){if(!(!this.isOpen||!this.isArrowKeyNav))return this.onEndKey()},onKeyPress(e){if(!(!this.isOpen||!this.isArrowKeyNav||!this.isValidLetter(e.key)))return e.stopPropagation(),e.preventDefault(),this.onNavigationKey(e.key)}}};var c=function(){var t=this,o=t._self._c;return o("dt-popover",t._g({ref:"popover",attrs:{"content-width":t.contentWidth,open:t.open,placement:t.placement,"initial-focus-element":t.openedWithKeyboard?"first":"dialog","fallback-placements":t.fallbackPlacements,padding:"none",role:"menu","append-to":t.appendTo,modal:t.modal,"max-height":t.maxHeight,"max-width":t.maxWidth,"open-with-arrow-keys":t.shouldOpenWithArrowKeys,"open-on-context":t.openOnContext,tether:t.tether,transition:t.transition},scopedSlots:t._u([{key:"anchor",fn:function({attrs:i}){return[t._t("anchor",null,null,i)]}},{key:"content",fn:function({close:i}){return[o("ul",{ref:"listWrapper",class:t.listClasses,attrs:{id:t.listId,"data-qa":"dt-dropdown-list-wrapper"},on:{mouseleave:t.clearHighlightIndex,"!mousemove":function(y){return t.onMouseHighlight.apply(null,arguments)}}},[t._t("list",null,{close:i})],2),o("sr-only-close-button",{on:{close:i}})]}},{key:"footerContent",fn:function({close:i}){return[t._t("footer",null,{close:i})]}}],null,!0)},t.dropdownListeners))},f=[],_=h.n(g,c,f);const E=_.exports;exports.default=E;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("../../common/mixins/keyboard-list-navigation.cjs"),o=require("./dropdown-constants.cjs"),l=require("../../common/utils/index.cjs"),n=require("../../common/constants/index.cjs"),d=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),h=require("../popover/popover.cjs"),s=require("../list-item/list-item-constants.cjs"),p=require("../popover/popover-constants.cjs"),u={name:"DtDropdown",components:{DtPopover:h.default},mixins:[a.default({indexKey:"highlightIndex",idKey:"highlightId",listElementKey:"getListElement",listItemRole:"menuitem",afterHighlightMethod:"afterHighlight",beginningOfListMethod:"beginningOfListMethod",endOfListMethod:"endOfListMethod",activeItemKey:"activeItemEl",focusOnKeyboardNavigation:!0})],props:{open:{type:Boolean,default:null},openOnContext:{type:Boolean,default:!1},padding:{type:String,default:"small",validator:e=>Object.keys(o.DROPDOWN_PADDING_CLASSES).some(t=>t===e)},modal:{type:Boolean,default:!0},contentWidth:{type:String,default:null},maxHeight:{type:String,default:""},maxWidth:{type:String,default:""},listId:{type:String,default(){return l.getUniqueString()}},navigationType:{type:String,default:s.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS,validator:e=>Object.values(s.LIST_ITEM_NAVIGATION_TYPES).includes(e)},fallbackPlacements:{type:Array,default:()=>["auto"]},placement:{type:String,default:"bottom"},onBeginningOfList:{type:Function,default:null},onEndOfList:{type:Function,default:null},listClass:{type:[String,Array,Object],default:""},appendTo:{type:[HTMLElement,String],default:"body",validator:e=>p.POPOVER_APPEND_TO_VALUES.includes(e)||e instanceof HTMLElement},tether:{type:Boolean,default:!0},transition:{type:String,default:"fade"}},emits:["highlight","opened","update:open"],data(){return{LIST_ITEM_NAVIGATION_TYPES:s.LIST_ITEM_NAVIGATION_TYPES,DROPDOWN_PADDING_CLASSES:o.DROPDOWN_PADDING_CLASSES,EVENT_KEYNAMES:n.EVENT_KEYNAMES,openedWithKeyboard:!1,isOpen:null}},computed:{dropdownListeners(){return{...this.$listeners,opened:e=>{this.updateInitialHighlightIndex(e)},keydown:e=>{switch(e.code){case n.EVENT_KEYNAMES.up:case n.EVENT_KEYNAMES.arrowup:this.onUpKeyPress(e),e.stopPropagation(),e.preventDefault();break;case n.EVENT_KEYNAMES.down:case n.EVENT_KEYNAMES.arrowdown:this.onDownKeyPress(e),e.stopPropagation(),e.preventDefault();break;case n.EVENT_KEYNAMES.space:case n.EVENT_KEYNAMES.spacebar:this.onSpaceKey();break;case n.EVENT_KEYNAMES.enter:this.onEnterKey();break;case n.EVENT_KEYNAMES.home:this.onHomeKeyPress(e),e.stopPropagation(),e.preventDefault();break;case n.EVENT_KEYNAMES.end:this.onEndKeyPress(e),e.stopPropagation(),e.preventDefault();break;default:this.onKeyPress(e);break}this.$emit("keydown",e)}}},beginningOfListMethod(){return this.onBeginningOfList||this.jumpToEnd},endOfListMethod(){return this.onEndOfList||this.jumpToBeginning},activeItemEl(){return this.getListElement().querySelector("#"+this.highlightId)},isArrowKeyNav(){return this.navigationType===this.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS},listClasses(){return["d-dropdown-list",o.DROPDOWN_PADDING_CLASSES[this.padding],this.listClass,{"d-context-menu-list":this.openOnContext}]},shouldOpenWithArrowKeys(){return!this.openOnContext}},methods:{onMouseHighlight(e){const t=e.target.closest("li");t&&t.role&&this.highlightId!==t.id&&(this.setHighlightId(t.id),t.focus())},getListElement(){return this.$refs.listWrapper},clearHighlightIndex(){this.setHighlightIndex(-1)},afterHighlight(){this.highlightIndex!==this._itemsLength()-1&&this.$emit("highlight",this.highlightIndex)},updateInitialHighlightIndex(e){this.isOpen=e,e?(this.openedWithKeyboard&&this.isArrowKeyNav&&this.setHighlightIndex(0),this.$emit("opened",!0)):(this.clearHighlightIndex(),this.openedWithKeyboard=!1,this.$emit("opened",!1))},onSpaceKey(){this.open||(this.openedWithKeyboard=!0)},onEnterKey(){this.open||(this.openedWithKeyboard=!0)},onUpKeyPress(){if(!this.isOpen){this.openedWithKeyboard=!0;return}if(this.isArrowKeyNav)return this.onUpKey()},onDownKeyPress(){if(!this.isOpen){this.openedWithKeyboard=!0;return}if(this.isArrowKeyNav)return this.onDownKey()},onHomeKeyPress(){if(!(!this.isOpen||!this.isArrowKeyNav))return this.onHomeKey()},onEndKeyPress(){if(!(!this.isOpen||!this.isArrowKeyNav))return this.onEndKey()},onKeyPress(e){if(!(!this.isOpen||!this.isArrowKeyNav||!this.isValidLetter(e.key)))return e.stopPropagation(),e.preventDefault(),this.onNavigationKey(e.key)}}};var g=function(){var t=this,r=t._self._c;return r("dt-popover",t._g({ref:"popover",attrs:{"content-width":t.contentWidth,open:t.open,placement:t.placement,"initial-focus-element":t.openedWithKeyboard?"first":"dialog","fallback-placements":t.fallbackPlacements,padding:"none",role:"menu","append-to":t.appendTo,modal:t.modal,"max-height":t.maxHeight,"max-width":t.maxWidth,"open-with-arrow-keys":t.shouldOpenWithArrowKeys,"open-on-context":t.openOnContext,tether:t.tether,transition:t.transition},scopedSlots:t._u([{key:"anchor",fn:function({attrs:i}){return[t._t("anchor",null,null,i)]}},{key:"content",fn:function({close:i}){return[r("ul",{ref:"listWrapper",class:t.listClasses,attrs:{id:t.listId,"data-qa":"dt-dropdown-list-wrapper"},on:{mouseleave:t.clearHighlightIndex,"!mousemove":function(_){return t.onMouseHighlight.apply(null,arguments)}}},[t._t("list",null,{close:i})],2)]}},{key:"footerContent",fn:function({close:i}){return[t._t("footer",null,{close:i})]}}],null,!0)},t.dropdownListeners))},c=[],f=d.n(u,g,c);const E=f.exports;exports.default=E;
2
2
  //# sourceMappingURL=dropdown.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.cjs","sources":["../../../components/dropdown/dropdown.vue"],"sourcesContent":["<!-- eslint-disable max-lines -->\n<template>\n <dt-popover\n ref=\"popover\"\n :content-width=\"contentWidth\"\n :open=\"open\"\n :placement=\"placement\"\n :initial-focus-element=\"openedWithKeyboard ? 'first' : 'dialog'\"\n :fallback-placements=\"fallbackPlacements\"\n padding=\"none\"\n role=\"menu\"\n :append-to=\"appendTo\"\n :modal=\"modal\"\n :max-height=\"maxHeight\"\n :max-width=\"maxWidth\"\n :open-with-arrow-keys=\"shouldOpenWithArrowKeys\"\n :open-on-context=\"openOnContext\"\n :tether=\"tether\"\n :transition=\"transition\"\n v-on=\"dropdownListeners\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the dropdown -->\n <slot\n ref=\"anchor\"\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content=\"{ close }\">\n <!-- eslint-disable-next-line max-len -->\n <!-- eslint-disable-next-line vuejs-accessibility/mouse-events-have-key-events, vuejs-accessibility/no-static-element-interactions -->\n <ul\n :id=\"listId\"\n ref=\"listWrapper\"\n :class=\"listClasses\"\n data-qa=\"dt-dropdown-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <!-- @slot Slot for the list component -->\n <slot\n name=\"list\"\n :close=\"close\"\n />\n </ul>\n <sr-only-close-button @close=\"close\" />\n </template>\n <template #footerContent=\"{ close }\">\n <!-- @slot Slot for the footer content -->\n <slot\n name=\"footer\"\n :close=\"close\"\n />\n </template>\n </dt-popover>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { DtPopover, POPOVER_APPEND_TO_VALUES } from '@/components/popover';\nimport { LIST_ITEM_NAVIGATION_TYPES } from '@/components/list_item';\nimport { DROPDOWN_PADDING_CLASSES } from './dropdown_constants';\nimport { getUniqueString } from '@/common/utils';\nimport { EVENT_KEYNAMES } from '@/common/constants';\nimport SrOnlyCloseButton from '@/common/sr_only_close_button.vue';\n\nexport default {\n name: 'DtDropdown',\n\n components: {\n DtPopover,\n SrOnlyCloseButton,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n listItemRole: 'menuitem',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n focusOnKeyboardNavigation: true,\n }),\n ],\n\n props: {\n /**\n * Controls whether the dropdown is shown. Leaving this null will have the dropdown trigger on click by default.\n * If you set this value, the default trigger behavior will be disabled and you can control it as you need.\n * Supports .sync modifier\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Opens the dropdown on right click (context menu). If you set this value to `true`,\n * the default trigger behavior will be disabled.\n */\n openOnContext: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Vertical padding size around the list element.\n * @values none, small, large\n */\n padding: {\n type: String,\n default: 'small',\n validator: (padding) => {\n return Object.keys(DROPDOWN_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Determines modal state, dropdown has a modal overlay preventing interaction with elements\n * below it, but it is invisible.\n */\n modal: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Width configuration for the popover content. When its value is 'anchor',\n * the popover content will have the same width as the anchor.\n * @values null, anchor\n */\n contentWidth: {\n type: String,\n default: null,\n },\n\n /**\n * Determines maximum height for the popover before overflow.\n * Possible units rem|px|em\n */\n maxHeight: {\n type: String,\n default: '',\n },\n\n /**\n * Determines maximum width for the popover before overflow.\n * Possible units rem|px|%|em\n */\n maxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * The type of navigation that this component should support.\n * - \"arrow-keys\" for items that are navigated with UP/DOWN keys.\n * - \"tab\" for items that are navigated using the TAB key.\n * - \"none\" for static items that are not interactive.\n * @values arrow-keys, tab, none\n */\n navigationType: {\n type: String,\n default: LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS,\n validator: (t) => Object.values(LIST_ITEM_NAVIGATION_TYPES).includes(t),\n },\n\n /**\n * If the dropdown does not fit in the direction described by \"placement\",\n * it will attempt to change it's direction to the \"fallbackPlacements\".\n *\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n * */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the dropdown displays relative to the anchor.\n */\n placement: {\n type: String,\n default: 'bottom',\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Additional class for the wrapper list element.\n */\n listClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * If set to false the dialog will display over top of the anchor when there is insufficient space.\n * If set to true it will never move from its position relative to the anchor and will clip instead.\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/prevent-overflow/#tether\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * @values true, false\n */\n tether: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Named transition when the content display is toggled.\n * @see DtLazyShow\n */\n transition: {\n type: String,\n default: 'fade',\n },\n },\n\n emits: [\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when dropdown is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n ],\n\n data () {\n return {\n LIST_ITEM_NAVIGATION_TYPES,\n DROPDOWN_PADDING_CLASSES,\n EVENT_KEYNAMES,\n openedWithKeyboard: false,\n isOpen: null,\n };\n },\n\n computed: {\n dropdownListeners () {\n return {\n ...this.$listeners,\n\n opened: isPopoverOpen => {\n this.updateInitialHighlightIndex(isPopoverOpen);\n },\n\n keydown: event => {\n const eventCode = event.code;\n\n switch (eventCode) {\n case EVENT_KEYNAMES.up:\n case EVENT_KEYNAMES.arrowup:\n this.onUpKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.down:\n case EVENT_KEYNAMES.arrowdown:\n this.onDownKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.space:\n case EVENT_KEYNAMES.spacebar:\n this.onSpaceKey();\n break;\n case EVENT_KEYNAMES.enter:\n this.onEnterKey();\n break;\n case EVENT_KEYNAMES.home:\n this.onHomeKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.end:\n this.onEndKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n this.onKeyPress(event);\n break;\n }\n\n this.$emit('keydown', event);\n },\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemEl () {\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n\n isArrowKeyNav () {\n return this.navigationType === this.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS;\n },\n\n listClasses () {\n return [\n 'd-dropdown-list',\n DROPDOWN_PADDING_CLASSES[this.padding],\n this.listClass,\n { 'd-context-menu-list': this.openOnContext },\n ];\n },\n\n shouldOpenWithArrowKeys () {\n return !this.openOnContext;\n },\n },\n\n methods: {\n onMouseHighlight (e) {\n const liElement = e.target.closest('li');\n\n if (liElement && liElement.role && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n liElement.focus();\n }\n },\n\n getListElement () {\n return this.$refs.listWrapper;\n },\n\n clearHighlightIndex () {\n this.setHighlightIndex(-1);\n },\n\n afterHighlight () {\n if (this.highlightIndex === this._itemsLength() - 1) {\n return;\n }\n\n this.$emit('highlight', this.highlightIndex);\n },\n\n updateInitialHighlightIndex (isPopoverOpen) {\n this.isOpen = isPopoverOpen;\n\n if (isPopoverOpen) {\n if (this.openedWithKeyboard && this.isArrowKeyNav) {\n this.setHighlightIndex(0);\n }\n this.$emit('opened', true);\n } else {\n this.clearHighlightIndex();\n this.openedWithKeyboard = false;\n this.$emit('opened', false);\n }\n },\n\n onSpaceKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onEnterKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onUpKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onUpKey();\n }\n },\n\n onDownKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onDownKey();\n }\n },\n\n onHomeKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onHomeKey();\n },\n\n onEndKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onEndKey();\n },\n\n onKeyPress (e) {\n if (!this.isOpen || !this.isArrowKeyNav || !this.isValidLetter(e.key)) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n\n return this.onNavigationKey(e.key);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtPopover","SrOnlyCloseButton","KeyboardNavigation","padding","DROPDOWN_PADDING_CLASSES","item","getUniqueString","LIST_ITEM_NAVIGATION_TYPES","t","appendTo","POPOVER_APPEND_TO_VALUES","EVENT_KEYNAMES","isPopoverOpen","event","liElement"],"mappings":"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"}
1
+ {"version":3,"file":"dropdown.cjs","sources":["../../../components/dropdown/dropdown.vue"],"sourcesContent":["<!-- eslint-disable max-lines -->\n<template>\n <dt-popover\n ref=\"popover\"\n :content-width=\"contentWidth\"\n :open=\"open\"\n :placement=\"placement\"\n :initial-focus-element=\"openedWithKeyboard ? 'first' : 'dialog'\"\n :fallback-placements=\"fallbackPlacements\"\n padding=\"none\"\n role=\"menu\"\n :append-to=\"appendTo\"\n :modal=\"modal\"\n :max-height=\"maxHeight\"\n :max-width=\"maxWidth\"\n :open-with-arrow-keys=\"shouldOpenWithArrowKeys\"\n :open-on-context=\"openOnContext\"\n :tether=\"tether\"\n :transition=\"transition\"\n v-on=\"dropdownListeners\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the dropdown -->\n <slot\n ref=\"anchor\"\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content=\"{ close }\">\n <!-- eslint-disable-next-line max-len -->\n <!-- eslint-disable-next-line vuejs-accessibility/mouse-events-have-key-events, vuejs-accessibility/no-static-element-interactions -->\n <ul\n :id=\"listId\"\n ref=\"listWrapper\"\n :class=\"listClasses\"\n data-qa=\"dt-dropdown-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <!-- @slot Slot for the list component -->\n <slot\n name=\"list\"\n :close=\"close\"\n />\n </ul>\n </template>\n <template #footerContent=\"{ close }\">\n <!-- @slot Slot for the footer content -->\n <slot\n name=\"footer\"\n :close=\"close\"\n />\n </template>\n </dt-popover>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { DtPopover, POPOVER_APPEND_TO_VALUES } from '@/components/popover';\nimport { LIST_ITEM_NAVIGATION_TYPES } from '@/components/list_item';\nimport { DROPDOWN_PADDING_CLASSES } from './dropdown_constants';\nimport { getUniqueString } from '@/common/utils';\nimport { EVENT_KEYNAMES } from '@/common/constants';\n\nexport default {\n name: 'DtDropdown',\n\n components: {\n DtPopover,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n listItemRole: 'menuitem',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n focusOnKeyboardNavigation: true,\n }),\n ],\n\n props: {\n /**\n * Controls whether the dropdown is shown. Leaving this null will have the dropdown trigger on click by default.\n * If you set this value, the default trigger behavior will be disabled and you can control it as you need.\n * Supports .sync modifier\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Opens the dropdown on right click (context menu). If you set this value to `true`,\n * the default trigger behavior will be disabled.\n */\n openOnContext: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Vertical padding size around the list element.\n * @values none, small, large\n */\n padding: {\n type: String,\n default: 'small',\n validator: (padding) => {\n return Object.keys(DROPDOWN_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Determines modal state, dropdown has a modal overlay preventing interaction with elements\n * below it, but it is invisible.\n */\n modal: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Width configuration for the popover content. When its value is 'anchor',\n * the popover content will have the same width as the anchor.\n * @values null, anchor\n */\n contentWidth: {\n type: String,\n default: null,\n },\n\n /**\n * Determines maximum height for the popover before overflow.\n * Possible units rem|px|em\n */\n maxHeight: {\n type: String,\n default: '',\n },\n\n /**\n * Determines maximum width for the popover before overflow.\n * Possible units rem|px|%|em\n */\n maxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * The type of navigation that this component should support.\n * - \"arrow-keys\" for items that are navigated with UP/DOWN keys.\n * - \"tab\" for items that are navigated using the TAB key.\n * - \"none\" for static items that are not interactive.\n * @values arrow-keys, tab, none\n */\n navigationType: {\n type: String,\n default: LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS,\n validator: (t) => Object.values(LIST_ITEM_NAVIGATION_TYPES).includes(t),\n },\n\n /**\n * If the dropdown does not fit in the direction described by \"placement\",\n * it will attempt to change it's direction to the \"fallbackPlacements\".\n *\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n * */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the dropdown displays relative to the anchor.\n */\n placement: {\n type: String,\n default: 'bottom',\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Additional class for the wrapper list element.\n */\n listClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * If set to false the dialog will display over top of the anchor when there is insufficient space.\n * If set to true it will never move from its position relative to the anchor and will clip instead.\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/prevent-overflow/#tether\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * @values true, false\n */\n tether: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Named transition when the content display is toggled.\n * @see DtLazyShow\n */\n transition: {\n type: String,\n default: 'fade',\n },\n },\n\n emits: [\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when dropdown is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n ],\n\n data () {\n return {\n LIST_ITEM_NAVIGATION_TYPES,\n DROPDOWN_PADDING_CLASSES,\n EVENT_KEYNAMES,\n openedWithKeyboard: false,\n isOpen: null,\n };\n },\n\n computed: {\n dropdownListeners () {\n return {\n ...this.$listeners,\n\n opened: isPopoverOpen => {\n this.updateInitialHighlightIndex(isPopoverOpen);\n },\n\n keydown: event => {\n const eventCode = event.code;\n\n switch (eventCode) {\n case EVENT_KEYNAMES.up:\n case EVENT_KEYNAMES.arrowup:\n this.onUpKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.down:\n case EVENT_KEYNAMES.arrowdown:\n this.onDownKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.space:\n case EVENT_KEYNAMES.spacebar:\n this.onSpaceKey();\n break;\n case EVENT_KEYNAMES.enter:\n this.onEnterKey();\n break;\n case EVENT_KEYNAMES.home:\n this.onHomeKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.end:\n this.onEndKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n this.onKeyPress(event);\n break;\n }\n\n this.$emit('keydown', event);\n },\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemEl () {\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n\n isArrowKeyNav () {\n return this.navigationType === this.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS;\n },\n\n listClasses () {\n return [\n 'd-dropdown-list',\n DROPDOWN_PADDING_CLASSES[this.padding],\n this.listClass,\n { 'd-context-menu-list': this.openOnContext },\n ];\n },\n\n shouldOpenWithArrowKeys () {\n return !this.openOnContext;\n },\n },\n\n methods: {\n onMouseHighlight (e) {\n const liElement = e.target.closest('li');\n\n if (liElement && liElement.role && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n liElement.focus();\n }\n },\n\n getListElement () {\n return this.$refs.listWrapper;\n },\n\n clearHighlightIndex () {\n this.setHighlightIndex(-1);\n },\n\n afterHighlight () {\n if (this.highlightIndex === this._itemsLength() - 1) {\n return;\n }\n\n this.$emit('highlight', this.highlightIndex);\n },\n\n updateInitialHighlightIndex (isPopoverOpen) {\n this.isOpen = isPopoverOpen;\n\n if (isPopoverOpen) {\n if (this.openedWithKeyboard && this.isArrowKeyNav) {\n this.setHighlightIndex(0);\n }\n this.$emit('opened', true);\n } else {\n this.clearHighlightIndex();\n this.openedWithKeyboard = false;\n this.$emit('opened', false);\n }\n },\n\n onSpaceKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onEnterKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onUpKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onUpKey();\n }\n },\n\n onDownKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onDownKey();\n }\n },\n\n onHomeKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onHomeKey();\n },\n\n onEndKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onEndKey();\n },\n\n onKeyPress (e) {\n if (!this.isOpen || !this.isArrowKeyNav || !this.isValidLetter(e.key)) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n\n return this.onNavigationKey(e.key);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtPopover","KeyboardNavigation","padding","DROPDOWN_PADDING_CLASSES","item","getUniqueString","LIST_ITEM_NAVIGATION_TYPES","t","appendTo","POPOVER_APPEND_TO_VALUES","EVENT_KEYNAMES","isPopoverOpen","event","liElement"],"mappings":"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"}
@@ -1,17 +1,15 @@
1
1
  import a from "../../common/mixins/keyboard-list-navigation.js";
2
- import { DROPDOWN_PADDING_CLASSES as r } from "./dropdown-constants.js";
2
+ import { DROPDOWN_PADDING_CLASSES as o } from "./dropdown-constants.js";
3
3
  import { getUniqueString as l } from "../../common/utils/index.js";
4
4
  import { EVENT_KEYNAMES as i } from "../../common/constants/index.js";
5
- import h from "../../shared/sr_only_close_button.js";
6
- import { n as d } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
7
- import p from "../popover/popover.js";
8
- import { LIST_ITEM_NAVIGATION_TYPES as s } from "../list-item/list-item-constants.js";
9
- import { POPOVER_APPEND_TO_VALUES as u } from "../popover/popover-constants.js";
10
- const g = {
5
+ import { n as h } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
6
+ import d from "../popover/popover.js";
7
+ import { LIST_ITEM_NAVIGATION_TYPES as r } from "../list-item/list-item-constants.js";
8
+ import { POPOVER_APPEND_TO_VALUES as p } from "../popover/popover-constants.js";
9
+ const u = {
11
10
  name: "DtDropdown",
12
11
  components: {
13
- DtPopover: p,
14
- SrOnlyCloseButton: h
12
+ DtPopover: d
15
13
  },
16
14
  mixins: [
17
15
  a({
@@ -51,7 +49,7 @@ const g = {
51
49
  padding: {
52
50
  type: String,
53
51
  default: "small",
54
- validator: (e) => Object.keys(r).some((t) => t === e)
52
+ validator: (e) => Object.keys(o).some((t) => t === e)
55
53
  },
56
54
  /**
57
55
  * Determines modal state, dropdown has a modal overlay preventing interaction with elements
@@ -105,8 +103,8 @@ const g = {
105
103
  */
106
104
  navigationType: {
107
105
  type: String,
108
- default: s.ARROW_KEYS,
109
- validator: (e) => Object.values(s).includes(e)
106
+ default: r.ARROW_KEYS,
107
+ validator: (e) => Object.values(r).includes(e)
110
108
  },
111
109
  /**
112
110
  * If the dropdown does not fit in the direction described by "placement",
@@ -158,7 +156,7 @@ const g = {
158
156
  appendTo: {
159
157
  type: [HTMLElement, String],
160
158
  default: "body",
161
- validator: (e) => u.includes(e) || e instanceof HTMLElement
159
+ validator: (e) => p.includes(e) || e instanceof HTMLElement
162
160
  },
163
161
  /**
164
162
  * If set to false the dialog will display over top of the anchor when there is insufficient space.
@@ -208,8 +206,8 @@ const g = {
208
206
  ],
209
207
  data() {
210
208
  return {
211
- LIST_ITEM_NAVIGATION_TYPES: s,
212
- DROPDOWN_PADDING_CLASSES: r,
209
+ LIST_ITEM_NAVIGATION_TYPES: r,
210
+ DROPDOWN_PADDING_CLASSES: o,
213
211
  EVENT_KEYNAMES: i,
214
212
  openedWithKeyboard: !1,
215
213
  isOpen: null
@@ -268,7 +266,7 @@ const g = {
268
266
  listClasses() {
269
267
  return [
270
268
  "d-dropdown-list",
271
- r[this.padding],
269
+ o[this.padding],
272
270
  this.listClass,
273
271
  { "d-context-menu-list": this.openOnContext }
274
272
  ];
@@ -330,24 +328,24 @@ const g = {
330
328
  }
331
329
  }
332
330
  };
333
- var f = function() {
334
- var t = this, o = t._self._c;
335
- return o("dt-popover", t._g({ ref: "popover", attrs: { "content-width": t.contentWidth, open: t.open, placement: t.placement, "initial-focus-element": t.openedWithKeyboard ? "first" : "dialog", "fallback-placements": t.fallbackPlacements, padding: "none", role: "menu", "append-to": t.appendTo, modal: t.modal, "max-height": t.maxHeight, "max-width": t.maxWidth, "open-with-arrow-keys": t.shouldOpenWithArrowKeys, "open-on-context": t.openOnContext, tether: t.tether, transition: t.transition }, scopedSlots: t._u([{ key: "anchor", fn: function({ attrs: n }) {
331
+ var g = function() {
332
+ var t = this, s = t._self._c;
333
+ return s("dt-popover", t._g({ ref: "popover", attrs: { "content-width": t.contentWidth, open: t.open, placement: t.placement, "initial-focus-element": t.openedWithKeyboard ? "first" : "dialog", "fallback-placements": t.fallbackPlacements, padding: "none", role: "menu", "append-to": t.appendTo, modal: t.modal, "max-height": t.maxHeight, "max-width": t.maxWidth, "open-with-arrow-keys": t.shouldOpenWithArrowKeys, "open-on-context": t.openOnContext, tether: t.tether, transition: t.transition }, scopedSlots: t._u([{ key: "anchor", fn: function({ attrs: n }) {
336
334
  return [t._t("anchor", null, null, n)];
337
335
  } }, { key: "content", fn: function({ close: n }) {
338
- return [o("ul", { ref: "listWrapper", class: t.listClasses, attrs: { id: t.listId, "data-qa": "dt-dropdown-list-wrapper" }, on: { mouseleave: t.clearHighlightIndex, "!mousemove": function(c) {
336
+ return [s("ul", { ref: "listWrapper", class: t.listClasses, attrs: { id: t.listId, "data-qa": "dt-dropdown-list-wrapper" }, on: { mouseleave: t.clearHighlightIndex, "!mousemove": function(y) {
339
337
  return t.onMouseHighlight.apply(null, arguments);
340
- } } }, [t._t("list", null, { close: n })], 2), o("sr-only-close-button", { on: { close: n } })];
338
+ } } }, [t._t("list", null, { close: n })], 2)];
341
339
  } }, { key: "footerContent", fn: function({ close: n }) {
342
340
  return [t._t("footer", null, { close: n })];
343
341
  } }], null, !0) }, t.dropdownListeners));
344
- }, m = [], y = /* @__PURE__ */ d(
342
+ }, f = [], m = /* @__PURE__ */ h(
343
+ u,
345
344
  g,
346
- f,
347
- m
345
+ f
348
346
  );
349
- const P = y.exports;
347
+ const x = m.exports;
350
348
  export {
351
- P as default
349
+ x as default
352
350
  };
353
351
  //# sourceMappingURL=dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","sources":["../../../components/dropdown/dropdown.vue"],"sourcesContent":["<!-- eslint-disable max-lines -->\n<template>\n <dt-popover\n ref=\"popover\"\n :content-width=\"contentWidth\"\n :open=\"open\"\n :placement=\"placement\"\n :initial-focus-element=\"openedWithKeyboard ? 'first' : 'dialog'\"\n :fallback-placements=\"fallbackPlacements\"\n padding=\"none\"\n role=\"menu\"\n :append-to=\"appendTo\"\n :modal=\"modal\"\n :max-height=\"maxHeight\"\n :max-width=\"maxWidth\"\n :open-with-arrow-keys=\"shouldOpenWithArrowKeys\"\n :open-on-context=\"openOnContext\"\n :tether=\"tether\"\n :transition=\"transition\"\n v-on=\"dropdownListeners\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the dropdown -->\n <slot\n ref=\"anchor\"\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content=\"{ close }\">\n <!-- eslint-disable-next-line max-len -->\n <!-- eslint-disable-next-line vuejs-accessibility/mouse-events-have-key-events, vuejs-accessibility/no-static-element-interactions -->\n <ul\n :id=\"listId\"\n ref=\"listWrapper\"\n :class=\"listClasses\"\n data-qa=\"dt-dropdown-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <!-- @slot Slot for the list component -->\n <slot\n name=\"list\"\n :close=\"close\"\n />\n </ul>\n <sr-only-close-button @close=\"close\" />\n </template>\n <template #footerContent=\"{ close }\">\n <!-- @slot Slot for the footer content -->\n <slot\n name=\"footer\"\n :close=\"close\"\n />\n </template>\n </dt-popover>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { DtPopover, POPOVER_APPEND_TO_VALUES } from '@/components/popover';\nimport { LIST_ITEM_NAVIGATION_TYPES } from '@/components/list_item';\nimport { DROPDOWN_PADDING_CLASSES } from './dropdown_constants';\nimport { getUniqueString } from '@/common/utils';\nimport { EVENT_KEYNAMES } from '@/common/constants';\nimport SrOnlyCloseButton from '@/common/sr_only_close_button.vue';\n\nexport default {\n name: 'DtDropdown',\n\n components: {\n DtPopover,\n SrOnlyCloseButton,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n listItemRole: 'menuitem',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n focusOnKeyboardNavigation: true,\n }),\n ],\n\n props: {\n /**\n * Controls whether the dropdown is shown. Leaving this null will have the dropdown trigger on click by default.\n * If you set this value, the default trigger behavior will be disabled and you can control it as you need.\n * Supports .sync modifier\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Opens the dropdown on right click (context menu). If you set this value to `true`,\n * the default trigger behavior will be disabled.\n */\n openOnContext: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Vertical padding size around the list element.\n * @values none, small, large\n */\n padding: {\n type: String,\n default: 'small',\n validator: (padding) => {\n return Object.keys(DROPDOWN_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Determines modal state, dropdown has a modal overlay preventing interaction with elements\n * below it, but it is invisible.\n */\n modal: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Width configuration for the popover content. When its value is 'anchor',\n * the popover content will have the same width as the anchor.\n * @values null, anchor\n */\n contentWidth: {\n type: String,\n default: null,\n },\n\n /**\n * Determines maximum height for the popover before overflow.\n * Possible units rem|px|em\n */\n maxHeight: {\n type: String,\n default: '',\n },\n\n /**\n * Determines maximum width for the popover before overflow.\n * Possible units rem|px|%|em\n */\n maxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * The type of navigation that this component should support.\n * - \"arrow-keys\" for items that are navigated with UP/DOWN keys.\n * - \"tab\" for items that are navigated using the TAB key.\n * - \"none\" for static items that are not interactive.\n * @values arrow-keys, tab, none\n */\n navigationType: {\n type: String,\n default: LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS,\n validator: (t) => Object.values(LIST_ITEM_NAVIGATION_TYPES).includes(t),\n },\n\n /**\n * If the dropdown does not fit in the direction described by \"placement\",\n * it will attempt to change it's direction to the \"fallbackPlacements\".\n *\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n * */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the dropdown displays relative to the anchor.\n */\n placement: {\n type: String,\n default: 'bottom',\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Additional class for the wrapper list element.\n */\n listClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * If set to false the dialog will display over top of the anchor when there is insufficient space.\n * If set to true it will never move from its position relative to the anchor and will clip instead.\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/prevent-overflow/#tether\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * @values true, false\n */\n tether: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Named transition when the content display is toggled.\n * @see DtLazyShow\n */\n transition: {\n type: String,\n default: 'fade',\n },\n },\n\n emits: [\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when dropdown is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n ],\n\n data () {\n return {\n LIST_ITEM_NAVIGATION_TYPES,\n DROPDOWN_PADDING_CLASSES,\n EVENT_KEYNAMES,\n openedWithKeyboard: false,\n isOpen: null,\n };\n },\n\n computed: {\n dropdownListeners () {\n return {\n ...this.$listeners,\n\n opened: isPopoverOpen => {\n this.updateInitialHighlightIndex(isPopoverOpen);\n },\n\n keydown: event => {\n const eventCode = event.code;\n\n switch (eventCode) {\n case EVENT_KEYNAMES.up:\n case EVENT_KEYNAMES.arrowup:\n this.onUpKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.down:\n case EVENT_KEYNAMES.arrowdown:\n this.onDownKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.space:\n case EVENT_KEYNAMES.spacebar:\n this.onSpaceKey();\n break;\n case EVENT_KEYNAMES.enter:\n this.onEnterKey();\n break;\n case EVENT_KEYNAMES.home:\n this.onHomeKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.end:\n this.onEndKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n this.onKeyPress(event);\n break;\n }\n\n this.$emit('keydown', event);\n },\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemEl () {\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n\n isArrowKeyNav () {\n return this.navigationType === this.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS;\n },\n\n listClasses () {\n return [\n 'd-dropdown-list',\n DROPDOWN_PADDING_CLASSES[this.padding],\n this.listClass,\n { 'd-context-menu-list': this.openOnContext },\n ];\n },\n\n shouldOpenWithArrowKeys () {\n return !this.openOnContext;\n },\n },\n\n methods: {\n onMouseHighlight (e) {\n const liElement = e.target.closest('li');\n\n if (liElement && liElement.role && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n liElement.focus();\n }\n },\n\n getListElement () {\n return this.$refs.listWrapper;\n },\n\n clearHighlightIndex () {\n this.setHighlightIndex(-1);\n },\n\n afterHighlight () {\n if (this.highlightIndex === this._itemsLength() - 1) {\n return;\n }\n\n this.$emit('highlight', this.highlightIndex);\n },\n\n updateInitialHighlightIndex (isPopoverOpen) {\n this.isOpen = isPopoverOpen;\n\n if (isPopoverOpen) {\n if (this.openedWithKeyboard && this.isArrowKeyNav) {\n this.setHighlightIndex(0);\n }\n this.$emit('opened', true);\n } else {\n this.clearHighlightIndex();\n this.openedWithKeyboard = false;\n this.$emit('opened', false);\n }\n },\n\n onSpaceKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onEnterKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onUpKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onUpKey();\n }\n },\n\n onDownKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onDownKey();\n }\n },\n\n onHomeKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onHomeKey();\n },\n\n onEndKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onEndKey();\n },\n\n onKeyPress (e) {\n if (!this.isOpen || !this.isArrowKeyNav || !this.isValidLetter(e.key)) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n\n return this.onNavigationKey(e.key);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtPopover","SrOnlyCloseButton","KeyboardNavigation","padding","DROPDOWN_PADDING_CLASSES","item","getUniqueString","LIST_ITEM_NAVIGATION_TYPES","t","appendTo","POPOVER_APPEND_TO_VALUES","EVENT_KEYNAMES","isPopoverOpen","event","liElement"],"mappings":"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"}
1
+ {"version":3,"file":"dropdown.js","sources":["../../../components/dropdown/dropdown.vue"],"sourcesContent":["<!-- eslint-disable max-lines -->\n<template>\n <dt-popover\n ref=\"popover\"\n :content-width=\"contentWidth\"\n :open=\"open\"\n :placement=\"placement\"\n :initial-focus-element=\"openedWithKeyboard ? 'first' : 'dialog'\"\n :fallback-placements=\"fallbackPlacements\"\n padding=\"none\"\n role=\"menu\"\n :append-to=\"appendTo\"\n :modal=\"modal\"\n :max-height=\"maxHeight\"\n :max-width=\"maxWidth\"\n :open-with-arrow-keys=\"shouldOpenWithArrowKeys\"\n :open-on-context=\"openOnContext\"\n :tether=\"tether\"\n :transition=\"transition\"\n v-on=\"dropdownListeners\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the dropdown -->\n <slot\n ref=\"anchor\"\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content=\"{ close }\">\n <!-- eslint-disable-next-line max-len -->\n <!-- eslint-disable-next-line vuejs-accessibility/mouse-events-have-key-events, vuejs-accessibility/no-static-element-interactions -->\n <ul\n :id=\"listId\"\n ref=\"listWrapper\"\n :class=\"listClasses\"\n data-qa=\"dt-dropdown-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <!-- @slot Slot for the list component -->\n <slot\n name=\"list\"\n :close=\"close\"\n />\n </ul>\n </template>\n <template #footerContent=\"{ close }\">\n <!-- @slot Slot for the footer content -->\n <slot\n name=\"footer\"\n :close=\"close\"\n />\n </template>\n </dt-popover>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { DtPopover, POPOVER_APPEND_TO_VALUES } from '@/components/popover';\nimport { LIST_ITEM_NAVIGATION_TYPES } from '@/components/list_item';\nimport { DROPDOWN_PADDING_CLASSES } from './dropdown_constants';\nimport { getUniqueString } from '@/common/utils';\nimport { EVENT_KEYNAMES } from '@/common/constants';\n\nexport default {\n name: 'DtDropdown',\n\n components: {\n DtPopover,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n listItemRole: 'menuitem',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n focusOnKeyboardNavigation: true,\n }),\n ],\n\n props: {\n /**\n * Controls whether the dropdown is shown. Leaving this null will have the dropdown trigger on click by default.\n * If you set this value, the default trigger behavior will be disabled and you can control it as you need.\n * Supports .sync modifier\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Opens the dropdown on right click (context menu). If you set this value to `true`,\n * the default trigger behavior will be disabled.\n */\n openOnContext: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Vertical padding size around the list element.\n * @values none, small, large\n */\n padding: {\n type: String,\n default: 'small',\n validator: (padding) => {\n return Object.keys(DROPDOWN_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Determines modal state, dropdown has a modal overlay preventing interaction with elements\n * below it, but it is invisible.\n */\n modal: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Width configuration for the popover content. When its value is 'anchor',\n * the popover content will have the same width as the anchor.\n * @values null, anchor\n */\n contentWidth: {\n type: String,\n default: null,\n },\n\n /**\n * Determines maximum height for the popover before overflow.\n * Possible units rem|px|em\n */\n maxHeight: {\n type: String,\n default: '',\n },\n\n /**\n * Determines maximum width for the popover before overflow.\n * Possible units rem|px|%|em\n */\n maxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * The type of navigation that this component should support.\n * - \"arrow-keys\" for items that are navigated with UP/DOWN keys.\n * - \"tab\" for items that are navigated using the TAB key.\n * - \"none\" for static items that are not interactive.\n * @values arrow-keys, tab, none\n */\n navigationType: {\n type: String,\n default: LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS,\n validator: (t) => Object.values(LIST_ITEM_NAVIGATION_TYPES).includes(t),\n },\n\n /**\n * If the dropdown does not fit in the direction described by \"placement\",\n * it will attempt to change it's direction to the \"fallbackPlacements\".\n *\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n * */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the dropdown displays relative to the anchor.\n */\n placement: {\n type: String,\n default: 'bottom',\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Additional class for the wrapper list element.\n */\n listClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * If set to false the dialog will display over top of the anchor when there is insufficient space.\n * If set to true it will never move from its position relative to the anchor and will clip instead.\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/prevent-overflow/#tether\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * @values true, false\n */\n tether: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Named transition when the content display is toggled.\n * @see DtLazyShow\n */\n transition: {\n type: String,\n default: 'fade',\n },\n },\n\n emits: [\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when dropdown is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n ],\n\n data () {\n return {\n LIST_ITEM_NAVIGATION_TYPES,\n DROPDOWN_PADDING_CLASSES,\n EVENT_KEYNAMES,\n openedWithKeyboard: false,\n isOpen: null,\n };\n },\n\n computed: {\n dropdownListeners () {\n return {\n ...this.$listeners,\n\n opened: isPopoverOpen => {\n this.updateInitialHighlightIndex(isPopoverOpen);\n },\n\n keydown: event => {\n const eventCode = event.code;\n\n switch (eventCode) {\n case EVENT_KEYNAMES.up:\n case EVENT_KEYNAMES.arrowup:\n this.onUpKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.down:\n case EVENT_KEYNAMES.arrowdown:\n this.onDownKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.space:\n case EVENT_KEYNAMES.spacebar:\n this.onSpaceKey();\n break;\n case EVENT_KEYNAMES.enter:\n this.onEnterKey();\n break;\n case EVENT_KEYNAMES.home:\n this.onHomeKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.end:\n this.onEndKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n this.onKeyPress(event);\n break;\n }\n\n this.$emit('keydown', event);\n },\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemEl () {\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n\n isArrowKeyNav () {\n return this.navigationType === this.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS;\n },\n\n listClasses () {\n return [\n 'd-dropdown-list',\n DROPDOWN_PADDING_CLASSES[this.padding],\n this.listClass,\n { 'd-context-menu-list': this.openOnContext },\n ];\n },\n\n shouldOpenWithArrowKeys () {\n return !this.openOnContext;\n },\n },\n\n methods: {\n onMouseHighlight (e) {\n const liElement = e.target.closest('li');\n\n if (liElement && liElement.role && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n liElement.focus();\n }\n },\n\n getListElement () {\n return this.$refs.listWrapper;\n },\n\n clearHighlightIndex () {\n this.setHighlightIndex(-1);\n },\n\n afterHighlight () {\n if (this.highlightIndex === this._itemsLength() - 1) {\n return;\n }\n\n this.$emit('highlight', this.highlightIndex);\n },\n\n updateInitialHighlightIndex (isPopoverOpen) {\n this.isOpen = isPopoverOpen;\n\n if (isPopoverOpen) {\n if (this.openedWithKeyboard && this.isArrowKeyNav) {\n this.setHighlightIndex(0);\n }\n this.$emit('opened', true);\n } else {\n this.clearHighlightIndex();\n this.openedWithKeyboard = false;\n this.$emit('opened', false);\n }\n },\n\n onSpaceKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onEnterKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onUpKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onUpKey();\n }\n },\n\n onDownKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onDownKey();\n }\n },\n\n onHomeKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onHomeKey();\n },\n\n onEndKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onEndKey();\n },\n\n onKeyPress (e) {\n if (!this.isOpen || !this.isArrowKeyNav || !this.isValidLetter(e.key)) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n\n return this.onNavigationKey(e.key);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtPopover","KeyboardNavigation","padding","DROPDOWN_PADDING_CLASSES","item","getUniqueString","LIST_ITEM_NAVIGATION_TYPES","t","appendTo","POPOVER_APPEND_TO_VALUES","EVENT_KEYNAMES","isPopoverOpen","event","liElement"],"mappings":";;;;;;;;AAiEA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,WAAAC;AAAA,EACA;AAAA,EAEA,QAAA;AAAA,IACAC,EAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,sBAAA;AAAA,MACA,uBAAA;AAAA,MACA,iBAAA;AAAA,MACA,eAAA;AAAA,MACA,2BAAA;AAAA,IACA,CAAA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,eAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA,CAAAC,MACA,OAAA,KAAAC,CAAA,EAAA,KAAA,CAAAC,MAAAA,MAAAF,CAAA;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,cAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,eAAAG,EAAA;AAAA,MAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAAC,EAAA;AAAA,MACA,WAAA,CAAAC,MAAA,OAAA,OAAAD,CAAA,EAAA,SAAAC,CAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYA,oBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MACA,CAAA,MAAA;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA,IAKA,WAAA;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,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,WAAA;AAAA,MACA,MAAA,CAAA,QAAA,OAAA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,UAAA;AAAA,MACA,MAAA,CAAA,aAAA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA,CAAAC,MACAC,EAAA,SAAAD,CAAA,KACAA,aAAA;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,YAAA;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;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,4BAAAF;AAAA,MACA,0BAAAH;AAAA,MACA,gBAAAO;AAAA,MACA,oBAAA;AAAA,MACA,QAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,oBAAA;AACA,aAAA;AAAA,QACA,GAAA,KAAA;AAAA,QAEA,QAAA,CAAAC,MAAA;AACA,eAAA,4BAAAA,CAAA;AAAA,QACA;AAAA,QAEA,SAAA,CAAAC,MAAA;AAGA,kBAFAA,EAAA,MAEA;AAAA,YACA,KAAAF,EAAA;AAAA,YACA,KAAAA,EAAA;AACA,mBAAA,aAAAE,CAAA,GACAA,EAAA,gBAAA,GACAA,EAAA,eAAA;AACA;AAAA,YACA,KAAAF,EAAA;AAAA,YACA,KAAAA,EAAA;AACA,mBAAA,eAAAE,CAAA,GACAA,EAAA,gBAAA,GACAA,EAAA,eAAA;AACA;AAAA,YACA,KAAAF,EAAA;AAAA,YACA,KAAAA,EAAA;AACA,mBAAA,WAAA;AACA;AAAA,YACA,KAAAA,EAAA;AACA,mBAAA,WAAA;AACA;AAAA,YACA,KAAAA,EAAA;AACA,mBAAA,eAAAE,CAAA,GACAA,EAAA,gBAAA,GACAA,EAAA,eAAA;AACA;AAAA,YACA,KAAAF,EAAA;AACA,mBAAA,cAAAE,CAAA,GACAA,EAAA,gBAAA,GACAA,EAAA,eAAA;AACA;AAAA,YACA;AACA,mBAAA,WAAAA,CAAA;AACA;AAAA,UACA;AAEA,eAAA,MAAA,WAAAA,CAAA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,wBAAA;AACA,aAAA,KAAA,qBAAA,KAAA;AAAA,IACA;AAAA,IAEA,kBAAA;AACA,aAAA,KAAA,eAAA,KAAA;AAAA,IACA;AAAA,IAEA,eAAA;AACA,aAAA,KAAA,iBAAA,cAAA,MAAA,KAAA,WAAA;AAAA,IACA;AAAA,IAEA,gBAAA;AACA,aAAA,KAAA,mBAAA,KAAA,2BAAA;AAAA,IACA;AAAA,IAEA,cAAA;AACA,aAAA;AAAA,QACA;AAAA,QACAT,EAAA,KAAA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,EAAA,uBAAA,KAAA,cAAA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,0BAAA;AACA,aAAA,CAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,iBAAA,GAAA;AACA,YAAAU,IAAA,EAAA,OAAA,QAAA,IAAA;AAEA,MAAAA,KAAAA,EAAA,QAAA,KAAA,gBAAAA,EAAA,OACA,KAAA,eAAAA,EAAA,EAAA,GACAA,EAAA,MAAA;AAAA,IAEA;AAAA,IAEA,iBAAA;AACA,aAAA,KAAA,MAAA;AAAA,IACA;AAAA,IAEA,sBAAA;AACA,WAAA,kBAAA,EAAA;AAAA,IACA;AAAA,IAEA,iBAAA;AACA,MAAA,KAAA,mBAAA,KAAA,aAAA,IAAA,KAIA,KAAA,MAAA,aAAA,KAAA,cAAA;AAAA,IACA;AAAA,IAEA,4BAAAF,GAAA;AACA,WAAA,SAAAA,GAEAA,KACA,KAAA,sBAAA,KAAA,iBACA,KAAA,kBAAA,CAAA,GAEA,KAAA,MAAA,UAAA,EAAA,MAEA,KAAA,oBAAA,GACA,KAAA,qBAAA,IACA,KAAA,MAAA,UAAA,EAAA;AAAA,IAEA;AAAA,IAEA,aAAA;AACA,MAAA,KAAA,SACA,KAAA,qBAAA;AAAA,IAEA;AAAA,IAEA,aAAA;AACA,MAAA,KAAA,SACA,KAAA,qBAAA;AAAA,IAEA;AAAA,IAEA,eAAA;AACA,UAAA,CAAA,KAAA,QAAA;AACA,aAAA,qBAAA;AACA;AAAA,MACA;AACA,UAAA,KAAA;AACA,eAAA,KAAA;IAEA;AAAA,IAEA,iBAAA;AACA,UAAA,CAAA,KAAA,QAAA;AACA,aAAA,qBAAA;AACA;AAAA,MACA;AACA,UAAA,KAAA;AACA,eAAA,KAAA;IAEA;AAAA,IAEA,iBAAA;AACA,UAAA,GAAA,KAAA,UAAA,CAAA,KAAA;AAIA,eAAA,KAAA;IACA;AAAA,IAEA,gBAAA;AACA,UAAA,GAAA,KAAA,UAAA,CAAA,KAAA;AAIA,eAAA,KAAA;IACA;AAAA,IAEA,WAAA,GAAA;AACA,UAAA,GAAA,KAAA,UAAA,CAAA,KAAA,iBAAA,CAAA,KAAA,cAAA,EAAA,GAAA;AAIA,iBAAA,gBAAA,GACA,EAAA,eAAA,GAEA,KAAA,gBAAA,EAAA,GAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;"}