@sanity/form-toolkit

3.0.63.0.7
dist/form-renderer/index.js.map
~dist/form-renderer/index.js.mapModified
+1−1
Index: package/dist/form-renderer/index.js.map
===================================================================
--- package/dist/form-renderer/index.js.map
+++ package/dist/form-renderer/index.js.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","names":["ChangeEvent","FC","Ref","FieldComponentProps","toRef","HTMLElement","ref","T","DefaultField","t0","$","_c","field","fieldState","error","type","label","name","options","t1","choices","t2","validation","t3","t4","undefined","t5","t6","t7","Symbol","for","bb0","reduce","_temp","validationRules","value","onChange","onBlur","t8","e","target","handleChange","t9","e_0","choiceValue","Array","isArray","newValue","checked","filter","v_0","v","handleCheckboxChange","t10","placeholder","map","_temp2","choice_0","choice","includes","e_1","defaultValue","renderInput","t11","t12","t13","t14","acc","choice_1","ComponentType","FC","HTMLProps","DefaultField","FieldComponentProps","FieldState","FormDataProps","FormField","FormRendererProps","HTMLFormElement","formData","getFieldState","fieldName","getFieldError","fieldComponents","Record","defaultGetFieldState","name","value","undefined","onChange","defaultFieldComponents","FormRenderer","props","$","_c","t0","t1","children","t2","field","CustomComponent","type","fieldState","error","renderField","elProps","Object","assign","t3","id","current","t4","fields","map","field_0","_key","t5","submitButton","text","t6","label","t7"],"sources":["../../src/form-renderer/components/default-field.tsx","../../src/form-renderer/components/form-renderer.tsx"],"sourcesContent":["import type {ChangeEvent, FC, Ref} from 'react'\n\nimport type {FieldComponentProps} from './types'\n\n// oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion -- FieldState.ref is loosely typed so refs from any form library can be passed through\nconst toRef = <T extends HTMLElement>(ref: unknown) => ref as Ref<T> | undefined\n\nexport const DefaultField: FC<FieldComponentProps> = ({field, fieldState, error}) => {\n  const {type, label, name, options = {}, choices = [], validation = []} = field\n  if (!type || !name) return null\n  const validationRules = validation.reduce((acc: Record<string, string>, v) => {\n    acc[v.type] = v.value\n    return acc\n  }, {})\n  const {value, onChange, onBlur, ref} = fieldState\n\n  const handleChange = (\n    e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>,\n  ) => {\n    onChange(e.target.value)\n  }\n\n  const handleCheckboxChange = (e: ChangeEvent<HTMLInputElement>, choiceValue: string) => {\n    if (Array.isArray(value)) {\n      const newValue = e.target.checked\n        ? [...value, choiceValue]\n        : value.filter((v: string) => v !== choiceValue)\n      onChange(newValue)\n    } else {\n      onChange(e.target.checked ? choiceValue : '')\n    }\n  }\n\n  const renderInput = () => {\n    switch (type) {\n      case 'submit':\n        return <button type=\"submit\">{label || 'Submit'}</button>\n      case 'textarea':\n        return (\n          <textarea\n            ref={toRef<HTMLTextAreaElement>(ref)}\n            name={name}\n            onChange={handleChange}\n            onBlur={onBlur}\n            placeholder={options.placeholder}\n            {...validationRules}\n            value={value ?? ''}\n          />\n        )\n\n      case 'select':\n        return (\n          <select\n            ref={toRef<HTMLSelectElement>(ref)}\n            name={name}\n            value={value ?? ''}\n            onChange={handleChange}\n            {...validationRules}\n            onBlur={onBlur}\n          >\n            {choices?.map((choice) => (\n              <option key={choice.value} value={choice.value}>\n                {choice.label}\n              </option>\n            ))}\n          </select>\n        )\n\n      case 'radio':\n        return choices?.map((choice) => (\n          <label key={choice.value}>\n            <input\n              type=\"radio\"\n              name={name}\n              ref={toRef<HTMLInputElement>(ref)}\n              value={choice.value}\n              checked={value === choice.value}\n              onChange={handleChange}\n              onBlur={onBlur}\n              {...validationRules}\n            />\n            {choice.label}\n          </label>\n        ))\n\n      case 'checkbox':\n        return choices?.map((choice) => (\n          <label key={choice.value}>\n            <input\n              type=\"checkbox\"\n              name={name}\n              ref={toRef<HTMLInputElement>(ref)}\n              value={choice.value}\n              checked={Array.isArray(value) ? value.includes(choice.value) : value === choice.value}\n              onChange={(e) => handleCheckboxChange(e, choice.value)}\n              onBlur={onBlur}\n              {...validationRules}\n            />\n            {choice.label}\n          </label>\n        ))\n\n      default:\n        return (\n          <input\n            type={type}\n            ref={toRef<HTMLInputElement>(ref)}\n            name={name}\n            value={value ?? options.defaultValue ?? ''}\n            onChange={handleChange}\n            {...validationRules}\n            onBlur={onBlur}\n            placeholder={options.placeholder}\n          />\n        )\n    }\n  }\n\n  return (\n    <>\n      {label && !['hidden', 'submit'].includes(type) && <label htmlFor={name}>{label}</label>}\n      {renderInput()}\n      {error && <span className=\"error\">{error}</span>}\n    </>\n  )\n}\n","import type {ComponentType, FC, HTMLProps} from 'react'\n\nimport {DefaultField} from './default-field'\nimport type {FieldComponentProps, FieldState, FormDataProps, FormField} from './types'\n\ninterface FormRendererProps extends HTMLProps<HTMLFormElement> {\n  formData?: FormDataProps\n  // Function to get field state for a given field name\n  getFieldState?: (fieldName: string) => FieldState\n  // Function to get field error for a given field name\n  getFieldError?: (fieldName: string) => string | undefined\n  // Override default field components\n  fieldComponents?: Record<string, ComponentType<FieldComponentProps>>\n}\n\nconst defaultGetFieldState = (name: string) => ({\n  value: undefined,\n  onChange: () => {},\n  name, // Pass name to field for native form handling\n})\n\nconst defaultFieldComponents: Record<string, ComponentType<FieldComponentProps>> = {}\n\nexport const FormRenderer: FC<FormRendererProps> = (props) => {\n  const {\n    formData,\n    getFieldState = defaultGetFieldState,\n    getFieldError,\n    fieldComponents = defaultFieldComponents,\n    children,\n  } = props\n  const renderField = (field: FormField) => {\n    const CustomComponent = fieldComponents[field.type]\n    const fieldState = getFieldState(field.name)\n    const error = getFieldError?.(field.name)\n\n    if (CustomComponent) {\n      return <CustomComponent field={field} fieldState={fieldState} error={error} />\n    }\n\n    return <DefaultField field={field} fieldState={fieldState} error={error} />\n  }\n  const elProps = Object.assign({}, props)\n  delete elProps.formData\n  delete elProps.getFieldState\n  delete elProps.getFieldError\n  delete elProps.fieldComponents\n\n  return (\n    <form {...elProps} id={elProps.id ?? formData?.id?.current}>\n      {formData?.fields?.map((field) => (\n        <div key={field._key} className=\"form-field\">\n          {renderField(field)}\n        </div>\n      ))}\n\n      {children}\n\n      {renderField({\n        type: 'submit',\n        name: 'submit',\n        label: formData?.submitButton?.text || 'Submit',\n      })}\n    </form>\n  )\n}\n"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["ChangeEvent","FC","Ref","FieldComponentProps","toRef","HTMLElement","ref","T","DefaultField","t0","$","_c","field","fieldState","error","type","label","name","options","t1","choices","t2","validation","t3","t4","undefined","t5","t6","t7","Symbol","for","bb0","reduce","_temp","validationRules","value","onChange","onBlur","t8","e","target","handleChange","t9","e_0","choiceValue","Array","isArray","newValue","checked","filter","v_0","v","handleCheckboxChange","t10","placeholder","map","_temp2","choice_0","choice","includes","e_1","defaultValue","renderInput","t11","t12","t13","t14","acc","choice_1","ComponentType","FC","HTMLProps","DefaultField","FieldComponentProps","FieldState","FormDataProps","FormField","FormRendererProps","HTMLFormElement","formData","getFieldState","fieldName","getFieldError","fieldComponents","Record","defaultGetFieldState","name","value","undefined","onChange","defaultFieldComponents","FormRenderer","props","$","_c","t0","t1","children","t2","field","CustomComponent","type","fieldState","error","renderField","elProps","Object","assign","t3","id","current","t4","fields","map","field_0","_key","t5","submitButton","text","t6","label","t7"],"sources":["../../src/form-renderer/components/default-field.tsx","../../src/form-renderer/components/form-renderer.tsx"],"sourcesContent":["import type {ChangeEvent, FC, Ref} from 'react'\n\nimport type {FieldComponentProps} from './types'\n\n// oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion -- FieldState.ref is loosely typed so refs from any form library can be passed through\nconst toRef = <T extends HTMLElement>(ref: unknown) => ref as Ref<T> | undefined\n\nexport const DefaultField: FC<FieldComponentProps> = ({field, fieldState, error}) => {\n  const {type, label, name, options = {}, choices = [], validation = []} = field\n  if (!type || !name) return null\n  const validationRules = validation.reduce((acc: Record<string, string>, v) => {\n    acc[v.type] = v.value\n    return acc\n  }, {})\n  const {value, onChange, onBlur, ref} = fieldState\n\n  const handleChange = (\n    e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>,\n  ) => {\n    onChange(e.target.value)\n  }\n\n  const handleCheckboxChange = (e: ChangeEvent<HTMLInputElement>, choiceValue: string) => {\n    if (Array.isArray(value)) {\n      const newValue = e.target.checked\n        ? [...value, choiceValue]\n        : value.filter((v: string) => v !== choiceValue)\n      onChange(newValue)\n    } else {\n      onChange(e.target.checked ? choiceValue : '')\n    }\n  }\n\n  const renderInput = () => {\n    switch (type) {\n      case 'submit':\n        return <button type=\"submit\">{label || 'Submit'}</button>\n      case 'textarea':\n        return (\n          <textarea\n            ref={toRef<HTMLTextAreaElement>(ref)}\n            name={name}\n            onChange={handleChange}\n            onBlur={onBlur}\n            placeholder={options.placeholder}\n            {...validationRules}\n            value={value ?? ''}\n          />\n        )\n\n      case 'select':\n        return (\n          <select\n            ref={toRef<HTMLSelectElement>(ref)}\n            name={name}\n            value={value ?? ''}\n            onChange={handleChange}\n            {...validationRules}\n            onBlur={onBlur}\n          >\n            {choices?.map((choice) => (\n              <option key={choice.value} value={choice.value}>\n                {choice.label}\n              </option>\n            ))}\n          </select>\n        )\n\n      case 'radio':\n        return choices?.map((choice) => (\n          <label key={choice.value}>\n            <input\n              type=\"radio\"\n              name={name}\n              ref={toRef<HTMLInputElement>(ref)}\n              value={choice.value}\n              checked={value === choice.value}\n              onChange={handleChange}\n              onBlur={onBlur}\n              {...validationRules}\n            />\n            {choice.label}\n          </label>\n        ))\n\n      case 'checkbox':\n        return choices?.map((choice) => (\n          <label key={choice.value}>\n            <input\n              type=\"checkbox\"\n              name={name}\n              ref={toRef<HTMLInputElement>(ref)}\n              value={choice.value}\n              checked={Array.isArray(value) ? value.includes(choice.value) : value === choice.value}\n              onChange={(e) => handleCheckboxChange(e, choice.value)}\n              onBlur={onBlur}\n              {...validationRules}\n            />\n            {choice.label}\n          </label>\n        ))\n\n      default:\n        return (\n          <input\n            type={type}\n            ref={toRef<HTMLInputElement>(ref)}\n            name={name}\n            value={value ?? options.defaultValue ?? ''}\n            onChange={handleChange}\n            {...validationRules}\n            onBlur={onBlur}\n            placeholder={options.placeholder}\n          />\n        )\n    }\n  }\n\n  return (\n    <>\n      {label && !['hidden', 'submit'].includes(type) && <label htmlFor={name}>{label}</label>}\n      {renderInput()}\n      {error && <span className=\"error\">{error}</span>}\n    </>\n  )\n}\n","import type {ComponentType, FC, HTMLProps} from 'react'\n\nimport {DefaultField} from './default-field'\nimport type {FieldComponentProps, FieldState, FormDataProps, FormField} from './types'\n\ninterface FormRendererProps extends HTMLProps<HTMLFormElement> {\n  formData?: FormDataProps\n  // Function to get field state for a given field name\n  getFieldState?: (fieldName: string) => FieldState\n  // Function to get field error for a given field name\n  getFieldError?: (fieldName: string) => string | undefined\n  // Override default field components\n  fieldComponents?: Record<string, ComponentType<FieldComponentProps>>\n}\n\nconst defaultGetFieldState = (name: string) => ({\n  value: undefined,\n  onChange: () => {},\n  name, // Pass name to field for native form handling\n})\n\nconst defaultFieldComponents: Record<string, ComponentType<FieldComponentProps>> = {}\n\nexport const FormRenderer: FC<FormRendererProps> = (props) => {\n  const {\n    formData,\n    getFieldState = defaultGetFieldState,\n    getFieldError,\n    fieldComponents = defaultFieldComponents,\n    children,\n  } = props\n  const renderField = (field: FormField) => {\n    const CustomComponent = fieldComponents[field.type]\n    const fieldState = getFieldState(field.name)\n    const error = getFieldError?.(field.name)\n\n    if (CustomComponent) {\n      return <CustomComponent field={field} fieldState={fieldState} error={error} />\n    }\n\n    return <DefaultField field={field} fieldState={fieldState} error={error} />\n  }\n  const elProps = Object.assign({}, props)\n  delete elProps.formData\n  delete elProps.getFieldState\n  delete elProps.getFieldError\n  delete elProps.fieldComponents\n\n  return (\n    <form {...elProps} id={elProps.id ?? formData?.id?.current}>\n      {formData?.fields?.map((field) => (\n        <div key={field._key} className=\"form-field\">\n          {renderField(field)}\n        </div>\n      ))}\n\n      {children}\n\n      {renderField({\n        type: 'submit',\n        name: 'submit',\n        label: formData?.submitButton?.text || 'Submit',\n      })}\n    </form>\n  )\n}\n"],"mappings":"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"}
\ No newline at end of file