1
0
forked from test/crm

Merge pull request #156 from shariquerik/list-onclick-filter-fix

fix: onlick of text only apply filter
This commit is contained in:
Shariq Ansari 2024-04-30 13:51:02 +05:30 committed by GitHub
commit 9af94873e7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 304 additions and 212 deletions

View File

@ -22,10 +22,7 @@
v-slot="{ idx, column, item }"
:row="row"
>
<ListRowItem
:item="item"
@click="(event) => emit('applyFilter', { event, idx, column, item })"
>
<ListRowItem :item="item">
<template #prefix>
<div v-if="['caller', 'receiver'].includes(column.key)">
<Avatar
@ -40,30 +37,47 @@
<FeatherIcon :name="item.icon" class="h-3 w-3" />
</div>
</template>
<div
v-if="['modified', 'creation'].includes(column.key)"
class="truncate text-base"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div v-else-if="column.key === 'status'" class="truncate text-base">
<Badge
:variant="'subtle'"
:theme="item.color"
size="md"
:label="__(item.label)"
/>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<template #default="{ label }">
<div
v-if="['modified', 'creation'].includes(column.key)"
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div v-else-if="column.key === 'status'" class="truncate text-base">
<Badge
:variant="'subtle'"
:theme="item.color"
size="md"
:label="__(item.label)"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
/>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<div
v-else
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
{{ label }}
</div>
</template>
</ListRowItem>
</ListRow>
</ListRows>

View File

@ -23,10 +23,7 @@
v-slot="{ idx, column, item }"
:row="row"
>
<ListRowItem
:item="item"
@click="(event) => emit('applyFilter', { event, idx, column, item })"
>
<ListRowItem :item="item">
<template #prefix>
<div v-if="column.key === 'full_name'">
<Avatar
@ -50,22 +47,36 @@
<PhoneIcon class="h-4 w-4" />
</div>
</template>
<div
v-if="['modified', 'creation'].includes(column.key)"
class="truncate text-base"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<template #default="{ label }">
<div
v-if="['modified', 'creation'].includes(column.key)"
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<div
v-else
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
{{ label }}
</div>
</template>
</ListRowItem>
</ListRow>
</ListRows>

View File

@ -20,18 +20,16 @@
v-slot="{ idx, column, item }"
:row="row"
>
<div
v-if="column.key === '_assign'"
class="flex items-center"
@click="(event) => emit('applyFilter', { event, idx, column, item })"
>
<MultipleAvatar :avatars="item" size="sm" />
<div v-if="column.key === '_assign'" class="flex items-center">
<MultipleAvatar
:avatars="item"
size="sm"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
/>
</div>
<ListRowItem
v-else
:item="item"
@click="(event) => emit('applyFilter', { event, idx, column, item })"
>
<ListRowItem v-else :item="item">
<template #prefix>
<div v-if="column.key === 'status'">
<IndicatorIcon :class="item.color" />
@ -58,42 +56,59 @@
<PhoneIcon class="h-4 w-4" />
</div>
</template>
<div
v-if="
[
'modified',
'creation',
'first_response_time',
'first_responded_on',
'response_by',
].includes(column.key)
"
class="truncate text-base"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div
v-else-if="column.key === 'sla_status'"
class="truncate text-base"
>
<Badge
v-if="item.value"
:variant="'subtle'"
:theme="item.color"
size="md"
:label="item.value"
/>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<template #default="{ label }">
<div
v-if="
[
'modified',
'creation',
'first_response_time',
'first_responded_on',
'response_by',
].includes(column.key)
"
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div
v-else-if="column.key === 'sla_status'"
class="truncate text-base"
>
<Badge
v-if="item.value"
:variant="'subtle'"
:theme="item.color"
size="md"
:label="item.value"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
/>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<div
v-else
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
{{ label }}
</div>
</template>
</ListRowItem>
</ListRow>
</ListRows>

View File

@ -19,37 +19,51 @@
v-slot="{ idx, column, item }"
:row="row"
>
<ListRowItem
:item="item"
@click="(event) => emit('applyFilter', { event, idx, column, item })"
>
<ListRowItem :item="item">
<!-- <template #prefix>
</template> -->
<div
v-if="['modified', 'creation'].includes(column.key)"
class="truncate text-base"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div v-else-if="column.key === 'status'" class="truncate text-base">
<Badge
:variant="'subtle'"
:theme="item.color"
size="md"
:label="item.label"
/>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<template #default="{ label }">
<div
v-if="['modified', 'creation'].includes(column.key)"
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div v-else-if="column.key === 'status'" class="truncate text-base">
<Badge
:variant="'subtle'"
:theme="item.color"
size="md"
:label="item.label"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
/>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<div
v-else
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
{{ label }}
</div>
</template>
</ListRowItem>
</ListRow>
</ListRows>

View File

@ -20,18 +20,16 @@
v-slot="{ idx, column, item }"
:row="row"
>
<div
v-if="column.key === '_assign'"
class="flex items-center"
@click="(event) => emit('applyFilter', { event, idx, column, item })"
>
<MultipleAvatar :avatars="item" size="sm" />
<div v-if="column.key === '_assign'" class="flex items-center">
<MultipleAvatar
:avatars="item"
size="sm"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
/>
</div>
<ListRowItem
v-else
:item="item"
@click="(event) => emit('applyFilter', { event, idx, column, item })"
>
<ListRowItem v-else :item="item">
<template #prefix>
<div v-if="column.key === 'status'">
<IndicatorIcon :class="item.color" />
@ -67,42 +65,59 @@
<PhoneIcon class="h-4 w-4" />
</div>
</template>
<div
v-if="
[
'modified',
'creation',
'first_response_time',
'first_responded_on',
'response_by',
].includes(column.key)
"
class="truncate text-base"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div
v-else-if="column.key === 'sla_status'"
class="truncate text-base"
>
<Badge
v-if="item.value"
:variant="'subtle'"
:theme="item.color"
size="md"
:label="item.value"
/>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<template #default="{ label }">
<div
v-if="
[
'modified',
'creation',
'first_response_time',
'first_responded_on',
'response_by',
].includes(column.key)
"
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div
v-else-if="column.key === 'sla_status'"
class="truncate text-base"
>
<Badge
v-if="item.value"
:variant="'subtle'"
:theme="item.color"
size="md"
:label="item.value"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
/>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<div
v-else
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
{{ label }}
</div>
</template>
</ListRowItem>
</ListRow>
</ListRows>
@ -213,7 +228,9 @@ function editValues(selections, unselectAll) {
function deleteValues(selections, unselectAll) {
$dialog({
title: __('Delete'),
message: __('Are you sure you want to delete {0} item(s)?', [selections.size]),
message: __('Are you sure you want to delete {0} item(s)?', [
selections.size,
]),
variant: 'danger',
actions: [
{

View File

@ -22,10 +22,7 @@
v-slot="{ idx, column, item }"
:row="row"
>
<ListRowItem
:item="item"
@click="(event) => emit('applyFilter', { event, idx, column, item })"
>
<ListRowItem :item="item">
<template #prefix>
<div v-if="column.key === 'organization_name'">
<Avatar
@ -37,22 +34,36 @@
/>
</div>
</template>
<div
v-if="['modified', 'creation'].includes(column.key)"
class="truncate text-base"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<template #default="{ label }">
<div
v-if="['modified', 'creation'].includes(column.key)"
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<div
v-else
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
{{ label }}
</div>
</template>
</ListRowItem>
</ListRow>
</ListRows>

View File

@ -29,11 +29,7 @@
</div>
</Tooltip>
</div>
<ListRowItem
v-else
:item="item"
@click="(event) => emit('applyFilter', { event, idx, column, item })"
>
<ListRowItem v-else :item="item">
<template #prefix>
<div v-if="column.key === 'status'">
<TaskStatusIcon :status="item" />
@ -51,22 +47,36 @@
/>
</div>
</template>
<div
v-if="['modified', 'creation'].includes(column.key)"
class="truncate text-base"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<template #default="{ label }">
<div
v-if="['modified', 'creation'].includes(column.key)"
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
<Tooltip :text="item.label">
<div>{{ item.timeAgo }}</div>
</Tooltip>
</div>
<div v-else-if="column.type === 'Check'">
<FormControl
type="checkbox"
:modelValue="item"
:disabled="true"
class="text-gray-900"
/>
</div>
<div
v-else
class="truncate text-base"
@click="
(event) => emit('applyFilter', { event, idx, column, item })
"
>
{{ label }}
</div>
</template>
</ListRowItem>
</ListRow>
</ListRows>