mirror of
https://github.com/wassname/talk.git
synced 2026-07-06 02:31:45 +08:00
Merge branch 'master' into feature/talk-plugin-toxic-comments
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import React from 'react';
|
||||
import React, {Children} from 'react';
|
||||
import {connect} from 'react-redux';
|
||||
import PropTypes from 'prop-types';
|
||||
import omit from 'lodash/omit';
|
||||
@@ -28,18 +28,13 @@ class IfSlotIsEmpty extends React.Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
const {className, component: Component = 'div', children} = this.props;
|
||||
return (
|
||||
<Component className={className}>
|
||||
{this.isSlotEmpty() ? children : null}
|
||||
</Component>
|
||||
);
|
||||
const {children} = this.props;
|
||||
return this.isSlotEmpty() ? Children.only(children) : null;
|
||||
}
|
||||
}
|
||||
|
||||
IfSlotIsEmpty.propTypes = {
|
||||
slot: PropTypes.string,
|
||||
className: PropTypes.string,
|
||||
};
|
||||
|
||||
const mapStateToProps = (state) => ({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React from 'react';
|
||||
import React, {Children} from 'react';
|
||||
import {connect} from 'react-redux';
|
||||
import PropTypes from 'prop-types';
|
||||
import omit from 'lodash/omit';
|
||||
@@ -28,18 +28,13 @@ class IfSlotIsNotEmpty extends React.Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
const {className, component: Component = 'div', children} = this.props;
|
||||
return (
|
||||
<Component className={className}>
|
||||
{this.isSlotEmpty() ? null : children}
|
||||
</Component>
|
||||
);
|
||||
const {children} = this.props;
|
||||
return this.isSlotEmpty() ? null : Children.only(children);
|
||||
}
|
||||
}
|
||||
|
||||
IfSlotIsNotEmpty.propTypes = {
|
||||
slot: PropTypes.string,
|
||||
className: PropTypes.string,
|
||||
};
|
||||
|
||||
const mapStateToProps = (state) => ({
|
||||
|
||||
@@ -4,6 +4,7 @@ import {bindActionCreators} from 'redux';
|
||||
import {sortOrderSelector, sortBySelector} from 'plugin-api/beta/client/selectors/stream';
|
||||
import {setSort} from 'plugin-api/beta/client/actions/stream';
|
||||
import hoistStatics from 'recompose/hoistStatics';
|
||||
import {closeMenu} from 'plugins/talk-plugin-viewing-options/client/actions';
|
||||
|
||||
const mapStateToProps = (state) => ({
|
||||
sortOrder: sortOrderSelector(state),
|
||||
@@ -13,7 +14,8 @@ const mapStateToProps = (state) => ({
|
||||
const mapDispatchToProps = (dispatch) =>
|
||||
bindActionCreators(
|
||||
{
|
||||
setSort
|
||||
setSort,
|
||||
closeMenu,
|
||||
},
|
||||
dispatch
|
||||
);
|
||||
@@ -29,6 +31,7 @@ const mapDispatchToProps = (dispatch) =>
|
||||
export default ({sortBy = 'created_at', sortOrder = 'DESC', label}) => hoistStatics((WrappedComponent) => {
|
||||
class WithSortOption extends React.Component {
|
||||
setSort = () => {
|
||||
this.props.closeMenu();
|
||||
this.props.setSort({sortBy, sortOrder});
|
||||
}
|
||||
|
||||
|
||||
@@ -4,11 +4,7 @@
|
||||
"talk-plugin-respect",
|
||||
"talk-plugin-offtopic",
|
||||
"talk-plugin-facebook-auth",
|
||||
"talk-plugin-featured-comments",
|
||||
"talk-plugin-sort-newest",
|
||||
"talk-plugin-sort-oldest",
|
||||
"talk-plugin-sort-most-liked",
|
||||
"talk-plugin-sort-most-replied"
|
||||
"talk-plugin-featured-comments"
|
||||
],
|
||||
"client": [
|
||||
"talk-plugin-respect",
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import React from 'react';
|
||||
import styles from './Category.css';
|
||||
import {Slot, IfSlotIsNotEmpty} from 'plugin-api/beta/client/components';
|
||||
import {Slot} from 'plugin-api/beta/client/components';
|
||||
|
||||
const childFactory = (child) => <li className={styles.listItem} key={child.key}>{child}</li>;
|
||||
|
||||
const ViewingOptions = ({slot, title, data, asset, root}) => {
|
||||
return (
|
||||
<IfSlotIsNotEmpty slot={slot} className={styles.root}>
|
||||
<div className={styles.root}>
|
||||
<div className={styles.title}>{title}</div>
|
||||
<Slot
|
||||
fill={slot}
|
||||
@@ -16,7 +16,7 @@ const ViewingOptions = ({slot, title, data, asset, root}) => {
|
||||
data={data}
|
||||
queryData={{asset, root}}
|
||||
/>
|
||||
</IfSlotIsNotEmpty>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import React from 'react';
|
||||
import cn from 'classnames';
|
||||
import styles from './Menu.css';
|
||||
import {capitalize} from 'plugin-api/beta/client/utils';
|
||||
import {IfSlotIsNotEmpty} from 'plugin-api/beta/client/components';
|
||||
import Category from './Category';
|
||||
import {t} from 'plugin-api/beta/client/services';
|
||||
|
||||
@@ -16,11 +17,12 @@ class Menu extends React.Component {
|
||||
<div className={cn([styles.menu, 'talk-plugin-viewing-options-menu'])}>
|
||||
{
|
||||
Object.keys(this.categories).map((category) =>
|
||||
<Category
|
||||
key={category}
|
||||
slot={`viewingOptions${capitalize(category)}`}
|
||||
title={this.categories[category]}
|
||||
/>
|
||||
<IfSlotIsNotEmpty slot={`viewingOptions${capitalize(category)}`} key={category}>
|
||||
<Category
|
||||
slot={`viewingOptions${capitalize(category)}`}
|
||||
title={this.categories[category]}
|
||||
/>
|
||||
</IfSlotIsNotEmpty>
|
||||
)
|
||||
}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user