Skip to content

Commit 97aeafb

Browse files
committed
added single/multiple row select
1 parent a539d6b commit 97aeafb

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

dev/TableShow.vue

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
:fields="fieldsSimple"
1010
:busy="busy"
1111
:spinner-class="'text-red-500'"
12-
@check-row="checkRow"
13-
@row-clicked="checkRow"
12+
multiple-selection
13+
enable-check
1414
>
1515
<template #header-row>
1616
<tr>
@@ -176,7 +176,7 @@ const changePage = (values) => {
176176
177177
const selectRow = ref([])
178178
179-
const checkRow = (value) => {
179+
const checkRowMultiple = (value) => {
180180
if (selectRow.value.includes(value)) {
181181
let index = selectRow.value.indexOf(value)
182182
selectRow.value.splice(index, 1)
@@ -185,4 +185,8 @@ const checkRow = (value) => {
185185
}
186186
}
187187
188+
const checkRow = (value) => {
189+
selectRow.value = selectRow.value === value ? null : value
190+
}
191+
188192
</script>

src/components/TVTable.vue

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125
</template>
126126

127127
<script setup>
128-
import {computed, defineComponent, ref, useAttrs, useSlots, watch} from 'vue';
128+
import {computed, defineComponent, ref, useSlots, watch} from 'vue';
129129
import TVPagination from './TVPagination.vue';
130130
131131
defineComponent({
@@ -134,7 +134,6 @@ defineComponent({
134134
})
135135
136136
const slots = useSlots();
137-
const attrs = useAttrs();
138137
139138
const props = defineProps({
140139
items: {
@@ -167,6 +166,7 @@ const props = defineProps({
167166
},
168167
hidePagination: Boolean,
169168
multipleSortable: Boolean,
169+
multipleSelection: Boolean,
170170
enableCheck: Boolean,
171171
busy: Boolean,
172172
})
@@ -200,12 +200,19 @@ const sortable = ref({})
200200
const selectedRows = ref([])
201201
202202
const rowClicked = (item) => {
203-
if (selectedRows.value.includes(item)) {
204-
let index = selectedRows.value.indexOf(item)
205-
selectedRows.value.splice(index, 1)
203+
if (props.multipleSelection) {
204+
205+
if (selectedRows.value.includes(item)) {
206+
let index = selectedRows.value.indexOf(item)
207+
selectedRows.value.splice(index, 1)
208+
} else {
209+
selectedRows.value.push(item)
210+
}
211+
206212
} else {
207-
selectedRows.value.push(item)
213+
selectedRows.value = selectedRows.value.includes(item) ? [] : [item]
208214
}
215+
209216
emit('rowClicked', item)
210217
}
211218
@@ -231,7 +238,7 @@ const refreshCounter = () => {
231238
}
232239
233240
const checkSelectedForRow = (item) => {
234-
return selectedRows.value.includes(item)
241+
return props.multipleSelection ? selectedRows.value.includes(item) : selectedRows.value === item
235242
}
236243
237244
watch(() => localCurrentPage.value, (value) => {

0 commit comments

Comments
 (0)