0.43.3 • Published 3 years ago

gatsby-tinacms-json v0.43.3

Weekly downloads
547
License
Apache-2.0
Repository
github
Last release
3 years ago

gatsby-tinacms-json

A Gatsby/Tina plugin for editing JSON files stored in git.

Installation

yarn add gatsby-plugin-tinacms gatsby-tinacms-git gatsby-tinacms-json

Setup

Include gatsby-plugin-tinacms, gatsby-tinacms-git, and gatsby-tinacms-json in your config:

gatsby-config.js

module.exports = {
  // ...
  plugins: [
    // ...
    {
      resolve: 'gatsby-plugin-tinacms',
      options: {
        plugins: ['gatsby-tinacms-git', 'gatsby-tinacms-json'],
      },
    },
  ],
}

Creating JSON Forms

There are two approaches to registering JSON forms with Tina. The approach you choose depends on whether the React template is a class or function.

  1. useJsonForm: A Hook used when the template is a function.
  2. JsonForm: A Render Props component to use when the template is a class component.

Note: required query data

In order for the JSON forms to work, you must include the following fields in your dataJson graphql query:

  • rawJson
  • fileRelativePath

An example dataQuery in your template might look like this:

query DataQuery($slug: String!) {
  dataJson(fields: { slug: { eq: $slug } }) {
    id
    firstName
    lastName

    rawJson
    fileRelativePath
  }
}

Additionally, any fields that are not queried will be deleted when saving content via the CMS.

useJsonForm

This is a React Hook for creating Json Forms. This is the recommended approach if your template is a Function Component.

In order to use a form you must register it with the CMS. There are two main approaches to register forms in Tina: page forms and screen plugins. Please refer to the form concepts doc to get clarity on the differences.

Interface

useJsonForm(data): [values, form]

Arguments

  • data: The data returned from a Gatsby dataJson query.

Return

  • [values, form]
    • values: The current values to be displayed. This has the same shape as the data argument.
    • form: A reference to the CMS Form object. The form is rarely needed in the template.

Example

src/templates/blog-post.js

import { usePlugin } from 'tinacms'
import { useJsonForm } from 'gatsby-tinacms-json'

function BlogPostTemplate(props) {
  // Create the form
  const [data, form] = useJsonForm(props.data.dataJson)

  // Register it with the CMS
  usePlugin(form)

  return <h1>{data.firstName}</h1>
}

JsonForm

JsonForm is a Render Props based component for accessing CMS Forms.

This Component is a thin wrapper of useJsonForm and usePlugin. Since React Hooks are only available within Function Components you will need to use JsonForm if your template is Class Component.

Props

  • data: The data returned from a Gatsby dataJson query.
  • render({ data, form }): JSX.Element: A function that returns JSX elements
    • data: The current values to be displayed. This has the same shape as the data in the Json prop.
    • form: A reference to the CMS Form object. The form is rarely needed in the template.

src/templates/blog-post.js

import { JsonForm } from 'gatsby-tinacms-json'

class DataTemplate extends React.Component {
  render() {
    return (
      <JsonForm
        data={this.props.data.dataJson}
        render={({ data }) => {
          return <h1>{data.firstName}</h1>
        }}
      />
    )
  }
}

Content Creator

JsonCreatorPlugin: contstructs a content-creator plugin for JSON files.

interface JsonCreatorPlugin {
  label: string
  fields: Field[]
  filename(form: any): Promise<string>
  data?(form: any): Promise<any>
}

Example

import { JsonCreatorPlugin } from 'gatsby-tinacms-json'

const CreatePostPlugin = new JsonCreatorPlugin({
  label: 'New JSON File',
  filename: form => {
    return form.filename
  },
  fields: [
    {
      name: 'filename',
      component: 'text',
      label: 'Filename',
      placeholder: 'content/data/puppies.json',
      description:
        'The full path to the new Markdown file, relative to the repository root.',
    },
  ],
})
0.43.3

3 years ago

0.43.0

3 years ago

0.43.0-alpha.1

3 years ago

0.42.0

3 years ago

0.42.1

3 years ago

0.42.0-alpha.1

3 years ago

0.42.0-alpha.0

3 years ago

0.41.1

3 years ago

0.41.1-alpha.1

3 years ago

0.41.1-alpha.0

3 years ago

0.41.0

3 years ago

0.40.1-alpha.0

3 years ago

0.40.1

3 years ago

0.41.0-alpha.0

3 years ago

0.40.0

3 years ago

0.40.0-alpha.0

3 years ago

0.39.0

3 years ago

0.39.0-alpha.1

3 years ago

0.38.0

3 years ago

0.39.0-alpha.0

3 years ago

0.38.0-alpha.0

3 years ago

0.37.0

3 years ago

0.36.1

3 years ago

0.37.0-alpha.0

3 years ago

0.36.0

3 years ago

0.36.0-alpha.0

3 years ago

0.34.0-alpha.1

3 years ago

0.34.0

3 years ago

0.34.0-alpha.0

3 years ago

0.33.0

3 years ago

0.33.0-alpha.2

3 years ago

0.33.0-alpha.1

3 years ago

0.33.0-alpha.0

3 years ago

0.32.0

4 years ago

0.32.0-alpha.2

4 years ago

0.32.0-alpha.1

4 years ago

0.32.0-alpha.0

4 years ago

0.31.0-alpha.6

4 years ago

0.31.0

4 years ago

0.31.0-alpha.5

4 years ago

0.31.0-alpha.4

4 years ago

0.31.0-alpha.3

4 years ago

0.31.0-alpha.2

4 years ago

0.31.0-alpha.0

4 years ago

0.31.0-alpha.1

4 years ago

0.29.0

4 years ago

0.28.0

4 years ago

0.28.0-alpha.1

4 years ago

0.28.0-alpha.0

4 years ago

0.27.1

4 years ago

0.27.0

4 years ago

0.27.0-alpha.0

4 years ago

0.26.0

4 years ago

0.24.0

4 years ago

0.8.32-alpha.0

4 years ago

0.8.31

4 years ago

0.8.31-alpha.0

4 years ago

0.8.30

4 years ago

0.8.30-alpha.0

4 years ago

0.8.29

4 years ago

0.8.29-alpha.0

4 years ago

0.8.28

4 years ago

0.8.28-alpha.0

4 years ago

0.8.27

4 years ago

0.8.27-alpha.0

4 years ago

0.8.26

4 years ago

0.8.25-alpha.2

4 years ago

0.8.25

4 years ago

0.8.25-alpha.1

4 years ago

0.8.25-alpha.0

4 years ago

0.8.24

4 years ago

0.8.23

4 years ago

0.8.22

4 years ago

0.8.21

4 years ago

0.8.21-alpha.1

4 years ago

0.8.21-alpha.3

4 years ago

0.8.21-alpha.2

4 years ago

0.8.21-alpha.0

4 years ago

0.8.20

4 years ago

0.8.20-alpha.0

4 years ago

0.8.19

4 years ago

0.8.19-alpha.4

4 years ago

0.8.19-alpha.3

4 years ago

0.8.19-alpha.2

4 years ago

0.8.19-alpha.1

4 years ago

0.8.19-alpha.0

4 years ago

0.8.18

4 years ago

0.8.18-alpha.0

4 years ago

0.8.17

4 years ago

0.8.16

4 years ago

0.8.15

4 years ago

0.8.14

4 years ago

0.8.13

4 years ago

0.8.12

4 years ago

0.8.11

4 years ago

0.8.11-alpha.1

4 years ago

0.8.11-alpha.0

4 years ago

0.8.10

4 years ago

0.8.10-alpha.0

4 years ago

0.8.9

4 years ago

0.8.9-alpha.1

4 years ago

0.8.9-alpha.0

4 years ago

0.8.8

4 years ago

0.8.8-alpha.1

4 years ago

0.8.8-alpha.0

4 years ago

0.8.7

4 years ago

0.8.7-alpha.1

4 years ago

0.8.7-alpha.0

4 years ago

0.8.6

4 years ago

0.8.6-alpha.1

4 years ago

0.8.6-alpha.0

4 years ago

0.8.5

4 years ago

0.8.5-canary.0

4 years ago

0.8.5-canary.37

4 years ago

0.8.5-alpha.0

4 years ago

0.8.5-canary.22

4 years ago

0.8.5-canary.14

4 years ago

0.8.5-canary.13

4 years ago

0.8.5-canary.3

4 years ago

0.8.4

4 years ago

0.8.5-canary.2

4 years ago

0.8.4-canary.22

4 years ago

0.8.4-alpha.1

4 years ago

0.8.4-canary.19

4 years ago

0.8.4-canary.14

4 years ago

0.8.4-canary.20

4 years ago

0.8.4-canary.10

4 years ago

0.8.4-alpha.0

4 years ago

0.8.4-canary.8

4 years ago

0.8.4-canary.7

4 years ago

0.8.4-canary.6

4 years ago

0.8.4-canary.0

4 years ago

0.8.3

4 years ago

0.8.2

4 years ago

0.8.2-canary.0

4 years ago

0.8.2-alpha.1

4 years ago

0.8.2-canary.15

4 years ago

0.8.2-canary.23

4 years ago

0.8.2-canary.20

4 years ago

0.8.2-alpha.0

4 years ago

0.8.2-canary.19

4 years ago

0.8.2-canary.12

4 years ago

0.8.2-canary.7

4 years ago

0.8.2-canary.8

4 years ago

0.8.2-canary.9

4 years ago

0.8.2-canary.5

4 years ago

0.8.2-canary.11

4 years ago

0.8.1-alpha.1

4 years ago

0.8.1-canary.13

4 years ago

0.8.1

4 years ago

0.8.1-canary.11

4 years ago

0.8.1-canary.9

4 years ago

0.8.1-canary.8

4 years ago

0.8.1-canary.7

4 years ago

0.8.1-alpha.0

4 years ago

0.8.1-canary.6

4 years ago

0.8.1-canary.5

4 years ago

0.8.1-canary.2

4 years ago

0.8.0

4 years ago

0.8.0-alpha.2

4 years ago

0.8.0-canary.7

4 years ago

0.8.0-alpha.1

4 years ago

0.8.0-canary.0

4 years ago

0.7.1

4 years ago

0.7.1-alpha.1

4 years ago

0.7.1-alpha.0

4 years ago

0.8.0-alpha.0

4 years ago

0.7.0

4 years ago

0.7.0-alpha.2

4 years ago

0.7.0-alpha.1

4 years ago

0.6.1-canary.23

4 years ago

0.6.1-canary.22

4 years ago

0.6.4

4 years ago

0.6.1-canary.16

4 years ago

0.6.1-canary.15

4 years ago

0.6.1-canary.14

4 years ago

0.6.1-canary.13

4 years ago

0.6.3

4 years ago

0.6.2-alpha.0

4 years ago

0.6.1

4 years ago

0.6.0

4 years ago

0.5.1

4 years ago

0.5.1-alpha.0

5 years ago

0.5.0

5 years ago

0.5.0-alpha.1

5 years ago

0.5.0-alpha.0

5 years ago

0.4.0

5 years ago

0.3.0

5 years ago