@dialpad/dialtone-vue 3.220.0-next.7 → 3.221.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/dist/{Combobox-CAnDv0OR.js → Combobox-By01ETlj.js} +1 -1
  2. package/dist/{Combobox-CAnDv0OR.js.map → Combobox-By01ETlj.js.map} +1 -1
  3. package/dist/{Combobox-D_2858_j.cjs → Combobox-D4hc1-41.cjs} +1 -1
  4. package/dist/{Combobox-D_2858_j.cjs.map → Combobox-D4hc1-41.cjs.map} +1 -1
  5. package/dist/{Datepicker-O7Xpw5LW.js → Datepicker-CGFa1nGm.js} +24 -24
  6. package/dist/{Datepicker-O7Xpw5LW.js.map → Datepicker-CGFa1nGm.js.map} +1 -1
  7. package/dist/{Datepicker-PhSgm8nW.cjs → Datepicker-DkGmnVc8.cjs} +2 -2
  8. package/dist/{Datepicker-PhSgm8nW.cjs.map → Datepicker-DkGmnVc8.cjs.map} +1 -1
  9. package/dist/{EmojiPicker-VfPVHqD-.js → EmojiPicker-BllVwJf4.js} +1 -1
  10. package/dist/{EmojiPicker-VfPVHqD-.js.map → EmojiPicker-BllVwJf4.js.map} +1 -1
  11. package/dist/{EmojiPicker-8mce5xF3.cjs → EmojiPicker-KO1yhODv.cjs} +1 -1
  12. package/dist/{EmojiPicker-8mce5xF3.cjs.map → EmojiPicker-KO1yhODv.cjs.map} +1 -1
  13. package/dist/{MarkdownRenderer-CpbKlG4G.js → MarkdownRenderer-C3MZDB2I.js} +1 -1
  14. package/dist/{MarkdownRenderer-CpbKlG4G.js.map → MarkdownRenderer-C3MZDB2I.js.map} +1 -1
  15. package/dist/{MarkdownRenderer-8KTeck1X.cjs → MarkdownRenderer-D5XWsyQk.cjs} +1 -1
  16. package/dist/{MarkdownRenderer-8KTeck1X.cjs.map → MarkdownRenderer-D5XWsyQk.cjs.map} +1 -1
  17. package/dist/Presence-CGgyodnC.js +112 -0
  18. package/dist/Presence-CGgyodnC.js.map +1 -0
  19. package/dist/Presence-DLM3JR-n.cjs +2 -0
  20. package/dist/Presence-DLM3JR-n.cjs.map +1 -0
  21. package/dist/{Resizable-C_v1ZDLc.cjs → Resizable-By77VE9Z.cjs} +2 -2
  22. package/dist/{Resizable-C_v1ZDLc.cjs.map → Resizable-By77VE9Z.cjs.map} +1 -1
  23. package/dist/{Resizable-DCXMOf5K.js → Resizable-DfxQLdKg.js} +39 -39
  24. package/dist/{Resizable-DCXMOf5K.js.map → Resizable-DfxQLdKg.js.map} +1 -1
  25. package/dist/{ResizableHandle-Ctbq7YaC.js → ResizableHandle-NufAaZKD.js} +5 -4
  26. package/dist/ResizableHandle-NufAaZKD.js.map +1 -0
  27. package/dist/{ResizableHandle-C2JRlAys.cjs → ResizableHandle-YLRV6TBC.cjs} +2 -2
  28. package/dist/ResizableHandle-YLRV6TBC.cjs.map +1 -0
  29. package/dist/{ResizableUtils-fMpf6KT9.js → ResizableUtils-C0M5GMHZ.js} +41 -41
  30. package/dist/ResizableUtils-C0M5GMHZ.js.map +1 -0
  31. package/dist/ResizableUtils-C_MYnKwG.cjs +2 -0
  32. package/dist/ResizableUtils-C_MYnKwG.cjs.map +1 -0
  33. package/dist/{RichTextEditor-CYcgwJNQ.js → RichTextEditor-D5D8AvLl.js} +7 -7
  34. package/dist/{RichTextEditor-CYcgwJNQ.js.map → RichTextEditor-D5D8AvLl.js.map} +1 -1
  35. package/dist/{RichTextEditor-CZ9YBleW.cjs → RichTextEditor-D6XK5dqu.cjs} +3 -3
  36. package/dist/{RichTextEditor-CZ9YBleW.cjs.map → RichTextEditor-D6XK5dqu.cjs.map} +1 -1
  37. package/dist/{Scroller-1T9n3qZA.cjs → Scroller-BZ6uXRvs.cjs} +1 -1
  38. package/dist/{Scroller-1T9n3qZA.cjs.map → Scroller-BZ6uXRvs.cjs.map} +1 -1
  39. package/dist/{Scroller-DLGxzJLL.js → Scroller-PdWd9P1m.js} +1 -1
  40. package/dist/{Scroller-DLGxzJLL.js.map → Scroller-PdWd9P1m.js.map} +1 -1
  41. package/dist/{Toast-pX3QCKz-.js → Toast-CHbVmbBg.js} +1 -1
  42. package/dist/{Toast-pX3QCKz-.js.map → Toast-CHbVmbBg.js.map} +1 -1
  43. package/dist/{Toast-CM4ZR3wM.cjs → Toast-DX-REYXG.cjs} +1 -1
  44. package/dist/{Toast-CM4ZR3wM.cjs.map → Toast-DX-REYXG.cjs.map} +1 -1
  45. package/dist/{UseResizableCalculations-BbtEWPKc.cjs → UseResizableCalculations-Bdu7nGdf.cjs} +2 -2
  46. package/dist/{UseResizableCalculations-BbtEWPKc.cjs.map → UseResizableCalculations-Bdu7nGdf.cjs.map} +1 -1
  47. package/dist/{UseResizableCalculations-CwZt5p__.js → UseResizableCalculations-vpHC5gfA.js} +2 -2
  48. package/dist/{UseResizableCalculations-CwZt5p__.js.map → UseResizableCalculations-vpHC5gfA.js.map} +1 -1
  49. package/dist/{attachment_carousel-1qxTI-NN.js → attachment_carousel-BFIAXWOZ.js} +1 -1
  50. package/dist/{attachment_carousel-1qxTI-NN.js.map → attachment_carousel-BFIAXWOZ.js.map} +1 -1
  51. package/dist/{attachment_carousel-wnZS3vEt.cjs → attachment_carousel-BJxqNJ5T.cjs} +1 -1
  52. package/dist/{attachment_carousel-wnZS3vEt.cjs.map → attachment_carousel-BJxqNJ5T.cjs.map} +1 -1
  53. package/dist/common/constants/index.cjs +1 -1
  54. package/dist/common/constants/index.cjs.map +1 -1
  55. package/dist/common/constants/index.d.ts +1 -0
  56. package/dist/common/constants/index.d.ts.map +1 -1
  57. package/dist/common/constants/index.js +2 -1
  58. package/dist/common/constants/index.js.map +1 -1
  59. package/dist/common/sr_only_close_button.vue.d.ts +3 -3
  60. package/dist/common/utils/index.cjs +1 -1
  61. package/dist/common/utils/index.cjs.map +1 -1
  62. package/dist/common/utils/index.d.ts.map +1 -1
  63. package/dist/common/utils/index.js +1 -1
  64. package/dist/common/utils/index.js.map +1 -1
  65. package/dist/component-documentation.json +1 -1
  66. package/dist/components/Avatar/Avatar.vue.d.ts +18 -4
  67. package/dist/components/Avatar/Avatar.vue.d.ts.map +1 -1
  68. package/dist/components/Avatar/AvatarConstants.d.ts +1 -0
  69. package/dist/components/Avatar/AvatarConstants.d.ts.map +1 -1
  70. package/dist/components/Badge/Badge.vue.d.ts +1 -1
  71. package/dist/components/Banner/Banner.vue.d.ts +8 -8
  72. package/dist/components/Button/Button.vue.d.ts +3 -3
  73. package/dist/components/Checkbox/Checkbox.vue.d.ts +133 -2
  74. package/dist/components/Checkbox/Checkbox.vue.d.ts.map +1 -1
  75. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts +265 -3
  76. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts.map +1 -1
  77. package/dist/components/Chip/Chip.vue.d.ts +6 -6
  78. package/dist/components/Collapsible/Collapsible.vue.d.ts +4 -4
  79. package/dist/components/Combobox/Combobox.vue.d.ts +11 -11
  80. package/dist/components/Combobox/ComboboxLoadingList.vue.d.ts +11 -11
  81. package/dist/components/ComboboxMultiSelect/ComboboxMultiSelect.vue.d.ts.map +1 -1
  82. package/dist/components/ComboboxWithPopover/ComboboxWithPopover.vue.d.ts +39 -30
  83. package/dist/components/ComboboxWithPopover/ComboboxWithPopover.vue.d.ts.map +1 -1
  84. package/dist/components/Dropdown/Dropdown.vue.d.ts +7 -7
  85. package/dist/components/Emoji/Emoji.vue.d.ts +11 -11
  86. package/dist/components/EmojiPicker/EmojiPicker.vue.d.ts +136 -5
  87. package/dist/components/EmojiPicker/EmojiPicker.vue.d.ts.map +1 -1
  88. package/dist/components/EmojiPicker/Modules/EmojiSearch.vue.d.ts +136 -5
  89. package/dist/components/EmojiPicker/Modules/EmojiSearch.vue.d.ts.map +1 -1
  90. package/dist/components/EmojiTextWrapper/EmojiTextWrapper.vue.d.ts +11 -11
  91. package/dist/components/FilterPill/FilterPill.vue.d.ts +417 -24
  92. package/dist/components/FilterPill/FilterPill.vue.d.ts.map +1 -1
  93. package/dist/components/Hovercard/Hovercard.vue.d.ts +16 -16
  94. package/dist/components/ImageViewer/ImageViewer.vue.d.ts +6 -6
  95. package/dist/components/Input/Input.vue.d.ts +135 -4
  96. package/dist/components/Input/Input.vue.d.ts.map +1 -1
  97. package/dist/components/InputGroup/InputGroup.vue.d.ts +265 -3
  98. package/dist/components/InputGroup/InputGroup.vue.d.ts.map +1 -1
  99. package/dist/components/KeyboardShortcut/KeyboardShortcut.vue.d.ts +1 -1
  100. package/dist/components/Modal/Modal.vue.d.ts +17 -8
  101. package/dist/components/Modal/Modal.vue.d.ts.map +1 -1
  102. package/dist/components/Notice/Notice.vue.d.ts +8 -8
  103. package/dist/components/Notice/NoticeAction.vue.d.ts +6 -6
  104. package/dist/components/Notice/NoticeContent.vue.d.ts +1 -1
  105. package/dist/components/Pagination/Pagination.vue.d.ts +3 -3
  106. package/dist/components/Popover/Popover.vue.d.ts +7 -7
  107. package/dist/components/Popover/PopoverHeaderFooter.vue.d.ts +3 -3
  108. package/dist/components/Presence/Presence.vue.d.ts +15 -1
  109. package/dist/components/Presence/Presence.vue.d.ts.map +1 -1
  110. package/dist/components/Presence/PresenceConstants.d.ts +1 -0
  111. package/dist/components/Presence/PresenceConstants.d.ts.map +1 -1
  112. package/dist/components/Presence/modules/presence_active_icon.vue.d.ts +3 -0
  113. package/dist/components/Presence/modules/presence_active_icon.vue.d.ts.map +1 -0
  114. package/dist/components/Presence/modules/presence_away_icon.vue.d.ts +3 -0
  115. package/dist/components/Presence/modules/presence_away_icon.vue.d.ts.map +1 -0
  116. package/dist/components/Presence/modules/presence_busy_icon.vue.d.ts +3 -0
  117. package/dist/components/Presence/modules/presence_busy_icon.vue.d.ts.map +1 -0
  118. package/dist/components/Presence/modules/presence_dnd_icon.vue.d.ts +3 -0
  119. package/dist/components/Presence/modules/presence_dnd_icon.vue.d.ts.map +1 -0
  120. package/dist/components/Radio/Radio.vue.d.ts +133 -2
  121. package/dist/components/Radio/Radio.vue.d.ts.map +1 -1
  122. package/dist/components/RadioGroup/RadioGroup.vue.d.ts +265 -3
  123. package/dist/components/RadioGroup/RadioGroup.vue.d.ts.map +1 -1
  124. package/dist/components/Resizable/Composables/UseResizableDrag.d.ts.map +1 -1
  125. package/dist/components/Resizable/ResizableConstants.d.ts +1 -0
  126. package/dist/components/Resizable/ResizableConstants.d.ts.map +1 -1
  127. package/dist/components/Resizable/ResizableHandle.vue.d.ts.map +1 -1
  128. package/dist/components/RichTextEditor/Extensions/Emoji/EmojiComponent.vue.d.ts +11 -11
  129. package/dist/components/RichTextEditor/Extensions/Emoji/EmojiSuggestion.vue.d.ts +11 -11
  130. package/dist/components/RichTextEditor/Extensions/Mentions/MentionSuggestion.vue.d.ts +19 -5
  131. package/dist/components/RichTextEditor/Extensions/SlashCommand/SlashCommandSuggestion.vue.d.ts +1 -1
  132. package/dist/components/RichTextEditor/Extensions/Variable/VariableComponent.vue.d.ts +146 -15
  133. package/dist/components/RichTextEditor/Extensions/Variable/VariableComponent.vue.d.ts.map +1 -1
  134. package/dist/components/RichTextEditor/RichTextEditor.vue.d.ts +3 -3
  135. package/dist/components/SegmentedControl/SegmentedControl.vue.d.ts +2 -2
  136. package/dist/components/SelectMenu/SelectMenu.vue.d.ts +133 -2
  137. package/dist/components/SelectMenu/SelectMenu.vue.d.ts.map +1 -1
  138. package/dist/components/Skeleton/Skeleton.vue.d.ts +11 -11
  139. package/dist/components/Skeleton/SkeletonListItem.vue.d.ts +5 -5
  140. package/dist/components/Skeleton/SkeletonParagraph.vue.d.ts +2 -2
  141. package/dist/components/Skeleton/SkeletonShape.vue.d.ts +2 -2
  142. package/dist/components/Skeleton/SkeletonText.vue.d.ts +1 -1
  143. package/dist/components/SplitButton/SplitButton.vue.d.ts +18 -18
  144. package/dist/components/SplitButton/SplitButtonEnd.vue.d.ts +5 -5
  145. package/dist/components/SplitButton/SplitButtonStart.vue.d.ts +6 -6
  146. package/dist/components/Tab/Tab.vue.d.ts +3 -3
  147. package/dist/components/Tab/TabGroup.vue.d.ts +1 -1
  148. package/dist/components/Text/Text.vue.d.ts +1 -1
  149. package/dist/components/Toast/Layouts/ToastLayoutAlternate.vue.d.ts +8 -8
  150. package/dist/components/Toast/Layouts/ToastLayoutDefault.vue.d.ts +8 -8
  151. package/dist/components/Toast/Toast.vue.d.ts +34 -34
  152. package/dist/components/Toggle/Toggle.vue.d.ts +2 -2
  153. package/dist/components/ValidationMessages/ValidationMessages.vue.d.ts +132 -1
  154. package/dist/components/ValidationMessages/ValidationMessages.vue.d.ts.map +1 -1
  155. package/dist/dialtone-vue.cjs +1 -1
  156. package/dist/dialtone-vue.js +63 -63
  157. package/dist/lib/attachment-carousel/attachment-carousel.cjs +1 -1
  158. package/dist/lib/attachment-carousel/attachment-carousel.js +1 -1
  159. package/dist/lib/attachment-carousel/index.cjs +1 -1
  160. package/dist/lib/attachment-carousel/index.js +1 -1
  161. package/dist/lib/avatar/avatar-constants.cjs +1 -1
  162. package/dist/lib/avatar/avatar-constants.cjs.map +1 -1
  163. package/dist/lib/avatar/avatar-constants.js +2 -1
  164. package/dist/lib/avatar/avatar-constants.js.map +1 -1
  165. package/dist/lib/avatar/avatar.cjs +1 -1
  166. package/dist/lib/avatar/avatar.cjs.map +1 -1
  167. package/dist/lib/avatar/avatar.js +1 -1
  168. package/dist/lib/avatar/avatar.js.map +1 -1
  169. package/dist/lib/box/box.cjs.map +1 -1
  170. package/dist/lib/box/box.js.map +1 -1
  171. package/dist/lib/button/button.cjs.map +1 -1
  172. package/dist/lib/button/button.js.map +1 -1
  173. package/dist/lib/combobox/combobox.cjs +1 -1
  174. package/dist/lib/combobox/combobox.js +1 -1
  175. package/dist/lib/combobox/index.cjs +1 -1
  176. package/dist/lib/combobox/index.js +1 -1
  177. package/dist/lib/combobox-multi-select/combobox-multi-select.cjs +1 -1
  178. package/dist/lib/combobox-multi-select/combobox-multi-select.cjs.map +1 -1
  179. package/dist/lib/combobox-multi-select/combobox-multi-select.js +19 -7
  180. package/dist/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
  181. package/dist/lib/combobox-with-popover/combobox-with-popover.cjs +1 -1
  182. package/dist/lib/combobox-with-popover/combobox-with-popover.cjs.map +1 -1
  183. package/dist/lib/combobox-with-popover/combobox-with-popover.js +11 -1
  184. package/dist/lib/combobox-with-popover/combobox-with-popover.js.map +1 -1
  185. package/dist/lib/contact-info/contact-info.cjs.map +1 -1
  186. package/dist/lib/contact-info/contact-info.js.map +1 -1
  187. package/dist/lib/contact-row/contact-row.cjs.map +1 -1
  188. package/dist/lib/contact-row/contact-row.js.map +1 -1
  189. package/dist/lib/datepicker/datepicker.cjs +1 -1
  190. package/dist/lib/datepicker/datepicker.js +1 -1
  191. package/dist/lib/datepicker/index.cjs +1 -1
  192. package/dist/lib/datepicker/index.js +1 -1
  193. package/dist/lib/editor/editor.cjs +1 -1
  194. package/dist/lib/editor/editor.js +2 -2
  195. package/dist/lib/emoji-picker/emoji-picker.cjs +1 -1
  196. package/dist/lib/emoji-picker/emoji-picker.js +1 -1
  197. package/dist/lib/emoji-picker/index.cjs +1 -1
  198. package/dist/lib/emoji-picker/index.js +1 -1
  199. package/dist/lib/item-layout/item-layout.cjs.map +1 -1
  200. package/dist/lib/item-layout/item-layout.js.map +1 -1
  201. package/dist/lib/message-input/index.cjs +1 -1
  202. package/dist/lib/message-input/index.js +1 -1
  203. package/dist/lib/message-input/message-input.cjs +1 -1
  204. package/dist/lib/message-input/message-input.js +1 -1
  205. package/dist/lib/modal/modal.cjs +1 -1
  206. package/dist/lib/modal/modal.cjs.map +1 -1
  207. package/dist/lib/modal/modal.js +5 -0
  208. package/dist/lib/modal/modal.js.map +1 -1
  209. package/dist/lib/presence/index.cjs +1 -1
  210. package/dist/lib/presence/index.js +1 -1
  211. package/dist/lib/presence/presence-constants.cjs +1 -1
  212. package/dist/lib/presence/presence-constants.cjs.map +1 -1
  213. package/dist/lib/presence/presence-constants.js +4 -2
  214. package/dist/lib/presence/presence-constants.js.map +1 -1
  215. package/dist/lib/presence/presence.cjs +1 -2
  216. package/dist/lib/presence/presence.js +2 -40
  217. package/dist/lib/resizable/index.cjs +1 -1
  218. package/dist/lib/resizable/index.js +5 -5
  219. package/dist/lib/resizable/resizable-handle.cjs +1 -1
  220. package/dist/lib/resizable/resizable-handle.js +1 -1
  221. package/dist/lib/resizable/resizable-panel.cjs +1 -1
  222. package/dist/lib/resizable/resizable-panel.js +1 -1
  223. package/dist/lib/resizable/resizable.cjs +1 -1
  224. package/dist/lib/resizable/resizable.js +1 -1
  225. package/dist/lib/rich-text-editor/index.cjs +1 -1
  226. package/dist/lib/rich-text-editor/index.js +1 -1
  227. package/dist/lib/rich-text-editor/markdown-renderer.cjs +1 -1
  228. package/dist/lib/rich-text-editor/markdown-renderer.js +1 -1
  229. package/dist/lib/rich-text-editor/rich-text-editor.cjs +1 -1
  230. package/dist/lib/rich-text-editor/rich-text-editor.js +1 -1
  231. package/dist/lib/scroller/index.cjs +1 -1
  232. package/dist/lib/scroller/index.js +1 -1
  233. package/dist/lib/scroller/scroller.cjs +1 -1
  234. package/dist/lib/scroller/scroller.js +1 -1
  235. package/dist/lib/segmented-control/segmented-control.cjs +1 -1
  236. package/dist/lib/segmented-control/segmented-control.cjs.map +1 -1
  237. package/dist/lib/segmented-control/segmented-control.js +1 -1
  238. package/dist/lib/segmented-control/segmented-control.js.map +1 -1
  239. package/dist/lib/toast/index.cjs +1 -1
  240. package/dist/lib/toast/index.js +1 -1
  241. package/dist/lib/toast/toast.cjs +1 -1
  242. package/dist/lib/toast/toast.js +1 -1
  243. package/dist/lib/validation-messages/validation-messages.cjs +1 -1
  244. package/dist/lib/validation-messages/validation-messages.cjs.map +1 -1
  245. package/dist/lib/validation-messages/validation-messages.js +41 -13
  246. package/dist/lib/validation-messages/validation-messages.js.map +1 -1
  247. package/dist/{message_input-C_TN2Zgh.cjs → message_input-DrPT3pG4.cjs} +2 -2
  248. package/dist/{message_input-C_TN2Zgh.cjs.map → message_input-DrPT3pG4.cjs.map} +1 -1
  249. package/dist/{message_input-CJHgmFLg.js → message_input-GihDjqTJ.js} +3 -3
  250. package/dist/{message_input-CJHgmFLg.js.map → message_input-GihDjqTJ.js.map} +1 -1
  251. package/dist/recipes/buttons/callbar_button/callbar_button.vue.d.ts +4 -4
  252. package/dist/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +15 -15
  253. package/dist/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +15 -15
  254. package/dist/recipes/cards/ivr_node/ivr_node.vue.d.ts +10 -10
  255. package/dist/recipes/chips/grouped_chip/grouped_chip.vue.d.ts +6 -6
  256. package/dist/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +12 -12
  257. package/dist/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +9 -9
  258. package/dist/recipes/conversation_view/editor/EditorToolbarButton.vue.d.ts +3 -3
  259. package/dist/recipes/conversation_view/editor/EditorToolbarDropdownButton.vue.d.ts +10 -10
  260. package/dist/recipes/conversation_view/editor/EditorToolbarPopoverButton.vue.d.ts +10 -10
  261. package/dist/recipes/conversation_view/editor/editor.vue.d.ts +182 -51
  262. package/dist/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  263. package/dist/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +25 -25
  264. package/dist/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +4 -4
  265. package/dist/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +19 -5
  266. package/dist/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts.map +1 -1
  267. package/dist/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts +3 -3
  268. package/dist/recipes/conversation_view/message_input/message_input.vue.d.ts +437 -44
  269. package/dist/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  270. package/dist/recipes/conversation_view/message_input/message_input_button.vue.d.ts +4 -4
  271. package/dist/recipes/conversation_view/message_input/message_input_link.vue.d.ts +149 -18
  272. package/dist/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -1
  273. package/dist/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +4 -4
  274. package/dist/recipes/header/settings_menu_button/settings_menu_button.vue.d.ts +3 -3
  275. package/dist/recipes/item_layout/contact_info/contact_info.vue.d.ts +18 -4
  276. package/dist/recipes/leftbar/callbox/callbox.vue.d.ts +19 -5
  277. package/dist/recipes/leftbar/callbox/callbox.vue.d.ts.map +1 -1
  278. package/dist/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +15 -15
  279. package/dist/recipes/leftbar/contact_row/contact_row.vue.d.ts +63 -35
  280. package/dist/recipes/leftbar/contact_row/contact_row.vue.d.ts.map +1 -1
  281. package/dist/recipes/leftbar/general_row/general_row.vue.d.ts +34 -20
  282. package/dist/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  283. package/dist/recipes/leftbar/group_row/group_row.vue.d.ts +34 -20
  284. package/dist/recipes/leftbar/group_row/group_row.vue.d.ts.map +1 -1
  285. package/package.json +5 -5
  286. package/dist/ResizableHandle-C2JRlAys.cjs.map +0 -1
  287. package/dist/ResizableHandle-Ctbq7YaC.js.map +0 -1
  288. package/dist/ResizableUtils-NEOy9Sop.cjs +0 -2
  289. package/dist/ResizableUtils-NEOy9Sop.cjs.map +0 -1
  290. package/dist/ResizableUtils-fMpf6KT9.js.map +0 -1
  291. package/dist/lib/presence/presence.cjs.map +0 -1
  292. package/dist/lib/presence/presence.js.map +0 -1
@@ -226,4 +226,4 @@ var C = /* @__PURE__ */ r(b, [["render", S]]);
226
226
  //#endregion
227
227
  export { C as t };
228
228
 
229
- //# sourceMappingURL=Combobox-CAnDv0OR.js.map
229
+ //# sourceMappingURL=Combobox-By01ETlj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox-CAnDv0OR.js","names":[],"sources":["../components/Combobox/Combobox.vue"],"sourcesContent":["<!-- eslint-disable vuejs-accessibility/no-static-element-interactions -->\n<template>\n <div\n @keydown.esc.stop=\"onKeyValidation($event, 'onEscapeKey')\"\n @keydown.enter.exact=\"onKeyValidation($event, 'onEnterKey')\"\n @keydown.up.stop.prevent=\"onKeyValidation($event, 'onUpKey')\"\n @keydown.down.stop.prevent=\"onKeyValidation($event, 'onDownKey')\"\n @keydown.home.stop.prevent=\"onKeyValidation($event, 'onHomeKey')\"\n @keydown.end.stop.prevent=\"onKeyValidation($event, 'onEndKey')\"\n >\n <div data-qa=\"dt-combobox-input-wrapper\">\n <!-- @slot Slot for the combobox input element -->\n <slot\n name=\"input\"\n :input-props=\"inputProps\"\n />\n </div>\n\n <div\n v-if=\"showList\"\n ref=\"listWrapper\"\n data-qa=\"dt-combobox-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @focusout=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <combobox-loading-list\n v-if=\"loading && !listRenderedOutside\"\n v-bind=\"listProps\"\n />\n <combobox-empty-list\n v-else-if=\"emptyList && (emptyStateMessage || hasSlotContent($slots.emptyListItem)) && !listRenderedOutside\"\n v-bind=\"listProps\"\n :message=\"emptyStateMessage\"\n :item-class=\"emptyStateClass\"\n >\n <slot name=\"emptyListItem\" />\n </combobox-empty-list>\n <!-- @slot Slot for the combobox list element -->\n <slot\n v-else\n name=\"list\"\n :list-props=\"listProps\"\n :opened=\"onOpen\"\n :clear-highlight-index=\"clearHighlightIndex\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport ComboboxLoadingList from './ComboboxLoadingList.vue';\nimport ComboboxEmptyList from './ComboboxEmptyList.vue';\nimport { DtKeyboardListNavigationMixin } from '@/common/mixins';\nimport { getUniqueString, hasSlotContent } from '@/common/utils';\nimport { COMBOBOX_LABEL_SIZES } from '@/components/Combobox';\nimport { COMPONENT_SIZES } from '@/common/constants';\n\n/**\n * A combobox is a semantic component that displays an input element combined with a listbox,\n * which enables the user to select items from the list.\n * @see https://dialtone.dialpad.com/components/combobox.html\n */\nexport default {\n name: 'DtCombobox',\n\n components: {\n ComboboxLoadingList,\n ComboboxEmptyList,\n },\n\n mixins: [\n DtKeyboardListNavigationMixin({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n }),\n ],\n\n props: {\n /**\n * String to use for the input label.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n showLabel: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Size of the input.\n * @values 100, 200, 300, 400, 500\n */\n size: {\n type: [String, Number],\n default: null,\n validator: (t) => t === null\n || Object.values(COMBOBOX_LABEL_SIZES).includes(t)\n || Object.keys(COMPONENT_SIZES).includes(String(t)),\n },\n\n /**\n * Description for the input\n */\n description: {\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 * 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 * Determines when to show the list element and also controls the aria-expanded attribute.\n * @values true, false\n */\n showList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If the list is rendered outside the component, like when using popover as the list wrapper.\n * @values true, false\n */\n listRenderedOutside: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines when to show the skeletons and also controls aria-busy attribute.\n * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the list to an empty state, and displays the message from prop `emptyStateMessage`.\n * @values true, false\n */\n emptyList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Message to show when the list is empty\n */\n emptyStateMessage: {\n type: String,\n default: '',\n },\n\n /**\n * Additional class name for the empty list element.\n * Can accept all of: String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n emptyStateClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Programmatically click on the active list item element when a selection\n * comes from keyboard navigation, i.e. pressing the \"Enter\" key.\n * @values true, false\n */\n clickOnSelect: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Event fired when item selected\n *\n * @event select\n * @type {Number}\n */\n 'select',\n\n /**\n * Event fired when pressing escape\n *\n * @event escape\n */\n 'escape',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when list is shown or hidden\n *\n * @event opened\n * @type {Boolean}\n */\n 'opened',\n ],\n\n data () {\n return {\n // If the list is rendered at the root, rather than as a child\n // of this component, this is the ref to that dom element. Set\n // by the onOpen method.\n outsideRenderedListRef: null,\n hasSlotContent,\n };\n },\n\n computed: {\n inputProps () {\n return {\n label: this.label,\n showLabel: this.showLabel,\n size: this.size,\n description: this.description,\n role: 'combobox',\n 'aria-label': this.label,\n 'aria-expanded': this.showList.toString(),\n 'aria-owns': this.listId,\n 'aria-haspopup': 'listbox',\n 'aria-activedescendant': this.activeItemId,\n 'aria-controls': this.listId,\n };\n },\n\n listProps () {\n return {\n role: 'listbox',\n id: this.listId,\n // The list has to be positioned relatively so that the auto-scroll can\n // calculate the correct offset for the list items.\n class: 'd-ps-relative',\n 'aria-label': this.label,\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemId () {\n if (!this.showList || this.highlightIndex < 0 || this.loading) {\n return;\n }\n return this.highlightId;\n },\n\n activeItemEl () {\n if (!this.highlightId) return '';\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n },\n\n watch: {\n showList (showList) {\n // When the list's visibility changes reset the highlight index.\n\n if (!this.listRenderedOutside) {\n this.setInitialHighlightIndex();\n this.$emit('opened', showList);\n }\n\n if (!showList && this.outsideRenderedListRef) {\n this.outsideRenderedListRef.removeEventListener('mousemove', this.onMouseHighlight);\n this.outsideRenderedListRef = null;\n }\n },\n\n loading () {\n this.$nextTick(() => {\n this.setInitialHighlightIndex();\n });\n },\n\n $props: {\n deep: true,\n immediate: true,\n handler () {\n this.validateEmptyListProps();\n },\n },\n },\n\n created () {\n this.validateEmptyListProps();\n },\n\n methods: {\n onMouseHighlight (e) {\n if (this.loading) return;\n\n const liElement = e.target.closest('li');\n\n if (liElement && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n }\n },\n\n getListElement () {\n return this.outsideRenderedListRef ?? this.$refs.listWrapper?.querySelector(`#${this.listId}`);\n },\n\n clearHighlightIndex () {\n if (this.showList) {\n this.setHighlightIndex(-1);\n }\n },\n\n afterHighlight () {\n if (this.loading) return;\n this.$emit('highlight', this.highlightIndex);\n },\n\n onEnterKey () {\n if (this.loading || this.emptyList) return;\n\n if (this.highlightIndex >= 0) {\n this.$emit('select', this.highlightIndex);\n\n if (this.clickOnSelect) {\n this.activeItemEl?.click();\n }\n }\n },\n\n onEscapeKey () {\n this.$emit('escape');\n },\n\n onOpen (open, contentRef) {\n this.outsideRenderedListRef = contentRef;\n this.outsideRenderedListRef?.addEventListener('mousemove', this.onMouseHighlight);\n this.$emit('opened', open);\n\n if (open) {\n this.setInitialHighlightIndex();\n }\n },\n\n onKeyValidation (e, eventHandler) {\n if (!this.showList || !this.getListElement()) return;\n\n this[eventHandler](e);\n },\n\n setInitialHighlightIndex () {\n if (!this.showList) return;\n this.$nextTick(() => {\n // When the list's is shown, reset the highlight index.\n // If the list is loading, set to -1\n this.setHighlightIndex(this.loading ? -1 : 0);\n });\n },\n\n validateEmptyListProps () {\n if (this.$slots.emptyListItem) { return; }\n\n if (this.emptyList && !this.emptyStateMessage) {\n console.error(`Invalid props: you must pass both props emptyList and emptyStateMessage to show the\n empty message.`);\n }\n },\n },\n};\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox-By01ETlj.js","names":[],"sources":["../components/Combobox/Combobox.vue"],"sourcesContent":["<!-- eslint-disable vuejs-accessibility/no-static-element-interactions -->\n<template>\n <div\n @keydown.esc.stop=\"onKeyValidation($event, 'onEscapeKey')\"\n @keydown.enter.exact=\"onKeyValidation($event, 'onEnterKey')\"\n @keydown.up.stop.prevent=\"onKeyValidation($event, 'onUpKey')\"\n @keydown.down.stop.prevent=\"onKeyValidation($event, 'onDownKey')\"\n @keydown.home.stop.prevent=\"onKeyValidation($event, 'onHomeKey')\"\n @keydown.end.stop.prevent=\"onKeyValidation($event, 'onEndKey')\"\n >\n <div data-qa=\"dt-combobox-input-wrapper\">\n <!-- @slot Slot for the combobox input element -->\n <slot\n name=\"input\"\n :input-props=\"inputProps\"\n />\n </div>\n\n <div\n v-if=\"showList\"\n ref=\"listWrapper\"\n data-qa=\"dt-combobox-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @focusout=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <combobox-loading-list\n v-if=\"loading && !listRenderedOutside\"\n v-bind=\"listProps\"\n />\n <combobox-empty-list\n v-else-if=\"emptyList && (emptyStateMessage || hasSlotContent($slots.emptyListItem)) && !listRenderedOutside\"\n v-bind=\"listProps\"\n :message=\"emptyStateMessage\"\n :item-class=\"emptyStateClass\"\n >\n <slot name=\"emptyListItem\" />\n </combobox-empty-list>\n <!-- @slot Slot for the combobox list element -->\n <slot\n v-else\n name=\"list\"\n :list-props=\"listProps\"\n :opened=\"onOpen\"\n :clear-highlight-index=\"clearHighlightIndex\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport ComboboxLoadingList from './ComboboxLoadingList.vue';\nimport ComboboxEmptyList from './ComboboxEmptyList.vue';\nimport { DtKeyboardListNavigationMixin } from '@/common/mixins';\nimport { getUniqueString, hasSlotContent } from '@/common/utils';\nimport { COMBOBOX_LABEL_SIZES } from '@/components/Combobox';\nimport { COMPONENT_SIZES } from '@/common/constants';\n\n/**\n * A combobox is a semantic component that displays an input element combined with a listbox,\n * which enables the user to select items from the list.\n * @see https://dialtone.dialpad.com/components/combobox.html\n */\nexport default {\n name: 'DtCombobox',\n\n components: {\n ComboboxLoadingList,\n ComboboxEmptyList,\n },\n\n mixins: [\n DtKeyboardListNavigationMixin({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n }),\n ],\n\n props: {\n /**\n * String to use for the input label.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n showLabel: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Size of the input.\n * @values 100, 200, 300, 400, 500\n */\n size: {\n type: [String, Number],\n default: null,\n validator: (t) => t === null\n || Object.values(COMBOBOX_LABEL_SIZES).includes(t)\n || Object.keys(COMPONENT_SIZES).includes(String(t)),\n },\n\n /**\n * Description for the input\n */\n description: {\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 * 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 * Determines when to show the list element and also controls the aria-expanded attribute.\n * @values true, false\n */\n showList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If the list is rendered outside the component, like when using popover as the list wrapper.\n * @values true, false\n */\n listRenderedOutside: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines when to show the skeletons and also controls aria-busy attribute.\n * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the list to an empty state, and displays the message from prop `emptyStateMessage`.\n * @values true, false\n */\n emptyList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Message to show when the list is empty\n */\n emptyStateMessage: {\n type: String,\n default: '',\n },\n\n /**\n * Additional class name for the empty list element.\n * Can accept all of: String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n emptyStateClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Programmatically click on the active list item element when a selection\n * comes from keyboard navigation, i.e. pressing the \"Enter\" key.\n * @values true, false\n */\n clickOnSelect: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Event fired when item selected\n *\n * @event select\n * @type {Number}\n */\n 'select',\n\n /**\n * Event fired when pressing escape\n *\n * @event escape\n */\n 'escape',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when list is shown or hidden\n *\n * @event opened\n * @type {Boolean}\n */\n 'opened',\n ],\n\n data () {\n return {\n // If the list is rendered at the root, rather than as a child\n // of this component, this is the ref to that dom element. Set\n // by the onOpen method.\n outsideRenderedListRef: null,\n hasSlotContent,\n };\n },\n\n computed: {\n inputProps () {\n return {\n label: this.label,\n showLabel: this.showLabel,\n size: this.size,\n description: this.description,\n role: 'combobox',\n 'aria-label': this.label,\n 'aria-expanded': this.showList.toString(),\n 'aria-owns': this.listId,\n 'aria-haspopup': 'listbox',\n 'aria-activedescendant': this.activeItemId,\n 'aria-controls': this.listId,\n };\n },\n\n listProps () {\n return {\n role: 'listbox',\n id: this.listId,\n // The list has to be positioned relatively so that the auto-scroll can\n // calculate the correct offset for the list items.\n class: 'd-ps-relative',\n 'aria-label': this.label,\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemId () {\n if (!this.showList || this.highlightIndex < 0 || this.loading) {\n return;\n }\n return this.highlightId;\n },\n\n activeItemEl () {\n if (!this.highlightId) return '';\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n },\n\n watch: {\n showList (showList) {\n // When the list's visibility changes reset the highlight index.\n\n if (!this.listRenderedOutside) {\n this.setInitialHighlightIndex();\n this.$emit('opened', showList);\n }\n\n if (!showList && this.outsideRenderedListRef) {\n this.outsideRenderedListRef.removeEventListener('mousemove', this.onMouseHighlight);\n this.outsideRenderedListRef = null;\n }\n },\n\n loading () {\n this.$nextTick(() => {\n this.setInitialHighlightIndex();\n });\n },\n\n $props: {\n deep: true,\n immediate: true,\n handler () {\n this.validateEmptyListProps();\n },\n },\n },\n\n created () {\n this.validateEmptyListProps();\n },\n\n methods: {\n onMouseHighlight (e) {\n if (this.loading) return;\n\n const liElement = e.target.closest('li');\n\n if (liElement && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n }\n },\n\n getListElement () {\n return this.outsideRenderedListRef ?? this.$refs.listWrapper?.querySelector(`#${this.listId}`);\n },\n\n clearHighlightIndex () {\n if (this.showList) {\n this.setHighlightIndex(-1);\n }\n },\n\n afterHighlight () {\n if (this.loading) return;\n this.$emit('highlight', this.highlightIndex);\n },\n\n onEnterKey () {\n if (this.loading || this.emptyList) return;\n\n if (this.highlightIndex >= 0) {\n this.$emit('select', this.highlightIndex);\n\n if (this.clickOnSelect) {\n this.activeItemEl?.click();\n }\n }\n },\n\n onEscapeKey () {\n this.$emit('escape');\n },\n\n onOpen (open, contentRef) {\n this.outsideRenderedListRef = contentRef;\n this.outsideRenderedListRef?.addEventListener('mousemove', this.onMouseHighlight);\n this.$emit('opened', open);\n\n if (open) {\n this.setInitialHighlightIndex();\n }\n },\n\n onKeyValidation (e, eventHandler) {\n if (!this.showList || !this.getListElement()) return;\n\n this[eventHandler](e);\n },\n\n setInitialHighlightIndex () {\n if (!this.showList) return;\n this.$nextTick(() => {\n // When the list's is shown, reset the highlight index.\n // If the list is loading, set to -1\n this.setHighlightIndex(this.loading ? -1 : 0);\n });\n },\n\n validateEmptyListProps () {\n if (this.$slots.emptyListItem) { return; }\n\n if (this.emptyList && !this.emptyStateMessage) {\n console.error(`Invalid props: you must pass both props emptyList and emptyStateMessage to show the\n empty message.`);\n }\n },\n },\n};\n</script>\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  require(`./chunk-Bmb41Sf3.cjs`);const e=require(`./common/constants/sizes.cjs`),t=require(`./common/utils/index.cjs`),n=require(`./_plugin-vue_export-helper-D8jCH6HB.cjs`),r=require(`./common/mixins/keyboard-list-navigation.cjs`),i=require(`./lib/combobox/combobox-loading-list.cjs`),a=require(`./lib/combobox/combobox-empty-list.cjs`),o=require(`./lib/combobox/combobox-constants.cjs`);let s=require(`vue`);var c={name:`DtCombobox`,components:{ComboboxLoadingList:i.default,ComboboxEmptyList:a.default},mixins:[r.default({indexKey:`highlightIndex`,idKey:`highlightId`,listElementKey:`getListElement`,afterHighlightMethod:`afterHighlight`,beginningOfListMethod:`beginningOfListMethod`,endOfListMethod:`endOfListMethod`,activeItemKey:`activeItemEl`})],props:{label:{type:String,required:!0},showLabel:{type:Boolean,default:!0},size:{type:[String,Number],default:null,validator:t=>t===null||Object.values(o.COMBOBOX_LABEL_SIZES).includes(t)||Object.keys(e.COMPONENT_SIZES).includes(String(t))},description:{type:String,default:``},listId:{type:String,default(){return t.getUniqueString()}},onBeginningOfList:{type:Function,default:null},onEndOfList:{type:Function,default:null},showList:{type:Boolean,default:!1},listRenderedOutside:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},emptyList:{type:Boolean,default:!1},emptyStateMessage:{type:String,default:``},emptyStateClass:{type:[String,Object,Array],default:``},clickOnSelect:{type:Boolean,default:!1}},emits:[`select`,`escape`,`highlight`,`opened`],data(){return{outsideRenderedListRef:null,hasSlotContent:t.hasSlotContent}},computed:{inputProps(){return{label:this.label,showLabel:this.showLabel,size:this.size,description:this.description,role:`combobox`,"aria-label":this.label,"aria-expanded":this.showList.toString(),"aria-owns":this.listId,"aria-haspopup":`listbox`,"aria-activedescendant":this.activeItemId,"aria-controls":this.listId}},listProps(){return{role:`listbox`,id:this.listId,class:`d-ps-relative`,"aria-label":this.label}},beginningOfListMethod(){return this.onBeginningOfList||this.jumpToEnd},endOfListMethod(){return this.onEndOfList||this.jumpToBeginning},activeItemId(){if(!(!this.showList||this.highlightIndex<0||this.loading))return this.highlightId},activeItemEl(){return this.highlightId?this.getListElement().querySelector(`#`+this.highlightId):``}},watch:{showList(e){this.listRenderedOutside||(this.setInitialHighlightIndex(),this.$emit(`opened`,e)),!e&&this.outsideRenderedListRef&&(this.outsideRenderedListRef.removeEventListener(`mousemove`,this.onMouseHighlight),this.outsideRenderedListRef=null)},loading(){this.$nextTick(()=>{this.setInitialHighlightIndex()})},$props:{deep:!0,immediate:!0,handler(){this.validateEmptyListProps()}}},created(){this.validateEmptyListProps()},methods:{onMouseHighlight(e){if(this.loading)return;let t=e.target.closest(`li`);t&&this.highlightId!==t.id&&this.setHighlightId(t.id)},getListElement(){return this.outsideRenderedListRef??this.$refs.listWrapper?.querySelector(`#${this.listId}`)},clearHighlightIndex(){this.showList&&this.setHighlightIndex(-1)},afterHighlight(){this.loading||this.$emit(`highlight`,this.highlightIndex)},onEnterKey(){this.loading||this.emptyList||this.highlightIndex>=0&&(this.$emit(`select`,this.highlightIndex),this.clickOnSelect&&this.activeItemEl?.click())},onEscapeKey(){this.$emit(`escape`)},onOpen(e,t){this.outsideRenderedListRef=t,this.outsideRenderedListRef?.addEventListener(`mousemove`,this.onMouseHighlight),this.$emit(`opened`,e),e&&this.setInitialHighlightIndex()},onKeyValidation(e,t){!this.showList||!this.getListElement()||this[t](e)},setInitialHighlightIndex(){this.showList&&this.$nextTick(()=>{this.setHighlightIndex(this.loading?-1:0)})},validateEmptyListProps(){this.$slots.emptyListItem||this.emptyList&&!this.emptyStateMessage&&console.error(`Invalid props: you must pass both props emptyList and emptyStateMessage to show the
2
2
  empty message.`)}}},l={"data-qa":`dt-combobox-input-wrapper`};function u(e,t,n,r,i,a){let o=(0,s.resolveComponent)(`combobox-loading-list`),c=(0,s.resolveComponent)(`combobox-empty-list`);return(0,s.openBlock)(),(0,s.createElementBlock)(`div`,{onKeydown:[t[3]||(t[3]=(0,s.withKeys)((0,s.withModifiers)(e=>a.onKeyValidation(e,`onEscapeKey`),[`stop`]),[`esc`])),t[4]||(t[4]=(0,s.withKeys)((0,s.withModifiers)(e=>a.onKeyValidation(e,`onEnterKey`),[`exact`]),[`enter`])),t[5]||(t[5]=(0,s.withKeys)((0,s.withModifiers)(e=>a.onKeyValidation(e,`onUpKey`),[`stop`,`prevent`]),[`up`])),t[6]||(t[6]=(0,s.withKeys)((0,s.withModifiers)(e=>a.onKeyValidation(e,`onDownKey`),[`stop`,`prevent`]),[`down`])),t[7]||(t[7]=(0,s.withKeys)((0,s.withModifiers)(e=>a.onKeyValidation(e,`onHomeKey`),[`stop`,`prevent`]),[`home`])),t[8]||(t[8]=(0,s.withKeys)((0,s.withModifiers)(e=>a.onKeyValidation(e,`onEndKey`),[`stop`,`prevent`]),[`end`]))]},[(0,s.createElementVNode)(`div`,l,[(0,s.renderSlot)(e.$slots,`input`,{inputProps:a.inputProps})]),n.showList?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:0,ref:`listWrapper`,"data-qa":`dt-combobox-list-wrapper`,onMouseleave:t[0]||(t[0]=(...e)=>a.clearHighlightIndex&&a.clearHighlightIndex(...e)),onFocusout:t[1]||(t[1]=(...e)=>a.clearHighlightIndex&&a.clearHighlightIndex(...e)),onMousemoveCapture:t[2]||(t[2]=(...e)=>a.onMouseHighlight&&a.onMouseHighlight(...e))},[n.loading&&!n.listRenderedOutside?((0,s.openBlock)(),(0,s.createBlock)(o,(0,s.normalizeProps)((0,s.mergeProps)({key:0},a.listProps)),null,16)):n.emptyList&&(n.emptyStateMessage||i.hasSlotContent(e.$slots.emptyListItem))&&!n.listRenderedOutside?((0,s.openBlock)(),(0,s.createBlock)(c,(0,s.mergeProps)({key:1},a.listProps,{message:n.emptyStateMessage,"item-class":n.emptyStateClass}),{default:(0,s.withCtx)(()=>[(0,s.renderSlot)(e.$slots,`emptyListItem`)]),_:3},16,[`message`,`item-class`])):(0,s.renderSlot)(e.$slots,`list`,{key:2,listProps:a.listProps,opened:a.onOpen,clearHighlightIndex:a.clearHighlightIndex})],544)):(0,s.createCommentVNode)(``,!0)],32)}var d=n.t(c,[[`render`,u]]);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
3
- //# sourceMappingURL=Combobox-D_2858_j.cjs.map
3
+ //# sourceMappingURL=Combobox-D4hc1-41.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox-D_2858_j.cjs","names":[],"sources":["../components/Combobox/Combobox.vue"],"sourcesContent":["<!-- eslint-disable vuejs-accessibility/no-static-element-interactions -->\n<template>\n <div\n @keydown.esc.stop=\"onKeyValidation($event, 'onEscapeKey')\"\n @keydown.enter.exact=\"onKeyValidation($event, 'onEnterKey')\"\n @keydown.up.stop.prevent=\"onKeyValidation($event, 'onUpKey')\"\n @keydown.down.stop.prevent=\"onKeyValidation($event, 'onDownKey')\"\n @keydown.home.stop.prevent=\"onKeyValidation($event, 'onHomeKey')\"\n @keydown.end.stop.prevent=\"onKeyValidation($event, 'onEndKey')\"\n >\n <div data-qa=\"dt-combobox-input-wrapper\">\n <!-- @slot Slot for the combobox input element -->\n <slot\n name=\"input\"\n :input-props=\"inputProps\"\n />\n </div>\n\n <div\n v-if=\"showList\"\n ref=\"listWrapper\"\n data-qa=\"dt-combobox-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @focusout=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <combobox-loading-list\n v-if=\"loading && !listRenderedOutside\"\n v-bind=\"listProps\"\n />\n <combobox-empty-list\n v-else-if=\"emptyList && (emptyStateMessage || hasSlotContent($slots.emptyListItem)) && !listRenderedOutside\"\n v-bind=\"listProps\"\n :message=\"emptyStateMessage\"\n :item-class=\"emptyStateClass\"\n >\n <slot name=\"emptyListItem\" />\n </combobox-empty-list>\n <!-- @slot Slot for the combobox list element -->\n <slot\n v-else\n name=\"list\"\n :list-props=\"listProps\"\n :opened=\"onOpen\"\n :clear-highlight-index=\"clearHighlightIndex\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport ComboboxLoadingList from './ComboboxLoadingList.vue';\nimport ComboboxEmptyList from './ComboboxEmptyList.vue';\nimport { DtKeyboardListNavigationMixin } from '@/common/mixins';\nimport { getUniqueString, hasSlotContent } from '@/common/utils';\nimport { COMBOBOX_LABEL_SIZES } from '@/components/Combobox';\nimport { COMPONENT_SIZES } from '@/common/constants';\n\n/**\n * A combobox is a semantic component that displays an input element combined with a listbox,\n * which enables the user to select items from the list.\n * @see https://dialtone.dialpad.com/components/combobox.html\n */\nexport default {\n name: 'DtCombobox',\n\n components: {\n ComboboxLoadingList,\n ComboboxEmptyList,\n },\n\n mixins: [\n DtKeyboardListNavigationMixin({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n }),\n ],\n\n props: {\n /**\n * String to use for the input label.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n showLabel: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Size of the input.\n * @values 100, 200, 300, 400, 500\n */\n size: {\n type: [String, Number],\n default: null,\n validator: (t) => t === null\n || Object.values(COMBOBOX_LABEL_SIZES).includes(t)\n || Object.keys(COMPONENT_SIZES).includes(String(t)),\n },\n\n /**\n * Description for the input\n */\n description: {\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 * 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 * Determines when to show the list element and also controls the aria-expanded attribute.\n * @values true, false\n */\n showList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If the list is rendered outside the component, like when using popover as the list wrapper.\n * @values true, false\n */\n listRenderedOutside: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines when to show the skeletons and also controls aria-busy attribute.\n * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the list to an empty state, and displays the message from prop `emptyStateMessage`.\n * @values true, false\n */\n emptyList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Message to show when the list is empty\n */\n emptyStateMessage: {\n type: String,\n default: '',\n },\n\n /**\n * Additional class name for the empty list element.\n * Can accept all of: String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n emptyStateClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Programmatically click on the active list item element when a selection\n * comes from keyboard navigation, i.e. pressing the \"Enter\" key.\n * @values true, false\n */\n clickOnSelect: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Event fired when item selected\n *\n * @event select\n * @type {Number}\n */\n 'select',\n\n /**\n * Event fired when pressing escape\n *\n * @event escape\n */\n 'escape',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when list is shown or hidden\n *\n * @event opened\n * @type {Boolean}\n */\n 'opened',\n ],\n\n data () {\n return {\n // If the list is rendered at the root, rather than as a child\n // of this component, this is the ref to that dom element. Set\n // by the onOpen method.\n outsideRenderedListRef: null,\n hasSlotContent,\n };\n },\n\n computed: {\n inputProps () {\n return {\n label: this.label,\n showLabel: this.showLabel,\n size: this.size,\n description: this.description,\n role: 'combobox',\n 'aria-label': this.label,\n 'aria-expanded': this.showList.toString(),\n 'aria-owns': this.listId,\n 'aria-haspopup': 'listbox',\n 'aria-activedescendant': this.activeItemId,\n 'aria-controls': this.listId,\n };\n },\n\n listProps () {\n return {\n role: 'listbox',\n id: this.listId,\n // The list has to be positioned relatively so that the auto-scroll can\n // calculate the correct offset for the list items.\n class: 'd-ps-relative',\n 'aria-label': this.label,\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemId () {\n if (!this.showList || this.highlightIndex < 0 || this.loading) {\n return;\n }\n return this.highlightId;\n },\n\n activeItemEl () {\n if (!this.highlightId) return '';\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n },\n\n watch: {\n showList (showList) {\n // When the list's visibility changes reset the highlight index.\n\n if (!this.listRenderedOutside) {\n this.setInitialHighlightIndex();\n this.$emit('opened', showList);\n }\n\n if (!showList && this.outsideRenderedListRef) {\n this.outsideRenderedListRef.removeEventListener('mousemove', this.onMouseHighlight);\n this.outsideRenderedListRef = null;\n }\n },\n\n loading () {\n this.$nextTick(() => {\n this.setInitialHighlightIndex();\n });\n },\n\n $props: {\n deep: true,\n immediate: true,\n handler () {\n this.validateEmptyListProps();\n },\n },\n },\n\n created () {\n this.validateEmptyListProps();\n },\n\n methods: {\n onMouseHighlight (e) {\n if (this.loading) return;\n\n const liElement = e.target.closest('li');\n\n if (liElement && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n }\n },\n\n getListElement () {\n return this.outsideRenderedListRef ?? this.$refs.listWrapper?.querySelector(`#${this.listId}`);\n },\n\n clearHighlightIndex () {\n if (this.showList) {\n this.setHighlightIndex(-1);\n }\n },\n\n afterHighlight () {\n if (this.loading) return;\n this.$emit('highlight', this.highlightIndex);\n },\n\n onEnterKey () {\n if (this.loading || this.emptyList) return;\n\n if (this.highlightIndex >= 0) {\n this.$emit('select', this.highlightIndex);\n\n if (this.clickOnSelect) {\n this.activeItemEl?.click();\n }\n }\n },\n\n onEscapeKey () {\n this.$emit('escape');\n },\n\n onOpen (open, contentRef) {\n this.outsideRenderedListRef = contentRef;\n this.outsideRenderedListRef?.addEventListener('mousemove', this.onMouseHighlight);\n this.$emit('opened', open);\n\n if (open) {\n this.setInitialHighlightIndex();\n }\n },\n\n onKeyValidation (e, eventHandler) {\n if (!this.showList || !this.getListElement()) return;\n\n this[eventHandler](e);\n },\n\n setInitialHighlightIndex () {\n if (!this.showList) return;\n this.$nextTick(() => {\n // When the list's is shown, reset the highlight index.\n // If the list is loading, set to -1\n this.setHighlightIndex(this.loading ? -1 : 0);\n });\n },\n\n validateEmptyListProps () {\n if (this.$slots.emptyListItem) { return; }\n\n if (this.emptyList && !this.emptyStateMessage) {\n console.error(`Invalid props: you must pass both props emptyList and emptyStateMessage to show the\n empty message.`);\n }\n },\n },\n};\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox-D4hc1-41.cjs","names":[],"sources":["../components/Combobox/Combobox.vue"],"sourcesContent":["<!-- eslint-disable vuejs-accessibility/no-static-element-interactions -->\n<template>\n <div\n @keydown.esc.stop=\"onKeyValidation($event, 'onEscapeKey')\"\n @keydown.enter.exact=\"onKeyValidation($event, 'onEnterKey')\"\n @keydown.up.stop.prevent=\"onKeyValidation($event, 'onUpKey')\"\n @keydown.down.stop.prevent=\"onKeyValidation($event, 'onDownKey')\"\n @keydown.home.stop.prevent=\"onKeyValidation($event, 'onHomeKey')\"\n @keydown.end.stop.prevent=\"onKeyValidation($event, 'onEndKey')\"\n >\n <div data-qa=\"dt-combobox-input-wrapper\">\n <!-- @slot Slot for the combobox input element -->\n <slot\n name=\"input\"\n :input-props=\"inputProps\"\n />\n </div>\n\n <div\n v-if=\"showList\"\n ref=\"listWrapper\"\n data-qa=\"dt-combobox-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @focusout=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <combobox-loading-list\n v-if=\"loading && !listRenderedOutside\"\n v-bind=\"listProps\"\n />\n <combobox-empty-list\n v-else-if=\"emptyList && (emptyStateMessage || hasSlotContent($slots.emptyListItem)) && !listRenderedOutside\"\n v-bind=\"listProps\"\n :message=\"emptyStateMessage\"\n :item-class=\"emptyStateClass\"\n >\n <slot name=\"emptyListItem\" />\n </combobox-empty-list>\n <!-- @slot Slot for the combobox list element -->\n <slot\n v-else\n name=\"list\"\n :list-props=\"listProps\"\n :opened=\"onOpen\"\n :clear-highlight-index=\"clearHighlightIndex\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport ComboboxLoadingList from './ComboboxLoadingList.vue';\nimport ComboboxEmptyList from './ComboboxEmptyList.vue';\nimport { DtKeyboardListNavigationMixin } from '@/common/mixins';\nimport { getUniqueString, hasSlotContent } from '@/common/utils';\nimport { COMBOBOX_LABEL_SIZES } from '@/components/Combobox';\nimport { COMPONENT_SIZES } from '@/common/constants';\n\n/**\n * A combobox is a semantic component that displays an input element combined with a listbox,\n * which enables the user to select items from the list.\n * @see https://dialtone.dialpad.com/components/combobox.html\n */\nexport default {\n name: 'DtCombobox',\n\n components: {\n ComboboxLoadingList,\n ComboboxEmptyList,\n },\n\n mixins: [\n DtKeyboardListNavigationMixin({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n }),\n ],\n\n props: {\n /**\n * String to use for the input label.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n showLabel: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Size of the input.\n * @values 100, 200, 300, 400, 500\n */\n size: {\n type: [String, Number],\n default: null,\n validator: (t) => t === null\n || Object.values(COMBOBOX_LABEL_SIZES).includes(t)\n || Object.keys(COMPONENT_SIZES).includes(String(t)),\n },\n\n /**\n * Description for the input\n */\n description: {\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 * 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 * Determines when to show the list element and also controls the aria-expanded attribute.\n * @values true, false\n */\n showList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If the list is rendered outside the component, like when using popover as the list wrapper.\n * @values true, false\n */\n listRenderedOutside: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines when to show the skeletons and also controls aria-busy attribute.\n * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the list to an empty state, and displays the message from prop `emptyStateMessage`.\n * @values true, false\n */\n emptyList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Message to show when the list is empty\n */\n emptyStateMessage: {\n type: String,\n default: '',\n },\n\n /**\n * Additional class name for the empty list element.\n * Can accept all of: String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n emptyStateClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Programmatically click on the active list item element when a selection\n * comes from keyboard navigation, i.e. pressing the \"Enter\" key.\n * @values true, false\n */\n clickOnSelect: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Event fired when item selected\n *\n * @event select\n * @type {Number}\n */\n 'select',\n\n /**\n * Event fired when pressing escape\n *\n * @event escape\n */\n 'escape',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when list is shown or hidden\n *\n * @event opened\n * @type {Boolean}\n */\n 'opened',\n ],\n\n data () {\n return {\n // If the list is rendered at the root, rather than as a child\n // of this component, this is the ref to that dom element. Set\n // by the onOpen method.\n outsideRenderedListRef: null,\n hasSlotContent,\n };\n },\n\n computed: {\n inputProps () {\n return {\n label: this.label,\n showLabel: this.showLabel,\n size: this.size,\n description: this.description,\n role: 'combobox',\n 'aria-label': this.label,\n 'aria-expanded': this.showList.toString(),\n 'aria-owns': this.listId,\n 'aria-haspopup': 'listbox',\n 'aria-activedescendant': this.activeItemId,\n 'aria-controls': this.listId,\n };\n },\n\n listProps () {\n return {\n role: 'listbox',\n id: this.listId,\n // The list has to be positioned relatively so that the auto-scroll can\n // calculate the correct offset for the list items.\n class: 'd-ps-relative',\n 'aria-label': this.label,\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemId () {\n if (!this.showList || this.highlightIndex < 0 || this.loading) {\n return;\n }\n return this.highlightId;\n },\n\n activeItemEl () {\n if (!this.highlightId) return '';\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n },\n\n watch: {\n showList (showList) {\n // When the list's visibility changes reset the highlight index.\n\n if (!this.listRenderedOutside) {\n this.setInitialHighlightIndex();\n this.$emit('opened', showList);\n }\n\n if (!showList && this.outsideRenderedListRef) {\n this.outsideRenderedListRef.removeEventListener('mousemove', this.onMouseHighlight);\n this.outsideRenderedListRef = null;\n }\n },\n\n loading () {\n this.$nextTick(() => {\n this.setInitialHighlightIndex();\n });\n },\n\n $props: {\n deep: true,\n immediate: true,\n handler () {\n this.validateEmptyListProps();\n },\n },\n },\n\n created () {\n this.validateEmptyListProps();\n },\n\n methods: {\n onMouseHighlight (e) {\n if (this.loading) return;\n\n const liElement = e.target.closest('li');\n\n if (liElement && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n }\n },\n\n getListElement () {\n return this.outsideRenderedListRef ?? this.$refs.listWrapper?.querySelector(`#${this.listId}`);\n },\n\n clearHighlightIndex () {\n if (this.showList) {\n this.setHighlightIndex(-1);\n }\n },\n\n afterHighlight () {\n if (this.loading) return;\n this.$emit('highlight', this.highlightIndex);\n },\n\n onEnterKey () {\n if (this.loading || this.emptyList) return;\n\n if (this.highlightIndex >= 0) {\n this.$emit('select', this.highlightIndex);\n\n if (this.clickOnSelect) {\n this.activeItemEl?.click();\n }\n }\n },\n\n onEscapeKey () {\n this.$emit('escape');\n },\n\n onOpen (open, contentRef) {\n this.outsideRenderedListRef = contentRef;\n this.outsideRenderedListRef?.addEventListener('mousemove', this.onMouseHighlight);\n this.$emit('opened', open);\n\n if (open) {\n this.setInitialHighlightIndex();\n }\n },\n\n onKeyValidation (e, eventHandler) {\n if (!this.showList || !this.getListElement()) return;\n\n this[eventHandler](e);\n },\n\n setInitialHighlightIndex () {\n if (!this.showList) return;\n this.$nextTick(() => {\n // When the list's is shown, reset the highlight index.\n // If the list is loading, set to -1\n this.setHighlightIndex(this.loading ? -1 : 0);\n });\n },\n\n validateEmptyListProps () {\n if (this.$slots.emptyListItem) { return; }\n\n if (this.emptyList && !this.emptyStateMessage) {\n console.error(`Invalid props: you must pass both props emptyList and emptyStateMessage to show the\n empty message.`);\n }\n },\n },\n};\n</script>\n"],"mappings":"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"}
@@ -6,11 +6,11 @@ import a from "./lib/tooltip/tooltip.js";
6
6
  import { INTL_MONTH_FORMAT as o } from "./lib/datepicker/datepicker-constants.js";
7
7
  import { calculateNextFocusDate as s, calculatePrevFocusDate as c, formatDate as l, formatMonth as u, getCalendarDays as d, getWeekDayNames as f } from "./lib/datepicker/utils.js";
8
8
  import { Fragment as p, computed as m, createBlock as h, createElementBlock as g, createElementVNode as _, createTextVNode as v, createVNode as y, getCurrentInstance as b, nextTick as x, normalizeClass as S, onMounted as C, openBlock as w, ref as T, renderList as E, toDisplayString as D, unref as O, watch as k, withCtx as A } from "vue";
9
- import { addMonths as j, endOfMonth as M, getDate as N, getMonth as P, getYear as F, set as I, startOfDay as L, startOfMonth as R, subMonths as z } from "date-fns";
10
- import { DtIconChevronLeft as B, DtIconChevronRight as V, DtIconChevronsLeft as H, DtIconChevronsRight as U } from "@dialpad/dialtone-icons/vue";
9
+ import { DtIconChevronLeft as j, DtIconChevronRight as M, DtIconChevronsLeft as N, DtIconChevronsRight as P } from "@dialpad/dialtone-icons/vue";
10
+ import { addMonths as F, endOfMonth as I, getDate as L, getMonth as R, getYear as z, set as B, startOfDay as V, startOfMonth as H, subMonths as U } from "date-fns";
11
11
  //#region components/Datepicker/Composables/UseMonthYearPicker.js
12
12
  function W(t, r) {
13
- let i = T(P(t.selectedDate)), a = T(F(t.selectedDate)), s = T(null), c = T(0), l = T([]), f = new n(), p = m(() => d(i.value, a.value, s.value, t.minDate, t.maxDate, t.weekStartsOn)), h = m(() => t.minDate ? M(z(new Date(a.value, i.value, 1), 1)) < L(t.minDate) : !1), g = m(() => t.maxDate ? R(j(new Date(a.value, i.value, 1), 1)) > L(t.maxDate) : !1), _ = m(() => t.minDate ? M(new Date(a.value - 1, i.value, 1)) < L(t.minDate) : !1), v = m(() => t.maxDate ? R(new Date(a.value + 1, i.value, 1)) > L(t.maxDate) : !1);
13
+ let i = T(R(t.selectedDate)), a = T(z(t.selectedDate)), s = T(null), c = T(0), l = T([]), f = new n(), p = m(() => d(i.value, a.value, s.value, t.minDate, t.maxDate, t.weekStartsOn)), h = m(() => t.minDate ? I(U(new Date(a.value, i.value, 1), 1)) < V(t.minDate) : !1), g = m(() => t.maxDate ? H(F(new Date(a.value, i.value, 1), 1)) > V(t.maxDate) : !1), _ = m(() => t.minDate ? I(new Date(a.value - 1, i.value, 1)) < V(t.minDate) : !1), v = m(() => t.maxDate ? H(new Date(a.value + 1, i.value, 1)) > V(t.maxDate) : !1);
14
14
  k(i, () => {
15
15
  C(), r("calendar-days", p.value);
16
16
  }, { immediate: !0 }), k(a, () => {
@@ -49,17 +49,17 @@ function W(t, r) {
49
49
  }
50
50
  }
51
51
  function C() {
52
- let e = F(t.selectedDate), n = P(t.selectedDate);
53
- e !== a.value || n !== i.value ? s.value = null : s.value = N(t.selectedDate);
52
+ let e = z(t.selectedDate), n = R(t.selectedDate);
53
+ e !== a.value || n !== i.value ? s.value = null : s.value = L(t.selectedDate);
54
54
  }
55
55
  function w(e) {
56
56
  if (e === -1 && h.value || e === 1 && g.value) return;
57
57
  (i.value === 0 && e === -1 || i.value === 11 && e === 1) && (a.value += e);
58
- let n = I(t.selectedDate, {
58
+ let n = B(t.selectedDate, {
59
59
  month: i.value,
60
60
  year: a.value
61
61
  });
62
- i.value = P(e === 1 ? j(n, 1) : z(n, 1));
62
+ i.value = R(e === 1 ? F(n, 1) : U(n, 1));
63
63
  }
64
64
  function E(e) {
65
65
  e === -1 && _.value || e === 1 && v.value || (a.value += e);
@@ -73,13 +73,13 @@ function W(t, r) {
73
73
  function A() {
74
74
  return `${f.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${f.$t("DIALTONE_DATEPICKER_PREVIOUS_YEAR")} ${a.value - 1}`;
75
75
  }
76
- function B() {
76
+ function j() {
77
77
  return `${f.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${f.$t("DIALTONE_DATEPICKER_PREVIOUS_MONTH")} ${y(i.value - 1)}`;
78
78
  }
79
- function V() {
79
+ function M() {
80
80
  return `${f.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${f.$t("DIALTONE_DATEPICKER_NEXT_YEAR")} ${a.value + 1}`;
81
81
  }
82
- function H() {
82
+ function N() {
83
83
  return `${f.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${f.$t("DIALTONE_DATEPICKER_NEXT_MONTH")} ${y(i.value + 1)}`;
84
84
  }
85
85
  return {
@@ -98,9 +98,9 @@ function W(t, r) {
98
98
  isPrevYearDisabled: _,
99
99
  isNextYearDisabled: v,
100
100
  previousYearAriaLabel: A,
101
- previousMonthAriaLabel: B,
102
- nextYearAriaLabel: V,
103
- nextMonthAriaLabel: H
101
+ previousMonthAriaLabel: j,
102
+ nextYearAriaLabel: M,
103
+ nextMonthAriaLabel: N
104
104
  };
105
105
  }
106
106
  //#endregion
@@ -136,7 +136,7 @@ var G = {
136
136
  "close-datepicker"
137
137
  ],
138
138
  setup(e, { expose: t, emit: o }) {
139
- let s = e, c = o, l = new n(), { selectMonth: u, selectYear: d, formattedMonth: f, setDayRef: p, focusMonthYearPicker: m, handleKeyDown: g, changeMonth: v, changeYear: b, goToNextMonth: x, goToPrevMonth: S, isPrevMonthDisabled: T, isNextMonthDisabled: E, isPrevYearDisabled: k, isNextYearDisabled: j, previousYearAriaLabel: M, previousMonthAriaLabel: N, nextMonthAriaLabel: P, nextYearAriaLabel: F } = W(s, c);
139
+ let s = e, c = o, l = new n(), { selectMonth: u, selectYear: d, formattedMonth: f, setDayRef: p, focusMonthYearPicker: m, handleKeyDown: g, changeMonth: v, changeYear: b, goToNextMonth: x, goToPrevMonth: S, isPrevMonthDisabled: T, isNextMonthDisabled: E, isPrevYearDisabled: k, isNextYearDisabled: F, previousYearAriaLabel: I, previousMonthAriaLabel: L, nextMonthAriaLabel: R, nextYearAriaLabel: z } = W(s, c);
140
140
  return C(() => {
141
141
  m();
142
142
  }), t({
@@ -165,7 +165,7 @@ var G = {
165
165
  ref: (e) => {
166
166
  e && O(p)(e);
167
167
  },
168
- "aria-label": O(M)(),
168
+ "aria-label": O(I)(),
169
169
  disabled: O(k),
170
170
  kind: "muted",
171
171
  class: "d-datepicker__nav-btn",
@@ -175,7 +175,7 @@ var G = {
175
175
  onClick: t[0] || (t[0] = (e) => O(b)(-1)),
176
176
  onKeydown: t[1] || (t[1] = (e) => O(g)(e))
177
177
  }, {
178
- icon: A(({ iconSize: e }) => [y(O(H), { size: e }, null, 8, ["size"])]),
178
+ icon: A(({ iconSize: e }) => [y(O(N), { size: e }, null, 8, ["size"])]),
179
179
  _: 1
180
180
  }, 8, ["aria-label", "disabled"])]),
181
181
  _: 1
@@ -189,7 +189,7 @@ var G = {
189
189
  ref: (e) => {
190
190
  e && O(p)(e);
191
191
  },
192
- "aria-label": O(N)(),
192
+ "aria-label": O(L)(),
193
193
  disabled: O(T),
194
194
  class: "d-datepicker__nav-btn",
195
195
  importance: "clear",
@@ -199,7 +199,7 @@ var G = {
199
199
  onClick: t[2] || (t[2] = (e) => O(v)(-1)),
200
200
  onKeydown: t[3] || (t[3] = (e) => O(g)(e))
201
201
  }, {
202
- icon: A(({ iconSize: e }) => [y(O(B), { size: e }, null, 8, ["size"])]),
202
+ icon: A(({ iconSize: e }) => [y(O(j), { size: e }, null, 8, ["size"])]),
203
203
  _: 1
204
204
  }, 8, ["aria-label", "disabled"])]),
205
205
  _: 1
@@ -223,7 +223,7 @@ var G = {
223
223
  ref: (e) => {
224
224
  e && O(p)(e);
225
225
  },
226
- "aria-label": O(P)(),
226
+ "aria-label": O(R)(),
227
227
  disabled: O(E),
228
228
  class: "d-datepicker__nav-btn",
229
229
  importance: "clear",
@@ -233,7 +233,7 @@ var G = {
233
233
  onClick: t[4] || (t[4] = (e) => O(v)(1)),
234
234
  onKeydown: t[5] || (t[5] = (e) => O(g)(e))
235
235
  }, {
236
- icon: A(({ iconSize: e }) => [y(O(V), { size: e }, null, 8, ["size"])]),
236
+ icon: A(({ iconSize: e }) => [y(O(M), { size: e }, null, 8, ["size"])]),
237
237
  _: 1
238
238
  }, 8, ["aria-label", "disabled"])]),
239
239
  _: 1
@@ -247,8 +247,8 @@ var G = {
247
247
  ref: (e) => {
248
248
  e && O(p)(e);
249
249
  },
250
- "aria-label": O(F)(),
251
- disabled: O(j),
250
+ "aria-label": O(z)(),
251
+ disabled: O(F),
252
252
  class: "d-datepicker__nav-btn",
253
253
  importance: "clear",
254
254
  kind: "muted",
@@ -257,7 +257,7 @@ var G = {
257
257
  onClick: t[6] || (t[6] = (e) => O(b)(1)),
258
258
  onKeydown: t[7] || (t[7] = (e) => O(g)(e))
259
259
  }, {
260
- icon: A(({ iconSize: e }) => [y(O(U), { size: e }, null, 8, ["size"])]),
260
+ icon: A(({ iconSize: e }) => [y(O(P), { size: e }, null, 8, ["size"])]),
261
261
  _: 1
262
262
  }, 8, ["aria-label", "disabled"])]),
263
263
  _: 1
@@ -481,4 +481,4 @@ var J = {
481
481
  //#endregion
482
482
  export { $ as t };
483
483
 
484
- //# sourceMappingURL=Datepicker-O7Xpw5LW.js.map
484
+ //# sourceMappingURL=Datepicker-CGFa1nGm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Datepicker-O7Xpw5LW.js","names":["$refs","$emit"],"sources":["../components/Datepicker/Composables/UseMonthYearPicker.js","../components/Datepicker/Modules/MonthYearPicker.vue","../components/Datepicker/Composables/UseCalendar.js","../components/Datepicker/Modules/Calendar.vue","../components/Datepicker/Datepicker.vue"],"sourcesContent":["import { computed, ref, watch } from 'vue';\nimport { addMonths, endOfMonth, getDate, getMonth, getYear, set, startOfDay, startOfMonth, subMonths } from 'date-fns';\nimport { formatMonth, getCalendarDays } from '../Utils.js';\nimport { INTL_MONTH_FORMAT } from '../DatepickerConstants';\nimport { returnFirstEl } from '@/common/utils';\nimport { DialtoneLocalization } from '@/localization';\n\nexport function useMonthYearPicker (props, emits) {\n const selectMonth = ref(getMonth(props.selectedDate));\n const selectYear = ref(getYear(props.selectedDate));\n const highlightedDay = ref(null);\n const focusPicker = ref(0);\n const focusRefs = ref([]);\n const i18n = new DialtoneLocalization();\n\n const calendarDays = computed(() => {\n return getCalendarDays(\n selectMonth.value, selectYear.value, highlightedDay.value,\n props.minDate, props.maxDate, props.weekStartsOn,\n );\n });\n\n const isPrevMonthDisabled = computed(() => {\n if (!props.minDate) return false;\n const prevMonth = subMonths(new Date(selectYear.value, selectMonth.value, 1), 1);\n return endOfMonth(prevMonth) < startOfDay(props.minDate);\n });\n\n const isNextMonthDisabled = computed(() => {\n if (!props.maxDate) return false;\n const nextMonth = addMonths(new Date(selectYear.value, selectMonth.value, 1), 1);\n return startOfMonth(nextMonth) > startOfDay(props.maxDate);\n });\n\n const isPrevYearDisabled = computed(() => {\n if (!props.minDate) return false;\n const prevYearMonth = new Date(selectYear.value - 1, selectMonth.value, 1);\n return endOfMonth(prevYearMonth) < startOfDay(props.minDate);\n });\n\n const isNextYearDisabled = computed(() => {\n if (!props.maxDate) return false;\n const nextYearMonth = new Date(selectYear.value + 1, selectMonth.value, 1);\n return startOfMonth(nextYearMonth) > startOfDay(props.maxDate);\n });\n\n watch(selectMonth, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(selectYear, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(() => props.minDate, () => {\n emits('calendar-days', calendarDays.value);\n });\n\n watch(() => props.maxDate, () => {\n emits('calendar-days', calendarDays.value);\n });\n\n function formattedMonth (month) {\n return formatMonth(month, INTL_MONTH_FORMAT, i18n.currentLocale);\n }\n\n function setDayRef (el) {\n if (!focusRefs.value.includes(el)) {\n focusRefs.value.push(el);\n }\n }\n\n function focusMonthYearPicker () {\n returnFirstEl(focusRefs.value[0].$el).focus();\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (focusPicker.value === 0) {\n focusPicker.value = 3;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value--;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusPicker.value === 3) {\n focusPicker.value = 0;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value++;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function highlightDay () {\n const year = getYear(props.selectedDate);\n const month = getMonth(props.selectedDate);\n\n if (year !== selectYear.value || month !== selectMonth.value) {\n highlightedDay.value = null;\n } else {\n highlightedDay.value = getDate(props.selectedDate);\n }\n }\n\n function changeMonth (value) {\n if (value === -1 && isPrevMonthDisabled.value) return;\n if (value === 1 && isNextMonthDisabled.value) return;\n\n // Adjust year when changing from January to December or vice versa\n if ((selectMonth.value === 0 && value === -1) || (selectMonth.value === 11 && value === 1)) {\n selectYear.value += value;\n }\n\n // Calculate the new date by adding or subtracting months\n const initialDate = set(props.selectedDate, { month: selectMonth.value, year: selectYear.value });\n const newDate = value === 1 ? addMonths(initialDate, 1) : subMonths(initialDate, 1);\n\n // Update the selected month\n selectMonth.value = getMonth(newDate);\n }\n\n function changeYear (value) {\n if (value === -1 && isPrevYearDisabled.value) return;\n if (value === 1 && isNextYearDisabled.value) return;\n\n selectYear.value = selectYear.value + value;\n }\n\n function goToNextMonth () {\n changeMonth(1);\n }\n\n function goToPrevMonth () {\n changeMonth(-1);\n }\n\n function previousYearAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_YEAR')} ${selectYear.value - 1}`;\n }\n\n function previousMonthAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_MONTH')} ${formattedMonth(selectMonth.value - 1)}`;\n }\n\n function nextYearAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_NEXT_YEAR')} ${selectYear.value + 1}`;\n }\n\n function nextMonthAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_NEXT_MONTH')} ${formattedMonth(selectMonth.value + 1)}`;\n }\n\n return {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n isPrevMonthDisabled,\n isNextMonthDisabled,\n isPrevYearDisabled,\n isNextYearDisabled,\n previousYearAriaLabel,\n previousMonthAriaLabel,\n nextYearAriaLabel,\n nextMonthAriaLabel,\n };\n}\n","<template>\n <dt-stack\n class=\"d-datepicker__month-year\"\n direction=\"row\"\n gap=\"50\"\n >\n <dt-stack\n as=\"nav\"\n class=\"d-datepicker__nav\"\n direction=\"row\"\n gap=\"25\"\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=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"previousYearAriaLabel()\"\n :disabled=\"isPrevYearDisabled\"\n kind=\"muted\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n :size=\"100\"\n type=\"button\"\n @click=\"changeYear(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <template #icon=\"{ iconSize }\">\n <dt-icon-chevrons-left :size=\"iconSize\" />\n </template>\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=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"previousMonthAriaLabel()\"\n :disabled=\"isPrevMonthDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n :size=\"100\"\n type=\"button\"\n @click=\"changeMonth(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <template #icon=\"{ iconSize }\">\n <dt-icon-chevron-left :size=\"iconSize\" />\n </template>\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=\"25\"\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=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"nextMonthAriaLabel()\"\n :disabled=\"isNextMonthDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n :size=\"100\"\n type=\"button\"\n @click=\"changeMonth(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <template #icon=\"{ iconSize }\">\n <dt-icon-chevron-right :size=\"iconSize\" />\n </template>\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=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"nextYearAriaLabel()\"\n :disabled=\"isNextYearDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n :size=\"100\"\n type=\"button\"\n @click=\"changeYear(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <template #icon=\"{ iconSize }\">\n <dt-icon-chevrons-right :size=\"iconSize\" />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </dt-stack>\n </dt-stack>\n</template>\n\n<script setup>\nimport {\n DtIconChevronLeft,\n DtIconChevronsLeft,\n DtIconChevronRight,\n DtIconChevronsRight,\n} from '@dialpad/dialtone-icons/vue';\nimport { DtStack } from '@/components/Stack';\nimport { DtButton } from '@/components/Button';\nimport { DtTooltip } from '@/components/Tooltip';\nimport { onMounted } from 'vue';\nimport { useMonthYearPicker } from '../Composables/UseMonthYearPicker.js';\nimport { DialtoneLocalization } from '@/localization';\n\nconst props = defineProps({\n selectedDate: {\n type: Date,\n required: true,\n },\n\n minDate: {\n type: Date,\n default: null,\n },\n\n maxDate: {\n type: Date,\n default: null,\n },\n\n weekStartsOn: {\n type: Number,\n default: 0,\n validator: (v) => Number.isInteger(v) && v >= 0 && v <= 6,\n },\n});\n\nconst emits = defineEmits([\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\nconst i18n = new DialtoneLocalization();\n\nconst {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n isPrevMonthDisabled,\n isNextMonthDisabled,\n isPrevYearDisabled,\n isNextYearDisabled,\n previousYearAriaLabel,\n previousMonthAriaLabel,\n nextMonthAriaLabel,\n nextYearAriaLabel,\n} = useMonthYearPicker(props, emits);\n\nonMounted(() => {\n focusMonthYearPicker();\n});\n\ndefineExpose({\n focusMonthYearPicker,\n goToNextMonth,\n goToPrevMonth,\n});\n</script>\n","import { computed, ref, watch, nextTick } from 'vue';\nimport { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate, formatDate } from '../Utils.js';\nimport { INTL_MONTH_FORMAT } from '../DatepickerConstants.js';\nimport { returnFirstEl } from '@/common/utils';\nimport { DialtoneLocalization } from '@/localization';\n\nexport function useCalendar (props, emits) {\n const selectedDay = ref(null);\n const focusDay = ref(0);\n const daysRef = ref([]);\n const i18n = new DialtoneLocalization();\n\n const weekDays = computed(() => {\n return getWeekDayNames(i18n.currentLocale, props.weekStartsOn);\n });\n\n watch(() => props.calendarDays, () => {\n focusDay.value = 0;\n daysRef.value = [];\n selectedDay.value = null;\n });\n\n function dayAriaLabel (day) {\n return i18n.$t('DIALTONE_DATEPICKER_SELECT_DAY') + ` ${formatDate(day.value, INTL_MONTH_FORMAT, i18n.currentLocale)}`;\n }\n\n function setDayRef (el, day) {\n if (!daysRef.value.some(day => day.el === el) && !day.disabled) {\n daysRef.value.push({ el, day });\n }\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n focusDay.value -= 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch {\n const prevFocusDate = calculatePrevFocusDate(daysRef.value[focusDay.value + 7].day.value);\n emits('go-to-prev-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[prevFocusDate - 1].el.$el).focus();\n focusDay.value += prevFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n focusDay.value += 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch {\n const nextFocusDate = calculateNextFocusDate(daysRef.value[focusDay.value - 7].day.value);\n emits('go-to-next-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[nextFocusDate - 1].el.$el).focus();\n focusDay.value += nextFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n if (focusDay.value > 0) {\n focusDay.value -= 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month first day, jump to last day of prev month\n emits('go-to-prev-month');\n focusLastDay();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusDay.value < daysRef.value.length - 1) {\n focusDay.value += 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month last day, jump to first day of next month\n emits('go-to-next-month');\n\n focusFirstDay();\n }\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-month-year-picker');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function focusFirstDay () {\n focusDay.value = 0;\n\n nextTick(() => {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function focusLastDay () {\n nextTick(() => {\n focusDay.value = daysRef.value.length - 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function selectDay (day) {\n if (day.disabled) { return; }\n\n // local selectedDay is updated when a day is selected\n selectedDay.value = day.text;\n emits('select-date', day.value);\n }\n\n return {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n };\n}\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=\"el => { if (el) setDayRef(el, day) }\"\n class=\"d-datepicker__day\"\n :size=\"200\"\n kind=\"muted\"\n importance=\"clear\"\n :disabled=\"day.disabled\"\n :class=\"{\n 'd-datepicker__day--disabled': day.disabled,\n 'd-datepicker__day--selected': selectedDay\n ? ((day.text === selectedDay) && !day.disabled)\n : day.selected,\n }\"\n type=\"button\"\n :aria-selected=\"!!selectedDay ? ((day.text === selectedDay) && !day.disabled) : 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 setup>\nimport { useCalendar } from '../Composables/UseCalendar.js';\nimport { DtButton } from '@/components/Button';\n\nconst props = defineProps({\n calendarDays: {\n type: Array,\n required: true,\n },\n\n weekStartsOn: {\n type: Number,\n default: 0,\n validator: (v) => Number.isInteger(v) && v >= 0 && v <= 6,\n },\n});\n\nconst emits = defineEmits([\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 * Will go to the next month\n *\n * @event go-to-next-month\n */\n 'go-to-next-month',\n\n /**\n * Will go to the previous month\n *\n * @event go-to-prev-month\n */\n 'go-to-prev-month',\n]);\n\nconst {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n} = useCalendar(props, emits);\n\ndefineExpose({\n focusFirstDay,\n});\n</script>\n","<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-stack\n class=\"d-datepicker\"\n gap=\"100\"\n >\n <div class=\"d-datepicker__hd\">\n <month-year-picker\n ref=\"monthYearPicker\"\n :selected-date=\"selectedDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :week-starts-on=\"weekStartsOn\"\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 :week-starts-on=\"weekStartsOn\"\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 setup>\nimport MonthYearPicker from './Modules/MonthYearPicker.vue';\nimport Calendar from './Modules/Calendar.vue';\nimport { DtStack } from '@/components/Stack';\nimport { returnFirstEl, warnIfUnmounted } from '@/common/utils';\nimport { onMounted, ref, getCurrentInstance } from 'vue';\n\ndefineOptions({\n name: 'DtDatepicker',\n});\n\ndefineProps({\n /**\n * Selected date\n *\n * @type {Date}\n */\n selectedDate: {\n type: Date,\n default: () => (new Date()),\n },\n\n /**\n * Minimum selectable date. Days before this date will be disabled.\n * Must be before or equal to maxDate when both are provided.\n *\n * @type {Date}\n */\n minDate: {\n type: Date,\n default: null,\n },\n\n /**\n * Maximum selectable date. Days after this date will be disabled.\n * Must be after or equal to minDate when both are provided.\n *\n * @type {Date}\n */\n maxDate: {\n type: Date,\n default: null,\n validator: (value, props) => {\n if (value && props.minDate && value < props.minDate) {\n console.warn('[DtDatepicker]: maxDate must be after or equal to minDate.');\n return false;\n }\n return true;\n },\n },\n\n /**\n * Day the week starts on. 0 = Sunday, 1 = Monday, ... 6 = Saturday.\n *\n * @values 0, 1, 2, 3, 4, 5, 6\n */\n weekStartsOn: {\n type: Number,\n default: 0,\n validator: (v) => Number.isInteger(v) && v >= 0 && v <= 6,\n },\n});\n\ndefineEmits([\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\nconst calendarDays = ref([]);\n\nfunction updateCalendarDays (days) {\n calendarDays.value = days;\n}\n\nonMounted(() => {\n const instance = getCurrentInstance();\n warnIfUnmounted(returnFirstEl(instance.proxy.$el), 'datepicker');\n});\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"Datepicker-CGFa1nGm.js","names":["$refs","$emit"],"sources":["../components/Datepicker/Composables/UseMonthYearPicker.js","../components/Datepicker/Modules/MonthYearPicker.vue","../components/Datepicker/Composables/UseCalendar.js","../components/Datepicker/Modules/Calendar.vue","../components/Datepicker/Datepicker.vue"],"sourcesContent":["import { computed, ref, watch } from 'vue';\nimport { addMonths, endOfMonth, getDate, getMonth, getYear, set, startOfDay, startOfMonth, subMonths } from 'date-fns';\nimport { formatMonth, getCalendarDays } from '../Utils.js';\nimport { INTL_MONTH_FORMAT } from '../DatepickerConstants';\nimport { returnFirstEl } from '@/common/utils';\nimport { DialtoneLocalization } from '@/localization';\n\nexport function useMonthYearPicker (props, emits) {\n const selectMonth = ref(getMonth(props.selectedDate));\n const selectYear = ref(getYear(props.selectedDate));\n const highlightedDay = ref(null);\n const focusPicker = ref(0);\n const focusRefs = ref([]);\n const i18n = new DialtoneLocalization();\n\n const calendarDays = computed(() => {\n return getCalendarDays(\n selectMonth.value, selectYear.value, highlightedDay.value,\n props.minDate, props.maxDate, props.weekStartsOn,\n );\n });\n\n const isPrevMonthDisabled = computed(() => {\n if (!props.minDate) return false;\n const prevMonth = subMonths(new Date(selectYear.value, selectMonth.value, 1), 1);\n return endOfMonth(prevMonth) < startOfDay(props.minDate);\n });\n\n const isNextMonthDisabled = computed(() => {\n if (!props.maxDate) return false;\n const nextMonth = addMonths(new Date(selectYear.value, selectMonth.value, 1), 1);\n return startOfMonth(nextMonth) > startOfDay(props.maxDate);\n });\n\n const isPrevYearDisabled = computed(() => {\n if (!props.minDate) return false;\n const prevYearMonth = new Date(selectYear.value - 1, selectMonth.value, 1);\n return endOfMonth(prevYearMonth) < startOfDay(props.minDate);\n });\n\n const isNextYearDisabled = computed(() => {\n if (!props.maxDate) return false;\n const nextYearMonth = new Date(selectYear.value + 1, selectMonth.value, 1);\n return startOfMonth(nextYearMonth) > startOfDay(props.maxDate);\n });\n\n watch(selectMonth, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(selectYear, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(() => props.minDate, () => {\n emits('calendar-days', calendarDays.value);\n });\n\n watch(() => props.maxDate, () => {\n emits('calendar-days', calendarDays.value);\n });\n\n function formattedMonth (month) {\n return formatMonth(month, INTL_MONTH_FORMAT, i18n.currentLocale);\n }\n\n function setDayRef (el) {\n if (!focusRefs.value.includes(el)) {\n focusRefs.value.push(el);\n }\n }\n\n function focusMonthYearPicker () {\n returnFirstEl(focusRefs.value[0].$el).focus();\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (focusPicker.value === 0) {\n focusPicker.value = 3;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value--;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusPicker.value === 3) {\n focusPicker.value = 0;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value++;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function highlightDay () {\n const year = getYear(props.selectedDate);\n const month = getMonth(props.selectedDate);\n\n if (year !== selectYear.value || month !== selectMonth.value) {\n highlightedDay.value = null;\n } else {\n highlightedDay.value = getDate(props.selectedDate);\n }\n }\n\n function changeMonth (value) {\n if (value === -1 && isPrevMonthDisabled.value) return;\n if (value === 1 && isNextMonthDisabled.value) return;\n\n // Adjust year when changing from January to December or vice versa\n if ((selectMonth.value === 0 && value === -1) || (selectMonth.value === 11 && value === 1)) {\n selectYear.value += value;\n }\n\n // Calculate the new date by adding or subtracting months\n const initialDate = set(props.selectedDate, { month: selectMonth.value, year: selectYear.value });\n const newDate = value === 1 ? addMonths(initialDate, 1) : subMonths(initialDate, 1);\n\n // Update the selected month\n selectMonth.value = getMonth(newDate);\n }\n\n function changeYear (value) {\n if (value === -1 && isPrevYearDisabled.value) return;\n if (value === 1 && isNextYearDisabled.value) return;\n\n selectYear.value = selectYear.value + value;\n }\n\n function goToNextMonth () {\n changeMonth(1);\n }\n\n function goToPrevMonth () {\n changeMonth(-1);\n }\n\n function previousYearAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_YEAR')} ${selectYear.value - 1}`;\n }\n\n function previousMonthAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_MONTH')} ${formattedMonth(selectMonth.value - 1)}`;\n }\n\n function nextYearAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_NEXT_YEAR')} ${selectYear.value + 1}`;\n }\n\n function nextMonthAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_NEXT_MONTH')} ${formattedMonth(selectMonth.value + 1)}`;\n }\n\n return {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n isPrevMonthDisabled,\n isNextMonthDisabled,\n isPrevYearDisabled,\n isNextYearDisabled,\n previousYearAriaLabel,\n previousMonthAriaLabel,\n nextYearAriaLabel,\n nextMonthAriaLabel,\n };\n}\n","<template>\n <dt-stack\n class=\"d-datepicker__month-year\"\n direction=\"row\"\n gap=\"50\"\n >\n <dt-stack\n as=\"nav\"\n class=\"d-datepicker__nav\"\n direction=\"row\"\n gap=\"25\"\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=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"previousYearAriaLabel()\"\n :disabled=\"isPrevYearDisabled\"\n kind=\"muted\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n :size=\"100\"\n type=\"button\"\n @click=\"changeYear(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <template #icon=\"{ iconSize }\">\n <dt-icon-chevrons-left :size=\"iconSize\" />\n </template>\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=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"previousMonthAriaLabel()\"\n :disabled=\"isPrevMonthDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n :size=\"100\"\n type=\"button\"\n @click=\"changeMonth(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <template #icon=\"{ iconSize }\">\n <dt-icon-chevron-left :size=\"iconSize\" />\n </template>\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=\"25\"\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=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"nextMonthAriaLabel()\"\n :disabled=\"isNextMonthDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n :size=\"100\"\n type=\"button\"\n @click=\"changeMonth(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <template #icon=\"{ iconSize }\">\n <dt-icon-chevron-right :size=\"iconSize\" />\n </template>\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=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"nextYearAriaLabel()\"\n :disabled=\"isNextYearDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n :size=\"100\"\n type=\"button\"\n @click=\"changeYear(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <template #icon=\"{ iconSize }\">\n <dt-icon-chevrons-right :size=\"iconSize\" />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </dt-stack>\n </dt-stack>\n</template>\n\n<script setup>\nimport {\n DtIconChevronLeft,\n DtIconChevronsLeft,\n DtIconChevronRight,\n DtIconChevronsRight,\n} from '@dialpad/dialtone-icons/vue';\nimport { DtStack } from '@/components/Stack';\nimport { DtButton } from '@/components/Button';\nimport { DtTooltip } from '@/components/Tooltip';\nimport { onMounted } from 'vue';\nimport { useMonthYearPicker } from '../Composables/UseMonthYearPicker.js';\nimport { DialtoneLocalization } from '@/localization';\n\nconst props = defineProps({\n selectedDate: {\n type: Date,\n required: true,\n },\n\n minDate: {\n type: Date,\n default: null,\n },\n\n maxDate: {\n type: Date,\n default: null,\n },\n\n weekStartsOn: {\n type: Number,\n default: 0,\n validator: (v) => Number.isInteger(v) && v >= 0 && v <= 6,\n },\n});\n\nconst emits = defineEmits([\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\nconst i18n = new DialtoneLocalization();\n\nconst {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n isPrevMonthDisabled,\n isNextMonthDisabled,\n isPrevYearDisabled,\n isNextYearDisabled,\n previousYearAriaLabel,\n previousMonthAriaLabel,\n nextMonthAriaLabel,\n nextYearAriaLabel,\n} = useMonthYearPicker(props, emits);\n\nonMounted(() => {\n focusMonthYearPicker();\n});\n\ndefineExpose({\n focusMonthYearPicker,\n goToNextMonth,\n goToPrevMonth,\n});\n</script>\n","import { computed, ref, watch, nextTick } from 'vue';\nimport { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate, formatDate } from '../Utils.js';\nimport { INTL_MONTH_FORMAT } from '../DatepickerConstants.js';\nimport { returnFirstEl } from '@/common/utils';\nimport { DialtoneLocalization } from '@/localization';\n\nexport function useCalendar (props, emits) {\n const selectedDay = ref(null);\n const focusDay = ref(0);\n const daysRef = ref([]);\n const i18n = new DialtoneLocalization();\n\n const weekDays = computed(() => {\n return getWeekDayNames(i18n.currentLocale, props.weekStartsOn);\n });\n\n watch(() => props.calendarDays, () => {\n focusDay.value = 0;\n daysRef.value = [];\n selectedDay.value = null;\n });\n\n function dayAriaLabel (day) {\n return i18n.$t('DIALTONE_DATEPICKER_SELECT_DAY') + ` ${formatDate(day.value, INTL_MONTH_FORMAT, i18n.currentLocale)}`;\n }\n\n function setDayRef (el, day) {\n if (!daysRef.value.some(day => day.el === el) && !day.disabled) {\n daysRef.value.push({ el, day });\n }\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n focusDay.value -= 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch {\n const prevFocusDate = calculatePrevFocusDate(daysRef.value[focusDay.value + 7].day.value);\n emits('go-to-prev-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[prevFocusDate - 1].el.$el).focus();\n focusDay.value += prevFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n focusDay.value += 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch {\n const nextFocusDate = calculateNextFocusDate(daysRef.value[focusDay.value - 7].day.value);\n emits('go-to-next-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[nextFocusDate - 1].el.$el).focus();\n focusDay.value += nextFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n if (focusDay.value > 0) {\n focusDay.value -= 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month first day, jump to last day of prev month\n emits('go-to-prev-month');\n focusLastDay();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusDay.value < daysRef.value.length - 1) {\n focusDay.value += 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month last day, jump to first day of next month\n emits('go-to-next-month');\n\n focusFirstDay();\n }\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-month-year-picker');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function focusFirstDay () {\n focusDay.value = 0;\n\n nextTick(() => {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function focusLastDay () {\n nextTick(() => {\n focusDay.value = daysRef.value.length - 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function selectDay (day) {\n if (day.disabled) { return; }\n\n // local selectedDay is updated when a day is selected\n selectedDay.value = day.text;\n emits('select-date', day.value);\n }\n\n return {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n };\n}\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=\"el => { if (el) setDayRef(el, day) }\"\n class=\"d-datepicker__day\"\n :size=\"200\"\n kind=\"muted\"\n importance=\"clear\"\n :disabled=\"day.disabled\"\n :class=\"{\n 'd-datepicker__day--disabled': day.disabled,\n 'd-datepicker__day--selected': selectedDay\n ? ((day.text === selectedDay) && !day.disabled)\n : day.selected,\n }\"\n type=\"button\"\n :aria-selected=\"!!selectedDay ? ((day.text === selectedDay) && !day.disabled) : 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 setup>\nimport { useCalendar } from '../Composables/UseCalendar.js';\nimport { DtButton } from '@/components/Button';\n\nconst props = defineProps({\n calendarDays: {\n type: Array,\n required: true,\n },\n\n weekStartsOn: {\n type: Number,\n default: 0,\n validator: (v) => Number.isInteger(v) && v >= 0 && v <= 6,\n },\n});\n\nconst emits = defineEmits([\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 * Will go to the next month\n *\n * @event go-to-next-month\n */\n 'go-to-next-month',\n\n /**\n * Will go to the previous month\n *\n * @event go-to-prev-month\n */\n 'go-to-prev-month',\n]);\n\nconst {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n} = useCalendar(props, emits);\n\ndefineExpose({\n focusFirstDay,\n});\n</script>\n","<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-stack\n class=\"d-datepicker\"\n gap=\"100\"\n >\n <div class=\"d-datepicker__hd\">\n <month-year-picker\n ref=\"monthYearPicker\"\n :selected-date=\"selectedDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :week-starts-on=\"weekStartsOn\"\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 :week-starts-on=\"weekStartsOn\"\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 setup>\nimport MonthYearPicker from './Modules/MonthYearPicker.vue';\nimport Calendar from './Modules/Calendar.vue';\nimport { DtStack } from '@/components/Stack';\nimport { returnFirstEl, warnIfUnmounted } from '@/common/utils';\nimport { onMounted, ref, getCurrentInstance } from 'vue';\n\ndefineOptions({\n name: 'DtDatepicker',\n});\n\ndefineProps({\n /**\n * Selected date\n *\n * @type {Date}\n */\n selectedDate: {\n type: Date,\n default: () => (new Date()),\n },\n\n /**\n * Minimum selectable date. Days before this date will be disabled.\n * Must be before or equal to maxDate when both are provided.\n *\n * @type {Date}\n */\n minDate: {\n type: Date,\n default: null,\n },\n\n /**\n * Maximum selectable date. Days after this date will be disabled.\n * Must be after or equal to minDate when both are provided.\n *\n * @type {Date}\n */\n maxDate: {\n type: Date,\n default: null,\n validator: (value, props) => {\n if (value && props.minDate && value < props.minDate) {\n console.warn('[DtDatepicker]: maxDate must be after or equal to minDate.');\n return false;\n }\n return true;\n },\n },\n\n /**\n * Day the week starts on. 0 = Sunday, 1 = Monday, ... 6 = Saturday.\n *\n * @values 0, 1, 2, 3, 4, 5, 6\n */\n weekStartsOn: {\n type: Number,\n default: 0,\n validator: (v) => Number.isInteger(v) && v >= 0 && v <= 6,\n },\n});\n\ndefineEmits([\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\nconst calendarDays = ref([]);\n\nfunction updateCalendarDays (days) {\n calendarDays.value = days;\n}\n\nonMounted(() => {\n const instance = getCurrentInstance();\n warnIfUnmounted(returnFirstEl(instance.proxy.$el), 'datepicker');\n});\n</script>\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- require(`./chunk-Bmb41Sf3.cjs`);const e=require(`./common/utils/index.cjs`),t=require(`./localization/index.cjs`),n=require(`./lib/button/button.cjs`),r=require(`./lib/stack/stack.cjs`),i=require(`./lib/tooltip/tooltip.cjs`),a=require(`./lib/datepicker/datepicker-constants.cjs`),o=require(`./lib/datepicker/utils.cjs`);let s=require(`vue`),c=require(`date-fns`),l=require(`@dialpad/dialtone-icons/vue`);function u(n,r){let i=(0,s.ref)((0,c.getMonth)(n.selectedDate)),l=(0,s.ref)((0,c.getYear)(n.selectedDate)),u=(0,s.ref)(null),d=(0,s.ref)(0),f=(0,s.ref)([]),p=new t.DialtoneLocalization,m=(0,s.computed)(()=>o.getCalendarDays(i.value,l.value,u.value,n.minDate,n.maxDate,n.weekStartsOn)),h=(0,s.computed)(()=>n.minDate?(0,c.endOfMonth)((0,c.subMonths)(new Date(l.value,i.value,1),1))<(0,c.startOfDay)(n.minDate):!1),g=(0,s.computed)(()=>n.maxDate?(0,c.startOfMonth)((0,c.addMonths)(new Date(l.value,i.value,1),1))>(0,c.startOfDay)(n.maxDate):!1),_=(0,s.computed)(()=>n.minDate?(0,c.endOfMonth)(new Date(l.value-1,i.value,1))<(0,c.startOfDay)(n.minDate):!1),v=(0,s.computed)(()=>n.maxDate?(0,c.startOfMonth)(new Date(l.value+1,i.value,1))>(0,c.startOfDay)(n.maxDate):!1);(0,s.watch)(i,()=>{C(),r(`calendar-days`,m.value)},{immediate:!0}),(0,s.watch)(l,()=>{C(),r(`calendar-days`,m.value)},{immediate:!0}),(0,s.watch)(()=>n.minDate,()=>{r(`calendar-days`,m.value)}),(0,s.watch)(()=>n.maxDate,()=>{r(`calendar-days`,m.value)});function y(e){return o.formatMonth(e,a.INTL_MONTH_FORMAT,p.currentLocale)}function b(e){f.value.includes(e)||f.value.push(e)}function x(){e.returnFirstEl(f.value[0].$el).focus()}function S(t){switch(t.key){case`ArrowLeft`:t.preventDefault(),d.value===0?(d.value=3,e.returnFirstEl(f.value[d.value].$el).focus()):(d.value--,e.returnFirstEl(f.value[d.value].$el).focus());break;case`ArrowRight`:t.preventDefault(),d.value===3?(d.value=0,e.returnFirstEl(f.value[d.value].$el).focus()):(d.value++,e.returnFirstEl(f.value[d.value].$el).focus());break;case`ArrowDown`:t.preventDefault(),r(`focus-first-day`);break;case`Tab`:t.preventDefault(),r(`focus-first-day`);break;case`Escape`:r(`close-datepicker`);break}}function C(){let e=(0,c.getYear)(n.selectedDate),t=(0,c.getMonth)(n.selectedDate);e!==l.value||t!==i.value?u.value=null:u.value=(0,c.getDate)(n.selectedDate)}function w(e){if(e===-1&&h.value||e===1&&g.value)return;(i.value===0&&e===-1||i.value===11&&e===1)&&(l.value+=e);let t=(0,c.set)(n.selectedDate,{month:i.value,year:l.value});i.value=(0,c.getMonth)(e===1?(0,c.addMonths)(t,1):(0,c.subMonths)(t,1))}function T(e){e===-1&&_.value||e===1&&v.value||(l.value+=e)}function E(){w(1)}function D(){w(-1)}function O(){return`${p.$t(`DIALTONE_DATEPICKER_CHANGE_TO`)} ${p.$t(`DIALTONE_DATEPICKER_PREVIOUS_YEAR`)} ${l.value-1}`}function k(){return`${p.$t(`DIALTONE_DATEPICKER_CHANGE_TO`)} ${p.$t(`DIALTONE_DATEPICKER_PREVIOUS_MONTH`)} ${y(i.value-1)}`}function A(){return`${p.$t(`DIALTONE_DATEPICKER_CHANGE_TO`)} ${p.$t(`DIALTONE_DATEPICKER_NEXT_YEAR`)} ${l.value+1}`}function j(){return`${p.$t(`DIALTONE_DATEPICKER_CHANGE_TO`)} ${p.$t(`DIALTONE_DATEPICKER_NEXT_MONTH`)} ${y(i.value+1)}`}return{selectMonth:i,selectYear:l,formattedMonth:y,setDayRef:b,focusMonthYearPicker:x,handleKeyDown:S,changeMonth:w,changeYear:T,goToNextMonth:E,goToPrevMonth:D,isPrevMonthDisabled:h,isNextMonthDisabled:g,isPrevYearDisabled:_,isNextYearDisabled:v,previousYearAriaLabel:O,previousMonthAriaLabel:k,nextYearAriaLabel:A,nextMonthAriaLabel:j}}var d={id:`calendar-heading`,class:`d-datepicker__month-year-title`},f={__name:`MonthYearPicker`,props:{selectedDate:{type:Date,required:!0},minDate:{type:Date,default:null},maxDate:{type:Date,default:null},weekStartsOn:{type:Number,default:0,validator:e=>Number.isInteger(e)&&e>=0&&e<=6}},emits:[`calendar-days`,`focus-first-day`,`focus-last-day`,`close-datepicker`],setup(e,{expose:a,emit:o}){let c=e,f=o,p=new t.DialtoneLocalization,{selectMonth:m,selectYear:h,formattedMonth:g,setDayRef:_,focusMonthYearPicker:v,handleKeyDown:y,changeMonth:b,changeYear:x,goToNextMonth:S,goToPrevMonth:C,isPrevMonthDisabled:w,isNextMonthDisabled:T,isPrevYearDisabled:E,isNextYearDisabled:D,previousYearAriaLabel:O,previousMonthAriaLabel:k,nextMonthAriaLabel:A,nextYearAriaLabel:j}=u(c,f);return(0,s.onMounted)(()=>{v()}),a({focusMonthYearPicker:v,goToNextMonth:S,goToPrevMonth:C}),(e,t)=>((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(r.default),{class:`d-datepicker__month-year`,direction:`row`,gap:`50`},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(r.default),{as:`nav`,class:`d-datepicker__nav`,direction:`row`,gap:`25`},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(i.default),{"fallback-placements":[`top-start`,`auto`],message:(0,s.unref)(p).$t(`DIALTONE_DATEPICKER_PREVIOUS_YEAR`),placement:`top`},{anchor:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(n.default),{id:`prevYearButton`,ref:e=>{e&&(0,s.unref)(_)(e)},"aria-label":(0,s.unref)(O)(),disabled:(0,s.unref)(E),kind:`muted`,class:`d-datepicker__nav-btn`,importance:`clear`,size:100,type:`button`,onClick:t[0]||(t[0]=e=>(0,s.unref)(x)(-1)),onKeydown:t[1]||(t[1]=e=>(0,s.unref)(y)(e))},{icon:(0,s.withCtx)(({iconSize:e})=>[(0,s.createVNode)((0,s.unref)(l.DtIconChevronsLeft),{size:e},null,8,[`size`])]),_:1},8,[`aria-label`,`disabled`])]),_:1},8,[`message`]),(0,s.createVNode)((0,s.unref)(i.default),{"fallback-placements":[`top-start`,`auto`],message:(0,s.unref)(p).$t(`DIALTONE_DATEPICKER_PREVIOUS_MONTH`),placement:`top`},{anchor:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(n.default),{id:`prevMonthButton`,ref:e=>{e&&(0,s.unref)(_)(e)},"aria-label":(0,s.unref)(k)(),disabled:(0,s.unref)(w),class:`d-datepicker__nav-btn`,importance:`clear`,kind:`muted`,size:100,type:`button`,onClick:t[2]||(t[2]=e=>(0,s.unref)(b)(-1)),onKeydown:t[3]||(t[3]=e=>(0,s.unref)(y)(e))},{icon:(0,s.withCtx)(({iconSize:e})=>[(0,s.createVNode)((0,s.unref)(l.DtIconChevronLeft),{size:e},null,8,[`size`])]),_:1},8,[`aria-label`,`disabled`])]),_:1},8,[`message`])]),_:1}),(0,s.createElementVNode)(`div`,d,(0,s.toDisplayString)((0,s.unref)(g)((0,s.unref)(m)))+` `+(0,s.toDisplayString)((0,s.unref)(h)),1),(0,s.createVNode)((0,s.unref)(r.default),{as:`nav`,class:`d-datepicker__nav`,direction:`row`,gap:`25`},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(i.default),{"fallback-placements":[`top-end`,`auto`],message:(0,s.unref)(p).$t(`DIALTONE_DATEPICKER_NEXT_MONTH`),placement:`top`},{anchor:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(n.default),{id:`nextMonthButton`,ref:e=>{e&&(0,s.unref)(_)(e)},"aria-label":(0,s.unref)(A)(),disabled:(0,s.unref)(T),class:`d-datepicker__nav-btn`,importance:`clear`,kind:`muted`,size:100,type:`button`,onClick:t[4]||(t[4]=e=>(0,s.unref)(b)(1)),onKeydown:t[5]||(t[5]=e=>(0,s.unref)(y)(e))},{icon:(0,s.withCtx)(({iconSize:e})=>[(0,s.createVNode)((0,s.unref)(l.DtIconChevronRight),{size:e},null,8,[`size`])]),_:1},8,[`aria-label`,`disabled`])]),_:1},8,[`message`]),(0,s.createVNode)((0,s.unref)(i.default),{"fallback-placements":[`top-end`,`auto`],message:(0,s.unref)(p).$t(`DIALTONE_DATEPICKER_NEXT_YEAR`),placement:`top`},{anchor:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(n.default),{id:`nextYearButton`,ref:e=>{e&&(0,s.unref)(_)(e)},"aria-label":(0,s.unref)(j)(),disabled:(0,s.unref)(D),class:`d-datepicker__nav-btn`,importance:`clear`,kind:`muted`,size:100,type:`button`,onClick:t[6]||(t[6]=e=>(0,s.unref)(x)(1)),onKeydown:t[7]||(t[7]=e=>(0,s.unref)(y)(e))},{icon:(0,s.withCtx)(({iconSize:e})=>[(0,s.createVNode)((0,s.unref)(l.DtIconChevronsRight),{size:e},null,8,[`size`])]),_:1},8,[`aria-label`,`disabled`])]),_:1},8,[`message`])]),_:1})]),_:1}))}};function p(n,r){let i=(0,s.ref)(null),c=(0,s.ref)(0),l=(0,s.ref)([]),u=new t.DialtoneLocalization,d=(0,s.computed)(()=>o.getWeekDayNames(u.currentLocale,n.weekStartsOn));(0,s.watch)(()=>n.calendarDays,()=>{c.value=0,l.value=[],i.value=null});function f(e){return u.$t(`DIALTONE_DATEPICKER_SELECT_DAY`)+` ${o.formatDate(e.value,a.INTL_MONTH_FORMAT,u.currentLocale)}`}function p(e,t){!l.value.some(t=>t.el===e)&&!t.disabled&&l.value.push({el:e,day:t})}function m(t){switch(t.key){case`ArrowUp`:t.preventDefault(),c.value-=7;try{e.returnFirstEl(l.value[c.value].el.$el).focus()}catch{let t=o.calculatePrevFocusDate(l.value[c.value+7].day.value);r(`go-to-prev-month`),(0,s.nextTick)(()=>{e.returnFirstEl(l.value[t-1].el.$el).focus(),c.value+=t-1})}break;case`ArrowDown`:t.preventDefault(),c.value+=7;try{e.returnFirstEl(l.value[c.value].el.$el).focus()}catch{let t=o.calculateNextFocusDate(l.value[c.value-7].day.value);r(`go-to-next-month`),(0,s.nextTick)(()=>{e.returnFirstEl(l.value[t-1].el.$el).focus(),c.value+=t-1})}break;case`ArrowLeft`:t.preventDefault(),c.value>0?(--c.value,e.returnFirstEl(l.value[c.value].el.$el).focus()):(r(`go-to-prev-month`),g());break;case`ArrowRight`:t.preventDefault(),c.value<l.value.length-1?(c.value+=1,e.returnFirstEl(l.value[c.value].el.$el).focus()):(r(`go-to-next-month`),h());break;case`Tab`:t.preventDefault(),r(`focus-month-year-picker`);break;case`Escape`:r(`close-datepicker`);break}}function h(){c.value=0,(0,s.nextTick)(()=>{e.returnFirstEl(l.value[c.value].el.$el).focus()})}function g(){(0,s.nextTick)(()=>{c.value=l.value.length-1,e.returnFirstEl(l.value[c.value].el.$el).focus()})}function _(e){e.disabled||(i.value=e.text,r(`select-date`,e.value))}return{selectedDay:i,weekDays:d,dayAriaLabel:f,setDayRef:p,handleKeyDown:m,focusFirstDay:h,selectDay:_}}var m={class:`d-datepicker__calendar`,"aria-labelledby":`calendar-heading`},h=[`title`,`aria-label`],g={__name:`Calendar`,props:{calendarDays:{type:Array,required:!0},weekStartsOn:{type:Number,default:0,validator:e=>Number.isInteger(e)&&e>=0&&e<=6}},emits:[`select-date`,`focus-month-year-picker`,`close-datepicker`,`go-to-next-month`,`go-to-prev-month`],setup(e,{expose:t,emit:r}){let{selectedDay:i,weekDays:a,dayAriaLabel:o,setDayRef:c,handleKeyDown:l,focusFirstDay:u,selectDay:d}=p(e,r);return t({focusFirstDay:u}),(t,r)=>((0,s.openBlock)(),(0,s.createElementBlock)(`table`,m,[(0,s.createElementVNode)(`thead`,null,[(0,s.createElementVNode)(`tr`,null,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(a),e=>((0,s.openBlock)(),(0,s.createElementBlock)(`th`,{key:e,scope:`col`,class:`d-datepicker__cell d-datepicker__cell--header`},[(0,s.createElementVNode)(`span`,{class:`d-datepicker__weekday`,title:e,"aria-label":e},(0,s.toDisplayString)(e),9,h)]))),128))])]),(0,s.createElementVNode)(`tbody`,null,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(e.calendarDays,(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,{key:t},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(e.days,(e,a)=>((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:t+a,class:`d-datepicker__cell`,role:`listbox`},[(0,s.createVNode)((0,s.unref)(n.default),{ref_for:!0,ref:t=>{t&&(0,s.unref)(c)(t,e)},class:(0,s.normalizeClass)([`d-datepicker__day`,{"d-datepicker__day--disabled":e.disabled,"d-datepicker__day--selected":(0,s.unref)(i)?e.text===(0,s.unref)(i)&&!e.disabled:e.selected}]),size:200,kind:`muted`,importance:`clear`,disabled:e.disabled,type:`button`,"aria-selected":(0,s.unref)(i)?e.text===(0,s.unref)(i)&&!e.disabled:e.selected,"aria-label":(0,s.unref)(o)(e),role:`option`,onClick:t=>(0,s.unref)(d)(e),onKeydown:r[0]||(r[0]=e=>(0,s.unref)(l)(e))},{default:(0,s.withCtx)(()=>[(0,s.createTextVNode)((0,s.toDisplayString)(e.text),1)]),_:2},1032,[`disabled`,`class`,`aria-selected`,`aria-label`,`onClick`])]))),128))]))),128))])]))}},_={class:`d-datepicker__hd`},v={class:`d-datepicker__bd`},y=Object.assign({name:`DtDatepicker`},{__name:`Datepicker`,props:{selectedDate:{type:Date,default:()=>new Date},minDate:{type:Date,default:null},maxDate:{type:Date,default:null,validator:(e,t)=>e&&t.minDate&&e<t.minDate?(console.warn(`[DtDatepicker]: maxDate must be after or equal to minDate.`),!1):!0},weekStartsOn:{type:Number,default:0,validator:e=>Number.isInteger(e)&&e>=0&&e<=6}},emits:[`selected-date`,`close-datepicker`],setup(t){let n=(0,s.ref)([]);function i(e){n.value=e}return(0,s.onMounted)(()=>{e.warnIfUnmounted(e.returnFirstEl((0,s.getCurrentInstance)().proxy.$el),`datepicker`)}),(e,a)=>((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(r.default),{class:`d-datepicker`,gap:`100`},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,_,[(0,s.createVNode)(f,{ref:`monthYearPicker`,"selected-date":t.selectedDate,"min-date":t.minDate,"max-date":t.maxDate,"week-starts-on":t.weekStartsOn,onCalendarDays:i,onFocusFirstDay:a[0]||(a[0]=t=>e.$refs.calendar.focusFirstDay()),onFocusLastDay:a[1]||(a[1]=t=>e.$refs.calendar.focusLastDay()),onCloseDatepicker:a[2]||(a[2]=t=>e.$emit(`close-datepicker`))},null,8,[`selected-date`,`min-date`,`max-date`,`week-starts-on`])]),(0,s.createElementVNode)(`div`,v,[(0,s.createVNode)(g,{ref:`calendar`,"calendar-days":n.value,"week-starts-on":t.weekStartsOn,onSelectDate:a[3]||(a[3]=t=>e.$emit(`selected-date`,t)),onFocusMonthYearPicker:a[4]||(a[4]=t=>e.$refs.monthYearPicker.focusMonthYearPicker()),onCloseDatepicker:a[5]||(a[5]=t=>e.$emit(`close-datepicker`)),onGoToNextMonth:a[6]||(a[6]=t=>e.$refs.monthYearPicker.goToNextMonth()),onGoToPrevMonth:a[7]||(a[7]=t=>e.$refs.monthYearPicker.goToPrevMonth())},null,8,[`calendar-days`,`week-starts-on`])])]),_:1}))}});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return y}});
2
- //# sourceMappingURL=Datepicker-PhSgm8nW.cjs.map
1
+ require(`./chunk-Bmb41Sf3.cjs`);const e=require(`./common/utils/index.cjs`),t=require(`./localization/index.cjs`),n=require(`./lib/button/button.cjs`),r=require(`./lib/stack/stack.cjs`),i=require(`./lib/tooltip/tooltip.cjs`),a=require(`./lib/datepicker/datepicker-constants.cjs`),o=require(`./lib/datepicker/utils.cjs`);let s=require(`vue`),c=require(`@dialpad/dialtone-icons/vue`),l=require(`date-fns`);function u(n,r){let i=(0,s.ref)((0,l.getMonth)(n.selectedDate)),c=(0,s.ref)((0,l.getYear)(n.selectedDate)),u=(0,s.ref)(null),d=(0,s.ref)(0),f=(0,s.ref)([]),p=new t.DialtoneLocalization,m=(0,s.computed)(()=>o.getCalendarDays(i.value,c.value,u.value,n.minDate,n.maxDate,n.weekStartsOn)),h=(0,s.computed)(()=>n.minDate?(0,l.endOfMonth)((0,l.subMonths)(new Date(c.value,i.value,1),1))<(0,l.startOfDay)(n.minDate):!1),g=(0,s.computed)(()=>n.maxDate?(0,l.startOfMonth)((0,l.addMonths)(new Date(c.value,i.value,1),1))>(0,l.startOfDay)(n.maxDate):!1),_=(0,s.computed)(()=>n.minDate?(0,l.endOfMonth)(new Date(c.value-1,i.value,1))<(0,l.startOfDay)(n.minDate):!1),v=(0,s.computed)(()=>n.maxDate?(0,l.startOfMonth)(new Date(c.value+1,i.value,1))>(0,l.startOfDay)(n.maxDate):!1);(0,s.watch)(i,()=>{C(),r(`calendar-days`,m.value)},{immediate:!0}),(0,s.watch)(c,()=>{C(),r(`calendar-days`,m.value)},{immediate:!0}),(0,s.watch)(()=>n.minDate,()=>{r(`calendar-days`,m.value)}),(0,s.watch)(()=>n.maxDate,()=>{r(`calendar-days`,m.value)});function y(e){return o.formatMonth(e,a.INTL_MONTH_FORMAT,p.currentLocale)}function b(e){f.value.includes(e)||f.value.push(e)}function x(){e.returnFirstEl(f.value[0].$el).focus()}function S(t){switch(t.key){case`ArrowLeft`:t.preventDefault(),d.value===0?(d.value=3,e.returnFirstEl(f.value[d.value].$el).focus()):(d.value--,e.returnFirstEl(f.value[d.value].$el).focus());break;case`ArrowRight`:t.preventDefault(),d.value===3?(d.value=0,e.returnFirstEl(f.value[d.value].$el).focus()):(d.value++,e.returnFirstEl(f.value[d.value].$el).focus());break;case`ArrowDown`:t.preventDefault(),r(`focus-first-day`);break;case`Tab`:t.preventDefault(),r(`focus-first-day`);break;case`Escape`:r(`close-datepicker`);break}}function C(){let e=(0,l.getYear)(n.selectedDate),t=(0,l.getMonth)(n.selectedDate);e!==c.value||t!==i.value?u.value=null:u.value=(0,l.getDate)(n.selectedDate)}function w(e){if(e===-1&&h.value||e===1&&g.value)return;(i.value===0&&e===-1||i.value===11&&e===1)&&(c.value+=e);let t=(0,l.set)(n.selectedDate,{month:i.value,year:c.value});i.value=(0,l.getMonth)(e===1?(0,l.addMonths)(t,1):(0,l.subMonths)(t,1))}function T(e){e===-1&&_.value||e===1&&v.value||(c.value+=e)}function E(){w(1)}function D(){w(-1)}function O(){return`${p.$t(`DIALTONE_DATEPICKER_CHANGE_TO`)} ${p.$t(`DIALTONE_DATEPICKER_PREVIOUS_YEAR`)} ${c.value-1}`}function k(){return`${p.$t(`DIALTONE_DATEPICKER_CHANGE_TO`)} ${p.$t(`DIALTONE_DATEPICKER_PREVIOUS_MONTH`)} ${y(i.value-1)}`}function A(){return`${p.$t(`DIALTONE_DATEPICKER_CHANGE_TO`)} ${p.$t(`DIALTONE_DATEPICKER_NEXT_YEAR`)} ${c.value+1}`}function j(){return`${p.$t(`DIALTONE_DATEPICKER_CHANGE_TO`)} ${p.$t(`DIALTONE_DATEPICKER_NEXT_MONTH`)} ${y(i.value+1)}`}return{selectMonth:i,selectYear:c,formattedMonth:y,setDayRef:b,focusMonthYearPicker:x,handleKeyDown:S,changeMonth:w,changeYear:T,goToNextMonth:E,goToPrevMonth:D,isPrevMonthDisabled:h,isNextMonthDisabled:g,isPrevYearDisabled:_,isNextYearDisabled:v,previousYearAriaLabel:O,previousMonthAriaLabel:k,nextYearAriaLabel:A,nextMonthAriaLabel:j}}var d={id:`calendar-heading`,class:`d-datepicker__month-year-title`},f={__name:`MonthYearPicker`,props:{selectedDate:{type:Date,required:!0},minDate:{type:Date,default:null},maxDate:{type:Date,default:null},weekStartsOn:{type:Number,default:0,validator:e=>Number.isInteger(e)&&e>=0&&e<=6}},emits:[`calendar-days`,`focus-first-day`,`focus-last-day`,`close-datepicker`],setup(e,{expose:a,emit:o}){let l=e,f=o,p=new t.DialtoneLocalization,{selectMonth:m,selectYear:h,formattedMonth:g,setDayRef:_,focusMonthYearPicker:v,handleKeyDown:y,changeMonth:b,changeYear:x,goToNextMonth:S,goToPrevMonth:C,isPrevMonthDisabled:w,isNextMonthDisabled:T,isPrevYearDisabled:E,isNextYearDisabled:D,previousYearAriaLabel:O,previousMonthAriaLabel:k,nextMonthAriaLabel:A,nextYearAriaLabel:j}=u(l,f);return(0,s.onMounted)(()=>{v()}),a({focusMonthYearPicker:v,goToNextMonth:S,goToPrevMonth:C}),(e,t)=>((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(r.default),{class:`d-datepicker__month-year`,direction:`row`,gap:`50`},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(r.default),{as:`nav`,class:`d-datepicker__nav`,direction:`row`,gap:`25`},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(i.default),{"fallback-placements":[`top-start`,`auto`],message:(0,s.unref)(p).$t(`DIALTONE_DATEPICKER_PREVIOUS_YEAR`),placement:`top`},{anchor:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(n.default),{id:`prevYearButton`,ref:e=>{e&&(0,s.unref)(_)(e)},"aria-label":(0,s.unref)(O)(),disabled:(0,s.unref)(E),kind:`muted`,class:`d-datepicker__nav-btn`,importance:`clear`,size:100,type:`button`,onClick:t[0]||(t[0]=e=>(0,s.unref)(x)(-1)),onKeydown:t[1]||(t[1]=e=>(0,s.unref)(y)(e))},{icon:(0,s.withCtx)(({iconSize:e})=>[(0,s.createVNode)((0,s.unref)(c.DtIconChevronsLeft),{size:e},null,8,[`size`])]),_:1},8,[`aria-label`,`disabled`])]),_:1},8,[`message`]),(0,s.createVNode)((0,s.unref)(i.default),{"fallback-placements":[`top-start`,`auto`],message:(0,s.unref)(p).$t(`DIALTONE_DATEPICKER_PREVIOUS_MONTH`),placement:`top`},{anchor:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(n.default),{id:`prevMonthButton`,ref:e=>{e&&(0,s.unref)(_)(e)},"aria-label":(0,s.unref)(k)(),disabled:(0,s.unref)(w),class:`d-datepicker__nav-btn`,importance:`clear`,kind:`muted`,size:100,type:`button`,onClick:t[2]||(t[2]=e=>(0,s.unref)(b)(-1)),onKeydown:t[3]||(t[3]=e=>(0,s.unref)(y)(e))},{icon:(0,s.withCtx)(({iconSize:e})=>[(0,s.createVNode)((0,s.unref)(c.DtIconChevronLeft),{size:e},null,8,[`size`])]),_:1},8,[`aria-label`,`disabled`])]),_:1},8,[`message`])]),_:1}),(0,s.createElementVNode)(`div`,d,(0,s.toDisplayString)((0,s.unref)(g)((0,s.unref)(m)))+` `+(0,s.toDisplayString)((0,s.unref)(h)),1),(0,s.createVNode)((0,s.unref)(r.default),{as:`nav`,class:`d-datepicker__nav`,direction:`row`,gap:`25`},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(i.default),{"fallback-placements":[`top-end`,`auto`],message:(0,s.unref)(p).$t(`DIALTONE_DATEPICKER_NEXT_MONTH`),placement:`top`},{anchor:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(n.default),{id:`nextMonthButton`,ref:e=>{e&&(0,s.unref)(_)(e)},"aria-label":(0,s.unref)(A)(),disabled:(0,s.unref)(T),class:`d-datepicker__nav-btn`,importance:`clear`,kind:`muted`,size:100,type:`button`,onClick:t[4]||(t[4]=e=>(0,s.unref)(b)(1)),onKeydown:t[5]||(t[5]=e=>(0,s.unref)(y)(e))},{icon:(0,s.withCtx)(({iconSize:e})=>[(0,s.createVNode)((0,s.unref)(c.DtIconChevronRight),{size:e},null,8,[`size`])]),_:1},8,[`aria-label`,`disabled`])]),_:1},8,[`message`]),(0,s.createVNode)((0,s.unref)(i.default),{"fallback-placements":[`top-end`,`auto`],message:(0,s.unref)(p).$t(`DIALTONE_DATEPICKER_NEXT_YEAR`),placement:`top`},{anchor:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(n.default),{id:`nextYearButton`,ref:e=>{e&&(0,s.unref)(_)(e)},"aria-label":(0,s.unref)(j)(),disabled:(0,s.unref)(D),class:`d-datepicker__nav-btn`,importance:`clear`,kind:`muted`,size:100,type:`button`,onClick:t[6]||(t[6]=e=>(0,s.unref)(x)(1)),onKeydown:t[7]||(t[7]=e=>(0,s.unref)(y)(e))},{icon:(0,s.withCtx)(({iconSize:e})=>[(0,s.createVNode)((0,s.unref)(c.DtIconChevronsRight),{size:e},null,8,[`size`])]),_:1},8,[`aria-label`,`disabled`])]),_:1},8,[`message`])]),_:1})]),_:1}))}};function p(n,r){let i=(0,s.ref)(null),c=(0,s.ref)(0),l=(0,s.ref)([]),u=new t.DialtoneLocalization,d=(0,s.computed)(()=>o.getWeekDayNames(u.currentLocale,n.weekStartsOn));(0,s.watch)(()=>n.calendarDays,()=>{c.value=0,l.value=[],i.value=null});function f(e){return u.$t(`DIALTONE_DATEPICKER_SELECT_DAY`)+` ${o.formatDate(e.value,a.INTL_MONTH_FORMAT,u.currentLocale)}`}function p(e,t){!l.value.some(t=>t.el===e)&&!t.disabled&&l.value.push({el:e,day:t})}function m(t){switch(t.key){case`ArrowUp`:t.preventDefault(),c.value-=7;try{e.returnFirstEl(l.value[c.value].el.$el).focus()}catch{let t=o.calculatePrevFocusDate(l.value[c.value+7].day.value);r(`go-to-prev-month`),(0,s.nextTick)(()=>{e.returnFirstEl(l.value[t-1].el.$el).focus(),c.value+=t-1})}break;case`ArrowDown`:t.preventDefault(),c.value+=7;try{e.returnFirstEl(l.value[c.value].el.$el).focus()}catch{let t=o.calculateNextFocusDate(l.value[c.value-7].day.value);r(`go-to-next-month`),(0,s.nextTick)(()=>{e.returnFirstEl(l.value[t-1].el.$el).focus(),c.value+=t-1})}break;case`ArrowLeft`:t.preventDefault(),c.value>0?(--c.value,e.returnFirstEl(l.value[c.value].el.$el).focus()):(r(`go-to-prev-month`),g());break;case`ArrowRight`:t.preventDefault(),c.value<l.value.length-1?(c.value+=1,e.returnFirstEl(l.value[c.value].el.$el).focus()):(r(`go-to-next-month`),h());break;case`Tab`:t.preventDefault(),r(`focus-month-year-picker`);break;case`Escape`:r(`close-datepicker`);break}}function h(){c.value=0,(0,s.nextTick)(()=>{e.returnFirstEl(l.value[c.value].el.$el).focus()})}function g(){(0,s.nextTick)(()=>{c.value=l.value.length-1,e.returnFirstEl(l.value[c.value].el.$el).focus()})}function _(e){e.disabled||(i.value=e.text,r(`select-date`,e.value))}return{selectedDay:i,weekDays:d,dayAriaLabel:f,setDayRef:p,handleKeyDown:m,focusFirstDay:h,selectDay:_}}var m={class:`d-datepicker__calendar`,"aria-labelledby":`calendar-heading`},h=[`title`,`aria-label`],g={__name:`Calendar`,props:{calendarDays:{type:Array,required:!0},weekStartsOn:{type:Number,default:0,validator:e=>Number.isInteger(e)&&e>=0&&e<=6}},emits:[`select-date`,`focus-month-year-picker`,`close-datepicker`,`go-to-next-month`,`go-to-prev-month`],setup(e,{expose:t,emit:r}){let{selectedDay:i,weekDays:a,dayAriaLabel:o,setDayRef:c,handleKeyDown:l,focusFirstDay:u,selectDay:d}=p(e,r);return t({focusFirstDay:u}),(t,r)=>((0,s.openBlock)(),(0,s.createElementBlock)(`table`,m,[(0,s.createElementVNode)(`thead`,null,[(0,s.createElementVNode)(`tr`,null,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(a),e=>((0,s.openBlock)(),(0,s.createElementBlock)(`th`,{key:e,scope:`col`,class:`d-datepicker__cell d-datepicker__cell--header`},[(0,s.createElementVNode)(`span`,{class:`d-datepicker__weekday`,title:e,"aria-label":e},(0,s.toDisplayString)(e),9,h)]))),128))])]),(0,s.createElementVNode)(`tbody`,null,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(e.calendarDays,(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,{key:t},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(e.days,(e,a)=>((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:t+a,class:`d-datepicker__cell`,role:`listbox`},[(0,s.createVNode)((0,s.unref)(n.default),{ref_for:!0,ref:t=>{t&&(0,s.unref)(c)(t,e)},class:(0,s.normalizeClass)([`d-datepicker__day`,{"d-datepicker__day--disabled":e.disabled,"d-datepicker__day--selected":(0,s.unref)(i)?e.text===(0,s.unref)(i)&&!e.disabled:e.selected}]),size:200,kind:`muted`,importance:`clear`,disabled:e.disabled,type:`button`,"aria-selected":(0,s.unref)(i)?e.text===(0,s.unref)(i)&&!e.disabled:e.selected,"aria-label":(0,s.unref)(o)(e),role:`option`,onClick:t=>(0,s.unref)(d)(e),onKeydown:r[0]||(r[0]=e=>(0,s.unref)(l)(e))},{default:(0,s.withCtx)(()=>[(0,s.createTextVNode)((0,s.toDisplayString)(e.text),1)]),_:2},1032,[`disabled`,`class`,`aria-selected`,`aria-label`,`onClick`])]))),128))]))),128))])]))}},_={class:`d-datepicker__hd`},v={class:`d-datepicker__bd`},y=Object.assign({name:`DtDatepicker`},{__name:`Datepicker`,props:{selectedDate:{type:Date,default:()=>new Date},minDate:{type:Date,default:null},maxDate:{type:Date,default:null,validator:(e,t)=>e&&t.minDate&&e<t.minDate?(console.warn(`[DtDatepicker]: maxDate must be after or equal to minDate.`),!1):!0},weekStartsOn:{type:Number,default:0,validator:e=>Number.isInteger(e)&&e>=0&&e<=6}},emits:[`selected-date`,`close-datepicker`],setup(t){let n=(0,s.ref)([]);function i(e){n.value=e}return(0,s.onMounted)(()=>{e.warnIfUnmounted(e.returnFirstEl((0,s.getCurrentInstance)().proxy.$el),`datepicker`)}),(e,a)=>((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(r.default),{class:`d-datepicker`,gap:`100`},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,_,[(0,s.createVNode)(f,{ref:`monthYearPicker`,"selected-date":t.selectedDate,"min-date":t.minDate,"max-date":t.maxDate,"week-starts-on":t.weekStartsOn,onCalendarDays:i,onFocusFirstDay:a[0]||(a[0]=t=>e.$refs.calendar.focusFirstDay()),onFocusLastDay:a[1]||(a[1]=t=>e.$refs.calendar.focusLastDay()),onCloseDatepicker:a[2]||(a[2]=t=>e.$emit(`close-datepicker`))},null,8,[`selected-date`,`min-date`,`max-date`,`week-starts-on`])]),(0,s.createElementVNode)(`div`,v,[(0,s.createVNode)(g,{ref:`calendar`,"calendar-days":n.value,"week-starts-on":t.weekStartsOn,onSelectDate:a[3]||(a[3]=t=>e.$emit(`selected-date`,t)),onFocusMonthYearPicker:a[4]||(a[4]=t=>e.$refs.monthYearPicker.focusMonthYearPicker()),onCloseDatepicker:a[5]||(a[5]=t=>e.$emit(`close-datepicker`)),onGoToNextMonth:a[6]||(a[6]=t=>e.$refs.monthYearPicker.goToNextMonth()),onGoToPrevMonth:a[7]||(a[7]=t=>e.$refs.monthYearPicker.goToPrevMonth())},null,8,[`calendar-days`,`week-starts-on`])])]),_:1}))}});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return y}});
2
+ //# sourceMappingURL=Datepicker-DkGmnVc8.cjs.map