diff --git a/bsconfig.json b/bsconfig.json new file mode 100644 index 00000000..c700ff0e --- /dev/null +++ b/bsconfig.json @@ -0,0 +1,20 @@ +{ + "name": "reform-monorepo", + "sources": [ + { + "dir": "src/", + "subdirs": true + } + ], + "package-specs": [ + { + "module": "commonjs", + "in-source": true + } + ], + "warnings": { + "error": false + }, + "suffix": ".bs.js", + "bs-dependencies": ["@rescriptbr/reform"] +} diff --git a/package.json b/package.json index a31121ef..86f1e6b1 100644 --- a/package.json +++ b/package.json @@ -35,9 +35,9 @@ }, "pre-commit": "lint:staged", "workspaces": [ - "reform", - "website", - "demo" + "packages/reform", + "packages/website", + "packages/demo" ], "husky": { "hooks": { @@ -48,8 +48,9 @@ "scripts": { "docs:watch": "yarn workspace website start", "docs:build": "yarn workspace website build", - "res:watch": "yarn workspace @rescriptbr/reform res:watch", - "res:build": "yarn workspace @rescriptbr/reform res:build", + "res:watch": "rewatch watch", + "res:build": "rewatch build", + "res:clean": "rewatch clean", "res:setup": "yarn workspace @rescriptbr/reform res:setup", "test": "yarn workspace @rescriptbr/reform test", "test:watch": "yarn workspace @rescriptbr/reform test:watch", @@ -57,6 +58,7 @@ "demo:build": "yarn workspace demo build" }, "dependencies": { - "rescript": "9.1.4" + "@rolandpeelen/rewatch": "^0.0.11", + "rescript": "^10.1.4" } } diff --git a/demo/.editorconfig b/packages/demo/.editorconfig similarity index 100% rename from demo/.editorconfig rename to packages/demo/.editorconfig diff --git a/demo/.gitignore b/packages/demo/.gitignore similarity index 100% rename from demo/.gitignore rename to packages/demo/.gitignore diff --git a/demo/bsconfig.json b/packages/demo/bsconfig.json similarity index 100% rename from demo/bsconfig.json rename to packages/demo/bsconfig.json diff --git a/demo/index.html b/packages/demo/index.html similarity index 100% rename from demo/index.html rename to packages/demo/index.html diff --git a/demo/package.json b/packages/demo/package.json similarity index 100% rename from demo/package.json rename to packages/demo/package.json diff --git a/demo/public/_redirects b/packages/demo/public/_redirects similarity index 100% rename from demo/public/_redirects rename to packages/demo/public/_redirects diff --git a/demo/src/App.res b/packages/demo/src/App.res similarity index 100% rename from demo/src/App.res rename to packages/demo/src/App.res diff --git a/demo/src/Main.res b/packages/demo/src/Main.res similarity index 100% rename from demo/src/Main.res rename to packages/demo/src/Main.res diff --git a/demo/src/bindings/Emotion.res b/packages/demo/src/bindings/Emotion.res similarity index 100% rename from demo/src/bindings/Emotion.res rename to packages/demo/src/bindings/Emotion.res diff --git a/demo/src/components/Button.res b/packages/demo/src/components/Button.res similarity index 100% rename from demo/src/components/Button.res rename to packages/demo/src/components/Button.res diff --git a/demo/src/components/Header.res b/packages/demo/src/components/Header.res similarity index 100% rename from demo/src/components/Header.res rename to packages/demo/src/components/Header.res diff --git a/demo/src/components/Input.res b/packages/demo/src/components/Input.res similarity index 100% rename from demo/src/components/Input.res rename to packages/demo/src/components/Input.res diff --git a/demo/src/main.jsx b/packages/demo/src/main.jsx similarity index 100% rename from demo/src/main.jsx rename to packages/demo/src/main.jsx diff --git a/demo/src/pages/Login.res b/packages/demo/src/pages/Login.res similarity index 100% rename from demo/src/pages/Login.res rename to packages/demo/src/pages/Login.res diff --git a/demo/src/pages/SignUp.res b/packages/demo/src/pages/SignUp.res similarity index 100% rename from demo/src/pages/SignUp.res rename to packages/demo/src/pages/SignUp.res diff --git a/demo/vite.config.js b/packages/demo/vite.config.js similarity index 100% rename from demo/vite.config.js rename to packages/demo/vite.config.js diff --git a/reform/.gitignore b/packages/reform/.gitignore similarity index 100% rename from reform/.gitignore rename to packages/reform/.gitignore diff --git a/reform/.npmignore b/packages/reform/.npmignore similarity index 100% rename from reform/.npmignore rename to packages/reform/.npmignore diff --git a/reform/CHANGELOG.md b/packages/reform/CHANGELOG.md similarity index 100% rename from reform/CHANGELOG.md rename to packages/reform/CHANGELOG.md diff --git a/reform/bsconfig.json b/packages/reform/bsconfig.json similarity index 100% rename from reform/bsconfig.json rename to packages/reform/bsconfig.json diff --git a/reform/jest.config.js b/packages/reform/jest.config.js similarity index 100% rename from reform/jest.config.js rename to packages/reform/jest.config.js diff --git a/reform/package.json b/packages/reform/package.json similarity index 91% rename from reform/package.json rename to packages/reform/package.json index 911f19c3..e31f049d 100644 --- a/reform/package.json +++ b/packages/reform/package.json @@ -21,11 +21,11 @@ "license": "MIT", "peerDependencies": { "@rescript/react": "^0.10.3", - "rescript": "^9.1.1" + "rescript": "^10.1.4" }, "devDependencies": { "@rescript/react": "^0.10.1", - "rescript": "^9.1.1" + "rescript": "^10.1.4" }, "scripts": { "start": "yarn res:watch", @@ -36,6 +36,6 @@ }, "dependencies": { "@rescriptbr/reschema": "^3.0.3", - "rescript-react-update": "^3.0.1" + "rescript": "^10.1.4" } } diff --git a/reform/src/ReForm.res b/packages/reform/src/ReForm.res similarity index 100% rename from reform/src/ReForm.res rename to packages/reform/src/ReForm.res diff --git a/reform/src/ReForm__Helpers.res b/packages/reform/src/ReForm__Helpers.res similarity index 52% rename from reform/src/ReForm__Helpers.res rename to packages/reform/src/ReForm__Helpers.res index 4568b01c..75d95622 100644 --- a/reform/src/ReForm__Helpers.res +++ b/packages/reform/src/ReForm__Helpers.res @@ -1,8 +1,6 @@ -let handleChange = (handleChange, event) => - handleChange(ReactEvent.Form.target(event)["value"]) +let handleChange = (handleChange, event) => handleChange(ReactEvent.Form.target(event)["value"]) let handleSubmit = (handleSubmit, event) => { ReactEvent.Synthetic.preventDefault(event) handleSubmit() } - diff --git a/website/.gitignore b/packages/website/.gitignore similarity index 100% rename from website/.gitignore rename to packages/website/.gitignore diff --git a/website/README.md b/packages/website/README.md similarity index 100% rename from website/README.md rename to packages/website/README.md diff --git a/website/babel.config.js b/packages/website/babel.config.js similarity index 100% rename from website/babel.config.js rename to packages/website/babel.config.js diff --git a/website/bsconfig.json b/packages/website/bsconfig.json similarity index 100% rename from website/bsconfig.json rename to packages/website/bsconfig.json diff --git a/website/docs/__bindings/Emotion.res b/packages/website/docs/__bindings/Emotion.res similarity index 100% rename from website/docs/__bindings/Emotion.res rename to packages/website/docs/__bindings/Emotion.res diff --git a/website/docs/__components/Button.res b/packages/website/docs/__components/Button.res similarity index 100% rename from website/docs/__components/Button.res rename to packages/website/docs/__components/Button.res diff --git a/website/docs/__components/CodeBlock.res b/packages/website/docs/__components/CodeBlock.res similarity index 100% rename from website/docs/__components/CodeBlock.res rename to packages/website/docs/__components/CodeBlock.res diff --git a/website/docs/__components/Input.res b/packages/website/docs/__components/Input.res similarity index 100% rename from website/docs/__components/Input.res rename to packages/website/docs/__components/Input.res diff --git a/website/docs/__components/Preview.res b/packages/website/docs/__components/Preview.res similarity index 100% rename from website/docs/__components/Preview.res rename to packages/website/docs/__components/Preview.res diff --git a/website/docs/__components/index.js b/packages/website/docs/__components/index.js similarity index 100% rename from website/docs/__components/index.js rename to packages/website/docs/__components/index.js diff --git a/website/docs/api/field.md b/packages/website/docs/api/field.md similarity index 100% rename from website/docs/api/field.md rename to packages/website/docs/api/field.md diff --git a/website/docs/api/provider.md b/packages/website/docs/api/provider.md similarity index 100% rename from website/docs/api/provider.md rename to packages/website/docs/api/provider.md diff --git a/website/docs/api/reform-helpers.md b/packages/website/docs/api/reform-helpers.md similarity index 100% rename from website/docs/api/reform-helpers.md rename to packages/website/docs/api/reform-helpers.md diff --git a/website/docs/api/reform-make.md b/packages/website/docs/api/reform-make.md similarity index 100% rename from website/docs/api/reform-make.md rename to packages/website/docs/api/reform-make.md diff --git a/website/docs/api/reform-use.md b/packages/website/docs/api/reform-use.md similarity index 100% rename from website/docs/api/reform-use.md rename to packages/website/docs/api/reform-use.md diff --git a/website/docs/api/reform.md b/packages/website/docs/api/reform.md similarity index 100% rename from website/docs/api/reform.md rename to packages/website/docs/api/reform.md diff --git a/website/docs/api/use-form-context.md b/packages/website/docs/api/use-form-context.md similarity index 100% rename from website/docs/api/use-form-context.md rename to packages/website/docs/api/use-form-context.md diff --git a/website/docs/getting-started/SignUpForm_FormHook.res b/packages/website/docs/getting-started/SignUpForm_FormHook.res similarity index 100% rename from website/docs/getting-started/SignUpForm_FormHook.res rename to packages/website/docs/getting-started/SignUpForm_FormHook.res diff --git a/website/docs/getting-started/SignUpForm_HandlingChanges.res b/packages/website/docs/getting-started/SignUpForm_HandlingChanges.res similarity index 100% rename from website/docs/getting-started/SignUpForm_HandlingChanges.res rename to packages/website/docs/getting-started/SignUpForm_HandlingChanges.res diff --git a/website/docs/getting-started/SignUpForm_Markup.res b/packages/website/docs/getting-started/SignUpForm_Markup.res similarity index 100% rename from website/docs/getting-started/SignUpForm_Markup.res rename to packages/website/docs/getting-started/SignUpForm_Markup.res diff --git a/website/docs/getting-started/SignUpForm_Submit.res b/packages/website/docs/getting-started/SignUpForm_Submit.res similarity index 100% rename from website/docs/getting-started/SignUpForm_Submit.res rename to packages/website/docs/getting-started/SignUpForm_Submit.res diff --git a/website/docs/getting-started/getting-started.md b/packages/website/docs/getting-started/getting-started.md similarity index 100% rename from website/docs/getting-started/getting-started.md rename to packages/website/docs/getting-started/getting-started.md diff --git a/website/docs/installation.md b/packages/website/docs/installation.md similarity index 100% rename from website/docs/installation.md rename to packages/website/docs/installation.md diff --git a/website/docs/what-and-why.md b/packages/website/docs/what-and-why.md similarity index 100% rename from website/docs/what-and-why.md rename to packages/website/docs/what-and-why.md diff --git a/website/docusaurus.config.js b/packages/website/docusaurus.config.js similarity index 100% rename from website/docusaurus.config.js rename to packages/website/docusaurus.config.js diff --git a/website/package.json b/packages/website/package.json similarity index 100% rename from website/package.json rename to packages/website/package.json diff --git a/website/sidebars.js b/packages/website/sidebars.js similarity index 100% rename from website/sidebars.js rename to packages/website/sidebars.js diff --git a/website/src/css/custom.css b/packages/website/src/css/custom.css similarity index 100% rename from website/src/css/custom.css rename to packages/website/src/css/custom.css diff --git a/website/src/pages/index.js b/packages/website/src/pages/index.js similarity index 100% rename from website/src/pages/index.js rename to packages/website/src/pages/index.js diff --git a/website/src/pages/styles.module.css b/packages/website/src/pages/styles.module.css similarity index 100% rename from website/src/pages/styles.module.css rename to packages/website/src/pages/styles.module.css diff --git a/website/src/theme/prism-include-languages.js b/packages/website/src/theme/prism-include-languages.js similarity index 100% rename from website/src/theme/prism-include-languages.js rename to packages/website/src/theme/prism-include-languages.js diff --git a/website/static/.nojekyll b/packages/website/static/.nojekyll similarity index 100% rename from website/static/.nojekyll rename to packages/website/static/.nojekyll diff --git a/website/static/img/activity.svg b/packages/website/static/img/activity.svg similarity index 100% rename from website/static/img/activity.svg rename to packages/website/static/img/activity.svg diff --git a/website/static/img/docusaurus.png b/packages/website/static/img/docusaurus.png similarity index 100% rename from website/static/img/docusaurus.png rename to packages/website/static/img/docusaurus.png diff --git a/website/static/img/favicon.ico b/packages/website/static/img/favicon.ico similarity index 100% rename from website/static/img/favicon.ico rename to packages/website/static/img/favicon.ico diff --git a/website/static/img/focus.svg b/packages/website/static/img/focus.svg similarity index 100% rename from website/static/img/focus.svg rename to packages/website/static/img/focus.svg diff --git a/website/static/img/hero-logo.svg b/packages/website/static/img/hero-logo.svg similarity index 100% rename from website/static/img/hero-logo.svg rename to packages/website/static/img/hero-logo.svg diff --git a/website/static/img/logo.svg b/packages/website/static/img/logo.svg similarity index 100% rename from website/static/img/logo.svg rename to packages/website/static/img/logo.svg diff --git a/website/static/img/powerful.svg b/packages/website/static/img/powerful.svg similarity index 100% rename from website/static/img/powerful.svg rename to packages/website/static/img/powerful.svg diff --git a/reform/src/ReForm.bs.js b/reform/src/ReForm.bs.js deleted file mode 100644 index 07e49aa1..00000000 --- a/reform/src/ReForm.bs.js +++ /dev/null @@ -1,605 +0,0 @@ -// Generated by ReScript, PLEASE EDIT WITH CARE - -import * as Curry from "rescript/lib/es6/curry.js"; -import * as React from "react"; -import * as Caml_obj from "rescript/lib/es6/caml_obj.js"; -import * as ReSchema from "@rescriptbr/reschema/src/ReSchema.bs.js"; -import * as Belt_Array from "rescript/lib/es6/belt_Array.js"; -import * as Belt_Option from "rescript/lib/es6/belt_Option.js"; -import * as Caml_option from "rescript/lib/es6/caml_option.js"; -import * as ReactUpdate from "rescript-react-update/src/ReactUpdate.bs.js"; -import * as ReSchemaI18n from "@rescriptbr/reschema/src/ReSchemaI18n.bs.js"; - -function Make(Config) { - var ReSchema$1 = ReSchema.Make(Config); - var getInitialFieldsState = function (schema) { - return Belt_Array.map(schema, (function (validator) { - return [ - /* Field */{ - _0: validator.field - }, - /* Pristine */0 - ]; - })); - }; - var formContext = React.createContext(undefined); - var useFormContext = function (param) { - return React.useContext(formContext); - }; - var useField = function (field) { - var $$interface = React.useContext(formContext); - return Belt_Option.map($$interface, (function (param) { - var validateField = param.validateField; - return { - handleChange: Curry._1(param.handleChange, field), - error: Curry._1(param.getFieldError, /* Field */{ - _0: field - }), - state: Curry._1(param.getFieldState, /* Field */{ - _0: field - }), - validate: (function (param) { - return Curry._1(validateField, /* Field */{ - _0: field - }); - }), - value: Curry._2(Config.get, param.state.values, field) - }; - })); - }; - var makeProps = function (value, children, param) { - return { - value: Caml_option.some(value), - children: children - }; - }; - var make = formContext.Provider; - var Provider = { - makeProps: makeProps, - make: make - }; - var ReForm$Make$Field = function (Props) { - var field = Props.field; - var render = Props.render; - var renderOnMissingContextOpt = Props.renderOnMissingContext; - var renderOnMissingContext = renderOnMissingContextOpt !== undefined ? Caml_option.valFromOption(renderOnMissingContextOpt) : null; - var fieldInterface = useField(field); - return React.useMemo((function () { - return Belt_Option.getWithDefault(Belt_Option.map(fieldInterface, render), renderOnMissingContext); - }), [ - Belt_Option.map(fieldInterface, (function (param) { - return param.error; - })), - Belt_Option.map(fieldInterface, (function (param) { - return param.value; - })), - Belt_Option.map(fieldInterface, (function (param) { - return param.state; - })) - ]); - }; - var Field = { - make: ReForm$Make$Field - }; - var use = function (initialState, schema, onSubmit, onSubmitFailOpt, i18nOpt, validationStrategyOpt, param) { - var onSubmitFail = onSubmitFailOpt !== undefined ? onSubmitFailOpt : (function (prim) { - - }); - var i18n = i18nOpt !== undefined ? i18nOpt : ReSchemaI18n.$$default; - var validationStrategy = validationStrategyOpt !== undefined ? validationStrategyOpt : /* OnChange */0; - var match = ReactUpdate.useReducer({ - formState: /* Pristine */2, - values: initialState, - fieldsState: getInitialFieldsState(schema) - }, (function (action, state) { - if (typeof action === "number") { - switch (action) { - case /* TrySubmit */0 : - return { - TAG: /* SideEffects */2, - _0: (function (self) { - Curry._1(self.send, { - TAG: /* ValidateForm */1, - _0: true - }); - - }) - }; - case /* Submit */1 : - return { - TAG: /* UpdateWithSideEffects */1, - _0: { - formState: /* Submitting */1, - values: state.values, - fieldsState: state.fieldsState - }, - _1: (function (self) { - return Curry._1(onSubmit, { - send: self.send, - state: self.state, - raiseSubmitFailed: (function (error) { - return Curry._1(self.send, { - TAG: /* RaiseSubmitFailed */13, - _0: error - }); - }) - }); - }) - }; - case /* ResetForm */2 : - return { - TAG: /* Update */0, - _0: { - formState: /* Pristine */2, - values: initialState, - fieldsState: getInitialFieldsState(schema) - } - }; - - } - } else { - switch (action.TAG | 0) { - case /* ValidateField */0 : - var field = action._0; - return { - TAG: /* SideEffects */2, - _0: (function (self) { - var fieldState = Curry._4(ReSchema$1.validateOne, field, self.state.values, i18n, schema); - var newFieldState; - if (fieldState !== undefined) { - var message = fieldState[1]; - newFieldState = typeof message === "number" ? /* Valid */1 : ( - message.TAG === /* NestedErrors */0 ? ({ - TAG: /* NestedErrors */0, - _0: message._0 - }) : ({ - TAG: /* Error */1, - _0: message._0 - }) - ); - } else { - newFieldState = /* Valid */1; - } - var newFieldsState = Belt_Array.concat(Belt_Array.keep(state.fieldsState, (function (param) { - return Caml_obj.caml_notequal(param[0], field); - })), [[ - field, - newFieldState - ]]); - Curry._1(self.send, { - TAG: /* SetFieldsState */2, - _0: newFieldsState - }); - - }) - }; - case /* ValidateForm */1 : - var submit = action._0; - return { - TAG: /* SideEffects */2, - _0: (function (self) { - var recordState = Curry._3(ReSchema$1.validate, i18n, self.state.values, schema); - if (recordState) { - var newFieldsState = Belt_Array.map(recordState._0, (function (param) { - return [ - param[0], - { - TAG: /* Error */1, - _0: param[1] - } - ]; - })); - Curry._1(self.send, { - TAG: /* SetFieldsState */2, - _0: newFieldsState - }); - if (submit) { - var init = self.state; - Curry._1(onSubmitFail, { - send: self.send, - state: { - formState: init.formState, - values: init.values, - fieldsState: newFieldsState - }, - raiseSubmitFailed: (function (error) { - return Curry._1(self.send, { - TAG: /* RaiseSubmitFailed */13, - _0: error - }); - }) - }); - } - Curry._1(self.send, { - TAG: /* SetFormState */10, - _0: /* Errored */3 - }); - } else { - var newFieldsState$1 = Belt_Array.map(self.state.fieldsState, (function (param) { - return [ - param[0], - /* Valid */1 - ]; - })); - Curry._1(self.send, { - TAG: /* SetFieldsState */2, - _0: newFieldsState$1 - }); - if (submit) { - Curry._1(self.send, /* Submit */1); - } - Curry._1(self.send, { - TAG: /* SetFormState */10, - _0: /* Valid */4 - }); - } - - }) - }; - case /* SetFieldsState */2 : - return { - TAG: /* Update */0, - _0: { - formState: state.formState, - values: state.values, - fieldsState: action._0 - } - }; - case /* FieldChangeState */3 : - return /* NoUpdate */0; - case /* FieldChangeValue */4 : - var field$1 = action._0; - return { - TAG: /* UpdateWithSideEffects */1, - _0: { - formState: state.formState === /* Errored */3 ? /* Errored */3 : /* Dirty */0, - values: Curry._3(Config.set, state.values, field$1, action._1), - fieldsState: state.fieldsState - }, - _1: (function (self) { - if (validationStrategy) { - - } else { - Curry._1(self.send, { - TAG: /* ValidateField */0, - _0: /* Field */{ - _0: field$1 - } - }); - } - - }) - }; - case /* FieldChangeValueWithCallback */5 : - var field$2 = action._0; - var oldValue = Curry._2(Config.get, state.values, field$2); - return { - TAG: /* UpdateWithSideEffects */1, - _0: { - formState: state.formState === /* Errored */3 ? /* Errored */3 : /* Dirty */0, - values: Curry._3(Config.set, state.values, field$2, Curry._1(action._1, oldValue)), - fieldsState: state.fieldsState - }, - _1: (function (self) { - if (validationStrategy) { - - } else { - Curry._1(self.send, { - TAG: /* ValidateField */0, - _0: /* Field */{ - _0: field$2 - } - }); - } - - }) - }; - case /* FieldArrayAdd */6 : - var field$3 = action._0; - return { - TAG: /* Update */0, - _0: { - formState: state.formState, - values: Curry._3(Config.set, state.values, field$3, Belt_Array.concat(Curry._2(Config.get, state.values, field$3), [action._1])), - fieldsState: state.fieldsState - } - }; - case /* FieldArrayUpdateByIndex */7 : - var index = action._2; - var value = action._1; - var field$4 = action._0; - return { - TAG: /* Update */0, - _0: { - formState: state.formState, - values: Curry._3(Config.set, state.values, field$4, Belt_Array.mapWithIndex(Curry._2(Config.get, state.values, field$4), (function (i, currentValue) { - if (i === index) { - return value; - } else { - return currentValue; - } - }))), - fieldsState: state.fieldsState - } - }; - case /* FieldArrayRemove */8 : - var index$1 = action._1; - var field$5 = action._0; - return { - TAG: /* Update */0, - _0: { - formState: state.formState, - values: Curry._3(Config.set, state.values, field$5, Belt_Array.keepWithIndex(Curry._2(Config.get, state.values, field$5), (function (param, i) { - return i !== index$1; - }))), - fieldsState: state.fieldsState - } - }; - case /* FieldArrayRemoveBy */9 : - var predicate = action._1; - var field$6 = action._0; - return { - TAG: /* Update */0, - _0: { - formState: state.formState, - values: Curry._3(Config.set, state.values, field$6, Belt_Array.keep(Curry._2(Config.get, state.values, field$6), (function (entry) { - return !Curry._1(predicate, entry); - }))), - fieldsState: state.fieldsState - } - }; - case /* SetFormState */10 : - return { - TAG: /* Update */0, - _0: { - formState: action._0, - values: state.values, - fieldsState: state.fieldsState - } - }; - case /* SetValues */11 : - return { - TAG: /* Update */0, - _0: { - formState: state.formState, - values: Curry._1(action._0, state.values), - fieldsState: state.fieldsState - } - }; - case /* SetFieldValue */12 : - return { - TAG: /* Update */0, - _0: { - formState: state.formState, - values: Curry._3(Config.set, state.values, action._0, action._1), - fieldsState: state.fieldsState - } - }; - case /* RaiseSubmitFailed */13 : - return { - TAG: /* Update */0, - _0: { - formState: /* SubmitFailed */{ - _0: action._0 - }, - values: state.values, - fieldsState: state.fieldsState - } - }; - - } - } - })); - var send = match[1]; - var state = match[0]; - var getFieldState = function (field) { - return Belt_Option.mapWithDefault(Belt_Array.getBy(state.fieldsState, (function (param) { - return Caml_obj.caml_equal(param[0], field); - })), /* Pristine */0, (function (param) { - return param[1]; - })); - }; - var getFieldError = function (field) { - var error = getFieldState(field); - if (typeof error === "number") { - return ; - } - if (error.TAG !== /* NestedErrors */0) { - return error._0; - } - console.log("The following field has nested errors, access these with `getNestedFieldError` instead of `getFieldError`", field); - - }; - var validateFields = function (fields) { - var fieldsValidated = Curry._4(ReSchema$1.validateFields, fields, state.values, i18n, schema); - var newFieldsState = Belt_Array.concatMany(Belt_Array.map(state.fieldsState, (function (fieldStateItem) { - var field = fieldStateItem[0]; - if (!Belt_Array.some(fields, (function (fieldItem) { - return Caml_obj.caml_equal(fieldItem, field); - }))) { - return [fieldStateItem]; - } - var newFieldState = Belt_Array.getBy(fieldsValidated, (function (fieldStateValidated) { - return Caml_obj.caml_equal(Belt_Option.map(fieldStateValidated, (function (param) { - return param[0]; - })), field); - })); - return Belt_Option.mapWithDefault(Belt_Option.getWithDefault(newFieldState, undefined), [], (function (param) { - var newFieldStateValidated = param[1]; - if (typeof newFieldStateValidated === "number") { - return [[ - field, - /* Valid */1 - ]]; - } else if (newFieldStateValidated.TAG === /* NestedErrors */0) { - return [[ - field, - { - TAG: /* NestedErrors */0, - _0: newFieldStateValidated._0 - } - ]]; - } else { - return [[ - field, - { - TAG: /* Error */1, - _0: newFieldStateValidated._0 - } - ]]; - } - })); - }))); - Curry._1(send, { - TAG: /* SetFieldsState */2, - _0: newFieldsState - }); - return Belt_Array.keepMap(newFieldsState, (function (param) { - var field = param[0]; - if (Belt_Array.some(fields, (function (fieldItem) { - return Caml_obj.caml_equal(fieldItem, field); - }))) { - return param[1]; - } - - })); - }; - var raiseSubmitFailed = function (error) { - return Curry._1(send, { - TAG: /* RaiseSubmitFailed */13, - _0: error - }); - }; - var getNestedFieldError = function (field, index) { - var errors = getFieldState(field); - if (typeof errors === "number") { - return ; - } - if (errors.TAG !== /* NestedErrors */0) { - return ; - } - var error = Belt_Array.get(errors._0, index); - if (error !== undefined) { - return error.error; - } - - }; - return { - state: state, - values: state.values, - formState: state.formState, - fieldsState: state.fieldsState, - isSubmitting: state.formState === /* Submitting */1, - isDirty: state.formState === /* Dirty */0, - isPristine: state.formState === /* Pristine */2, - getFieldState: getFieldState, - getFieldError: getFieldError, - getNestedFieldError: getNestedFieldError, - handleChange: (function (field, value) { - return Curry._1(send, { - TAG: /* FieldChangeValue */4, - _0: field, - _1: value - }); - }), - handleChangeWithCallback: (function (field, updateFn) { - return Curry._1(send, { - TAG: /* FieldChangeValueWithCallback */5, - _0: field, - _1: updateFn - }); - }), - arrayPush: (function (field, value) { - return Curry._1(send, { - TAG: /* FieldArrayAdd */6, - _0: field, - _1: value - }); - }), - arrayUpdateByIndex: (function (field, index, value) { - return Curry._1(send, { - TAG: /* FieldArrayUpdateByIndex */7, - _0: field, - _1: value, - _2: index - }); - }), - arrayRemoveByIndex: (function (field, index) { - return Curry._1(send, { - TAG: /* FieldArrayRemove */8, - _0: field, - _1: index - }); - }), - arrayRemoveBy: (function (field, predicate) { - return Curry._1(send, { - TAG: /* FieldArrayRemoveBy */9, - _0: field, - _1: predicate - }); - }), - submit: (function (param) { - return Curry._1(send, /* TrySubmit */0); - }), - resetForm: (function (param) { - return Curry._1(send, /* ResetForm */2); - }), - setValues: (function (fn) { - return Curry._1(send, { - TAG: /* SetValues */11, - _0: fn - }); - }), - setFieldValue: (function (field, value, shouldValidateOpt, param) { - var shouldValidate = shouldValidateOpt !== undefined ? shouldValidateOpt : true; - if (shouldValidate) { - return Curry._1(send, { - TAG: /* FieldChangeValue */4, - _0: field, - _1: value - }); - } else { - return Curry._1(send, { - TAG: /* SetFieldValue */12, - _0: field, - _1: value - }); - } - }), - validateField: (function (field) { - return Curry._1(send, { - TAG: /* ValidateField */0, - _0: field - }); - }), - validateForm: (function (param) { - return Curry._1(send, { - TAG: /* ValidateForm */1, - _0: false - }); - }), - validateFields: validateFields, - raiseSubmitFailed: raiseSubmitFailed - }; - }; - return { - ReSchema: ReSchema$1, - Validation: undefined, - getInitialFieldsState: getInitialFieldsState, - formContext: formContext, - useFormContext: useFormContext, - useField: useField, - Provider: Provider, - Field: Field, - use: use - }; -} - -var Helpers; - -export { - Helpers , - Make , - -} -/* react Not a pure module */ diff --git a/reform/src/ReForm__Helpers.bs.js b/reform/src/ReForm__Helpers.bs.js deleted file mode 100644 index 5e3e1828..00000000 --- a/reform/src/ReForm__Helpers.bs.js +++ /dev/null @@ -1,19 +0,0 @@ -// Generated by ReScript, PLEASE EDIT WITH CARE - -import * as Curry from "rescript/lib/es6/curry.js"; - -function handleChange(handleChange$1, $$event) { - return Curry._1(handleChange$1, $$event.target.value); -} - -function handleSubmit(handleSubmit$1, $$event) { - $$event.preventDefault(); - return Curry._1(handleSubmit$1, undefined); -} - -export { - handleChange , - handleSubmit , - -} -/* No side effect */ diff --git a/src/.gitkeep b/src/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/yarn.lock b/yarn.lock index c51a12b9..37d5c492 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2142,6 +2142,14 @@ dependencies: jest "27.2.5" +"@rescriptbr/reform@12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@rescriptbr/reform/-/reform-12.0.1.tgz#5d2dbf4f30126519ab6ca5d0d334dd637f1d88cd" + integrity sha512-9LtvqF76gXOF/OkgPNS8flITdu2oXif2LtUfz4TYWJmLfKKFYiXXR++zBhAQDxUKxha+QJR5XfjL58aUISplkw== + dependencies: + "@rescriptbr/reschema" "^3.0.0" + rescript-react-update "^3.0.1" + "@rescriptbr/reschema@3.0.1", "@rescriptbr/reschema@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@rescriptbr/reschema/-/reschema-3.0.1.tgz#38e0bfa676987bc20a07b03c02e564483c7c3a27" @@ -2149,6 +2157,18 @@ dependencies: rescript "^9.0.2" +"@rescriptbr/reschema@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@rescriptbr/reschema/-/reschema-3.0.3.tgz#e75cdf6431fdd30e05ae192054b080f16f951e94" + integrity sha512-jNuXlSYuv/MxmrgkL+h8WR7NW0LiVRvzUZ2HgAec7qJ9dikAUUyaHdJ94n+/tsiTWA52oXcvkhPcJ8imjPU/sw== + dependencies: + rescript "^9.0.2" + +"@rolandpeelen/rewatch@^0.0.11": + version "0.0.11" + resolved "https://registry.yarnpkg.com/@rolandpeelen/rewatch/-/rewatch-0.0.11.tgz#86e40cb37303fc9d40df48f0ab48d3cd675d153f" + integrity sha512-IIAnDTjtyqdDR0Tq6X4g7ULJJb7n2HxDIpIu+Cy4DMc+rgsktO/l9Ce5HA1WvIrMTvUvgy4Ds/igvwfUxOCQWg== + "@rollup/pluginutils@^4.1.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" @@ -9223,7 +9243,12 @@ rescript@9.1.1: resolved "https://registry.yarnpkg.com/rescript/-/rescript-9.1.1.tgz#de2eb5470a463d7eea493b59537d49bafa6bc5e9" integrity sha512-c+zR5aZ5mXDpAx6oyS61t4sUPiq2VXgHigilYSMazDLp1uUGbf2JvgbSfRJFaKAjfsTKcohJyH0vtdihhdZmMA== -rescript@9.1.4, rescript@^9.0.2, rescript@^9.1.1: +rescript@^10.1.4: + version "10.1.4" + resolved "https://registry.yarnpkg.com/rescript/-/rescript-10.1.4.tgz#0f37710d371f32a704f17b4e804f66ce3c79a305" + integrity sha512-FFKlS9AG/XrLepWsyw7B+A9DtQBPWEPDPDKghV831Y2KGbie+eeFBOS0xtRHp0xbt7S0N2Dm6hhX+kTZQ/3Ybg== + +rescript@^9.0.2, rescript@^9.1.1: version "9.1.4" resolved "https://registry.yarnpkg.com/rescript/-/rescript-9.1.4.tgz#1eb126f98d6c16942c0bf0df67c050198e580515" integrity sha512-aXANK4IqecJzdnDpJUsU6pxMViCR5ogAxzuqS0mOr8TloMnzAjJFu63fjD6LCkWrKAhlMkFFzQvVQYaAaVkFXw==