fix: FilterPanel when is multiline and VnTable vh on n toolbar #1657
|
@ -19,6 +19,7 @@ import { useQuasar, date } from 'quasar';
|
|||
import { useStateStore } from 'stores/useStateStore';
|
||||
import { useFilterParams } from 'src/composables/useFilterParams';
|
||||
import { dashIfEmpty, toDate } from 'src/filters';
|
||||
import { useTableHeight } from './filters/useTableHeight';
|
||||
|
||||
import CrudModel from 'src/components/CrudModel.vue';
|
||||
import FormModelPopup from 'components/FormModelPopup.vue';
|
||||
|
@ -117,7 +118,7 @@ const $props = defineProps({
|
|||
},
|
||||
tableHeight: {
|
||||
type: String,
|
||||
|
||||
default: '90vh',
|
||||
default: undefined,
|
||||
},
|
||||
footer: {
|
||||
type: Boolean,
|
||||
|
@ -166,6 +167,7 @@ const tableRef = ref();
|
|||
const params = ref(useFilterParams($attrs['data-key']).params);
|
||||
const orders = ref(useFilterParams($attrs['data-key']).orders);
|
||||
const app = inject('app');
|
||||
const tableHeight = useTableHeight();
|
||||
|
||||
const editingRow = ref(null);
|
||||
const editingField = ref(null);
|
||||
|
@ -678,7 +680,7 @@ const rowCtrlClickFunction = computed(() => {
|
|||
table-header-class="bg-header"
|
||||
card-container-class="grid-three"
|
||||
flat
|
||||
:style="isTableMode && `max-height: ${tableHeight}`"
|
||||
:style="isTableMode && `max-height: ${$props.tableHeight || tableHeight}`"
|
||||
:virtual-scroll="isTableMode"
|
||||
@virtual-scroll="handleScroll"
|
||||
@row-click="(event, row) => handleRowClick(event, row)"
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
import { onMounted, nextTick, ref } from 'vue';
|
||||
|
||||
export function useTableHeight() {
|
||||
const tableHeight = ref('90vh');
|
||||
|
||||
onMounted(async () => {
|
||||
await nextTick();
|
||||
let height = 100;
|
||||
Array.from(document.querySelectorAll('[role="toolbar"]'))
|
||||
.filter((element) => window.getComputedStyle(element).display !== 'none')
|
||||
.forEach(() => {
|
||||
height -= 10;
|
||||
});
|
||||
tableHeight.value = `${height}vh`;
|
||||
});
|
||||
|
||||
return tableHeight;
|
||||
}
|
|
@ -340,3 +340,6 @@ input::-webkit-inner-spin-button {
|
|||
.containerShrinked {
|
||||
width: 70%;
|
||||
}
|
||||
.q-item__section--main ~ .q-item__section--side {
|
||||
padding-inline: 0;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ import FetchData from 'components/FetchData.vue';
|
|||
import VnFilterPanel from 'src/components/ui/VnFilterPanel.vue';
|
||||
import VnSelect from 'src/components/common/VnSelect.vue';
|
||||
import VnInput from 'src/components/common/VnInput.vue';
|
||||
import { QCheckbox } from 'quasar';
|
||||
import VnCheckbox from 'src/components/common/VnCheckbox.vue';
|
||||
|
||||
import { useArrayData } from 'composables/useArrayData';
|
||||
import { useValidator } from 'src/composables/useValidator';
|
||||
|
@ -250,10 +250,9 @@ onMounted(async () => {
|
|||
</QItemSection>
|
||||
</QItem>
|
||||
<!-- Tags filter -->
|
||||
<QItem class="row items-center">
|
||||
<QItemLabel>
|
||||
<QItemLabel header>
|
||||
{{ t('params.tags') }}
|
||||
</QItemLabel>
|
||||
|
||||
<QIcon
|
||||
name="add_circle"
|
||||
class="fill-icon-on-hover q-ml-md"
|
||||
|
@ -261,7 +260,7 @@ onMounted(async () => {
|
|||
color="primary"
|
||||
@click="tagValues.push({})"
|
||||
/>
|
||||
</QItem>
|
||||
</QItemLabel>
|
||||
<QItem
|
||||
v-for="(tag, index) in tagValues"
|
||||
:key="index"
|
||||
|
@ -269,6 +268,7 @@ onMounted(async () => {
|
|||
>
|
||||
<QItemSection class="col">
|
||||
<VnSelect
|
||||
class="full-width"
|
||||
:label="t('params.tag')"
|
||||
v-model="tag.selectedTag"
|
||||
:options="tagOptions"
|
||||
|
@ -316,25 +316,19 @@ onMounted(async () => {
|
|||
/>
|
||||
</QItem>
|
||||
<!-- Filter fields -->
|
||||
<QItem class="row items-center">
|
||||
<QItemLabel>
|
||||
{{ t('More fields') }}
|
||||
</QItemLabel>
|
||||
<QItemLabel header
|
||||
>{{ t('More fields') }}
|
||||
<QIcon
|
||||
name="add_circle"
|
||||
class="fill-icon-on-hover q-ml-md"
|
||||
size="sm"
|
||||
color="primary"
|
||||
@click="fieldFiltersValues.push({})"
|
||||
/>
|
||||
</QItem>
|
||||
<QItem
|
||||
v-for="(fieldFilter, index) in fieldFiltersValues"
|
||||
:key="index"
|
||||
class="row items-center"
|
||||
>
|
||||
/></QItemLabel>
|
||||
<QItem v-for="(fieldFilter, index) in fieldFiltersValues" :key="index">
|
||||
<QItemSection class="col">
|
||||
<VnSelect
|
||||
class="full-width"
|
||||
:label="t('params.tag')"
|
||||
:model-value="fieldFilter.selectedField"
|
||||
:options="moreFields"
|
||||
|
@ -355,7 +349,7 @@ onMounted(async () => {
|
|||
/>
|
||||
</QItemSection>
|
||||
<QItemSection class="col">
|
||||
<QCheckbox
|
||||
<VnCheckbox
|
||||
v-if="fieldFilter.selectedField?.type === 'boolean'"
|
||||
v-model="fieldFilter.value"
|
||||
:label="t('params.value')"
|
||||
|
@ -370,13 +364,14 @@ onMounted(async () => {
|
|||
@keydown.enter="applyFieldFilters(params, searchFn)"
|
||||
/>
|
||||
</QItemSection>
|
||||
<QIcon
|
||||
<QItemSection side
|
||||
><QIcon
|
||||
name="delete"
|
||||
class="fill-icon-on-hover q-ml-xs"
|
||||
size="sm"
|
||||
color="primary"
|
||||
@click="removeFieldFilter(index, params, searchFn)"
|
||||
/>
|
||||
/></QItemSection>
|
||||
</QItem>
|
||||
<QItem>
|
||||
<QItemSection>
|
||||
|
|
|
@ -99,6 +99,7 @@ const columns = computed(() => [
|
|||
align: 'left',
|
||||
label: t('globals.quantity'),
|
||||
name: 'quantity',
|
||||
class: 'shrink',
|
||||
format: (row) => toCurrency(row.quantity),
|
||||
},
|
||||
{
|
||||
|
@ -791,7 +792,7 @@ watch(
|
|||
{{ row?.item?.subName.toUpperCase() }}
|
||||
</div>
|
||||
</div>
|
||||
<FetchedTags v-if="row.item" :item="row.item" :max-length="6" />
|
||||
<FetchedTags v-if="row.item" :item="row.item" :columns="6" :max-length="6" />
|
||||
<QPopupProxy v-if="row.id && isTicketEditable">
|
||||
<VnInput
|
||||
v-model="row.concept"
|
||||
|
|
Loading…
Reference in New Issue
Al hacer F5 se calcula mal la altura de de la tabla,
La prueba la he hecho ticketSale he metido muchos registros para que supere el tamaño de la pagina y tenga que hacer scroll y después f5