Skip to content

Commit 7d521dd

Browse files
authored
Merge pull request #689 from devhus/main
BTable container update & row prevented clicks fix
2 parents 4d4b0b5 + f88cbe3 commit 7d521dd

File tree

4 files changed

+18
-54
lines changed

4 files changed

+18
-54
lines changed

packages/bootstrap-vue-3/src/components/BTable/BTable.vue

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
2-
<BTableContainer
2+
<BTableSimple
33
:responsive="responsive"
4-
:responsive-class="responsiveClasses"
4+
:sticky-header="stickyHeaderBoolean"
55
:table-class="tableClasses"
66
>
77
<!-- <table :class="classes"> -->
@@ -76,10 +76,10 @@
7676
<template v-for="(item, itemIndex) in computedItems" :key="itemIndex">
7777
<tr
7878
:class="getRowClasses(item)"
79-
@click.prevent="onRowClick(item, itemIndex, $event)"
80-
@dblclick.prevent="onRowDblClick(item, itemIndex, $event)"
81-
@mouseenter.prevent="onRowMouseEnter(item, itemIndex, $event)"
82-
@mouseleave.prevent="onRowMouseLeave(item, itemIndex, $event)"
79+
@click="onRowClick(item, itemIndex, $event)"
80+
@dblclick="onRowDblClick(item, itemIndex, $event)"
81+
@mouseenter="onRowMouseEnter(item, itemIndex, $event)"
82+
@mouseleave="onRowMouseLeave(item, itemIndex, $event)"
8383
>
8484
<td
8585
v-if="addSelectableCell"
@@ -175,7 +175,7 @@
175175
}}
176176
</caption>
177177
<!-- </table> -->
178-
</BTableContainer>
178+
</BTableSimple>
179179
</template>
180180

181181
<script setup lang="ts">
@@ -195,7 +195,7 @@ import type {
195195
VerticalAlign,
196196
} from '../../types'
197197
import type {BTableProvider} from '../../types/components'
198-
import BTableContainer from './BTableContainer.vue'
198+
import BTableSimple from './BTableSimple.vue'
199199
import useItemHelper from './itemHelper'
200200
201201
type NoProviderTypes = 'paging' | 'sorting' | 'filtering'
@@ -378,12 +378,6 @@ const computedItems = computed(() => {
378378
: props.items
379379
})
380380
381-
const responsiveClasses = computed(() => ({
382-
'table-responsive': typeof props.responsive === 'boolean' && props.responsive,
383-
[`table-responsive-${props.responsive}`]: typeof props.responsive === 'string',
384-
'b-table-sticky-header': stickyHeaderBoolean.value,
385-
}))
386-
387381
const getFieldHeadLabel = (field: TableField) => {
388382
if (typeof field === 'string') return titleCase(field)
389383
if (field.label !== undefined) return field.label

packages/bootstrap-vue-3/src/components/BTable/BTableContainer.vue

Lines changed: 0 additions & 24 deletions
This file was deleted.

packages/bootstrap-vue-3/src/components/BTable/BTableSimple.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
<script setup lang="ts">
1313
// import type {Breakpoint} from '../../types'
1414
import {computed, toRef} from 'vue'
15-
import type {Booleanish, ClassValue, ColorVariant} from '../../types'
1615
import {useBooleanish} from '../../composables'
16+
import type {Booleanish, ClassValue, ColorVariant} from '../../types'
1717
1818
interface BTableSimpleProps {
1919
bordered?: Booleanish
@@ -28,6 +28,7 @@ interface BTableSimpleProps {
2828
small?: Booleanish
2929
tableClass?: ClassValue
3030
tableVariant?: string
31+
stickyHeader?: Booleanish
3132
}
3233
3334
const props = withDefaults(defineProps<BTableSimpleProps>(), {
@@ -40,6 +41,7 @@ const props = withDefaults(defineProps<BTableSimpleProps>(), {
4041
stacked: false,
4142
striped: false,
4243
small: false,
44+
stickyHeader: false,
4345
})
4446
4547
const captionTopBoolean = useBooleanish(toRef(props, 'captionTop'))
@@ -49,6 +51,7 @@ const darkBoolean = useBooleanish(toRef(props, 'dark'))
4951
const hoverBoolean = useBooleanish(toRef(props, 'hover'))
5052
const smallBoolean = useBooleanish(toRef(props, 'small'))
5153
const stripedBoolean = useBooleanish(toRef(props, 'striped'))
54+
const stickyHeaderBoolean = useBooleanish(toRef(props, 'stickyHeader'))
5255
5356
const classes = computed(() => [
5457
'table',
@@ -73,6 +76,7 @@ const responsiveClasses = computed(() => [
7376
{
7477
'table-responsive': typeof props.responsive === 'boolean' && props.responsive,
7578
[`table-responsive-${props.responsive}`]: typeof props.responsive === 'string',
79+
'b-table-sticky-header': stickyHeaderBoolean.value,
7680
},
7781
])
7882
</script>

packages/bootstrap-vue-3/src/components/BTable/b-table.spec.ts

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {afterEach, describe, expect, it} from 'vitest'
33
import {ref} from 'vue'
44
import {TableField, TableItem} from '../../types'
55
import BTable from './BTable.vue'
6-
import BTableContainer from './BTableContainer.vue'
6+
import BTableSimple from './BTableSimple.vue'
77

88
const fields: Array<TableField> = [{key: 'name'}, {key: 'age'}]
99
const items: Array<TableItem> = [
@@ -14,37 +14,27 @@ const items: Array<TableItem> = [
1414
describe('b-table', () => {
1515
enableAutoUnmount(afterEach)
1616

17-
it('element is BTableContainer', () => {
17+
it('element is BTableSimple', () => {
1818
const wrapper = mount(BTable)
19-
const $tablecontainer = wrapper.findComponent(BTableContainer)
19+
const $tablecontainer = wrapper.findComponent(BTableSimple)
2020
expect($tablecontainer.exists()).toBe(true)
2121
})
2222

2323
it('tablecontainer is given prop responsive', async () => {
2424
const wrapper = mount(BTable, {
2525
props: {responsive: true},
2626
})
27-
const $tablecontainer = wrapper.getComponent(BTableContainer)
27+
const $tablecontainer = wrapper.getComponent(BTableSimple)
2828
expect($tablecontainer.props('responsive')).toBe(true)
2929
await wrapper.setProps({responsive: false})
3030
expect($tablecontainer.props('responsive')).toBe(false)
3131
})
3232

33-
it('tablecontainer is given prop responsiveClass', async () => {
34-
const wrapper = mount(BTable, {
35-
props: {responsiveClass: true},
36-
})
37-
const $tablecontainer = wrapper.getComponent(BTableContainer)
38-
expect($tablecontainer.props('responsiveClass')).toBe(true)
39-
await wrapper.setProps({responsiveClass: false})
40-
expect($tablecontainer.props('responsiveClass')).toBe(false)
41-
})
42-
4333
it('tablecontainer is given prop tableClass', async () => {
4434
const wrapper = mount(BTable, {
4535
props: {tableClass: true},
4636
})
47-
const $tablecontainer = wrapper.getComponent(BTableContainer)
37+
const $tablecontainer = wrapper.getComponent(BTableSimple)
4838
expect($tablecontainer.props('tableClass')).toBe(true)
4939
await wrapper.setProps({tableClass: false})
5040
expect($tablecontainer.props('tableClass')).toBe(false)

0 commit comments

Comments
 (0)