@indielayer/ui 1.8.4 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/pages/component/select/usage.vue +17 -5
- package/docs/pages/component/table/index.vue +7 -0
- package/docs/pages/component/table/usage.vue +5 -1
- package/docs/pages/component/table/virtual.vue +53 -0
- package/docs/pages/typography.vue +14 -12
- package/lib/components/accordion/Accordion.vue.d.ts +4 -4
- package/lib/components/accordion/AccordionItem.vue.d.ts +6 -6
- package/lib/components/accordion/AccordionItem.vue.js +51 -51
- package/lib/components/alert/Alert.vue.d.ts +8 -8
- package/lib/components/alert/Alert.vue2.js +20 -20
- package/lib/components/avatar/Avatar.vue.d.ts +4 -4
- package/lib/components/badge/Badge.vue.d.ts +4 -4
- package/lib/components/breadcrumbs/Breadcrumbs.vue.d.ts +4 -4
- package/lib/components/button/Button.vue.d.ts +5 -5
- package/lib/components/button/ButtonGroup.vue.d.ts +4 -4
- package/lib/components/card/Card.vue.d.ts +4 -4
- package/lib/components/carousel/Carousel.vue.d.ts +7 -7
- package/lib/components/carousel/CarouselSlide.vue.d.ts +4 -4
- package/lib/components/checkbox/Checkbox.vue.d.ts +6 -6
- package/lib/components/checkbox/Checkbox.vue2.js +60 -60
- package/lib/components/container/Container.vue.d.ts +4 -4
- package/lib/components/datepicker/Datepicker.vue.d.ts +6 -6
- package/lib/components/datepicker/Datepicker.vue.js +3 -3
- package/lib/components/divider/Divider.vue.d.ts +4 -4
- package/lib/components/drawer/Drawer.vue.d.ts +6 -6
- package/lib/components/drawer/Drawer.vue.js +1 -1
- package/lib/components/form/Form.vue.d.ts +5 -5
- package/lib/components/formGroup/FormGroup.vue.d.ts +6 -6
- package/lib/components/formGroup/FormGroup.vue.js +7 -7
- package/lib/components/icon/Icon.vue.d.ts +4 -4
- package/lib/components/image/Image.vue.d.ts +3 -3
- package/lib/components/input/Input.vue.d.ts +6 -6
- package/lib/components/inputFooter/InputFooter.vue.d.ts +3 -3
- package/lib/components/label/Label.vue.d.ts +4 -4
- package/lib/components/link/Link.vue.d.ts +4 -4
- package/lib/components/loader/Loader.vue.d.ts +4 -4
- package/lib/components/menu/Menu.vue.d.ts +5 -5
- package/lib/components/menu/MenuItem.vue.d.ts +5 -5
- package/lib/components/menu/MenuItem.vue2.js +1 -1
- package/lib/components/modal/Modal.vue.d.ts +6 -6
- package/lib/components/modal/Modal.vue.js +1 -1
- package/lib/components/notifications/Notifications.vue.d.ts +5 -5
- package/lib/components/pagination/Pagination.vue.d.ts +5 -5
- package/lib/components/pagination/Pagination.vue.js +41 -41
- package/lib/components/pagination/PaginationItem.vue.d.ts +6 -6
- package/lib/components/popover/Popover.vue.d.ts +8 -8
- package/lib/components/popover/Popover.vue.js +1 -1
- package/lib/components/popover/PopoverContainer.vue.d.ts +4 -4
- package/lib/components/progress/Progress.vue.d.ts +4 -4
- package/lib/components/qrCode/QrCode.vue.d.ts +4 -4
- package/lib/components/radio/Radio.vue.d.ts +6 -6
- package/lib/components/radio/Radio.vue2.js +63 -63
- package/lib/components/scroll/Scroll.vue.d.ts +6 -6
- package/lib/components/scroll/Scroll.vue2.js +1 -1
- package/lib/components/select/Select.vue.d.ts +42 -6
- package/lib/components/select/Select.vue.js +224 -201
- package/lib/components/select/theme/Select.base.theme.js +1 -1
- package/lib/components/skeleton/Skeleton.vue.d.ts +4 -4
- package/lib/components/skeleton/Skeleton.vue.js +17 -17
- package/lib/components/slider/Slider.vue.d.ts +6 -6
- package/lib/components/spacer/Spacer.d.ts +1 -1
- package/lib/components/spinner/Spinner.vue.d.ts +4 -4
- package/lib/components/stepper/Stepper.vue.d.ts +5 -5
- package/lib/components/tab/Tab.vue.d.ts +5 -5
- package/lib/components/tab/Tab.vue.js +1 -1
- package/lib/components/tab/TabGroup.vue.d.ts +5 -5
- package/lib/components/tab/TabGroup.vue.js +2 -2
- package/lib/components/table/Table.vue.d.ts +119 -24
- package/lib/components/table/Table.vue.js +226 -188
- package/lib/components/table/TableBody.d.ts +1 -1
- package/lib/components/table/TableCell.vue.d.ts +4 -4
- package/lib/components/table/TableHead.vue.d.ts +10 -2
- package/lib/components/table/TableHead.vue.js +16 -13
- package/lib/components/table/TableHeader.vue.d.ts +4 -8
- package/lib/components/table/TableHeader.vue.js +40 -41
- package/lib/components/table/TableRow.vue.d.ts +8 -4
- package/lib/components/table/TableRow.vue.js +3 -2
- package/lib/components/table/theme/TableHead.base.theme.js +7 -4
- package/lib/components/table/theme/TableHead.carbon.theme.js +7 -4
- package/lib/components/table/theme/TableHeader.base.theme.js +3 -3
- package/lib/components/table/theme/TableHeader.carbon.theme.js +1 -1
- package/lib/components/table/theme/TableRow.base.theme.js +1 -1
- package/lib/components/tag/Tag.vue.d.ts +5 -5
- package/lib/components/textarea/Textarea.vue.d.ts +6 -6
- package/lib/components/textarea/Textarea.vue.js +6 -6
- package/lib/components/themeProvider/ThemeProvider.vue.d.ts +3 -3
- package/lib/components/toggle/Toggle.vue.d.ts +6 -6
- package/lib/components/tooltip/ToggleTip.vue.d.ts +3 -3
- package/lib/components/tooltip/Tooltip.vue.d.ts +4 -4
- package/lib/components/tooltip/Tooltip.vue.js +1 -1
- package/lib/composables/index.d.ts +1 -0
- package/lib/composables/useInputtable.d.ts +26 -6
- package/lib/composables/useVirtualList.d.ts +48 -0
- package/lib/composables/useVirtualList.js +123 -0
- package/lib/index.js +35 -33
- package/lib/index.umd.js +4 -4
- package/lib/node_modules/.pnpm/@vueuse_core@10.2.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/core/index.js +412 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +3 -3
- package/src/components/select/Select.vue +56 -26
- package/src/components/select/theme/Select.base.theme.ts +1 -1
- package/src/components/table/Table.vue +158 -114
- package/src/components/table/TableHead.vue +6 -2
- package/src/components/table/TableHeader.vue +0 -1
- package/src/components/table/TableRow.vue +1 -0
- package/src/components/table/theme/TableHead.base.theme.ts +7 -1
- package/src/components/table/theme/TableHead.carbon.theme.ts +7 -1
- package/src/components/table/theme/TableHeader.base.theme.ts +0 -2
- package/src/components/table/theme/TableHeader.carbon.theme.ts +0 -2
- package/src/components/table/theme/TableRow.base.theme.ts +4 -0
- package/src/composables/index.ts +1 -0
- package/src/composables/useVirtualList.ts +286 -0
- package/src/version.ts +1 -1
- package/lib/node_modules/.pnpm/@vueuse_core@10.2.0_vue@3.3.9_typescript@5.2.2_/node_modules/@vueuse/core/index.js +0 -379
- /package/lib/node_modules/.pnpm/{@vuepic_vue-datepicker@8.3.2_vue@3.3.9_typescript@5.2.2_ → @vuepic_vue-datepicker@8.3.2_vue@3.5.10_typescript@5.2.2_}/node_modules/@vuepic/vue-datepicker/dist/main.css.js +0 -0
- /package/lib/node_modules/.pnpm/{@vuepic_vue-datepicker@8.3.2_vue@3.3.9_typescript@5.2.2_ → @vuepic_vue-datepicker@8.3.2_vue@3.5.10_typescript@5.2.2_}/node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js +0 -0
- /package/lib/node_modules/.pnpm/{@vueuse_shared@10.2.0_vue@3.3.9_typescript@5.2.2_ → @vueuse_shared@10.2.0_vue@3.5.10_typescript@5.2.2_}/node_modules/@vueuse/shared/index.js +0 -0
- /package/lib/node_modules/.pnpm/{floating-vue@5.2.2_@nuxt_kit@3.10.1_rollup@3.29.4__vue@3.3.9_typescript@5.2.2_ → floating-vue@5.2.2_@nuxt_kit@3.10.1_rollup@3.29.4__vue@3.5.10_typescript@5.2.2_}/node_modules/floating-vue/dist/floating-vue.js +0 -0
|
@@ -32,6 +32,17 @@ const tableProps = {
|
|
|
32
32
|
default: true,
|
|
33
33
|
},
|
|
34
34
|
expandable: Boolean,
|
|
35
|
+
virtualList: Boolean,
|
|
36
|
+
virtualListOffsetTop: Number,
|
|
37
|
+
virtualListOffsetBottom: Number,
|
|
38
|
+
virtualListItemHeight: {
|
|
39
|
+
type: Number,
|
|
40
|
+
default: 54,
|
|
41
|
+
},
|
|
42
|
+
virtualListOverscan: {
|
|
43
|
+
type: Number,
|
|
44
|
+
default: 5,
|
|
45
|
+
},
|
|
35
46
|
}
|
|
36
47
|
|
|
37
48
|
export type TableHeader = {
|
|
@@ -54,8 +65,9 @@ export default { name: 'XTable' }
|
|
|
54
65
|
</script>
|
|
55
66
|
|
|
56
67
|
<script setup lang="ts" generic="T">
|
|
57
|
-
import { ref, type ExtractPublicPropTypes, type PropType, watch } from 'vue'
|
|
68
|
+
import { ref, type ExtractPublicPropTypes, type PropType, watch, computed, type MaybeRef } from 'vue'
|
|
58
69
|
import { useTheme, type ThemeComponent } from '../../composables/useTheme'
|
|
70
|
+
import { useVirtualList } from '../../composables/useVirtualList'
|
|
59
71
|
|
|
60
72
|
import XTableHead from './TableHead.vue'
|
|
61
73
|
import XTableHeader, { type TableHeaderSort, type TableHeaderAlign } from './TableHeader.vue'
|
|
@@ -78,6 +90,10 @@ const props = defineProps({
|
|
|
78
90
|
},
|
|
79
91
|
})
|
|
80
92
|
|
|
93
|
+
const selectedIndex = defineModel<number | number[]>('selected')
|
|
94
|
+
|
|
95
|
+
const hasSelectedIndex = computed(() => typeof selectedIndex.value === 'number')
|
|
96
|
+
|
|
81
97
|
type internalT = T & {
|
|
82
98
|
__expanded?: boolean;
|
|
83
99
|
}
|
|
@@ -90,10 +106,23 @@ function clone<T>(source: T[]): T[] {
|
|
|
90
106
|
}
|
|
91
107
|
}
|
|
92
108
|
|
|
109
|
+
const items = computed(() => props.items)
|
|
110
|
+
|
|
111
|
+
const { list, containerProps, wrapperProps } = useVirtualList(
|
|
112
|
+
items,
|
|
113
|
+
{
|
|
114
|
+
disabled: !props.virtualList,
|
|
115
|
+
itemHeight: props.virtualListItemHeight || 54,
|
|
116
|
+
topOffset: props.virtualListOffsetTop || 0,
|
|
117
|
+
bottomOffset: props.virtualListOffsetBottom || 0,
|
|
118
|
+
overscan: props.virtualListOverscan,
|
|
119
|
+
},
|
|
120
|
+
)
|
|
121
|
+
|
|
93
122
|
const internalItems = ref<internalT[]>([])
|
|
94
123
|
|
|
95
|
-
watch(
|
|
96
|
-
if (props.expandable) internalItems.value = clone(newValue as any)
|
|
124
|
+
watch(items, (newValue) => {
|
|
125
|
+
if (props.expandable) internalItems.value = clone(newValue as any) as internalT[]
|
|
97
126
|
}, { immediate: true })
|
|
98
127
|
|
|
99
128
|
const emit = defineEmits(['update:sort', 'click-row'])
|
|
@@ -153,125 +182,140 @@ const { styles, classes, className } = useTheme('Table', {}, props)
|
|
|
153
182
|
</script>
|
|
154
183
|
|
|
155
184
|
<template>
|
|
156
|
-
<div
|
|
185
|
+
<div
|
|
186
|
+
:class="[className, classes.wrapper]"
|
|
187
|
+
v-bind="containerProps"
|
|
188
|
+
>
|
|
157
189
|
<slot name="title"></slot>
|
|
158
190
|
<slot name="actions"></slot>
|
|
159
191
|
|
|
160
|
-
<
|
|
161
|
-
|
|
162
|
-
:class="
|
|
192
|
+
<div
|
|
193
|
+
v-bind="wrapperProps"
|
|
194
|
+
:class="{
|
|
195
|
+
'!h-auto': props.loading
|
|
196
|
+
}"
|
|
163
197
|
>
|
|
164
|
-
<
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
:sortable="header.sortable"
|
|
173
|
-
:width="header.width"
|
|
174
|
-
@click="header.sortable ? sortHeader(header) : null"
|
|
175
|
-
>
|
|
176
|
-
<slot :name="`header-${header.value}`" :header="header">
|
|
177
|
-
{{ header.text }}
|
|
178
|
-
</slot>
|
|
179
|
-
</x-table-header>
|
|
180
|
-
</x-table-head>
|
|
181
|
-
<x-table-body>
|
|
182
|
-
<template v-if="loading">
|
|
183
|
-
<x-table-row
|
|
184
|
-
v-for="(item, index) in Number(loadingLines)"
|
|
198
|
+
<table
|
|
199
|
+
:style="styles"
|
|
200
|
+
:class="classes.table"
|
|
201
|
+
>
|
|
202
|
+
<x-table-head :sticky-header="stickyHeader">
|
|
203
|
+
<x-table-header v-if="expandable" width="48" class="!p-0"/>
|
|
204
|
+
<x-table-header
|
|
205
|
+
v-for="(header, index) in headers"
|
|
185
206
|
:key="index"
|
|
186
|
-
:
|
|
207
|
+
:text-align="header.align"
|
|
208
|
+
:sort="getSort(header.value, sort)"
|
|
209
|
+
:sortable="header.sortable"
|
|
210
|
+
:width="header.width"
|
|
211
|
+
@click="header.sortable ? sortHeader(header) : null"
|
|
187
212
|
>
|
|
188
|
-
<
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
213
|
+
<slot :name="`header-${header.value}`" :header="header">
|
|
214
|
+
{{ header.text }}
|
|
215
|
+
</slot>
|
|
216
|
+
</x-table-header>
|
|
217
|
+
</x-table-head>
|
|
218
|
+
<x-table-body>
|
|
219
|
+
<template v-if="loading">
|
|
220
|
+
<x-table-row
|
|
221
|
+
v-for="(item, index) in Number(loadingLines)"
|
|
222
|
+
:key="index"
|
|
223
|
+
:striped="striped"
|
|
195
224
|
>
|
|
196
|
-
<
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}"
|
|
204
|
-
/>
|
|
205
|
-
</slot>
|
|
206
|
-
</x-table-cell>
|
|
207
|
-
</x-table-row>
|
|
208
|
-
</template>
|
|
209
|
-
<template v-else-if="error">
|
|
210
|
-
<tr>
|
|
211
|
-
<td colspan="999">
|
|
212
|
-
<slot name="error"></slot>
|
|
213
|
-
</td>
|
|
214
|
-
</tr>
|
|
215
|
-
</template>
|
|
216
|
-
<template v-else-if="!items || items.length === 0">
|
|
217
|
-
<tr>
|
|
218
|
-
<td colspan="999">
|
|
219
|
-
<slot name="empty"></slot>
|
|
220
|
-
</td>
|
|
221
|
-
</tr>
|
|
222
|
-
</template>
|
|
223
|
-
<template v-for="(item, index) in items" v-else :key="index">
|
|
224
|
-
<x-table-row
|
|
225
|
-
:pointer="pointer"
|
|
226
|
-
:striped="striped"
|
|
227
|
-
@click="$emit('click-row', item)"
|
|
228
|
-
>
|
|
229
|
-
<x-table-cell v-if="expandable" width="48" class="!p-1">
|
|
230
|
-
<button
|
|
231
|
-
type="button"
|
|
232
|
-
class="px-3 p-2"
|
|
233
|
-
:class="[dense ? 'p-0.5' : 'px-3 py-2']"
|
|
234
|
-
@click="internalItems[index].__expanded = !internalItems[index].__expanded"
|
|
225
|
+
<x-table-cell
|
|
226
|
+
v-for="(header, index2) in headers"
|
|
227
|
+
:key="index2"
|
|
228
|
+
:text-align="header.align"
|
|
229
|
+
:width="header.width"
|
|
230
|
+
:dense="dense"
|
|
231
|
+
:fixed="fixed"
|
|
235
232
|
>
|
|
236
|
-
<
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
233
|
+
<slot :name="`loading-${header.value}`" :item="item">
|
|
234
|
+
<x-skeleton
|
|
235
|
+
class="max-w-[60%]"
|
|
236
|
+
:shape="header.skeletonShape || 'line'"
|
|
237
|
+
:class="{
|
|
238
|
+
'mx-auto': header.align === 'center',
|
|
239
|
+
'ml-auto': header.align === 'right',
|
|
240
|
+
}"
|
|
241
|
+
/>
|
|
242
|
+
</slot>
|
|
243
|
+
</x-table-cell>
|
|
244
|
+
</x-table-row>
|
|
245
|
+
</template>
|
|
246
|
+
<template v-else-if="error">
|
|
247
|
+
<tr>
|
|
248
|
+
<td colspan="999">
|
|
249
|
+
<slot name="error"></slot>
|
|
250
|
+
</td>
|
|
251
|
+
</tr>
|
|
252
|
+
</template>
|
|
253
|
+
<template v-else-if="!items || items.length === 0">
|
|
254
|
+
<tr>
|
|
255
|
+
<td colspan="999">
|
|
256
|
+
<slot name="empty"></slot>
|
|
257
|
+
</td>
|
|
258
|
+
</tr>
|
|
259
|
+
</template>
|
|
260
|
+
<template v-for="(item, index) in list" v-else :key="index">
|
|
261
|
+
<x-table-row
|
|
262
|
+
:pointer="pointer"
|
|
263
|
+
:striped="striped"
|
|
264
|
+
:selected="hasSelectedIndex ? selectedIndex === item.index : undefined"
|
|
265
|
+
@click="$emit('click-row', item.data, item.index)"
|
|
254
266
|
>
|
|
255
|
-
<
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
267
|
+
<x-table-cell v-if="expandable" width="48" class="!p-1">
|
|
268
|
+
<button
|
|
269
|
+
type="button"
|
|
270
|
+
class="px-3 p-2"
|
|
271
|
+
:class="[dense ? 'p-0.5' : 'px-3 py-2']"
|
|
272
|
+
@click="internalItems[item.index].__expanded = !internalItems[item.index].__expanded"
|
|
273
|
+
>
|
|
274
|
+
<x-icon
|
|
275
|
+
:icon="chevronDownIcon"
|
|
276
|
+
:size="dense ? 'xs' : 'md'"
|
|
277
|
+
class="transition-transform"
|
|
278
|
+
:class="{
|
|
279
|
+
'rotate-180': internalItems[item.index]?.__expanded,
|
|
280
|
+
}"
|
|
281
|
+
/>
|
|
282
|
+
</button>
|
|
283
|
+
</x-table-cell>
|
|
284
|
+
<x-table-cell
|
|
285
|
+
v-for="(header, index2) in headers"
|
|
286
|
+
:key="index2"
|
|
287
|
+
:text-align="header.align"
|
|
288
|
+
:truncate="header.truncate"
|
|
289
|
+
:width="header.width"
|
|
290
|
+
:dense="dense"
|
|
291
|
+
:style="[props.virtualList ? {
|
|
292
|
+
height: `${props.virtualListItemHeight}px`,
|
|
293
|
+
maxHeight: `${props.virtualListItemHeight}px`,
|
|
294
|
+
overflow: 'hidden',
|
|
295
|
+
whiteSpace: 'nowrap',
|
|
296
|
+
} : {}]"
|
|
297
|
+
>
|
|
298
|
+
<slot :name="`item-${header.value}`" :item="item.data">
|
|
299
|
+
{{ getValue(item.data, header.value) }}
|
|
300
|
+
</slot>
|
|
301
|
+
</x-table-cell>
|
|
302
|
+
</x-table-row>
|
|
303
|
+
<tr v-if="expandable" :class="{ 'hidden': !internalItems[item.index]?.__expanded }">
|
|
304
|
+
<td colspan="999">
|
|
305
|
+
<div class="overflow-hidden transition-opacity" :class="[internalItems[item.index]?.__expanded ? '' : 'opacity-0 max-h-0']">
|
|
306
|
+
<slot name="expanded-row" :item="item.data"></slot>
|
|
307
|
+
</div>
|
|
308
|
+
</td>
|
|
309
|
+
</tr>
|
|
310
|
+
</template>
|
|
311
|
+
</x-table-body>
|
|
312
|
+
<div
|
|
313
|
+
v-if="loading"
|
|
314
|
+
:class="classes.loadingWrapper"
|
|
315
|
+
>
|
|
316
|
+
<x-spinner size="lg"/>
|
|
317
|
+
</div>
|
|
318
|
+
</table>
|
|
319
|
+
</div>
|
|
276
320
|
</div>
|
|
277
321
|
</template>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
const tableHeadProps = {
|
|
2
|
+
const tableHeadProps = {
|
|
3
|
+
stickyHeader: Boolean,
|
|
4
|
+
}
|
|
3
5
|
|
|
4
6
|
export type TableHeadProps = ExtractPublicPropTypes<typeof tableHeadProps>
|
|
5
7
|
|
|
@@ -13,7 +15,9 @@ export default { name: 'XTableHead' }
|
|
|
13
15
|
import type { ExtractPublicPropTypes } from 'vue'
|
|
14
16
|
import { useTheme, type ThemeComponent } from '../../composables/useTheme'
|
|
15
17
|
|
|
16
|
-
const
|
|
18
|
+
const props = defineProps(tableHeadProps)
|
|
19
|
+
|
|
20
|
+
const { styles, classes, className } = useTheme('TableHead', {}, props)
|
|
17
21
|
</script>
|
|
18
22
|
|
|
19
23
|
<template>
|
|
@@ -2,7 +2,13 @@ import type { TableHeadTheme } from '../TableHead.vue'
|
|
|
2
2
|
|
|
3
3
|
const theme: TableHeadTheme = {
|
|
4
4
|
classes: {
|
|
5
|
-
thead:
|
|
5
|
+
thead: ({ props }) => {
|
|
6
|
+
const classes = ['align-bottom bg-secondary-50 dark:bg-secondary-700']
|
|
7
|
+
|
|
8
|
+
if (props.stickyHeader) classes.push('sticky top-0 z-10')
|
|
9
|
+
|
|
10
|
+
return classes
|
|
11
|
+
},
|
|
6
12
|
row: 'text-sm text-secondary-600 dark:text-secondary-200 border-b',
|
|
7
13
|
},
|
|
8
14
|
}
|
|
@@ -2,7 +2,13 @@ import type { TableHeadTheme } from '../TableHead.vue'
|
|
|
2
2
|
|
|
3
3
|
const theme: TableHeadTheme = {
|
|
4
4
|
classes: {
|
|
5
|
-
thead:
|
|
5
|
+
thead: ({ props }) => {
|
|
6
|
+
const classes = ['align-bottom']
|
|
7
|
+
|
|
8
|
+
if (props.stickyHeader) classes.push('sticky top-0 z-10')
|
|
9
|
+
|
|
10
|
+
return classes
|
|
11
|
+
},
|
|
6
12
|
row: 'text-secondary-900 dark:text-secondary-50',
|
|
7
13
|
},
|
|
8
14
|
}
|
|
@@ -7,8 +7,6 @@ const theme: TableHeaderTheme = {
|
|
|
7
7
|
|
|
8
8
|
if (props.sortable) classes.push('cursor-pointer hover:text-secondary-800 dark:hover:text-secondary-300 transition-colors duration-150 ease-in-out')
|
|
9
9
|
|
|
10
|
-
if (props.stickyHeader) classes.push('sticky top-0')
|
|
11
|
-
|
|
12
10
|
if (props.textAlign === 'left') classes.push('text-left')
|
|
13
11
|
if (props.textAlign === 'right') classes.push('text-right')
|
|
14
12
|
if (props.textAlign === 'center') classes.push('text-center')
|
|
@@ -7,8 +7,6 @@ const theme: TableHeaderTheme = {
|
|
|
7
7
|
|
|
8
8
|
if (props.sortable) classes.push('cursor-pointer hover:bg-secondary-300 dark:hover:bg-secondary-600 transition-colors duration-150 ease-in-out pr-5')
|
|
9
9
|
|
|
10
|
-
if (props.stickyHeader) classes.push('sticky top-0')
|
|
11
|
-
|
|
12
10
|
if (props.textAlign === 'left') classes.push('text-left')
|
|
13
11
|
if (props.textAlign === 'right') classes.push('text-right')
|
|
14
12
|
if (props.textAlign === 'center') classes.push('text-center')
|
|
@@ -5,6 +5,10 @@ const theme: TableRowTheme = {
|
|
|
5
5
|
row: ({ props }) => {
|
|
6
6
|
const classes = []
|
|
7
7
|
|
|
8
|
+
if (props.selected) {
|
|
9
|
+
classes.push('shadow-[inset_3px_0] shadow-primary-500')
|
|
10
|
+
}
|
|
11
|
+
|
|
8
12
|
if (props.striped) {
|
|
9
13
|
classes.push('even:bg-secondary-50 dark:even:bg-secondary-700')
|
|
10
14
|
} else {
|
package/src/composables/index.ts
CHANGED