@rotki/ui-library 2.8.1 → 2.8.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 (465) hide show
  1. package/dist/README.md +276 -0
  2. package/dist/_virtual/_plugin-vue_export-helper.js +11 -0
  3. package/dist/_virtual/_plugin-vue_export-helper.js.map +1 -0
  4. package/dist/components/accordions/accordion/RuiAccordion.vue.js +11 -0
  5. package/dist/components/accordions/accordion/RuiAccordion.vue.js.map +1 -0
  6. package/dist/components/accordions/accordion/RuiAccordion.vue2.js +66 -0
  7. package/dist/components/accordions/accordion/RuiAccordion.vue2.js.map +1 -0
  8. package/dist/components/accordions/accordion/RuiAccordion.vue3.js +18 -0
  9. package/dist/components/accordions/accordion/RuiAccordion.vue3.js.map +1 -0
  10. package/dist/components/accordions/accordions/RuiAccordions.vue.js +78 -0
  11. package/dist/components/accordions/accordions/RuiAccordions.vue.js.map +1 -0
  12. package/dist/components/accordions/accordions/RuiAccordions.vue2.js +5 -0
  13. package/dist/components/accordions/accordions/RuiAccordions.vue2.js.map +1 -0
  14. package/dist/components/alerts/RuiAlert.vue.d.ts +2 -2
  15. package/dist/components/alerts/RuiAlert.vue.js +11 -0
  16. package/dist/components/alerts/RuiAlert.vue.js.map +1 -0
  17. package/dist/components/alerts/RuiAlert.vue2.js +123 -0
  18. package/dist/components/alerts/RuiAlert.vue2.js.map +1 -0
  19. package/dist/components/alerts/RuiAlert.vue3.js +50 -0
  20. package/dist/components/alerts/RuiAlert.vue3.js.map +1 -0
  21. package/dist/components/buttons/button/RuiButton.vue.d.ts +1 -1
  22. package/dist/components/buttons/button/RuiButton.vue.js +11 -0
  23. package/dist/components/buttons/button/RuiButton.vue.js.map +1 -0
  24. package/dist/components/buttons/button/RuiButton.vue2.js +94 -0
  25. package/dist/components/buttons/button/RuiButton.vue2.js.map +1 -0
  26. package/dist/components/buttons/button/RuiButton.vue3.js +74 -0
  27. package/dist/components/buttons/button/RuiButton.vue3.js.map +1 -0
  28. package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +1 -1
  29. package/dist/components/buttons/button-group/RuiButtonGroup.vue.js +11 -0
  30. package/dist/components/buttons/button-group/RuiButtonGroup.vue.js.map +1 -0
  31. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js +112 -0
  32. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js.map +1 -0
  33. package/dist/components/buttons/button-group/RuiButtonGroup.vue3.js +58 -0
  34. package/dist/components/buttons/button-group/RuiButtonGroup.vue3.js.map +1 -0
  35. package/dist/components/calendar/RuiCalendar.vue.js +128 -0
  36. package/dist/components/calendar/RuiCalendar.vue.js.map +1 -0
  37. package/dist/components/calendar/RuiCalendar.vue3.js +6 -0
  38. package/dist/components/calendar/RuiCalendar.vue3.js.map +1 -0
  39. package/dist/components/calendar/RuiCalendarGrid.vue.js +8 -0
  40. package/dist/components/calendar/RuiCalendarGrid.vue.js.map +1 -0
  41. package/dist/components/calendar/RuiCalendarGrid.vue2.js +149 -0
  42. package/dist/components/calendar/RuiCalendarGrid.vue2.js.map +1 -0
  43. package/dist/components/calendar/RuiCalendarHeader.vue.d.ts +1 -1
  44. package/dist/components/calendar/RuiCalendarHeader.vue.js +8 -0
  45. package/dist/components/calendar/RuiCalendarHeader.vue.js.map +1 -0
  46. package/dist/components/calendar/RuiCalendarHeader.vue2.js +112 -0
  47. package/dist/components/calendar/RuiCalendarHeader.vue2.js.map +1 -0
  48. package/dist/components/calendar/RuiCalendarMenu.vue.d.ts +1 -1
  49. package/dist/components/calendar/RuiCalendarMenu.vue.js +8 -0
  50. package/dist/components/calendar/RuiCalendarMenu.vue.js.map +1 -0
  51. package/dist/components/calendar/RuiCalendarMenu.vue2.js +261 -0
  52. package/dist/components/calendar/RuiCalendarMenu.vue2.js.map +1 -0
  53. package/dist/components/calendar/state.js +25 -0
  54. package/dist/components/calendar/state.js.map +1 -0
  55. package/dist/components/cards/RuiCard.vue.js +11 -0
  56. package/dist/components/cards/RuiCard.vue.js.map +1 -0
  57. package/dist/components/cards/RuiCard.vue2.js +88 -0
  58. package/dist/components/cards/RuiCard.vue2.js.map +1 -0
  59. package/dist/components/cards/RuiCard.vue3.js +40 -0
  60. package/dist/components/cards/RuiCard.vue3.js.map +1 -0
  61. package/dist/components/cards/RuiCardHeader.vue.js +11 -0
  62. package/dist/components/cards/RuiCardHeader.vue.js.map +1 -0
  63. package/dist/components/cards/RuiCardHeader.vue2.js +51 -0
  64. package/dist/components/cards/RuiCardHeader.vue2.js.map +1 -0
  65. package/dist/components/cards/RuiCardHeader.vue3.js +27 -0
  66. package/dist/components/cards/RuiCardHeader.vue3.js.map +1 -0
  67. package/dist/components/chips/RuiChip.vue.d.ts +2 -2
  68. package/dist/components/chips/RuiChip.vue.js +11 -0
  69. package/dist/components/chips/RuiChip.vue.js.map +1 -0
  70. package/dist/components/chips/RuiChip.vue2.js +95 -0
  71. package/dist/components/chips/RuiChip.vue2.js.map +1 -0
  72. package/dist/components/chips/RuiChip.vue3.js +88 -0
  73. package/dist/components/chips/RuiChip.vue3.js.map +1 -0
  74. package/dist/components/color-picker/RuiColorBoard.vue.d.ts +1 -1
  75. package/dist/components/color-picker/RuiColorBoard.vue.js +11 -0
  76. package/dist/components/color-picker/RuiColorBoard.vue.js.map +1 -0
  77. package/dist/components/color-picker/RuiColorBoard.vue2.js +102 -0
  78. package/dist/components/color-picker/RuiColorBoard.vue2.js.map +1 -0
  79. package/dist/components/color-picker/RuiColorBoard.vue3.js +18 -0
  80. package/dist/components/color-picker/RuiColorBoard.vue3.js.map +1 -0
  81. package/dist/components/color-picker/RuiColorDisplay.vue.js +49 -0
  82. package/dist/components/color-picker/RuiColorDisplay.vue.js.map +1 -0
  83. package/dist/components/color-picker/RuiColorDisplay.vue2.js +5 -0
  84. package/dist/components/color-picker/RuiColorDisplay.vue2.js.map +1 -0
  85. package/dist/components/color-picker/RuiColorHue.vue.js +11 -0
  86. package/dist/components/color-picker/RuiColorHue.vue.js.map +1 -0
  87. package/dist/components/color-picker/RuiColorHue.vue2.js +89 -0
  88. package/dist/components/color-picker/RuiColorHue.vue2.js.map +1 -0
  89. package/dist/components/color-picker/RuiColorHue.vue3.js +12 -0
  90. package/dist/components/color-picker/RuiColorHue.vue3.js.map +1 -0
  91. package/dist/components/color-picker/RuiColorInput.vue.d.ts +1 -1
  92. package/dist/components/color-picker/RuiColorInput.vue.js +139 -0
  93. package/dist/components/color-picker/RuiColorInput.vue.js.map +1 -0
  94. package/dist/components/color-picker/RuiColorInput.vue2.js +5 -0
  95. package/dist/components/color-picker/RuiColorInput.vue2.js.map +1 -0
  96. package/dist/components/color-picker/RuiColorPicker.vue.js +72 -0
  97. package/dist/components/color-picker/RuiColorPicker.vue.js.map +1 -0
  98. package/dist/components/color-picker/RuiColorPicker.vue2.js +5 -0
  99. package/dist/components/color-picker/RuiColorPicker.vue2.js.map +1 -0
  100. package/dist/components/color-picker/utils.js +182 -0
  101. package/dist/components/color-picker/utils.js.map +1 -0
  102. package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +1 -1
  103. package/dist/components/date-time-picker/RuiDateTimePicker.vue.js +11 -0
  104. package/dist/components/date-time-picker/RuiDateTimePicker.vue.js.map +1 -0
  105. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +570 -0
  106. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -0
  107. package/dist/components/date-time-picker/RuiDateTimePicker.vue3.js +66 -0
  108. package/dist/components/date-time-picker/RuiDateTimePicker.vue3.js.map +1 -0
  109. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.d.ts +2 -2
  110. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.js +120 -0
  111. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.js.map +1 -0
  112. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue2.js +5 -0
  113. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue2.js.map +1 -0
  114. package/dist/components/date-time-picker/timezones.js +601 -0
  115. package/dist/components/date-time-picker/timezones.js.map +1 -0
  116. package/dist/components/date-time-picker/types.js +17 -0
  117. package/dist/components/date-time-picker/types.js.map +1 -0
  118. package/dist/components/date-time-picker/use-input-handler.d.ts +2 -2
  119. package/dist/components/date-time-picker/use-input-handler.js +31 -0
  120. package/dist/components/date-time-picker/use-input-handler.js.map +1 -0
  121. package/dist/components/date-time-picker/use-keyboard-handler.d.ts +2 -2
  122. package/dist/components/date-time-picker/use-keyboard-handler.js +308 -0
  123. package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -0
  124. package/dist/components/date-time-picker/utils.d.ts +1 -1
  125. package/dist/components/date-time-picker/utils.js +19 -0
  126. package/dist/components/date-time-picker/utils.js.map +1 -0
  127. package/dist/components/divider/RuiDivider.vue.js +22 -0
  128. package/dist/components/divider/RuiDivider.vue.js.map +1 -0
  129. package/dist/components/divider/RuiDivider.vue2.js +5 -0
  130. package/dist/components/divider/RuiDivider.vue2.js.map +1 -0
  131. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +2 -2
  132. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.js +11 -0
  133. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.js.map +1 -0
  134. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +585 -0
  135. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -0
  136. package/dist/components/forms/auto-complete/RuiAutoComplete.vue3.js +60 -0
  137. package/dist/components/forms/auto-complete/RuiAutoComplete.vue3.js.map +1 -0
  138. package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +1 -1
  139. package/dist/components/forms/checkbox/RuiCheckbox.vue.js +11 -0
  140. package/dist/components/forms/checkbox/RuiCheckbox.vue.js.map +1 -0
  141. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +137 -0
  142. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -0
  143. package/dist/components/forms/checkbox/RuiCheckbox.vue3.js +54 -0
  144. package/dist/components/forms/checkbox/RuiCheckbox.vue3.js.map +1 -0
  145. package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +1 -1
  146. package/dist/components/forms/radio-button/radio/RuiRadio.vue.js +11 -0
  147. package/dist/components/forms/radio-button/radio/RuiRadio.vue.js.map +1 -0
  148. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +115 -0
  149. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +1 -0
  150. package/dist/components/forms/radio-button/radio/RuiRadio.vue3.js +54 -0
  151. package/dist/components/forms/radio-button/radio/RuiRadio.vue3.js.map +1 -0
  152. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +1 -1
  153. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.js +11 -0
  154. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.js.map +1 -0
  155. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +78 -0
  156. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +1 -0
  157. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue3.js +9 -0
  158. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue3.js.map +1 -0
  159. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +5 -5
  160. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +82 -0
  161. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +1 -0
  162. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue2.js +5 -0
  163. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue2.js.map +1 -0
  164. package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +2 -2
  165. package/dist/components/forms/select/RuiMenuSelect.vue.js +11 -0
  166. package/dist/components/forms/select/RuiMenuSelect.vue.js.map +1 -0
  167. package/dist/components/forms/select/RuiMenuSelect.vue2.js +297 -0
  168. package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -0
  169. package/dist/components/forms/select/RuiMenuSelect.vue3.js +60 -0
  170. package/dist/components/forms/select/RuiMenuSelect.vue3.js.map +1 -0
  171. package/dist/components/forms/select/RuiSimpleSelect.vue.js +11 -0
  172. package/dist/components/forms/select/RuiSimpleSelect.vue.js.map +1 -0
  173. package/dist/components/forms/select/RuiSimpleSelect.vue2.js +67 -0
  174. package/dist/components/forms/select/RuiSimpleSelect.vue2.js.map +1 -0
  175. package/dist/components/forms/select/RuiSimpleSelect.vue3.js +21 -0
  176. package/dist/components/forms/select/RuiSimpleSelect.vue3.js.map +1 -0
  177. package/dist/components/forms/slider/RuiSlider.vue.d.ts +1 -1
  178. package/dist/components/forms/slider/RuiSlider.vue.js +11 -0
  179. package/dist/components/forms/slider/RuiSlider.vue.js.map +1 -0
  180. package/dist/components/forms/slider/RuiSlider.vue2.js +165 -0
  181. package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -0
  182. package/dist/components/forms/slider/RuiSlider.vue3.js +80 -0
  183. package/dist/components/forms/slider/RuiSlider.vue3.js.map +1 -0
  184. package/dist/components/forms/switch/RuiSwitch.vue.d.ts +1 -1
  185. package/dist/components/forms/switch/RuiSwitch.vue.js +11 -0
  186. package/dist/components/forms/switch/RuiSwitch.vue.js.map +1 -0
  187. package/dist/components/forms/switch/RuiSwitch.vue2.js +89 -0
  188. package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -0
  189. package/dist/components/forms/switch/RuiSwitch.vue3.js +54 -0
  190. package/dist/components/forms/switch/RuiSwitch.vue3.js.map +1 -0
  191. package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +2 -2
  192. package/dist/components/forms/text-area/RuiTextArea.vue.js +11 -0
  193. package/dist/components/forms/text-area/RuiTextArea.vue.js.map +1 -0
  194. package/dist/components/forms/text-area/RuiTextArea.vue2.js +252 -0
  195. package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -0
  196. package/dist/components/forms/text-area/RuiTextArea.vue3.js +92 -0
  197. package/dist/components/forms/text-area/RuiTextArea.vue3.js.map +1 -0
  198. package/dist/components/forms/text-field/RuiTextField.vue.d.ts +2 -2
  199. package/dist/components/forms/text-field/RuiTextField.vue.js +11 -0
  200. package/dist/components/forms/text-field/RuiTextField.vue.js.map +1 -0
  201. package/dist/components/forms/text-field/RuiTextField.vue2.js +220 -0
  202. package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -0
  203. package/dist/components/forms/text-field/RuiTextField.vue3.js +89 -0
  204. package/dist/components/forms/text-field/RuiTextField.vue3.js.map +1 -0
  205. package/dist/components/helpers/RuiFormTextDetail.vue.js +54 -0
  206. package/dist/components/helpers/RuiFormTextDetail.vue.js.map +1 -0
  207. package/dist/components/helpers/RuiFormTextDetail.vue2.js +5 -0
  208. package/dist/components/helpers/RuiFormTextDetail.vue2.js.map +1 -0
  209. package/dist/components/icons/RuiIcon.vue.d.ts +2 -2
  210. package/dist/components/icons/RuiIcon.vue.js +11 -0
  211. package/dist/components/icons/RuiIcon.vue.js.map +1 -0
  212. package/dist/components/icons/RuiIcon.vue2.js +60 -0
  213. package/dist/components/icons/RuiIcon.vue2.js.map +1 -0
  214. package/dist/components/icons/RuiIcon.vue3.js +29 -0
  215. package/dist/components/icons/RuiIcon.vue3.js.map +1 -0
  216. package/dist/components/index.d.ts +45 -45
  217. package/dist/components/index.js +92 -0
  218. package/dist/components/index.js.map +1 -0
  219. package/dist/components/loaders/RuiSkeletonBase.vue.js +11 -0
  220. package/dist/components/loaders/RuiSkeletonBase.vue.js.map +1 -0
  221. package/dist/components/loaders/RuiSkeletonBase.vue2.js +22 -0
  222. package/dist/components/loaders/RuiSkeletonBase.vue2.js.map +1 -0
  223. package/dist/components/loaders/RuiSkeletonBase.vue3.js +12 -0
  224. package/dist/components/loaders/RuiSkeletonBase.vue3.js.map +1 -0
  225. package/dist/components/loaders/RuiSkeletonLoader.vue.d.ts +1 -1
  226. package/dist/components/loaders/RuiSkeletonLoader.vue.js +11 -0
  227. package/dist/components/loaders/RuiSkeletonLoader.vue.js.map +1 -0
  228. package/dist/components/loaders/RuiSkeletonLoader.vue2.js +47 -0
  229. package/dist/components/loaders/RuiSkeletonLoader.vue2.js.map +1 -0
  230. package/dist/components/loaders/RuiSkeletonLoader.vue3.js +33 -0
  231. package/dist/components/loaders/RuiSkeletonLoader.vue3.js.map +1 -0
  232. package/dist/components/logos/RuiLogo.vue.js +114 -0
  233. package/dist/components/logos/RuiLogo.vue.js.map +1 -0
  234. package/dist/components/logos/RuiLogo.vue2.js +5 -0
  235. package/dist/components/logos/RuiLogo.vue2.js.map +1 -0
  236. package/dist/components/logos/logo.svg.js +5 -0
  237. package/dist/components/logos/logo.svg.js.map +1 -0
  238. package/dist/components/overlays/badge/RuiBadge.vue.d.ts +2 -2
  239. package/dist/components/overlays/badge/RuiBadge.vue.js +11 -0
  240. package/dist/components/overlays/badge/RuiBadge.vue.js.map +1 -0
  241. package/dist/components/overlays/badge/RuiBadge.vue2.js +95 -0
  242. package/dist/components/overlays/badge/RuiBadge.vue2.js.map +1 -0
  243. package/dist/components/overlays/badge/RuiBadge.vue3.js +77 -0
  244. package/dist/components/overlays/badge/RuiBadge.vue3.js.map +1 -0
  245. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js +34 -0
  246. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js.map +1 -0
  247. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue2.js +5 -0
  248. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue2.js.map +1 -0
  249. package/dist/components/overlays/dialog/RuiDialog.vue.js +11 -0
  250. package/dist/components/overlays/dialog/RuiDialog.vue.js.map +1 -0
  251. package/dist/components/overlays/dialog/RuiDialog.vue2.js +172 -0
  252. package/dist/components/overlays/dialog/RuiDialog.vue2.js.map +1 -0
  253. package/dist/components/overlays/dialog/RuiDialog.vue3.js +18 -0
  254. package/dist/components/overlays/dialog/RuiDialog.vue3.js.map +1 -0
  255. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +1 -1
  256. package/dist/components/overlays/menu/RuiMenu.vue.js +11 -0
  257. package/dist/components/overlays/menu/RuiMenu.vue.js.map +1 -0
  258. package/dist/components/overlays/menu/RuiMenu.vue2.js +221 -0
  259. package/dist/components/overlays/menu/RuiMenu.vue2.js.map +1 -0
  260. package/dist/components/overlays/menu/RuiMenu.vue3.js +21 -0
  261. package/dist/components/overlays/menu/RuiMenu.vue3.js.map +1 -0
  262. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.js +11 -0
  263. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.js.map +1 -0
  264. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js +112 -0
  265. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js.map +1 -0
  266. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue3.js +28 -0
  267. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue3.js.map +1 -0
  268. package/dist/components/overlays/notification/RuiNotification.vue.js +74 -0
  269. package/dist/components/overlays/notification/RuiNotification.vue.js.map +1 -0
  270. package/dist/components/overlays/notification/RuiNotification.vue2.js +5 -0
  271. package/dist/components/overlays/notification/RuiNotification.vue2.js.map +1 -0
  272. package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +1 -1
  273. package/dist/components/overlays/tooltip/RuiTooltip.vue.js +11 -0
  274. package/dist/components/overlays/tooltip/RuiTooltip.vue.js.map +1 -0
  275. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js +105 -0
  276. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js.map +1 -0
  277. package/dist/components/overlays/tooltip/RuiTooltip.vue3.js +27 -0
  278. package/dist/components/overlays/tooltip/RuiTooltip.vue3.js.map +1 -0
  279. package/dist/components/progress/RuiProgress.vue.d.ts +1 -1
  280. package/dist/components/progress/RuiProgress.vue.js +11 -0
  281. package/dist/components/progress/RuiProgress.vue.js.map +1 -0
  282. package/dist/components/progress/RuiProgress.vue2.js +98 -0
  283. package/dist/components/progress/RuiProgress.vue2.js.map +1 -0
  284. package/dist/components/progress/RuiProgress.vue3.js +48 -0
  285. package/dist/components/progress/RuiProgress.vue3.js.map +1 -0
  286. package/dist/components/steppers/RuiFooterStepper.vue.js +11 -0
  287. package/dist/components/steppers/RuiFooterStepper.vue.js.map +1 -0
  288. package/dist/components/steppers/RuiFooterStepper.vue2.js +143 -0
  289. package/dist/components/steppers/RuiFooterStepper.vue2.js.map +1 -0
  290. package/dist/components/steppers/RuiFooterStepper.vue3.js +31 -0
  291. package/dist/components/steppers/RuiFooterStepper.vue3.js.map +1 -0
  292. package/dist/components/steppers/RuiStepper.vue.d.ts +1 -1
  293. package/dist/components/steppers/RuiStepper.vue.js +11 -0
  294. package/dist/components/steppers/RuiStepper.vue.js.map +1 -0
  295. package/dist/components/steppers/RuiStepper.vue2.js +130 -0
  296. package/dist/components/steppers/RuiStepper.vue2.js.map +1 -0
  297. package/dist/components/steppers/RuiStepper.vue3.js +58 -0
  298. package/dist/components/steppers/RuiStepper.vue3.js.map +1 -0
  299. package/dist/components/steppers/RuiStepperCustomIcon.vue.d.ts +1 -1
  300. package/dist/components/steppers/RuiStepperCustomIcon.vue.js +11 -0
  301. package/dist/components/steppers/RuiStepperCustomIcon.vue.js.map +1 -0
  302. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js +38 -0
  303. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js.map +1 -0
  304. package/dist/components/steppers/RuiStepperCustomIcon.vue3.js +15 -0
  305. package/dist/components/steppers/RuiStepperCustomIcon.vue3.js.map +1 -0
  306. package/dist/components/steppers/RuiStepperIcon.vue.d.ts +1 -1
  307. package/dist/components/steppers/RuiStepperIcon.vue.js +11 -0
  308. package/dist/components/steppers/RuiStepperIcon.vue.js.map +1 -0
  309. package/dist/components/steppers/RuiStepperIcon.vue2.js +43 -0
  310. package/dist/components/steppers/RuiStepperIcon.vue2.js.map +1 -0
  311. package/dist/components/steppers/RuiStepperIcon.vue3.js +21 -0
  312. package/dist/components/steppers/RuiStepperIcon.vue3.js.map +1 -0
  313. package/dist/components/tables/RuiDataTable.vue.d.ts +2 -2
  314. package/dist/components/tables/RuiDataTable.vue.js +11 -0
  315. package/dist/components/tables/RuiDataTable.vue.js.map +1 -0
  316. package/dist/components/tables/RuiDataTable.vue2.js +943 -0
  317. package/dist/components/tables/RuiDataTable.vue2.js.map +1 -0
  318. package/dist/components/tables/RuiDataTable.vue3.js +79 -0
  319. package/dist/components/tables/RuiDataTable.vue3.js.map +1 -0
  320. package/dist/components/tables/RuiExpandButton.vue.d.ts +1 -1
  321. package/dist/components/tables/RuiExpandButton.vue.js +11 -0
  322. package/dist/components/tables/RuiExpandButton.vue.js.map +1 -0
  323. package/dist/components/tables/RuiExpandButton.vue2.js +42 -0
  324. package/dist/components/tables/RuiExpandButton.vue2.js.map +1 -0
  325. package/dist/components/tables/RuiExpandButton.vue3.js +15 -0
  326. package/dist/components/tables/RuiExpandButton.vue3.js.map +1 -0
  327. package/dist/components/tables/RuiTableHead.vue.js +11 -0
  328. package/dist/components/tables/RuiTableHead.vue.js.map +1 -0
  329. package/dist/components/tables/RuiTableHead.vue2.js +195 -0
  330. package/dist/components/tables/RuiTableHead.vue2.js.map +1 -0
  331. package/dist/components/tables/RuiTableHead.vue3.js +69 -0
  332. package/dist/components/tables/RuiTableHead.vue3.js.map +1 -0
  333. package/dist/components/tables/RuiTablePagination.vue.js +11 -0
  334. package/dist/components/tables/RuiTablePagination.vue.js.map +1 -0
  335. package/dist/components/tables/RuiTablePagination.vue2.js +196 -0
  336. package/dist/components/tables/RuiTablePagination.vue2.js.map +1 -0
  337. package/dist/components/tables/RuiTablePagination.vue3.js +28 -0
  338. package/dist/components/tables/RuiTablePagination.vue3.js.map +1 -0
  339. package/dist/components/tables/table_no_data_placeholder.svg.js +5 -0
  340. package/dist/components/tables/table_no_data_placeholder.svg.js.map +1 -0
  341. package/dist/components/tables/table_no_data_placeholder_dark.svg.js +5 -0
  342. package/dist/components/tables/table_no_data_placeholder_dark.svg.js.map +1 -0
  343. package/dist/components/tabs/tab/RuiTab.vue.d.ts +1 -1
  344. package/dist/components/tabs/tab/RuiTab.vue.js +11 -0
  345. package/dist/components/tabs/tab/RuiTab.vue.js.map +1 -0
  346. package/dist/components/tabs/tab/RuiTab.vue2.js +135 -0
  347. package/dist/components/tabs/tab/RuiTab.vue2.js.map +1 -0
  348. package/dist/components/tabs/tab/RuiTab.vue3.js +17 -0
  349. package/dist/components/tabs/tab/RuiTab.vue3.js.map +1 -0
  350. package/dist/components/tabs/tab-item/RuiTabItem.vue.js +11 -0
  351. package/dist/components/tabs/tab-item/RuiTabItem.vue.js.map +1 -0
  352. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js +51 -0
  353. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js.map +1 -0
  354. package/dist/components/tabs/tab-item/RuiTabItem.vue3.js +9 -0
  355. package/dist/components/tabs/tab-item/RuiTabItem.vue3.js.map +1 -0
  356. package/dist/components/tabs/tab-items/RuiTabItems.vue.js +11 -0
  357. package/dist/components/tabs/tab-items/RuiTabItems.vue.js.map +1 -0
  358. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js +90 -0
  359. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js.map +1 -0
  360. package/dist/components/tabs/tab-items/RuiTabItems.vue3.js +9 -0
  361. package/dist/components/tabs/tab-items/RuiTabItems.vue3.js.map +1 -0
  362. package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +1 -1
  363. package/dist/components/tabs/tabs/RuiTabs.vue.js +11 -0
  364. package/dist/components/tabs/tabs/RuiTabs.vue.js.map +1 -0
  365. package/dist/components/tabs/tabs/RuiTabs.vue2.js +281 -0
  366. package/dist/components/tabs/tabs/RuiTabs.vue2.js.map +1 -0
  367. package/dist/components/tabs/tabs/RuiTabs.vue3.js +20 -0
  368. package/dist/components/tabs/tabs/RuiTabs.vue3.js.map +1 -0
  369. package/dist/components/time-picker/RuiTimePicker.vue.d.ts +1 -1
  370. package/dist/components/time-picker/RuiTimePicker.vue.js +11 -0
  371. package/dist/components/time-picker/RuiTimePicker.vue.js.map +1 -0
  372. package/dist/components/time-picker/RuiTimePicker.vue2.js +414 -0
  373. package/dist/components/time-picker/RuiTimePicker.vue2.js.map +1 -0
  374. package/dist/components/time-picker/RuiTimePicker.vue3.js +21 -0
  375. package/dist/components/time-picker/RuiTimePicker.vue3.js.map +1 -0
  376. package/dist/composables/breakpoint.js +49 -0
  377. package/dist/composables/breakpoint.js.map +1 -0
  378. package/dist/composables/defaults/table.js +23 -0
  379. package/dist/composables/defaults/table.js.map +1 -0
  380. package/dist/composables/dropdown-menu.js +218 -0
  381. package/dist/composables/dropdown-menu.js.map +1 -0
  382. package/dist/composables/forms/auto-complete/focus.js +71 -0
  383. package/dist/composables/forms/auto-complete/focus.js.map +1 -0
  384. package/dist/composables/forms/auto-complete/index.d.ts +4 -4
  385. package/dist/composables/forms/auto-complete/keyboard-navigation.js +133 -0
  386. package/dist/composables/forms/auto-complete/keyboard-navigation.js.map +1 -0
  387. package/dist/composables/forms/auto-complete/search.js +93 -0
  388. package/dist/composables/forms/auto-complete/search.js.map +1 -0
  389. package/dist/composables/forms/auto-complete/value.js +129 -0
  390. package/dist/composables/forms/auto-complete/value.js.map +1 -0
  391. package/dist/composables/icons.js +60 -0
  392. package/dist/composables/icons.js.map +1 -0
  393. package/dist/composables/index.d.ts +3 -3
  394. package/dist/composables/index.js +9 -0
  395. package/dist/composables/index.js.map +1 -0
  396. package/dist/composables/popper.js +164 -0
  397. package/dist/composables/popper.js.map +1 -0
  398. package/dist/composables/sticky-header.js +105 -0
  399. package/dist/composables/sticky-header.js.map +1 -0
  400. package/dist/composables/theme.d.ts +1 -1
  401. package/dist/composables/theme.js +75 -0
  402. package/dist/composables/theme.js.map +1 -0
  403. package/dist/composables/timeout-manager.js +21 -0
  404. package/dist/composables/timeout-manager.js.map +1 -0
  405. package/dist/composables/use-rui-i18n.js +24 -0
  406. package/dist/composables/use-rui-i18n.js.map +1 -0
  407. package/dist/consts/colors.js +50 -0
  408. package/dist/consts/colors.js.map +1 -0
  409. package/dist/consts/time-accuracy.js +9 -0
  410. package/dist/consts/time-accuracy.js.map +1 -0
  411. package/dist/i18n/keys.js +20 -0
  412. package/dist/i18n/keys.js.map +1 -0
  413. package/dist/icons/icons_1.js +2503 -0
  414. package/dist/icons/icons_1.js.map +1 -0
  415. package/dist/icons/icons_2.js +2503 -0
  416. package/dist/icons/icons_2.js.map +1 -0
  417. package/dist/icons/icons_3.js +2503 -0
  418. package/dist/icons/icons_3.js.map +1 -0
  419. package/dist/icons/icons_4.js +923 -0
  420. package/dist/icons/icons_4.js.map +1 -0
  421. package/dist/icons/index.d.ts +4 -4
  422. package/dist/icons/index.js +9 -0
  423. package/dist/icons/index.js.map +1 -0
  424. package/dist/index.d.ts +11 -11
  425. package/dist/index.js +1852 -0
  426. package/dist/index.js.map +1 -0
  427. package/dist/style.css +12852 -1
  428. package/dist/theme/index.js +185 -0
  429. package/dist/theme/index.js.map +1 -0
  430. package/dist/types/stepper.js +17 -0
  431. package/dist/types/stepper.js.map +1 -0
  432. package/dist/types/theme.js +27 -0
  433. package/dist/types/theme.js.map +1 -0
  434. package/dist/utils/assert.js +14 -0
  435. package/dist/utils/assert.js.map +1 -0
  436. package/dist/utils/blockie.js +79 -0
  437. package/dist/utils/blockie.js.map +1 -0
  438. package/dist/utils/form-text-detail.js +31 -0
  439. package/dist/utils/form-text-detail.js.map +1 -0
  440. package/dist/utils/generate-id.js +21 -0
  441. package/dist/utils/generate-id.js.map +1 -0
  442. package/dist/utils/helpers.js +51 -0
  443. package/dist/utils/helpers.js.map +1 -0
  444. package/dist/utils/is-equal.js +33 -0
  445. package/dist/utils/is-equal.js.map +1 -0
  446. package/dist/web-types.json +1 -1
  447. package/package.json +16 -14
  448. package/dist/components/index.es.js +0 -8030
  449. package/dist/composables/index-CC7A7CEh.js +0 -737
  450. package/dist/composables/index.es.js +0 -7
  451. package/dist/consts/colors-D563Ic3q.js +0 -48
  452. package/dist/consts/forms/auto-complete/index-l0sNRNKZ.js +0 -2
  453. package/dist/consts/time-accuracy-BnKA5GyT.js +0 -9
  454. package/dist/i18n/keys-CNGXWOJX.js +0 -20
  455. package/dist/icons/icons_1.es.js +0 -2004
  456. package/dist/icons/icons_2.es.js +0 -2004
  457. package/dist/icons/icons_3.es.js +0 -2004
  458. package/dist/icons/icons_4.es.js +0 -740
  459. package/dist/icons/index.es.js +0 -1697
  460. package/dist/index-D7l4d7N2.js +0 -54
  461. package/dist/index.es.js +0 -1757
  462. package/dist/theme/index.es.js +0 -177
  463. package/dist/types/index-CN6Ip1GL.js +0 -39
  464. package/dist/utils/index-DJ-ueLCs.js +0 -158
  465. package/dist/vendor-Hqbg5uCG.js +0 -1931
@@ -0,0 +1,149 @@
1
+ import { defineComponent, mergeModels, useModel, inject, ref, watch, createElementBlock, openBlock, createElementVNode, Fragment, renderList, unref, toDisplayString, withModifiers, normalizeClass } from "vue";
2
+ import { get, isDefined, set } from "@vueuse/core";
3
+ import { CalendarStateSymbol, getDaysOfWeek } from "./state.js";
4
+ const _hoisted_1 = { class: "calendar-grid" };
5
+ const _hoisted_2 = { class: "calendar-weekdays" };
6
+ const _hoisted_3 = { class: "calendar-days" };
7
+ const _hoisted_4 = ["data-id", "disabled", "onClick"];
8
+ const _sfc_main = /* @__PURE__ */ defineComponent({
9
+ ...{
10
+ name: "RuiCalendarGrid",
11
+ inheritAttrs: false
12
+ },
13
+ __name: "RuiCalendarGrid",
14
+ props: /* @__PURE__ */ mergeModels({
15
+ viewMonth: {},
16
+ viewYear: {}
17
+ }, {
18
+ "modelValue": {},
19
+ "modelModifiers": {}
20
+ }),
21
+ emits: ["update:modelValue"],
22
+ setup(__props) {
23
+ const model = useModel(__props, "modelValue");
24
+ const props = __props;
25
+ const calendarState = inject(CalendarStateSymbol);
26
+ function createDateKey(date) {
27
+ return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")}`;
28
+ }
29
+ const daysOfWeek = getDaysOfWeek();
30
+ const today = /* @__PURE__ */ new Date();
31
+ const todayKey = createDateKey(today);
32
+ const calendarDays = ref([]);
33
+ function createDayData(date, isCurrentMonth, modelValue, maxDateValue, minDateValue) {
34
+ const key = createDateKey(date);
35
+ return {
36
+ date,
37
+ isCurrentMonth,
38
+ isInRange: isDateInRangeCheck(date, maxDateValue, minDateValue),
39
+ isSelected: modelValue ? isDateSelectedCheck(date, modelValue) : false,
40
+ isToday: key === todayKey,
41
+ key,
42
+ dayNumber: date.getDate()
43
+ };
44
+ }
45
+ function calculateCalendarDays() {
46
+ const firstDayOfMonth = new Date(props.viewYear, props.viewMonth, 1);
47
+ const lastDayOfMonth = new Date(props.viewYear, props.viewMonth + 1, 0);
48
+ const daysInMonth = lastDayOfMonth.getDate();
49
+ const startingDayOfWeek = firstDayOfMonth.getDay();
50
+ const { maxDate, minDate } = calendarState;
51
+ const modelValue = get(model);
52
+ const maxDateValue = isDefined(maxDate) ? get(maxDate) : null;
53
+ const minDateValue = isDefined(minDate) ? get(minDate) : null;
54
+ const result = [];
55
+ if (startingDayOfWeek > 0) {
56
+ const prevMonthLastDay = new Date(props.viewYear, props.viewMonth, 0).getDate();
57
+ for (let i = startingDayOfWeek - 1; i >= 0; i--) {
58
+ const date = new Date(props.viewYear, props.viewMonth - 1, prevMonthLastDay - i, 12, 0, 0, 0);
59
+ result.push(createDayData(date, false, modelValue, maxDateValue, minDateValue));
60
+ }
61
+ }
62
+ for (let i = 1; i <= daysInMonth; i++) {
63
+ const date = new Date(props.viewYear, props.viewMonth, i, 12, 0, 0, 0);
64
+ result.push(createDayData(date, true, modelValue, maxDateValue, minDateValue));
65
+ }
66
+ const totalDaysSoFar = result.length;
67
+ const daysToAdd = 42 - totalDaysSoFar;
68
+ for (let i = 1; i <= daysToAdd; i++) {
69
+ const date = new Date(props.viewYear, props.viewMonth + 1, i, 12, 0, 0, 0);
70
+ result.push(createDayData(date, false, modelValue, maxDateValue, minDateValue));
71
+ }
72
+ set(calendarDays, result);
73
+ }
74
+ function isDateInRangeCheck(date, maxDateValue, minDateValue) {
75
+ if (maxDateValue && date > maxDateValue)
76
+ return false;
77
+ if (minDateValue && date < minDateValue)
78
+ return false;
79
+ return true;
80
+ }
81
+ function isDateSelectedCheck(date, modelValue) {
82
+ return date.getFullYear() === modelValue.getFullYear() && date.getMonth() === modelValue.getMonth() && date.getDate() === modelValue.getDate();
83
+ }
84
+ calculateCalendarDays();
85
+ watch([() => props.viewMonth, () => props.viewYear], () => {
86
+ calculateCalendarDays();
87
+ });
88
+ watch(model, () => {
89
+ calculateCalendarDays();
90
+ });
91
+ watch([() => calendarState.maxDate, () => calendarState.minDate], () => {
92
+ calculateCalendarDays();
93
+ }, { deep: true });
94
+ function selectDate(dayData) {
95
+ if (!dayData.isInRange)
96
+ return;
97
+ let updateModel;
98
+ if (dayData.isSelected && calendarState.allowEmpty) {
99
+ updateModel = void 0;
100
+ } else if (isDefined(model)) {
101
+ const modelValue = get(model);
102
+ const newDate = new Date(dayData.date);
103
+ newDate.setHours(modelValue.getHours());
104
+ newDate.setMinutes(modelValue.getMinutes());
105
+ newDate.setSeconds(modelValue.getSeconds());
106
+ updateModel = newDate;
107
+ } else {
108
+ updateModel = new Date(dayData.date);
109
+ }
110
+ set(model, updateModel);
111
+ }
112
+ return (_ctx, _cache) => {
113
+ return openBlock(), createElementBlock("div", _hoisted_1, [
114
+ createElementVNode("div", _hoisted_2, [
115
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(daysOfWeek), (day) => {
116
+ return openBlock(), createElementBlock("span", {
117
+ key: day,
118
+ class: "weekday-label"
119
+ }, toDisplayString(day), 1);
120
+ }), 128))
121
+ ]),
122
+ createElementVNode("div", _hoisted_3, [
123
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(get)(calendarDays.value), (dayData) => {
124
+ return openBlock(), createElementBlock("button", {
125
+ key: dayData.key,
126
+ type: "button",
127
+ "data-id": dayData.key,
128
+ class: normalizeClass(["h-9 w-full flex items-center justify-center text-sm rounded-full mx-auto max-w-[2.25rem] transition-colors duration-150 ease-in-out border-none outline-none cursor-pointer focus:ring-2 focus:ring-rui-primary focus:ring-opacity-50", [
129
+ {
130
+ "bg-rui-primary text-white hover:bg-rui-primary/90 dark:hover:bg-rui-primary/90": dayData.isSelected,
131
+ "text-gray-400 dark:text-gray-600": !dayData.isCurrentMonth && !dayData.isSelected,
132
+ "text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-700": dayData.isCurrentMonth && !dayData.isSelected && dayData.isInRange,
133
+ "opacity-50 cursor-not-allowed hover:bg-transparent": !dayData.isInRange,
134
+ "today-indicator": dayData.isToday && !dayData.isSelected
135
+ }
136
+ ]]),
137
+ disabled: !dayData.isInRange,
138
+ onClick: withModifiers(($event) => selectDate(dayData), ["stop"])
139
+ }, toDisplayString(dayData.dayNumber), 11, _hoisted_4);
140
+ }), 128))
141
+ ])
142
+ ]);
143
+ };
144
+ }
145
+ });
146
+ export {
147
+ _sfc_main as default
148
+ };
149
+ //# sourceMappingURL=RuiCalendarGrid.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiCalendarGrid.vue2.js","sources":["../../../src/components/calendar/RuiCalendarGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { get, isDefined, set } from '@vueuse/core';\nimport { inject, ref, watch } from 'vue';\nimport { CalendarStateSymbol, getDaysOfWeek, type RuiCalendarState } from '@/components/calendar/state';\n\ndefineOptions({\n name: 'RuiCalendarGrid',\n inheritAttrs: false,\n});\n\nconst model = defineModel<Date | undefined>();\n\nconst props = defineProps<{\n viewMonth: number;\n viewYear: number;\n}>();\n\nconst calendarState = inject<RuiCalendarState>(CalendarStateSymbol) as RuiCalendarState;\n\n// Helper functions to reduce duplication\nfunction createDateKey(date: Date): string {\n return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;\n}\n\n// Pre-calculated constants\nconst daysOfWeek = getDaysOfWeek();\nconst today = new Date();\nconst todayKey = createDateKey(today);\n\n// Pre-calculated arrays for performance - using refs for better control\nconst calendarDays = ref<Array<{\n date: Date;\n isCurrentMonth: boolean;\n isInRange: boolean;\n isSelected: boolean;\n isToday: boolean;\n key: string;\n dayNumber: number;\n}>>([]);\n\nfunction createDayData(date: Date, isCurrentMonth: boolean, modelValue: Date | null | undefined, maxDateValue: Date | null, minDateValue: Date | null) {\n const key = createDateKey(date);\n return {\n date,\n isCurrentMonth,\n isInRange: isDateInRangeCheck(date, maxDateValue, minDateValue),\n isSelected: modelValue ? isDateSelectedCheck(date, modelValue) : false,\n isToday: key === todayKey,\n key,\n dayNumber: date.getDate(),\n };\n}\n\n// Pre-calculation functions using VueUse get/set\nfunction calculateCalendarDays() {\n const firstDayOfMonth = new Date(props.viewYear, props.viewMonth, 1);\n const lastDayOfMonth = new Date(props.viewYear, props.viewMonth + 1, 0);\n const daysInMonth = lastDayOfMonth.getDate();\n const startingDayOfWeek = firstDayOfMonth.getDay();\n\n const { maxDate, minDate } = calendarState;\n const modelValue = get(model);\n const maxDateValue = isDefined(maxDate) ? get(maxDate) : null;\n const minDateValue = isDefined(minDate) ? get(minDate) : null;\n\n const result = [];\n\n // Previous month days\n if (startingDayOfWeek > 0) {\n const prevMonthLastDay = new Date(props.viewYear, props.viewMonth, 0).getDate();\n for (let i = startingDayOfWeek - 1; i >= 0; i--) {\n const date = new Date(props.viewYear, props.viewMonth - 1, prevMonthLastDay - i, 12, 0, 0, 0);\n result.push(createDayData(date, false, modelValue, maxDateValue, minDateValue));\n }\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = new Date(props.viewYear, props.viewMonth, i, 12, 0, 0, 0);\n result.push(createDayData(date, true, modelValue, maxDateValue, minDateValue));\n }\n\n // Next month days\n const totalDaysSoFar = result.length;\n const daysToAdd = 42 - totalDaysSoFar;\n for (let i = 1; i <= daysToAdd; i++) {\n const date = new Date(props.viewYear, props.viewMonth + 1, i, 12, 0, 0, 0);\n result.push(createDayData(date, false, modelValue, maxDateValue, minDateValue));\n }\n\n set(calendarDays, result);\n}\n\nfunction isDateInRangeCheck(date: Date, maxDateValue: Date | null, minDateValue: Date | null): boolean {\n if (maxDateValue && date > maxDateValue)\n return false;\n if (minDateValue && date < minDateValue)\n return false;\n return true;\n}\n\nfunction isDateSelectedCheck(date: Date, modelValue: Date): boolean {\n return date.getFullYear() === modelValue.getFullYear()\n && date.getMonth() === modelValue.getMonth()\n && date.getDate() === modelValue.getDate();\n}\n\n// Initial calculation\ncalculateCalendarDays();\n\n// Watchers for recalculation only when needed\nwatch([() => props.viewMonth, () => props.viewYear], () => {\n calculateCalendarDays();\n});\n\nwatch(model, () => {\n calculateCalendarDays();\n});\n\nwatch([() => calendarState.maxDate, () => calendarState.minDate], () => {\n calculateCalendarDays();\n}, { deep: true });\n\nfunction selectDate(dayData: { date: Date; isInRange: boolean; isSelected: boolean }) {\n if (!dayData.isInRange)\n return;\n\n let updateModel: Date | undefined;\n\n if (dayData.isSelected && calendarState.allowEmpty) {\n updateModel = undefined;\n }\n else if (isDefined(model)) {\n const modelValue = get(model);\n const newDate = new Date(dayData.date);\n newDate.setHours(modelValue.getHours());\n newDate.setMinutes(modelValue.getMinutes());\n newDate.setSeconds(modelValue.getSeconds());\n updateModel = newDate;\n }\n else {\n updateModel = new Date(dayData.date);\n }\n set(model, updateModel);\n}\n</script>\n\n<template>\n <div class=\"calendar-grid\">\n <div class=\"calendar-weekdays\">\n <span\n v-for=\"day in daysOfWeek\"\n :key=\"day\"\n class=\"weekday-label\"\n >\n {{ day }}\n </span>\n </div>\n\n <div class=\"calendar-days\">\n <button\n v-for=\"dayData in get(calendarDays)\"\n :key=\"dayData.key\"\n type=\"button\"\n :data-id=\"dayData.key\"\n class=\"h-9 w-full flex items-center justify-center text-sm rounded-full mx-auto max-w-[2.25rem] transition-colors duration-150 ease-in-out border-none outline-none cursor-pointer focus:ring-2 focus:ring-rui-primary focus:ring-opacity-50\"\n :class=\"[\n {\n 'bg-rui-primary text-white hover:bg-rui-primary/90 dark:hover:bg-rui-primary/90': dayData.isSelected,\n 'text-gray-400 dark:text-gray-600': !dayData.isCurrentMonth && !dayData.isSelected,\n 'text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-700': dayData.isCurrentMonth && !dayData.isSelected && dayData.isInRange,\n 'opacity-50 cursor-not-allowed hover:bg-transparent': !dayData.isInRange,\n 'today-indicator': dayData.isToday && !dayData.isSelected,\n },\n ]\"\n :disabled=\"!dayData.isInRange\"\n @click.stop=\"selectDate(dayData)\"\n >\n {{ dayData.dayNumber }}\n </button>\n </div>\n </div>\n</template>\n\n<style scoped>\n.calendar-grid {\n @apply w-full p-2 pt-0;\n}\n\n.calendar-weekdays {\n @apply grid grid-cols-7 pb-2;\n}\n\n.weekday-label {\n @apply py-2 text-xs font-medium text-center text-gray-500 dark:text-gray-400;\n}\n\n.calendar-days {\n @apply grid grid-cols-7 gap-0.5;\n}\n\n.today-indicator {\n @apply relative;\n\n &:after {\n content: '';\n @apply absolute size-1 rounded-full bottom-1 left-1/2 transform -translate-x-1/2 bg-rui-primary;\n }\n}\n</style>\n"],"names":["_useModel","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","_unref","_withModifiers","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAUA,UAAM,QAAQA,8BAA8B;AAE5C,UAAM,QAAQ;AAKd,UAAM,gBAAgB,OAAyB,mBAAmB;AAGlE,aAAS,cAAc,MAAoB;AACzC,aAAO,GAAG,KAAK,YAAA,CAAa,KAAK,KAAK,SAAA,IAAa,GAAG,WAAW,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,QAAA,EAAU,WAAW,SAAS,GAAG,GAAG,CAAC;AAAA,IACjI;AAGA,UAAM,aAAa,cAAA;AACnB,UAAM,4BAAY,KAAA;AAClB,UAAM,WAAW,cAAc,KAAK;AAGpC,UAAM,eAAe,IAQjB,EAAE;AAEN,aAAS,cAAc,MAAY,gBAAyB,YAAqC,cAA2B,cAA2B;AACrJ,YAAM,MAAM,cAAc,IAAI;AAC9B,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,WAAW,mBAAmB,MAAM,cAAc,YAAY;AAAA,QAC9D,YAAY,aAAa,oBAAoB,MAAM,UAAU,IAAI;AAAA,QACjE,SAAS,QAAQ;AAAA,QACjB;AAAA,QACA,WAAW,KAAK,QAAA;AAAA,MAAQ;AAAA,IAE5B;AAGA,aAAS,wBAAwB;AAC/B,YAAM,kBAAkB,IAAI,KAAK,MAAM,UAAU,MAAM,WAAW,CAAC;AACnE,YAAM,iBAAiB,IAAI,KAAK,MAAM,UAAU,MAAM,YAAY,GAAG,CAAC;AACtE,YAAM,cAAc,eAAe,QAAA;AACnC,YAAM,oBAAoB,gBAAgB,OAAA;AAE1C,YAAM,EAAE,SAAS,QAAA,IAAY;AAC7B,YAAM,aAAa,IAAI,KAAK;AAC5B,YAAM,eAAe,UAAU,OAAO,IAAI,IAAI,OAAO,IAAI;AACzD,YAAM,eAAe,UAAU,OAAO,IAAI,IAAI,OAAO,IAAI;AAEzD,YAAM,SAAS,CAAA;AAGf,UAAI,oBAAoB,GAAG;AACzB,cAAM,mBAAmB,IAAI,KAAK,MAAM,UAAU,MAAM,WAAW,CAAC,EAAE,QAAA;AACtE,iBAAS,IAAI,oBAAoB,GAAG,KAAK,GAAG,KAAK;AAC/C,gBAAM,OAAO,IAAI,KAAK,MAAM,UAAU,MAAM,YAAY,GAAG,mBAAmB,GAAG,IAAI,GAAG,GAAG,CAAC;AAC5F,iBAAO,KAAK,cAAc,MAAM,OAAO,YAAY,cAAc,YAAY,CAAC;AAAA,QAChF;AAAA,MACF;AAGA,eAAS,IAAI,GAAG,KAAK,aAAa,KAAK;AACrC,cAAM,OAAO,IAAI,KAAK,MAAM,UAAU,MAAM,WAAW,GAAG,IAAI,GAAG,GAAG,CAAC;AACrE,eAAO,KAAK,cAAc,MAAM,MAAM,YAAY,cAAc,YAAY,CAAC;AAAA,MAC/E;AAGA,YAAM,iBAAiB,OAAO;AAC9B,YAAM,YAAY,KAAK;AACvB,eAAS,IAAI,GAAG,KAAK,WAAW,KAAK;AACnC,cAAM,OAAO,IAAI,KAAK,MAAM,UAAU,MAAM,YAAY,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AACzE,eAAO,KAAK,cAAc,MAAM,OAAO,YAAY,cAAc,YAAY,CAAC;AAAA,MAChF;AAEA,UAAI,cAAc,MAAM;AAAA,IAC1B;AAEA,aAAS,mBAAmB,MAAY,cAA2B,cAAoC;AACrG,UAAI,gBAAgB,OAAO;AACzB,eAAO;AACT,UAAI,gBAAgB,OAAO;AACzB,eAAO;AACT,aAAO;AAAA,IACT;AAEA,aAAS,oBAAoB,MAAY,YAA2B;AAClE,aAAO,KAAK,YAAA,MAAkB,WAAW,YAAA,KACpC,KAAK,SAAA,MAAe,WAAW,cAC/B,KAAK,QAAA,MAAc,WAAW,QAAA;AAAA,IACrC;AAGA,0BAAA;AAGA,UAAM,CAAC,MAAM,MAAM,WAAW,MAAM,MAAM,QAAQ,GAAG,MAAM;AACzD,4BAAA;AAAA,IACF,CAAC;AAED,UAAM,OAAO,MAAM;AACjB,4BAAA;AAAA,IACF,CAAC;AAED,UAAM,CAAC,MAAM,cAAc,SAAS,MAAM,cAAc,OAAO,GAAG,MAAM;AACtE,4BAAA;AAAA,IACF,GAAG,EAAE,MAAM,MAAM;AAEjB,aAAS,WAAW,SAAkE;AACpF,UAAI,CAAC,QAAQ;AACX;AAEF,UAAI;AAEJ,UAAI,QAAQ,cAAc,cAAc,YAAY;AAClD,sBAAc;AAAA,MAChB,WACS,UAAU,KAAK,GAAG;AACzB,cAAM,aAAa,IAAI,KAAK;AAC5B,cAAM,UAAU,IAAI,KAAK,QAAQ,IAAI;AACrC,gBAAQ,SAAS,WAAW,UAAU;AACtC,gBAAQ,WAAW,WAAW,YAAY;AAC1C,gBAAQ,WAAW,WAAW,YAAY;AAC1C,sBAAc;AAAA,MAChB,OACK;AACH,sBAAc,IAAI,KAAK,QAAQ,IAAI;AAAA,MACrC;AACA,UAAI,OAAO,WAAW;AAAA,IACxB;;AAIE,aAAAC,UAAA,GAAAC,mBAiCM,OAjCN,YAiCM;AAAA,QAhCJC,mBAQM,OARN,YAQM;AAAA,4BAPJD,mBAMOE,UAAA,MAAAC,WALSC,MAAA,UAAA,GAAU,CAAjB,QAAG;gCADZJ,mBAMO,QAAA;AAAA,cAJJ,KAAK;AAAA,cACN,OAAM;AAAA,YAAA,mBAEH,GAAG,GAAA,CAAA;AAAA;;QAIVC,mBAqBM,OArBN,YAqBM;AAAA,WApBJF,UAAA,IAAA,GAAAC,mBAmBSE,UAAA,MAAAC,WAlBWC,MAAA,GAAA,EAAI,aAAA,KAAY,IAA3B,YAAO;gCADhBJ,mBAmBS,UAAA;AAAA,cAjBN,KAAK,QAAQ;AAAA,cACd,MAAK;AAAA,cACJ,WAAS,QAAQ;AAAA,cAClB,uBAAM,yOAAuO;AAAA;kBACzH,kFAAA,QAAQ;AAAA,kBAA6D,oCAAA,CAAA,QAAQ,kBAAc,CAAK,QAAQ;AAAA,+FAAqG,QAAQ,kBAAc,CAAK,QAAQ,cAAc,QAAQ;AAAA,kBAA8E,sDAAA,CAAA,QAAQ;AAAA,kBAA0C,mBAAA,QAAQ,WAAO,CAAK,QAAQ;AAAA,gBAAA;AAAA;cASrhB,UAAQ,CAAG,QAAQ;AAAA,cACnB,SAAKK,cAAA,CAAA,WAAO,WAAW,OAAO,GAAA,CAAA,MAAA,CAAA;AAAA,YAAA,GAE5BC,gBAAA,QAAQ,SAAS,GAAA,IAAA,UAAA;AAAA;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { type MonthYearSelection } from '../../components/calendar/state';
1
+ import { type MonthYearSelection } from '../../components/calendar/state.js';
2
2
  type __VLS_Props = {
3
3
  title: string;
4
4
  viewMonth: number;
@@ -0,0 +1,8 @@
1
+ import _sfc_main from "./RuiCalendarHeader.vue2.js";
2
+ /* empty css */
3
+ import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const RuiCalendarHeader = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b6256f59"]]);
5
+ export {
6
+ RuiCalendarHeader as default
7
+ };
8
+ //# sourceMappingURL=RuiCalendarHeader.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiCalendarHeader.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,112 @@
1
+ import { defineComponent, mergeModels, useModel, ref, inject, computed, createElementBlock, openBlock, createVNode, createElementVNode, withModifiers, withCtx, createTextVNode, toDisplayString } from "vue";
2
+ import { isDefined, get, set } from "@vueuse/core";
3
+ import RuiButton from "../buttons/button/RuiButton.vue.js";
4
+ import { CalendarStateSymbol } from "./state.js";
5
+ import RuiIcon from "../icons/RuiIcon.vue.js";
6
+ import RuiCalendarMenu from "./RuiCalendarMenu.vue.js";
7
+ const _hoisted_1 = { class: "calendar-header" };
8
+ const _sfc_main = /* @__PURE__ */ defineComponent({
9
+ ...{
10
+ name: "RuiCalendarHeader",
11
+ inheritAttrs: false
12
+ },
13
+ __name: "RuiCalendarHeader",
14
+ props: /* @__PURE__ */ mergeModels({
15
+ title: {},
16
+ viewMonth: {},
17
+ viewYear: {}
18
+ }, {
19
+ "menu-open": { type: Boolean, ...{ required: true } },
20
+ "menu-openModifiers": {}
21
+ }),
22
+ emits: /* @__PURE__ */ mergeModels(["prev-month", "next-month", "select-month"], ["update:menu-open"]),
23
+ setup(__props, { emit: __emit }) {
24
+ const isMenuOpen = useModel(__props, "menu-open");
25
+ const props = __props;
26
+ const emit = __emit;
27
+ const anchorEl = ref();
28
+ const calendarState = inject(CalendarStateSymbol);
29
+ const canGoToNext = computed(() => {
30
+ const { maxDate } = calendarState;
31
+ if (!isDefined(maxDate)) {
32
+ return true;
33
+ }
34
+ const date = new Date(props.viewYear, props.viewMonth);
35
+ return date.getTime() < get(maxDate).getTime();
36
+ });
37
+ const canGoToPrev = computed(() => {
38
+ const { minDate } = calendarState;
39
+ if (!isDefined(minDate)) {
40
+ return true;
41
+ }
42
+ const date = new Date(props.viewYear, props.viewMonth);
43
+ return date.getTime() > get(minDate).getTime();
44
+ });
45
+ function handleTitleClick(e) {
46
+ set(anchorEl, e.currentTarget ?? void 0);
47
+ set(isMenuOpen, true);
48
+ }
49
+ function handleDateSelection(selection) {
50
+ emit("select-month", selection);
51
+ }
52
+ return (_ctx, _cache) => {
53
+ return openBlock(), createElementBlock("div", _hoisted_1, [
54
+ createVNode(RuiButton, {
55
+ type: "button",
56
+ class: "nav-button",
57
+ icon: "",
58
+ disabled: !canGoToPrev.value,
59
+ variant: "text",
60
+ onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("prev-month"), ["stop"]))
61
+ }, {
62
+ default: withCtx(() => [
63
+ createVNode(RuiIcon, {
64
+ name: "lu-chevron-left",
65
+ size: "20"
66
+ })
67
+ ]),
68
+ _: 1
69
+ }, 8, ["disabled"]),
70
+ createElementVNode("h3", {
71
+ class: "header-title",
72
+ onClick: _cache[1] || (_cache[1] = withModifiers(($event) => handleTitleClick($event), ["stop"]))
73
+ }, [
74
+ createTextVNode(toDisplayString(__props.title) + " ", 1),
75
+ createVNode(RuiIcon, {
76
+ name: "lu-chevron-down",
77
+ size: "16",
78
+ class: "ml-1"
79
+ })
80
+ ]),
81
+ createVNode(RuiCalendarMenu, {
82
+ modelValue: isMenuOpen.value,
83
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => isMenuOpen.value = $event),
84
+ "anchor-el": anchorEl.value,
85
+ "view-month": __props.viewMonth,
86
+ "view-year": __props.viewYear,
87
+ onSelect: _cache[3] || (_cache[3] = ($event) => handleDateSelection($event))
88
+ }, null, 8, ["modelValue", "anchor-el", "view-month", "view-year"]),
89
+ createVNode(RuiButton, {
90
+ type: "button",
91
+ class: "nav-button",
92
+ variant: "text",
93
+ icon: "",
94
+ disabled: !canGoToNext.value,
95
+ onClick: _cache[4] || (_cache[4] = withModifiers(($event) => emit("next-month"), ["stop"]))
96
+ }, {
97
+ default: withCtx(() => [
98
+ createVNode(RuiIcon, {
99
+ name: "lu-chevron-right",
100
+ size: "20"
101
+ })
102
+ ]),
103
+ _: 1
104
+ }, 8, ["disabled"])
105
+ ]);
106
+ };
107
+ }
108
+ });
109
+ export {
110
+ _sfc_main as default
111
+ };
112
+ //# sourceMappingURL=RuiCalendarHeader.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiCalendarHeader.vue2.js","sources":["../../../src/components/calendar/RuiCalendarHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { get, isDefined, set } from '@vueuse/core';\nimport { computed, inject, ref } from 'vue';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { CalendarStateSymbol, type MonthYearSelection, type RuiCalendarState } from '@/components/calendar/state';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiCalendarMenu from './RuiCalendarMenu.vue';\n\ndefineOptions({\n name: 'RuiCalendarHeader',\n inheritAttrs: false,\n});\n\nconst isMenuOpen = defineModel<boolean>('menu-open', { required: true });\n\nconst props = defineProps<{\n title: string;\n viewMonth: number;\n viewYear: number;\n}>();\n\nconst emit = defineEmits<{\n 'prev-month': [];\n 'next-month': [];\n 'select-month': [MonthYearSelection];\n}>();\n\nconst anchorEl = ref<HTMLElement>();\n\nconst calendarState = inject<RuiCalendarState>(CalendarStateSymbol) as RuiCalendarState;\n\nconst canGoToNext = computed<boolean>(() => {\n const { maxDate } = calendarState;\n if (!isDefined(maxDate)) {\n return true;\n }\n\n const date = new Date(props.viewYear, props.viewMonth);\n return date.getTime() < get(maxDate).getTime();\n});\n\nconst canGoToPrev = computed<boolean>(() => {\n const { minDate } = calendarState;\n if (!isDefined(minDate)) {\n return true;\n }\n\n const date = new Date(props.viewYear, props.viewMonth);\n return date.getTime() > get(minDate).getTime();\n});\n\nfunction handleTitleClick(e: Event) {\n set(anchorEl, e.currentTarget as HTMLElement ?? undefined);\n set(isMenuOpen, true);\n}\n\nfunction handleDateSelection(selection: MonthYearSelection) {\n emit('select-month', selection);\n}\n</script>\n\n<template>\n <div class=\"calendar-header\">\n <RuiButton\n type=\"button\"\n class=\"nav-button\"\n icon\n :disabled=\"!canGoToPrev\"\n variant=\"text\"\n @click.stop=\"emit('prev-month')\"\n >\n <RuiIcon\n name=\"lu-chevron-left\"\n size=\"20\"\n />\n </RuiButton>\n\n <h3\n class=\"header-title\"\n @click.stop=\"handleTitleClick($event)\"\n >\n {{ title }}\n <RuiIcon\n name=\"lu-chevron-down\"\n size=\"16\"\n class=\"ml-1\"\n />\n </h3>\n\n <RuiCalendarMenu\n v-model=\"isMenuOpen\"\n :anchor-el=\"anchorEl\"\n :view-month=\"viewMonth\"\n :view-year=\"viewYear\"\n @select=\"handleDateSelection($event)\"\n />\n\n <RuiButton\n type=\"button\"\n class=\"nav-button\"\n variant=\"text\"\n icon\n :disabled=\"!canGoToNext\"\n @click.stop=\"emit('next-month')\"\n >\n <RuiIcon\n name=\"lu-chevron-right\"\n size=\"20\"\n />\n </RuiButton>\n </div>\n</template>\n\n<style scoped>\n.calendar-header {\n @apply flex items-center justify-between px-4 py-3;\n}\n\n.header-title {\n @apply font-medium text-gray-800 dark:text-gray-200 flex items-center cursor-pointer pl-8;\n}\n\n.nav-button {\n @apply p-1 rounded-full text-gray-500 hover:text-rui-primary hover:bg-gray-100;\n @apply dark:text-gray-400 dark:hover:bg-gray-600 dark:hover:text-rui-primary;\n}\n</style>\n"],"names":["_useModel","_openBlock","_createElementBlock","_createVNode","_createElementVNode","_withModifiers","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAaA,UAAM,aAAaA,kBAAqB,WAA+B;AAEvE,UAAM,QAAQ;AAMd,UAAM,OAAO;AAMb,UAAM,WAAW,IAAA;AAEjB,UAAM,gBAAgB,OAAyB,mBAAmB;AAElE,UAAM,cAAc,SAAkB,MAAM;AAC1C,YAAM,EAAE,YAAY;AACpB,UAAI,CAAC,UAAU,OAAO,GAAG;AACvB,eAAO;AAAA,MACT;AAEA,YAAM,OAAO,IAAI,KAAK,MAAM,UAAU,MAAM,SAAS;AACrD,aAAO,KAAK,QAAA,IAAY,IAAI,OAAO,EAAE,QAAA;AAAA,IACvC,CAAC;AAED,UAAM,cAAc,SAAkB,MAAM;AAC1C,YAAM,EAAE,YAAY;AACpB,UAAI,CAAC,UAAU,OAAO,GAAG;AACvB,eAAO;AAAA,MACT;AAEA,YAAM,OAAO,IAAI,KAAK,MAAM,UAAU,MAAM,SAAS;AACrD,aAAO,KAAK,QAAA,IAAY,IAAI,OAAO,EAAE,QAAA;AAAA,IACvC,CAAC;AAED,aAAS,iBAAiB,GAAU;AAClC,UAAI,UAAU,EAAE,iBAAgC,MAAS;AACzD,UAAI,YAAY,IAAI;AAAA,IACtB;AAEA,aAAS,oBAAoB,WAA+B;AAC1D,WAAK,gBAAgB,SAAS;AAAA,IAChC;;AAIE,aAAAC,UAAA,GAAAC,mBAgDM,OAhDN,YAgDM;AAAA,QA/CJC,YAYY,WAAA;AAAA,UAXV,MAAK;AAAA,UACL,OAAM;AAAA,UACN,MAAA;AAAA,UACC,WAAW,YAAA;AAAA,UACZ,SAAQ;AAAA,UACP,6DAAY,KAAI,YAAA,GAAA,CAAA,MAAA,CAAA;AAAA,QAAA;2BAEjB,MAGE;AAAA,YAHFA,YAGE,SAAA;AAAA,cAFA,MAAK;AAAA,cACL,MAAK;AAAA,YAAA;;;;QAITC,mBAUK,MAAA;AAAA,UATH,OAAM;AAAA,UACL,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAC,cAAA,CAAA,WAAO,iBAAiB,MAAM,GAAA,CAAA,MAAA,CAAA;AAAA,QAAA;UAEjCC,gBAAAC,gBAAA,QAAA,KAAK,IAAG,KACX,CAAA;AAAA,UAAAJ,YAIE,SAAA;AAAA,YAHA,MAAK;AAAA,YACL,MAAK;AAAA,YACL,OAAM;AAAA,UAAA;;QAIVA,YAME,iBAAA;AAAA,sBALS,WAAA;AAAA,uEAAA,WAAU,QAAA;AAAA,UAClB,aAAW,SAAA;AAAA,UACX,cAAY,QAAA;AAAA,UACZ,aAAW,QAAA;AAAA,UACX,UAAM,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,oBAAoB,MAAM;AAAA,QAAA;QAGrCA,YAYY,WAAA;AAAA,UAXV,MAAK;AAAA,UACL,OAAM;AAAA,UACN,SAAQ;AAAA,UACR,MAAA;AAAA,UACC,WAAW,YAAA;AAAA,UACX,6DAAY,KAAI,YAAA,GAAA,CAAA,MAAA,CAAA;AAAA,QAAA;2BAEjB,MAGE;AAAA,YAHFA,YAGE,SAAA;AAAA,cAFA,MAAK;AAAA,cACL,MAAK;AAAA,YAAA;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { type MonthYearSelection } from '../../components/calendar/state';
1
+ import { type MonthYearSelection } from '../../components/calendar/state.js';
2
2
  type __VLS_Props = {
3
3
  anchorEl: HTMLElement | undefined;
4
4
  viewMonth: number;
@@ -0,0 +1,8 @@
1
+ import _sfc_main from "./RuiCalendarMenu.vue2.js";
2
+ /* empty css */
3
+ import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const RuiCalendarMenu = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-649d1d22"]]);
5
+ export {
6
+ RuiCalendarMenu as default
7
+ };
8
+ //# sourceMappingURL=RuiCalendarMenu.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiCalendarMenu.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,261 @@
1
+ import { defineComponent, mergeModels, useModel, ref, inject, watch, createBlock, openBlock, withCtx, createElementVNode, createElementBlock, createCommentVNode, createVNode, withModifiers, unref, toDisplayString, Fragment, renderList, normalizeClass } from "vue";
2
+ import { get, set, isDefined } from "@vueuse/core";
3
+ import { getShortMonthNames, CalendarStateSymbol } from "./state.js";
4
+ import RuiIcon from "../icons/RuiIcon.vue.js";
5
+ import RuiMenu from "../overlays/menu/RuiMenu.vue.js";
6
+ import RuiButton from "../buttons/button/RuiButton.vue.js";
7
+ const _hoisted_1 = { class: "menu-container" };
8
+ const _hoisted_2 = { class: "menu-header" };
9
+ const _hoisted_3 = {
10
+ key: 0,
11
+ class: "month-grid"
12
+ };
13
+ const _hoisted_4 = ["disabled", "onClick"];
14
+ const _hoisted_5 = {
15
+ key: 1,
16
+ class: "year-grid"
17
+ };
18
+ const _hoisted_6 = ["disabled", "onClick"];
19
+ const _sfc_main = /* @__PURE__ */ defineComponent({
20
+ ...{
21
+ name: "RuiCalendarMenu",
22
+ inheritAttrs: false
23
+ },
24
+ __name: "RuiCalendarMenu",
25
+ props: /* @__PURE__ */ mergeModels({
26
+ anchorEl: {},
27
+ viewMonth: {},
28
+ viewYear: {}
29
+ }, {
30
+ "modelValue": { type: Boolean },
31
+ "modelModifiers": {}
32
+ }),
33
+ emits: /* @__PURE__ */ mergeModels(["select"], ["update:modelValue"]),
34
+ setup(__props, { emit: __emit }) {
35
+ const modelValue = useModel(__props, "modelValue");
36
+ const props = __props;
37
+ const emit = __emit;
38
+ const viewMode = ref("months");
39
+ const startYear = ref(props.viewYear - 6);
40
+ const months = getShortMonthNames();
41
+ const calendarState = inject(CalendarStateSymbol);
42
+ const yearRange = ref([]);
43
+ const monthsInRange = ref([]);
44
+ const yearsInRange = ref([]);
45
+ const title = ref("");
46
+ const canGoToNext = ref(true);
47
+ const canGoToPrev = ref(true);
48
+ function calculateYearRange() {
49
+ const start = get(startYear);
50
+ set(yearRange, Array.from({ length: 12 }, (_, i) => start + i));
51
+ }
52
+ function calculateTitle() {
53
+ if (get(viewMode) === "months") {
54
+ set(title, props.viewYear.toString());
55
+ } else {
56
+ const range = get(yearRange);
57
+ set(title, `${range[0]} - ${range.at(-1)}`);
58
+ }
59
+ }
60
+ function calculateNavigation() {
61
+ const { maxDate, minDate } = calendarState;
62
+ const mode = get(viewMode);
63
+ if (mode === "months") {
64
+ const nextYear = props.viewYear + 1;
65
+ const previousYear = props.viewYear - 1;
66
+ set(canGoToNext, !isDefined(maxDate) || nextYear <= get(maxDate).getFullYear());
67
+ set(canGoToPrev, !isDefined(minDate) || previousYear >= get(minDate).getFullYear());
68
+ } else {
69
+ const lastYearInRange = get(startYear) + 11;
70
+ const firstYearInRange = get(startYear);
71
+ const nextRangeStart = lastYearInRange + 1;
72
+ set(canGoToNext, !isDefined(maxDate) || nextRangeStart <= get(maxDate).getFullYear());
73
+ const prevRangeEnd = firstYearInRange - 1;
74
+ set(canGoToPrev, !isDefined(minDate) || prevRangeEnd >= get(minDate).getFullYear());
75
+ }
76
+ }
77
+ function calculateMonthsInRange() {
78
+ const { minDate, maxDate } = calendarState;
79
+ const currentYear = props.viewYear;
80
+ const result = new Array(12).fill(true);
81
+ if (isDefined(minDate) || isDefined(maxDate)) {
82
+ for (let month = 0; month < 12; month++) {
83
+ const date = new Date(currentYear, month);
84
+ if (isDefined(maxDate) && date > get(maxDate)) {
85
+ result[month] = false;
86
+ }
87
+ if (isDefined(minDate) && date < get(minDate)) {
88
+ result[month] = false;
89
+ }
90
+ }
91
+ }
92
+ set(monthsInRange, result);
93
+ }
94
+ function calculateYearsInRange() {
95
+ const { minDate, maxDate } = calendarState;
96
+ const range = get(yearRange);
97
+ const currentMonth = props.viewMonth;
98
+ if (!isDefined(minDate) && !isDefined(maxDate)) {
99
+ set(yearsInRange, new Array(range.length).fill(true));
100
+ return;
101
+ }
102
+ const result = range.map((year) => {
103
+ const date = new Date(year, currentMonth);
104
+ if (isDefined(maxDate) && date > get(maxDate)) {
105
+ return false;
106
+ }
107
+ return !isDefined(minDate) || date >= get(minDate);
108
+ });
109
+ set(yearsInRange, result);
110
+ }
111
+ calculateYearRange();
112
+ calculateTitle();
113
+ calculateNavigation();
114
+ calculateMonthsInRange();
115
+ calculateYearsInRange();
116
+ watch(startYear, () => {
117
+ calculateYearRange();
118
+ calculateTitle();
119
+ calculateNavigation();
120
+ calculateYearsInRange();
121
+ });
122
+ watch(viewMode, () => {
123
+ calculateTitle();
124
+ calculateNavigation();
125
+ });
126
+ watch(() => props.viewYear, () => {
127
+ calculateTitle();
128
+ calculateNavigation();
129
+ calculateMonthsInRange();
130
+ calculateYearsInRange();
131
+ });
132
+ watch(() => props.viewMonth, () => {
133
+ calculateYearsInRange();
134
+ });
135
+ function toggleSelection() {
136
+ set(viewMode, get(viewMode) === "months" ? "years" : "months");
137
+ }
138
+ function selectMonth(month) {
139
+ if (!get(monthsInRange)[month])
140
+ return;
141
+ emit("select", { month, year: props.viewYear });
142
+ set(modelValue, false);
143
+ }
144
+ function selectYear(year) {
145
+ const yearIndex = get(yearRange).indexOf(year);
146
+ if (yearIndex === -1 || !get(yearsInRange)[yearIndex])
147
+ return;
148
+ emit("select", { month: props.viewMonth, year });
149
+ set(viewMode, "months");
150
+ }
151
+ function handleNext() {
152
+ if (get(viewMode) === "months") {
153
+ const nextYear = props.viewYear + 1;
154
+ selectYear(nextYear);
155
+ } else {
156
+ const lastYearInRange = get(startYear) + 11;
157
+ set(startYear, lastYearInRange + 1);
158
+ }
159
+ }
160
+ function handlePrev() {
161
+ if (get(viewMode) === "months") {
162
+ const previousYear = props.viewYear - 1;
163
+ selectYear(previousYear);
164
+ } else {
165
+ const firstYearInRange = get(startYear);
166
+ set(startYear, firstYearInRange - 12);
167
+ }
168
+ }
169
+ return (_ctx, _cache) => {
170
+ return openBlock(), createBlock(RuiMenu, {
171
+ modelValue: modelValue.value,
172
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => modelValue.value = $event),
173
+ "anchor-el": __props.anchorEl,
174
+ placement: "bottom-start"
175
+ }, {
176
+ default: withCtx(() => [
177
+ createElementVNode("div", _hoisted_1, [
178
+ createElementVNode("div", _hoisted_2, [
179
+ createVNode(RuiButton, {
180
+ type: "button",
181
+ class: "nav-button",
182
+ icon: "",
183
+ disabled: !unref(get)(canGoToPrev.value),
184
+ variant: "text",
185
+ onClick: _cache[0] || (_cache[0] = withModifiers(($event) => handlePrev(), ["stop"]))
186
+ }, {
187
+ default: withCtx(() => [
188
+ createVNode(RuiIcon, {
189
+ name: "lu-chevron-left",
190
+ size: "20"
191
+ })
192
+ ]),
193
+ _: 1
194
+ }, 8, ["disabled"]),
195
+ createElementVNode("div", {
196
+ class: "flex-1 text-center cursor-pointer",
197
+ onClick: _cache[1] || (_cache[1] = withModifiers(($event) => toggleSelection(), ["stop"]))
198
+ }, toDisplayString(unref(get)(title.value)), 1),
199
+ createVNode(RuiButton, {
200
+ type: "button",
201
+ class: "nav-button",
202
+ icon: "",
203
+ disabled: !unref(get)(canGoToNext.value),
204
+ variant: "text",
205
+ onClick: _cache[2] || (_cache[2] = withModifiers(($event) => handleNext(), ["stop"]))
206
+ }, {
207
+ default: withCtx(() => [
208
+ createVNode(RuiIcon, {
209
+ name: "lu-chevron-right",
210
+ size: "20"
211
+ })
212
+ ]),
213
+ _: 1
214
+ }, 8, ["disabled"])
215
+ ]),
216
+ viewMode.value === "months" ? (openBlock(), createElementBlock("div", _hoisted_3, [
217
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(months), (month, index) => {
218
+ return openBlock(), createElementBlock("button", {
219
+ key: index,
220
+ type: "button",
221
+ class: normalizeClass(["h-9 w-full flex items-center justify-center text-sm font-medium rounded-md transition-colors duration-150 ease-in-out border-none outline-none cursor-pointer focus:ring-2 focus:ring-rui-primary focus:ring-opacity-50", [
222
+ {
223
+ "bg-rui-primary text-white hover:bg-rui-primary-darker active:bg-rui-primary-darker dark:bg-rui-primary dark:text-white dark:hover:bg-rui-primary-darker": index === __props.viewMonth && unref(get)(monthsInRange.value)[index],
224
+ "bg-gray-300 text-gray-500 dark:bg-gray-600 dark:text-gray-400": index === __props.viewMonth && !unref(get)(monthsInRange.value)[index],
225
+ "text-gray-700 bg-transparent hover:bg-gray-100 active:bg-gray-200 dark:text-gray-300 dark:hover:bg-gray-700 dark:active:bg-gray-600": index !== __props.viewMonth && unref(get)(monthsInRange.value)[index],
226
+ "opacity-50 cursor-not-allowed bg-transparent hover:bg-transparent active:bg-transparent dark:hover:bg-transparent dark:active:bg-transparent pointer-events-none text-gray-400 dark:text-gray-600": !unref(get)(monthsInRange.value)[index]
227
+ }
228
+ ]]),
229
+ disabled: !unref(get)(monthsInRange.value)[index],
230
+ onClick: withModifiers(($event) => selectMonth(index), ["stop"])
231
+ }, toDisplayString(month.substring(0, 3)), 11, _hoisted_4);
232
+ }), 128))
233
+ ])) : viewMode.value === "years" ? (openBlock(), createElementBlock("div", _hoisted_5, [
234
+ (openBlock(true), createElementBlock(Fragment, null, renderList(yearRange.value, (year, index) => {
235
+ return openBlock(), createElementBlock("button", {
236
+ key: year,
237
+ type: "button",
238
+ class: normalizeClass(["h-9 w-full flex items-center justify-center text-sm font-medium rounded-md transition-colors duration-150 ease-in-out border-none outline-none cursor-pointer focus:ring-2 focus:ring-rui-primary focus:ring-opacity-50", [
239
+ {
240
+ "bg-rui-primary text-white hover:bg-rui-primary-darker active:bg-rui-primary-darker dark:bg-rui-primary dark:text-white dark:hover:bg-rui-primary-darker": year === __props.viewYear && unref(get)(yearsInRange.value)[index],
241
+ "bg-gray-300 text-gray-500 dark:bg-gray-600 dark:text-gray-400": year === __props.viewYear && !unref(get)(yearsInRange.value)[index],
242
+ "text-gray-700 bg-transparent hover:bg-gray-100 active:bg-gray-200 dark:text-gray-300 dark:hover:bg-gray-700 dark:active:bg-gray-600": year !== __props.viewYear && unref(get)(yearsInRange.value)[index],
243
+ "opacity-50 cursor-not-allowed bg-transparent hover:bg-transparent active:bg-transparent dark:hover:bg-transparent dark:active:bg-transparent pointer-events-none text-gray-400 dark:text-gray-600": !unref(get)(yearsInRange.value)[index]
244
+ }
245
+ ]]),
246
+ disabled: !unref(get)(yearsInRange.value)[index],
247
+ onClick: withModifiers(($event) => selectYear(year), ["stop"])
248
+ }, toDisplayString(year), 11, _hoisted_6);
249
+ }), 128))
250
+ ])) : createCommentVNode("", true)
251
+ ])
252
+ ]),
253
+ _: 1
254
+ }, 8, ["modelValue", "anchor-el"]);
255
+ };
256
+ }
257
+ });
258
+ export {
259
+ _sfc_main as default
260
+ };
261
+ //# sourceMappingURL=RuiCalendarMenu.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiCalendarMenu.vue2.js","sources":["../../../src/components/calendar/RuiCalendarMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { get, isDefined, set } from '@vueuse/core';\nimport { ref, watch } from 'vue';\nimport {\n CalendarStateSymbol,\n getShortMonthNames,\n type MonthYearSelection,\n type RuiCalendarState,\n} from '@/components/calendar/state';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiMenu from '@/components/overlays/menu/RuiMenu.vue';\nimport RuiButton from '../buttons/button/RuiButton.vue';\n\ndefineOptions({\n name: 'RuiCalendarMenu',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>();\n\nconst props = defineProps<{\n anchorEl: HTMLElement | undefined;\n viewMonth: number;\n viewYear: number;\n}>();\n\nconst emit = defineEmits<{\n select: [MonthYearSelection];\n}>();\n\n// Core reactive state - minimal\nconst viewMode = ref<'months' | 'years'>('months');\nconst startYear = ref<number>(props.viewYear - 6);\n\n// Pre-calculated constants\nconst months = getShortMonthNames();\nconst calendarState = inject<RuiCalendarState>(CalendarStateSymbol) as RuiCalendarState;\n\n// Pre-calculated arrays for performance - using refs for better control\nconst yearRange = ref<number[]>([]);\nconst monthsInRange = ref<boolean[]>([]);\nconst yearsInRange = ref<boolean[]>([]);\nconst title = ref<string>('');\nconst canGoToNext = ref<boolean>(true);\nconst canGoToPrev = ref<boolean>(true);\n\n// Pre-calculation functions using VueUse get/set\nfunction calculateYearRange() {\n const start = get(startYear);\n set(yearRange, Array.from({ length: 12 }, (_, i) => start + i));\n}\n\nfunction calculateTitle() {\n if (get(viewMode) === 'months') {\n set(title, props.viewYear.toString());\n }\n else {\n const range = get(yearRange);\n set(title, `${range[0]} - ${range.at(-1)}`);\n }\n}\n\nfunction calculateNavigation() {\n const { maxDate, minDate } = calendarState;\n const mode = get(viewMode);\n\n if (mode === 'months') {\n const nextYear = props.viewYear + 1;\n const previousYear = props.viewYear - 1;\n\n set(canGoToNext, !isDefined(maxDate) || nextYear <= get(maxDate).getFullYear());\n set(canGoToPrev, !isDefined(minDate) || previousYear >= get(minDate).getFullYear());\n }\n else {\n const lastYearInRange = get(startYear) + 11;\n const firstYearInRange = get(startYear);\n\n // Check if we can navigate to the next range of years\n const nextRangeStart = lastYearInRange + 1;\n set(canGoToNext, !isDefined(maxDate) || nextRangeStart <= get(maxDate).getFullYear());\n\n // Check if we can navigate to the previous range of years\n const prevRangeEnd = firstYearInRange - 1;\n set(canGoToPrev, !isDefined(minDate) || prevRangeEnd >= get(minDate).getFullYear());\n }\n}\n\nfunction calculateMonthsInRange() {\n const { minDate, maxDate } = calendarState;\n const currentYear = props.viewYear;\n const result = new Array(12).fill(true);\n\n if (isDefined(minDate) || isDefined(maxDate)) {\n for (let month = 0; month < 12; month++) {\n const date = new Date(currentYear, month);\n if (isDefined(maxDate) && date > get(maxDate)) {\n result[month] = false;\n }\n if (isDefined(minDate) && date < get(minDate)) {\n result[month] = false;\n }\n }\n }\n\n set(monthsInRange, result);\n}\n\nfunction calculateYearsInRange() {\n const { minDate, maxDate } = calendarState;\n const range = get(yearRange);\n const currentMonth = props.viewMonth;\n\n if (!isDefined(minDate) && !isDefined(maxDate)) {\n set(yearsInRange, new Array(range.length).fill(true));\n return;\n }\n\n const result = range.map((year) => {\n const date = new Date(year, currentMonth);\n if (isDefined(maxDate) && date > get(maxDate)) {\n return false;\n }\n return !isDefined(minDate) || date >= get(minDate);\n });\n\n set(yearsInRange, result);\n}\n\n// Initial calculations\ncalculateYearRange();\ncalculateTitle();\ncalculateNavigation();\ncalculateMonthsInRange();\ncalculateYearsInRange();\n\n// Watchers for recalculation only when needed\nwatch(startYear, () => {\n calculateYearRange();\n calculateTitle();\n calculateNavigation();\n calculateYearsInRange();\n});\n\nwatch(viewMode, () => {\n calculateTitle();\n calculateNavigation();\n});\n\nwatch(() => props.viewYear, () => {\n calculateTitle();\n calculateNavigation();\n calculateMonthsInRange();\n calculateYearsInRange();\n});\n\nwatch(() => props.viewMonth, () => {\n calculateYearsInRange();\n});\n\nfunction toggleSelection() {\n set(viewMode, get(viewMode) === 'months' ? 'years' : 'months');\n}\n\nfunction selectMonth(month: number) {\n if (!get(monthsInRange)[month])\n return;\n emit('select', { month, year: props.viewYear });\n set(modelValue, false);\n}\n\nfunction selectYear(year: number) {\n const yearIndex = get(yearRange).indexOf(year);\n if (yearIndex === -1 || !get(yearsInRange)[yearIndex])\n return;\n\n emit('select', { month: props.viewMonth, year });\n set(viewMode, 'months');\n}\n\nfunction handleNext() {\n if (get(viewMode) === 'months') {\n const nextYear = props.viewYear + 1;\n selectYear(nextYear);\n }\n else {\n const lastYearInRange = get(startYear) + 11;\n set(startYear, lastYearInRange + 1);\n }\n}\n\nfunction handlePrev() {\n if (get(viewMode) === 'months') {\n const previousYear = props.viewYear - 1;\n selectYear(previousYear);\n }\n else {\n const firstYearInRange = get(startYear);\n set(startYear, firstYearInRange - 12);\n }\n}\n</script>\n\n<template>\n <RuiMenu\n v-model=\"modelValue\"\n :anchor-el=\"anchorEl\"\n placement=\"bottom-start\"\n >\n <div class=\"menu-container\">\n <div class=\"menu-header\">\n <RuiButton\n type=\"button\"\n class=\"nav-button\"\n icon\n :disabled=\"!get(canGoToPrev)\"\n variant=\"text\"\n @click.stop=\"handlePrev()\"\n >\n <RuiIcon\n name=\"lu-chevron-left\"\n size=\"20\"\n />\n </RuiButton>\n\n <div\n class=\"flex-1 text-center cursor-pointer\"\n @click.stop=\"toggleSelection()\"\n >\n {{ get(title) }}\n </div>\n\n <RuiButton\n type=\"button\"\n class=\"nav-button\"\n icon\n :disabled=\"!get(canGoToNext)\"\n variant=\"text\"\n @click.stop=\"handleNext()\"\n >\n <RuiIcon\n name=\"lu-chevron-right\"\n size=\"20\"\n />\n </RuiButton>\n </div>\n\n <div\n v-if=\"viewMode === 'months'\"\n class=\"month-grid\"\n >\n <button\n v-for=\"(month, index) in months\"\n :key=\"index\"\n type=\"button\"\n class=\"h-9 w-full flex items-center justify-center text-sm font-medium rounded-md transition-colors duration-150 ease-in-out border-none outline-none cursor-pointer focus:ring-2 focus:ring-rui-primary focus:ring-opacity-50\"\n :class=\"[\n {\n 'bg-rui-primary text-white hover:bg-rui-primary-darker active:bg-rui-primary-darker dark:bg-rui-primary dark:text-white dark:hover:bg-rui-primary-darker': index === viewMonth && get(monthsInRange)[index],\n 'bg-gray-300 text-gray-500 dark:bg-gray-600 dark:text-gray-400': index === viewMonth && !get(monthsInRange)[index],\n 'text-gray-700 bg-transparent hover:bg-gray-100 active:bg-gray-200 dark:text-gray-300 dark:hover:bg-gray-700 dark:active:bg-gray-600': index !== viewMonth && get(monthsInRange)[index],\n 'opacity-50 cursor-not-allowed bg-transparent hover:bg-transparent active:bg-transparent dark:hover:bg-transparent dark:active:bg-transparent pointer-events-none text-gray-400 dark:text-gray-600': !get(monthsInRange)[index],\n },\n ]\"\n :disabled=\"!get(monthsInRange)[index]\"\n @click.stop=\"selectMonth(index)\"\n >\n {{ month.substring(0, 3) }}\n </button>\n </div>\n\n <div\n v-else-if=\"viewMode === 'years'\"\n class=\"year-grid\"\n >\n <button\n v-for=\"(year, index) in yearRange\"\n :key=\"year\"\n type=\"button\"\n class=\"h-9 w-full flex items-center justify-center text-sm font-medium rounded-md transition-colors duration-150 ease-in-out border-none outline-none cursor-pointer focus:ring-2 focus:ring-rui-primary focus:ring-opacity-50\"\n :class=\"[\n {\n 'bg-rui-primary text-white hover:bg-rui-primary-darker active:bg-rui-primary-darker dark:bg-rui-primary dark:text-white dark:hover:bg-rui-primary-darker': year === viewYear && get(yearsInRange)[index],\n 'bg-gray-300 text-gray-500 dark:bg-gray-600 dark:text-gray-400': year === viewYear && !get(yearsInRange)[index],\n 'text-gray-700 bg-transparent hover:bg-gray-100 active:bg-gray-200 dark:text-gray-300 dark:hover:bg-gray-700 dark:active:bg-gray-600': year !== viewYear && get(yearsInRange)[index],\n 'opacity-50 cursor-not-allowed bg-transparent hover:bg-transparent active:bg-transparent dark:hover:bg-transparent dark:active:bg-transparent pointer-events-none text-gray-400 dark:text-gray-600': !get(yearsInRange)[index],\n },\n ]\"\n :disabled=\"!get(yearsInRange)[index]\"\n @click.stop=\"selectYear(year)\"\n >\n {{ year }}\n </button>\n </div>\n </div>\n </RuiMenu>\n</template>\n\n<style scoped>\n.menu-container {\n @apply w-64 shadow-lg overflow-hidden;\n}\n\n.menu-header {\n @apply flex items-center justify-center p-1 font-medium text-gray-800 dark:text-gray-200;\n @apply border-b border-rui-grey-200 dark:border-rui-grey-800 cursor-pointer hover:bg-rui-grey-100 dark:hover:bg-rui-grey-800;\n}\n\n.month-grid {\n @apply grid grid-cols-3 gap-1 p-2;\n}\n\n.year-grid {\n @apply grid grid-cols-3 gap-1 p-2;\n}\n</style>\n"],"names":["_useModel","_createBlock","_createElementVNode","_createVNode","_unref","_toDisplayString","_openBlock","_createElementBlock","_Fragment","_renderList","_withModifiers"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,UAAM,aAAaA,8BAAqB;AAExC,UAAM,QAAQ;AAMd,UAAM,OAAO;AAKb,UAAM,WAAW,IAAwB,QAAQ;AACjD,UAAM,YAAY,IAAY,MAAM,WAAW,CAAC;AAGhD,UAAM,SAAS,mBAAA;AACf,UAAM,gBAAgB,OAAyB,mBAAmB;AAGlE,UAAM,YAAY,IAAc,EAAE;AAClC,UAAM,gBAAgB,IAAe,EAAE;AACvC,UAAM,eAAe,IAAe,EAAE;AACtC,UAAM,QAAQ,IAAY,EAAE;AAC5B,UAAM,cAAc,IAAa,IAAI;AACrC,UAAM,cAAc,IAAa,IAAI;AAGrC,aAAS,qBAAqB;AAC5B,YAAM,QAAQ,IAAI,SAAS;AAC3B,UAAI,WAAW,MAAM,KAAK,EAAE,QAAQ,GAAA,GAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC;AAAA,IAChE;AAEA,aAAS,iBAAiB;AACxB,UAAI,IAAI,QAAQ,MAAM,UAAU;AAC9B,YAAI,OAAO,MAAM,SAAS,SAAA,CAAU;AAAA,MACtC,OACK;AACH,cAAM,QAAQ,IAAI,SAAS;AAC3B,YAAI,OAAO,GAAG,MAAM,CAAC,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE;AAAA,MAC5C;AAAA,IACF;AAEA,aAAS,sBAAsB;AAC7B,YAAM,EAAE,SAAS,QAAA,IAAY;AAC7B,YAAM,OAAO,IAAI,QAAQ;AAEzB,UAAI,SAAS,UAAU;AACrB,cAAM,WAAW,MAAM,WAAW;AAClC,cAAM,eAAe,MAAM,WAAW;AAEtC,YAAI,aAAa,CAAC,UAAU,OAAO,KAAK,YAAY,IAAI,OAAO,EAAE,aAAa;AAC9E,YAAI,aAAa,CAAC,UAAU,OAAO,KAAK,gBAAgB,IAAI,OAAO,EAAE,aAAa;AAAA,MACpF,OACK;AACH,cAAM,kBAAkB,IAAI,SAAS,IAAI;AACzC,cAAM,mBAAmB,IAAI,SAAS;AAGtC,cAAM,iBAAiB,kBAAkB;AACzC,YAAI,aAAa,CAAC,UAAU,OAAO,KAAK,kBAAkB,IAAI,OAAO,EAAE,aAAa;AAGpF,cAAM,eAAe,mBAAmB;AACxC,YAAI,aAAa,CAAC,UAAU,OAAO,KAAK,gBAAgB,IAAI,OAAO,EAAE,aAAa;AAAA,MACpF;AAAA,IACF;AAEA,aAAS,yBAAyB;AAChC,YAAM,EAAE,SAAS,QAAA,IAAY;AAC7B,YAAM,cAAc,MAAM;AAC1B,YAAM,SAAS,IAAI,MAAM,EAAE,EAAE,KAAK,IAAI;AAEtC,UAAI,UAAU,OAAO,KAAK,UAAU,OAAO,GAAG;AAC5C,iBAAS,QAAQ,GAAG,QAAQ,IAAI,SAAS;AACvC,gBAAM,OAAO,IAAI,KAAK,aAAa,KAAK;AACxC,cAAI,UAAU,OAAO,KAAK,OAAO,IAAI,OAAO,GAAG;AAC7C,mBAAO,KAAK,IAAI;AAAA,UAClB;AACA,cAAI,UAAU,OAAO,KAAK,OAAO,IAAI,OAAO,GAAG;AAC7C,mBAAO,KAAK,IAAI;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,eAAe,MAAM;AAAA,IAC3B;AAEA,aAAS,wBAAwB;AAC/B,YAAM,EAAE,SAAS,QAAA,IAAY;AAC7B,YAAM,QAAQ,IAAI,SAAS;AAC3B,YAAM,eAAe,MAAM;AAE3B,UAAI,CAAC,UAAU,OAAO,KAAK,CAAC,UAAU,OAAO,GAAG;AAC9C,YAAI,cAAc,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,CAAC;AACpD;AAAA,MACF;AAEA,YAAM,SAAS,MAAM,IAAI,CAAC,SAAS;AACjC,cAAM,OAAO,IAAI,KAAK,MAAM,YAAY;AACxC,YAAI,UAAU,OAAO,KAAK,OAAO,IAAI,OAAO,GAAG;AAC7C,iBAAO;AAAA,QACT;AACA,eAAO,CAAC,UAAU,OAAO,KAAK,QAAQ,IAAI,OAAO;AAAA,MACnD,CAAC;AAED,UAAI,cAAc,MAAM;AAAA,IAC1B;AAGA,uBAAA;AACA,mBAAA;AACA,wBAAA;AACA,2BAAA;AACA,0BAAA;AAGA,UAAM,WAAW,MAAM;AACrB,yBAAA;AACA,qBAAA;AACA,0BAAA;AACA,4BAAA;AAAA,IACF,CAAC;AAED,UAAM,UAAU,MAAM;AACpB,qBAAA;AACA,0BAAA;AAAA,IACF,CAAC;AAED,UAAM,MAAM,MAAM,UAAU,MAAM;AAChC,qBAAA;AACA,0BAAA;AACA,6BAAA;AACA,4BAAA;AAAA,IACF,CAAC;AAED,UAAM,MAAM,MAAM,WAAW,MAAM;AACjC,4BAAA;AAAA,IACF,CAAC;AAED,aAAS,kBAAkB;AACzB,UAAI,UAAU,IAAI,QAAQ,MAAM,WAAW,UAAU,QAAQ;AAAA,IAC/D;AAEA,aAAS,YAAY,OAAe;AAClC,UAAI,CAAC,IAAI,aAAa,EAAE,KAAK;AAC3B;AACF,WAAK,UAAU,EAAE,OAAO,MAAM,MAAM,UAAU;AAC9C,UAAI,YAAY,KAAK;AAAA,IACvB;AAEA,aAAS,WAAW,MAAc;AAChC,YAAM,YAAY,IAAI,SAAS,EAAE,QAAQ,IAAI;AAC7C,UAAI,cAAc,MAAM,CAAC,IAAI,YAAY,EAAE,SAAS;AAClD;AAEF,WAAK,UAAU,EAAE,OAAO,MAAM,WAAW,MAAM;AAC/C,UAAI,UAAU,QAAQ;AAAA,IACxB;AAEA,aAAS,aAAa;AACpB,UAAI,IAAI,QAAQ,MAAM,UAAU;AAC9B,cAAM,WAAW,MAAM,WAAW;AAClC,mBAAW,QAAQ;AAAA,MACrB,OACK;AACH,cAAM,kBAAkB,IAAI,SAAS,IAAI;AACzC,YAAI,WAAW,kBAAkB,CAAC;AAAA,MACpC;AAAA,IACF;AAEA,aAAS,aAAa;AACpB,UAAI,IAAI,QAAQ,MAAM,UAAU;AAC9B,cAAM,eAAe,MAAM,WAAW;AACtC,mBAAW,YAAY;AAAA,MACzB,OACK;AACH,cAAM,mBAAmB,IAAI,SAAS;AACtC,YAAI,WAAW,mBAAmB,EAAE;AAAA,MACtC;AAAA,IACF;;0BAIEC,YA2FU,SAAA;AAAA,oBA1FC,WAAA;AAAA,qEAAA,WAAU,QAAA;AAAA,QAClB,aAAW,QAAA;AAAA,QACZ,WAAU;AAAA,MAAA;yBAEV,MAqFM;AAAA,UArFNC,mBAqFM,OArFN,YAqFM;AAAA,YApFJA,mBAmCM,OAnCN,YAmCM;AAAA,cAlCJC,YAYY,WAAA;AAAA,gBAXV,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAA;AAAA,gBACC,UAAQ,CAAGC,MAAA,GAAA,EAAI,YAAA,KAAW;AAAA,gBAC3B,SAAQ;AAAA,gBACP,6DAAY,cAAU,CAAA,MAAA,CAAA;AAAA,cAAA;iCAEvB,MAGE;AAAA,kBAHFD,YAGE,SAAA;AAAA,oBAFA,MAAK;AAAA,oBACL,MAAK;AAAA,kBAAA;;;;cAITD,mBAKM,OAAA;AAAA,gBAJJ,OAAM;AAAA,gBACL,6DAAY,mBAAe,CAAA,MAAA,CAAA;AAAA,cAAA,GAEzBG,gBAAAD,MAAA,GAAA,EAAI,MAAA,KAAK,CAAA,GAAA,CAAA;AAAA,cAGdD,YAYY,WAAA;AAAA,gBAXV,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAA;AAAA,gBACC,UAAQ,CAAGC,MAAA,GAAA,EAAI,YAAA,KAAW;AAAA,gBAC3B,SAAQ;AAAA,gBACP,6DAAY,cAAU,CAAA,MAAA,CAAA;AAAA,cAAA;iCAEvB,MAGE;AAAA,kBAHFD,YAGE,SAAA;AAAA,oBAFA,MAAK;AAAA,oBACL,MAAK;AAAA,kBAAA;;;;;YAMH,SAAA,UAAQ,YADhBG,aAAAC,mBAsBM,OAtBN,YAsBM;AAAA,eAlBJD,UAAA,IAAA,GAAAC,mBAiBSC,UAAA,MAAAC,WAhBkBL,MAAA,MAAA,GAAM,CAAvB,OAAO,UAAK;oCADtBG,mBAiBS,UAAA;AAAA,kBAfN,KAAK;AAAA,kBACN,MAAK;AAAA,kBACL,uBAAM,2NAAyN;AAAA;sBAC9B,2JAAA,UAAU,QAAA,aAAaH,WAAI,cAAA,KAAa,EAAE,KAAK;AAAA,sBAAkF,iEAAA,UAAU,QAAA,aAAS,CAAKA,WAAI,cAAA,KAAa,EAAE,KAAK;AAAA,sBAAwJ,uIAAA,UAAU,QAAA,aAAaA,WAAI,cAAA,KAAa,EAAE,KAAK;AAAA,4NAAuNA,MAAA,GAAA,EAAI,cAAA,KAAa,EAAE,KAAK;AAAA,oBAAA;AAAA;kBAQvyB,UAAQ,CAAGA,MAAA,GAAA,EAAI,cAAA,KAAa,EAAE,KAAK;AAAA,kBACnC,SAAKM,cAAA,CAAA,WAAO,YAAY,KAAK,GAAA,CAAA,MAAA,CAAA;AAAA,gBAAA,GAE3BL,gBAAA,MAAM,UAAS,GAAA,CAAA,CAAA,GAAA,IAAA,UAAA;AAAA;kBAKT,SAAA,UAAQ,WADrBC,UAAA,GAAAC,mBAsBM,OAtBN,YAsBM;AAAA,eAlBJD,UAAA,IAAA,GAAAC,mBAiBSC,UAAA,MAAAC,WAhBiB,UAAA,OAAS,CAAzB,MAAM,UAAK;oCADrBF,mBAiBS,UAAA;AAAA,kBAfN,KAAK;AAAA,kBACN,MAAK;AAAA,kBACL,uBAAM,2NAAyN;AAAA;sBAC9B,2JAAA,SAAS,QAAA,YAAYH,WAAI,aAAA,KAAY,EAAE,KAAK;AAAA,sBAAkF,iEAAA,SAAS,QAAA,YAAQ,CAAKA,WAAI,aAAA,KAAY,EAAE,KAAK;AAAA,sBAAwJ,uIAAA,SAAS,QAAA,YAAYA,WAAI,aAAA,KAAY,EAAE,KAAK;AAAA,4NAAuNA,MAAA,GAAA,EAAI,aAAA,KAAY,EAAE,KAAK;AAAA,oBAAA;AAAA;kBAQ7xB,UAAQ,CAAGA,MAAA,GAAA,EAAI,aAAA,KAAY,EAAE,KAAK;AAAA,kBAClC,SAAKM,cAAA,CAAA,WAAO,WAAW,IAAI,GAAA,CAAA,MAAA,CAAA;AAAA,gBAAA,mBAEzB,IAAI,GAAA,IAAA,UAAA;AAAA;;;;;;;;;"}