feat(Table): add v-model:sort prop (#803)

Co-authored-by: Benjamin Canac <canacb1@gmail.com>
This commit is contained in:
Italo
2023-10-14 14:18:49 -03:00
committed by GitHub
parent 8bfd3591a6
commit 9f4d88e0aa
4 changed files with 115 additions and 4 deletions

View File

@@ -152,7 +152,7 @@ export default defineComponent({
default: undefined
}
},
emits: ['update:modelValue'],
emits: ['update:modelValue', 'update:sort'],
setup (props, { emit, attrs: $attrs }) {
const { ui, attrs } = useUI('table', toRef(props, 'ui'), config, toRef(props, 'class'))
@@ -160,6 +160,8 @@ export default defineComponent({
const sort = ref(defu({}, props.sort, { column: null, direction: 'asc' }))
const defaultSort = { column: sort.value.column, direction: null }
const rows = computed(() => {
if (!sort.value?.column) {
return props.rows
@@ -225,13 +227,15 @@ export default defineComponent({
const direction = !column.direction || column.direction === 'asc' ? 'desc' : 'asc'
if (sort.value.direction === direction) {
sort.value = defu({}, props.sort, { column: null, direction: 'asc' })
sort.value = defu({}, defaultSort, { column: null, direction: 'asc' })
} else {
sort.value.direction = sort.value.direction === 'asc' ? 'desc' : 'asc'
}
} else {
sort.value = { column: column.key, direction: column.direction || 'asc' }
}
emit('update:sort', sort.value)
}
function onSelect (row) {