@adyen/bento-vue2 1.68.2 → 1.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/dist/@types/components.d.ts +1 -0
  2. package/dist/@types/index.d.ts +625 -1274
  3. package/dist/accordion.js +1 -1
  4. package/dist/action-bar.js +1 -1
  5. package/dist/alert.js +1 -1
  6. package/dist/assets/accordion-item.css +1 -1
  7. package/dist/assets/action-bar.css +1 -1
  8. package/dist/assets/base-button.css +1 -1
  9. package/dist/assets/base-modal.css +1 -1
  10. package/dist/assets/button-actions-with-menu.css +1 -1
  11. package/dist/assets/button.css +1 -1
  12. package/dist/assets/calendar.css +1 -1
  13. package/dist/assets/card.css +1 -1
  14. package/dist/assets/checkbox-group.css +1 -1
  15. package/dist/assets/checkbox-input.css +1 -1
  16. package/dist/assets/checkbox.css +1 -1
  17. package/dist/assets/chip.css +1 -1
  18. package/dist/assets/copy.css +1 -1
  19. package/dist/assets/country.css +1 -1
  20. package/dist/assets/currency.css +1 -1
  21. package/dist/assets/dashed-underline.css +1 -1
  22. package/dist/assets/data-grid-template.css +1 -1
  23. package/dist/assets/data-grid.css +1 -1
  24. package/dist/assets/date-picker.css +1 -1
  25. package/dist/assets/date-range-picker.css +1 -1
  26. package/dist/assets/dialog-page.css +1 -1
  27. package/dist/assets/divider.css +1 -1
  28. package/dist/assets/dropdown-default-textbox.css +1 -1
  29. package/dist/assets/dropdown-tag.css +1 -1
  30. package/dist/assets/dropdown.css +1 -1
  31. package/dist/assets/empty-state.css +1 -1
  32. package/dist/assets/file-uploader.css +1 -1
  33. package/dist/assets/filter-bar.css +1 -1
  34. package/dist/assets/focus-trap.css +1 -1
  35. package/dist/assets/footer-actions.css +1 -1
  36. package/dist/assets/form-layout-title.css +1 -1
  37. package/dist/assets/grid-layout.css +1 -1
  38. package/dist/assets/header-meta.css +1 -1
  39. package/dist/assets/header-with-views.css +1 -1
  40. package/dist/assets/header.css +1 -1
  41. package/dist/assets/info-icon.css +1 -1
  42. package/dist/assets/input-field-password.css +1 -1
  43. package/dist/assets/input-field-phone-number.css +1 -1
  44. package/dist/assets/input-field.css +1 -1
  45. package/dist/assets/inspector.css +1 -1
  46. package/dist/assets/layout-row.css +1 -1
  47. package/dist/assets/link.css +1 -1
  48. package/dist/assets/listbox-option-tag.css +1 -1
  49. package/dist/assets/loading-indicator.css +1 -1
  50. package/dist/assets/modal-fullscreen.css +1 -1
  51. package/dist/assets/pagination.css +1 -1
  52. package/dist/assets/payment-method.css +1 -1
  53. package/dist/assets/popper-container.css +1 -1
  54. package/dist/assets/promo-banner.css +1 -1
  55. package/dist/assets/radio-group.css +1 -1
  56. package/dist/assets/radio-input.css +1 -1
  57. package/dist/assets/rich-text-editor.css +1 -1
  58. package/dist/assets/search-bar.css +1 -1
  59. package/dist/assets/secondary-nav.css +1 -1
  60. package/dist/assets/segmented-control.css +1 -1
  61. package/dist/assets/selection-card-group.css +1 -1
  62. package/dist/assets/sidepanel.css +1 -1
  63. package/dist/assets/status.css +1 -1
  64. package/dist/assets/step.css +1 -1
  65. package/dist/assets/structured-list-item.css +1 -1
  66. package/dist/assets/tab.css +1 -1
  67. package/dist/assets/tag.css +1 -1
  68. package/dist/assets/textarea.css +1 -1
  69. package/dist/assets/timeline-item.css +1 -1
  70. package/dist/assets/toast.css +1 -1
  71. package/dist/assets/toggle-button.css +1 -1
  72. package/dist/assets/toggle.css +1 -1
  73. package/dist/assets/tooltip.css +1 -1
  74. package/dist/assets/tutorial.css +1 -1
  75. package/dist/assets/typography.css +1 -1
  76. package/dist/assets/use-cached-selected-values.css +1 -1
  77. package/dist/avatar.js +1 -1
  78. package/dist/button.js +9 -9
  79. package/dist/card.js +1 -1
  80. package/dist/checkbox.js +2 -2
  81. package/dist/chip.js +1 -1
  82. package/dist/chunks/{accordion-item.BNtdoVto.js → accordion-item.NSQ50RyR.js} +3 -3
  83. package/dist/chunks/accordion-item.NSQ50RyR.js.map +1 -0
  84. package/dist/chunks/{action-bar.DQb7WVVd.js → action-bar.Dhi6k0CP.js} +18 -19
  85. package/dist/chunks/action-bar.Dhi6k0CP.js.map +1 -0
  86. package/dist/chunks/{alert.c1rhDDrU.js → alert.Dx9P_L2k.js} +3 -3
  87. package/dist/chunks/{alert.c1rhDDrU.js.map → alert.Dx9P_L2k.js.map} +1 -1
  88. package/dist/chunks/aria-label.CaUURpnB.js.map +1 -1
  89. package/dist/chunks/{avatar.BgwjpLQO.js → avatar.CWmZ2n1W.js} +2 -2
  90. package/dist/chunks/avatar.CWmZ2n1W.js.map +1 -0
  91. package/dist/chunks/{base-button.-gx_u8Bd.js → base-button.BPZ_qSAu.js} +6 -6
  92. package/dist/chunks/base-button.BPZ_qSAu.js.map +1 -0
  93. package/dist/chunks/{base-modal.CkkfT6r6.js → base-modal.Cehud1uW.js} +19 -19
  94. package/dist/chunks/base-modal.Cehud1uW.js.map +1 -0
  95. package/dist/chunks/button-actions-with-menu.DIpUg6BF.js +85 -0
  96. package/dist/chunks/button-actions-with-menu.DIpUg6BF.js.map +1 -0
  97. package/dist/chunks/button-actions.types.BptAXjD8.js +8 -0
  98. package/dist/chunks/button-actions.types.BptAXjD8.js.map +1 -0
  99. package/dist/chunks/{button.hF-nD1Og.js → button.B0hSQWOR.js} +4 -4
  100. package/dist/chunks/button.B0hSQWOR.js.map +1 -0
  101. package/dist/chunks/{calendar.DvIQEYwN.js → calendar.BuAVH2aU.js} +8 -8
  102. package/dist/chunks/calendar.BuAVH2aU.js.map +1 -0
  103. package/dist/chunks/{card.CASAAsuJ.js → card.DLRC9V0Q.js} +20 -19
  104. package/dist/chunks/card.DLRC9V0Q.js.map +1 -0
  105. package/dist/chunks/{checkbox-group.QdX-NrSG.js → checkbox-group.Cdt2Ik2_.js} +6 -6
  106. package/dist/chunks/checkbox-group.Cdt2Ik2_.js.map +1 -0
  107. package/dist/chunks/{checkbox-input.CNWigbX4.js → checkbox-input.C9vmlMZe.js} +7 -7
  108. package/dist/chunks/checkbox-input.C9vmlMZe.js.map +1 -0
  109. package/dist/chunks/{checkbox.DCD6SSXC.js → checkbox.JhfbjDfJ.js} +6 -6
  110. package/dist/chunks/checkbox.JhfbjDfJ.js.map +1 -0
  111. package/dist/chunks/{chip.OV0EWIP3.js → chip.Cn68PNxA.js} +10 -10
  112. package/dist/chunks/chip.Cn68PNxA.js.map +1 -0
  113. package/dist/chunks/{code-snippet.dIKi0D7d.js → code-snippet.hYghglvk.js} +8 -8
  114. package/dist/chunks/code-snippet.hYghglvk.js.map +1 -0
  115. package/dist/chunks/{controls-group.CccuLkgP.js → controls-group.B1cxRdIA.js} +3 -3
  116. package/dist/chunks/{controls-group.CccuLkgP.js.map → controls-group.B1cxRdIA.js.map} +1 -1
  117. package/dist/chunks/{copy.CF8Fzu2Y.js → copy.UbMV4m6b.js} +14 -14
  118. package/dist/chunks/copy.UbMV4m6b.js.map +1 -0
  119. package/dist/chunks/{country.melpzEsY.js → country.CZQYhKpE.js} +6 -6
  120. package/dist/chunks/country.CZQYhKpE.js.map +1 -0
  121. package/dist/chunks/country.types.C0Q_hhgJ.js.map +1 -1
  122. package/dist/chunks/{currency.BM9OXTqe.js → currency.Oq7zcRM5.js} +3 -3
  123. package/dist/chunks/currency.Oq7zcRM5.js.map +1 -0
  124. package/dist/chunks/{dashboard-section.BIe6eVHq.js → dashboard-section.BRnRO3AZ.js} +4 -4
  125. package/dist/chunks/{dashboard-section.BIe6eVHq.js.map → dashboard-section.BRnRO3AZ.js.map} +1 -1
  126. package/dist/chunks/{dashed-underline.BbH6Lnd2.js → dashed-underline.BN_whJrR.js} +12 -13
  127. package/dist/chunks/dashed-underline.BN_whJrR.js.map +1 -0
  128. package/dist/chunks/{data-grid-template.Co0Ecr79.js → data-grid-template.BlRKgkX6.js} +5 -5
  129. package/dist/chunks/data-grid-template.BlRKgkX6.js.map +1 -0
  130. package/dist/chunks/{data-grid.erxjh5TN.js → data-grid.B0bOXr4p.js} +1218 -1166
  131. package/dist/chunks/data-grid.B0bOXr4p.js.map +1 -0
  132. package/dist/chunks/{date-picker.DGIS6Pp-.js → date-picker.Dyf6HJwP.js} +11 -11
  133. package/dist/chunks/date-picker.Dyf6HJwP.js.map +1 -0
  134. package/dist/chunks/date-range-picker.-FSh7RLm.js +967 -0
  135. package/dist/chunks/date-range-picker.-FSh7RLm.js.map +1 -0
  136. package/dist/chunks/{date.BfyWX2PY.js → date.w2Ya6_lp.js} +2 -2
  137. package/dist/chunks/{date.BfyWX2PY.js.map → date.w2Ya6_lp.js.map} +1 -1
  138. package/dist/chunks/{dialog-page.CLHZqQeU.js → dialog-page.CdJloGXQ.js} +9 -9
  139. package/dist/chunks/dialog-page.CdJloGXQ.js.map +1 -0
  140. package/dist/chunks/{divider.Cc4JFWG_.js → divider.CFbtmKeQ.js} +6 -6
  141. package/dist/chunks/divider.CFbtmKeQ.js.map +1 -0
  142. package/dist/chunks/{dropdown-default-textbox.94q6opSD.js → dropdown-default-textbox.DzpZoK-P.js} +81 -80
  143. package/dist/chunks/dropdown-default-textbox.DzpZoK-P.js.map +1 -0
  144. package/dist/chunks/dropdown-tag.CRbOHBPK.js +273 -0
  145. package/dist/chunks/dropdown-tag.CRbOHBPK.js.map +1 -0
  146. package/dist/chunks/{dropdown.DazYAy4B.js → dropdown.DB_MlO1F.js} +43 -43
  147. package/dist/chunks/dropdown.DB_MlO1F.js.map +1 -0
  148. package/dist/chunks/{empty-state.mtXfb1BB.js → empty-state.BqMgiQAu.js} +6 -6
  149. package/dist/chunks/empty-state.BqMgiQAu.js.map +1 -0
  150. package/dist/chunks/{error-message.BgxnwPLF.js → error-message.PWgUfpvo.js} +3 -3
  151. package/dist/chunks/{error-message.BgxnwPLF.js.map → error-message.PWgUfpvo.js.map} +1 -1
  152. package/dist/chunks/es6.MoTTyETW.js +12 -0
  153. package/dist/chunks/es6.MoTTyETW.js.map +1 -0
  154. package/dist/chunks/events.CMzGybJJ.js.map +1 -1
  155. package/dist/chunks/{file-uploader.BPslxGI8.js → file-uploader.llBOTc1s.js} +41 -41
  156. package/dist/chunks/file-uploader.llBOTc1s.js.map +1 -0
  157. package/dist/chunks/{filter-bar.DL19SXF1.js → filter-bar.8rNB7K2X.js} +189 -192
  158. package/dist/chunks/filter-bar.8rNB7K2X.js.map +1 -0
  159. package/dist/chunks/{fixed-scroller.XN-jvWqb.js → fixed-scroller.CRnBrXfk.js} +2 -2
  160. package/dist/chunks/{fixed-scroller.XN-jvWqb.js.map → fixed-scroller.CRnBrXfk.js.map} +1 -1
  161. package/dist/chunks/{focus-trap.C-wIQqpO.js → focus-trap.B4C5TXxl.js} +2 -2
  162. package/dist/chunks/focus-trap.B4C5TXxl.js.map +1 -0
  163. package/dist/chunks/{footer-actions.BE_zzX-e.js → footer-actions.C9ZYDWNU.js} +12 -12
  164. package/dist/chunks/footer-actions.C9ZYDWNU.js.map +1 -0
  165. package/dist/chunks/{form-layout-title.CIynHgCF.js → form-layout-title.CboZDCN9.js} +5 -5
  166. package/dist/chunks/form-layout-title.CboZDCN9.js.map +1 -0
  167. package/dist/chunks/{grid-layout.HvTAa4to.js → grid-layout.1aIiz2N_.js} +4 -4
  168. package/dist/chunks/grid-layout.1aIiz2N_.js.map +1 -0
  169. package/dist/chunks/{header-meta.CfloYa86.js → header-meta.C75OXHwb.js} +26 -27
  170. package/dist/chunks/{header-meta.CfloYa86.js.map → header-meta.C75OXHwb.js.map} +1 -1
  171. package/dist/chunks/{header-with-views.BUQ-MlAq.js → header-with-views.Dzifal09.js} +129 -133
  172. package/dist/chunks/header-with-views.Dzifal09.js.map +1 -0
  173. package/dist/chunks/{header.uyxNdQa3.js → header.DAcRpRch.js} +8 -8
  174. package/dist/chunks/header.DAcRpRch.js.map +1 -0
  175. package/dist/chunks/image.C2D2hKat.js.map +1 -1
  176. package/dist/chunks/{info-icon.CYOXx8CL.js → info-icon.B4P_Zi58.js} +10 -10
  177. package/dist/chunks/info-icon.B4P_Zi58.js.map +1 -0
  178. package/dist/chunks/{input-field-password.C1zTapiN.js → input-field-password.DsslmTb_.js} +29 -29
  179. package/dist/chunks/input-field-password.DsslmTb_.js.map +1 -0
  180. package/dist/chunks/{input-field-phone-number.K8BYjWfa.js → input-field-phone-number.D2T8jzAr.js} +8 -7
  181. package/dist/chunks/{input-field-phone-number.K8BYjWfa.js.map → input-field-phone-number.D2T8jzAr.js.map} +1 -1
  182. package/dist/chunks/{input-field.5S-pUNxA.js → input-field.DnnXXill.js} +5 -5
  183. package/dist/chunks/input-field.DnnXXill.js.map +1 -0
  184. package/dist/chunks/{inspector.BI28vKQz.js → inspector.H05UI3LY.js} +6 -6
  185. package/dist/chunks/inspector.H05UI3LY.js.map +1 -0
  186. package/dist/chunks/keyboard-navigation.pB8weElW.js.map +1 -1
  187. package/dist/chunks/{layout-row.C_F2wX6d.js → layout-row.BWxn-eQ-.js} +12 -12
  188. package/dist/chunks/layout-row.BWxn-eQ-.js.map +1 -0
  189. package/dist/chunks/{link.CXy_LoFI.js → link.B3F22FTY.js} +3 -3
  190. package/dist/chunks/link.B3F22FTY.js.map +1 -0
  191. package/dist/chunks/{listbox-option-tag.D0Cql_R3.js → listbox-option-tag.On3eD2RE.js} +4 -4
  192. package/dist/chunks/listbox-option-tag.On3eD2RE.js.map +1 -0
  193. package/dist/chunks/{loading-indicator.z8COalOc.js → loading-indicator.Iy1CVr_T.js} +2 -2
  194. package/dist/chunks/loading-indicator.Iy1CVr_T.js.map +1 -0
  195. package/dist/chunks/minus-small.DJacLGTw.js.map +1 -1
  196. package/dist/chunks/{modal-fullscreen.DHotw1RI.js → modal-fullscreen.BgmKDCl4.js} +31 -32
  197. package/dist/chunks/modal-fullscreen.BgmKDCl4.js.map +1 -0
  198. package/dist/chunks/{modal.eoNQ6E3U.js → modal.DMqbIDcX.js} +6 -6
  199. package/dist/chunks/modal.DMqbIDcX.js.map +1 -0
  200. package/dist/chunks/{pagination.4J7ZMyf5.js → pagination.38ahUAk8.js} +5 -5
  201. package/dist/chunks/pagination.38ahUAk8.js.map +1 -0
  202. package/dist/chunks/{payment-method.Cx4nPDtE.js → payment-method.CRluCp_L.js} +3 -3
  203. package/dist/chunks/payment-method.CRluCp_L.js.map +1 -0
  204. package/dist/chunks/popover.types.B1HUQoCG.js +6 -0
  205. package/dist/chunks/popover.types.B1HUQoCG.js.map +1 -0
  206. package/dist/chunks/{popper-container.DIFqmRsp.js → popper-container.Bu75g2nc.js} +3 -3
  207. package/dist/chunks/popper-container.Bu75g2nc.js.map +1 -0
  208. package/dist/chunks/{promo-banner.Bbc2U3S3.js → promo-banner.BGMV3nRn.js} +6 -6
  209. package/dist/chunks/promo-banner.BGMV3nRn.js.map +1 -0
  210. package/dist/chunks/{radio-group.4_KKjvAm.js → radio-group.BVLoYrgU.js} +8 -8
  211. package/dist/chunks/radio-group.BVLoYrgU.js.map +1 -0
  212. package/dist/chunks/{radio-input.uJAhxKRs.js → radio-input.BRceOAA4.js} +7 -7
  213. package/dist/chunks/radio-input.BRceOAA4.js.map +1 -0
  214. package/dist/chunks/{rich-text-editor.BUKLdRkN.js → rich-text-editor.BZ6CyBsK.js} +8 -8
  215. package/dist/chunks/rich-text-editor.BZ6CyBsK.js.map +1 -0
  216. package/dist/chunks/{search-bar.CuBj5FAE.js → search-bar.VfZoy5FX.js} +6 -5
  217. package/dist/chunks/search-bar.VfZoy5FX.js.map +1 -0
  218. package/dist/chunks/{secondary-nav.C6usurfD.js → secondary-nav.BXXKo5HE.js} +9 -9
  219. package/dist/chunks/secondary-nav.BXXKo5HE.js.map +1 -0
  220. package/dist/chunks/{segmented-control.DHZEfmT-.js → segmented-control.CGBrRBLL.js} +11 -11
  221. package/dist/chunks/segmented-control.CGBrRBLL.js.map +1 -0
  222. package/dist/chunks/{selection-card-group.0o5T4tab.js → selection-card-group.DgQLQ4Wo.js} +10 -10
  223. package/dist/chunks/selection-card-group.DgQLQ4Wo.js.map +1 -0
  224. package/dist/chunks/{sidepanel.DyThBUgV.js → sidepanel.BR0coAJl.js} +9 -9
  225. package/dist/chunks/sidepanel.BR0coAJl.js.map +1 -0
  226. package/dist/chunks/{status.types.p_TCvoo0.js → status.types.DBYsEsiT.js} +3 -3
  227. package/dist/chunks/status.types.DBYsEsiT.js.map +1 -0
  228. package/dist/chunks/{step.DMMofD4B.js → step.DJkLl2s4.js} +5 -5
  229. package/dist/chunks/step.DJkLl2s4.js.map +1 -0
  230. package/dist/chunks/{structured-list-item.Bnn6-Z3q.js → structured-list-item.CACpjdy4.js} +7 -7
  231. package/dist/chunks/structured-list-item.CACpjdy4.js.map +1 -0
  232. package/dist/chunks/{summary-grid.types.D_FU3sUq.js → summary-grid.types.CVuvqM3p.js} +7 -7
  233. package/dist/chunks/{summary-grid.types.D_FU3sUq.js.map → summary-grid.types.CVuvqM3p.js.map} +1 -1
  234. package/dist/chunks/{tab.BhWPBxcB.js → tab.D33__imf.js} +5 -5
  235. package/dist/chunks/tab.D33__imf.js.map +1 -0
  236. package/dist/chunks/{tag.CGkclKVL.js → tag.DfHE26ZN.js} +4 -4
  237. package/dist/chunks/tag.DfHE26ZN.js.map +1 -0
  238. package/dist/chunks/textarea.D7uQzuRr.js +214 -0
  239. package/dist/chunks/textarea.D7uQzuRr.js.map +1 -0
  240. package/dist/chunks/{timeline-item.DqLhj0Lb.js → timeline-item.QOBiWKEL.js} +11 -11
  241. package/dist/chunks/timeline-item.QOBiWKEL.js.map +1 -0
  242. package/dist/chunks/{toast.BOyeuS19.js → toast.CZxRRsPl.js} +5 -5
  243. package/dist/chunks/toast.CZxRRsPl.js.map +1 -0
  244. package/dist/chunks/toggle-button.DeECoGRn.js +1031 -0
  245. package/dist/chunks/toggle-button.DeECoGRn.js.map +1 -0
  246. package/dist/chunks/{toggle.DyXL09-x.js → toggle.hylSNOmz.js} +8 -8
  247. package/dist/chunks/toggle.hylSNOmz.js.map +1 -0
  248. package/dist/chunks/{tooltip.wQsyAwkC.js → tooltip.BYj8cc9F.js} +66 -62
  249. package/dist/chunks/tooltip.BYj8cc9F.js.map +1 -0
  250. package/dist/chunks/{tutorial.CxrGhLS7.js → tutorial.BkAXmyzV.js} +29 -31
  251. package/dist/chunks/tutorial.BkAXmyzV.js.map +1 -0
  252. package/dist/chunks/{typography.J1v_SPG3.js → typography.w3m-EY4E.js} +7 -7
  253. package/dist/chunks/typography.w3m-EY4E.js.map +1 -0
  254. package/dist/chunks/{use-bento-toast-controller.Cn_2Eogn.js → use-bento-toast-controller.uglKlMjv.js} +2 -2
  255. package/dist/chunks/{use-bento-toast-controller.Cn_2Eogn.js.map → use-bento-toast-controller.uglKlMjv.js.map} +1 -1
  256. package/dist/chunks/{use-cached-selected-values.0EeyFfyF.js → use-cached-selected-values.CI9xi8dE.js} +12 -12
  257. package/dist/chunks/use-cached-selected-values.CI9xi8dE.js.map +1 -0
  258. package/dist/chunks/use-country-items.BllTb5MK.js.map +1 -1
  259. package/dist/chunks/use-country-phon-code.BOaJ9PDl.js.map +1 -1
  260. package/dist/chunks/use-has-slot.C9lQZ6nz.js.map +1 -1
  261. package/dist/code-snippet.js +1 -1
  262. package/dist/country.js +1 -1
  263. package/dist/currency.js +1 -1
  264. package/dist/dashboard-template.js +1 -1
  265. package/dist/dashed-underline.js +1 -1
  266. package/dist/data-grid-template.js +1 -1
  267. package/dist/data-grid.js +1 -1
  268. package/dist/date-picker.js +2 -2
  269. package/dist/date-range-picker.js +2 -2
  270. package/dist/date.js +1 -1
  271. package/dist/divider.js +1 -1
  272. package/dist/dropdown.js +4 -4
  273. package/dist/empty-state.js +1 -1
  274. package/dist/file-uploader.js +1 -1
  275. package/dist/filter-bar.js +1 -1
  276. package/dist/focus-trap.js +1 -1
  277. package/dist/form-layout.js +1 -1
  278. package/dist/header-with-views.js +1 -1
  279. package/dist/header.js +1 -1
  280. package/dist/index.js +175 -177
  281. package/dist/index.js.map +1 -1
  282. package/dist/info-icon.js +1 -1
  283. package/dist/input-field-password.js +1 -1
  284. package/dist/input-field-phone-number.js +3 -2
  285. package/dist/input-field.js +1 -1
  286. package/dist/inspector.js +1 -1
  287. package/dist/internal.js +33 -32
  288. package/dist/internal.js.map +1 -1
  289. package/dist/layout.js +1 -1
  290. package/dist/link.js +1 -1
  291. package/dist/loading-indicator.js +1 -1
  292. package/dist/menu.js +1 -1
  293. package/dist/modal-fullscreen.js +1 -1
  294. package/dist/modal.js +2 -2
  295. package/dist/pagination.js +1 -1
  296. package/dist/payment-method.js +1 -1
  297. package/dist/popover.js +2 -2
  298. package/dist/popper-container.js +1 -1
  299. package/dist/promo-banner.js +1 -1
  300. package/dist/radio-group.js +2 -2
  301. package/dist/rich-text-editor.js +1 -1
  302. package/dist/search-bar.js +2 -2
  303. package/dist/secondary-nav.js +1 -1
  304. package/dist/segmented-control.js +1 -1
  305. package/dist/selection-card.js +1 -1
  306. package/dist/sidepanel.js +1 -1
  307. package/dist/status.js +1 -1
  308. package/dist/stepper.js +1 -1
  309. package/dist/structured-list.js +1 -1
  310. package/dist/styles/bento-dark.css +17 -4
  311. package/dist/styles/bento-light.css +17 -4
  312. package/dist/styles/bento.css +17 -4
  313. package/dist/styles/legacy.css +17 -4
  314. package/dist/styles/styleguide.css +17 -4
  315. package/dist/styles/utility.css +3 -0
  316. package/dist/summary-grid.js +1 -1
  317. package/dist/tabs.js +1 -1
  318. package/dist/tag.js +1 -1
  319. package/dist/textarea.js +1 -1
  320. package/dist/timeline.js +1 -1
  321. package/dist/toast.js +1 -1
  322. package/dist/toggle.js +1 -1
  323. package/dist/tutorial.js +1 -1
  324. package/dist/typography.js +1 -1
  325. package/dist/use-form-v4.js.map +1 -1
  326. package/dist/web-types.json +934 -363
  327. package/package.json +7 -7
  328. package/dist/assets/button-actions.css +0 -1
  329. package/dist/assets/menu.css +0 -1
  330. package/dist/assets/popover.css +0 -1
  331. package/dist/assets/teleport.css +0 -1
  332. package/dist/chunks/accordion-item.BNtdoVto.js.map +0 -1
  333. package/dist/chunks/action-bar.DQb7WVVd.js.map +0 -1
  334. package/dist/chunks/avatar.BgwjpLQO.js.map +0 -1
  335. package/dist/chunks/base-button.-gx_u8Bd.js.map +0 -1
  336. package/dist/chunks/base-modal.CkkfT6r6.js.map +0 -1
  337. package/dist/chunks/base-modal.keys.C2PQXcE2.js +0 -5
  338. package/dist/chunks/base-modal.keys.C2PQXcE2.js.map +0 -1
  339. package/dist/chunks/button-actions-with-menu.nPj7sdGE.js +0 -83
  340. package/dist/chunks/button-actions-with-menu.nPj7sdGE.js.map +0 -1
  341. package/dist/chunks/button-actions.Ju27CRNG.js +0 -194
  342. package/dist/chunks/button-actions.Ju27CRNG.js.map +0 -1
  343. package/dist/chunks/button.hF-nD1Og.js.map +0 -1
  344. package/dist/chunks/calendar.DvIQEYwN.js.map +0 -1
  345. package/dist/chunks/card.CASAAsuJ.js.map +0 -1
  346. package/dist/chunks/checkbox-group.QdX-NrSG.js.map +0 -1
  347. package/dist/chunks/checkbox-input.CNWigbX4.js.map +0 -1
  348. package/dist/chunks/checkbox.DCD6SSXC.js.map +0 -1
  349. package/dist/chunks/chip.OV0EWIP3.js.map +0 -1
  350. package/dist/chunks/code-snippet.dIKi0D7d.js.map +0 -1
  351. package/dist/chunks/copy.CF8Fzu2Y.js.map +0 -1
  352. package/dist/chunks/country.melpzEsY.js.map +0 -1
  353. package/dist/chunks/currency.BM9OXTqe.js.map +0 -1
  354. package/dist/chunks/dashed-underline.BbH6Lnd2.js.map +0 -1
  355. package/dist/chunks/data-grid-template.Co0Ecr79.js.map +0 -1
  356. package/dist/chunks/data-grid.erxjh5TN.js.map +0 -1
  357. package/dist/chunks/date-picker.DGIS6Pp-.js.map +0 -1
  358. package/dist/chunks/date-range-picker.CIaKRXIQ.js +0 -1021
  359. package/dist/chunks/date-range-picker.CIaKRXIQ.js.map +0 -1
  360. package/dist/chunks/dialog-page.CLHZqQeU.js.map +0 -1
  361. package/dist/chunks/divider.Cc4JFWG_.js.map +0 -1
  362. package/dist/chunks/dropdown-default-textbox.94q6opSD.js.map +0 -1
  363. package/dist/chunks/dropdown-tag.BaosvGGZ.js +0 -240
  364. package/dist/chunks/dropdown-tag.BaosvGGZ.js.map +0 -1
  365. package/dist/chunks/dropdown.DazYAy4B.js.map +0 -1
  366. package/dist/chunks/empty-state.mtXfb1BB.js.map +0 -1
  367. package/dist/chunks/es6.n1ewaW31.js +0 -11
  368. package/dist/chunks/es6.n1ewaW31.js.map +0 -1
  369. package/dist/chunks/file-uploader.BPslxGI8.js.map +0 -1
  370. package/dist/chunks/filter-bar.DL19SXF1.js.map +0 -1
  371. package/dist/chunks/focus-trap.C-wIQqpO.js.map +0 -1
  372. package/dist/chunks/footer-actions.BE_zzX-e.js.map +0 -1
  373. package/dist/chunks/form-layout-title.CIynHgCF.js.map +0 -1
  374. package/dist/chunks/grid-layout.HvTAa4to.js.map +0 -1
  375. package/dist/chunks/header-with-views.BUQ-MlAq.js.map +0 -1
  376. package/dist/chunks/header.uyxNdQa3.js.map +0 -1
  377. package/dist/chunks/info-icon.CYOXx8CL.js.map +0 -1
  378. package/dist/chunks/input-field-password.C1zTapiN.js.map +0 -1
  379. package/dist/chunks/input-field.5S-pUNxA.js.map +0 -1
  380. package/dist/chunks/inspector.BI28vKQz.js.map +0 -1
  381. package/dist/chunks/layout-row.C_F2wX6d.js.map +0 -1
  382. package/dist/chunks/link.CXy_LoFI.js.map +0 -1
  383. package/dist/chunks/listbox-option-tag.D0Cql_R3.js.map +0 -1
  384. package/dist/chunks/loading-indicator.z8COalOc.js.map +0 -1
  385. package/dist/chunks/menu.D0OQgk40.js +0 -515
  386. package/dist/chunks/menu.D0OQgk40.js.map +0 -1
  387. package/dist/chunks/modal-fullscreen.DHotw1RI.js.map +0 -1
  388. package/dist/chunks/modal-fullscreen.keys.CMba3hYp.js +0 -5
  389. package/dist/chunks/modal-fullscreen.keys.CMba3hYp.js.map +0 -1
  390. package/dist/chunks/modal.eoNQ6E3U.js.map +0 -1
  391. package/dist/chunks/pagination.4J7ZMyf5.js.map +0 -1
  392. package/dist/chunks/payment-method.Cx4nPDtE.js.map +0 -1
  393. package/dist/chunks/popover.Bo4Bkudr.js +0 -145
  394. package/dist/chunks/popover.Bo4Bkudr.js.map +0 -1
  395. package/dist/chunks/popover.types.CBqyA4ly.js +0 -6
  396. package/dist/chunks/popover.types.CBqyA4ly.js.map +0 -1
  397. package/dist/chunks/popper-container.DIFqmRsp.js.map +0 -1
  398. package/dist/chunks/promo-banner.Bbc2U3S3.js.map +0 -1
  399. package/dist/chunks/radio-group.4_KKjvAm.js.map +0 -1
  400. package/dist/chunks/radio-input.uJAhxKRs.js.map +0 -1
  401. package/dist/chunks/rich-text-editor.BUKLdRkN.js.map +0 -1
  402. package/dist/chunks/search-bar.CuBj5FAE.js.map +0 -1
  403. package/dist/chunks/secondary-nav.C6usurfD.js.map +0 -1
  404. package/dist/chunks/segmented-control.DHZEfmT-.js.map +0 -1
  405. package/dist/chunks/selection-card-group.0o5T4tab.js.map +0 -1
  406. package/dist/chunks/sidepanel.DyThBUgV.js.map +0 -1
  407. package/dist/chunks/sidepanel.keys.R0DKQuYx.js +0 -5
  408. package/dist/chunks/sidepanel.keys.R0DKQuYx.js.map +0 -1
  409. package/dist/chunks/status.types.p_TCvoo0.js.map +0 -1
  410. package/dist/chunks/step.DMMofD4B.js.map +0 -1
  411. package/dist/chunks/structured-list-item.Bnn6-Z3q.js.map +0 -1
  412. package/dist/chunks/tab.BhWPBxcB.js.map +0 -1
  413. package/dist/chunks/tag.CGkclKVL.js.map +0 -1
  414. package/dist/chunks/teleport.BV6zrDjA.js +0 -128
  415. package/dist/chunks/teleport.BV6zrDjA.js.map +0 -1
  416. package/dist/chunks/textarea.UPM6N9V1.js +0 -203
  417. package/dist/chunks/textarea.UPM6N9V1.js.map +0 -1
  418. package/dist/chunks/timeline-item.DqLhj0Lb.js.map +0 -1
  419. package/dist/chunks/toast.BOyeuS19.js.map +0 -1
  420. package/dist/chunks/toggle-button.DEVVvpkw.js +0 -83
  421. package/dist/chunks/toggle-button.DEVVvpkw.js.map +0 -1
  422. package/dist/chunks/toggle.DyXL09-x.js.map +0 -1
  423. package/dist/chunks/tooltip.wQsyAwkC.js.map +0 -1
  424. package/dist/chunks/tutorial.CxrGhLS7.js.map +0 -1
  425. package/dist/chunks/typography.J1v_SPG3.js.map +0 -1
  426. package/dist/chunks/use-cached-selected-values.0EeyFfyF.js.map +0 -1
  427. package/dist/chunks/use-click-outside.BnhTgpSt.js +0 -14
  428. package/dist/chunks/use-click-outside.BnhTgpSt.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-picker.-FSh7RLm.js","sources":["../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/addQuarters/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/getQuarter/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/getYear/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/isEqual/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/isSameQuarter/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/startOfSecond/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/isSameSecond/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/isToday/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/setHours/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/setMilliseconds/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/setMinutes/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/setSeconds/index.js","../../../../node_modules/.pnpm/date-fns@2.28.0/node_modules/date-fns/esm/subQuarters/index.js","../../src/components/date-range-picker/utils/date-text-to-start-of-day.ts","../../src/components/internal/calendar/components/calendar-month/composables/granular-min-max-date.ts","../../src/components/date-range-picker/composables/use-granularity-memory.ts","../../src/components/date-range-picker/components/date-range-picker-calendar/date-range-picker-calendar.types.ts","../../src/utils/ts/time-input.ts","../../src/components/date-range-picker/components/date-range-picker-calendar/date-range-picker-calendar.vue","../../src/components/date-range-picker/composables/use-date-range-picker-calendar-text.ts","../../src/components/date-range-picker/date-range-picker.types.ts","../../src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\n\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\n\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\n\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n * \n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * var result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\n\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\n\nexport default function startOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}","import startOfSecond from \"../startOfSecond/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second (and hour and day)?\n *\n * @description\n * Are the given dates in the same second (and hour and day)?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second (and hour and day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500 in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n * \n * @example\n * // Are 4 September 2014 06:00:15.000 and 4 September 2014 06:01.15.000 in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 4, 6, 1, 15)\n * )\n * //=> false\n * \n * @example\n * // Are 4 September 2014 06:00:15.000 and 5 September 2014 06:00.15.000 in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 5, 6, 0, 15)\n * )\n * //=> false\n */\n\nexport default function isSameSecond(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft);\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight);\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime();\n}","import isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * var result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\n\nexport default function isToday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, Date.now());\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\n\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * const result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\n\nexport default function setMilliseconds(dirtyDate, dirtyMilliseconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = toInteger(dirtyMilliseconds);\n date.setMilliseconds(milliseconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\n\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\n\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addQuarters from \"../addQuarters/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\n\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}","import startOfDay from 'date-fns/startOfDay';\n\n/**\n * Parses an ISO date string and returns a Date set to the\n * start of that calendar day (00:00:00) in the system’s local time zone.\n *\n * Uses the numeric Date constructor `new Date(year, monthIndex, day)`\n * which interprets its arguments as local time.\n *\n * @param dateText - A date in `YYYY-MM-DD` format.\n * @returns A `Date` at the local start of the specified day.\n */\nexport function parseDateTextToStartOfDay(dateText?: string) {\n if (dateText == null) {\n return startOfDay(new Date());\n }\n\n const [year, month, day] = dateText.split('-').map(s => parseInt(s, 10));\n return new Date(year, month - 1, day);\n}\n","import addDays from 'date-fns/addDays';\nimport addMonths from 'date-fns/addMonths';\nimport addQuarters from 'date-fns/addQuarters';\nimport endOfDay from 'date-fns/endOfDay';\nimport endOfMonth from 'date-fns/endOfMonth';\nimport endOfQuarter from 'date-fns/endOfQuarter';\nimport endOfWeek from 'date-fns/endOfWeek';\nimport isSameDay from 'date-fns/isSameDay';\nimport startOfDay from 'date-fns/startOfDay';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport startOfQuarter from 'date-fns/startOfQuarter';\nimport startOfWeek from 'date-fns/startOfWeek';\nimport subDays from 'date-fns/subDays';\nimport subMonths from 'date-fns/subMonths';\nimport subQuarters from 'date-fns/subQuarters';\n\nimport type { CalendarGranularityConfig } from '../../../calendar.types';\nimport type { UseGranularMinMaxDate } from './granular-min-max-date.types';\n\n/**\n * Provides utility function to set calendar min/max dates based on the granularity selected.\n * @param props Configured min/max dates, and the day the week starts on.\n * @returns Function to calculate calendar limits.\n */\nexport const useGranularMinMaxDate: UseGranularMinMaxDate = ({\n firstDayOfWeek,\n min: minimumDate,\n max: maximumDate,\n}) => {\n const getGranularCalendarLimits = (granularity: CalendarGranularityConfig) => {\n let min = startOfDay(minimumDate);\n let max = endOfDay(maximumDate);\n\n if (granularity?.type === 'weekly') {\n if (granularity.earliest) {\n min = startOfDay(granularity.earliest);\n } else {\n const startOfMin = startOfWeek(min, { weekStartsOn: firstDayOfWeek });\n\n // If the minimum is in the middle of a week, set to the end (only allow full weeks)\n if (!isSameDay(min, startOfMin)) {\n min = startOfDay(addDays(endOfWeek(min, { weekStartsOn: firstDayOfWeek }), 1));\n }\n }\n\n if (granularity.latest) {\n max = endOfDay(granularity.latest);\n } else {\n const endOfMax = endOfWeek(max, { weekStartsOn: firstDayOfWeek });\n\n // If the maximum is in the middle of a week, set to the end of last week (only allow full weeks)\n if (!isSameDay(max, endOfMax)) {\n max = endOfDay(subDays(startOfWeek(max, { weekStartsOn: firstDayOfWeek }), 1));\n }\n }\n }\n\n if (granularity?.type === 'monthly') {\n if (granularity.earliest) {\n min = startOfDay(granularity.earliest);\n } else {\n const startOfMin = startOfMonth(min);\n\n // If the minimum is in the middle of a month, set to the start of next month (only allow full month)\n if (!isSameDay(min, startOfMin)) {\n min = startOfMonth(addMonths(min, 1));\n }\n }\n\n if (granularity.latest) {\n max = endOfDay(granularity.latest);\n } else {\n const endOfMax = endOfMonth(max);\n\n // If the maximum is in the middle of a month, set to the end of last month (only allow full months)\n if (!isSameDay(max, endOfMax)) {\n max = endOfMonth(subMonths(max, 1));\n }\n }\n }\n\n if (granularity?.type === 'quarterly') {\n if (granularity.earliest) {\n min = startOfQuarter(granularity.earliest);\n } else {\n const startOfMin = startOfQuarter(min);\n\n // If the minimum is in the middle of a quarter, set to the start of next quarter (only allow full fiscal quarters)\n if (!isSameDay(min, startOfMin)) {\n min = startOfQuarter(addQuarters(min, 1));\n }\n }\n\n if (granularity.latest) {\n max = endOfDay(granularity.latest);\n } else {\n const endOfMax = endOfQuarter(max);\n\n // If the maximum is in the middle of a quarter, set to the end of last quarter (only allow full fiscal quarters)\n if (!isSameDay(max, endOfMax)) {\n max = endOfQuarter(subQuarters(max, 1));\n }\n }\n }\n\n return { min, max };\n };\n\n return { getGranularCalendarLimits };\n};\n","import { reactive } from 'vue';\n\nimport type { CalendarGranularityType } from '../../internal/calendar/calendar.types';\nimport type { UseGranularityMemory } from './use-granularity-memory.types';\n\n/**\n * Provides utility property and functions to store date ranges based on granularity.\n * This is used to revert back to the previously selected range when users switch between granularities\n * @returns Saved date ranges per granularity, and functions to save/reset ranges.\n */\nexport const useGranularityMemory: UseGranularityMemory = () => {\n const savedRanges = reactive<{\n daily: { startDate: Date; endDate: Date } | null;\n weekly: { startDate: Date; endDate: Date } | null;\n monthly: { startDate: Date; endDate: Date } | null;\n quarterly: { startDate: Date; endDate: Date } | null;\n }>({\n daily: null,\n weekly: null,\n monthly: null,\n quarterly: null,\n });\n\n const saveRange = (type: CalendarGranularityType, range: { startDate: Date; endDate: Date }) => {\n savedRanges[type] = range;\n };\n\n const resetSavedRanges = () => {\n savedRanges.daily = null;\n savedRanges.weekly = null;\n savedRanges.monthly = null;\n savedRanges.quarterly = null;\n };\n\n return {\n savedRanges,\n\n saveRange,\n resetSavedRanges,\n };\n};\n","import { type CalendarGranularityType } from '@/internal';\n\nexport interface DateRangePickerCalendarFormData {\n startDate: string;\n endDate: string;\n startTime?: string;\n endTime?: string;\n granularity?: CalendarGranularityType;\n}\n\nexport enum DateRangePickerCalendarEvent {\n CUSTOM_RANGE = 'custom-range',\n INPUT = 'input',\n ERROR = 'error',\n FORM_DATE = 'form-date',\n START_DATE_SELECTED = 'start-date-selected',\n}\n\nexport interface DateRangePickerCalendarRangeSelectorItem {\n label: string;\n value: string;\n data: {\n startDate: Date;\n endDate?: Date;\n granularity?: CalendarGranularityType;\n isRelativeToNow?: boolean;\n timeDifference?: number;\n };\n}\n\nexport type DateRangePickerCalendarRangeSelectorItems = Array<DateRangePickerCalendarRangeSelectorItem>;\n","const validDigitRegex = /[\\d]/;\n\nconst hourRegex = /^\\d{2}$/;\nconst minuteRegex = /^\\d{2}:\\d{2}$/;\n\nexport const validateTimeInput = (event: KeyboardEvent) => {\n const { selectionStart } = event.target as HTMLInputElement;\n\n const allowedKeys = ['Backspace', 'Tab', 'ArrowLeft', 'ArrowRight'];\n const isValidKey = validDigitRegex.test(event.key) || allowedKeys.includes(event.key);\n const isValidColon = [1, 2, 4, 5].includes(selectionStart) && event.key === ':';\n\n if (!isValidKey && !isValidColon) {\n event.preventDefault();\n }\n};\n\nexport const formatTimeInputValue = (value: string) => {\n if (!value) {\n return value;\n }\n\n let formattedValue = value;\n\n // Format if the first value is bigger than 2, because it can't be bigger than 24 hours\n if (formattedValue.length === 1 && parseInt(value, 10) > 2) {\n return `0${formattedValue}:`;\n }\n\n const [secondToLastDigit, lastDigit] = formattedValue.slice(-2);\n if ([2, 5].includes(formattedValue.length) && lastDigit === ':') {\n formattedValue = `${formattedValue.slice(0, formattedValue.length - 2)}0${secondToLastDigit}`;\n }\n\n // Add `:` after hour/minute\n if (hourRegex.test(formattedValue) || minuteRegex.test(formattedValue)) {\n formattedValue += ':';\n }\n return formattedValue;\n};\n","<template>\n <div class=\"b-date-range-picker-calendar\">\n <!-- Form -->\n <div class=\"b-date-range-picker-calendar__form-container\">\n <div class=\"b-date-range-picker-calendar__form\">\n <template v-if=\"hasSlot('title')\">\n <slot name=\"title\" />\n </template>\n\n <bento-dropdown\n v-if=\"quickSelectRanges\"\n :aria-label=\"t('customRange')\"\n :items=\"quickSelectRangeDefaultItems\"\n :value=\"selectedRangeSelectorValue\"\n @input=\"onRangeSelectorInput\"\n />\n\n <bento-segmented-control\n v-if=\"granularities\"\n :items=\"granularityItems\"\n :model-value=\"internalRangeDate.granularity\"\n full-width\n @update:model-value=\"onGranularityInput\"\n >\n </bento-segmented-control>\n <div>\n <bento-typography stronger el=\"span\" class=\"b-date-range-picker-calendar__label\">\n From\n </bento-typography>\n <div :class=\"formInputWrapperConditionalClasses\">\n <bento-input-field\n :aria-label=\"t('dateFrom')\"\n :value=\"dateTextInput.startDate\"\n :error=\"startDateError\"\n class=\"b-date-range-picker-calendar__form-input\"\n @input=\"onStartDateInput\"\n @keydown=\"onDateInputKeyDown\"\n >\n <template #description>YYYY-MM-DD</template>\n </bento-input-field>\n\n <bento-input-field\n v-if=\"allowTimeInput\"\n :aria-label=\"t('timeFrom')\"\n :value=\"dateTextInput.startTime\"\n :error=\"startTimeError\"\n class=\"b-date-range-picker-calendar__form-input\"\n @input=\"onStartTimeInput\"\n @keydown=\"onTimeInputKeyDown\"\n >\n <template #description>HH:MM:SS</template>\n </bento-input-field>\n </div>\n </div>\n\n <div>\n <bento-typography stronger el=\"span\" class=\"b-date-range-picker-calendar__label\">\n To\n </bento-typography>\n <div :class=\"formInputWrapperConditionalClasses\">\n <bento-input-field\n class=\"b-date-range-picker-calendar__form-input\"\n :aria-label=\"t('dateTo')\"\n :value=\"dateTextInput.endDate\"\n :error=\"endDateError\"\n @input=\"onEndDateInput\"\n @keydown=\"onDateInputKeyDown\"\n >\n <template #description>YYYY-MM-DD</template>\n </bento-input-field>\n\n <bento-input-field\n v-if=\"allowTimeInput\"\n :aria-label=\"t('timeTo')\"\n :value=\"dateTextInput.endTime\"\n :error=\"endTimeError\"\n class=\"b-date-range-picker-calendar__form-input\"\n @input=\"onEndTimeInput\"\n @keydown=\"onTimeInputKeyDown\"\n >\n <template #description>HH:MM:SS</template>\n </bento-input-field>\n </div>\n </div>\n </div>\n\n <div v-if=\"hasSlot('actions')\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <!-- Calendar -->\n <div class=\"b-date-range-picker-calendar__calendars-container\">\n <calendar\n :value=\"internalRangeDate\"\n :first-day-of-week=\"firstDayOfWeek\"\n :is-date-disabled=\"isDateDisabled\"\n :max-range=\"maxRange\"\n :min=\"computedMinMax.min\"\n :max=\"computedMinMax.max\"\n :number-of-months=\"numberOfMonths\"\n :show-end-date-on-open=\"showEndDateOnOpen\"\n :granularity=\"selectedGranularity\"\n :variant=\"variant\"\n is-range\n @input=\"onDateInput\"\n @start-date-selected=\"onStartDateSelected\"\n @end-date-selected=\"onEndDateSelected\"\n />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, type PropType, reactive, ref, toRaw } from 'vue';\n import { Calendar, type CalendarGranularityType } from '@/internal';\n import { BentoTypography } from '@/components/typography';\n import { BentoInputField } from '@/components/input-field';\n import { BentoDropdown } from '@/components/dropdown';\n import { BentoSegmentedControl, type BentoSegmentedControlItem } from '@/components/segmented-control';\n import { getDateLocale } from '@/utils/ts/get-date-locale/get-date-locale';\n import { useI18n } from '@/utils/ts/i18n';\n import { parseDateTextToStartOfDay } from '../../utils/date-text-to-start-of-day';\n import { debounce } from '@/utils/ts/debounce';\n import { useHasSlot } from '@/composables';\n import { useGranularityAdjustments } from '@/components/internal/calendar/composables/use-granularity-adjustments';\n import { useGranularMinMaxDate } from '@/components/internal/calendar/components/calendar-month/composables/granular-min-max-date';\n import { useGranularityMemory } from '../../composables/use-granularity-memory';\n import { formatDateInputValue, validateDateInput } from '@/utils/ts/date-input';\n import {\n DateRangePickerCalendarEvent,\n type DateRangePickerCalendarFormData,\n type DateRangePickerCalendarRangeSelectorItems,\n } from './date-range-picker-calendar.types';\n import type {\n BentoDateRangePickerGranularityConfig,\n BentoDateRangePickerValue,\n } from '../../date-range-picker.types';\n import { DateFormat } from '@/types';\n import { formatTimeInputValue, validateTimeInput } from '@/utils/ts/time-input';\n import endOfDay from 'date-fns/endOfDay';\n import format from 'date-fns/format';\n import setHours from 'date-fns/setHours';\n import setMinutes from 'date-fns/setMinutes';\n import setSeconds from 'date-fns/setSeconds';\n import startOfDay from 'date-fns/startOfDay';\n import messages from './messages.json';\n import isSameSecond from 'date-fns/isSameSecond';\n import isSameDay from 'date-fns/isSameDay';\n import isEqual from 'date-fns/isEqual';\n import isToday from 'date-fns/isToday';\n import setMilliseconds from 'date-fns/setMilliseconds';\n\n const FORM_INPUT_DEBOUNCE_TIME = 300;\n const RANGE_SELECTOR_CUSTOM_RANGE_KEY = 'customRange';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n /**\n * Calendar for range dates. Contains the logic to handle the range forms.\n *\n * @example\n * import DatePickerCalendarRange from './date-range-picker-calendar.vue';\n *\n * export default {\n * components: { DatePickerCalendarRange },\n * template: `\n * <date-range-picker-calendar\n * :value=\"{startDate: new Date(), endDate: new Date() }\"\n * :first-day-of-week=\"BentoDatePickerFirstDayOfWeek.MONDAY\"\n * :is-date-disabled=\"(date: Date) => boolean\"\n * :number-of-months=\"2\"\n * @input=\"({ startDate, endDate }) => void\"\n * />\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'date-range-picker-calendar',\n components: {\n BentoDropdown,\n BentoInputField,\n BentoSegmentedControl,\n BentoTypography,\n Calendar,\n },\n props: {\n /**\n * Allows user to enter time values in the form\n */\n allowTimeInput: { type: Boolean, default: false },\n\n /**\n * Ranges form persistance data\n */\n dateFormData: {\n type: Object as PropType<DateRangePickerCalendarFormData>,\n default: () => ({ startDate: undefined, endDate: undefined, startTime: undefined, endTime: undefined }),\n },\n\n /**\n * Allows you to set the first day of the week. 0 is sunday, 1 is monday, 6 is saturday\n */\n firstDayOfWeek: Calendar.props.firstDayOfWeek,\n\n /**\n * A list of available granularities.\n * If present, the date picker will display a segmented control to change granularity.\n */\n granularities: {\n type: Array as PropType<Array<BentoDateRangePickerGranularityConfig>>,\n default: null,\n },\n\n /**\n * Indicate if a date should be disabled or not\n */\n isDateDisabled: Calendar.props.isDateDisabled,\n\n /**\n * Set a maximum number of dates to be selectable by the range.\n */\n maxRange: Calendar.props.maxRange,\n\n /**\n * Sets a minimum limit for selectable dates - dates before `min` will not be selectable\n */\n min: Calendar.props.min,\n\n /**\n * Sets a maximum limit for selectable dates - dates after `max` will not be selectable\n */\n max: Calendar.props.max,\n\n /**\n * Number of months rendered on pane\n */\n numberOfMonths: Calendar.props.numberOfMonths,\n\n /**\n * Displays the end date's month when the calendar is opened. Defaults to false i.e. the start date's month is displayed.\n */\n showEndDateOnOpen: { type: Boolean, default: false },\n\n /**\n * Enables the custom range selector.\n * If provided, must be an array that sets the custom range dropdown items. Items are of the structure:\n * `label` - label of custom range item.\n * `value` - a unique key of the custom range item.\n * `data` - an object `{ startDate: Date; endDate: Date }` to set the date picker range to upon selecting.\n */\n quickSelectRanges: {\n type: Array as PropType<DateRangePickerCalendarRangeSelectorItems>,\n default: undefined,\n },\n\n /**\n * Selected date\n */\n value: { type: Object as PropType<BentoDateRangePickerValue>, default: undefined },\n\n /**\n * The type of calendar to display. Defaults to showing days.\n */\n variant: Calendar.props.variant,\n },\n emits: [\n DateRangePickerCalendarEvent.CUSTOM_RANGE,\n DateRangePickerCalendarEvent.INPUT,\n DateRangePickerCalendarEvent.ERROR,\n DateRangePickerCalendarEvent.FORM_DATE,\n DateRangePickerCalendarEvent.START_DATE_SELECTED,\n ],\n setup(props, { emit, slots }) {\n const { locale, t } = useI18n<{ message: MessageSchema }>({ messages });\n const locales = getDateLocale();\n const calculatedIsRelativeToNowQuickSelectRanges = ref({});\n\n const defaultGranularity = computed(() => (props.variant === 'month' ? 'monthly' : 'daily'));\n\n const internalRangeDate = reactive<BentoDateRangePickerValue>({\n startDate: props.value?.startDate,\n endDate: props.value?.endDate,\n range: props.value?.range,\n ...(props.granularities\n ? {\n granularity: props.value?.granularity || defaultGranularity.value,\n }\n : {}),\n });\n\n /**\n * Deserializes a date to transform it to a UTC standard so it can be compared regardless of timezone.\n * src: https://stackoverflow.com/a/38050824\n * @param date Date to deserialize/normalize for comparisson\n */\n function deserializeDate(date: Date) {\n if (!date) {\n return null;\n }\n return new Date(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n );\n }\n\n /**\n * Currently range selector dropdown item that is selected.\n * The logic will try and find in each range item:\n * - If an endDate does not exist, then only check if the startDate day matches and if today's day matches.\n * - if time input has been enabled, then check if the seconds match.\n * - if an endDate does exist then just check if the startDate day and the endDate day match.\n */\n const selectedRangeSelectorValue = computed(() => {\n return (\n // eslint-disable-next-line consistent-return\n props?.quickSelectRanges?.find(({ value, data }) => {\n if (!data.endDate) {\n // Check if this quick select range is explicitly marked as \"relative to now\"\n if (data.isRelativeToNow) {\n // Retrieve previously calculated start/end dates for this relative range.\n // We use these if the user has already clicked on this time of quick range\n const newlyCalculatedQuickSelectDates =\n calculatedIsRelativeToNowQuickSelectRanges.value?.[value];\n return newlyCalculatedQuickSelectDates\n ? isEqual(\n deserializeDate(newlyCalculatedQuickSelectDates.startDate),\n deserializeDate(internalRangeDate.startDate)\n ) &&\n isEqual(\n deserializeDate(newlyCalculatedQuickSelectDates.endDate),\n deserializeDate(internalRangeDate.endDate)\n )\n : // If not stored calculated dates, fall back to comparing the quick select item's value\n // with the internal range's stored range identifier.\n value === internalRangeDate.range;\n }\n // This block handles quick select ranges that do not have an endDate\n // AND are NOT explicitly marked as 'isRelativeToNow'.\n // This means the endDate will be today at the end of the day\n return (\n isEqual(\n deserializeDate(data.startDate),\n deserializeDate(internalRangeDate.startDate)\n ) &&\n isEqual(\n deserializeDate(internalRangeDate.endDate),\n deserializeDate(endOfDay(internalRangeDate.endDate))\n ) &&\n isToday(deserializeDate(internalRangeDate.endDate))\n );\n }\n\n if (props.allowTimeInput) {\n const res =\n isSameSecond(\n deserializeDate(data.startDate),\n deserializeDate(internalRangeDate.startDate)\n ) &&\n isSameSecond(deserializeDate(data.endDate), deserializeDate(internalRangeDate.endDate));\n return res;\n }\n\n if (data.endDate) {\n return (\n isSameDay(data.startDate, internalRangeDate.startDate) &&\n isSameDay(data.endDate, internalRangeDate.endDate)\n );\n }\n })?.value ?? RANGE_SELECTOR_CUSTOM_RANGE_KEY\n );\n });\n const formInputWrapperConditionalClasses = computed(() => ({\n 'b-date-range-picker-calendar__form-input-wrapper': props.allowTimeInput,\n }));\n const quickSelectRangeDefaultItems = computed(() => [\n { label: t('customRange'), value: RANGE_SELECTOR_CUSTOM_RANGE_KEY },\n ...(props.quickSelectRanges ? props.quickSelectRanges : []),\n ]);\n\n const selectedGranularity = computed(\n () => props.granularities?.find(({ type }) => type === internalRangeDate.granularity) || null\n );\n\n const granularityItems = computed<Array<BentoSegmentedControlItem>>(\n () =>\n props.granularities?.map(({ type, disabled }) => ({\n label: t(type),\n value: type,\n disabled,\n })) ?? []\n );\n\n const { getGranularCalendarLimits } = useGranularMinMaxDate(props);\n\n const computedMinMax = computed(() =>\n props.granularities\n ? getGranularCalendarLimits(selectedGranularity.value)\n : { min: startOfDay(props.min), max: endOfDay(props.max) }\n );\n\n const {\n adjustDateForQuarterly,\n adjustDateForMonthly,\n adjustDateForWeekly,\n adjustStartDateInputForWeekly,\n adjustEndDateInputForWeekly,\n adjustStartDateInputForMonthly,\n adjustEndDateInputForMonthly,\n adjustStartDateInputForQuarterly,\n adjustEndDateInputForQuarterly,\n } = useGranularityAdjustments(props.firstDayOfWeek);\n const { savedRanges, saveRange, resetSavedRanges } = useGranularityMemory();\n\n /**\n * Format date to a string value in format yyyy-MM-dd\n * @param {Date} dateToFormat Date to be formatted\n */\n const formatDate = (dateToFormat?: Date) => {\n if (!dateToFormat) {\n return '';\n }\n return format(dateToFormat, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || locales.enUS,\n });\n };\n\n const formatTime = (dateToFormat?: Date) => {\n if (!dateToFormat) {\n return '';\n }\n\n return format(dateToFormat, DateFormat.HOUR_MINUTE_SECONDS, {\n locale: locales[locale.value.substring(0, 2)] || locales.enUS,\n });\n };\n\n // Form error flags\n const startDateError = ref(false);\n const endDateError = ref(false);\n const startTimeError = ref(false);\n const endTimeError = ref(false);\n\n // Form input text used in range variant\n const dateTextInput = reactive({\n startDate: props.dateFormData.startDate,\n endDate: props.dateFormData.endDate,\n startTime: props.dateFormData.startTime,\n endTime: props.dateFormData.endTime,\n });\n\n /**\n * Sets the time of a date object from a time string.\n * @param dateToSetTimeIn The date object to set the time in.\n * @param time The time string in HH:MM:SS format.\n * @returns A new Date object with the time set.\n */\n const setTimeInDateObject = (dateToSetTimeIn: Date, time: string) => {\n let dateWithTime = new Date(dateToSetTimeIn);\n\n const [hours, minutes, seconds] = time.split(':');\n dateWithTime = setHours(dateWithTime, parseInt(hours, 10));\n dateWithTime = setMinutes(dateWithTime, parseInt(minutes, 10));\n dateWithTime = setSeconds(dateWithTime, parseInt(seconds, 10));\n return dateWithTime;\n };\n\n const isValidTimeString = (timeText: string) =>\n /^(?:[01]\\d|2[01234]):(?:[012345]\\d):(?:[012345]\\d)$/.test(timeText);\n\n /**\n * Checks if a time string is valid and within the min/max bounds if a date is provided.\n * @param timeText The time string to validate.\n * @param date The date string to check the time against.\n * @returns True if the time is valid, false otherwise.\n */\n const isValidTime = (timeText: string, date?: string) => {\n const isTimeAllowed = () => {\n if (date && isValidDate(date)) {\n const dateToCheckWithTime = setTimeInDateObject(new Date(date), timeText);\n // Check if date is between min/max bounds, if there are any\n if (\n (props.min && dateToCheckWithTime < setMilliseconds(props.min, 0)) ||\n (props.max && dateToCheckWithTime > setMilliseconds(props.max, 0))\n ) {\n return false;\n }\n }\n\n return true;\n };\n\n return isValidTimeString(timeText) && isTimeAllowed();\n };\n\n /**\n * Sets the time in a date object if the time is valid and the variant is not 'month'.\n * @param date The date object to modify.\n * @param time The time string to set.\n * @returns The modified date object or the original if time is not set.\n */\n const setTimeInDateRef = (date: Date, time: string) => {\n // Do not set time if month variant\n if (!time || !isValidTimeString(time) || props.variant === 'month') {\n return date;\n }\n\n return setTimeInDateObject(new Date(date), time);\n };\n\n const onDateInput = (selectedRange: BentoDateRangePickerValue) => {\n dateTextInput.startTime = formatTime(\n props.min && props.allowTimeInput && isSameDay(props.min, selectedRange.startDate)\n ? props.min\n : startOfDay(selectedRange.startDate)\n );\n dateTextInput.endTime = formatTime(\n props.max && props.allowTimeInput && isSameDay(props.max, selectedRange.endDate)\n ? props.max\n : endOfDay(selectedRange.endDate)\n );\n\n internalRangeDate.startDate = setTimeInDateRef(selectedRange.startDate, dateTextInput.startTime);\n internalRangeDate.endDate = setTimeInDateRef(selectedRange.endDate, dateTextInput.endTime);\n // Resetting internal range date when selecting a custom range through the calendar\n internalRangeDate.range = null;\n\n if (props.granularities) {\n // Reset saved ranges on input\n resetSavedRanges();\n }\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n };\n\n /**\n * Checks if a date string is in YYYY-MM-DD format and if the date is enabled.\n * @param dateText The date string to validate.\n * @returns True if the date is valid and enabled, false otherwise.\n */\n const isValidDate = (dateText: string) => {\n // Is date selectable\n const isDateEnabled = (date: Date) => {\n // Check if date is between or equal to min/max bounds\n // Set the time to the start of the day to disregard time\n if (\n (props.min && startOfDay(date) < startOfDay(props.min)) ||\n (props.max && startOfDay(date) > startOfDay(props.max))\n ) {\n return false;\n }\n\n // Check if function is set, otherwise all dates are enabled\n if (props.isDateDisabled) {\n return !props.isDateDisabled(startOfDay(date));\n }\n\n return true;\n };\n\n // YYYY-MM-DD regex\n const dateRegex = /^\\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])$/;\n // Date matches text regex\n return dateRegex.test(dateText) && isDateEnabled(new Date(dateText));\n };\n\n /**\n * When mounted, set the input error states to true if the values are not valid\n */\n onMounted(() => {\n // Start date validation\n startDateError.value = !!(props.dateFormData.startDate && !isValidDate(props.dateFormData.startDate));\n\n // Start time validation\n if (props.allowTimeInput) {\n startTimeError.value = !!(\n props.dateFormData.startTime &&\n !isValidTime(props.dateFormData.startTime, props.dateFormData.startDate)\n );\n } else {\n startTimeError.value = false;\n }\n\n // End date validation\n endDateError.value = !!(props.dateFormData.endDate && !isValidDate(props.dateFormData.endDate));\n\n // End time validation\n if (props.allowTimeInput) {\n endTimeError.value = !!(\n props.dateFormData.endTime &&\n !isValidTime(props.dateFormData.endTime, props.dateFormData.endDate)\n );\n } else {\n endTimeError.value = false;\n }\n });\n\n const onStartDateSelected = (newStartDate: Date) => {\n dateTextInput.startDate = formatDate(newStartDate);\n if (!dateTextInput.startTime) {\n // Set the time to the beginning of the day\n dateTextInput.startTime = formatTime(newStartDate);\n } else if (startTimeError.value) {\n // Set the form time if it was previously set\n dateTextInput.startTime = props.dateFormData?.startTime;\n }\n\n // Reset errors\n startDateError.value = false;\n startTimeError.value = false;\n\n emit(DateRangePickerCalendarEvent.START_DATE_SELECTED, newStartDate);\n };\n\n const onEndDateSelected = (newEndDate: Date) => {\n dateTextInput.endDate = formatDate(newEndDate);\n if (!dateTextInput.endTime) {\n // Set the time to the end of the day\n dateTextInput.endTime = formatTime(endOfDay(newEndDate));\n } else if (endTimeError.value) {\n // Set the form time if it was previously set\n dateTextInput.endTime = props.dateFormData?.endTime;\n }\n\n // Reset errors\n endDateError.value = false;\n endTimeError.value = false;\n };\n\n const getDate = (keyName: keyof BentoDateRangePickerValue) => {\n const dateProp = (props.value as BentoDateRangePickerValue)[keyName];\n if (dateProp) {\n return dateProp;\n }\n\n if (props.dateFormData[keyName] && isValidDate(props.dateFormData[keyName])) {\n return new Date(props.dateFormData[keyName]);\n }\n\n return undefined;\n };\n\n const validateStartDate = debounce((startDateText: string) => {\n // Checks for YYYY-MM-DD format\n if (isValidDate(startDateText)) {\n let dateText = startDateText;\n\n startDateError.value = false;\n\n switch (selectedGranularity.value?.type) {\n case 'weekly':\n dateText = adjustStartDateInputForWeekly(\n startDateText,\n formatDate,\n computedMinMax.value.min,\n computedMinMax.value.max\n );\n dateTextInput.startDate = dateText;\n break;\n case 'monthly':\n dateText = adjustStartDateInputForMonthly(\n startDateText,\n formatDate,\n computedMinMax.value.min,\n computedMinMax.value.max\n );\n dateTextInput.startDate = dateText;\n break;\n case 'quarterly':\n dateText = adjustStartDateInputForQuarterly(\n startDateText,\n formatDate,\n computedMinMax.value.min,\n computedMinMax.value.max\n );\n dateTextInput.startDate = dateText;\n break;\n case 'daily':\n default:\n break;\n }\n\n const startDate = parseDateTextToStartOfDay(dateText);\n internalRangeDate.startDate = setTimeInDateRef(startDate, dateTextInput.startTime);\n internalRangeDate.endDate = setTimeInDateRef(\n parseDateTextToStartOfDay(dateTextInput.endDate),\n dateTextInput.endTime\n );\n\n if (isValidDate(dateTextInput.endDate)) {\n internalRangeDate.endDate = setTimeInDateRef(\n parseDateTextToStartOfDay(dateTextInput.endDate),\n dateTextInput.endTime\n );\n }\n\n const endDate = getDate('endDate');\n\n // Resetting internal range date when selecting a custom range through the calendar\n internalRangeDate.range = null;\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate,\n endDate,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n } else {\n // Indicate form error\n startDateError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n }, FORM_INPUT_DEBOUNCE_TIME);\n\n const onStartDateInput = (startDateText: string) => {\n // Set the date as string when input through the form\n dateTextInput.startDate = formatDateInputValue(startDateText);\n validateStartDate(dateTextInput.startDate);\n };\n\n const validateEndDate = debounce((endDateText: string) => {\n // Checks for YYYY-MM-DD format\n if (isValidDate(endDateText)) {\n let dateText = endDateText;\n\n endDateError.value = false;\n\n switch (selectedGranularity.value?.type) {\n case 'weekly':\n dateText = adjustEndDateInputForWeekly(\n endDateText,\n formatDate,\n computedMinMax.value.min,\n computedMinMax.value.max\n );\n dateTextInput.endDate = dateText;\n break;\n case 'monthly':\n dateText = adjustEndDateInputForMonthly(\n endDateText,\n formatDate,\n computedMinMax.value.min,\n computedMinMax.value.max\n );\n dateTextInput.endDate = dateText;\n break;\n case 'quarterly':\n dateText = adjustEndDateInputForQuarterly(\n endDateText,\n formatDate,\n computedMinMax.value.min,\n computedMinMax.value.max\n );\n dateTextInput.endDate = dateText;\n break;\n case 'daily':\n default:\n break;\n }\n\n // Format date string to Date object\n const endDate = parseDateTextToStartOfDay(dateText);\n internalRangeDate.endDate = setTimeInDateRef(endDate, dateTextInput.endTime);\n if (isValidDate(dateTextInput.startDate)) {\n internalRangeDate.startDate = setTimeInDateRef(\n parseDateTextToStartOfDay(dateTextInput.startDate),\n dateTextInput.startTime\n );\n }\n\n const startDate = getDate('startDate');\n\n // Resetting internal range date when selecting a custom range through the calendar\n internalRangeDate.range = null;\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate,\n endDate,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n } else {\n // Indicate form error\n endDateError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n }, FORM_INPUT_DEBOUNCE_TIME);\n\n const onEndDateInput = (endDateText: string) => {\n // Set the date as string when input through the form\n dateTextInput.endDate = formatDateInputValue(endDateText);\n validateEndDate(dateTextInput.endDate);\n };\n\n const onDateInputKeyDown = (event: KeyboardEvent) => {\n validateDateInput(event);\n };\n\n const validateStartTime = debounce((startTimeText: string) => {\n if (isValidTime(startTimeText, props.dateFormData.startDate)) {\n startTimeError.value = false;\n internalRangeDate.startDate = setTimeInDateRef(internalRangeDate.startDate, startTimeText);\n\n const endDate = getDate('endDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: internalRangeDate.startDate,\n endDate,\n startTime: startTimeText,\n endTime: dateTextInput.endTime ?? props.dateFormData.endTime,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n } else {\n // Indicate form error\n startTimeError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n });\n\n const validateEndTime = debounce((endTimeText: string) => {\n if (isValidTime(endTimeText, props.dateFormData.endDate)) {\n endTimeError.value = false;\n internalRangeDate.endDate = setTimeInDateRef(internalRangeDate.endDate, endTimeText);\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: internalRangeDate.startDate,\n endDate: internalRangeDate.endDate,\n startTime: dateTextInput.startTime ?? props.dateFormData.startTime,\n endTime: endTimeText,\n });\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n } else {\n // Indicate form error\n endTimeError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n });\n\n const onStartTimeInput = (startTimeText: string) => {\n dateTextInput.startTime = formatTimeInputValue(startTimeText);\n validateStartTime(dateTextInput.startTime);\n };\n\n const onEndTimeInput = (endDateText: string) => {\n dateTextInput.endTime = formatTimeInputValue(endDateText);\n validateEndTime(dateTextInput.endTime);\n };\n\n const onTimeInputKeyDown = (event: KeyboardEvent) => {\n validateTimeInput(event);\n };\n\n const setInternalRange = (\n startDate: Date,\n endDate: Date,\n granularity?: CalendarGranularityType,\n range?: string\n ) => {\n internalRangeDate.startDate = startDate;\n internalRangeDate.endDate = endDate;\n\n if (granularity) {\n internalRangeDate.granularity = granularity;\n }\n\n if (range) {\n internalRangeDate.range = range;\n }\n };\n\n const onRangeSelectorInput = (newCustomRangeValue: string) => {\n const foundResult = props.quickSelectRanges?.find(({ value }) => value === newCustomRangeValue);\n\n if (foundResult) {\n resetSavedRanges();\n const date = foundResult.data;\n const newEndDate =\n date.endDate || (date.isRelativeToNow ? new Date(Date.now()) : endOfDay(new Date(Date.now())));\n // If the time difference between start and end dates is available,\n // calculating start date dynamically\n const newStartDate =\n date.isRelativeToNow && date.timeDifference\n ? new Date(newEndDate.getTime() - date.timeDifference)\n : date.startDate;\n\n // Set Form input Dates\n dateTextInput.endDate = formatDate(newEndDate);\n dateTextInput.startDate = formatDate(newStartDate);\n\n setInternalRange(newStartDate, newEndDate, null, newCustomRangeValue);\n\n if (props.granularities) {\n internalRangeDate.granularity = date.granularity || defaultGranularity.value;\n }\n\n // Set Form input time to quick select range time\n dateTextInput.startTime = formatTime(newStartDate);\n dateTextInput.endTime = formatTime(newEndDate);\n\n // Set calendar selection\n internalRangeDate.startDate = newStartDate;\n internalRangeDate.endDate = newEndDate;\n\n if (date.isRelativeToNow) {\n // Store this calculated start and end dates to be used in the selectedRangeSelectorValue logic\n calculatedIsRelativeToNowQuickSelectRanges.value = {\n ...calculatedIsRelativeToNowQuickSelectRanges.value,\n [newCustomRangeValue]: {\n startDate: newStartDate,\n endDate: newEndDate,\n },\n };\n }\n\n // Emit everytime the date range changes\n emit(DateRangePickerCalendarEvent.CUSTOM_RANGE, {\n ...foundResult.data,\n startDate: newStartDate,\n endDate: newEndDate,\n range: foundResult.value,\n });\n }\n };\n\n const adjustDate = {\n weekly: adjustDateForWeekly,\n monthly: adjustDateForMonthly,\n quarterly: adjustDateForQuarterly,\n };\n\n const onGranularityInput = (value: CalendarGranularityType) => {\n const previousValue = internalRangeDate.granularity;\n\n internalRangeDate.granularity = value;\n\n // Save previously selected range\n if (previousValue) {\n saveRange(previousValue, structuredClone(toRaw(internalRangeDate)));\n }\n\n if (internalRangeDate.startDate && internalRangeDate.endDate) {\n // Adjust date range based on new granularity\n switch (value) {\n case 'quarterly':\n case 'monthly':\n case 'weekly': {\n if (savedRanges[value]) {\n setInternalRange(savedRanges[value].startDate, savedRanges[value].endDate, value);\n break;\n }\n\n const { startDate, endDate } = adjustDate[value](\n internalRangeDate.startDate,\n internalRangeDate.endDate,\n computedMinMax.value.min,\n computedMinMax.value.max\n );\n setInternalRange(startDate, endDate, value);\n break;\n }\n case 'daily':\n if (savedRanges.daily) {\n setInternalRange(savedRanges.daily.startDate, savedRanges.daily.endDate, value);\n }\n break;\n default:\n break;\n }\n\n dateTextInput.startDate = formatDate(internalRangeDate.startDate);\n dateTextInput.endDate = formatDate(internalRangeDate.endDate);\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n ...internalRangeDate,\n range: selectedRangeSelectorValue.value,\n });\n }\n };\n\n return {\n // Values\n internalRangeDate,\n dateTextInput,\n endDateError,\n endTimeError,\n granularityItems,\n selectedGranularity,\n computedMinMax,\n selectedRangeSelectorValue,\n startDateError,\n startTimeError,\n quickSelectRangeDefaultItems,\n formInputWrapperConditionalClasses,\n\n // Methods\n hasSlot: useHasSlot(slots),\n t,\n\n // Events\n onDateInput,\n onDateInputKeyDown,\n onEndDateInput,\n onEndDateSelected,\n onEndTimeInput,\n onGranularityInput,\n onRangeSelectorInput,\n onStartDateInput,\n onStartDateSelected,\n onStartTimeInput,\n onTimeInputKeyDown,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-picker-calendar.scss\" />\n","import { computed, reactive } from 'vue';\nimport { getDateLocale } from '@/utils/ts/get-date-locale/get-date-locale';\nimport { useI18n } from '@/utils/ts/i18n';\nimport { parseDateTextToStartOfDay } from '../utils/date-text-to-start-of-day';\nimport { type UseDateDisplayText } from './use-date-range-picker-calendar-text.types';\nimport { DateFormat } from '@/types';\nimport { type CalendarRangeDateValue } from '@/internal';\nimport { type DateRangePickerCalendarFormData } from '../components/date-range-picker-calendar/date-range-picker-calendar.types';\nimport format from 'date-fns/format';\nimport getQuarter from 'date-fns/getQuarter';\nimport getYear from 'date-fns/getYear';\nimport isSameQuarter from 'date-fns/isSameQuarter';\n\n/**\n * Composable that sets and formats the date to be displayed in the input box of a Date Range Picker\n * @param {Ref<Date>} option.datePickerValue Ref to the datePickerValue set in the DateRangePicker component\n * @param {Ref<boolean>} option.isDateIncorrect Indicates if the date is correct or not\n * @param {Ref<DateRangePickerCalendarRangeSelectorItems>} option.quickSelectRanges Ref to the quick select date ranges (optional)\n * @param {?Ref<boolean>} option.isMonthVariant Indicates if the date range picker has variant \"month\"\n */\nexport const useDateRangePickerCalendarText: UseDateDisplayText<CalendarRangeDateValue> = ({\n datePickerValue,\n isDateIncorrect,\n quickSelectRanges,\n isMonthVariant,\n}) => {\n const { locale, t } = useI18n();\n const locales = getDateLocale();\n\n const isValidDate = date => !!date && !isNaN(date.getTime());\n\n const formatDate = (date: Date, dateFormat: DateFormat) =>\n isValidDate(date)\n ? format(date, dateFormat, {\n locale: locales[locale.value.substring(0, 2)] || locales.enUS,\n })\n : undefined;\n\n // Handle the form input text\n const textInputDisplayValue = reactive<DateRangePickerCalendarFormData>({\n startDate: formatDate(datePickerValue.value?.startDate, DateFormat.NUMERIC_DATE_YEAR_FIRST),\n endDate: formatDate(datePickerValue.value?.endDate, DateFormat.NUMERIC_DATE_YEAR_FIRST),\n startTime: formatDate(datePickerValue.value?.startDate, DateFormat.HOUR_MINUTE_SECONDS),\n endTime: formatDate(datePickerValue.value?.endDate, DateFormat.HOUR_MINUTE_SECONDS),\n });\n\n const dateDisplayValue = computed(() => {\n // Display incorrect date when there's an error with the input\n if (isDateIncorrect.value) {\n return `${textInputDisplayValue.startDate || ''} - ${textInputDisplayValue.endDate || ''}`;\n }\n\n // Display \"Select a date\" when there's no date selected or input\n if (!datePickerValue.value || (!datePickerValue.value.startDate && !datePickerValue.value.endDate)) {\n return t('selectDateRange') as string;\n }\n\n if (quickSelectRanges.value?.length) {\n const customRangeSelected = quickSelectRanges.value.find(({ value }) => {\n return value === datePickerValue.value?.range;\n });\n\n if (customRangeSelected) {\n return customRangeSelected.label;\n }\n }\n\n if (datePickerValue.value.granularity === 'quarterly') {\n const { startDate, endDate } = datePickerValue.value;\n const startQuarter = t('quarter', { quarter: getQuarter(startDate), year: getYear(startDate) });\n\n // If a single quarter is selected, show it only (e.g.: `Q2 2024`)\n if (isSameQuarter(startDate, endDate)) {\n return startQuarter;\n }\n\n const endQuarter = t('quarter', { quarter: getQuarter(endDate), year: getYear(endDate) });\n return `${startQuarter} - ${endQuarter}`;\n }\n\n const { startDate, endDate } = textInputDisplayValue;\n const dateFormat = isMonthVariant?.value ? DateFormat.LONG_MONTH_YEAR : DateFormat.FULL_DATE_MONTH_FIRST;\n return `${formatDate(parseDateTextToStartOfDay(startDate), dateFormat)} - ${formatDate(\n parseDateTextToStartOfDay(endDate),\n dateFormat\n )}`;\n });\n\n const formatTextInputDisplayValue = () => '';\n\n return {\n // Values\n dateDisplayValue,\n textInputDisplayValue,\n\n // Methods\n formatTextInputDisplayValue,\n };\n};\n","export { CalendarFirstDayOfWeek as BentoDateRangePickerFirstDayOfWeek } from '@/internal';\nexport type {\n CalendarIsDateDisabled as BentoDateRangePickerIsDateDisabled,\n CalendarRangeDateValue as BentoDateRangePickerValue,\n CalendarGranularityConfig as BentoDateRangePickerGranularityConfig,\n CalendarVariant as BentoDateRangePickerVariant,\n} from '@/internal';\n\nexport enum BentoDateRangePickerEvent {\n INPUT = 'input',\n}\n","<!-- TODO: Remove aria props as these are part of JSX elements /vue/types/jsx.d.ts -->\n<!-- eslint-disable vue/attribute-hyphenation -->\n<template>\n <div v-bento-click-outside-directive=\"closeDateRangePicker\" class=\"b-date-range-picker\">\n <!-- Label -->\n <field-label\n v-if=\"label\"\n :id=\"labelId\"\n :label=\"label\"\n :tooltip-text=\"tooltipText\"\n :optional=\"optional\"\n :required=\"required\"\n />\n\n <!-- Input -->\n <div @keydown.enter=\"onEnterPressedOverInput\">\n <dropdown-input-default\n ref=\"inputContainerRef\"\n always-combobox-is-input\n :ariaControls=\"datePickerContainerId\"\n :ariaExpanded=\"isDateRangePickerOpen\"\n :aria-labelledby=\"label ? labelId : null\"\n :aria-describedby=\"ariaDescribedBy\"\n :disabled=\"disabled\"\n :is-invalid=\"!!errorMessage || shouldDisplayError\"\n :open=\"isDateRangePickerOpen\"\n :display-value=\"displayedDateValue\"\n :readonly=\"isReadOnly\"\n @open=\"openDateRangePicker\"\n @clear=\"clearDateRangePickerValue\"\n @close=\"closeDateRangePicker\"\n />\n </div>\n\n <!-- Error Messages -->\n <error-message\n v-if=\"shouldDisplayError\"\n :id=\"dateErrorId\"\n :error-message=\"t('provideDateInAFormat')\"\n class=\"b-date-range-picker__error-message\"\n />\n <error-message\n v-if=\"!!errorMessage\"\n :id=\"errorId\"\n :error-message=\"errorMessage\"\n class=\"b-date-range-picker__error-message\"\n />\n\n <!-- Description -->\n <bento-typography\n v-if=\"description\"\n :id=\"descriptionId\"\n class=\"b-date-range-picker__description\"\n :class=\"descriptionConditionalClasses\"\n el=\"span\"\n >\n {{ description }}\n </bento-typography>\n\n <!-- Calendar container -->\n <bento-popover\n v-if=\"inputContainerRef\"\n :id=\"datePickerContainerId\"\n class=\"b-date-range-picker__container\"\n :open=\"isDateRangePickerOpen\"\n :target-element=\"inputContainerRef\"\n :disable-focus-trap=\"true\"\n :aria-label=\"popoverAriaLabel\"\n position=\"bottom-start\"\n without-space\n fit-content\n >\n <date-range-picker-calendar\n :allow-time-input=\"withTimeInput\"\n :quick-select-ranges=\"adjustedQuickSelectRanges\"\n :value=\"value\"\n :first-day-of-week=\"firstDayOfWeek\"\n :granularities=\"granularities\"\n :is-date-disabled=\"isDateDisabled\"\n :max-range=\"maxRange\"\n :min=\"min\"\n :max=\"max\"\n :number-of-months=\"numberOfMonths\"\n :show-end-date-on-open=\"showEndDateOnOpen\"\n :date-form-data=\"displayedTextInputValue\"\n :variant=\"variant\"\n @custom-range=\"onRangeSelectorInput\"\n @input=\"onDateRangePickerInput\"\n @error=\"onDateRangePickerError\"\n @form-date=\"onDateRangePickerFormDateInputUpdate\"\n >\n <template v-if=\"hasActions\" #actions>\n <bento-divider />\n\n <div class=\"b-date-range-picker__footer\">\n <bento-button-actions\n :actions=\"rangePickerButtonActions\"\n :layout=\"BentoButtonActionsLayout.SPACE_BETWEEN\"\n />\n </div>\n </template>\n </date-range-picker-calendar>\n </bento-popover>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, onMounted, type PropType, ref, toRaw, toRef, watch } from 'vue';\n\n // Components\n import { BentoButtonActions, BentoButtonActionsLayout } from '../button';\n import { BentoDivider } from '@/components/divider';\n import { BentoPopover } from '@/components/popover';\n import { BentoTypography } from '../typography';\n import { DateRangePickerCalendar } from './components/date-range-picker-calendar';\n import { DropdownInputDefault } from '@/components/dropdown/components';\n import { ErrorMessage, FieldLabel } from '@/internal';\n\n // Utils\n import { getDateLocale } from '@/utils/ts/get-date-locale/get-date-locale';\n import { generateUid } from '@/core/utils/ts';\n import { useI18n } from '@/utils/ts/i18n';\n import format from 'date-fns/format';\n\n // Composables\n import { useDateRangePickerCalendarText } from './composables/use-date-range-picker-calendar-text';\n import { useFormLayoutFieldLoading } from '@/composables';\n\n // Directives\n import { BentoClickOutsideDirective as vBentoClickOutsideDirective } from '@/directives';\n\n // Types\n import {\n BentoDateRangePickerEvent,\n type BentoDateRangePickerValue,\n type BentoDateRangePickerVariant,\n } from './date-range-picker.types';\n import { DateFormat } from '@/types';\n import {\n type DateRangePickerCalendarFormData,\n type DateRangePickerCalendarRangeSelectorItem,\n type DateRangePickerCalendarRangeSelectorItems,\n } from './components/date-range-picker-calendar/date-range-picker-calendar.types';\n\n import { deprecate } from '@/utils/ts/deprecate';\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const emit = defineEmits([BentoDateRangePickerEvent.INPUT]);\n const props = defineProps({\n /**\n * Allows user to enter time values in the form\n */\n allowTimeInput: { type: Boolean, default: false },\n\n /**\n * Descriptive supporting text visbile underneath the dropdown.\n */\n description: { type: String, default: undefined },\n\n /**\n * Disables dropdown functionality.\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Displays component in an error state with an error message\n */\n errorMessage: { type: String, default: null },\n\n /**\n * Allows user to set the first day of the week. 0 is sunday, 1 is monday, 6 is saturday\n */\n firstDayOfWeek: DateRangePickerCalendar.props.firstDayOfWeek,\n\n /**\n * A list of available granularities.\n * If present, the date picker will display a segmented control to change granularity.\n */\n granularities: DateRangePickerCalendar.props.granularities,\n\n /**\n * Indicate if a date should be disabled or not\n */\n isDateDisabled: DateRangePickerCalendar.props.isDateDisabled,\n\n /**\n * Text that is displayed as a label above the element.\n */\n label: { type: String, default: undefined },\n\n /**\n * Upon opening date range picker, end date's month will be pre-selected.\n */\n showEndDateOnOpen: { type: Boolean, default: false },\n\n /**\n * Highlights the dropdown is optional.\n */\n optional: { type: Boolean, default: false },\n\n /**\n * The Boolean readonly property, when present, makes the element not mutable, meaning the user can not edit the date range picker.\n */\n readonly: { type: Boolean, default: false },\n\n /**\n * Highlights the dropdown is required.\n */\n required: { type: Boolean, default: false },\n\n /**\n * Adds a info icon next to the label to display the passed tooltip message.\n */\n tooltipText: { type: String, default: null },\n\n /**\n * Enables the range selector.\n * If provided, must be an array that sets the custom range dropdown items. Items are of the structure:\n * `label` - label of custom range item.\n * `value` - a unique key of the custom range item.\n * `data` - an object `{ startDate: Date; endDate: Date }` to set the date picker range to upon selecting.\n */\n quickSelectRanges: {\n type: Array as PropType<DateRangePickerCalendarRangeSelectorItems>,\n default: undefined,\n },\n\n /**\n * Set a maximum number of dates to be selectable by the range.\n */\n maxRange: DateRangePickerCalendar.props.maxRange,\n\n /**\n * Sets a minimum limit for selectable dates - dates before `min` will not be selectable\n */\n min: DateRangePickerCalendar.props.min,\n\n /**\n * Sets a maximum limit for selectable dates - dates after `max` will not be selectable\n */\n max: DateRangePickerCalendar.props.max,\n\n /**\n * Number of months rendered on pane\n */\n numberOfMonths: DateRangePickerCalendar.props.numberOfMonths,\n\n /**\n * Selected date\n */\n value: DateRangePickerCalendar.props.value,\n\n /**\n * The type of calendar to display. Defaults to showing days.\n */\n variant: {\n type: String as PropType<`${BentoDateRangePickerVariant}`>,\n default: undefined, // Default will be set by @/internal/calendar\n },\n\n /**\n * Enables the date picker selection to persist until it is explicitly applied.\n * Displays a set of buttons: Apply and Cancel.\n *\n * @deprecated This will be the default behaviour in v2.0.0.\n */\n hasActions: { type: Boolean, default: false },\n });\n const { locale, t } = useI18n<{ message: MessageSchema }>({ messages });\n const locales = getDateLocale();\n const datePickerContainerId = generateUid('bento-date-range-picker-container');\n const labelId = generateUid('bento-date-range-picker-label');\n const descriptionId = generateUid('bento-date-range-picker-description');\n const errorId = generateUid('bento-date-range-picker-error');\n const dateErrorId = generateUid('bento-date-range-picker-date-error');\n const popoverAriaLabel = computed(() => props.label || t('dateRangePicker', { name: datePickerContainerId }));\n\n const adjustedQuickSelectRanges = computed<Array<DateRangePickerCalendarRangeSelectorItem>>(() => {\n return (\n props?.quickSelectRanges &&\n props.quickSelectRanges.map((range: DateRangePickerCalendarRangeSelectorItem) => {\n const timeDiff = !range.data.endDate\n ? new Date(Date.now()).getTime() - range.data.startDate.getTime()\n : undefined;\n return {\n ...range,\n data: {\n ...range.data,\n // Adding timeDifference to calculate an up-to-date endDate on range selection\n timeDifference: timeDiff,\n },\n };\n })\n );\n });\n\n const isDateIncorrect = ref(false);\n const inputContainerRef = ref(null);\n const isDateRangePickerOpen = ref(false);\n const { isReadOnly } = useFormLayoutFieldLoading(toRef(props, 'readonly'));\n\n watch(\n () => props.disabled,\n () => {\n // Close date picker popover if it's opened when it's disabled\n if (props.disabled && isDateRangePickerOpen.value) {\n isDateRangePickerOpen.value = false;\n }\n }\n );\n\n const shouldDisplayError = computed(() => {\n if (props.hasActions) {\n return !isApplyDisabled.value && isDateIncorrect.value;\n }\n\n return isDateIncorrect.value;\n });\n\n const descriptionConditionalClasses = computed(() => ({\n 'b-date-range-picker__description--error': !!props.errorMessage || shouldDisplayError.value,\n }));\n\n const isMonthVariant = computed(() => props.variant === 'month');\n\n const { dateDisplayValue, textInputDisplayValue, formatTextInputDisplayValue } = useDateRangePickerCalendarText({\n datePickerValue: toRef(props, 'value'),\n isDateIncorrect,\n quickSelectRanges: adjustedQuickSelectRanges,\n isMonthVariant,\n });\n\n const ariaDescribedBy = computed(\n () =>\n `${props.description ? descriptionId : ''} ${props.errorMessage ? errorId : ''} ${\n isDateIncorrect.value ? dateErrorId : ''\n }`.trim() || null\n );\n\n const withTimeInput = computed(() => props.allowTimeInput && props.variant !== 'month');\n\n const closeDateRangePicker = () => {\n isDateRangePickerOpen.value = false;\n };\n\n const openDateRangePicker = () => {\n isDateRangePickerOpen.value = true;\n formatTextInputDisplayValue();\n };\n\n /*\n * Used when `hasActions` is set to true\n */\n const localDateDisplayValue = ref(dateDisplayValue.value);\n const localTextInputDisplayValue = ref<DateRangePickerCalendarFormData>(\n // textInputDisplayValue is a reactive object\n structuredClone(toRaw(textInputDisplayValue))\n );\n const selectedDate = ref<BentoDateRangePickerValue>(props.value);\n const isApplyDisabled = ref(true);\n\n const displayedTextInputValue = computed(() =>\n props.hasActions ? localTextInputDisplayValue.value : textInputDisplayValue\n );\n\n const displayedDateValue = computed(() =>\n props.hasActions ? localDateDisplayValue.value : dateDisplayValue.value\n );\n\n onMounted(() => {\n if (!props.hasActions) {\n deprecate(\n 'BentoDateRangePicker \"hasActions\" property',\n `Set the BentoDateRangePicker \"hasActions\" property true which will display the \"Apply\" and \"Cancel\" buttons.\n This will be the default behavior in the v2 and \"hasActions\" will be removed.`,\n '2.0.0'\n );\n }\n\n if (\n props.granularities &&\n props.variant !== 'month' &&\n props.granularities.find(({ type }) => type === 'quarterly')\n ) {\n throw new Error('Quarterly granularity is only supported by BentoDateRangePicker with variant: \"month\"');\n }\n });\n\n // On update for the value we need to update all the locally stored data\n watch(\n () => props.value,\n () => {\n localDateDisplayValue.value = dateDisplayValue.value;\n localTextInputDisplayValue.value = structuredClone(toRaw(textInputDisplayValue));\n }\n );\n\n const rangePickerButtonActions = computed(() => [\n {\n title: t('apply'),\n event: () => {\n emit(BentoDateRangePickerEvent.INPUT, selectedDate.value);\n closeDateRangePicker();\n\n isApplyDisabled.value = true;\n },\n disabled: isApplyDisabled.value,\n },\n {\n title: t('cancel'),\n event: closeDateRangePicker,\n },\n ]);\n\n watch(selectedDate, date => {\n // skip emit until Apply button is clicked\n if (props.hasActions) {\n isApplyDisabled.value = isDateIncorrect.value;\n\n return;\n }\n\n emit(BentoDateRangePickerEvent.INPUT, date);\n });\n\n const onDateRangePickerInput = (selectedRange: BentoDateRangePickerValue) => {\n // Reset the errors when the date is correct\n isDateIncorrect.value = false;\n\n const formatDate = (date: Date, dateFormat: DateFormat) =>\n date\n ? format(date, dateFormat, {\n locale: locales[locale.value.substring(0, 2)] || locales.enUS,\n })\n : undefined;\n\n textInputDisplayValue.startDate = formatDate(selectedRange.startDate, DateFormat.NUMERIC_DATE_YEAR_FIRST);\n textInputDisplayValue.endDate = formatDate(selectedRange.endDate, DateFormat.NUMERIC_DATE_YEAR_FIRST);\n textInputDisplayValue.startTime = formatDate(selectedRange.startDate, DateFormat.HOUR_MINUTE_SECONDS);\n textInputDisplayValue.endTime = formatDate(selectedRange.endDate, DateFormat.HOUR_MINUTE_SECONDS);\n\n selectedDate.value = selectedRange;\n };\n\n const clearDateRangePickerValue = async () => {\n if (isDateIncorrect.value) {\n isDateIncorrect.value = false;\n }\n\n selectedDate.value = null;\n };\n\n const onEnterPressedOverInput = () => {\n // open the datepicker\n if (!isDateRangePickerOpen.value) {\n isDateRangePickerOpen.value = true;\n\n return;\n }\n\n // Close the date picker if the date is correct and it is open\n if (!isDateIncorrect.value) {\n isDateRangePickerOpen.value = false;\n }\n };\n\n const onDateRangePickerFormDateInputUpdate = (dateFormDate: DateRangePickerCalendarFormData) => {\n isDateIncorrect.value = false;\n\n if (dateFormDate.startTime) {\n textInputDisplayValue.startTime = dateFormDate.startTime;\n }\n\n if (dateFormDate.endTime) {\n textInputDisplayValue.endTime = dateFormDate.endTime;\n }\n };\n\n const onDateRangePickerError = dateTextInput => {\n isDateIncorrect.value = true;\n textInputDisplayValue.startDate = dateTextInput.startDate;\n textInputDisplayValue.endDate = dateTextInput.endDate;\n\n // Remove current date range selection\n selectedDate.value = { startDate: null, endDate: null };\n };\n\n const onRangeSelectorInput = (quickSelectRanges?: BentoDateRangePickerValue) => {\n if (quickSelectRanges) {\n const formatDateTime = (date: Date, dateFormat: DateFormat) =>\n date\n ? format(date, dateFormat, {\n locale: locales[locale.value.substring(0, 2)] || locales.enUS,\n })\n : undefined;\n\n const formatDate = (date: Date) =>\n format(date, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || locales.enUS,\n });\n textInputDisplayValue.startDate = formatDate(quickSelectRanges.startDate);\n textInputDisplayValue.endDate = formatDate(quickSelectRanges.endDate);\n textInputDisplayValue.startTime = formatDateTime(\n quickSelectRanges.startDate,\n DateFormat.HOUR_MINUTE_SECONDS\n );\n textInputDisplayValue.endTime = formatDateTime(quickSelectRanges.endDate, DateFormat.HOUR_MINUTE_SECONDS);\n\n selectedDate.value = quickSelectRanges;\n }\n };\n</script>\n\n<script lang=\"ts\">\n /**\n * Date range picker selector.\n *\n * @example\n * import { BentoDateRangePicker } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDateRangePicker },\n * template: `\n * <bento-date-range-picker\n * label=\"Label\"\n * description=\"Supporting text\"\n * required\n * optional\n * disabled\n * @input=\"onDateChanged\"\n * v-model=\"selectedDate\"\n * />\n * `,\n * setup() {\n * const selectedDate = ref(new Date()); // reactive({ startDate: new Date(), endDate: new Date() })\n * return {\n * selectedDate,\n * }\n * }\n * }\n */\n export default {\n i18n: { messages },\n name: 'bento-date-range-picker',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-picker.scss\" />\n"],"names":["addQuarters","dirtyDate","dirtyAmount","requiredArgs","amount","toInteger","months","addMonths","getQuarter","date","toDate","quarter","getYear","isEqual","dirtyLeftDate","dirtyRightDate","dateLeft","dateRight","isSameQuarter","dirtyDateLeft","dirtyDateRight","dateLeftStartOfQuarter","startOfQuarter","dateRightStartOfQuarter","startOfSecond","isSameSecond","dateLeftStartOfSecond","dateRightStartOfSecond","isToday","isSameDay","setHours","dirtyHours","hours","setMilliseconds","dirtyMilliseconds","milliseconds","setMinutes","dirtyMinutes","minutes","setSeconds","dirtySeconds","seconds","subQuarters","parseDateTextToStartOfDay","dateText","startOfDay","year","month","day","s","useGranularMinMaxDate","firstDayOfWeek","minimumDate","maximumDate","granularity","min","max","endOfDay","startOfMin","startOfWeek","addDays","endOfWeek","endOfMax","subDays","startOfMonth","endOfMonth","subMonths","endOfQuarter","useGranularityMemory","savedRanges","reactive","type","range","DateRangePickerCalendarEvent","DateRangePickerCalendarEvent2","validDigitRegex","hourRegex","minuteRegex","validateTimeInput","event","selectionStart","allowedKeys","isValidKey","isValidColon","formatTimeInputValue","value","formattedValue","secondToLastDigit","lastDigit","FORM_INPUT_DEBOUNCE_TIME","RANGE_SELECTOR_CUSTOM_RANGE_KEY","_sfc_main$1","defineComponent","messages$1","BentoDropdown","BentoInputField","BentoSegmentedControl","BentoTypography","Calendar","props","emit","slots","locale","t","useI18n","locales","getDateLocale","calculatedIsRelativeToNowQuickSelectRanges","ref","defaultGranularity","computed","internalRangeDate","_a","_b","_c","_d","deserializeDate","selectedRangeSelectorValue","data","newlyCalculatedQuickSelectDates","formInputWrapperConditionalClasses","quickSelectRangeDefaultItems","selectedGranularity","granularityItems","disabled","getGranularCalendarLimits","computedMinMax","adjustDateForQuarterly","adjustDateForMonthly","adjustDateForWeekly","adjustStartDateInputForWeekly","adjustEndDateInputForWeekly","adjustStartDateInputForMonthly","adjustEndDateInputForMonthly","adjustStartDateInputForQuarterly","adjustEndDateInputForQuarterly","useGranularityAdjustments","saveRange","resetSavedRanges","formatDate","dateToFormat","format","DateFormat","formatTime","startDateError","endDateError","startTimeError","endTimeError","dateTextInput","setTimeInDateObject","dateToSetTimeIn","time","dateWithTime","isValidTimeString","timeText","isValidTime","isTimeAllowed","isValidDate","dateToCheckWithTime","setTimeInDateRef","onDateInput","selectedRange","isDateEnabled","onMounted","onStartDateSelected","newStartDate","onEndDateSelected","newEndDate","getDate","keyName","dateProp","validateStartDate","debounce","startDateText","startDate","endDate","onStartDateInput","formatDateInputValue","validateEndDate","endDateText","onEndDateInput","onDateInputKeyDown","validateDateInput","validateStartTime","startTimeText","validateEndTime","endTimeText","onStartTimeInput","onEndTimeInput","onTimeInputKeyDown","setInternalRange","onRangeSelectorInput","newCustomRangeValue","foundResult","adjustDate","onGranularityInput","previousValue","toRaw","useHasSlot","useDateRangePickerCalendarText","datePickerValue","isDateIncorrect","quickSelectRanges","isMonthVariant","dateFormat","textInputDisplayValue","customRangeSelected","startDate2","endDate2","startQuarter","endQuarter","BentoDateRangePickerEvent","BentoDateRangePickerEvent2","__default__","messages","datePickerContainerId","generateUid","labelId","descriptionId","errorId","dateErrorId","popoverAriaLabel","adjustedQuickSelectRanges","timeDiff","inputContainerRef","isDateRangePickerOpen","isReadOnly","useFormLayoutFieldLoading","toRef","watch","shouldDisplayError","isApplyDisabled","descriptionConditionalClasses","dateDisplayValue","formatTextInputDisplayValue","ariaDescribedBy","withTimeInput","closeDateRangePicker","openDateRangePicker","localDateDisplayValue","localTextInputDisplayValue","selectedDate","displayedTextInputValue","displayedDateValue","deprecate","rangePickerButtonActions","dateFormDate","formatDateTime"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12]}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as o, computed as s } from "vue";
2
2
  import { u as t } from "./i18n.BQkEbtPM.js";
3
- import { B as c } from "./typography.J1v_SPG3.js";
3
+ import { B as c } from "./typography.w3m-EY4E.js";
4
4
  import { n as y } from "./_plugin-vue2_normalizer.CeySl7Fu.js";
5
5
  import "../assets/date.css";
6
6
  var i = /* @__PURE__ */ ((_) => (_.SHORT_MONTH = "LLL", _.DAY_OF_MONTH = "d", _.LONG_WEEKDAY = "EEEE", _.SHORT_TIME_WITH_PERIOD = "h:mm aa", _.SHORT_TIME_WITHOUT_PERIOD = "H:mm", _.EXACT_TIME_WITH_PERIOD = "h:mm:ss aa", _.EXACT_TIME_WITHOUT_PERIOD = "H:mm:ss", _.LONG_DATE = "LLLL dd, yyyy", _.SHORT_DATE = "LLL dd, yyyy", _.FULL_DATE_EXACT_TIME_WITH_PERIOD = "LLL dd, yyyy, h:mm:ss aa", _.FULL_DATE_EXACT_TIME_WITHOUT_PERIOD = "LLL dd, yyyy, H:mm:ss", _.FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_PERIOD = "LLL dd, yyyy, h:mm:ss aa O", _.FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD = "LLL dd, yyyy, H:mm:ss O", _.FULL_DATE_TIME_WITH_PERIOD = "LLL dd, yyyy, h:mm aa", _.FULL_DATE_TIME_WITH_TIMEZONE_AND_PERIOD = "LLL dd, yyyy, h:mm aa O", _.FULL_DATE_TIME_WITHOUT_PERIOD = "LLL dd, yyyy, H:mm", _.FULL_DATE_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD = "LLL dd, yyyy, H:mm O", _))(i || {});
@@ -157,4 +157,4 @@ export {
157
157
  f as B,
158
158
  i as a
159
159
  };
160
- //# sourceMappingURL=date.BfyWX2PY.js.map
160
+ //# sourceMappingURL=date.w2Ya6_lp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date.BfyWX2PY.js","sources":["../../src/components/date/date.types.ts","../../src/components/date/date.vue"],"sourcesContent":["export enum BentoDateFormat {\n // MONTH\n SHORT_MONTH = 'LLL', // Jun\n\n // DAY\n DAY_OF_MONTH = 'd', // 1, 2, ..., 31,\n LONG_WEEKDAY = 'EEEE', // Friday\n\n // TIME\n SHORT_TIME_WITH_PERIOD = `h:mm aa`, // 2:44 PM\n SHORT_TIME_WITHOUT_PERIOD = 'H:mm', // 14:45\n EXACT_TIME_WITH_PERIOD = 'h:mm:ss aa', // 2:05:11 PM\n EXACT_TIME_WITHOUT_PERIOD = 'H:mm:ss', // 14:05:11\n\n // DATE\n LONG_DATE = 'LLLL dd, yyyy', // June 30, 2023\n SHORT_DATE = 'LLL dd, yyyy', // Jun 30, 2023\n FULL_DATE_EXACT_TIME_WITH_PERIOD = `${SHORT_DATE}, h:mm:ss aa`, // June 30, 2023, 2:54:10 PM\n FULL_DATE_EXACT_TIME_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm:ss`, // June 30, 2023, 14:54:42\n FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_PERIOD = `${SHORT_DATE}, h:mm:ss aa O`, // June 30, 2023, 2:56:07 PM GMT+2\n FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm:ss O`, // June 30, 2023, 14:56:28 GMT+2\n FULL_DATE_TIME_WITH_PERIOD = `${SHORT_DATE}, h:mm aa`, // Jun 30, 2023, 2:48 PM\n FULL_DATE_TIME_WITH_TIMEZONE_AND_PERIOD = `${SHORT_DATE}, h:mm aa O`, // Jun 30, 2023, 2:44 PM GMT+2\n FULL_DATE_TIME_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm`, // Jun 30, 2023, 14:48\n FULL_DATE_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm O`, // Jun 30, 2023, 14:43 GMT+2\n}\n\nexport interface BentoDateProps {\n /**\n * The date to format. The data can be supplied as:\n * - a Date object.\n * - a number of milliseconds elapsed since the epoch.\n * - a date string e.g. '2023-07-31T10:55:22+02:00'.\n */\n date?: Date | number | string | null;\n /**\n * The string format of the date to be displayed\n */\n format?: BentoDateFormat | `${BentoDateFormat}`;\n /**\n * Disable the default typography for the component. Only use this when the component is inside another typography\n */\n disableTypography?: boolean;\n}\n","<template>\n <div class=\"b-date\">\n <bento-typography v-if=\"!disableTypography\" class=\"b-date__label\" el=\"span\" variant=\"body\" strong>\n {{ formattedDate }}\n </bento-typography>\n <template v-else>{{ formattedDate }}</template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue';\n import { BentoDateFormat, type BentoDateProps } from './date.types';\n import { useI18n } from '@/utils/ts/i18n';\n import { BentoTypography } from '@/components/typography';\n\n const props = defineProps({\n date: { default: null },\n format: { default: BentoDateFormat.FULL_DATE_EXACT_TIME_WITHOUT_PERIOD },\n disableTypography: { type: Boolean, default: false }\n});\n\n const { locale } = useI18n(undefined, true);\n\n /**\n * This is a reverse mapping of the BentoDateFormat enum.\n * It allows us to get the key of the enum by its value, which is then used to look up the\n * corresponding formatting options in `BentoDateFormatPresets`.\n */\n const bentoDateFormatKeyValuePairs = Object.entries(BentoDateFormat).reduce<\n Record<BentoDateFormat, keyof typeof BentoDateFormat>\n >(\n (acc, [key, value]) => {\n acc[value.toString()] = key;\n return acc;\n },\n {} as Record<BentoDateFormat, keyof typeof BentoDateFormat>\n );\n\n const formattedDate = computed(() => {\n // If null, return empty string\n if (!props.date) {\n return '';\n }\n const datePropAsDateObject = typeof props.date === 'string' ? new Date(props.date) : props.date;\n\n const formatKeyEntry = bentoDateFormatKeyValuePairs?.[props.format];\n\n let dateFormat: Intl.DateTimeFormatOptions | undefined = undefined;\n // Translate the key of the enum to the Intl.DateTimeFormatOptions configuration object\n if (formatKeyEntry && BentoDateFormatPresets?.[formatKeyEntry]) {\n dateFormat = BentoDateFormatPresets?.[formatKeyEntry];\n }\n return new Intl.DateTimeFormat(locale.value, dateFormat).format(datePropAsDateObject);\n });\n</script>\n\n<script lang=\"ts\">\n /**\n * The format presets to use when being supplied with a key name in BentoDateFormat.\n * They translate to configuration options that are used in the Intl.DateTimeFormat function\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options\n */\n const BentoDateFormatPresets: { [key in keyof typeof BentoDateFormat]: Intl.DateTimeFormatOptions } = {\n SHORT_MONTH: {\n month: 'short',\n },\n DAY_OF_MONTH: {\n day: 'numeric',\n },\n LONG_WEEKDAY: {\n weekday: 'long',\n },\n SHORT_TIME_WITH_PERIOD: {\n hour: 'numeric',\n minute: 'numeric',\n hour12: true,\n },\n SHORT_TIME_WITHOUT_PERIOD: {\n hour: 'numeric',\n minute: 'numeric',\n hour12: false,\n },\n EXACT_TIME_WITH_PERIOD: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n },\n EXACT_TIME_WITHOUT_PERIOD: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false,\n },\n LONG_DATE: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n },\n SHORT_DATE: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n },\n FULL_DATE_TIME_WITH_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: true,\n },\n FULL_DATE_TIME_WITHOUT_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: false,\n },\n FULL_DATE_EXACT_TIME_WITH_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n },\n FULL_DATE_EXACT_TIME_WITHOUT_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n },\n FULL_DATE_TIME_WITH_TIMEZONE_AND_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: true,\n timeZoneName: 'short',\n },\n FULL_DATE_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: false,\n timeZoneName: 'short',\n },\n FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n timeZoneName: 'short',\n },\n FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false,\n timeZoneName: 'short',\n },\n };\n\n /**\n * A Date component is used to display a formatted date value.\n *\n * @example\n * import { BentoDate } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDate },\n * template: `\n * <bento-date :date=\"dateObject\" :format=\"BentoDateFormat.LONG_DATE\"/>\n * `\n * }\n */\n export default {\n name: 'bento-date',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./date.scss\" />\n"],"names":["BentoDateFormat","BentoDateFormat2","BentoDateFormatPresets","__default__","locale","useI18n","bentoDateFormatKeyValuePairs","acc","key","value","formattedDate","computed","props","datePropAsDateObject","formatKeyEntry","dateFormat"],"mappings":"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"}
1
+ {"version":3,"file":"date.w2Ya6_lp.js","sources":["../../src/components/date/date.types.ts","../../src/components/date/date.vue"],"sourcesContent":["export enum BentoDateFormat {\n // MONTH\n SHORT_MONTH = 'LLL', // Jun\n\n // DAY\n DAY_OF_MONTH = 'd', // 1, 2, ..., 31,\n LONG_WEEKDAY = 'EEEE', // Friday\n\n // TIME\n SHORT_TIME_WITH_PERIOD = `h:mm aa`, // 2:44 PM\n SHORT_TIME_WITHOUT_PERIOD = 'H:mm', // 14:45\n EXACT_TIME_WITH_PERIOD = 'h:mm:ss aa', // 2:05:11 PM\n EXACT_TIME_WITHOUT_PERIOD = 'H:mm:ss', // 14:05:11\n\n // DATE\n LONG_DATE = 'LLLL dd, yyyy', // June 30, 2023\n SHORT_DATE = 'LLL dd, yyyy', // Jun 30, 2023\n FULL_DATE_EXACT_TIME_WITH_PERIOD = `${SHORT_DATE}, h:mm:ss aa`, // June 30, 2023, 2:54:10 PM\n FULL_DATE_EXACT_TIME_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm:ss`, // June 30, 2023, 14:54:42\n FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_PERIOD = `${SHORT_DATE}, h:mm:ss aa O`, // June 30, 2023, 2:56:07 PM GMT+2\n FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm:ss O`, // June 30, 2023, 14:56:28 GMT+2\n FULL_DATE_TIME_WITH_PERIOD = `${SHORT_DATE}, h:mm aa`, // Jun 30, 2023, 2:48 PM\n FULL_DATE_TIME_WITH_TIMEZONE_AND_PERIOD = `${SHORT_DATE}, h:mm aa O`, // Jun 30, 2023, 2:44 PM GMT+2\n FULL_DATE_TIME_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm`, // Jun 30, 2023, 14:48\n FULL_DATE_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD = `${SHORT_DATE}, H:mm O`, // Jun 30, 2023, 14:43 GMT+2\n}\n\nexport interface BentoDateProps {\n /**\n * The date to format. The data can be supplied as:\n * - a Date object.\n * - a number of milliseconds elapsed since the epoch.\n * - a date string e.g. '2023-07-31T10:55:22+02:00'.\n */\n date?: Date | number | string | null;\n /**\n * The string format of the date to be displayed\n */\n format?: BentoDateFormat | `${BentoDateFormat}`;\n /**\n * Disable the default typography for the component. Only use this when the component is inside another typography\n */\n disableTypography?: boolean;\n}\n","<template>\n <div class=\"b-date\">\n <bento-typography v-if=\"!disableTypography\" class=\"b-date__label\" el=\"span\" variant=\"body\" strong>\n {{ formattedDate }}\n </bento-typography>\n <template v-else>{{ formattedDate }}</template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue';\n import { BentoDateFormat, type BentoDateProps } from './date.types';\n import { useI18n } from '@/utils/ts/i18n';\n import { BentoTypography } from '@/components/typography';\n\n const props = defineProps({\n date: { default: null },\n format: { default: BentoDateFormat.FULL_DATE_EXACT_TIME_WITHOUT_PERIOD },\n disableTypography: { type: Boolean, default: false }\n});\n\n const { locale } = useI18n(undefined, true);\n\n /**\n * This is a reverse mapping of the BentoDateFormat enum.\n * It allows us to get the key of the enum by its value, which is then used to look up the\n * corresponding formatting options in `BentoDateFormatPresets`.\n */\n const bentoDateFormatKeyValuePairs = Object.entries(BentoDateFormat).reduce<\n Record<BentoDateFormat, keyof typeof BentoDateFormat>\n >(\n (acc, [key, value]) => {\n acc[value.toString()] = key;\n return acc;\n },\n {} as Record<BentoDateFormat, keyof typeof BentoDateFormat>\n );\n\n const formattedDate = computed(() => {\n // If null, return empty string\n if (!props.date) {\n return '';\n }\n const datePropAsDateObject = typeof props.date === 'string' ? new Date(props.date) : props.date;\n\n const formatKeyEntry = bentoDateFormatKeyValuePairs?.[props.format];\n\n let dateFormat: Intl.DateTimeFormatOptions | undefined = undefined;\n // Translate the key of the enum to the Intl.DateTimeFormatOptions configuration object\n if (formatKeyEntry && BentoDateFormatPresets?.[formatKeyEntry]) {\n dateFormat = BentoDateFormatPresets?.[formatKeyEntry];\n }\n return new Intl.DateTimeFormat(locale.value, dateFormat).format(datePropAsDateObject);\n });\n</script>\n\n<script lang=\"ts\">\n /**\n * The format presets to use when being supplied with a key name in BentoDateFormat.\n * They translate to configuration options that are used in the Intl.DateTimeFormat function\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options\n */\n const BentoDateFormatPresets: { [key in keyof typeof BentoDateFormat]: Intl.DateTimeFormatOptions } = {\n SHORT_MONTH: {\n month: 'short',\n },\n DAY_OF_MONTH: {\n day: 'numeric',\n },\n LONG_WEEKDAY: {\n weekday: 'long',\n },\n SHORT_TIME_WITH_PERIOD: {\n hour: 'numeric',\n minute: 'numeric',\n hour12: true,\n },\n SHORT_TIME_WITHOUT_PERIOD: {\n hour: 'numeric',\n minute: 'numeric',\n hour12: false,\n },\n EXACT_TIME_WITH_PERIOD: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n },\n EXACT_TIME_WITHOUT_PERIOD: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false,\n },\n LONG_DATE: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n },\n SHORT_DATE: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n },\n FULL_DATE_TIME_WITH_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: true,\n },\n FULL_DATE_TIME_WITHOUT_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: false,\n },\n FULL_DATE_EXACT_TIME_WITH_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n },\n FULL_DATE_EXACT_TIME_WITHOUT_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n },\n FULL_DATE_TIME_WITH_TIMEZONE_AND_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: true,\n timeZoneName: 'short',\n },\n FULL_DATE_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: false,\n timeZoneName: 'short',\n },\n FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n timeZoneName: 'short',\n },\n FULL_DATE_EXACT_TIME_WITH_TIMEZONE_AND_WITHOUT_PERIOD: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false,\n timeZoneName: 'short',\n },\n };\n\n /**\n * A Date component is used to display a formatted date value.\n *\n * @example\n * import { BentoDate } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDate },\n * template: `\n * <bento-date :date=\"dateObject\" :format=\"BentoDateFormat.LONG_DATE\"/>\n * `\n * }\n */\n export default {\n name: 'bento-date',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./date.scss\" />\n"],"names":["BentoDateFormat","BentoDateFormat2","BentoDateFormatPresets","__default__","locale","useI18n","bentoDateFormatKeyValuePairs","acc","key","value","formattedDate","computed","props","datePropAsDateObject","formatKeyEntry","dateFormat"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { defineComponent as U, useSlots as F, ref as A, computed as n, inject as T, watch as m, nextTick as h, onUnmounted as H } from "vue";
2
- import { B as J } from "./button.hF-nD1Og.js";
2
+ import { B as J } from "./button.B0hSQWOR.js";
3
3
  /* empty css */
4
4
  import { n as N } from "./_plugin-vue2_normalizer.CeySl7Fu.js";
5
5
  import { u as K } from "./use-has-slot.C9lQZ6nz.js";
6
6
  import { u as Y } from "./i18n.BQkEbtPM.js";
7
- import { i as z } from "./typography.J1v_SPG3.js";
7
+ import { i as z } from "./typography.w3m-EY4E.js";
8
8
  import { d as M } from "./index.BdrLbvtJ.js";
9
9
  import "../assets/dialog-page.css";
10
10
  let B = 0;
@@ -66,7 +66,7 @@ const ee = Symbol("dialog registerPage injection key"), te = Symbol("dialog page
66
66
  },
67
67
  emits: ["animationend"],
68
68
  setup(i, { emit: e }) {
69
- const t = i, a = F(), S = K(a), { t: O } = Y(), r = A(null), v = A(!1), { arrivedState: u } = M(r), _ = n(() => s.value ? s.value === t.pageId : !0), R = n(() => ({
69
+ const t = i, a = F(), b = K(a), { t: O } = Y(), r = A(null), v = A(!1), { arrivedState: u } = M(r), _ = n(() => s.value ? s.value === t.pageId : !0), R = n(() => ({
70
70
  "b-dialog-page__header--with-border": t.alwaysShowBorder || v.value && !u.top
71
71
  })), k = n(() => ({
72
72
  "b-dialog-page__footer--with-border": t.alwaysShowBorder || v.value && !u.bottom
@@ -74,13 +74,13 @@ const ee = Symbol("dialog registerPage injection key"), te = Symbol("dialog page
74
74
  r.value;
75
75
  }, d = async (l) => {
76
76
  l && (await h(), v.value = r.value && r.value.scrollHeight > r.value.clientHeight);
77
- }, { activePage: s, animation: g, isAnimationActive: c, isOpen: p, pages: b, previousPages: o, updatePage: E } = T(te);
77
+ }, { activePage: s, animation: g, isAnimationActive: c, isOpen: p, pages: S, previousPages: o, updatePage: E } = T(te);
78
78
  m(() => p.value, d, { immediate: !0 }), m(() => _.value, d, { immediate: !0 });
79
79
  const G = n(() => t.previousPage ? !0 : t.previousPage === null ? !1 : w.value && _.value), D = () => {
80
80
  g.value = P.TRANSITION_LEVEL_DEEPER, c && (c.value = !1), e("animationend");
81
81
  }, V = () => {
82
82
  c && (c.value = !0);
83
- }, w = n(() => o.value.length > 1), f = n(() => o.value[o.value.length - 1]), I = n(() => b.value.some((l) => l === s.value)), j = async (l) => {
83
+ }, w = n(() => o.value.length > 1), f = n(() => o.value[o.value.length - 1]), I = n(() => S.value.some((l) => l === s.value)), j = async (l) => {
84
84
  if (l) {
85
85
  const C = o.value.indexOf(l);
86
86
  C !== -1 ? o.value = o.value.slice(0, C + 1) : o.value = [l];
@@ -104,12 +104,12 @@ const ee = Symbol("dialog registerPage injection key"), te = Symbol("dialog page
104
104
  { immediate: !0 }
105
105
  );
106
106
  const L = T(ee), { unregisterPage: y } = L(t.pageId);
107
- return H(() => y()), { __sfc: !0, props: t, emit: e, slots: a, hasSlot: S, t: O, contentElement: r, hasScroll: v, arrivedState: u, showPage: _, headerConditionalClasses: R, footerConditionalClasses: k, isScrollable: x, onScroll: $, calculateScroll: d, activePage: s, animation: g, isAnimationActive: c, isOpen: p, pages: b, previousPages: o, updatePage: E, showBackButton: G, updateAnimation: D, startAnimation: V, hasPreviousPages: w, lastPage: f, isActivePageValid: I, goToPreviousPage: j, registerPage: L, unregisterPage: y, BentoButton: J, ArrowLeftIcon: X };
107
+ return H(() => y()), { __sfc: !0, props: t, emit: e, slots: a, hasSlot: b, t: O, contentElement: r, hasScroll: v, arrivedState: u, showPage: _, headerConditionalClasses: R, footerConditionalClasses: k, isScrollable: x, onScroll: $, calculateScroll: d, activePage: s, animation: g, isAnimationActive: c, isOpen: p, pages: S, previousPages: o, updatePage: E, showBackButton: G, updateAnimation: D, startAnimation: V, hasPreviousPages: w, lastPage: f, isActivePageValid: I, goToPreviousPage: j, registerPage: L, unregisterPage: y, BentoButton: J, ArrowLeftIcon: X };
108
108
  }
109
109
  });
110
110
  var ne = function() {
111
111
  var e = this, t = e._self._c, a = e._self._setupProxy;
112
- return t("Transition", { attrs: { name: a.animation, mode: "out-in" }, on: { "after-leave": a.updateAnimation, leave: a.startAnimation } }, [a.isOpen && a.showPage ? t("div", { staticClass: "b-dialog-page" }, [a.hasSlot("header") ? t("div", { staticClass: "b-dialog-page__header", class: a.headerConditionalClasses }, [a.showBackButton ? t("div", { staticClass: "b-dialog-page__back-button", style: e.backButtonStyling, attrs: { "data-testid": "back-button" } }, [t(a.BentoButton, { attrs: { variant: "tertiary" }, on: { click: function(S) {
112
+ return t("Transition", { attrs: { name: a.animation, mode: "out-in" }, on: { "after-leave": a.updateAnimation, leave: a.startAnimation } }, [a.isOpen && a.showPage ? t("div", { staticClass: "b-dialog-page" }, [a.hasSlot("header") ? t("div", { staticClass: "b-dialog-page__header", class: a.headerConditionalClasses }, [a.showBackButton ? t("div", { staticClass: "b-dialog-page__back-button", style: e.backButtonStyling, attrs: { "data-testid": "back-button" } }, [t(a.BentoButton, { attrs: { variant: "tertiary" }, on: { click: function(b) {
113
113
  return a.goToPreviousPage(e.previousPage);
114
114
  } } }, [t(a.ArrowLeftIcon, { attrs: { "svg-title": a.t("goToPreviousPage") } })], 1)], 1) : e._e(), e._t("header")], 2) : e._e(), a.hasSlot("content") ? t("div", { ref: "contentElement", staticClass: "b-dialog-page__content", attrs: { tabindex: a.isScrollable ? 0 : null }, on: { scroll: a.onScroll } }, [e._t("content")], 2) : e._e(), a.hasSlot("footer") ? t("div", { staticClass: "b-dialog-page__footer", class: a.footerConditionalClasses }, [e._t("footer")], 2) : e._e()]) : e._e()]);
115
115
  }, ie = [], le = /* @__PURE__ */ N(
@@ -118,7 +118,7 @@ var ne = function() {
118
118
  ie,
119
119
  !1,
120
120
  null,
121
- "157677a7"
121
+ "8bfb8442"
122
122
  );
123
123
  const fe = le.exports;
124
124
  export {
@@ -128,4 +128,4 @@ export {
128
128
  ee as a,
129
129
  te as b
130
130
  };
131
- //# sourceMappingURL=dialog-page.CLHZqQeU.js.map
131
+ //# sourceMappingURL=dialog-page.CdJloGXQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-page.CdJloGXQ.js","sources":["../../../ui-assets/icons-16/dist/vue/arrow-left.vue","../../src/components/internal/dialog-page/dialog-page.types.ts","../../src/components/internal/dialog-page/dialog-page.keys.ts","../../src/components/internal/dialog-page/dialog-page.vue"],"sourcesContent":["\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#001222\" d=\"M3.80655 7.25434L8.06077 3.00011L7.00011 1.93945L0.939453 8.00011L7.00011 14.0608L8.06077 13.0001L3.81499 8.75433L14.7508 8.74316L14.7492 7.24316L3.80655 7.25434Z\"/></svg>\n</template>\n<script>\n import '../css/main.css';\n\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n","import { type Ref } from 'vue';\n\nexport enum BentoDialogPageAnimation {\n TRANSITION_LEVEL_DEEPER = 'b-dialog-page__animation--level-deeper',\n TRANSITION_LEVEL_UPPER = 'b-dialog-page__animation--level-upper',\n}\n\nexport interface BentoDialogPageConfigData {\n activePage: Ref<string>;\n animation: Ref<string>;\n isAnimationActive?: Ref<boolean>;\n isOpen: Ref<boolean>;\n pages: Ref<string[]>;\n previousPages: Ref<string[]>;\n updatePage: (page: string) => void;\n}\n\nexport type BentoDialogPageRegisterPage = (pageId: string) => { unregisterPage: () => void };\n","export const DIALOG_PAGE_REGISTER_PAGE_INJECTION_KEY = Symbol('dialog registerPage injection key');\nexport const DIALOG_PAGE_CONFIG_INJECTION_KEY = Symbol('dialog page config data injection key');\n","<template>\n <Transition :name=\"animation\" mode=\"out-in\" @after-leave=\"updateAnimation\" @leave=\"startAnimation\">\n <div v-if=\"isOpen && showPage\" class=\"b-dialog-page\">\n <div v-if=\"hasSlot('header')\" class=\"b-dialog-page__header\" :class=\"headerConditionalClasses\">\n <div\n v-if=\"showBackButton\"\n class=\"b-dialog-page__back-button\"\n :style=\"backButtonStyling\"\n data-testid=\"back-button\"\n >\n <bento-button variant=\"tertiary\" @click=\"goToPreviousPage(previousPage)\">\n <arrow-left-icon :svg-title=\"t('goToPreviousPage')\" />\n </bento-button>\n </div>\n <slot name=\"header\"></slot>\n </div>\n <div\n v-if=\"hasSlot('content')\"\n ref=\"contentElement\"\n class=\"b-dialog-page__content\"\n :tabindex=\"isScrollable ? 0 : null\"\n @scroll=\"onScroll\"\n >\n <slot name=\"content\" />\n </div>\n <div v-if=\"hasSlot('footer')\" class=\"b-dialog-page__footer\" :class=\"footerConditionalClasses\">\n <slot name=\"footer\" />\n </div>\n </div>\n </Transition>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, inject, nextTick, onUnmounted, type PropType, ref, useSlots, watch } from 'vue';\n\n import { BentoButton } from '@/components/button';\n import ArrowLeftIcon from '@adyen/ui-assets-icons-16/vue/arrow-left';\n\n import { useHasSlot } from '@/composables/use-has-slot/use-has-slot';\n import { useI18n } from '@/utils/ts/i18n';\n import { isDevelopmentEnviroment } from '@/utils/ts/dev-environment';\n\n import {\n BentoDialogPageAnimation,\n type BentoDialogPageConfigData,\n type BentoDialogPageRegisterPage,\n } from './dialog-page.types';\n import type { CSSProperties } from 'vue/types/jsx.d.ts';\n\n import { DIALOG_PAGE_CONFIG_INJECTION_KEY, DIALOG_PAGE_REGISTER_PAGE_INJECTION_KEY } from './dialog-page.keys';\n\n import messages from './messages.json';\n import { useScroll } from '@vueuse/core';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const props = defineProps({\n /**\n * Identifier of the page, used with activePage prop to handle navigation\n */\n pageId: {\n type: String,\n default: undefined,\n },\n\n /**\n * Show header and actions border\n */\n alwaysShowBorder: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Pass custom styling to the back button to position it correctly with the header slot\n */\n backButtonStyling: { type: Object as PropType<CSSProperties>, default: null },\n\n /**\n * ID of the page for the back button to navigate to. Only use it to overwrite the default back behavior\n * Used when the back button should not take the user to the natural previous page\n * Set to `null` to hide back button in the page\n */\n previousPage: {\n type: String,\n default: undefined,\n },\n });\n\n const emit = defineEmits([\"animationend\"]);\n\n const slots = useSlots();\n const hasSlot = useHasSlot(slots);\n const { t } = useI18n<{ message: MessageSchema }>({ messages });\n\n // Refs\n const contentElement = ref<HTMLDivElement>(null);\n const hasScroll = ref(false);\n\n const { arrivedState } = useScroll(contentElement);\n\n // Logic to choose which page is active/shown\n const showPage = computed(() => (activePage.value ? activePage.value === props.pageId : true));\n\n // Scrolling styling logic\n const headerConditionalClasses = computed(() => ({\n 'b-dialog-page__header--with-border': props.alwaysShowBorder || (hasScroll.value && !arrivedState.top),\n }));\n\n const footerConditionalClasses = computed(() => ({\n 'b-dialog-page__footer--with-border': props.alwaysShowBorder || (hasScroll.value && !arrivedState.bottom),\n }));\n\n const isScrollable = computed(() => !(arrivedState.bottom && arrivedState.top));\n\n const onScroll = () => {\n if (!contentElement.value) {\n return;\n }\n };\n\n const calculateScroll = async watchedValue => {\n if (!watchedValue) {\n return;\n }\n // Wait for content to be rendered to be able to calculate the height\n await nextTick();\n hasScroll.value = contentElement.value && contentElement.value.scrollHeight > contentElement.value.clientHeight;\n };\n\n const { activePage, animation, isAnimationActive, isOpen, pages, previousPages, updatePage } =\n inject<BentoDialogPageConfigData>(DIALOG_PAGE_CONFIG_INJECTION_KEY);\n\n watch(() => isOpen.value, calculateScroll, { immediate: true });\n watch(() => showPage.value, calculateScroll, { immediate: true });\n\n // Logic to determine whether the back button should be shown on the page\n const showBackButton = computed(() => {\n if (props.previousPage) {\n return true;\n }\n if (props.previousPage === null) {\n return false;\n }\n return hasPreviousPages.value && showPage.value;\n });\n\n // Animation\n const updateAnimation = () => {\n animation.value = BentoDialogPageAnimation.TRANSITION_LEVEL_DEEPER;\n if (isAnimationActive) {\n isAnimationActive.value = false;\n }\n\n emit('animationend');\n };\n\n const startAnimation = () => {\n if (isAnimationActive) {\n isAnimationActive.value = true;\n }\n };\n\n // Previous page logic\n const hasPreviousPages = computed(() => previousPages.value.length > 1);\n const lastPage = computed(() => previousPages.value[previousPages.value.length - 1]);\n const isActivePageValid = computed(() => pages.value.some(page => page === activePage.value));\n\n const goToPreviousPage = async (page: string) => {\n if (page) {\n const index = previousPages.value.indexOf(page);\n if (index !== -1) {\n previousPages.value = previousPages.value.slice(0, index + 1);\n } else {\n previousPages.value = [page];\n }\n } else {\n previousPages.value.pop();\n }\n\n animation.value = BentoDialogPageAnimation.TRANSITION_LEVEL_UPPER;\n await nextTick();\n updatePage(lastPage.value);\n };\n\n // Add new page to the previousPage array to keep track of user navigation\n watch(\n () => activePage.value,\n async () => {\n await nextTick();\n if (!isOpen.value) {\n return;\n }\n\n if (!!activePage.value && !isActivePageValid.value) {\n if (isDevelopmentEnviroment) {\n // eslint-disable-next-line no-console\n console.error(\n `The activePage passed \"${activePage.value}\" does not match the id of any of the pages`\n );\n return;\n }\n }\n\n if (activePage.value !== lastPage.value) {\n previousPages.value.push(activePage.value);\n }\n },\n { immediate: true }\n );\n\n // Register page to parent component and inject data from parent component\n const registerPage = inject<BentoDialogPageRegisterPage>(DIALOG_PAGE_REGISTER_PAGE_INJECTION_KEY);\n const { unregisterPage } = registerPage(props.pageId);\n\n // Unregister page on unmounting the page\n onUnmounted(() => unregisterPage());\n</script>\n\n<script lang=\"ts\">\n /**\n * DialogPage is an internal component used to render different pages of dialog components (Modal, ModalFullscreen and Sidepanel)\n *\n * @example\n * import { DialogPage } from '@/internal';\n *\n * export default {\n * components: { DialogPage },\n * template: `\n * <dialog-page pageId='step1' always-show-border>\n * <template #header>Header</template>\n * <template #content>Content</template>\n * <template #footer>Footer</template>\n * </dialog-page>\n * `\n * }\n */\n export default {\n i18n: { messages },\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./dialog-page.scss\" />\n"],"names":["uuid","_sfc_main$1","BentoDialogPageAnimation","BentoDialogPageAnimation2","DIALOG_PAGE_REGISTER_PAGE_INJECTION_KEY","DIALOG_PAGE_CONFIG_INJECTION_KEY","__default__","messages","slots","useSlots","hasSlot","useHasSlot","t","useI18n","contentElement","ref","hasScroll","arrivedState","useScroll","showPage","computed","activePage","props","headerConditionalClasses","footerConditionalClasses","isScrollable","onScroll","calculateScroll","watchedValue","nextTick","animation","isAnimationActive","isOpen","pages","previousPages","updatePage","inject","watch","showBackButton","hasPreviousPages","updateAnimation","emit","startAnimation","lastPage","isActivePageValid","page","goToPreviousPage","index","isDevelopmentEnviroment","registerPage","unregisterPage","onUnmounted"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { defineComponent as o, inject as l, ref as _, computed as a } from "vue";
2
- import { n as c } from "./_plugin-vue2_normalizer.CeySl7Fu.js";
1
+ import { defineComponent as o, inject as c, ref as l, computed as a } from "vue";
2
+ import { n as _ } from "./_plugin-vue2_normalizer.CeySl7Fu.js";
3
3
  import "../assets/divider.css";
4
4
  const d = Symbol("divider inverse style injection key");
5
5
  var i = /* @__PURE__ */ ((e) => (e.HORIZONTAL = "horizontal", e.VERTICAL = "vertical", e))(i || {});
@@ -10,7 +10,7 @@ const v = {}, p = /* @__PURE__ */ o({
10
10
  variant: { default: i.HORIZONTAL }
11
11
  },
12
12
  setup(e) {
13
- const s = e, r = l(d, _(!1)), t = a(() => s.variant === i.VERTICAL), n = a(() => ({
13
+ const s = e, r = c(d, l(!1)), t = a(() => s.variant === i.VERTICAL), n = a(() => ({
14
14
  "b-divider--inverse": r.value
15
15
  }));
16
16
  return { __sfc: !0, props: s, isInverseColorSet: r, isVerticalVariant: t, conditionalClasses: n };
@@ -19,17 +19,17 @@ const v = {}, p = /* @__PURE__ */ o({
19
19
  var u = function() {
20
20
  var s = this, r = s._self._c, t = s._self._setupProxy;
21
21
  return r("div", { staticClass: "b-divider" }, [t.isVerticalVariant ? r("div", { staticClass: "b-divider__rule b-divider__rule--vertical", class: t.conditionalClasses, attrs: { role: "separator", "aria-orientation": "vertical" } }) : r("hr", { staticClass: "b-divider__rule b-divider__rule--horizontal", class: t.conditionalClasses })]);
22
- }, f = [], m = /* @__PURE__ */ c(
22
+ }, f = [], m = /* @__PURE__ */ _(
23
23
  p,
24
24
  u,
25
25
  f,
26
26
  !1,
27
27
  null,
28
- "3b663a0b"
28
+ "f41ccc55"
29
29
  );
30
30
  const b = m.exports;
31
31
  export {
32
32
  b as B,
33
33
  d as D
34
34
  };
35
- //# sourceMappingURL=divider.Cc4JFWG_.js.map
35
+ //# sourceMappingURL=divider.CFbtmKeQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divider.CFbtmKeQ.js","sources":["../../src/components/divider/divider.keys.ts","../../src/components/divider/divider.types.ts","../../src/components/divider/divider.vue"],"sourcesContent":["export const DIVIDER_INVERSE_INJECTION_KEY = Symbol('divider inverse style injection key');\n","/**\n * Private types\n */\nexport enum BentoDividerVariant {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\n/**\n * Public types\n */\nexport interface BentoDividerProps {\n /**\n * Renders the divider in a horizontal or vertical variant\n */\n variant?: `${BentoDividerVariant}`;\n}\n","<template>\n <div class=\"b-divider\">\n <div\n v-if=\"isVerticalVariant\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n class=\"b-divider__rule b-divider__rule--vertical\"\n :class=\"conditionalClasses\"\n ></div>\n <hr v-else class=\"b-divider__rule b-divider__rule--horizontal\" :class=\"conditionalClasses\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, inject, ref } from 'vue';\n import { DIVIDER_INVERSE_INJECTION_KEY } from './divider.keys';\n import { type BentoDividerProps, BentoDividerVariant } from './divider.types';\n\n const props = defineProps({\n variant: { default: BentoDividerVariant.HORIZONTAL }\n});\n\n const isInverseColorSet = inject(DIVIDER_INVERSE_INJECTION_KEY, ref(false));\n\n const isVerticalVariant = computed(() => props.variant === BentoDividerVariant.VERTICAL);\n\n const conditionalClasses = computed(() => ({\n 'b-divider--inverse': isInverseColorSet.value,\n }));\n</script>\n\n<script lang=\"ts\">\n /**\n * Divider component is a thin line that helps separate content and group them visually into sections.\n *\n * @example\n * import { BentoDivider } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDivider },\n * template: `<bento-divider />`\n * }\n */\n\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./divider.scss\" />\n"],"names":["DIVIDER_INVERSE_INJECTION_KEY","BentoDividerVariant","BentoDividerVariant2","__default__","isInverseColorSet","inject","ref","isVerticalVariant","computed","props","conditionalClasses"],"mappings":";;;AAAa,MAAAA,IAAA,OAAA,qCAAA;ACGD,IAAAC,IAAA,kBAAAC,OACRA,EAAA,aAAA,cACAA,EAAA,WAAA,YAFQA,IAAAD,KAAA,CAAA,CAAA;ACyCR,MAAAE,IAAA,CAAA;;;;;;;iBAtBAC,IAAAC,EAAAL,GAAAM,EAAA,EAAA,CAAA,GAEAC,IAAAC,EAAA,MAAAC,EAAA,YAAAR,EAAA,QAAA,GAEAS,IAAAF,EAAA,OAAA;AAAA,MAA2C,sBAAAJ,EAAA;AAAA,IACC,EAAA;;;;;;;;;;;;;;;;"}