diff --git a/components/ChecklistItem/Heading.js b/components/ChecklistItem/Heading.js index cadd92e..77c9fb5 100644 --- a/components/ChecklistItem/Heading.js +++ b/components/ChecklistItem/Heading.js @@ -1,16 +1,22 @@ // @flow import React from 'react'; -import { Title, Description } from './style'; +import { Title, Description, Uncollapse } from './style'; import type { ChecklistResource } from '../../types'; type Props = { resource: ChecklistResource, isCollapsed: boolean, + handleCollapse: Function, }; -export const Heading = ({ resource, isCollapsed }: Props) => ( +export const Heading = ({ resource, isCollapsed, handleCollapse }: Props) => ( - {resource.title} + + {resource.title} + <Uncollapse onClick={handleCollapse}> + {isCollapsed ? 'Show details' : 'Hide details'} + </Uncollapse> + {!isCollapsed && } ); diff --git a/components/ChecklistItem/index.js b/components/ChecklistItem/index.js index 73f6bbd..58b2a77 100644 --- a/components/ChecklistItem/index.js +++ b/components/ChecklistItem/index.js @@ -43,9 +43,12 @@ class ChecklistItem extends React.Component { const { isChecked, isCollapsed } = this.state; const { resource } = this.props; setCheckedStatusById(resource.id, !isChecked); - return this.setState({ isChecked: !isChecked, isCollapsed: !isCollapsed }); + return this.setState({ isChecked: !isChecked, isCollapsed: !isChecked }); }; + uncollapse = () => + this.setState(state => ({ isCollapsed: !state.isCollapsed })); + render() { const { isChecked, isLoading, isCollapsed } = this.state; const { resource } = this.props; @@ -61,7 +64,11 @@ class ChecklistItem extends React.Component { - + {!isCollapsed && resource.apps && ( diff --git a/components/ChecklistItem/style.js b/components/ChecklistItem/style.js index 03b4e52..86aee3e 100644 --- a/components/ChecklistItem/style.js +++ b/components/ChecklistItem/style.js @@ -22,6 +22,8 @@ export const Title = styled.h3` font-size: 18px; font-weight: 500; color: ${theme.text.default}; + display: flex; + justify-content: space-between; `; export const Description = styled(Markdown)` @@ -103,7 +105,7 @@ export const Checkbox = styled.span` export const ResourceContent = styled.div` display: flex; flex-direction: column; - justify-content: ${props => (props.isCollapsed ? 'center' : 'flex-start')}; + margin-top: 2px; padding-left: 16px; width: 100%; @@ -304,3 +306,21 @@ export const Divider = styled.div` display: none; } `; + +export const Uncollapse = styled.span` + background: ${theme.bg.wash}; + border-radius: 20px; + padding: 8px 16px; + font-size: 15px; + color: ${theme.text.tertiary}; + cursor: pointer; + line-height: 1; + display: flex; + align-items: center; + margin-right: 8px; + + &:hover { + color: ${theme.text.default}; + background: ${tint(theme.bg.wash, -4)}; + } +`;