import React from "react" import { Main } from "../ui/ui" import { Grid, Row, Col } from "react-flexbox-grid" import { graphql } from "gatsby" import { useLocation } from "@reach/router" import * as queryString from "query-string" import useCategoriesQuery from "../hooks/useCategoriesQuery" import useSiteMetadataQuery from "../hooks/useSiteMetadataQuery" import SEO from "../components/SEO/SEO" import Layout from "../components/Layout/Layout" import Articles from "../components/Articles/Articles" import Categories from "../components/Articles/Categories/Categories" import CategoryItem from "../components/Articles/Categories/CategoryItem" import Search from "../components/Articles/Search/Search" import Offers from "../components/Offers/Offers" import SearchIcon from "../images/search-icon.svg" const ArticlesPage = ({ data: { allMarkdownRemark: edges } }) => { const { categories } = useCategoriesQuery() const { siteMetadata: { options: { articles: { onPage }, }, }, } = useSiteMetadataQuery() const { search } = useLocation() let [limit, setLimit] = React.useState(onPage) const [filtredArticles, setFiltredArticles] = React.useState([]) const [query, setQuery] = React.useState( queryString.parse(search).search || "" ) const allArticles = edges const filterArticles = React.useCallback( arr => { return arr.filter( ({ node: { frontmatter } }) => frontmatter.title .toLowerCase() .includes(query.toLowerCase().trim()) || frontmatter.description .toLowerCase() .includes(query.toLowerCase().trim()) || frontmatter.category .toLowerCase() .includes(query.toLowerCase().trim()) || frontmatter.tags .join("") .toLowerCase() .includes(query.toLowerCase().trim()) ) }, [query] ) React.useEffect(() => { setLimit(onPage) if (query !== "") setFiltredArticles(filterArticles(allArticles.edges)) }, [setFiltredArticles, filterArticles, allArticles.edges, query, onPage]) return (

Статьи

{categories.map(({ node }, i) => ( ))}
{query && query !== "" ? ( filtredArticles.length === 0 ? (

  Ничего не найдено

) : null ) : null}
{query && query !== "" ? ( filtredArticles.length > 0 ? ( ) : null ) : ( )}
) } export const query = graphql` { allMarkdownRemark( filter: { frontmatter: { templateKey: { eq: "article" } } } ) { edges { node { frontmatter { slug title image { childImageSharp { fluid { ...GatsbyImageSharpFluid } } } category tags description } } } } } ` export default ArticlesPage