{"id":25405330,"url":"https://github.com/ronny1020/react-form-maker","last_synced_at":"2026-04-09T07:01:59.599Z","repository":{"id":57333312,"uuid":"267003064","full_name":"ronny1020/react-form-maker","owner":"ronny1020","description":"NPM React tool to make a React form by object","archived":false,"fork":false,"pushed_at":"2024-04-23T02:16:25.000Z","size":3055,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-09T14:28:15.962Z","etag":null,"topics":["form","form-maker","library","npm","react","react-component"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/react-form-maker","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ronny1020.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-05-26T09:40:41.000Z","updated_at":"2021-05-31T06:06:34.000Z","dependencies_parsed_at":"2025-04-12T20:51:53.061Z","dependency_job_id":"fa207f77-66f9-437a-a825-ab79551a7ba6","html_url":"https://github.com/ronny1020/react-form-maker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ronny1020/react-form-maker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronny1020%2Freact-form-maker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronny1020%2Freact-form-maker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronny1020%2Freact-form-maker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronny1020%2Freact-form-maker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ronny1020","download_url":"https://codeload.github.com/ronny1020/react-form-maker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronny1020%2Freact-form-maker/sbom","scorecard":{"id":784399,"data":{"date":"2025-08-11","repo":{"name":"github.com/ronny1020/react-form-maker","commit":"95216714edd2e7ebea070960402f6900776212b2"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/25 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"106 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-whgm-jr23-g3j9","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-x9w5-v3q2-3rhw","Warn: Project is vulnerable to: GHSA-w8qv-6jwh-64r5","Warn: Project is vulnerable to: GHSA-257v-vj4p-3w2h","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-3wcq-x3mq-6r9p","Warn: Project is vulnerable to: GHSA-vh7m-p724-62c2","Warn: Project is vulnerable to: GHSA-r9p9-mrjm-926w","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-6h5x-7c5m-7cr7","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q","Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-8mmm-9v2q-x3f9","Warn: Project is vulnerable to: GHSA-ww39-953v-wcq6","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-7r28-3m3f-r2pr","Warn: Project is vulnerable to: GHSA-r8j5-h5cx-65gg","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-76p3-8jx3-jpfq","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-r6rj-9ch6-g264","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-92xj-mqp7-vmcj","Warn: Project is vulnerable to: GHSA-wxgw-qj99-44c2","Warn: Project is vulnerable to: GHSA-5rrq-pxf6-6jx5","Warn: Project is vulnerable to: GHSA-8fr3-hfg3-gpgp","Warn: Project is vulnerable to: GHSA-gf8q-jrpm-jvxq","Warn: Project is vulnerable to: GHSA-2r2c-g63r-vccr","Warn: Project is vulnerable to: GHSA-cfm4-qjh2-4765","Warn: Project is vulnerable to: GHSA-x4jg-mjrx-434g","Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p","Warn: Project is vulnerable to: GHSA-rp65-9cf3-cjxr","Warn: Project is vulnerable to: GHSA-cwx2-736x-mf6w","Warn: Project is vulnerable to: GHSA-v39p-96qg-c8rf","Warn: Project is vulnerable to: GHSA-8v63-cqqc-6r2c","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-566m-qj78-rww5","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-hwj9-h5mp-3pm3","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-5q6m-3h65-w53x","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-hxcc-f52p-wc94","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-g4rg-993r-mgx7","Warn: Project is vulnerable to: GHSA-c9g6-9335-x697","Warn: Project is vulnerable to: GHSA-vx3p-948g-6vhq","Warn: Project is vulnerable to: GHSA-4wf5-vphf-c2xc","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-9m6j-fcg5-2442","Warn: Project is vulnerable to: GHSA-hh27-ffr2-f2jc","Warn: Project is vulnerable to: GHSA-rqff-837h-mm52","Warn: Project is vulnerable to: GHSA-8v38-pw62-9cw2","Warn: Project is vulnerable to: GHSA-hgjh-723h-mx2j","Warn: Project is vulnerable to: GHSA-jf5r-8hm2-f872","Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6","Warn: Project is vulnerable to: GHSA-4v9v-hfq4-rm2v","Warn: Project is vulnerable to: GHSA-9jgg-88mc-972h","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T05:42:15.957Z","repository_id":57333312,"created_at":"2025-08-23T05:42:15.957Z","updated_at":"2025-08-23T05:42:15.957Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271924998,"owners_count":24844527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-24T02:00:11.135Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["form","form-maker","library","npm","react","react-component"],"created_at":"2025-02-16T04:34:08.221Z","updated_at":"2025-12-30T21:37:52.727Z","avatar_url":"https://github.com/ronny1020.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# react-form-maker\n\n\u003e make a react form faster by Object\n\n[![NPM](https://img.shields.io/npm/v/react-form-maker.svg)](https://www.npmjs.com/package/react-form-maker) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)\n\n## Why this?\n\nIn my opinion, It takes a lot of time on dealing with make pairs with `\u003clabel\u003e` \u0026 `\u003cinput\u003e` when creating a form setting the id \u0026 htmlFor.\nMoreover, usually, the pairs would share the same className or style.\nso, why not use a tool to deal with them.\nAnd you still can set className, style and so on for any pairs.\n\n## Install\n\n```bash\nnpm i react-form-maker\n```\n\n## Usage\n\n```jsx\nimport React from 'react'\n\nimport { ReactFormMaker, getReactFormData } from 'react-form-maker'\n\nconst formClassName = {\n  formGroupClassName: 'form-group',\n  labelClassName: '',\n  inputClassName: 'form-control'\n}\n\nconst formItems = [\n  { id: 'name', label: 'Name：', type: 'text', defaultValue: 'test' },\n  { id: 'account' },\n  { id: 'phone', type: 'number' },\n  { id: 'birthday', type: 'date' },\n  {\n    type: 'radio',\n    name: 'framework',\n    radioClassName: 'form-check-input',\n    radioGroupClassName: 'form-check',\n    radioLabelClassName: 'form-check-label',\n    options: [\n      { value: 'React', defaultChecked: true },\n      'Angular',\n      { value: 'Vue', text: 'Vue.js' }\n    ]\n  },\n  {\n    id: 'gender',\n    type: 'select',\n    formGroupClassName: 'form-group mb-5',\n    options: [{ value: 'male', text: 'Male' }, 'female']\n  },\n  'test1',\n  'test2',\n  { type: 'div', className: 'm-5', child: \u003chr /\u003e },\n  {\n    value: 'Submit',\n    type: 'submit',\n    className: 'btn btn-primary'\n  }\n]\n\nconst App = () =\u003e {\n  return (\n    \u003cReactFormMaker\n      className='container'\n      header={\u003ch1\u003ereact-form-maker demo\u003c/h1\u003e}\n      formItems={formItems}\n      formClassName={formClassName}\n      onSubmit={(event) =\u003e {\n        event.preventDefault()\n        const data = getReactFormData(formItems)\n        console.log(data)\n      }}\n    /\u003e\n  )\n}\n\nexport default App\n```\n\n## Demo\n\n[Demo](https://ronny1020.github.io/react-form-maker/)\n\nBootstrap is used for demo, however, this module don't dependency on Bootstrap.\nIt's **NOT** necessary to use Bootstrap.\n\n## Basic knowledge\n\nfor most of the `\u003clabel\u003e` \u0026 `\u003cinput\u003e` pair of formItem would be like:\n\n```jsx\n\u003cdiv\u003e\n  \u003clabel\u003e\u003c/label\u003e\n  \u003cinput /\u003e\n\u003c/div\u003e\n```\n\nthe div tag would be called \"formGroup\"\n\nif you use button or submit, there would be no div of formGroup.\n\n## Attributes\n\n#### formClassName : Object\n\nformGroupClassName: string (className of the formGroup)\nlabelClassName:string (className of the label)\ninputClassName:string (className of the input)\n\n#### formStyle : Object\n\nformGroupStyle: Object (style of the formGroup)\nlabelStyle: Object (style of the label)\ninputStyle: Object (style of the input)\n\nPs.The way to write the ClassName and style is the way you write in JSX\n\n#### formItems : Array\n\nFor more detail, please read the next section.\n\n#### header : JSX\n\nAdd any content before the formItems by JSX.\n\n#### footer : JSX\n\nAdd any content after the formItems by JSX.\n\n#### other attributes\n\nThose Would be the attributes of `\u003cform\u003e`\n\n## formItems\n\nFor item in array of formItems, use type of object or string.\nIf it's a string, it would be equal to {id:'string'}\n\n#### id : string\n\nThis is the id of the `\u003cinput\u003e` and the htmlFor of the `\u003clabel\u003e`\n\n#### label : string\n\nThe text in the `\u003clabel\u003e\u003c/label\u003e`\nThe default is the defined \"id\"\n\n#### formGroupClassName: string (className of the formGroup)\n\n#### labelClassName:string (className of the label)\n\n#### inputClassName:string (className of the input)\n\n#### formGroupStyle: Object (style of the formGroup)\n\n#### labelStyle: Object (style of the label)\n\n#### inputStyle: Object (style of the input)\n\nPs.The way to write the ClassName and style is the way you write in JSX.\n\"className\" or \"style\" in formItems have priority than in the formClassName or formStyle.\n\n#### other attributes\n\nThose Would be the attributes of `\u003cinput\u003e`\n\n#### {type:select}\n\nUse (options : array) to create list of `\u003coption\u003e`.\nIn options use Object or string to create each `\u003coption\u003e`, which contain key value \u0026 text.\nIf type of string is used, that would be equal to `{value:'string'}`\nKey of 'text' would be the text in `\u003coption\u003e\u003c/option\u003e`, the default is the defined \"value\"\n\n#### {type:radio}\n\nUse (options : array) to create list of following components.\nIf type of string is used, that would be equal to `{value:'string'}`.\n\n```jsx\n\u003cdiv\u003e\n  \u003cinput type='radio' /\u003e\n  \u003clabel\u003e{text}\u003c/label\u003e\n\u003c/div\u003e\n```\n\nLike inputGroup, the outer `\u003cdiv\u003e` would be radioGroup.\nUse property \"radioGroupClassName\" or \"radioGroupStyle\" to change the radioGroup style.\nUse property \"radioClassName\" or \"radioStyle\" to change the radio style.\nUse property \"radioLabelClassName\" or \"radioLabelStyle\" to change the label style.\n\n##### The \"options\" property of {type:radio}\n\n\"text\" property is the text of the label, the default is the defined \"value\".\nLike inputGroup, \"id\" would be used to the id of input and the htmlFor of label, the default is also the defined \"value\" .\nOther properties would be the attributes of input, such as \"defaultChecked:true\"\n\n#### {type:button}\n\nIf you use button or submit, there would be no div of formGroup.\nSimply use \"className\" or \"style\" to change the style.\n\n#### {type:div}\n\nCreate `\u003cdiv\u003e\u003c/div\u003e` ,and anything could be insert into it by property \"child\".\nAny other property would be the attributes of the div.\n\n## getReactFormData(formItems)\n\nThis function could get the date of `\u003cReactFormMaker /\u003e` form.\nThe \"formItems\" should be the formItems used by `\u003cReactFormMaker /\u003e`.\nThe return is Object with key: value pair. If there is a name in formItem, the key would be the \"name\" property. Otherwise, the key would be the \"id\" property.\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\n## License\n\nMIT © [ronny1020](https://github.com/ronny1020)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronny1020%2Freact-form-maker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fronny1020%2Freact-form-maker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronny1020%2Freact-form-maker/lists"}