mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-02 12:08:01 +00:00
chore: Refactor reports for RTL (#6517)
* Refactor reports * fix: spacing issues and minor fixes --------- Co-authored-by: Nithin David <1277421+nithindavid@users.noreply.github.com>
This commit is contained in:
@@ -14,11 +14,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.mx-input {
|
.mx-input {
|
||||||
border: 1px solid var(--color-border);
|
border: 1px solid var(--s-200);
|
||||||
border-radius: var(--border-radius-normal);
|
border-radius: var(--border-radius-normal);
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 4.6rem;
|
height: 4.0rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx-input:disabled,
|
.mx-input:disabled,
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
height: 4.0rem;
|
||||||
|
}
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
margin-bottom: var(--space-small);
|
margin-bottom: var(--space-small);
|
||||||
padding: var(--space-normal);
|
padding: var(--space-normal);
|
||||||
@@ -64,7 +68,3 @@ code {
|
|||||||
.padding-right-small {
|
.padding-right-small {
|
||||||
padding-right: var(--space-one);
|
padding-right: var(--space-one);
|
||||||
}
|
}
|
||||||
|
|
||||||
.margin-right-small {
|
|
||||||
margin-right: var(--space-small);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
.margin-right-small {
|
|
||||||
margin-right: var(--space-small);
|
|
||||||
}
|
|
||||||
|
|
||||||
.margin-bottom-small {
|
.margin-bottom-small {
|
||||||
margin-bottom: var(--space-small);
|
margin-bottom: var(--space-small);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -169,7 +169,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.multiselect-wrap--small {
|
.multiselect-wrap--small {
|
||||||
$multiselect-height: 3.8rem;
|
$multiselect-height: 4.0rem;
|
||||||
|
|
||||||
.multiselect__tags,
|
.multiselect__tags,
|
||||||
.multiselect__input {
|
.multiselect__input {
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
.date-picker {
|
|
||||||
margin-left: var(--space-smaller);
|
|
||||||
}
|
|
||||||
|
|
||||||
.margin-left-small {
|
|
||||||
margin-left: var(--space-smaller);
|
|
||||||
}
|
|
||||||
|
|
||||||
.reports-option__rounded--item {
|
.reports-option__rounded--item {
|
||||||
border-radius: 100%;
|
border-radius: 100%;
|
||||||
height: var(--space-two);
|
height: var(--space-two);
|
||||||
@@ -26,6 +18,10 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.reports-option__title {
|
||||||
|
margin: 0 var(--space-small);
|
||||||
|
}
|
||||||
|
|
||||||
.business-hours {
|
.business-hours {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -37,6 +33,7 @@
|
|||||||
|
|
||||||
.business-hours-text {
|
.business-hours-text {
|
||||||
font-size: var(--font-size-small);
|
font-size: var(--font-size-small);
|
||||||
|
margin: 0 var(--space-small);
|
||||||
}
|
}
|
||||||
|
|
||||||
.switch {
|
.switch {
|
||||||
|
|||||||
@@ -24,16 +24,13 @@
|
|||||||
<inbox-name
|
<inbox-name
|
||||||
v-if="hasMultipleInboxes"
|
v-if="hasMultipleInboxes"
|
||||||
:inbox="inbox"
|
:inbox="inbox"
|
||||||
class="margin-right-small"
|
class="margin-right-1"
|
||||||
/>
|
/>
|
||||||
<span
|
<span v-if="isSnoozed" class="snoozed--display-text margin-right-1">
|
||||||
v-if="isSnoozed"
|
|
||||||
class="snoozed--display-text margin-right-small"
|
|
||||||
>
|
|
||||||
{{ snoozedDisplayText }}
|
{{ snoozedDisplayText }}
|
||||||
</span>
|
</span>
|
||||||
<woot-button
|
<woot-button
|
||||||
class="user--profile__button margin-right-small"
|
class="user--profile__button margin-right-1"
|
||||||
size="small"
|
size="small"
|
||||||
variant="link"
|
variant="link"
|
||||||
@click="$emit('contact-panel-toggle')"
|
@click="$emit('contact-panel-toggle')"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="bulk-action__agents">
|
<div v-on-clickaway="onClose" class="bulk-action__agents">
|
||||||
<div class="triangle" :style="cssVars">
|
<div class="triangle" :style="cssVars">
|
||||||
<svg height="12" viewBox="0 0 24 12" width="24">
|
<svg height="12" viewBox="0 0 24 12" width="24">
|
||||||
<path
|
<path
|
||||||
@@ -50,7 +50,6 @@
|
|||||||
:status="agent.availability_status"
|
:status="agent.availability_status"
|
||||||
:username="agent.name"
|
:username="agent.name"
|
||||||
size="22px"
|
size="22px"
|
||||||
class="margin-right-small"
|
|
||||||
/>
|
/>
|
||||||
<span class="reports-option__title">{{ agent.name }}</span>
|
<span class="reports-option__title">{{ agent.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<woot-button
|
<woot-button
|
||||||
v-if="hasActiveSegments"
|
v-if="hasActiveSegments"
|
||||||
class="margin-right-small clear"
|
class="margin-right-1 clear"
|
||||||
color-scheme="alert"
|
color-scheme="alert"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
@click="onToggleDeleteSegmentsModal"
|
@click="onToggleDeleteSegmentsModal"
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<div v-if="!hasActiveSegments" class="filters__button-wrap">
|
<div v-if="!hasActiveSegments" class="filters__button-wrap">
|
||||||
<div v-if="hasAppliedFilters" class="filters__applied-indicator" />
|
<div v-if="hasAppliedFilters" class="filters__applied-indicator" />
|
||||||
<woot-button
|
<woot-button
|
||||||
class="margin-right-small clear"
|
class="margin-right-1 clear"
|
||||||
color-scheme="secondary"
|
color-scheme="secondary"
|
||||||
data-testid="create-new-contact"
|
data-testid="create-new-contact"
|
||||||
icon="filter"
|
icon="filter"
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
<woot-button
|
<woot-button
|
||||||
v-if="hasAppliedFilters && !hasActiveSegments"
|
v-if="hasAppliedFilters && !hasActiveSegments"
|
||||||
class="margin-right-small clear"
|
class="margin-right-1 clear"
|
||||||
color-scheme="alert"
|
color-scheme="alert"
|
||||||
variant="clear"
|
variant="clear"
|
||||||
icon="save"
|
icon="save"
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
{{ $t('CONTACTS_PAGE.FILTER_CONTACTS_SAVE') }}
|
{{ $t('CONTACTS_PAGE.FILTER_CONTACTS_SAVE') }}
|
||||||
</woot-button>
|
</woot-button>
|
||||||
<woot-button
|
<woot-button
|
||||||
class="margin-right-small clear"
|
class="margin-right-1 clear"
|
||||||
color-scheme="success"
|
color-scheme="success"
|
||||||
icon="person-add"
|
icon="person-add"
|
||||||
data-testid="create-new-contact"
|
data-testid="create-new-contact"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
:src="contact.thumbnail"
|
:src="contact.thumbnail"
|
||||||
:username="contact.name"
|
:username="contact.name"
|
||||||
size="32px"
|
size="32px"
|
||||||
class="margin-right-small"
|
class="margin-right-1"
|
||||||
/>
|
/>
|
||||||
</settings-header>
|
</settings-header>
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,7 @@
|
|||||||
|
|
||||||
<label
|
<label
|
||||||
v-if="isOnOffType"
|
v-if="isOnOffType"
|
||||||
|
class="multiselect-wrap--small"
|
||||||
:class="{ error: $v.selectedAudience.$error }"
|
:class="{ error: $v.selectedAudience.$error }"
|
||||||
>
|
>
|
||||||
{{ $t('CAMPAIGN.ADD.FORM.AUDIENCE.LABEL') }}
|
{{ $t('CAMPAIGN.ADD.FORM.AUDIENCE.LABEL') }}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
type="checkbox"
|
type="checkbox"
|
||||||
:value="event"
|
:value="event"
|
||||||
name="subscriptions"
|
name="subscriptions"
|
||||||
class="margin-right-small"
|
class="margin-right-1"
|
||||||
/>
|
/>
|
||||||
<span class="fs-small">
|
<span class="fs-small">
|
||||||
{{ `${getEventLabel(event)} (${event})` }}
|
{{ `${getEventLabel(event)} (${event})` }}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="flex-container flex-dir-column medium-flex-dir-row">
|
<div class="flex-container flex-dir-column medium-flex-dir-row">
|
||||||
<div class="small-12 medium-3 pull-right">
|
<div class="small-12 medium-3 pull-right multiselect-wrap--small">
|
||||||
<multiselect
|
<multiselect
|
||||||
v-model="currentDateRangeSelection"
|
v-model="currentDateRangeSelection"
|
||||||
track-by="name"
|
track-by="name"
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<woot-date-range-picker
|
<woot-date-range-picker
|
||||||
v-if="isDateRangeSelected"
|
v-if="isDateRangeSelected"
|
||||||
|
class="margin-left-1"
|
||||||
show-range
|
show-range
|
||||||
:value="customDateRange"
|
:value="customDateRange"
|
||||||
:confirm-text="$t('REPORT.CUSTOM_DATE_RANGE.CONFIRM')"
|
:confirm-text="$t('REPORT.CUSTOM_DATE_RANGE.CONFIRM')"
|
||||||
@@ -25,7 +26,7 @@
|
|||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
v-if="notLast7Days && groupByFilter"
|
v-if="notLast7Days && groupByFilter"
|
||||||
class="small-12 medium-3 pull-right margin-left-small"
|
class="small-12 medium-3 pull-right margin-left-1 margin-right-1 multiselect-wrap--small"
|
||||||
>
|
>
|
||||||
<p aria-hidden="true" class="hide">
|
<p aria-hidden="true" class="hide">
|
||||||
{{ $t('REPORT.GROUP_BY_FILTER_DROPDOWN_LABEL') }}
|
{{ $t('REPORT.GROUP_BY_FILTER_DROPDOWN_LABEL') }}
|
||||||
@@ -43,7 +44,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="agentsFilter"
|
v-if="agentsFilter"
|
||||||
class="small-12 medium-3 pull-right margin-left-small"
|
class="small-12 medium-3 pull-right margin-left-1 margin-right-1 multiselect-wrap--small"
|
||||||
>
|
>
|
||||||
<multiselect
|
<multiselect
|
||||||
v-model="selectedAgents"
|
v-model="selectedAgents"
|
||||||
@@ -65,7 +66,7 @@
|
|||||||
v-if="showBusinessHoursSwitch"
|
v-if="showBusinessHoursSwitch"
|
||||||
class="small-12 medium-3 business-hours"
|
class="small-12 medium-3 business-hours"
|
||||||
>
|
>
|
||||||
<span class="business-hours-text margin-right-small">
|
<span class="business-hours-text margin-right-1">
|
||||||
{{ $t('REPORT.BUSINESS_HOURS') }}
|
{{ $t('REPORT.BUSINESS_HOURS') }}
|
||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
@@ -76,13 +77,14 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import WootDateRangePicker from 'dashboard/components/ui/DateRangePicker.vue';
|
import WootDateRangePicker from 'dashboard/components/ui/DateRangePicker.vue';
|
||||||
const CUSTOM_DATE_RANGE_ID = 5;
|
|
||||||
import subDays from 'date-fns/subDays';
|
import subDays from 'date-fns/subDays';
|
||||||
import startOfDay from 'date-fns/startOfDay';
|
import startOfDay from 'date-fns/startOfDay';
|
||||||
import getUnixTime from 'date-fns/getUnixTime';
|
import getUnixTime from 'date-fns/getUnixTime';
|
||||||
import { GROUP_BY_FILTER } from '../constants';
|
import { GROUP_BY_FILTER } from '../constants';
|
||||||
import endOfDay from 'date-fns/endOfDay';
|
import endOfDay from 'date-fns/endOfDay';
|
||||||
|
|
||||||
|
const CUSTOM_DATE_RANGE_ID = 5;
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
WootDateRangePicker,
|
WootDateRangePicker,
|
||||||
@@ -207,9 +209,3 @@ export default {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.date-picker {
|
|
||||||
margin-left: var(--space-smaller);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="flex-container flex-dir-column medium-flex-dir-row">
|
<div class="flex-container flex-dir-column medium-flex-dir-row">
|
||||||
<div v-if="type === 'agent'" class="small-12 medium-3 pull-right">
|
<div
|
||||||
|
v-if="type === 'agent'"
|
||||||
|
class="small-12 medium-3 pull-right multiselect-wrap--small"
|
||||||
|
>
|
||||||
<p>
|
<p>
|
||||||
{{ $t('AGENT_REPORTS.FILTER_DROPDOWN_LABEL') }}
|
{{ $t('AGENT_REPORTS.FILTER_DROPDOWN_LABEL') }}
|
||||||
</p>
|
</p>
|
||||||
@@ -21,7 +24,6 @@
|
|||||||
:status="props.option.availability_status"
|
:status="props.option.availability_status"
|
||||||
:username="props.option.name"
|
:username="props.option.name"
|
||||||
size="22px"
|
size="22px"
|
||||||
class="margin-right-small"
|
|
||||||
/>
|
/>
|
||||||
<span class="reports-option__desc">
|
<span class="reports-option__desc">
|
||||||
<span class="reports-option__title">{{ props.option.name }}</span>
|
<span class="reports-option__title">{{ props.option.name }}</span>
|
||||||
@@ -35,14 +37,16 @@
|
|||||||
:status="props.option.availability_status"
|
:status="props.option.availability_status"
|
||||||
:username="props.option.name"
|
:username="props.option.name"
|
||||||
size="22px"
|
size="22px"
|
||||||
class="margin-right-small"
|
|
||||||
/>
|
/>
|
||||||
<p>{{ props.option.name }}</p>
|
<p class="reports-option__title">{{ props.option.name }}</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</multiselect>
|
</multiselect>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="type === 'label'" class="small-12 medium-3 pull-right">
|
<div
|
||||||
|
v-else-if="type === 'label'"
|
||||||
|
class="small-12 medium-3 pull-right multiselect-wrap--small"
|
||||||
|
>
|
||||||
<p>
|
<p>
|
||||||
{{ $t('LABEL_REPORTS.FILTER_DROPDOWN_LABEL') }}
|
{{ $t('LABEL_REPORTS.FILTER_DROPDOWN_LABEL') }}
|
||||||
</p>
|
</p>
|
||||||
@@ -60,7 +64,7 @@
|
|||||||
<div class="reports-option__wrap">
|
<div class="reports-option__wrap">
|
||||||
<div
|
<div
|
||||||
:style="{ backgroundColor: props.option.color }"
|
:style="{ backgroundColor: props.option.color }"
|
||||||
class="reports-option__rounded--item margin-right-small"
|
class="reports-option__rounded--item"
|
||||||
/>
|
/>
|
||||||
<span class="reports-option__desc">
|
<span class="reports-option__desc">
|
||||||
<span class="reports-option__title">
|
<span class="reports-option__title">
|
||||||
@@ -88,7 +92,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</multiselect>
|
</multiselect>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="small-12 medium-3 pull-right">
|
<div v-else class="small-12 medium-3 pull-right multiselect-wrap--small">
|
||||||
<p>
|
<p>
|
||||||
<template v-if="type === 'inbox'">
|
<template v-if="type === 'inbox'">
|
||||||
{{ $t('INBOX_REPORTS.FILTER_DROPDOWN_LABEL') }}
|
{{ $t('INBOX_REPORTS.FILTER_DROPDOWN_LABEL') }}
|
||||||
@@ -115,7 +119,9 @@
|
|||||||
@input="changeFilterSelection"
|
@input="changeFilterSelection"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="small-12 medium-3 pull-right margin-left-small">
|
<div
|
||||||
|
class="small-12 medium-3 pull-right margin-right-1 margin-left-1 multiselect-wrap--small"
|
||||||
|
>
|
||||||
<p>
|
<p>
|
||||||
{{ $t('REPORT.DURATION_FILTER_LABEL') }}
|
{{ $t('REPORT.DURATION_FILTER_LABEL') }}
|
||||||
</p>
|
</p>
|
||||||
@@ -133,17 +139,21 @@
|
|||||||
@select="changeDateSelection"
|
@select="changeDateSelection"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<woot-date-range-picker
|
<div v-if="isDateRangeSelected" class="">
|
||||||
v-if="isDateRangeSelected"
|
<p>
|
||||||
show-range
|
{{ $t('REPORT.CUSTOM_DATE_RANGE.PLACEHOLDER') }}
|
||||||
:value="customDateRange"
|
</p>
|
||||||
:confirm-text="$t('REPORT.CUSTOM_DATE_RANGE.CONFIRM')"
|
<woot-date-range-picker
|
||||||
:placeholder="$t('REPORT.CUSTOM_DATE_RANGE.PLACEHOLDER')"
|
show-range
|
||||||
@change="onChange"
|
:value="customDateRange"
|
||||||
/>
|
:confirm-text="$t('REPORT.CUSTOM_DATE_RANGE.CONFIRM')"
|
||||||
|
:placeholder="$t('REPORT.CUSTOM_DATE_RANGE.PLACEHOLDER')"
|
||||||
|
@change="onChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="notLast7Days"
|
v-if="notLast7Days"
|
||||||
class="small-12 medium-3 pull-right margin-left-small"
|
class="small-12 medium-3 pull-right margin-right-1 margin-left-1 multiselect-wrap--small"
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
{{ $t('REPORT.GROUP_BY_FILTER_DROPDOWN_LABEL') }}
|
{{ $t('REPORT.GROUP_BY_FILTER_DROPDOWN_LABEL') }}
|
||||||
@@ -160,7 +170,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="small-12 medium-3 business-hours">
|
<div class="small-12 medium-3 business-hours">
|
||||||
<span class="business-hours-text margin-right-small">
|
<span class="business-hours-text">
|
||||||
{{ $t('REPORT.BUSINESS_HOURS') }}
|
{{ $t('REPORT.BUSINESS_HOURS') }}
|
||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
|
|||||||
Reference in New Issue
Block a user