buefy 1.0.0 → 1.0.2

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 (588) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +242 -0
  3. package/dist/buefy.css +15895 -0
  4. package/dist/buefy.d.ts +11706 -0
  5. package/dist/buefy.esm.js +21082 -0
  6. package/dist/buefy.esm.min.js +2 -0
  7. package/dist/buefy.js +21227 -0
  8. package/dist/buefy.min.css +1 -0
  9. package/dist/buefy.min.js +2 -0
  10. package/dist/cjs/Autocomplete-BMmOsPiK.js +864 -0
  11. package/dist/cjs/Button-Cq7yqI8p.js +118 -0
  12. package/dist/cjs/CheckRadioMixin-CDu0SN3g.js +58 -0
  13. package/dist/cjs/Checkbox-GPzAMQqM.js +85 -0
  14. package/dist/cjs/CompatFallthroughMixin-hhK0Gkhr.js +48 -0
  15. package/dist/cjs/Datepicker-B-9ReBe6.js +2120 -0
  16. package/dist/cjs/Dropdown-DtpKU9qf.js +470 -0
  17. package/dist/cjs/DropdownItem-IMOKyRGV.js +110 -0
  18. package/dist/cjs/Field-19ZCJFF8.js +405 -0
  19. package/dist/cjs/FormElementMixin-DavX4iOv.js +170 -0
  20. package/dist/cjs/Icon-lsDKE2wQ.js +184 -0
  21. package/dist/cjs/Image-CocPwU3n.js +356 -0
  22. package/dist/cjs/InjectedChildMixin-CUKn09dB.js +150 -0
  23. package/dist/cjs/Input-BcloGeZ3.js +350 -0
  24. package/dist/cjs/Loading-GqqqjipO.js +145 -0
  25. package/dist/cjs/MessageMixin-bGuuzfev.js +136 -0
  26. package/dist/cjs/Modal-CYpSQe2Q.js +315 -0
  27. package/dist/cjs/NoticeMixin--3RjH43z.js +163 -0
  28. package/dist/cjs/Pagination-D1MVdiLp.js +547 -0
  29. package/dist/cjs/Progress-DT9Qc8Id.js +177 -0
  30. package/dist/cjs/Select-DayPKwCY.js +147 -0
  31. package/dist/cjs/SlotComponent-BruGdRW3.js +41 -0
  32. package/dist/cjs/TabbedChildMixin-B3JUUwcf.js +211 -0
  33. package/dist/cjs/Tag-BprnwJJ1.js +167 -0
  34. package/dist/cjs/Timepicker-CDZ3V-2J.js +283 -0
  35. package/dist/cjs/TimepickerMixin-C9WVvcUL.js +666 -0
  36. package/dist/cjs/Tooltip-Cgighv0j.js +393 -0
  37. package/dist/cjs/_plugin-vue_export-helper-Die8u8yB.js +11 -0
  38. package/dist/cjs/autocomplete.js +23 -0
  39. package/dist/cjs/breadcrumb.js +107 -0
  40. package/dist/cjs/button.js +20 -0
  41. package/dist/cjs/carousel.js +825 -0
  42. package/dist/cjs/checkbox.js +88 -0
  43. package/dist/cjs/clockpicker.js +668 -0
  44. package/dist/cjs/collapse.js +99 -0
  45. package/dist/cjs/colorpicker.js +25 -0
  46. package/dist/cjs/config-DR826Ki2.js +103 -0
  47. package/dist/cjs/config.js +18 -0
  48. package/dist/cjs/datepicker.js +28 -0
  49. package/dist/cjs/datetimepicker.js +483 -0
  50. package/dist/cjs/dialog.js +506 -0
  51. package/dist/cjs/dropdown.js +23 -0
  52. package/dist/cjs/field.js +19 -0
  53. package/dist/cjs/helpers.js +276 -0
  54. package/dist/cjs/icon.js +19 -0
  55. package/dist/cjs/image.js +19 -0
  56. package/dist/cjs/index-DiQy3SCb.js +1942 -0
  57. package/dist/cjs/index.js +274 -0
  58. package/dist/cjs/input.js +22 -0
  59. package/dist/cjs/loading.js +87 -0
  60. package/dist/cjs/menu.js +340 -0
  61. package/dist/cjs/message.js +119 -0
  62. package/dist/cjs/modal.js +103 -0
  63. package/dist/cjs/navbar.js +572 -0
  64. package/dist/cjs/notification.js +281 -0
  65. package/dist/cjs/numberinput.js +386 -0
  66. package/dist/cjs/pagination.js +22 -0
  67. package/dist/cjs/plugins-DbyYGVpp.js +16 -0
  68. package/dist/cjs/progress.js +91 -0
  69. package/dist/cjs/radio.js +137 -0
  70. package/dist/cjs/rate.js +197 -0
  71. package/dist/cjs/select.js +22 -0
  72. package/dist/cjs/sidebar.js +309 -0
  73. package/dist/cjs/skeleton.js +78 -0
  74. package/dist/cjs/slider.js +699 -0
  75. package/dist/cjs/snackbar.js +224 -0
  76. package/dist/cjs/ssr-DVRFTu_P.js +8 -0
  77. package/dist/cjs/steps.js +347 -0
  78. package/dist/cjs/switch.js +161 -0
  79. package/dist/cjs/table.js +2391 -0
  80. package/dist/cjs/tabs.js +258 -0
  81. package/dist/cjs/tag.js +44 -0
  82. package/dist/cjs/taginput.js +425 -0
  83. package/dist/cjs/timepicker.js +29 -0
  84. package/dist/cjs/toast.js +162 -0
  85. package/dist/cjs/tooltip.js +19 -0
  86. package/dist/cjs/trapFocus-BlX6xykt.js +53 -0
  87. package/dist/cjs/upload.js +195 -0
  88. package/dist/components/autocomplete/index.js +1647 -0
  89. package/dist/components/autocomplete/index.min.js +2 -0
  90. package/dist/components/breadcrumb/index.js +173 -0
  91. package/dist/components/breadcrumb/index.min.js +2 -0
  92. package/dist/components/button/index.js +334 -0
  93. package/dist/components/button/index.min.js +2 -0
  94. package/dist/components/carousel/index.js +1534 -0
  95. package/dist/components/carousel/index.min.js +2 -0
  96. package/dist/components/checkbox/index.js +236 -0
  97. package/dist/components/checkbox/index.min.js +2 -0
  98. package/dist/components/clockpicker/index.js +2636 -0
  99. package/dist/components/clockpicker/index.min.js +2 -0
  100. package/dist/components/collapse/index.js +111 -0
  101. package/dist/components/collapse/index.min.js +2 -0
  102. package/dist/components/colorpicker/index.js +4251 -0
  103. package/dist/components/colorpicker/index.min.js +2 -0
  104. package/dist/components/datepicker/index.js +4110 -0
  105. package/dist/components/datepicker/index.min.js +2 -0
  106. package/dist/components/datetimepicker/index.js +5479 -0
  107. package/dist/components/datetimepicker/index.min.js +2 -0
  108. package/dist/components/dialog/index.js +1202 -0
  109. package/dist/components/dialog/index.min.js +2 -0
  110. package/dist/components/dropdown/index.js +680 -0
  111. package/dist/components/dropdown/index.min.js +2 -0
  112. package/dist/components/field/index.js +439 -0
  113. package/dist/components/field/index.min.js +2 -0
  114. package/dist/components/icon/index.js +212 -0
  115. package/dist/components/icon/index.min.js +2 -0
  116. package/dist/components/image/index.js +396 -0
  117. package/dist/components/image/index.min.js +2 -0
  118. package/dist/components/input/index.js +764 -0
  119. package/dist/components/input/index.min.js +2 -0
  120. package/dist/components/loading/index.js +280 -0
  121. package/dist/components/loading/index.min.js +2 -0
  122. package/dist/components/menu/index.js +586 -0
  123. package/dist/components/menu/index.min.js +2 -0
  124. package/dist/components/message/index.js +611 -0
  125. package/dist/components/message/index.min.js +2 -0
  126. package/dist/components/modal/index.js +516 -0
  127. package/dist/components/modal/index.min.js +2 -0
  128. package/dist/components/navbar/index.js +634 -0
  129. package/dist/components/navbar/index.min.js +2 -0
  130. package/dist/components/notification/index.js +976 -0
  131. package/dist/components/notification/index.min.js +2 -0
  132. package/dist/components/numberinput/index.js +1128 -0
  133. package/dist/components/numberinput/index.min.js +2 -0
  134. package/dist/components/pagination/index.js +764 -0
  135. package/dist/components/pagination/index.min.js +2 -0
  136. package/dist/components/progress/index.js +280 -0
  137. package/dist/components/progress/index.min.js +2 -0
  138. package/dist/components/radio/index.js +208 -0
  139. package/dist/components/radio/index.min.js +2 -0
  140. package/dist/components/rate/index.js +391 -0
  141. package/dist/components/rate/index.min.js +2 -0
  142. package/dist/components/select/index.js +560 -0
  143. package/dist/components/select/index.min.js +2 -0
  144. package/dist/components/sidebar/index.js +337 -0
  145. package/dist/components/sidebar/index.min.js +2 -0
  146. package/dist/components/skeleton/index.js +87 -0
  147. package/dist/components/skeleton/index.min.js +2 -0
  148. package/dist/components/slider/index.js +1171 -0
  149. package/dist/components/slider/index.min.js +2 -0
  150. package/dist/components/snackbar/index.js +439 -0
  151. package/dist/components/snackbar/index.min.js +2 -0
  152. package/dist/components/steps/index.js +925 -0
  153. package/dist/components/steps/index.min.js +2 -0
  154. package/dist/components/switch/index.js +182 -0
  155. package/dist/components/switch/index.min.js +2 -0
  156. package/dist/components/table/index.js +4208 -0
  157. package/dist/components/table/index.min.js +2 -0
  158. package/dist/components/tabs/index.js +837 -0
  159. package/dist/components/tabs/index.min.js +2 -0
  160. package/dist/components/tag/index.js +396 -0
  161. package/dist/components/tag/index.min.js +2 -0
  162. package/dist/components/taginput/index.js +2209 -0
  163. package/dist/components/taginput/index.min.js +2 -0
  164. package/dist/components/timepicker/index.js +2906 -0
  165. package/dist/components/timepicker/index.min.js +2 -0
  166. package/dist/components/toast/index.js +377 -0
  167. package/dist/components/toast/index.min.js +2 -0
  168. package/dist/components/tooltip/index.js +445 -0
  169. package/dist/components/tooltip/index.min.js +2 -0
  170. package/dist/components/upload/index.js +426 -0
  171. package/dist/components/upload/index.min.js +2 -0
  172. package/dist/esm/Autocomplete-CjbTh9D8.js +862 -0
  173. package/dist/esm/Button-DyUYShTZ.js +116 -0
  174. package/dist/esm/CheckRadioMixin-DSD_rjC8.js +56 -0
  175. package/dist/esm/Checkbox-KUMz0sfA.js +83 -0
  176. package/dist/esm/CompatFallthroughMixin-C8LPuwDr.js +46 -0
  177. package/dist/esm/Datepicker-Bl8Wfdkn.js +2118 -0
  178. package/dist/esm/Dropdown-CGTYVyoL.js +467 -0
  179. package/dist/esm/DropdownItem-Cn3nM0A3.js +108 -0
  180. package/dist/esm/Field-B7bX_uUg.js +403 -0
  181. package/dist/esm/FormElementMixin-Dd_wkBN5.js +168 -0
  182. package/dist/esm/Icon-DPyGDeRK.js +182 -0
  183. package/dist/esm/Image-DhX-4hlV.js +354 -0
  184. package/dist/esm/InjectedChildMixin-D2K-FwuO.js +145 -0
  185. package/dist/esm/Input-C4L520az.js +348 -0
  186. package/dist/esm/Loading-tuQoo6TU.js +143 -0
  187. package/dist/esm/MessageMixin-CQ7LIdvq.js +134 -0
  188. package/dist/esm/Modal-tfvyhxw_.js +313 -0
  189. package/dist/esm/NoticeMixin-ByNlva3T.js +161 -0
  190. package/dist/esm/Pagination-B-LAJQay.js +543 -0
  191. package/dist/esm/Progress-BPGTVZgr.js +174 -0
  192. package/dist/esm/Select-bl4qUzij.js +145 -0
  193. package/dist/esm/SlotComponent-BwNpVnfH.js +39 -0
  194. package/dist/esm/TabbedChildMixin-C4i6WP9j.js +208 -0
  195. package/dist/esm/Tag-jS5Bcj6N.js +165 -0
  196. package/dist/esm/Timepicker-DnkqnOBT.js +281 -0
  197. package/dist/esm/TimepickerMixin-Bikh6_Fg.js +664 -0
  198. package/dist/esm/Tooltip-CtDSXAqa.js +391 -0
  199. package/dist/esm/_plugin-vue_export-helper-OJRSZE6i.js +9 -0
  200. package/dist/esm/autocomplete.js +18 -0
  201. package/dist/esm/breadcrumb.js +101 -0
  202. package/dist/esm/button.js +15 -0
  203. package/dist/esm/carousel.js +818 -0
  204. package/dist/esm/checkbox.js +82 -0
  205. package/dist/esm/clockpicker.js +663 -0
  206. package/dist/esm/collapse.js +94 -0
  207. package/dist/esm/colorpicker.js +16 -0
  208. package/dist/esm/config-CKuo-p6e.js +100 -0
  209. package/dist/esm/config.js +14 -0
  210. package/dist/esm/datepicker.js +23 -0
  211. package/dist/esm/datetimepicker.js +478 -0
  212. package/dist/esm/dialog.js +500 -0
  213. package/dist/esm/dropdown.js +17 -0
  214. package/dist/esm/field.js +14 -0
  215. package/dist/esm/helpers.js +247 -0
  216. package/dist/esm/icon.js +14 -0
  217. package/dist/esm/image.js +14 -0
  218. package/dist/esm/index-CQegEsxK.js +1938 -0
  219. package/dist/esm/index.js +164 -0
  220. package/dist/esm/input.js +17 -0
  221. package/dist/esm/loading.js +81 -0
  222. package/dist/esm/menu.js +333 -0
  223. package/dist/esm/message.js +114 -0
  224. package/dist/esm/modal.js +97 -0
  225. package/dist/esm/navbar.js +565 -0
  226. package/dist/esm/notification.js +275 -0
  227. package/dist/esm/numberinput.js +381 -0
  228. package/dist/esm/pagination.js +16 -0
  229. package/dist/esm/plugins-B172kuKE.js +13 -0
  230. package/dist/esm/progress.js +85 -0
  231. package/dist/esm/radio.js +131 -0
  232. package/dist/esm/rate.js +192 -0
  233. package/dist/esm/select.js +17 -0
  234. package/dist/esm/sidebar.js +304 -0
  235. package/dist/esm/skeleton.js +73 -0
  236. package/dist/esm/slider.js +693 -0
  237. package/dist/esm/snackbar.js +218 -0
  238. package/dist/esm/ssr-C7yEpGLm.js +5 -0
  239. package/dist/esm/steps.js +341 -0
  240. package/dist/esm/switch.js +156 -0
  241. package/dist/esm/table.js +2385 -0
  242. package/dist/esm/tabs.js +252 -0
  243. package/dist/esm/tag.js +38 -0
  244. package/dist/esm/taginput.js +420 -0
  245. package/dist/esm/timepicker.js +24 -0
  246. package/dist/esm/toast.js +156 -0
  247. package/dist/esm/tooltip.js +14 -0
  248. package/dist/esm/trapFocus-KHP_kCNE.js +51 -0
  249. package/dist/esm/upload.js +190 -0
  250. package/dist/tsdoc-metadata.json +11 -0
  251. package/package.json +73 -6
  252. package/src/components/autocomplete/Autocomplete.spec.ts +783 -0
  253. package/src/components/autocomplete/Autocomplete.vue +966 -0
  254. package/src/components/autocomplete/__snapshots__/Autocomplete.spec.ts.snap +21 -0
  255. package/src/components/autocomplete/index.ts +16 -0
  256. package/src/components/breadcrumb/Breadcrumb.spec.ts +65 -0
  257. package/src/components/breadcrumb/Breadcrumb.vue +42 -0
  258. package/src/components/breadcrumb/BreadcrumbItem.spec.ts +74 -0
  259. package/src/components/breadcrumb/BreadcrumbItem.vue +34 -0
  260. package/src/components/breadcrumb/__snapshots__/Breadcrumb.spec.ts.snap +7 -0
  261. package/src/components/breadcrumb/__snapshots__/BreadcrumbItem.spec.ts.snap +3 -0
  262. package/src/components/breadcrumb/index.ts +19 -0
  263. package/src/components/button/Button.spec.ts +117 -0
  264. package/src/components/button/Button.vue +112 -0
  265. package/src/components/button/__snapshots__/Button.spec.ts.snap +9 -0
  266. package/src/components/button/index.ts +16 -0
  267. package/src/components/carousel/Carousel.spec.ts +304 -0
  268. package/src/components/carousel/Carousel.vue +389 -0
  269. package/src/components/carousel/CarouselItem.spec.ts +105 -0
  270. package/src/components/carousel/CarouselItem.vue +38 -0
  271. package/src/components/carousel/CarouselList.spec.ts +172 -0
  272. package/src/components/carousel/CarouselList.vue +364 -0
  273. package/src/components/carousel/__snapshots__/Carousel.spec.ts.snap +19 -0
  274. package/src/components/carousel/__snapshots__/CarouselItem.spec.ts.snap +7 -0
  275. package/src/components/carousel/__snapshots__/CarouselList.spec.ts.snap +36 -0
  276. package/src/components/carousel/index.ts +23 -0
  277. package/src/components/carousel/types.ts +17 -0
  278. package/src/components/checkbox/Checkbox.spec.ts +40 -0
  279. package/src/components/checkbox/Checkbox.vue +63 -0
  280. package/src/components/checkbox/CheckboxButton.spec.ts +46 -0
  281. package/src/components/checkbox/CheckboxButton.vue +59 -0
  282. package/src/components/checkbox/__snapshots__/Checkbox.spec.ts.snap +9 -0
  283. package/src/components/checkbox/__snapshots__/CheckboxButton.spec.ts.snap +3 -0
  284. package/src/components/checkbox/index.ts +20 -0
  285. package/src/components/clockpicker/Clockpicker.spec.ts +161 -0
  286. package/src/components/clockpicker/Clockpicker.vue +311 -0
  287. package/src/components/clockpicker/ClockpickerFace.spec.ts +99 -0
  288. package/src/components/clockpicker/ClockpickerFace.vue +272 -0
  289. package/src/components/clockpicker/__snapshots__/Clockpicker.spec.ts.snap +36 -0
  290. package/src/components/clockpicker/__snapshots__/ClockpickerFace.spec.ts.snap +9 -0
  291. package/src/components/clockpicker/index.ts +16 -0
  292. package/src/components/collapse/Collapse.spec.ts +106 -0
  293. package/src/components/collapse/Collapse.vue +98 -0
  294. package/src/components/collapse/__snapshots__/Collapse.spec.ts.snap +10 -0
  295. package/src/components/collapse/index.ts +16 -0
  296. package/src/components/colorpicker/Colorpicker.spec.ts +22 -0
  297. package/src/components/colorpicker/Colorpicker.vue +416 -0
  298. package/src/components/colorpicker/ColorpickerAlphaSlider.spec.ts +17 -0
  299. package/src/components/colorpicker/ColorpickerAlphaSlider.vue +205 -0
  300. package/src/components/colorpicker/ColorpickerHSLRepresentationSquare.spec.ts +23 -0
  301. package/src/components/colorpicker/ColorpickerHSLRepresentationSquare.vue +380 -0
  302. package/src/components/colorpicker/ColorpickerHSLRepresentationTriangle.spec.ts +23 -0
  303. package/src/components/colorpicker/ColorpickerHSLRepresentationTriangle.vue +456 -0
  304. package/src/components/colorpicker/__snapshots__/Colorpicker.spec.ts.snap +77 -0
  305. package/src/components/colorpicker/__snapshots__/ColorpickerAlphaSlider.spec.ts.snap +9 -0
  306. package/src/components/colorpicker/__snapshots__/ColorpickerHSLRepresentationSquare.spec.ts.snap +12 -0
  307. package/src/components/colorpicker/__snapshots__/ColorpickerHSLRepresentationTriangle.spec.ts.snap +36 -0
  308. package/src/components/colorpicker/index.ts +16 -0
  309. package/src/components/datepicker/Datepicker.spec.ts +482 -0
  310. package/src/components/datepicker/Datepicker.vue +908 -0
  311. package/src/components/datepicker/DatepickerMonth.spec.ts +346 -0
  312. package/src/components/datepicker/DatepickerMonth.vue +444 -0
  313. package/src/components/datepicker/DatepickerTable.spec.ts +290 -0
  314. package/src/components/datepicker/DatepickerTable.vue +398 -0
  315. package/src/components/datepicker/DatepickerTableRow.spec.ts +300 -0
  316. package/src/components/datepicker/DatepickerTableRow.vue +416 -0
  317. package/src/components/datepicker/__snapshots__/Datepicker.spec.ts.snap +54 -0
  318. package/src/components/datepicker/__snapshots__/DatepickerMonth.spec.ts.snap +33 -0
  319. package/src/components/datepicker/__snapshots__/DatepickerTable.spec.ts.snap +16 -0
  320. package/src/components/datepicker/__snapshots__/DatepickerTableRow.spec.ts.snap +23 -0
  321. package/src/components/datepicker/index.ts +17 -0
  322. package/src/components/datepicker/types.ts +41 -0
  323. package/src/components/datetimepicker/Datetimepicker.spec.ts +132 -0
  324. package/src/components/datetimepicker/Datetimepicker.vue +491 -0
  325. package/src/components/datetimepicker/index.ts +16 -0
  326. package/src/components/dialog/Dialog.spec.ts +108 -0
  327. package/src/components/dialog/Dialog.vue +300 -0
  328. package/src/components/dialog/index.ts +169 -0
  329. package/src/components/dropdown/Dropdown.spec.ts +229 -0
  330. package/src/components/dropdown/Dropdown.vue +491 -0
  331. package/src/components/dropdown/DropdownItem.spec.ts +78 -0
  332. package/src/components/dropdown/DropdownItem.vue +112 -0
  333. package/src/components/dropdown/__snapshots__/Dropdown.spec.ts.snap +15 -0
  334. package/src/components/dropdown/__snapshots__/DropdownItem.spec.ts.snap +3 -0
  335. package/src/components/dropdown/index.ts +20 -0
  336. package/src/components/field/Field.spec.ts +324 -0
  337. package/src/components/field/Field.vue +316 -0
  338. package/src/components/field/FieldBody.spec.ts +96 -0
  339. package/src/components/field/FieldBody.vue +74 -0
  340. package/src/components/field/__snapshots__/Field.spec.ts.snap +8 -0
  341. package/src/components/field/__snapshots__/FieldBody.spec.ts.snap +3 -0
  342. package/src/components/field/index.ts +16 -0
  343. package/src/components/icon/Icon.spec.ts +142 -0
  344. package/src/components/icon/Icon.vue +120 -0
  345. package/src/components/icon/__snapshots__/Icon.spec.ts.snap +3 -0
  346. package/src/components/icon/index.ts +17 -0
  347. package/src/components/image/Image.spec.ts +218 -0
  348. package/src/components/image/Image.vue +358 -0
  349. package/src/components/image/__snapshots__/Image.spec.ts.snap +37 -0
  350. package/src/components/image/index.ts +16 -0
  351. package/src/components/index.ts +179 -0
  352. package/src/components/input/Input.spec.ts +396 -0
  353. package/src/components/input/Input.vue +335 -0
  354. package/src/components/input/__snapshots__/Input.spec.ts.snap +9 -0
  355. package/src/components/input/index.ts +17 -0
  356. package/src/components/loading/Loading.spec.ts +151 -0
  357. package/src/components/loading/Loading.vue +135 -0
  358. package/src/components/loading/__snapshots__/Loading.spec.ts.snap +10 -0
  359. package/src/components/loading/index.ts +91 -0
  360. package/src/components/menu/Menu.spec.ts +21 -0
  361. package/src/components/menu/Menu.vue +31 -0
  362. package/src/components/menu/MenuItem.spec.ts +92 -0
  363. package/src/components/menu/MenuItem.vue +168 -0
  364. package/src/components/menu/MenuItemContainerMixin.ts +72 -0
  365. package/src/components/menu/MenuList.spec.ts +35 -0
  366. package/src/components/menu/MenuList.vue +47 -0
  367. package/src/components/menu/__snapshots__/Menu.spec.ts.snap +3 -0
  368. package/src/components/menu/__snapshots__/MenuItem.spec.ts.snap +9 -0
  369. package/src/components/menu/__snapshots__/MenuList.spec.ts.snap +8 -0
  370. package/src/components/menu/index.ts +25 -0
  371. package/src/components/message/Message.spec.ts +30 -0
  372. package/src/components/message/Message.vue +73 -0
  373. package/src/components/message/__snapshots__/Message.spec.ts.snap +11 -0
  374. package/src/components/message/index.ts +15 -0
  375. package/src/components/modal/Modal.spec.ts +167 -0
  376. package/src/components/modal/Modal.vue +335 -0
  377. package/src/components/modal/__snapshots__/Modal.spec.ts.snap +10 -0
  378. package/src/components/modal/index.ts +107 -0
  379. package/src/components/navbar/NavBar.spec.ts +78 -0
  380. package/src/components/navbar/NavBarBurger.spec.ts +30 -0
  381. package/src/components/navbar/NavBarItem.spec.ts +92 -0
  382. package/src/components/navbar/Navbar.vue +274 -0
  383. package/src/components/navbar/NavbarBurger.vue +29 -0
  384. package/src/components/navbar/NavbarDropdown.spec.ts +84 -0
  385. package/src/components/navbar/NavbarDropdown.vue +115 -0
  386. package/src/components/navbar/NavbarItem.vue +97 -0
  387. package/src/components/navbar/__snapshots__/NavBar.spec.ts.snap +11 -0
  388. package/src/components/navbar/__snapshots__/NavBarBurger.spec.ts.snap +3 -0
  389. package/src/components/navbar/__snapshots__/NavBarItem.spec.ts.snap +3 -0
  390. package/src/components/navbar/__snapshots__/NavbarDropdown.spec.ts.snap +7 -0
  391. package/src/components/navbar/index.ts +22 -0
  392. package/src/components/notification/Notification.spec.ts +21 -0
  393. package/src/components/notification/Notification.vue +77 -0
  394. package/src/components/notification/NotificationNotice.vue +76 -0
  395. package/src/components/notification/__snapshots__/Notification.spec.ts.snap +10 -0
  396. package/src/components/notification/index.ts +121 -0
  397. package/src/components/numberinput/Numberinput.spec.ts +445 -0
  398. package/src/components/numberinput/Numberinput.vue +372 -0
  399. package/src/components/numberinput/index.ts +16 -0
  400. package/src/components/pagination/Pagination.spec.ts +94 -0
  401. package/src/components/pagination/Pagination.vue +434 -0
  402. package/src/components/pagination/PaginationButton.spec.ts +42 -0
  403. package/src/components/pagination/PaginationButton.vue +59 -0
  404. package/src/components/pagination/__snapshots__/Pagination.spec.ts.snap +22 -0
  405. package/src/components/pagination/__snapshots__/PaginationButton.spec.ts.snap +3 -0
  406. package/src/components/pagination/index.ts +19 -0
  407. package/src/components/pagination/types.ts +11 -0
  408. package/src/components/progress/Progress.spec.ts +81 -0
  409. package/src/components/progress/Progress.vue +168 -0
  410. package/src/components/progress/ProgressBar.spec.ts +45 -0
  411. package/src/components/progress/ProgressBar.vue +74 -0
  412. package/src/components/progress/__snapshots__/Progress.spec.ts.snap +7 -0
  413. package/src/components/progress/__snapshots__/ProgressBar.spec.ts.snap +7 -0
  414. package/src/components/progress/index.ts +18 -0
  415. package/src/components/radio/Radio.spec.ts +40 -0
  416. package/src/components/radio/Radio.vue +35 -0
  417. package/src/components/radio/RadioButton.spec.ts +40 -0
  418. package/src/components/radio/RadioButton.vue +69 -0
  419. package/src/components/radio/__snapshots__/Radio.spec.ts.snap +3 -0
  420. package/src/components/radio/__snapshots__/RadioButton.spec.ts.snap +3 -0
  421. package/src/components/radio/index.ts +18 -0
  422. package/src/components/rate/Rate.spec.ts +90 -0
  423. package/src/components/rate/Rate.vue +158 -0
  424. package/src/components/rate/index.ts +15 -0
  425. package/src/components/select/Select.spec.ts +74 -0
  426. package/src/components/select/Select.vue +118 -0
  427. package/src/components/select/__snapshots__/Select.spec.ts.snap +7 -0
  428. package/src/components/select/index.ts +16 -0
  429. package/src/components/sidebar/Sidebar.spec.ts +107 -0
  430. package/src/components/sidebar/Sidebar.vue +316 -0
  431. package/src/components/sidebar/__snapshots__/Sidebar.spec.ts.snap +25 -0
  432. package/src/components/sidebar/index.ts +16 -0
  433. package/src/components/skeleton/Skeleton.spec.ts +16 -0
  434. package/src/components/skeleton/Skeleton.vue +98 -0
  435. package/src/components/skeleton/__snapshots__/Skeleton.spec.ts.snap +7 -0
  436. package/src/components/skeleton/index.ts +18 -0
  437. package/src/components/slider/Slider.spec.ts +115 -0
  438. package/src/components/slider/Slider.vue +374 -0
  439. package/src/components/slider/SliderThumb.spec.ts +176 -0
  440. package/src/components/slider/SliderThumb.vue +251 -0
  441. package/src/components/slider/SliderTick.spec.ts +33 -0
  442. package/src/components/slider/SliderTick.vue +50 -0
  443. package/src/components/slider/__snapshots__/Slider.spec.ts.snap +12 -0
  444. package/src/components/slider/__snapshots__/SliderThumb.spec.ts.snap +16 -0
  445. package/src/components/slider/__snapshots__/SliderTick.spec.ts.snap +7 -0
  446. package/src/components/slider/index.ts +19 -0
  447. package/src/components/slider/types.ts +34 -0
  448. package/src/components/snackbar/Snackbar.spec.ts +35 -0
  449. package/src/components/snackbar/Snackbar.vue +88 -0
  450. package/src/components/snackbar/__snapshots__/Snackbar.spec.ts.snap +12 -0
  451. package/src/components/snackbar/index.ts +118 -0
  452. package/src/components/steps/StepItem.spec.ts +114 -0
  453. package/src/components/steps/StepItem.vue +26 -0
  454. package/src/components/steps/Steps.spec.ts +125 -0
  455. package/src/components/steps/Steps.vue +273 -0
  456. package/src/components/steps/__snapshots__/StepItem.spec.ts.snap +7 -0
  457. package/src/components/steps/__snapshots__/Steps.spec.ts.snap +40 -0
  458. package/src/components/steps/index.ts +19 -0
  459. package/src/components/switch/Switch.spec.ts +74 -0
  460. package/src/components/switch/Switch.vue +146 -0
  461. package/src/components/switch/__snapshots__/Switch.spec.ts.snap +3 -0
  462. package/src/components/switch/index.ts +16 -0
  463. package/src/components/table/Table.spec.ts +622 -0
  464. package/src/components/table/Table.vue +1770 -0
  465. package/src/components/table/TableColumn.spec.ts +85 -0
  466. package/src/components/table/TableColumn.vue +140 -0
  467. package/src/components/table/TableMobileSort.spec.ts +47 -0
  468. package/src/components/table/TableMobileSort.vue +236 -0
  469. package/src/components/table/TablePagination.vue +86 -0
  470. package/src/components/table/__snapshots__/Table.spec.ts.snap +24 -0
  471. package/src/components/table/__snapshots__/TableMobileSort.spec.ts.snap +12 -0
  472. package/src/components/table/index.ts +32 -0
  473. package/src/components/table/mockTableColumn.ts +110 -0
  474. package/src/components/table/types.ts +110 -0
  475. package/src/components/tabs/TabItem.spec.ts +203 -0
  476. package/src/components/tabs/TabItem.vue +19 -0
  477. package/src/components/tabs/Tabs.spec.ts +122 -0
  478. package/src/components/tabs/Tabs.vue +204 -0
  479. package/src/components/tabs/__snapshots__/TabItem.spec.ts.snap +7 -0
  480. package/src/components/tabs/__snapshots__/Tabs.spec.ts.snap +33 -0
  481. package/src/components/tabs/index.ts +19 -0
  482. package/src/components/tag/Tag.spec.ts +32 -0
  483. package/src/components/tag/Tag.vue +132 -0
  484. package/src/components/tag/Taglist.spec.ts +21 -0
  485. package/src/components/tag/Taglist.vue +16 -0
  486. package/src/components/tag/__snapshots__/Tag.spec.ts.snap +6 -0
  487. package/src/components/tag/__snapshots__/Taglist.spec.ts.snap +3 -0
  488. package/src/components/tag/index.ts +19 -0
  489. package/src/components/taginput/Taginput.spec.ts +132 -0
  490. package/src/components/taginput/Taginput.vue +415 -0
  491. package/src/components/taginput/__snapshots__/Taginput.spec.ts.snap +10 -0
  492. package/src/components/taginput/index.ts +16 -0
  493. package/src/components/timepicker/Timepicker.spec.ts +108 -0
  494. package/src/components/timepicker/Timepicker.vue +183 -0
  495. package/src/components/timepicker/__snapshots__/Timepicker.spec.ts.snap +41 -0
  496. package/src/components/timepicker/index.ts +17 -0
  497. package/src/components/toast/Toast.spec.ts +74 -0
  498. package/src/components/toast/Toast.vue +46 -0
  499. package/src/components/toast/__snapshots__/Toast.spec.ts.snap +10 -0
  500. package/src/components/toast/index.ts +120 -0
  501. package/src/components/tooltip/Tooltip.spec.ts +64 -0
  502. package/src/components/tooltip/Tooltip.vue +393 -0
  503. package/src/components/tooltip/__snapshots__/Tooltip.spec.ts.snap +12 -0
  504. package/src/components/tooltip/index.ts +16 -0
  505. package/src/components/upload/Upload.spec.ts +62 -0
  506. package/src/components/upload/Upload.vue +188 -0
  507. package/src/components/upload/__snapshots__/Upload.spec.ts.snap +3 -0
  508. package/src/components/upload/index.ts +15 -0
  509. package/src/directives/clickOutside.ts +113 -0
  510. package/src/directives/trapFocus.ts +61 -0
  511. package/src/index.ts +43 -0
  512. package/src/scss/buefy-build.scss +6 -0
  513. package/src/scss/buefy.scss +39 -0
  514. package/src/scss/components/_autocomplete.scss +39 -0
  515. package/src/scss/components/_carousel.scss +204 -0
  516. package/src/scss/components/_checkbox.scss +106 -0
  517. package/src/scss/components/_clockpicker.scss +283 -0
  518. package/src/scss/components/_collapse.scss +9 -0
  519. package/src/scss/components/_colorpicker.scss +283 -0
  520. package/src/scss/components/_datepicker.scss +220 -0
  521. package/src/scss/components/_dialog.scss +54 -0
  522. package/src/scss/components/_dropdown.scss +143 -0
  523. package/src/scss/components/_form.scss +309 -0
  524. package/src/scss/components/_icon.scss +16 -0
  525. package/src/scss/components/_image.scss +20 -0
  526. package/src/scss/components/_loading.scss +45 -0
  527. package/src/scss/components/_menu.scss +11 -0
  528. package/src/scss/components/_message.scss +16 -0
  529. package/src/scss/components/_modal.scss +37 -0
  530. package/src/scss/components/_navbar.scss +22 -0
  531. package/src/scss/components/_notices.scss +144 -0
  532. package/src/scss/components/_notification.scss +8 -0
  533. package/src/scss/components/_numberinput.scss +33 -0
  534. package/src/scss/components/_pagination.scss +63 -0
  535. package/src/scss/components/_progress.scss +105 -0
  536. package/src/scss/components/_radio.scss +123 -0
  537. package/src/scss/components/_rate.scss +72 -0
  538. package/src/scss/components/_select.scss +38 -0
  539. package/src/scss/components/_sidebar.scss +107 -0
  540. package/src/scss/components/_skeleton.scss +66 -0
  541. package/src/scss/components/_slider.scss +162 -0
  542. package/src/scss/components/_steps.scss +491 -0
  543. package/src/scss/components/_switch.scss +214 -0
  544. package/src/scss/components/_table.scss +322 -0
  545. package/src/scss/components/_tabs.scss +197 -0
  546. package/src/scss/components/_tag.scss +36 -0
  547. package/src/scss/components/_taginput.scss +73 -0
  548. package/src/scss/components/_timepicker.scss +73 -0
  549. package/src/scss/components/_tooltip.scss +192 -0
  550. package/src/scss/components/_upload.scss +62 -0
  551. package/src/scss/utils/_all.scss +4 -0
  552. package/src/scss/utils/_animations.scss +183 -0
  553. package/src/scss/utils/_functions.scss +49 -0
  554. package/src/scss/utils/_helpers.scss +6 -0
  555. package/src/scss/utils/_variables-ext.scss +2 -0
  556. package/src/scss/utils/_variables.scss +16 -0
  557. package/src/utils/CheckRadioMixin.spec.ts +28 -0
  558. package/src/utils/CheckRadioMixin.ts +61 -0
  559. package/src/utils/CompatFallthroughMixin.ts +34 -0
  560. package/src/utils/ConfigComponent.ts +12 -0
  561. package/src/utils/FormElementMixin.spec.ts +41 -0
  562. package/src/utils/FormElementMixin.ts +206 -0
  563. package/src/utils/InjectedChildMixin.ts +139 -0
  564. package/src/utils/MessageMixin.spec.ts +51 -0
  565. package/src/utils/MessageMixin.ts +138 -0
  566. package/src/utils/NoticeMixin.spec.ts +55 -0
  567. package/src/utils/NoticeMixin.ts +181 -0
  568. package/src/utils/ProvideInjectTypes.ts +20 -0
  569. package/src/utils/ProviderParentMixin.ts +105 -0
  570. package/src/utils/SlotComponent.spec.ts +55 -0
  571. package/src/utils/SlotComponent.ts +38 -0
  572. package/src/utils/TabbedChildMixin.ts +96 -0
  573. package/src/utils/TabbedMixin.ts +166 -0
  574. package/src/utils/TabbedTypes.ts +33 -0
  575. package/src/utils/TimepickerMixin.spec.ts +75 -0
  576. package/src/utils/TimepickerMixin.ts +767 -0
  577. package/src/utils/color.spec.ts +55 -0
  578. package/src/utils/color.ts +507 -0
  579. package/src/utils/config.spec.ts +11 -0
  580. package/src/utils/config.ts +619 -0
  581. package/src/utils/debounce.spec.ts +52 -0
  582. package/src/utils/debounce.ts +20 -0
  583. package/src/utils/helpers.spec.ts +257 -0
  584. package/src/utils/helpers.ts +527 -0
  585. package/src/utils/icons.ts +73 -0
  586. package/src/utils/plugins.ts +20 -0
  587. package/src/utils/ssr.ts +6 -0
  588. package/src/utils/vue-augmentation.ts +35 -0
@@ -0,0 +1,2118 @@
1
+ import { defineComponent, createElementBlock, openBlock, Fragment, createCommentVNode, createElementVNode, withModifiers, normalizeClass, toDisplayString, renderList, resolveComponent, createBlock, createTextVNode, mergeProps, createSlots, withCtx, createVNode, renderSlot, withDirectives, withKeys, vShow, normalizeProps, guardReactiveProps } from 'vue';
2
+ import { C as CompatFallthroughMixin } from './CompatFallthroughMixin-C8LPuwDr.js';
3
+ import { F as FormElementMixin } from './FormElementMixin-Dd_wkBN5.js';
4
+ import { isDefined, isMobile, getWeekdayNames, getMonthNames, matchWithGroups } from './helpers.js';
5
+ import { c as config } from './config-CKuo-p6e.js';
6
+ import { B as BDropdown } from './Dropdown-CGTYVyoL.js';
7
+ import { B as BDropdownItem } from './DropdownItem-Cn3nM0A3.js';
8
+ import { B as BInput } from './Input-C4L520az.js';
9
+ import { F as Field } from './Field-B7bX_uUg.js';
10
+ import { B as BSelect } from './Select-bl4qUzij.js';
11
+ import { B as BIcon } from './Icon-DPyGDeRK.js';
12
+ import { _ as _export_sfc } from './_plugin-vue_export-helper-OJRSZE6i.js';
13
+
14
+ var _sfc_main$3 = defineComponent({
15
+ name: "BDatepickerTableRow",
16
+ inject: {
17
+ $datepicker: { name: "$datepicker", default: false }
18
+ },
19
+ props: {
20
+ selectedDate: {
21
+ type: [Date, Array]
22
+ },
23
+ hoveredDateRange: Array,
24
+ day: {
25
+ type: Number
26
+ },
27
+ week: {
28
+ type: Array,
29
+ required: true
30
+ },
31
+ month: {
32
+ type: Number,
33
+ required: true
34
+ },
35
+ minDate: [Date, null],
36
+ maxDate: [Date, null],
37
+ disabled: Boolean,
38
+ unselectableDates: [Array, Function, null],
39
+ unselectableDaysOfWeek: [Array, null],
40
+ selectableDates: [Array, Function, null],
41
+ events: Array,
42
+ indicators: String,
43
+ dateCreator: Function,
44
+ nearbyMonthDays: Boolean,
45
+ nearbySelectableMonthDays: Boolean,
46
+ showWeekNumber: Boolean,
47
+ weekNumberClickable: Boolean,
48
+ range: Boolean,
49
+ multiple: Boolean,
50
+ rulesForFirstWeek: Number,
51
+ firstDayOfWeek: [Number, null]
52
+ },
53
+ emits: {
54
+ /* eslint-disable @typescript-eslint/no-unused-vars */
55
+ "change-focus": (_day) => true,
56
+ rangeHoverEndDate: (_day) => true,
57
+ select: (_day) => true
58
+ /* eslint-enable @typescript-eslint/no-unused-vars */
59
+ },
60
+ watch: {
61
+ day(day) {
62
+ const refName = `day-${this.month}-${day}`;
63
+ this.$nextTick(() => {
64
+ let cell;
65
+ if (Array.isArray(this.$refs[refName])) {
66
+ cell = this.$refs[refName][0];
67
+ } else {
68
+ cell = this.$refs[refName];
69
+ }
70
+ if (cell) {
71
+ cell.focus();
72
+ }
73
+ });
74
+ }
75
+ },
76
+ methods: {
77
+ firstWeekOffset(year, dow, doy) {
78
+ const fwd = 7 + dow - doy;
79
+ const firstJanuary = new Date(year, 0, fwd);
80
+ const fwdlw = (7 + firstJanuary.getDay() - dow) % 7;
81
+ return -fwdlw + fwd - 1;
82
+ },
83
+ daysInYear(year) {
84
+ return this.isLeapYear(year) ? 366 : 365;
85
+ },
86
+ isLeapYear(year) {
87
+ return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
88
+ },
89
+ getSetDayOfYear(input) {
90
+ return Math.round((+input - +new Date(input.getFullYear(), 0, 1)) / 864e5) + 1;
91
+ },
92
+ weeksInYear(year, dow, doy) {
93
+ const weekOffset = this.firstWeekOffset(year, dow, doy);
94
+ const weekOffsetNext = this.firstWeekOffset(year + 1, dow, doy);
95
+ return (this.daysInYear(year) - weekOffset + weekOffsetNext) / 7;
96
+ },
97
+ getWeekNumber(mom) {
98
+ const dow = this.firstDayOfWeek;
99
+ const doy = this.rulesForFirstWeek;
100
+ const weekOffset = this.firstWeekOffset(mom.getFullYear(), dow, doy);
101
+ const week = Math.floor((this.getSetDayOfYear(mom) - weekOffset - 1) / 7) + 1;
102
+ let resWeek;
103
+ let resYear;
104
+ if (week < 1) {
105
+ resYear = mom.getFullYear() - 1;
106
+ resWeek = week + this.weeksInYear(resYear, dow, doy);
107
+ } else if (week > this.weeksInYear(mom.getFullYear(), dow, doy)) {
108
+ resWeek = week - this.weeksInYear(mom.getFullYear(), dow, doy);
109
+ resYear = mom.getFullYear() + 1;
110
+ } else {
111
+ resYear = mom.getFullYear();
112
+ resWeek = week;
113
+ }
114
+ return { week: resWeek, year: resYear };
115
+ },
116
+ clickWeekNumber(weekData) {
117
+ if (this.weekNumberClickable) {
118
+ this.$datepicker.$emit("week-number-click", weekData.week, weekData.year);
119
+ }
120
+ },
121
+ /*
122
+ * Check that selected day is within earliest/latest params and
123
+ * is within this month
124
+ */
125
+ selectableDate(day) {
126
+ const validity = [];
127
+ if (this.minDate) {
128
+ validity.push(day >= this.minDate);
129
+ }
130
+ if (this.maxDate) {
131
+ validity.push(day <= this.maxDate);
132
+ }
133
+ if (this.nearbyMonthDays && !this.nearbySelectableMonthDays) {
134
+ validity.push(day.getMonth() === this.month);
135
+ }
136
+ if (this.selectableDates) {
137
+ if (typeof this.selectableDates === "function") {
138
+ if (this.selectableDates(day)) {
139
+ return true;
140
+ } else {
141
+ validity.push(false);
142
+ }
143
+ } else {
144
+ for (let i = 0; i < this.selectableDates.length; i++) {
145
+ const enabledDate = this.selectableDates[i];
146
+ if (day.getDate() === enabledDate.getDate() && day.getFullYear() === enabledDate.getFullYear() && day.getMonth() === enabledDate.getMonth()) {
147
+ return true;
148
+ } else {
149
+ validity.push(false);
150
+ }
151
+ }
152
+ }
153
+ }
154
+ if (this.unselectableDates) {
155
+ if (typeof this.unselectableDates === "function") {
156
+ validity.push(!this.unselectableDates(day));
157
+ } else {
158
+ for (let i = 0; i < this.unselectableDates.length; i++) {
159
+ const disabledDate = this.unselectableDates[i];
160
+ validity.push(
161
+ day.getDate() !== disabledDate.getDate() || day.getFullYear() !== disabledDate.getFullYear() || day.getMonth() !== disabledDate.getMonth()
162
+ );
163
+ }
164
+ }
165
+ }
166
+ if (this.unselectableDaysOfWeek) {
167
+ for (let i = 0; i < this.unselectableDaysOfWeek.length; i++) {
168
+ const dayOfWeek = this.unselectableDaysOfWeek[i];
169
+ validity.push(day.getDay() !== dayOfWeek);
170
+ }
171
+ }
172
+ return validity.indexOf(false) < 0;
173
+ },
174
+ /*
175
+ * Emit select event with chosen date as payload
176
+ */
177
+ emitChosenDate(day) {
178
+ if (this.disabled) return;
179
+ if (this.selectableDate(day)) {
180
+ this.$emit("select", day);
181
+ }
182
+ },
183
+ // TODO: return undefined instead of boolean if no events
184
+ eventsDateMatch(day) {
185
+ if (!this.events || !this.events.length) return false;
186
+ const dayEvents = [];
187
+ for (let i = 0; i < this.events.length; i++) {
188
+ if (this.events[i].date.getDay() === day.getDay()) {
189
+ dayEvents.push(this.events[i]);
190
+ }
191
+ }
192
+ if (!dayEvents.length) {
193
+ return false;
194
+ }
195
+ return dayEvents;
196
+ },
197
+ /*
198
+ * Build classObject for cell using validations
199
+ */
200
+ classObject(day) {
201
+ function dateMatch(dateOne, dateTwo, multiple) {
202
+ if (!dateOne || !dateTwo || multiple) {
203
+ return false;
204
+ }
205
+ if (Array.isArray(dateTwo)) {
206
+ return dateTwo.some((date) => dateOne.getDate() === date.getDate() && dateOne.getFullYear() === date.getFullYear() && dateOne.getMonth() === date.getMonth());
207
+ }
208
+ return dateOne.getDate() === dateTwo.getDate() && dateOne.getFullYear() === dateTwo.getFullYear() && dateOne.getMonth() === dateTwo.getMonth();
209
+ }
210
+ function dateWithin(dateOne, dates, multiple) {
211
+ if (!Array.isArray(dates) || multiple) {
212
+ return false;
213
+ }
214
+ return dateOne > dates[0] && dateOne < dates[1];
215
+ }
216
+ return {
217
+ "is-selected": dateMatch(day, this.selectedDate) || dateWithin(day, this.selectedDate, this.multiple),
218
+ "is-first-selected": dateMatch(
219
+ day,
220
+ Array.isArray(this.selectedDate) ? this.selectedDate[0] : void 0,
221
+ this.multiple
222
+ ),
223
+ "is-within-selected": dateWithin(day, this.selectedDate, this.multiple),
224
+ "is-last-selected": dateMatch(
225
+ day,
226
+ Array.isArray(this.selectedDate) ? this.selectedDate[1] : void 0,
227
+ this.multiple
228
+ ),
229
+ "is-within-hovered-range": this.hoveredDateRange && this.hoveredDateRange.length === 2 && (dateMatch(day, this.hoveredDateRange) || dateWithin(day, this.hoveredDateRange)),
230
+ "is-first-hovered": dateMatch(
231
+ day,
232
+ Array.isArray(this.hoveredDateRange) ? this.hoveredDateRange[0] : void 0
233
+ ),
234
+ "is-within-hovered": dateWithin(day, this.hoveredDateRange),
235
+ "is-last-hovered": dateMatch(
236
+ day,
237
+ Array.isArray(this.hoveredDateRange) ? this.hoveredDateRange[1] : void 0
238
+ ),
239
+ "is-today": dateMatch(day, this.dateCreator()),
240
+ "is-selectable": this.selectableDate(day) && !this.disabled,
241
+ "is-unselectable": !this.selectableDate(day) || this.disabled,
242
+ "is-invisible": !this.nearbyMonthDays && day.getMonth() !== this.month,
243
+ "is-nearby": this.nearbySelectableMonthDays && day.getMonth() !== this.month,
244
+ "has-event": this.eventsDateMatch(day),
245
+ [this.indicators]: this.eventsDateMatch(day)
246
+ };
247
+ },
248
+ setRangeHoverEndDate(day) {
249
+ if (this.range) {
250
+ this.$emit("rangeHoverEndDate", day);
251
+ }
252
+ },
253
+ manageKeydown(event, weekDay) {
254
+ const { key } = event;
255
+ let preventDefault = true;
256
+ switch (key) {
257
+ case "Tab": {
258
+ preventDefault = false;
259
+ break;
260
+ }
261
+ case " ":
262
+ case "Space":
263
+ case "Spacebar":
264
+ case "Enter": {
265
+ this.emitChosenDate(weekDay);
266
+ break;
267
+ }
268
+ case "ArrowLeft":
269
+ case "Left": {
270
+ this.changeFocus(weekDay, -1);
271
+ break;
272
+ }
273
+ case "ArrowRight":
274
+ case "Right": {
275
+ this.changeFocus(weekDay, 1);
276
+ break;
277
+ }
278
+ case "ArrowUp":
279
+ case "Up": {
280
+ this.changeFocus(weekDay, -7);
281
+ break;
282
+ }
283
+ case "ArrowDown":
284
+ case "Down": {
285
+ this.changeFocus(weekDay, 7);
286
+ break;
287
+ }
288
+ }
289
+ if (preventDefault) {
290
+ event.preventDefault();
291
+ }
292
+ },
293
+ changeFocus(day, inc) {
294
+ const nextDay = new Date(day.getTime());
295
+ nextDay.setDate(day.getDate() + inc);
296
+ while ((!this.minDate || nextDay > this.minDate) && (!this.maxDate || nextDay < this.maxDate) && !this.selectableDate(nextDay)) {
297
+ nextDay.setDate(nextDay.getDate() + Math.sign(inc));
298
+ }
299
+ this.setRangeHoverEndDate(nextDay);
300
+ this.$emit("change-focus", nextDay);
301
+ }
302
+ }
303
+ });
304
+
305
+ const _hoisted_1$3 = { class: "datepicker-row" };
306
+ const _hoisted_2$3 = ["disabled", "onClick", "onMouseenter", "onKeydown", "tabindex"];
307
+ const _hoisted_3$2 = {
308
+ key: 0,
309
+ class: "events"
310
+ };
311
+ const _hoisted_4$2 = {
312
+ key: 0,
313
+ class: "events"
314
+ };
315
+ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
316
+ return openBlock(), createElementBlock(
317
+ Fragment,
318
+ null,
319
+ [
320
+ createCommentVNode(" eslint-disable max-len "),
321
+ createElementVNode("div", _hoisted_1$3, [
322
+ _ctx.showWeekNumber ? (openBlock(), createElementBlock(
323
+ "a",
324
+ {
325
+ key: 0,
326
+ class: normalizeClass(["datepicker-cell is-week-number", { "is-clickable": _ctx.weekNumberClickable }]),
327
+ onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.clickWeekNumber(_ctx.getWeekNumber(_ctx.week[6])), ["prevent"]))
328
+ },
329
+ [
330
+ createElementVNode(
331
+ "span",
332
+ null,
333
+ toDisplayString(_ctx.getWeekNumber(_ctx.week[6]).week),
334
+ 1
335
+ /* TEXT */
336
+ )
337
+ ],
338
+ 2
339
+ /* CLASS */
340
+ )) : createCommentVNode("v-if", true),
341
+ (openBlock(true), createElementBlock(
342
+ Fragment,
343
+ null,
344
+ renderList(_ctx.week, (weekDay, index) => {
345
+ return openBlock(), createElementBlock(
346
+ Fragment,
347
+ { key: index },
348
+ [
349
+ _ctx.selectableDate(weekDay) && !_ctx.disabled ? (openBlock(), createElementBlock("a", {
350
+ key: 0,
351
+ ref_for: true,
352
+ ref: `day-${weekDay.getMonth()}-${weekDay.getDate()}`,
353
+ class: normalizeClass([_ctx.classObject(weekDay), "datepicker-cell"]),
354
+ role: "button",
355
+ href: "#",
356
+ disabled: _ctx.disabled || void 0,
357
+ onClick: withModifiers(($event) => _ctx.emitChosenDate(weekDay), ["prevent"]),
358
+ onMouseenter: ($event) => _ctx.setRangeHoverEndDate(weekDay),
359
+ onKeydown: ($event) => _ctx.manageKeydown($event, weekDay),
360
+ tabindex: _ctx.day === weekDay.getDate() && _ctx.month === weekDay.getMonth() ? void 0 : -1
361
+ }, [
362
+ createElementVNode(
363
+ "span",
364
+ null,
365
+ toDisplayString(weekDay.getDate()),
366
+ 1
367
+ /* TEXT */
368
+ ),
369
+ _ctx.eventsDateMatch(weekDay) ? (openBlock(), createElementBlock("div", _hoisted_3$2, [
370
+ (openBlock(true), createElementBlock(
371
+ Fragment,
372
+ null,
373
+ renderList(_ctx.eventsDateMatch(weekDay), (event, evIdx) => {
374
+ return openBlock(), createElementBlock(
375
+ "div",
376
+ {
377
+ class: normalizeClass(["event", event.type]),
378
+ key: evIdx
379
+ },
380
+ null,
381
+ 2
382
+ /* CLASS */
383
+ );
384
+ }),
385
+ 128
386
+ /* KEYED_FRAGMENT */
387
+ ))
388
+ ])) : createCommentVNode("v-if", true)
389
+ ], 42, _hoisted_2$3)) : (openBlock(), createElementBlock(
390
+ "div",
391
+ {
392
+ key: 1,
393
+ class: normalizeClass([_ctx.classObject(weekDay), "datepicker-cell"])
394
+ },
395
+ [
396
+ createElementVNode(
397
+ "span",
398
+ null,
399
+ toDisplayString(weekDay.getDate()),
400
+ 1
401
+ /* TEXT */
402
+ ),
403
+ _ctx.eventsDateMatch(weekDay) ? (openBlock(), createElementBlock("div", _hoisted_4$2, [
404
+ (openBlock(true), createElementBlock(
405
+ Fragment,
406
+ null,
407
+ renderList(_ctx.eventsDateMatch(weekDay), (event, evIdx) => {
408
+ return openBlock(), createElementBlock(
409
+ "div",
410
+ {
411
+ class: normalizeClass(["event", event.type]),
412
+ key: evIdx
413
+ },
414
+ null,
415
+ 2
416
+ /* CLASS */
417
+ );
418
+ }),
419
+ 128
420
+ /* KEYED_FRAGMENT */
421
+ ))
422
+ ])) : createCommentVNode("v-if", true)
423
+ ],
424
+ 2
425
+ /* CLASS */
426
+ ))
427
+ ],
428
+ 64
429
+ /* STABLE_FRAGMENT */
430
+ );
431
+ }),
432
+ 128
433
+ /* KEYED_FRAGMENT */
434
+ ))
435
+ ]),
436
+ createCommentVNode(" eslint-enable max-len ")
437
+ ],
438
+ 2112
439
+ /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
440
+ );
441
+ }
442
+ var BDatepickerTableRow = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3]]);
443
+
444
+ var _sfc_main$2 = defineComponent({
445
+ name: "BDatepickerTable",
446
+ components: {
447
+ BDatepickerTableRow
448
+ },
449
+ props: {
450
+ modelValue: {
451
+ type: [Date, Array, null]
452
+ },
453
+ dayNames: [Array, null],
454
+ monthNames: [Array, null],
455
+ firstDayOfWeek: [Number, null],
456
+ events: Array,
457
+ indicators: String,
458
+ minDate: [Date, null],
459
+ maxDate: [Date, null],
460
+ focused: Object,
461
+ disabled: Boolean,
462
+ dateCreator: Function,
463
+ unselectableDates: [Array, Function, null],
464
+ unselectableDaysOfWeek: [Array, null],
465
+ selectableDates: [Array, Function, null],
466
+ nearbyMonthDays: Boolean,
467
+ nearbySelectableMonthDays: Boolean,
468
+ showWeekNumber: Boolean,
469
+ weekNumberClickable: Boolean,
470
+ rulesForFirstWeek: Number,
471
+ range: Boolean,
472
+ multiple: Boolean
473
+ },
474
+ emits: {
475
+ /* eslint-disable @typescript-eslint/no-unused-vars */
476
+ "range-end": (_date) => true,
477
+ "range-start": (_date) => true,
478
+ "update:focused": (_focused) => true,
479
+ "update:modelValue": (_value) => true
480
+ /* eslint-enable @typescript-eslint/no-unused-vars */
481
+ },
482
+ data() {
483
+ return {
484
+ selectedBeginDate: void 0,
485
+ selectedEndDate: void 0,
486
+ hoveredEndDate: void 0
487
+ };
488
+ },
489
+ computed: {
490
+ multipleSelectedDates: {
491
+ get() {
492
+ return this.multiple && this.modelValue ? this.modelValue : [];
493
+ },
494
+ set(value) {
495
+ this.$emit("update:modelValue", value);
496
+ }
497
+ },
498
+ visibleDayNames() {
499
+ const visibleDayNames = [];
500
+ let index = this.firstDayOfWeek;
501
+ while (visibleDayNames.length < this.dayNames.length) {
502
+ const currentDayName = this.dayNames[index % this.dayNames.length];
503
+ visibleDayNames.push(currentDayName);
504
+ index++;
505
+ }
506
+ if (this.showWeekNumber) visibleDayNames.unshift("");
507
+ return visibleDayNames;
508
+ },
509
+ hasEvents() {
510
+ return this.events && this.events.length;
511
+ },
512
+ /*
513
+ * Return array of all events in the specified month
514
+ */
515
+ eventsInThisMonth() {
516
+ if (!this.events) return [];
517
+ const monthEvents = [];
518
+ for (let i = 0; i < this.events.length; i++) {
519
+ let event = this.events[i];
520
+ if (!Object.prototype.hasOwnProperty.call(event, "date")) {
521
+ event = { date: event, type: "is-primary" };
522
+ }
523
+ if (!Object.prototype.hasOwnProperty.call(event, "type")) {
524
+ event.type = "is-primary";
525
+ }
526
+ if (event.date.getMonth() === this.focused.month && event.date.getFullYear() === this.focused.year) {
527
+ monthEvents.push(event);
528
+ }
529
+ }
530
+ return monthEvents;
531
+ },
532
+ /*
533
+ * Return array of all weeks in the specified month
534
+ */
535
+ weeksInThisMonth() {
536
+ this.validateFocusedDay();
537
+ const month = this.focused.month;
538
+ const year = this.focused.year;
539
+ const weeksInThisMonth = [];
540
+ let startingDay = 1;
541
+ while (weeksInThisMonth.length < 6) {
542
+ const newWeek = this.weekBuilder(startingDay, month, year);
543
+ weeksInThisMonth.push(newWeek);
544
+ startingDay += 7;
545
+ }
546
+ return weeksInThisMonth;
547
+ },
548
+ hoveredDateRange() {
549
+ var _a, _b;
550
+ if (!this.range) {
551
+ return [];
552
+ }
553
+ if (!isNaN((_b = (_a = this.selectedEndDate) == null ? void 0 : _a.valueOf()) != null ? _b : NaN)) {
554
+ return [];
555
+ }
556
+ if (this.hoveredEndDate < this.selectedBeginDate) {
557
+ return [this.hoveredEndDate, this.selectedBeginDate].filter(isDefined);
558
+ }
559
+ return [this.selectedBeginDate, this.hoveredEndDate].filter(isDefined);
560
+ },
561
+ disabledOrUndefined() {
562
+ return this.disabled || void 0;
563
+ }
564
+ },
565
+ methods: {
566
+ /*
567
+ * Emit input event with selected date as payload for v-model in parent
568
+ */
569
+ updateSelectedDate(date) {
570
+ if (!this.range && !this.multiple) {
571
+ this.$emit("update:modelValue", date);
572
+ } else if (this.range) {
573
+ this.handleSelectRangeDate(date);
574
+ } else if (this.multiple) {
575
+ this.handleSelectMultipleDates(date);
576
+ }
577
+ },
578
+ /*
579
+ * If both begin and end dates are set, reset the end date and set the begin date.
580
+ * If only begin date is selected, emit an array of the begin date and the new date.
581
+ * If not set, only set the begin date.
582
+ */
583
+ handleSelectRangeDate(date) {
584
+ if (this.selectedBeginDate && this.selectedEndDate) {
585
+ this.selectedBeginDate = date;
586
+ this.selectedEndDate = void 0;
587
+ this.$emit("range-start", date);
588
+ } else if (this.selectedBeginDate && !this.selectedEndDate) {
589
+ if (this.selectedBeginDate > date) {
590
+ this.selectedEndDate = this.selectedBeginDate;
591
+ this.selectedBeginDate = date;
592
+ } else {
593
+ this.selectedEndDate = date;
594
+ }
595
+ this.$emit("range-end", date);
596
+ this.$emit("update:modelValue", [this.selectedBeginDate, this.selectedEndDate]);
597
+ } else {
598
+ this.selectedBeginDate = date;
599
+ this.$emit("range-start", date);
600
+ }
601
+ },
602
+ /*
603
+ * If selected date already exists list of selected dates, remove it from the list
604
+ * Otherwise, add date to list of selected dates
605
+ */
606
+ handleSelectMultipleDates(date) {
607
+ const multipleSelect = this.multipleSelectedDates.filter(
608
+ (selectedDate) => selectedDate.getDate() === date.getDate() && selectedDate.getFullYear() === date.getFullYear() && selectedDate.getMonth() === date.getMonth()
609
+ );
610
+ if (multipleSelect.length) {
611
+ this.multipleSelectedDates = this.multipleSelectedDates.filter(
612
+ (selectedDate) => selectedDate.getDate() !== date.getDate() || selectedDate.getFullYear() !== date.getFullYear() || selectedDate.getMonth() !== date.getMonth()
613
+ );
614
+ } else {
615
+ this.multipleSelectedDates = [...this.multipleSelectedDates, date];
616
+ }
617
+ },
618
+ /*
619
+ * Return array of all days in the week that the startingDate is within
620
+ */
621
+ weekBuilder(startingDate, month, year) {
622
+ const thisMonth = new Date(year, month);
623
+ const thisWeek = [];
624
+ const dayOfWeek = new Date(year, month, startingDate).getDay();
625
+ const end = dayOfWeek >= this.firstDayOfWeek ? dayOfWeek - this.firstDayOfWeek : 7 - this.firstDayOfWeek + dayOfWeek;
626
+ let daysAgo = 1;
627
+ for (let i = 0; i < end; i++) {
628
+ thisWeek.unshift(
629
+ new Date(
630
+ thisMonth.getFullYear(),
631
+ thisMonth.getMonth(),
632
+ startingDate - daysAgo
633
+ )
634
+ );
635
+ daysAgo++;
636
+ }
637
+ thisWeek.push(new Date(year, month, startingDate));
638
+ let daysForward = 1;
639
+ while (thisWeek.length < 7) {
640
+ thisWeek.push(new Date(year, month, startingDate + daysForward));
641
+ daysForward++;
642
+ }
643
+ return thisWeek;
644
+ },
645
+ validateFocusedDay() {
646
+ const focusedDate = new Date(this.focused.year, this.focused.month, this.focused.day);
647
+ if (this.selectableDate(focusedDate)) return;
648
+ let day = 0;
649
+ const monthDays = new Date(this.focused.year, this.focused.month + 1, 0).getDate();
650
+ let firstFocusable = null;
651
+ while (!firstFocusable && ++day < monthDays) {
652
+ const date = new Date(this.focused.year, this.focused.month, day);
653
+ if (this.selectableDate(date)) {
654
+ firstFocusable = focusedDate;
655
+ const focused = {
656
+ day: date.getDate(),
657
+ month: date.getMonth(),
658
+ year: date.getFullYear()
659
+ };
660
+ this.$emit("update:focused", focused);
661
+ }
662
+ }
663
+ },
664
+ /*
665
+ * Check that selected day is within earliest/latest params and
666
+ * is within this month
667
+ */
668
+ selectableDate(day) {
669
+ const validity = [];
670
+ if (this.minDate) {
671
+ validity.push(day >= this.minDate);
672
+ }
673
+ if (this.maxDate) {
674
+ validity.push(day <= this.maxDate);
675
+ }
676
+ if (this.nearbyMonthDays && !this.nearbySelectableMonthDays) {
677
+ validity.push(day.getMonth() === this.focused.month);
678
+ }
679
+ if (this.selectableDates) {
680
+ if (typeof this.selectableDates === "function") {
681
+ if (this.selectableDates(day)) {
682
+ return true;
683
+ } else {
684
+ validity.push(false);
685
+ }
686
+ } else {
687
+ for (let i = 0; i < this.selectableDates.length; i++) {
688
+ const enabledDate = this.selectableDates[i];
689
+ if (day.getDate() === enabledDate.getDate() && day.getFullYear() === enabledDate.getFullYear() && day.getMonth() === enabledDate.getMonth()) {
690
+ return true;
691
+ } else {
692
+ validity.push(false);
693
+ }
694
+ }
695
+ }
696
+ }
697
+ if (this.unselectableDates) {
698
+ if (typeof this.unselectableDates === "function") {
699
+ validity.push(!this.unselectableDates(day));
700
+ } else {
701
+ for (let i = 0; i < this.unselectableDates.length; i++) {
702
+ const disabledDate = this.unselectableDates[i];
703
+ validity.push(
704
+ day.getDate() !== disabledDate.getDate() || day.getFullYear() !== disabledDate.getFullYear() || day.getMonth() !== disabledDate.getMonth()
705
+ );
706
+ }
707
+ }
708
+ }
709
+ if (this.unselectableDaysOfWeek) {
710
+ for (let i = 0; i < this.unselectableDaysOfWeek.length; i++) {
711
+ const dayOfWeek = this.unselectableDaysOfWeek[i];
712
+ validity.push(day.getDay() !== dayOfWeek);
713
+ }
714
+ }
715
+ return validity.indexOf(false) < 0;
716
+ },
717
+ eventsInThisWeek(week) {
718
+ return this.eventsInThisMonth.filter((event) => {
719
+ const stripped = new Date(Date.parse(event.date + ""));
720
+ stripped.setHours(0, 0, 0, 0);
721
+ const timed = stripped.getTime();
722
+ return week.some((weekDate) => weekDate.getTime() === timed);
723
+ });
724
+ },
725
+ setRangeHoverEndDate(day) {
726
+ this.hoveredEndDate = day;
727
+ },
728
+ changeFocus(day) {
729
+ const focused = {
730
+ day: day.getDate(),
731
+ month: day.getMonth(),
732
+ year: day.getFullYear()
733
+ };
734
+ this.$emit("update:focused", focused);
735
+ }
736
+ }
737
+ });
738
+
739
+ const _hoisted_1$2 = { class: "datepicker-table" };
740
+ const _hoisted_2$2 = { class: "datepicker-header" };
741
+ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
742
+ const _component_b_datepicker_table_row = resolveComponent("b-datepicker-table-row");
743
+ return openBlock(), createElementBlock("section", _hoisted_1$2, [
744
+ createElementVNode("header", _hoisted_2$2, [
745
+ (openBlock(true), createElementBlock(
746
+ Fragment,
747
+ null,
748
+ renderList(_ctx.visibleDayNames, (day, index) => {
749
+ return openBlock(), createElementBlock("div", {
750
+ key: index,
751
+ class: "datepicker-cell"
752
+ }, [
753
+ createElementVNode(
754
+ "span",
755
+ null,
756
+ toDisplayString(day),
757
+ 1
758
+ /* TEXT */
759
+ )
760
+ ]);
761
+ }),
762
+ 128
763
+ /* KEYED_FRAGMENT */
764
+ ))
765
+ ]),
766
+ createElementVNode(
767
+ "div",
768
+ {
769
+ class: normalizeClass(["datepicker-body", { "has-events": _ctx.hasEvents }])
770
+ },
771
+ [
772
+ (openBlock(true), createElementBlock(
773
+ Fragment,
774
+ null,
775
+ renderList(_ctx.weeksInThisMonth, (week, index) => {
776
+ return openBlock(), createBlock(_component_b_datepicker_table_row, {
777
+ key: index,
778
+ "selected-date": _ctx.modelValue ?? void 0,
779
+ day: _ctx.focused.day,
780
+ week,
781
+ month: _ctx.focused.month,
782
+ "min-date": _ctx.minDate,
783
+ "max-date": _ctx.maxDate,
784
+ disabled: _ctx.disabledOrUndefined,
785
+ "unselectable-dates": _ctx.unselectableDates,
786
+ "unselectable-days-of-week": _ctx.unselectableDaysOfWeek,
787
+ "selectable-dates": _ctx.selectableDates,
788
+ events: _ctx.eventsInThisWeek(week),
789
+ indicators: _ctx.indicators,
790
+ "date-creator": _ctx.dateCreator,
791
+ "nearby-month-days": _ctx.nearbyMonthDays,
792
+ "nearby-selectable-month-days": _ctx.nearbySelectableMonthDays,
793
+ "show-week-number": _ctx.showWeekNumber,
794
+ "week-number-clickable": _ctx.weekNumberClickable,
795
+ "first-day-of-week": _ctx.firstDayOfWeek,
796
+ "rules-for-first-week": _ctx.rulesForFirstWeek,
797
+ range: _ctx.range,
798
+ "hovered-date-range": _ctx.hoveredDateRange,
799
+ onSelect: _ctx.updateSelectedDate,
800
+ onRangeHoverEndDate: _ctx.setRangeHoverEndDate,
801
+ multiple: _ctx.multiple,
802
+ onChangeFocus: _ctx.changeFocus
803
+ }, null, 8, ["selected-date", "day", "week", "month", "min-date", "max-date", "disabled", "unselectable-dates", "unselectable-days-of-week", "selectable-dates", "events", "indicators", "date-creator", "nearby-month-days", "nearby-selectable-month-days", "show-week-number", "week-number-clickable", "first-day-of-week", "rules-for-first-week", "range", "hovered-date-range", "onSelect", "onRangeHoverEndDate", "multiple", "onChangeFocus"]);
804
+ }),
805
+ 128
806
+ /* KEYED_FRAGMENT */
807
+ ))
808
+ ],
809
+ 2
810
+ /* CLASS */
811
+ )
812
+ ]);
813
+ }
814
+ var BDatepickerTable = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2]]);
815
+
816
+ var _sfc_main$1 = defineComponent({
817
+ name: "BDatepickerMonth",
818
+ props: {
819
+ modelValue: {
820
+ type: [Date, Array, null]
821
+ },
822
+ monthNames: [Array, null],
823
+ events: Array,
824
+ indicators: String,
825
+ minDate: [Date, null],
826
+ maxDate: [Date, null],
827
+ focused: Object,
828
+ disabled: Boolean,
829
+ dateCreator: Function,
830
+ unselectableDates: [Array, Function, null],
831
+ unselectableDaysOfWeek: [Array, null],
832
+ selectableDates: [Array, Function, null],
833
+ range: Boolean,
834
+ multiple: Boolean
835
+ },
836
+ emits: {
837
+ /* eslint-disable @typescript-eslint/no-unused-vars */
838
+ "change-focus": (_date) => true,
839
+ "range-end": (_date) => true,
840
+ "range-start": (_date) => true,
841
+ "update:modelValue": (_date) => true
842
+ /* eslint-enable @typescript-eslint/no-unused-vars */
843
+ },
844
+ data() {
845
+ return {
846
+ selectedBeginDate: void 0,
847
+ selectedEndDate: void 0,
848
+ hoveredEndDate: void 0,
849
+ multipleSelectedDates: this.multiple && this.modelValue ? this.modelValue : []
850
+ };
851
+ },
852
+ computed: {
853
+ hasEvents() {
854
+ return this.events && this.events.length;
855
+ },
856
+ /*
857
+ * Return array of all events in the specified month
858
+ */
859
+ eventsInThisYear() {
860
+ if (!this.events) return [];
861
+ const yearEvents = [];
862
+ for (let i = 0; i < this.events.length; i++) {
863
+ let event = this.events[i];
864
+ if (!Object.prototype.hasOwnProperty.call(event, "date")) {
865
+ event = { date: event, type: "is-primary" };
866
+ }
867
+ if (!Object.prototype.hasOwnProperty.call(event, "type")) {
868
+ event.type = "is-primary";
869
+ }
870
+ if (event.date.getFullYear() === this.focused.year) {
871
+ yearEvents.push(event);
872
+ }
873
+ }
874
+ return yearEvents;
875
+ },
876
+ monthDates() {
877
+ const year = this.focused.year;
878
+ const months = [];
879
+ for (let i = 0; i < 12; i++) {
880
+ const d = new Date(year, i, 1);
881
+ d.setHours(0, 0, 0, 0);
882
+ months.push(d);
883
+ }
884
+ return months;
885
+ },
886
+ focusedMonth() {
887
+ return this.focused.month;
888
+ },
889
+ hoveredDateRange() {
890
+ var _a, _b;
891
+ if (!this.range) {
892
+ return [];
893
+ }
894
+ if (!isNaN((_b = (_a = this.selectedEndDate) == null ? void 0 : _a.valueOf()) != null ? _b : NaN)) {
895
+ return [];
896
+ }
897
+ if (this.hoveredEndDate < this.selectedBeginDate) {
898
+ return [this.hoveredEndDate, this.selectedBeginDate].filter(isDefined);
899
+ }
900
+ return [this.selectedBeginDate, this.hoveredEndDate].filter(isDefined);
901
+ },
902
+ disabledOrUndefined() {
903
+ return this.disabled || void 0;
904
+ }
905
+ },
906
+ watch: {
907
+ focusedMonth(month) {
908
+ const refName = `month-${month}`;
909
+ this.$nextTick(() => {
910
+ let cell;
911
+ if (Array.isArray(this.$refs[refName])) {
912
+ cell = this.$refs[refName][0];
913
+ } else {
914
+ cell = this.$refs[refName];
915
+ }
916
+ if (cell) {
917
+ cell.focus();
918
+ }
919
+ });
920
+ }
921
+ },
922
+ methods: {
923
+ selectMultipleDates(date) {
924
+ const multipleSelect = this.multipleSelectedDates.filter(
925
+ (selectedDate) => selectedDate.getDate() === date.getDate() && selectedDate.getFullYear() === date.getFullYear() && selectedDate.getMonth() === date.getMonth()
926
+ );
927
+ if (multipleSelect.length) {
928
+ this.multipleSelectedDates = this.multipleSelectedDates.filter(
929
+ (selectedDate) => selectedDate.getDate() !== date.getDate() || selectedDate.getFullYear() !== date.getFullYear() || selectedDate.getMonth() !== date.getMonth()
930
+ );
931
+ } else {
932
+ this.multipleSelectedDates.push(date);
933
+ }
934
+ this.$emit("update:modelValue", this.multipleSelectedDates);
935
+ },
936
+ selectableDate(day) {
937
+ const validity = [];
938
+ if (this.minDate) {
939
+ validity.push(day >= this.minDate);
940
+ }
941
+ if (this.maxDate) {
942
+ validity.push(day <= this.maxDate);
943
+ }
944
+ validity.push(day.getFullYear() === this.focused.year);
945
+ if (this.selectableDates) {
946
+ if (typeof this.selectableDates === "function") {
947
+ if (this.selectableDates(day)) {
948
+ return true;
949
+ } else {
950
+ validity.push(false);
951
+ }
952
+ } else {
953
+ for (let i = 0; i < this.selectableDates.length; i++) {
954
+ const enabledDate = this.selectableDates[i];
955
+ if (day.getFullYear() === enabledDate.getFullYear() && day.getMonth() === enabledDate.getMonth()) {
956
+ return true;
957
+ } else {
958
+ validity.push(false);
959
+ }
960
+ }
961
+ }
962
+ }
963
+ if (this.unselectableDates) {
964
+ if (typeof this.unselectableDates === "function") {
965
+ validity.push(!this.unselectableDates(day));
966
+ } else {
967
+ for (let i = 0; i < this.unselectableDates.length; i++) {
968
+ const disabledDate = this.unselectableDates[i];
969
+ validity.push(
970
+ day.getFullYear() !== disabledDate.getFullYear() || day.getMonth() !== disabledDate.getMonth()
971
+ );
972
+ }
973
+ }
974
+ }
975
+ if (this.unselectableDaysOfWeek) {
976
+ for (let i = 0; i < this.unselectableDaysOfWeek.length; i++) {
977
+ const dayOfWeek = this.unselectableDaysOfWeek[i];
978
+ validity.push(day.getDay() !== dayOfWeek);
979
+ }
980
+ }
981
+ return validity.indexOf(false) < 0;
982
+ },
983
+ // TODO: return undefined instead of false if no events
984
+ eventsDateMatch(day) {
985
+ if (!this.eventsInThisYear.length) return false;
986
+ const monthEvents = [];
987
+ for (let i = 0; i < this.eventsInThisYear.length; i++) {
988
+ if (this.eventsInThisYear[i].date.getMonth() === day.getMonth()) {
989
+ monthEvents.push(this.events[i]);
990
+ }
991
+ }
992
+ if (!monthEvents.length) {
993
+ return false;
994
+ }
995
+ return monthEvents;
996
+ },
997
+ /*
998
+ * Build classObject for cell using validations
999
+ */
1000
+ classObject(day) {
1001
+ function dateMatch(dateOne, dateTwo, multiple) {
1002
+ if (!dateOne || !dateTwo || multiple) {
1003
+ return false;
1004
+ }
1005
+ if (Array.isArray(dateTwo)) {
1006
+ return dateTwo.some((date) => dateOne.getFullYear() === date.getFullYear() && dateOne.getMonth() === date.getMonth());
1007
+ }
1008
+ return dateOne.getFullYear() === dateTwo.getFullYear() && dateOne.getMonth() === dateTwo.getMonth();
1009
+ }
1010
+ function dateWithin(dateOne, dates, multiple) {
1011
+ if (!Array.isArray(dates) || multiple) {
1012
+ return false;
1013
+ }
1014
+ return dateOne > dates[0] && dateOne < dates[1];
1015
+ }
1016
+ function dateMultipleSelected(dateOne, dates, multiple) {
1017
+ if (!Array.isArray(dates) || !multiple) {
1018
+ return false;
1019
+ }
1020
+ return dates.some((date) => dateOne.getDate() === date.getDate() && dateOne.getFullYear() === date.getFullYear() && dateOne.getMonth() === date.getMonth());
1021
+ }
1022
+ return {
1023
+ "is-selected": dateMatch(day, this.modelValue, this.multiple) || dateWithin(day, this.modelValue, this.multiple) || dateMultipleSelected(day, this.multipleSelectedDates, this.multiple),
1024
+ "is-first-selected": dateMatch(
1025
+ day,
1026
+ Array.isArray(this.modelValue) ? this.modelValue[0] : void 0,
1027
+ this.multiple
1028
+ ),
1029
+ "is-within-selected": dateWithin(day, this.modelValue, this.multiple),
1030
+ "is-last-selected": dateMatch(
1031
+ day,
1032
+ Array.isArray(this.modelValue) ? this.modelValue[1] : void 0,
1033
+ this.multiple
1034
+ ),
1035
+ "is-within-hovered-range": this.hoveredDateRange && this.hoveredDateRange.length === 2 && (dateMatch(day, this.hoveredDateRange) || dateWithin(day, this.hoveredDateRange)),
1036
+ "is-first-hovered": dateMatch(
1037
+ day,
1038
+ Array.isArray(this.hoveredDateRange) ? this.hoveredDateRange[0] : void 0
1039
+ ),
1040
+ "is-within-hovered": dateWithin(day, this.hoveredDateRange),
1041
+ "is-last-hovered": dateMatch(
1042
+ day,
1043
+ Array.isArray(this.hoveredDateRange) ? this.hoveredDateRange[1] : void 0
1044
+ ),
1045
+ "is-today": dateMatch(day, this.dateCreator()),
1046
+ "is-selectable": this.selectableDate(day) && !this.disabled,
1047
+ "is-unselectable": !this.selectableDate(day) || this.disabled
1048
+ };
1049
+ },
1050
+ manageKeydown({ key }, date) {
1051
+ switch (key) {
1052
+ case " ":
1053
+ case "Space":
1054
+ case "Spacebar":
1055
+ case "Enter": {
1056
+ this.updateSelectedDate(date);
1057
+ break;
1058
+ }
1059
+ case "ArrowLeft":
1060
+ case "Left": {
1061
+ this.changeFocus(date, -1);
1062
+ break;
1063
+ }
1064
+ case "ArrowRight":
1065
+ case "Right": {
1066
+ this.changeFocus(date, 1);
1067
+ break;
1068
+ }
1069
+ case "ArrowUp":
1070
+ case "Up": {
1071
+ this.changeFocus(date, -3);
1072
+ break;
1073
+ }
1074
+ case "ArrowDown":
1075
+ case "Down": {
1076
+ this.changeFocus(date, 3);
1077
+ break;
1078
+ }
1079
+ }
1080
+ },
1081
+ /*
1082
+ * Emit input event with selected date as payload for v-model in parent
1083
+ */
1084
+ updateSelectedDate(date) {
1085
+ if (!this.range && !this.multiple) {
1086
+ this.emitChosenDate(date);
1087
+ } else if (this.range) {
1088
+ this.handleSelectRangeDate(date);
1089
+ } else if (this.multiple) {
1090
+ this.selectMultipleDates(date);
1091
+ }
1092
+ },
1093
+ /*
1094
+ * Emit select event with chosen date as payload
1095
+ */
1096
+ emitChosenDate(day) {
1097
+ if (this.disabled) return;
1098
+ if (!this.multiple) {
1099
+ if (this.selectableDate(day)) {
1100
+ this.$emit("update:modelValue", day);
1101
+ }
1102
+ } else {
1103
+ this.selectMultipleDates(day);
1104
+ }
1105
+ },
1106
+ /*
1107
+ * If both begin and end dates are set, reset the end date and set the begin date.
1108
+ * If only begin date is selected, emit an array of the begin date and the new date.
1109
+ * If not set, only set the begin date.
1110
+ */
1111
+ handleSelectRangeDate(date) {
1112
+ if (this.disabled) return;
1113
+ if (this.selectedBeginDate && this.selectedEndDate) {
1114
+ this.selectedBeginDate = date;
1115
+ this.selectedEndDate = void 0;
1116
+ this.$emit("range-start", date);
1117
+ } else if (this.selectedBeginDate && !this.selectedEndDate) {
1118
+ if (this.selectedBeginDate > date) {
1119
+ this.selectedEndDate = this.selectedBeginDate;
1120
+ this.selectedBeginDate = date;
1121
+ } else {
1122
+ this.selectedEndDate = date;
1123
+ }
1124
+ this.$emit("range-end", date);
1125
+ this.$emit("update:modelValue", [this.selectedBeginDate, this.selectedEndDate]);
1126
+ } else {
1127
+ this.selectedBeginDate = date;
1128
+ this.$emit("range-start", date);
1129
+ }
1130
+ },
1131
+ setRangeHoverEndDate(day) {
1132
+ if (this.range) {
1133
+ this.hoveredEndDate = day;
1134
+ }
1135
+ },
1136
+ changeFocus(month, inc) {
1137
+ const nextMonth = month;
1138
+ nextMonth.setMonth(month.getMonth() + inc);
1139
+ this.$emit("change-focus", nextMonth);
1140
+ }
1141
+ }
1142
+ });
1143
+
1144
+ const _hoisted_1$1 = { class: "datepicker-table" };
1145
+ const _hoisted_2$1 = { class: "datepicker-months" };
1146
+ const _hoisted_3$1 = ["disabled", "onClick", "onMouseenter", "onKeydown", "tabindex"];
1147
+ const _hoisted_4$1 = {
1148
+ key: 0,
1149
+ class: "events"
1150
+ };
1151
+ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
1152
+ return openBlock(), createElementBlock("section", _hoisted_1$1, [
1153
+ createElementVNode(
1154
+ "div",
1155
+ {
1156
+ class: normalizeClass(["datepicker-body", { "has-events": _ctx.hasEvents }])
1157
+ },
1158
+ [
1159
+ createElementVNode("div", _hoisted_2$1, [
1160
+ (openBlock(true), createElementBlock(
1161
+ Fragment,
1162
+ null,
1163
+ renderList(_ctx.monthDates, (date, index) => {
1164
+ return openBlock(), createElementBlock(
1165
+ Fragment,
1166
+ { key: index },
1167
+ [
1168
+ _ctx.selectableDate(date) && !_ctx.disabled ? (openBlock(), createElementBlock("a", {
1169
+ key: 0,
1170
+ ref_for: true,
1171
+ ref: `month-${date.getMonth()}`,
1172
+ class: normalizeClass([[
1173
+ _ctx.classObject(date),
1174
+ { "has-event": _ctx.eventsDateMatch(date) },
1175
+ _ctx.indicators
1176
+ ], "datepicker-cell"]),
1177
+ role: "button",
1178
+ href: "#",
1179
+ disabled: _ctx.disabledOrUndefined,
1180
+ onClick: withModifiers(($event) => _ctx.updateSelectedDate(date), ["prevent"]),
1181
+ onMouseenter: ($event) => _ctx.setRangeHoverEndDate(date),
1182
+ onKeydown: withModifiers(($event) => _ctx.manageKeydown($event, date), ["prevent"]),
1183
+ tabindex: _ctx.focused.month === date.getMonth() ? void 0 : -1
1184
+ }, [
1185
+ createTextVNode(
1186
+ toDisplayString(_ctx.monthNames[date.getMonth()]) + " ",
1187
+ 1
1188
+ /* TEXT */
1189
+ ),
1190
+ _ctx.eventsDateMatch(date) ? (openBlock(), createElementBlock("div", _hoisted_4$1, [
1191
+ (openBlock(true), createElementBlock(
1192
+ Fragment,
1193
+ null,
1194
+ renderList(_ctx.eventsDateMatch(date), (event, evIdx) => {
1195
+ return openBlock(), createElementBlock(
1196
+ "div",
1197
+ {
1198
+ class: normalizeClass(["event", event.type]),
1199
+ key: evIdx
1200
+ },
1201
+ null,
1202
+ 2
1203
+ /* CLASS */
1204
+ );
1205
+ }),
1206
+ 128
1207
+ /* KEYED_FRAGMENT */
1208
+ ))
1209
+ ])) : createCommentVNode("v-if", true)
1210
+ ], 42, _hoisted_3$1)) : (openBlock(), createElementBlock(
1211
+ "div",
1212
+ {
1213
+ key: 1,
1214
+ class: normalizeClass([_ctx.classObject(date), "datepicker-cell"])
1215
+ },
1216
+ toDisplayString(_ctx.monthNames[date.getMonth()]),
1217
+ 3
1218
+ /* TEXT, CLASS */
1219
+ ))
1220
+ ],
1221
+ 64
1222
+ /* STABLE_FRAGMENT */
1223
+ );
1224
+ }),
1225
+ 128
1226
+ /* KEYED_FRAGMENT */
1227
+ ))
1228
+ ])
1229
+ ],
1230
+ 2
1231
+ /* CLASS */
1232
+ )
1233
+ ]);
1234
+ }
1235
+ var BDatepickerMonth = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1]]);
1236
+
1237
+ const defaultDateFormatter = (date, vm) => {
1238
+ const targetDates = Array.isArray(date) ? date : [date];
1239
+ const dates = targetDates.map((date2) => {
1240
+ const d = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate(), 12);
1241
+ return !vm.isTypeMonth ? vm.dtf.format(d) : vm.dtfMonth.format(d);
1242
+ });
1243
+ return !vm.multiple ? dates.join(" - ") : dates.join(", ");
1244
+ };
1245
+ const defaultDateParser = (date, vm) => {
1246
+ if (vm.dtf.formatToParts && typeof vm.dtf.formatToParts === "function") {
1247
+ const formatRegex = (vm.isTypeMonth ? vm.dtfMonth : vm.dtf).formatToParts(new Date(2e3, 11, 25)).map((part) => {
1248
+ if (part.type === "literal") {
1249
+ return part.value;
1250
+ }
1251
+ return `((?!=<${part.type}>)\\d+)`;
1252
+ }).join("");
1253
+ const dateGroups = matchWithGroups(formatRegex, date);
1254
+ if (dateGroups.year && dateGroups.year.length === 4 && dateGroups.month && +dateGroups.month <= 12) {
1255
+ if (vm.isTypeMonth) return new Date(+dateGroups.year, +dateGroups.month - 1);
1256
+ else if (dateGroups.day && +dateGroups.day <= 31) {
1257
+ return new Date(+dateGroups.year, +dateGroups.month - 1, +dateGroups.day, 12);
1258
+ }
1259
+ }
1260
+ }
1261
+ if (!vm.isTypeMonth) return new Date(Date.parse(date));
1262
+ if (date) {
1263
+ const s = date.split("/");
1264
+ const year = s[0].length === 4 ? s[0] : s[1];
1265
+ const month = s[0].length === 2 ? s[0] : s[1];
1266
+ if (year && month) {
1267
+ return new Date(parseInt(year, 10), parseInt(month, 10) - 1, 1, 0, 0, 0, 0);
1268
+ }
1269
+ }
1270
+ return null;
1271
+ };
1272
+ var _sfc_main = defineComponent({
1273
+ name: "BDatepicker",
1274
+ components: {
1275
+ BDatepickerTable,
1276
+ BDatepickerMonth,
1277
+ BInput,
1278
+ BField: Field,
1279
+ BSelect,
1280
+ BIcon,
1281
+ BDropdown,
1282
+ BDropdownItem
1283
+ },
1284
+ mixins: [CompatFallthroughMixin, FormElementMixin],
1285
+ provide() {
1286
+ return {
1287
+ $datepicker: this
1288
+ };
1289
+ },
1290
+ props: {
1291
+ modelValue: {
1292
+ type: [Date, Array, null]
1293
+ },
1294
+ dayNames: {
1295
+ type: [Array, null],
1296
+ default: () => {
1297
+ if (!Array.isArray(config.defaultDayNames)) {
1298
+ return void 0;
1299
+ }
1300
+ return config.defaultDayNames;
1301
+ }
1302
+ },
1303
+ monthNames: {
1304
+ type: [Array, null],
1305
+ default: () => {
1306
+ if (!Array.isArray(config.defaultMonthNames)) {
1307
+ return void 0;
1308
+ }
1309
+ return config.defaultMonthNames;
1310
+ }
1311
+ },
1312
+ firstDayOfWeek: {
1313
+ type: Number,
1314
+ default: () => {
1315
+ if (typeof config.defaultFirstDayOfWeek === "number") {
1316
+ return config.defaultFirstDayOfWeek;
1317
+ } else {
1318
+ return 0;
1319
+ }
1320
+ }
1321
+ },
1322
+ inline: Boolean,
1323
+ minDate: [Date, null],
1324
+ maxDate: [Date, null],
1325
+ focusedDate: Date,
1326
+ placeholder: String,
1327
+ editable: Boolean,
1328
+ disabled: Boolean,
1329
+ horizontalTimePicker: Boolean,
1330
+ unselectableDates: [Array, Function],
1331
+ unselectableDaysOfWeek: {
1332
+ type: [Array, null],
1333
+ default: () => config.defaultUnselectableDaysOfWeek
1334
+ },
1335
+ selectableDates: [Array, Function],
1336
+ dateFormatter: {
1337
+ type: Function,
1338
+ default: (date, vm) => {
1339
+ if (typeof config.defaultDateFormatter === "function") {
1340
+ return config.defaultDateFormatter(date);
1341
+ } else {
1342
+ return defaultDateFormatter(date, vm);
1343
+ }
1344
+ }
1345
+ },
1346
+ dateParser: {
1347
+ type: Function,
1348
+ default: (date, vm) => {
1349
+ if (typeof config.defaultDateParser === "function") {
1350
+ return config.defaultDateParser(date);
1351
+ } else {
1352
+ return defaultDateParser(date, vm);
1353
+ }
1354
+ }
1355
+ },
1356
+ dateCreator: {
1357
+ type: Function,
1358
+ default: () => {
1359
+ if (typeof config.defaultDateCreator === "function") {
1360
+ return config.defaultDateCreator();
1361
+ } else {
1362
+ return /* @__PURE__ */ new Date();
1363
+ }
1364
+ }
1365
+ },
1366
+ mobileNative: {
1367
+ type: Boolean,
1368
+ default: () => config.defaultDatepickerMobileNative
1369
+ },
1370
+ position: String,
1371
+ iconRight: String,
1372
+ iconRightClickable: Boolean,
1373
+ events: Array,
1374
+ indicators: {
1375
+ type: String,
1376
+ default: "dots"
1377
+ },
1378
+ openOnFocus: Boolean,
1379
+ iconPrev: {
1380
+ type: String,
1381
+ default: () => config.defaultIconPrev
1382
+ },
1383
+ iconNext: {
1384
+ type: String,
1385
+ default: () => config.defaultIconNext
1386
+ },
1387
+ yearsRange: {
1388
+ type: Array,
1389
+ default: () => config.defaultDatepickerYearsRange
1390
+ },
1391
+ type: {
1392
+ type: String,
1393
+ validator: (value) => {
1394
+ return [
1395
+ "month"
1396
+ ].indexOf(value) >= 0;
1397
+ }
1398
+ },
1399
+ nearbyMonthDays: {
1400
+ type: Boolean,
1401
+ default: () => config.defaultDatepickerNearbyMonthDays
1402
+ },
1403
+ nearbySelectableMonthDays: {
1404
+ type: Boolean,
1405
+ default: () => config.defaultDatepickerNearbySelectableMonthDays
1406
+ },
1407
+ showWeekNumber: {
1408
+ type: Boolean,
1409
+ default: () => config.defaultDatepickerShowWeekNumber
1410
+ },
1411
+ weekNumberClickable: {
1412
+ type: Boolean,
1413
+ default: () => config.defaultDatepickerWeekNumberClickable
1414
+ },
1415
+ rulesForFirstWeek: {
1416
+ type: Number,
1417
+ default: () => 4
1418
+ },
1419
+ range: {
1420
+ type: Boolean,
1421
+ default: false
1422
+ },
1423
+ closeOnClick: {
1424
+ type: Boolean,
1425
+ default: true
1426
+ },
1427
+ multiple: {
1428
+ type: Boolean,
1429
+ default: false
1430
+ },
1431
+ mobileModal: {
1432
+ type: Boolean,
1433
+ default: () => config.defaultDatepickerMobileModal
1434
+ },
1435
+ focusable: {
1436
+ type: Boolean,
1437
+ default: true
1438
+ },
1439
+ trapFocus: {
1440
+ type: Boolean,
1441
+ default: () => config.defaultTrapFocus
1442
+ },
1443
+ appendToBody: Boolean,
1444
+ ariaNextLabel: String,
1445
+ ariaPreviousLabel: String
1446
+ },
1447
+ emits: {
1448
+ /* eslint-disable @typescript-eslint/no-unused-vars */
1449
+ "active-change": (_active) => true,
1450
+ "change-month": (_month) => true,
1451
+ "change-year": (_year) => true,
1452
+ "icon-right-click": (_event) => true,
1453
+ "range-end": (_date) => true,
1454
+ "range-start": (_date) => true,
1455
+ "update:modelValue": (_value) => true,
1456
+ "week-number-click": (_week, _year) => true
1457
+ // emitted by `DatepickerTableRow`
1458
+ /* eslint-enable @typescript-eslint/no-unused-vars */
1459
+ },
1460
+ data() {
1461
+ const focusedDate = (Array.isArray(this.modelValue) ? this.modelValue[0] : this.modelValue) || this.focusedDate || this.dateCreator();
1462
+ if (!this.modelValue && this.maxDate && this.maxDate.getFullYear() < focusedDate.getFullYear()) {
1463
+ focusedDate.setFullYear(this.maxDate.getFullYear());
1464
+ }
1465
+ return {
1466
+ dateSelected: this.modelValue,
1467
+ focusedDateData: {
1468
+ day: focusedDate.getDate(),
1469
+ month: focusedDate.getMonth(),
1470
+ year: focusedDate.getFullYear()
1471
+ },
1472
+ _elementRef: "input",
1473
+ _isDatepicker: true
1474
+ };
1475
+ },
1476
+ computed: {
1477
+ computedValue: {
1478
+ get() {
1479
+ return this.dateSelected;
1480
+ },
1481
+ set(value) {
1482
+ this.updateInternalState(value);
1483
+ if (!this.multiple) this.togglePicker(false);
1484
+ this.$emit("update:modelValue", value);
1485
+ if (this.useHtml5Validation) {
1486
+ this.$nextTick(() => {
1487
+ this.checkHtml5Validity();
1488
+ });
1489
+ }
1490
+ }
1491
+ },
1492
+ formattedValue() {
1493
+ return this.formatValue(this.computedValue);
1494
+ },
1495
+ localeOptions() {
1496
+ return new Intl.DateTimeFormat(this.locale, {
1497
+ year: "numeric",
1498
+ month: "numeric"
1499
+ }).resolvedOptions();
1500
+ },
1501
+ dtf() {
1502
+ return new Intl.DateTimeFormat(this.locale);
1503
+ },
1504
+ dtfMonth() {
1505
+ return new Intl.DateTimeFormat(this.locale, {
1506
+ year: this.localeOptions.year || "numeric",
1507
+ month: this.localeOptions.month || "2-digit"
1508
+ });
1509
+ },
1510
+ newMonthNames() {
1511
+ if (Array.isArray(this.monthNames)) {
1512
+ return this.monthNames;
1513
+ }
1514
+ return getMonthNames(this.locale);
1515
+ },
1516
+ newDayNames() {
1517
+ if (Array.isArray(this.dayNames)) {
1518
+ return this.dayNames;
1519
+ }
1520
+ return getWeekdayNames(this.locale);
1521
+ },
1522
+ listOfMonths() {
1523
+ let minMonth = 0;
1524
+ let maxMonth = 12;
1525
+ if (this.minDate && this.focusedDateData.year === this.minDate.getFullYear()) {
1526
+ minMonth = this.minDate.getMonth();
1527
+ }
1528
+ if (this.maxDate && this.focusedDateData.year === this.maxDate.getFullYear()) {
1529
+ maxMonth = this.maxDate.getMonth();
1530
+ }
1531
+ return this.newMonthNames.map((name, index) => {
1532
+ return {
1533
+ name,
1534
+ index,
1535
+ disabled: index < minMonth || index > maxMonth
1536
+ };
1537
+ });
1538
+ },
1539
+ /*
1540
+ * Returns an array of years for the year dropdown. If earliest/latest
1541
+ * dates are set by props, range of years will fall within those dates.
1542
+ */
1543
+ listOfYears() {
1544
+ let latestYear = this.focusedDateData.year + this.yearsRange[1];
1545
+ if (this.maxDate && this.maxDate.getFullYear() < latestYear) {
1546
+ latestYear = Math.max(this.maxDate.getFullYear(), this.focusedDateData.year);
1547
+ }
1548
+ let earliestYear = this.focusedDateData.year + this.yearsRange[0];
1549
+ if (this.minDate && this.minDate.getFullYear() > earliestYear) {
1550
+ earliestYear = Math.min(this.minDate.getFullYear(), this.focusedDateData.year);
1551
+ }
1552
+ const arrayOfYears = [];
1553
+ for (let i = earliestYear; i <= latestYear; i++) {
1554
+ arrayOfYears.push(i);
1555
+ }
1556
+ return arrayOfYears.reverse();
1557
+ },
1558
+ showPrev() {
1559
+ if (!this.minDate) return false;
1560
+ if (this.isTypeMonth) {
1561
+ return this.focusedDateData.year <= this.minDate.getFullYear();
1562
+ }
1563
+ const dateToCheck = new Date(this.focusedDateData.year, this.focusedDateData.month);
1564
+ const date = new Date(this.minDate.getFullYear(), this.minDate.getMonth());
1565
+ return dateToCheck <= date;
1566
+ },
1567
+ showNext() {
1568
+ if (!this.maxDate) return false;
1569
+ if (this.isTypeMonth) {
1570
+ return this.focusedDateData.year >= this.maxDate.getFullYear();
1571
+ }
1572
+ const dateToCheck = new Date(this.focusedDateData.year, this.focusedDateData.month);
1573
+ const date = new Date(this.maxDate.getFullYear(), this.maxDate.getMonth());
1574
+ return dateToCheck >= date;
1575
+ },
1576
+ isMobile() {
1577
+ return this.mobileNative && isMobile.any();
1578
+ },
1579
+ isTypeMonth() {
1580
+ return this.type === "month";
1581
+ },
1582
+ ariaRole() {
1583
+ if (!this.inline) {
1584
+ return "dialog";
1585
+ } else {
1586
+ return void 0;
1587
+ }
1588
+ },
1589
+ disabledOrUndefined() {
1590
+ return this.disabled || void 0;
1591
+ }
1592
+ },
1593
+ watch: {
1594
+ /*
1595
+ * When v-model is changed:
1596
+ * 1. Update internal value.
1597
+ * 2. If it's invalid, validate again.
1598
+ */
1599
+ modelValue(value) {
1600
+ this.updateInternalState(value);
1601
+ if (!this.multiple) this.togglePicker(false);
1602
+ },
1603
+ focusedDate(value) {
1604
+ if (value) {
1605
+ this.focusedDateData = {
1606
+ day: value.getDate(),
1607
+ month: value.getMonth(),
1608
+ year: value.getFullYear()
1609
+ };
1610
+ }
1611
+ },
1612
+ /*
1613
+ * Emit input event on month and/or year change
1614
+ */
1615
+ "focusedDateData.month"(value) {
1616
+ this.$emit("change-month", value);
1617
+ },
1618
+ "focusedDateData.year"(value) {
1619
+ this.$emit("change-year", value);
1620
+ }
1621
+ },
1622
+ methods: {
1623
+ /*
1624
+ * Parse string into date
1625
+ */
1626
+ onChange(value) {
1627
+ const date = this.dateParser(value, this);
1628
+ if (date && (!isNaN(date.valueOf()) || Array.isArray(date) && date.length === 2 && !isNaN(date[0]) && !isNaN(date[1]))) {
1629
+ this.computedValue = date;
1630
+ } else {
1631
+ this.computedValue = null;
1632
+ if (this.$refs.input) {
1633
+ this.$refs.input.newValue = this.computedValue;
1634
+ }
1635
+ }
1636
+ },
1637
+ /*
1638
+ * Format date into string
1639
+ */
1640
+ formatValue(value) {
1641
+ if (Array.isArray(value)) {
1642
+ const isArrayWithValidDates = Array.isArray(value) && value.every((v) => {
1643
+ var _a;
1644
+ return !isNaN((_a = v == null ? void 0 : v.valueOf()) != null ? _a : NaN);
1645
+ });
1646
+ return isArrayWithValidDates ? this.dateFormatter([...value], this) : null;
1647
+ }
1648
+ return value && !isNaN(value.valueOf()) ? this.dateFormatter(value, this) : null;
1649
+ },
1650
+ /*
1651
+ * Either decrement month by 1 if not January or decrement year by 1
1652
+ * and set month to 11 (December) or decrement year when 'month'
1653
+ */
1654
+ prev() {
1655
+ if (this.disabled) return;
1656
+ if (this.isTypeMonth) {
1657
+ this.focusedDateData.year -= 1;
1658
+ } else {
1659
+ if (this.focusedDateData.month > 0) {
1660
+ this.focusedDateData.month -= 1;
1661
+ } else {
1662
+ this.focusedDateData.month = 11;
1663
+ this.focusedDateData.year -= 1;
1664
+ }
1665
+ }
1666
+ },
1667
+ /*
1668
+ * Either increment month by 1 if not December or increment year by 1
1669
+ * and set month to 0 (January) or increment year when 'month'
1670
+ */
1671
+ next() {
1672
+ if (this.disabled) return;
1673
+ if (this.isTypeMonth) {
1674
+ this.focusedDateData.year += 1;
1675
+ } else {
1676
+ if (this.focusedDateData.month < 11) {
1677
+ this.focusedDateData.month += 1;
1678
+ } else {
1679
+ this.focusedDateData.month = 0;
1680
+ this.focusedDateData.year += 1;
1681
+ }
1682
+ }
1683
+ },
1684
+ formatNative(value) {
1685
+ return this.isTypeMonth ? this.formatYYYYMM(value) : this.formatYYYYMMDD(value);
1686
+ },
1687
+ /*
1688
+ * Format date into string 'YYYY-MM-DD'
1689
+ */
1690
+ formatYYYYMMDD(value) {
1691
+ const date = new Date(value);
1692
+ if (value && !isNaN(date.valueOf())) {
1693
+ const year = date.getFullYear();
1694
+ const month = date.getMonth() + 1;
1695
+ const day = date.getDate();
1696
+ return year + "-" + ((month < 10 ? "0" : "") + month) + "-" + ((day < 10 ? "0" : "") + day);
1697
+ }
1698
+ return "";
1699
+ },
1700
+ /*
1701
+ * Format date into string 'YYYY-MM'
1702
+ */
1703
+ formatYYYYMM(value) {
1704
+ const date = new Date(value);
1705
+ if (value && !isNaN(date.valueOf())) {
1706
+ const year = date.getFullYear();
1707
+ const month = date.getMonth() + 1;
1708
+ return year + "-" + ((month < 10 ? "0" : "") + month);
1709
+ }
1710
+ return "";
1711
+ },
1712
+ /*
1713
+ * Parse date from string
1714
+ */
1715
+ onChangeNativePicker(event) {
1716
+ const date = event.target.value;
1717
+ const s = date ? date.split("-") : [];
1718
+ if (s.length === 3) {
1719
+ const year = parseInt(s[0], 10);
1720
+ const month = parseInt(s[1]) - 1;
1721
+ const day = parseInt(s[2]);
1722
+ this.computedValue = new Date(year, month, day);
1723
+ } else {
1724
+ this.computedValue = null;
1725
+ }
1726
+ },
1727
+ updateInternalState(value) {
1728
+ if (this.dateSelected === value) return;
1729
+ const isArray = Array.isArray(value);
1730
+ const currentDate = isArray ? !value.length ? this.dateCreator() : value[value.length - 1] : !value ? this.dateCreator() : value;
1731
+ if (!isArray || this.dateSelected && value.length > this.dateSelected.length) {
1732
+ this.focusedDateData = {
1733
+ day: currentDate.getDate(),
1734
+ month: currentDate.getMonth(),
1735
+ year: currentDate.getFullYear()
1736
+ };
1737
+ }
1738
+ this.dateSelected = value;
1739
+ },
1740
+ /*
1741
+ * Toggle datepicker
1742
+ */
1743
+ togglePicker(active) {
1744
+ if (this.$refs.dropdown) {
1745
+ const isActive = typeof active === "boolean" ? active : !this.$refs.dropdown.isActive;
1746
+ if (isActive) {
1747
+ this.$refs.dropdown.isActive = isActive;
1748
+ } else if (this.closeOnClick) {
1749
+ this.$refs.dropdown.isActive = isActive;
1750
+ }
1751
+ }
1752
+ },
1753
+ /*
1754
+ * Call default onFocus method and show datepicker
1755
+ */
1756
+ handleOnFocus(event) {
1757
+ this.onFocus(event);
1758
+ if (this.openOnFocus) {
1759
+ this.togglePicker(true);
1760
+ }
1761
+ },
1762
+ /*
1763
+ * Toggle dropdown
1764
+ */
1765
+ toggle() {
1766
+ if (this.mobileNative && this.isMobile) {
1767
+ const input = this.$refs.input.$refs.input;
1768
+ input.focus();
1769
+ input.click();
1770
+ return;
1771
+ }
1772
+ this.$refs.dropdown.toggle();
1773
+ },
1774
+ /*
1775
+ * Avoid dropdown toggle when is already visible
1776
+ */
1777
+ onInputClick(event) {
1778
+ if (this.$refs.dropdown.isActive) {
1779
+ event.stopPropagation();
1780
+ }
1781
+ },
1782
+ /*
1783
+ * Keypress event that is bound to the document.
1784
+ */
1785
+ keyPress({ key }) {
1786
+ if (this.$refs.dropdown && this.$refs.dropdown.isActive && (key === "Escape" || key === "Esc")) {
1787
+ this.togglePicker(false);
1788
+ }
1789
+ },
1790
+ /*
1791
+ * Emit 'blur' event on dropdown is not active (closed)
1792
+ */
1793
+ onActiveChange(value) {
1794
+ if (!value) {
1795
+ this.onBlur();
1796
+ }
1797
+ this.$emit("active-change", value);
1798
+ },
1799
+ changeFocus(day) {
1800
+ this.focusedDateData = {
1801
+ day: day.getDate(),
1802
+ month: day.getMonth(),
1803
+ year: day.getFullYear()
1804
+ };
1805
+ }
1806
+ },
1807
+ created() {
1808
+ if (typeof window !== "undefined") {
1809
+ document.addEventListener("keyup", this.keyPress);
1810
+ }
1811
+ },
1812
+ beforeUnmount() {
1813
+ if (typeof window !== "undefined") {
1814
+ document.removeEventListener("keyup", this.keyPress);
1815
+ }
1816
+ }
1817
+ });
1818
+
1819
+ const _hoisted_1 = { class: "datepicker-header" };
1820
+ const _hoisted_2 = ["disabled", "aria-label"];
1821
+ const _hoisted_3 = ["disabled", "aria-label"];
1822
+ const _hoisted_4 = { class: "pagination-list" };
1823
+ const _hoisted_5 = ["value", "disabled"];
1824
+ const _hoisted_6 = ["value"];
1825
+ const _hoisted_7 = { key: 1 };
1826
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
1827
+ const _component_b_input = resolveComponent("b-input");
1828
+ const _component_b_icon = resolveComponent("b-icon");
1829
+ const _component_b_select = resolveComponent("b-select");
1830
+ const _component_b_field = resolveComponent("b-field");
1831
+ const _component_b_datepicker_table = resolveComponent("b-datepicker-table");
1832
+ const _component_b_datepicker_month = resolveComponent("b-datepicker-month");
1833
+ const _component_b_dropdown_item = resolveComponent("b-dropdown-item");
1834
+ const _component_b_dropdown = resolveComponent("b-dropdown");
1835
+ return openBlock(), createElementBlock(
1836
+ "div",
1837
+ mergeProps({
1838
+ class: ["datepicker control", [_ctx.size, { "is-expanded": _ctx.expanded }]]
1839
+ }, _ctx.rootAttrs),
1840
+ [
1841
+ !_ctx.isMobile || _ctx.inline ? (openBlock(), createBlock(_component_b_dropdown, {
1842
+ key: 0,
1843
+ ref: "dropdown",
1844
+ position: _ctx.position,
1845
+ disabled: _ctx.disabledOrUndefined,
1846
+ inline: _ctx.inline,
1847
+ "mobile-modal": _ctx.mobileModal,
1848
+ "trap-focus": _ctx.trapFocus,
1849
+ "aria-role": _ctx.ariaRole,
1850
+ "append-to-body": _ctx.appendToBody,
1851
+ "append-to-body-copy-parent": "",
1852
+ onActiveChange: _ctx.onActiveChange,
1853
+ "trigger-tabindex": -1
1854
+ }, createSlots({
1855
+ default: withCtx(() => [
1856
+ createVNode(_component_b_dropdown_item, {
1857
+ disabled: _ctx.disabledOrUndefined,
1858
+ focusable: _ctx.focusable,
1859
+ custom: "",
1860
+ class: normalizeClass({ "dropdown-horizontal-timepicker": _ctx.horizontalTimePicker })
1861
+ }, {
1862
+ default: withCtx(() => [
1863
+ createElementVNode("div", null, [
1864
+ createElementVNode("header", _hoisted_1, [
1865
+ _ctx.$slots.header !== void 0 && _ctx.$slots.header([]).length ? renderSlot(_ctx.$slots, "header", { key: 0 }) : (openBlock(), createElementBlock(
1866
+ "div",
1867
+ {
1868
+ key: 1,
1869
+ class: normalizeClass(["pagination field is-centered", _ctx.size])
1870
+ },
1871
+ [
1872
+ withDirectives(createElementVNode("a", {
1873
+ class: "pagination-previous",
1874
+ role: "button",
1875
+ href: "#",
1876
+ disabled: _ctx.disabledOrUndefined,
1877
+ "aria-label": _ctx.ariaPreviousLabel,
1878
+ onClick: _cache[3] || (_cache[3] = withModifiers((...args) => _ctx.prev && _ctx.prev(...args), ["prevent"])),
1879
+ onKeydown: [
1880
+ _cache[4] || (_cache[4] = withKeys(withModifiers((...args) => _ctx.prev && _ctx.prev(...args), ["prevent"]), ["enter"])),
1881
+ _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => _ctx.prev && _ctx.prev(...args), ["prevent"]), ["space"]))
1882
+ ]
1883
+ }, [
1884
+ createVNode(_component_b_icon, {
1885
+ icon: _ctx.iconPrev,
1886
+ pack: _ctx.iconPack,
1887
+ both: "",
1888
+ type: "is-primary is-clickable"
1889
+ }, null, 8, ["icon", "pack"])
1890
+ ], 40, _hoisted_2), [
1891
+ [vShow, !_ctx.showPrev && !_ctx.disabled]
1892
+ ]),
1893
+ withDirectives(createElementVNode("a", {
1894
+ class: "pagination-next",
1895
+ role: "button",
1896
+ href: "#",
1897
+ disabled: _ctx.disabledOrUndefined,
1898
+ "aria-label": _ctx.ariaNextLabel,
1899
+ onClick: _cache[6] || (_cache[6] = withModifiers((...args) => _ctx.next && _ctx.next(...args), ["prevent"])),
1900
+ onKeydown: [
1901
+ _cache[7] || (_cache[7] = withKeys(withModifiers((...args) => _ctx.next && _ctx.next(...args), ["prevent"]), ["enter"])),
1902
+ _cache[8] || (_cache[8] = withKeys(withModifiers((...args) => _ctx.next && _ctx.next(...args), ["prevent"]), ["space"]))
1903
+ ]
1904
+ }, [
1905
+ createVNode(_component_b_icon, {
1906
+ icon: _ctx.iconNext,
1907
+ pack: _ctx.iconPack,
1908
+ both: "",
1909
+ type: "is-primary is-clickable"
1910
+ }, null, 8, ["icon", "pack"])
1911
+ ], 40, _hoisted_3), [
1912
+ [vShow, !_ctx.showNext && !_ctx.disabled]
1913
+ ]),
1914
+ createElementVNode("div", _hoisted_4, [
1915
+ createVNode(_component_b_field, null, {
1916
+ default: withCtx(() => [
1917
+ !_ctx.isTypeMonth ? (openBlock(), createBlock(_component_b_select, {
1918
+ key: 0,
1919
+ modelValue: _ctx.focusedDateData.month,
1920
+ "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => _ctx.focusedDateData.month = $event),
1921
+ disabled: _ctx.disabledOrUndefined,
1922
+ size: _ctx.size
1923
+ }, {
1924
+ default: withCtx(() => [
1925
+ (openBlock(true), createElementBlock(
1926
+ Fragment,
1927
+ null,
1928
+ renderList(_ctx.listOfMonths, (month) => {
1929
+ return openBlock(), createElementBlock("option", {
1930
+ value: month.index,
1931
+ key: month.name,
1932
+ disabled: month.disabled || void 0
1933
+ }, toDisplayString(month.name), 9, _hoisted_5);
1934
+ }),
1935
+ 128
1936
+ /* KEYED_FRAGMENT */
1937
+ ))
1938
+ ]),
1939
+ _: 1
1940
+ /* STABLE */
1941
+ }, 8, ["modelValue", "disabled", "size"])) : createCommentVNode("v-if", true),
1942
+ createVNode(_component_b_select, {
1943
+ modelValue: _ctx.focusedDateData.year,
1944
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => _ctx.focusedDateData.year = $event),
1945
+ disabled: _ctx.disabledOrUndefined,
1946
+ size: _ctx.size
1947
+ }, {
1948
+ default: withCtx(() => [
1949
+ (openBlock(true), createElementBlock(
1950
+ Fragment,
1951
+ null,
1952
+ renderList(_ctx.listOfYears, (year) => {
1953
+ return openBlock(), createElementBlock("option", {
1954
+ value: year,
1955
+ key: year
1956
+ }, toDisplayString(year), 9, _hoisted_6);
1957
+ }),
1958
+ 128
1959
+ /* KEYED_FRAGMENT */
1960
+ ))
1961
+ ]),
1962
+ _: 1
1963
+ /* STABLE */
1964
+ }, 8, ["modelValue", "disabled", "size"])
1965
+ ]),
1966
+ _: 1
1967
+ /* STABLE */
1968
+ })
1969
+ ])
1970
+ ],
1971
+ 2
1972
+ /* CLASS */
1973
+ ))
1974
+ ]),
1975
+ !_ctx.isTypeMonth ? (openBlock(), createElementBlock(
1976
+ "div",
1977
+ {
1978
+ key: 0,
1979
+ class: normalizeClass(["datepicker-content", { "content-horizontal-timepicker": _ctx.horizontalTimePicker }])
1980
+ },
1981
+ [
1982
+ createVNode(_component_b_datepicker_table, {
1983
+ modelValue: _ctx.computedValue,
1984
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => _ctx.computedValue = $event),
1985
+ "day-names": _ctx.newDayNames,
1986
+ "month-names": _ctx.newMonthNames,
1987
+ "first-day-of-week": _ctx.firstDayOfWeek,
1988
+ "rules-for-first-week": _ctx.rulesForFirstWeek,
1989
+ "min-date": _ctx.minDate,
1990
+ "max-date": _ctx.maxDate,
1991
+ focused: _ctx.focusedDateData,
1992
+ disabled: _ctx.disabledOrUndefined,
1993
+ "unselectable-dates": _ctx.unselectableDates,
1994
+ "unselectable-days-of-week": _ctx.unselectableDaysOfWeek,
1995
+ "selectable-dates": _ctx.selectableDates,
1996
+ events: _ctx.events,
1997
+ indicators: _ctx.indicators,
1998
+ "date-creator": _ctx.dateCreator,
1999
+ "type-month": _ctx.isTypeMonth,
2000
+ "nearby-month-days": _ctx.nearbyMonthDays,
2001
+ "nearby-selectable-month-days": _ctx.nearbySelectableMonthDays,
2002
+ "show-week-number": _ctx.showWeekNumber,
2003
+ "week-number-clickable": _ctx.weekNumberClickable,
2004
+ range: _ctx.range,
2005
+ multiple: _ctx.multiple,
2006
+ onRangeStart: _cache[12] || (_cache[12] = (date) => _ctx.$emit("range-start", date)),
2007
+ onRangeEnd: _cache[13] || (_cache[13] = (date) => _ctx.$emit("range-end", date)),
2008
+ onClose: _cache[14] || (_cache[14] = ($event) => _ctx.togglePicker(false)),
2009
+ "onUpdate:focused": _cache[15] || (_cache[15] = ($event) => _ctx.focusedDateData = $event)
2010
+ }, null, 8, ["modelValue", "day-names", "month-names", "first-day-of-week", "rules-for-first-week", "min-date", "max-date", "focused", "disabled", "unselectable-dates", "unselectable-days-of-week", "selectable-dates", "events", "indicators", "date-creator", "type-month", "nearby-month-days", "nearby-selectable-month-days", "show-week-number", "week-number-clickable", "range", "multiple"])
2011
+ ],
2012
+ 2
2013
+ /* CLASS */
2014
+ )) : (openBlock(), createElementBlock("div", _hoisted_7, [
2015
+ createVNode(_component_b_datepicker_month, {
2016
+ modelValue: _ctx.computedValue,
2017
+ "onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => _ctx.computedValue = $event),
2018
+ "month-names": _ctx.newMonthNames,
2019
+ "min-date": _ctx.minDate,
2020
+ "max-date": _ctx.maxDate,
2021
+ focused: _ctx.focusedDateData,
2022
+ disabled: _ctx.disabledOrUndefined,
2023
+ "unselectable-dates": _ctx.unselectableDates,
2024
+ "unselectable-days-of-week": _ctx.unselectableDaysOfWeek,
2025
+ "selectable-dates": _ctx.selectableDates,
2026
+ events: _ctx.events,
2027
+ indicators: _ctx.indicators,
2028
+ "date-creator": _ctx.dateCreator,
2029
+ range: _ctx.range,
2030
+ multiple: _ctx.multiple,
2031
+ onRangeStart: _cache[17] || (_cache[17] = (date) => _ctx.$emit("range-start", date)),
2032
+ onRangeEnd: _cache[18] || (_cache[18] = (date) => _ctx.$emit("range-end", date)),
2033
+ onClose: _cache[19] || (_cache[19] = ($event) => _ctx.togglePicker(false)),
2034
+ onChangeFocus: _ctx.changeFocus,
2035
+ "onUpdate:focused": _cache[20] || (_cache[20] = ($event) => _ctx.focusedDateData = $event)
2036
+ }, null, 8, ["modelValue", "month-names", "min-date", "max-date", "focused", "disabled", "unselectable-dates", "unselectable-days-of-week", "selectable-dates", "events", "indicators", "date-creator", "range", "multiple", "onChangeFocus"])
2037
+ ]))
2038
+ ]),
2039
+ _ctx.$slots.default !== void 0 && _ctx.$slots.default([]).length ? (openBlock(), createElementBlock(
2040
+ "footer",
2041
+ {
2042
+ key: 0,
2043
+ class: normalizeClass(["datepicker-footer", { "footer-horizontal-timepicker": _ctx.horizontalTimePicker }])
2044
+ },
2045
+ [
2046
+ renderSlot(_ctx.$slots, "default")
2047
+ ],
2048
+ 2
2049
+ /* CLASS */
2050
+ )) : createCommentVNode("v-if", true)
2051
+ ]),
2052
+ _: 3
2053
+ /* FORWARDED */
2054
+ }, 8, ["disabled", "focusable", "class"])
2055
+ ]),
2056
+ _: 2
2057
+ /* DYNAMIC */
2058
+ }, [
2059
+ !_ctx.inline ? {
2060
+ name: "trigger",
2061
+ fn: withCtx((props) => [
2062
+ renderSlot(_ctx.$slots, "trigger", normalizeProps(guardReactiveProps(props)), () => [
2063
+ createVNode(_component_b_input, mergeProps({
2064
+ ref: "input",
2065
+ autocomplete: "off",
2066
+ "model-value": _ctx.formattedValue,
2067
+ placeholder: _ctx.placeholder,
2068
+ size: _ctx.size,
2069
+ icon: _ctx.icon,
2070
+ "icon-right": _ctx.iconRight,
2071
+ "icon-right-clickable": _ctx.iconRightClickable,
2072
+ "icon-pack": _ctx.iconPack,
2073
+ rounded: _ctx.rounded,
2074
+ loading: _ctx.loading,
2075
+ disabled: _ctx.disabledOrUndefined,
2076
+ readonly: !_ctx.editable
2077
+ }, _ctx.fallthroughAttrs, {
2078
+ "use-html5-validation": false,
2079
+ onClick: _ctx.onInputClick,
2080
+ onIconRightClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("icon-right-click", $event)),
2081
+ onKeyup: _cache[1] || (_cache[1] = withKeys(($event) => _ctx.togglePicker(true), ["enter"])),
2082
+ onChange: _cache[2] || (_cache[2] = ($event) => _ctx.onChange($event.target.value)),
2083
+ onFocus: _ctx.handleOnFocus
2084
+ }), null, 16, ["model-value", "placeholder", "size", "icon", "icon-right", "icon-right-clickable", "icon-pack", "rounded", "loading", "disabled", "readonly", "onClick", "onFocus"])
2085
+ ])
2086
+ ]),
2087
+ key: "0"
2088
+ } : void 0
2089
+ ]), 1032, ["position", "disabled", "inline", "mobile-modal", "trap-focus", "aria-role", "append-to-body", "onActiveChange"])) : (openBlock(), createBlock(_component_b_input, mergeProps({
2090
+ key: 1,
2091
+ ref: "input",
2092
+ type: !_ctx.isTypeMonth ? "date" : "month",
2093
+ autocomplete: "off",
2094
+ "model-value": _ctx.formatNative(_ctx.computedValue),
2095
+ placeholder: _ctx.placeholder,
2096
+ size: _ctx.size,
2097
+ icon: _ctx.icon,
2098
+ "icon-pack": _ctx.iconPack,
2099
+ rounded: _ctx.rounded,
2100
+ loading: _ctx.loading,
2101
+ max: _ctx.formatNative(_ctx.maxDate),
2102
+ min: _ctx.formatNative(_ctx.minDate),
2103
+ disabled: _ctx.disabledOrUndefined,
2104
+ readonly: false
2105
+ }, _ctx.fallthroughAttrs, {
2106
+ "use-html5-validation": false,
2107
+ onChange: _ctx.onChangeNativePicker,
2108
+ onFocus: _ctx.onFocus,
2109
+ onBlur: _ctx.onBlur
2110
+ }), null, 16, ["type", "model-value", "placeholder", "size", "icon", "icon-pack", "rounded", "loading", "max", "min", "disabled", "onChange", "onFocus", "onBlur"]))
2111
+ ],
2112
+ 16
2113
+ /* FULL_PROPS */
2114
+ );
2115
+ }
2116
+ var BDatepicker = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
2117
+
2118
+ export { BDatepicker as B };