Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

List styles more consistent #1989

Merged
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
[
{
"id": "createMedia.media.media",
"description": "Header for the claim media area",
"defaultMessage": "Media"
},
{
"id": "createMedia.mediaInput",
"description": "Placeholder text for the media URL input",
Expand Down
14 changes: 4 additions & 10 deletions src/app/components/article/ArticleFilters.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import React from 'react';
import PropTypes from 'prop-types';
import { FormattedMessage, injectIntl, intlShape, defineMessages } from 'react-intl';
import cx from 'classnames/bind';
import Divider from '@material-ui/core/Divider';
import ButtonMain from '../cds/buttons-checkboxes-chips/ButtonMain';
import AddFilterMenu from '../search/AddFilterMenu';
import MultiSelectFilter from '../search/MultiSelectFilter';
Expand All @@ -15,7 +14,6 @@ import HowToRegIcon from '../../icons/person_check.svg';
import DescriptionIcon from '../../icons/description.svg';
import LabelIcon from '../../icons/label.svg';
import ReportIcon from '../../icons/playlist_add_check.svg';
import styles from '../search/SearchResults.module.css';
import searchStyles from '../search/search.module.css';

const messages = defineMessages({
Expand All @@ -38,7 +36,6 @@ const ArticleFilters = ({
currentFilters,
teamSlug,
statuses,
className,
extra,
intl,
}) => {
Expand Down Expand Up @@ -92,7 +89,7 @@ const ArticleFilters = ({
);

return (
<div className={cx(styles['search-results-top'], className)}>
<>
{ extra ? <div className={searchStyles['filters-wrapper']}>{extra}</div> : null }
<div className={searchStyles['filters-wrapper']}>
{Object.keys(filters).map((filter, i) => {
Expand Down Expand Up @@ -260,8 +257,7 @@ const ArticleFilters = ({
onSelect={handleAddFilter}
/>
{ Object.keys(filters).length > 1 && ( // Filter by article type is fixed
<>
<Divider orientation="vertical" flexItem style={{ margin: '0 8px' }} />
<div className={cx(searchStyles['filters-buttons-wrapper'], searchStyles['filters-buttons-wrapper-visible'])}>
<ButtonMain
className="int-search-fields__button--apply-articlefilter"
variant="contained"
Expand All @@ -288,17 +284,16 @@ const ArticleFilters = ({
id: 'search-fields__clear-button',
}}
/>
</>
</div>
)}
</div>
</div>
</>
);
};

ArticleFilters.defaultProps = {
filterOptions: [],
currentFilters: {},
className: '',
extra: null,
};

Expand All @@ -312,7 +307,6 @@ ArticleFilters.propTypes = {
id: PropTypes.string.isRequired,
label: PropTypes.string.isRequired,
}).isRequired).isRequired,
className: PropTypes.string,
extra: PropTypes.node,
intl: intlShape.isRequired,
};
Expand Down
18 changes: 9 additions & 9 deletions src/app/components/article/Articles.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,16 @@ import PropTypes from 'prop-types';
import Relay from 'react-relay/classic';
import { QueryRenderer, graphql, commitMutation } from 'react-relay/compat';
import { FormattedMessage } from 'react-intl';
import cx from 'classnames/bind';
import { FlashMessageSetterContext } from '../FlashMessage';
import ErrorBoundary from '../error/ErrorBoundary';
import BlankState from '../layout/BlankState';
import ArticleCard from '../search/SearchResultsCards/ArticleCard';
import searchResultsStyles from '../search/SearchResults.module.css';
import Paginator from '../cds/inputs/Paginator';
import ListSort from '../cds/inputs/ListSort';
import { getStatus } from '../../helpers';
import MediasLoading from '../media/MediasLoading';
import ArticleFilters from './ArticleFilters';
import styles from './Articles.module.css';
import searchResultsStyles from '../search/SearchResults.module.css';

const pageSize = 50;

Expand Down Expand Up @@ -93,8 +91,11 @@ const ArticlesComponent = ({

return (
<React.Fragment>
<div className={cx(searchResultsStyles['search-results-header'], styles.articlesHeader)}>
<div className={searchResultsStyles['search-results-header']}>
<div className={searchResultsStyles.searchResultsTitleWrapper}>
<div className={searchResultsStyles.searchHeaderSubtitle}>
&nbsp;
</div>
<div className={searchResultsStyles.searchHeaderTitle}>
<h6>
{icon}
Expand All @@ -103,20 +104,19 @@ const ArticlesComponent = ({
</div>
</div>
</div>
<div className={cx(searchResultsStyles['search-results-wrapper'], styles.articlesFilters)}>
<div className={searchResultsStyles['search-results-top']}>
<ArticleFilters
type={type}
teamSlug={teamSlug}
filterOptions={filterOptions}
currentFilters={{ ...filters, article_type: type }}
statuses={statuses.statuses}
className={styles.articleFilterBar}
onSubmit={handleChangeFilters}
/>
</div>
<div className={cx(searchResultsStyles['search-results-wrapper'], styles.articles)}>
<div className={searchResultsStyles['search-results-wrapper']}>
{ articles.length > 0 ?
<div className={styles.articlesToolbar}>
<div className={searchResultsStyles['search-results-toolbar']}>
<ListSort
sort={sort}
sortType={sortType}
Expand Down Expand Up @@ -145,7 +145,7 @@ const ArticlesComponent = ({
: null
}

<div className={styles.articlesList}>
<div className={searchResultsStyles['search-results-scroller']}>
{articles.map((article) => {
let currentStatus = null;
if (article.claim_description?.project_media?.status) {
Expand Down
149 changes: 51 additions & 98 deletions src/app/components/article/Articles.module.css
Original file line number Diff line number Diff line change
@@ -1,111 +1,64 @@
.articles {
display: flex;
flex-direction: column;
overflow: auto;
padding: 0 16px;
padding-right: 0;
}

.articlesHeader {
margin-bottom: 24px;

h6 {
align-items: center;
display: flex;
}
}

.articlesFilters {
border: 0;
overflow: visible;
padding: 16px;
}

.articlesToolbar {
background: var(--color-white-100);
display: flex;
justify-content: space-between;
padding: 16px 0;
position: sticky;
top: 0;
z-index: 0;
}

.articlesList {
display: flex;
flex-direction: column;
gap: 16px;
overflow: auto;
padding-bottom: 16px;
padding-right: 16px;
}

.articleFilterBar {
margin: 0;
padding: 0;
}

.articlesSidebar {
padding: 16px;
}

.articlesSidebarTopBar {
display: flex;
justify-content: flex-end;
}

.articlesSidebarNoArticle {
border: 2px dashed var(--color-gray-88);
color: var(--color-gray-75);
font-style: italic;
margin: 16px 0 32px;
padding: 16px;
text-align: center;
}
.articlesSidebarTopBar {
display: flex;
justify-content: flex-end;
}

.articlesSidebarList {
display: flex;
flex-direction: column;
gap: 10px;
margin-top: 8px;
max-height: 400px;
overflow: auto;
}
.articlesSidebarNoArticle {
border: 2px dashed var(--color-gray-88);
color: var(--color-gray-75);
font-style: italic;
margin: 16px 0 32px;
padding: 16px;
text-align: center;
}

.articlesSidebarCard {
border: 1px solid var(--color-gray-88);
border-radius: 5px;
cursor: pointer;
display: flex;
gap: 3px;
padding: 6px;
.articlesSidebarList {
display: flex;
flex-direction: column;
gap: 10px;
margin-top: 8px;
max-height: 400px;
overflow: auto;
}

&:hover {
border-color: var(--color-blue-54);
border-width: 2px;
padding: 5px;
.articlesSidebarCard {
border: 1px solid var(--color-gray-88);
border-radius: 5px;
cursor: pointer;
display: flex;
gap: 3px;
padding: 6px;

&:hover {
border-color: var(--color-blue-54);
border-width: 2px;
padding: 5px;
}
}
}

.articlesSidebarCardIcon {
color: var(--color-gray-37);
font-size: var(--font-size-subtitle-1);
}
.articlesSidebarCardIcon {
color: var(--color-gray-37);
font-size: var(--font-size-subtitle-1);
}

.articlesSidebarCardTitle {
-webkit-box-orient: vertical;
color: var(--color-gray-15);
display: -webkit-box; /* stylelint-disable-line */
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
}
.articlesSidebarCardTitle {
-webkit-box-orient: vertical;
color: var(--color-gray-15);
display: -webkit-box; /* stylelint-disable-line */
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
}

.articlesSidebarCardCaption {
align-items: center;
display: flex;
.articlesSidebarCardCaption {
align-items: center;
display: flex;

svg {
font-size: var(--font-size-base);
svg {
font-size: var(--font-size-base);
}
}
}
2 changes: 1 addition & 1 deletion src/app/components/drawer/Projects/ProjectsListItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ ProjectsListItem.propTypes = {
onClick: PropTypes.func,
isActive: PropTypes.bool,
className: PropTypes.string,
tooltip: PropTypes.element,
tooltip: PropTypes.node,
};

export default ProjectsListItem;
15 changes: 7 additions & 8 deletions src/app/components/feed/FeedClusters.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
import Relay from 'react-relay/classic';
import { FormattedMessage } from 'react-intl';
import { QueryRenderer, graphql } from 'react-relay/compat';
import cx from 'classnames/bind';
import ClusterCard from '../search/SearchResultsCards/ClusterCard';
import searchResultsStyles from '../search/SearchResults.module.css';
import Paginator from '../cds/inputs/Paginator';
Expand All @@ -15,7 +14,7 @@ import FeedLastClusterizedAt from './FeedLastClusterizedAt';
import FeedTopBar from './FeedTopBar';
import FeedBlankState from './FeedBlankState';
import FeedFilters from './FeedFilters';
import styles from './FeedClusters.module.css';
import searchStyles from '../search/search.module.css';
import MediasLoading from '../media/MediasLoading';

const pageSize = 50;
Expand Down Expand Up @@ -61,7 +60,7 @@ const FeedClustersComponent = ({

return (
<React.Fragment>
<div className={cx(searchResultsStyles['search-results-header'], styles.feedClustersHeader)}>
<div className={searchResultsStyles['search-results-header']}>
<div className={searchResultsStyles.searchResultsTitleWrapper}>
<div className={searchResultsStyles.searchHeaderSubtitle}>
<FormattedMessage id="global.sharedFeed" defaultMessage="Shared Feed" description="Generic Label for the shared feed feature which is a collection of check work spaces contributing content to one place" />
Expand All @@ -79,7 +78,7 @@ const FeedClustersComponent = ({
</div>
</div>
</div>
<div className={cx(searchResultsStyles['search-results-wrapper'], styles.feedClustersFilters)}>
<div className={searchResultsStyles['search-results-top']}>
<FeedTopBar
team={team}
feed={feed}
Expand All @@ -95,13 +94,13 @@ const FeedClustersComponent = ({
filterOptions={['channels', 'range', 'linked_items_count', 'show', 'demand']}
currentFilters={otherFilters}
feedTeam={{ id: feedTeam.id }}
className={styles.feedClustersFilterBar}
className={searchStyles['filters-wrapper']}
disableSave
/>
</div>
<div className={cx(searchResultsStyles['search-results-wrapper'], styles.feedClusters)}>
<div className={searchResultsStyles['search-results-wrapper']}>
{ clusters.length > 0 ?
<div className={styles.feedClustersToolbar}>
<div className={searchResultsStyles['search-results-toolbar']}>
<Paginator
page={page}
pageSize={pageSize}
Expand All @@ -122,7 +121,7 @@ const FeedClustersComponent = ({
: null
}

<div className={styles.feedClustersList}>
<div className={searchResultsStyles['search-results-scroller']}>
{clusters.map((cluster) => {
const { media } = cluster.center;
const channels = cluster.channels.filter(channel => Object.values(CheckChannels.TIPLINE).includes(channel.toString()));
Expand Down
Loading