{"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>\n/* eslint-disable max-lines */\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, oldState) {\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","oldState","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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"}