@rotki/ui-library 2.12.2 → 2.13.1

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 (277) hide show
  1. package/dist/components/accordions/accordion/RuiAccordion.vue.d.ts +6 -14
  2. package/dist/components/accordions/accordion/RuiAccordion.vue.js +3 -4
  3. package/dist/components/accordions/accordion/RuiAccordion.vue.js.map +1 -1
  4. package/dist/components/accordions/accordions/RuiAccordions.vue.d.ts +10 -9
  5. package/dist/components/accordions/accordions/RuiAccordions.vue.js +27 -26
  6. package/dist/components/accordions/accordions/RuiAccordions.vue.js.map +1 -1
  7. package/dist/components/alerts/RuiAlert.vue.d.ts +5 -15
  8. package/dist/components/alerts/RuiAlert.vue2.js +8 -16
  9. package/dist/components/alerts/RuiAlert.vue2.js.map +1 -1
  10. package/dist/components/buttons/button/RuiButton.vue.d.ts +5 -7
  11. package/dist/components/buttons/button/RuiButton.vue2.js +19 -20
  12. package/dist/components/buttons/button/RuiButton.vue2.js.map +1 -1
  13. package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +6 -5
  14. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js +42 -41
  15. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js.map +1 -1
  16. package/dist/components/calendar/RuiCalendar.vue.d.ts +1 -6
  17. package/dist/components/calendar/RuiCalendar.vue.js +6 -7
  18. package/dist/components/calendar/RuiCalendar.vue.js.map +1 -1
  19. package/dist/components/calendar/RuiCalendarGrid.vue.js +1 -1
  20. package/dist/components/calendar/RuiCalendarGrid.vue2.js +19 -17
  21. package/dist/components/calendar/RuiCalendarGrid.vue2.js.map +1 -1
  22. package/dist/components/calendar/RuiCalendarHeader.vue.js +1 -1
  23. package/dist/components/calendar/RuiCalendarHeader.vue2.js +2 -3
  24. package/dist/components/calendar/RuiCalendarHeader.vue2.js.map +1 -1
  25. package/dist/components/calendar/RuiCalendarMenu.vue.js +1 -1
  26. package/dist/components/calendar/RuiCalendarMenu.vue2.js +47 -39
  27. package/dist/components/calendar/RuiCalendarMenu.vue2.js.map +1 -1
  28. package/dist/components/cards/RuiCard.vue.d.ts +9 -24
  29. package/dist/components/cards/RuiCard.vue2.js +7 -7
  30. package/dist/components/cards/RuiCard.vue2.js.map +1 -1
  31. package/dist/components/cards/RuiCardHeader.vue.d.ts +5 -10
  32. package/dist/components/cards/RuiCardHeader.vue2.js.map +1 -1
  33. package/dist/components/chips/RuiChip.vue.d.ts +7 -21
  34. package/dist/components/chips/RuiChip.vue2.js +16 -21
  35. package/dist/components/chips/RuiChip.vue2.js.map +1 -1
  36. package/dist/components/color-picker/RuiColorBoard.vue.d.ts +1 -1
  37. package/dist/components/color-picker/RuiColorBoard.vue2.js +14 -18
  38. package/dist/components/color-picker/RuiColorBoard.vue2.js.map +1 -1
  39. package/dist/components/color-picker/RuiColorDisplay.vue.js +3 -5
  40. package/dist/components/color-picker/RuiColorDisplay.vue.js.map +1 -1
  41. package/dist/components/color-picker/RuiColorHue.vue2.js +10 -13
  42. package/dist/components/color-picker/RuiColorHue.vue2.js.map +1 -1
  43. package/dist/components/color-picker/RuiColorInput.vue.js +8 -6
  44. package/dist/components/color-picker/RuiColorInput.vue.js.map +1 -1
  45. package/dist/components/color-picker/RuiColorPicker.vue.d.ts +7 -9
  46. package/dist/components/color-picker/RuiColorPicker.vue.js +18 -13
  47. package/dist/components/color-picker/RuiColorPicker.vue.js.map +1 -1
  48. package/dist/components/color-picker/utils.js +22 -5
  49. package/dist/components/color-picker/utils.js.map +1 -1
  50. package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +2 -44
  51. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +73 -77
  52. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -1
  53. package/dist/components/date-time-picker/dayjs-setup.d.ts +1 -0
  54. package/dist/components/date-time-picker/dayjs-setup.js +8 -0
  55. package/dist/components/date-time-picker/dayjs-setup.js.map +1 -0
  56. package/dist/components/date-time-picker/segment-config.d.ts +14 -0
  57. package/dist/components/date-time-picker/segment-config.js +23 -0
  58. package/dist/components/date-time-picker/segment-config.js.map +1 -0
  59. package/dist/components/date-time-picker/segment-utils.d.ts +5 -0
  60. package/dist/components/date-time-picker/segment-utils.js +36 -0
  61. package/dist/components/date-time-picker/segment-utils.js.map +1 -0
  62. package/dist/components/date-time-picker/use-date-time-selection.d.ts +1 -0
  63. package/dist/components/date-time-picker/use-date-time-selection.js +1 -0
  64. package/dist/components/date-time-picker/use-date-time-selection.js.map +1 -1
  65. package/dist/components/date-time-picker/use-keyboard-handler.d.ts +4 -8
  66. package/dist/components/date-time-picker/use-keyboard-handler.js +9 -54
  67. package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -1
  68. package/dist/components/date-time-picker/utils.d.ts +1 -0
  69. package/dist/components/date-time-picker/utils.js +1 -0
  70. package/dist/components/date-time-picker/utils.js.map +1 -1
  71. package/dist/components/divider/RuiDivider.vue.d.ts +1 -3
  72. package/dist/components/divider/RuiDivider.vue.js.map +1 -1
  73. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +9 -1120
  74. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +144 -160
  75. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -1
  76. package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +15 -24
  77. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +31 -31
  78. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -1
  79. package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +1 -1
  80. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +18 -21
  81. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +1 -1
  82. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +3 -1
  83. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +12 -15
  84. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +1 -1
  85. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +5 -11
  86. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +6 -7
  87. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +1 -1
  88. package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +9 -784
  89. package/dist/components/forms/select/RuiMenuSelect.vue2.js +48 -51
  90. package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -1
  91. package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +10 -11
  92. package/dist/components/forms/select/RuiSimpleSelect.vue2.js +15 -24
  93. package/dist/components/forms/select/RuiSimpleSelect.vue2.js.map +1 -1
  94. package/dist/components/forms/slider/RuiSlider.vue.d.ts +10 -26
  95. package/dist/components/forms/slider/RuiSlider.vue2.js +41 -46
  96. package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -1
  97. package/dist/components/forms/switch/RuiSwitch.vue.d.ts +12 -20
  98. package/dist/components/forms/switch/RuiSwitch.vue2.js +21 -20
  99. package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -1
  100. package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +5 -30
  101. package/dist/components/forms/text-area/RuiTextArea.vue2.js +43 -79
  102. package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -1
  103. package/dist/components/forms/text-field/RuiTextField.vue.d.ts +7 -27
  104. package/dist/components/forms/text-field/RuiTextField.vue2.js +35 -66
  105. package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -1
  106. package/dist/components/helpers/RuiFormTextDetail.vue.d.ts +1 -5
  107. package/dist/components/helpers/RuiFormTextDetail.vue.js +5 -9
  108. package/dist/components/helpers/RuiFormTextDetail.vue.js.map +1 -1
  109. package/dist/components/icons/LazyIcon.vue.d.ts +1 -3
  110. package/dist/components/icons/RuiIcon.vue.d.ts +1 -4
  111. package/dist/components/icons/RuiIcon.vue2.js +8 -8
  112. package/dist/components/icons/RuiIcon.vue2.js.map +1 -1
  113. package/dist/components/index.d.ts +3 -3
  114. package/dist/components/loaders/RuiSkeletonBase.vue.d.ts +1 -3
  115. package/dist/components/loaders/RuiSkeletonBase.vue2.js +1 -1
  116. package/dist/components/loaders/RuiSkeletonBase.vue2.js.map +1 -1
  117. package/dist/components/loaders/RuiSkeletonLoader.vue.d.ts +1 -4
  118. package/dist/components/loaders/RuiSkeletonLoader.vue2.js +1 -1
  119. package/dist/components/loaders/RuiSkeletonLoader.vue2.js.map +1 -1
  120. package/dist/components/logos/RuiLogo.vue.d.ts +1 -7
  121. package/dist/components/logos/RuiLogo.vue.js +11 -13
  122. package/dist/components/logos/RuiLogo.vue.js.map +1 -1
  123. package/dist/components/overlays/badge/RuiBadge.vue.d.ts +5 -20
  124. package/dist/components/overlays/badge/RuiBadge.vue2.js +11 -13
  125. package/dist/components/overlays/badge/RuiBadge.vue2.js.map +1 -1
  126. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.d.ts +10 -5
  127. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js +18 -7
  128. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js.map +1 -1
  129. package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +21 -27
  130. package/dist/components/overlays/dialog/RuiDialog.vue2.js +80 -63
  131. package/dist/components/overlays/dialog/RuiDialog.vue2.js.map +1 -1
  132. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +24 -35
  133. package/dist/components/overlays/menu/RuiMenu.vue2.js +67 -76
  134. package/dist/components/overlays/menu/RuiMenu.vue2.js.map +1 -1
  135. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +22 -30
  136. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js +71 -47
  137. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js.map +1 -1
  138. package/dist/components/overlays/notification/RuiNotification.vue.d.ts +12 -12
  139. package/dist/components/overlays/notification/RuiNotification.vue.js +25 -22
  140. package/dist/components/overlays/notification/RuiNotification.vue.js.map +1 -1
  141. package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +7 -18
  142. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js +11 -8
  143. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js.map +1 -1
  144. package/dist/components/progress/RuiProgress.vue.d.ts +8 -10
  145. package/dist/components/progress/RuiProgress.vue2.js +18 -24
  146. package/dist/components/progress/RuiProgress.vue2.js.map +1 -1
  147. package/dist/components/steppers/RuiFooterStepper.vue.d.ts +10 -11
  148. package/dist/components/steppers/RuiFooterStepper.vue2.js +21 -21
  149. package/dist/components/steppers/RuiFooterStepper.vue2.js.map +1 -1
  150. package/dist/components/steppers/RuiStepper.vue.d.ts +6 -15
  151. package/dist/components/steppers/RuiStepper.vue2.js +31 -33
  152. package/dist/components/steppers/RuiStepper.vue2.js.map +1 -1
  153. package/dist/components/steppers/RuiStepperCustomIcon.vue.d.ts +1 -3
  154. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js +1 -1
  155. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js.map +1 -1
  156. package/dist/components/steppers/RuiStepperIcon.vue.d.ts +1 -3
  157. package/dist/components/steppers/RuiStepperIcon.vue2.js +1 -1
  158. package/dist/components/steppers/RuiStepperIcon.vue2.js.map +1 -1
  159. package/dist/components/tables/RuiDataTable.vue.d.ts +29 -81
  160. package/dist/components/tables/RuiDataTable.vue2.js +173 -582
  161. package/dist/components/tables/RuiDataTable.vue2.js.map +1 -1
  162. package/dist/components/tables/RuiDataTable.vue3.js +24 -27
  163. package/dist/components/tables/RuiDataTable.vue3.js.map +1 -1
  164. package/dist/components/tables/RuiExpandButton.vue.d.ts +3 -6
  165. package/dist/components/tables/RuiExpandButton.vue2.js +1 -0
  166. package/dist/components/tables/RuiExpandButton.vue2.js.map +1 -1
  167. package/dist/components/tables/RuiTableHead.vue.d.ts +4 -7
  168. package/dist/components/tables/RuiTableHead.vue2.js +19 -19
  169. package/dist/components/tables/RuiTableHead.vue2.js.map +1 -1
  170. package/dist/components/tables/RuiTablePagination.vue.d.ts +10 -10
  171. package/dist/components/tables/RuiTablePagination.vue2.js +17 -16
  172. package/dist/components/tables/RuiTablePagination.vue2.js.map +1 -1
  173. package/dist/components/tabs/tab/RuiTab.vue.d.ts +3 -18
  174. package/dist/components/tabs/tab/RuiTab.vue2.js +80 -51
  175. package/dist/components/tabs/tab/RuiTab.vue2.js.map +1 -1
  176. package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +3 -11
  177. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js +1 -1
  178. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js.map +1 -1
  179. package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +1 -4
  180. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js +18 -18
  181. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js.map +1 -1
  182. package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +10 -14
  183. package/dist/components/tabs/tabs/RuiTabs.vue2.js +101 -94
  184. package/dist/components/tabs/tabs/RuiTabs.vue2.js.map +1 -1
  185. package/dist/components/time-picker/RuiTimePicker.vue.d.ts +1 -4
  186. package/dist/components/time-picker/RuiTimePicker.vue2.js +68 -35
  187. package/dist/components/time-picker/RuiTimePicker.vue2.js.map +1 -1
  188. package/dist/composables/breakpoint.js +8 -13
  189. package/dist/composables/breakpoint.js.map +1 -1
  190. package/dist/composables/dropdown-menu.d.ts +7 -4
  191. package/dist/composables/dropdown-menu.js +73 -50
  192. package/dist/composables/dropdown-menu.js.map +1 -1
  193. package/dist/composables/forms/auto-complete/focus.d.ts +7 -5
  194. package/dist/composables/forms/auto-complete/focus.js +28 -17
  195. package/dist/composables/forms/auto-complete/focus.js.map +1 -1
  196. package/dist/composables/forms/auto-complete/index.d.ts +0 -9
  197. package/dist/composables/forms/auto-complete/keyboard-navigation.d.ts +8 -3
  198. package/dist/composables/forms/auto-complete/keyboard-navigation.js +11 -5
  199. package/dist/composables/forms/auto-complete/keyboard-navigation.js.map +1 -1
  200. package/dist/composables/forms/auto-complete/search.d.ts +7 -0
  201. package/dist/composables/forms/auto-complete/search.js +10 -8
  202. package/dist/composables/forms/auto-complete/search.js.map +1 -1
  203. package/dist/composables/forms/auto-complete/value.d.ts +4 -0
  204. package/dist/composables/forms/auto-complete/value.js +24 -42
  205. package/dist/composables/forms/auto-complete/value.js.map +1 -1
  206. package/dist/composables/forms/use-label-with-quote.d.ts +2 -0
  207. package/dist/composables/forms/use-label-with-quote.js +14 -0
  208. package/dist/composables/forms/use-label-with-quote.js.map +1 -0
  209. package/dist/composables/forms/use-prepend-append-width.d.ts +6 -0
  210. package/dist/composables/forms/use-prepend-append-width.js +25 -0
  211. package/dist/composables/forms/use-prepend-append-width.js.map +1 -0
  212. package/dist/composables/popper.js +60 -46
  213. package/dist/composables/popper.js.map +1 -1
  214. package/dist/composables/sticky-header.d.ts +7 -5
  215. package/dist/composables/sticky-header.js +51 -41
  216. package/dist/composables/sticky-header.js.map +1 -1
  217. package/dist/composables/tables/data-table/columns.d.ts +25 -0
  218. package/dist/composables/tables/data-table/columns.js +54 -0
  219. package/dist/composables/tables/data-table/columns.js.map +1 -0
  220. package/dist/composables/tables/data-table/expansion.d.ts +17 -0
  221. package/dist/composables/tables/data-table/expansion.js +38 -0
  222. package/dist/composables/tables/data-table/expansion.js.map +1 -0
  223. package/dist/composables/tables/data-table/grouping.d.ts +29 -0
  224. package/dist/composables/tables/data-table/grouping.js +136 -0
  225. package/dist/composables/tables/data-table/grouping.js.map +1 -0
  226. package/dist/composables/tables/data-table/pagination.d.ts +33 -0
  227. package/dist/composables/tables/data-table/pagination.js +119 -0
  228. package/dist/composables/tables/data-table/pagination.js.map +1 -0
  229. package/dist/composables/tables/data-table/selection.d.ts +29 -0
  230. package/dist/composables/tables/data-table/selection.js +164 -0
  231. package/dist/composables/tables/data-table/selection.js.map +1 -0
  232. package/dist/composables/tables/data-table/sort.d.ts +32 -0
  233. package/dist/composables/tables/data-table/sort.js +136 -0
  234. package/dist/composables/tables/data-table/sort.js.map +1 -0
  235. package/dist/composables/tables/data-table/types.d.ts +14 -0
  236. package/dist/composables/tables/data-table/types.js +11 -0
  237. package/dist/composables/tables/data-table/types.js.map +1 -0
  238. package/dist/composables/theme.js +1 -20
  239. package/dist/composables/theme.js.map +1 -1
  240. package/dist/composables/timeout-manager.d.ts +4 -2
  241. package/dist/composables/timeout-manager.js +2 -1
  242. package/dist/composables/timeout-manager.js.map +1 -1
  243. package/dist/icons/icons_1.js +28 -28
  244. package/dist/icons/icons_1.js.map +1 -1
  245. package/dist/icons/icons_2.d.ts +8 -8
  246. package/dist/icons/icons_2.js +52 -52
  247. package/dist/icons/icons_2.js.map +1 -1
  248. package/dist/icons/icons_3.d.ts +18 -18
  249. package/dist/icons/icons_3.js +108 -108
  250. package/dist/icons/icons_3.js.map +1 -1
  251. package/dist/icons/icons_4.d.ts +35 -0
  252. package/dist/icons/icons_4.js +176 -1
  253. package/dist/icons/icons_4.js.map +1 -1
  254. package/dist/icons/index.d.ts +1 -1
  255. package/dist/icons/index.js +1 -1
  256. package/dist/icons/index.js.map +1 -1
  257. package/dist/index.js +43 -15
  258. package/dist/index.js.map +1 -1
  259. package/dist/style.css +189 -162
  260. package/dist/theme/index.js +15 -1
  261. package/dist/theme/index.js.map +1 -1
  262. package/dist/utils/assert.d.ts +1 -1
  263. package/dist/utils/assert.js.map +1 -1
  264. package/dist/utils/form-text-detail.d.ts +9 -8
  265. package/dist/utils/form-text-detail.js +1 -2
  266. package/dist/utils/form-text-detail.js.map +1 -1
  267. package/dist/utils/helpers.d.ts +4 -32
  268. package/dist/utils/helpers.js +8 -9
  269. package/dist/utils/helpers.js.map +1 -1
  270. package/dist/utils/is-equal.d.ts +1 -1
  271. package/dist/utils/is-equal.js +5 -3
  272. package/dist/utils/is-equal.js.map +1 -1
  273. package/dist/web-types.json +359 -359
  274. package/package.json +44 -35
  275. package/dist/utils/generate-id.d.ts +0 -5
  276. package/dist/utils/generate-id.js +0 -21
  277. package/dist/utils/generate-id.js.map +0 -1
@@ -33,10 +33,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
33
33
  emits: /* @__PURE__ */ mergeModels(["select"], ["update:modelValue"]),
34
34
  setup(__props, { emit: __emit }) {
35
35
  const modelValue = useModel(__props, "modelValue");
36
- const props = __props;
37
36
  const emit = __emit;
38
37
  const viewMode = ref("months");
39
- const startYear = ref(props.viewYear - 6);
38
+ const startYear = ref(__props.viewYear - 6);
40
39
  const months = getShortMonthNames();
41
40
  const calendarState = inject(CalendarStateSymbol);
42
41
  const yearRange = ref([]);
@@ -47,11 +46,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
47
46
  const canGoToPrev = ref(true);
48
47
  function calculateYearRange() {
49
48
  const start = get(startYear);
50
- set(yearRange, Array.from({ length: 12 }, (_, i) => start + i));
49
+ set(
50
+ yearRange,
51
+ Array.from({ length: 12 }, (_, i) => start + i)
52
+ );
51
53
  }
52
54
  function calculateTitle() {
53
55
  if (get(viewMode) === "months") {
54
- set(title, props.viewYear.toString());
56
+ set(title, __props.viewYear.toString());
55
57
  } else {
56
58
  const range = get(yearRange);
57
59
  set(title, `${range[0]} - ${range.at(-1)}`);
@@ -61,8 +63,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
61
63
  const { maxDate, minDate } = calendarState;
62
64
  const mode = get(viewMode);
63
65
  if (mode === "months") {
64
- const nextYear = props.viewYear + 1;
65
- const previousYear = props.viewYear - 1;
66
+ const nextYear = __props.viewYear + 1;
67
+ const previousYear = __props.viewYear - 1;
66
68
  set(canGoToNext, !isDefined(maxDate) || nextYear <= get(maxDate).getFullYear());
67
69
  set(canGoToPrev, !isDefined(minDate) || previousYear >= get(minDate).getFullYear());
68
70
  } else {
@@ -76,7 +78,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
76
78
  }
77
79
  function calculateMonthsInRange() {
78
80
  const { minDate, maxDate } = calendarState;
79
- const currentYear = props.viewYear;
81
+ const currentYear = __props.viewYear;
80
82
  const result = new Array(12).fill(true);
81
83
  if (isDefined(minDate) || isDefined(maxDate)) {
82
84
  for (let month = 0; month < 12; month++) {
@@ -94,7 +96,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
94
96
  function calculateYearsInRange() {
95
97
  const { minDate, maxDate } = calendarState;
96
98
  const range = get(yearRange);
97
- const currentMonth = props.viewMonth;
99
+ const currentMonth = __props.viewMonth;
98
100
  if (!isDefined(minDate) && !isDefined(maxDate)) {
99
101
  set(yearsInRange, new Array(range.length).fill(true));
100
102
  return;
@@ -108,50 +110,26 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
108
110
  });
109
111
  set(yearsInRange, result);
110
112
  }
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
113
  function toggleSelection() {
136
114
  set(viewMode, get(viewMode) === "months" ? "years" : "months");
137
115
  }
138
116
  function selectMonth(month) {
139
117
  if (!get(monthsInRange)[month])
140
118
  return;
141
- emit("select", { month, year: props.viewYear });
119
+ emit("select", { month, year: __props.viewYear });
142
120
  set(modelValue, false);
143
121
  }
144
122
  function selectYear(year) {
145
123
  const yearIndex = get(yearRange).indexOf(year);
146
124
  if (yearIndex === -1 || !get(yearsInRange)[yearIndex])
147
125
  return;
148
- emit("select", { month: props.viewMonth, year });
126
+ emit("select", { month: __props.viewMonth, year });
149
127
  set(viewMode, "months");
150
128
  }
151
129
  function handleNext() {
152
130
  if (get(viewMode) === "months") {
153
- const nextYear = props.viewYear + 1;
154
- emit("select", { month: props.viewMonth, year: nextYear });
131
+ const nextYear = __props.viewYear + 1;
132
+ emit("select", { month: __props.viewMonth, year: nextYear });
155
133
  } else {
156
134
  const lastYearInRange = get(startYear) + 11;
157
135
  set(startYear, lastYearInRange + 1);
@@ -159,13 +137,43 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
159
137
  }
160
138
  function handlePrev() {
161
139
  if (get(viewMode) === "months") {
162
- const previousYear = props.viewYear - 1;
163
- emit("select", { month: props.viewMonth, year: previousYear });
140
+ const previousYear = __props.viewYear - 1;
141
+ emit("select", { month: __props.viewMonth, year: previousYear });
164
142
  } else {
165
143
  const firstYearInRange = get(startYear);
166
144
  set(startYear, firstYearInRange - 12);
167
145
  }
168
146
  }
147
+ calculateYearRange();
148
+ calculateTitle();
149
+ calculateNavigation();
150
+ calculateMonthsInRange();
151
+ calculateYearsInRange();
152
+ watch(startYear, () => {
153
+ calculateYearRange();
154
+ calculateTitle();
155
+ calculateNavigation();
156
+ calculateYearsInRange();
157
+ });
158
+ watch(viewMode, () => {
159
+ calculateTitle();
160
+ calculateNavigation();
161
+ });
162
+ watch(
163
+ () => __props.viewYear,
164
+ () => {
165
+ calculateTitle();
166
+ calculateNavigation();
167
+ calculateMonthsInRange();
168
+ calculateYearsInRange();
169
+ }
170
+ );
171
+ watch(
172
+ () => __props.viewMonth,
173
+ () => {
174
+ calculateYearsInRange();
175
+ }
176
+ );
169
177
  return (_ctx, _cache) => {
170
178
  return openBlock(), createBlock(RuiMenu, {
171
179
  modelValue: modelValue.value,
@@ -216,7 +224,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
216
224
  viewMode.value === "months" ? (openBlock(), createElementBlock("div", _hoisted_3, [
217
225
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(months), (month, index) => {
218
226
  return openBlock(), createElementBlock("button", {
219
- key: index,
227
+ key: month,
220
228
  type: "button",
221
229
  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
230
  {
@@ -1 +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 // Emit directly - navigation is already constrained by canGoToNext\n emit('select', { month: props.viewMonth, year: 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 // Emit directly - navigation is already constrained by canGoToPrev\n emit('select', { month: props.viewMonth, year: 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":"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"}
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 { viewMonth, viewYear } = 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>(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(): void {\n const start = get(startYear);\n set(\n yearRange,\n Array.from({ length: 12 }, (_, i) => start + i),\n );\n}\n\nfunction calculateTitle(): void {\n if (get(viewMode) === 'months') {\n set(title, viewYear.toString());\n }\n else {\n const range = get(yearRange);\n set(title, `${range[0]} - ${range.at(-1)}`);\n }\n}\n\nfunction calculateNavigation(): void {\n const { maxDate, minDate } = calendarState;\n const mode = get(viewMode);\n\n if (mode === 'months') {\n const nextYear = viewYear + 1;\n const previousYear = 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(): void {\n const { minDate, maxDate } = calendarState;\n const currentYear = 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(): void {\n const { minDate, maxDate } = calendarState;\n const range = get(yearRange);\n const currentMonth = 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\nfunction toggleSelection(): void {\n set(viewMode, get(viewMode) === 'months' ? 'years' : 'months');\n}\n\nfunction selectMonth(month: number): void {\n if (!get(monthsInRange)[month])\n return;\n emit('select', { month, year: viewYear });\n set(modelValue, false);\n}\n\nfunction selectYear(year: number): void {\n const yearIndex = get(yearRange).indexOf(year);\n if (yearIndex === -1 || !get(yearsInRange)[yearIndex])\n return;\n\n emit('select', { month: viewMonth, year });\n set(viewMode, 'months');\n}\n\nfunction handleNext(): void {\n if (get(viewMode) === 'months') {\n const nextYear = viewYear + 1;\n // Emit directly - navigation is already constrained by canGoToNext\n emit('select', { month: viewMonth, year: nextYear });\n }\n else {\n const lastYearInRange = get(startYear) + 11;\n set(startYear, lastYearInRange + 1);\n }\n}\n\nfunction handlePrev(): void {\n if (get(viewMode) === 'months') {\n const previousYear = viewYear - 1;\n // Emit directly - navigation is already constrained by canGoToPrev\n emit('select', { month: viewMonth, year: previousYear });\n }\n else {\n const firstYearInRange = get(startYear);\n set(startYear, firstYearInRange - 12);\n }\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(\n () => viewYear,\n () => {\n calculateTitle();\n calculateNavigation();\n calculateMonthsInRange();\n calculateYearsInRange();\n },\n);\n\nwatch(\n () => viewMonth,\n () => {\n calculateYearsInRange();\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=\"month\"\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':\n index === viewMonth && get(monthsInRange)[index],\n 'bg-gray-300 text-gray-500 dark:bg-gray-600 dark:text-gray-400':\n 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':\n 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':\n !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':\n year === viewYear && get(yearsInRange)[index],\n 'bg-gray-300 text-gray-500 dark:bg-gray-600 dark:text-gray-400':\n 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':\n 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':\n !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;AAQxC,UAAM,OAAO;AAKb,UAAM,WAAW,IAAwB,QAAQ;AACjD,UAAM,YAAY,IAAY,QAAA,WAAW,CAAC;AAG1C,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,qBAA2B;AAClC,YAAM,QAAQ,IAAI,SAAS;AAC3B;AAAA,QACE;AAAA,QACA,MAAM,KAAK,EAAE,QAAQ,GAAA,GAAM,CAAC,GAAG,MAAM,QAAQ,CAAC;AAAA,MAAA;AAAA,IAElD;AAEA,aAAS,iBAAuB;AAC9B,UAAI,IAAI,QAAQ,MAAM,UAAU;AAC9B,YAAI,OAAO,QAAA,SAAS,SAAA,CAAU;AAAA,MAChC,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,sBAA4B;AACnC,YAAM,EAAE,SAAS,QAAA,IAAY;AAC7B,YAAM,OAAO,IAAI,QAAQ;AAEzB,UAAI,SAAS,UAAU;AACrB,cAAM,WAAW,QAAA,WAAW;AAC5B,cAAM,eAAe,QAAA,WAAW;AAEhC,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,yBAA+B;AACtC,YAAM,EAAE,SAAS,QAAA,IAAY;AAC7B,YAAM,cAAc,QAAA;AACpB,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,wBAA8B;AACrC,YAAM,EAAE,SAAS,QAAA,IAAY;AAC7B,YAAM,QAAQ,IAAI,SAAS;AAC3B,YAAM,eAAe,QAAA;AAErB,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;AAEA,aAAS,kBAAwB;AAC/B,UAAI,UAAU,IAAI,QAAQ,MAAM,WAAW,UAAU,QAAQ;AAAA,IAC/D;AAEA,aAAS,YAAY,OAAqB;AACxC,UAAI,CAAC,IAAI,aAAa,EAAE,KAAK;AAC3B;AACF,WAAK,UAAU,EAAE,OAAO,MAAM,QAAA,UAAU;AACxC,UAAI,YAAY,KAAK;AAAA,IACvB;AAEA,aAAS,WAAW,MAAoB;AACtC,YAAM,YAAY,IAAI,SAAS,EAAE,QAAQ,IAAI;AAC7C,UAAI,cAAc,MAAM,CAAC,IAAI,YAAY,EAAE,SAAS;AAClD;AAEF,WAAK,UAAU,EAAE,OAAO,QAAA,WAAW,MAAM;AACzC,UAAI,UAAU,QAAQ;AAAA,IACxB;AAEA,aAAS,aAAmB;AAC1B,UAAI,IAAI,QAAQ,MAAM,UAAU;AAC9B,cAAM,WAAW,QAAA,WAAW;AAE5B,aAAK,UAAU,EAAE,OAAO,QAAA,WAAW,MAAM,UAAU;AAAA,MACrD,OACK;AACH,cAAM,kBAAkB,IAAI,SAAS,IAAI;AACzC,YAAI,WAAW,kBAAkB,CAAC;AAAA,MACpC;AAAA,IACF;AAEA,aAAS,aAAmB;AAC1B,UAAI,IAAI,QAAQ,MAAM,UAAU;AAC9B,cAAM,eAAe,QAAA,WAAW;AAEhC,aAAK,UAAU,EAAE,OAAO,QAAA,WAAW,MAAM,cAAc;AAAA,MACzD,OACK;AACH,cAAM,mBAAmB,IAAI,SAAS;AACtC,YAAI,WAAW,mBAAmB,EAAE;AAAA,MACtC;AAAA,IACF;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;AAAA,MACE,MAAM,QAAA;AAAA,MACN,MAAM;AACJ,uBAAA;AACA,4BAAA;AACA,+BAAA;AACA,8BAAA;AAAA,MACF;AAAA,IAAA;AAGF;AAAA,MACE,MAAM,QAAA;AAAA,MACN,MAAM;AACJ,8BAAA;AAAA,MACF;AAAA,IAAA;;0BAKAC,YAmGU,SAAA;AAAA,oBAlGC,WAAA;AAAA,qEAAA,WAAU,QAAA;AAAA,QAClB,aAAW,QAAA;AAAA,QACZ,WAAU;AAAA,MAAA;yBAEV,MA6FM;AAAA,UA7FNC,mBA6FM,OA7FN,YA6FM;AAAA,YA5FJA,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,mBA0BM,OA1BN,YA0BM;AAAA,eAtBJD,UAAA,IAAA,GAAAC,mBAqBSC,UAAA,MAAAC,WApBkBL,MAAA,MAAA,GAAM,CAAvB,OAAO,UAAK;oCADtBG,mBAqBS,UAAA;AAAA,kBAnBN,KAAK;AAAA,kBACN,MAAK;AAAA,kBACL,uBAAM,2NAAyN;AAAA;iLACd,UAAU,QAAA,aAAaH,WAAI,cAAA,KAAa,EAAE,KAAK;AAAA,uFAAkG,UAAU,QAAA,aAAS,CAAKA,WAAI,cAAA,KAAa,EAAE,KAAK;AAAA,6JAAwK,UAAU,QAAA,aAAaA,WAAI,cAAA,KAAa,EAAE,KAAK;AAAA,4NAAuOA,MAAA,GAAA,EAAI,cAAA,KAAa,EAAE,KAAK;AAAA,oBAAA;AAAA;kBAYv2B,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,mBA0BM,OA1BN,YA0BM;AAAA,eAtBJD,UAAA,IAAA,GAAAC,mBAqBSC,UAAA,MAAAC,WApBiB,UAAA,OAAS,CAAzB,MAAM,UAAK;oCADrBF,mBAqBS,UAAA;AAAA,kBAnBN,KAAK;AAAA,kBACN,MAAK;AAAA,kBACL,uBAAM,2NAAyN;AAAA;iLACd,SAAS,QAAA,YAAYH,WAAI,aAAA,KAAY,EAAE,KAAK;AAAA,uFAAkG,SAAS,QAAA,YAAQ,CAAKA,WAAI,aAAA,KAAY,EAAE,KAAK;AAAA,6JAAwK,SAAS,QAAA,YAAYA,WAAI,aAAA,KAAY,EAAE,KAAK;AAAA,4NAAuOA,MAAA,GAAA,EAAI,aAAA,KAAY,EAAE,KAAK;AAAA,oBAAA;AAAA;kBAY71B,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;;;;;;;;;"}
@@ -7,31 +7,16 @@ export interface Props {
7
7
  noPadding?: boolean;
8
8
  contentClass?: string;
9
9
  }
10
- declare var __VLS_1: {}, __VLS_3: {}, __VLS_12: {}, __VLS_15: {}, __VLS_18: {}, __VLS_20: {}, __VLS_22: {};
11
- type __VLS_Slots = {} & {
12
- image?: (props: typeof __VLS_1) => any;
13
- } & {
14
- 'custom-header'?: (props: typeof __VLS_3) => any;
15
- } & {
16
- prepend?: (props: typeof __VLS_12) => any;
17
- } & {
18
- header?: (props: typeof __VLS_15) => any;
19
- } & {
20
- subheader?: (props: typeof __VLS_18) => any;
21
- } & {
22
- default?: (props: typeof __VLS_20) => any;
23
- } & {
24
- footer?: (props: typeof __VLS_22) => any;
10
+ type __VLS_Slots = {
11
+ 'image'?: () => any;
12
+ 'custom-header'?: () => any;
13
+ 'prepend'?: () => any;
14
+ 'header'?: () => any;
15
+ 'subheader'?: () => any;
16
+ 'default'?: () => any;
17
+ 'footer'?: () => any;
25
18
  };
26
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
27
- variant: "flat" | "outlined";
28
- rounded: "sm" | "md" | "lg";
29
- elevation: number;
30
- dense: boolean;
31
- contentClass: string;
32
- divide: boolean;
33
- noPadding: boolean;
34
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
35
20
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
36
21
  declare const _default: typeof __VLS_export;
37
22
  export default _default;
@@ -1,4 +1,4 @@
1
- import { defineComponent, useSlots, computed, openBlock, createElementBlock, mergeProps, unref, normalizeClass, renderSlot, createCommentVNode, createBlock, createSlots, withCtx } from "vue";
1
+ import { defineComponent, useSlots, computed, openBlock, createElementBlock, mergeProps, normalizeClass, renderSlot, createCommentVNode, createBlock, createSlots, withCtx } from "vue";
2
2
  import RuiCardHeader from "./RuiCardHeader.vue.js";
3
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  ...{
@@ -32,7 +32,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
32
32
  }
33
33
  ]
34
34
  }, _ctx.$attrs), [
35
- unref(slots).image ? (openBlock(), createElementBlock("div", {
35
+ slots.image ? (openBlock(), createElementBlock("div", {
36
36
  key: 0,
37
37
  class: normalizeClass(_ctx.$style.image)
38
38
  }, [
@@ -43,21 +43,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
43
43
  key: 0,
44
44
  dense: __props.dense
45
45
  }, createSlots({ _: 2 }, [
46
- unref(slots).prepend ? {
46
+ slots.prepend ? {
47
47
  name: "prepend",
48
48
  fn: withCtx(() => [
49
49
  renderSlot(_ctx.$slots, "prepend")
50
50
  ]),
51
51
  key: "0"
52
52
  } : void 0,
53
- unref(slots).header ? {
53
+ slots.header ? {
54
54
  name: "header",
55
55
  fn: withCtx(() => [
56
56
  renderSlot(_ctx.$slots, "header")
57
57
  ]),
58
58
  key: "1"
59
59
  } : void 0,
60
- unref(slots).subheader ? {
60
+ slots.subheader ? {
61
61
  name: "subheader",
62
62
  fn: withCtx(() => [
63
63
  renderSlot(_ctx.$slots, "subheader")
@@ -66,13 +66,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
66
66
  } : void 0
67
67
  ]), 1032, ["dense"])) : createCommentVNode("", true)
68
68
  ]),
69
- unref(slots).default ? (openBlock(), createElementBlock("div", {
69
+ slots.default ? (openBlock(), createElementBlock("div", {
70
70
  key: 1,
71
71
  class: normalizeClass([_ctx.$style.content, __props.contentClass])
72
72
  }, [
73
73
  renderSlot(_ctx.$slots, "default")
74
74
  ], 2)) : createCommentVNode("", true),
75
- unref(slots).footer ? (openBlock(), createElementBlock("div", {
75
+ slots.footer ? (openBlock(), createElementBlock("div", {
76
76
  key: 2,
77
77
  class: normalizeClass(_ctx.$style.footer)
78
78
  }, [
@@ -1 +1 @@
1
- {"version":3,"file":"RuiCard.vue2.js","sources":["../../../src/components/cards/RuiCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport RuiCardHeader from '@/components/cards/RuiCardHeader.vue';\n\nexport interface Props {\n dense?: boolean;\n divide?: boolean;\n elevation?: number;\n variant?: 'flat' | 'outlined';\n rounded?: 'sm' | 'md' | 'lg';\n noPadding?: boolean;\n contentClass?: string;\n}\n\ndefineOptions({\n name: 'RuiCard',\n inheritAttrs: false,\n});\n\nwithDefaults(defineProps<Props>(), {\n divide: false,\n dense: false,\n elevation: 0,\n variant: 'outlined',\n rounded: 'md',\n noPadding: false,\n contentClass: '',\n});\n\nconst slots = useSlots();\n\nconst hasHeadContent = computed<boolean>(() => !!slots.header || !!slots.subheader);\n</script>\n\n<template>\n <div\n :class=\"[\n $style.card,\n `shadow-${elevation}`,\n $style[`rounded__${rounded}`],\n {\n [$style.outlined]: variant === 'outlined',\n [$style.dense]: dense,\n [$style.divide]: divide,\n [$style['no-padding']]: noPadding,\n },\n ]\"\n v-bind=\"$attrs\"\n >\n <div\n v-if=\"slots.image\"\n :class=\"$style.image\"\n >\n <slot name=\"image\" />\n </div>\n <slot name=\"custom-header\">\n <RuiCardHeader\n v-if=\"hasHeadContent\"\n :dense=\"dense\"\n >\n <template\n v-if=\"slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <template\n v-if=\"slots.header\"\n #header\n >\n <slot name=\"header\" />\n </template>\n <template\n v-if=\"slots.subheader\"\n #subheader\n >\n <slot name=\"subheader\" />\n </template>\n </RuiCardHeader>\n </slot>\n <div\n v-if=\"slots.default\"\n :class=\"[$style.content, contentClass]\"\n >\n <slot />\n </div>\n <div\n v-if=\"slots.footer\"\n :class=\"$style.footer\"\n >\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.card {\n @apply flex flex-col h-full w-full bg-white;\n &.rounded__sm {\n @apply rounded-[.25rem];\n\n .image {\n @apply rounded-t-[.25rem];\n }\n }\n\n &.rounded__md {\n @apply rounded-[.5rem];\n\n .image {\n @apply rounded-t-[.5rem];\n }\n }\n\n &.rounded__lg {\n @apply rounded-[1rem];\n\n .image {\n @apply rounded-t-[1rem];\n }\n }\n\n .image {\n @apply overflow-hidden;\n }\n\n .content {\n @apply p-4 text-body-1 text-rui-light-text overflow-y-auto;\n }\n\n .footer {\n @apply p-4 pt-2 flex space-x-2 items-center justify-start mt-auto;\n }\n\n &.flat {\n @apply border-none;\n }\n\n &.outlined {\n @apply border border-black/[0.12];\n }\n\n &.divide {\n @apply divide-y divide-black/[0.12];\n }\n\n &.dense {\n > .content {\n @apply p-3;\n }\n\n > .footer {\n @apply py-1 flex space-x-2;\n }\n }\n\n &.no-padding {\n > .content {\n @apply p-0;\n }\n }\n}\n\n:global(.dark) {\n .card {\n @apply bg-[#1E1E1E];\n\n .content {\n @apply text-rui-dark-text;\n }\n\n &.outlined {\n @apply border-white/[0.12];\n }\n\n &.divide {\n @apply divide-white/[0.12];\n }\n }\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","$style","$attrs","_unref","_normalizeClass","_renderSlot","_createBlock"],"mappings":";;;;;;;;;;;;;;;;;;AA6BA,UAAM,QAAQ,SAAA;AAEd,UAAM,iBAAiB,SAAkB,MAAM,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,MAAM,SAAS;;AAIhF,aAAAA,UAAA,GAAAC,mBAyDM,OAzDNC,WAyDM;AAAA,QAxDH,OAAK;AAAA,UAAUC,KAAAA,OAAO;AAAA,oBAAsB,QAAA,SAAS;AAAA,UAAUA,KAAAA,mBAAmB,QAAA,OAAO,EAAA;AAAA;aAAsBA,KAAAA,OAAO,QAAQ,GAAG,QAAA,YAAO;AAAA,aAA0BA,KAAAA,OAAO,KAAK,GAAG,QAAA;AAAA,aAAgBA,KAAAA,OAAO,MAAM,GAAG,QAAA;AAAA,YAAiBA,CAAAA,KAAAA,uBAAuB,QAAA;AAAA,UAAA;AAAA;SAWlPC,KAAAA,MAAM,GAAA;AAAA,QAGNC,MAAA,KAAA,EAAM,sBADdJ,mBAKM,OAAA;AAAA;UAHH,OAAKK,eAAEH,KAAAA,OAAO,KAAK;AAAA,QAAA;UAEpBI,WAAqB,KAAA,QAAA,OAAA;AAAA,QAAA;QAEvBA,WAwBO,kCAxBP,MAwBO;AAAA,UAtBG,eAAA,sBADRC,YAsBgB,eAAA;AAAA;YApBb,OAAO,QAAA;AAAA,UAAA;YAGAH,MAAA,KAAA,EAAM;oBACX;AAAA,0BAED,MAAuB;AAAA,gBAAvBE,WAAuB,KAAA,QAAA,SAAA;AAAA,cAAA;;;YAGjBF,MAAA,KAAA,EAAM;oBACX;AAAA,0BAED,MAAsB;AAAA,gBAAtBE,WAAsB,KAAA,QAAA,QAAA;AAAA,cAAA;;;YAGhBF,MAAA,KAAA,EAAM;oBACX;AAAA,0BAED,MAAyB;AAAA,gBAAzBE,WAAyB,KAAA,QAAA,WAAA;AAAA,cAAA;;;;;QAKvBF,MAAA,KAAA,EAAM,wBADdJ,mBAKM,OAAA;AAAA;UAHH,OAAKK,eAAA,CAAGH,KAAAA,OAAO,SAAS,QAAA,YAAY,CAAA;AAAA,QAAA;UAErCI,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;QAGFF,MAAA,KAAA,EAAM,uBADdJ,mBAKM,OAAA;AAAA;UAHH,OAAKK,eAAEH,KAAAA,OAAO,MAAM;AAAA,QAAA;UAErBI,WAAsB,KAAA,QAAA,QAAA;AAAA,QAAA;;;;;"}
1
+ {"version":3,"file":"RuiCard.vue2.js","sources":["../../../src/components/cards/RuiCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport RuiCardHeader from '@/components/cards/RuiCardHeader.vue';\n\nexport interface Props {\n dense?: boolean;\n divide?: boolean;\n elevation?: number;\n variant?: 'flat' | 'outlined';\n rounded?: 'sm' | 'md' | 'lg';\n noPadding?: boolean;\n contentClass?: string;\n}\n\ndefineOptions({\n name: 'RuiCard',\n inheritAttrs: false,\n});\n\nconst {\n divide = false,\n dense = false,\n elevation = 0,\n variant = 'outlined',\n rounded = 'md',\n noPadding = false,\n contentClass = '',\n} = defineProps<Props>();\n\nconst slots = defineSlots<{\n 'image'?: () => any;\n 'custom-header'?: () => any;\n 'prepend'?: () => any;\n 'header'?: () => any;\n 'subheader'?: () => any;\n 'default'?: () => any;\n 'footer'?: () => any;\n}>();\n\nconst hasHeadContent = computed<boolean>(() => !!slots.header || !!slots.subheader);\n</script>\n\n<template>\n <div\n :class=\"[\n $style.card,\n `shadow-${elevation}`,\n $style[`rounded__${rounded}`],\n {\n [$style.outlined]: variant === 'outlined',\n [$style.dense]: dense,\n [$style.divide]: divide,\n [$style['no-padding']]: noPadding,\n },\n ]\"\n v-bind=\"$attrs\"\n >\n <div\n v-if=\"slots.image\"\n :class=\"$style.image\"\n >\n <slot name=\"image\" />\n </div>\n <slot name=\"custom-header\">\n <RuiCardHeader\n v-if=\"hasHeadContent\"\n :dense=\"dense\"\n >\n <template\n v-if=\"slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <template\n v-if=\"slots.header\"\n #header\n >\n <slot name=\"header\" />\n </template>\n <template\n v-if=\"slots.subheader\"\n #subheader\n >\n <slot name=\"subheader\" />\n </template>\n </RuiCardHeader>\n </slot>\n <div\n v-if=\"slots.default\"\n :class=\"[$style.content, contentClass]\"\n >\n <slot />\n </div>\n <div\n v-if=\"slots.footer\"\n :class=\"$style.footer\"\n >\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.card {\n @apply flex flex-col h-full w-full bg-white;\n &.rounded__sm {\n @apply rounded-[.25rem];\n\n .image {\n @apply rounded-t-[.25rem];\n }\n }\n\n &.rounded__md {\n @apply rounded-[.5rem];\n\n .image {\n @apply rounded-t-[.5rem];\n }\n }\n\n &.rounded__lg {\n @apply rounded-[1rem];\n\n .image {\n @apply rounded-t-[1rem];\n }\n }\n\n .image {\n @apply overflow-hidden;\n }\n\n .content {\n @apply p-4 text-body-1 text-rui-light-text overflow-y-auto;\n }\n\n .footer {\n @apply p-4 pt-2 flex space-x-2 items-center justify-start mt-auto;\n }\n\n &.flat {\n @apply border-none;\n }\n\n &.outlined {\n @apply border border-black/[0.12];\n }\n\n &.divide {\n @apply divide-y divide-black/[0.12];\n }\n\n &.dense {\n > .content {\n @apply p-3;\n }\n\n > .footer {\n @apply py-1 flex space-x-2;\n }\n }\n\n &.no-padding {\n > .content {\n @apply p-0;\n }\n }\n}\n\n:global(.dark) {\n .card {\n @apply bg-[#1E1E1E];\n\n .content {\n @apply text-rui-dark-text;\n }\n\n &.outlined {\n @apply border-white/[0.12];\n }\n\n &.divide {\n @apply divide-white/[0.12];\n }\n }\n}\n</style>\n"],"names":["_useSlots","_openBlock","_createElementBlock","_mergeProps","$style","$attrs","_normalizeClass","_renderSlot","_createBlock"],"mappings":";;;;;;;;;;;;;;;;;;AA6BA,UAAM,QAAQA,SAAA;AAUd,UAAM,iBAAiB,SAAkB,MAAM,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,MAAM,SAAS;;AAIhF,aAAAC,UAAA,GAAAC,mBAyDM,OAzDNC,WAyDM;AAAA,QAxDH,OAAK;AAAA,UAAUC,KAAAA,OAAO;AAAA,oBAAsB,QAAA,SAAS;AAAA,UAAUA,KAAAA,mBAAmB,QAAA,OAAO,EAAA;AAAA;aAAsBA,KAAAA,OAAO,QAAQ,GAAG,QAAA,YAAO;AAAA,aAA0BA,KAAAA,OAAO,KAAK,GAAG,QAAA;AAAA,aAAgBA,KAAAA,OAAO,MAAM,GAAG,QAAA;AAAA,YAAiBA,CAAAA,KAAAA,uBAAuB,QAAA;AAAA,UAAA;AAAA;SAWlPC,KAAAA,MAAM,GAAA;AAAA,QAGN,MAAM,sBADdH,mBAKM,OAAA;AAAA;UAHH,OAAKI,eAAEF,KAAAA,OAAO,KAAK;AAAA,QAAA;UAEpBG,WAAqB,KAAA,QAAA,OAAA;AAAA,QAAA;QAEvBA,WAwBO,kCAxBP,MAwBO;AAAA,UAtBG,eAAA,sBADRC,YAsBgB,eAAA;AAAA;YApBb,OAAO,QAAA;AAAA,UAAA;YAGA,MAAM;oBACX;AAAA,0BAED,MAAuB;AAAA,gBAAvBD,WAAuB,KAAA,QAAA,SAAA;AAAA,cAAA;;;YAGjB,MAAM;oBACX;AAAA,0BAED,MAAsB;AAAA,gBAAtBA,WAAsB,KAAA,QAAA,QAAA;AAAA,cAAA;;;YAGhB,MAAM;oBACX;AAAA,0BAED,MAAyB;AAAA,gBAAzBA,WAAyB,KAAA,QAAA,WAAA;AAAA,cAAA;;;;;QAKvB,MAAM,wBADdL,mBAKM,OAAA;AAAA;UAHH,OAAKI,eAAA,CAAGF,KAAAA,OAAO,SAAS,QAAA,YAAY,CAAA;AAAA,QAAA;UAErCG,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;QAGF,MAAM,uBADdL,mBAKM,OAAA;AAAA;UAHH,OAAKI,eAAEF,KAAAA,OAAO,MAAM;AAAA,QAAA;UAErBG,WAAsB,KAAA,QAAA,QAAA;AAAA,QAAA;;;;;"}
@@ -1,17 +1,12 @@
1
1
  export interface Props {
2
2
  dense?: boolean;
3
3
  }
4
- declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
5
- type __VLS_Slots = {} & {
6
- prepend?: (props: typeof __VLS_1) => any;
7
- } & {
8
- header?: (props: typeof __VLS_3) => any;
9
- } & {
10
- subheader?: (props: typeof __VLS_5) => any;
4
+ type __VLS_Slots = {
5
+ prepend?: () => any;
6
+ header?: () => any;
7
+ subheader?: () => any;
11
8
  };
12
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
13
- dense: boolean;
14
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
10
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
11
  declare const _default: typeof __VLS_export;
17
12
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"RuiCardHeader.vue2.js","sources":["../../../src/components/cards/RuiCardHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nexport interface Props {\n dense?: boolean;\n}\n\ndefineOptions({\n name: 'RuiCardHeader',\n inheritAttrs: false,\n});\n\nwithDefaults(defineProps<Props>(), {\n dense: false,\n});\n</script>\n\n<template>\n <div\n :class=\"[\n $style.head,\n {\n [$style.dense]: dense,\n [$style.has_prepend]: !!$slots.prepend,\n },\n ]\"\n v-bind=\"$attrs\"\n >\n <div\n v-if=\"$slots.prepend\"\n :class=\"$style.prepend\"\n >\n <slot name=\"prepend\" />\n </div>\n <div :class=\"$style.headers\">\n <h5\n v-if=\"$slots.header\"\n :class=\"$style.header\"\n >\n <slot name=\"header\" />\n </h5>\n <p\n v-if=\"$slots.subheader\"\n :class=\"$style.subheader\"\n >\n <slot name=\"subheader\" />\n </p>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.head {\n @apply p-4 flex space-x-4;\n\n .prepend {\n @apply rounded-full flex items-center justify-center w-10 h-10;\n @apply text-[1.25rem] text-white bg-rui-grey-400 overflow-hidden;\n }\n\n .headers {\n @apply flex flex-col justify-center;\n }\n\n .header {\n @apply text-rui-text text-h6;\n }\n\n .subheader {\n @apply text-rui-text-secondary text-body-2 mb-0;\n }\n\n &.has_prepend {\n .header {\n @apply text-body-1;\n }\n }\n\n &.dense {\n @apply p-3 space-x-2;\n\n .prepend {\n @apply text-base p-[0.08rem] w-9 h-9;\n }\n }\n}\n\n:global(.dark) {\n .head {\n .prepend {\n @apply bg-rui-grey-700 text-black/90;\n }\n\n .header {\n @apply text-rui-dark-text;\n }\n\n .subheader {\n @apply text-rui-dark-text-secondary;\n }\n }\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","$style","$slots","$attrs","_normalizeClass","_renderSlot","_createElementVNode"],"mappings":";;;;;;;;;;;;AAgBE,aAAAA,UAAA,GAAAC,mBA8BM,OA9BNC,WA8BM;AAAA,QA7BH,OAAK;AAAA,UAAUC,KAAAA,OAAO;AAAA;aAAuBA,KAAAA,OAAO,KAAK,GAAG,QAAA;AAAA,YAAgBA,CAAAA,KAAAA,OAAO,WAAW,GAAA,CAAA,CAAKC,KAAAA,OAAO;AAAA,UAAA;AAAA;SAOnGC,KAAAA,MAAM,GAAA;AAAA,QAGND,KAAAA,OAAO,wBADfH,mBAKM,OAAA;AAAA;UAHH,OAAKK,eAAEH,KAAAA,OAAO,OAAO;AAAA,QAAA;UAEtBI,WAAuB,KAAA,QAAA,SAAA;AAAA,QAAA;QAEzBC,mBAaM,OAAA;AAAA,UAbA,OAAKF,eAAEH,KAAAA,OAAO,OAAO;AAAA,QAAA;UAEjBC,KAAAA,OAAO,uBADfH,mBAKK,MAAA;AAAA;YAHF,OAAKK,eAAEH,KAAAA,OAAO,MAAM;AAAA,UAAA;YAErBI,WAAsB,KAAA,QAAA,QAAA;AAAA,UAAA;UAGhBH,KAAAA,OAAO,0BADfH,mBAKI,KAAA;AAAA;YAHD,OAAKK,eAAEH,KAAAA,OAAO,SAAS;AAAA,UAAA;YAExBI,WAAyB,KAAA,QAAA,WAAA;AAAA,UAAA;;;;;;"}
1
+ {"version":3,"file":"RuiCardHeader.vue2.js","sources":["../../../src/components/cards/RuiCardHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nexport interface Props {\n dense?: boolean;\n}\n\ndefineOptions({\n name: 'RuiCardHeader',\n inheritAttrs: false,\n});\n\nconst { dense = false } = defineProps<Props>();\n\ndefineSlots<{\n prepend?: () => any;\n header?: () => any;\n subheader?: () => any;\n}>();\n</script>\n\n<template>\n <div\n :class=\"[\n $style.head,\n {\n [$style.dense]: dense,\n [$style.has_prepend]: !!$slots.prepend,\n },\n ]\"\n v-bind=\"$attrs\"\n >\n <div\n v-if=\"$slots.prepend\"\n :class=\"$style.prepend\"\n >\n <slot name=\"prepend\" />\n </div>\n <div :class=\"$style.headers\">\n <h5\n v-if=\"$slots.header\"\n :class=\"$style.header\"\n >\n <slot name=\"header\" />\n </h5>\n <p\n v-if=\"$slots.subheader\"\n :class=\"$style.subheader\"\n >\n <slot name=\"subheader\" />\n </p>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.head {\n @apply p-4 flex space-x-4;\n\n .prepend {\n @apply rounded-full flex items-center justify-center w-10 h-10;\n @apply text-[1.25rem] text-white bg-rui-grey-400 overflow-hidden;\n }\n\n .headers {\n @apply flex flex-col justify-center;\n }\n\n .header {\n @apply text-rui-text text-h6;\n }\n\n .subheader {\n @apply text-rui-text-secondary text-body-2 mb-0;\n }\n\n &.has_prepend {\n .header {\n @apply text-body-1;\n }\n }\n\n &.dense {\n @apply p-3 space-x-2;\n\n .prepend {\n @apply text-base p-[0.08rem] w-9 h-9;\n }\n }\n}\n\n:global(.dark) {\n .head {\n .prepend {\n @apply bg-rui-grey-700 text-black/90;\n }\n\n .header {\n @apply text-rui-dark-text;\n }\n\n .subheader {\n @apply text-rui-dark-text-secondary;\n }\n }\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","$style","$slots","$attrs","_normalizeClass","_renderSlot","_createElementVNode"],"mappings":";;;;;;;;;;;;AAoBE,aAAAA,UAAA,GAAAC,mBA8BM,OA9BNC,WA8BM;AAAA,QA7BH,OAAK;AAAA,UAAUC,KAAAA,OAAO;AAAA;aAAuBA,KAAAA,OAAO,KAAK,GAAG,QAAA;AAAA,YAAgBA,CAAAA,KAAAA,OAAO,WAAW,GAAA,CAAA,CAAKC,KAAAA,OAAO;AAAA,UAAA;AAAA;SAOnGC,KAAAA,MAAM,GAAA;AAAA,QAGND,KAAAA,OAAO,wBADfH,mBAKM,OAAA;AAAA;UAHH,OAAKK,eAAEH,KAAAA,OAAO,OAAO;AAAA,QAAA;UAEtBI,WAAuB,KAAA,QAAA,SAAA;AAAA,QAAA;QAEzBC,mBAaM,OAAA;AAAA,UAbA,OAAKF,eAAEH,KAAAA,OAAO,OAAO;AAAA,QAAA;UAEjBC,KAAAA,OAAO,uBADfH,mBAKK,MAAA;AAAA;YAHF,OAAKK,eAAEH,KAAAA,OAAO,MAAM;AAAA,UAAA;YAErBI,WAAsB,KAAA,QAAA,QAAA;AAAA,UAAA;UAGhBH,KAAAA,OAAO,0BADfH,mBAKI,KAAA;AAAA;YAHD,OAAKK,eAAEH,KAAAA,OAAO,SAAS;AAAA,UAAA;YAExBI,WAAyB,KAAA,QAAA,WAAA;AAAA,UAAA;;;;;;"}
@@ -13,31 +13,17 @@ export interface Props {
13
13
  textColor?: string;
14
14
  contentClass?: string;
15
15
  }
16
- declare var __VLS_1: {}, __VLS_3: {};
17
- type __VLS_Slots = {} & {
18
- prepend?: (props: typeof __VLS_1) => any;
19
- } & {
20
- default?: (props: typeof __VLS_3) => any;
16
+ type __VLS_Slots = {
17
+ prepend?: () => any;
18
+ default?: () => any;
21
19
  };
22
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
23
- click: (e: any) => any;
20
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
21
+ click: (e: MouseEvent) => any;
24
22
  "click:close": () => any;
25
23
  }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
26
- onClick?: ((e: any) => any) | undefined;
24
+ onClick?: ((e: MouseEvent) => any) | undefined;
27
25
  "onClick:close"?: (() => any) | undefined;
28
- }>, {
29
- size: "sm" | "md";
30
- variant: "filled" | "outlined";
31
- color: "grey" | ContextColorsType;
32
- disabled: boolean;
33
- contentClass: string;
34
- closeable: boolean;
35
- tile: boolean;
36
- clickable: boolean;
37
- closeIcon: RuiIcons;
38
- bgColor: string;
39
- textColor: string;
40
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
27
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
42
28
  declare const _default: typeof __VLS_export;
43
29
  export default _default;
@@ -1,6 +1,5 @@
1
- import { defineComponent, toRefs, computed, openBlock, createElementBlock, mergeProps, unref, normalizeClass, renderSlot, createCommentVNode, createElementVNode, withModifiers, createVNode } from "vue";
2
- import { logicOr, logicNot } from "@vueuse/math";
3
- import { get, objectOmit } from "@vueuse/shared";
1
+ import { defineComponent, computed, openBlock, createElementBlock, mergeProps, unref, normalizeClass, renderSlot, createCommentVNode, createElementVNode, withModifiers, createVNode } from "vue";
2
+ import { objectOmit } from "@vueuse/shared";
4
3
  import RuiIcon from "../icons/RuiIcon.vue.js";
5
4
  const _hoisted_1 = ["disabled"];
6
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -18,30 +17,26 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
18
17
  variant: { default: "filled" },
19
18
  color: { default: "grey" },
20
19
  closeIcon: { default: "lu-circle-x" },
21
- bgColor: { default: void 0 },
22
- textColor: { default: void 0 },
20
+ bgColor: { default: () => void 0 },
21
+ textColor: { default: () => void 0 },
23
22
  contentClass: { default: "" }
24
23
  },
25
24
  emits: ["click:close", "click"],
26
25
  setup(__props, { emit: __emit }) {
27
- const props = __props;
28
26
  const emit = __emit;
29
- const { clickable, disabled, bgColor, textColor } = toRefs(props);
30
- function click(e) {
31
- if (get(logicOr(logicNot(clickable), disabled)))
32
- return;
33
- emit("click", e);
34
- }
35
27
  const style = computed(() => {
36
28
  const style2 = {};
37
- const bg = get(bgColor);
38
- const text = get(textColor);
39
- if (bg)
40
- style2.backgroundColor = bg;
41
- if (text)
42
- style2.color = text;
29
+ if (__props.bgColor)
30
+ style2.backgroundColor = __props.bgColor;
31
+ if (__props.textColor)
32
+ style2.color = __props.textColor;
43
33
  return style2;
44
34
  });
35
+ function click(e) {
36
+ if (!__props.clickable || __props.disabled)
37
+ return;
38
+ emit("click", e);
39
+ }
45
40
  return (_ctx, _cache) => {
46
41
  return openBlock(), createElementBlock("div", mergeProps({
47
42
  class: [
@@ -50,9 +45,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
50
45
  _ctx.$style[__props.size ?? ""],
51
46
  _ctx.$style[__props.variant ?? ""],
52
47
  {
53
- [_ctx.$style.disabled]: unref(disabled),
48
+ [_ctx.$style.disabled]: __props.disabled,
54
49
  [_ctx.$style.tile]: __props.tile,
55
- [_ctx.$style.readonly]: !unref(clickable)
50
+ [_ctx.$style.readonly]: !__props.clickable
56
51
  }
57
52
  ],
58
53
  style: unref(style),
@@ -75,7 +70,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
75
70
  __props.closeable ? (openBlock(), createElementBlock("button", {
76
71
  key: 1,
77
72
  class: normalizeClass(_ctx.$style.chip__close),
78
- disabled: unref(disabled),
73
+ disabled: __props.disabled,
79
74
  type: "button",
80
75
  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("click:close"), ["stop"]))
81
76
  }, [
@@ -1 +1 @@
1
- {"version":3,"file":"RuiChip.vue2.js","sources":["../../../src/components/chips/RuiChip.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { StyleValue } from 'vue';\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport { logicNot, logicOr } from '@vueuse/math';\nimport { objectOmit } from '@vueuse/shared';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\n\nexport interface Props {\n tile?: boolean;\n clickable?: boolean;\n closeable?: boolean;\n disabled?: boolean;\n size?: 'sm' | 'md';\n variant?: 'filled' | 'outlined';\n color?: 'grey' | ContextColorsType;\n closeIcon?: RuiIcons;\n bgColor?: string;\n textColor?: string;\n contentClass?: string;\n}\n\ndefineOptions({\n name: 'RuiChip',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n tile: false,\n size: 'md',\n color: 'grey',\n clickable: false,\n closeable: false,\n disabled: false,\n variant: 'filled',\n closeIcon: 'lu-circle-x',\n bgColor: undefined,\n textColor: undefined,\n contentClass: '',\n});\n\nconst emit = defineEmits<{\n (event: 'click:close'): void;\n (event: 'click', e: any): void;\n}>();\n\nconst { clickable, disabled, bgColor, textColor } = toRefs(props);\n\nfunction click(e: any) {\n if (get(logicOr(logicNot(clickable), disabled)))\n return;\n\n emit('click', e);\n}\n\nconst style = computed<Partial<StyleValue>>(() => {\n const style: Partial<StyleValue> = {};\n const bg = get(bgColor);\n const text = get(textColor);\n if (bg)\n style.backgroundColor = bg;\n\n if (text)\n style.color = text;\n\n return style;\n});\n</script>\n\n<template>\n <div\n :class=\"[\n $style.chip,\n $style[color ?? ''],\n $style[size ?? ''],\n $style[variant ?? ''],\n {\n [$style.disabled]: disabled,\n [$style.tile]: tile,\n [$style.readonly]: !clickable,\n },\n ]\"\n :style=\"style\"\n role=\"button\"\n tabindex=\"0\"\n v-bind=\"objectOmit($attrs, ['onClick'])\"\n @click=\"click($event)\"\n >\n <div\n v-if=\"$slots.prepend\"\n :class=\"$style.chip__prepend\"\n >\n <slot name=\"prepend\" />\n </div>\n <span :class=\"[$style.chip__label, contentClass]\">\n <slot />\n </span>\n <button\n v-if=\"closeable\"\n :class=\"$style.chip__close\"\n :disabled=\"disabled\"\n type=\"button\"\n @click.stop=\"emit('click:close')\"\n >\n <RuiIcon\n :class=\"$style.chip__close_icon\"\n :size=\"size === 'sm' ? 16 : 24\"\n :name=\"closeIcon\"\n />\n </button>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n@use '@/styles/colors.scss' as c;\n\n.chip {\n @apply inline-flex items-center justify-between rounded-full px-1.5 py-[0.25rem] transition-all cursor-default outline-none;\n @apply max-w-full truncate;\n\n &.tile {\n @apply rounded-sm;\n }\n\n &:not(.readonly):not(.disabled) {\n @apply hover:brightness-90 focus:brightness-75;\n }\n\n &.grey {\n @apply text-rui-text;\n\n &.filled {\n @apply bg-rui-grey-200;\n }\n\n &.outlined {\n @apply border border-black/[0.26] bg-transparent;\n\n &:not(.readonly):not(.disabled) {\n @apply hover:bg-black/[0.04] focus:bg-black/[0.12];\n }\n }\n }\n\n @each $color in c.$context-colors {\n &.#{$color} {\n &.filled {\n @apply text-rui-dark-text bg-rui-#{$color};\n }\n\n &.outlined {\n @apply border text-rui-#{$color} border-rui-#{$color}/50 bg-transparent;\n\n &:not(.readonly):not(.disabled) {\n @apply hover:bg-rui-#{$color}/[0.04] focus:bg-rui-#{$color}/[0.12];\n }\n }\n }\n }\n\n &__prepend {\n @apply rounded-full flex items-center justify-center pr-0 w-6 h-6;\n @apply text-[0.6rem] text-white bg-rui-grey-400 -ml-0.5 overflow-hidden;\n }\n\n &__label {\n @apply truncate px-[0.375rem] text-[0.8125rem];\n }\n\n &__close {\n @apply rounded-full flex items-center p-[0.13rem] pl-0;\n @apply inset-y-0 focus:outline-none -mr-1;\n\n &_icon {\n @apply opacity-50 hover:opacity-80 transition-opacity;\n }\n }\n\n &.md {\n @apply min-h-[2.26rem];\n }\n\n &.sm {\n @apply py-[0.19rem];\n\n &__prepend {\n @apply text-[0.5rem] p-[0.08rem] w-4 h-4 -ml-1;\n }\n\n &__label {\n @apply px-[0.3rem] text-[0.7rem];\n }\n\n &__close {\n @apply p-[0.08rem];\n @apply -mr-1.5;\n }\n }\n\n &.disabled,\n &.readonly {\n @apply cursor-default;\n\n &__close {\n @apply cursor-default;\n\n &_icon {\n @apply opacity-50;\n }\n }\n }\n\n &.disabled {\n @apply opacity-40;\n }\n}\n\n:global(.dark) {\n .chip {\n &:not(.readonly):not(.disabled) {\n @apply hover:brightness-110 focus:brightness-75;\n }\n\n &.grey {\n &.filled {\n @apply bg-rui-grey-800;\n }\n\n &.outlined {\n @apply border-white/[0.26];\n\n &:not(.readonly):not(.disabled) {\n @apply hover:bg-white/[0.04] focus:bg-white/[0.12];\n }\n }\n }\n\n @each $color in (warning, success, info) {\n &.#{$color} {\n &.filled {\n @apply text-rui-light-text;\n }\n }\n }\n\n &__prepend {\n @apply bg-rui-grey-700;\n }\n\n &__close {\n &_icon {\n @apply hover:text-rui-grey-300;\n }\n }\n }\n}\n</style>\n"],"names":["style","_openBlock","_createElementBlock","_mergeProps","$style","_unref","$attrs","$slots","_normalizeClass","_renderSlot","_createElementVNode","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,UAAM,QAAQ;AAcd,UAAM,OAAO;AAKb,UAAM,EAAE,WAAW,UAAU,SAAS,UAAA,IAAc,OAAO,KAAK;AAEhE,aAAS,MAAM,GAAQ;AACrB,UAAI,IAAI,QAAQ,SAAS,SAAS,GAAG,QAAQ,CAAC;AAC5C;AAEF,WAAK,SAAS,CAAC;AAAA,IACjB;AAEA,UAAM,QAAQ,SAA8B,MAAM;AAChD,YAAMA,SAA6B,CAAA;AACnC,YAAM,KAAK,IAAI,OAAO;AACtB,YAAM,OAAO,IAAI,SAAS;AAC1B,UAAI;AACFA,eAAM,kBAAkB;AAE1B,UAAI;AACFA,eAAM,QAAQ;AAEhB,aAAOA;AAAAA,IACT,CAAC;;AAIC,aAAAC,UAAA,GAAAC,mBAwCM,OAxCNC,WAwCM;AAAA,QAvCH,OAAK;AAAA,UAAUC,KAAAA,OAAO;AAAA,UAAYA,KAAAA,OAAO,QAAA,SAAK,EAAA;AAAA,UAAeA,KAAAA,OAAO,QAAA,QAAI,EAAA;AAAA,UAAeA,KAAAA,OAAO,QAAA,WAAO,EAAA;AAAA;aAA0BA,KAAAA,OAAO,QAAQ,GAAGC,MAAA,QAAA;AAAA,aAAmBD,KAAAA,OAAO,IAAI,GAAG,QAAA;AAAA,aAAeA,KAAAA,OAAO,QAAQ,GAAA,CAAIC,MAAA,SAAA;AAAA,UAAA;AAAA;QAWpN,OAAOA,MAAA,KAAA;AAAA,QACR,MAAK;AAAA,QACL,UAAS;AAAA,MAAA,GACDA,MAAA,UAAA,EAAWC,KAAAA,QAAM,CAAA,SAAA,CAAA,GAAA;AAAA,QACxB,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,MAAM,MAAM;AAAA,MAAA;QAGZC,KAAAA,OAAO,wBADfL,mBAKM,OAAA;AAAA;UAHH,OAAKM,eAAEJ,KAAAA,OAAO,aAAa;AAAA,QAAA;UAE5BK,WAAuB,KAAA,QAAA,SAAA;AAAA,QAAA;QAEzBC,mBAEO,QAAA;AAAA,UAFA,OAAKF,eAAA,CAAGJ,KAAAA,OAAO,aAAa,QAAA,YAAY,CAAA;AAAA,QAAA;UAC7CK,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;QAGF,QAAA,0BADRP,mBAYS,UAAA;AAAA;UAVN,OAAKM,eAAEJ,KAAAA,OAAO,WAAW;AAAA,UACzB,UAAUC,MAAA,QAAA;AAAA,UACX,MAAK;AAAA,UACJ,6DAAY,KAAI,aAAA,GAAA,CAAA,MAAA,CAAA;AAAA,QAAA;UAEjBM,YAIE,SAAA;AAAA,YAHC,OAAKH,eAAEJ,KAAAA,OAAO,gBAAgB;AAAA,YAC9B,MAAM,QAAA,SAAI,OAAA,KAAA;AAAA,YACV,MAAM,QAAA;AAAA,UAAA;;;;;;"}
1
+ {"version":3,"file":"RuiChip.vue2.js","sources":["../../../src/components/chips/RuiChip.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { StyleValue } from 'vue';\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport { objectOmit } from '@vueuse/shared';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\n\nexport interface Props {\n tile?: boolean;\n clickable?: boolean;\n closeable?: boolean;\n disabled?: boolean;\n size?: 'sm' | 'md';\n variant?: 'filled' | 'outlined';\n color?: 'grey' | ContextColorsType;\n closeIcon?: RuiIcons;\n bgColor?: string;\n textColor?: string;\n contentClass?: string;\n}\n\ndefineOptions({\n name: 'RuiChip',\n inheritAttrs: false,\n});\n\nconst {\n tile = false,\n size = 'md',\n color = 'grey',\n clickable = false,\n closeable = false,\n disabled = false,\n variant = 'filled',\n closeIcon = 'lu-circle-x',\n bgColor = undefined,\n textColor = undefined,\n contentClass = '',\n} = defineProps<Props>();\n\nconst emit = defineEmits<{\n 'click:close': [];\n 'click': [e: MouseEvent];\n}>();\n\ndefineSlots<{\n prepend?: () => any;\n default?: () => any;\n}>();\n\nconst style = computed<Partial<StyleValue>>(() => {\n const style: Partial<StyleValue> = {};\n if (bgColor)\n style.backgroundColor = bgColor;\n\n if (textColor)\n style.color = textColor;\n\n return style;\n});\n\nfunction click(e: MouseEvent): void {\n if (!clickable || disabled)\n return;\n\n emit('click', e);\n}\n</script>\n\n<template>\n <div\n :class=\"[\n $style.chip,\n $style[color ?? ''],\n $style[size ?? ''],\n $style[variant ?? ''],\n {\n [$style.disabled]: disabled,\n [$style.tile]: tile,\n [$style.readonly]: !clickable,\n },\n ]\"\n :style=\"style\"\n role=\"button\"\n tabindex=\"0\"\n v-bind=\"objectOmit($attrs, ['onClick'])\"\n @click=\"click($event)\"\n >\n <div\n v-if=\"$slots.prepend\"\n :class=\"$style.chip__prepend\"\n >\n <slot name=\"prepend\" />\n </div>\n <span :class=\"[$style.chip__label, contentClass]\">\n <slot />\n </span>\n <button\n v-if=\"closeable\"\n :class=\"$style.chip__close\"\n :disabled=\"disabled\"\n type=\"button\"\n @click.stop=\"emit('click:close')\"\n >\n <RuiIcon\n :class=\"$style.chip__close_icon\"\n :size=\"size === 'sm' ? 16 : 24\"\n :name=\"closeIcon\"\n />\n </button>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n@use '@/styles/colors.scss' as c;\n\n.chip {\n @apply inline-flex items-center justify-between rounded-full px-1.5 py-[0.25rem] transition-all cursor-default outline-none;\n @apply max-w-full truncate;\n\n &.tile {\n @apply rounded-sm;\n }\n\n &:not(.readonly):not(.disabled) {\n @apply hover:brightness-90 focus:brightness-75;\n }\n\n &.grey {\n @apply text-rui-text;\n\n &.filled {\n @apply bg-rui-grey-200;\n }\n\n &.outlined {\n @apply border border-black/[0.26] bg-transparent;\n\n &:not(.readonly):not(.disabled) {\n @apply hover:bg-black/[0.04] focus:bg-black/[0.12];\n }\n }\n }\n\n @each $color in c.$context-colors {\n &.#{$color} {\n &.filled {\n @apply text-rui-dark-text bg-rui-#{$color};\n }\n\n &.outlined {\n @apply border text-rui-#{$color} border-rui-#{$color}/50 bg-transparent;\n\n &:not(.readonly):not(.disabled) {\n @apply hover:bg-rui-#{$color}/[0.04] focus:bg-rui-#{$color}/[0.12];\n }\n }\n }\n }\n\n &__prepend {\n @apply rounded-full flex items-center justify-center pr-0 w-6 h-6;\n @apply text-[0.6rem] text-white bg-rui-grey-400 -ml-0.5 overflow-hidden;\n }\n\n &__label {\n @apply truncate px-[0.375rem] text-[0.8125rem];\n }\n\n &__close {\n @apply rounded-full flex items-center p-[0.13rem] pl-0;\n @apply inset-y-0 focus:outline-none -mr-1;\n\n &_icon {\n @apply opacity-50 hover:opacity-80 transition-opacity;\n }\n }\n\n &.md {\n @apply min-h-[2.26rem];\n }\n\n &.sm {\n @apply py-[0.19rem];\n\n &__prepend {\n @apply text-[0.5rem] p-[0.08rem] w-4 h-4 -ml-1;\n }\n\n &__label {\n @apply px-[0.3rem] text-[0.7rem];\n }\n\n &__close {\n @apply p-[0.08rem];\n @apply -mr-1.5;\n }\n }\n\n &.disabled,\n &.readonly {\n @apply cursor-default;\n\n &__close {\n @apply cursor-default;\n\n &_icon {\n @apply opacity-50;\n }\n }\n }\n\n &.disabled {\n @apply opacity-40;\n }\n}\n\n:global(.dark) {\n .chip {\n &:not(.readonly):not(.disabled) {\n @apply hover:brightness-110 focus:brightness-75;\n }\n\n &.grey {\n &.filled {\n @apply bg-rui-grey-800;\n }\n\n &.outlined {\n @apply border-white/[0.26];\n\n &:not(.readonly):not(.disabled) {\n @apply hover:bg-white/[0.04] focus:bg-white/[0.12];\n }\n }\n }\n\n @each $color in (warning, success, info) {\n &.#{$color} {\n &.filled {\n @apply text-rui-light-text;\n }\n }\n }\n\n &__prepend {\n @apply bg-rui-grey-700;\n }\n\n &__close {\n &_icon {\n @apply hover:text-rui-grey-300;\n }\n }\n }\n}\n</style>\n"],"names":["style","_openBlock","_createElementBlock","_mergeProps","$style","_unref","$attrs","$slots","_normalizeClass","_renderSlot","_createElementVNode","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,UAAM,OAAO;AAUb,UAAM,QAAQ,SAA8B,MAAM;AAChD,YAAMA,SAA6B,CAAA;AACnC,UAAI,QAAA;AACFA,eAAM,kBAAkB,QAAA;AAE1B,UAAI,QAAA;AACFA,eAAM,QAAQ,QAAA;AAEhB,aAAOA;AAAAA,IACT,CAAC;AAED,aAAS,MAAM,GAAqB;AAClC,UAAI,CAAC,QAAA,aAAa,QAAA;AAChB;AAEF,WAAK,SAAS,CAAC;AAAA,IACjB;;AAIE,aAAAC,UAAA,GAAAC,mBAwCM,OAxCNC,WAwCM;AAAA,QAvCH,OAAK;AAAA,UAAUC,KAAAA,OAAO;AAAA,UAAYA,KAAAA,OAAO,QAAA,SAAK,EAAA;AAAA,UAAeA,KAAAA,OAAO,QAAA,QAAI,EAAA;AAAA,UAAeA,KAAAA,OAAO,QAAA,WAAO,EAAA;AAAA;aAA0BA,KAAAA,OAAO,QAAQ,GAAG,QAAA;AAAA,aAAmBA,KAAAA,OAAO,IAAI,GAAG,QAAA;AAAA,aAAeA,KAAAA,OAAO,QAAQ,GAAA,CAAI,QAAA;AAAA,UAAA;AAAA;QAWpN,OAAOC,MAAA,KAAA;AAAA,QACR,MAAK;AAAA,QACL,UAAS;AAAA,MAAA,GACDA,MAAA,UAAA,EAAWC,KAAAA,QAAM,CAAA,SAAA,CAAA,GAAA;AAAA,QACxB,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,MAAM,MAAM;AAAA,MAAA;QAGZC,KAAAA,OAAO,wBADfL,mBAKM,OAAA;AAAA;UAHH,OAAKM,eAAEJ,KAAAA,OAAO,aAAa;AAAA,QAAA;UAE5BK,WAAuB,KAAA,QAAA,SAAA;AAAA,QAAA;QAEzBC,mBAEO,QAAA;AAAA,UAFA,OAAKF,eAAA,CAAGJ,KAAAA,OAAO,aAAa,QAAA,YAAY,CAAA;AAAA,QAAA;UAC7CK,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;QAGF,QAAA,0BADRP,mBAYS,UAAA;AAAA;UAVN,OAAKM,eAAEJ,KAAAA,OAAO,WAAW;AAAA,UACzB,UAAU,QAAA;AAAA,UACX,MAAK;AAAA,UACJ,6DAAY,KAAI,aAAA,GAAA,CAAA,MAAA,CAAA;AAAA,QAAA;UAEjBO,YAIE,SAAA;AAAA,YAHC,OAAKH,eAAEJ,KAAAA,OAAO,gBAAgB;AAAA,YAC9B,MAAM,QAAA,SAAI,OAAA,KAAA;AAAA,YACV,MAAM,QAAA;AAAA,UAAA;;;;;;"}
@@ -2,7 +2,7 @@ import { Color } from './utils.js';
2
2
  type __VLS_Props = {
3
3
  color: Color;
4
4
  };
5
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
5
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
6
  "update:board": (event: {
7
7
  saturation: number;
8
8
  brightness: number;