Merge pull request #77 from shariquerik/apply-filter-from-row-item
feat: Apply filter on click if row items in list view
This commit is contained in:
commit
4e0fea5667
@ -1 +1 @@
|
|||||||
Subproject commit 388c8706d0f96d918651018ca58d85a56d2bf5cb
|
Subproject commit 5b17c2242369729b4e9aa31c0c78d3d53676a77f
|
||||||
@ -18,10 +18,13 @@
|
|||||||
class="mx-5"
|
class="mx-5"
|
||||||
v-for="row in rows"
|
v-for="row in rows"
|
||||||
:key="row.name"
|
:key="row.name"
|
||||||
v-slot="{ column, item }"
|
v-slot="{ idx, column, item }"
|
||||||
:row="row"
|
:row="row"
|
||||||
>
|
>
|
||||||
<ListRowItem :item="item">
|
<ListRowItem
|
||||||
|
:item="item"
|
||||||
|
@click="(event) => emit('applyFilter', { event, idx, column, item })"
|
||||||
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<div v-if="['caller', 'receiver'].includes(column.key)">
|
<div v-if="['caller', 'receiver'].includes(column.key)">
|
||||||
<Avatar
|
<Avatar
|
||||||
@ -108,7 +111,12 @@ const props = defineProps({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const emit = defineEmits(['loadMore', 'updatePageCount', 'columnWidthUpdated'])
|
const emit = defineEmits([
|
||||||
|
'loadMore',
|
||||||
|
'updatePageCount',
|
||||||
|
'columnWidthUpdated',
|
||||||
|
'applyFilter',
|
||||||
|
])
|
||||||
|
|
||||||
const pageLengthCount = defineModel()
|
const pageLengthCount = defineModel()
|
||||||
|
|
||||||
|
|||||||
@ -19,10 +19,13 @@
|
|||||||
class="mx-5"
|
class="mx-5"
|
||||||
v-for="row in rows"
|
v-for="row in rows"
|
||||||
:key="row.name"
|
:key="row.name"
|
||||||
v-slot="{ column, item }"
|
v-slot="{ idx, column, item }"
|
||||||
:row="row"
|
:row="row"
|
||||||
>
|
>
|
||||||
<ListRowItem :item="item">
|
<ListRowItem
|
||||||
|
:item="item"
|
||||||
|
@click="(event) => emit('applyFilter', { event, idx, column, item })"
|
||||||
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<div v-if="column.key === 'full_name'">
|
<div v-if="column.key === 'full_name'">
|
||||||
<Avatar
|
<Avatar
|
||||||
@ -138,6 +141,7 @@ const emit = defineEmits([
|
|||||||
'updatePageCount',
|
'updatePageCount',
|
||||||
'reload',
|
'reload',
|
||||||
'columnWidthUpdated',
|
'columnWidthUpdated',
|
||||||
|
'applyFilter',
|
||||||
])
|
])
|
||||||
|
|
||||||
const pageLengthCount = defineModel()
|
const pageLengthCount = defineModel()
|
||||||
|
|||||||
@ -16,13 +16,21 @@
|
|||||||
class="mx-5"
|
class="mx-5"
|
||||||
v-for="row in rows"
|
v-for="row in rows"
|
||||||
:key="row.name"
|
:key="row.name"
|
||||||
v-slot="{ column, item }"
|
v-slot="{ idx, column, item }"
|
||||||
:row="row"
|
:row="row"
|
||||||
>
|
>
|
||||||
<div v-if="column.key === '_assign'" class="flex items-center">
|
<div
|
||||||
|
v-if="column.key === '_assign'"
|
||||||
|
class="flex items-center"
|
||||||
|
@click="(event) => emit('applyFilter', { event, idx, column, item })"
|
||||||
|
>
|
||||||
<MultipleAvatar :avatars="item" size="sm" />
|
<MultipleAvatar :avatars="item" size="sm" />
|
||||||
</div>
|
</div>
|
||||||
<ListRowItem v-else :item="item">
|
<ListRowItem
|
||||||
|
v-else
|
||||||
|
:item="item"
|
||||||
|
@click="(event) => emit('applyFilter', { event, idx, column, item })"
|
||||||
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<div v-if="column.key === 'status'">
|
<div v-if="column.key === 'status'">
|
||||||
<IndicatorIcon :class="item.color" />
|
<IndicatorIcon :class="item.color" />
|
||||||
@ -164,7 +172,12 @@ const props = defineProps({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const emit = defineEmits(['loadMore', 'updatePageCount', 'columnWidthUpdated'])
|
const emit = defineEmits([
|
||||||
|
'loadMore',
|
||||||
|
'updatePageCount',
|
||||||
|
'columnWidthUpdated',
|
||||||
|
'applyFilter',
|
||||||
|
])
|
||||||
|
|
||||||
const pageLengthCount = defineModel()
|
const pageLengthCount = defineModel()
|
||||||
const list = defineModel('list')
|
const list = defineModel('list')
|
||||||
|
|||||||
@ -15,10 +15,13 @@
|
|||||||
class="mx-5"
|
class="mx-5"
|
||||||
v-for="row in rows"
|
v-for="row in rows"
|
||||||
:key="row.name"
|
:key="row.name"
|
||||||
v-slot="{ column, item }"
|
v-slot="{ idx, column, item }"
|
||||||
:row="row"
|
:row="row"
|
||||||
>
|
>
|
||||||
<ListRowItem :item="item">
|
<ListRowItem
|
||||||
|
:item="item"
|
||||||
|
@click="(event) => emit('applyFilter', { event, idx, column, item })"
|
||||||
|
>
|
||||||
<!-- <template #prefix>
|
<!-- <template #prefix>
|
||||||
|
|
||||||
</template> -->
|
</template> -->
|
||||||
@ -130,6 +133,7 @@ const emit = defineEmits([
|
|||||||
'showEmailTemplate',
|
'showEmailTemplate',
|
||||||
'reload',
|
'reload',
|
||||||
'columnWidthUpdated',
|
'columnWidthUpdated',
|
||||||
|
'applyFilter',
|
||||||
])
|
])
|
||||||
|
|
||||||
const pageLengthCount = defineModel()
|
const pageLengthCount = defineModel()
|
||||||
|
|||||||
@ -16,13 +16,21 @@
|
|||||||
class="mx-5"
|
class="mx-5"
|
||||||
v-for="row in rows"
|
v-for="row in rows"
|
||||||
:key="row.name"
|
:key="row.name"
|
||||||
v-slot="{ column, item }"
|
v-slot="{ idx, column, item }"
|
||||||
:row="row"
|
:row="row"
|
||||||
>
|
>
|
||||||
<div v-if="column.key === '_assign'" class="flex items-center">
|
<div
|
||||||
|
v-if="column.key === '_assign'"
|
||||||
|
class="flex items-center"
|
||||||
|
@click="(event) => emit('applyFilter', { event, idx, column, item })"
|
||||||
|
>
|
||||||
<MultipleAvatar :avatars="item" size="sm" />
|
<MultipleAvatar :avatars="item" size="sm" />
|
||||||
</div>
|
</div>
|
||||||
<ListRowItem v-else :item="item">
|
<ListRowItem
|
||||||
|
v-else
|
||||||
|
:item="item"
|
||||||
|
@click="(event) => emit('applyFilter', { event, idx, column, item })"
|
||||||
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<div v-if="column.key === 'status'">
|
<div v-if="column.key === 'status'">
|
||||||
<IndicatorIcon :class="item.color" />
|
<IndicatorIcon :class="item.color" />
|
||||||
@ -173,7 +181,12 @@ const props = defineProps({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const emit = defineEmits(['loadMore', 'updatePageCount', 'columnWidthUpdated'])
|
const emit = defineEmits([
|
||||||
|
'loadMore',
|
||||||
|
'updatePageCount',
|
||||||
|
'columnWidthUpdated',
|
||||||
|
'applyFilter',
|
||||||
|
])
|
||||||
|
|
||||||
const pageLengthCount = defineModel()
|
const pageLengthCount = defineModel()
|
||||||
const list = defineModel('list')
|
const list = defineModel('list')
|
||||||
|
|||||||
@ -18,10 +18,13 @@
|
|||||||
class="mx-5"
|
class="mx-5"
|
||||||
v-for="row in rows"
|
v-for="row in rows"
|
||||||
:key="row.name"
|
:key="row.name"
|
||||||
v-slot="{ column, item }"
|
v-slot="{ idx, column, item }"
|
||||||
:row="row"
|
:row="row"
|
||||||
>
|
>
|
||||||
<ListRowItem :item="item">
|
<ListRowItem
|
||||||
|
:item="item"
|
||||||
|
@click="(event) => emit('applyFilter', { event, idx, column, item })"
|
||||||
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<div v-if="column.key === 'organization_name'">
|
<div v-if="column.key === 'organization_name'">
|
||||||
<Avatar
|
<Avatar
|
||||||
@ -123,6 +126,7 @@ const emit = defineEmits([
|
|||||||
'updatePageCount',
|
'updatePageCount',
|
||||||
'reload',
|
'reload',
|
||||||
'columnWidthUpdated',
|
'columnWidthUpdated',
|
||||||
|
'applyFilter',
|
||||||
])
|
])
|
||||||
|
|
||||||
const pageLengthCount = defineModel()
|
const pageLengthCount = defineModel()
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
class="mx-5"
|
class="mx-5"
|
||||||
v-for="row in rows"
|
v-for="row in rows"
|
||||||
:key="row.name"
|
:key="row.name"
|
||||||
v-slot="{ column, item }"
|
v-slot="{ idx, column, item }"
|
||||||
:row="row"
|
:row="row"
|
||||||
>
|
>
|
||||||
<Tooltip
|
<Tooltip
|
||||||
@ -30,7 +30,11 @@
|
|||||||
{{ dateFormat(item, 'D MMM, hh:mm a') }}
|
{{ dateFormat(item, 'D MMM, hh:mm a') }}
|
||||||
</div>
|
</div>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
<ListRowItem v-else :item="item">
|
<ListRowItem
|
||||||
|
v-else
|
||||||
|
:item="item"
|
||||||
|
@click="(event) => emit('applyFilter', { event, idx, column, item })"
|
||||||
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<div v-if="column.key === 'status'">
|
<div v-if="column.key === 'status'">
|
||||||
<TaskStatusIcon :status="item" />
|
<TaskStatusIcon :status="item" />
|
||||||
@ -153,6 +157,7 @@ const emit = defineEmits([
|
|||||||
'showTask',
|
'showTask',
|
||||||
'reload',
|
'reload',
|
||||||
'columnWidthUpdated',
|
'columnWidthUpdated',
|
||||||
|
'applyFilter',
|
||||||
])
|
])
|
||||||
|
|
||||||
const pageLengthCount = defineModel()
|
const pageLengthCount = defineModel()
|
||||||
|
|||||||
@ -24,11 +24,12 @@
|
|||||||
:key="avatar.name"
|
:key="avatar.name"
|
||||||
>
|
>
|
||||||
<Avatar
|
<Avatar
|
||||||
class="-mr-1.5 transform ring-2 ring-white transition hover:z-10 hover:scale-110"
|
class="user-avatar -mr-1.5 transform ring-2 ring-white transition hover:z-10 hover:scale-110"
|
||||||
shape="circle"
|
shape="circle"
|
||||||
:image="avatar.image"
|
:image="avatar.image"
|
||||||
:label="avatar.label"
|
:label="avatar.label"
|
||||||
:size="size"
|
:size="size"
|
||||||
|
:data-name="avatar.name"
|
||||||
/>
|
/>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -536,6 +536,39 @@ function saveView() {
|
|||||||
showViewModal.value = true
|
showViewModal.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function applyFilter({ event, idx, column, item }) {
|
||||||
|
let restrictedFieldtypes = ['Duration', 'Datetime', 'Time']
|
||||||
|
if (restrictedFieldtypes.includes(column.type) || idx === 0) return
|
||||||
|
|
||||||
|
event.stopPropagation()
|
||||||
|
event.preventDefault()
|
||||||
|
|
||||||
|
let filters = { ...list.value.params.filters }
|
||||||
|
|
||||||
|
let value = item.name || item.label || item
|
||||||
|
|
||||||
|
if (value) {
|
||||||
|
filters[column.key] = value
|
||||||
|
} else {
|
||||||
|
delete filters[column.key]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (column.key == '_assign') {
|
||||||
|
if (item.length > 1) {
|
||||||
|
let target = e.target.closest('.user-avatar')
|
||||||
|
if (target) {
|
||||||
|
let name = target.getAttribute('data-name')
|
||||||
|
filters['_assign'] = ['LIKE', `%${name}%`]
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
filters['_assign'] = ['LIKE', `%${item[0].name}%`]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateFilter(filters)
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({ applyFilter })
|
||||||
|
|
||||||
// Watchers
|
// Watchers
|
||||||
watch(
|
watch(
|
||||||
() => getView(route.query.view),
|
() => getView(route.query.view),
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</LayoutHeader>
|
</LayoutHeader>
|
||||||
<ViewControls
|
<ViewControls
|
||||||
|
ref="viewControls"
|
||||||
v-model="callLogs"
|
v-model="callLogs"
|
||||||
v-model:loadMore="loadMore"
|
v-model:loadMore="loadMore"
|
||||||
v-model:resizeColumn="triggerResize"
|
v-model:resizeColumn="triggerResize"
|
||||||
@ -25,6 +26,7 @@
|
|||||||
@columnWidthUpdated="() => triggerResize++"
|
@columnWidthUpdated="() => triggerResize++"
|
||||||
@updatePageCount="(count) => (updatedPageCount = count)"
|
@updatePageCount="(count) => (updatedPageCount = count)"
|
||||||
@reload="callLogs.reload()"
|
@reload="callLogs.reload()"
|
||||||
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
v-else-if="callLogs.data"
|
v-else-if="callLogs.data"
|
||||||
@ -65,6 +67,7 @@ const callLogs = ref({})
|
|||||||
const loadMore = ref(1)
|
const loadMore = ref(1)
|
||||||
const triggerResize = ref(1)
|
const triggerResize = ref(1)
|
||||||
const updatedPageCount = ref(20)
|
const updatedPageCount = ref(20)
|
||||||
|
const viewControls = ref(null)
|
||||||
|
|
||||||
const rows = computed(() => {
|
const rows = computed(() => {
|
||||||
if (!callLogs.value?.data?.data) return []
|
if (!callLogs.value?.data?.data) return []
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</LayoutHeader>
|
</LayoutHeader>
|
||||||
<ViewControls
|
<ViewControls
|
||||||
|
ref="viewControls"
|
||||||
v-model="contacts"
|
v-model="contacts"
|
||||||
v-model:loadMore="loadMore"
|
v-model:loadMore="loadMore"
|
||||||
v-model:resizeColumn="triggerResize"
|
v-model:resizeColumn="triggerResize"
|
||||||
@ -30,6 +31,7 @@
|
|||||||
@columnWidthUpdated="() => triggerResize++"
|
@columnWidthUpdated="() => triggerResize++"
|
||||||
@updatePageCount="(count) => (updatedPageCount = count)"
|
@updatePageCount="(count) => (updatedPageCount = count)"
|
||||||
@reload="contacts.reload()"
|
@reload="contacts.reload()"
|
||||||
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
v-else-if="contacts.data"
|
v-else-if="contacts.data"
|
||||||
@ -89,6 +91,7 @@ const contacts = ref({})
|
|||||||
const loadMore = ref(1)
|
const loadMore = ref(1)
|
||||||
const triggerResize = ref(1)
|
const triggerResize = ref(1)
|
||||||
const updatedPageCount = ref(20)
|
const updatedPageCount = ref(20)
|
||||||
|
const viewControls = ref(null)
|
||||||
|
|
||||||
const rows = computed(() => {
|
const rows = computed(() => {
|
||||||
if (!contacts.value?.data?.data) return []
|
if (!contacts.value?.data?.data) return []
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</LayoutHeader>
|
</LayoutHeader>
|
||||||
<ViewControls
|
<ViewControls
|
||||||
|
ref="viewControls"
|
||||||
v-model="deals"
|
v-model="deals"
|
||||||
v-model:loadMore="loadMore"
|
v-model:loadMore="loadMore"
|
||||||
v-model:resizeColumn="triggerResize"
|
v-model:resizeColumn="triggerResize"
|
||||||
@ -30,6 +31,7 @@
|
|||||||
@loadMore="() => loadMore++"
|
@loadMore="() => loadMore++"
|
||||||
@columnWidthUpdated="() => triggerResize++"
|
@columnWidthUpdated="() => triggerResize++"
|
||||||
@updatePageCount="(count) => (updatedPageCount = count)"
|
@updatePageCount="(count) => (updatedPageCount = count)"
|
||||||
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
/>
|
/>
|
||||||
<div v-else-if="deals.data" class="flex h-full items-center justify-center">
|
<div v-else-if="deals.data" class="flex h-full items-center justify-center">
|
||||||
<div
|
<div
|
||||||
@ -94,6 +96,7 @@ const deals = ref({})
|
|||||||
const loadMore = ref(1)
|
const loadMore = ref(1)
|
||||||
const triggerResize = ref(1)
|
const triggerResize = ref(1)
|
||||||
const updatedPageCount = ref(20)
|
const updatedPageCount = ref(20)
|
||||||
|
const viewControls = ref(null)
|
||||||
|
|
||||||
// Rows
|
// Rows
|
||||||
const rows = computed(() => {
|
const rows = computed(() => {
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</LayoutHeader>
|
</LayoutHeader>
|
||||||
<ViewControls
|
<ViewControls
|
||||||
|
ref="viewControls"
|
||||||
v-model="emailTemplates"
|
v-model="emailTemplates"
|
||||||
v-model:loadMore="loadMore"
|
v-model:loadMore="loadMore"
|
||||||
v-model:resizeColumn="triggerResize"
|
v-model:resizeColumn="triggerResize"
|
||||||
@ -31,6 +32,7 @@
|
|||||||
@updatePageCount="(count) => (updatedPageCount = count)"
|
@updatePageCount="(count) => (updatedPageCount = count)"
|
||||||
@showEmailTemplate="showEmailTemplate"
|
@showEmailTemplate="showEmailTemplate"
|
||||||
@reload="emailTemplates.reload()"
|
@reload="emailTemplates.reload()"
|
||||||
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
v-else-if="emailTemplates.data"
|
v-else-if="emailTemplates.data"
|
||||||
@ -69,6 +71,7 @@ const emailTemplates = ref({})
|
|||||||
const loadMore = ref(1)
|
const loadMore = ref(1)
|
||||||
const triggerResize = ref(1)
|
const triggerResize = ref(1)
|
||||||
const updatedPageCount = ref(20)
|
const updatedPageCount = ref(20)
|
||||||
|
const viewControls = ref(null)
|
||||||
|
|
||||||
const rows = computed(() => {
|
const rows = computed(() => {
|
||||||
if (!emailTemplates.value?.data?.data) return []
|
if (!emailTemplates.value?.data?.data) return []
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</LayoutHeader>
|
</LayoutHeader>
|
||||||
<ViewControls
|
<ViewControls
|
||||||
|
ref="viewControls"
|
||||||
v-model="leads"
|
v-model="leads"
|
||||||
v-model:loadMore="loadMore"
|
v-model:loadMore="loadMore"
|
||||||
v-model:resizeColumn="triggerResize"
|
v-model:resizeColumn="triggerResize"
|
||||||
@ -31,6 +32,7 @@
|
|||||||
@loadMore="() => loadMore++"
|
@loadMore="() => loadMore++"
|
||||||
@columnWidthUpdated="() => triggerResize++"
|
@columnWidthUpdated="() => triggerResize++"
|
||||||
@updatePageCount="(count) => (updatedPageCount = count)"
|
@updatePageCount="(count) => (updatedPageCount = count)"
|
||||||
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
/>
|
/>
|
||||||
<div v-else-if="leads.data" class="flex h-full items-center justify-center">
|
<div v-else-if="leads.data" class="flex h-full items-center justify-center">
|
||||||
<div
|
<div
|
||||||
@ -89,6 +91,7 @@ const leads = ref({})
|
|||||||
const loadMore = ref(1)
|
const loadMore = ref(1)
|
||||||
const triggerResize = ref(1)
|
const triggerResize = ref(1)
|
||||||
const updatedPageCount = ref(20)
|
const updatedPageCount = ref(20)
|
||||||
|
const viewControls = ref(null)
|
||||||
|
|
||||||
// Rows
|
// Rows
|
||||||
const rows = computed(() => {
|
const rows = computed(() => {
|
||||||
|
|||||||
@ -14,6 +14,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</LayoutHeader>
|
</LayoutHeader>
|
||||||
<ViewControls
|
<ViewControls
|
||||||
|
ref="viewControls"
|
||||||
v-model="organizations"
|
v-model="organizations"
|
||||||
v-model:loadMore="loadMore"
|
v-model:loadMore="loadMore"
|
||||||
v-model:resizeColumn="triggerResize"
|
v-model:resizeColumn="triggerResize"
|
||||||
@ -34,6 +35,7 @@
|
|||||||
@columnWidthUpdated="() => triggerResize++"
|
@columnWidthUpdated="() => triggerResize++"
|
||||||
@updatePageCount="(count) => (updatedPageCount = count)"
|
@updatePageCount="(count) => (updatedPageCount = count)"
|
||||||
@reload="organizations.reload()"
|
@reload="organizations.reload()"
|
||||||
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
v-else-if="organizations.data"
|
v-else-if="organizations.data"
|
||||||
@ -95,6 +97,7 @@ const organizations = ref({})
|
|||||||
const loadMore = ref(1)
|
const loadMore = ref(1)
|
||||||
const triggerResize = ref(1)
|
const triggerResize = ref(1)
|
||||||
const updatedPageCount = ref(20)
|
const updatedPageCount = ref(20)
|
||||||
|
const viewControls = ref(null)
|
||||||
|
|
||||||
const rows = computed(() => {
|
const rows = computed(() => {
|
||||||
if (!organizations.value?.data?.data) return []
|
if (!organizations.value?.data?.data) return []
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</LayoutHeader>
|
</LayoutHeader>
|
||||||
<ViewControls
|
<ViewControls
|
||||||
|
ref="viewControls"
|
||||||
v-model="tasks"
|
v-model="tasks"
|
||||||
v-model:loadMore="loadMore"
|
v-model:loadMore="loadMore"
|
||||||
v-model:resizeColumn="triggerResize"
|
v-model:resizeColumn="triggerResize"
|
||||||
@ -31,6 +32,7 @@
|
|||||||
@updatePageCount="(count) => (updatedPageCount = count)"
|
@updatePageCount="(count) => (updatedPageCount = count)"
|
||||||
@showTask="showTask"
|
@showTask="showTask"
|
||||||
@reload="tasks.reload()"
|
@reload="tasks.reload()"
|
||||||
|
@applyFilter="(data) => viewControls.applyFilter(data)"
|
||||||
/>
|
/>
|
||||||
<div v-else-if="tasks.data" class="flex h-full items-center justify-center">
|
<div v-else-if="tasks.data" class="flex h-full items-center justify-center">
|
||||||
<div
|
<div
|
||||||
@ -63,6 +65,7 @@ const tasks = ref({})
|
|||||||
const loadMore = ref(1)
|
const loadMore = ref(1)
|
||||||
const triggerResize = ref(1)
|
const triggerResize = ref(1)
|
||||||
const updatedPageCount = ref(20)
|
const updatedPageCount = ref(20)
|
||||||
|
const viewControls = ref(null)
|
||||||
|
|
||||||
const rows = computed(() => {
|
const rows = computed(() => {
|
||||||
if (!tasks.value?.data?.data) return []
|
if (!tasks.value?.data?.data) return []
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user