UNPKG

@dialpad/dialtone

Version:

Dialpad's Dialtone design system monorepo

1 lines 19.5 kB
{"version":3,"file":"general-row.cjs","names":[],"sources":["../../../recipes/leftbar/general_row/general_row.vue"],"sourcesContent":["<template>\n <div\n :class=\"leftbarGeneralRowClasses\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n data-qa=\"dt-recipe-leftbar-row\"\n >\n <a\n class=\"d-recipe-leftbar-row__primary\"\n :data-qa=\"'data-qa' in $attrs ? $attrs['data-qa'] : 'd-recipe-leftbar-row-link'\"\n :aria-label=\"getAriaLabel\"\n :title=\"description\"\n :href=\"'href' in $attrs ? $attrs.href : 'javascript:void(0)'\"\n v-bind=\"removeClassStyleAttrs($attrs)\"\n v-on=\"generalRowListeners\"\n >\n <div\n class=\"d-recipe-leftbar-row__alpha\"\n >\n <div\n v-if=\"isTyping\"\n v-dt-tooltip=\"typingTooltip\"\n class=\"d-recipe-leftbar-row__is-typing\"\n >\n <span /><span /><span />\n </div>\n <slot\n v-else\n name=\"left\"\n >\n <dt-recipe-leftbar-general-row-icon\n :type=\"getIcon\"\n :color=\"color\"\n :icon-size=\"iconSize\"\n data-qa=\"dt-recipe-leftbar-row-icon\"\n />\n </slot>\n </div>\n <div\n class=\"d-recipe-leftbar-row__label\"\n :style=\"`flex-basis: ${labelWidth}`\"\n >\n <slot name=\"label\">\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 </slot>\n </div>\n </a>\n <div\n v-if=\"hasActions\"\n class=\"d-recipe-leftbar-row__omega\"\n >\n <dt-tooltip\n v-if=\"dndText\"\n placement=\"top\"\n :message=\"dndTextTooltip\"\n >\n <template #anchor>\n <div\n ref=\"d-recipe-leftbar-row-dnd\"\n class=\"d-recipe-leftbar-row__dnd\"\n data-qa=\"dt-recipe-leftbar-row-dnd\"\n >\n {{ dndText }}\n </div>\n </template>\n </dt-tooltip>\n <div\n v-if=\"activeVoiceChat\"\n v-dt-tooltip=\"activeVoiceChatTooltip\"\n class=\"d-recipe-leftbar-row__active-voice\"\n >\n <dt-icon-waveform\n size=\"300\"\n />\n </div>\n <dt-tooltip\n v-else-if=\"showUnreadCount || showUnreadMentionCount\"\n :message=\"unreadCountTooltip\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-badge\n v-if=\"showUnreadCount\"\n kind=\"count\"\n type=\"bulletin\"\n data-qa=\"dt-recipe-leftbar-row-unread-badge\"\n :class=\"['d-recipe-leftbar-row__unread-badge', {\n 'd-recipe-leftbar-row__unread-count-badge':\n shouldApplyCustomStyleForCountBadge,\n }]\"\n >\n {{ unreadCount }}\n </dt-badge>\n <dt-badge\n v-if=\"showUnreadMentionCount\"\n kind=\"count\"\n type=\"bulletin\"\n data-qa=\"dt-recipe-leftbar-row-unread-mention-badge\"\n :class=\"['d-recipe-leftbar-row__unread-badge',\n { 'd-recipe-leftbar-row__unread-mention-count-badge': shouldApplyCustomStyleForCountBadge },\n { 'd-recipe-leftbar-row__unread-mention-only-count-badge': shouldApplyCustomStyleForMentionOnly },\n ]\"\n >\n {{ unreadMentionCount }}\n </dt-badge>\n </template>\n </dt-tooltip>\n <div\n v-if=\"hasCallButton\"\n class=\"d-recipe-leftbar-row__action\"\n data-qa=\"dt-recipe-leftbar-row-action\"\n >\n <dt-tooltip\n :message=\"callButtonTooltip\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n class=\"d-recipe-leftbar-row__action-button\"\n data-qa=\"dt-recipe-leftbar-row-action-call-button\"\n circle\n size=\"xs\"\n kind=\"inverted\"\n :aria-label=\"callButtonTooltip\"\n @focus=\"actionFocused = true\"\n @blur=\"actionFocused = false\"\n @click.stop=\"$emit('call', $event)\"\n >\n <template #icon>\n <dt-icon-phone\n size=\"200\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n LEFTBAR_GENERAL_ROW_TYPES,\n LEFTBAR_GENERAL_ROW_CONTACT_CENTER_COLORS,\n LEFTBAR_GENERAL_ROW_CONTACT_CENTER_VALIDATION_ERROR,\n LEFTBAR_GENERAL_ROW_ICON_SIZES,\n} from './general_row_constants';\nimport { DtBadge } from '@/components/badge';\nimport { DtIconPhone, DtIconWaveform } from '@dialpad/dialtone-icons/vue3';\nimport { DtButton } from '@/components/button';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtEmojiTextWrapper } from '@/components/emoji_text_wrapper';\nimport DtRecipeLeftbarGeneralRowIcon from './leftbar_general_row_icon.vue';\nimport { extractVueListeners, safeConcatStrings, removeClassStyleAttrs, returnFirstEl, addClassStyleAttrs } from '@/common/utils';\nimport { DialtoneLocalization } from '@/localization';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeGeneralRow',\n\n components: {\n DtEmojiTextWrapper,\n DtBadge,\n DtButton,\n DtTooltip,\n DtIconPhone,\n DtIconWaveform,\n DtRecipeLeftbarGeneralRowIcon,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Determines the icon to show.\n * If type is contact center, the color prop must be provided and will determine the color of the icon\n */\n type: {\n type: String,\n default: 'inbox',\n validator: (type) => {\n return Object.values(LEFTBAR_GENERAL_ROW_TYPES).includes(type);\n },\n },\n\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. Even if you are overriding this field using the label slot\n * you still must input this as it will be displayed as the \"title\" attribute for the row.\n */\n description: {\n type: String,\n required: true,\n },\n\n /**\n * Determines the color of the contact center icon\n */\n color: {\n type: String,\n default: null,\n validator: (color) => {\n return Object.keys(LEFTBAR_GENERAL_ROW_CONTACT_CENTER_COLORS).includes(color);\n },\n },\n\n /**\n * The channel setting, either 'mention' or 'always'.\n * @values 'mention', 'always', null.\n */\n channelSetting: {\n type: String,\n default: null,\n },\n\n /**\n * Styles the row with an increased font weight to convey it has unreads. This must be true to see\n * the unread count badge.\n */\n hasUnreads: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Number of unread messages\n */\n unreadCount: {\n type: String,\n default: null,\n },\n\n /**\n * Number of unread mention messages\n */\n unreadMentionCount: {\n type: String,\n default: null,\n },\n\n /**\n * Determines if the row is selected\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Gives a faded style to be used when muted\n */\n muted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Shows styling to represent an active voice chat. This will display over unreadCount.\n */\n activeVoiceChat: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Acronym used to represent \"Do not Disturb\" state. If entered will display the entered text alongside\n * unreadCount.\n */\n dndText: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the row should have a call button. Usually only applicable to individual contact rows.\n */\n hasCallButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Shows an \"is typing\" animation over the avatar when true.\n */\n isTyping: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the size of the icon.\n */\n iconSize: {\n type: String,\n default: '300',\n validator: (size) => {\n return LEFTBAR_GENERAL_ROW_ICON_SIZES.includes(size);\n },\n },\n },\n\n emits: [\n /**\n * Call button clicked\n *\n * @event call\n * @type {PointerEvent | KeyboardEvent}\n */\n 'call',\n ],\n\n data () {\n return {\n actionFocused: false,\n labelWidth: '100%',\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n leftbarGeneralRowClasses () {\n return [\n 'd-recipe-leftbar-row',\n {\n 'd-recipe-leftbar-row--no-action': !this.hasCallButton,\n 'd-recipe-leftbar-row--has-unread': this.hasUnreads,\n 'd-recipe-leftbar-row__unread-count': this.showUnreadCount || this.showUnreadMentionCount,\n 'd-recipe-leftbar-row--selected': this.selected,\n 'd-recipe-leftbar-row--muted': this.muted,\n 'd-recipe-leftbar-row--action-focused': this.actionFocused,\n },\n ];\n },\n\n getIcon () {\n switch (this.type) {\n case LEFTBAR_GENERAL_ROW_TYPES.CHANNELS:\n if (this.hasUnreads) return 'channel unread';\n break;\n case LEFTBAR_GENERAL_ROW_TYPES.LOCKED_CHANNEL:\n if (this.hasUnreads) return 'locked channel unread';\n break;\n }\n return this.type;\n },\n\n generalRowListeners () {\n return extractVueListeners(this.$attrs);\n },\n\n getAriaLabel () {\n if (this.ariaLabel) return this.ariaLabel;\n\n return safeConcatStrings([\n this.typingTooltip,\n this.description,\n this.unreadCountTooltip,\n this.dndTextTooltip,\n this.activeVoiceChatTooltip,\n ]);\n },\n\n hasActions () {\n return this.dndText || this.activeVoiceChat || this.showUnreadCount || this.hasCallButton ||\n this.showUnreadMentionCount;\n },\n\n showUnreadCount () {\n return !!this.unreadCount && this.hasUnreads;\n },\n\n showUnreadMentionCount () {\n return !!this.unreadMentionCount && this.hasUnreads;\n },\n\n hasUnreadCount () {\n return this.unreadCount !== null;\n },\n\n hasUnreadMentionCount () {\n return this.unreadMentionCount !== null;\n },\n\n shouldApplyCustomStyleForCountBadge () {\n return this.hasUnreadCount && this.hasUnreadMentionCount;\n },\n\n /**\n * When a channel in 'always' setting, meaning the user should see both unread count and unread mention count,\n * if there are only mention messages, we should apply the theme design tokens var(--dt-theme-mention-color-[background||foreground]-strong).\n * @returns {boolean}\n */\n shouldApplyCustomStyleForMentionOnly () {\n return this.channelSetting === 'always' && !this.hasUnreadCount && this.hasUnreadMentionCount;\n },\n\n messageCount () {\n return isNaN(this.unreadCount)\n ? this.unreadCount\n : Number(this.unreadCount);\n },\n\n mentionCount () {\n return isNaN(this.unreadMentionCount)\n ? this.unreadMentionCount\n : Number(this.unreadMentionCount);\n },\n\n unreadCountTooltip () {\n return safeConcatStrings([\n this.unreadCount && this.i18n.$t('DIALTONE_UNREAD_MESSAGE_COUNT_TEXT', { unreadCount: this.messageCount }),\n this.unreadMentionCount && this.i18n.$t('DIALTONE_UNREAD_MENTION_COUNT_TEXT', { unreadCount: this.mentionCount }),\n ]);\n },\n\n dndTextTooltip () {\n return this.dndText && this.i18n.$t('DIALTONE_GENERAL_ROW_DND_TEXT_TOOLTIP');\n },\n\n activeVoiceChatTooltip () {\n return this.activeVoiceChat && this.i18n.$t('DIALTONE_GENERAL_ROW_ACTIVE_VOICE_CHAT_TEXT');\n },\n\n callButtonTooltip () {\n return this.i18n.$t('DIALTONE_GENERAL_ROW_CALL_BUTTON_TOOLTIP');\n },\n\n typingTooltip () {\n return this.isTyping && this.i18n.$t('DIALTONE_TYPING_TEXT');\n },\n },\n\n watch: {\n $props: {\n immediate: true,\n deep: true,\n async handler () {\n this.validateProps();\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 validateProps () {\n if (this.type === LEFTBAR_GENERAL_ROW_TYPES.CONTACT_CENTER &&\n !Object.keys(LEFTBAR_GENERAL_ROW_CONTACT_CENTER_COLORS).includes(this.color)) {\n console.error(LEFTBAR_GENERAL_ROW_CONTACT_CENTER_VALIDATION_ERROR);\n }\n },\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 = 16;\n this.labelWidth = labelWidth - (omegaWidth + alphaWidth + paddings) + 'px';\n },\n },\n};\n</script>\n"],"mappings":"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"}