From 059a5406dfd6b93ef71dc0ed8c0bcb61fba9b091 Mon Sep 17 00:00:00 2001 From: Jason Bahl Date: Thu, 5 Nov 2020 08:38:59 -0700 Subject: [PATCH] - add support for twitter embeds coming from WordPress - add some global css (can't seem to get chakra theme to use globals) - initial templates for blog (so I can compare content) --- package.json | 1 + src/components/DeveloperReferenceSidebar.js | 27 ---- src/components/RecipePreview.js | 2 +- src/components/RecipeSidebar.js | 3 +- src/components/TableOfContents.js | 2 +- src/components/parse-html.js | 2 +- src/components/parsed-components/Pre.js | 7 +- src/components/parsed-components/index.js | 33 +++++ src/components/sidebar/SidebarCategory.js | 9 +- src/pages/actions.js | 24 ++-- src/pages/blog.js | 56 +++++++- src/pages/filters.js | 24 ++-- src/pages/functions.js | 25 ++-- src/pages/recipes.js | 6 +- src/styles/global.css | 42 +++++- src/templates/SnippetTag.js | 4 +- src/templates/WpAction.js | 2 +- src/templates/WpCodeSnippet.js | 14 +- src/templates/WpContentNode.js | 2 +- src/templates/WpDocument.js | 19 ++- src/templates/WpFilter.js | 2 +- src/templates/WpFunction.js | 2 +- src/templates/WpPost.js | 71 +++++++++ yarn.lock | 152 +++++++++++++++++++- 24 files changed, 426 insertions(+), 105 deletions(-) create mode 100644 src/templates/WpPost.js diff --git a/package.json b/package.json index 93c54b8..779420b 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "react-lorem-component": "^0.13.0", "react-scroll": "^1.8.1", "react-spinners": "^0.9.0", + "react-twitter-embed": "^3.0.3", "react-use": "^15.3.4", "showdown": "^1.9.1", "slugger": "^1.0.1", diff --git a/src/components/DeveloperReferenceSidebar.js b/src/components/DeveloperReferenceSidebar.js index f1a235e..8f49b3b 100644 --- a/src/components/DeveloperReferenceSidebar.js +++ b/src/components/DeveloperReferenceSidebar.js @@ -1,35 +1,8 @@ import React from 'react'; -import { useStaticQuery, graphql } from 'gatsby' import Sidebar from "./sidebar/Sidebar"; const DeveloperReferenceSidebar = ({ title }) => { - const data = useStaticQuery(graphql` - { - allWpFilter(sort: {fields: title, order: ASC}) { - nodes { - id - title - path: uri - } - } - allWpAction(sort: {fields: title, order: ASC}) { - nodes { - id - title - path: uri - } - } - allWpFunction(sort: {fields: title, order: ASC}) { - nodes { - id - title - path: uri - } - } - } - `); - const routes = [ { heading: false, diff --git a/src/components/RecipePreview.js b/src/components/RecipePreview.js index efd48d6..34b0eff 100644 --- a/src/components/RecipePreview.js +++ b/src/components/RecipePreview.js @@ -21,7 +21,7 @@ const RecipePreview = ({title, path, content, tags}) => ( zIndex="1" right="1.25em" > - {tags.map(tag => ( + {tags && tags.map(tag => ( { title: `View All (${data.allWpCodeSnippet.totalCount})`, path: `/recipes`, } - ] + ]; + data.allWpCodeSnippetTag.nodes.map(tag => { taglist.push({ title: `${tag.name} (${tag.count})`, diff --git a/src/components/TableOfContents.js b/src/components/TableOfContents.js index 532fd9d..af8568d 100644 --- a/src/components/TableOfContents.js +++ b/src/components/TableOfContents.js @@ -53,7 +53,7 @@ const TableOfContents = ({ content, reduceHeadings = false }) => { break; case 'h4': headingProps = { - as: 'h3', + as: 'h4', fontSize: 'xs', lineHeight: 'sm', fontWeight: 'sm', diff --git a/src/components/parse-html.js b/src/components/parse-html.js index c35fd86..cd1da49 100644 --- a/src/components/parse-html.js +++ b/src/components/parse-html.js @@ -47,7 +47,7 @@ export const ParseHtmlToReact = (html, components, reduceHeadings = false) => { let componentName = node.name.charAt(0).toUpperCase() + node.name.slice(1) // Allow heading sizes to be reduced for large chunks of parsed content. if (reduceHeadings && componentName.startsWith("H") && componentName.length === 2) { - componentName = `H${parseInt(componentName[1]) + 1}` + componentName = `H${parseInt(componentName[1]) + 1}` } if ( ! components[componentName] ) { diff --git a/src/components/parsed-components/Pre.js b/src/components/parsed-components/Pre.js index d6dc73a..421afd5 100644 --- a/src/components/parsed-components/Pre.js +++ b/src/components/parsed-components/Pre.js @@ -4,7 +4,12 @@ import CodeBlock from '../codeblock/CodeBlock' export const Pre = props => { const { children } = props; - const code = children && children[0].props && children[0].props.children && children[0].props.children[0] ? children[0].props.children[0] : null; + let code; + if ( props && props.code ) { + code = props.code; + } else { + code = children && children[0].props && children[0].props.children && children[0].props.children[0] ? children[0].props.children[0] : null; + } // Sometimes the classname will be on the code tag and not on the pre tag. let additionalProps = {} diff --git a/src/components/parsed-components/index.js b/src/components/parsed-components/index.js index 98ed36e..5aba640 100644 --- a/src/components/parsed-components/index.js +++ b/src/components/parsed-components/index.js @@ -9,6 +9,7 @@ import { useColorModeValue } from "@chakra-ui/core" import slugger from 'slugger' +import { TwitterTweetEmbed } from 'react-twitter-embed' export const H1 = ((props) => { return {props.children} @@ -126,4 +127,36 @@ export const Noscript = (props) => { return