Skip to content
This repository was archived by the owner on Feb 27, 2024. It is now read-only.

Commit 7b56197

Browse files
committed
Work in progress
1 parent 9e3d86f commit 7b56197

File tree

4 files changed

+81
-0
lines changed

4 files changed

+81
-0
lines changed

components/molecules/GravityForm/Fields/Fields.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import PropTypes from 'prop-types'
22
import * as GfFields from '.'
33

4+
import {Field} from 'formik'
5+
import InputError from '@/components/atoms/Inputs/InputError'
6+
47
/**
58
* Render the Fields component.
69
*
@@ -42,6 +45,10 @@ export default function Fields({fields}) {
4245
fieldToRender = <GfFields.Text {...field.node} key={id} />
4346
break
4447

48+
case 'fileupload':
49+
fieldToRender = <GfFields.File {...field.node} key={id} />
50+
break
51+
4552
default:
4653
fieldToRender = (
4754
<pre key={id}>
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import PropTypes from 'prop-types'
2+
import {getGfFieldId, getGfHiddenClassName} from '@/functions/gravityForms'
3+
import {Field} from 'formik'
4+
import InputError from '@/components/atoms/Inputs/InputError'
5+
import styles from '@/components/atoms/Inputs/Text/Text.module.css'
6+
import cn from 'classnames'
7+
8+
/**
9+
* Render GravityForms File field component.
10+
*
11+
* @param {object} props GravityForm Select field as props.
12+
* @param {string} props.className GravityForm field wrapper class.
13+
* @param {string} props.description GravityForm field description.
14+
* @param {string|number} props.id GravityForm field id.
15+
* @param {boolean} props.isRequired GravityForm field is required.
16+
* @param {string} props.label GravityForm field label.
17+
* @param {Array} props.selectChoices GravityForm field selection options.
18+
* @param {boolean} props.visibility GravityForm field visibility.
19+
* @return {Element} The Select component.
20+
*/
21+
export default function File({className, description, id, isRequired, label}) {
22+
const fieldId = getGfFieldId(id)
23+
24+
// const [upload, setUpload] = useState([])
25+
26+
return (
27+
<div className={cn(styles.text, className)}>
28+
{label && (
29+
<label htmlFor={id} required={isRequired}>
30+
{label}
31+
</label>
32+
)}
33+
<Field
34+
aria-required={isRequired}
35+
id={fieldId}
36+
name={fieldId}
37+
required={isRequired}
38+
type="file"
39+
render={({field, form}) => (
40+
<input
41+
{...field}
42+
type="file"
43+
onChange={e => {
44+
form.setFieldValue(fieldId, e.currentTarget.files[0])
45+
}}
46+
/>
47+
)}
48+
/>
49+
{/* <input
50+
id={fieldId}
51+
name={fieldId}
52+
type="file"
53+
onChange={(event) => {
54+
setFieldValue(fieldId, event.currentTarget.files[0])
55+
}}
56+
required={isRequired}
57+
/> */}
58+
{description && <p>{description}</p>}
59+
<InputError name={id} />
60+
</div>
61+
)
62+
}
63+
64+
File.propTypes = {
65+
className: PropTypes.string,
66+
description: PropTypes.string,
67+
id: PropTypes.number.isRequired,
68+
isRequired: PropTypes.bool,
69+
label: PropTypes.string,
70+
selectChoices: PropTypes.arrayOf(PropTypes.object),
71+
visibility: PropTypes.string
72+
}

components/molecules/GravityForm/Fields/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ export {default} from './Fields'
22
export {default as Checkbox} from './Checkbox'
33
export {default as Select} from './Select'
44
export {default as Text} from './Text'
5+
export {default as File} from './File'

components/molecules/GravityForm/GravityForm.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export default function GravityForm({
3131
formDefaults={fieldDefaults}
3232
id={formId && `gform-${formId}`}
3333
validationSchema={formValidationSchema}
34+
onSubmit={(values, actions) => console.log({values, actions})}
3435
>
3536
{title && <h2 className={styles.title}>{title}</h2>}
3637
{fieldData && <Fields fields={fieldData} />}

0 commit comments

Comments
 (0)