textElement.tsx
TLDR
This file, located at src/components/content/textElement.tsx
, is a React component that represents a text element in the application. It is used to render a MarkdownEditor for editing text content. The component also registers itself in the content registry.
Methods
There are no methods defined in this file.
Classes
There are no classes defined in this file.
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React from 'react'
import {useIntl} from 'react-intl'
import {ContentBlock} from '../../blocks/contentBlock'
import {createTextBlock} from '../../blocks/textBlock'
import mutator from '../../mutator'
import TextIcon from '../../widgets/icons/text'
import {MarkdownEditor} from '../markdownEditor'
import {contentRegistry} from './contentRegistry'
type Props = {
block: ContentBlock
readonly: boolean
}
const TextElement = (props: Props): JSX.Element => {
const {block, readonly} = props
const intl = useIntl()
return (
<MarkdownEditor
text={block.title}
placeholderText={intl.formatMessage({id: 'ContentBlock.editText', defaultMessage: 'Edit text...'})}
onBlur={(text) => {
if (text !== block.title) {
mutator.changeBlockTitle(block.boardId, block.id, block.title, text, intl.formatMessage({id: 'ContentBlock.editCardText', defaultMessage: 'edit card text'}))
}
}}
readonly={readonly}
/>
)
}
contentRegistry.registerContentType({
type: 'text',
getDisplayText: (intl) => intl.formatMessage({id: 'ContentBlock.text', defaultMessage: 'text'}),
getIcon: () => <TextIcon/>,
createBlock: async () => {
return createTextBlock()
},
createComponent: (block, readonly) => {
return (
<TextElement
block={block}
readonly={readonly}
/>
)
},
})
export default React.memo(TextElement)