0.1.16 • Published 2 years ago

react-custom-hubspot-form v0.1.16

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

Customizable HubSpot Form (React Hook)

A React hook to render customizable Hubspot forms

Installation

npm install react-custom-hubspot-form

Usage

Basic implementation

import React from 'react'
import { useHubspotForm } from 'react-custom-hubspot-form'

export default () => {
  const { Form } = useHubspotForm({
    portalId: '...',
    formId: '...',
    fields: [
      { name: 'name', label: 'Name', required: true },
      {
        name: 'movie',
        label: 'Favorite movie',
        type: 'select',
        options: [
          'Star Wars: Episode V - The Empire Strikes Back',
          'Interstellar',
          'Lightyear',
        ],
        value: 'Interstellar',
      },
      // ...
    ],
    submitLabel: 'Vote now!',
  })

  return <Form />
}

Custom fields

const { Fields, Form } = useHubspotForm(/* config */)
const [Name, Movie] = Fields  // order based on `config.fields`

return (
  <Form className="...">
    <Name component={CustomField} />
    <Movie className="..." />

    <button type="submit">Vote now!</button>
    <button type="reset">Reset</button>
  </Form>
)

Default <Field> components are documented here.

const CustomField = ({ label, value, className, ...props }) => (
  <label htmlFor={props.name} className={className}>
    <small>{label}{props.required && <span>*</span>}</small>

    <input
      id={props.name}
      placeholder={label}
      defaultValue={value}
      {...props}
    />
  </label>
)

Custom form (and response)

const { onSubmit, response, result, Fields } = useHubspotForm(/* config */)

if (response?.ok && !!result?.redirectUri) {
  window.location.href = result.redirectUri
  return <p>Redirecting...</p>
}

if (response?.ok && !!result?.inlineMessage) {
  return <div dangerouslySetInnerHTML={{ __html: result.inlineMessage }} />
}

return (
  <form onSubmit={onSubmit}>
    {Fields.map((Field, key) => (
      <Field className="..." key={key} />
    ))}

    <button>Vote now!</button>
  </form>
)

Debug

Set config.debug: true with an apiKey to retrieve the API endpoint to help with populating config.fields.

useHubspotForm({
  portalId: '...',
  formId: '...',
  // fields: idk yet...,

  debug: true,
  apiKey: '...',
})

// open browser console (debug panel) to see the endpoint URL

Config

config parameters are documented here.

Return values

valuedescriptionexample
onSubmitSubmission handler to use in the native <form> tag<form onSubmit={onSubmit} />
responseResponse object returned from the HubSpot APIresponse.ok
resultResulting object from a successful responseresult.inlineMessageresult.redirectUri
FieldsArray of inputs as React components used to destructureconst [First, Second, ...theRest] = Fields
FormReact component with onSubmit, Fields and a submit button included by default.Setting children will override the fields and submit button.<Form>...</Form>
0.1.16

2 years ago

0.1.15

2 years ago

0.1.14

2 years ago

0.1.13

2 years ago

0.1.12

2 years ago

0.1.11

2 years ago

0.1.10

2 years ago

0.1.9

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.11

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago