diff --git a/src/components/common/tag.jsx b/src/components/common/tag.jsx
index 77098ac33..8f9cf659a 100644
--- a/src/components/common/tag.jsx
+++ b/src/components/common/tag.jsx
@@ -1,6 +1,8 @@
-import React from 'react'
+import React, { Component } from 'react'
import PropTypes from 'prop-types'
import styled, { withTheme } from 'styled-components'
+import { Media } from '../../utils/css-utils'
+import { DownArrowIcon } from '../icons'
export const Tag = styled.li`
font-size: 1.6rem;
@@ -25,6 +27,7 @@ const TagListLabel = styled.span`
`
const tagColors = ['lipstick', 'vividPurple', 'rouge', 'warmPurple']
+const morePlaqueColor = '#545454'
const Tags = styled.ul`
list-style: none;
@@ -33,11 +36,71 @@ const Tags = styled.ul`
padding: 0;
`
+export class TagListCutter extends Component {
+ constructor(props) {
+ super(props)
+ this.state = { allOpen: false }
+ }
+ handleChange() {
+ this.setState({ allOpen: !this.state.allOpen })
+ }
+ render() {
+ const { tagNumberDesktop, tagNumberMobile, tags } = this.props
+
+ return (
+
+ {isMobile => {
+ let currentNumber = isMobile ? tagNumberMobile : tagNumberDesktop
+ return currentNumber && currentNumber < tags.length
+ ? this.props.children(
+ this.state.allOpen ? tags : tags.slice(0, currentNumber),
+ ToogleLabel(() => this.handleChange(), this.state.allOpen),
+ MoreTag(() => this.handleChange(), this.state.allOpen),
+ )
+ : this.props.children(tags)
+ }}
+
+ )
+ }
+}
+
+const ToogleLabel = (onLableClick, allOpen) => (label, theme) => (
+
+ {label}
+
+
+
+
+)
+
+const ToogleButton = styled.div`
+ display: flex;
+ transform: ${props => (props.down ? 'rotate(0deg)' : 'rotate(180deg)')};
+ cursor: pointer;
+`
+
+const MoreTag = (onLableClick, allOpen) => () =>
+ allOpen ? null : (
+ onLableClick()}>
+ more tags...
+
+ )
+
export const TagList = withTheme(
- ({ tags, selectedTags, label, theme, onTagClick }) => (
+ ({
+ tags,
+ selectedTags,
+ label,
+ theme,
+ onTagClick,
+ LabelComponent = label => {label},
+ MoreTag = () => null,
+ }) => (
- {label && {label}}
-
+ {label && LabelComponent(label, theme)}
{tags &&
tags.length > 0 && (
@@ -50,6 +113,7 @@ export const TagList = withTheme(
#{tag}
))}
+ {MoreTag()}
)}
@@ -67,3 +131,14 @@ TagList.defaultProps = {
selectedTags: [],
onTagClick: () => null,
}
+
+TagListCutter.propTypes = {
+ tags: PropTypes.arrayOf(String).isRequired,
+ tagNumberDesktop: PropTypes.number,
+ tagNumberMobile: PropTypes.number,
+}
+
+TagListCutter.defaultProps = {
+ tagNumberDesktop: 0,
+ tagNumberMobile: 0,
+}
diff --git a/src/components/events-page/events-feed.jsx b/src/components/events-page/events-feed.jsx
index 695395074..2224569dd 100644
--- a/src/components/events-page/events-feed.jsx
+++ b/src/components/events-page/events-feed.jsx
@@ -5,7 +5,7 @@ import { chain, difference, either, isEmpty, pipe, uniq } from 'ramda'
import BlockHeader from '../common/block-header'
import MainContainer from '../common/main-container'
-import { TagList } from '../common/tag'
+import { TagList, TagListCutter } from '../common/tag'
import EventList from './event-list'
import { eventTags } from '../../utils/selectors'
@@ -20,12 +20,23 @@ let EventsFeed = ({
Events
{(filteredEventsTags.length > 0 || !selectedTags.length) && (
- 0 ? filteredEventsTags : selectedTags}
- selectedTags={selectedTags}
- onTagClick={toggleTag}
- />
+ 0 ? filteredEventsTags : selectedTags
+ }>
+ {(visibleTags, ToogleLable, MoreTag) => (
+
+ )}
+
)}
{filteredEvents && (
diff --git a/src/components/icons/down-arrow-icon.jsx b/src/components/icons/down-arrow-icon.jsx
new file mode 100644
index 000000000..7aff2723e
--- /dev/null
+++ b/src/components/icons/down-arrow-icon.jsx
@@ -0,0 +1,17 @@
+import React from 'react'
+
+const DownArrowIcon = props => {
+ return (
+
+ )
+}
+
+export default DownArrowIcon
diff --git a/src/components/icons/index.js b/src/components/icons/index.js
index 2257891cc..dc375935b 100644
--- a/src/components/icons/index.js
+++ b/src/components/icons/index.js
@@ -8,3 +8,4 @@ export { default as PadlockIcon } from './padlock-icon'
export { default as WebpurpleLogoIcon } from './webpurple-logo-icon'
export { default as WatchIcon } from './watch'
export { default as DownloadIcon } from './download'
+export { default as DownArrowIcon } from './down-arrow-icon'