@adyen/bento-vue2 1.24.0 → 1.26.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 (190) hide show
  1. package/dist/@types/index.d.ts +484 -629
  2. package/dist/accordion.js +2 -2
  3. package/dist/action-bar.js +6 -6
  4. package/dist/alert.js +69 -104
  5. package/dist/alert.js.map +1 -1
  6. package/dist/assets/base-modal.css +1 -1
  7. package/dist/assets/dialog-page.css +1 -1
  8. package/dist/assets/dropdown.css +1 -1
  9. package/dist/assets/index10.css +1 -1
  10. package/dist/assets/index11.css +1 -1
  11. package/dist/assets/index12.css +1 -1
  12. package/dist/assets/index13.css +1 -1
  13. package/dist/assets/index14.css +1 -1
  14. package/dist/assets/index15.css +1 -1
  15. package/dist/assets/index16.css +1 -1
  16. package/dist/assets/index17.css +1 -1
  17. package/dist/assets/index18.css +1 -1
  18. package/dist/assets/index19.css +1 -1
  19. package/dist/assets/index2.css +1 -1
  20. package/dist/assets/index20.css +1 -1
  21. package/dist/assets/index21.css +1 -1
  22. package/dist/assets/index22.css +1 -1
  23. package/dist/assets/index23.css +1 -1
  24. package/dist/assets/index24.css +1 -1
  25. package/dist/assets/index25.css +1 -1
  26. package/dist/assets/index26.css +1 -1
  27. package/dist/assets/index27.css +1 -1
  28. package/dist/assets/index28.css +1 -1
  29. package/dist/assets/index29.css +1 -1
  30. package/dist/assets/index3.css +1 -1
  31. package/dist/assets/index30.css +1 -1
  32. package/dist/assets/index31.css +1 -1
  33. package/dist/assets/index32.css +1 -1
  34. package/dist/assets/index33.css +1 -1
  35. package/dist/assets/index34.css +1 -1
  36. package/dist/assets/index35.css +1 -1
  37. package/dist/assets/index36.css +1 -1
  38. package/dist/assets/index37.css +1 -1
  39. package/dist/assets/index38.css +1 -1
  40. package/dist/assets/index39.css +1 -1
  41. package/dist/assets/index4.css +1 -1
  42. package/dist/assets/index40.css +1 -1
  43. package/dist/assets/index41.css +1 -1
  44. package/dist/assets/index42.css +1 -1
  45. package/dist/assets/index43.css +1 -1
  46. package/dist/assets/index44.css +1 -1
  47. package/dist/assets/index45.css +1 -1
  48. package/dist/assets/index47.css +1 -1
  49. package/dist/assets/index48.css +1 -1
  50. package/dist/assets/index5.css +1 -1
  51. package/dist/assets/index6.css +1 -1
  52. package/dist/assets/index7.css +1 -1
  53. package/dist/assets/index8.css +1 -1
  54. package/dist/assets/index9.css +1 -1
  55. package/dist/assets/{listbox.css → use-cached-selected-values.css} +1 -1
  56. package/dist/avatar-image.js +1 -1
  57. package/dist/button.js +5 -5
  58. package/dist/card.js +83 -180
  59. package/dist/card.js.map +1 -1
  60. package/dist/checkbox.js +5 -5
  61. package/dist/chunks/{base-button.090f511d.js → base-button.ad74b6f8.js} +2 -2
  62. package/dist/chunks/{base-button.090f511d.js.map → base-button.ad74b6f8.js.map} +1 -1
  63. package/dist/chunks/{base-modal.aa09a60c.js → base-modal.1fff7abe.js} +6 -6
  64. package/dist/chunks/{base-modal.aa09a60c.js.map → base-modal.1fff7abe.js.map} +1 -1
  65. package/dist/chunks/{button-actions-with-menu.879c4573.js → button-actions-with-menu.e845d77a.js} +4 -4
  66. package/dist/chunks/{button-actions-with-menu.879c4573.js.map → button-actions-with-menu.e845d77a.js.map} +1 -1
  67. package/dist/chunks/{button-actions.239456cb.js → button-actions.81db18e8.js} +3 -3
  68. package/dist/chunks/{button-actions.239456cb.js.map → button-actions.81db18e8.js.map} +1 -1
  69. package/dist/chunks/{button.6e6324f0.js → button.9d6435ae.js} +3 -3
  70. package/dist/chunks/{button.6e6324f0.js.map → button.9d6435ae.js.map} +1 -1
  71. package/dist/chunks/{calendar.1e416969.js → calendar.640b8d25.js} +4 -4
  72. package/dist/chunks/{calendar.1e416969.js.map → calendar.640b8d25.js.map} +1 -1
  73. package/dist/chunks/{checkbox.f38276e6.js → checkbox.bfed007c.js} +3 -3
  74. package/dist/chunks/{checkbox.f38276e6.js.map → checkbox.bfed007c.js.map} +1 -1
  75. package/dist/chunks/{controls-group.f1dfa419.js → controls-group.4fb50009.js} +3 -3
  76. package/dist/chunks/{controls-group.f1dfa419.js.map → controls-group.4fb50009.js.map} +1 -1
  77. package/dist/chunks/{copy.acc9f1b0.js → copy.f85700c6.js} +4 -4
  78. package/dist/chunks/{copy.acc9f1b0.js.map → copy.f85700c6.js.map} +1 -1
  79. package/dist/chunks/dialog-page.73da22cf.js +133 -0
  80. package/dist/chunks/dialog-page.73da22cf.js.map +1 -0
  81. package/dist/chunks/{dropdown-default-textbox.c1f8fe5f.js → dropdown-default-textbox.54ca1b18.js} +2 -2
  82. package/dist/chunks/{dropdown-default-textbox.c1f8fe5f.js.map → dropdown-default-textbox.54ca1b18.js.map} +1 -1
  83. package/dist/chunks/dropdown.10c034aa.js +775 -0
  84. package/dist/chunks/dropdown.10c034aa.js.map +1 -0
  85. package/dist/chunks/{error-message.8734e591.js → error-message.31ec12b7.js} +2 -2
  86. package/dist/chunks/{error-message.8734e591.js.map → error-message.31ec12b7.js.map} +1 -1
  87. package/dist/chunks/{fixed-scroller.772ad033.js → fixed-scroller.4eb9a9ac.js} +2 -2
  88. package/dist/chunks/{fixed-scroller.772ad033.js.map → fixed-scroller.4eb9a9ac.js.map} +1 -1
  89. package/dist/chunks/{footer-actions.11071f12.js → footer-actions.a1e09b4f.js} +4 -4
  90. package/dist/chunks/{footer-actions.11071f12.js.map → footer-actions.a1e09b4f.js.map} +1 -1
  91. package/dist/chunks/{index.5d5f2200.js → index.15b088b9.js} +6 -6
  92. package/dist/chunks/{index.5d5f2200.js.map → index.15b088b9.js.map} +1 -1
  93. package/dist/chunks/{index.87180cdd.js → index.1ea85d4a.js} +138 -119
  94. package/dist/chunks/index.1ea85d4a.js.map +1 -0
  95. package/dist/chunks/{index.8e6bc325.js → index.317fca12.js} +3 -3
  96. package/dist/chunks/{index.8e6bc325.js.map → index.317fca12.js.map} +1 -1
  97. package/dist/chunks/{index.51308a21.js → index.671768a1.js} +3 -3
  98. package/dist/chunks/{index.51308a21.js.map → index.671768a1.js.map} +1 -1
  99. package/dist/chunks/{index.49ce3f6a.js → index.7eefc59c.js} +3 -3
  100. package/dist/chunks/{index.49ce3f6a.js.map → index.7eefc59c.js.map} +1 -1
  101. package/dist/chunks/{index.f19887a1.js → index.885d05a9.js} +2 -2
  102. package/dist/chunks/{index.f19887a1.js.map → index.885d05a9.js.map} +1 -1
  103. package/dist/chunks/{index.73abb1a9.js → index.8b8c3b16.js} +9 -9
  104. package/dist/chunks/{index.73abb1a9.js.map → index.8b8c3b16.js.map} +1 -1
  105. package/dist/chunks/{index.ff09389c.js → index.aaf965f8.js} +6 -6
  106. package/dist/chunks/{index.ff09389c.js.map → index.aaf965f8.js.map} +1 -1
  107. package/dist/chunks/{index.03ae22b4.js → index.b21197ca.js} +2 -2
  108. package/dist/chunks/{index.03ae22b4.js.map → index.b21197ca.js.map} +1 -1
  109. package/dist/chunks/{index.94980f50.js → index.d553d3d1.js} +2 -2
  110. package/dist/chunks/{index.94980f50.js.map → index.d553d3d1.js.map} +1 -1
  111. package/dist/chunks/{index.ba6c1040.js → index.dd30e538.js} +3 -3
  112. package/dist/chunks/index.dd30e538.js.map +1 -0
  113. package/dist/chunks/{listbox-option-tag.c0a56a95.js → listbox-option-tag.6bbb6bbe.js} +3 -3
  114. package/dist/chunks/{listbox-option-tag.c0a56a95.js.map → listbox-option-tag.6bbb6bbe.js.map} +1 -1
  115. package/dist/chunks/{loading-button.84a5529d.js → loading-button.eafc9e1b.js} +2 -2
  116. package/dist/chunks/{loading-button.84a5529d.js.map → loading-button.eafc9e1b.js.map} +1 -1
  117. package/dist/chunks/{payment-method.faa302de.js → payment-method.6c1ce07c.js} +2 -2
  118. package/dist/chunks/{payment-method.faa302de.js.map → payment-method.6c1ce07c.js.map} +1 -1
  119. package/dist/chunks/{tooltip.8e9d733c.js → tooltip.58ef3f4a.js} +3 -3
  120. package/dist/chunks/{tooltip.8e9d733c.js.map → tooltip.58ef3f4a.js.map} +1 -1
  121. package/dist/chunks/{use-bento-toast-controller.7d4436ad.js → use-bento-toast-controller.c3277f73.js} +2 -2
  122. package/dist/chunks/{use-bento-toast-controller.7d4436ad.js.map → use-bento-toast-controller.c3277f73.js.map} +1 -1
  123. package/dist/chunks/{listbox.e6e1bc90.js → use-cached-selected-values.69297473.js} +510 -448
  124. package/dist/chunks/use-cached-selected-values.69297473.js.map +1 -0
  125. package/dist/code-snippet.js +7 -7
  126. package/dist/code-snippet.js.map +1 -1
  127. package/dist/country.js +2 -2
  128. package/dist/currency.js +1 -1
  129. package/dist/data-grid-template.js +1 -1
  130. package/dist/data-grid.js +947 -885
  131. package/dist/data-grid.js.map +1 -1
  132. package/dist/date-picker.js +8 -8
  133. package/dist/date-range-picker.js +2 -2
  134. package/dist/date.js +1 -1
  135. package/dist/divider.js +1 -1
  136. package/dist/dropdown.js +7 -7
  137. package/dist/empty-state.js +3 -3
  138. package/dist/filter-bar.js +1115 -955
  139. package/dist/filter-bar.js.map +1 -1
  140. package/dist/focus-trap.js +1 -1
  141. package/dist/form-layout.js +15 -14
  142. package/dist/form-layout.js.map +1 -1
  143. package/dist/header.js +4 -4
  144. package/dist/index.js +177 -169
  145. package/dist/index.js.map +1 -1
  146. package/dist/info-icon.js +3 -3
  147. package/dist/input-field.js +31 -29
  148. package/dist/input-field.js.map +1 -1
  149. package/dist/internal.js +31 -78
  150. package/dist/internal.js.map +1 -1
  151. package/dist/link.js +1 -1
  152. package/dist/loading-indicator.js +1 -1
  153. package/dist/menu.js +1 -1
  154. package/dist/modal-fullscreen.js +6 -6
  155. package/dist/modal.js +6 -6
  156. package/dist/pagination.js +4 -4
  157. package/dist/payment-method.js +1 -1
  158. package/dist/popover.js +1 -1
  159. package/dist/popper-container.js +1 -1
  160. package/dist/radio-group.js +62 -62
  161. package/dist/radio-group.js.map +1 -1
  162. package/dist/search-bar.js +2 -2
  163. package/dist/secondary-nav.js +2 -2
  164. package/dist/segmented-control.js +2 -2
  165. package/dist/selection-card.js +4 -4
  166. package/dist/sidepanel.js +52 -50
  167. package/dist/sidepanel.js.map +1 -1
  168. package/dist/status.js +2 -2
  169. package/dist/stepper.js +3 -3
  170. package/dist/structured-list.js +1 -1
  171. package/dist/summary-grid.js +3 -3
  172. package/dist/tabs.js +52 -52
  173. package/dist/tabs.js.map +1 -1
  174. package/dist/tag.js +3 -3
  175. package/dist/textarea.js +4 -4
  176. package/dist/timeline.js +7 -7
  177. package/dist/toast.js +4 -4
  178. package/dist/toggle.js +2 -2
  179. package/dist/tutorial.js +88 -67
  180. package/dist/tutorial.js.map +1 -1
  181. package/dist/typography.js +1 -1
  182. package/dist/web-types.json +550 -266
  183. package/package.json +3 -2
  184. package/dist/chunks/dialog-page.75b295b7.js +0 -133
  185. package/dist/chunks/dialog-page.75b295b7.js.map +0 -1
  186. package/dist/chunks/dropdown.669b858b.js +0 -797
  187. package/dist/chunks/dropdown.669b858b.js.map +0 -1
  188. package/dist/chunks/index.87180cdd.js.map +0 -1
  189. package/dist/chunks/index.ba6c1040.js.map +0 -1
  190. package/dist/chunks/listbox.e6e1bc90.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { ref as o, computed as n, defineComponent as c, toRefs as _ } from "vue";
2
- import { B as u } from "./index.ba6c1040.js";
2
+ import { B as u } from "./index.dd30e538.js";
3
3
  import "./index.4c062058.js";
4
4
  import { n as p } from "./_plugin-vue2_normalizer.71e2aa87.js";
5
- import "../assets/index15.css";
5
+ import "../assets/index5.css";
6
6
  const d = (t) => {
7
7
  const a = o(t);
8
8
  return n(() => a.value ? a.value.trim().charAt(0).toUpperCase() : null);
@@ -46,4 +46,4 @@ export {
46
46
  r as a,
47
47
  d as u
48
48
  };
49
- //# sourceMappingURL=index.49ce3f6a.js.map
49
+ //# sourceMappingURL=index.7eefc59c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.49ce3f6a.js","sources":["../../src/composables/initials.ts","../../src/components/avatar-image/avatar-image.types.ts","../../src/components/avatar-image/avatar-image.vue"],"sourcesContent":["import { computed, ComputedRef, ref } from 'vue';\nimport { MaybeRef } from '@/types';\n\n/** Extracts the first letter of a username\n * @param username - The name to return the initials of\n * Common patterns:\n * 1. John => J\n * 2. John Smith => J\n * John Smith Doe Holly => J\n */\nexport const useInitials = (username: MaybeRef<string | null>): ComputedRef<string | null> => {\n const computedUsername = ref(username);\n return computed(() => (computedUsername.value ? computedUsername.value.trim().charAt(0).toUpperCase() : null));\n};\n","export enum BentoAvatarImageVariant {\n LARGE = 'large',\n SMALL = 'small',\n}\n\nexport enum BentoAvatarImageColor {\n BLUE = 'blue',\n GREEN = 'green',\n RED = 'red',\n YELLOW = 'yellow',\n}\n","<template>\n <div class=\"b-avatar-image\" :class=\"conditionalClasses\" aria-hidden=\"true\" data-testid=\"avatar\">\n <img v-if=\"src\" :src=\"src\" class=\"b-avatar-image__image\" alt=\"Profile picture\" data-testid=\"avatar-content\" />\n <div v-else class=\"b-avatar-image__default\" data-testid=\"avatar-content\">\n <bento-typography el=\"span\" variant=\"body\" strongest>\n {{ initials }}\n </bento-typography>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, toRefs } from 'vue';\n import { BentoAvatarImageColor, BentoAvatarImageVariant } from './avatar-image.types';\n import { BentoTypography } from '@/components/typography';\n import { useInitials } from '@/composables';\n\n const props = withDefaults(\n defineProps<{\n /**\n * Avatar color. Defaults to yellow.\n */\n color?: BentoAvatarImageColor;\n\n /**\n * Image src to load the profile picture.\n */\n src?: string;\n\n /**\n * Name of the user that will be used to extract initials to display default value.\n * John => J\n * John Smith => JS\n * John Smith Doe => JD\n * John Smith Doe Holly => JH\n */\n username?: string;\n\n /**\n * Variants supported for small and large.\n * Default - large\n */\n variant?: BentoAvatarImageVariant;\n }>(),\n {\n color: BentoAvatarImageColor.YELLOW,\n src: null,\n username: null,\n variant: BentoAvatarImageVariant.LARGE,\n }\n );\n\n const { username } = toRefs(props);\n const initials = useInitials(username);\n\n const conditionalClasses = computed(() => ({\n [`b-avatar-image--${BentoAvatarImageVariant.SMALL}`]: props.variant === BentoAvatarImageVariant.SMALL,\n [`b-avatar-image--${props.color}`]: props.color,\n }));\n</script>\n\n<script lang=\"ts\">\n export default {\n name: 'avatar-image',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./avatar-image.scss\" />\n"],"names":["useInitials","username","computedUsername","ref","computed","BentoAvatarImageVariant","BentoAvatarImageVariant2","BentoAvatarImageColor","BentoAvatarImageColor2","__default__","toRefs","props","initials","conditionalClasses"],"mappings":";;;;;AAUa,MAAAA,IAAA,CAAAC,MAAA;AACT,QAAAC,IAAAC,EAAAF,CAAA;AACA,SAAAG,EAAA,MAAAF,EAAA,QAAAA,EAAA,MAAA,KAAA,EAAA,OAAA,CAAA,EAAA,YAAA,IAAA,IAAA;AACJ;ACbY,IAAAG,IAAA,kBAAAC,OACRA,EAAA,QAAA,SACAA,EAAA,QAAA,SAFQA,IAAAD,KAAA,CAAA,CAAA,GAKAE,IAAA,kBAAAC,OACRA,EAAA,OAAA,QACAA,EAAA,QAAA,SACAA,EAAA,MAAA,OACAA,EAAA,SAAA,UAJQA,IAAAD,KAAA,CAAA,CAAA;ACyDR,MAAAE,IAAA;AAAA,EAAe,MAAA;AAEf;;;;;;;;;iBAZA,EAAA,UAAAR,EAAA,IAAAS,EAAAC,CAAA,GACAC,IAAAZ,EAAAC,CAAA,GAEAY,IAAAT,EAAA,OAAA;AAAA,MAA2C,CAAA,mBAAAC,EAAA,OAAA,GAAAM,EAAA,YAAAN,EAAA;AAAA,MACyD,CAAA,mBAAAM,EAAA,OAAA,GAAAA,EAAA;AAAA,IACtD,EAAA;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.7eefc59c.js","sources":["../../src/composables/initials.ts","../../src/components/avatar-image/avatar-image.types.ts","../../src/components/avatar-image/avatar-image.vue"],"sourcesContent":["import { computed, ComputedRef, ref } from 'vue';\nimport { MaybeRef } from '@/types';\n\n/** Extracts the first letter of a username\n * @param username - The name to return the initials of\n * Common patterns:\n * 1. John => J\n * 2. John Smith => J\n * John Smith Doe Holly => J\n */\nexport const useInitials = (username: MaybeRef<string | null>): ComputedRef<string | null> => {\n const computedUsername = ref(username);\n return computed(() => (computedUsername.value ? computedUsername.value.trim().charAt(0).toUpperCase() : null));\n};\n","export enum BentoAvatarImageVariant {\n LARGE = 'large',\n SMALL = 'small',\n}\n\nexport enum BentoAvatarImageColor {\n BLUE = 'blue',\n GREEN = 'green',\n RED = 'red',\n YELLOW = 'yellow',\n}\n","<template>\n <div class=\"b-avatar-image\" :class=\"conditionalClasses\" aria-hidden=\"true\" data-testid=\"avatar\">\n <img v-if=\"src\" :src=\"src\" class=\"b-avatar-image__image\" alt=\"Profile picture\" data-testid=\"avatar-content\" />\n <div v-else class=\"b-avatar-image__default\" data-testid=\"avatar-content\">\n <bento-typography el=\"span\" variant=\"body\" strongest>\n {{ initials }}\n </bento-typography>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, toRefs } from 'vue';\n import { BentoAvatarImageColor, BentoAvatarImageVariant } from './avatar-image.types';\n import { BentoTypography } from '@/components/typography';\n import { useInitials } from '@/composables';\n\n const props = withDefaults(\n defineProps<{\n /**\n * Avatar color. Defaults to yellow.\n */\n color?: BentoAvatarImageColor;\n\n /**\n * Image src to load the profile picture.\n */\n src?: string;\n\n /**\n * Name of the user that will be used to extract initials to display default value.\n * John => J\n * John Smith => JS\n * John Smith Doe => JD\n * John Smith Doe Holly => JH\n */\n username?: string;\n\n /**\n * Variants supported for small and large.\n * Default - large\n */\n variant?: BentoAvatarImageVariant;\n }>(),\n {\n color: BentoAvatarImageColor.YELLOW,\n src: null,\n username: null,\n variant: BentoAvatarImageVariant.LARGE,\n }\n );\n\n const { username } = toRefs(props);\n const initials = useInitials(username);\n\n const conditionalClasses = computed(() => ({\n [`b-avatar-image--${BentoAvatarImageVariant.SMALL}`]: props.variant === BentoAvatarImageVariant.SMALL,\n [`b-avatar-image--${props.color}`]: props.color,\n }));\n</script>\n\n<script lang=\"ts\">\n export default {\n name: 'avatar-image',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./avatar-image.scss\" />\n"],"names":["useInitials","username","computedUsername","ref","computed","BentoAvatarImageVariant","BentoAvatarImageVariant2","BentoAvatarImageColor","BentoAvatarImageColor2","__default__","toRefs","props","initials","conditionalClasses"],"mappings":";;;;;AAUa,MAAAA,IAAA,CAAAC,MAAA;AACT,QAAAC,IAAAC,EAAAF,CAAA;AACA,SAAAG,EAAA,MAAAF,EAAA,QAAAA,EAAA,MAAA,KAAA,EAAA,OAAA,CAAA,EAAA,YAAA,IAAA,IAAA;AACJ;ACbY,IAAAG,IAAA,kBAAAC,OACRA,EAAA,QAAA,SACAA,EAAA,QAAA,SAFQA,IAAAD,KAAA,CAAA,CAAA,GAKAE,IAAA,kBAAAC,OACRA,EAAA,OAAA,QACAA,EAAA,QAAA,SACAA,EAAA,MAAA,OACAA,EAAA,SAAA,UAJQA,IAAAD,KAAA,CAAA,CAAA;ACyDR,MAAAE,IAAA;AAAA,EAAe,MAAA;AAEf;;;;;;;;;iBAZA,EAAA,UAAAR,EAAA,IAAAS,EAAAC,CAAA,GACAC,IAAAZ,EAAAC,CAAA,GAEAY,IAAAT,EAAA,OAAA;AAAA,MAA2C,CAAA,mBAAAC,EAAA,OAAA,GAAAM,EAAA,YAAAN,EAAA;AAAA,MACyD,CAAA,mBAAAM,EAAA,OAAA,GAAAA,EAAA;AAAA,IACtD,EAAA;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as t, inject as r, ref as i, computed as o } from "vue";
2
2
  import { n as a } from "./_plugin-vue2_normalizer.71e2aa87.js";
3
- import "../assets/index7.css";
3
+ import "../assets/index14.css";
4
4
  const c = Symbol("divider inverse style injection key"), d = {}, l = /* @__PURE__ */ t({
5
5
  ...d,
6
6
  __name: "divider",
@@ -29,4 +29,4 @@ export {
29
29
  C as B,
30
30
  c as D
31
31
  };
32
- //# sourceMappingURL=index.f19887a1.js.map
32
+ //# sourceMappingURL=index.885d05a9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.f19887a1.js","sources":["../../src/components/divider/divider.keys.ts","../../src/components/divider/divider.vue"],"sourcesContent":["export const DIVIDER_INVERSE_INJECTION_KEY = Symbol('divider inverse style injection key');\n","<template>\n <div class=\"b-divider\">\n <hr class=\"b-divider__horizontal-rule\" :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\n const isInverseColorSet = inject(DIVIDER_INVERSE_INJECTION_KEY, ref(false));\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","__default__","isInverseColorSet","inject","ref","conditionalClasses","computed"],"mappings":";;;AAAa,MAAAA,IAAA,OAAA,qCAAA,GC8BTC,IAAA,CAAA;;;;AApBA,UAAAC,IAAAC,EAAAH,GAAAI,EAAA,EAAA,CAAA,GAEAC,IAAAC,EAAA,OAAA;AAAA,MAA2C,sBAAAJ,EAAA;AAAA,IACC,EAAA;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.885d05a9.js","sources":["../../src/components/divider/divider.keys.ts","../../src/components/divider/divider.vue"],"sourcesContent":["export const DIVIDER_INVERSE_INJECTION_KEY = Symbol('divider inverse style injection key');\n","<template>\n <div class=\"b-divider\">\n <hr class=\"b-divider__horizontal-rule\" :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\n const isInverseColorSet = inject(DIVIDER_INVERSE_INJECTION_KEY, ref(false));\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","__default__","isInverseColorSet","inject","ref","conditionalClasses","computed"],"mappings":";;;AAAa,MAAAA,IAAA,OAAA,qCAAA,GC8BTC,IAAA,CAAA;;;;AApBA,UAAAC,IAAAC,EAAAH,GAAAI,EAAA,EAAA,CAAA,GAEAC,IAAAC,EAAA,OAAA;AAAA,MAA2C,sBAAAJ,EAAA;AAAA,IACC,EAAA;;;;;;;;;;;;;;;;;;"}
@@ -1,25 +1,25 @@
1
1
  import { reactive as J, defineComponent as ke, ref as M, computed as k, onMounted as We, toRaw as qe, toRef as fe, watch as Ve } from "vue";
2
- import { a as He } from "./index.5d5f2200.js";
3
- import { B as Ee } from "./index.ba6c1040.js";
4
- import { c as je, B as Ke } from "./dropdown-default-textbox.c1f8fe5f.js";
2
+ import { a as He } from "./index.15b088b9.js";
3
+ import { B as Ee } from "./index.dd30e538.js";
4
+ import { c as je, B as Ke } from "./dropdown-default-textbox.54ca1b18.js";
5
5
  import { g as V } from "./unique-id.a2a2b458.js";
6
6
  import { u as re } from "./i18n.eb5b985b.js";
7
- import { t as se, f as $ } from "./index.03ae22b4.js";
7
+ import { t as se, f as $ } from "./index.b21197ca.js";
8
8
  import { r as Q, t as j, e as S, d as oe, f as ie } from "./index.f55fdc32.js";
9
9
  import { f as pe, v as ze, D as E } from "./date-input.9186a0bf.js";
10
10
  import { u as Je } from "./use-form-layout-loading.d03e5d48.js";
11
11
  import "./index.4c062058.js";
12
12
  import { BentoInputField as Qe } from "../input-field.js";
13
- import { B as Xe } from "./dropdown.669b858b.js";
13
+ import { B as Xe } from "./dropdown.10c034aa.js";
14
14
  import { BentoSegmentedControl as Ze } from "../segmented-control.js";
15
15
  import { d as z } from "./debounce.b5ef6acf.js";
16
16
  import { u as et } from "./use-has-slot.fbeb19ec.js";
17
- import { s as H, c as ge, i as B, d as tt, e as ve, f as at, g as _e, h as nt, j as rt, C as F, u as st } from "./calendar.1e416969.js";
17
+ import { s as H, c as ge, i as B, d as tt, e as ve, f as at, g as _e, h as nt, j as rt, C as F, u as st } from "./calendar.640b8d25.js";
18
18
  import { e as O } from "./index.fdf12170.js";
19
19
  import { e as Te } from "./index.d80206ed.js";
20
20
  import { n as Se } from "./_plugin-vue2_normalizer.71e2aa87.js";
21
- import { E as ot, F as it } from "./error-message.8734e591.js";
22
- import "../assets/index16.css";
21
+ import { E as ot, F as it } from "./error-message.31ec12b7.js";
22
+ import "../assets/index13.css";
23
23
  function Re(t, e) {
24
24
  Q(2, arguments);
25
25
  var n = j(t), d = j(e);
@@ -709,4 +709,4 @@ export {
709
709
  L as a,
710
710
  Re as i
711
711
  };
712
- //# sourceMappingURL=index.73abb1a9.js.map
712
+ //# sourceMappingURL=index.8b8c3b16.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.73abb1a9.js","sources":["../../../../node_modules/date-fns/esm/isEqual/index.js","../../../../node_modules/date-fns/esm/setHours/index.js","../../../../node_modules/date-fns/esm/setMinutes/index.js","../../../../node_modules/date-fns/esm/setSeconds/index.js","../../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 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 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 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 addDays from 'date-fns/addDays';\nimport addMonths from 'date-fns/addMonths';\nimport endOfDay from 'date-fns/endOfDay';\nimport endOfMonth from 'date-fns/endOfMonth';\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 startOfWeek from 'date-fns/startOfWeek';\nimport subDays from 'date-fns/subDays';\nimport subMonths from 'date-fns/subMonths';\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 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 }>({\n daily: null,\n weekly: null,\n monthly: 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 };\n\n return {\n savedRanges,\n\n saveRange,\n resetSavedRanges,\n };\n};\n","import { 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 };\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 isValidKey = validDigitRegex.test(event.key) || event.key === 'Backspace';\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=\"value\"\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 :granularity=\"selectedGranularity\"\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, PropType, reactive, ref, toRaw } from 'vue';\n import { Calendar, 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 { de, enUS, fr } from 'date-fns/locale';\n import { useI18n } from '@/utils/ts/i18n';\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 DateRangePickerCalendarFormData,\n 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 isEqual from 'date-fns/isEqual';\n import isSameDay from 'date-fns/isSameDay';\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\n const FORM_INPUT_DEBOUNCE_TIME = 300;\n const RANGE_SELECTOR_CUSTOM_RANGE_KEY = 'customRange';\n const DEFAULT_GRANULARITY = 'daily';\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 * 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 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 = { de, enUS, fr };\n const internalRangeDate = reactive({\n startDate: (props.value as BentoDateRangePickerValue)?.startDate,\n endDate: (props.value as BentoDateRangePickerValue)?.endDate,\n ...(props.granularities\n ? {\n granularity: (props.value as BentoDateRangePickerValue)?.granularity || DEFAULT_GRANULARITY,\n }\n : {}),\n });\n const selectedRangeSelectorValue = ref(\n props?.quickSelectRanges?.find(({ data }) => {\n if (props.allowTimeInput) {\n return (\n isEqual(data.startDate, internalRangeDate.startDate) &&\n isEqual(data.endDate, internalRangeDate.endDate)\n );\n }\n return (\n isSameDay(data.startDate, internalRangeDate.startDate) &&\n isSameDay(data.endDate, internalRangeDate.endDate)\n );\n })?.value ?? RANGE_SELECTOR_CUSTOM_RANGE_KEY\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,\n ]);\n\n const selectedGranularity = computed(\n () => props.granularities?.find(({ type }) => type === internalRangeDate.granularity) || null\n );\n\n const granularityItems = computed<Array<BentoSegmentedControlItem>>(() =>\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 adjustDateForMonthly,\n adjustDateForWeekly,\n adjustStartDateInputForWeekly,\n adjustEndDateInputForWeekly,\n adjustStartDateInputForMonthly,\n adjustEndDateInputForMonthly,\n } = useGranularityAdjustments(props.firstDayOfWeek);\n const { savedRanges, saveRange, resetSavedRanges } = useGranularityMemory();\n\n /**\n * When selecting a custom range, set the range selecter if it is enabled.\n */\n const resetCustomRangeToDefault = () => {\n if (props?.quickSelectRanges) {\n selectedRangeSelectorValue.value = RANGE_SELECTOR_CUSTOM_RANGE_KEY;\n }\n };\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)] || 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)] || 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 // Validate time\n const isValidTime = (timeText: string) => {\n // HH:MM:SS regex\n const timeRegex = /^(?:[01]\\d|2[01234]):(?:[012345]\\d):(?:[012345]\\d)$/;\n return timeRegex.test(timeText);\n };\n\n const setTimeInDate = (date: Date, time: string) => {\n if (!time || !isValidTime(time)) {\n return date;\n }\n\n let dateWithTime = new Date(date);\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 onDateInput = (selectedRange: BentoDateRangePickerValue) => {\n internalRangeDate.startDate = setTimeInDate(selectedRange.startDate, dateTextInput.startTime);\n internalRangeDate.endDate = setTimeInDate(selectedRange.endDate, dateTextInput.endTime);\n\n if (props.granularities) {\n // Reset saved ranges on input\n resetSavedRanges();\n }\n\n emit(DateRangePickerCalendarEvent.INPUT, internalRangeDate);\n };\n\n const isValidDate = (dateText: string) => {\n // Is date selectable\n const isDateEnabled = (date: Date) => {\n // Check if date is between min/max bounds, if there are any\n if ((props.min && date <= props.min) || (props.max && date >= props.max)) {\n return false;\n }\n\n // Check if function is set, otherwise all dates are enabled\n if (props.isDateDisabled) {\n return !props.isDateDisabled(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 if (props.dateFormData.startDate && !isValidDate(props.dateFormData.startDate)) {\n startDateError.value = true;\n } else {\n startDateError.value = false;\n startTimeError.value = false;\n }\n\n if (props.dateFormData.endDate && !isValidDate(props.dateFormData.endDate)) {\n endDateError.value = true;\n } else {\n endDateError.value = false;\n endTimeError.value = false;\n }\n });\n\n const onStartDateSelected = (newStartDate: Date) => {\n resetCustomRangeToDefault();\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 'daily':\n default:\n break;\n }\n\n // Format date string to Date object\n internalRangeDate.startDate = setTimeInDate(new Date(dateText), dateTextInput.startTime);\n\n const endDate = getDate('endDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: new Date(dateText),\n endDate,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate: new Date(dateText),\n endDate,\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 resetCustomRangeToDefault();\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 'daily':\n default:\n break;\n }\n\n internalRangeDate.endDate = setTimeInDate(new Date(dateText), dateTextInput.endTime);\n\n const startDate = getDate('startDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n startTime: props.dateFormData.endTime,\n endTime: dateText,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\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 resetCustomRangeToDefault();\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)) {\n startTimeError.value = false;\n internalRangeDate.startDate = setTimeInDate(internalRangeDate.startDate, startTimeText);\n\n const endDate = getDate('endDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: new Date(internalRangeDate.startDate),\n endDate,\n startTime: startTimeText,\n endTime: props.dateFormData.endTime,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate: new Date(internalRangeDate.startDate),\n endDate,\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)) {\n endTimeError.value = false;\n internalRangeDate.endDate = setTimeInDate(internalRangeDate.endDate, endTimeText);\n\n const startDate = getDate('startDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n startTime: props.dateFormData.startTime,\n endTime: endTimeText,\n });\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\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 resetCustomRangeToDefault();\n dateTextInput.startTime = formatTimeInputValue(startTimeText);\n validateStartTime(dateTextInput.startTime);\n };\n\n const onEndTimeInput = (endDateText: string) => {\n resetCustomRangeToDefault();\n dateTextInput.endTime = formatTimeInputValue(endDateText);\n validateEndTime(dateTextInput.endTime);\n };\n\n const onTimeInputKeyDown = (event: KeyboardEvent) => {\n validateTimeInput(event);\n };\n\n const setInternalRange = (startDate: Date, endDate: Date, granularity?: CalendarGranularityType) => {\n internalRangeDate.startDate = startDate;\n internalRangeDate.endDate = endDate;\n\n if (granularity) {\n internalRangeDate.granularity = granularity;\n }\n };\n\n const onRangeSelectorInput = (newCustomRangeValue: string) => {\n selectedRangeSelectorValue.value = newCustomRangeValue;\n const foundResult = props.quickSelectRanges?.find(({ value }) => value === newCustomRangeValue)?.data;\n if (foundResult) {\n resetSavedRanges();\n\n dateTextInput.startDate = formatDate(foundResult.startDate);\n dateTextInput.endDate = formatDate(foundResult.endDate);\n\n setInternalRange(foundResult.startDate, foundResult.endDate);\n\n if (props.granularities) {\n internalRangeDate.granularity = foundResult.granularity || DEFAULT_GRANULARITY;\n }\n if (!dateTextInput.startTime) {\n dateTextInput.startTime = formatTime(endOfDay(foundResult.startDate));\n }\n if (!dateTextInput.endTime) {\n dateTextInput.endTime = formatTime(endOfDay(foundResult.endDate));\n }\n emit(DateRangePickerCalendarEvent.CUSTOM_RANGE, foundResult);\n }\n };\n\n const onGranularityInput = (value: CalendarGranularityType) => {\n resetCustomRangeToDefault();\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 'monthly': {\n if (savedRanges.monthly) {\n setInternalRange(savedRanges.monthly.startDate, savedRanges.monthly.endDate, value);\n break;\n }\n\n const { startDate, endDate } = adjustDateForMonthly(\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 'weekly': {\n if (savedRanges.weekly) {\n setInternalRange(savedRanges.weekly.startDate, savedRanges.weekly.endDate, value);\n break;\n }\n\n const { startDate, endDate } = adjustDateForWeekly(\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, internalRangeDate);\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 { de, enUS, fr } from 'date-fns/locale';\nimport { useI18n } from '@/utils/ts/i18n';\nimport { UseDateDisplayText } from './use-date-range-picker-calendar-text.types';\nimport { DateFormat } from '@/types';\nimport { CalendarRangeDateValue } from '@/internal';\nimport { DateRangePickerCalendarFormData } from '../components/date-range-picker-calendar/date-range-picker-calendar.types';\nimport format from 'date-fns/format';\n\nexport const useDateRangePickerCalendarText: UseDateDisplayText<CalendarRangeDateValue> = ({\n datePickerValue,\n isDateIncorrect,\n}) => {\n const { locale, t } = useI18n();\n const locales = { de, enUS, fr };\n\n const formatDate = (date: Date, dateFormat: DateFormat) =>\n format(date, dateFormat, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n const formatTime = (date: Date) =>\n format(date, DateFormat.HOUR_MINUTE_SECONDS, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n // Handle the form input text\n const textInputDisplayValue = reactive<DateRangePickerCalendarFormData>({\n startDate: datePickerValue.value?.startDate\n ? formatDate(datePickerValue.value.startDate, DateFormat.NUMERIC_DATE_YEAR_FIRST)\n : undefined,\n endDate: datePickerValue.value?.endDate\n ? formatDate(datePickerValue.value.endDate, DateFormat.NUMERIC_DATE_YEAR_FIRST)\n : undefined,\n\n // Set time if the startDate/endDate are set\n startTime: datePickerValue.value?.startDate ? formatTime(datePickerValue.value?.startDate) : undefined,\n endTime: datePickerValue.value?.endDate ? formatTime(datePickerValue.value.endDate) : undefined,\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 const { startDate, endDate } = textInputDisplayValue;\n return `${formatDate(new Date(startDate), DateFormat.FULL_DATE_MONTH_FIRST)} - ${formatDate(\n new Date(endDate),\n DateFormat.FULL_DATE_MONTH_FIRST\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} 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 || isDateIncorrect\"\n :open=\"isDateRangePickerOpen\"\n :display-value=\"dateDisplayValue\"\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=\"isDateIncorrect\"\n :id=\"dateErrorId\"\n :error-message=\"$t('provideDateInAFormat').toString()\"\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=\"allowTimeInput\"\n :quick-select-ranges=\"quickSelectRanges\"\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 :date-form-data=\"textInputDisplayValue\"\n @custom-range=\"onRangeSelectorInput\"\n @input=\"onDateRangePickerInput\"\n @error=\"onDateRangePickerError\"\n @form-date=\"onDateRangePickerFormDateInputUpdate\"\n />\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRef, watch } from 'vue';\n\n // Components\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 { de, enUS, fr } from 'date-fns/locale';\n import { generateUid } from '@/utils/ts/unique-id';\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 } from '@/directives';\n\n // Types\n import { BentoDateRangePickerEvent, BentoDateRangePickerValue } from './date-range-picker.types';\n import { DateFormat } from '@/types';\n import {\n DateRangePickerCalendarFormData,\n DateRangePickerCalendarRangeSelectorItems,\n } from './components/date-range-picker-calendar/date-range-picker-calendar.types';\n\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\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 defineComponent({\n i18n: { messages },\n name: 'bento-date-range-picker',\n components: {\n BentoTypography,\n BentoPopover,\n DateRangePickerCalendar,\n DropdownInputDefault,\n ErrorMessage,\n FieldLabel,\n },\n directives: { BentoClickOutsideDirective },\n props: {\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 * 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 emits: [BentoDateRangePickerEvent.INPUT],\n setup(props, { emit }) {\n const { locale, t } = useI18n<{ message: MessageSchema }>({ messages });\n const locales = { de, enUS, fr };\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(\n () => props.label || t('dateRangePicker', { name: datePickerContainerId })\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 descriptionConditionalClasses = computed(() => ({\n 'b-date-range-picker__description--error': !!props.errorMessage || isDateIncorrect.value,\n }));\n\n const { dateDisplayValue, textInputDisplayValue, formatTextInputDisplayValue } =\n useDateRangePickerCalendarText({\n datePickerValue: toRef(props, 'value'),\n isDateIncorrect,\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 closeDateRangePicker = () => {\n isDateRangePickerOpen.value = false;\n };\n\n const openDateRangePicker = () => {\n isDateRangePickerOpen.value = true;\n formatTextInputDisplayValue();\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) =>\n format(date, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n textInputDisplayValue.startDate = formatDate(selectedRange.startDate);\n textInputDisplayValue.endDate = formatDate(selectedRange.endDate);\n emit(BentoDateRangePickerEvent.INPUT, selectedRange);\n };\n\n const clearDateRangePickerValue = async () => {\n if (isDateIncorrect.value) {\n isDateIncorrect.value = false;\n }\n emit(BentoDateRangePickerEvent.INPUT, null);\n };\n\n const onEnterPressedOverInput = () => {\n // Close the date picker if the date is correct\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 emit(BentoDateRangePickerEvent.INPUT, { startDate: null, endDate: null });\n };\n\n const onRangeSelectorInput = (quickSelectRanges?: { startDate: Date; endDate: Date }) => {\n if (quickSelectRanges) {\n const formatDate = (date: Date) =>\n format(date, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n textInputDisplayValue.startDate = formatDate(quickSelectRanges.startDate);\n textInputDisplayValue.endDate = formatDate(quickSelectRanges.endDate);\n emit(BentoDateRangePickerEvent.INPUT, quickSelectRanges);\n }\n };\n\n return {\n // Refs\n inputContainerRef,\n\n // Values,\n dateDisplayValue,\n datePickerContainerId,\n descriptionConditionalClasses,\n isDateIncorrect,\n isDateRangePickerOpen,\n isReadOnly,\n labelId,\n descriptionId,\n dateErrorId,\n errorId,\n popoverAriaLabel,\n ariaDescribedBy,\n textInputDisplayValue,\n\n // Events\n closeDateRangePicker,\n clearDateRangePickerValue,\n openDateRangePicker,\n onRangeSelectorInput,\n onEnterPressedOverInput,\n onDateRangePickerInput,\n onDateRangePickerError,\n onDateRangePickerFormDateInputUpdate,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-picker.scss\" />\n"],"names":["isEqual","dirtyLeftDate","dirtyRightDate","requiredArgs","dateLeft","toDate","dateRight","setHours","dirtyDate","dirtyHours","date","hours","toInteger","setMinutes","dirtyMinutes","minutes","setSeconds","dirtySeconds","seconds","useGranularMinMaxDate","firstDayOfWeek","minimumDate","maximumDate","granularity","min","startOfDay","max","endOfDay","startOfMin","startOfWeek","isSameDay","addDays","endOfWeek","endOfMax","subDays","startOfMonth","addMonths","endOfMonth","subMonths","useGranularityMemory","savedRanges","reactive","type","range","DateRangePickerCalendarEvent","DateRangePickerCalendarEvent2","validDigitRegex","hourRegex","minuteRegex","validateTimeInput","event","selectionStart","isValidKey","isValidColon","formatTimeInputValue","value","formattedValue","secondToLastDigit","lastDigit","FORM_INPUT_DEBOUNCE_TIME","RANGE_SELECTOR_CUSTOM_RANGE_KEY","DEFAULT_GRANULARITY","_sfc_main$1","defineComponent","messages$1","BentoDropdown","BentoInputField","BentoSegmentedControl","BentoTypography","Calendar","props","emit","slots","locale","t","useI18n","locales","de","enUS","fr","internalRangeDate","_a","_b","_c","selectedRangeSelectorValue","ref","_e","_d","data","formInputWrapperConditionalClasses","computed","quickSelectRangeDefaultItems","selectedGranularity","granularityItems","disabled","getGranularCalendarLimits","computedMinMax","adjustDateForMonthly","adjustDateForWeekly","adjustStartDateInputForWeekly","adjustEndDateInputForWeekly","adjustStartDateInputForMonthly","adjustEndDateInputForMonthly","useGranularityAdjustments","saveRange","resetSavedRanges","resetCustomRangeToDefault","formatDate","dateToFormat","format","DateFormat","formatTime","startDateError","endDateError","startTimeError","endTimeError","dateTextInput","isValidTime","timeText","setTimeInDate","time","dateWithTime","onDateInput","selectedRange","isValidDate","dateText","isDateEnabled","onMounted","onStartDateSelected","newStartDate","onEndDateSelected","newEndDate","getDate","keyName","dateProp","validateStartDate","debounce","startDateText","endDate","onStartDateInput","formatDateInputValue","validateEndDate","endDateText","startDate","onEndDateInput","onDateInputKeyDown","validateDateInput","validateStartTime","startTimeText","validateEndTime","endTimeText","onStartTimeInput","onEndTimeInput","onTimeInputKeyDown","setInternalRange","onRangeSelectorInput","newCustomRangeValue","foundResult","onGranularityInput","previousValue","toRaw","useHasSlot","useDateRangePickerCalendarText","datePickerValue","isDateIncorrect","dateFormat","textInputDisplayValue","BentoDateRangePickerEvent","BentoDateRangePickerEvent2","_sfc_main","messages","BentoPopover","DateRangePickerCalendar","DropdownInputDefault","ErrorMessage","FieldLabel","BentoClickOutsideDirective","datePickerContainerId","generateUid","labelId","descriptionId","errorId","dateErrorId","popoverAriaLabel","inputContainerRef","isDateRangePickerOpen","isReadOnly","useFormLayoutFieldLoading","toRef","watch","descriptionConditionalClasses","dateDisplayValue","formatTextInputDisplayValue","ariaDescribedBy","quickSelectRanges","dateFormDate"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
1
+ {"version":3,"file":"index.8b8c3b16.js","sources":["../../../../node_modules/date-fns/esm/isEqual/index.js","../../../../node_modules/date-fns/esm/setHours/index.js","../../../../node_modules/date-fns/esm/setMinutes/index.js","../../../../node_modules/date-fns/esm/setSeconds/index.js","../../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 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 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 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 addDays from 'date-fns/addDays';\nimport addMonths from 'date-fns/addMonths';\nimport endOfDay from 'date-fns/endOfDay';\nimport endOfMonth from 'date-fns/endOfMonth';\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 startOfWeek from 'date-fns/startOfWeek';\nimport subDays from 'date-fns/subDays';\nimport subMonths from 'date-fns/subMonths';\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 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 }>({\n daily: null,\n weekly: null,\n monthly: 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 };\n\n return {\n savedRanges,\n\n saveRange,\n resetSavedRanges,\n };\n};\n","import { 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 };\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 isValidKey = validDigitRegex.test(event.key) || event.key === 'Backspace';\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=\"value\"\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 :granularity=\"selectedGranularity\"\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, PropType, reactive, ref, toRaw } from 'vue';\n import { Calendar, 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 { de, enUS, fr } from 'date-fns/locale';\n import { useI18n } from '@/utils/ts/i18n';\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 DateRangePickerCalendarFormData,\n 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 isEqual from 'date-fns/isEqual';\n import isSameDay from 'date-fns/isSameDay';\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\n const FORM_INPUT_DEBOUNCE_TIME = 300;\n const RANGE_SELECTOR_CUSTOM_RANGE_KEY = 'customRange';\n const DEFAULT_GRANULARITY = 'daily';\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 * 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 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 = { de, enUS, fr };\n const internalRangeDate = reactive({\n startDate: (props.value as BentoDateRangePickerValue)?.startDate,\n endDate: (props.value as BentoDateRangePickerValue)?.endDate,\n ...(props.granularities\n ? {\n granularity: (props.value as BentoDateRangePickerValue)?.granularity || DEFAULT_GRANULARITY,\n }\n : {}),\n });\n const selectedRangeSelectorValue = ref(\n props?.quickSelectRanges?.find(({ data }) => {\n if (props.allowTimeInput) {\n return (\n isEqual(data.startDate, internalRangeDate.startDate) &&\n isEqual(data.endDate, internalRangeDate.endDate)\n );\n }\n return (\n isSameDay(data.startDate, internalRangeDate.startDate) &&\n isSameDay(data.endDate, internalRangeDate.endDate)\n );\n })?.value ?? RANGE_SELECTOR_CUSTOM_RANGE_KEY\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,\n ]);\n\n const selectedGranularity = computed(\n () => props.granularities?.find(({ type }) => type === internalRangeDate.granularity) || null\n );\n\n const granularityItems = computed<Array<BentoSegmentedControlItem>>(() =>\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 adjustDateForMonthly,\n adjustDateForWeekly,\n adjustStartDateInputForWeekly,\n adjustEndDateInputForWeekly,\n adjustStartDateInputForMonthly,\n adjustEndDateInputForMonthly,\n } = useGranularityAdjustments(props.firstDayOfWeek);\n const { savedRanges, saveRange, resetSavedRanges } = useGranularityMemory();\n\n /**\n * When selecting a custom range, set the range selecter if it is enabled.\n */\n const resetCustomRangeToDefault = () => {\n if (props?.quickSelectRanges) {\n selectedRangeSelectorValue.value = RANGE_SELECTOR_CUSTOM_RANGE_KEY;\n }\n };\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)] || 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)] || 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 // Validate time\n const isValidTime = (timeText: string) => {\n // HH:MM:SS regex\n const timeRegex = /^(?:[01]\\d|2[01234]):(?:[012345]\\d):(?:[012345]\\d)$/;\n return timeRegex.test(timeText);\n };\n\n const setTimeInDate = (date: Date, time: string) => {\n if (!time || !isValidTime(time)) {\n return date;\n }\n\n let dateWithTime = new Date(date);\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 onDateInput = (selectedRange: BentoDateRangePickerValue) => {\n internalRangeDate.startDate = setTimeInDate(selectedRange.startDate, dateTextInput.startTime);\n internalRangeDate.endDate = setTimeInDate(selectedRange.endDate, dateTextInput.endTime);\n\n if (props.granularities) {\n // Reset saved ranges on input\n resetSavedRanges();\n }\n\n emit(DateRangePickerCalendarEvent.INPUT, internalRangeDate);\n };\n\n const isValidDate = (dateText: string) => {\n // Is date selectable\n const isDateEnabled = (date: Date) => {\n // Check if date is between min/max bounds, if there are any\n if ((props.min && date <= props.min) || (props.max && date >= props.max)) {\n return false;\n }\n\n // Check if function is set, otherwise all dates are enabled\n if (props.isDateDisabled) {\n return !props.isDateDisabled(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 if (props.dateFormData.startDate && !isValidDate(props.dateFormData.startDate)) {\n startDateError.value = true;\n } else {\n startDateError.value = false;\n startTimeError.value = false;\n }\n\n if (props.dateFormData.endDate && !isValidDate(props.dateFormData.endDate)) {\n endDateError.value = true;\n } else {\n endDateError.value = false;\n endTimeError.value = false;\n }\n });\n\n const onStartDateSelected = (newStartDate: Date) => {\n resetCustomRangeToDefault();\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 'daily':\n default:\n break;\n }\n\n // Format date string to Date object\n internalRangeDate.startDate = setTimeInDate(new Date(dateText), dateTextInput.startTime);\n\n const endDate = getDate('endDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: new Date(dateText),\n endDate,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate: new Date(dateText),\n endDate,\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 resetCustomRangeToDefault();\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 'daily':\n default:\n break;\n }\n\n internalRangeDate.endDate = setTimeInDate(new Date(dateText), dateTextInput.endTime);\n\n const startDate = getDate('startDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n startTime: props.dateFormData.endTime,\n endTime: dateText,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\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 resetCustomRangeToDefault();\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)) {\n startTimeError.value = false;\n internalRangeDate.startDate = setTimeInDate(internalRangeDate.startDate, startTimeText);\n\n const endDate = getDate('endDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: new Date(internalRangeDate.startDate),\n endDate,\n startTime: startTimeText,\n endTime: props.dateFormData.endTime,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate: new Date(internalRangeDate.startDate),\n endDate,\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)) {\n endTimeError.value = false;\n internalRangeDate.endDate = setTimeInDate(internalRangeDate.endDate, endTimeText);\n\n const startDate = getDate('startDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n startTime: props.dateFormData.startTime,\n endTime: endTimeText,\n });\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\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 resetCustomRangeToDefault();\n dateTextInput.startTime = formatTimeInputValue(startTimeText);\n validateStartTime(dateTextInput.startTime);\n };\n\n const onEndTimeInput = (endDateText: string) => {\n resetCustomRangeToDefault();\n dateTextInput.endTime = formatTimeInputValue(endDateText);\n validateEndTime(dateTextInput.endTime);\n };\n\n const onTimeInputKeyDown = (event: KeyboardEvent) => {\n validateTimeInput(event);\n };\n\n const setInternalRange = (startDate: Date, endDate: Date, granularity?: CalendarGranularityType) => {\n internalRangeDate.startDate = startDate;\n internalRangeDate.endDate = endDate;\n\n if (granularity) {\n internalRangeDate.granularity = granularity;\n }\n };\n\n const onRangeSelectorInput = (newCustomRangeValue: string) => {\n selectedRangeSelectorValue.value = newCustomRangeValue;\n const foundResult = props.quickSelectRanges?.find(({ value }) => value === newCustomRangeValue)?.data;\n if (foundResult) {\n resetSavedRanges();\n\n dateTextInput.startDate = formatDate(foundResult.startDate);\n dateTextInput.endDate = formatDate(foundResult.endDate);\n\n setInternalRange(foundResult.startDate, foundResult.endDate);\n\n if (props.granularities) {\n internalRangeDate.granularity = foundResult.granularity || DEFAULT_GRANULARITY;\n }\n if (!dateTextInput.startTime) {\n dateTextInput.startTime = formatTime(endOfDay(foundResult.startDate));\n }\n if (!dateTextInput.endTime) {\n dateTextInput.endTime = formatTime(endOfDay(foundResult.endDate));\n }\n emit(DateRangePickerCalendarEvent.CUSTOM_RANGE, foundResult);\n }\n };\n\n const onGranularityInput = (value: CalendarGranularityType) => {\n resetCustomRangeToDefault();\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 'monthly': {\n if (savedRanges.monthly) {\n setInternalRange(savedRanges.monthly.startDate, savedRanges.monthly.endDate, value);\n break;\n }\n\n const { startDate, endDate } = adjustDateForMonthly(\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 'weekly': {\n if (savedRanges.weekly) {\n setInternalRange(savedRanges.weekly.startDate, savedRanges.weekly.endDate, value);\n break;\n }\n\n const { startDate, endDate } = adjustDateForWeekly(\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, internalRangeDate);\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 { de, enUS, fr } from 'date-fns/locale';\nimport { useI18n } from '@/utils/ts/i18n';\nimport { UseDateDisplayText } from './use-date-range-picker-calendar-text.types';\nimport { DateFormat } from '@/types';\nimport { CalendarRangeDateValue } from '@/internal';\nimport { DateRangePickerCalendarFormData } from '../components/date-range-picker-calendar/date-range-picker-calendar.types';\nimport format from 'date-fns/format';\n\nexport const useDateRangePickerCalendarText: UseDateDisplayText<CalendarRangeDateValue> = ({\n datePickerValue,\n isDateIncorrect,\n}) => {\n const { locale, t } = useI18n();\n const locales = { de, enUS, fr };\n\n const formatDate = (date: Date, dateFormat: DateFormat) =>\n format(date, dateFormat, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n const formatTime = (date: Date) =>\n format(date, DateFormat.HOUR_MINUTE_SECONDS, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n // Handle the form input text\n const textInputDisplayValue = reactive<DateRangePickerCalendarFormData>({\n startDate: datePickerValue.value?.startDate\n ? formatDate(datePickerValue.value.startDate, DateFormat.NUMERIC_DATE_YEAR_FIRST)\n : undefined,\n endDate: datePickerValue.value?.endDate\n ? formatDate(datePickerValue.value.endDate, DateFormat.NUMERIC_DATE_YEAR_FIRST)\n : undefined,\n\n // Set time if the startDate/endDate are set\n startTime: datePickerValue.value?.startDate ? formatTime(datePickerValue.value?.startDate) : undefined,\n endTime: datePickerValue.value?.endDate ? formatTime(datePickerValue.value.endDate) : undefined,\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 const { startDate, endDate } = textInputDisplayValue;\n return `${formatDate(new Date(startDate), DateFormat.FULL_DATE_MONTH_FIRST)} - ${formatDate(\n new Date(endDate),\n DateFormat.FULL_DATE_MONTH_FIRST\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} 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 || isDateIncorrect\"\n :open=\"isDateRangePickerOpen\"\n :display-value=\"dateDisplayValue\"\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=\"isDateIncorrect\"\n :id=\"dateErrorId\"\n :error-message=\"$t('provideDateInAFormat').toString()\"\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=\"allowTimeInput\"\n :quick-select-ranges=\"quickSelectRanges\"\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 :date-form-data=\"textInputDisplayValue\"\n @custom-range=\"onRangeSelectorInput\"\n @input=\"onDateRangePickerInput\"\n @error=\"onDateRangePickerError\"\n @form-date=\"onDateRangePickerFormDateInputUpdate\"\n />\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRef, watch } from 'vue';\n\n // Components\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 { de, enUS, fr } from 'date-fns/locale';\n import { generateUid } from '@/utils/ts/unique-id';\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 } from '@/directives';\n\n // Types\n import { BentoDateRangePickerEvent, BentoDateRangePickerValue } from './date-range-picker.types';\n import { DateFormat } from '@/types';\n import {\n DateRangePickerCalendarFormData,\n DateRangePickerCalendarRangeSelectorItems,\n } from './components/date-range-picker-calendar/date-range-picker-calendar.types';\n\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\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 defineComponent({\n i18n: { messages },\n name: 'bento-date-range-picker',\n components: {\n BentoTypography,\n BentoPopover,\n DateRangePickerCalendar,\n DropdownInputDefault,\n ErrorMessage,\n FieldLabel,\n },\n directives: { BentoClickOutsideDirective },\n props: {\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 * 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 emits: [BentoDateRangePickerEvent.INPUT],\n setup(props, { emit }) {\n const { locale, t } = useI18n<{ message: MessageSchema }>({ messages });\n const locales = { de, enUS, fr };\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(\n () => props.label || t('dateRangePicker', { name: datePickerContainerId })\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 descriptionConditionalClasses = computed(() => ({\n 'b-date-range-picker__description--error': !!props.errorMessage || isDateIncorrect.value,\n }));\n\n const { dateDisplayValue, textInputDisplayValue, formatTextInputDisplayValue } =\n useDateRangePickerCalendarText({\n datePickerValue: toRef(props, 'value'),\n isDateIncorrect,\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 closeDateRangePicker = () => {\n isDateRangePickerOpen.value = false;\n };\n\n const openDateRangePicker = () => {\n isDateRangePickerOpen.value = true;\n formatTextInputDisplayValue();\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) =>\n format(date, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n textInputDisplayValue.startDate = formatDate(selectedRange.startDate);\n textInputDisplayValue.endDate = formatDate(selectedRange.endDate);\n emit(BentoDateRangePickerEvent.INPUT, selectedRange);\n };\n\n const clearDateRangePickerValue = async () => {\n if (isDateIncorrect.value) {\n isDateIncorrect.value = false;\n }\n emit(BentoDateRangePickerEvent.INPUT, null);\n };\n\n const onEnterPressedOverInput = () => {\n // Close the date picker if the date is correct\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 emit(BentoDateRangePickerEvent.INPUT, { startDate: null, endDate: null });\n };\n\n const onRangeSelectorInput = (quickSelectRanges?: { startDate: Date; endDate: Date }) => {\n if (quickSelectRanges) {\n const formatDate = (date: Date) =>\n format(date, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n textInputDisplayValue.startDate = formatDate(quickSelectRanges.startDate);\n textInputDisplayValue.endDate = formatDate(quickSelectRanges.endDate);\n emit(BentoDateRangePickerEvent.INPUT, quickSelectRanges);\n }\n };\n\n return {\n // Refs\n inputContainerRef,\n\n // Values,\n dateDisplayValue,\n datePickerContainerId,\n descriptionConditionalClasses,\n isDateIncorrect,\n isDateRangePickerOpen,\n isReadOnly,\n labelId,\n descriptionId,\n dateErrorId,\n errorId,\n popoverAriaLabel,\n ariaDescribedBy,\n textInputDisplayValue,\n\n // Events\n closeDateRangePicker,\n clearDateRangePickerValue,\n openDateRangePicker,\n onRangeSelectorInput,\n onEnterPressedOverInput,\n onDateRangePickerInput,\n onDateRangePickerError,\n onDateRangePickerFormDateInputUpdate,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-picker.scss\" />\n"],"names":["isEqual","dirtyLeftDate","dirtyRightDate","requiredArgs","dateLeft","toDate","dateRight","setHours","dirtyDate","dirtyHours","date","hours","toInteger","setMinutes","dirtyMinutes","minutes","setSeconds","dirtySeconds","seconds","useGranularMinMaxDate","firstDayOfWeek","minimumDate","maximumDate","granularity","min","startOfDay","max","endOfDay","startOfMin","startOfWeek","isSameDay","addDays","endOfWeek","endOfMax","subDays","startOfMonth","addMonths","endOfMonth","subMonths","useGranularityMemory","savedRanges","reactive","type","range","DateRangePickerCalendarEvent","DateRangePickerCalendarEvent2","validDigitRegex","hourRegex","minuteRegex","validateTimeInput","event","selectionStart","isValidKey","isValidColon","formatTimeInputValue","value","formattedValue","secondToLastDigit","lastDigit","FORM_INPUT_DEBOUNCE_TIME","RANGE_SELECTOR_CUSTOM_RANGE_KEY","DEFAULT_GRANULARITY","_sfc_main$1","defineComponent","messages$1","BentoDropdown","BentoInputField","BentoSegmentedControl","BentoTypography","Calendar","props","emit","slots","locale","t","useI18n","locales","de","enUS","fr","internalRangeDate","_a","_b","_c","selectedRangeSelectorValue","ref","_e","_d","data","formInputWrapperConditionalClasses","computed","quickSelectRangeDefaultItems","selectedGranularity","granularityItems","disabled","getGranularCalendarLimits","computedMinMax","adjustDateForMonthly","adjustDateForWeekly","adjustStartDateInputForWeekly","adjustEndDateInputForWeekly","adjustStartDateInputForMonthly","adjustEndDateInputForMonthly","useGranularityAdjustments","saveRange","resetSavedRanges","resetCustomRangeToDefault","formatDate","dateToFormat","format","DateFormat","formatTime","startDateError","endDateError","startTimeError","endTimeError","dateTextInput","isValidTime","timeText","setTimeInDate","time","dateWithTime","onDateInput","selectedRange","isValidDate","dateText","isDateEnabled","onMounted","onStartDateSelected","newStartDate","onEndDateSelected","newEndDate","getDate","keyName","dateProp","validateStartDate","debounce","startDateText","endDate","onStartDateInput","formatDateInputValue","validateEndDate","endDateText","startDate","onEndDateInput","onDateInputKeyDown","validateDateInput","validateStartTime","startTimeText","validateEndTime","endTimeText","onStartTimeInput","onEndTimeInput","onTimeInputKeyDown","setInternalRange","onRangeSelectorInput","newCustomRangeValue","foundResult","onGranularityInput","previousValue","toRaw","useHasSlot","useDateRangePickerCalendarText","datePickerValue","isDateIncorrect","dateFormat","textInputDisplayValue","BentoDateRangePickerEvent","BentoDateRangePickerEvent2","_sfc_main","messages","BentoPopover","DateRangePickerCalendar","DropdownInputDefault","ErrorMessage","FieldLabel","BentoClickOutsideDirective","datePickerContainerId","generateUid","labelId","descriptionId","errorId","dateErrorId","popoverAriaLabel","inputContainerRef","isDateRangePickerOpen","isReadOnly","useFormLayoutFieldLoading","toRef","watch","descriptionConditionalClasses","dateDisplayValue","formatTextInputDisplayValue","ariaDescribedBy","quickSelectRanges","dateFormDate"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -1,12 +1,12 @@
1
1
  import { defineComponent as l, inject as n, computed as r, provide as d, ref as p } from "vue";
2
2
  import { n as c } from "./_plugin-vue2_normalizer.71e2aa87.js";
3
- import { a as f } from "./button.6e6324f0.js";
3
+ import { a as f } from "./button.9d6435ae.js";
4
4
  import { BentoInfoIcon as m } from "../info-icon.js";
5
- import { B as y } from "./index.ba6c1040.js";
6
- import { C as b } from "./copy.acc9f1b0.js";
5
+ import { B as y } from "./index.dd30e538.js";
6
+ import { C as b } from "./copy.f85700c6.js";
7
7
  import { S as v } from "./search.471270fe.js";
8
- import { b as h } from "./tooltip.8e9d733c.js";
9
- import "../assets/index28.css";
8
+ import { b as h } from "./tooltip.58ef3f4a.js";
9
+ import "../assets/index40.css";
10
10
  const _ = Symbol("structured list condensed style injection key"), u = Symbol("structured list labels width injection key"), i = ["25-75", "33-66", "42-58", "50-50"], S = {}, C = /* @__PURE__ */ l({
11
11
  ...S,
12
12
  __name: "structured-list",
@@ -144,4 +144,4 @@ export {
144
144
  _ as S,
145
145
  w as a
146
146
  };
147
- //# sourceMappingURL=index.ff09389c.js.map
147
+ //# sourceMappingURL=index.aaf965f8.js.map