commit: 45c9f16f714dd6de15391b5e2ae2bf0d30ef20fb
parent 49bbef1202f483d4e8abc43d00d12551bb25f80f
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Tue, 10 Apr 2018 17:12:10 +0200
Improve load gap styling in web UI (#7100)
Diffstat:
4 files changed, 39 insertions(+), 38 deletions(-)
diff --git a/app/javascript/mastodon/components/load_gap.js b/app/javascript/mastodon/components/load_gap.js
@@ -0,0 +1,33 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { injectIntl, defineMessages } from 'react-intl';
+
+const messages = defineMessages({
+ load_more: { id: 'status.load_more', defaultMessage: 'Load more' },
+});
+
+@injectIntl
+export default class LoadGap extends React.PureComponent {
+
+ static propTypes = {
+ disabled: PropTypes.bool,
+ maxId: PropTypes.string,
+ onClick: PropTypes.func.isRequired,
+ intl: PropTypes.object.isRequired,
+ };
+
+ handleClick = () => {
+ this.props.onClick(this.props.maxId);
+ }
+
+ render () {
+ const { disabled, intl } = this.props;
+
+ return (
+ <button className='load-more load-gap' disabled={disabled} onClick={this.handleClick} aria-label={intl.formatMessage(messages.load_more)}>
+ <i className='fa fa-ellipsis-h' />
+ </button>
+ );
+ }
+
+}
diff --git a/app/javascript/mastodon/components/status_list.js b/app/javascript/mastodon/components/status_list.js
@@ -4,28 +4,10 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
import StatusContainer from '../containers/status_container';
import ImmutablePureComponent from 'react-immutable-pure-component';
-import LoadMore from './load_more';
+import LoadGap from './load_gap';
import ScrollableList from './scrollable_list';
import { FormattedMessage } from 'react-intl';
-class LoadGap extends ImmutablePureComponent {
-
- static propTypes = {
- disabled: PropTypes.bool,
- maxId: PropTypes.string,
- onClick: PropTypes.func.isRequired,
- };
-
- handleClick = () => {
- this.props.onClick(this.props.maxId);
- }
-
- render () {
- return <LoadMore onClick={this.handleClick} disabled={this.props.disabled} />;
- }
-
-}
-
export default class StatusList extends ImmutablePureComponent {
static propTypes = {
diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.js
@@ -13,7 +13,7 @@ import { createSelector } from 'reselect';
import { List as ImmutableList } from 'immutable';
import { debounce } from 'lodash';
import ScrollableList from '../../components/scrollable_list';
-import LoadMore from '../../components/load_more';
+import LoadGap from '../../components/load_gap';
const messages = defineMessages({
title: { id: 'column.notifications', defaultMessage: 'Notifications' },
@@ -24,24 +24,6 @@ const getNotifications = createSelector([
state => state.getIn(['notifications', 'items']),
], (excludedTypes, notifications) => notifications.filterNot(item => item !== null && excludedTypes.includes(item.get('type'))));
-class LoadGap extends React.PureComponent {
-
- static propTypes = {
- disabled: PropTypes.bool,
- maxId: PropTypes.string,
- onClick: PropTypes.func.isRequired,
- };
-
- handleClick = () => {
- this.props.onClick(this.props.maxId);
- }
-
- render () {
- return <LoadMore onClick={this.handleClick} disabled={this.props.disabled} />;
- }
-
-}
-
const mapStateToProps = state => ({
notifications: getNotifications(state),
isLoading: state.getIn(['notifications', 'isLoading'], true),
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
@@ -2455,6 +2455,10 @@ a.status-card {
}
}
+.load-gap {
+ border-bottom: 1px solid lighten($ui-base-color, 8%);
+}
+
.regeneration-indicator {
text-align: center;
font-size: 16px;