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