diff --git a/components/ChecklistItem/Apps.js b/components/ChecklistItem/Apps.js
index 0350197..da0dd46 100644
--- a/components/ChecklistItem/Apps.js
+++ b/components/ChecklistItem/Apps.js
@@ -1,6 +1,7 @@
// @flow
import React from 'react';
-import { AppsContainer, SectionHeading } from './style';
+import { AppsContainer, SectionHeading, ExpandContainer } from './style';
+import { Button } from '../Button';
import type { ChecklistResource } from '../../types';
import { AppRow } from './App';
@@ -8,14 +9,45 @@ type Props = {
resource: ChecklistResource,
};
-export const Apps = ({ resource }: Props) => {
- if (!resource.apps) return null;
- return (
-
- Apps
- {resource.apps.map(app => (
-
- ))}
-
- );
+type State = {
+ overflowExpanded: boolean,
};
+
+export class Apps extends React.Component {
+ state = { overflowExpanded: false };
+
+ expand = () => this.setState({ overflowExpanded: true });
+
+ render() {
+ const { resource } = this.props;
+ const { overflowExpanded } = this.state;
+
+ if (!resource.apps) return null;
+
+ let appList = resource.apps;
+ let overflowAppList;
+ if (appList.length > 3) {
+ overflowAppList = appList.slice(3, appList.length);
+ appList = appList.slice(0, 3);
+ }
+
+ return (
+
+ Apps
+ {appList.map(app => (
+
+ ))}
+
+ {overflowAppList && !overflowExpanded && (
+
+
+
+ )}
+
+ {overflowAppList &&
+ overflowExpanded &&
+ overflowAppList.map(app => )}
+
+ );
+ }
+}
diff --git a/components/ChecklistItem/style.js b/components/ChecklistItem/style.js
index f9f518b..5d8ba91 100644
--- a/components/ChecklistItem/style.js
+++ b/components/ChecklistItem/style.js
@@ -389,3 +389,28 @@ export const LeftBorder = styled.div`
background-image: linear-gradient(to bottom, #a913de, #6ac9ff);
border-radius: 6px 0 0 6px;
`;
+
+export const ExpandContainer = styled.div`
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ position: relative;
+ background: ${theme.bg.wash};
+ border: 1px solid ${tint(theme.bg.wash, -4)};
+ border-radius: 6px;
+ padding: 8px 16px;
+ margin-bottom: -28px;
+ margin-top: 16px;
+
+ @media (max-width: 768px) {
+ margin-bottom: 0;
+ border-left: none;
+ border-right: none;
+ margin-top: -1px;
+ border-radius: 0;
+ margin-left: -24px;
+ margin-right: -16px;
+ width: calc(100% + 40px);
+ }
+`;