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