PLT-2321 Move the toggle icon next to the link being previewed (#3071)

* PLT-2321 Move the toggle icon next to the link being previewed
only applicable to one-line messages started with link

* remove useless "Youtube" header when no title is available

* allow breaking long links instead of toggle

* simplify "/" to "/<wbr />" replacing
fix empty post without additional content body

* discard buggy "simplification"
Этот коммит содержится в:
samogot
2016-05-28 02:31:02 +03:00
коммит произвёл Harrison Healey
родитель c7615920df
Коммит e1bebb2d77
6 изменённых файлов: 81 добавлений и 38 удалений

Просмотреть файл

@@ -136,7 +136,6 @@ export default class PostBody extends React.Component {
}
let message;
let additionalContent = null;
if (this.props.post.state === Constants.POST_DELETED) {
message = (
<FormattedMessage
@@ -151,9 +150,28 @@ export default class PostBody extends React.Component {
dangerouslySetInnerHTML={{__html: TextFormatting.formatText(this.props.post.message)}}
/>
);
}
additionalContent = (
<PostBodyAdditionalContent post={this.props.post}/>
let messageWrapper = (
<div
key={`${post.id}_message`}
id={`${post.id}_message`}
className={postClass}
>
{loading}
{message}
</div>
);
let messageWithAdditionalContent;
if (this.props.post.state === Constants.POST_DELETED) {
messageWithAdditionalContent = messageWrapper;
} else {
messageWithAdditionalContent = (
<PostBodyAdditionalContent
post={this.props.post}
message={messageWrapper}
/>
);
}
@@ -161,16 +179,8 @@ export default class PostBody extends React.Component {
<div>
{comment}
<div className='post__body'>
<div
key={`${post.id}_message`}
id={`${post.id}_message`}
className={postClass}
>
{loading}
{message}
</div>
{messageWithAdditionalContent}
{fileAttachmentHolder}
{additionalContent}
</div>
</div>
);

Просмотреть файл

@@ -117,21 +117,31 @@ export default class PostBodyAdditionalContent extends React.Component {
const generateEmbed = this.generateEmbed();
if (generateEmbed) {
let toggle;
let messageWithToggle = [];
if (Utils.isFeatureEnabled(Constants.PRE_RELEASE_FEATURES.EMBED_TOGGLE)) {
toggle = (
// if message has only one line and starts with a link place toggle in this only line
// else - place it in new line between message and embed
const prependToggle = (/^\s*https?:\/\/.*$/).test(this.props.post.message);
messageWithToggle.push(
<a
className='post__embed-visibility'
className={`post__embed-visibility ${prependToggle ? 'pull-left' : ''}`}
data-expanded={this.state.embedVisible}
aria-label='Toggle Embed Visibility'
onClick={this.toggleEmbedVisibility}
/>
);
if (prependToggle) {
messageWithToggle.push(this.props.message);
} else {
messageWithToggle.unshift(this.props.message);
}
} else {
messageWithToggle.push(this.props.message);
}
return (
<div>
{toggle}
{messageWithToggle}
<div
className='post__embed-container'
hidden={!this.state.embedVisible}
@@ -142,10 +152,11 @@ export default class PostBodyAdditionalContent extends React.Component {
);
}
return null;
return this.props.message;
}
}
PostBodyAdditionalContent.propTypes = {
post: React.PropTypes.object.isRequired
post: React.PropTypes.object.isRequired,
message: React.PropTypes.element.isRequired
};