@rotki/ui-library 2.12.2 → 2.13.0

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,4 +1,4 @@
1
- import { defineComponent, useSlots, toRefs, computed, ref, watch, onMounted, openBlock, createElementBlock, normalizeClass, unref, createBlock, isRef, createCommentVNode, createElementVNode, createVNode, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps, Fragment, toDisplayString, createTextVNode, Transition } from "vue";
1
+ import { defineComponent, useModel, useSlots, computed, useTemplateRef, toRef, watch, onMounted, openBlock, createElementBlock, normalizeClass, unref, createBlock, isRef, createCommentVNode, createElementVNode, createVNode, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps, Fragment, toDisplayString, createTextVNode, Transition, mergeModels } from "vue";
2
2
  import RuiButton from "../buttons/button/RuiButton.vue.js";
3
3
  import RuiCheckbox from "../forms/checkbox/RuiCheckbox.vue.js";
4
4
  import RuiIcon from "../icons/RuiIcon.vue.js";
@@ -11,10 +11,15 @@ import noDataPlaceholder from "./table_no_data_placeholder.svg.js";
11
11
  import noDataPlaceholderDark from "./table_no_data_placeholder_dark.svg.js";
12
12
  import { useTable } from "../../composables/defaults/table.js";
13
13
  import { useStickyTableHeader } from "../../composables/sticky-header.js";
14
+ import { useTableColumns } from "../../composables/tables/data-table/columns.js";
15
+ import { useTableExpansion } from "../../composables/tables/data-table/expansion.js";
16
+ import { useTableGrouping } from "../../composables/tables/data-table/grouping.js";
17
+ import { useTablePagination } from "../../composables/tables/data-table/pagination.js";
18
+ import { useTableSelection } from "../../composables/tables/data-table/selection.js";
19
+ import { useTableSort } from "../../composables/tables/data-table/sort.js";
20
+ import { isRow } from "../../composables/tables/data-table/types.js";
14
21
  import { useRotkiTheme } from "../../composables/theme.js";
15
- import { assert } from "../../utils/assert.js";
16
22
  import { get, set } from "@vueuse/shared";
17
- import { watchImmediate, isDefined } from "@vueuse/core";
18
23
  const _hoisted_1 = ["aria-busy"];
19
24
  const _hoisted_2 = ["colspan"];
20
25
  const _hoisted_3 = { class: "flex items-center gap-2" };
@@ -30,17 +35,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
30
35
  name: "RuiDataTable"
31
36
  },
32
37
  __name: "RuiDataTable",
33
- props: {
38
+ props: /* @__PURE__ */ mergeModels({
34
39
  rows: {},
35
40
  rowAttr: {},
36
- modelValue: { default: void 0 },
37
41
  search: { default: "" },
38
42
  itemsPerPage: { default: 10 },
39
- pagination: { default: void 0 },
40
- paginationModifiers: { default: void 0 },
41
- sort: { default: void 0 },
42
- sortModifiers: { default: void 0 },
43
- cols: { default: void 0 },
43
+ cols: {},
44
44
  columnAttr: { default: "label" },
45
45
  dense: { type: Boolean, default: false },
46
46
  outlined: { type: Boolean, default: false },
@@ -51,579 +51,162 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
51
51
  hideDefaultHeader: { type: Boolean, default: false },
52
52
  hideDefaultFooter: { type: Boolean, default: false },
53
53
  rounded: { default: "md" },
54
- expanded: { default: void 0 },
55
54
  singleExpand: { type: Boolean, default: false },
56
55
  stickyHeader: { type: Boolean, default: false },
57
- stickyOffset: { default: void 0 },
58
- globalItemsPerPage: { type: Boolean, default: void 0 },
59
- group: { default: void 0 },
56
+ stickyOffset: {},
57
+ globalItemsPerPage: { type: Boolean, default: () => void 0 },
60
58
  groupExpandButtonPosition: { default: "start" },
61
- collapsed: { default: void 0 },
62
- disabledRows: { default: void 0 },
59
+ disabledRows: {},
63
60
  multiPageSelect: { type: Boolean, default: false },
64
- scroller: { default: void 0 },
65
61
  itemClass: { type: [Function, String], default: "" }
66
- },
67
- emits: ["update:model-value", "update:expanded", "update:pagination", "update:sort", "update:options", "update:group", "update:collapsed", "copy:group"],
62
+ }, {
63
+ "modelValue": {},
64
+ "modelModifiers": {},
65
+ "expanded": {},
66
+ "expandedModifiers": {},
67
+ "pagination": {},
68
+ "paginationModifiers": {},
69
+ "sort": {},
70
+ "sortModifiers": {},
71
+ "group": {},
72
+ "groupModifiers": {},
73
+ "collapsed": {},
74
+ "collapsedModifiers": {}
75
+ }),
76
+ emits: /* @__PURE__ */ mergeModels(["update:options", "copy:group"], ["update:modelValue", "update:expanded", "update:pagination", "update:sort", "update:group", "update:collapsed"]),
68
77
  setup(__props, { emit: __emit }) {
69
- const props = __props;
78
+ const selectedData = useModel(__props, "modelValue");
79
+ const expanded = useModel(__props, "expanded");
80
+ const [pagination, paginationModifiers] = useModel(__props, "pagination");
81
+ const [sort, sortModifiers] = useModel(__props, "sort");
82
+ const group = useModel(__props, "group");
83
+ const collapsed = useModel(__props, "collapsed");
70
84
  const emit = __emit;
71
85
  const slots = useSlots();
72
- const { stickyHeader, collapsed, modelValue, disabledRows } = toRefs(props);
73
86
  const tableDefaults = useTable();
74
87
  const { isDark } = useRotkiTheme();
75
- const stickyHeaderOffset = computed(() => props.stickyOffset !== void 0 ? props.stickyOffset : get(tableDefaults.stickyOffset));
76
- function isRow(item) {
77
- return !("__header__" in item);
78
- }
79
- function isHeaderSlot(slotName) {
80
- return slotName.startsWith("header.");
81
- }
82
- const { stick, table, tableScroller } = useStickyTableHeader(
83
- stickyHeader,
84
- get(stickyHeaderOffset)
88
+ const stickyHeaderOffset = computed(
89
+ () => __props.stickyOffset !== void 0 ? __props.stickyOffset : get(tableDefaults.stickyOffset)
85
90
  );
86
- const expandable = computed(() => props.expanded && slots["expanded-item"]);
87
- const headerSlots = computed(
88
- () => Object.keys(slots).filter(isHeaderSlot)
91
+ const table = useTemplateRef("table");
92
+ const tableScroller = useTemplateRef("tableScroller");
93
+ const { stick } = useStickyTableHeader(
94
+ toRef(() => __props.stickyHeader),
95
+ stickyHeaderOffset,
96
+ { table, tableScroller }
89
97
  );
90
- const globalItemsPerPageSettings = computed(() => {
91
- if (props.globalItemsPerPage !== void 0)
92
- return props.globalItemsPerPage;
93
- return get(tableDefaults.globalItemsPerPage);
94
- });
95
- const getKeys = (t) => Object.keys(t);
96
- const groupKeys = computed(() => {
97
- const groupBy = props.group;
98
- if (!groupBy) {
99
- return [];
100
- }
101
- if (!Array.isArray(groupBy)) {
102
- return [groupBy];
103
- }
104
- return groupBy;
105
- });
106
- const groupKey = computed(() => get(groupKeys).join(":"));
107
- const isGrouped = computed(() => !!get(groupKey));
108
- const columns = computed(() => {
109
- const data = props.cols ?? getKeys(props.rows[0] ?? {}).map(
110
- (key) => ({
111
- key,
112
- [props.columnAttr]: String(key)
113
- })
114
- );
115
- const hasExpandColumn = data.some((row) => row.key === "expand");
116
- if (get(expandable) && !hasExpandColumn) {
117
- return [
118
- ...data,
119
- {
120
- key: "expand",
121
- sortable: false,
122
- class: "w-16",
123
- cellClass: "!py-0 w-16",
124
- align: "end"
125
- }
126
- ];
127
- }
128
- const groupByKeys = get(groupKeys);
129
- if (groupByKeys.length === 0)
130
- return data;
131
- return data.filter(
132
- (column) => !groupByKeys.includes(column.key)
133
- );
134
- });
135
- const itemsLength = ref(0);
136
- const selectedData = computed({
137
- get() {
138
- return get(modelValue);
139
- },
140
- set(value) {
141
- emit("update:model-value", value);
98
+ const hasExpandedItemSlot = computed(() => !!slots["expanded-item"]);
99
+ const { expandable, isExpanded, onToggleExpand } = useTableExpansion(
100
+ { rowAttr: __props.rowAttr, singleExpand: __props.singleExpand },
101
+ { expanded, hasExpandedItemSlot }
102
+ );
103
+ function emitUpdateOptions(opts) {
104
+ emit("update:options", opts);
105
+ }
106
+ const {
107
+ sortData,
108
+ sortedMap,
109
+ sorted,
110
+ onSort: applySort
111
+ } = useTableSort(
112
+ { rows: () => __props.rows, search: () => __props.search, sortModifiersExternal: sortModifiers.external },
113
+ {
114
+ sort,
115
+ pagination,
116
+ emitUpdateOptions
142
117
  }
143
- });
144
- const internalSelectedData = ref([]);
145
- watchImmediate(modelValue, (modelValue2) => {
146
- set(internalSelectedData, modelValue2);
147
- });
148
- const rowIdentifier = computed(() => props.rowAttr);
149
- const internalPaginationState = ref();
150
- const collapsedRows = ref([]);
151
- const pagination = computed(() => props.pagination);
152
- watchImmediate(pagination, (pagination2) => {
153
- set(internalPaginationState, pagination2);
154
- });
155
- watchImmediate(collapsed, (value) => {
156
- set(collapsedRows, value ?? []);
157
- });
158
- const paginationData = computed({
159
- get() {
160
- const paginated = get(internalPaginationState);
161
- if (!paginated) {
162
- return {
163
- total: get(itemsLength),
164
- limit: props.itemsPerPage,
165
- page: 1
166
- };
167
- }
168
- if (props.paginationModifiers?.external)
169
- return paginated;
170
- return {
171
- total: get(itemsLength),
172
- limit: paginated.limit,
173
- page: paginated.page,
174
- limits: paginated.limits
175
- };
176
- },
177
- set(value) {
178
- set(internalPaginationState, value);
179
- emit("update:pagination", value);
180
- emit("update:options", {
181
- pagination: value,
182
- sort: props.sort
183
- });
118
+ );
119
+ const {
120
+ groupKeys,
121
+ groupKey,
122
+ grouped,
123
+ isExpandedGroup,
124
+ isHiddenRow,
125
+ onToggleExpandGroup,
126
+ onUngroup,
127
+ onCopyGroup
128
+ } = useTableGrouping(
129
+ { rowAttr: __props.rowAttr },
130
+ {
131
+ group,
132
+ collapsed,
133
+ sorted,
134
+ emitCopyGroup: (value) => emit("copy:group", value)
184
135
  }
185
- });
186
- const sortData = computed({
187
- get() {
188
- return props.sort;
136
+ );
137
+ const {
138
+ paginationData,
139
+ filtered,
140
+ setInternalTotal,
141
+ resetPagination
142
+ } = useTablePagination(
143
+ {
144
+ itemsPerPage: __props.itemsPerPage,
145
+ paginationModifiersExternal: paginationModifiers.external,
146
+ globalItemsPerPage: __props.globalItemsPerPage
189
147
  },
190
- set(value) {
191
- if (!props.multiPageSelect)
192
- onToggleAll(false);
193
- resetCheckboxShiftState();
194
- emit("update:sort", value);
195
- emit("update:options", {
196
- sort: value,
197
- pagination: get(pagination)
198
- });
148
+ {
149
+ pagination,
150
+ grouped,
151
+ isHiddenRow,
152
+ sort,
153
+ emitUpdateOptions,
154
+ tableDefaults
199
155
  }
200
- });
201
- const sortedMap = computed(() => {
202
- const mapped = {};
203
- const sortBy = get(sortData);
204
- if (!sortBy)
205
- return mapped;
206
- if (!Array.isArray(sortBy)) {
207
- if (sortBy.column)
208
- mapped[sortBy.column] = sortBy;
209
- return mapped;
210
- }
211
- return sortBy.reduce((acc, curr) => {
212
- if (!curr.column)
213
- return acc;
214
- return { ...acc, [curr.column]: curr };
215
- }, mapped);
216
- });
217
- const searchData = computed(() => {
218
- const query = props.search?.toLocaleLowerCase();
219
- if (!query)
220
- return props.rows;
221
- return props.rows.filter(
222
- (row) => getKeys(row).some(
223
- (key) => `${row[key]}`.toLocaleLowerCase().includes(query)
224
- )
225
- );
226
- });
227
- const sorted = computed(() => {
228
- const sortBy = get(sortData);
229
- const data = [...get(searchData)];
230
- if (!sortBy || props.sortModifiers?.external)
231
- return data;
232
- const sortOptions = { sensitivity: "accent", usage: "sort" };
233
- const sort = (by) => {
234
- data.sort((a, b) => {
235
- const column = by.column;
236
- if (!column)
237
- return 0;
238
- let [aValue, bValue] = [a[column], b[column]];
239
- if (by.direction === "desc")
240
- [aValue, bValue] = [bValue, aValue];
241
- const aNumber = Number(aValue);
242
- const bNumber = Number(bValue);
243
- if (!isNaN(aNumber) && !isNaN(bNumber))
244
- return aNumber - bNumber;
245
- return `${aValue}`.localeCompare(
246
- `${bValue}`,
247
- void 0,
248
- sortOptions
249
- );
250
- });
251
- };
252
- if (!Array.isArray(sortBy))
253
- sort(sortBy);
254
- else
255
- [...sortBy].reverse().forEach(sort);
256
- return data;
257
- });
258
- const mappedGroups = computed(() => {
259
- if (!get(isGrouped)) {
260
- return {};
261
- }
262
- const result = get(sorted);
263
- const identifier = props.rowAttr;
264
- return result.reduce((acc, row) => {
265
- if (!isDefined(row[identifier]) || row[identifier] === "")
266
- return acc;
267
- const group = getRowGroup(row);
268
- const groupVal = Object.values(group).filter(isDefined).join(",");
269
- if (!acc[groupVal]) {
270
- acc[groupVal] = [
271
- {
272
- __header__: true,
273
- group,
274
- identifier: groupVal
275
- }
276
- ];
277
- }
278
- acc[groupVal].push(row);
279
- return acc;
280
- }, {});
281
- });
282
- const grouped = computed(() => {
283
- const result = get(sorted);
284
- const groupByKey = get(groupKey);
285
- if (!groupByKey) {
286
- return result;
287
- }
288
- return Object.values(get(mappedGroups)).flatMap((grouped2) => grouped2);
289
- });
290
- const filtered = computed(() => {
291
- const result = get(grouped);
292
- const paginated = get(paginationData);
293
- const limit = paginated.limit;
294
- if (paginated && !props.paginationModifiers?.external) {
295
- const start = (paginated.page - 1) * limit;
296
- const end = start + limit;
297
- const preGroups = result.slice(0, start + 1).filter((item) => !isRow(item));
298
- const postGroups = result.slice(start + 1, end + preGroups.length).filter((item) => !isRow(item));
299
- const data = result.slice(start + preGroups.length, end + preGroups.length + postGroups.length);
300
- const nearestGroup = preGroups.at(-1);
301
- if (data.length > 0) {
302
- const firstItem = data[0];
303
- assert(firstItem);
304
- if (isRow(firstItem) && nearestGroup)
305
- data.unshift(nearestGroup);
306
- const lastItem = data.at(-1);
307
- if (lastItem && !isRow(lastItem))
308
- data.pop();
309
- }
310
- return data.filter((row) => !isHiddenRow(row));
311
- }
312
- return result.filter((row) => !isHiddenRow(row));
313
- });
314
- const visibleIdentifiers = computed(() => {
315
- const selectBy = props.rowAttr;
316
- if (!selectBy)
317
- return [];
318
- return get(filtered).filter(isRow).map((row) => row[selectBy]);
319
- });
320
- const isAllSelected = computed(() => {
321
- const selectedRows = get(selectedData);
322
- if (!selectedRows)
323
- return false;
324
- return selectedRows.length > 0 && get(visibleIdentifiers).every((id) => selectedRows.includes(id));
325
- });
326
- const indeterminate = computed(() => {
327
- const selectedRows = get(selectedData);
328
- if (!selectedRows)
329
- return false;
330
- return selectedRows.length > 0 && !get(isAllSelected);
331
- });
156
+ );
332
157
  const noData = computed(() => get(filtered).length === 0);
333
- const colspan = computed(() => {
334
- let columnLength = get(columns).length;
335
- if (get(selectedData))
336
- columnLength++;
337
- return columnLength;
158
+ const { columns, colspan, headerSlots, cellValue } = useTableColumns({
159
+ cols: () => __props.cols,
160
+ columnAttr: __props.columnAttr,
161
+ rows: () => __props.rows,
162
+ expandable,
163
+ groupKeys,
164
+ selectedData,
165
+ slots
338
166
  });
339
- const isSortedBy = (key) => key in get(sortedMap);
340
- function getSortIndex(key) {
341
- const sortBy = get(sortData);
342
- if (!sortBy || !Array.isArray(sortBy) || !isSortedBy(key))
343
- return -1;
344
- return sortBy.findIndex((sort) => sort.column === key) ?? -1;
345
- }
346
- function isSelected(identifier) {
347
- const selection = get(selectedData);
348
- if (!selection)
349
- return false;
350
- return selection.includes(identifier);
351
- }
352
- function isDisabledRow(rowKey) {
353
- const identifier = props.rowAttr;
354
- if (!identifier)
355
- return false;
356
- return !!get(disabledRows)?.some((disabledRow) => rowKey === disabledRow[identifier]);
357
- }
358
- function isExpanded(identifier) {
359
- const { expanded } = props;
360
- if (!expanded?.length)
361
- return false;
362
- return expanded.some((data) => data[props.rowAttr] === identifier);
363
- }
364
- function onToggleExpand(row) {
365
- const { expanded } = props;
366
- if (!expanded)
367
- return;
368
- const key = props.rowAttr;
369
- const rowExpanded = isExpanded(row[key]);
370
- if (props.singleExpand)
371
- return emit("update:expanded", rowExpanded ? [] : [row]);
372
- return emit(
373
- "update:expanded",
374
- rowExpanded ? expanded.filter((item) => item[key] !== row[key]) : [...expanded, row]
375
- );
376
- }
377
- function getRowGroup(row) {
378
- return get(groupKeys).reduce((acc, key) => ({ ...acc, [key]: row[key] }), {});
379
- }
380
- function getGroupRows(groupVal) {
381
- if (!get(isGrouped))
382
- return [];
383
- const groupRows = get(mappedGroups)[groupVal];
384
- assert(groupRows);
385
- return groupRows.filter(isRow);
386
- }
387
- function compareGroupsFn(a, b) {
388
- const group = get(groupKeys);
389
- if (group.length === 0)
390
- return false;
391
- return group.every((key) => a[key] === b[key]);
392
- }
393
- function isExpandedGroup(value) {
394
- return get(collapsedRows).every((row) => !compareGroupsFn(row, value));
395
- }
396
- function isHiddenRow(row) {
397
- const identifier = props.rowAttr;
398
- return get(isGrouped) && get(collapsedRows).some(
399
- (value) => isRow(row) && row[identifier] === value[identifier]
400
- );
401
- }
402
- function onToggleExpandGroup(group, value) {
403
- if (!value)
404
- return;
405
- const collapsed2 = get(collapsedRows);
406
- const groupExpanded = isExpandedGroup(group);
407
- const groupRows = getGroupRows(value);
408
- set(
409
- collapsedRows,
410
- groupExpanded ? [...collapsed2, ...groupRows] : collapsed2.filter((row) => !compareGroupsFn(row, group))
411
- );
412
- emit("update:collapsed", get(collapsedRows));
413
- }
414
- function onUngroup() {
415
- set(collapsedRows, []);
416
- emit("update:collapsed", []);
417
- emit("update:group", Array.isArray(props.group) ? [] : void 0);
418
- }
419
- function onCopyGroup(value) {
420
- emit("copy:group", value);
421
- }
422
- function onSort({
423
- key,
424
- direction
425
- }) {
426
- const sortBy = get(sortData);
427
- if (!sortBy)
428
- return;
429
- if (!Array.isArray(sortBy)) {
430
- if (isSortedBy(key)) {
431
- const newDirection = !direction || direction === "asc" ? "desc" : "asc";
432
- if (sortBy.direction === newDirection) {
433
- set(sortData, { ...sortBy, column: void 0, direction: "asc" });
434
- } else {
435
- set(sortData, {
436
- ...sortBy,
437
- direction: sortBy.direction === "asc" ? "desc" : "asc"
438
- });
439
- }
440
- } else {
441
- set(sortData, { column: key, direction: direction || "asc" });
442
- }
443
- return;
444
- }
445
- if (isSortedBy(key)) {
446
- const newDirection = !direction || direction === "asc" ? "desc" : "asc";
447
- const index = getSortIndex(key);
448
- const sortByCol = sortBy[index];
449
- assert(sortByCol);
450
- if (sortByCol.direction === newDirection)
451
- sortBy.splice(index, 1);
452
- else
453
- sortByCol.direction = sortByCol.direction === "asc" ? "desc" : "asc";
454
- set(sortData, sortBy);
455
- } else {
456
- set(sortData, [...sortBy, { column: key, direction: direction || "asc" }]);
457
- }
458
- }
459
- function isSelectable(rowKey) {
460
- return isSelected(rowKey) || !isDisabledRow(rowKey);
461
- }
462
- function mustSelect(rowKey) {
463
- return isSelected(rowKey) && isDisabledRow(rowKey);
464
- }
465
- function onToggleAll(checked) {
466
- const selectedRows = get(selectedData);
467
- if (!isDefined(selectedRows)) {
468
- return;
469
- }
470
- if (!props.multiPageSelect) {
471
- if (checked)
472
- set(selectedData, get(visibleIdentifiers).filter(isSelectable));
473
- else
474
- set(selectedData, get(visibleIdentifiers).filter(mustSelect));
475
- } else {
476
- if (checked) {
477
- set(
478
- selectedData,
479
- Array.from(/* @__PURE__ */ new Set(
480
- [
481
- ...selectedRows,
482
- ...get(visibleIdentifiers).filter(isSelectable)
483
- ]
484
- ))
485
- );
486
- } else {
487
- set(
488
- selectedData,
489
- selectedRows.filter((rowKey) => !get(visibleIdentifiers).includes(rowKey) || get(visibleIdentifiers).filter(mustSelect).includes(rowKey))
490
- );
491
- }
492
- }
493
- }
494
- const shiftClicked = ref(false);
495
- const lastSelectedIndex = ref(-1);
496
- function resetCheckboxShiftState() {
497
- set(shiftClicked, false);
498
- set(lastSelectedIndex, -1);
499
- }
500
- function onSelect(checked, value, userAction = false) {
501
- if (get(shiftClicked) && userAction)
502
- return;
503
- const selectedRows = get(internalSelectedData);
504
- if (!selectedRows)
505
- return false;
506
- const selected = isSelected(value);
507
- if (checked && !selected) {
508
- set(internalSelectedData, [...selectedRows, value]);
509
- } else if (!checked && selected) {
510
- set(
511
- internalSelectedData,
512
- [...selectedRows].filter((r) => r !== value)
513
- );
514
- }
515
- if (userAction)
516
- set(selectedData, get(internalSelectedData));
517
- }
518
- function onCheckboxClick(event, value, index) {
519
- const input = event.currentTarget.querySelector("input");
520
- const nodeName = event.target.nodeName;
521
- const shiftKey = event.shiftKey;
522
- set(shiftClicked, shiftKey);
523
- if (input && nodeName !== "INPUT") {
524
- if (shiftKey) {
525
- setTimeout(() => {
526
- let lastIndex = get(lastSelectedIndex);
527
- if (lastIndex === -1)
528
- lastIndex = index;
529
- const tableData = get(filtered);
530
- const lastSelectedData = tableData[lastIndex];
531
- assert(lastSelectedData);
532
- if (isRow(lastSelectedData)) {
533
- const id = get(rowIdentifier);
534
- const valueToApply = isSelected(lastSelectedData[id]);
535
- if (lastIndex === index) {
536
- onSelect(!valueToApply, value);
537
- } else {
538
- const from = Math.min(lastIndex, index);
539
- const to = Math.max(lastIndex, index);
540
- for (let i = from; i <= to; i++) {
541
- const currSelectedData = tableData[i];
542
- assert(currSelectedData);
543
- if (isRow(currSelectedData) && !isDisabledRow(currSelectedData[id]))
544
- onSelect(valueToApply, currSelectedData[id]);
545
- }
546
- }
547
- set(lastSelectedIndex, index);
548
- set(selectedData, get(internalSelectedData));
549
- }
550
- }, 1);
551
- } else {
552
- set(lastSelectedIndex, index);
553
- }
554
- }
555
- }
556
- const search = computed(() => props.search);
557
- function deselectRemovedRows() {
558
- get(selectedData)?.forEach((key) => {
559
- if (isSelected(key) && !get(visibleIdentifiers).includes(key))
560
- onSelect(false, key, true);
561
- });
167
+ const {
168
+ isAllSelected,
169
+ indeterminate,
170
+ isSelected,
171
+ isDisabledRow,
172
+ onToggleAll,
173
+ onSelect,
174
+ onCheckboxClick,
175
+ deselectRemovedRows,
176
+ resetCheckboxShiftState
177
+ } = useTableSelection(
178
+ { rowAttr: __props.rowAttr, multiPageSelect: __props.multiPageSelect, disabledRows: () => __props.disabledRows },
179
+ { selectedData, filtered }
180
+ );
181
+ function onSort(payload) {
182
+ applySort(payload);
183
+ if (!__props.multiPageSelect)
184
+ onToggleAll(false);
185
+ resetCheckboxShiftState();
562
186
  }
563
187
  function onPaginate() {
564
- emit("update:expanded", []);
565
- if (!props.multiPageSelect)
188
+ set(expanded, []);
189
+ if (!__props.multiPageSelect)
566
190
  onToggleAll(false);
567
191
  resetCheckboxShiftState();
568
192
  }
569
- function setInternalTotal(items) {
570
- if (!props.paginationModifiers?.external)
571
- set(itemsLength, items.filter(isRow).length);
572
- }
573
- function cellValue(row, key) {
574
- return row[key];
575
- }
576
- watch(internalPaginationState, (pagination2) => {
577
- if (pagination2?.limit && get(globalItemsPerPageSettings))
578
- set(tableDefaults.itemsPerPage, pagination2.limit);
579
- });
580
- watch(tableDefaults.itemsPerPage, (itemsPerPage) => {
581
- if (!get(globalItemsPerPageSettings))
582
- return;
583
- set(paginationData, {
584
- ...get(paginationData),
585
- limit: itemsPerPage
586
- });
587
- });
588
- watch(search, () => {
589
- set(paginationData, {
590
- ...get(paginationData),
591
- page: 1
592
- });
193
+ watch(() => __props.search, () => {
194
+ resetPagination();
593
195
  onToggleAll(false);
594
196
  resetCheckboxShiftState();
595
197
  });
596
198
  watch(sorted, (items) => {
597
- if (!props.multiPageSelect)
199
+ if (!__props.multiPageSelect)
598
200
  deselectRemovedRows();
599
201
  setInternalTotal(items);
600
202
  });
601
- watch(paginationData, (pagination2) => {
602
- const { total, limit, page } = pagination2;
603
- const maxPages = Math.ceil(total / limit);
604
- if (maxPages > 0 && page > maxPages) {
605
- set(paginationData, {
606
- ...pagination2,
607
- page: maxPages
608
- });
609
- }
610
- });
611
203
  onMounted(() => {
612
204
  setInternalTotal(get(sorted));
613
- if (!get(globalItemsPerPageSettings))
614
- return;
615
- set(paginationData, {
616
- ...get(paginationData),
617
- limit: get(tableDefaults.itemsPerPage)
618
- });
619
205
  });
620
206
  return (_ctx, _cache) => {
621
207
  return openBlock(), createElementBlock("div", {
622
- class: normalizeClass([
623
- _ctx.$style.wrapper,
624
- _ctx.$style[`rounded__${__props.rounded}`],
625
- { [_ctx.$style.outlined]: __props.outlined }
626
- ])
208
+ class: normalizeClass([_ctx.$style.wrapper, _ctx.$style[`rounded__${__props.rounded}`], { [_ctx.$style.outlined]: __props.outlined }]),
209
+ "data-id": "table-wrapper"
627
210
  }, [
628
211
  unref(paginationData) && !__props.hideDefaultHeader ? (openBlock(), createBlock(RuiTablePagination, {
629
212
  key: 0,
@@ -640,14 +223,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
640
223
  createElementVNode("div", {
641
224
  ref_key: "tableScroller",
642
225
  ref: tableScroller,
643
- class: normalizeClass(_ctx.$style.scroller)
226
+ class: normalizeClass(_ctx.$style.scroller),
227
+ "data-id": "table-scroller"
644
228
  }, [
645
229
  createElementVNode("table", {
646
230
  ref_key: "table",
647
231
  ref: table,
648
232
  class: normalizeClass([_ctx.$style.table, { [_ctx.$style.dense]: __props.dense }]),
649
- "aria-busy": __props.loading,
650
- "aria-label": ""
233
+ "aria-busy": __props.loading
651
234
  }, [
652
235
  createVNode(RuiTableHead, {
653
236
  loading: __props.loading,
@@ -660,13 +243,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
660
243
  "disable-check-all": !unref(filtered)?.length,
661
244
  "is-all-selected": unref(isAllSelected),
662
245
  "no-data": unref(noData),
663
- selectable: !!unref(selectedData),
246
+ selectable: !!selectedData.value,
664
247
  "sort-data": unref(sortData),
665
248
  "sorted-map": unref(sortedMap),
666
249
  stick: unref(stick),
667
- "sticky-header": unref(stickyHeader),
250
+ "sticky-header": __props.stickyHeader,
668
251
  onSort: _cache[2] || (_cache[2] = ($event) => onSort($event)),
669
- "onSelect:all": _cache[3] || (_cache[3] = ($event) => onToggleAll($event))
252
+ "onSelect:all": _cache[3] || (_cache[3] = ($event) => unref(onToggleAll)($event))
670
253
  }, createSlots({ _: 2 }, [
671
254
  renderList(unref(headerSlots), (headerSlot) => {
672
255
  return {
@@ -677,7 +260,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
677
260
  };
678
261
  })
679
262
  ]), 1032, ["loading", "indeterminate", "capitalize-headers", "colspan", "column-attr", "columns", "dense", "disable-check-all", "is-all-selected", "no-data", "selectable", "sort-data", "sorted-map", "stick", "sticky-header"]),
680
- unref(stickyHeader) ? (openBlock(), createBlock(RuiTableHead, {
263
+ __props.stickyHeader ? (openBlock(), createBlock(RuiTableHead, {
681
264
  key: 0,
682
265
  loading: __props.loading,
683
266
  "capitalize-headers": !__props.cols,
@@ -686,7 +269,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
686
269
  columns: unref(columns),
687
270
  dense: __props.dense,
688
271
  "no-data": unref(noData),
689
- selectable: !!unref(selectedData),
272
+ selectable: !!selectedData.value,
690
273
  "sort-data": unref(sortData),
691
274
  "sorted-map": unref(sortedMap),
692
275
  "data-id": "head-clone",
@@ -710,15 +293,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
710
293
  }) : createCommentVNode("", true),
711
294
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(filtered), (row, index) => {
712
295
  return openBlock(), createElementBlock(Fragment, null, [
713
- !isRow(row) ? (openBlock(), createElementBlock("tr", {
296
+ !unref(isRow)(row) ? (openBlock(), createElementBlock("tr", {
714
297
  key: `row-${index}`,
715
- class: normalizeClass([_ctx.$style.tr, _ctx.$style.tr__group])
298
+ class: normalizeClass([_ctx.$style.tr, _ctx.$style.tr__group]),
299
+ "data-id": "row-group"
716
300
  }, [
717
301
  renderSlot(_ctx.$slots, "group.header", {
718
302
  colspan: unref(colspan),
719
303
  header: row,
720
- isOpen: isExpandedGroup(row.group),
721
- toggle: () => onToggleExpandGroup(row.group, row.identifier)
304
+ isOpen: unref(isExpandedGroup)(row.group),
305
+ toggle: () => unref(onToggleExpandGroup)(row.group, row.identifier)
722
306
  }, () => [
723
307
  createElementVNode("td", {
724
308
  class: normalizeClass([[_ctx.$style.td], "!p-2"]),
@@ -727,8 +311,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
727
311
  createElementVNode("div", _hoisted_3, [
728
312
  __props.groupExpandButtonPosition === "start" ? (openBlock(), createBlock(RuiExpandButton, {
729
313
  key: 0,
730
- expanded: isExpandedGroup(row.group),
731
- onClick: ($event) => onToggleExpandGroup(row.group, row.identifier)
314
+ expanded: unref(isExpandedGroup)(row.group),
315
+ onClick: ($event) => unref(onToggleExpandGroup)(row.group, row.identifier)
732
316
  }, null, 8, ["expanded", "onClick"])) : createCommentVNode("", true),
733
317
  renderSlot(_ctx.$slots, "group.header.content", {
734
318
  groupKey: unref(groupKey),
@@ -740,7 +324,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
740
324
  variant: "text",
741
325
  icon: "",
742
326
  "data-cy": "group-copy-button",
743
- onClick: ($event) => onCopyGroup({ key: unref(groupKey), value: row.group })
327
+ onClick: ($event) => unref(onCopyGroup)({ key: unref(groupKey), value: row.group })
744
328
  }, {
745
329
  default: withCtx(() => [
746
330
  createVNode(RuiIcon, {
@@ -760,7 +344,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
760
344
  size: "sm",
761
345
  variant: "text",
762
346
  icon: "",
763
- onClick: _cache[4] || (_cache[4] = ($event) => onUngroup())
347
+ "data-cy": "group-ungroup-button",
348
+ onClick: _cache[4] || (_cache[4] = ($event) => unref(onUngroup)())
764
349
  }, {
765
350
  default: withCtx(() => [
766
351
  createVNode(RuiIcon, {
@@ -778,8 +363,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
778
363
  }),
779
364
  __props.groupExpandButtonPosition === "end" ? (openBlock(), createBlock(RuiExpandButton, {
780
365
  key: 1,
781
- expanded: isExpandedGroup(row.group),
782
- onClick: ($event) => onToggleExpandGroup(row.group, row.identifier)
366
+ expanded: unref(isExpandedGroup)(row.group),
367
+ onClick: ($event) => unref(onToggleExpandGroup)(row.group, row.identifier)
783
368
  }, null, 8, ["expanded", "onClick"])) : createCommentVNode("", true)
784
369
  ])
785
370
  ], 10, _hoisted_2)
@@ -789,12 +374,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
789
374
  key: `row-${index}`,
790
375
  class: normalizeClass([
791
376
  _ctx.$style.tr,
792
- { [_ctx.$style.tr__selected ?? ""]: isSelected(row[unref(rowIdentifier)]) },
377
+ { [_ctx.$style.tr__selected ?? ""]: unref(isSelected)(row[__props.rowAttr]) },
793
378
  typeof __props.itemClass === "string" ? __props.itemClass : __props.itemClass(row)
794
379
  ]),
795
- "aria-selected": unref(selectedData) ? isSelected(row[unref(rowIdentifier)]) : void 0
380
+ "aria-selected": selectedData.value ? unref(isSelected)(row[__props.rowAttr]) : void 0,
381
+ "data-id": "row"
796
382
  }, [
797
- unref(selectedData) ? (openBlock(), createElementBlock("td", {
383
+ selectedData.value ? (openBlock(), createElementBlock("td", {
798
384
  key: 0,
799
385
  class: normalizeClass(_ctx.$style.checkbox),
800
386
  colspan: "1",
@@ -802,14 +388,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
802
388
  }, [
803
389
  createVNode(RuiCheckbox, {
804
390
  "data-cy": `table-toggle-check-${index}`,
805
- "model-value": isSelected(row[unref(rowIdentifier)]),
806
- disabled: isDisabledRow(row[unref(rowIdentifier)]),
391
+ "model-value": unref(isSelected)(row[__props.rowAttr]),
392
+ disabled: unref(isDisabledRow)(row[__props.rowAttr]),
807
393
  size: __props.dense ? "sm" : void 0,
808
394
  color: "primary",
809
395
  class: "select-none",
810
396
  "hide-details": "",
811
- "onUpdate:modelValue": ($event) => onSelect($event, row[unref(rowIdentifier)], true),
812
- onClick: ($event) => onCheckboxClick($event, row[unref(rowIdentifier)], index)
397
+ "onUpdate:modelValue": ($event) => unref(onSelect)($event, row[__props.rowAttr], true),
398
+ onClick: ($event) => unref(onCheckboxClick)($event, row[__props.rowAttr], index)
813
399
  }, null, 8, ["data-cy", "model-value", "disabled", "size", "onUpdate:modelValue", "onClick"])
814
400
  ], 2)) : createCommentVNode("", true),
815
401
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(columns), (column, subIndex) => {
@@ -831,8 +417,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
831
417
  }, () => [
832
418
  !slots["item.expand"] ? (openBlock(), createBlock(RuiExpandButton, {
833
419
  key: 0,
834
- expanded: isExpanded(row[unref(rowIdentifier)]),
835
- onClick: ($event) => onToggleExpand(row)
420
+ expanded: unref(isExpanded)(row[__props.rowAttr]),
421
+ onClick: ($event) => unref(onToggleExpand)(row)
836
422
  }, null, 8, ["expanded", "onClick"])) : createCommentVNode("", true)
837
423
  ]) : renderSlot(_ctx.$slots, `item.${column.key.toString()}`, {
838
424
  key: 1,
@@ -840,14 +426,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
840
426
  index,
841
427
  row
842
428
  }, () => [
843
- createTextVNode(toDisplayString(cellValue(row, column.key)), 1)
429
+ createTextVNode(toDisplayString(unref(cellValue)(row, column.key)), 1)
844
430
  ])
845
431
  ], 10, _hoisted_5);
846
432
  }), 128))
847
433
  ], 10, _hoisted_4)),
848
- unref(expandable) && isExpanded(row[unref(rowIdentifier)]) ? (openBlock(), createElementBlock("tr", {
434
+ unref(expandable) && unref(isExpanded)(row[__props.rowAttr]) ? (openBlock(), createElementBlock("tr", {
849
435
  key: `row-expand-${index}`,
850
- class: normalizeClass([_ctx.$style.tr, _ctx.$style.tr__expandable])
436
+ class: normalizeClass([_ctx.$style.tr, _ctx.$style.tr__expandable]),
437
+ "data-id": "row-expanded"
851
438
  }, [
852
439
  createElementVNode("td", {
853
440
  colspan: unref(colspan),
@@ -865,7 +452,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
865
452
  __props.loading && unref(noData) ? (openBlock(), createElementBlock("tr", _hoisted_7, [
866
453
  createElementVNode("td", {
867
454
  class: normalizeClass(_ctx.$style.tbody__loader),
868
- colspan: unref(colspan)
455
+ colspan: unref(colspan),
456
+ "data-id": "tbody-loader"
869
457
  }, [
870
458
  createVNode(RuiProgress, {
871
459
  color: "primary",
@@ -876,7 +464,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
876
464
  ])) : createCommentVNode("", true),
877
465
  unref(noData) && __props.empty && !__props.loading ? (openBlock(), createElementBlock("tr", {
878
466
  key: 2,
879
- class: normalizeClass([_ctx.$style.tr, _ctx.$style.tr__empty])
467
+ class: normalizeClass([_ctx.$style.tr, _ctx.$style.tr__empty]),
468
+ "data-id": "row-empty"
880
469
  }, [
881
470
  createVNode(Transition, {
882
471
  appear: "",
@@ -903,12 +492,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
903
492
  }, null, 8, _hoisted_10),
904
493
  __props.empty.label ? (openBlock(), createElementBlock("p", {
905
494
  key: 0,
906
- class: normalizeClass(_ctx.$style.empty__label)
495
+ class: normalizeClass(_ctx.$style.empty__label),
496
+ "data-id": "empty-label"
907
497
  }, toDisplayString(__props.empty.label), 3)) : createCommentVNode("", true),
908
498
  renderSlot(_ctx.$slots, "empty-description", {}, () => [
909
499
  __props.empty.description ? (openBlock(), createElementBlock("p", {
910
500
  key: 0,
911
- class: normalizeClass(_ctx.$style.empty__description)
501
+ class: normalizeClass(_ctx.$style.empty__description),
502
+ "data-id": "empty-description"
912
503
  }, toDisplayString(__props.empty.description), 3)) : createCommentVNode("", true)
913
504
  ])
914
505
  ], 2)