@rotki/ui-library 2.8.0 → 2.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/dist/README.md +276 -0
  2. package/dist/_virtual/_plugin-vue_export-helper.js +11 -0
  3. package/dist/_virtual/_plugin-vue_export-helper.js.map +1 -0
  4. package/dist/components/accordions/accordion/RuiAccordion.vue.js +11 -0
  5. package/dist/components/accordions/accordion/RuiAccordion.vue.js.map +1 -0
  6. package/dist/components/accordions/accordion/RuiAccordion.vue2.js +66 -0
  7. package/dist/components/accordions/accordion/RuiAccordion.vue2.js.map +1 -0
  8. package/dist/components/accordions/accordion/RuiAccordion.vue3.js +18 -0
  9. package/dist/components/accordions/accordion/RuiAccordion.vue3.js.map +1 -0
  10. package/dist/components/accordions/accordions/RuiAccordions.vue.js +78 -0
  11. package/dist/components/accordions/accordions/RuiAccordions.vue.js.map +1 -0
  12. package/dist/components/accordions/accordions/RuiAccordions.vue2.js +5 -0
  13. package/dist/components/accordions/accordions/RuiAccordions.vue2.js.map +1 -0
  14. package/dist/components/alerts/RuiAlert.vue.d.ts +2 -2
  15. package/dist/components/alerts/RuiAlert.vue.js +11 -0
  16. package/dist/components/alerts/RuiAlert.vue.js.map +1 -0
  17. package/dist/components/alerts/RuiAlert.vue2.js +123 -0
  18. package/dist/components/alerts/RuiAlert.vue2.js.map +1 -0
  19. package/dist/components/alerts/RuiAlert.vue3.js +50 -0
  20. package/dist/components/alerts/RuiAlert.vue3.js.map +1 -0
  21. package/dist/components/buttons/button/RuiButton.vue.d.ts +1 -1
  22. package/dist/components/buttons/button/RuiButton.vue.js +11 -0
  23. package/dist/components/buttons/button/RuiButton.vue.js.map +1 -0
  24. package/dist/components/buttons/button/RuiButton.vue2.js +94 -0
  25. package/dist/components/buttons/button/RuiButton.vue2.js.map +1 -0
  26. package/dist/components/buttons/button/RuiButton.vue3.js +74 -0
  27. package/dist/components/buttons/button/RuiButton.vue3.js.map +1 -0
  28. package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +1 -1
  29. package/dist/components/buttons/button-group/RuiButtonGroup.vue.js +11 -0
  30. package/dist/components/buttons/button-group/RuiButtonGroup.vue.js.map +1 -0
  31. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js +112 -0
  32. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js.map +1 -0
  33. package/dist/components/buttons/button-group/RuiButtonGroup.vue3.js +58 -0
  34. package/dist/components/buttons/button-group/RuiButtonGroup.vue3.js.map +1 -0
  35. package/dist/components/calendar/RuiCalendar.vue.js +128 -0
  36. package/dist/components/calendar/RuiCalendar.vue.js.map +1 -0
  37. package/dist/components/calendar/RuiCalendar.vue3.js +6 -0
  38. package/dist/components/calendar/RuiCalendar.vue3.js.map +1 -0
  39. package/dist/components/calendar/RuiCalendarGrid.vue.js +8 -0
  40. package/dist/components/calendar/RuiCalendarGrid.vue.js.map +1 -0
  41. package/dist/components/calendar/RuiCalendarGrid.vue2.js +149 -0
  42. package/dist/components/calendar/RuiCalendarGrid.vue2.js.map +1 -0
  43. package/dist/components/calendar/RuiCalendarHeader.vue.d.ts +1 -1
  44. package/dist/components/calendar/RuiCalendarHeader.vue.js +8 -0
  45. package/dist/components/calendar/RuiCalendarHeader.vue.js.map +1 -0
  46. package/dist/components/calendar/RuiCalendarHeader.vue2.js +112 -0
  47. package/dist/components/calendar/RuiCalendarHeader.vue2.js.map +1 -0
  48. package/dist/components/calendar/RuiCalendarMenu.vue.d.ts +1 -1
  49. package/dist/components/calendar/RuiCalendarMenu.vue.js +8 -0
  50. package/dist/components/calendar/RuiCalendarMenu.vue.js.map +1 -0
  51. package/dist/components/calendar/RuiCalendarMenu.vue2.js +261 -0
  52. package/dist/components/calendar/RuiCalendarMenu.vue2.js.map +1 -0
  53. package/dist/components/calendar/state.js +25 -0
  54. package/dist/components/calendar/state.js.map +1 -0
  55. package/dist/components/cards/RuiCard.vue.js +11 -0
  56. package/dist/components/cards/RuiCard.vue.js.map +1 -0
  57. package/dist/components/cards/RuiCard.vue2.js +88 -0
  58. package/dist/components/cards/RuiCard.vue2.js.map +1 -0
  59. package/dist/components/cards/RuiCard.vue3.js +40 -0
  60. package/dist/components/cards/RuiCard.vue3.js.map +1 -0
  61. package/dist/components/cards/RuiCardHeader.vue.js +11 -0
  62. package/dist/components/cards/RuiCardHeader.vue.js.map +1 -0
  63. package/dist/components/cards/RuiCardHeader.vue2.js +51 -0
  64. package/dist/components/cards/RuiCardHeader.vue2.js.map +1 -0
  65. package/dist/components/cards/RuiCardHeader.vue3.js +27 -0
  66. package/dist/components/cards/RuiCardHeader.vue3.js.map +1 -0
  67. package/dist/components/chips/RuiChip.vue.d.ts +2 -2
  68. package/dist/components/chips/RuiChip.vue.js +11 -0
  69. package/dist/components/chips/RuiChip.vue.js.map +1 -0
  70. package/dist/components/chips/RuiChip.vue2.js +95 -0
  71. package/dist/components/chips/RuiChip.vue2.js.map +1 -0
  72. package/dist/components/chips/RuiChip.vue3.js +88 -0
  73. package/dist/components/chips/RuiChip.vue3.js.map +1 -0
  74. package/dist/components/color-picker/RuiColorBoard.vue.d.ts +1 -1
  75. package/dist/components/color-picker/RuiColorBoard.vue.js +11 -0
  76. package/dist/components/color-picker/RuiColorBoard.vue.js.map +1 -0
  77. package/dist/components/color-picker/RuiColorBoard.vue2.js +102 -0
  78. package/dist/components/color-picker/RuiColorBoard.vue2.js.map +1 -0
  79. package/dist/components/color-picker/RuiColorBoard.vue3.js +18 -0
  80. package/dist/components/color-picker/RuiColorBoard.vue3.js.map +1 -0
  81. package/dist/components/color-picker/RuiColorDisplay.vue.js +49 -0
  82. package/dist/components/color-picker/RuiColorDisplay.vue.js.map +1 -0
  83. package/dist/components/color-picker/RuiColorDisplay.vue2.js +5 -0
  84. package/dist/components/color-picker/RuiColorDisplay.vue2.js.map +1 -0
  85. package/dist/components/color-picker/RuiColorHue.vue.js +11 -0
  86. package/dist/components/color-picker/RuiColorHue.vue.js.map +1 -0
  87. package/dist/components/color-picker/RuiColorHue.vue2.js +89 -0
  88. package/dist/components/color-picker/RuiColorHue.vue2.js.map +1 -0
  89. package/dist/components/color-picker/RuiColorHue.vue3.js +12 -0
  90. package/dist/components/color-picker/RuiColorHue.vue3.js.map +1 -0
  91. package/dist/components/color-picker/RuiColorInput.vue.d.ts +1 -1
  92. package/dist/components/color-picker/RuiColorInput.vue.js +139 -0
  93. package/dist/components/color-picker/RuiColorInput.vue.js.map +1 -0
  94. package/dist/components/color-picker/RuiColorInput.vue2.js +5 -0
  95. package/dist/components/color-picker/RuiColorInput.vue2.js.map +1 -0
  96. package/dist/components/color-picker/RuiColorPicker.vue.js +72 -0
  97. package/dist/components/color-picker/RuiColorPicker.vue.js.map +1 -0
  98. package/dist/components/color-picker/RuiColorPicker.vue2.js +5 -0
  99. package/dist/components/color-picker/RuiColorPicker.vue2.js.map +1 -0
  100. package/dist/components/color-picker/utils.js +182 -0
  101. package/dist/components/color-picker/utils.js.map +1 -0
  102. package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +1 -1
  103. package/dist/components/date-time-picker/RuiDateTimePicker.vue.js +11 -0
  104. package/dist/components/date-time-picker/RuiDateTimePicker.vue.js.map +1 -0
  105. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +570 -0
  106. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -0
  107. package/dist/components/date-time-picker/RuiDateTimePicker.vue3.js +66 -0
  108. package/dist/components/date-time-picker/RuiDateTimePicker.vue3.js.map +1 -0
  109. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.d.ts +2 -2
  110. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.js +120 -0
  111. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.js.map +1 -0
  112. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue2.js +5 -0
  113. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue2.js.map +1 -0
  114. package/dist/components/date-time-picker/timezones.js +601 -0
  115. package/dist/components/date-time-picker/timezones.js.map +1 -0
  116. package/dist/components/date-time-picker/types.js +17 -0
  117. package/dist/components/date-time-picker/types.js.map +1 -0
  118. package/dist/components/date-time-picker/use-input-handler.d.ts +2 -2
  119. package/dist/components/date-time-picker/use-input-handler.js +31 -0
  120. package/dist/components/date-time-picker/use-input-handler.js.map +1 -0
  121. package/dist/components/date-time-picker/use-keyboard-handler.d.ts +2 -2
  122. package/dist/components/date-time-picker/use-keyboard-handler.js +308 -0
  123. package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -0
  124. package/dist/components/date-time-picker/utils.d.ts +1 -1
  125. package/dist/components/date-time-picker/utils.js +19 -0
  126. package/dist/components/date-time-picker/utils.js.map +1 -0
  127. package/dist/components/divider/RuiDivider.vue.js +22 -0
  128. package/dist/components/divider/RuiDivider.vue.js.map +1 -0
  129. package/dist/components/divider/RuiDivider.vue2.js +5 -0
  130. package/dist/components/divider/RuiDivider.vue2.js.map +1 -0
  131. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +2 -2
  132. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.js +11 -0
  133. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.js.map +1 -0
  134. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +585 -0
  135. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -0
  136. package/dist/components/forms/auto-complete/RuiAutoComplete.vue3.js +60 -0
  137. package/dist/components/forms/auto-complete/RuiAutoComplete.vue3.js.map +1 -0
  138. package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +1 -1
  139. package/dist/components/forms/checkbox/RuiCheckbox.vue.js +11 -0
  140. package/dist/components/forms/checkbox/RuiCheckbox.vue.js.map +1 -0
  141. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +137 -0
  142. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -0
  143. package/dist/components/forms/checkbox/RuiCheckbox.vue3.js +54 -0
  144. package/dist/components/forms/checkbox/RuiCheckbox.vue3.js.map +1 -0
  145. package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +1 -1
  146. package/dist/components/forms/radio-button/radio/RuiRadio.vue.js +11 -0
  147. package/dist/components/forms/radio-button/radio/RuiRadio.vue.js.map +1 -0
  148. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +115 -0
  149. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +1 -0
  150. package/dist/components/forms/radio-button/radio/RuiRadio.vue3.js +54 -0
  151. package/dist/components/forms/radio-button/radio/RuiRadio.vue3.js.map +1 -0
  152. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +1 -1
  153. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.js +11 -0
  154. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.js.map +1 -0
  155. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +78 -0
  156. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +1 -0
  157. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue3.js +9 -0
  158. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue3.js.map +1 -0
  159. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +5 -5
  160. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +82 -0
  161. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +1 -0
  162. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue2.js +5 -0
  163. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue2.js.map +1 -0
  164. package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +2 -2
  165. package/dist/components/forms/select/RuiMenuSelect.vue.js +11 -0
  166. package/dist/components/forms/select/RuiMenuSelect.vue.js.map +1 -0
  167. package/dist/components/forms/select/RuiMenuSelect.vue2.js +297 -0
  168. package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -0
  169. package/dist/components/forms/select/RuiMenuSelect.vue3.js +60 -0
  170. package/dist/components/forms/select/RuiMenuSelect.vue3.js.map +1 -0
  171. package/dist/components/forms/select/RuiSimpleSelect.vue.js +11 -0
  172. package/dist/components/forms/select/RuiSimpleSelect.vue.js.map +1 -0
  173. package/dist/components/forms/select/RuiSimpleSelect.vue2.js +67 -0
  174. package/dist/components/forms/select/RuiSimpleSelect.vue2.js.map +1 -0
  175. package/dist/components/forms/select/RuiSimpleSelect.vue3.js +21 -0
  176. package/dist/components/forms/select/RuiSimpleSelect.vue3.js.map +1 -0
  177. package/dist/components/forms/slider/RuiSlider.vue.d.ts +1 -1
  178. package/dist/components/forms/slider/RuiSlider.vue.js +11 -0
  179. package/dist/components/forms/slider/RuiSlider.vue.js.map +1 -0
  180. package/dist/components/forms/slider/RuiSlider.vue2.js +165 -0
  181. package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -0
  182. package/dist/components/forms/slider/RuiSlider.vue3.js +80 -0
  183. package/dist/components/forms/slider/RuiSlider.vue3.js.map +1 -0
  184. package/dist/components/forms/switch/RuiSwitch.vue.d.ts +1 -1
  185. package/dist/components/forms/switch/RuiSwitch.vue.js +11 -0
  186. package/dist/components/forms/switch/RuiSwitch.vue.js.map +1 -0
  187. package/dist/components/forms/switch/RuiSwitch.vue2.js +89 -0
  188. package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -0
  189. package/dist/components/forms/switch/RuiSwitch.vue3.js +54 -0
  190. package/dist/components/forms/switch/RuiSwitch.vue3.js.map +1 -0
  191. package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +2 -2
  192. package/dist/components/forms/text-area/RuiTextArea.vue.js +11 -0
  193. package/dist/components/forms/text-area/RuiTextArea.vue.js.map +1 -0
  194. package/dist/components/forms/text-area/RuiTextArea.vue2.js +252 -0
  195. package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -0
  196. package/dist/components/forms/text-area/RuiTextArea.vue3.js +92 -0
  197. package/dist/components/forms/text-area/RuiTextArea.vue3.js.map +1 -0
  198. package/dist/components/forms/text-field/RuiTextField.vue.d.ts +2 -2
  199. package/dist/components/forms/text-field/RuiTextField.vue.js +11 -0
  200. package/dist/components/forms/text-field/RuiTextField.vue.js.map +1 -0
  201. package/dist/components/forms/text-field/RuiTextField.vue2.js +220 -0
  202. package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -0
  203. package/dist/components/forms/text-field/RuiTextField.vue3.js +89 -0
  204. package/dist/components/forms/text-field/RuiTextField.vue3.js.map +1 -0
  205. package/dist/components/helpers/RuiFormTextDetail.vue.js +54 -0
  206. package/dist/components/helpers/RuiFormTextDetail.vue.js.map +1 -0
  207. package/dist/components/helpers/RuiFormTextDetail.vue2.js +5 -0
  208. package/dist/components/helpers/RuiFormTextDetail.vue2.js.map +1 -0
  209. package/dist/components/icons/RuiIcon.vue.d.ts +2 -2
  210. package/dist/components/icons/RuiIcon.vue.js +11 -0
  211. package/dist/components/icons/RuiIcon.vue.js.map +1 -0
  212. package/dist/components/icons/RuiIcon.vue2.js +60 -0
  213. package/dist/components/icons/RuiIcon.vue2.js.map +1 -0
  214. package/dist/components/icons/RuiIcon.vue3.js +29 -0
  215. package/dist/components/icons/RuiIcon.vue3.js.map +1 -0
  216. package/dist/components/index.d.ts +45 -45
  217. package/dist/components/index.js +92 -0
  218. package/dist/components/index.js.map +1 -0
  219. package/dist/components/loaders/RuiSkeletonBase.vue.js +11 -0
  220. package/dist/components/loaders/RuiSkeletonBase.vue.js.map +1 -0
  221. package/dist/components/loaders/RuiSkeletonBase.vue2.js +22 -0
  222. package/dist/components/loaders/RuiSkeletonBase.vue2.js.map +1 -0
  223. package/dist/components/loaders/RuiSkeletonBase.vue3.js +12 -0
  224. package/dist/components/loaders/RuiSkeletonBase.vue3.js.map +1 -0
  225. package/dist/components/loaders/RuiSkeletonLoader.vue.d.ts +1 -1
  226. package/dist/components/loaders/RuiSkeletonLoader.vue.js +11 -0
  227. package/dist/components/loaders/RuiSkeletonLoader.vue.js.map +1 -0
  228. package/dist/components/loaders/RuiSkeletonLoader.vue2.js +47 -0
  229. package/dist/components/loaders/RuiSkeletonLoader.vue2.js.map +1 -0
  230. package/dist/components/loaders/RuiSkeletonLoader.vue3.js +33 -0
  231. package/dist/components/loaders/RuiSkeletonLoader.vue3.js.map +1 -0
  232. package/dist/components/logos/RuiLogo.vue.js +114 -0
  233. package/dist/components/logos/RuiLogo.vue.js.map +1 -0
  234. package/dist/components/logos/RuiLogo.vue2.js +5 -0
  235. package/dist/components/logos/RuiLogo.vue2.js.map +1 -0
  236. package/dist/components/logos/logo.svg.js +5 -0
  237. package/dist/components/logos/logo.svg.js.map +1 -0
  238. package/dist/components/overlays/badge/RuiBadge.vue.d.ts +2 -2
  239. package/dist/components/overlays/badge/RuiBadge.vue.js +11 -0
  240. package/dist/components/overlays/badge/RuiBadge.vue.js.map +1 -0
  241. package/dist/components/overlays/badge/RuiBadge.vue2.js +95 -0
  242. package/dist/components/overlays/badge/RuiBadge.vue2.js.map +1 -0
  243. package/dist/components/overlays/badge/RuiBadge.vue3.js +77 -0
  244. package/dist/components/overlays/badge/RuiBadge.vue3.js.map +1 -0
  245. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js +34 -0
  246. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js.map +1 -0
  247. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue2.js +5 -0
  248. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue2.js.map +1 -0
  249. package/dist/components/overlays/dialog/RuiDialog.vue.js +11 -0
  250. package/dist/components/overlays/dialog/RuiDialog.vue.js.map +1 -0
  251. package/dist/components/overlays/dialog/RuiDialog.vue2.js +172 -0
  252. package/dist/components/overlays/dialog/RuiDialog.vue2.js.map +1 -0
  253. package/dist/components/overlays/dialog/RuiDialog.vue3.js +18 -0
  254. package/dist/components/overlays/dialog/RuiDialog.vue3.js.map +1 -0
  255. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +1 -1
  256. package/dist/components/overlays/menu/RuiMenu.vue.js +11 -0
  257. package/dist/components/overlays/menu/RuiMenu.vue.js.map +1 -0
  258. package/dist/components/overlays/menu/RuiMenu.vue2.js +221 -0
  259. package/dist/components/overlays/menu/RuiMenu.vue2.js.map +1 -0
  260. package/dist/components/overlays/menu/RuiMenu.vue3.js +21 -0
  261. package/dist/components/overlays/menu/RuiMenu.vue3.js.map +1 -0
  262. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.js +11 -0
  263. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.js.map +1 -0
  264. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js +112 -0
  265. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js.map +1 -0
  266. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue3.js +28 -0
  267. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue3.js.map +1 -0
  268. package/dist/components/overlays/notification/RuiNotification.vue.js +74 -0
  269. package/dist/components/overlays/notification/RuiNotification.vue.js.map +1 -0
  270. package/dist/components/overlays/notification/RuiNotification.vue2.js +5 -0
  271. package/dist/components/overlays/notification/RuiNotification.vue2.js.map +1 -0
  272. package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +1 -1
  273. package/dist/components/overlays/tooltip/RuiTooltip.vue.js +11 -0
  274. package/dist/components/overlays/tooltip/RuiTooltip.vue.js.map +1 -0
  275. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js +105 -0
  276. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js.map +1 -0
  277. package/dist/components/overlays/tooltip/RuiTooltip.vue3.js +27 -0
  278. package/dist/components/overlays/tooltip/RuiTooltip.vue3.js.map +1 -0
  279. package/dist/components/progress/RuiProgress.vue.d.ts +1 -1
  280. package/dist/components/progress/RuiProgress.vue.js +11 -0
  281. package/dist/components/progress/RuiProgress.vue.js.map +1 -0
  282. package/dist/components/progress/RuiProgress.vue2.js +98 -0
  283. package/dist/components/progress/RuiProgress.vue2.js.map +1 -0
  284. package/dist/components/progress/RuiProgress.vue3.js +48 -0
  285. package/dist/components/progress/RuiProgress.vue3.js.map +1 -0
  286. package/dist/components/steppers/RuiFooterStepper.vue.js +11 -0
  287. package/dist/components/steppers/RuiFooterStepper.vue.js.map +1 -0
  288. package/dist/components/steppers/RuiFooterStepper.vue2.js +143 -0
  289. package/dist/components/steppers/RuiFooterStepper.vue2.js.map +1 -0
  290. package/dist/components/steppers/RuiFooterStepper.vue3.js +31 -0
  291. package/dist/components/steppers/RuiFooterStepper.vue3.js.map +1 -0
  292. package/dist/components/steppers/RuiStepper.vue.d.ts +1 -1
  293. package/dist/components/steppers/RuiStepper.vue.js +11 -0
  294. package/dist/components/steppers/RuiStepper.vue.js.map +1 -0
  295. package/dist/components/steppers/RuiStepper.vue2.js +130 -0
  296. package/dist/components/steppers/RuiStepper.vue2.js.map +1 -0
  297. package/dist/components/steppers/RuiStepper.vue3.js +58 -0
  298. package/dist/components/steppers/RuiStepper.vue3.js.map +1 -0
  299. package/dist/components/steppers/RuiStepperCustomIcon.vue.d.ts +1 -1
  300. package/dist/components/steppers/RuiStepperCustomIcon.vue.js +11 -0
  301. package/dist/components/steppers/RuiStepperCustomIcon.vue.js.map +1 -0
  302. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js +38 -0
  303. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js.map +1 -0
  304. package/dist/components/steppers/RuiStepperCustomIcon.vue3.js +15 -0
  305. package/dist/components/steppers/RuiStepperCustomIcon.vue3.js.map +1 -0
  306. package/dist/components/steppers/RuiStepperIcon.vue.d.ts +1 -1
  307. package/dist/components/steppers/RuiStepperIcon.vue.js +11 -0
  308. package/dist/components/steppers/RuiStepperIcon.vue.js.map +1 -0
  309. package/dist/components/steppers/RuiStepperIcon.vue2.js +43 -0
  310. package/dist/components/steppers/RuiStepperIcon.vue2.js.map +1 -0
  311. package/dist/components/steppers/RuiStepperIcon.vue3.js +21 -0
  312. package/dist/components/steppers/RuiStepperIcon.vue3.js.map +1 -0
  313. package/dist/components/tables/RuiDataTable.vue.d.ts +2 -2
  314. package/dist/components/tables/RuiDataTable.vue.js +11 -0
  315. package/dist/components/tables/RuiDataTable.vue.js.map +1 -0
  316. package/dist/components/tables/RuiDataTable.vue2.js +943 -0
  317. package/dist/components/tables/RuiDataTable.vue2.js.map +1 -0
  318. package/dist/components/tables/RuiDataTable.vue3.js +79 -0
  319. package/dist/components/tables/RuiDataTable.vue3.js.map +1 -0
  320. package/dist/components/tables/RuiExpandButton.vue.d.ts +1 -1
  321. package/dist/components/tables/RuiExpandButton.vue.js +11 -0
  322. package/dist/components/tables/RuiExpandButton.vue.js.map +1 -0
  323. package/dist/components/tables/RuiExpandButton.vue2.js +42 -0
  324. package/dist/components/tables/RuiExpandButton.vue2.js.map +1 -0
  325. package/dist/components/tables/RuiExpandButton.vue3.js +15 -0
  326. package/dist/components/tables/RuiExpandButton.vue3.js.map +1 -0
  327. package/dist/components/tables/RuiTableHead.vue.js +11 -0
  328. package/dist/components/tables/RuiTableHead.vue.js.map +1 -0
  329. package/dist/components/tables/RuiTableHead.vue2.js +195 -0
  330. package/dist/components/tables/RuiTableHead.vue2.js.map +1 -0
  331. package/dist/components/tables/RuiTableHead.vue3.js +69 -0
  332. package/dist/components/tables/RuiTableHead.vue3.js.map +1 -0
  333. package/dist/components/tables/RuiTablePagination.vue.js +11 -0
  334. package/dist/components/tables/RuiTablePagination.vue.js.map +1 -0
  335. package/dist/components/tables/RuiTablePagination.vue2.js +196 -0
  336. package/dist/components/tables/RuiTablePagination.vue2.js.map +1 -0
  337. package/dist/components/tables/RuiTablePagination.vue3.js +28 -0
  338. package/dist/components/tables/RuiTablePagination.vue3.js.map +1 -0
  339. package/dist/components/tables/table_no_data_placeholder.svg.js +5 -0
  340. package/dist/components/tables/table_no_data_placeholder.svg.js.map +1 -0
  341. package/dist/components/tables/table_no_data_placeholder_dark.svg.js +5 -0
  342. package/dist/components/tables/table_no_data_placeholder_dark.svg.js.map +1 -0
  343. package/dist/components/tabs/tab/RuiTab.vue.d.ts +1 -1
  344. package/dist/components/tabs/tab/RuiTab.vue.js +11 -0
  345. package/dist/components/tabs/tab/RuiTab.vue.js.map +1 -0
  346. package/dist/components/tabs/tab/RuiTab.vue2.js +135 -0
  347. package/dist/components/tabs/tab/RuiTab.vue2.js.map +1 -0
  348. package/dist/components/tabs/tab/RuiTab.vue3.js +17 -0
  349. package/dist/components/tabs/tab/RuiTab.vue3.js.map +1 -0
  350. package/dist/components/tabs/tab-item/RuiTabItem.vue.js +11 -0
  351. package/dist/components/tabs/tab-item/RuiTabItem.vue.js.map +1 -0
  352. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js +51 -0
  353. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js.map +1 -0
  354. package/dist/components/tabs/tab-item/RuiTabItem.vue3.js +9 -0
  355. package/dist/components/tabs/tab-item/RuiTabItem.vue3.js.map +1 -0
  356. package/dist/components/tabs/tab-items/RuiTabItems.vue.js +11 -0
  357. package/dist/components/tabs/tab-items/RuiTabItems.vue.js.map +1 -0
  358. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js +90 -0
  359. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js.map +1 -0
  360. package/dist/components/tabs/tab-items/RuiTabItems.vue3.js +9 -0
  361. package/dist/components/tabs/tab-items/RuiTabItems.vue3.js.map +1 -0
  362. package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +1 -1
  363. package/dist/components/tabs/tabs/RuiTabs.vue.js +11 -0
  364. package/dist/components/tabs/tabs/RuiTabs.vue.js.map +1 -0
  365. package/dist/components/tabs/tabs/RuiTabs.vue2.js +281 -0
  366. package/dist/components/tabs/tabs/RuiTabs.vue2.js.map +1 -0
  367. package/dist/components/tabs/tabs/RuiTabs.vue3.js +20 -0
  368. package/dist/components/tabs/tabs/RuiTabs.vue3.js.map +1 -0
  369. package/dist/components/time-picker/RuiTimePicker.vue.d.ts +1 -1
  370. package/dist/components/time-picker/RuiTimePicker.vue.js +11 -0
  371. package/dist/components/time-picker/RuiTimePicker.vue.js.map +1 -0
  372. package/dist/components/time-picker/RuiTimePicker.vue2.js +414 -0
  373. package/dist/components/time-picker/RuiTimePicker.vue2.js.map +1 -0
  374. package/dist/components/time-picker/RuiTimePicker.vue3.js +21 -0
  375. package/dist/components/time-picker/RuiTimePicker.vue3.js.map +1 -0
  376. package/dist/composables/breakpoint.js +49 -0
  377. package/dist/composables/breakpoint.js.map +1 -0
  378. package/dist/composables/defaults/table.js +23 -0
  379. package/dist/composables/defaults/table.js.map +1 -0
  380. package/dist/composables/dropdown-menu.js +218 -0
  381. package/dist/composables/dropdown-menu.js.map +1 -0
  382. package/dist/composables/forms/auto-complete/focus.js +71 -0
  383. package/dist/composables/forms/auto-complete/focus.js.map +1 -0
  384. package/dist/composables/forms/auto-complete/index.d.ts +4 -4
  385. package/dist/composables/forms/auto-complete/keyboard-navigation.js +133 -0
  386. package/dist/composables/forms/auto-complete/keyboard-navigation.js.map +1 -0
  387. package/dist/composables/forms/auto-complete/search.js +93 -0
  388. package/dist/composables/forms/auto-complete/search.js.map +1 -0
  389. package/dist/composables/forms/auto-complete/value.js +129 -0
  390. package/dist/composables/forms/auto-complete/value.js.map +1 -0
  391. package/dist/composables/icons.js +60 -0
  392. package/dist/composables/icons.js.map +1 -0
  393. package/dist/composables/index.d.ts +3 -3
  394. package/dist/composables/index.js +9 -0
  395. package/dist/composables/index.js.map +1 -0
  396. package/dist/composables/popper.js +164 -0
  397. package/dist/composables/popper.js.map +1 -0
  398. package/dist/composables/sticky-header.js +105 -0
  399. package/dist/composables/sticky-header.js.map +1 -0
  400. package/dist/composables/theme.d.ts +1 -1
  401. package/dist/composables/theme.js +75 -0
  402. package/dist/composables/theme.js.map +1 -0
  403. package/dist/composables/timeout-manager.js +21 -0
  404. package/dist/composables/timeout-manager.js.map +1 -0
  405. package/dist/composables/use-rui-i18n.js +24 -0
  406. package/dist/composables/use-rui-i18n.js.map +1 -0
  407. package/dist/consts/colors.js +50 -0
  408. package/dist/consts/colors.js.map +1 -0
  409. package/dist/consts/time-accuracy.js +9 -0
  410. package/dist/consts/time-accuracy.js.map +1 -0
  411. package/dist/i18n/keys.js +20 -0
  412. package/dist/i18n/keys.js.map +1 -0
  413. package/dist/icons/icons_1.js +2503 -0
  414. package/dist/icons/icons_1.js.map +1 -0
  415. package/dist/icons/icons_2.js +2503 -0
  416. package/dist/icons/icons_2.js.map +1 -0
  417. package/dist/icons/icons_3.js +2503 -0
  418. package/dist/icons/icons_3.js.map +1 -0
  419. package/dist/icons/icons_4.js +923 -0
  420. package/dist/icons/icons_4.js.map +1 -0
  421. package/dist/icons/index.d.ts +4 -4
  422. package/dist/icons/index.js +9 -0
  423. package/dist/icons/index.js.map +1 -0
  424. package/dist/index.d.ts +11 -11
  425. package/dist/index.js +1852 -0
  426. package/dist/index.js.map +1 -0
  427. package/dist/style.css +12852 -1
  428. package/dist/theme/index.js +185 -0
  429. package/dist/theme/index.js.map +1 -0
  430. package/dist/types/stepper.js +17 -0
  431. package/dist/types/stepper.js.map +1 -0
  432. package/dist/types/theme.js +27 -0
  433. package/dist/types/theme.js.map +1 -0
  434. package/dist/utils/assert.js +14 -0
  435. package/dist/utils/assert.js.map +1 -0
  436. package/dist/utils/blockie.js +79 -0
  437. package/dist/utils/blockie.js.map +1 -0
  438. package/dist/utils/form-text-detail.js +31 -0
  439. package/dist/utils/form-text-detail.js.map +1 -0
  440. package/dist/utils/generate-id.js +21 -0
  441. package/dist/utils/generate-id.js.map +1 -0
  442. package/dist/utils/helpers.js +51 -0
  443. package/dist/utils/helpers.js.map +1 -0
  444. package/dist/utils/is-equal.js +33 -0
  445. package/dist/utils/is-equal.js.map +1 -0
  446. package/dist/web-types.json +1 -1
  447. package/package.json +16 -14
  448. package/dist/components/index.es.js +0 -8030
  449. package/dist/composables/index-CC7A7CEh.js +0 -737
  450. package/dist/composables/index.es.js +0 -7
  451. package/dist/consts/colors-D563Ic3q.js +0 -48
  452. package/dist/consts/forms/auto-complete/index-l0sNRNKZ.js +0 -2
  453. package/dist/consts/time-accuracy-BnKA5GyT.js +0 -9
  454. package/dist/i18n/keys-CNGXWOJX.js +0 -20
  455. package/dist/icons/icons_1.es.js +0 -2004
  456. package/dist/icons/icons_2.es.js +0 -2004
  457. package/dist/icons/icons_3.es.js +0 -2004
  458. package/dist/icons/icons_4.es.js +0 -740
  459. package/dist/icons/index.es.js +0 -1697
  460. package/dist/index-D7l4d7N2.js +0 -54
  461. package/dist/index.es.js +0 -1757
  462. package/dist/theme/index.es.js +0 -177
  463. package/dist/types/index-CN6Ip1GL.js +0 -39
  464. package/dist/utils/index-DJ-ueLCs.js +0 -158
  465. package/dist/vendor-Hqbg5uCG.js +0 -1931
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiDataTable.vue2.js","sources":["../../../src/components/tables/RuiDataTable.vue"],"sourcesContent":["<script\n lang=\"ts\"\n setup\n generic=\"T extends object, IdType extends keyof T = keyof T\"\n>\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCheckbox from '@/components/forms/checkbox/RuiCheckbox.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiTooltip from '@/components/overlays/tooltip/RuiTooltip.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport RuiExpandButton from '@/components/tables/RuiExpandButton.vue';\nimport RuiTableHead, { type GroupData, type GroupKeys, type NoneSortableTableColumn, type SortColumn, type TableColumn, type TableRowKey, type TableRowKeyData, type TableSortData } from '@/components/tables/RuiTableHead.vue';\nimport RuiTablePagination, { type TablePaginationData } from '@/components/tables/RuiTablePagination.vue';\nimport noDataPlaceholder from '@/components/tables/table_no_data_placeholder.svg';\nimport noDataPlaceholderDark from '@/components/tables/table_no_data_placeholder_dark.svg';\nimport { assert } from '@/utils/assert';\n\nexport interface TableOptions<T> {\n pagination?: TablePaginationData;\n sort?: TableSortData<T>;\n}\n\nexport interface GroupHeader<T> {\n __header__: true;\n identifier: string;\n group: Partial<T>;\n}\n\nexport type GroupedTableRow<T> = T | GroupHeader<T>;\n\nexport interface Props<T, K extends keyof T> {\n /**\n * list of items for each row\n */\n rows: T[];\n /**\n * the attribute used to identify each row uniquely for selection, usually `id`\n */\n rowAttr: K;\n /**\n * model for selected rows, add a v-model to support row selection\n */\n modelValue?: T[K][];\n /**\n * model for internal searching\n */\n search?: string;\n /**\n * model for items per page\n * will be used if the `pagination` model isn't specified\n */\n itemsPerPage?: number;\n /**\n * model for paginating data\n * @example v-model:pagination=\"{ total: 10, limit: 5, page: 1 }\"\n */\n pagination?: TablePaginationData;\n /**\n * modifiers for specifying externally paginated tables\n * use this when api controls pagination\n * @example v-model:pagination.external=\"{ total: 10, limit: 5, page: 1 }\"\n */\n paginationModifiers?: {\n external: boolean;\n };\n /**\n * model for sort column/columns data\n * single column sort\n * @example v-model:sort=\"{ column: 'name', direction: 'asc' }\"\n * multi columns sort\n * @example v-model:sort=\"[{ column: 'name', direction: 'asc' }]\"\n */\n sort?: TableSortData<T>;\n /**\n * modifiers for specifying externally sorted tables\n * use this when api controls sorting\n * single column sort\n * @example v-model:sort.external=\"{ column: 'name', direction: 'asc' }\"\n * multi columns sort\n * @example v-model:sort.external=\"[{ column: 'name', direction: 'asc' }]\"\n */\n sortModifiers?: {\n external: boolean;\n };\n /**\n * list of column definitions\n */\n cols?: TableColumn<T>[];\n /**\n * attribute to use from column definitions to display column titles\n */\n columnAttr?: keyof TableColumn<T>;\n /**\n * flag to show a more or less spacious table\n */\n dense?: boolean;\n /**\n * flag to outline the flag with a border\n */\n outlined?: boolean;\n /**\n * should add zebra-striping to the table row\n */\n striped?: boolean;\n /**\n * flag to show loading state of the table\n * triggers indefinite progress at the bottom of the table header\n */\n loading?: boolean;\n disablePerPage?: boolean;\n /**\n * data to display for empty state\n * text and icon\n * @example :empty=\"{ icon: 'transactions-line', label: 'No transactions found' }\"\n */\n empty?: {\n label?: string;\n description?: string;\n };\n /**\n * should hide the header navigation\n */\n hideDefaultHeader?: boolean;\n /**\n * should hide the footer navigation\n */\n hideDefaultFooter?: boolean;\n\n rounded?: 'sm' | 'md' | 'lg';\n /**\n * model for expanded rows\n */\n expanded?: T[];\n /**\n * make expansion work like accordion\n */\n singleExpand?: boolean;\n /**\n * make table head stick to top on scroll\n */\n stickyHeader?: boolean;\n stickyOffset?: number;\n /**\n * Affects how the items per page work across the app.\n * When true, changing the items per page setting in one table will affect other tables.\n */\n globalItemsPerPage?: boolean;\n /**\n * model for grouping column/columns data\n * single column grouping\n * @example v-model:group=\"'name'\"\n * multi columns grouping\n * @example v-model:group=\"['name', 'country']\"\n */\n group?: TableRowKeyData<T>;\n groupExpandButtonPosition?: 'start' | 'end';\n collapsed?: T[];\n disabledRows?: T[];\n multiPageSelect?: boolean;\n scroller?: HTMLElement | null;\n itemClass?: ((item: T) => string) | string;\n}\n\ndefineOptions({\n name: 'RuiDataTable',\n});\n\nconst props = withDefaults(defineProps<Props<T, IdType>>(), {\n modelValue: undefined,\n search: '',\n cols: undefined,\n itemsPerPage: 10,\n pagination: undefined,\n columnAttr: 'label',\n sort: undefined,\n loading: false,\n dense: false,\n outlined: false,\n paginationModifiers: undefined,\n sortModifiers: undefined,\n empty: () => ({ label: 'No item found' }),\n rounded: 'md',\n hideDefaultHeader: false,\n hideDefaultFooter: false,\n disablePerPage: false,\n striped: false,\n expanded: undefined,\n singleExpand: false,\n stickyHeader: false,\n stickyOffset: undefined,\n globalItemsPerPage: undefined,\n group: undefined,\n collapsed: undefined,\n disabledRows: undefined,\n multiPageSelect: false,\n groupExpandButtonPosition: 'start',\n scroller: undefined,\n itemClass: '',\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value?: T[IdType][]): void;\n (e: 'update:expanded', value: T[]): void;\n (e: 'update:pagination', value: TablePaginationData): void;\n (e: 'update:sort', value?: TableSortData<T>): void;\n (e: 'update:options', value: TableOptions<T>): void;\n (e: 'update:group', value?: GroupKeys<T>): void;\n (e: 'update:collapsed', value?: T[]): void;\n (e: 'copy:group', value: GroupData<T>): void;\n}>();\n\nconst slots = defineSlots<\n Partial<Record<`header.${string}`, (props: {\n column: TableColumn<T>;\n }) => any>\n & Record<`item.${string}`, (props: {\n column: TableColumn<T>;\n row: T;\n index: number;\n }) => any>\n & {\n 'body.prepend': (props: { colspan: number }) => any;\n 'body.append': (props: { colspan: number }) => any;\n 'group.header': (props: {\n colspan: number;\n header: GroupHeader<T>;\n isOpen: boolean;\n toggle: () => void;\n }) => any;\n 'group.header.content': (props: {\n header: GroupHeader<T>;\n groupKey: string;\n }) => any;\n 'expanded-item': (props: { row: T; index: number }) => any;\n 'no-data': () => any;\n 'empty-description': () => any;\n 'tfoot': () => any;\n }>\n>();\n\nconst { stickyHeader, collapsed, modelValue, disabledRows } = toRefs(props);\nconst tableDefaults = useTable();\n\nconst { isDark } = useRotkiTheme();\n\nconst stickyHeaderOffset = computed(() => props.stickyOffset !== undefined ? props.stickyOffset : get(tableDefaults.stickyOffset));\n\nfunction isRow<T extends object>(item: GroupedTableRow<T>): item is T {\n return !('__header__' in item);\n}\n\nfunction isHeaderSlot(slotName: string): slotName is `header.${string}` {\n return slotName.startsWith('header.');\n}\n\nconst { stick, table, tableScroller } = useStickyTableHeader(\n stickyHeader,\n get(stickyHeaderOffset),\n);\n\nconst expandable = computed(() => props.expanded && slots['expanded-item']);\n\nconst headerSlots = computed<`header.${string}`[]>(() =>\n Object.keys(slots).filter(isHeaderSlot),\n);\n\nconst globalItemsPerPageSettings = computed(() => {\n if (props.globalItemsPerPage !== undefined)\n return props.globalItemsPerPage;\n\n return get(tableDefaults.globalItemsPerPage);\n});\n\nconst getKeys = <T extends object>(t: T) => Object.keys(t) as TableRowKey<T>[];\n\nconst groupKeys: ComputedRef<TableRowKey<T>[]> = computed(() => {\n const groupBy = props.group;\n\n if (!groupBy) {\n // no grouping\n return [];\n }\n\n if (!Array.isArray(groupBy)) {\n // currently only supports a single grouping\n // only the first item in the array is used\n return [groupBy];\n }\n\n return groupBy;\n});\n\nconst groupKey = computed(() => get(groupKeys).join(':'));\n\nconst isGrouped = computed(() => !!get(groupKey));\n\n/**\n * Prepare the columns from props or generate using first item in the list\n */\nconst columns = computed<TableColumn<T>[]>(() => {\n const data\n = props.cols\n ?? getKeys(props.rows[0] ?? {}).map(\n key =>\n ({\n key,\n [props.columnAttr]: String(key),\n }) satisfies NoneSortableTableColumn<T>,\n );\n\n const hasExpandColumn = data.some(row => row.key === 'expand');\n\n if (get(expandable) && !hasExpandColumn) {\n return [\n ...data,\n {\n key: 'expand' as TableRowKey<T>,\n sortable: false,\n class: 'w-16',\n cellClass: '!py-0 w-16',\n align: 'end',\n } satisfies NoneSortableTableColumn<T>,\n ];\n }\n\n const groupByKeys = get(groupKeys);\n\n if (groupByKeys.length === 0)\n return data;\n\n return data.filter(\n column => !groupByKeys.includes(column.key as TableRowKey<T>),\n );\n});\n\nconst itemsLength = ref(0);\n\nconst selectedData = computed<T[IdType][] | undefined>({\n get() {\n return get(modelValue);\n },\n set(value) {\n emit('update:model-value', value);\n },\n});\n\nconst internalSelectedData: Ref<T[IdType][]> = ref([]);\n\nwatchImmediate(modelValue, (modelValue) => {\n set(internalSelectedData, modelValue);\n});\n\nconst rowIdentifier = computed(() => props.rowAttr);\n\nconst internalPaginationState: Ref<TablePaginationData | undefined> = ref();\nconst collapsedRows: Ref<T[]> = ref([]);\n\nconst pagination = computed(() => props.pagination);\n\nwatchImmediate(pagination, (pagination) => {\n set(internalPaginationState, pagination);\n});\n\nwatchImmediate(collapsed, (value) => {\n set(collapsedRows, value ?? []);\n});\n\n/**\n * Pagination is different for search\n * since search is only used for internal filtering\n * we return the length of search results as total\n */\nconst paginationData: Ref<TablePaginationData> = computed({\n get() {\n const paginated = get(internalPaginationState);\n if (!paginated) {\n return {\n total: get(itemsLength),\n limit: props.itemsPerPage,\n page: 1,\n };\n }\n\n if (props.paginationModifiers?.external)\n return paginated;\n\n return {\n total: get(itemsLength),\n limit: paginated.limit,\n page: paginated.page,\n limits: paginated.limits,\n };\n },\n set(value: TablePaginationData) {\n set(internalPaginationState, value);\n emit('update:pagination', value);\n emit('update:options', {\n pagination: value,\n sort: props.sort,\n });\n },\n});\n\nconst sortData = computed({\n get() {\n return props.sort;\n },\n set(value) {\n if (!props.multiPageSelect)\n onToggleAll(false);\n resetCheckboxShiftState();\n emit('update:sort', value);\n emit('update:options', {\n sort: value,\n pagination: get(pagination),\n });\n },\n});\n\n/**\n * A mapping of the sort columns\n * for easily checking if a column is sorted instead of looping through the array\n */\nconst sortedMap = computed(() => {\n const mapped: Partial<Record<TableRowKey<T>, SortColumn<T>>> = {};\n const sortBy = get(sortData);\n if (!sortBy)\n return mapped;\n\n if (!Array.isArray(sortBy)) {\n if (sortBy.column)\n mapped[sortBy.column] = sortBy;\n\n return mapped;\n }\n\n return sortBy.reduce((acc, curr) => {\n if (!curr.column)\n return acc;\n\n return { ...acc, [curr.column]: curr };\n }, mapped);\n});\n\n/**\n * rows filtered based on search query if it exists\n */\nconst searchData = computed<T[]>(() => {\n const query = props.search?.toLocaleLowerCase();\n if (!query)\n return props.rows;\n\n return props.rows.filter(row =>\n getKeys(row).some(key =>\n `${row[key]}`.toLocaleLowerCase().includes(query),\n ),\n );\n});\n\n/**\n * sort the search results\n */\nconst sorted: ComputedRef<T[]> = computed(() => {\n const sortBy = get(sortData);\n const data = [...get(searchData)];\n if (!sortBy || props.sortModifiers?.external)\n return data;\n\n const sortOptions: Intl.CollatorOptions = { sensitivity: 'accent', usage: 'sort' };\n\n const sort = (by: SortColumn<T>) => {\n data.sort((a, b) => {\n const column = by.column;\n if (!column)\n return 0;\n\n let [aValue, bValue] = [a[column], b[column]];\n if (by.direction === 'desc')\n [aValue, bValue] = [bValue, aValue];\n\n const aNumber = Number(aValue);\n const bNumber = Number(bValue);\n if (!isNaN(aNumber) && !isNaN(bNumber))\n return aNumber - bNumber;\n\n return `${aValue}`.localeCompare(\n `${bValue}`,\n undefined,\n sortOptions,\n );\n });\n };\n\n if (!Array.isArray(sortBy))\n sort(sortBy);\n else\n [...sortBy].reverse().forEach(sort);\n\n return data;\n});\n\n/**\n * comprises search, sorted paginated, and grouped data\n */\nconst mappedGroups = computed<Record<string, GroupedTableRow<T>[]>>(() => {\n if (!get(isGrouped)) {\n // no grouping\n return {};\n }\n\n const result = get(sorted);\n const identifier = props.rowAttr;\n\n return result.reduce((acc: Record<string, GroupedTableRow<T>[]>, row) => {\n if (!isDefined(row[identifier]) || row[identifier] === '')\n return acc;\n\n const group = getRowGroup(row);\n const groupVal = Object.values(group).filter(isDefined).join(',');\n if (!acc[groupVal]) {\n acc[groupVal] = [\n {\n __header__: true,\n group,\n identifier: groupVal,\n } satisfies GroupHeader<T>,\n ];\n }\n\n acc[groupVal].push(row);\n\n return acc;\n }, {});\n});\n\n/**\n * comprises search, sorted paginated, and grouped data\n */\nconst grouped = computed<GroupedTableRow<T>[]>(() => {\n const result = get(sorted);\n const groupByKey = get(groupKey);\n\n if (!groupByKey) {\n // no grouping\n return result;\n }\n\n return Object.values(get(mappedGroups)).flatMap(grouped => grouped);\n});\n\n/**\n * comprises search, sorted and paginated data\n */\nconst filtered = computed<GroupedTableRow<T>[]>(() => {\n const result = get(grouped);\n\n const paginated = get(paginationData);\n const limit = paginated.limit;\n if (paginated && !props.paginationModifiers?.external) {\n const start = (paginated.page - 1) * limit;\n const end = start + limit;\n const preGroups = result.slice(0, start + 1).filter(item => !isRow(item));\n const postGroups = result.slice(start + 1, end + preGroups.length).filter(item => !isRow(item));\n const data = result.slice(start + preGroups.length, end + preGroups.length + postGroups.length);\n const nearestGroup = preGroups.at(-1);\n if (data.length > 0) {\n // if our first item is not a group, push in the nearest group\n const firstItem = data[0];\n assert(firstItem);\n if (isRow(firstItem) && nearestGroup)\n data.unshift(nearestGroup);\n const lastItem = data.at(-1);\n // if our last item is a group, remove it\n if (lastItem && !isRow(lastItem))\n data.pop();\n }\n\n return data.filter(row => !isHiddenRow(row));\n }\n\n return result.filter(row => !isHiddenRow(row));\n});\n\n/**\n * list if ids of the visible table rows used for check-all and uncheck-all\n */\nconst visibleIdentifiers = computed<T[IdType][]>(() => {\n const selectBy = props.rowAttr;\n\n if (!selectBy)\n return [];\n\n return get(filtered)\n .filter(isRow)\n .map(row => row[selectBy]);\n});\n\n/**\n * Flag to know when all rows are selected for the current screen\n */\nconst isAllSelected = computed<boolean>(() => {\n const selectedRows = get(selectedData);\n if (!selectedRows)\n return false;\n\n return (\n selectedRows.length > 0\n && get(visibleIdentifiers).every(id => selectedRows.includes(id))\n );\n});\n\nconst indeterminate = computed(() => {\n const selectedRows = get(selectedData);\n if (!selectedRows)\n return false;\n\n return selectedRows.length > 0 && !get(isAllSelected);\n});\n\nconst noData = computed(() => get(filtered).length === 0);\n\nconst colspan = computed(() => {\n let columnLength = get(columns).length;\n if (get(selectedData))\n columnLength++;\n\n return columnLength;\n});\n\nconst isSortedBy = (key: TableRowKey<T>) => key in get(sortedMap);\n\nfunction getSortIndex(key: TableRowKey<T>) {\n const sortBy = get(sortData);\n\n if (!sortBy || !Array.isArray(sortBy) || !isSortedBy(key))\n return -1;\n\n return sortBy.findIndex(sort => sort.column === key) ?? -1;\n}\n\nfunction isSelected(identifier: T[IdType]) {\n const selection = get(selectedData);\n if (!selection)\n return false;\n\n return selection.includes(identifier);\n}\n\nfunction isDisabledRow(rowKey: T[IdType]) {\n const identifier = props.rowAttr;\n if (!identifier)\n return false;\n\n return !!get(disabledRows)?.some((disabledRow: T) => rowKey === disabledRow[identifier]);\n}\n\nfunction isExpanded(identifier: T[IdType]) {\n const { expanded } = props;\n if (!expanded?.length)\n return false;\n\n return expanded.some(data => data[props.rowAttr] === identifier);\n}\n\nfunction onToggleExpand(row: T) {\n const { expanded } = props;\n if (!expanded)\n return;\n\n const key = props.rowAttr;\n const rowExpanded = isExpanded(row[key]);\n\n if (props.singleExpand)\n return emit('update:expanded', rowExpanded ? [] : [row]);\n\n return emit(\n 'update:expanded',\n rowExpanded\n ? expanded.filter(item => item[key] !== row[key])\n : [...expanded, row],\n );\n}\n\nfunction getRowGroup(row: T): Partial<T> {\n return get(groupKeys).reduce((acc, key) => ({ ...acc, [key]: row[key] }), {});\n}\n\nfunction getGroupRows(groupVal: string) {\n if (!get(isGrouped))\n return [];\n\n const groupRows = get(mappedGroups)[groupVal];\n assert(groupRows);\n return groupRows.filter(isRow);\n}\n\nfunction compareGroupsFn(a: T, b: Partial<T>) {\n const group = get(groupKeys);\n if (group.length === 0)\n return false;\n\n return group.every(key => a[key] === b[key]);\n}\n\nfunction isExpandedGroup(value: Partial<T>) {\n return get(collapsedRows).every(row => !compareGroupsFn(row, value));\n}\n\nfunction isHiddenRow(row: GroupedTableRow<T>) {\n const identifier = props.rowAttr;\n return (\n get(isGrouped)\n && get(collapsedRows).some(\n value => isRow(row) && row[identifier] === value[identifier],\n )\n );\n}\n\nfunction onToggleExpandGroup(group: Partial<T>, value?: string) {\n if (!value)\n return;\n\n const collapsed = get(collapsedRows);\n\n const groupExpanded = isExpandedGroup(group);\n\n const groupRows = getGroupRows(value);\n\n set(\n collapsedRows,\n groupExpanded\n ? [...collapsed, ...groupRows]\n : collapsed.filter(row => !compareGroupsFn(row, group)),\n );\n\n emit('update:collapsed', get(collapsedRows));\n}\n\nfunction onUngroup() {\n set(collapsedRows, []);\n\n emit('update:collapsed', []);\n emit('update:group', Array.isArray(props.group) ? [] : undefined);\n}\n\nfunction onCopyGroup(value: GroupData<T>) {\n emit('copy:group', value);\n}\n\n/**\n * Sort to handle single sort or multiple sort columns\n */\nfunction onSort({\n key,\n direction,\n}: {\n key: TableRowKey<T>;\n direction?: 'asc' | 'desc';\n}) {\n const sortBy = get(sortData);\n if (!sortBy)\n return;\n\n if (!Array.isArray(sortBy)) {\n if (isSortedBy(key)) {\n const newDirection = !direction || direction === 'asc' ? 'desc' : 'asc';\n\n if (sortBy.direction === newDirection) {\n set(sortData, { ...sortBy, column: undefined, direction: 'asc' });\n }\n else {\n set(sortData, {\n ...sortBy,\n direction: sortBy.direction === 'asc' ? 'desc' : 'asc',\n });\n }\n }\n else {\n set(sortData, { column: key, direction: direction || 'asc' });\n }\n return;\n }\n\n if (isSortedBy(key)) {\n const newDirection = !direction || direction === 'asc' ? 'desc' : 'asc';\n\n const index = getSortIndex(key);\n const sortByCol = sortBy[index];\n assert(sortByCol);\n\n if (sortByCol.direction === newDirection)\n sortBy.splice(index, 1);\n else\n sortByCol.direction = sortByCol.direction === 'asc' ? 'desc' : 'asc';\n\n set(sortData, sortBy);\n }\n else {\n set(sortData, [...sortBy, { column: key, direction: direction || 'asc' }]);\n }\n}\n\nfunction isSelectable(rowKey: T[IdType]): boolean {\n return isSelected(rowKey) || !isDisabledRow(rowKey);\n}\n\nfunction mustSelect(rowKey: T[IdType]): boolean {\n return isSelected(rowKey) && isDisabledRow(rowKey);\n}\n\n/**\n * toggles selected rows\n * @param {boolean} checked checkbox state\n */\nfunction onToggleAll(checked: boolean) {\n const selectedRows = get(selectedData) ?? [];\n if (!props.multiPageSelect) {\n if (checked)\n set(selectedData, get(visibleIdentifiers).filter(isSelectable));\n else\n set(selectedData, get(visibleIdentifiers).filter(mustSelect));\n }\n else {\n if (checked) {\n set(\n selectedData,\n Array.from(new Set(\n [\n ...selectedRows,\n ...get(visibleIdentifiers).filter(isSelectable),\n ],\n )),\n );\n }\n else {\n set(\n selectedData,\n selectedRows.filter(rowKey => !get(visibleIdentifiers).includes(rowKey) || get(visibleIdentifiers).filter(mustSelect).includes(rowKey)),\n );\n }\n }\n}\n\nconst shiftClicked: Ref<boolean> = ref(false);\nconst lastSelectedIndex: Ref<number> = ref(-1);\n\nfunction resetCheckboxShiftState() {\n set(shiftClicked, false);\n set(lastSelectedIndex, -1);\n}\n\n/**\n * toggles a single row\n * @param {boolean} checked checkbox state\n * @param {string} value the id of the selected row\n * @param {boolean} userAction whether the select triggered by user manually\n *\n */\nfunction onSelect(checked: boolean, value: T[typeof props.rowAttr], userAction = false) {\n if (get(shiftClicked) && userAction)\n return;\n\n const selectedRows = get(internalSelectedData);\n if (!selectedRows)\n return false;\n\n const selected = isSelected(value);\n\n if (checked && !selected) {\n set(internalSelectedData, [...selectedRows, value]);\n }\n else if (!checked && selected) {\n set(\n internalSelectedData,\n [...selectedRows].filter(r => r !== value),\n );\n }\n\n if (userAction)\n set(selectedData, get(internalSelectedData));\n}\n\nfunction onCheckboxClick(event: any, value: T[typeof props.rowAttr], index: number) {\n const input = event.currentTarget.querySelector('input');\n const nodeName = event.target.nodeName;\n\n const shiftKey = event.shiftKey;\n set(shiftClicked, shiftKey);\n\n if (input && nodeName !== 'INPUT') {\n if (shiftKey) {\n setTimeout(() => {\n let lastIndex = get(lastSelectedIndex);\n if (lastIndex === -1)\n lastIndex = index;\n const tableData = get(filtered);\n const lastSelectedData = tableData[lastIndex];\n assert(lastSelectedData);\n\n if (isRow(lastSelectedData)) {\n const id = get(rowIdentifier);\n const valueToApply = isSelected(lastSelectedData[id]);\n\n if (lastIndex === index) {\n onSelect(!valueToApply, value);\n }\n else {\n const from = Math.min(lastIndex, index);\n const to = Math.max(lastIndex, index);\n\n for (let i = from; i <= to; i++) {\n const currSelectedData = tableData[i];\n assert(currSelectedData);\n if (isRow(currSelectedData) && !isDisabledRow(currSelectedData[id]))\n onSelect(valueToApply, currSelectedData[id]);\n }\n }\n\n set(lastSelectedIndex, index);\n set(selectedData, get(internalSelectedData));\n }\n }, 1);\n }\n\n else { set(lastSelectedIndex, index); }\n }\n}\n\nconst search = computed(() => props.search);\n\nfunction deselectRemovedRows() {\n get(selectedData)?.forEach((key: T[IdType]) => {\n if (isSelected(key) && !get(visibleIdentifiers).includes(key))\n onSelect(false, key, true);\n });\n}\n\nfunction onPaginate() {\n emit('update:expanded', []);\n if (!props.multiPageSelect)\n onToggleAll(false);\n resetCheckboxShiftState();\n}\n\nfunction setInternalTotal(items: GroupedTableRow<T>[]) {\n if (!props.paginationModifiers?.external)\n set(itemsLength, items.filter(isRow).length);\n}\n\nfunction cellValue(row: T, key: TableColumn<T>['key']) {\n return row[key as TableRowKey<T>];\n}\n\n/**\n * Keeps the global items per page in sync with the internal state.\n */\nwatch(internalPaginationState, (pagination) => {\n if (pagination?.limit && get(globalItemsPerPageSettings))\n set(tableDefaults.itemsPerPage, pagination.limit);\n});\n\nwatch(tableDefaults.itemsPerPage, (itemsPerPage) => {\n if (!get(globalItemsPerPageSettings))\n return;\n\n set(paginationData, {\n ...get(paginationData),\n limit: itemsPerPage,\n });\n});\n\n/**\n * on changing search query, need to reset pagination page to 1\n */\nwatch(search, () => {\n set(paginationData, {\n ...get(paginationData),\n page: 1,\n });\n onToggleAll(false);\n resetCheckboxShiftState();\n});\n\nwatch(sorted, (items) => {\n if (!props.multiPageSelect)\n deselectRemovedRows();\n setInternalTotal(items);\n});\n\n/**\n * Automatically adjust page when current page exceeds maximum available pages\n * This can happen when total data decreases while user is on a higher page\n */\nwatch(paginationData, (pagination) => {\n const { total, limit, page } = pagination;\n const maxPages = Math.ceil(total / limit);\n\n if (maxPages > 0 && page > maxPages) {\n set(paginationData, {\n ...pagination,\n page: maxPages,\n });\n }\n});\n\nonMounted(() => {\n setInternalTotal(get(sorted));\n\n if (!get(globalItemsPerPageSettings))\n return;\n\n set(paginationData, {\n ...get(paginationData),\n limit: get(tableDefaults.itemsPerPage),\n });\n});\n</script>\n\n<template>\n <div\n :class=\"[\n $style.wrapper,\n $style[`rounded__${rounded}`],\n { [$style.outlined]: outlined },\n ]\"\n >\n <RuiTablePagination\n v-if=\"paginationData && !hideDefaultHeader\"\n v-model=\"paginationData\"\n :dense=\"dense\"\n :loading=\"loading\"\n :disable-per-page=\"disablePerPage\"\n data-cy=\"table-pagination\"\n @update:model-value=\"onPaginate()\"\n />\n <div\n ref=\"tableScroller\"\n :class=\"$style.scroller\"\n >\n <table\n ref=\"table\"\n :class=\"[$style.table, { [$style.dense]: dense }]\"\n aria-label=\"\"\n >\n <RuiTableHead\n :loading=\"loading\"\n :indeterminate=\"indeterminate\"\n :capitalize-headers=\"!cols\"\n :colspan=\"colspan\"\n :column-attr=\"columnAttr\"\n :columns=\"columns\"\n :dense=\"dense\"\n :disable-check-all=\"!filtered?.length\"\n :is-all-selected=\"isAllSelected\"\n :no-data=\"noData\"\n :selectable=\"!!selectedData\"\n :sort-data=\"sortData\"\n :sorted-map=\"sortedMap\"\n :stick=\"stick\"\n :sticky-header=\"stickyHeader\"\n @sort=\"onSort($event)\"\n @select:all=\"onToggleAll($event)\"\n >\n <template\n v-for=\"headerSlot in headerSlots\"\n #[headerSlot]=\"slotData\"\n >\n <slot\n :name=\"headerSlot\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiTableHead>\n <RuiTableHead\n v-if=\"stickyHeader\"\n :loading=\"loading\"\n :capitalize-headers=\"!cols\"\n :colspan=\"colspan\"\n :column-attr=\"columnAttr\"\n :columns=\"columns\"\n :dense=\"dense\"\n :no-data=\"noData\"\n :selectable=\"!!selectedData\"\n :sort-data=\"sortData\"\n :sorted-map=\"sortedMap\"\n data-id=\"head-clone\"\n class=\"opacity-0 invisible\"\n >\n <template\n v-for=\"headerSlot in headerSlots\"\n #[headerSlot]=\"slotData\"\n >\n <slot\n :name=\"headerSlot\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiTableHead>\n <tbody :class=\"[$style.tbody, { [$style['tbody--striped'] ?? '']: striped }]\">\n <slot\n v-if=\"slots['body.prepend']\"\n :colspan=\"colspan\"\n name=\"body.prepend\"\n />\n <template v-for=\"(row, index) in filtered\">\n <tr\n v-if=\"!isRow(row)\"\n :key=\"`row-${index}`\"\n :class=\"[$style.tr, $style.tr__group]\"\n >\n <slot\n name=\"group.header\"\n :colspan=\"colspan\"\n :header=\"row\"\n :is-open=\"isExpandedGroup(row.group)\"\n :toggle=\"() => onToggleExpandGroup(row.group, row.identifier)\"\n >\n <td\n :class=\"[$style.td]\"\n class=\"!p-2\"\n :colspan=\"colspan\"\n >\n <div class=\"flex items-center gap-2\">\n <RuiExpandButton\n v-if=\"groupExpandButtonPosition === 'start'\"\n :expanded=\"isExpandedGroup(row.group)\"\n @click=\"onToggleExpandGroup(row.group, row.identifier)\"\n />\n <slot\n :group-key=\"groupKey\"\n name=\"group.header.content\"\n :header=\"row\"\n >\n <span>{{ groupKey }}: {{ row.identifier }}</span>\n <RuiButton\n size=\"sm\"\n variant=\"text\"\n icon\n @click=\"\n onCopyGroup({ key: groupKey, value: row.group })\n \"\n >\n <RuiIcon\n name=\"lu-copy\"\n size=\"16\"\n />\n </RuiButton>\n </slot>\n <RuiTooltip\n :popper=\"{ placement: 'top' }\"\n class=\"ml-auto mr-2\"\n >\n <template #activator>\n <RuiButton\n size=\"sm\"\n variant=\"text\"\n icon\n @click=\"onUngroup()\"\n >\n <RuiIcon\n name=\"lu-trash-2\"\n size=\"14\"\n />\n </RuiButton>\n </template>\n Ungroup\n </RuiTooltip>\n <RuiExpandButton\n v-if=\"groupExpandButtonPosition === 'end'\"\n :expanded=\"isExpandedGroup(row.group)\"\n @click=\"onToggleExpandGroup(row.group, row.identifier)\"\n />\n </div>\n </td>\n </slot>\n </tr>\n <template v-else>\n <tr\n :key=\"`row-${index}`\"\n :class=\"[\n $style.tr,\n { [$style.tr__selected ?? '']: isSelected(row[rowIdentifier]) },\n typeof itemClass === 'string' ? itemClass : itemClass(row),\n ]\"\n >\n <td\n v-if=\"selectedData\"\n :class=\"$style.checkbox\"\n colspan=\"1\"\n rowspan=\"1\"\n >\n <RuiCheckbox\n :data-cy=\"`table-toggle-check-${index}`\"\n :model-value=\"isSelected(row[rowIdentifier])\"\n :disabled=\"isDisabledRow(row[rowIdentifier])\"\n :size=\"dense ? 'sm' : undefined\"\n color=\"primary\"\n class=\"select-none\"\n hide-details\n @update:model-value=\"onSelect($event, row[rowIdentifier], true)\"\n @click=\"onCheckboxClick($event, row[rowIdentifier], index)\"\n />\n </td>\n\n <td\n v-for=\"(column, subIndex) in columns\"\n :key=\"subIndex\"\n :class=\"[\n $style.td,\n column.cellClass,\n $style[`align__${column.align ?? 'start'}`],\n ]\"\n :colspan=\"column.colspan ?? 1\"\n :rowspan=\"column.rowspan ?? 1\"\n >\n <slot\n v-if=\"column.key === 'expand'\"\n :name=\"`item.${column.key.toString()}`\"\n :column=\"column\"\n :row=\"row\"\n :index=\"index\"\n >\n <RuiExpandButton\n v-if=\"!slots['item.expand']\"\n :expanded=\"isExpanded(row[rowIdentifier])\"\n @click=\"onToggleExpand(row)\"\n />\n </slot>\n <slot\n v-else\n :column=\"column\"\n :index=\"index\"\n :name=\"`item.${column.key.toString()}`\"\n :row=\"row\"\n >\n {{ cellValue(row, column.key) }}\n </slot>\n </td>\n </tr>\n\n <tr\n v-if=\"expandable && isExpanded(row[rowIdentifier])\"\n :key=\"`row-expand-${index}`\"\n :class=\"[$style.tr, $style.tr__expandable]\"\n >\n <td\n :colspan=\"colspan\"\n :class=\"[$style.td]\"\n >\n <slot\n name=\"expanded-item\"\n :row=\"row\"\n :index=\"index\"\n />\n </td>\n </tr>\n </template>\n </template>\n <tr\n v-if=\"loading && noData\"\n >\n <td\n :class=\"$style.tbody__loader\"\n :colspan=\"colspan\"\n >\n <RuiProgress\n color=\"primary\"\n variant=\"indeterminate\"\n circular\n />\n </td>\n </tr>\n <tr\n v-if=\"noData && empty && !loading\"\n :class=\"[$style.tr, $style.tr__empty]\"\n >\n <Transition\n appear\n enter-active-class=\"transition ease-out duration-200 delay-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n >\n <td\n :class=\"$style.td\"\n :colspan=\"colspan\"\n >\n <slot name=\"no-data\">\n <div :class=\"$style.empty\">\n <img\n :src=\"isDark ? noDataPlaceholderDark : noDataPlaceholder\"\n :alt=\"empty.label\"\n class=\"h-32\"\n />\n <p\n v-if=\"empty.label\"\n :class=\"$style.empty__label\"\n >\n {{ empty.label }}\n </p>\n\n <slot name=\"empty-description\">\n <p\n v-if=\"empty.description\"\n :class=\"$style.empty__description\"\n >\n {{ empty.description }}\n </p>\n </slot>\n </div>\n </slot>\n </td>\n </Transition>\n </tr>\n <slot\n v-if=\"slots['body.append']\"\n :colspan=\"colspan\"\n name=\"body.append\"\n />\n </tbody>\n <tfoot>\n <slot name=\"tfoot\" />\n </tfoot>\n </table>\n </div>\n <RuiTablePagination\n v-if=\"paginationData && !hideDefaultFooter\"\n v-model=\"paginationData\"\n :dense=\"dense\"\n :loading=\"loading\"\n :disable-per-page=\"disablePerPage\"\n data-cy=\"table-pagination\"\n @update:model-value=\"onPaginate()\"\n />\n </div>\n</template>\n\n<style module lang=\"scss\">\n.wrapper {\n @apply relative divide-y divide-black/[0.12] overflow-hidden;\n &.outlined {\n @apply border border-black/[0.12];\n }\n\n &.rounded__sm {\n @apply rounded-[.25rem];\n\n .image {\n @apply rounded-t-[.25rem];\n }\n }\n\n &.rounded__md {\n @apply rounded-[.75rem];\n\n .image {\n @apply rounded-t-[.75rem];\n }\n }\n\n &.rounded__lg {\n @apply rounded-[1rem];\n\n .image {\n @apply rounded-t-[1rem];\n }\n }\n\n .scroller {\n @apply overflow-x-auto overflow-y-hidden;\n clip-path: inset(0 0 0 0);\n }\n\n .table {\n @apply min-w-full table-fixed divide-y divide-black/[0.12] whitespace-nowrap mx-auto my-0 max-w-fit relative border-black/[0.12];\n\n .tbody {\n @apply divide-y divide-black/[0.12];\n\n &--striped {\n > .tr {\n &:nth-child(even) {\n @apply bg-rui-grey-50;\n }\n }\n }\n\n > .tr {\n @apply hover:bg-black/[0.04];\n\n &__selected {\n @apply bg-rui-primary/[0.08];\n }\n\n &__empty {\n @apply hover:bg-transparent;\n }\n\n &__expandable {\n @apply bg-[#f9fafb] hover:bg-[#f9fafb];\n }\n\n &__group {\n @apply bg-black/[0.02];\n }\n\n .td {\n @apply p-4 text-rui-text text-body-2;\n text-wrap: initial;\n\n &.align__start {\n @apply text-left rtl:text-right;\n }\n\n &.align__center {\n @apply text-center;\n }\n\n &.align__end {\n @apply text-right rtl:text-left;\n }\n\n .empty {\n @apply flex flex-col gap-3 items-center justify-center flex-1 min-h-[4.4rem] my-4;\n\n &__label {\n @apply text-body-1 leading-none font-bold text-center text-current pb-0 mb-0;\n }\n\n &__description {\n @apply text-body-2 text-center text-rui-text-secondary pb-0 mb-0;\n }\n }\n }\n }\n\n &__loader {\n @apply py-8 text-center;\n }\n }\n\n .checkbox {\n @apply px-2 w-[3.625rem] max-w-[3.625rem];\n label {\n @apply ml-0;\n }\n }\n\n &.dense {\n .tbody {\n .td {\n @apply py-[0.38rem];\n }\n }\n }\n }\n}\n\n:global(.dark) {\n .wrapper {\n @apply divide-white/[0.12];\n\n &.outlined {\n @apply border-white/[0.12];\n }\n\n .table {\n @apply divide-white/[0.12] border-white/[0.12];\n\n .tbody {\n @apply divide-white/[0.12];\n\n &--striped {\n > .tr {\n &:nth-child(even) {\n @apply bg-rui-grey-900;\n }\n }\n }\n\n > .tr {\n @apply hover:bg-white/[0.04];\n\n &__selected {\n @apply bg-rui-dark-primary/[0.08];\n }\n\n &__expandable {\n @apply bg-[#121212] hover:bg-[#121212];\n }\n\n &__group {\n @apply bg-white/[0.02];\n }\n }\n }\n }\n }\n}\n</style>\n"],"names":["_useSlots","modelValue","pagination","grouped","collapsed","_createElementBlock","_normalizeClass","$style","_unref","_createBlock","_createElementVNode","_createVNode","_renderList","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_openBlock","_Fragment","_toDisplayString","_createTextVNode","_Transition"],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ const wrapper = "_wrapper_15c6t_1";
2
+ const outlined = "_outlined_15c6t_4";
3
+ const rounded__sm = "_rounded__sm_15c6t_7";
4
+ const image = "_image_15c6t_10";
5
+ const rounded__md = "_rounded__md_15c6t_13";
6
+ const rounded__lg = "_rounded__lg_15c6t_19";
7
+ const scroller = "_scroller_15c6t_25";
8
+ const table = "_table_15c6t_29";
9
+ const tbody = "_tbody_15c6t_32";
10
+ const tr = "_tr_15c6t_35";
11
+ const tr__selected = "_tr__selected_15c6t_41";
12
+ const tr__empty = "_tr__empty_15c6t_44";
13
+ const tr__expandable = "_tr__expandable_15c6t_47";
14
+ const tr__group = "_tr__group_15c6t_50";
15
+ const td = "_td_15c6t_53";
16
+ const align__start = "_align__start_15c6t_57";
17
+ const align__center = "_align__center_15c6t_60";
18
+ const align__end = "_align__end_15c6t_63";
19
+ const empty = "_empty_15c6t_66";
20
+ const empty__label = "_empty__label_15c6t_69";
21
+ const empty__description = "_empty__description_15c6t_72";
22
+ const tbody__loader = "_tbody__loader_15c6t_75";
23
+ const checkbox = "_checkbox_15c6t_78";
24
+ const dense = "_dense_15c6t_84";
25
+ const style0 = {
26
+ wrapper,
27
+ outlined,
28
+ rounded__sm,
29
+ image,
30
+ rounded__md,
31
+ rounded__lg,
32
+ scroller,
33
+ table,
34
+ tbody,
35
+ "tbody--striped": "_tbody--striped_15c6t_35",
36
+ tr,
37
+ tr__selected,
38
+ tr__empty,
39
+ tr__expandable,
40
+ tr__group,
41
+ td,
42
+ align__start,
43
+ align__center,
44
+ align__end,
45
+ empty,
46
+ empty__label,
47
+ empty__description,
48
+ tbody__loader,
49
+ checkbox,
50
+ dense
51
+ };
52
+ export {
53
+ align__center,
54
+ align__end,
55
+ align__start,
56
+ checkbox,
57
+ style0 as default,
58
+ dense,
59
+ empty,
60
+ empty__description,
61
+ empty__label,
62
+ image,
63
+ outlined,
64
+ rounded__lg,
65
+ rounded__md,
66
+ rounded__sm,
67
+ scroller,
68
+ table,
69
+ tbody,
70
+ tbody__loader,
71
+ td,
72
+ tr,
73
+ tr__empty,
74
+ tr__expandable,
75
+ tr__group,
76
+ tr__selected,
77
+ wrapper
78
+ };
79
+ //# sourceMappingURL=RuiDataTable.vue3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiDataTable.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import type { RuiIcons } from '../../icons';
1
+ import type { RuiIcons } from '../../icons/index.js';
2
2
  export interface Props {
3
3
  expanded: boolean;
4
4
  icon?: RuiIcons;
@@ -0,0 +1,11 @@
1
+ import _sfc_main from "./RuiExpandButton.vue2.js";
2
+ import style0 from "./RuiExpandButton.vue3.js";
3
+ import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const cssModules = {
5
+ "$style": style0
6
+ };
7
+ const RuiExpandButton = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
8
+ export {
9
+ RuiExpandButton as default
10
+ };
11
+ //# sourceMappingURL=RuiExpandButton.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiExpandButton.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,42 @@
1
+ import { defineComponent, createBlock, openBlock, mergeProps, withCtx, renderSlot, createVNode, normalizeClass } from "vue";
2
+ import RuiButton from "../buttons/button/RuiButton.vue.js";
3
+ import RuiIcon from "../icons/RuiIcon.vue.js";
4
+ const _sfc_main = /* @__PURE__ */ defineComponent({
5
+ ...{
6
+ inheritAttrs: false
7
+ },
8
+ __name: "RuiExpandButton",
9
+ props: {
10
+ expanded: { type: Boolean },
11
+ icon: { default: "lu-chevron-down" }
12
+ },
13
+ setup(__props) {
14
+ return (_ctx, _cache) => {
15
+ return openBlock(), createBlock(RuiButton, mergeProps({
16
+ class: [
17
+ _ctx.$style.tr__expander_button,
18
+ {
19
+ [_ctx.$style.tr__expander_button_open ?? ""]: __props.expanded
20
+ }
21
+ ],
22
+ icon: "",
23
+ size: "sm",
24
+ variant: "text"
25
+ }, _ctx.$attrs), {
26
+ default: withCtx(() => [
27
+ renderSlot(_ctx.$slots, "default", {}, () => [
28
+ createVNode(RuiIcon, {
29
+ class: normalizeClass(_ctx.$style.tr__expander_button_icon),
30
+ name: __props.icon
31
+ }, null, 8, ["class", "name"])
32
+ ])
33
+ ]),
34
+ _: 3
35
+ }, 16, ["class"]);
36
+ };
37
+ }
38
+ });
39
+ export {
40
+ _sfc_main as default
41
+ };
42
+ //# sourceMappingURL=RuiExpandButton.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiExpandButton.vue2.js","sources":["../../../src/components/tables/RuiExpandButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\n\nexport interface Props {\n expanded: boolean;\n icon?: RuiIcons;\n}\n\ndefineOptions({\n inheritAttrs: false,\n});\n\nwithDefaults(defineProps<Props>(), { icon: 'lu-chevron-down' });\n</script>\n\n<template>\n <RuiButton\n :class=\"[\n $style.tr__expander_button,\n {\n [$style.tr__expander_button_open ?? '']: expanded,\n },\n ]\"\n icon\n size=\"sm\"\n variant=\"text\"\n v-bind=\"$attrs\"\n >\n <slot>\n <RuiIcon\n :class=\"$style.tr__expander_button_icon\"\n :name=\"icon\"\n />\n </slot>\n </RuiButton>\n</template>\n\n<style lang=\"scss\" module>\n.tr__expander {\n &_button {\n @apply relative;\n\n &_icon {\n @apply transition rotate-0;\n }\n\n &_open .tr__expander_button_icon {\n @apply rotate-180;\n }\n }\n}\n</style>\n"],"names":["_openBlock","_createBlock","_mergeProps","$style","$attrs","_renderSlot","_createVNode","_normalizeClass"],"mappings":";;;;;;;;;;;;;;AAkBE,aAAAA,UAAA,GAAAC,YAkBY,WAlBZC,WAkBY;AAAA,QAjBT,OAAK;AAAA,UAAUC,KAAAA,OAAO;AAAA;aAAsCA,KAAAA,OAAO,4BAAwB,EAAA,GAAS,QAAA;AAAA,UAAA;AAAA;QAMrG,MAAA;AAAA,QACA,MAAK;AAAA,QACL,SAAQ;AAAA,MAAA,GACAC,KAAAA,MAAM,GAAA;AAAA,yBAEd,MAKO;AAAA,UALPC,WAKO,4BALP,MAKO;AAAA,YAJLC,YAGE,SAAA;AAAA,cAFC,OAAKC,eAAEJ,KAAAA,OAAO,wBAAwB;AAAA,cACtC,MAAM,QAAA;AAAA,YAAA;;;;;;;;"}
@@ -0,0 +1,15 @@
1
+ const tr__expander_button = "_tr__expander_button_bei2a_1";
2
+ const tr__expander_button_icon = "_tr__expander_button_icon_bei2a_4";
3
+ const tr__expander_button_open = "_tr__expander_button_open_bei2a_7";
4
+ const style0 = {
5
+ tr__expander_button,
6
+ tr__expander_button_icon,
7
+ tr__expander_button_open
8
+ };
9
+ export {
10
+ style0 as default,
11
+ tr__expander_button,
12
+ tr__expander_button_icon,
13
+ tr__expander_button_open
14
+ };
15
+ //# sourceMappingURL=RuiExpandButton.vue3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiExpandButton.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,11 @@
1
+ import _sfc_main from "./RuiTableHead.vue2.js";
2
+ import style0 from "./RuiTableHead.vue3.js";
3
+ import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const cssModules = {
5
+ "$style": style0
6
+ };
7
+ const RuiTableHead = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
8
+ export {
9
+ RuiTableHead as default
10
+ };
11
+ //# sourceMappingURL=RuiTableHead.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiTableHead.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,195 @@
1
+ import { defineComponent, createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, createVNode, Fragment, renderList, renderSlot, createBlock, withCtx, createSlots, createTextVNode, toDisplayString } from "vue";
2
+ import RuiButton from "../buttons/button/RuiButton.vue.js";
3
+ import RuiCheckbox from "../forms/checkbox/RuiCheckbox.vue.js";
4
+ import RuiIcon from "../icons/RuiIcon.vue.js";
5
+ import RuiBadge from "../overlays/badge/RuiBadge.vue.js";
6
+ import RuiProgress from "../progress/RuiProgress.vue.js";
7
+ const _hoisted_1 = ["data-id"];
8
+ const _hoisted_2 = ["colspan", "rowspan"];
9
+ const _hoisted_3 = ["colspan"];
10
+ const _sfc_main = /* @__PURE__ */ defineComponent({
11
+ __name: "RuiTableHead",
12
+ props: {
13
+ loading: { type: Boolean, default: false },
14
+ stickyHeader: { type: Boolean, default: false },
15
+ stick: { type: Boolean, default: false },
16
+ selectable: { type: Boolean, default: false },
17
+ disableCheckAll: { type: Boolean, default: false },
18
+ noData: { type: Boolean, default: false },
19
+ colspan: { default: 0 },
20
+ columns: { default: void 0 },
21
+ capitalizeHeaders: { type: Boolean, default: false },
22
+ isAllSelected: { type: Boolean, default: false },
23
+ indeterminate: { type: Boolean, default: false },
24
+ dense: { type: Boolean, default: false },
25
+ sortedMap: { default: () => ({}) },
26
+ sortData: { default: void 0 },
27
+ columnAttr: { default: "label" },
28
+ dataId: { default: "head-main" }
29
+ },
30
+ emits: ["select:all", "sort"],
31
+ setup(__props, { emit: __emit }) {
32
+ const props = __props;
33
+ const emit = __emit;
34
+ function onSort({ key, direction }) {
35
+ return emit("sort", {
36
+ key,
37
+ direction: direction ?? "asc"
38
+ });
39
+ }
40
+ const onToggleAll = (checked) => emit("select:all", checked);
41
+ const isSortedBy = (key) => key in props.sortedMap;
42
+ function getSortIndex(key) {
43
+ const sortBy = props.sortData;
44
+ if (!sortBy || !Array.isArray(sortBy) || !isSortedBy(key))
45
+ return -1;
46
+ return sortBy.findIndex((sort) => sort.column === key);
47
+ }
48
+ function getSortDirection(key) {
49
+ return props.sortedMap[key]?.direction;
50
+ }
51
+ return (_ctx, _cache) => {
52
+ return openBlock(), createElementBlock("thead", {
53
+ "data-id": __props.dataId,
54
+ class: normalizeClass([
55
+ _ctx.$style.thead,
56
+ {
57
+ [_ctx.$style.sticky__header]: __props.stickyHeader,
58
+ [_ctx.$style.stick__top]: __props.stick,
59
+ [_ctx.$style.dense]: __props.dense
60
+ }
61
+ ])
62
+ }, [
63
+ createElementVNode("tr", {
64
+ class: normalizeClass(_ctx.$style.tr)
65
+ }, [
66
+ __props.selectable ? (openBlock(), createElementBlock("th", {
67
+ key: 0,
68
+ class: normalizeClass(_ctx.$style.checkbox),
69
+ scope: "col",
70
+ colspan: "1",
71
+ rowspan: "1"
72
+ }, [
73
+ createVNode(RuiCheckbox, {
74
+ disabled: __props.disableCheckAll,
75
+ indeterminate: __props.indeterminate,
76
+ "model-value": __props.isAllSelected,
77
+ size: __props.dense ? "sm" : void 0,
78
+ color: "primary",
79
+ "data-cy": "table-toggle-check-all",
80
+ "hide-details": "",
81
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => onToggleAll($event))
82
+ }, null, 8, ["disabled", "indeterminate", "model-value", "size"])
83
+ ], 2)) : createCommentVNode("", true),
84
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column, index) => {
85
+ return openBlock(), createElementBlock("th", {
86
+ key: index,
87
+ class: normalizeClass([
88
+ _ctx.$style.th,
89
+ column.class,
90
+ _ctx.$style[`align__${column.align ?? "start"}`],
91
+ {
92
+ capitalize: !__props.capitalizeHeaders,
93
+ [_ctx.$style.sortable]: column.sortable
94
+ }
95
+ ]),
96
+ scope: "col",
97
+ colspan: column.colspan ?? 1,
98
+ rowspan: column.rowspan ?? 1
99
+ }, [
100
+ renderSlot(_ctx.$slots, `header.${column.key.toString()}`, { column }, () => [
101
+ column.sortable ? (openBlock(), createBlock(RuiBadge, {
102
+ key: 0,
103
+ "model-value": getSortIndex(column.key) >= 0,
104
+ text: `${getSortIndex(column.key) + 1}`,
105
+ "offset-y": __props.dense ? 8 : 0,
106
+ color: "secondary",
107
+ size: "sm"
108
+ }, {
109
+ default: withCtx(() => [
110
+ createVNode(RuiButton, {
111
+ class: normalizeClass([
112
+ _ctx.$style.sort__button,
113
+ {
114
+ [_ctx.$style.sort__active ?? ""]: isSortedBy(column.key),
115
+ [_ctx.$style[`sort__${getSortDirection(column.key)}`] ?? ""]: isSortedBy(
116
+ column.key
117
+ )
118
+ }
119
+ ]),
120
+ size: "sm",
121
+ variant: "text",
122
+ onClick: ($event) => onSort(column)
123
+ }, createSlots({
124
+ append: withCtx(() => [
125
+ column.align !== "end" ? (openBlock(), createBlock(RuiIcon, {
126
+ key: 0,
127
+ class: normalizeClass(_ctx.$style.sort__icon),
128
+ name: "lu-arrow-down",
129
+ size: "18"
130
+ }, null, 8, ["class"])) : createCommentVNode("", true)
131
+ ]),
132
+ default: withCtx(() => [
133
+ createElementVNode("span", {
134
+ class: normalizeClass(_ctx.$style.column__text)
135
+ }, [
136
+ renderSlot(_ctx.$slots, `header.text.${column.key.toString()}`, { column }, () => [
137
+ createTextVNode(toDisplayString(column[__props.columnAttr]), 1)
138
+ ])
139
+ ], 2)
140
+ ]),
141
+ _: 2
142
+ }, [
143
+ column.align === "end" ? {
144
+ name: "prepend",
145
+ fn: withCtx(() => [
146
+ createVNode(RuiIcon, {
147
+ class: normalizeClass(_ctx.$style.sort__icon),
148
+ name: "lu-arrow-down",
149
+ size: "18"
150
+ }, null, 8, ["class"])
151
+ ]),
152
+ key: "0"
153
+ } : void 0
154
+ ]), 1032, ["class", "onClick"])
155
+ ]),
156
+ _: 2
157
+ }, 1032, ["model-value", "text", "offset-y"])) : (openBlock(), createElementBlock("span", {
158
+ key: 1,
159
+ class: normalizeClass(_ctx.$style.column__text)
160
+ }, [
161
+ renderSlot(_ctx.$slots, `header.text.${column.key.toString()}`, { column }, () => [
162
+ createTextVNode(toDisplayString(column[__props.columnAttr]), 1)
163
+ ])
164
+ ], 2))
165
+ ])
166
+ ], 10, _hoisted_2);
167
+ }), 128))
168
+ ], 2),
169
+ __props.loading ? (openBlock(), createElementBlock("tr", {
170
+ key: 0,
171
+ class: normalizeClass([_ctx.$style.thead__loader, _ctx.$style.thead__loader_linear])
172
+ }, [
173
+ createElementVNode("th", {
174
+ class: normalizeClass(_ctx.$style.progress),
175
+ colspan: __props.colspan,
176
+ scope: "col"
177
+ }, [
178
+ createElementVNode("div", {
179
+ class: normalizeClass(_ctx.$style.progress__wrapper)
180
+ }, [
181
+ createVNode(RuiProgress, {
182
+ color: "primary",
183
+ variant: "indeterminate"
184
+ })
185
+ ], 2)
186
+ ], 10, _hoisted_3)
187
+ ], 2)) : createCommentVNode("", true)
188
+ ], 10, _hoisted_1);
189
+ };
190
+ }
191
+ });
192
+ export {
193
+ _sfc_main as default
194
+ };
195
+ //# sourceMappingURL=RuiTableHead.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuiTableHead.vue2.js","sources":["../../../src/components/tables/RuiTableHead.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"T extends object, K extends keyof T = keyof T\">\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCheckbox from '@/components/forms/checkbox/RuiCheckbox.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiBadge from '@/components/overlays/badge/RuiBadge.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\n\n/**\n * Represents a sortable column name for a given type.\n * The column name must be a key of the passed data object type.\n * @template T - The type of the data in the column.\n */\nexport type TableRowKey<T> = keyof T extends string ? keyof T : never;\n\nexport interface BaseTableColumn<T> {\n key: TableRowKey<T> | string;\n sortable?: boolean;\n direction?: 'asc' | 'desc';\n align?: 'start' | 'center' | 'end';\n class?: string;\n cellClass?: string;\n colspan?: string | number;\n rowspan?: string | number;\n\n [key: string]: any;\n}\n\n/**\n * Represents a sortable table column.\n * This is used to ensure that when using sortable with a true value,\n * the key matches to an actual property of the object passed.\n *\n * @template T - The type of data in the table column.\n */\nexport interface SortableTableColumn<T> extends BaseTableColumn<T> {\n sortable: true;\n}\n\n/**\n * An interface representing a column in a table that cannot be sorted.\n * This can be mapped to an actual property of the object or to a virtual column.\n *\n * @typeparam T - The type of data in the table.\n */\nexport interface NoneSortableTableColumn<T> extends BaseTableColumn<T> {\n sortable?: false;\n}\n\nexport type TableColumn<T> =\n | SortableTableColumn<T>\n | NoneSortableTableColumn<T>;\n\nexport interface SortColumn<T> {\n column?: TableRowKey<T>;\n direction: 'asc' | 'desc';\n}\n\nexport type TableSortData<T> = SortColumn<T> | SortColumn<T>[] | undefined;\n\nexport type TableRowKeyData<T> = TableRowKey<T> | TableRowKey<T>[] | undefined;\n\nexport interface GroupData<T> {\n key: string;\n value?: Partial<T>;\n}\n\nexport type GroupKey<T> = TableColumn<T>['key'];\n\nexport type GroupKeys<T> = GroupKey<T> | GroupKey<T>[] | undefined;\n\nexport interface Props<T> {\n loading?: boolean;\n stickyHeader?: boolean;\n stick?: boolean;\n selectable?: boolean;\n disableCheckAll?: boolean;\n noData?: boolean;\n colspan?: number;\n columns?: TableColumn<T>[];\n capitalizeHeaders?: boolean;\n isAllSelected?: boolean;\n indeterminate?: boolean;\n dense?: boolean;\n sortedMap?: Partial<Record<TableRowKey<T>, SortColumn<T>>>;\n sortData?: TableSortData<T>;\n columnAttr?: keyof TableColumn<T>;\n dataId?: string;\n}\n\nconst props = withDefaults(defineProps<Props<T>>(), {\n loading: false,\n stickyHeader: false,\n stick: false,\n selectable: false,\n disableCheckAll: false,\n noData: false,\n colspan: 0,\n columns: undefined,\n capitalizeHeaders: false,\n isAllSelected: false,\n indeterminate: false,\n dense: false,\n sortedMap: () => ({}),\n columnAttr: 'label',\n sortData: undefined,\n dataId: 'head-main',\n});\n\nconst emit = defineEmits<{\n (e: 'select:all', value: boolean): void;\n (\n e: 'sort',\n value: {\n key: TableRowKey<T>;\n direction?: 'asc' | 'desc';\n },\n ): void;\n}>();\n\nfunction onSort({ key, direction }: TableColumn<T>) {\n return emit('sort', {\n key: key as TableRowKey<T>,\n direction: direction ?? 'asc',\n });\n}\n\nconst onToggleAll = (checked: boolean) => emit('select:all', checked);\n\nconst isSortedBy = (key: TableColumn<T>['key']) => key in props.sortedMap;\n\nfunction getSortIndex(key: TableColumn<T>['key']): number {\n const sortBy = props.sortData;\n\n if (!sortBy || !Array.isArray(sortBy) || !isSortedBy(key))\n return -1;\n\n return sortBy.findIndex(sort => sort.column === key);\n}\n\nfunction getSortDirection(key: TableColumn<T>['key']) {\n return props.sortedMap[key]?.direction;\n}\n</script>\n\n<template>\n <thead\n :data-id=\"dataId\"\n :class=\"[\n $style.thead,\n {\n [$style.sticky__header]: stickyHeader,\n [$style.stick__top]: stick,\n [$style.dense]: dense,\n },\n ]\"\n >\n <tr :class=\"$style.tr\">\n <th\n v-if=\"selectable\"\n :class=\"$style.checkbox\"\n scope=\"col\"\n colspan=\"1\"\n rowspan=\"1\"\n >\n <RuiCheckbox\n :disabled=\"disableCheckAll\"\n :indeterminate=\"indeterminate\"\n :model-value=\"isAllSelected\"\n :size=\"dense ? 'sm' : undefined\"\n color=\"primary\"\n data-cy=\"table-toggle-check-all\"\n hide-details\n @update:model-value=\"onToggleAll($event)\"\n />\n </th>\n\n <th\n v-for=\"(column, index) in columns\"\n :key=\"index\"\n :class=\"[\n $style.th,\n column.class,\n $style[`align__${column.align ?? 'start'}`],\n {\n capitalize: !capitalizeHeaders,\n [$style.sortable]: column.sortable,\n },\n ]\"\n scope=\"col\"\n :colspan=\"column.colspan ?? 1\"\n :rowspan=\"column.rowspan ?? 1\"\n >\n <slot\n :column=\"column\"\n :name=\"`header.${column.key.toString()}`\"\n >\n <RuiBadge\n v-if=\"column.sortable\"\n :model-value=\"getSortIndex(column.key) >= 0\"\n :text=\"`${getSortIndex(column.key) + 1}`\"\n :offset-y=\"dense ? 8 : 0\"\n color=\"secondary\"\n size=\"sm\"\n >\n <RuiButton\n :class=\"[\n $style.sort__button,\n {\n [$style.sort__active ?? '']: isSortedBy(column.key),\n [$style[`sort__${getSortDirection(column.key)}`] ?? '']: isSortedBy(\n column.key,\n ),\n },\n ]\"\n size=\"sm\"\n variant=\"text\"\n @click=\"onSort(column)\"\n >\n <span :class=\"$style.column__text\">\n <slot\n :name=\"`header.text.${column.key.toString()}`\"\n :column=\"column\"\n >\n {{ column[columnAttr] }}\n </slot>\n </span>\n\n <template\n v-if=\"column.align === 'end'\"\n #prepend\n >\n <RuiIcon\n :class=\"$style.sort__icon\"\n name=\"lu-arrow-down\"\n size=\"18\"\n />\n </template>\n\n <template #append>\n <RuiIcon\n v-if=\"column.align !== 'end'\"\n :class=\"$style.sort__icon\"\n name=\"lu-arrow-down\"\n size=\"18\"\n />\n </template>\n </RuiButton>\n </RuiBadge>\n <span\n v-else\n :class=\"$style.column__text\"\n >\n <slot\n :name=\"`header.text.${column.key.toString()}`\"\n :column=\"column\"\n >\n {{ column[columnAttr] }}\n </slot>\n </span>\n </slot>\n </th>\n </tr>\n <tr\n v-if=\"loading\"\n :class=\"[$style.thead__loader, $style.thead__loader_linear]\"\n >\n <th\n :class=\"$style.progress\"\n :colspan=\"colspan\"\n scope=\"col\"\n >\n <div :class=\"$style.progress__wrapper\">\n <RuiProgress\n color=\"primary\"\n variant=\"indeterminate\"\n />\n </div>\n </th>\n </tr>\n </thead>\n</template>\n\n<style module lang=\"scss\">\n.thead {\n @apply divide-y divide-black/[0.12];\n\n &.sticky__header {\n @apply top-0 z-10 absolute;\n\n &.stick__top {\n @apply fixed;\n\n tr {\n th {\n @apply bg-white border-b border-b-black/[0.12];\n }\n }\n }\n }\n\n &.dense {\n .tr {\n .th {\n @apply py-[0.38rem];\n }\n }\n }\n\n .tr {\n .th {\n @apply p-4;\n\n &.align__start {\n @apply text-left rtl:text-right;\n }\n\n &.align__center {\n @apply text-center;\n }\n\n &.align__end {\n @apply text-right rtl:text-left;\n }\n\n &.sortable {\n &.align__start {\n @apply pl-3;\n }\n\n &.align__center {\n @apply px-3;\n .sort__button {\n @apply ml-6;\n }\n }\n\n &.align__end {\n @apply pr-3;\n }\n\n .sort__button {\n @apply inline-flex;\n\n &:hover .sort__icon {\n @apply opacity-60;\n }\n\n &.sort {\n &__active {\n .sort__icon {\n @apply opacity-100;\n }\n }\n\n &__desc {\n .sort__icon {\n @apply rotate-0;\n }\n }\n\n &__asc {\n .sort__icon {\n @apply rotate-180;\n }\n }\n }\n }\n\n .sort__icon {\n @apply transition opacity-0 rotate-180;\n }\n }\n\n .column__text {\n @apply text-rui-text font-medium text-sm leading-6;\n }\n }\n\n .checkbox {\n @apply px-2 w-[3.625rem] max-w-[3.625rem];\n label {\n @apply ml-0;\n }\n }\n }\n\n &__loader {\n .progress {\n @apply relative py-8;\n }\n\n &_linear {\n @apply border-none;\n\n .progress {\n @apply p-0 h-0;\n }\n\n .progress__wrapper {\n @apply h-0 -mt-1;\n }\n }\n }\n}\n\n:global(.dark) {\n .thead {\n @apply divide-y divide-white/[0.12];\n\n &.sticky__header.stick__top {\n th {\n @apply bg-[#121212] border-b border-b-white/[0.12];\n }\n }\n\n .tr {\n .th {\n @apply text-white;\n }\n }\n }\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","$style","_createElementVNode","_createVNode","_openBlock","_Fragment","_renderList","_renderSlot","_createBlock","_createTextVNode","_toDisplayString"],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ const thead = "_thead_1y979_1";
2
+ const sticky__header = "_sticky__header_1y979_4";
3
+ const stick__top = "_stick__top_1y979_7";
4
+ const dense = "_dense_1y979_13";
5
+ const tr = "_tr_1y979_13";
6
+ const th = "_th_1y979_1";
7
+ const align__start = "_align__start_1y979_19";
8
+ const align__center = "_align__center_1y979_22";
9
+ const align__end = "_align__end_1y979_25";
10
+ const sortable = "_sortable_1y979_28";
11
+ const sort__button = "_sort__button_1y979_34";
12
+ const sort__icon = "_sort__icon_1y979_43";
13
+ const sort__active = "_sort__active_1y979_46";
14
+ const sort__desc = "_sort__desc_1y979_49";
15
+ const sort__asc = "_sort__asc_1y979_52";
16
+ const column__text = "_column__text_1y979_58";
17
+ const checkbox = "_checkbox_1y979_61";
18
+ const thead__loader = "_thead__loader_1y979_67";
19
+ const progress = "_progress_1y979_67";
20
+ const thead__loader_linear = "_thead__loader_linear_1y979_70";
21
+ const progress__wrapper = "_progress__wrapper_1y979_76";
22
+ const style0 = {
23
+ thead,
24
+ sticky__header,
25
+ stick__top,
26
+ dense,
27
+ tr,
28
+ th,
29
+ align__start,
30
+ align__center,
31
+ align__end,
32
+ sortable,
33
+ sort__button,
34
+ sort__icon,
35
+ sort__active,
36
+ sort__desc,
37
+ sort__asc,
38
+ column__text,
39
+ checkbox,
40
+ thead__loader,
41
+ progress,
42
+ thead__loader_linear,
43
+ progress__wrapper
44
+ };
45
+ export {
46
+ align__center,
47
+ align__end,
48
+ align__start,
49
+ checkbox,
50
+ column__text,
51
+ style0 as default,
52
+ dense,
53
+ progress,
54
+ progress__wrapper,
55
+ sort__active,
56
+ sort__asc,
57
+ sort__button,
58
+ sort__desc,
59
+ sort__icon,
60
+ sortable,
61
+ stick__top,
62
+ sticky__header,
63
+ th,
64
+ thead,
65
+ thead__loader,
66
+ thead__loader_linear,
67
+ tr
68
+ };
69
+ //# sourceMappingURL=RuiTableHead.vue3.js.map