diff --git a/app/controllers/api/v1/widget/conversations_controller.rb b/app/controllers/api/v1/widget/conversations_controller.rb index 1d1ba8a7e..7e6d84bd2 100644 --- a/app/controllers/api/v1/widget/conversations_controller.rb +++ b/app/controllers/api/v1/widget/conversations_controller.rb @@ -33,10 +33,10 @@ class Api::V1::Widget::ConversationsController < Api::V1::Widget::BaseController end def transcript - if permitted_params[:email].present? && conversation.present? + if conversation.present? && conversation.contact.present? && conversation.contact.email.present? ConversationReplyMailer.with(account: conversation.account).conversation_transcript( conversation, - permitted_params[:email] + conversation.contact.email )&.deliver_later end head :ok diff --git a/app/javascript/dashboard/api/slaReports.js b/app/javascript/dashboard/api/slaReports.js index c187c58a3..36a3a895c 100644 --- a/app/javascript/dashboard/api/slaReports.js +++ b/app/javascript/dashboard/api/slaReports.js @@ -13,6 +13,7 @@ class SLAReportsAPI extends ApiClient { inbox_id, team_id, sla_policy_id, + label_list, page, } = {}) { return axios.get(this.url, { @@ -23,6 +24,7 @@ class SLAReportsAPI extends ApiClient { inbox_id, team_id, sla_policy_id, + label_list, page, }, }); @@ -54,6 +56,7 @@ class SLAReportsAPI extends ApiClient { assigned_agent_id, inbox_id, team_id, + label_list, sla_policy_id, } = {}) { return axios.get(`${this.url}/metrics`, { @@ -62,6 +65,7 @@ class SLAReportsAPI extends ApiClient { until: to, assigned_agent_id, inbox_id, + label_list, team_id, sla_policy_id, }, diff --git a/app/javascript/dashboard/api/specs/slaReports.spec.js b/app/javascript/dashboard/api/specs/slaReports.spec.js index 51ac8bfe4..e69f527b2 100644 --- a/app/javascript/dashboard/api/specs/slaReports.spec.js +++ b/app/javascript/dashboard/api/specs/slaReports.spec.js @@ -35,6 +35,7 @@ describe('#SLAReports API', () => { inbox_id: 1, team_id: 1, sla_policy_id: 1, + label_list: ['label1'], }); expect(axiosMock.get).toHaveBeenCalledWith('/api/v1/applied_slas', { params: { @@ -45,6 +46,7 @@ describe('#SLAReports API', () => { inbox_id: 1, team_id: 1, sla_policy_id: 1, + label_list: ['label1'], }, }); }); @@ -56,6 +58,7 @@ describe('#SLAReports API', () => { inbox_id: 1, team_id: 1, sla_policy_id: 1, + label_list: ['label1'], }); expect(axiosMock.get).toHaveBeenCalledWith( '/api/v1/applied_slas/metrics', @@ -67,6 +70,7 @@ describe('#SLAReports API', () => { inbox_id: 1, team_id: 1, sla_policy_id: 1, + label_list: ['label1'], }, } ); diff --git a/app/javascript/dashboard/assets/scss/_date-picker.scss b/app/javascript/dashboard/assets/scss/_date-picker.scss index 2132d5fd5..60c24b421 100644 --- a/app/javascript/dashboard/assets/scss/_date-picker.scss +++ b/app/javascript/dashboard/assets/scss/_date-picker.scss @@ -1,6 +1,13 @@ @import '~vue2-datepicker/scss/index'; .date-picker { + // To be removed one SLA reports date picker is created + &.small { + .mx-input { + @apply h-8 text-sm; + } + } + &.no-margin { .mx-input { @apply mb-0; diff --git a/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss b/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss index 9170715e0..99b006045 100644 --- a/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss +++ b/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss @@ -153,6 +153,29 @@ } .multiselect-wrap--small { + // To be removed one SLA reports date picker is created + &.tiny { + .multiselect.no-margin { + @apply min-h-[32px]; + } + + .multiselect__select { + @apply min-h-[32px] h-8; + + &::before { + @apply top-[60%]; + } + } + + .multiselect__tags { + @apply min-h-[32px] max-h-[32px]; + + .multiselect__single { + @apply pt-1 pb-1; + } + } + } + .multiselect__tags, .multiselect__input, .multiselect { diff --git a/app/javascript/dashboard/components/widgets/TableFooterPagination.vue b/app/javascript/dashboard/components/widgets/TableFooterPagination.vue index c048b2eb7..38ebdc69c 100644 --- a/app/javascript/dashboard/components/widgets/TableFooterPagination.vue +++ b/app/javascript/dashboard/components/widgets/TableFooterPagination.vue @@ -82,7 +82,7 @@ + + diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/AddFilterChip.vue b/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/AddFilterChip.vue new file mode 100644 index 000000000..48a1c2701 --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/AddFilterChip.vue @@ -0,0 +1,98 @@ + + + diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterButton.vue b/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterButton.vue index 2c9784705..3bbfb415c 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterButton.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterButton.vue @@ -4,23 +4,44 @@ defineProps({ type: String, default: '', }, + rightIcon: { + type: String, + default: '', + }, + leftIcon: { + type: String, + default: '', + }, }); diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterDropdownSearch.vue b/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterDropdownSearch.vue index ee090edf4..558816deb 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterDropdownSearch.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterDropdownSearch.vue @@ -1,9 +1,5 @@ diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterListDropdown.vue b/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterListDropdown.vue index fbb07db77..1a0543af3 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterListDropdown.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/reports/components/Filters/v3/FilterListDropdown.vue @@ -14,18 +14,18 @@ const props = defineProps({ type: Boolean, default: false, }, - inputButtonText: { - type: String, - default: '', - }, - emptyListMessage: { - type: String, - default: '', - }, inputPlaceholder: { type: String, default: '', }, + activeFilterId: { + type: Number, + default: null, + }, + showClearFilter: { + type: Boolean, + default: false, + }, }); const searchTerm = ref(''); @@ -42,29 +42,36 @@ const filteredListItems = computed(() => { const isDropdownListEmpty = computed(() => { return !filteredListItems.value.length; }); + +const isFilterActive = id => { + if (!props.activeFilterId) return false; + return id === props.activeFilterId; +};