UNPKG

@shopify/polaris

Version:

Shopify’s product component library

30 lines (29 loc) 1.25 kB
import React, { useCallback } from 'react'; import { VisuallyHidden } from '../VisuallyHidden'; import { useI18n } from '../../utilities/i18n'; export function Form({ acceptCharset, action, autoComplete, children, encType, implicitSubmit = true, method = 'post', name, noValidate, preventDefault = true, target, onSubmit, }) { const i18n = useI18n(); const handleSubmit = useCallback((event) => { if (!preventDefault) { return; } event.preventDefault(); onSubmit(event); }, [onSubmit, preventDefault]); const autoCompleteInputs = normalizeAutoComplete(autoComplete); const submitMarkup = implicitSubmit ? (<VisuallyHidden> <button type="submit" aria-hidden="true"> {i18n.translate('Polaris.Common.submit')} </button> </VisuallyHidden>) : null; return (<form acceptCharset={acceptCharset} action={action} autoComplete={autoCompleteInputs} encType={encType} method={method} name={name} noValidate={noValidate} target={target} onSubmit={handleSubmit}> {children} {submitMarkup} </form>); } function normalizeAutoComplete(autoComplete) { if (autoComplete == null) { return autoComplete; } return autoComplete ? 'on' : 'off'; }