1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-06-26 03:06:49 +02:00

live inline validation and error output for all fields

This commit is contained in:
Matthias Kretschmann 2020-07-13 14:11:22 +02:00
parent 40e5144b06
commit 7feb34cc66
Signed by: m
GPG Key ID: 606EEEF3C479A91F
3 changed files with 31 additions and 18 deletions

View File

@ -1,7 +1,17 @@
.field {
margin-bottom: var(--spacer);
position: relative;
}
.field .field {
margin-bottom: calc(var(--spacer) / 2);
}
.error {
font-size: var(--font-size-small);
color: var(--brand-alert-red);
position: absolute;
text-align: right;
right: 0;
top: 0;
}

View File

@ -3,6 +3,7 @@ import InputElement from './InputElement'
import Help from './Help'
import Label from './Label'
import styles from './index.module.css'
import { ErrorMessage } from 'formik'
export interface InputProps {
name: string
@ -35,15 +36,8 @@ export interface InputProps {
}
}
export default function Input(props: InputProps): ReactElement {
const {
required,
name,
label,
help,
additionalComponent,
field
} = props as Partial<InputProps>
export default function Input(props: Partial<InputProps>): ReactElement {
const { required, name, label, help, additionalComponent, field } = props
return (
<div className={styles.field}>
@ -52,13 +46,12 @@ export default function Input(props: InputProps): ReactElement {
</Label>
<InputElement {...field} {...props} />
<div className={styles.error}>
<ErrorMessage name={field.name} />
</div>
{help && <Help>{help}</Help>}
{additionalComponent && additionalComponent}
{/* TODO: Make field errors show up here */}
{/* {meta && meta.touched && meta.error ? (
<div className="error">{meta.error}</div>
) : null} */}
</div>
)
}

View File

@ -22,10 +22,10 @@ const validationSchema = Yup.object().shape<MetaDataPublishForm>({
name: Yup.string().required('Required'),
author: Yup.string().required('Required'),
price: Yup.string().required('Required'),
files: Yup.array<File>().required('Required'),
files: Yup.array<File>().required('Required').nullable(),
description: Yup.string().required('Required'),
license: Yup.string().required('Required'),
access: Yup.string().required('Required'),
access: Yup.string().min(4).required('Required'),
termsAndConditions: Yup.boolean().required('Required'),
// ---- optional fields ----
@ -58,9 +58,19 @@ export default function PublishForm({
async function handleSubmit(values: MetaDataPublishForm) {
const submittingToast = toast.info('submitting asset')
console.log(values)
console.log(`
Collected form values:
----------------------
${values}
`)
const metadata = transformPublishFormToMetadata(values)
console.log(metadata)
console.log(`
Transformed metadata values:
----------------------
${metadata}
`)
// if services array stays empty, the default access service
// will be created by squid-js