UNPKG

@sizo-group/form-builder

Version:

Welcome to **@sizo-group/form-builder**, a powerful and flexible React component library designed to help you create dynamic forms with ease. Built with Tailwind CSS, HeroUI, and react-hook-form, this library provides a reusable form builder that supports

3 lines (2 loc) 3.85 kB
"use strict";var e=require("@heroui/react"),r=require("react-hook-form"),n=require("react"),t=function(){return t=Object.assign||function(e){for(var r,n=1,t=arguments.length;n<t;n++)for(var o in r=arguments[n])Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o]);return e},t.apply(this,arguments)};function o(o){var l=r.useFormContext().control;return n.createElement(r.Controller,{name:o.name,control:l,rules:o.rules,render:function(r){var l,a=r.field,u=r.fieldState.error;return n.createElement(e.Input,t({},o,a,{errorMessage:null===(l=null==u?void 0:u.message)||void 0===l?void 0:l.toString(),isInvalid:!!u}))}})}function l(o){var l=r.useFormContext().control;return n.createElement(r.Controller,{name:o.name,control:l,rules:o.rules,render:function(r){var l,a=r.field,u=r.fieldState.error;return n.createElement(e.Checkbox,t({},o,a,{onChange:void 0,isSelected:a.value,onValueChange:function(e){return a.onChange(e)},errorMessage:null===(l=null==u?void 0:u.message)||void 0===l?void 0:l.toString(),isInvalid:!!u}),o.title)}})}function a(o){var l=r.useFormContext().control;return n.createElement(r.Controller,{name:o.name,control:l,rules:o.rules,render:function(r){var l,a=r.field,u=r.fieldState.error;return n.createElement(e.Textarea,t({},o,a,{errorMessage:null===(l=null==u?void 0:u.message)||void 0===l?void 0:l.toString(),isInvalid:!!u}))}})}function u(o){var l=r.useFormContext().control;return n.createElement(r.Controller,{name:o.name,control:l,rules:o.rules,render:function(r){var l,a=r.field,u=r.fieldState.error;return n.createElement("div",{className:"flex flex-col gap-1"},n.createElement(e.RadioGroup,t({},o,a,{errorMessage:null===(l=null==u?void 0:u.message)||void 0===l?void 0:l.toString(),isInvalid:!!u,key:o.name}),o.options.map((function(r){return n.createElement(e.Radio,{key:r.value,value:r.value},r.label)}))))}})}function i(o){var l=r.useFormContext().control;return n.createElement(r.Controller,{name:o.name,control:l,rules:o.rules,render:function(r){var l,a=r.field,u=r.fieldState.error;return n.createElement(e.Select,t({},o,a,{onClick:function(e){return e.preventDefault()},onChange:void 0,selectedKeys:"multiple"===o.selectionMode?Array.isArray(a.value)?a.value:[]:new Set([a.value]),onSelectionChange:function(e){var r="multiple"===o.selectionMode?Array.from(e):e.currentKey;a.onChange(r)},errorMessage:null===(l=null==u?void 0:u.message)||void 0===l?void 0:l.toString(),isInvalid:!!u,key:o.name}),o.options.map((function(r){return n.createElement(e.SelectItem,{key:r.value},r.label)})))}})}function c(o){var l=r.useFormContext().control;return n.createElement(r.Controller,{name:o.name,control:l,rules:o.rules,render:function(r){var l,a=r.field,u=r.fieldState.error;return n.createElement(e.Switch,t({},o,a,{onChange:void 0,isSelected:a.value,onValueChange:function(e){return a.onChange(e)},errorMessage:null===(l=null==u?void 0:u.message)||void 0===l?void 0:l.toString(),isInvalid:!!u}),o.title)}})}"function"==typeof SuppressedError&&SuppressedError,module.exports=function(s){var m=s.fields,d=s.formClassName,v=s.onSubmit,f=n.useMemo((function(){return m.reduce((function(e,r){return void 0!==r.initialValue&&(e[r.name]=r.initialValue),e}),{})}),[m]),g=r.useForm({values:f}),p=g.handleSubmit;return n.createElement(r.FormProvider,t({},g),n.createElement("form",{onSubmit:p(v),className:e.cn("flex flex-col gap-5 w-full",d)},m.map((function(e){return function(e){switch(e.type){case"text":case"password":return n.createElement(o,t({},e));case"textarea":return n.createElement(a,t({},e));case"radio":return n.createElement(u,t({},e));case"checkbox":return n.createElement(l,t({},e));case"switch":return n.createElement(c,t({},e));case"select":return n.createElement(i,t({},e));default:return null}}(e)})),n.createElement(e.Button,{type:"submit",variant:"solid"},"تایید")))}; //# sourceMappingURL=index.js.map