#8078 enable multi choice #848

Merged
jorgep merged 17 commits from 8078-enableMultiSelection into dev 2024-11-05 10:20:05 +00:00
1 changed files with 11 additions and 0 deletions
Showing only changes of commit 0cc0e82aaa - Show all commits

View File

@ -331,6 +331,16 @@ function handleScroll() {
const isAtBottom = Math.abs(scrollHeight - scrollTop - clientHeight) <= 40;
if (isAtBottom) CrudModelRef.value.vnPaginateRef.paginate();
}
function handleSelection({ evt, added, rows: selectedRows }, rows) {
if (evt?.shiftKey && added) {
const rowIndex = selectedRows[0].$index;
Review

Solo selecciona 1, en el unico momento en que se pueden seleccionar más, es cuando le das al checkbox para seleccionarlas todas y evt es undefined. Además, quasar siempre añade la propiedad $index.

Solo selecciona 1, en el unico momento en que se pueden seleccionar más, es cuando le das al checkbox para seleccionarlas todas y **evt es undefined**. Además, quasar siempre añade la propiedad **$index**.
Review
Quasar o CrudModel? https://gitea.verdnatura.es/verdnatura/salix-front/src/commit/6248a4117d06e60ee4f141dcb5b65969c590bfbe/src/components/CrudModel.vue#L123 😏
for (const row of rows) {

Podría hacer un filter, pero creo que mejor un for para no recorrerlas todas , en caso de que hayan muchos registros.

Podría hacer un filter, pero creo que mejor un for para no recorrerlas todas , en caso de que hayan muchos registros.
if (row.$index > rowIndex) break;
selected.value.push(row);
}
Review

Así se comprueba si la fila ya está seleccionada y no se recorren todas las filas.

Así se comprueba si la fila ya está seleccionada y no se recorren todas las filas.
}
}
</script>
<template>
<QDrawer
@ -431,6 +441,7 @@ function handleScroll() {
@virtual-scroll="handleScroll"
@row-click="(_, row) => rowClickFunction && rowClickFunction(row)"
@update:selected="emit('update:selected', $event)"
@selection="(details) => handleSelection(details, rows)"
>
<template #top-left v-if="!$props.withoutHeader">
<slot name="top-left"></slot>