fix: scrollInto Item

This commit is contained in:
Javier Segarra 2024-11-30 01:33:18 +01:00
parent d9d6819390
commit 0e1552f962
2 changed files with 18 additions and 2 deletions

View File

@ -67,7 +67,7 @@ const dialog = ref(null);
<QTooltip>{{ t('globals.add') }}</QTooltip> <QTooltip>{{ t('globals.add') }}</QTooltip>
<QPopupProxy ref="dialog"> <QPopupProxy ref="dialog">
<OrderCatalogItemDialog <OrderCatalogItemDialog
:prices="item.prices" :item="item"
@added="() => dialog.hide()" @added="() => dialog.hide()"
/> />
</QPopupProxy> </QPopupProxy>

View File

@ -1,7 +1,7 @@
<script setup> <script setup>
import { useStateStore } from 'stores/useStateStore'; import { useStateStore } from 'stores/useStateStore';
import { useRoute, useRouter } from 'vue-router'; import { useRoute, useRouter } from 'vue-router';
import { onMounted, onUnmounted, ref, computed, watch } from 'vue'; import { onMounted, onUnmounted, ref, computed, watch, provide, nextTick } from 'vue';
import axios from 'axios'; import axios from 'axios';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import VnPaginate from 'src/components/ui/VnPaginate.vue'; import VnPaginate from 'src/components/ui/VnPaginate.vue';
@ -18,6 +18,7 @@ const dataKey = 'OrderCatalogList';
const arrayData = useArrayData(dataKey); const arrayData = useArrayData(dataKey);
const store = arrayData.store; const store = arrayData.store;
const tags = ref([]); const tags = ref([]);
const itemRefs = ref({});
let catalogParams = { let catalogParams = {
orderFk: route.params.id, orderFk: route.params.id,
@ -76,6 +77,20 @@ watch(
}, },
{ immediate: true } { immediate: true }
); );
const onItemSaved = (updatedItem) => {
scrollToItem(updatedItem.items[0].itemFk);
};
const scrollToItem = async (id) => {
await nextTick();
setTimeout(() => {
const element = itemRefs.value[id]?.$el;
if (element) {
element.scrollIntoView({ behavior: 'smooth', block: 'center' });
}
}, 100);
};
provide('onItemSaved', onItemSaved);
</script> </script>
<template> <template>
@ -115,6 +130,7 @@ watch(
<CatalogItem <CatalogItem
v-for="row in rows" v-for="row in rows"
:key="row.id" :key="row.id"
:ref="(el) => (itemRefs[row.id] = el)"
:item="row" :item="row"
is-catalog is-catalog
class="fill-icon" class="fill-icon"