Improve detailed status action buttons
This commit is contained in:
parent
1c711ed123
commit
6e13cb8c9b
5 changed files with 125 additions and 88 deletions
|
@ -64,6 +64,7 @@ export default class IconButton extends React.PureComponent {
|
||||||
pressed,
|
pressed,
|
||||||
tabIndex,
|
tabIndex,
|
||||||
title,
|
title,
|
||||||
|
text,
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
const classes = classNames(className, 'icon-button', {
|
const classes = classNames(className, 'icon-button', {
|
||||||
|
@ -84,11 +85,13 @@ export default class IconButton extends React.PureComponent {
|
||||||
title={title}
|
title={title}
|
||||||
className={classes}
|
className={classes}
|
||||||
onClick={this.handleClick}
|
onClick={this.handleClick}
|
||||||
style={style}
|
|
||||||
tabIndex={tabIndex}
|
tabIndex={tabIndex}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
>
|
>
|
||||||
<Icon id={icon} fixedWidth aria-hidden='true' />
|
<div style={style}>
|
||||||
|
<Icon id={icon} fixedWidth aria-hidden='true' />
|
||||||
|
</div>
|
||||||
|
{text && <span className='icon_button__text'>{text}</span>}
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -103,11 +106,13 @@ export default class IconButton extends React.PureComponent {
|
||||||
title={title}
|
title={title}
|
||||||
className={classes}
|
className={classes}
|
||||||
onClick={this.handleClick}
|
onClick={this.handleClick}
|
||||||
style={style}
|
|
||||||
tabIndex={tabIndex}
|
tabIndex={tabIndex}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
>
|
>
|
||||||
<Icon id={icon} style={{ transform: `rotate(${rotate}deg)` }} fixedWidth aria-hidden='true' />
|
<div style={style}>
|
||||||
|
<Icon id={icon} style={{ transform: `rotate(${rotate}deg)` }} fixedWidth aria-hidden='true' />
|
||||||
|
</div>
|
||||||
|
{text && <span className='icon_button__text'>{text}</span>}
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
</Motion>
|
</Motion>
|
||||||
|
|
|
@ -247,12 +247,22 @@ class ActionBar extends React.PureComponent {
|
||||||
return (
|
return (
|
||||||
<div className='detailed-status__action-bar'>
|
<div className='detailed-status__action-bar'>
|
||||||
<div className='detailed-status__button'>
|
<div className='detailed-status__button'>
|
||||||
<IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon} onClick={this.handleReplyClick} />
|
<IconButton
|
||||||
Reply
|
title={intl.formatMessage(messages.reply)}
|
||||||
|
icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon}
|
||||||
|
onClick={this.handleReplyClick}
|
||||||
|
text={intl.formatMessage(messages.reply)}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className='detailed-status__button'>
|
<div className='detailed-status__button'>
|
||||||
<IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} />
|
<IconButton
|
||||||
Boost
|
disabled={reblog_disabled}
|
||||||
|
active={status.get('reblogged')}
|
||||||
|
title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)}
|
||||||
|
icon={reblogIcon}
|
||||||
|
onClick={this.handleReblogClick}
|
||||||
|
text='Boost'
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className='detailed-status__button detailed-status__button--favourite'>
|
<div className='detailed-status__button detailed-status__button--favourite'>
|
||||||
<div className='emoji-react-selector'>
|
<div className='emoji-react-selector'>
|
||||||
|
@ -264,8 +274,14 @@ class ActionBar extends React.PureComponent {
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
<IconButton className='star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='thumbs-up' onClick={this.handleFavouriteClick} />
|
<IconButton
|
||||||
Like
|
className='star-icon'
|
||||||
|
animate active={status.get('favourited')}
|
||||||
|
title={intl.formatMessage(messages.favourite)}
|
||||||
|
icon='thumbs-up'
|
||||||
|
onClick={this.handleFavouriteClick}
|
||||||
|
text='Like'
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
{shareButton}
|
{shareButton}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
@import 'gabsocial/components/sidebar-menu';
|
@import 'gabsocial/components/sidebar-menu';
|
||||||
@import 'gabsocial/components/hotkeys-modal';
|
@import 'gabsocial/components/hotkeys-modal';
|
||||||
@import 'gabsocial/components/emoji-reacts';
|
@import 'gabsocial/components/emoji-reacts';
|
||||||
|
@import 'gabsocial/components/detailed-status';
|
||||||
|
|
||||||
@import 'gabsocial/polls';
|
@import 'gabsocial/polls';
|
||||||
@import 'gabsocial/introduction';
|
@import 'gabsocial/introduction';
|
||||||
|
|
|
@ -119,7 +119,7 @@
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
color: $gab-secondary-text;
|
color: $gab-secondary-text;
|
||||||
border: none;
|
border: 0;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: color 100ms ease-in;
|
transition: color 100ms ease-in;
|
||||||
|
@ -718,83 +718,6 @@
|
||||||
width: 23.15px;
|
width: 23.15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.detailed-status__action-bar-dropdown {
|
|
||||||
flex: 1 1 auto;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detailed-status {
|
|
||||||
background: lighten($ui-base-color, 4%);
|
|
||||||
padding: 14px 10px;
|
|
||||||
|
|
||||||
&--flex {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: flex-start;
|
|
||||||
|
|
||||||
.status__content,
|
|
||||||
.detailed-status__meta {
|
|
||||||
flex: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.status__content {
|
|
||||||
font-size: 19px;
|
|
||||||
line-height: 24px;
|
|
||||||
|
|
||||||
.emojione {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: -1px 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status__content__spoiler-link {
|
|
||||||
line-height: 24px;
|
|
||||||
margin: -1px 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.video-player {
|
|
||||||
margin-top: 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.detailed-status__meta {
|
|
||||||
margin-top: 15px;
|
|
||||||
color: $dark-text-color;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 18px;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detailed-status__action-bar {
|
|
||||||
background: lighten($ui-base-color, 4%);
|
|
||||||
border-top: 1px solid lighten($ui-base-color, 8%);
|
|
||||||
border-bottom: 1px solid lighten($ui-base-color, 8%);
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
padding: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detailed-status__link {
|
|
||||||
color: $action-button-color;
|
|
||||||
cursor: pointer;
|
|
||||||
text-decoration: none;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detailed-status__favorites,
|
|
||||||
.detailed-status__reblogs {
|
|
||||||
display: inline-block;
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 12px;
|
|
||||||
margin-left: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.reply-indicator__content {
|
.reply-indicator__content {
|
||||||
color: $gab-default-text-light;
|
color: $gab-default-text-light;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
|
92
app/styles/gabsocial/components/detailed-status.scss
Normal file
92
app/styles/gabsocial/components/detailed-status.scss
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
.detailed-status__action-bar-dropdown {
|
||||||
|
flex: 1 1 auto;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detailed-status {
|
||||||
|
background: lighten($ui-base-color, 4%);
|
||||||
|
padding: 14px 10px;
|
||||||
|
|
||||||
|
&--flex {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: flex-start;
|
||||||
|
|
||||||
|
.status__content,
|
||||||
|
.detailed-status__meta {
|
||||||
|
flex: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.status__content {
|
||||||
|
font-size: 19px;
|
||||||
|
line-height: 24px;
|
||||||
|
|
||||||
|
.emojione {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin: -1px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status__content__spoiler-link {
|
||||||
|
line-height: 24px;
|
||||||
|
margin: -1px 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-player {
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.detailed-status__meta {
|
||||||
|
margin-top: 15px;
|
||||||
|
color: $dark-text-color;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 18px;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detailed-status__action-bar {
|
||||||
|
background: lighten($ui-base-color, 4%);
|
||||||
|
border-top: 1px solid lighten($ui-base-color, 8%);
|
||||||
|
border-bottom: 1px solid lighten($ui-base-color, 8%);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detailed-status__link {
|
||||||
|
color: $action-button-color;
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detailed-status__favorites,
|
||||||
|
.detailed-status__reblogs {
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-left: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detailed-status__button {
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 10px;
|
||||||
|
|
||||||
|
.icon-button {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.icon_button__text {
|
||||||
|
font-size: 14px;
|
||||||
|
padding-left: 3px;
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue