UNPKG

@dialpad/dialtone

Version:

Dialpad's Dialtone design system monorepo

1 lines 12.1 kB
{"version":3,"file":"feed-item-row.cjs","sources":["../../../recipes/conversation_view/feed_item_row/feed_item_row.vue"],"sourcesContent":["<template>\n <dt-list-item\n ref=\"FeedItemRef\"\n navigation-type=\"none\"\n v-bind=\"$attrs\"\n :class=\"listItemClasses\"\n data-qa=\"dt-recipe-feed-item-row\"\n v-on=\"feedListeners\"\n >\n <!-- Avatar or time -->\n <template #left>\n <div\n v-if=\"showHeader\"\n class=\"d-recipe-feed-item-row__avatar-container\"\n >\n <!-- @slot Slot to contain the avatar, overrides avatar props. -->\n <slot\n name=\"avatar\"\n >\n <dt-avatar\n :full-name=\"displayName\"\n :image-src=\"avatarImageUrl\"\n image-alt=\"\"\n :seed=\"avatarSeed\"\n >\n <template\n v-if=\"noInitials\"\n #icon=\"{ iconSize }\"\n >\n <dt-icon-user\n :size=\"iconSize\"\n />\n </template>\n </dt-avatar>\n </slot>\n </div>\n <!-- show time instead of avatar when headers not present -->\n <span\n v-if=\"!showHeader\"\n v-show=\"isActive\"\n class=\"d-recipe-feed-item-row__left-time\"\n data-qa=\"dt-recipe-feed-item-row--left-time\"\n >\n {{ shortTime }}\n </span>\n </template>\n\n <article class=\"d-recipe-feed-item-row__content\">\n <!-- Feed Item -->\n <div\n v-if=\"showHeader\"\n data-qa=\"dt-recipe-feed-item-row--header\"\n class=\"d-recipe-feed-item-row__header\"\n >\n <!-- @slot Slot for display name -->\n <slot name=\"displayName\">\n <p class=\"d-recipe-feed-item-row__header-name\">\n {{ displayName }}\n </p>\n </slot>\n <time\n class=\"d-recipe-feed-item-row__header-time\"\n >\n {{ time }}\n </time>\n <dt-badge\n v-if=\"labelText\"\n :text=\"labelText\"\n />\n </div>\n <!-- @slot Default content slot for feed item row -->\n <span\n data-qa=\"dt-recipe-feed-item-row--content\"\n >\n <slot />\n </span>\n <div\n v-if=\"$slots.attachment\"\n data-qa=\"dt-recipe-feed-item-row--attachment\"\n class=\"d-recipe-feed-item-row__attachment\"\n >\n <slot name=\"attachment\" />\n </div>\n </article>\n\n <template #bottom>\n <!-- Reactions -->\n <div\n v-if=\"$slots.reactions\"\n class=\"d-recipe-feed-item-row__reactions\"\n data-qa=\"dt-recipe-feed-item-row--reactions\"\n >\n <!-- @slot Slot for reactions row component -->\n <slot name=\"reactions\" />\n </div>\n\n <!-- Threading -->\n <div\n v-if=\"$slots.threading\"\n class=\"d-recipe-feed-item-row__threading\"\n >\n <!-- @slot Slot for threading row component -->\n <slot name=\"threading\" />\n </div>\n\n <!-- Action menu -->\n <div\n v-show=\"isActive\"\n data-qa=\"dt-recipe-feed-item-row--menu\"\n class=\"d-recipe-feed-item-row__menu\"\n >\n <dt-lazy-show\n :appear=\"true\"\n transition=\"fade\"\n :show=\"isActive\"\n >\n <!-- @slot Slot for actions hover menu component -->\n <slot name=\"menu\" />\n </dt-lazy-show>\n </div>\n </template>\n </dt-list-item>\n</template>\n\n<script>\nimport { DEFAULT_FEED_ROW_STATE, FEED_ROW_STATE_BACKGROUND_COLOR } from './feed_item_row_constants.js';\nimport { DtAvatar } from '@/components/avatar';\nimport { DtLazyShow } from '@/components/lazy_show';\nimport { DtListItem } from '@/components/list_item';\nimport { DtBadge } from '@/components/badge';\nimport Modal from '@/common/mixins/modal';\nimport { DtIconUser } from '@dialpad/dialtone-icons/vue3';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeFeedItemRow',\n\n components: {\n DtAvatar,\n DtLazyShow,\n DtListItem,\n DtBadge,\n DtIconUser,\n },\n\n mixins: [Modal],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: null,\n },\n\n /**\n * Show avatar, show header text or dont show left time and vice versa\n */\n showHeader: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Optional avatar image url.\n * If not provided it will use extracted initials from displayName.\n */\n avatarImageUrl: {\n type: String,\n default: '',\n },\n\n /**\n * The display name of the sender\n */\n displayName: {\n type: String,\n default: '',\n },\n\n /**\n * Initials will never be shown. Instead it will show a \"User\" icon.\n */\n noInitials: {\n type: Boolean,\n default: false,\n },\n\n /**\n * time string displayed as is.\n * Shown on the header when showHeader is true\n */\n time: {\n type: String,\n default: '',\n },\n\n /**\n * short time string without AM/PM displayed as is.\n * Shown on the left of feed item when showHeader is false and isActive is true\n */\n shortTime: {\n type: String,\n default: '',\n },\n\n /**\n * A label displayed next to the displayName. Will not show if empty.\n */\n labelText: {\n type: String,\n default: '',\n },\n\n /**\n * displays a darkened background on the row.\n */\n isActive: {\n type: Boolean,\n default: false,\n },\n\n /**\n * state for the feed item row. Can be normal, searched & error\n */\n state: {\n type: String,\n default: DEFAULT_FEED_ROW_STATE,\n validator: state => Object.keys(FEED_ROW_STATE_BACKGROUND_COLOR).includes(state),\n },\n },\n\n emits: [\n /**\n * Fires when hovered over feed row\n *\n * @event hover\n * @type {Boolean}\n */\n 'hover',\n\n /**\n * Fires when focused over feed row\n *\n * @event focus\n * @type {Boolean}\n */\n 'focus',\n\n /**\n * Key down event\n *\n * @event keydown\n * @type {KeyboardEvent}\n */\n 'keydown',\n ],\n\n data () {\n return {\n transitionActive: false,\n };\n },\n\n computed: {\n feedListeners () {\n return {\n mouseenter: () => this.setHover(true),\n mouseleave: () => this.setHover(false),\n focusin: () => this.setFocus(true),\n focusout: () => this.setFocus(false),\n transitionend: () => this.transitionComplete(),\n keydown: event => {\n switch (event.code) {\n case 'Tab':\n this.trapFocus(event);\n break;\n }\n this.$emit('keydown', event);\n },\n };\n },\n\n listItemClasses () {\n return [\n 'd-recipe-feed-item-row',\n { 'd-recipe-feed-item-row--active': this.isActive && this.state === DEFAULT_FEED_ROW_STATE },\n { 'd-recipe-feed-item-row__state-transition': this.transitionActive },\n FEED_ROW_STATE_BACKGROUND_COLOR[this.state],\n\n ];\n },\n },\n\n watch: {\n state: {\n immediate: true,\n handler: function (newState) {\n if (newState !== DEFAULT_FEED_ROW_STATE) {\n this.transitionActive = true;\n }\n },\n },\n },\n\n methods: {\n transitionComplete () {\n if (this.state === DEFAULT_FEED_ROW_STATE) {\n this.transitionActive = false;\n }\n },\n\n trapFocus (e) {\n this.focusTrappedTabPress(e);\n },\n\n setFocus (bool) {\n this.$emit('focus', bool);\n },\n\n setHover (bool) {\n this.$emit('hover', bool);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtAvatar","DtLazyShow","DtListItem","DtBadge","DtIconUser","Modal","DEFAULT_FEED_ROW_STATE","state","FEED_ROW_STATE_BACKGROUND_COLOR","event","newState","e","bool","_hoisted_2","_hoisted_4","_hoisted_5","_hoisted_6","_openBlock","_createBlock","_component_dt_list_item","_mergeProps","_ctx","$options","_toHandlers","$props","_createElementBlock","_hoisted_1","_renderSlot","_createVNode","_component_dt_avatar","_createSlots","_withCtx","iconSize","_component_dt_icon_user","_createCommentVNode","_hoisted_8","_hoisted_9","_withDirectives","_createElementVNode","_hoisted_10","_component_dt_lazy_show","_hoisted_3","_toDisplayString","_component_dt_badge","_hoisted_7"],"mappings":"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"}