@saas-ui/forms 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../yup/src/yup-resolver.ts"],"sourcesContent":["import { reach, AnyObjectSchema } from 'yup'\nimport { yupResolver } from '@hookform/resolvers/yup'\n\nimport { FieldProps } from '@saas-ui/forms'\n\nexport { yupResolver }\n\nexport type Options = {\n min?: number\n max?: number\n}\n\n// @TODO get proper typings for the schema fields\nconst getType = (field: any) => {\n if (field.spec.meta?.type) {\n return field.spec.meta.type\n }\n\n switch (field.type) {\n case 'array':\n return 'array'\n case 'object':\n return 'object'\n case 'number':\n return 'number'\n case 'date':\n return 'date'\n case 'string':\n default:\n return 'text'\n }\n}\n\nconst getArrayOption = (field: any, name: string) => {\n for (const test of field.tests) {\n if (test.OPTIONS?.params[name]) return test.OPTIONS.params[name]\n }\n}\n\n/**\n * A helper function to render forms automatically based on a Yup schema\n *\n * @param schema The Yup schema\n * @returns {FieldProps[]}\n */\nexport const getFieldsFromSchema = (schema: AnyObjectSchema): FieldProps[] => {\n const fields = []\n\n let schemaFields: Record<string, any> = {}\n if (schema.type === 'array') {\n /* @ts-ignore this is actually valid */\n schemaFields = schema.innerType.fields\n } else {\n schemaFields = schema.fields\n }\n\n for (const name in schemaFields) {\n const field = schemaFields[name]\n\n const options: Options = {}\n if (field.type === 'array') {\n options.min = getArrayOption(field, 'min')\n options.max = getArrayOption(field, 'max')\n }\n\n fields.push({\n name,\n label: field.spec.label || name,\n type: getType(field),\n ...options,\n })\n }\n return fields\n}\n\nexport const getNestedSchema = (schema: AnyObjectSchema, path: string) => {\n return reach(schema, path)\n}\n\nexport const yupFieldResolver = (schema: AnyObjectSchema) => {\n return {\n getFields() {\n return getFieldsFromSchema(schema)\n },\n getNestedFields(name: string) {\n return getFieldsFromSchema(getNestedSchema(schema, name))\n },\n }\n}\n\nexport const yupForm = (\n schema: AnyObjectSchema,\n schemaOptions = {},\n resolverOptions = {}\n) => {\n return {\n schema,\n resolver: yupResolver(schema, schemaOptions, resolverOptions),\n fieldResolver: yupFieldResolver(schema),\n }\n}\n"],"names":["getType","field","_field$spec$meta","spec","meta","type","getArrayOption","name","_step","tests","_iterator","done","_test$OPTIONS","value","test","OPTIONS","params","getFieldsFromSchema","schema","schemaFields","fields","innerType","options","min","max","push","label","path","reach","yupFieldResolver","getFields","getNestedFields","getNestedSchema","schemaOptions","resolverOptions","resolver","yupResolver","fieldResolver"],"mappings":"wYAaA,IAAMA,EAAU,SAACC,GACf,IAAAC,EAAA,GAAA,OAAAA,EAAID,EAAME,KAAKC,OAAXF,EAAiBG,KACnB,OAAOJ,EAAME,KAAKC,KAAKC,KAGzB,OAAQJ,EAAMI,MACZ,IAAK,QACH,MAAO,QACT,IAAK,SACH,MAAO,SACT,IAAK,SACH,MAAO,SACT,IAAK,OACH,MAAO,OAET,QACE,MAAO,SAIOC,EAAG,SAACL,EAAYM,GAClC,QAAgCC,8qBAAbP,EAAMQ,SAAOD,EAAAE,KAAAC,MAAA,CAAA,IAAAC,IAC9BJ,EAAAK,MAAA,GAAI,OAAJD,EAAIE,EAAKC,UAALH,EAAcI,OAAOT,GAAO,OAAWO,EAACC,QAAQC,OAAOT,KAUlDU,EAAsB,SAACC,GAClC,IAEIC,EAFEC,EAAS,GAUf,IAAK,SALHD,EAFkB,UAAhBD,EAAOb,KAEMa,EAAOG,UAAUD,OAEjBF,EAAOE,OAGS,CAC/B,MAAcD,EAAaZ,KAEF,GACN,UAAfN,EAAMI,OACRiB,EAAQC,IAAMjB,EAAeL,EAAO,OACpCqB,EAAQE,IAAMlB,EAAeL,EAAO,QAGtCmB,EAAOK,QACLlB,KAAAA,EACAmB,MAAOzB,EAAME,KAAKuB,OAASnB,EAC3BF,KAAML,EAAQC,IACXqB,IAGP,YAG6B,SAACJ,EAAyBS,GACvD,OAAOC,EAAAA,MAAMV,EAAQS,IAGME,EAAG,SAACX,GAC/B,MAAO,CACLY,UAAS,WACP,OAA0Bb,EAACC,IAE7Ba,gBAJK,SAIWxB,GACd,OAAOU,EAAoBe,EAAgBd,EAAQX,4MAKlC,SACrBW,EACAe,EACAC,GAEA,YAHAD,IAAAA,IAAAA,EAAgB,SAChBC,IAAAA,IAAAA,EAAkB,IAEX,CACLhB,OAAAA,EACAiB,SAAUC,EAAWA,YAAClB,EAAQe,EAAeC,GAC7CG,cAAeR,EAAiBX"}
1
+ {"version":3,"file":"index.js","sources":["../../yup/src/yup-resolver.ts"],"sourcesContent":["import { reach, AnyObjectSchema } from 'yup'\nimport { yupResolver } from '@hookform/resolvers/yup'\n\nimport { FieldProps } from '@saas-ui/forms'\n\nexport { yupResolver }\n\nexport type Options = {\n min?: number\n max?: number\n}\n\n// @TODO get proper typings for the schema fields\nconst getType = (field: any) => {\n if (field.spec.meta?.type) {\n return field.spec.meta.type\n }\n\n switch (field.type) {\n case 'array':\n return 'array'\n case 'object':\n return 'object'\n case 'number':\n return 'number'\n case 'date':\n return 'date'\n case 'string':\n default:\n return 'text'\n }\n}\n\nconst getArrayOption = (field: any, name: string) => {\n for (const test of field.tests) {\n if (test.OPTIONS?.params[name]) return test.OPTIONS.params[name]\n }\n}\n\n/**\n * A helper function to render forms automatically based on a Yup schema\n *\n * @param schema The Yup schema\n * @returns {FieldProps[]}\n */\nexport const getFieldsFromSchema = (schema: AnyObjectSchema): FieldProps[] => {\n const fields = []\n\n let schemaFields: Record<string, any> = {}\n if (schema.type === 'array') {\n /* @ts-ignore this is actually valid */\n schemaFields = schema.innerType.fields\n } else {\n schemaFields = schema.fields\n }\n\n for (const name in schemaFields) {\n const field = schemaFields[name]\n\n const options: Options = {}\n if (field.type === 'array') {\n options.min = getArrayOption(field, 'min')\n options.max = getArrayOption(field, 'max')\n }\n\n fields.push({\n name,\n label: field.spec.label || name,\n type: getType(field),\n ...options,\n })\n }\n return fields\n}\n\nexport const getNestedSchema = (schema: AnyObjectSchema, path: string) => {\n return reach(schema, path)\n}\n\nexport const yupFieldResolver = (schema: AnyObjectSchema) => {\n return {\n getFields() {\n return getFieldsFromSchema(schema)\n },\n getNestedFields(name: string) {\n return getFieldsFromSchema(getNestedSchema(schema, name))\n },\n }\n}\n\nexport const yupForm = (\n schema: AnyObjectSchema,\n schemaOptions = {},\n resolverOptions = {}\n) => {\n return {\n schema,\n resolver: yupResolver(schema, schemaOptions, resolverOptions),\n fieldResolver: yupFieldResolver(schema),\n }\n}\n"],"names":["getType","field","_field$spec$meta","spec","meta","type","getArrayOption","name","_step","tests","_iterator","done","_test$OPTIONS","value","test","OPTIONS","params","getFieldsFromSchema","schema","schemaFields","fields","innerType","options","min","max","push","label","path","reach","yupFieldResolver","getFields","getNestedFields","getNestedSchema","schemaOptions","resolverOptions","resolver","yupResolver","fieldResolver"],"mappings":"wYAaA,IAAMA,EAAU,SAACC,GACf,IAAAC,EAAA,GAAA,OAAAA,EAAID,EAAME,KAAKC,OAAXF,EAAiBG,KACnB,OAAOJ,EAAME,KAAKC,KAAKC,KAGzB,OAAQJ,EAAMI,MACZ,IAAK,QACH,MAAO,QACT,IAAK,SACH,MAAO,SACT,IAAK,SACH,MAAO,SACT,IAAK,OACH,MAAO,OAET,QACE,MAAO,OAEZ,EAEmBC,EAAG,SAACL,EAAYM,GAClC,QAAgCC,8qBAAbP,EAAMQ,SAAOD,EAAAE,KAAAC,MAAA,CAAA,IAAAC,IAC9BJ,EAAAK,MAAA,GAAI,OAAJD,EAAIE,EAAKC,UAALH,EAAcI,OAAOT,GAAO,OAAWO,EAACC,QAAQC,OAAOT,EAC5D,CACF,EAQYU,EAAsB,SAACC,GAClC,IAEIC,EAFEC,EAAS,GAUf,IAAK,SALHD,EAFkB,UAAhBD,EAAOb,KAEMa,EAAOG,UAAUD,OAEjBF,EAAOE,OAGS,CAC/B,MAAcD,EAAaZ,KAEF,CAAzB,EACmB,UAAfN,EAAMI,OACRiB,EAAQC,IAAMjB,EAAeL,EAAO,OACpCqB,EAAQE,IAAMlB,EAAeL,EAAO,QAGtCmB,EAAOK,QACLlB,KAAAA,EACAmB,MAAOzB,EAAME,KAAKuB,OAASnB,EAC3BF,KAAML,EAAQC,IACXqB,GAEN,CACD,QACD,IAE8B,SAACJ,EAAyBS,GACvD,OAAOC,EAAAA,MAAMV,EAAQS,EACtB,EAE4BE,EAAG,SAACX,GAC/B,MAAO,CACLY,UAAS,WACP,OAA0Bb,EAACC,EAC5B,EACDa,gBAJK,SAIWxB,GACd,OAAOU,EAAoBe,EAAgBd,EAAQX,GACpD,EAEJ,uMAEsB,SACrBW,EACAe,EACAC,GAEA,YAHAD,IAAAA,IAAAA,EAAgB,CAEd,QADFC,IAAAA,IAAAA,EAAkB,CAAA,GAEX,CACLhB,OAAAA,EACAiB,SAAUC,EAAWA,YAAClB,EAAQe,EAAeC,GAC7CG,cAAeR,EAAiBX,GAEnC"}
@@ -1,2 +1,2 @@
1
1
  import{reach as e}from"yup";import{yupResolver as r}from"@hookform/resolvers/yup";export{yupResolver}from"@hookform/resolvers/yup";function t(){return t=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e},t.apply(this,arguments)}const a=e=>{var r;if(null!=(r=e.spec.meta)&&r.type)return e.spec.meta.type;switch(e.type){case"array":return"array";case"object":return"object";case"number":return"number";case"date":return"date";default:return"text"}},s=(e,r)=>{for(const a of e.tests){var t;if(null!=(t=a.OPTIONS)&&t.params[r])return a.OPTIONS.params[r]}},n=e=>{const r=[];let n={};n="array"===e.type?e.innerType.fields:e.fields;for(const e in n){const o=n[e],p={};"array"===o.type&&(p.min=s(o,"min"),p.max=s(o,"max")),r.push(t({name:e,label:o.spec.label||e,type:a(o)},p))}return r},o=(r,t)=>e(r,t),p=e=>({getFields:()=>n(e),getNestedFields:r=>n(o(e,r))}),l=(e,t={},a={})=>({schema:e,resolver:r(e,t,a),fieldResolver:p(e)});export{n as getFieldsFromSchema,o as getNestedSchema,p as yupFieldResolver,l as yupForm};
2
- //# sourceMappingURL=index.modern.mjs.map
2
+ //# sourceMappingURL=index.modern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.modern.js","sources":["../../yup/src/yup-resolver.ts"],"sourcesContent":["import { reach, AnyObjectSchema } from 'yup'\nimport { yupResolver } from '@hookform/resolvers/yup'\n\nimport { FieldProps } from '@saas-ui/forms'\n\nexport { yupResolver }\n\nexport type Options = {\n min?: number\n max?: number\n}\n\n// @TODO get proper typings for the schema fields\nconst getType = (field: any) => {\n if (field.spec.meta?.type) {\n return field.spec.meta.type\n }\n\n switch (field.type) {\n case 'array':\n return 'array'\n case 'object':\n return 'object'\n case 'number':\n return 'number'\n case 'date':\n return 'date'\n case 'string':\n default:\n return 'text'\n }\n}\n\nconst getArrayOption = (field: any, name: string) => {\n for (const test of field.tests) {\n if (test.OPTIONS?.params[name]) return test.OPTIONS.params[name]\n }\n}\n\n/**\n * A helper function to render forms automatically based on a Yup schema\n *\n * @param schema The Yup schema\n * @returns {FieldProps[]}\n */\nexport const getFieldsFromSchema = (schema: AnyObjectSchema): FieldProps[] => {\n const fields = []\n\n let schemaFields: Record<string, any> = {}\n if (schema.type === 'array') {\n /* @ts-ignore this is actually valid */\n schemaFields = schema.innerType.fields\n } else {\n schemaFields = schema.fields\n }\n\n for (const name in schemaFields) {\n const field = schemaFields[name]\n\n const options: Options = {}\n if (field.type === 'array') {\n options.min = getArrayOption(field, 'min')\n options.max = getArrayOption(field, 'max')\n }\n\n fields.push({\n name,\n label: field.spec.label || name,\n type: getType(field),\n ...options,\n })\n }\n return fields\n}\n\nexport const getNestedSchema = (schema: AnyObjectSchema, path: string) => {\n return reach(schema, path)\n}\n\nexport const yupFieldResolver = (schema: AnyObjectSchema) => {\n return {\n getFields() {\n return getFieldsFromSchema(schema)\n },\n getNestedFields(name: string) {\n return getFieldsFromSchema(getNestedSchema(schema, name))\n },\n }\n}\n\nexport const yupForm = (\n schema: AnyObjectSchema,\n schemaOptions = {},\n resolverOptions = {}\n) => {\n return {\n schema,\n resolver: yupResolver(schema, schemaOptions, resolverOptions),\n fieldResolver: yupFieldResolver(schema),\n }\n}\n"],"names":["field","_field$spec$meta","spec","meta","type","getArrayOption","name","test","tests","OPTIONS","_test$OPTIONS","params","getFieldsFromSchema","schema","schemaFields","innerType","fields","options","min","max","push","label","getType","getNestedSchema","path","reach","yupFieldResolver","getFields","getNestedFields","yupForm","schemaOptions","resolverOptions","resolver","yupResolver","fieldResolver"],"mappings":"uWAaA,QAAiBA,IACf,IAAAC,EAAA,GAAI,OAAJA,EAAID,EAAME,KAAKC,OAAXF,EAAiBG,KACnB,OAAOJ,EAAME,KAAKC,KAAKC,KAGzB,OAAQJ,EAAMI,MACZ,IAAK,QACH,MAAO,QACT,IAAK,SACH,MAAO,SACT,IAAK,SACH,MAAO,SACT,IAAK,OACH,MAAO,OAET,QACE,MAAO,OAXX,EAeIC,EAAiB,CAACL,EAAYM,KAClC,IAAK,MAAMC,KAAaP,EAACQ,MAAO,OAC9B,GAAA,OAAID,EAAAA,EAAKE,UAALC,EAAcC,OAAOL,GAAO,OAAOC,EAAKE,QAAQE,OAAOL,EAC5D,GASUM,EAAuBC,IAClC,QAAe,GAEf,MAAwC,GAGtCC,EAFkB,UAAhBD,EAAOT,KAEMS,EAAOE,UAAUC,OAEjBH,EAAOG,OAGxB,IAAK,WAAcF,EAAc,CAC/B,MAAWd,EAAGc,EAAaR,GAEdW,EAAY,CAAzB,EACmB,UAAfjB,EAAMI,OACRa,EAAQC,IAAMb,EAAeL,EAAO,OACpCiB,EAAQE,IAAMd,EAAeL,EAAO,QAGtCgB,EAAOI,KACLd,EAAAA,CAAAA,OACAe,MAAOrB,EAAME,KAAKmB,OAASf,EAC3BF,KAAMkB,EAAQtB,IACXiB,GAEN,CACD,OAAOD,GAGIO,EAAkB,CAACV,EAAyBW,IAChDC,EAAMZ,EAAQW,GAGVE,EAAoBb,IACxB,CACLc,UAAS,IACAf,EAAoBC,GAE7Be,gBAAgBtB,GACPM,EAAoBW,EAAgBV,EAAQP,MAKrCuB,EAAG,CACrBhB,EACAiB,EAAgB,CAFK,EAGrBC,EAAkB,CAAA,KAEX,CACLlB,SACAmB,SAAUC,EAAYpB,EAAQiB,EAAeC,GAC7CG,cAAeR,EAAiBb"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../zod/src/zod-resolver.ts"],"sourcesContent":["import * as z from 'zod'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { get } from '@chakra-ui/utils'\nimport { FieldProps } from '@saas-ui/forms'\n\nexport { zodResolver }\n\nexport type Options = {\n min?: number\n max?: number\n}\n\nconst getType = (field: z.ZodTypeAny) => {\n switch (field._def.typeName) {\n case 'ZodArray':\n return 'array'\n case 'ZodObject':\n return 'object'\n case 'ZodNumber':\n return 'number'\n case 'ZodDate':\n return 'date'\n case 'ZodString':\n default:\n return 'text'\n }\n}\n\nconst getArrayOption = (field: any, name: string) => {\n return field._def[name]?.value\n}\n\n/**\n * A helper function to render forms automatically based on a Yup schema\n *\n * @param schema The Yup schema\n * @returns {FieldProps[]}\n */\nexport const getFieldsFromSchema = (schema: z.ZodTypeAny): FieldProps[] => {\n const fields: FieldProps[] = []\n\n let schemaFields: Record<string, any> = {}\n if (schema._def.typeName === 'ZodArray') {\n schemaFields = schema._def.type.shape\n } else if (schema._def.typeName === 'ZodObject') {\n schemaFields = schema._def.shape()\n } else {\n return fields\n }\n\n for (const name in schemaFields) {\n const field = schemaFields[name]\n\n const options: Options = {}\n if (field._def.typeName === 'ZodArray') {\n options.min = getArrayOption(field, 'minLength')\n options.max = getArrayOption(field, 'maxLength')\n }\n\n const meta = field.description && zodParseMeta(field.description)\n\n fields.push({\n name,\n label: meta?.label || field.description || name,\n type: meta?.type || getType(field),\n ...options,\n })\n }\n return fields\n}\n\nexport const getNestedSchema = (schema: z.ZodTypeAny, path: string) => {\n return get(schema._def.shape(), path)\n}\n\nexport const zodFieldResolver = <T extends z.ZodTypeAny>(schema: T) => {\n return {\n getFields() {\n return getFieldsFromSchema(schema)\n },\n getNestedFields(name: string) {\n return getFieldsFromSchema(getNestedSchema(schema, name))\n },\n }\n}\n\nexport const zodForm = <T extends z.ZodTypeAny>(\n schema: T,\n schemaOptions = {},\n resolverOptions = {}\n) => {\n return {\n schema,\n resolver: zodResolver(schema, schemaOptions, resolverOptions),\n fieldResolver: zodFieldResolver(schema),\n }\n}\n\nexport interface ZodMeta {\n label: string\n type?: string\n}\n\nexport const zodMeta = (meta: ZodMeta) => {\n return JSON.stringify(meta)\n}\n\nexport const zodParseMeta = (meta: string) => {\n try {\n return JSON.parse(meta)\n } catch (e) {\n return meta\n }\n}\n"],"names":["getType","field","_def","typeName","getArrayOption","name","_field$_def$name","value","getFieldsFromSchema","schema","fields","schemaFields","type","shape","options","min","max","meta","description","zodParseMeta","push","label","getNestedSchema","path","get","zodFieldResolver","getFields","getNestedFields","JSON","parse","e","schemaOptions","resolverOptions","resolver","zodResolver","fieldResolver","stringify"],"mappings":"2SAYA,IAAMA,EAAU,SAACC,GACf,OAAQA,EAAMC,KAAKC,UACjB,IAAK,WACH,MAAO,QACT,IAAK,YACH,MAAO,SACT,IAAK,YACH,MAAO,SACT,IAAK,UACH,MAAO,OAET,QACE,MAAO,SAIPC,EAAiB,SAACH,EAAYI,GAClC,IAAAC,EAAA,OAAA,OAAAA,EAAOL,EAAMC,KAAKG,SAAlB,EAAOC,EAAkBC,OASKC,EAAG,SAACC,GAClC,IAAYC,EAAiB,GAEbC,EAAwB,GACxC,GAA6B,aAAzBF,EAAOP,KAAKC,SACdQ,EAAeF,EAAOP,KAAKU,KAAKC,UACvBJ,CAAAA,GAAyB,cAAzBA,EAAOP,KAAKC,SAGrB,OACDO,EAHCC,EAAeF,EAAOP,KAAKW,QAK7B,IAAK,SAAcF,EAAc,CAC/B,IAAMV,EAAQU,EAAaN,GAEdS,EAAY,GACG,aAAxBb,EAAMC,KAAKC,WACbW,EAAQC,IAAMX,EAAeH,EAAO,aACpCa,EAAQE,IAAMZ,EAAeH,EAAO,cAGtC,IAAMgB,EAAOhB,EAAMiB,aAAeC,EAAalB,EAAMiB,aAErDR,EAAOU,QACLf,KAAAA,EACAgB,OAAW,MAAJJ,OAAAA,EAAAA,EAAMI,QAASpB,EAAMiB,aAAeb,EAC3CO,MAAM,MAAAK,OAAA,EAAAA,EAAML,OAAQZ,EAAQC,IACzBa,IAGP,OAAOJ,GAGIY,EAAkB,SAACb,EAAsBc,GACpD,OAAOC,MAAIf,EAAOP,KAAKW,QAASU,IAGLE,EAAG,SAAyBhB,GACvD,MAAO,CACLiB,UAAS,WACP,OAAOlB,EAAoBC,IAE7BkB,gBAJK,SAIWtB,GACd,OAAOG,EAAoBc,EAAgBb,EAAQJ,SA0B7B,SAACY,GAC3B,IACE,OAAWW,KAACC,MAAMZ,GAClB,MAAOa,GACP,OACDb,yMA1BoB,SACrBR,EACAsB,EACAC,GAEA,YAHAD,IAAAA,IAAAA,EAAgB,SAEd,IADFC,IAAAA,EAAkB,IAEX,CACLvB,OAAAA,EACAwB,SAAUC,EAAAA,YAAYzB,EAAQsB,EAAeC,GAC7CG,cAAeV,EAAiBhB,qBASb,SAACQ,GACtB,OAAOW,KAAKQ,UAAUnB"}
1
+ {"version":3,"file":"index.js","sources":["../../zod/src/zod-resolver.ts"],"sourcesContent":["import * as z from 'zod'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { get } from '@chakra-ui/utils'\nimport { FieldProps } from '@saas-ui/forms'\n\nexport { zodResolver }\n\nexport type Options = {\n min?: number\n max?: number\n}\n\nconst getType = (field: z.ZodTypeAny) => {\n switch (field._def.typeName) {\n case 'ZodArray':\n return 'array'\n case 'ZodObject':\n return 'object'\n case 'ZodNumber':\n return 'number'\n case 'ZodDate':\n return 'date'\n case 'ZodString':\n default:\n return 'text'\n }\n}\n\nconst getArrayOption = (field: any, name: string) => {\n return field._def[name]?.value\n}\n\n/**\n * A helper function to render forms automatically based on a Yup schema\n *\n * @param schema The Yup schema\n * @returns {FieldProps[]}\n */\nexport const getFieldsFromSchema = (schema: z.ZodTypeAny): FieldProps[] => {\n const fields: FieldProps[] = []\n\n let schemaFields: Record<string, any> = {}\n if (schema._def.typeName === 'ZodArray') {\n schemaFields = schema._def.type.shape\n } else if (schema._def.typeName === 'ZodObject') {\n schemaFields = schema._def.shape()\n } else {\n return fields\n }\n\n for (const name in schemaFields) {\n const field = schemaFields[name]\n\n const options: Options = {}\n if (field._def.typeName === 'ZodArray') {\n options.min = getArrayOption(field, 'minLength')\n options.max = getArrayOption(field, 'maxLength')\n }\n\n const meta = field.description && zodParseMeta(field.description)\n\n fields.push({\n name,\n label: meta?.label || field.description || name,\n type: meta?.type || getType(field),\n ...options,\n })\n }\n return fields\n}\n\nexport const getNestedSchema = (schema: z.ZodTypeAny, path: string) => {\n return get(schema._def.shape(), path)\n}\n\nexport const zodFieldResolver = <T extends z.ZodTypeAny>(schema: T) => {\n return {\n getFields() {\n return getFieldsFromSchema(schema)\n },\n getNestedFields(name: string) {\n return getFieldsFromSchema(getNestedSchema(schema, name))\n },\n }\n}\n\nexport const zodForm = <T extends z.ZodTypeAny>(\n schema: T,\n schemaOptions = {},\n resolverOptions = {}\n) => {\n return {\n schema,\n resolver: zodResolver(schema, schemaOptions, resolverOptions),\n fieldResolver: zodFieldResolver(schema),\n }\n}\n\nexport interface ZodMeta {\n label: string\n type?: string\n}\n\nexport const zodMeta = (meta: ZodMeta) => {\n return JSON.stringify(meta)\n}\n\nexport const zodParseMeta = (meta: string) => {\n try {\n return JSON.parse(meta)\n } catch (e) {\n return meta\n }\n}\n"],"names":["getType","field","_def","typeName","getArrayOption","name","_field$_def$name","value","getFieldsFromSchema","schema","fields","schemaFields","type","shape","options","min","max","meta","description","zodParseMeta","push","label","getNestedSchema","path","get","zodFieldResolver","getFields","getNestedFields","JSON","parse","e","schemaOptions","resolverOptions","resolver","zodResolver","fieldResolver","stringify"],"mappings":"2SAYA,IAAMA,EAAU,SAACC,GACf,OAAQA,EAAMC,KAAKC,UACjB,IAAK,WACH,MAAO,QACT,IAAK,YACH,MAAO,SACT,IAAK,YACH,MAAO,SACT,IAAK,UACH,MAAO,OAET,QACE,MAAO,OAEZ,EAEKC,EAAiB,SAACH,EAAYI,GAClC,IAAAC,EAAA,OAAA,OAAAA,EAAOL,EAAMC,KAAKG,SAAlB,EAAOC,EAAkBC,KAC1B,EAQ+BC,EAAG,SAACC,GAClC,IAAYC,EAAiB,GAEbC,EAAwB,CAAA,EACxC,GAA6B,aAAzBF,EAAOP,KAAKC,SACdQ,EAAeF,EAAOP,KAAKU,KAAKC,UACvBJ,IAAyB,cAAzBA,EAAOP,KAAKC,SAGrB,OACDO,EAHCC,EAAeF,EAAOP,KAAKW,OAG5B,CAED,IAAK,SAAcF,EAAc,CAC/B,IAAMV,EAAQU,EAAaN,GAEdS,EAAY,CAAzB,EAC4B,aAAxBb,EAAMC,KAAKC,WACbW,EAAQC,IAAMX,EAAeH,EAAO,aACpCa,EAAQE,IAAMZ,EAAeH,EAAO,cAGtC,IAAMgB,EAAOhB,EAAMiB,aAAeC,EAAalB,EAAMiB,aAErDR,EAAOU,QACLf,KAAAA,EACAgB,OAAW,MAAJJ,OAAAA,EAAAA,EAAMI,QAASpB,EAAMiB,aAAeb,EAC3CO,MAAM,MAAAK,OAAA,EAAAA,EAAML,OAAQZ,EAAQC,IACzBa,GAEN,CACD,OAAOJ,CACR,EAEYY,EAAkB,SAACb,EAAsBc,GACpD,OAAOC,MAAIf,EAAOP,KAAKW,QAASU,EACjC,EAE4BE,EAAG,SAAyBhB,GACvD,MAAO,CACLiB,UAAS,WACP,OAAOlB,EAAoBC,EAC5B,EACDkB,gBAJK,SAIWtB,GACd,OAAOG,EAAoBc,EAAgBb,EAAQJ,GACpD,EAEJ,IAuB2B,SAACY,GAC3B,IACE,OAAWW,KAACC,MAAMZ,EAGnB,CAFC,MAAOa,GACP,OACDb,CAAA,CACF,uMA3BsB,SACrBR,EACAsB,EACAC,GAEA,YAHAD,IAAAA,IAAAA,EAAgB,CAAA,QAEd,IADFC,IAAAA,EAAkB,CAAA,GAEX,CACLvB,OAAAA,EACAwB,SAAUC,EAAAA,YAAYzB,EAAQsB,EAAeC,GAC7CG,cAAeV,EAAiBhB,GAEnC,kBAOsB,SAACQ,GACtB,OAAOW,KAAKQ,UAAUnB,EACvB"}
@@ -1,2 +1,2 @@
1
1
  import{zodResolver as e}from"@hookform/resolvers/zod";export{zodResolver}from"@hookform/resolvers/zod";import{get as r}from"@chakra-ui/utils";function t(){return t=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},t.apply(this,arguments)}const o=e=>{switch(e._def.typeName){case"ZodArray":return"array";case"ZodObject":return"object";case"ZodNumber":return"number";case"ZodDate":return"date";default:return"text"}},n=(e,r)=>{var t;return null==(t=e._def[r])?void 0:t.value},a=e=>{const r=[];let a={};if("ZodArray"===e._def.typeName)a=e._def.type.shape;else{if("ZodObject"!==e._def.typeName)return r;a=e._def.shape()}for(const e in a){const s=a[e],d={};"ZodArray"===s._def.typeName&&(d.min=n(s,"minLength"),d.max=n(s,"maxLength"));const i=s.description&&c(s.description);r.push(t({name:e,label:(null==i?void 0:i.label)||s.description||e,type:(null==i?void 0:i.type)||o(s)},d))}return r},s=(e,t)=>r(e._def.shape(),t),d=e=>({getFields:()=>a(e),getNestedFields:r=>a(s(e,r))}),i=(r,t={},o={})=>({schema:r,resolver:e(r,t,o),fieldResolver:d(r)}),l=e=>JSON.stringify(e),c=e=>{try{return JSON.parse(e)}catch(r){return e}};export{a as getFieldsFromSchema,s as getNestedSchema,d as zodFieldResolver,i as zodForm,l as zodMeta,c as zodParseMeta};
2
- //# sourceMappingURL=index.modern.mjs.map
2
+ //# sourceMappingURL=index.modern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.modern.js","sources":["../../zod/src/zod-resolver.ts"],"sourcesContent":["import * as z from 'zod'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { get } from '@chakra-ui/utils'\nimport { FieldProps } from '@saas-ui/forms'\n\nexport { zodResolver }\n\nexport type Options = {\n min?: number\n max?: number\n}\n\nconst getType = (field: z.ZodTypeAny) => {\n switch (field._def.typeName) {\n case 'ZodArray':\n return 'array'\n case 'ZodObject':\n return 'object'\n case 'ZodNumber':\n return 'number'\n case 'ZodDate':\n return 'date'\n case 'ZodString':\n default:\n return 'text'\n }\n}\n\nconst getArrayOption = (field: any, name: string) => {\n return field._def[name]?.value\n}\n\n/**\n * A helper function to render forms automatically based on a Yup schema\n *\n * @param schema The Yup schema\n * @returns {FieldProps[]}\n */\nexport const getFieldsFromSchema = (schema: z.ZodTypeAny): FieldProps[] => {\n const fields: FieldProps[] = []\n\n let schemaFields: Record<string, any> = {}\n if (schema._def.typeName === 'ZodArray') {\n schemaFields = schema._def.type.shape\n } else if (schema._def.typeName === 'ZodObject') {\n schemaFields = schema._def.shape()\n } else {\n return fields\n }\n\n for (const name in schemaFields) {\n const field = schemaFields[name]\n\n const options: Options = {}\n if (field._def.typeName === 'ZodArray') {\n options.min = getArrayOption(field, 'minLength')\n options.max = getArrayOption(field, 'maxLength')\n }\n\n const meta = field.description && zodParseMeta(field.description)\n\n fields.push({\n name,\n label: meta?.label || field.description || name,\n type: meta?.type || getType(field),\n ...options,\n })\n }\n return fields\n}\n\nexport const getNestedSchema = (schema: z.ZodTypeAny, path: string) => {\n return get(schema._def.shape(), path)\n}\n\nexport const zodFieldResolver = <T extends z.ZodTypeAny>(schema: T) => {\n return {\n getFields() {\n return getFieldsFromSchema(schema)\n },\n getNestedFields(name: string) {\n return getFieldsFromSchema(getNestedSchema(schema, name))\n },\n }\n}\n\nexport const zodForm = <T extends z.ZodTypeAny>(\n schema: T,\n schemaOptions = {},\n resolverOptions = {}\n) => {\n return {\n schema,\n resolver: zodResolver(schema, schemaOptions, resolverOptions),\n fieldResolver: zodFieldResolver(schema),\n }\n}\n\nexport interface ZodMeta {\n label: string\n type?: string\n}\n\nexport const zodMeta = (meta: ZodMeta) => {\n return JSON.stringify(meta)\n}\n\nexport const zodParseMeta = (meta: string) => {\n try {\n return JSON.parse(meta)\n } catch (e) {\n return meta\n }\n}\n"],"names":["field","_def","typeName","getArrayOption","name","_field$_def$name","value","getFieldsFromSchema","schema","fields","schemaFields","type","shape","options","min","max","meta","description","zodParseMeta","push","_extends","label","getType","getNestedSchema","path","get","zodFieldResolver","getFields","getNestedFields","zodForm","schemaOptions","resolverOptions","resolver","zodResolver","fieldResolver","zodMeta","JSON","stringify","parse","e"],"mappings":"kXAYA,QAAiBA,IACf,OAAQA,EAAMC,KAAKC,UACjB,IAAK,WACH,MAAO,QACT,IAAK,YACH,MAAO,SACT,IAAK,YACH,MAAO,SACT,IAAK,UACH,MAAO,OAET,QACE,MAAO,OAXX,EAekBC,EAAG,CAACH,EAAYI,KAAgB,IAAAC,EAClD,cAAOL,EAAAA,EAAMC,KAAKG,WAAXC,EAAkBC,OASKC,EAAIC,IAClC,MAAYC,EAAiB,GAE7B,IAAgBC,EAAwB,CAAxC,EACA,GAA6B,aAAzBF,EAAOP,KAAKC,SACdQ,EAAeF,EAAOP,KAAKU,KAAKC,UACvBJ,IAAyB,cAAzBA,EAAOP,KAAKC,SAGrB,SAFAQ,EAAeF,EAAOP,KAAKW,OAG5B,CAED,IAAK,MAAMR,KAAQM,EAAc,CAC/B,QAAcA,EAAaN,GAErBS,EAAmB,CAAA,EACG,aAAxBb,EAAMC,KAAKC,WACbW,EAAQC,IAAMX,EAAeH,EAAO,aACpCa,EAAQE,IAAMZ,EAAeH,EAAO,cAGtC,MAAUgB,EAAGhB,EAAMiB,aAAeC,EAAalB,EAAMiB,aAErDR,EAAOU,KAAPC,EAAA,CACEhB,OACAiB,aAAOL,OAAAA,EAAAA,EAAMK,QAASrB,EAAMiB,aAAeb,EAC3CO,MAAM,MAAAK,OAAA,EAAAA,EAAML,OAAQW,EAAQtB,IACzBa,GAEN,CACD,UAGWU,EAAkB,CAACf,EAAsBgB,IAC7CC,EAAIjB,EAAOP,KAAKW,QAASY,GAGLE,EAA4BlB,IAChD,CACLmB,UAAS,MACoBnB,GAE7BoB,gBAAgBxB,GACPG,EAAoBgB,EAAgBf,EAAQJ,MAK5CyB,EAAU,CACrBrB,EACAsB,EAAgB,CAFK,EAGrBC,EAAkB,CAAA,KAEX,CACLvB,SACAwB,SAAUC,EAAYzB,EAAQsB,EAAeC,GAC7CG,cAAeR,EAAiBlB,KAShB2B,EAAInB,GACXoB,KAACC,UAAUrB,GAGCE,EAAIF,IAC3B,IACE,YAAYsB,MAAMtB,EAGnB,CAFC,MAAOuB,GACP,OACDvB,CAAA"}
package/package.json CHANGED
@@ -1,40 +1,40 @@
1
1
  {
2
2
  "name": "@saas-ui/forms",
3
- "version": "1.0.3",
3
+ "version": "1.1.0",
4
4
  "description": "Fully functional forms for Chakra UI.",
5
5
  "source": "src/index.ts",
6
6
  "exports": {
7
7
  ".": {
8
8
  "require": "./dist/index.js",
9
- "default": "./dist/index.modern.mjs"
9
+ "import": "./dist/index.modern.js"
10
10
  },
11
11
  "./src": {
12
12
  "default": "./src/index.ts"
13
13
  },
14
14
  "./yup": {
15
15
  "require": "./dist/yup/index.js",
16
- "default": "./dist/yup/index.modern.mjs"
16
+ "import": "./dist/yup/index.modern.js"
17
17
  },
18
18
  "./yup/src": {
19
19
  "default": "./yup/src/index.ts"
20
20
  },
21
21
  "./zod": {
22
22
  "require": "./dist/zod/index.js",
23
- "default": "./dist/zod/index.modern.mjs"
23
+ "import": "./dist/zod/index.modern.js"
24
24
  },
25
25
  "./zod/src": {
26
26
  "default": "./zod/src/index.ts"
27
27
  },
28
28
  "./ajv": {
29
29
  "require": "./dist/ajv/index.js",
30
- "default": "./dist/ajv/index.modern.mjs"
30
+ "import": "./dist/ajv/index.modern.js"
31
31
  },
32
32
  "./ajv/src": {
33
33
  "default": "./ajv/src/index.ts"
34
34
  }
35
35
  },
36
36
  "main": "./dist/index.js",
37
- "module": "./dist/index.modern.mjs",
37
+ "module": "./dist/index.modern.js",
38
38
  "types": "./dist/index.d.ts",
39
39
  "scripts": {
40
40
  "clean": "rimraf --no-glob ./dist",
@@ -93,15 +93,15 @@
93
93
  "@chakra-ui/react-utils": "^2.0.1",
94
94
  "@chakra-ui/utils": "^2.0.2",
95
95
  "@hookform/resolvers": "^2.9.0",
96
- "@saas-ui/button": "1.0.0",
97
- "@saas-ui/input-right-button": "1.0.1",
98
- "@saas-ui/number-input": "1.0.0",
99
- "@saas-ui/password-input": "1.0.2",
100
- "@saas-ui/pin-input": "1.0.0",
101
- "@saas-ui/radio": "1.0.0",
102
- "@saas-ui/react-utils": "1.0.0",
103
- "@saas-ui/select": "1.0.0",
104
- "@saas-ui/stepper": "1.0.0",
96
+ "@saas-ui/button": "1.1.0",
97
+ "@saas-ui/input-right-button": "1.1.0",
98
+ "@saas-ui/number-input": "1.1.0",
99
+ "@saas-ui/password-input": "1.1.0",
100
+ "@saas-ui/pin-input": "1.1.0",
101
+ "@saas-ui/radio": "1.1.0",
102
+ "@saas-ui/react-utils": "1.1.0",
103
+ "@saas-ui/select": "1.1.0",
104
+ "@saas-ui/stepper": "1.1.0",
105
105
  "react-hook-form": "^7.33.1"
106
106
  },
107
107
  "peerDependencies": {
package/yup/package.json CHANGED
@@ -1,11 +1,20 @@
1
1
  {
2
- "name": "yup",
2
+ "name": "yup-resolver",
3
3
  "description": "Saas UI Forms field resolver: yup",
4
4
  "version": "1.0.0",
5
5
  "private": true,
6
+ "exports": {
7
+ ".": {
8
+ "require": "./../dist/yup/index.js",
9
+ "import": "./../dist/yup/index.modern.js"
10
+ },
11
+ "./src": {
12
+ "default": "./src/index.ts"
13
+ }
14
+ },
6
15
  "source": "./src/index.ts",
7
16
  "main": "../dist/yup/index.js",
8
- "module": "../dist/yup/index.modern.mjs",
17
+ "module": "../dist/yup/index.modern.js",
9
18
  "types": "../dist/yup/index.d.ts",
10
19
  "author": "Eelco Wiersma <eelco@appulse.nl>",
11
20
  "license": "MIT",
package/zod/package.json CHANGED
@@ -1,11 +1,20 @@
1
1
  {
2
- "name": "zod",
2
+ "name": "zod-resolver",
3
3
  "description": "Saas UI Forms field resolver: zod",
4
4
  "version": "1.0.0",
5
5
  "private": true,
6
+ "exports": {
7
+ ".": {
8
+ "require": "./../dist/zod/index.js",
9
+ "import": "./../dist/zod/index.modern.js"
10
+ },
11
+ "./src": {
12
+ "default": "./src/index.ts"
13
+ }
14
+ },
6
15
  "source": "./src/index.ts",
7
16
  "main": "../dist/zod/index.js",
8
- "module": "../dist/zod/index.modern.mjs",
17
+ "module": "../dist/zod/index.modern.js",
9
18
  "types": "../dist/zod/index.d.ts",
10
19
  "author": "Eelco Wiersma <eelco@appulse.nl>",
11
20
  "license": "MIT",