@airplane/views
Version:
A React library for building Airplane views. Views components are optimized in style and functionality to produce internal apps that are easy to build and maintain.
51 lines (50 loc) • 1.2 kB
JavaScript
import { jsx } from "react/jsx-runtime";
import * as React from "react";
import { useState, useCallback } from "react";
const defaultContext = {
formTypeByID: {},
addFormInput: () => {
},
removeFormInput: () => {
}
};
const FormContext = /* @__PURE__ */ React.createContext(defaultContext);
const FormProvider = ({
children
}) => {
const [formInputs, setFormInputs] = useState({});
const addFormInput = useCallback((id, type) => {
setFormInputs((formInputs2) => {
if (id in formInputs2) {
return formInputs2;
}
return {
...formInputs2,
[id]: type
};
});
}, []);
const removeFormInput = React.useCallback((id) => {
setFormInputs((formInputs2) => {
if (!(id in formInputs2)) {
return formInputs2;
}
const newFormInputs = {
...formInputs2
};
delete newFormInputs[id];
return newFormInputs;
});
}, []);
const context = {
formTypeByID: formInputs,
addFormInput,
removeFormInput
};
return /* @__PURE__ */ jsx(FormContext.Provider, { value: context, children });
};
export {
FormContext,
FormProvider
};
//# sourceMappingURL=FormProvider.js.map