2020-10-04 09:33:17 -04:00
|
|
|
|
<!--
|
2024-05-27 11:39:07 -04:00
|
|
|
|
- SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
|
|
|
|
|
- SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
|
|
-->
|
2020-10-04 09:33:17 -04:00
|
|
|
|
<template>
|
2023-03-31 05:30:27 -04:00
|
|
|
|
<component
|
|
|
|
|
|
:is="tag"
|
2024-06-13 05:39:18 -04:00
|
|
|
|
v-show="!deleted && !isLimbo"
|
2020-10-04 09:33:17 -04:00
|
|
|
|
:class="{ 'comment--loading': loading }"
|
|
|
|
|
|
class="comment">
|
|
|
|
|
|
<!-- Comment header toolbar -->
|
2022-12-22 11:03:19 -05:00
|
|
|
|
<div class="comment__side">
|
2020-10-04 09:33:17 -04:00
|
|
|
|
<!-- Author -->
|
2022-08-22 08:29:58 -04:00
|
|
|
|
<NcAvatar
|
|
|
|
|
|
class="comment__avatar"
|
2020-10-04 09:33:17 -04:00
|
|
|
|
:display-name="actorDisplayName"
|
|
|
|
|
|
:user="actorId"
|
|
|
|
|
|
:size="32" />
|
|
|
|
|
|
</div>
|
2022-12-22 11:03:19 -05:00
|
|
|
|
<div class="comment__body">
|
|
|
|
|
|
<div class="comment__header">
|
|
|
|
|
|
<span class="comment__author">{{ actorDisplayName }}</span>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Comment actions,
|
|
|
|
|
|
show if we have a message id and current user is author -->
|
|
|
|
|
|
<NcActions v-if="isOwnComment && id && !loading" class="comment__actions">
|
|
|
|
|
|
<template v-if="!editing">
|
2024-06-13 12:13:45 -04:00
|
|
|
|
<NcActionButton
|
|
|
|
|
|
close-after-click
|
2022-12-22 11:03:19 -05:00
|
|
|
|
@click="onEdit">
|
2024-06-13 12:13:45 -04:00
|
|
|
|
<template #icon>
|
2025-07-02 18:12:17 -04:00
|
|
|
|
<IconPencilOutline :size="20" />
|
2024-06-13 12:13:45 -04:00
|
|
|
|
</template>
|
2022-12-22 11:03:19 -05:00
|
|
|
|
{{ t('comments', 'Edit comment') }}
|
|
|
|
|
|
</NcActionButton>
|
|
|
|
|
|
<NcActionSeparator />
|
2024-06-13 12:13:45 -04:00
|
|
|
|
<NcActionButton
|
|
|
|
|
|
close-after-click
|
2022-12-22 11:03:19 -05:00
|
|
|
|
@click="onDeleteWithUndo">
|
2024-06-13 12:13:45 -04:00
|
|
|
|
<template #icon>
|
2025-07-02 18:12:17 -04:00
|
|
|
|
<IconTrashCanOutline :size="20" />
|
2024-06-13 12:13:45 -04:00
|
|
|
|
</template>
|
2022-12-22 11:03:19 -05:00
|
|
|
|
{{ t('comments', 'Delete comment') }}
|
|
|
|
|
|
</NcActionButton>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
2024-06-13 12:13:45 -04:00
|
|
|
|
<NcActionButton v-else @click="onEditCancel">
|
|
|
|
|
|
<template #icon>
|
|
|
|
|
|
<IconClose :size="20" />
|
|
|
|
|
|
</template>
|
2022-12-22 11:03:19 -05:00
|
|
|
|
{{ t('comments', 'Cancel edit') }}
|
|
|
|
|
|
</NcActionButton>
|
|
|
|
|
|
</NcActions>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Show loading if we're editing or deleting, not on new ones -->
|
|
|
|
|
|
<div v-if="id && loading" class="comment_loading icon-loading-small" />
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Relative time to the comment creation -->
|
2023-11-27 09:15:31 -05:00
|
|
|
|
<NcDateTime
|
|
|
|
|
|
v-else-if="creationDateTime"
|
|
|
|
|
|
class="comment__timestamp"
|
|
|
|
|
|
:timestamp="timestamp"
|
|
|
|
|
|
:ignore-seconds="true" />
|
2022-12-22 11:03:19 -05:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Message editor -->
|
2023-09-06 08:58:24 -04:00
|
|
|
|
<form v-if="editor || editing" class="comment__editor" @submit.prevent>
|
|
|
|
|
|
<div class="comment__editor-group">
|
|
|
|
|
|
<NcRichContenteditable
|
|
|
|
|
|
ref="editor"
|
|
|
|
|
|
:auto-complete="autoComplete"
|
|
|
|
|
|
:contenteditable="!loading"
|
2024-01-09 20:04:18 -05:00
|
|
|
|
:label="editor ? t('comments', 'New comment') : t('comments', 'Edit comment')"
|
|
|
|
|
|
:placeholder="t('comments', 'Write a comment …')"
|
2025-11-25 08:09:36 -05:00
|
|
|
|
:model-value="localMessage"
|
2023-09-06 08:58:24 -04:00
|
|
|
|
:user-data="userData"
|
|
|
|
|
|
aria-describedby="tab-comments__editor-description"
|
|
|
|
|
|
@update:value="updateLocalMessage"
|
|
|
|
|
|
@submit="onSubmit" />
|
|
|
|
|
|
<div class="comment__submit">
|
|
|
|
|
|
<NcButton
|
|
|
|
|
|
variant="tertiary-no-background"
|
|
|
|
|
|
type="submit"
|
|
|
|
|
|
:aria-label="t('comments', 'Post comment')"
|
|
|
|
|
|
:disabled="isEmptyMessage"
|
|
|
|
|
|
@click="onSubmit">
|
|
|
|
|
|
<template #icon>
|
2024-06-13 12:13:45 -04:00
|
|
|
|
<NcLoadingIcon v-if="loading" />
|
|
|
|
|
|
<IconArrowRight v-else :size="20" />
|
2023-09-06 08:58:24 -04:00
|
|
|
|
</template>
|
|
|
|
|
|
</NcButton>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="tab-comments__editor-description" class="comment__editor-description">
|
2023-11-15 00:57:44 -05:00
|
|
|
|
{{ t('comments', '@ for mentions, : for emoji, / for smart picker') }}
|
2023-09-06 08:58:24 -04:00
|
|
|
|
</div>
|
|
|
|
|
|
</form>
|
2022-12-22 11:03:19 -05:00
|
|
|
|
|
|
|
|
|
|
<!-- Message content -->
|
2025-03-04 13:09:46 -05:00
|
|
|
|
<NcRichText
|
|
|
|
|
|
v-else
|
2022-12-22 11:03:19 -05:00
|
|
|
|
class="comment__message"
|
2025-03-04 13:09:46 -05:00
|
|
|
|
:class="{ 'comment__message--expanded': expanded }"
|
|
|
|
|
|
:text="richContent.message"
|
|
|
|
|
|
:arguments="richContent.mentions"
|
2025-11-28 04:51:13 -05:00
|
|
|
|
use-markdown
|
2025-09-18 18:32:26 -04:00
|
|
|
|
@click.native="onExpand" />
|
2020-10-04 09:33:17 -04:00
|
|
|
|
</div>
|
2023-03-31 05:30:27 -04:00
|
|
|
|
</component>
|
2020-10-04 09:33:17 -04:00
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
import { getCurrentUser } from '@nextcloud/auth'
|
2023-11-14 12:30:12 -05:00
|
|
|
|
import { translate as t } from '@nextcloud/l10n'
|
2024-06-13 05:39:18 -04:00
|
|
|
|
import { mapStores } from 'pinia'
|
2023-03-23 02:38:34 -04:00
|
|
|
|
import NcActionButton from '@nextcloud/vue/components/NcActionButton'
|
|
|
|
|
|
import NcActions from '@nextcloud/vue/components/NcActions'
|
|
|
|
|
|
import NcActionSeparator from '@nextcloud/vue/components/NcActionSeparator'
|
|
|
|
|
|
import NcAvatar from '@nextcloud/vue/components/NcAvatar'
|
|
|
|
|
|
import NcButton from '@nextcloud/vue/components/NcButton'
|
2023-11-27 09:15:31 -05:00
|
|
|
|
import NcDateTime from '@nextcloud/vue/components/NcDateTime'
|
2024-06-13 12:13:45 -04:00
|
|
|
|
import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'
|
2025-03-04 13:09:46 -05:00
|
|
|
|
import NcUserBubble from '@nextcloud/vue/components/NcUserBubble'
|
2024-06-13 12:13:45 -04:00
|
|
|
|
import IconArrowRight from 'vue-material-design-icons/ArrowRight.vue'
|
|
|
|
|
|
import IconClose from 'vue-material-design-icons/Close.vue'
|
2025-07-02 18:12:17 -04:00
|
|
|
|
import IconPencilOutline from 'vue-material-design-icons/PencilOutline.vue'
|
|
|
|
|
|
import IconTrashCanOutline from 'vue-material-design-icons/TrashCanOutline.vue'
|
2023-03-23 02:38:34 -04:00
|
|
|
|
import CommentMixin from '../mixins/CommentMixin.js'
|
2024-06-13 05:39:18 -04:00
|
|
|
|
import { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'
|
2020-10-04 09:33:17 -04:00
|
|
|
|
|
2023-05-17 12:56:50 -04:00
|
|
|
|
// Dynamic loading
|
|
|
|
|
|
const NcRichContenteditable = () => import('@nextcloud/vue/components/NcRichContenteditable')
|
2025-03-04 13:09:46 -05:00
|
|
|
|
const NcRichText = () => import('@nextcloud/vue/components/NcRichText')
|
2023-05-17 12:56:50 -04:00
|
|
|
|
|
2020-10-04 09:33:17 -04:00
|
|
|
|
export default {
|
2023-11-27 09:15:31 -05:00
|
|
|
|
/* eslint vue/multi-word-component-names: "warn" */
|
2020-10-04 09:33:17 -04:00
|
|
|
|
name: 'Comment',
|
|
|
|
|
|
|
|
|
|
|
|
components: {
|
2024-06-13 12:13:45 -04:00
|
|
|
|
IconArrowRight,
|
|
|
|
|
|
IconClose,
|
2025-07-02 18:12:17 -04:00
|
|
|
|
IconTrashCanOutline,
|
|
|
|
|
|
IconPencilOutline,
|
2022-08-22 08:29:58 -04:00
|
|
|
|
NcActionButton,
|
|
|
|
|
|
NcActions,
|
|
|
|
|
|
NcActionSeparator,
|
|
|
|
|
|
NcAvatar,
|
|
|
|
|
|
NcButton,
|
2023-11-27 09:15:31 -05:00
|
|
|
|
NcDateTime,
|
2024-06-13 12:13:45 -04:00
|
|
|
|
NcLoadingIcon,
|
2022-08-22 08:29:58 -04:00
|
|
|
|
NcRichContenteditable,
|
2025-03-04 13:09:46 -05:00
|
|
|
|
NcRichText,
|
2020-10-04 09:33:17 -04:00
|
|
|
|
},
|
2025-10-01 10:03:40 -04:00
|
|
|
|
|
2025-03-04 13:09:46 -05:00
|
|
|
|
mixins: [CommentMixin],
|
2020-10-04 09:33:17 -04:00
|
|
|
|
|
|
|
|
|
|
inheritAttrs: false,
|
|
|
|
|
|
|
|
|
|
|
|
props: {
|
|
|
|
|
|
actorDisplayName: {
|
|
|
|
|
|
type: String,
|
|
|
|
|
|
required: true,
|
|
|
|
|
|
},
|
2025-10-01 10:03:40 -04:00
|
|
|
|
|
2020-10-04 09:33:17 -04:00
|
|
|
|
actorId: {
|
|
|
|
|
|
type: String,
|
|
|
|
|
|
required: true,
|
|
|
|
|
|
},
|
2025-10-01 10:03:40 -04:00
|
|
|
|
|
2020-10-04 09:33:17 -04:00
|
|
|
|
creationDateTime: {
|
|
|
|
|
|
type: String,
|
|
|
|
|
|
default: null,
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Force the editor display
|
|
|
|
|
|
*/
|
|
|
|
|
|
editor: {
|
|
|
|
|
|
type: Boolean,
|
|
|
|
|
|
default: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Provide the autocompletion data
|
|
|
|
|
|
*/
|
|
|
|
|
|
autoComplete: {
|
|
|
|
|
|
type: Function,
|
|
|
|
|
|
required: true,
|
|
|
|
|
|
},
|
2025-10-01 10:03:40 -04:00
|
|
|
|
|
2025-03-04 13:09:46 -05:00
|
|
|
|
userData: {
|
|
|
|
|
|
type: Object,
|
|
|
|
|
|
default: () => ({}),
|
|
|
|
|
|
},
|
2023-03-31 05:30:27 -04:00
|
|
|
|
|
|
|
|
|
|
tag: {
|
|
|
|
|
|
type: String,
|
|
|
|
|
|
default: 'div',
|
|
|
|
|
|
},
|
2020-10-04 09:33:17 -04:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
2020-10-21 08:53:56 -04:00
|
|
|
|
expanded: false,
|
2020-10-04 09:33:17 -04:00
|
|
|
|
// Only change data locally and update the original
|
|
|
|
|
|
// parent data when the request is sent and resolved
|
|
|
|
|
|
localMessage: '',
|
2024-01-09 20:04:18 -05:00
|
|
|
|
submitted: false,
|
2020-10-04 09:33:17 -04:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
computed: {
|
2024-06-13 05:39:18 -04:00
|
|
|
|
...mapStores(useDeletedCommentLimbo),
|
2020-10-04 09:33:17 -04:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Is the current user the author of this comment
|
2021-12-02 12:32:57 -05:00
|
|
|
|
*
|
|
|
|
|
|
* @return {boolean}
|
2020-10-04 09:33:17 -04:00
|
|
|
|
*/
|
|
|
|
|
|
isOwnComment() {
|
|
|
|
|
|
return getCurrentUser().uid === this.actorId
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2025-03-04 13:09:46 -05:00
|
|
|
|
richContent() {
|
|
|
|
|
|
const mentions = {}
|
|
|
|
|
|
let message = this.localMessage
|
|
|
|
|
|
|
|
|
|
|
|
Object.keys(this.userData).forEach((user, index) => {
|
|
|
|
|
|
const key = `mention-${index}`
|
|
|
|
|
|
const regex = new RegExp(`@${user}|@"${user}"`, 'g')
|
|
|
|
|
|
message = message.replace(regex, `{${key}}`)
|
|
|
|
|
|
mentions[key] = {
|
|
|
|
|
|
component: NcUserBubble,
|
|
|
|
|
|
props: {
|
|
|
|
|
|
user,
|
|
|
|
|
|
displayName: this.userData[user].label,
|
|
|
|
|
|
primary: this.userData[user].primary,
|
|
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
return { mentions, message }
|
2020-10-04 09:33:17 -04:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
isEmptyMessage() {
|
|
|
|
|
|
return !this.localMessage || this.localMessage.trim() === ''
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2023-11-27 09:15:31 -05:00
|
|
|
|
/**
|
|
|
|
|
|
* Timestamp of the creation time (in ms UNIX time)
|
|
|
|
|
|
*/
|
2020-10-04 09:33:17 -04:00
|
|
|
|
timestamp() {
|
2023-11-27 09:15:31 -05:00
|
|
|
|
return Date.parse(this.creationDateTime)
|
2020-10-04 09:33:17 -04:00
|
|
|
|
},
|
2024-06-13 05:39:18 -04:00
|
|
|
|
|
|
|
|
|
|
isLimbo() {
|
|
|
|
|
|
return this.deletedCommentLimboStore.checkForId(this.id)
|
|
|
|
|
|
},
|
2020-10-04 09:33:17 -04:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
watch: {
|
|
|
|
|
|
// If the data change, update the local value
|
|
|
|
|
|
message(message) {
|
|
|
|
|
|
this.updateLocalMessage(message)
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
beforeMount() {
|
|
|
|
|
|
// Init localMessage
|
|
|
|
|
|
this.updateLocalMessage(this.message)
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
methods: {
|
2023-11-14 12:30:12 -05:00
|
|
|
|
t,
|
|
|
|
|
|
|
2020-10-04 09:33:17 -04:00
|
|
|
|
/**
|
|
|
|
|
|
* Update local Message on outer change
|
2021-12-02 12:32:57 -05:00
|
|
|
|
*
|
2020-10-04 09:33:17 -04:00
|
|
|
|
* @param {string} message the message to set
|
|
|
|
|
|
*/
|
|
|
|
|
|
updateLocalMessage(message) {
|
|
|
|
|
|
this.localMessage = message.toString()
|
2024-01-09 20:04:18 -05:00
|
|
|
|
this.submitted = false
|
2020-10-04 09:33:17 -04:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Dispatch message between edit and create
|
|
|
|
|
|
*/
|
|
|
|
|
|
onSubmit() {
|
2020-10-21 08:15:12 -04:00
|
|
|
|
// Do not submit if message is empty
|
|
|
|
|
|
if (this.localMessage.trim() === '') {
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-10-04 09:33:17 -04:00
|
|
|
|
if (this.editor) {
|
2020-10-21 08:15:12 -04:00
|
|
|
|
this.onNewComment(this.localMessage.trim())
|
2020-10-21 10:30:34 -04:00
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
// Focus the editor again
|
|
|
|
|
|
this.$refs.editor.$el.focus()
|
|
|
|
|
|
})
|
2020-10-04 09:33:17 -04:00
|
|
|
|
return
|
|
|
|
|
|
}
|
2020-10-21 08:15:12 -04:00
|
|
|
|
this.onEditComment(this.localMessage.trim())
|
2020-10-04 09:33:17 -04:00
|
|
|
|
},
|
2020-10-21 08:53:56 -04:00
|
|
|
|
|
|
|
|
|
|
onExpand() {
|
|
|
|
|
|
this.expanded = true
|
|
|
|
|
|
},
|
2020-10-04 09:33:17 -04:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
2021-12-01 16:46:01 -05:00
|
|
|
|
@use "sass:math";
|
|
|
|
|
|
|
2020-10-04 09:33:17 -04:00
|
|
|
|
$comment-padding: 10px;
|
|
|
|
|
|
|
|
|
|
|
|
.comment {
|
2022-12-22 11:03:19 -05:00
|
|
|
|
display: flex;
|
2023-11-14 12:30:12 -05:00
|
|
|
|
gap: 8px;
|
2022-12-22 11:03:19 -05:00
|
|
|
|
padding: 5px $comment-padding;
|
|
|
|
|
|
|
|
|
|
|
|
&__side {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: flex-start;
|
2023-11-15 00:49:09 -05:00
|
|
|
|
padding-top: 6px;
|
2022-12-22 11:03:19 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
&__body {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-grow: 1;
|
|
|
|
|
|
flex-direction: column;
|
2025-09-18 20:19:34 -04:00
|
|
|
|
container-type: inline-size;
|
2022-12-22 11:03:19 -05:00
|
|
|
|
}
|
2020-10-04 09:33:17 -04:00
|
|
|
|
|
|
|
|
|
|
&__header {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
min-height: 44px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
&__actions {
|
2023-12-19 13:12:52 -05:00
|
|
|
|
margin-inline-start: $comment-padding !important;
|
2020-10-04 09:33:17 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
&__author {
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
|
color: var(--color-text-maxcontrast);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
&_loading,
|
|
|
|
|
|
&__timestamp {
|
2023-12-19 13:12:52 -05:00
|
|
|
|
margin-inline-start: auto;
|
|
|
|
|
|
text-align: end;
|
2022-12-22 11:03:19 -05:00
|
|
|
|
white-space: nowrap;
|
2020-10-04 09:33:17 -04:00
|
|
|
|
color: var(--color-text-maxcontrast);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-09-06 08:58:24 -04:00
|
|
|
|
&__editor-group {
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
&__editor-description {
|
|
|
|
|
|
color: var(--color-text-maxcontrast);
|
|
|
|
|
|
padding-block: var(--default-grid-baseline);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-10-04 09:33:17 -04:00
|
|
|
|
&__submit {
|
2022-07-19 14:04:00 -04:00
|
|
|
|
position: absolute !important;
|
2024-07-17 19:13:18 -04:00
|
|
|
|
bottom: 5px;
|
2023-12-19 13:12:52 -05:00
|
|
|
|
inset-inline-end: 0;
|
2020-10-04 09:33:17 -04:00
|
|
|
|
}
|
2020-10-21 08:31:22 -04:00
|
|
|
|
|
|
|
|
|
|
&__message {
|
|
|
|
|
|
white-space: pre-wrap;
|
2025-05-31 10:02:08 -04:00
|
|
|
|
word-break: normal;
|
2025-11-28 04:51:13 -05:00
|
|
|
|
max-height: 200px;
|
|
|
|
|
|
overflow: auto;
|
|
|
|
|
|
scrollbar-gutter: stable;
|
|
|
|
|
|
scrollbar-width: thin;
|
2022-12-22 11:03:19 -05:00
|
|
|
|
margin-top: -6px;
|
2020-10-21 08:53:56 -04:00
|
|
|
|
&--expanded {
|
|
|
|
|
|
max-height: none;
|
|
|
|
|
|
overflow: visible;
|
|
|
|
|
|
}
|
2025-11-28 04:51:13 -05:00
|
|
|
|
:deep(img) {
|
|
|
|
|
|
max-width: 100%;
|
|
|
|
|
|
height: auto;
|
|
|
|
|
|
}
|
2020-10-21 08:31:22 -04:00
|
|
|
|
}
|
2020-10-04 09:33:17 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.rich-contenteditable__input {
|
2020-10-21 08:31:22 -04:00
|
|
|
|
min-height: 44px;
|
2020-10-04 09:33:17 -04:00
|
|
|
|
margin: 0;
|
|
|
|
|
|
padding: $comment-padding;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
</style>
|