@dialpad/dialtone 9.36.1 → 9.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/dialtone.css +2 -2
- package/dist/tokens/css/variables-dark.css +1 -1
- package/dist/tokens/css/variables-expressive-dark.css +1 -1
- package/dist/tokens/css/variables-expressive-light.css +1 -1
- package/dist/tokens/css/variables-expressive-sm-dark.css +1 -1
- package/dist/tokens/css/variables-expressive-sm-light.css +1 -1
- package/dist/tokens/css/variables-light.css +1 -1
- package/dist/tokens/css/variables-tmo-dark.css +1 -1
- package/dist/tokens/css/variables-tmo-light.css +1 -1
- package/dist/tokens/less/variables-dark.less +1 -1
- package/dist/tokens/less/variables-expressive-dark.less +1 -1
- package/dist/tokens/less/variables-expressive-light.less +1 -1
- package/dist/tokens/less/variables-expressive-sm-dark.less +1 -1
- package/dist/tokens/less/variables-expressive-sm-light.less +1 -1
- package/dist/tokens/less/variables-light.less +1 -1
- package/dist/tokens/less/variables-tmo-dark.less +1 -1
- package/dist/tokens/less/variables-tmo-light.less +1 -1
- package/dist/vue2/lib/feed-item-row.cjs +12 -2
- package/dist/vue2/lib/feed-item-row.cjs.map +1 -1
- package/dist/vue2/lib/feed-item-row.js +12 -2
- package/dist/vue2/lib/feed-item-row.js.map +1 -1
- package/dist/vue2/style.css +22 -22
- package/dist/vue2/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +16 -0
- package/dist/vue2/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/leftbar/contact_row/contact_row.vue.d.ts +1 -1
- package/dist/vue3/lib/feed-item-row.cjs +13 -2
- package/dist/vue3/lib/feed-item-row.cjs.map +1 -1
- package/dist/vue3/lib/feed-item-row.js +13 -2
- package/dist/vue3/lib/feed-item-row.js.map +1 -1
- package/dist/vue3/style.css +22 -22
- package/dist/vue3/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +16 -0
- package/dist/vue3/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts.map +1 -1
- package/dist/vue3/types/recipes/leftbar/contact_row/contact_row.vue.d.ts +1 -1
- package/package.json +1 -1
package/dist/css/dialtone.css
CHANGED
|
@@ -7338,7 +7338,7 @@ body {
|
|
|
7338
7338
|
}
|
|
7339
7339
|
/**
|
|
7340
7340
|
* Do not edit directly
|
|
7341
|
-
* Generated on
|
|
7341
|
+
* Generated on Tue, 21 May 2024 10:08:16 GMT
|
|
7342
7342
|
*/
|
|
7343
7343
|
|
|
7344
7344
|
.dialtone-theme-light {
|
|
@@ -8155,7 +8155,7 @@ body {
|
|
|
8155
8155
|
|
|
8156
8156
|
/**
|
|
8157
8157
|
* Do not edit directly
|
|
8158
|
-
* Generated on
|
|
8158
|
+
* Generated on Tue, 21 May 2024 10:08:16 GMT
|
|
8159
8159
|
*/
|
|
8160
8160
|
|
|
8161
8161
|
.dialtone-theme-dark {
|
|
@@ -62,6 +62,13 @@ const _sfc_main = {
|
|
|
62
62
|
type: String,
|
|
63
63
|
default: ""
|
|
64
64
|
},
|
|
65
|
+
/**
|
|
66
|
+
* Initials will never be shown. Instead it will show a "User" icon.
|
|
67
|
+
*/
|
|
68
|
+
noInitials: {
|
|
69
|
+
type: Boolean,
|
|
70
|
+
default: false
|
|
71
|
+
},
|
|
65
72
|
/**
|
|
66
73
|
* time string displayed as is.
|
|
67
74
|
* Shown on the header when showHeader is true
|
|
@@ -148,6 +155,9 @@ const _sfc_main = {
|
|
|
148
155
|
}
|
|
149
156
|
};
|
|
150
157
|
},
|
|
158
|
+
iconName() {
|
|
159
|
+
return this.noInitials ? "user" : null;
|
|
160
|
+
},
|
|
151
161
|
listItemClasses() {
|
|
152
162
|
return [
|
|
153
163
|
"dt-feed-item-row",
|
|
@@ -188,7 +198,7 @@ var _sfc_render = function render() {
|
|
|
188
198
|
var _vm = this, _c = _vm._self._c;
|
|
189
199
|
return _c("dt-list-item", _vm._g(_vm._b({ ref: "FeedItemRef", class: ["dt-feed-item-row", _vm.listItemClasses], attrs: { "navigation-type": "none", "data-qa": "dt-feed-item-row" }, scopedSlots: _vm._u([{ key: "left", fn: function() {
|
|
190
200
|
return [_vm.showHeader ? _c("div", { staticClass: "dt-feed-item-row__avatar-container" }, [_vm._t("avatar", function() {
|
|
191
|
-
return [_c("dt-avatar", { attrs: { "full-name": _vm.displayName, "image-src": _vm.avatarImageUrl, "image-alt": "", "seed": _vm.avatarSeed } })];
|
|
201
|
+
return [_c("dt-avatar", { attrs: { "full-name": _vm.displayName, "image-src": _vm.avatarImageUrl, "image-alt": "", "icon-name": _vm.iconName, "seed": _vm.avatarSeed } })];
|
|
192
202
|
})], 2) : _vm._e(), !_vm.showHeader ? _c("span", { directives: [{ name: "show", rawName: "v-show", value: _vm.isActive, expression: "isActive" }], staticClass: "dt-feed-item-row__left-time", attrs: { "data-qa": "dt-feed-item-row--left-time" } }, [_vm._v(" " + _vm._s(_vm.shortTime) + " ")]) : _vm._e()];
|
|
193
203
|
}, proxy: true }, { key: "bottom", fn: function() {
|
|
194
204
|
return [_vm.$slots.reactions ? _c("div", { staticClass: "dt-feed-item-row__reactions", attrs: { "data-qa": "dt-feed-item-row--reactions" } }, [_vm._t("reactions")], 2) : _vm._e(), _vm.$slots.threading ? _c("div", { staticClass: "dt-feed-item-row__threading" }, [_vm._t("threading")], 2) : _vm._e()];
|
|
@@ -203,7 +213,7 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
|
203
213
|
_sfc_staticRenderFns,
|
|
204
214
|
false,
|
|
205
215
|
null,
|
|
206
|
-
"
|
|
216
|
+
"047dcbe5",
|
|
207
217
|
null,
|
|
208
218
|
null
|
|
209
219
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-item-row.cjs","sources":["../../recipes/conversation_view/feed_item_row/feed_item_row_constants.js","../../recipes/conversation_view/feed_item_row/feed_item_row.vue"],"sourcesContent":["export const FEED_ROW_STATE_BACKGROUND_COLOR = {\n NORMAL: '',\n SEARCHED: 'dt-feed-item-row--state-searched',\n ERROR: 'dt-feed-item-row--state-error',\n};\n\nexport const DEFAULT_FEED_ROW_STATE = 'NORMAL';\n\nexport default {\n FEED_ROW_STATE_BACKGROUND_COLOR,\n DEFAULT_FEED_ROW_STATE,\n};\n","<template>\n <dt-list-item\n ref=\"FeedItemRef\"\n navigation-type=\"none\"\n v-bind=\"$attrs\"\n :class=\"['dt-feed-item-row', listItemClasses]\"\n data-qa=\"dt-feed-item-row\"\n v-on=\"feedListeners\"\n >\n <!-- Avatar or time -->\n <template #left>\n <div\n v-if=\"showHeader\"\n class=\"dt-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 </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=\"dt-feed-item-row__left-time\"\n data-qa=\"dt-feed-item-row--left-time\"\n >\n {{ shortTime }}\n </span>\n </template>\n\n <article class=\"dt-feed-item-row__content\">\n <!-- Feed Item -->\n <div\n v-if=\"showHeader\"\n data-qa=\"dt-feed-item-row--header\"\n class=\"dt-feed-item-row__header\"\n >\n <p class=\"dt-feed-item-row__header__name\">\n {{ displayName }}\n </p>\n <time\n class=\"dt-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-feed-item-row--content\"\n >\n <slot />\n </span>\n <div\n v-if=\"$slots.attachment\"\n data-qa=\"dt-feed-item-row--attachment\"\n class=\"dt-feed-item-row__attachment\"\n >\n <slot name=\"attachment\" />\n </div>\n </article>\n\n <template #bottom>\n <div\n v-if=\"$slots.reactions\"\n class=\"dt-feed-item-row__reactions\"\n data-qa=\"dt-feed-item-row--reactions\"\n >\n <!-- @slot Slot for reactions row component -->\n <slot name=\"reactions\" />\n </div>\n <div\n v-if=\"$slots.threading\"\n class=\"dt-feed-item-row__threading\"\n >\n <!-- @slot Slot for threading row component -->\n <slot name=\"threading\" />\n </div>\n </template>\n\n <!-- Action menu -->\n <template #right>\n <div\n v-show=\"isActive\"\n data-qa=\"dt-feed-item-row--menu\"\n class=\"dt-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';\n\nexport default {\n name: 'DtRecipeFeedItemRow',\n\n components: {\n DtAvatar,\n DtLazyShow,\n DtListItem,\n DtBadge,\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 * 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 ...this.$listeners,\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 'dt-feed-item-row',\n { 'dt-feed-item-row--active': this.isActive && this.state === DEFAULT_FEED_ROW_STATE },\n { 'dt-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\n<style lang=\"less\" scoped>\n.dt-feed-item-row {\n\n width: var(--dt-size-100-percent);\n box-sizing: border-box;\n position: relative;\n padding: var(--dt-space-300) var(--dt-space-500);\n\n &:focus-visible {\n box-shadow: var(--dt-shadow-focus-inset);\n }\n\n &--state-searched {\n background-color: var(--dt-color-surface-warning-subtle);\n }\n\n &--state-error {\n background-color: var(--dt-color-surface-critical-subtle);\n }\n\n &--active {\n background-color: var(--dt-color-surface-secondary-opaque);\n }\n\n &--state-transition {\n transition-duration: 2s;\n transition-delay: 0s;\n transition-timing-function: var(--ttf-in-out);\n transition-property: background-color;\n }\n\n &__avatar-container {\n padding-top: var(--dt-space-300);\n padding-bottom: var(--dt-space-300);\n }\n\n &__content {\n padding-left: var(--dt-space-300);\n }\n\n &__attachment {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-300);\n\n &:deep(.dt-feed-item-row__image) {\n border: var(--dt-color-border-subtle) solid var(--dt-size-border-100);\n border-radius: var(--dt-size-radius-400);\n display: block;\n max-width: 30rem;\n max-height: 30rem;\n min-width: 5.6rem;\n min-height: 5.6rem;\n }\n\n &:deep(.dt-feed-item-row__video) {\n display: block;\n height: 25.0rem;\n }\n }\n\n &__header {\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: var(--dt-space-300);\n font-size: var(--dt-font-size-200);\n line-height: var(--dt-font-line-height-300);\n\n &__name {\n font-weight: var(--dt-font-weight-bold);\n }\n\n &__time {\n font-size: var(--dt-font-size-100);\n color: var(--dt-color-foreground-tertiary);\n flex-shrink: 0;\n }\n }\n\n &__reactions {\n display: flex;\n flex-wrap: wrap;\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n padding-left: var(--dt-space-300);\n }\n\n &__threading {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n }\n\n &__left-time {\n color: var(--dt-color-foreground-tertiary);\n font-size: var(--dt-font-size-100);\n font-weight: var(--dt-font-weight-normal);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n &__menu {\n position: absolute;\n top: var(--dt-space-550-negative);\n right: var(--dt-space-450);\n }\n\n &:deep(> .dt-item-layout) {\n font: var(--dt-typography-body-md-compact);\n min-height: initial;\n padding: 0px;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--left) {\n align-self: flex-start;\n text-align: end;\n display: block;\n padding-right: var(--dt-space-300);\n padding-left: var(--dt-space-0);\n // min-width = avatar width + padding\n min-width: calc(var(--dt-space-600) + var(--dt-space-300));\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--right) {\n padding: 0;\n min-width: initial;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--content > .dt-item-layout--bottom) {\n display: flex;\n flex-direction: column;\n margin-top: 0;\n }\n}\n</style>\n"],"names":["DtAvatar","DtLazyShow","DtListItem","DtBadge","Modal"],"mappings":";;;;;;;;;;;;;;;;;;AAAY,MAAC,kCAAkC;AAAA,EAC7C,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AACT;AAEY,MAAC,yBAAyB;ACkHtC,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,UAAAA,WAAA;AAAA,IACA,YAAAC,aAAA;AAAA,IACA,YAAAC,aAAA;AAAA,IACA,SAAAC,UAAA;AAAA,EACA;AAAA,EAEA,QAAA,CAAAC,MAAAA,KAAA;AAAA,EAEA,cAAA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA,WAAA,OAAA,KAAA,+BAAA,EAAA,SAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,kBAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,gBAAA;AACA,aAAA;AAAA,QACA,GAAA,KAAA;AAAA,QACA,YAAA,MAAA,KAAA,SAAA,IAAA;AAAA,QACA,YAAA,MAAA,KAAA,SAAA,KAAA;AAAA,QACA,SAAA,MAAA,KAAA,SAAA,IAAA;AAAA,QACA,UAAA,MAAA,KAAA,SAAA,KAAA;AAAA,QACA,eAAA,MAAA,KAAA,mBAAA;AAAA,QACA,SAAA,WAAA;AACA,kBAAA,MAAA,MAAA;AAAA,YACA,KAAA;AACA,mBAAA,UAAA,KAAA;AACA;AAAA,UACA;AACA,eAAA,MAAA,WAAA,KAAA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,kBAAA;AACA,aAAA;AAAA,QACA;AAAA,QACA,EAAA,4BAAA,KAAA,YAAA,KAAA,UAAA,uBAAA;AAAA,QACA,EAAA,sCAAA,KAAA,iBAAA;AAAA,QACA,gCAAA,KAAA,KAAA;AAAA,MAEA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA,SAAA,UAAA,UAAA;AACA,YAAA,aAAA,wBAAA;AACA,eAAA,mBAAA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,qBAAA;AACA,UAAA,KAAA,UAAA,wBAAA;AACA,aAAA,mBAAA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,UAAA,GAAA;AACA,WAAA,qBAAA,CAAA;AAAA,IACA;AAAA,IAEA,SAAA,MAAA;AACA,WAAA,MAAA,SAAA,IAAA;AAAA,IACA;AAAA,IAEA,SAAA,MAAA;AACA,WAAA,MAAA,SAAA,IAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"feed-item-row.cjs","sources":["../../recipes/conversation_view/feed_item_row/feed_item_row_constants.js","../../recipes/conversation_view/feed_item_row/feed_item_row.vue"],"sourcesContent":["export const FEED_ROW_STATE_BACKGROUND_COLOR = {\n NORMAL: '',\n SEARCHED: 'dt-feed-item-row--state-searched',\n ERROR: 'dt-feed-item-row--state-error',\n};\n\nexport const DEFAULT_FEED_ROW_STATE = 'NORMAL';\n\nexport default {\n FEED_ROW_STATE_BACKGROUND_COLOR,\n DEFAULT_FEED_ROW_STATE,\n};\n","<template>\n <dt-list-item\n ref=\"FeedItemRef\"\n navigation-type=\"none\"\n v-bind=\"$attrs\"\n :class=\"['dt-feed-item-row', listItemClasses]\"\n data-qa=\"dt-feed-item-row\"\n v-on=\"feedListeners\"\n >\n <!-- Avatar or time -->\n <template #left>\n <div\n v-if=\"showHeader\"\n class=\"dt-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 :icon-name=\"iconName\"\n :seed=\"avatarSeed\"\n />\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=\"dt-feed-item-row__left-time\"\n data-qa=\"dt-feed-item-row--left-time\"\n >\n {{ shortTime }}\n </span>\n </template>\n\n <article class=\"dt-feed-item-row__content\">\n <!-- Feed Item -->\n <div\n v-if=\"showHeader\"\n data-qa=\"dt-feed-item-row--header\"\n class=\"dt-feed-item-row__header\"\n >\n <p class=\"dt-feed-item-row__header__name\">\n {{ displayName }}\n </p>\n <time\n class=\"dt-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-feed-item-row--content\"\n >\n <slot />\n </span>\n <div\n v-if=\"$slots.attachment\"\n data-qa=\"dt-feed-item-row--attachment\"\n class=\"dt-feed-item-row__attachment\"\n >\n <slot name=\"attachment\" />\n </div>\n </article>\n\n <template #bottom>\n <div\n v-if=\"$slots.reactions\"\n class=\"dt-feed-item-row__reactions\"\n data-qa=\"dt-feed-item-row--reactions\"\n >\n <!-- @slot Slot for reactions row component -->\n <slot name=\"reactions\" />\n </div>\n <div\n v-if=\"$slots.threading\"\n class=\"dt-feed-item-row__threading\"\n >\n <!-- @slot Slot for threading row component -->\n <slot name=\"threading\" />\n </div>\n </template>\n\n <!-- Action menu -->\n <template #right>\n <div\n v-show=\"isActive\"\n data-qa=\"dt-feed-item-row--menu\"\n class=\"dt-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';\n\nexport default {\n name: 'DtRecipeFeedItemRow',\n\n components: {\n DtAvatar,\n DtLazyShow,\n DtListItem,\n DtBadge,\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 ...this.$listeners,\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 iconName () {\n return this.noInitials ? 'user' : null;\n },\n\n listItemClasses () {\n return [\n 'dt-feed-item-row',\n { 'dt-feed-item-row--active': this.isActive && this.state === DEFAULT_FEED_ROW_STATE },\n { 'dt-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\n<style lang=\"less\" scoped>\n.dt-feed-item-row {\n\n width: var(--dt-size-100-percent);\n box-sizing: border-box;\n position: relative;\n padding: var(--dt-space-300) var(--dt-space-500);\n\n &:focus-visible {\n box-shadow: var(--dt-shadow-focus-inset);\n }\n\n &--state-searched {\n background-color: var(--dt-color-surface-warning-subtle);\n }\n\n &--state-error {\n background-color: var(--dt-color-surface-critical-subtle);\n }\n\n &--active {\n background-color: var(--dt-color-surface-secondary-opaque);\n }\n\n &--state-transition {\n transition-duration: 2s;\n transition-delay: 0s;\n transition-timing-function: var(--ttf-in-out);\n transition-property: background-color;\n }\n\n &__avatar-container {\n padding-top: var(--dt-space-300);\n padding-bottom: var(--dt-space-300);\n }\n\n &__content {\n padding-left: var(--dt-space-300);\n }\n\n &__attachment {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-300);\n\n &:deep(.dt-feed-item-row__image) {\n border: var(--dt-color-border-subtle) solid var(--dt-size-border-100);\n border-radius: var(--dt-size-radius-400);\n display: block;\n max-width: 30rem;\n max-height: 30rem;\n min-width: 5.6rem;\n min-height: 5.6rem;\n }\n\n &:deep(.dt-feed-item-row__video) {\n display: block;\n height: 25.0rem;\n }\n }\n\n &__header {\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: var(--dt-space-300);\n font-size: var(--dt-font-size-200);\n line-height: var(--dt-font-line-height-300);\n\n &__name {\n font-weight: var(--dt-font-weight-bold);\n }\n\n &__time {\n font-size: var(--dt-font-size-100);\n color: var(--dt-color-foreground-tertiary);\n flex-shrink: 0;\n }\n }\n\n &__reactions {\n display: flex;\n flex-wrap: wrap;\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n padding-left: var(--dt-space-300);\n }\n\n &__threading {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n }\n\n &__left-time {\n color: var(--dt-color-foreground-tertiary);\n font-size: var(--dt-font-size-100);\n font-weight: var(--dt-font-weight-normal);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n &__menu {\n position: absolute;\n top: var(--dt-space-550-negative);\n right: var(--dt-space-450);\n }\n\n &:deep(> .dt-item-layout) {\n font: var(--dt-typography-body-md-compact);\n min-height: initial;\n padding: 0px;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--left) {\n align-self: flex-start;\n text-align: end;\n display: block;\n padding-right: var(--dt-space-300);\n padding-left: var(--dt-space-0);\n // min-width = avatar width + padding\n min-width: calc(var(--dt-space-600) + var(--dt-space-300));\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--right) {\n padding: 0;\n min-width: initial;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--content > .dt-item-layout--bottom) {\n display: flex;\n flex-direction: column;\n margin-top: 0;\n }\n}\n</style>\n"],"names":["DtAvatar","DtLazyShow","DtListItem","DtBadge","Modal"],"mappings":"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"}
|
|
@@ -60,6 +60,13 @@ const _sfc_main = {
|
|
|
60
60
|
type: String,
|
|
61
61
|
default: ""
|
|
62
62
|
},
|
|
63
|
+
/**
|
|
64
|
+
* Initials will never be shown. Instead it will show a "User" icon.
|
|
65
|
+
*/
|
|
66
|
+
noInitials: {
|
|
67
|
+
type: Boolean,
|
|
68
|
+
default: false
|
|
69
|
+
},
|
|
63
70
|
/**
|
|
64
71
|
* time string displayed as is.
|
|
65
72
|
* Shown on the header when showHeader is true
|
|
@@ -146,6 +153,9 @@ const _sfc_main = {
|
|
|
146
153
|
}
|
|
147
154
|
};
|
|
148
155
|
},
|
|
156
|
+
iconName() {
|
|
157
|
+
return this.noInitials ? "user" : null;
|
|
158
|
+
},
|
|
149
159
|
listItemClasses() {
|
|
150
160
|
return [
|
|
151
161
|
"dt-feed-item-row",
|
|
@@ -186,7 +196,7 @@ var _sfc_render = function render() {
|
|
|
186
196
|
var _vm = this, _c = _vm._self._c;
|
|
187
197
|
return _c("dt-list-item", _vm._g(_vm._b({ ref: "FeedItemRef", class: ["dt-feed-item-row", _vm.listItemClasses], attrs: { "navigation-type": "none", "data-qa": "dt-feed-item-row" }, scopedSlots: _vm._u([{ key: "left", fn: function() {
|
|
188
198
|
return [_vm.showHeader ? _c("div", { staticClass: "dt-feed-item-row__avatar-container" }, [_vm._t("avatar", function() {
|
|
189
|
-
return [_c("dt-avatar", { attrs: { "full-name": _vm.displayName, "image-src": _vm.avatarImageUrl, "image-alt": "", "seed": _vm.avatarSeed } })];
|
|
199
|
+
return [_c("dt-avatar", { attrs: { "full-name": _vm.displayName, "image-src": _vm.avatarImageUrl, "image-alt": "", "icon-name": _vm.iconName, "seed": _vm.avatarSeed } })];
|
|
190
200
|
})], 2) : _vm._e(), !_vm.showHeader ? _c("span", { directives: [{ name: "show", rawName: "v-show", value: _vm.isActive, expression: "isActive" }], staticClass: "dt-feed-item-row__left-time", attrs: { "data-qa": "dt-feed-item-row--left-time" } }, [_vm._v(" " + _vm._s(_vm.shortTime) + " ")]) : _vm._e()];
|
|
191
201
|
}, proxy: true }, { key: "bottom", fn: function() {
|
|
192
202
|
return [_vm.$slots.reactions ? _c("div", { staticClass: "dt-feed-item-row__reactions", attrs: { "data-qa": "dt-feed-item-row--reactions" } }, [_vm._t("reactions")], 2) : _vm._e(), _vm.$slots.threading ? _c("div", { staticClass: "dt-feed-item-row__threading" }, [_vm._t("threading")], 2) : _vm._e()];
|
|
@@ -201,7 +211,7 @@ var __component__ = /* @__PURE__ */ normalizeComponent(
|
|
|
201
211
|
_sfc_staticRenderFns,
|
|
202
212
|
false,
|
|
203
213
|
null,
|
|
204
|
-
"
|
|
214
|
+
"047dcbe5",
|
|
205
215
|
null,
|
|
206
216
|
null
|
|
207
217
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-item-row.js","sources":["../../recipes/conversation_view/feed_item_row/feed_item_row_constants.js","../../recipes/conversation_view/feed_item_row/feed_item_row.vue"],"sourcesContent":["export const FEED_ROW_STATE_BACKGROUND_COLOR = {\n NORMAL: '',\n SEARCHED: 'dt-feed-item-row--state-searched',\n ERROR: 'dt-feed-item-row--state-error',\n};\n\nexport const DEFAULT_FEED_ROW_STATE = 'NORMAL';\n\nexport default {\n FEED_ROW_STATE_BACKGROUND_COLOR,\n DEFAULT_FEED_ROW_STATE,\n};\n","<template>\n <dt-list-item\n ref=\"FeedItemRef\"\n navigation-type=\"none\"\n v-bind=\"$attrs\"\n :class=\"['dt-feed-item-row', listItemClasses]\"\n data-qa=\"dt-feed-item-row\"\n v-on=\"feedListeners\"\n >\n <!-- Avatar or time -->\n <template #left>\n <div\n v-if=\"showHeader\"\n class=\"dt-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 </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=\"dt-feed-item-row__left-time\"\n data-qa=\"dt-feed-item-row--left-time\"\n >\n {{ shortTime }}\n </span>\n </template>\n\n <article class=\"dt-feed-item-row__content\">\n <!-- Feed Item -->\n <div\n v-if=\"showHeader\"\n data-qa=\"dt-feed-item-row--header\"\n class=\"dt-feed-item-row__header\"\n >\n <p class=\"dt-feed-item-row__header__name\">\n {{ displayName }}\n </p>\n <time\n class=\"dt-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-feed-item-row--content\"\n >\n <slot />\n </span>\n <div\n v-if=\"$slots.attachment\"\n data-qa=\"dt-feed-item-row--attachment\"\n class=\"dt-feed-item-row__attachment\"\n >\n <slot name=\"attachment\" />\n </div>\n </article>\n\n <template #bottom>\n <div\n v-if=\"$slots.reactions\"\n class=\"dt-feed-item-row__reactions\"\n data-qa=\"dt-feed-item-row--reactions\"\n >\n <!-- @slot Slot for reactions row component -->\n <slot name=\"reactions\" />\n </div>\n <div\n v-if=\"$slots.threading\"\n class=\"dt-feed-item-row__threading\"\n >\n <!-- @slot Slot for threading row component -->\n <slot name=\"threading\" />\n </div>\n </template>\n\n <!-- Action menu -->\n <template #right>\n <div\n v-show=\"isActive\"\n data-qa=\"dt-feed-item-row--menu\"\n class=\"dt-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';\n\nexport default {\n name: 'DtRecipeFeedItemRow',\n\n components: {\n DtAvatar,\n DtLazyShow,\n DtListItem,\n DtBadge,\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 * 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 ...this.$listeners,\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 'dt-feed-item-row',\n { 'dt-feed-item-row--active': this.isActive && this.state === DEFAULT_FEED_ROW_STATE },\n { 'dt-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\n<style lang=\"less\" scoped>\n.dt-feed-item-row {\n\n width: var(--dt-size-100-percent);\n box-sizing: border-box;\n position: relative;\n padding: var(--dt-space-300) var(--dt-space-500);\n\n &:focus-visible {\n box-shadow: var(--dt-shadow-focus-inset);\n }\n\n &--state-searched {\n background-color: var(--dt-color-surface-warning-subtle);\n }\n\n &--state-error {\n background-color: var(--dt-color-surface-critical-subtle);\n }\n\n &--active {\n background-color: var(--dt-color-surface-secondary-opaque);\n }\n\n &--state-transition {\n transition-duration: 2s;\n transition-delay: 0s;\n transition-timing-function: var(--ttf-in-out);\n transition-property: background-color;\n }\n\n &__avatar-container {\n padding-top: var(--dt-space-300);\n padding-bottom: var(--dt-space-300);\n }\n\n &__content {\n padding-left: var(--dt-space-300);\n }\n\n &__attachment {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-300);\n\n &:deep(.dt-feed-item-row__image) {\n border: var(--dt-color-border-subtle) solid var(--dt-size-border-100);\n border-radius: var(--dt-size-radius-400);\n display: block;\n max-width: 30rem;\n max-height: 30rem;\n min-width: 5.6rem;\n min-height: 5.6rem;\n }\n\n &:deep(.dt-feed-item-row__video) {\n display: block;\n height: 25.0rem;\n }\n }\n\n &__header {\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: var(--dt-space-300);\n font-size: var(--dt-font-size-200);\n line-height: var(--dt-font-line-height-300);\n\n &__name {\n font-weight: var(--dt-font-weight-bold);\n }\n\n &__time {\n font-size: var(--dt-font-size-100);\n color: var(--dt-color-foreground-tertiary);\n flex-shrink: 0;\n }\n }\n\n &__reactions {\n display: flex;\n flex-wrap: wrap;\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n padding-left: var(--dt-space-300);\n }\n\n &__threading {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n }\n\n &__left-time {\n color: var(--dt-color-foreground-tertiary);\n font-size: var(--dt-font-size-100);\n font-weight: var(--dt-font-weight-normal);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n &__menu {\n position: absolute;\n top: var(--dt-space-550-negative);\n right: var(--dt-space-450);\n }\n\n &:deep(> .dt-item-layout) {\n font: var(--dt-typography-body-md-compact);\n min-height: initial;\n padding: 0px;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--left) {\n align-self: flex-start;\n text-align: end;\n display: block;\n padding-right: var(--dt-space-300);\n padding-left: var(--dt-space-0);\n // min-width = avatar width + padding\n min-width: calc(var(--dt-space-600) + var(--dt-space-300));\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--right) {\n padding: 0;\n min-width: initial;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--content > .dt-item-layout--bottom) {\n display: flex;\n flex-direction: column;\n margin-top: 0;\n }\n}\n</style>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"feed-item-row.js","sources":["../../recipes/conversation_view/feed_item_row/feed_item_row_constants.js","../../recipes/conversation_view/feed_item_row/feed_item_row.vue"],"sourcesContent":["export const FEED_ROW_STATE_BACKGROUND_COLOR = {\n NORMAL: '',\n SEARCHED: 'dt-feed-item-row--state-searched',\n ERROR: 'dt-feed-item-row--state-error',\n};\n\nexport const DEFAULT_FEED_ROW_STATE = 'NORMAL';\n\nexport default {\n FEED_ROW_STATE_BACKGROUND_COLOR,\n DEFAULT_FEED_ROW_STATE,\n};\n","<template>\n <dt-list-item\n ref=\"FeedItemRef\"\n navigation-type=\"none\"\n v-bind=\"$attrs\"\n :class=\"['dt-feed-item-row', listItemClasses]\"\n data-qa=\"dt-feed-item-row\"\n v-on=\"feedListeners\"\n >\n <!-- Avatar or time -->\n <template #left>\n <div\n v-if=\"showHeader\"\n class=\"dt-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 :icon-name=\"iconName\"\n :seed=\"avatarSeed\"\n />\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=\"dt-feed-item-row__left-time\"\n data-qa=\"dt-feed-item-row--left-time\"\n >\n {{ shortTime }}\n </span>\n </template>\n\n <article class=\"dt-feed-item-row__content\">\n <!-- Feed Item -->\n <div\n v-if=\"showHeader\"\n data-qa=\"dt-feed-item-row--header\"\n class=\"dt-feed-item-row__header\"\n >\n <p class=\"dt-feed-item-row__header__name\">\n {{ displayName }}\n </p>\n <time\n class=\"dt-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-feed-item-row--content\"\n >\n <slot />\n </span>\n <div\n v-if=\"$slots.attachment\"\n data-qa=\"dt-feed-item-row--attachment\"\n class=\"dt-feed-item-row__attachment\"\n >\n <slot name=\"attachment\" />\n </div>\n </article>\n\n <template #bottom>\n <div\n v-if=\"$slots.reactions\"\n class=\"dt-feed-item-row__reactions\"\n data-qa=\"dt-feed-item-row--reactions\"\n >\n <!-- @slot Slot for reactions row component -->\n <slot name=\"reactions\" />\n </div>\n <div\n v-if=\"$slots.threading\"\n class=\"dt-feed-item-row__threading\"\n >\n <!-- @slot Slot for threading row component -->\n <slot name=\"threading\" />\n </div>\n </template>\n\n <!-- Action menu -->\n <template #right>\n <div\n v-show=\"isActive\"\n data-qa=\"dt-feed-item-row--menu\"\n class=\"dt-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';\n\nexport default {\n name: 'DtRecipeFeedItemRow',\n\n components: {\n DtAvatar,\n DtLazyShow,\n DtListItem,\n DtBadge,\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 ...this.$listeners,\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 iconName () {\n return this.noInitials ? 'user' : null;\n },\n\n listItemClasses () {\n return [\n 'dt-feed-item-row',\n { 'dt-feed-item-row--active': this.isActive && this.state === DEFAULT_FEED_ROW_STATE },\n { 'dt-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\n<style lang=\"less\" scoped>\n.dt-feed-item-row {\n\n width: var(--dt-size-100-percent);\n box-sizing: border-box;\n position: relative;\n padding: var(--dt-space-300) var(--dt-space-500);\n\n &:focus-visible {\n box-shadow: var(--dt-shadow-focus-inset);\n }\n\n &--state-searched {\n background-color: var(--dt-color-surface-warning-subtle);\n }\n\n &--state-error {\n background-color: var(--dt-color-surface-critical-subtle);\n }\n\n &--active {\n background-color: var(--dt-color-surface-secondary-opaque);\n }\n\n &--state-transition {\n transition-duration: 2s;\n transition-delay: 0s;\n transition-timing-function: var(--ttf-in-out);\n transition-property: background-color;\n }\n\n &__avatar-container {\n padding-top: var(--dt-space-300);\n padding-bottom: var(--dt-space-300);\n }\n\n &__content {\n padding-left: var(--dt-space-300);\n }\n\n &__attachment {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-300);\n\n &:deep(.dt-feed-item-row__image) {\n border: var(--dt-color-border-subtle) solid var(--dt-size-border-100);\n border-radius: var(--dt-size-radius-400);\n display: block;\n max-width: 30rem;\n max-height: 30rem;\n min-width: 5.6rem;\n min-height: 5.6rem;\n }\n\n &:deep(.dt-feed-item-row__video) {\n display: block;\n height: 25.0rem;\n }\n }\n\n &__header {\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: var(--dt-space-300);\n font-size: var(--dt-font-size-200);\n line-height: var(--dt-font-line-height-300);\n\n &__name {\n font-weight: var(--dt-font-weight-bold);\n }\n\n &__time {\n font-size: var(--dt-font-size-100);\n color: var(--dt-color-foreground-tertiary);\n flex-shrink: 0;\n }\n }\n\n &__reactions {\n display: flex;\n flex-wrap: wrap;\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n padding-left: var(--dt-space-300);\n }\n\n &__threading {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n }\n\n &__left-time {\n color: var(--dt-color-foreground-tertiary);\n font-size: var(--dt-font-size-100);\n font-weight: var(--dt-font-weight-normal);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n &__menu {\n position: absolute;\n top: var(--dt-space-550-negative);\n right: var(--dt-space-450);\n }\n\n &:deep(> .dt-item-layout) {\n font: var(--dt-typography-body-md-compact);\n min-height: initial;\n padding: 0px;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--left) {\n align-self: flex-start;\n text-align: end;\n display: block;\n padding-right: var(--dt-space-300);\n padding-left: var(--dt-space-0);\n // min-width = avatar width + padding\n min-width: calc(var(--dt-space-600) + var(--dt-space-300));\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--right) {\n padding: 0;\n min-width: initial;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--content > .dt-item-layout--bottom) {\n display: flex;\n flex-direction: column;\n margin-top: 0;\n }\n}\n</style>\n"],"names":[],"mappings":"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"}
|
package/dist/vue2/style.css
CHANGED
|
@@ -1122,42 +1122,42 @@
|
|
|
1122
1122
|
transform: scale(1);
|
|
1123
1123
|
}
|
|
1124
1124
|
}
|
|
1125
|
-
.dt-feed-item-row[data-v-
|
|
1125
|
+
.dt-feed-item-row[data-v-047dcbe5] {
|
|
1126
1126
|
width: var(--dt-size-100-percent);
|
|
1127
1127
|
box-sizing: border-box;
|
|
1128
1128
|
position: relative;
|
|
1129
1129
|
padding: var(--dt-space-300) var(--dt-space-500);
|
|
1130
1130
|
}
|
|
1131
|
-
.dt-feed-item-row[data-v-
|
|
1131
|
+
.dt-feed-item-row[data-v-047dcbe5]:focus-visible {
|
|
1132
1132
|
box-shadow: var(--dt-shadow-focus-inset);
|
|
1133
1133
|
}
|
|
1134
|
-
.dt-feed-item-row--state-searched[data-v-
|
|
1134
|
+
.dt-feed-item-row--state-searched[data-v-047dcbe5] {
|
|
1135
1135
|
background-color: var(--dt-color-surface-warning-subtle);
|
|
1136
1136
|
}
|
|
1137
|
-
.dt-feed-item-row--state-error[data-v-
|
|
1137
|
+
.dt-feed-item-row--state-error[data-v-047dcbe5] {
|
|
1138
1138
|
background-color: var(--dt-color-surface-critical-subtle);
|
|
1139
1139
|
}
|
|
1140
|
-
.dt-feed-item-row--active[data-v-
|
|
1140
|
+
.dt-feed-item-row--active[data-v-047dcbe5] {
|
|
1141
1141
|
background-color: var(--dt-color-surface-secondary-opaque);
|
|
1142
1142
|
}
|
|
1143
|
-
.dt-feed-item-row--state-transition[data-v-
|
|
1143
|
+
.dt-feed-item-row--state-transition[data-v-047dcbe5] {
|
|
1144
1144
|
transition-duration: 2s;
|
|
1145
1145
|
transition-delay: 0s;
|
|
1146
1146
|
transition-timing-function: var(--ttf-in-out);
|
|
1147
1147
|
transition-property: background-color;
|
|
1148
1148
|
}
|
|
1149
|
-
.dt-feed-item-row__avatar-container[data-v-
|
|
1149
|
+
.dt-feed-item-row__avatar-container[data-v-047dcbe5] {
|
|
1150
1150
|
padding-top: var(--dt-space-300);
|
|
1151
1151
|
padding-bottom: var(--dt-space-300);
|
|
1152
1152
|
}
|
|
1153
|
-
.dt-feed-item-row__content[data-v-
|
|
1153
|
+
.dt-feed-item-row__content[data-v-047dcbe5] {
|
|
1154
1154
|
padding-left: var(--dt-space-300);
|
|
1155
1155
|
}
|
|
1156
|
-
.dt-feed-item-row__attachment[data-v-
|
|
1156
|
+
.dt-feed-item-row__attachment[data-v-047dcbe5] {
|
|
1157
1157
|
padding-top: var(--dt-space-200);
|
|
1158
1158
|
padding-bottom: var(--dt-space-300);
|
|
1159
1159
|
}
|
|
1160
|
-
.dt-feed-item-row__attachment[data-v-
|
|
1160
|
+
.dt-feed-item-row__attachment[data-v-047dcbe5] .dt-feed-item-row__image {
|
|
1161
1161
|
border: var(--dt-color-border-subtle) solid var(--dt-size-border-100);
|
|
1162
1162
|
border-radius: var(--dt-size-radius-400);
|
|
1163
1163
|
display: block;
|
|
@@ -1166,11 +1166,11 @@
|
|
|
1166
1166
|
min-width: 5.6rem;
|
|
1167
1167
|
min-height: 5.6rem;
|
|
1168
1168
|
}
|
|
1169
|
-
.dt-feed-item-row__attachment[data-v-
|
|
1169
|
+
.dt-feed-item-row__attachment[data-v-047dcbe5] .dt-feed-item-row__video {
|
|
1170
1170
|
display: block;
|
|
1171
1171
|
height: 25rem;
|
|
1172
1172
|
}
|
|
1173
|
-
.dt-feed-item-row__header[data-v-
|
|
1173
|
+
.dt-feed-item-row__header[data-v-047dcbe5] {
|
|
1174
1174
|
display: flex;
|
|
1175
1175
|
align-items: baseline;
|
|
1176
1176
|
flex-wrap: wrap;
|
|
@@ -1178,43 +1178,43 @@
|
|
|
1178
1178
|
font-size: var(--dt-font-size-200);
|
|
1179
1179
|
line-height: var(--dt-font-line-height-300);
|
|
1180
1180
|
}
|
|
1181
|
-
.dt-feed-item-row__header__name[data-v-
|
|
1181
|
+
.dt-feed-item-row__header__name[data-v-047dcbe5] {
|
|
1182
1182
|
font-weight: var(--dt-font-weight-bold);
|
|
1183
1183
|
}
|
|
1184
|
-
.dt-feed-item-row__header__time[data-v-
|
|
1184
|
+
.dt-feed-item-row__header__time[data-v-047dcbe5] {
|
|
1185
1185
|
font-size: var(--dt-font-size-100);
|
|
1186
1186
|
color: var(--dt-color-foreground-tertiary);
|
|
1187
1187
|
flex-shrink: 0;
|
|
1188
1188
|
}
|
|
1189
|
-
.dt-feed-item-row__reactions[data-v-
|
|
1189
|
+
.dt-feed-item-row__reactions[data-v-047dcbe5] {
|
|
1190
1190
|
display: flex;
|
|
1191
1191
|
flex-wrap: wrap;
|
|
1192
1192
|
padding-top: var(--dt-space-200);
|
|
1193
1193
|
padding-bottom: var(--dt-space-200);
|
|
1194
1194
|
padding-left: var(--dt-space-300);
|
|
1195
1195
|
}
|
|
1196
|
-
.dt-feed-item-row__threading[data-v-
|
|
1196
|
+
.dt-feed-item-row__threading[data-v-047dcbe5] {
|
|
1197
1197
|
padding-top: var(--dt-space-200);
|
|
1198
1198
|
padding-bottom: var(--dt-space-200);
|
|
1199
1199
|
}
|
|
1200
|
-
.dt-feed-item-row__left-time[data-v-
|
|
1200
|
+
.dt-feed-item-row__left-time[data-v-047dcbe5] {
|
|
1201
1201
|
color: var(--dt-color-foreground-tertiary);
|
|
1202
1202
|
font-size: var(--dt-font-size-100);
|
|
1203
1203
|
font-weight: var(--dt-font-weight-normal);
|
|
1204
1204
|
vertical-align: middle;
|
|
1205
1205
|
white-space: nowrap;
|
|
1206
1206
|
}
|
|
1207
|
-
.dt-feed-item-row__menu[data-v-
|
|
1207
|
+
.dt-feed-item-row__menu[data-v-047dcbe5] {
|
|
1208
1208
|
position: absolute;
|
|
1209
1209
|
top: var(--dt-space-550-negative);
|
|
1210
1210
|
right: var(--dt-space-450);
|
|
1211
1211
|
}
|
|
1212
|
-
.dt-feed-item-row[data-v-
|
|
1212
|
+
.dt-feed-item-row[data-v-047dcbe5] > .dt-item-layout {
|
|
1213
1213
|
font: var(--dt-typography-body-md-compact);
|
|
1214
1214
|
min-height: initial;
|
|
1215
1215
|
padding: 0px;
|
|
1216
1216
|
}
|
|
1217
|
-
.dt-feed-item-row[data-v-
|
|
1217
|
+
.dt-feed-item-row[data-v-047dcbe5] > .dt-item-layout > .dt-item-layout--left {
|
|
1218
1218
|
align-self: flex-start;
|
|
1219
1219
|
text-align: end;
|
|
1220
1220
|
display: block;
|
|
@@ -1222,11 +1222,11 @@
|
|
|
1222
1222
|
padding-left: var(--dt-space-0);
|
|
1223
1223
|
min-width: calc(var(--dt-space-600) + var(--dt-space-300));
|
|
1224
1224
|
}
|
|
1225
|
-
.dt-feed-item-row[data-v-
|
|
1225
|
+
.dt-feed-item-row[data-v-047dcbe5] > .dt-item-layout > .dt-item-layout--right {
|
|
1226
1226
|
padding: 0;
|
|
1227
1227
|
min-width: initial;
|
|
1228
1228
|
}
|
|
1229
|
-
.dt-feed-item-row[data-v-
|
|
1229
|
+
.dt-feed-item-row[data-v-047dcbe5] > .dt-item-layout > .dt-item-layout--content > .dt-item-layout--bottom {
|
|
1230
1230
|
display: flex;
|
|
1231
1231
|
flex-direction: column;
|
|
1232
1232
|
margin-top: 0;
|
|
@@ -28,6 +28,13 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
28
28
|
type: StringConstructor;
|
|
29
29
|
default: string;
|
|
30
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* Initials will never be shown. Instead it will show a "User" icon.
|
|
33
|
+
*/
|
|
34
|
+
noInitials: {
|
|
35
|
+
type: BooleanConstructor;
|
|
36
|
+
default: boolean;
|
|
37
|
+
};
|
|
31
38
|
/**
|
|
32
39
|
* time string displayed as is.
|
|
33
40
|
* Shown on the header when showHeader is true
|
|
@@ -77,6 +84,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
77
84
|
transitionend: () => void;
|
|
78
85
|
keydown: (event: any) => void;
|
|
79
86
|
};
|
|
87
|
+
iconName(): "user" | null;
|
|
80
88
|
listItemClasses(): (string | {
|
|
81
89
|
'dt-feed-item-row--active': never;
|
|
82
90
|
'dt-feed-item-row--state-transition'?: undefined;
|
|
@@ -128,6 +136,13 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
128
136
|
type: StringConstructor;
|
|
129
137
|
default: string;
|
|
130
138
|
};
|
|
139
|
+
/**
|
|
140
|
+
* Initials will never be shown. Instead it will show a "User" icon.
|
|
141
|
+
*/
|
|
142
|
+
noInitials: {
|
|
143
|
+
type: BooleanConstructor;
|
|
144
|
+
default: boolean;
|
|
145
|
+
};
|
|
131
146
|
/**
|
|
132
147
|
* time string displayed as is.
|
|
133
148
|
* Shown on the header when showHeader is true
|
|
@@ -174,6 +189,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
174
189
|
showHeader: boolean;
|
|
175
190
|
avatarImageUrl: string;
|
|
176
191
|
displayName: string;
|
|
192
|
+
noInitials: boolean;
|
|
177
193
|
shortTime: string;
|
|
178
194
|
labelText: string;
|
|
179
195
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed_item_row.vue.d.ts","sourceRoot":"","sources":["../../../../../recipes/conversation_view/feed_item_row/feed_item_row.vue.js"],"names":[],"mappings":";IAyBI;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG
|
|
1
|
+
{"version":3,"file":"feed_item_row.vue.d.ts","sourceRoot":"","sources":["../../../../../recipes/conversation_view/feed_item_row/feed_item_row.vue.js"],"names":[],"mappings":";IAyBI;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA7EH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG"}
|
|
@@ -231,6 +231,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
231
231
|
selected: boolean;
|
|
232
232
|
avatarSrc: string;
|
|
233
233
|
avatarSeed: string;
|
|
234
|
+
noInitials: boolean;
|
|
234
235
|
unreadCount: string;
|
|
235
236
|
unreadCountTooltip: string;
|
|
236
237
|
hasUnreads: boolean;
|
|
@@ -240,7 +241,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
240
241
|
avatarPresence: string;
|
|
241
242
|
presenceText: string;
|
|
242
243
|
userStatus: string;
|
|
243
|
-
noInitials: boolean;
|
|
244
244
|
}>;
|
|
245
245
|
export default _default;
|
|
246
246
|
//# sourceMappingURL=contact_row.vue.d.ts.map
|
|
@@ -62,6 +62,13 @@ const _sfc_main = {
|
|
|
62
62
|
type: String,
|
|
63
63
|
default: ""
|
|
64
64
|
},
|
|
65
|
+
/**
|
|
66
|
+
* Initials will never be shown. Instead it will show a "User" icon.
|
|
67
|
+
*/
|
|
68
|
+
noInitials: {
|
|
69
|
+
type: Boolean,
|
|
70
|
+
default: false
|
|
71
|
+
},
|
|
65
72
|
/**
|
|
66
73
|
* time string displayed as is.
|
|
67
74
|
* Shown on the header when showHeader is true
|
|
@@ -147,6 +154,9 @@ const _sfc_main = {
|
|
|
147
154
|
}
|
|
148
155
|
};
|
|
149
156
|
},
|
|
157
|
+
iconName() {
|
|
158
|
+
return this.noInitials ? "user" : null;
|
|
159
|
+
},
|
|
150
160
|
listItemClasses() {
|
|
151
161
|
return [
|
|
152
162
|
"dt-feed-item-row",
|
|
@@ -233,8 +243,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
233
243
|
"full-name": $props.displayName,
|
|
234
244
|
"image-src": $props.avatarImageUrl,
|
|
235
245
|
"image-alt": "",
|
|
246
|
+
"icon-name": $options.iconName,
|
|
236
247
|
seed: $props.avatarSeed
|
|
237
|
-
}, null, 8, ["full-name", "image-src", "seed"])
|
|
248
|
+
}, null, 8, ["full-name", "image-src", "icon-name", "seed"])
|
|
238
249
|
], true)
|
|
239
250
|
])) : vue.createCommentVNode("", true),
|
|
240
251
|
!$props.showHeader ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("span", {
|
|
@@ -290,7 +301,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
290
301
|
_: 3
|
|
291
302
|
}, 16, ["class"]);
|
|
292
303
|
}
|
|
293
|
-
const feed_item_row = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-
|
|
304
|
+
const feed_item_row = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-418199f0"]]);
|
|
294
305
|
exports.DEFAULT_FEED_ROW_STATE = DEFAULT_FEED_ROW_STATE;
|
|
295
306
|
exports.DtRecipeFeedItemRow = feed_item_row;
|
|
296
307
|
exports.FEED_ROW_STATE_BACKGROUND_COLOR = FEED_ROW_STATE_BACKGROUND_COLOR;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-item-row.cjs","sources":["../../recipes/conversation_view/feed_item_row/feed_item_row_constants.js","../../recipes/conversation_view/feed_item_row/feed_item_row.vue"],"sourcesContent":["export const FEED_ROW_STATE_BACKGROUND_COLOR = {\n NORMAL: '',\n SEARCHED: 'dt-feed-item-row--state-searched',\n ERROR: 'dt-feed-item-row--state-error',\n};\n\nexport const DEFAULT_FEED_ROW_STATE = 'NORMAL';\n\nexport default {\n FEED_ROW_STATE_BACKGROUND_COLOR,\n DEFAULT_FEED_ROW_STATE,\n};\n","<template>\n <dt-list-item\n ref=\"FeedItemRef\"\n navigation-type=\"none\"\n v-bind=\"$attrs\"\n :class=\"['dt-feed-item-row', listItemClasses]\"\n data-qa=\"dt-feed-item-row\"\n v-on=\"feedListeners\"\n >\n <!-- Avatar or time -->\n <template #left>\n <div\n v-if=\"showHeader\"\n class=\"dt-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 </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=\"dt-feed-item-row__left-time\"\n data-qa=\"dt-feed-item-row--left-time\"\n >\n {{ shortTime }}\n </span>\n </template>\n\n <article class=\"dt-feed-item-row__content\">\n <!-- Feed Item -->\n <div\n v-if=\"showHeader\"\n data-qa=\"dt-feed-item-row--header\"\n class=\"dt-feed-item-row__header\"\n >\n <p class=\"dt-feed-item-row__header__name\">\n {{ displayName }}\n </p>\n <time\n class=\"dt-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-feed-item-row--content\"\n >\n <slot />\n </span>\n <div\n v-if=\"$slots.attachment\"\n data-qa=\"dt-feed-item-row--attachment\"\n class=\"dt-feed-item-row__attachment\"\n >\n <slot name=\"attachment\" />\n </div>\n </article>\n\n <template #bottom>\n <div\n v-if=\"$slots.reactions\"\n class=\"dt-feed-item-row__reactions\"\n data-qa=\"dt-feed-item-row--reactions\"\n >\n <!-- @slot Slot for reactions row component -->\n <slot name=\"reactions\" />\n </div>\n <div\n v-if=\"$slots.threading\"\n class=\"dt-feed-item-row__threading\"\n >\n <!-- @slot Slot for threading row component -->\n <slot name=\"threading\" />\n </div>\n </template>\n\n <!-- Action menu -->\n <template #right>\n <div\n v-show=\"isActive\"\n data-qa=\"dt-feed-item-row--menu\"\n class=\"dt-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';\n\nexport default {\n name: 'DtRecipeFeedItemRow',\n\n components: {\n DtAvatar,\n DtLazyShow,\n DtListItem,\n DtBadge,\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 * 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 'dt-feed-item-row',\n { 'dt-feed-item-row--active': this.isActive && this.state === DEFAULT_FEED_ROW_STATE },\n { 'dt-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\n<style lang=\"less\" scoped>\n.dt-feed-item-row {\n\n width: var(--dt-size-100-percent);\n box-sizing: border-box;\n position: relative;\n padding: var(--dt-space-300) var(--dt-space-500);\n\n &:focus-visible {\n box-shadow: var(--dt-shadow-focus-inset);\n }\n\n &--state-searched {\n background-color: var(--dt-color-surface-warning-subtle);\n }\n\n &--state-error {\n background-color: var(--dt-color-surface-critical-subtle);\n }\n\n &--active {\n background-color: var(--dt-color-surface-secondary-opaque);\n }\n\n &--state-transition {\n transition-duration: 2s;\n transition-delay: 0s;\n transition-timing-function: var(--ttf-in-out);\n transition-property: background-color;\n }\n\n &__avatar-container {\n padding-top: var(--dt-space-300);\n padding-bottom: var(--dt-space-300);\n }\n\n &__content {\n padding-left: var(--dt-space-300);\n }\n\n &__attachment {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-300);\n\n &:deep(.dt-feed-item-row__image) {\n border: var(--dt-color-border-subtle) solid var(--dt-size-border-100);\n border-radius: var(--dt-size-radius-400);\n display: block;\n max-width: 30rem;\n max-height: 30rem;\n min-width: 5.6rem;\n min-height: 5.6rem;\n }\n\n &:deep(.dt-feed-item-row__video) {\n display: block;\n height: 25.0rem;\n }\n }\n\n &__header {\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: var(--dt-space-300);\n font-size: var(--dt-font-size-200);\n line-height: var(--dt-font-line-height-300);\n\n &__name {\n font-weight: var(--dt-font-weight-bold);\n }\n\n &__time {\n font-size: var(--dt-font-size-100);\n color: var(--dt-color-foreground-tertiary);\n flex-shrink: 0;\n }\n }\n\n &__reactions {\n display: flex;\n flex-wrap: wrap;\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n padding-left: var(--dt-space-300);\n }\n\n &__threading {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n }\n\n &__left-time {\n color: var(--dt-color-foreground-tertiary);\n font-size: var(--dt-font-size-100);\n font-weight: var(--dt-font-weight-normal);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n &__menu {\n position: absolute;\n top: var(--dt-space-550-negative);\n right: var(--dt-space-450);\n }\n\n &:deep(> .dt-item-layout) {\n font: var(--dt-typography-body-md-compact);\n min-height: initial;\n padding: 0px;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--left) {\n align-self: flex-start;\n text-align: end;\n display: block;\n padding-right: var(--dt-space-300);\n padding-left: var(--dt-space-0);\n // min-width = avatar width + padding\n min-width: calc(var(--dt-space-600) + var(--dt-space-300));\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--right) {\n padding: 0;\n min-width: initial;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--content > .dt-item-layout--bottom) {\n display: flex;\n flex-direction: column;\n margin-top: 0;\n }\n}\n</style>\n"],"names":["DtAvatar","DtLazyShow","DtListItem","DtBadge","Modal","_openBlock","_createBlock","_mergeProps","_toHandlers","_createElementBlock","_renderSlot","_createVNode","_withDirectives","_createElementVNode","_toDisplayString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"feed-item-row.cjs","sources":["../../recipes/conversation_view/feed_item_row/feed_item_row_constants.js","../../recipes/conversation_view/feed_item_row/feed_item_row.vue"],"sourcesContent":["export const FEED_ROW_STATE_BACKGROUND_COLOR = {\n NORMAL: '',\n SEARCHED: 'dt-feed-item-row--state-searched',\n ERROR: 'dt-feed-item-row--state-error',\n};\n\nexport const DEFAULT_FEED_ROW_STATE = 'NORMAL';\n\nexport default {\n FEED_ROW_STATE_BACKGROUND_COLOR,\n DEFAULT_FEED_ROW_STATE,\n};\n","<template>\n <dt-list-item\n ref=\"FeedItemRef\"\n navigation-type=\"none\"\n v-bind=\"$attrs\"\n :class=\"['dt-feed-item-row', listItemClasses]\"\n data-qa=\"dt-feed-item-row\"\n v-on=\"feedListeners\"\n >\n <!-- Avatar or time -->\n <template #left>\n <div\n v-if=\"showHeader\"\n class=\"dt-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 :icon-name=\"iconName\"\n :seed=\"avatarSeed\"\n />\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=\"dt-feed-item-row__left-time\"\n data-qa=\"dt-feed-item-row--left-time\"\n >\n {{ shortTime }}\n </span>\n </template>\n\n <article class=\"dt-feed-item-row__content\">\n <!-- Feed Item -->\n <div\n v-if=\"showHeader\"\n data-qa=\"dt-feed-item-row--header\"\n class=\"dt-feed-item-row__header\"\n >\n <p class=\"dt-feed-item-row__header__name\">\n {{ displayName }}\n </p>\n <time\n class=\"dt-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-feed-item-row--content\"\n >\n <slot />\n </span>\n <div\n v-if=\"$slots.attachment\"\n data-qa=\"dt-feed-item-row--attachment\"\n class=\"dt-feed-item-row__attachment\"\n >\n <slot name=\"attachment\" />\n </div>\n </article>\n\n <template #bottom>\n <div\n v-if=\"$slots.reactions\"\n class=\"dt-feed-item-row__reactions\"\n data-qa=\"dt-feed-item-row--reactions\"\n >\n <!-- @slot Slot for reactions row component -->\n <slot name=\"reactions\" />\n </div>\n <div\n v-if=\"$slots.threading\"\n class=\"dt-feed-item-row__threading\"\n >\n <!-- @slot Slot for threading row component -->\n <slot name=\"threading\" />\n </div>\n </template>\n\n <!-- Action menu -->\n <template #right>\n <div\n v-show=\"isActive\"\n data-qa=\"dt-feed-item-row--menu\"\n class=\"dt-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';\n\nexport default {\n name: 'DtRecipeFeedItemRow',\n\n components: {\n DtAvatar,\n DtLazyShow,\n DtListItem,\n DtBadge,\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 iconName () {\n return this.noInitials ? 'user' : null;\n },\n\n listItemClasses () {\n return [\n 'dt-feed-item-row',\n { 'dt-feed-item-row--active': this.isActive && this.state === DEFAULT_FEED_ROW_STATE },\n { 'dt-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\n<style lang=\"less\" scoped>\n.dt-feed-item-row {\n\n width: var(--dt-size-100-percent);\n box-sizing: border-box;\n position: relative;\n padding: var(--dt-space-300) var(--dt-space-500);\n\n &:focus-visible {\n box-shadow: var(--dt-shadow-focus-inset);\n }\n\n &--state-searched {\n background-color: var(--dt-color-surface-warning-subtle);\n }\n\n &--state-error {\n background-color: var(--dt-color-surface-critical-subtle);\n }\n\n &--active {\n background-color: var(--dt-color-surface-secondary-opaque);\n }\n\n &--state-transition {\n transition-duration: 2s;\n transition-delay: 0s;\n transition-timing-function: var(--ttf-in-out);\n transition-property: background-color;\n }\n\n &__avatar-container {\n padding-top: var(--dt-space-300);\n padding-bottom: var(--dt-space-300);\n }\n\n &__content {\n padding-left: var(--dt-space-300);\n }\n\n &__attachment {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-300);\n\n &:deep(.dt-feed-item-row__image) {\n border: var(--dt-color-border-subtle) solid var(--dt-size-border-100);\n border-radius: var(--dt-size-radius-400);\n display: block;\n max-width: 30rem;\n max-height: 30rem;\n min-width: 5.6rem;\n min-height: 5.6rem;\n }\n\n &:deep(.dt-feed-item-row__video) {\n display: block;\n height: 25.0rem;\n }\n }\n\n &__header {\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: var(--dt-space-300);\n font-size: var(--dt-font-size-200);\n line-height: var(--dt-font-line-height-300);\n\n &__name {\n font-weight: var(--dt-font-weight-bold);\n }\n\n &__time {\n font-size: var(--dt-font-size-100);\n color: var(--dt-color-foreground-tertiary);\n flex-shrink: 0;\n }\n }\n\n &__reactions {\n display: flex;\n flex-wrap: wrap;\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n padding-left: var(--dt-space-300);\n }\n\n &__threading {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n }\n\n &__left-time {\n color: var(--dt-color-foreground-tertiary);\n font-size: var(--dt-font-size-100);\n font-weight: var(--dt-font-weight-normal);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n &__menu {\n position: absolute;\n top: var(--dt-space-550-negative);\n right: var(--dt-space-450);\n }\n\n &:deep(> .dt-item-layout) {\n font: var(--dt-typography-body-md-compact);\n min-height: initial;\n padding: 0px;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--left) {\n align-self: flex-start;\n text-align: end;\n display: block;\n padding-right: var(--dt-space-300);\n padding-left: var(--dt-space-0);\n // min-width = avatar width + padding\n min-width: calc(var(--dt-space-600) + var(--dt-space-300));\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--right) {\n padding: 0;\n min-width: initial;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--content > .dt-item-layout--bottom) {\n display: flex;\n flex-direction: column;\n margin-top: 0;\n }\n}\n</style>\n"],"names":["DtAvatar","DtLazyShow","DtListItem","DtBadge","Modal","_openBlock","_createBlock","_mergeProps","_toHandlers","_createElementBlock","_renderSlot","_createVNode","_withDirectives","_createElementVNode","_toDisplayString"],"mappings":"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"}
|
|
@@ -60,6 +60,13 @@ const _sfc_main = {
|
|
|
60
60
|
type: String,
|
|
61
61
|
default: ""
|
|
62
62
|
},
|
|
63
|
+
/**
|
|
64
|
+
* Initials will never be shown. Instead it will show a "User" icon.
|
|
65
|
+
*/
|
|
66
|
+
noInitials: {
|
|
67
|
+
type: Boolean,
|
|
68
|
+
default: false
|
|
69
|
+
},
|
|
63
70
|
/**
|
|
64
71
|
* time string displayed as is.
|
|
65
72
|
* Shown on the header when showHeader is true
|
|
@@ -145,6 +152,9 @@ const _sfc_main = {
|
|
|
145
152
|
}
|
|
146
153
|
};
|
|
147
154
|
},
|
|
155
|
+
iconName() {
|
|
156
|
+
return this.noInitials ? "user" : null;
|
|
157
|
+
},
|
|
148
158
|
listItemClasses() {
|
|
149
159
|
return [
|
|
150
160
|
"dt-feed-item-row",
|
|
@@ -231,8 +241,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
231
241
|
"full-name": $props.displayName,
|
|
232
242
|
"image-src": $props.avatarImageUrl,
|
|
233
243
|
"image-alt": "",
|
|
244
|
+
"icon-name": $options.iconName,
|
|
234
245
|
seed: $props.avatarSeed
|
|
235
|
-
}, null, 8, ["full-name", "image-src", "seed"])
|
|
246
|
+
}, null, 8, ["full-name", "image-src", "icon-name", "seed"])
|
|
236
247
|
], true)
|
|
237
248
|
])) : createCommentVNode("", true),
|
|
238
249
|
!$props.showHeader ? withDirectives((openBlock(), createElementBlock("span", {
|
|
@@ -288,7 +299,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
288
299
|
_: 3
|
|
289
300
|
}, 16, ["class"]);
|
|
290
301
|
}
|
|
291
|
-
const feed_item_row = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-
|
|
302
|
+
const feed_item_row = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-418199f0"]]);
|
|
292
303
|
export {
|
|
293
304
|
DEFAULT_FEED_ROW_STATE,
|
|
294
305
|
feed_item_row as DtRecipeFeedItemRow,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-item-row.js","sources":["../../recipes/conversation_view/feed_item_row/feed_item_row_constants.js","../../recipes/conversation_view/feed_item_row/feed_item_row.vue"],"sourcesContent":["export const FEED_ROW_STATE_BACKGROUND_COLOR = {\n NORMAL: '',\n SEARCHED: 'dt-feed-item-row--state-searched',\n ERROR: 'dt-feed-item-row--state-error',\n};\n\nexport const DEFAULT_FEED_ROW_STATE = 'NORMAL';\n\nexport default {\n FEED_ROW_STATE_BACKGROUND_COLOR,\n DEFAULT_FEED_ROW_STATE,\n};\n","<template>\n <dt-list-item\n ref=\"FeedItemRef\"\n navigation-type=\"none\"\n v-bind=\"$attrs\"\n :class=\"['dt-feed-item-row', listItemClasses]\"\n data-qa=\"dt-feed-item-row\"\n v-on=\"feedListeners\"\n >\n <!-- Avatar or time -->\n <template #left>\n <div\n v-if=\"showHeader\"\n class=\"dt-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 </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=\"dt-feed-item-row__left-time\"\n data-qa=\"dt-feed-item-row--left-time\"\n >\n {{ shortTime }}\n </span>\n </template>\n\n <article class=\"dt-feed-item-row__content\">\n <!-- Feed Item -->\n <div\n v-if=\"showHeader\"\n data-qa=\"dt-feed-item-row--header\"\n class=\"dt-feed-item-row__header\"\n >\n <p class=\"dt-feed-item-row__header__name\">\n {{ displayName }}\n </p>\n <time\n class=\"dt-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-feed-item-row--content\"\n >\n <slot />\n </span>\n <div\n v-if=\"$slots.attachment\"\n data-qa=\"dt-feed-item-row--attachment\"\n class=\"dt-feed-item-row__attachment\"\n >\n <slot name=\"attachment\" />\n </div>\n </article>\n\n <template #bottom>\n <div\n v-if=\"$slots.reactions\"\n class=\"dt-feed-item-row__reactions\"\n data-qa=\"dt-feed-item-row--reactions\"\n >\n <!-- @slot Slot for reactions row component -->\n <slot name=\"reactions\" />\n </div>\n <div\n v-if=\"$slots.threading\"\n class=\"dt-feed-item-row__threading\"\n >\n <!-- @slot Slot for threading row component -->\n <slot name=\"threading\" />\n </div>\n </template>\n\n <!-- Action menu -->\n <template #right>\n <div\n v-show=\"isActive\"\n data-qa=\"dt-feed-item-row--menu\"\n class=\"dt-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';\n\nexport default {\n name: 'DtRecipeFeedItemRow',\n\n components: {\n DtAvatar,\n DtLazyShow,\n DtListItem,\n DtBadge,\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 * 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 'dt-feed-item-row',\n { 'dt-feed-item-row--active': this.isActive && this.state === DEFAULT_FEED_ROW_STATE },\n { 'dt-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\n<style lang=\"less\" scoped>\n.dt-feed-item-row {\n\n width: var(--dt-size-100-percent);\n box-sizing: border-box;\n position: relative;\n padding: var(--dt-space-300) var(--dt-space-500);\n\n &:focus-visible {\n box-shadow: var(--dt-shadow-focus-inset);\n }\n\n &--state-searched {\n background-color: var(--dt-color-surface-warning-subtle);\n }\n\n &--state-error {\n background-color: var(--dt-color-surface-critical-subtle);\n }\n\n &--active {\n background-color: var(--dt-color-surface-secondary-opaque);\n }\n\n &--state-transition {\n transition-duration: 2s;\n transition-delay: 0s;\n transition-timing-function: var(--ttf-in-out);\n transition-property: background-color;\n }\n\n &__avatar-container {\n padding-top: var(--dt-space-300);\n padding-bottom: var(--dt-space-300);\n }\n\n &__content {\n padding-left: var(--dt-space-300);\n }\n\n &__attachment {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-300);\n\n &:deep(.dt-feed-item-row__image) {\n border: var(--dt-color-border-subtle) solid var(--dt-size-border-100);\n border-radius: var(--dt-size-radius-400);\n display: block;\n max-width: 30rem;\n max-height: 30rem;\n min-width: 5.6rem;\n min-height: 5.6rem;\n }\n\n &:deep(.dt-feed-item-row__video) {\n display: block;\n height: 25.0rem;\n }\n }\n\n &__header {\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: var(--dt-space-300);\n font-size: var(--dt-font-size-200);\n line-height: var(--dt-font-line-height-300);\n\n &__name {\n font-weight: var(--dt-font-weight-bold);\n }\n\n &__time {\n font-size: var(--dt-font-size-100);\n color: var(--dt-color-foreground-tertiary);\n flex-shrink: 0;\n }\n }\n\n &__reactions {\n display: flex;\n flex-wrap: wrap;\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n padding-left: var(--dt-space-300);\n }\n\n &__threading {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n }\n\n &__left-time {\n color: var(--dt-color-foreground-tertiary);\n font-size: var(--dt-font-size-100);\n font-weight: var(--dt-font-weight-normal);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n &__menu {\n position: absolute;\n top: var(--dt-space-550-negative);\n right: var(--dt-space-450);\n }\n\n &:deep(> .dt-item-layout) {\n font: var(--dt-typography-body-md-compact);\n min-height: initial;\n padding: 0px;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--left) {\n align-self: flex-start;\n text-align: end;\n display: block;\n padding-right: var(--dt-space-300);\n padding-left: var(--dt-space-0);\n // min-width = avatar width + padding\n min-width: calc(var(--dt-space-600) + var(--dt-space-300));\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--right) {\n padding: 0;\n min-width: initial;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--content > .dt-item-layout--bottom) {\n display: flex;\n flex-direction: column;\n margin-top: 0;\n }\n}\n</style>\n"],"names":["_openBlock","_createBlock","_mergeProps","_toHandlers","_createElementBlock","_renderSlot","_createVNode","_withDirectives","_createElementVNode","_toDisplayString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"feed-item-row.js","sources":["../../recipes/conversation_view/feed_item_row/feed_item_row_constants.js","../../recipes/conversation_view/feed_item_row/feed_item_row.vue"],"sourcesContent":["export const FEED_ROW_STATE_BACKGROUND_COLOR = {\n NORMAL: '',\n SEARCHED: 'dt-feed-item-row--state-searched',\n ERROR: 'dt-feed-item-row--state-error',\n};\n\nexport const DEFAULT_FEED_ROW_STATE = 'NORMAL';\n\nexport default {\n FEED_ROW_STATE_BACKGROUND_COLOR,\n DEFAULT_FEED_ROW_STATE,\n};\n","<template>\n <dt-list-item\n ref=\"FeedItemRef\"\n navigation-type=\"none\"\n v-bind=\"$attrs\"\n :class=\"['dt-feed-item-row', listItemClasses]\"\n data-qa=\"dt-feed-item-row\"\n v-on=\"feedListeners\"\n >\n <!-- Avatar or time -->\n <template #left>\n <div\n v-if=\"showHeader\"\n class=\"dt-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 :icon-name=\"iconName\"\n :seed=\"avatarSeed\"\n />\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=\"dt-feed-item-row__left-time\"\n data-qa=\"dt-feed-item-row--left-time\"\n >\n {{ shortTime }}\n </span>\n </template>\n\n <article class=\"dt-feed-item-row__content\">\n <!-- Feed Item -->\n <div\n v-if=\"showHeader\"\n data-qa=\"dt-feed-item-row--header\"\n class=\"dt-feed-item-row__header\"\n >\n <p class=\"dt-feed-item-row__header__name\">\n {{ displayName }}\n </p>\n <time\n class=\"dt-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-feed-item-row--content\"\n >\n <slot />\n </span>\n <div\n v-if=\"$slots.attachment\"\n data-qa=\"dt-feed-item-row--attachment\"\n class=\"dt-feed-item-row__attachment\"\n >\n <slot name=\"attachment\" />\n </div>\n </article>\n\n <template #bottom>\n <div\n v-if=\"$slots.reactions\"\n class=\"dt-feed-item-row__reactions\"\n data-qa=\"dt-feed-item-row--reactions\"\n >\n <!-- @slot Slot for reactions row component -->\n <slot name=\"reactions\" />\n </div>\n <div\n v-if=\"$slots.threading\"\n class=\"dt-feed-item-row__threading\"\n >\n <!-- @slot Slot for threading row component -->\n <slot name=\"threading\" />\n </div>\n </template>\n\n <!-- Action menu -->\n <template #right>\n <div\n v-show=\"isActive\"\n data-qa=\"dt-feed-item-row--menu\"\n class=\"dt-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';\n\nexport default {\n name: 'DtRecipeFeedItemRow',\n\n components: {\n DtAvatar,\n DtLazyShow,\n DtListItem,\n DtBadge,\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 iconName () {\n return this.noInitials ? 'user' : null;\n },\n\n listItemClasses () {\n return [\n 'dt-feed-item-row',\n { 'dt-feed-item-row--active': this.isActive && this.state === DEFAULT_FEED_ROW_STATE },\n { 'dt-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\n<style lang=\"less\" scoped>\n.dt-feed-item-row {\n\n width: var(--dt-size-100-percent);\n box-sizing: border-box;\n position: relative;\n padding: var(--dt-space-300) var(--dt-space-500);\n\n &:focus-visible {\n box-shadow: var(--dt-shadow-focus-inset);\n }\n\n &--state-searched {\n background-color: var(--dt-color-surface-warning-subtle);\n }\n\n &--state-error {\n background-color: var(--dt-color-surface-critical-subtle);\n }\n\n &--active {\n background-color: var(--dt-color-surface-secondary-opaque);\n }\n\n &--state-transition {\n transition-duration: 2s;\n transition-delay: 0s;\n transition-timing-function: var(--ttf-in-out);\n transition-property: background-color;\n }\n\n &__avatar-container {\n padding-top: var(--dt-space-300);\n padding-bottom: var(--dt-space-300);\n }\n\n &__content {\n padding-left: var(--dt-space-300);\n }\n\n &__attachment {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-300);\n\n &:deep(.dt-feed-item-row__image) {\n border: var(--dt-color-border-subtle) solid var(--dt-size-border-100);\n border-radius: var(--dt-size-radius-400);\n display: block;\n max-width: 30rem;\n max-height: 30rem;\n min-width: 5.6rem;\n min-height: 5.6rem;\n }\n\n &:deep(.dt-feed-item-row__video) {\n display: block;\n height: 25.0rem;\n }\n }\n\n &__header {\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: var(--dt-space-300);\n font-size: var(--dt-font-size-200);\n line-height: var(--dt-font-line-height-300);\n\n &__name {\n font-weight: var(--dt-font-weight-bold);\n }\n\n &__time {\n font-size: var(--dt-font-size-100);\n color: var(--dt-color-foreground-tertiary);\n flex-shrink: 0;\n }\n }\n\n &__reactions {\n display: flex;\n flex-wrap: wrap;\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n padding-left: var(--dt-space-300);\n }\n\n &__threading {\n padding-top: var(--dt-space-200);\n padding-bottom: var(--dt-space-200);\n }\n\n &__left-time {\n color: var(--dt-color-foreground-tertiary);\n font-size: var(--dt-font-size-100);\n font-weight: var(--dt-font-weight-normal);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n &__menu {\n position: absolute;\n top: var(--dt-space-550-negative);\n right: var(--dt-space-450);\n }\n\n &:deep(> .dt-item-layout) {\n font: var(--dt-typography-body-md-compact);\n min-height: initial;\n padding: 0px;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--left) {\n align-self: flex-start;\n text-align: end;\n display: block;\n padding-right: var(--dt-space-300);\n padding-left: var(--dt-space-0);\n // min-width = avatar width + padding\n min-width: calc(var(--dt-space-600) + var(--dt-space-300));\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--right) {\n padding: 0;\n min-width: initial;\n }\n\n &:deep(> .dt-item-layout > .dt-item-layout--content > .dt-item-layout--bottom) {\n display: flex;\n flex-direction: column;\n margin-top: 0;\n }\n}\n</style>\n"],"names":["_openBlock","_createBlock","_mergeProps","_toHandlers","_createElementBlock","_renderSlot","_createVNode","_withDirectives","_createElementVNode","_toDisplayString"],"mappings":"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"}
|
package/dist/vue3/style.css
CHANGED
|
@@ -1165,42 +1165,42 @@
|
|
|
1165
1165
|
transform: scale(1);
|
|
1166
1166
|
}
|
|
1167
1167
|
}
|
|
1168
|
-
.dt-feed-item-row[data-v-
|
|
1168
|
+
.dt-feed-item-row[data-v-418199f0] {
|
|
1169
1169
|
width: var(--dt-size-100-percent);
|
|
1170
1170
|
box-sizing: border-box;
|
|
1171
1171
|
position: relative;
|
|
1172
1172
|
padding: var(--dt-space-300) var(--dt-space-500);
|
|
1173
1173
|
}
|
|
1174
|
-
.dt-feed-item-row[data-v-
|
|
1174
|
+
.dt-feed-item-row[data-v-418199f0]:focus-visible {
|
|
1175
1175
|
box-shadow: var(--dt-shadow-focus-inset);
|
|
1176
1176
|
}
|
|
1177
|
-
.dt-feed-item-row--state-searched[data-v-
|
|
1177
|
+
.dt-feed-item-row--state-searched[data-v-418199f0] {
|
|
1178
1178
|
background-color: var(--dt-color-surface-warning-subtle);
|
|
1179
1179
|
}
|
|
1180
|
-
.dt-feed-item-row--state-error[data-v-
|
|
1180
|
+
.dt-feed-item-row--state-error[data-v-418199f0] {
|
|
1181
1181
|
background-color: var(--dt-color-surface-critical-subtle);
|
|
1182
1182
|
}
|
|
1183
|
-
.dt-feed-item-row--active[data-v-
|
|
1183
|
+
.dt-feed-item-row--active[data-v-418199f0] {
|
|
1184
1184
|
background-color: var(--dt-color-surface-secondary-opaque);
|
|
1185
1185
|
}
|
|
1186
|
-
.dt-feed-item-row--state-transition[data-v-
|
|
1186
|
+
.dt-feed-item-row--state-transition[data-v-418199f0] {
|
|
1187
1187
|
transition-duration: 2s;
|
|
1188
1188
|
transition-delay: 0s;
|
|
1189
1189
|
transition-timing-function: var(--ttf-in-out);
|
|
1190
1190
|
transition-property: background-color;
|
|
1191
1191
|
}
|
|
1192
|
-
.dt-feed-item-row__avatar-container[data-v-
|
|
1192
|
+
.dt-feed-item-row__avatar-container[data-v-418199f0] {
|
|
1193
1193
|
padding-top: var(--dt-space-300);
|
|
1194
1194
|
padding-bottom: var(--dt-space-300);
|
|
1195
1195
|
}
|
|
1196
|
-
.dt-feed-item-row__content[data-v-
|
|
1196
|
+
.dt-feed-item-row__content[data-v-418199f0] {
|
|
1197
1197
|
padding-left: var(--dt-space-300);
|
|
1198
1198
|
}
|
|
1199
|
-
.dt-feed-item-row__attachment[data-v-
|
|
1199
|
+
.dt-feed-item-row__attachment[data-v-418199f0] {
|
|
1200
1200
|
padding-top: var(--dt-space-200);
|
|
1201
1201
|
padding-bottom: var(--dt-space-300);
|
|
1202
1202
|
}
|
|
1203
|
-
.dt-feed-item-row__attachment[data-v-
|
|
1203
|
+
.dt-feed-item-row__attachment[data-v-418199f0] .dt-feed-item-row__image {
|
|
1204
1204
|
border: var(--dt-color-border-subtle) solid var(--dt-size-border-100);
|
|
1205
1205
|
border-radius: var(--dt-size-radius-400);
|
|
1206
1206
|
display: block;
|
|
@@ -1209,11 +1209,11 @@
|
|
|
1209
1209
|
min-width: 5.6rem;
|
|
1210
1210
|
min-height: 5.6rem;
|
|
1211
1211
|
}
|
|
1212
|
-
.dt-feed-item-row__attachment[data-v-
|
|
1212
|
+
.dt-feed-item-row__attachment[data-v-418199f0] .dt-feed-item-row__video {
|
|
1213
1213
|
display: block;
|
|
1214
1214
|
height: 25rem;
|
|
1215
1215
|
}
|
|
1216
|
-
.dt-feed-item-row__header[data-v-
|
|
1216
|
+
.dt-feed-item-row__header[data-v-418199f0] {
|
|
1217
1217
|
display: flex;
|
|
1218
1218
|
align-items: baseline;
|
|
1219
1219
|
flex-wrap: wrap;
|
|
@@ -1221,43 +1221,43 @@
|
|
|
1221
1221
|
font-size: var(--dt-font-size-200);
|
|
1222
1222
|
line-height: var(--dt-font-line-height-300);
|
|
1223
1223
|
}
|
|
1224
|
-
.dt-feed-item-row__header__name[data-v-
|
|
1224
|
+
.dt-feed-item-row__header__name[data-v-418199f0] {
|
|
1225
1225
|
font-weight: var(--dt-font-weight-bold);
|
|
1226
1226
|
}
|
|
1227
|
-
.dt-feed-item-row__header__time[data-v-
|
|
1227
|
+
.dt-feed-item-row__header__time[data-v-418199f0] {
|
|
1228
1228
|
font-size: var(--dt-font-size-100);
|
|
1229
1229
|
color: var(--dt-color-foreground-tertiary);
|
|
1230
1230
|
flex-shrink: 0;
|
|
1231
1231
|
}
|
|
1232
|
-
.dt-feed-item-row__reactions[data-v-
|
|
1232
|
+
.dt-feed-item-row__reactions[data-v-418199f0] {
|
|
1233
1233
|
display: flex;
|
|
1234
1234
|
flex-wrap: wrap;
|
|
1235
1235
|
padding-top: var(--dt-space-200);
|
|
1236
1236
|
padding-bottom: var(--dt-space-200);
|
|
1237
1237
|
padding-left: var(--dt-space-300);
|
|
1238
1238
|
}
|
|
1239
|
-
.dt-feed-item-row__threading[data-v-
|
|
1239
|
+
.dt-feed-item-row__threading[data-v-418199f0] {
|
|
1240
1240
|
padding-top: var(--dt-space-200);
|
|
1241
1241
|
padding-bottom: var(--dt-space-200);
|
|
1242
1242
|
}
|
|
1243
|
-
.dt-feed-item-row__left-time[data-v-
|
|
1243
|
+
.dt-feed-item-row__left-time[data-v-418199f0] {
|
|
1244
1244
|
color: var(--dt-color-foreground-tertiary);
|
|
1245
1245
|
font-size: var(--dt-font-size-100);
|
|
1246
1246
|
font-weight: var(--dt-font-weight-normal);
|
|
1247
1247
|
vertical-align: middle;
|
|
1248
1248
|
white-space: nowrap;
|
|
1249
1249
|
}
|
|
1250
|
-
.dt-feed-item-row__menu[data-v-
|
|
1250
|
+
.dt-feed-item-row__menu[data-v-418199f0] {
|
|
1251
1251
|
position: absolute;
|
|
1252
1252
|
top: var(--dt-space-550-negative);
|
|
1253
1253
|
right: var(--dt-space-450);
|
|
1254
1254
|
}
|
|
1255
|
-
.dt-feed-item-row[data-v-
|
|
1255
|
+
.dt-feed-item-row[data-v-418199f0] > .dt-item-layout {
|
|
1256
1256
|
font: var(--dt-typography-body-md-compact);
|
|
1257
1257
|
min-height: initial;
|
|
1258
1258
|
padding: 0px;
|
|
1259
1259
|
}
|
|
1260
|
-
.dt-feed-item-row[data-v-
|
|
1260
|
+
.dt-feed-item-row[data-v-418199f0] > .dt-item-layout > .dt-item-layout--left {
|
|
1261
1261
|
align-self: flex-start;
|
|
1262
1262
|
text-align: end;
|
|
1263
1263
|
display: block;
|
|
@@ -1265,11 +1265,11 @@
|
|
|
1265
1265
|
padding-left: var(--dt-space-0);
|
|
1266
1266
|
min-width: calc(var(--dt-space-600) + var(--dt-space-300));
|
|
1267
1267
|
}
|
|
1268
|
-
.dt-feed-item-row[data-v-
|
|
1268
|
+
.dt-feed-item-row[data-v-418199f0] > .dt-item-layout > .dt-item-layout--right {
|
|
1269
1269
|
padding: 0;
|
|
1270
1270
|
min-width: initial;
|
|
1271
1271
|
}
|
|
1272
|
-
.dt-feed-item-row[data-v-
|
|
1272
|
+
.dt-feed-item-row[data-v-418199f0] > .dt-item-layout > .dt-item-layout--content > .dt-item-layout--bottom {
|
|
1273
1273
|
display: flex;
|
|
1274
1274
|
flex-direction: column;
|
|
1275
1275
|
margin-top: 0;
|
|
@@ -28,6 +28,13 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
28
28
|
type: StringConstructor;
|
|
29
29
|
default: string;
|
|
30
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* Initials will never be shown. Instead it will show a "User" icon.
|
|
33
|
+
*/
|
|
34
|
+
noInitials: {
|
|
35
|
+
type: BooleanConstructor;
|
|
36
|
+
default: boolean;
|
|
37
|
+
};
|
|
31
38
|
/**
|
|
32
39
|
* time string displayed as is.
|
|
33
40
|
* Shown on the header when showHeader is true
|
|
@@ -77,6 +84,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
77
84
|
transitionend: () => void;
|
|
78
85
|
keydown: (event: any) => void;
|
|
79
86
|
};
|
|
87
|
+
iconName(): "user" | null;
|
|
80
88
|
listItemClasses(): any[];
|
|
81
89
|
}, {
|
|
82
90
|
transitionComplete(): void;
|
|
@@ -122,6 +130,13 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
122
130
|
type: StringConstructor;
|
|
123
131
|
default: string;
|
|
124
132
|
};
|
|
133
|
+
/**
|
|
134
|
+
* Initials will never be shown. Instead it will show a "User" icon.
|
|
135
|
+
*/
|
|
136
|
+
noInitials: {
|
|
137
|
+
type: BooleanConstructor;
|
|
138
|
+
default: boolean;
|
|
139
|
+
};
|
|
125
140
|
/**
|
|
126
141
|
* time string displayed as is.
|
|
127
142
|
* Shown on the header when showHeader is true
|
|
@@ -172,6 +187,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
172
187
|
showHeader: boolean;
|
|
173
188
|
avatarImageUrl: string;
|
|
174
189
|
displayName: string;
|
|
190
|
+
noInitials: boolean;
|
|
175
191
|
shortTime: string;
|
|
176
192
|
labelText: string;
|
|
177
193
|
}, {}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed_item_row.vue.d.ts","sourceRoot":"","sources":["../../../../../recipes/conversation_view/feed_item_row/feed_item_row.vue.js"],"names":[],"mappings":";IAyBI;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG
|
|
1
|
+
{"version":3,"file":"feed_item_row.vue.d.ts","sourceRoot":"","sources":["../../../../../recipes/conversation_view/feed_item_row/feed_item_row.vue.js"],"names":[],"mappings":";IAyBI;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA7EH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;;OAGG;;;;;IAMH;;;OAGG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG"}
|
|
@@ -236,6 +236,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
236
236
|
selected: boolean;
|
|
237
237
|
avatarSrc: string;
|
|
238
238
|
avatarSeed: string;
|
|
239
|
+
noInitials: boolean;
|
|
239
240
|
unreadCount: string;
|
|
240
241
|
unreadCountTooltip: string;
|
|
241
242
|
hasUnreads: boolean;
|
|
@@ -245,7 +246,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
245
246
|
avatarPresence: string;
|
|
246
247
|
presenceText: string;
|
|
247
248
|
userStatus: string;
|
|
248
|
-
noInitials: boolean;
|
|
249
249
|
}, {}>;
|
|
250
250
|
export default _default;
|
|
251
251
|
//# sourceMappingURL=contact_row.vue.d.ts.map
|