import React from 'react'; import { graphql, compose } from 'react-apollo'; import gql from 'graphql-tag'; import pascalCase from 'pascal-case'; import keys from 'lodash.keys'; import { DataCenterIcon, TritonIcon, ServicesIcon } from './components'; import * as Overlays from './containers'; import { Avatar, Header, HeaderRow, HeaderItem, HeaderItemContent, HeaderItemSubContent, HeaderItemIcon, HeaderFlexibleSpaceItem, HeaderDividerItem, HeaderSpace } from './components'; const UpdateHeaderMutation = gql` mutation updateHeader($isOpen: Boolean!, $activePanel: String!) { updateHeader(isOpen: $isOpen, activePanel: $activePanel) @client } `; const GetHeader = gql` { isOpen @client activePanel @client } `; // Needs to be revised // const GetAccount = gql` // { // datacenter { // name // } // account { // login // } // } // `; const Navigation = ({ login, datacenter = true, toggleSectionOpen, isOpen, activePanel }) => (
toggleSectionOpen()}> toggleSectionOpen('services')} active={isOpen && activePanel === 'services'} > Products & Services {datacenter ? ( toggleSectionOpen('datacenter')} active={isOpen && activePanel === 'datacenter'} > Data Center: us-east-1 ) : null} {datacenter ? : null} Account: Raul Millais ) {keys(Overlays).map(panelName => React.createElement(Overlays[panelName], { expanded: isOpen && panelName === pascalCase(activePanel) }) )}
); export default compose( // graphql(GetAccount, { // options: () => ({ // ssr: false // }), // props: ({ data }) => { // const { // account = {}, // datacenter = {}, // loading = false, // error = null // } = data; // const { login } = account; // const { name } = datacenter; // return { login, datacenter: name, loading, error }; // } // }), graphql(GetHeader, { options: () => ({ ssr: false }), props: ({ data }) => { const { isOpen = false, activePanel = '', loading = false, error = null } = data; return { isOpen, activePanel, loading, error }; } }), graphql(UpdateHeaderMutation, { props: ({ mutate, ownProps }) => ({ toggleSectionOpen: (name = '') => { const { isOpen, activePanel } = ownProps; return mutate({ variables: { isOpen: !(isOpen && name === activePanel), activePanel: name } }); } }) }) )(Navigation);