@kiwicom/smart-faq
Version:
94 lines (83 loc) • 3.14 kB
JavaScript
// @flow
import * as React from 'react';
import { withRouter } from 'react-router-dom';
import type { ContextRouter } from 'react-router-dom';
import styled from 'styled-components';
import { defaultTokens } from '@kiwicom/orbit-design-tokens';
import FAQCategoryList from './FAQCategoryList';
import SearchAllFAQs from './SearchAllFAQs';
import { SearchState } from '../../SmartFAQ/context/SearchState';
import type { SearchStateType } from '../../SmartFAQ/context/SearchState';
import SearchBar from './SearchBar';
import { withToken } from '../../SmartFAQ/context/User';
import { BookingState } from '../../SmartFAQ/context/BookingState';
import ScrollableContent from '../../SmartFAQ/common/ScrollableContent';
import { Mobile, Desktop } from '../../SmartFAQ/common/Responsive';
const StaticFAQBody = styled.div`
height: 100%;
padding: ${`${defaultTokens.spaceLarge} ${defaultTokens.spaceXXLarge}`};
@media only screen and (max-width: 900px) {
padding: 0;
}
`;
const StaticFAQWrapper = styled.div`
width: 100%;
height: 100%;
background-color: ${defaultTokens.backgroundBody};
`;
const StaticFAQSearch = styled.div`
@media only screen and (max-width: 900px) {
padding: ${defaultTokens.spaceMedium};
background-color: ${defaultTokens.backgroundBody};
}
@media only screen and (min-width: 901px) {
margin-bottom: ${defaultTokens.spaceLarge};
}
`;
type Props = {|
...ContextRouter,
loginToken: ?string,
simpleToken: ?string,
kwAuthToken: ?string,
|};
const StaticFAQ = (props: Props) => {
const { categoryId: queryParamCategory } = props.match.params;
const categoryId = queryParamCategory ? Number(queryParamCategory) : null;
const isLoggedIn = props.loginToken || props.simpleToken || props.kwAuthToken;
return (
<StaticFAQWrapper>
<SearchState.Consumer>
{({ searchText, isVisible }: SearchStateType) => (
<BookingState.Consumer>
{({ showBooking }) => {
const isSearching = searchText.length > 0;
const showSearchForLoggedOutUser = !isLoggedIn || !showBooking;
return (
<ScrollableContent styles="background-color: #f5f7f9">
<StaticFAQBody id="staticFAQBody">
{!categoryId && isVisible && showSearchForLoggedOutUser && (
<StaticFAQSearch>
<Desktop>
<SearchBar autofocus />
</Desktop>
<Mobile>
<SearchBar />
</Mobile>
</StaticFAQSearch>
)}
{isSearching ? (
<SearchAllFAQs search={searchText} isSidebarVersion />
) : (
<FAQCategoryList categoryId={categoryId} />
)}
</StaticFAQBody>
</ScrollableContent>
);
}}
</BookingState.Consumer>
)}
</SearchState.Consumer>
</StaticFAQWrapper>
);
};
export default withToken(withRouter(StaticFAQ));