1.0.12 • Published 4 years ago
fitx-form v1.0.12
A responsive React form for various input types controlled by a JSON component for faster and easier web development.
Installation
fitx-form is available as an npm package.
// with npm
npm install fitx-form
// with yarn
yarn add fitx-form
Please note that @next
will only point to pre-releases; to get the latest stable release use @latest
instead.
Usage
constants.js
export default [
{
elements: [
{
id: 'fName',
name: 'First Name',
type: 'TextInput',
placeholder: 'Full Name',
},
],
groupName: 'Personal Details',
groupId: 'personalDetails',
},
];
Here is a quick example to get you started, it's all you need:
import React from 'react';
import ReactDOM from 'react-dom';
import FitxForm from 'fitx-form';
import * as R from 'ramda';
import * as Constants from './constants';
function App() {
return (
<FitxForm
metaData={Constants.metaData}
/>
);
}
ReactDOM.render(<App />, document.querySelector('#app'));
Full working exapmle with handlers is given in the Example section
Documentation
FitxForm Props
Props | Type | Description |
---|---|---|
formValues | object | The value object |
metaData | array | Array of the components |
onChange | func | On Change event |
onClick | func | On Click event |
columns | number | Number of columns to be displayed |
Component Props
Props | Type | Description |
---|---|---|
allowClear | bool | Enables date clear button |
defaultValue | Based on the type | Default value for the field, Triggers onChange when component renders |
disabled | bool | Mark the element to be disabled |
displayName | string | Display text of ButtonInput |
emptyOption | bool | Display empty option in SelectInput as placeHolder |
error | bool | Show the error container and display errorText |
errorText | string | String to be displayed in the error container |
helperText | string | String to be displayed as a helper text in error container |
max | number | The max input for Number and Date |
maxLength | number | Max length of the input in chars |
min | number | The min input for Number and Date |
onClick | func | Triggers on a ButtonInput click () => (groupId, elementId) |
onChange | func | Triggers on a value change () => (groupId, elementId, value) |
onSelect | func | Triggers on a value select () => (groupId, elementId, value) |
options | array | List of options as { label, value, disabled} |
options.label | string | The display name of the option |
options.value | string | The id of the option |
options.disabled | bool | Disables the option |
placeholder | string | String to be displayed as a placeholder |
readOnly | bool | Marks the field as read only |
regex | regexp | Regex for input value -> error is true if regex fails |
spellCheck | bool | Enables native spell check in text inputs |
value | string | The value to be hardcoded |
type | ButtonInput, CheckboxInput, DateInput, RadioInput, SelectInput, TextInput | The Component Type |
subType | string | Sub type of available components |
Example
Full Working Example
import React, { useState } from 'react';
import ReactDOM from 'react-dom';
import FitxForm from 'fitx-form';
import * as R from 'ramda';
import * as Constants from './constants';
function App() {
const [values, setValues] = useState({});
const onFormValuesChange = (groupId, elementId, value) => {
const lensProp = R.lensPath([groupId, elementId]);
const newValue = R.set(lensProp, value, { ...values });
setValues(newValue);
};
const onFormElementClick = (groupId, elementId) => {
let query = `${groupId} ${elementId}`;
switch (query) {
case 'personalDetails submit':
onPartySave();
break;
default: {
query = '';
}
}
};
return (
<FitxForm
formValues={values}
metaData={Constants.metaData}
onChange={onFormValuesChange}
onClick={onFormElementClick}
columns={2}
/>
);
}
ReactDOM.render(<App />, document.querySelector('#app'));
Changelog
Recently Updated? Please read the changelog.
Roadmap
- To Add custom themes
- Make is more backward compactible
Author
Balkishan S
License
This project is licensed under the terms of the MIT license.