@byyuurin/ui 0.0.10 → 0.0.11

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 (194) hide show
  1. package/README.md +2 -2
  2. package/dist/module.json +3 -3
  3. package/dist/module.mjs +1 -1
  4. package/dist/module.mjs.map +1 -1
  5. package/dist/runtime/app/injections.d.ts +388 -364
  6. package/dist/runtime/components/Accordion.vue +38 -67
  7. package/dist/runtime/components/Accordion.vue.d.ts +52 -0
  8. package/dist/runtime/components/Alert.vue +37 -75
  9. package/dist/runtime/components/Alert.vue.d.ts +59 -0
  10. package/dist/runtime/components/App.vue +25 -40
  11. package/dist/runtime/components/App.vue.d.ts +24 -0
  12. package/dist/runtime/components/Avatar.vue +31 -51
  13. package/dist/runtime/components/Avatar.vue.d.ts +25 -0
  14. package/dist/runtime/components/AvatarGroup.vue +38 -69
  15. package/dist/runtime/components/AvatarGroup.vue.d.ts +27 -0
  16. package/dist/runtime/components/Badge.vue +25 -51
  17. package/dist/runtime/components/Badge.vue.d.ts +44 -0
  18. package/dist/runtime/components/Breadcrumb.vue +36 -74
  19. package/dist/runtime/components/Breadcrumb.vue.d.ts +52 -0
  20. package/dist/runtime/components/Button.vue +62 -51
  21. package/dist/runtime/components/Button.vue.d.ts +29 -0
  22. package/dist/runtime/components/ButtonGroup.vue +17 -37
  23. package/dist/runtime/components/ButtonGroup.vue.d.ts +26 -0
  24. package/dist/runtime/components/Calendar.vue +75 -110
  25. package/dist/runtime/components/Calendar.vue.d.ts +75 -0
  26. package/dist/runtime/components/Card.vue +25 -42
  27. package/dist/runtime/components/Card.vue.d.ts +30 -0
  28. package/dist/runtime/components/Carousel.vue +118 -225
  29. package/dist/runtime/components/Carousel.vue.d.ts +104 -0
  30. package/dist/runtime/components/Checkbox.vue +46 -73
  31. package/dist/runtime/components/Checkbox.vue.d.ts +56 -0
  32. package/dist/runtime/components/Chip.vue +31 -48
  33. package/dist/runtime/components/Chip.vue.d.ts +30 -0
  34. package/dist/runtime/components/Collapsible.vue +22 -30
  35. package/dist/runtime/components/Collapsible.vue.d.ts +26 -0
  36. package/dist/runtime/components/Drawer.vue +51 -101
  37. package/dist/runtime/components/Drawer.vue.d.ts +80 -0
  38. package/dist/runtime/components/DropdownMenu.vue +37 -115
  39. package/dist/runtime/components/DropdownMenu.vue.d.ts +99 -0
  40. package/dist/runtime/components/DropdownMenuContent.vue +81 -77
  41. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +39 -0
  42. package/dist/runtime/components/Form.vue +140 -254
  43. package/dist/runtime/components/Form.vue.d.ts +78 -0
  44. package/dist/runtime/components/FormItem.vue +50 -89
  45. package/dist/runtime/components/FormItem.vue.d.ts +60 -0
  46. package/dist/runtime/components/Input.vue +79 -115
  47. package/dist/runtime/components/Input.vue.d.ts +64 -0
  48. package/dist/runtime/components/InputNumber.vue +74 -117
  49. package/dist/runtime/components/InputNumber.vue.d.ts +245 -0
  50. package/dist/runtime/components/Kbd.vue +18 -39
  51. package/dist/runtime/components/Kbd.vue.d.ts +28 -0
  52. package/dist/runtime/components/Link.vue +168 -257
  53. package/dist/runtime/components/Link.vue.d.ts +95 -0
  54. package/dist/runtime/components/LinkBase.vue +36 -54
  55. package/dist/runtime/components/LinkBase.vue.d.ts +28 -0
  56. package/dist/runtime/components/Modal.vue +49 -84
  57. package/dist/runtime/components/Modal.vue.d.ts +66 -0
  58. package/dist/runtime/components/OverlayProvider.vue +10 -14
  59. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  60. package/dist/runtime/components/Pagination.vue +55 -121
  61. package/dist/runtime/components/Pagination.vue.d.ts +93 -0
  62. package/dist/runtime/components/PinInput.vue +49 -58
  63. package/dist/runtime/components/PinInput.vue.d.ts +35 -0
  64. package/dist/runtime/components/Popover.vue +39 -68
  65. package/dist/runtime/components/Popover.vue.d.ts +45 -0
  66. package/dist/runtime/components/Progress.vue +68 -120
  67. package/dist/runtime/components/Progress.vue.d.ts +54 -0
  68. package/dist/runtime/components/RadioGroup.vue +67 -125
  69. package/dist/runtime/components/RadioGroup.vue.d.ts +74 -0
  70. package/dist/runtime/components/ScrollArea.vue +31 -31
  71. package/dist/runtime/components/ScrollArea.vue.d.ts +17 -0
  72. package/dist/runtime/components/Select.vue +114 -204
  73. package/dist/runtime/components/Select.vue.d.ts +119 -0
  74. package/dist/runtime/components/Separator.vue +26 -44
  75. package/dist/runtime/components/Separator.vue.d.ts +27 -0
  76. package/dist/runtime/components/Skeleton.vue +12 -21
  77. package/dist/runtime/components/Skeleton.vue.d.ts +19 -0
  78. package/dist/runtime/components/Slider.vue +52 -74
  79. package/dist/runtime/components/Slider.vue.d.ts +36 -0
  80. package/dist/runtime/components/Switch.vue +51 -71
  81. package/dist/runtime/components/Switch.vue.d.ts +49 -0
  82. package/dist/runtime/components/Table.vue +108 -194
  83. package/dist/runtime/components/Table.vue.d.ts +148 -0
  84. package/dist/runtime/components/Tabs.vue +36 -81
  85. package/dist/runtime/components/Tabs.vue.d.ts +65 -0
  86. package/dist/runtime/components/Textarea.vue +77 -124
  87. package/dist/runtime/components/Textarea.vue.d.ts +60 -0
  88. package/dist/runtime/components/Toast.vue +47 -75
  89. package/dist/runtime/components/Toast.vue.d.ts +131 -0
  90. package/dist/runtime/components/ToastProvider.vue +65 -101
  91. package/dist/runtime/components/ToastProvider.vue.d.ts +38 -0
  92. package/dist/runtime/components/Tooltip.vue +36 -47
  93. package/dist/runtime/components/Tooltip.vue.d.ts +31 -0
  94. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  95. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  96. package/dist/runtime/composables/useFormItem.d.ts +2 -2
  97. package/dist/runtime/composables/useKbd.d.ts +1 -1
  98. package/dist/runtime/composables/useLocale.d.ts +3 -3
  99. package/dist/runtime/composables/useTheme.d.ts +1 -1
  100. package/dist/runtime/composables/useToast.d.ts +1 -1
  101. package/dist/runtime/locale/en.d.ts +1 -1
  102. package/dist/runtime/locale/zh-tw.d.ts +1 -1
  103. package/dist/runtime/theme/accordion.d.ts +45 -51
  104. package/dist/runtime/theme/accordion.js +1 -1
  105. package/dist/runtime/theme/alert.d.ts +115 -121
  106. package/dist/runtime/theme/alert.js +1 -1
  107. package/dist/runtime/theme/avatar-group.d.ts +42 -48
  108. package/dist/runtime/theme/avatar-group.js +1 -1
  109. package/dist/runtime/theme/avatar.d.ts +46 -52
  110. package/dist/runtime/theme/avatar.js +1 -1
  111. package/dist/runtime/theme/badge.d.ts +60 -66
  112. package/dist/runtime/theme/badge.js +1 -1
  113. package/dist/runtime/theme/breadcrumb.d.ts +52 -58
  114. package/dist/runtime/theme/breadcrumb.js +1 -1
  115. package/dist/runtime/theme/button-group.d.ts +36 -42
  116. package/dist/runtime/theme/button.d.ts +162 -168
  117. package/dist/runtime/theme/button.js +1 -1
  118. package/dist/runtime/theme/calendar.d.ts +52 -50
  119. package/dist/runtime/theme/calendar.js +20 -3
  120. package/dist/runtime/theme/card.d.ts +52 -58
  121. package/dist/runtime/theme/card.js +1 -1
  122. package/dist/runtime/theme/carousel.d.ts +98 -104
  123. package/dist/runtime/theme/carousel.js +1 -1
  124. package/dist/runtime/theme/checkbox.d.ts +77 -83
  125. package/dist/runtime/theme/checkbox.js +1 -1
  126. package/dist/runtime/theme/chip.d.ts +50 -56
  127. package/dist/runtime/theme/chip.js +1 -1
  128. package/dist/runtime/theme/collapsible.d.ts +29 -35
  129. package/dist/runtime/theme/collapsible.js +1 -1
  130. package/dist/runtime/theme/drawer.d.ts +120 -126
  131. package/dist/runtime/theme/drawer.js +1 -1
  132. package/dist/runtime/theme/dropdown-menu.d.ts +55 -61
  133. package/dist/runtime/theme/dropdown-menu.js +1 -1
  134. package/dist/runtime/theme/form-item.d.ts +63 -69
  135. package/dist/runtime/theme/form-item.js +1 -1
  136. package/dist/runtime/theme/form.d.ts +1 -7
  137. package/dist/runtime/theme/input-number.d.ts +98 -104
  138. package/dist/runtime/theme/input-number.js +1 -1
  139. package/dist/runtime/theme/input.d.ts +153 -159
  140. package/dist/runtime/theme/input.js +1 -1
  141. package/dist/runtime/theme/kbd.d.ts +30 -36
  142. package/dist/runtime/theme/link.d.ts +37 -43
  143. package/dist/runtime/theme/modal.d.ts +36 -42
  144. package/dist/runtime/theme/modal.js +1 -1
  145. package/dist/runtime/theme/pagination.d.ts +71 -77
  146. package/dist/runtime/theme/pagination.js +1 -1
  147. package/dist/runtime/theme/pinInput.d.ts +80 -86
  148. package/dist/runtime/theme/pinInput.js +1 -1
  149. package/dist/runtime/theme/popover.d.ts +29 -35
  150. package/dist/runtime/theme/popover.js +1 -1
  151. package/dist/runtime/theme/progress.d.ts +163 -169
  152. package/dist/runtime/theme/progress.js +1 -1
  153. package/dist/runtime/theme/radio-group.d.ts +99 -105
  154. package/dist/runtime/theme/radio-group.js +1 -1
  155. package/dist/runtime/theme/scroll-area.d.ts +62 -68
  156. package/dist/runtime/theme/scroll-area.js +1 -1
  157. package/dist/runtime/theme/select.d.ts +165 -171
  158. package/dist/runtime/theme/select.js +1 -1
  159. package/dist/runtime/theme/separator.d.ts +62 -68
  160. package/dist/runtime/theme/separator.js +1 -1
  161. package/dist/runtime/theme/skeleton.d.ts +1 -7
  162. package/dist/runtime/theme/slider.d.ts +62 -68
  163. package/dist/runtime/theme/slider.js +1 -1
  164. package/dist/runtime/theme/switch.d.ts +111 -117
  165. package/dist/runtime/theme/switch.js +1 -1
  166. package/dist/runtime/theme/table.d.ts +75 -81
  167. package/dist/runtime/theme/table.js +1 -1
  168. package/dist/runtime/theme/tabs.d.ts +114 -120
  169. package/dist/runtime/theme/tabs.js +1 -1
  170. package/dist/runtime/theme/textarea.d.ts +76 -82
  171. package/dist/runtime/theme/textarea.js +1 -1
  172. package/dist/runtime/theme/toast-provider.d.ts +106 -112
  173. package/dist/runtime/theme/toast-provider.js +1 -1
  174. package/dist/runtime/theme/toast.d.ts +74 -80
  175. package/dist/runtime/theme/toast.js +1 -1
  176. package/dist/runtime/theme/tooltip.d.ts +35 -41
  177. package/dist/runtime/theme/tooltip.js +1 -1
  178. package/dist/runtime/types/utils.d.ts +5 -5
  179. package/dist/runtime/utils/link.d.ts +3 -5
  180. package/dist/runtime/utils/styler.d.ts +2 -2
  181. package/dist/runtime/utils/styler.js +2 -2
  182. package/dist/shared/ui.D1BTWZFB.mjs +5 -0
  183. package/dist/shared/ui.D1BTWZFB.mjs.map +1 -0
  184. package/dist/types.d.mts +1 -1
  185. package/dist/unocss.mjs +5 -4
  186. package/dist/unocss.mjs.map +1 -1
  187. package/dist/unplugin.mjs +1 -1
  188. package/dist/unplugin.mjs.map +1 -1
  189. package/dist/vite.mjs +1 -1
  190. package/package.json +77 -75
  191. package/dist/module.cjs +0 -5
  192. package/dist/shared/ui.3e7fad19.mjs +0 -5
  193. package/dist/shared/ui.3e7fad19.mjs.map +0 -1
  194. package/dist/types.d.ts +0 -1
@@ -1,265 +1,178 @@
1
- <script lang="ts">
2
- import type { CellContext, ColumnDef, ColumnFiltersOptions, ColumnFiltersState, ColumnOrderState, ColumnPinningOptions, ColumnPinningState, ColumnSizingInfoState, ColumnSizingOptions, ColumnSizingState, CoreOptions, ExpandedOptions, ExpandedState, FacetedOptions, GlobalFilterOptions, GroupingOptions, GroupingState, HeaderContext, PaginationOptions, PaginationState, Row, RowData, RowPinningOptions, RowPinningState, RowSelectionOptions, RowSelectionState, SortingOptions, SortingState, Updater, VisibilityOptions, VisibilityState } from '@tanstack/vue-table'
3
- import type { PrimitiveProps } from 'reka-ui'
4
- import type { Ref } from 'vue'
5
- import type { table } from '../theme'
6
- import type { ComponentAttrs } from '../types'
1
+ <script>
7
2
 
8
- type DynamicHeaderSlots<T, K = keyof T> = Record<string, (props: HeaderContext<T, unknown>) => any> & Record<`${K extends string ? K : never}-header`, (props: HeaderContext<T, unknown>) => any>
9
-
10
- type DynamicCellSlots<T, K = keyof T> = Record<string, (props: CellContext<T, unknown>) => any> & Record<`${K extends string ? K : never}-cell`, (props: CellContext<T, unknown>) => any>
11
-
12
- export type TableSlots<T> = {
13
- expanded?: (props: { row: Row<T> }) => any
14
- empty?: any
15
- loading?: any
16
- caption?: any
17
- } & DynamicHeaderSlots<T> & DynamicCellSlots<T>
18
-
19
- export type TableData = RowData
20
- export type TableColumn<T extends TableData, D = unknown> = ColumnDef<T, D> & { title?: string }
21
-
22
- export interface TableOptions<T extends TableData> extends Omit<CoreOptions<T>, 'data' | 'columns' | 'getCoreRowModel' | 'state' | 'onStateChange' | 'renderFallbackValue'> {
23
- state?: CoreOptions<T>['state']
24
- onStateChange?: CoreOptions<T>['onStateChange']
25
- renderFallbackValue?: CoreOptions<T>['renderFallbackValue']
26
- }
27
-
28
- export interface TableProps<T extends TableData> extends ComponentAttrs<typeof table>, TableOptions<T> {
29
- /**
30
- * The element or component this component should render as.
31
- * @default "div"
32
- */
33
- as?: PrimitiveProps['as']
34
- data?: T[]
35
- columns?: TableColumn<T>[]
36
- caption?: string
37
- /**
38
- * The text to display when the table is empty.
39
- * @default t('table.noData')
40
- */
41
- empty?: string
42
- /**
43
- * Whether the table should have a sticky header.
44
- * @default false
45
- */
46
- sticky?: boolean
47
- /** Whether the table should be in loading state. */
48
- loading?: boolean
49
- /**
50
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#table-options)
51
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)
52
- */
53
- globalFilterOptions?: Omit<GlobalFilterOptions<T>, 'onGlobalFilterChange'>
54
- /**
55
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#table-options)
56
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)
57
- */
58
- columnFiltersOptions?: Omit<ColumnFiltersOptions<T>, 'getFilteredRowModel' | 'onColumnFiltersChange'>
59
- /**
60
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#table-options)
61
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)
62
- */
63
- columnPinningOptions?: Omit<ColumnPinningOptions, 'onColumnPinningChange'>
64
- /**
65
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#table-options)
66
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)
67
- */
68
- columnSizingOptions?: Omit<ColumnSizingOptions, 'onColumnSizingChange' | 'onColumnSizingInfoChange'>
69
- /**
70
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#table-options)
71
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)
72
- */
73
- visibilityOptions?: Omit<VisibilityOptions, 'onColumnVisibilityChange'>
74
- /**
75
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#table-options)
76
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)
77
- */
78
- sortingOptions?: Omit<SortingOptions<T>, 'getSortedRowModel' | 'onSortingChange'>
79
- /**
80
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#table-options)
81
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)
82
- */
83
- groupingOptions?: Omit<GroupingOptions, 'onGroupingChange'>
84
- /**
85
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#table-options)
86
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)
87
- */
88
- expandedOptions?: Omit<ExpandedOptions<T>, 'getExpandedRowModel' | 'onExpandedChange'>
89
- /**
90
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#table-options)
91
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
92
- */
93
- rowSelectionOptions?: Omit<RowSelectionOptions<T>, 'onRowSelectionChange'>
94
- /**
95
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#table-options)
96
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)
97
- */
98
- rowPinningOptions?: Omit<RowPinningOptions<T>, 'onRowPinningChange'>
99
- /**
100
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#table-options)
101
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)
102
- */
103
- paginationOptions?: Omit<PaginationOptions, 'onPaginationChange'>
104
- /**
105
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-faceting#table-options)
106
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-faceting)
107
- */
108
- facetedOptions?: FacetedOptions<T>
109
- }
110
3
  </script>
111
4
 
112
- <script setup lang="ts" generic="T extends TableData">
113
- import { FlexRender, getCoreRowModel, getExpandedRowModel, getFilteredRowModel, getSortedRowModel, useVueTable } from '@tanstack/vue-table'
114
- import { reactiveOmit } from '@vueuse/core'
115
- import { Primitive } from 'reka-ui'
116
- import { upperFirst } from 'scule'
117
- import { computed } from 'vue'
118
- import { useLocale } from '../composables/useLocale'
119
- import { useTheme } from '../composables/useTheme'
120
-
121
- const props = defineProps<TableProps<T>>()
122
- const slots = defineSlots<TableSlots<T>>()
123
-
124
- const globalFilterState = defineModel<string>('globalFilter', { default: undefined })
125
- const columnFiltersState = defineModel<ColumnFiltersState>('columnFilters', { default: [] })
126
- const columnOrderState = defineModel<ColumnOrderState>('columnOrder', { default: [] })
127
- const columnVisibilityState = defineModel<VisibilityState>('columnVisibility', { default: {} })
128
- const columnPinningState = defineModel<ColumnPinningState>('columnPinning', { default: {} })
129
- const columnSizingState = defineModel<ColumnSizingState>('columnSizing', { default: {} })
130
- const columnSizingInfoState = defineModel<ColumnSizingInfoState>('columnSizingInfo', { default: {} })
131
- const rowSelectionState = defineModel<RowSelectionState>('rowSelection', { default: {} })
132
- const rowPinningState = defineModel<RowPinningState>('rowPinning', { default: {} })
133
- const sortingState = defineModel<SortingState>('sorting', { default: [] })
134
- const groupingState = defineModel<GroupingState>('grouping', { default: [] })
135
- const expandedState = defineModel<ExpandedState>('expanded', { default: {} })
136
- const paginationState = defineModel<PaginationState>('pagination', { default: {} })
137
-
138
- const data = computed(() => props.data ?? [])
139
- const columns = computed<TableColumn<T>[]>(
140
- () =>
141
- props.columns ?? Object.keys(data.value[0] ?? {}).map(
142
- (accessorKey: string) => ({ accessorKey, header: upperFirst(accessorKey) }),
143
- ),
144
- )
145
-
5
+ <script setup>
6
+ import { FlexRender, getCoreRowModel, getExpandedRowModel, getFilteredRowModel, getSortedRowModel, useVueTable } from "@tanstack/vue-table";
7
+ import { reactiveOmit } from "@vueuse/core";
8
+ import { Primitive } from "reka-ui";
9
+ import { upperFirst } from "scule";
10
+ import { computed } from "vue";
11
+ import { useLocale } from "../composables/useLocale";
12
+ import { useTheme } from "../composables/useTheme";
13
+ const props = defineProps({
14
+ as: { type: null, required: false },
15
+ data: { type: Array, required: false },
16
+ columns: { type: Array, required: false },
17
+ caption: { type: String, required: false },
18
+ empty: { type: String, required: false },
19
+ sticky: { type: Boolean, required: false },
20
+ loading: { type: Boolean, required: false },
21
+ globalFilterOptions: { type: Object, required: false },
22
+ columnFiltersOptions: { type: Object, required: false },
23
+ columnPinningOptions: { type: Object, required: false },
24
+ columnSizingOptions: { type: Object, required: false },
25
+ visibilityOptions: { type: Object, required: false },
26
+ sortingOptions: { type: Object, required: false },
27
+ groupingOptions: { type: Object, required: false },
28
+ expandedOptions: { type: Object, required: false },
29
+ rowSelectionOptions: { type: Object, required: false },
30
+ rowPinningOptions: { type: Object, required: false },
31
+ paginationOptions: { type: Object, required: false },
32
+ facetedOptions: { type: Object, required: false },
33
+ class: { type: null, required: false },
34
+ ui: { type: null, required: false },
35
+ state: { type: Object, required: false },
36
+ onStateChange: { type: Function, required: false },
37
+ renderFallbackValue: { type: null, required: false },
38
+ _features: { type: Array, required: false },
39
+ autoResetAll: { type: Boolean, required: false },
40
+ debugAll: { type: Boolean, required: false },
41
+ debugCells: { type: Boolean, required: false },
42
+ debugColumns: { type: Boolean, required: false },
43
+ debugHeaders: { type: Boolean, required: false },
44
+ debugRows: { type: Boolean, required: false },
45
+ debugTable: { type: Boolean, required: false },
46
+ defaultColumn: { type: Object, required: false },
47
+ getRowId: { type: Function, required: false },
48
+ getSubRows: { type: Function, required: false },
49
+ initialState: { type: Object, required: false },
50
+ mergeOptions: { type: Function, required: false },
51
+ meta: { type: Object, required: false }
52
+ });
53
+ const slots = defineSlots();
54
+ const globalFilterState = defineModel("globalFilter", { type: String, ...{ default: void 0 } });
55
+ const columnFiltersState = defineModel("columnFilters", { type: Array, ...{ default: [] } });
56
+ const columnOrderState = defineModel("columnOrder", { type: Array, ...{ default: [] } });
57
+ const columnVisibilityState = defineModel("columnVisibility", { type: Object, ...{ default: {} } });
58
+ const columnPinningState = defineModel("columnPinning", { type: Object, ...{ default: {} } });
59
+ const columnSizingState = defineModel("columnSizing", { type: Object, ...{ default: {} } });
60
+ const columnSizingInfoState = defineModel("columnSizingInfo", { type: Object, ...{ default: {} } });
61
+ const rowSelectionState = defineModel("rowSelection", { type: Object, ...{ default: {} } });
62
+ const rowPinningState = defineModel("rowPinning", { type: Object, ...{ default: {} } });
63
+ const sortingState = defineModel("sorting", { type: Array, ...{ default: [] } });
64
+ const groupingState = defineModel("grouping", { type: Array, ...{ default: [] } });
65
+ const expandedState = defineModel("expanded", { type: [Boolean, Object], ...{ default: {} } });
66
+ const paginationState = defineModel("pagination", { type: Object, ...{ default: {} } });
67
+ const data = computed(() => props.data ?? []);
68
+ const columns = computed(
69
+ () => props.columns ?? Object.keys(data.value[0] ?? {}).map(
70
+ (accessorKey) => ({ accessorKey, header: upperFirst(accessorKey) })
71
+ )
72
+ );
146
73
  const tableApi = useVueTable({
147
- ...reactiveOmit(props, 'data', 'columns', 'caption', 'sticky', 'loading', 'class', 'ui'),
74
+ ...reactiveOmit(props, "data", "columns", "caption", "sticky", "loading", "class", "ui"),
148
75
  data,
149
76
  columns: columns.value,
150
77
  getCoreRowModel: getCoreRowModel(),
151
-
152
78
  ...props.globalFilterOptions,
153
79
  onGlobalFilterChange: (updaterOrValue) => valueUpdater(updaterOrValue, globalFilterState),
154
-
155
80
  ...props.columnFiltersOptions,
156
81
  getFilteredRowModel: getFilteredRowModel(),
157
82
  onColumnFiltersChange: (updaterOrValue) => valueUpdater(updaterOrValue, columnFiltersState),
158
83
  onColumnOrderChange: (updaterOrValue) => valueUpdater(updaterOrValue, columnOrderState),
159
-
160
84
  ...props.visibilityOptions,
161
85
  onColumnVisibilityChange: (updaterOrValue) => valueUpdater(updaterOrValue, columnVisibilityState),
162
-
163
86
  ...props.columnPinningOptions,
164
87
  onColumnPinningChange: (updaterOrValue) => valueUpdater(updaterOrValue, columnPinningState),
165
-
166
88
  ...props.columnSizingOptions,
167
89
  onColumnSizingChange: (updaterOrValue) => valueUpdater(updaterOrValue, columnSizingState),
168
90
  onColumnSizingInfoChange: (updaterOrValue) => valueUpdater(updaterOrValue, columnSizingInfoState),
169
-
170
91
  ...props.rowSelectionOptions,
171
92
  onRowSelectionChange: (updaterOrValue) => valueUpdater(updaterOrValue, rowSelectionState),
172
-
173
93
  ...props.rowPinningOptions,
174
94
  onRowPinningChange: (updaterOrValue) => valueUpdater(updaterOrValue, rowPinningState),
175
-
176
95
  ...props.sortingOptions,
177
96
  getSortedRowModel: getSortedRowModel(),
178
97
  onSortingChange: (updaterOrValue) => valueUpdater(updaterOrValue, sortingState),
179
-
180
98
  ...props.groupingOptions,
181
99
  onGroupingChange: (updaterOrValue) => valueUpdater(updaterOrValue, groupingState),
182
-
183
100
  ...props.expandedOptions,
184
101
  getExpandedRowModel: getExpandedRowModel(),
185
102
  onExpandedChange: (updaterOrValue) => valueUpdater(updaterOrValue, expandedState),
186
-
187
103
  ...props.paginationOptions,
188
104
  onPaginationChange: (updaterOrValue) => valueUpdater(updaterOrValue, paginationState),
189
-
190
105
  ...props.facetedOptions,
191
106
  state: {
192
107
  get globalFilter() {
193
- return globalFilterState.value
108
+ return globalFilterState.value;
194
109
  },
195
110
  get columnFilters() {
196
- return columnFiltersState.value
111
+ return columnFiltersState.value;
197
112
  },
198
113
  get columnOrder() {
199
- return columnOrderState.value
114
+ return columnOrderState.value;
200
115
  },
201
116
  get columnVisibility() {
202
- return columnVisibilityState.value
117
+ return columnVisibilityState.value;
203
118
  },
204
119
  get columnPinning() {
205
- return columnPinningState.value
120
+ return columnPinningState.value;
206
121
  },
207
122
  get expanded() {
208
- return expandedState.value
123
+ return expandedState.value;
209
124
  },
210
125
  get rowSelection() {
211
- return rowSelectionState.value
126
+ return rowSelectionState.value;
212
127
  },
213
128
  get sorting() {
214
- return sortingState.value
129
+ return sortingState.value;
215
130
  },
216
131
  get grouping() {
217
- return groupingState.value
132
+ return groupingState.value;
218
133
  },
219
134
  get rowPinning() {
220
- return rowPinningState.value
135
+ return rowPinningState.value;
221
136
  },
222
137
  get columnSizing() {
223
- return columnSizingState.value
138
+ return columnSizingState.value;
224
139
  },
225
140
  get columnSizingInfo() {
226
- return columnSizingInfoState.value
141
+ return columnSizingInfoState.value;
227
142
  },
228
143
  get pagination() {
229
- return paginationState.value
230
- },
231
- },
232
- })
233
-
234
- function valueUpdater<T extends Updater<any>>(updaterOrValue: T, ref: Ref) {
235
- ref.value = typeof updaterOrValue === 'function' ? updaterOrValue(ref.value) : updaterOrValue
144
+ return paginationState.value;
145
+ }
146
+ }
147
+ });
148
+ function valueUpdater(updaterOrValue, ref) {
149
+ ref.value = typeof updaterOrValue === "function" ? updaterOrValue(ref.value) : updaterOrValue;
236
150
  }
237
-
238
- const { t } = useLocale()
239
- const { generateStyle } = useTheme()
240
- const style = computed(() => generateStyle('table', props))
241
-
151
+ const { t } = useLocale();
152
+ const { generateStyle } = useTheme();
153
+ const style = computed(() => generateStyle("table", props));
242
154
  defineExpose({
243
- tableApi,
244
- })
155
+ tableApi
156
+ });
245
157
  </script>
246
158
 
247
159
  <template>
248
- <Primitive :as="props.as" :class="style.root({ class: [props.class, props.ui?.root] })">
249
- <table :class="style.base({ class: props.ui?.base })">
250
- <caption v-if="props.caption || slots.caption" :class="style.caption({ class: props.caption })">
160
+ <Primitive :as="props.as" :class="style.root({ class: [props.class, props.ui?.root] })" data-part="root">
161
+ <table :class="style.base({ class: props.ui?.base })" data-part="base">
162
+ <caption v-if="props.caption || slots.caption" :class="style.caption({ class: props.caption })" data-part="caption">
251
163
  <slot name="caption">
252
164
  {{ props.caption }}
253
165
  </slot>
254
166
  </caption>
255
167
 
256
- <thead :class="style.thead({ class: props.ui?.thead })">
257
- <tr v-for="headerGroup in tableApi.getHeaderGroups()" :key="headerGroup.id" :class="style.tr({ class: props.ui?.tr })">
168
+ <thead :class="style.thead({ class: props.ui?.thead })" data-part="thead">
169
+ <tr v-for="headerGroup in tableApi.getHeaderGroups()" :key="headerGroup.id" :class="style.tr({ class: props.ui?.tr })" data-part="tr">
258
170
  <th
259
171
  v-for="header in headerGroup.headers"
260
172
  :key="header.id"
261
173
  :data-pinned="header.column.getIsPinned()"
262
174
  :class="style.th({ class: props.ui?.th, pinned: !!header.column.getIsPinned() })"
175
+ data-part="th"
263
176
  >
264
177
  <slot :name="`${header.id}-header`" v-bind="header.getContext()">
265
178
  <FlexRender v-if="!header.isPlaceholder" :render="header.column.columnDef.header" :props="header.getContext" />
@@ -268,23 +181,24 @@ defineExpose({
268
181
  </tr>
269
182
  </thead>
270
183
 
271
- <tbody :class="style.tbody({ class: props.ui?.tbody })">
184
+ <tbody :class="style.tbody({ class: props.ui?.tbody })" data-part="tbody">
272
185
  <template v-if="tableApi.getRowModel().rows.length > 0">
273
186
  <template v-for="row in tableApi.getRowModel().rows" :key="row.id">
274
187
  <tr :data-selected="row.getIsSelected()" :data-expanded="row.getIsExpanded()" :class="style.tr({ class: props.ui?.tr })">
275
188
  <td
276
189
  v-for="cell in row.getVisibleCells()"
277
190
  :key="cell.id"
278
- :data-pinned="cell.column.getIsPinned()"
279
191
  :class="style.td({ class: props.ui?.td, pinned: !!cell.column.getIsPinned() })"
192
+ data-part="td"
193
+ :data-pinned="cell.column.getIsPinned()"
280
194
  >
281
195
  <slot :name="`${cell.column.id}-cell`" v-bind="cell.getContext()">
282
196
  <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
283
197
  </slot>
284
198
  </td>
285
199
  </tr>
286
- <tr v-if="row.getIsExpanded()" :class="style.tr({ class: props.ui?.tr, expanded: true })">
287
- <td :colspan="row.getAllCells().length" :class="style.td({ class: props.ui?.td })">
200
+ <tr v-if="row.getIsExpanded()" :class="style.tr({ class: props.ui?.tr, expanded: true })" data-part="tr">
201
+ <td :colspan="row.getAllCells().length" :class="style.td({ class: props.ui?.td })" data-part="td">
288
202
  <slot name="expanded" :row="row"></slot>
289
203
  </td>
290
204
  </tr>
@@ -292,15 +206,15 @@ defineExpose({
292
206
  </template>
293
207
 
294
208
  <tr v-else-if="props.loading && slots.loading">
295
- <td :colspan="columns.length" :class="style.loading({ class: props.ui?.loading })">
209
+ <td :colspan="columns.length" :class="style.loading({ class: props.ui?.loading })" data-part="loading">
296
210
  <slot name="loading"></slot>
297
211
  </td>
298
212
  </tr>
299
213
 
300
- <tr v-else :class="style.tr({ class: props.ui?.tr })">
301
- <td :colspan="columns.length" :class="style.empty({ class: props.ui?.empty })">
214
+ <tr v-else :class="style.tr({ class: props.ui?.tr })" data-part="tr">
215
+ <td :colspan="columns.length" :class="style.empty({ class: props.ui?.empty })" data-part="empty">
302
216
  <slot name="empty">
303
- {{ props.empty || t('table.noData') }}
217
+ {{ props.empty || t("table.noData") }}
304
218
  </slot>
305
219
  </td>
306
220
  </tr>
@@ -0,0 +1,148 @@
1
+ import type { CellContext, ColumnDef, ColumnFiltersOptions, ColumnFiltersState, ColumnOrderState, ColumnPinningOptions, ColumnPinningState, ColumnSizingInfoState, ColumnSizingOptions, ColumnSizingState, CoreOptions, ExpandedOptions, ExpandedState, FacetedOptions, GlobalFilterOptions, GroupingOptions, GroupingState, HeaderContext, PaginationOptions, PaginationState, Row, RowData, RowPinningOptions, RowPinningState, RowSelectionOptions, RowSelectionState, SortingOptions, SortingState, VisibilityOptions, VisibilityState } from '@tanstack/vue-table';
2
+ import type { PrimitiveProps } from 'reka-ui';
3
+ import type { table } from '../theme/index.js';
4
+ import type { ComponentAttrs } from '../types/index.js';
5
+ type DynamicHeaderSlots<T, K = keyof T> = Record<string, (props: HeaderContext<T, unknown>) => any> & Record<`${K extends string ? K : never}-header`, (props: HeaderContext<T, unknown>) => any>;
6
+ type DynamicCellSlots<T, K = keyof T> = Record<string, (props: CellContext<T, unknown>) => any> & Record<`${K extends string ? K : never}-cell`, (props: CellContext<T, unknown>) => any>;
7
+ export type TableSlots<T> = {
8
+ expanded?: (props: {
9
+ row: Row<T>;
10
+ }) => any;
11
+ empty?: any;
12
+ loading?: any;
13
+ caption?: any;
14
+ } & DynamicHeaderSlots<T> & DynamicCellSlots<T>;
15
+ export type TableData = RowData;
16
+ export type TableColumn<T extends TableData, D = unknown> = ColumnDef<T, D> & {
17
+ title?: string;
18
+ };
19
+ export interface TableOptions<T extends TableData> extends Omit<CoreOptions<T>, 'data' | 'columns' | 'getCoreRowModel' | 'state' | 'onStateChange' | 'renderFallbackValue'> {
20
+ state?: CoreOptions<T>['state'];
21
+ onStateChange?: CoreOptions<T>['onStateChange'];
22
+ renderFallbackValue?: CoreOptions<T>['renderFallbackValue'];
23
+ }
24
+ export interface TableProps<T extends TableData> extends ComponentAttrs<typeof table>, TableOptions<T> {
25
+ /**
26
+ * The element or component this component should render as.
27
+ * @default "div"
28
+ */
29
+ as?: PrimitiveProps['as'];
30
+ data?: T[];
31
+ columns?: TableColumn<T>[];
32
+ caption?: string;
33
+ /**
34
+ * The text to display when the table is empty.
35
+ * @default t('table.noData')
36
+ */
37
+ empty?: string;
38
+ /**
39
+ * Whether the table should have a sticky header.
40
+ * @default false
41
+ */
42
+ sticky?: boolean;
43
+ /** Whether the table should be in loading state. */
44
+ loading?: boolean;
45
+ /**
46
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/global-filtering#table-options)
47
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/global-filtering)
48
+ */
49
+ globalFilterOptions?: Omit<GlobalFilterOptions<T>, 'onGlobalFilterChange'>;
50
+ /**
51
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-filtering#table-options)
52
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-filtering)
53
+ */
54
+ columnFiltersOptions?: Omit<ColumnFiltersOptions<T>, 'getFilteredRowModel' | 'onColumnFiltersChange'>;
55
+ /**
56
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-pinning#table-options)
57
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-pinning)
58
+ */
59
+ columnPinningOptions?: Omit<ColumnPinningOptions, 'onColumnPinningChange'>;
60
+ /**
61
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-sizing#table-options)
62
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-sizing)
63
+ */
64
+ columnSizingOptions?: Omit<ColumnSizingOptions, 'onColumnSizingChange' | 'onColumnSizingInfoChange'>;
65
+ /**
66
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-visibility#table-options)
67
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-visibility)
68
+ */
69
+ visibilityOptions?: Omit<VisibilityOptions, 'onColumnVisibilityChange'>;
70
+ /**
71
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/sorting#table-options)
72
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/sorting)
73
+ */
74
+ sortingOptions?: Omit<SortingOptions<T>, 'getSortedRowModel' | 'onSortingChange'>;
75
+ /**
76
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#table-options)
77
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/grouping)
78
+ */
79
+ groupingOptions?: Omit<GroupingOptions, 'onGroupingChange'>;
80
+ /**
81
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/expanding#table-options)
82
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/expanding)
83
+ */
84
+ expandedOptions?: Omit<ExpandedOptions<T>, 'getExpandedRowModel' | 'onExpandedChange'>;
85
+ /**
86
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#table-options)
87
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
88
+ */
89
+ rowSelectionOptions?: Omit<RowSelectionOptions<T>, 'onRowSelectionChange'>;
90
+ /**
91
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-pinning#table-options)
92
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-pinning)
93
+ */
94
+ rowPinningOptions?: Omit<RowPinningOptions<T>, 'onRowPinningChange'>;
95
+ /**
96
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/pagination#table-options)
97
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/pagination)
98
+ */
99
+ paginationOptions?: Omit<PaginationOptions, 'onPaginationChange'>;
100
+ /**
101
+ * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/column-faceting#table-options)
102
+ * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-faceting)
103
+ */
104
+ facetedOptions?: FacetedOptions<T>;
105
+ }
106
+ declare const _default: <T extends TableData>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
107
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
108
+ readonly "onUpdate:globalFilter"?: ((value: string) => any) | undefined;
109
+ readonly "onUpdate:columnFilters"?: ((value: ColumnFiltersState) => any) | undefined;
110
+ readonly "onUpdate:columnOrder"?: ((value: ColumnOrderState) => any) | undefined;
111
+ readonly "onUpdate:columnVisibility"?: ((value: VisibilityState) => any) | undefined;
112
+ readonly "onUpdate:columnPinning"?: ((value: ColumnPinningState) => any) | undefined;
113
+ readonly "onUpdate:columnSizing"?: ((value: ColumnSizingState) => any) | undefined;
114
+ readonly "onUpdate:columnSizingInfo"?: ((value: ColumnSizingInfoState) => any) | undefined;
115
+ readonly "onUpdate:rowSelection"?: ((value: RowSelectionState) => any) | undefined;
116
+ readonly "onUpdate:rowPinning"?: ((value: RowPinningState) => any) | undefined;
117
+ readonly "onUpdate:sorting"?: ((value: SortingState) => any) | undefined;
118
+ readonly "onUpdate:grouping"?: ((value: GroupingState) => any) | undefined;
119
+ readonly "onUpdate:expanded"?: ((value: ExpandedState) => any) | undefined;
120
+ readonly "onUpdate:pagination"?: ((value: PaginationState) => any) | undefined;
121
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:globalFilter" | "onUpdate:columnFilters" | "onUpdate:columnOrder" | "onUpdate:columnVisibility" | "onUpdate:columnPinning" | "onUpdate:columnSizing" | "onUpdate:columnSizingInfo" | "onUpdate:rowSelection" | "onUpdate:rowPinning" | "onUpdate:sorting" | "onUpdate:grouping" | "onUpdate:expanded" | "onUpdate:pagination"> & (TableProps<T> & {
122
+ globalFilter?: string;
123
+ columnFilters?: ColumnFiltersState;
124
+ columnOrder?: ColumnOrderState;
125
+ columnVisibility?: VisibilityState;
126
+ columnPinning?: ColumnPinningState;
127
+ columnSizing?: ColumnSizingState;
128
+ columnSizingInfo?: ColumnSizingInfoState;
129
+ rowSelection?: RowSelectionState;
130
+ rowPinning?: RowPinningState;
131
+ sorting?: SortingState;
132
+ grouping?: GroupingState;
133
+ expanded?: ExpandedState;
134
+ pagination?: PaginationState;
135
+ }) & Partial<{}>> & import("vue").PublicProps;
136
+ expose(exposed: import("vue").ShallowUnwrapRef<{
137
+ tableApi: import("@tanstack/vue-table").Table<T>;
138
+ }>): void;
139
+ attrs: any;
140
+ slots: TableSlots<T>;
141
+ emit: ((evt: "update:globalFilter", value: string) => void) & ((evt: "update:columnFilters", value: ColumnFiltersState) => void) & ((evt: "update:columnOrder", value: ColumnOrderState) => void) & ((evt: "update:columnVisibility", value: VisibilityState) => void) & ((evt: "update:columnPinning", value: ColumnPinningState) => void) & ((evt: "update:columnSizing", value: ColumnSizingState) => void) & ((evt: "update:columnSizingInfo", value: ColumnSizingInfoState) => void) & ((evt: "update:rowSelection", value: RowSelectionState) => void) & ((evt: "update:rowPinning", value: RowPinningState) => void) & ((evt: "update:sorting", value: SortingState) => void) & ((evt: "update:grouping", value: GroupingState) => void) & ((evt: "update:expanded", value: ExpandedState) => void) & ((evt: "update:pagination", value: PaginationState) => void);
142
+ }>) => import("vue").VNode & {
143
+ __ctx?: Awaited<typeof __VLS_setup>;
144
+ };
145
+ export default _default;
146
+ type __VLS_PrettifyLocal<T> = {
147
+ [K in keyof T]: T[K];
148
+ } & {};