UNPKG

@dialpad/dialtone

Version:

Dialpad's Dialtone design system monorepo

1 lines 10.7 kB
{"version":3,"file":"contact-centers-row.cjs","sources":["../../../recipes/leftbar/contact_centers_row/contact_centers_row.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n 'd-recipe-leftbar-row__container',\n { 'd-recipe-leftbar-row__container--off-duty': $slots.timer },\n ]\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n >\n <div\n :class=\"leftbarContactCentersRowClasses\"\n data-qa=\"dt-recipe-contact-centers-row\"\n >\n <a\n class=\"d-recipe-leftbar-row__primary\"\n :data-qa=\"$attrs['data-qa'] ?? 'd-recipe-leftbar-row-link'\"\n :aria-label=\"getAriaLabel\"\n :title=\"description\"\n :href=\"$attrs.href ?? 'javascript:void(0)'\"\n v-bind=\"removeClassStyleAttrs($attrs)\"\n v-on=\"contactRowListeners\"\n @click=\"$emit('click', $event)\"\n >\n <div class=\"d-recipe-leftbar-row__alpha\">\n <dt-icon-headphones\n size=\"300\"\n data-qa=\"dt-recipe-leftbar-row-icon\"\n />\n </div>\n <div\n class=\"d-recipe-leftbar-row__label\"\n :style=\"`flex-basis: ${labelWidth}`\"\n >\n <dt-emoji-text-wrapper\n class=\"d-recipe-leftbar-row__description\"\n data-qa=\"dt-recipe-leftbar-row-description\"\n size=\"200\"\n >\n {{ description }}\n </dt-emoji-text-wrapper>\n </div>\n </a>\n <div\n v-if=\"!hideActions\"\n class=\"d-recipe-leftbar-row__omega\"\n >\n <slot name=\"right\" />\n <div class=\"d-recipe-leftbar-row__action-container\">\n <dt-badge\n v-if=\"showUnreadCount\"\n class=\"d-recipe-leftbar-row__unread-badge\"\n data-qa=\"dt-recipe-leftbar-row-unread-badge\"\n kind=\"count\"\n type=\"bulletin\"\n >\n {{ unreadCount }}\n </dt-badge>\n <dt-button\n class=\"d-recipe-leftbar-row__action\"\n data-qa=\"dt-recipe-leftbar-row-action-button\"\n :aria-label=\"menuButtonLabel\"\n :title=\"menuButtonLabel\"\n importance=\"clear\"\n size=\"xs\"\n circle\n @click.stop=\"$emit('click-menu', $event)\"\n >\n <template #icon>\n <dt-icon-chevron-down size=\"100\" />\n </template>\n </dt-button>\n </div>\n </div>\n </div>\n <div class=\"d-recipe-leftbar-row__bottom\">\n <slot name=\"timer\" />\n </div>\n </div>\n</template>\n\n<script>\nimport { extractVueListeners, safeConcatStrings, removeClassStyleAttrs, returnFirstEl, addClassStyleAttrs } from '@/common/utils';\nimport { DtBadge } from '@/components/badge';\nimport { DtButton } from '@/components/button';\nimport { DtEmojiTextWrapper } from '@/components/emoji_text_wrapper';\nimport { DtIconChevronDown, DtIconHeadphones } from '@dialpad/dialtone-icons/vue3';\nimport { DialtoneLocalization } from '@/localization';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeContactCentersRow',\n\n components: {\n DtButton,\n DtBadge,\n DtEmojiTextWrapper,\n DtIconHeadphones,\n DtIconChevronDown,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Will be read out by a screen reader upon focus of this row. If not defined \"description\" will be read.\n */\n ariaLabel: {\n type: String,\n default: '',\n },\n\n /**\n * Text displayed next to the icon. Required.\n */\n description: {\n type: String,\n required: true,\n },\n\n /**\n * Determines if the row is selected\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Making this true will hide the unread count badge, the chevron button, and the right slot\n */\n hideActions: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Number of unread messages, could be a string to support '99+'\n */\n unreadCount: {\n type: String,\n default: null,\n validator (value) {\n if (!value) return true;\n return /^\\d+\\+?$/.test(value);\n },\n },\n },\n\n emits: [\n /**\n * Native click event on the row itself\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n\n /**\n * Menu button clicked\n *\n * @event call\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click-menu',\n ],\n\n data () {\n return {\n labelWidth: 'auto',\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n leftbarContactCentersRowClasses () {\n return [\n 'd-recipe-leftbar-row',\n 'd-recipe-leftbar-row--contact-centers',\n {\n 'd-recipe-leftbar-row__unread-count': this.showUnreadCount,\n 'd-recipe-leftbar-row--selected': this.selected,\n },\n ];\n },\n\n getAriaLabel () {\n const count = isNaN(this.unreadCount) ? this.unreadCount : Number(this.unreadCount);\n return this.ariaLabel\n ? this.ariaLabel\n : safeConcatStrings([\n this.description,\n this.i18n.$t('DIALTONE_UNREAD_MESSAGE_COUNT_TEXT', { unreadCount: count }),\n ]);\n },\n\n contactRowListeners () {\n return extractVueListeners(this.$attrs);\n },\n\n showUnreadCount () {\n return !!this.unreadCount;\n },\n\n menuButtonLabel () {\n return this.i18n.$t('DIALTONE_CONTACT_CENTERS_ROW_MENU_BUTTON_LABEL');\n },\n },\n\n watch: {\n $props: {\n deep: true,\n async handler () {\n await this.$nextTick();\n this.adjustLabelWidth();\n },\n },\n },\n\n mounted () {\n this.resizeObserver = new ResizeObserver(this.adjustLabelWidth);\n this.resizeObserver.observe(returnFirstEl(this.$el));\n this.adjustLabelWidth();\n },\n\n beforeUnmount: function () {\n this.resizeObserver.disconnect();\n },\n\n methods: {\n removeClassStyleAttrs,\n addClassStyleAttrs,\n\n adjustLabelWidth () {\n const labelWidth = returnFirstEl(this.$el)?.querySelector('.d-recipe-leftbar-row__primary')?.clientWidth || 0;\n const omegaWidth = returnFirstEl(this.$el)?.querySelector('.d-recipe-leftbar-row__omega')?.clientWidth || 0;\n const alphaWidth = returnFirstEl(this.$el)?.querySelector('.d-recipe-leftbar-row__alpha')?.clientWidth || 0;\n const paddings = 12;\n this.labelWidth = labelWidth - (omegaWidth + alphaWidth + paddings) + 'px';\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtButton","DtBadge","DtEmojiTextWrapper","DtIconHeadphones","DtIconChevronDown","value","DialtoneLocalization","count","safeConcatStrings","extractVueListeners","returnFirstEl","removeClassStyleAttrs","addClassStyleAttrs","labelWidth","omegaWidth","alphaWidth","paddings","_hoisted_1","_hoisted_2","_hoisted_4","_hoisted_5","_openBlock","_createElementBlock","_mergeProps","_ctx","$options","_createElementVNode","_normalizeClass","$props","_toHandlers","_cache","$event","_createVNode","_component_dt_icon_headphones","_normalizeStyle","$data","_component_dt_emoji_text_wrapper","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_hoisted_3","_renderSlot","_createBlock","_component_dt_badge","_component_dt_button","_withModifiers","_component_dt_icon_chevron_down"],"mappings":"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"}