@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
@@ -1,28 +1,30 @@
1
- import { defineComponent, toRefs, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, createVNode, unref, isRef, createBlock, createCommentVNode, toDisplayString, withCtx } from "vue";
1
+ import { defineComponent, useModel, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, createVNode, unref, isRef, createBlock, createCommentVNode, toDisplayString, withCtx, mergeModels } from "vue";
2
2
  import RuiButton from "../buttons/button/RuiButton.vue.js";
3
3
  import RuiMenuSelect from "../forms/select/RuiMenuSelect.vue.js";
4
4
  import RuiIcon from "../icons/RuiIcon.vue.js";
5
5
  import { useTable } from "../../composables/defaults/table.js";
6
6
  import { formatInteger } from "../../utils/helpers.js";
7
- import { get } from "@vueuse/shared";
7
+ import { get, set } from "@vueuse/shared";
8
8
  const _sfc_main = /* @__PURE__ */ defineComponent({
9
9
  __name: "RuiTablePagination",
10
- props: {
11
- modelValue: {},
10
+ props: /* @__PURE__ */ mergeModels({
12
11
  dense: { type: Boolean, default: false },
13
12
  disablePerPage: { type: Boolean, default: false },
14
13
  loading: { type: Boolean, default: false }
15
- },
16
- emits: ["update:model-value"],
17
- setup(__props, { emit: __emit }) {
18
- const props = __props;
19
- const emit = __emit;
20
- const { modelValue } = toRefs(props);
14
+ }, {
15
+ "modelValue": { required: true },
16
+ "modelModifiers": {}
17
+ }),
18
+ emits: ["update:modelValue"],
19
+ setup(__props) {
20
+ const modelValue = useModel(__props, "modelValue");
21
21
  const tableDefaults = useTable();
22
- const limits = computed(() => (get(modelValue).limits ?? get(tableDefaults.limits)).map((limit) => ({ limit })));
22
+ const limits = computed(
23
+ () => (get(modelValue).limits ?? get(tableDefaults.limits)).map((limit) => ({ limit }))
24
+ );
23
25
  const currentLimit = computed({
24
26
  get: () => get(modelValue).limit,
25
- set: (limit) => emit("update:model-value", {
27
+ set: (limit) => set(modelValue, {
26
28
  ...get(modelValue),
27
29
  limit: Number(limit),
28
30
  page: 1
@@ -36,8 +38,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
36
38
  });
37
39
  const ranges = computed(() => {
38
40
  const segments = [];
39
- for (let page = 1; page <= get(pages); page++)
40
- segments.push({ page, text: pageRangeText(page) });
41
+ for (let page = 1; page <= get(pages); page++) segments.push({ page, text: pageRangeText(page) });
41
42
  return segments;
42
43
  });
43
44
  const indicatorText = computed(() => {
@@ -46,7 +47,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
46
47
  });
47
48
  const currentRange = computed({
48
49
  get: () => get(modelValue).page,
49
- set: (page) => emit("update:model-value", {
50
+ set: (page) => set(modelValue, {
50
51
  ...get(modelValue),
51
52
  page
52
53
  })
@@ -54,7 +55,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
54
55
  const hasPrev = computed(() => get(modelValue).page > 1);
55
56
  const hasNext = computed(() => get(pages) > get(modelValue).page);
56
57
  function goToPage(page) {
57
- emit("update:model-value", {
58
+ set(modelValue, {
58
59
  ...get(modelValue),
59
60
  page
60
61
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RuiTablePagination.vue2.js","sources":["../../../src/components/tables/RuiTablePagination.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiMenuSelect from '@/components/forms/select/RuiMenuSelect.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { useTable } from '@/composables/defaults/table';\nimport { formatInteger } from '@/utils/helpers';\n\nexport interface TablePaginationData {\n page: number;\n total: number;\n limit: number;\n limits?: number[];\n}\n\nexport interface Props {\n modelValue: TablePaginationData;\n dense?: boolean;\n disablePerPage?: boolean;\n loading?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n dense: false,\n loading: false,\n disablePerPage: false,\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: TablePaginationData): void;\n}>();\n\nconst { modelValue } = toRefs(props);\n\nconst tableDefaults = useTable();\n\nconst limits = computed(() => (get(modelValue).limits ?? get(tableDefaults.limits)).map(limit => ({ limit })));\n\nconst currentLimit = computed({\n get: () => get(modelValue).limit,\n set: limit =>\n emit('update:model-value', {\n ...get(modelValue),\n limit: Number(limit),\n page: 1,\n }),\n});\n\nconst pages = computed(() => {\n const { limit, total } = get(modelValue);\n if (!total)\n return 0;\n\n return Math.ceil(total / limit);\n});\n\nconst ranges = computed(() => {\n const segments = [];\n\n for (let page = 1; page <= get(pages); page++)\n segments.push({ page, text: pageRangeText(page) });\n\n return segments;\n});\n\nconst indicatorText = computed(() => {\n const { total } = get(modelValue);\n return `${!total ? '0 ' : ''}of ${formatInteger(total)}`;\n});\n\nconst currentRange = computed({\n get: () => get(modelValue).page,\n set: page =>\n emit('update:model-value', {\n ...get(modelValue),\n page,\n }),\n});\n\nconst hasPrev = computed(() => get(modelValue).page > 1);\nconst hasNext = computed(() => get(pages) > get(modelValue).page);\n\nfunction goToPage(page: number) {\n emit('update:model-value', {\n ...get(modelValue),\n page,\n });\n}\n\nfunction pageRangeText(page: number) {\n const { limit, total } = get(modelValue);\n return `${formatInteger((page - 1) * limit + 1)} - ${formatInteger(\n Math.min(page * limit, total),\n )}`;\n}\n\nfunction onNavigate(delta: number) {\n goToPage(get(modelValue).page + delta);\n}\n\nfunction onPrev() {\n if (!get(hasPrev))\n return;\n\n onNavigate(-1);\n}\n\nfunction onNext() {\n if (!get(hasNext))\n return;\n\n onNavigate(1);\n}\n\nfunction onFirst() {\n if (!get(hasPrev))\n return;\n\n goToPage(1);\n}\n\nfunction onLast() {\n if (!get(hasNext))\n return;\n\n goToPage(get(pages));\n}\n</script>\n\n<template>\n <div :class=\"[$style.wrapper, { [$style['wrapper-dense'] ?? '']: dense }]\">\n <div :class=\"$style.limit\">\n <span :class=\"$style.limit__text\">Rows per page:</span>\n <RuiMenuSelect\n v-model=\"currentLimit\"\n :options=\"limits\"\n :disabled=\"loading || disablePerPage\"\n label-class=\"!text-xs !min-h-8\"\n name=\"limit\"\n key-attr=\"limit\"\n text-attr=\"limit\"\n hide-details\n dense\n data-cy=\"table-pagination-limit\"\n />\n </div>\n <div :class=\"$style.ranges\">\n <span :class=\"$style.ranges__text\">Items #</span>\n <RuiMenuSelect\n v-if=\"ranges.length > 0\"\n v-model=\"currentRange\"\n :options=\"ranges\"\n :disabled=\"loading\"\n label-class=\"!text-xs !min-h-8\"\n name=\"ranges\"\n key-attr=\"page\"\n text-attr=\"text\"\n hide-details\n dense\n data-cy=\"table-pagination-ranges\"\n />\n <span :class=\"$style.indicator\">\n {{ indicatorText }}\n </span>\n </div>\n <div\n :class=\"$style.navigation\"\n data-cy=\"table-pagination-navigation\"\n >\n <RuiButton\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"!hasPrev || loading\"\n variant=\"text\"\n icon\n data-cy=\"table-pagination-first\"\n @click=\"onFirst()\"\n >\n <RuiIcon name=\"lu-chevrons-left\" />\n </RuiButton>\n <RuiButton\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"!hasPrev || loading\"\n variant=\"text\"\n icon\n data-cy=\"table-pagination-prev\"\n @click=\"onPrev()\"\n >\n <RuiIcon name=\"lu-chevron-left\" />\n </RuiButton>\n <RuiButton\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"!hasNext || loading\"\n variant=\"text\"\n icon\n data-cy=\"table-pagination-next\"\n @click=\"onNext()\"\n >\n <RuiIcon name=\"lu-chevron-right\" />\n </RuiButton>\n <RuiButton\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"!hasNext || loading\"\n variant=\"text\"\n icon\n data-cy=\"table-pagination-last\"\n @click=\"onLast()\"\n >\n <RuiIcon name=\"lu-chevrons-right\" />\n </RuiButton>\n </div>\n </div>\n</template>\n\n<style module lang=\"scss\">\n.wrapper {\n @apply relative flex flex-wrap items-center justify-end gap-x-4 gap-y-0;\n\n .limit {\n @apply flex items-center space-x-2 text-caption;\n\n &__text {\n @apply text-rui-text-secondary whitespace-nowrap py-3;\n }\n }\n\n .ranges {\n @apply flex items-center space-x-2 text-caption pr-2;\n\n &__text {\n @apply text-rui-text-secondary whitespace-nowrap py-3;\n }\n }\n\n .indicator {\n @apply text-rui-text text-caption whitespace-nowrap;\n }\n\n .navigation {\n @apply flex items-center;\n }\n\n &-dense {\n @apply gap-x-2;\n }\n}\n</style>\n"],"names":["_createElementBlock","$style","_createElementVNode","_normalizeClass","_createVNode","_unref","_createBlock"],"mappings":"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"}
1
+ {"version":3,"file":"RuiTablePagination.vue2.js","sources":["../../../src/components/tables/RuiTablePagination.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiMenuSelect from '@/components/forms/select/RuiMenuSelect.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { useTable } from '@/composables/defaults/table';\nimport { formatInteger } from '@/utils/helpers';\n\nexport interface TablePaginationData {\n page: number;\n total: number;\n limit: number;\n limits?: number[];\n}\n\nexport interface Props {\n dense?: boolean;\n disablePerPage?: boolean;\n loading?: boolean;\n}\n\nconst modelValue = defineModel<TablePaginationData>({ required: true });\n\nconst { dense = false, loading = false, disablePerPage = false } = defineProps<Props>();\n\nconst tableDefaults = useTable();\n\nconst limits = computed<{ limit: number }[]>(() =>\n (get(modelValue).limits ?? get(tableDefaults.limits)).map(limit => ({ limit })),\n);\n\nconst currentLimit = computed<number>({\n get: () => get(modelValue).limit,\n set: limit =>\n set(modelValue, {\n ...get(modelValue),\n limit: Number(limit),\n page: 1,\n }),\n});\n\nconst pages = computed<number>(() => {\n const { limit, total } = get(modelValue);\n if (!total)\n return 0;\n\n return Math.ceil(total / limit);\n});\n\nconst ranges = computed<{ page: number; text: string }[]>(() => {\n const segments = [];\n\n for (let page = 1; page <= get(pages); page++) segments.push({ page, text: pageRangeText(page) });\n\n return segments;\n});\n\nconst indicatorText = computed<string>(() => {\n const { total } = get(modelValue);\n return `${!total ? '0 ' : ''}of ${formatInteger(total)}`;\n});\n\nconst currentRange = computed<number>({\n get: () => get(modelValue).page,\n set: page =>\n set(modelValue, {\n ...get(modelValue),\n page,\n }),\n});\n\nconst hasPrev = computed<boolean>(() => get(modelValue).page > 1);\nconst hasNext = computed<boolean>(() => get(pages) > get(modelValue).page);\n\nfunction goToPage(page: number): void {\n set(modelValue, {\n ...get(modelValue),\n page,\n });\n}\n\nfunction pageRangeText(page: number): string {\n const { limit, total } = get(modelValue);\n return `${formatInteger((page - 1) * limit + 1)} - ${formatInteger(\n Math.min(page * limit, total),\n )}`;\n}\n\nfunction onNavigate(delta: number): void {\n goToPage(get(modelValue).page + delta);\n}\n\nfunction onPrev(): void {\n if (!get(hasPrev))\n return;\n\n onNavigate(-1);\n}\n\nfunction onNext(): void {\n if (!get(hasNext))\n return;\n\n onNavigate(1);\n}\n\nfunction onFirst(): void {\n if (!get(hasPrev))\n return;\n\n goToPage(1);\n}\n\nfunction onLast(): void {\n if (!get(hasNext))\n return;\n\n goToPage(get(pages));\n}\n</script>\n\n<template>\n <div :class=\"[$style.wrapper, { [$style['wrapper-dense'] ?? '']: dense }]\">\n <div :class=\"$style.limit\">\n <span :class=\"$style.limit__text\">Rows per page:</span>\n <RuiMenuSelect\n v-model=\"currentLimit\"\n :options=\"limits\"\n :disabled=\"loading || disablePerPage\"\n label-class=\"!text-xs !min-h-8\"\n name=\"limit\"\n key-attr=\"limit\"\n text-attr=\"limit\"\n hide-details\n dense\n data-cy=\"table-pagination-limit\"\n />\n </div>\n <div :class=\"$style.ranges\">\n <span :class=\"$style.ranges__text\">Items #</span>\n <RuiMenuSelect\n v-if=\"ranges.length > 0\"\n v-model=\"currentRange\"\n :options=\"ranges\"\n :disabled=\"loading\"\n label-class=\"!text-xs !min-h-8\"\n name=\"ranges\"\n key-attr=\"page\"\n text-attr=\"text\"\n hide-details\n dense\n data-cy=\"table-pagination-ranges\"\n />\n <span :class=\"$style.indicator\">\n {{ indicatorText }}\n </span>\n </div>\n <div\n :class=\"$style.navigation\"\n data-cy=\"table-pagination-navigation\"\n >\n <RuiButton\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"!hasPrev || loading\"\n variant=\"text\"\n icon\n data-cy=\"table-pagination-first\"\n @click=\"onFirst()\"\n >\n <RuiIcon name=\"lu-chevrons-left\" />\n </RuiButton>\n <RuiButton\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"!hasPrev || loading\"\n variant=\"text\"\n icon\n data-cy=\"table-pagination-prev\"\n @click=\"onPrev()\"\n >\n <RuiIcon name=\"lu-chevron-left\" />\n </RuiButton>\n <RuiButton\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"!hasNext || loading\"\n variant=\"text\"\n icon\n data-cy=\"table-pagination-next\"\n @click=\"onNext()\"\n >\n <RuiIcon name=\"lu-chevron-right\" />\n </RuiButton>\n <RuiButton\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"!hasNext || loading\"\n variant=\"text\"\n icon\n data-cy=\"table-pagination-last\"\n @click=\"onLast()\"\n >\n <RuiIcon name=\"lu-chevrons-right\" />\n </RuiButton>\n </div>\n </div>\n</template>\n\n<style module lang=\"scss\">\n.wrapper {\n @apply relative flex flex-wrap items-center justify-end gap-x-4 gap-y-0;\n\n .limit {\n @apply flex items-center space-x-2 text-caption;\n\n &__text {\n @apply text-rui-text-secondary whitespace-nowrap py-3;\n }\n }\n\n .ranges {\n @apply flex items-center space-x-2 text-caption pr-2;\n\n &__text {\n @apply text-rui-text-secondary whitespace-nowrap py-3;\n }\n }\n\n .indicator {\n @apply text-rui-text text-caption whitespace-nowrap;\n }\n\n .navigation {\n @apply flex items-center;\n }\n\n &-dense {\n @apply gap-x-2;\n }\n}\n</style>\n"],"names":["_useModel","_createElementBlock","$style","_createElementVNode","_normalizeClass","_createVNode","_unref","_createBlock"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { RouteLocationRaw } from 'vue-router';
2
1
  import type { ContextColorsType } from '../../../consts/colors.js';
2
+ import { type RouteLocationRaw } from 'vue-router';
3
3
  export interface Props {
4
4
  color?: ContextColorsType;
5
5
  disabled?: boolean;
@@ -21,26 +21,11 @@ type __VLS_Slots = {
21
21
  prepend?: (props?: object) => any;
22
22
  append?: (props?: object) => any;
23
23
  };
24
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
24
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
25
25
  click: (value: string | number) => any;
26
26
  }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
27
27
  onClick?: ((value: string | number) => any) | undefined;
28
- }>, {
29
- value: number | string;
30
- link: boolean;
31
- active: boolean;
32
- vertical: boolean;
33
- color: ContextColorsType;
34
- disabled: boolean;
35
- align: "start" | "center" | "end";
36
- target: string;
37
- to: RouteLocationRaw;
38
- exact: boolean;
39
- grow: boolean;
40
- activeClass: string;
41
- exactPath: boolean;
42
- indicatorPosition: "start" | "end";
43
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
44
29
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
45
30
  declare const _default: typeof __VLS_export;
46
31
  export default _default;
@@ -1,7 +1,6 @@
1
- import { defineComponent, useSlots, toRefs, useCssModule, computed, resolveComponent, unref, openBlock, createBlock, mergeProps, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps, createVNode } from "vue";
1
+ import { defineComponent, useSlots, useCssModule, computed, openBlock, createBlock, mergeProps, unref, createSlots, withCtx, renderSlot, createVNode, useId } from "vue";
2
+ import { RouterLink } from "vue-router";
2
3
  import RuiButton from "../../buttons/button/RuiButton.vue.js";
3
- import { generateId } from "../../../utils/generate-id.js";
4
- import { get } from "@vueuse/shared";
5
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
5
  ...{
7
6
  name: "RuiTab",
@@ -9,10 +8,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
9
8
  },
10
9
  __name: "RuiTab",
11
10
  props: {
12
- color: { default: void 0 },
11
+ color: {},
13
12
  disabled: { type: Boolean, default: false },
14
13
  grow: { type: Boolean, default: false },
15
- value: { default: generateId() },
14
+ value: { default: () => useId() },
16
15
  active: { type: Boolean, default: false },
17
16
  activeClass: { default: "" },
18
17
  link: { type: Boolean, default: false },
@@ -26,29 +25,26 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
26
25
  },
27
26
  emits: ["click"],
28
27
  setup(__props, { emit: __emit }) {
29
- const props = __props;
30
28
  const emit = __emit;
31
29
  const slots = useSlots();
32
- const { target, grow, active, activeClass, disabled, vertical, align, value, indicatorPosition } = toRefs(props);
33
30
  const css = useCssModule();
34
- const isSelf = computed(() => get(target) === "_self");
31
+ const isSelf = computed(() => __props.target === "_self");
35
32
  const tabClass = computed(() => [
36
33
  css.tab,
37
- css[`tab--${get(align)}`],
38
- css[`tab-indicator--${get(indicatorPosition)}`],
34
+ css[`tab--${__props.align}`],
35
+ css[`tab-indicator--${__props.indicatorPosition}`],
39
36
  {
40
- [css["tab--grow"] ?? ""]: get(grow),
41
- [`${css["tab--active"]} active-tab ${get(activeClass)}`]: get(active),
42
- [css["tab--disabled"] ?? ""]: get(disabled),
43
- [css["tab--vertical"] ?? ""]: get(vertical)
37
+ [css["tab--grow"] ?? ""]: __props.grow,
38
+ [`${css["tab--active"]} active-tab ${__props.activeClass}`]: __props.active,
39
+ [css["tab--disabled"] ?? ""]: __props.disabled,
40
+ [css["tab--vertical"] ?? ""]: __props.vertical
44
41
  }
45
42
  ]);
46
43
  function click() {
47
- emit("click", get(value));
44
+ emit("click", __props.value);
48
45
  }
49
46
  return (_ctx, _cache) => {
50
- const _component_RouterLink = resolveComponent("RouterLink");
51
- return unref(disabled) ? (openBlock(), createBlock(RuiButton, mergeProps({
47
+ return __props.disabled ? (openBlock(), createBlock(RuiButton, mergeProps({
52
48
  key: 0,
53
49
  variant: "text",
54
50
  disabled: "",
@@ -56,37 +52,59 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
56
52
  "hide-focus-indicator": "",
57
53
  tabindex: "-1",
58
54
  role: "tab",
59
- "aria-selected": unref(active)
60
- }, _ctx.$attrs), createSlots({ _: 2 }, [
61
- renderList(slots, (_, name) => {
62
- return {
63
- name,
64
- fn: withCtx((slotData) => [
65
- renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotData)))
66
- ])
67
- };
68
- })
55
+ "aria-selected": __props.active
56
+ }, _ctx.$attrs), createSlots({
57
+ default: withCtx(() => [
58
+ renderSlot(_ctx.$slots, "default")
59
+ ]),
60
+ _: 2
61
+ }, [
62
+ slots.prepend ? {
63
+ name: "prepend",
64
+ fn: withCtx(() => [
65
+ renderSlot(_ctx.$slots, "prepend")
66
+ ]),
67
+ key: "0"
68
+ } : void 0,
69
+ slots.append ? {
70
+ name: "append",
71
+ fn: withCtx(() => [
72
+ renderSlot(_ctx.$slots, "append")
73
+ ]),
74
+ key: "1"
75
+ } : void 0
69
76
  ]), 1040, ["class", "aria-selected"])) : !__props.link ? (openBlock(), createBlock(RuiButton, mergeProps({
70
77
  key: 1,
71
78
  class: unref(tabClass),
72
- color: unref(active) ? __props.color : void 0,
79
+ color: __props.active ? __props.color : void 0,
73
80
  role: "tab",
74
- "aria-selected": unref(active)
81
+ "aria-selected": __props.active
75
82
  }, _ctx.$attrs, {
76
83
  tabindex: "-1",
77
84
  "hide-focus-indicator": "",
78
85
  variant: "text",
79
86
  onClick: _cache[0] || (_cache[0] = ($event) => click())
80
- }), createSlots({ _: 2 }, [
81
- renderList(slots, (_, name) => {
82
- return {
83
- name,
84
- fn: withCtx((slotData) => [
85
- renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotData)))
86
- ])
87
- };
88
- })
89
- ]), 1040, ["class", "color", "aria-selected"])) : (openBlock(), createBlock(_component_RouterLink, {
87
+ }), createSlots({
88
+ default: withCtx(() => [
89
+ renderSlot(_ctx.$slots, "default")
90
+ ]),
91
+ _: 2
92
+ }, [
93
+ slots.prepend ? {
94
+ name: "prepend",
95
+ fn: withCtx(() => [
96
+ renderSlot(_ctx.$slots, "prepend")
97
+ ]),
98
+ key: "0"
99
+ } : void 0,
100
+ slots.append ? {
101
+ name: "append",
102
+ fn: withCtx(() => [
103
+ renderSlot(_ctx.$slots, "append")
104
+ ]),
105
+ key: "1"
106
+ } : void 0
107
+ ]), 1040, ["class", "color", "aria-selected"])) : (openBlock(), createBlock(unref(RouterLink), {
90
108
  key: 2,
91
109
  to: __props.to,
92
110
  exact: __props.exact,
@@ -101,11 +119,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
101
119
  [`${unref(css)["tab--active"]} active-tab-link`]: __props.exact ? isExactActive : isActive
102
120
  }
103
121
  ],
104
- color: unref(active) || (__props.exact ? isExactActive : isActive) ? __props.color : void 0,
122
+ color: __props.active || (__props.exact ? isExactActive : isActive) ? __props.color : void 0,
105
123
  href: unref(isSelf) ? void 0 : href,
106
- target: unref(target),
124
+ target: __props.target,
107
125
  role: "tab",
108
- "aria-selected": unref(active) || (__props.exact ? isExactActive : isActive),
126
+ "aria-selected": __props.active || (__props.exact ? isExactActive : isActive),
109
127
  "no-outline": "",
110
128
  tag: "a",
111
129
  "hide-focus-indicator": "",
@@ -116,15 +134,26 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
116
134
  click();
117
135
  unref(isSelf) ? navigate($event) : void 0;
118
136
  }
119
- }), createSlots({ _: 2 }, [
120
- renderList(slots, (_, name) => {
121
- return {
122
- name,
123
- fn: withCtx((slotData) => [
124
- renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotData)))
125
- ])
126
- };
127
- })
137
+ }), createSlots({
138
+ default: withCtx(() => [
139
+ renderSlot(_ctx.$slots, "default")
140
+ ]),
141
+ _: 2
142
+ }, [
143
+ slots.prepend ? {
144
+ name: "prepend",
145
+ fn: withCtx(() => [
146
+ renderSlot(_ctx.$slots, "prepend")
147
+ ]),
148
+ key: "0"
149
+ } : void 0,
150
+ slots.append ? {
151
+ name: "append",
152
+ fn: withCtx(() => [
153
+ renderSlot(_ctx.$slots, "append")
154
+ ]),
155
+ key: "1"
156
+ } : void 0
128
157
  ]), 1040, ["class", "color", "href", "target", "aria-selected", "onClick"])
129
158
  ]),
130
159
  _: 3
@@ -1 +1 @@
1
- {"version":3,"file":"RuiTab.vue2.js","sources":["../../../../src/components/tabs/tab/RuiTab.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { RouteLocationRaw } from 'vue-router';\nimport type { ContextColorsType } from '@/consts/colors';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { generateId } from '@/utils/generate-id';\n\nexport interface Props {\n color?: ContextColorsType;\n disabled?: boolean;\n grow?: boolean;\n value?: number | string;\n active?: boolean;\n activeClass?: string;\n link?: boolean;\n target?: string;\n to?: RouteLocationRaw;\n exact?: boolean;\n exactPath?: boolean;\n vertical?: boolean;\n align?: 'start' | 'center' | 'end';\n indicatorPosition?: 'start' | 'end';\n}\n\ndefineOptions({\n name: 'RuiTab',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n color: undefined,\n disabled: false,\n grow: false,\n value: generateId(),\n active: false,\n activeClass: '',\n link: false,\n to: '',\n target: '_self',\n exact: false,\n exactPath: false,\n vertical: false,\n align: 'center',\n indicatorPosition: 'end',\n});\n\nconst emit = defineEmits<{\n (e: 'click', value: string | number): void;\n}>();\n\nconst slots = defineSlots<{\n default?: (props?: object) => any;\n prepend?: (props?: object) => any;\n append?: (props?: object) => any;\n}>();\n\nconst { target, grow, active, activeClass, disabled, vertical, align, value, indicatorPosition }\n = toRefs(props);\n\nconst css = useCssModule();\n\nconst isSelf = computed(() => get(target) === '_self');\n\nconst tabClass = computed(() => [\n css.tab,\n css[`tab--${get(align)}`],\n css[`tab-indicator--${get(indicatorPosition)}`],\n {\n [css['tab--grow'] ?? '']: get(grow),\n [`${css['tab--active']} active-tab ${get(activeClass)}`]: get(active),\n [css['tab--disabled'] ?? '']: get(disabled),\n [css['tab--vertical'] ?? '']: get(vertical),\n },\n]);\n\nfunction click() {\n emit('click', get(value));\n}\n</script>\n\n<template>\n <RuiButton\n v-if=\"disabled\"\n variant=\"text\"\n disabled\n :class=\"tabClass\"\n hide-focus-indicator\n tabindex=\"-1\"\n role=\"tab\"\n :aria-selected=\"active\"\n v-bind=\"$attrs\"\n >\n <template\n v-for=\"(_, name) in slots\"\n #[name]=\"slotData\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiButton>\n <RuiButton\n v-else-if=\"!link\"\n :class=\"tabClass\"\n :color=\"active ? color : undefined\"\n role=\"tab\"\n :aria-selected=\"active\"\n v-bind=\"$attrs\"\n tabindex=\"-1\"\n hide-focus-indicator\n variant=\"text\"\n @click=\"click()\"\n >\n <template\n v-for=\"(_, name) in slots\"\n #[name]=\"slotData\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiButton>\n <RouterLink\n v-else\n #default=\"{ href, navigate, isActive, isExactActive }\"\n :to=\"to\"\n :exact=\"exact\"\n :exact-path=\"exactPath\"\n custom\n >\n <RuiButton\n :class=\"[\n ...tabClass,\n {\n [`${css['tab--active']} active-tab-link`]: exact\n ? isExactActive\n : isActive,\n },\n ]\"\n :color=\"active || (exact ? isExactActive : isActive) ? color : undefined\"\n :href=\"isSelf ? undefined : href\"\n :target=\"target\"\n role=\"tab\"\n :aria-selected=\"active || (exact ? isExactActive : isActive)\"\n no-outline\n tag=\"a\"\n hide-focus-indicator\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n variant=\"text\"\n @click=\"\n click();\n isSelf ? navigate($event) : undefined;\n \"\n >\n <template\n v-for=\"(_, name) in slots\"\n #[name]=\"slotData\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiButton>\n </RouterLink>\n</template>\n\n<style lang=\"scss\" module>\n.tab {\n @apply h-full min-w-[90px] max-w-[360px] flex items-center rounded-none cursor-pointer relative whitespace-nowrap shrink-0;\n @apply px-4 #{!important};\n\n &--vertical {\n @apply h-[2.625rem] w-full max-w-none;\n }\n\n &--grow {\n @apply grow max-w-none;\n }\n\n &--active {\n &:after {\n content: '';\n @apply absolute h-0 w-full bottom-0 left-0 border-b-2 border-current;\n }\n\n &.tab-indicator--start {\n &:after {\n @apply top-0 bottom-auto;\n }\n }\n\n &.tab--vertical {\n &:after {\n @apply h-full w-0 right-0 left-auto border-b-0 border-r-2;\n }\n\n &.tab-indicator--start {\n &:after {\n @apply left-0 right-auto;\n }\n }\n }\n }\n\n &--disabled {\n @apply cursor-not-allowed;\n }\n\n &--start {\n @apply justify-start text-left rtl:justify-end rtl:text-right;\n }\n\n &--center {\n @apply justify-center text-center;\n }\n\n &--end {\n @apply justify-end text-right rtl:justify-start rtl:text-left;\n }\n}\n</style>\n"],"names":["_useSlots","_unref","_openBlock","_createBlock","_mergeProps","$attrs","_createSlots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createVNode"],"mappings":"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"}
1
+ {"version":3,"file":"RuiTab.vue2.js","sources":["../../../../src/components/tabs/tab/RuiTab.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport { type RouteLocationRaw, RouterLink } from 'vue-router';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\n\nexport interface Props {\n color?: ContextColorsType;\n disabled?: boolean;\n grow?: boolean;\n value?: number | string;\n active?: boolean;\n activeClass?: string;\n link?: boolean;\n target?: string;\n to?: RouteLocationRaw;\n exact?: boolean;\n exactPath?: boolean;\n vertical?: boolean;\n align?: 'start' | 'center' | 'end';\n indicatorPosition?: 'start' | 'end';\n}\n\ndefineOptions({\n name: 'RuiTab',\n inheritAttrs: false,\n});\n\nconst {\n color,\n disabled = false,\n grow = false,\n value = useId(),\n active = false,\n activeClass = '',\n link = false,\n to = '',\n target = '_self',\n exact = false,\n exactPath = false,\n vertical = false,\n align = 'center',\n indicatorPosition = 'end',\n} = defineProps<Props>();\n\nconst emit = defineEmits<{\n click: [value: string | number];\n}>();\n\nconst slots = defineSlots<{\n default?: (props?: object) => any;\n prepend?: (props?: object) => any;\n append?: (props?: object) => any;\n}>();\n\nconst css = useCssModule();\n\nconst isSelf = computed<boolean>(() => target === '_self');\n\nconst tabClass = computed<(string | undefined | Record<string, string | boolean>)[]>(() => [\n css.tab,\n css[`tab--${align}`],\n css[`tab-indicator--${indicatorPosition}`],\n {\n [css['tab--grow'] ?? '']: grow,\n [`${css['tab--active']} active-tab ${activeClass}`]: active,\n [css['tab--disabled'] ?? '']: disabled,\n [css['tab--vertical'] ?? '']: vertical,\n },\n]);\n\nfunction click(): void {\n emit('click', value);\n}\n</script>\n\n<template>\n <RuiButton\n v-if=\"disabled\"\n variant=\"text\"\n disabled\n :class=\"tabClass\"\n hide-focus-indicator\n tabindex=\"-1\"\n role=\"tab\"\n :aria-selected=\"active\"\n v-bind=\"$attrs\"\n >\n <template\n v-if=\"slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <slot />\n <template\n v-if=\"slots.append\"\n #append\n >\n <slot name=\"append\" />\n </template>\n </RuiButton>\n <RuiButton\n v-else-if=\"!link\"\n :class=\"tabClass\"\n :color=\"active ? color : undefined\"\n role=\"tab\"\n :aria-selected=\"active\"\n v-bind=\"$attrs\"\n tabindex=\"-1\"\n hide-focus-indicator\n variant=\"text\"\n @click=\"click()\"\n >\n <template\n v-if=\"slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <slot />\n <template\n v-if=\"slots.append\"\n #append\n >\n <slot name=\"append\" />\n </template>\n </RuiButton>\n <RouterLink\n v-else\n #default=\"{ href, navigate, isActive, isExactActive }\"\n :to=\"to\"\n :exact=\"exact\"\n :exact-path=\"exactPath\"\n custom\n >\n <RuiButton\n :class=\"[\n ...tabClass,\n {\n [`${css['tab--active']} active-tab-link`]: exact ? isExactActive : isActive,\n },\n ]\"\n :color=\"active || (exact ? isExactActive : isActive) ? color : undefined\"\n :href=\"isSelf ? undefined : href\"\n :target=\"target\"\n role=\"tab\"\n :aria-selected=\"active || (exact ? isExactActive : isActive)\"\n no-outline\n tag=\"a\"\n hide-focus-indicator\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n variant=\"text\"\n @click=\"\n click();\n isSelf ? navigate($event) : undefined;\n \"\n >\n <template\n v-if=\"slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <slot />\n <template\n v-if=\"slots.append\"\n #append\n >\n <slot name=\"append\" />\n </template>\n </RuiButton>\n </RouterLink>\n</template>\n\n<style lang=\"scss\" module>\n.tab {\n @apply h-full min-w-[90px] max-w-[360px] flex items-center rounded-none cursor-pointer relative whitespace-nowrap shrink-0;\n @apply px-4 #{!important};\n\n &--vertical {\n @apply h-[2.625rem] w-full max-w-none;\n }\n\n &--grow {\n @apply grow max-w-none;\n }\n\n &--active {\n &:after {\n content: '';\n @apply absolute h-0 w-full bottom-0 left-0 border-b-2 border-current;\n }\n\n &.tab-indicator--start {\n &:after {\n @apply top-0 bottom-auto;\n }\n }\n\n &.tab--vertical {\n &:after {\n @apply h-full w-0 right-0 left-auto border-b-0 border-r-2;\n }\n\n &.tab-indicator--start {\n &:after {\n @apply left-0 right-auto;\n }\n }\n }\n }\n\n &--disabled {\n @apply cursor-not-allowed;\n }\n\n &--start {\n @apply justify-start text-left rtl:justify-end rtl:text-right;\n }\n\n &--center {\n @apply justify-center text-center;\n }\n\n &--end {\n @apply justify-end text-right rtl:justify-start rtl:text-left;\n }\n}\n</style>\n"],"names":["_useSlots","_openBlock","_createBlock","_mergeProps","_unref","$attrs","_createSlots","_renderSlot","_withCtx","_createVNode"],"mappings":"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"}
@@ -4,18 +4,10 @@ export interface Props {
4
4
  eager?: boolean;
5
5
  reverse?: boolean;
6
6
  }
7
- declare var __VLS_7: {}, __VLS_9: {};
8
- type __VLS_Slots = {} & {
9
- default?: (props: typeof __VLS_7) => any;
10
- } & {
11
- default?: (props: typeof __VLS_9) => any;
7
+ type __VLS_Slots = {
8
+ default?: () => any;
12
9
  };
13
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
14
- reverse: boolean;
15
- value: number | string;
16
- active: boolean;
17
- eager: boolean;
18
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ 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>;
19
11
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
20
12
  declare const _default: typeof __VLS_export;
21
13
  export default _default;
@@ -14,7 +14,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14
14
  __name: "RuiTabItem",
15
15
  props: {
16
16
  active: { type: Boolean, default: false },
17
- value: { default: void 0 },
17
+ value: {},
18
18
  eager: { type: Boolean, default: false },
19
19
  reverse: { type: Boolean, default: false }
20
20
  },
@@ -1 +1 @@
1
- {"version":3,"file":"RuiTabItem.vue2.js","sources":["../../../../src/components/tabs/tab-item/RuiTabItem.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nexport interface Props {\n active?: boolean;\n value?: number | string;\n eager?: boolean;\n reverse?: boolean;\n}\n\ndefineOptions({\n name: 'RuiTabItem',\n});\n\nwithDefaults(defineProps<Props>(), {\n value: undefined,\n eager: false,\n active: false,\n reverse: false,\n});\n</script>\n\n<template>\n <div\n role=\"tabpanel\"\n :class=\"[$style.tab, { 'active-tab-item': active }]\"\n >\n <Transition\n :enter-from-class=\"`opacity-0 ${reverse ? '-translate-x-8' : 'translate-x-8'}`\"\n :leave-to-class=\"`opacity-0 !h-0 overflow-hidden ${\n reverse ? 'translate-x-8' : '-translate-x-8'\n }`\"\n enter-active-class=\"w-full transform duration-300 transition\"\n enter-to-class=\"opacity-100 translate-x-0\"\n leave-active-class=\"w-full transform duration-300 transition !h-0 overflow-hidden\"\n leave-from-class=\"opacity-100 translate-x-0 !h-0 overflow-hidden\"\n >\n <div\n v-if=\"active\"\n class=\"w-full\"\n >\n <slot />\n </div>\n </Transition>\n <div\n v-if=\"eager && !active\"\n class=\"hidden\"\n >\n <slot />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.tab {\n @apply w-full;\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","$style","_createVNode","_Transition","_openBlock","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;0BAqBEA,mBA2BM,OAAA;AAAA,QA1BJ,MAAK;AAAA,QACJ,OAAKC,eAAA,CAAGC,KAAAA,OAAO,0BAA0B,QAAA,QAAM,CAAA;AAAA,MAAA;QAEhDC,YAgBaC,YAAA;AAAA,UAfV,iCAA+B,QAAA,UAAO,mBAAA,eAAA;AAAA,UACtC,kBAAc,kCAA6C,QAAA,UAAO,kBAAA;UAGnE,sBAAmB;AAAA,UACnB,kBAAe;AAAA,UACf,sBAAmB;AAAA,UACnB,oBAAiB;AAAA,QAAA;2BAEjB,MAKM;AAAA,YAJE,QAAA,UADRC,UAAA,GAAAL,mBAKM,OALN,YAKM;AAAA,cADJM,WAAQ,KAAA,QAAA,SAAA;AAAA,YAAA;;;;QAIJ,QAAA,UAAU,QAAA,UADlBD,aAAAL,mBAKM,OALN,YAKM;AAAA,UADJM,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;"}
1
+ {"version":3,"file":"RuiTabItem.vue2.js","sources":["../../../../src/components/tabs/tab-item/RuiTabItem.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nexport interface Props {\n active?: boolean;\n value?: number | string;\n eager?: boolean;\n reverse?: boolean;\n}\n\ndefineOptions({\n name: 'RuiTabItem',\n});\n\nconst { active = false, eager = false, reverse = false } = defineProps<Props>();\n\ndefineSlots<{\n default?: () => any;\n}>();\n</script>\n\n<template>\n <div\n role=\"tabpanel\"\n :class=\"[$style.tab, { 'active-tab-item': active }]\"\n >\n <Transition\n :enter-from-class=\"`opacity-0 ${reverse ? '-translate-x-8' : 'translate-x-8'}`\"\n :leave-to-class=\"`opacity-0 !h-0 overflow-hidden ${\n reverse ? 'translate-x-8' : '-translate-x-8'\n }`\"\n enter-active-class=\"w-full transform duration-300 transition\"\n enter-to-class=\"opacity-100 translate-x-0\"\n leave-active-class=\"w-full transform duration-300 transition !h-0 overflow-hidden\"\n leave-from-class=\"opacity-100 translate-x-0 !h-0 overflow-hidden\"\n >\n <div\n v-if=\"active\"\n class=\"w-full\"\n >\n <slot />\n </div>\n </Transition>\n <div\n v-if=\"eager && !active\"\n class=\"hidden\"\n >\n <slot />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.tab {\n @apply w-full;\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","$style","_createVNode","_Transition","_openBlock","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;0BAoBEA,mBA2BM,OAAA;AAAA,QA1BJ,MAAK;AAAA,QACJ,OAAKC,eAAA,CAAGC,KAAAA,OAAO,0BAA0B,QAAA,QAAM,CAAA;AAAA,MAAA;QAEhDC,YAgBaC,YAAA;AAAA,UAfV,iCAA+B,QAAA,UAAO,mBAAA,eAAA;AAAA,UACtC,kBAAc,kCAA6C,QAAA,UAAO,kBAAA;UAGnE,sBAAmB;AAAA,UACnB,kBAAe;AAAA,UACf,sBAAmB;AAAA,UACnB,oBAAiB;AAAA,QAAA;2BAEjB,MAKM;AAAA,YAJE,QAAA,UADRC,UAAA,GAAAL,mBAKM,OALN,YAKM;AAAA,cADJM,WAAQ,KAAA,QAAA,SAAA;AAAA,YAAA;;;;QAIJ,QAAA,UAAU,QAAA,UADlBD,aAAAL,mBAKM,OALN,YAKM;AAAA,UADJM,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;"}
@@ -1,9 +1,6 @@
1
- export interface Props<T> {
2
- modelValue?: T;
3
- }
4
1
  declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
5
2
  props: import("vue").PublicProps & __VLS_PrettifyLocal<{
6
- modelValue?: Props<T>["modelValue"];
3
+ modelValue?: T;
7
4
  } & {
8
5
  "onUpdate:modelValue"?: ((value: T | undefined) => any) | undefined;
9
6
  }> & (typeof globalThis extends {
@@ -1,6 +1,6 @@
1
- import { defineComponent, useCssVars, unref, useModel, useSlots, ref, watch, nextTick, computed, openBlock, createElementBlock, mergeProps, createElementVNode, Fragment, renderList, createBlock, resolveDynamicComponent, isVNode } from "vue";
2
- import { set, get } from "@vueuse/shared";
1
+ import { defineComponent, useCssVars, unref, useModel, useSlots, ref, useTemplateRef, computed, Fragment, isVNode, watch, nextTick, openBlock, createElementBlock, mergeProps, createElementVNode, renderList, createBlock, resolveDynamicComponent } from "vue";
3
2
  import { useElementSize } from "@vueuse/core";
3
+ import { get, set } from "@vueuse/shared";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  ...{
6
6
  name: "RuiTabItems",
@@ -14,25 +14,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14
14
  emits: ["update:modelValue"],
15
15
  setup(__props) {
16
16
  useCssVars((_ctx) => ({
17
- "v1ef23b00": unref(innerHeight)
17
+ "e2f311d6": unref(innerHeight)
18
18
  }));
19
19
  const modelValue = useModel(__props, "modelValue");
20
20
  const slots = useSlots();
21
21
  const reverse = ref(false);
22
22
  const currIndex = ref(-1);
23
23
  const activeIndex = ref(-1);
24
- watch(currIndex, (index) => {
25
- nextTick(() => {
26
- set(activeIndex, index);
27
- });
28
- });
29
- function getChildrenTabs(children2) {
30
- return children2.flatMap((item) => {
31
- if (item.type === Fragment && Array.isArray(item.children) && item.children.length > 0)
32
- return getChildrenTabs(item.children.filter(isVNode));
33
- return [item];
34
- }).flat();
35
- }
24
+ const wrapper = useTemplateRef("wrapper");
25
+ const inner = useTemplateRef("inner");
26
+ const { height: innerHeight } = useElementSize(inner);
36
27
  const children = computed(() => {
37
28
  const slotContent = slots.default?.() ?? [];
38
29
  const tabs = getChildrenTabs(slotContent);
@@ -59,9 +50,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
59
50
  set(currIndex, -1);
60
51
  return children2;
61
52
  });
62
- const wrapper = ref();
63
- const inner = ref();
64
- const { height: innerHeight } = useElementSize(inner);
53
+ function getChildrenTabs(children2) {
54
+ return children2.flatMap((item) => {
55
+ if (item.type === Fragment && Array.isArray(item.children) && item.children.length > 0)
56
+ return getChildrenTabs(item.children.filter(isVNode));
57
+ return [item];
58
+ }).flat();
59
+ }
60
+ watch(currIndex, (index) => {
61
+ nextTick(() => {
62
+ set(activeIndex, index);
63
+ });
64
+ });
65
65
  return (_ctx, _cache) => {
66
66
  return openBlock(), createElementBlock("div", mergeProps({
67
67
  ref_key: "wrapper",
@@ -1 +1 @@
1
- {"version":3,"file":"RuiTabItems.vue2.js","sources":["../../../../src/components/tabs/tab-items/RuiTabItems.vue"],"sourcesContent":["<script lang=\"ts\" setup generic='T extends string | number'>\nimport { Fragment, isVNode } from 'vue';\n\nexport interface Props<T> {\n modelValue?: T;\n}\n\ndefineOptions({\n name: 'RuiTabItems',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<Props<T>['modelValue']>();\n\nconst slots = useSlots();\nconst reverse = ref<boolean>(false);\nconst currIndex = ref<number>(-1);\nconst activeIndex = ref<number>(-1);\n\nwatch(currIndex, (index) => {\n nextTick(() => {\n set(activeIndex, index);\n });\n});\n\n// When using dynamic content with v-for the slot content can contain fragment,\n// Go through the fragment and always return RuiTabItem only\nfunction getChildrenTabs(children: VNode[]): VNode[] {\n return children.flatMap((item) => {\n if (item.type === Fragment && Array.isArray(item.children) && item.children.length > 0)\n return getChildrenTabs(item.children.filter(isVNode));\n\n return [item];\n }).flat();\n}\n\nconst children = computed(() => {\n const slotContent = slots.default?.() ?? [];\n\n const tabs = getChildrenTabs(slotContent);\n\n let anyActive = false;\n const children = tabs.map((tab, index) => {\n const value = tab.props?.value ?? index;\n const active = get(modelValue) === value;\n if (active) {\n anyActive = true;\n if (index !== get(currIndex)) {\n set(reverse, index < get(currIndex));\n set(currIndex, index);\n }\n }\n\n return {\n ...tab,\n props: {\n value,\n ...tab.props,\n },\n };\n });\n\n if (!anyActive)\n set(currIndex, -1);\n\n return children;\n});\n\nconst wrapper = ref<HTMLDivElement>();\nconst inner = ref<HTMLDivElement>();\n\nconst { height: innerHeight } = useElementSize(inner);\n</script>\n\n<template>\n <div\n ref=\"wrapper\"\n :class=\"$style.tabs\"\n v-bind=\"$attrs\"\n >\n <div ref=\"inner\">\n <Component\n :is=\"child\"\n v-for=\"(child, i) in children\"\n :key=\"i\"\n :reverse=\"reverse\"\n :active=\"i === activeIndex\"\n />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.tabs {\n @apply grow transition-all overflow-hidden;\n height: calc(v-bind(innerHeight) * 1px);\n}\n</style>\n"],"names":["_useModel","children","_openBlock","_createElementBlock","_mergeProps","$style","$attrs","_createElementVNode","_Fragment","_renderList","_unref","_createBlock","_resolveDynamicComponent"],"mappings":";;;;;;;;;;;;;;;;;;AAYA,UAAM,aAAaA,8BAAoC;AAEvD,UAAM,QAAQ,SAAA;AACd,UAAM,UAAU,IAAa,KAAK;AAClC,UAAM,YAAY,IAAY,EAAE;AAChC,UAAM,cAAc,IAAY,EAAE;AAElC,UAAM,WAAW,CAAC,UAAU;AAC1B,eAAS,MAAM;AACb,YAAI,aAAa,KAAK;AAAA,MACxB,CAAC;AAAA,IACH,CAAC;AAID,aAAS,gBAAgBC,WAA4B;AACnD,aAAOA,UAAS,QAAQ,CAAC,SAAS;AAChC,YAAI,KAAK,SAAS,YAAY,MAAM,QAAQ,KAAK,QAAQ,KAAK,KAAK,SAAS,SAAS;AACnF,iBAAO,gBAAgB,KAAK,SAAS,OAAO,OAAO,CAAC;AAEtD,eAAO,CAAC,IAAI;AAAA,MACd,CAAC,EAAE,KAAA;AAAA,IACL;AAEA,UAAM,WAAW,SAAS,MAAM;AAC9B,YAAM,cAAc,MAAM,UAAA,KAAe,CAAA;AAEzC,YAAM,OAAO,gBAAgB,WAAW;AAExC,UAAI,YAAY;AAChB,YAAMA,YAAW,KAAK,IAAI,CAAC,KAAK,UAAU;AACxC,cAAM,QAAQ,IAAI,OAAO,SAAS;AAClC,cAAM,SAAS,IAAI,UAAU,MAAM;AACnC,YAAI,QAAQ;AACV,sBAAY;AACZ,cAAI,UAAU,IAAI,SAAS,GAAG;AAC5B,gBAAI,SAAS,QAAQ,IAAI,SAAS,CAAC;AACnC,gBAAI,WAAW,KAAK;AAAA,UACtB;AAAA,QACF;AAEA,eAAO;AAAA,UACL,GAAG;AAAA,UACH,OAAO;AAAA,YACL;AAAA,YACA,GAAG,IAAI;AAAA,UAAA;AAAA,QACT;AAAA,MAEJ,CAAC;AAED,UAAI,CAAC;AACH,YAAI,WAAW,EAAE;AAEnB,aAAOA;AAAAA,IACT,CAAC;AAED,UAAM,UAAU,IAAA;AAChB,UAAM,QAAQ,IAAA;AAEd,UAAM,EAAE,QAAQ,gBAAgB,eAAe,KAAK;;AAIlD,aAAAC,UAAA,GAAAC,mBAcM,OAdNC,WAcM;AAAA,iBAbA;AAAA,QAAJ,KAAI;AAAA,QACH,OAAOC,KAAAA,OAAO;AAAA,MAAA,GACPC,KAAAA,MAAM,GAAA;AAAA,QAEdC,mBAQM,OAAA;AAAA,mBARG;AAAA,UAAJ,KAAI;AAAA,QAAA;WACPL,UAAA,IAAA,GAAAC,mBAMEK,UAAA,MAAAC,WAJqBC,MAAA,QAAA,GAAQ,CAArB,OAAO,MAAC;AAFlB,mBAAAR,UAAA,GAAAS,YAMEC,wBALK,KAAK,GAAA;AAAA,cAET,KAAK;AAAA,cACL,SAASF,MAAA,OAAA;AAAA,cACT,QAAQ,MAAMA,MAAA,WAAA;AAAA,YAAA;;;;;;;"}
1
+ {"version":3,"file":"RuiTabItems.vue2.js","sources":["../../../../src/components/tabs/tab-items/RuiTabItems.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"T extends string | number\">\nimport { Fragment, isVNode } from 'vue';\n\ndefineOptions({\n name: 'RuiTabItems',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<T>();\n\nconst slots = useSlots();\n\nconst reverse = ref<boolean>(false);\nconst currIndex = ref<number>(-1);\nconst activeIndex = ref<number>(-1);\nconst wrapper = useTemplateRef<HTMLDivElement>('wrapper');\nconst inner = useTemplateRef<HTMLDivElement>('inner');\n\nconst { height: innerHeight } = useElementSize(inner);\n\nconst children = computed<VNode[]>(() => {\n const slotContent = slots.default?.() ?? [];\n\n const tabs = getChildrenTabs(slotContent);\n\n let anyActive = false;\n const children = tabs.map((tab, index) => {\n const value = tab.props?.value ?? index;\n const active = get(modelValue) === value;\n if (active) {\n anyActive = true;\n if (index !== get(currIndex)) {\n set(reverse, index < get(currIndex));\n set(currIndex, index);\n }\n }\n\n return {\n ...tab,\n props: {\n value,\n ...tab.props,\n },\n };\n });\n\n if (!anyActive)\n set(currIndex, -1);\n\n return children;\n});\n\n// When using dynamic content with v-for the slot content can contain fragment,\n// Go through the fragment and always return RuiTabItem only\nfunction getChildrenTabs(children: VNode[]): VNode[] {\n return children\n .flatMap((item) => {\n if (item.type === Fragment && Array.isArray(item.children) && item.children.length > 0)\n return getChildrenTabs(item.children.filter(isVNode));\n\n return [item];\n })\n .flat();\n}\n\nwatch(currIndex, (index) => {\n nextTick(() => {\n set(activeIndex, index);\n });\n});\n</script>\n\n<template>\n <div\n ref=\"wrapper\"\n :class=\"$style.tabs\"\n v-bind=\"$attrs\"\n >\n <div ref=\"inner\">\n <Component\n :is=\"child\"\n v-for=\"(child, i) in children\"\n :key=\"i\"\n :reverse=\"reverse\"\n :active=\"i === activeIndex\"\n />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.tabs {\n @apply grow transition-all overflow-hidden;\n height: calc(v-bind(innerHeight) * 1px);\n}\n</style>\n"],"names":["_useModel","children","_openBlock","_createElementBlock","_mergeProps","$style","$attrs","_createElementVNode","_Fragment","_renderList","_unref","_createBlock","_resolveDynamicComponent"],"mappings":";;;;;;;;;;;;;;;;;;AAQA,UAAM,aAAaA,SAAc,SAAA,YAAC;AAElC,UAAM,QAAQ,SAAA;AAEd,UAAM,UAAU,IAAa,KAAK;AAClC,UAAM,YAAY,IAAY,EAAE;AAChC,UAAM,cAAc,IAAY,EAAE;AAClC,UAAM,UAAU,eAA+B,SAAS;AACxD,UAAM,QAAQ,eAA+B,OAAO;AAEpD,UAAM,EAAE,QAAQ,gBAAgB,eAAe,KAAK;AAEpD,UAAM,WAAW,SAAkB,MAAM;AACvC,YAAM,cAAc,MAAM,UAAA,KAAe,CAAA;AAEzC,YAAM,OAAO,gBAAgB,WAAW;AAExC,UAAI,YAAY;AAChB,YAAMC,YAAW,KAAK,IAAI,CAAC,KAAK,UAAU;AACxC,cAAM,QAAQ,IAAI,OAAO,SAAS;AAClC,cAAM,SAAS,IAAI,UAAU,MAAM;AACnC,YAAI,QAAQ;AACV,sBAAY;AACZ,cAAI,UAAU,IAAI,SAAS,GAAG;AAC5B,gBAAI,SAAS,QAAQ,IAAI,SAAS,CAAC;AACnC,gBAAI,WAAW,KAAK;AAAA,UACtB;AAAA,QACF;AAEA,eAAO;AAAA,UACL,GAAG;AAAA,UACH,OAAO;AAAA,YACL;AAAA,YACA,GAAG,IAAI;AAAA,UAAA;AAAA,QACT;AAAA,MAEJ,CAAC;AAED,UAAI,CAAC;AACH,YAAI,WAAW,EAAE;AAEnB,aAAOA;AAAAA,IACT,CAAC;AAID,aAAS,gBAAgBA,WAA4B;AACnD,aAAOA,UACJ,QAAQ,CAAC,SAAS;AACjB,YAAI,KAAK,SAAS,YAAY,MAAM,QAAQ,KAAK,QAAQ,KAAK,KAAK,SAAS,SAAS;AACnF,iBAAO,gBAAgB,KAAK,SAAS,OAAO,OAAO,CAAC;AAEtD,eAAO,CAAC,IAAI;AAAA,MACd,CAAC,EACA,KAAA;AAAA,IACL;AAEA,UAAM,WAAW,CAAC,UAAU;AAC1B,eAAS,MAAM;AACb,YAAI,aAAa,KAAK;AAAA,MACxB,CAAC;AAAA,IACH,CAAC;;AAIC,aAAAC,UAAA,GAAAC,mBAcM,OAdNC,WAcM;AAAA,iBAbA;AAAA,QAAJ,KAAI;AAAA,QACH,OAAOC,KAAAA,OAAO;AAAA,MAAA,GACPC,KAAAA,MAAM,GAAA;AAAA,QAEdC,mBAQM,OAAA;AAAA,mBARG;AAAA,UAAJ,KAAI;AAAA,QAAA;WACPL,UAAA,IAAA,GAAAC,mBAMEK,UAAA,MAAAC,WAJqBC,MAAA,QAAA,GAAQ,CAArB,OAAO,MAAC;AAFlB,mBAAAR,UAAA,GAAAS,YAMEC,wBALK,KAAK,GAAA;AAAA,cAET,KAAK;AAAA,cACL,SAASF,MAAA,OAAA;AAAA,cACT,QAAQ,MAAMA,MAAA,WAAA;AAAA,YAAA;;;;;;;"}
@@ -4,22 +4,18 @@ export interface Props {
4
4
  vertical?: boolean;
5
5
  disabled?: boolean;
6
6
  grow?: boolean;
7
- modelValue?: number | string;
8
7
  align?: 'start' | 'center' | 'end';
9
8
  indicatorPosition?: 'start' | 'end';
10
9
  }
11
- declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
12
- "update:modelValue": (modelValue: string | number) => any;
13
- }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
14
- "onUpdate:modelValue"?: ((modelValue: string | number) => any) | undefined;
15
- }>, {
16
- vertical: boolean;
17
- color: ContextColorsType;
18
- disabled: boolean;
19
- modelValue: number | string;
20
- align: "start" | "center" | "end";
21
- grow: boolean;
22
- indicatorPosition: "start" | "end";
23
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ type __VLS_Props = Props;
11
+ type __VLS_ModelProps = {
12
+ modelValue?: number | string;
13
+ };
14
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
15
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
+ "update:modelValue": (value: string | number | undefined) => any;
17
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
18
+ "onUpdate:modelValue"?: ((value: string | number | undefined) => any) | undefined;
19
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
20
  declare const _default: typeof __VLS_export;
25
21
  export default _default;