@orcden/od-forms v8.2.3
OD Forms
A series of components to make building html forms fast and easy. NEW in 8.2.0: Dynamic labels!
<od-form>
is a smart component to wrap other OD Form elements. It offers a series of benefits over semantic html forms while maintaining the ability to interact as one would normally with an html form. Supports semantic html attributes.
<od-form-array>
is a smart component to wrap other OD Form elements. It creates a series of od-form elements based on a template to return an array of data. It also allows for simple creation and deletion of entries.
<od-form-input>
is a simple component to create an input element. Like other Form Elements it comes with a series of styling and functional benefits including built in labels and semantic html attributes.
<od-form-textarea>
is a simple component to create a textarea element. Like other Form Elements it comes with a series of styling and functional benefits including built in labels and semantic html attributes.
<od-form-selectlist>
is a simple component to create a select element. Like other Form Elements it comes with a series of styling and functional benefits including built in labels and semantic html attributes. Supports both dynamic options and statically defined options.
<od-form-multiselect>
is a simple component to create a series of checkbox elements. Like other Form Elements it comes with a series of styling and functional benefits including built in labels and semantic html attributes. Supports both dynamic options and statically defined options.
<od-form-radioselect>
is a simple component to create a series of radio elements. Like other Form Elements it comes with a series of styling and functional benefits including built in labels and semantic html attributes. Supports both dynamic options and statically defined options.
<od-form-richtext>
is a simple component to create custom richtext field. Like other Form Elements it comes with a series of styling and functional benefits including built in labels and semantic html attributes.
Installation
- Install with npm
npm i @orcden/od-forms
Usage
Please note that your usage may differ depending on your framework
import { OdForm, OdFormInput } from '@orcden/od-forms';
<od-form id='od-form1'> //unique id required
<od-form-input name='first-name' //required
autocomplete='given-name'>First Name: </od-form-input>
<od-form-textarea name='textarea'>Textarea: </od-form-textarea>
<od-form-selectlist name='select1'
options-get='http://myapiroute.com/api/options' //returns [{ optionName: 'option 1', id: '0' },...]
options-label='optionName'
options-value='id'>
<label slot='label'>Select1:</label>
<option value=''>-</option> //statically defined option
</od-form-selectlist>
<od-form-multiselect name='multi'
options-get='http://myapiroute.com/api/options'
options-label='optionName'
options-value='id'>
<label slot='label'>Multi:</label>
<od-form-input value='1st'>1st: </od-form-input> //statically defined option
</od-form-multiselect>
<od-form-radioselect name='radio'
options-get='http://myapiroute.com/api/options'
options-label='optionName'
options-value='id'>
<label slot='label'>Radio:</label>
<od-form-input value='1st'>1st: </od-form-input>
</od-form-radioselect>
</od-form>
<od-form-array id='od-form-array1'> //unique id required
<od-form-input name='first-name' //required
autocomplete='given-name'>First Name: </od-form-input>
<od-form-textarea name='textarea'>Textarea: </od-form-textarea>
<od-form-radioselect name='radio'
options-get='http://myapiroute.com/api/options'
options-label='optionName'
options-value='id'>
<label slot='label'>Radio:</label>
<od-form-input value='1st'>1st: </od-form-input>
</od-form-radioselect>
</od-form-array>
// **Also supports any other OD Form Element**
Attributes
OD Form
Attribute | Type | Default | Description |
---|---|---|---|
disabled | Boolean | false | Toggles the hiding of the input fields and the display of the value fields. |
inline | Boolean | false | Tells the form to display all of its elements in a single line. Overrides child element inline attributes |
** Also supports any semantic html form attribute
OD Form Array
Attribute | Type | Default | Description |
---|---|---|---|
disabled | Boolean | false | Toggles the hiding of the input fields and the display of the value fields. |
inline | Boolean | false | Tells all child forms to display all of its elements in a single line. Overrides child element inline attributes |
OD Form Input
Attribute | Type | Default | Description |
---|---|---|---|
inline | Boolean | false | Tells the element to align its input field inline with its label field |
value | String | undefined | Two-way binding support to set/get the html input value property |
checked | Boolean | false | Two-way binding support to set/get the html input checked property |
** Also supports any semantic html input attribute
OD Form Textarea
Attribute | Type | Default | Description |
---|---|---|---|
inline | Boolean | false | Tells the element to align its input field inline with its label field |
value | String | undefined | Two-way binding support to set/get the html input value property |
** Also supports any semantic html input attribute
OD Form Selectlist
Attribute | Type | Default | Description |
---|---|---|---|
inline | Boolean | false | Tells the element to align its input field inline with its label field |
options-get | String | null | For dynamic options calls. This is the url of your option route |
options-label | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's label field ex. 'optionName' |
options-value | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's value field ex. 'id' |
** Also supports any semantic html input attribute
OD Form Multiselect
Attribute | Type | Default | Description |
---|---|---|---|
inline | Boolean | false | Tells the element to align its input field inline with its label field |
options-get | String | null | For dynamic options calls. This is the url of your option route |
options-label | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's label field ex. 'optionName' |
options-value | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's value field ex. 'id' |
** Also supports any semantic html input attribute
OD Form Radioselect
Attribute | Type | Default | Description |
---|---|---|---|
inline | Boolean | false | Tells the element to align its input field inline with its label field |
options-get | String | null | For dynamic options calls. This is the url of your option route |
options-label | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's label field ex. 'optionName' |
options-value | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's value field ex. 'id' |
** Also supports any semantic html input attribute
OD Form Richtext
Attribute | Type | Default | Description |
---|---|---|---|
disabled | Boolean | false | Hides the input field and |
inline | Boolean | false | Tells the element to align its input field inline with its label field |
required | Boolean | false | Lets the form know that the field needs a value before continuing |
Properties
OD Form
Property | Type | Default | Description |
---|---|---|---|
form | HTMLFormElement | HTMLFormElement | Get only. Returns the created html form. Can be used for any semantic html form hooks |
disabled | Boolean | false | Toggles the hiding of the input fields and the display of the value fields. |
inline | Boolean | false | Tells the form to display all of its elements in a single line. Overrides child element inline attributes |
OD Form Array
Property | Type | Default | Description |
---|---|---|---|
forms | Array | Array | Get only. Returns an array of the created html forms. Can be used for any semantic html form hooks |
disabled | Boolean | false | Toggles the hiding of the input fields and the display of the value fields. |
inline | Boolean | false | Tells the form to display all of its elements in a single line. Overrides child element inline attributes |
OD Form Input
Property | Type | Default | Description |
---|---|---|---|
input | HTMLInputElement | HTMLInputElement | Get only. Returns the created html input. Can be used for any semantic html form hooks. |
labelText | String | String '' | Returns the text of the created html label. Can be used to set label text |
inline | Boolean | false | Tells the element to align its input field inline with its label field |
value | String | undefined | get/set the html input value property |
checked | Boolean | false | get/set the html input checked property |
OD Form Textarea
Property | Type | Default | Description |
---|---|---|---|
input | HTMLInputElement | HTMLInputElement | Get only. Returns the created html input. Can be used for any semantic html form hooks. |
labelText | String | String '' | Returns the text of the created html label. Can be used to set label text |
inline | Boolean | false | Tells the element to align its input field inline with its label field |
value | String | undefined | get/set the html input value property |
OD Form Selectlist
Property | Type | Default | Description |
---|---|---|---|
input | HTMLInputElement | HTMLInputElement | Get only. Returns the created html input. Can be used for any semantic html form hooks. |
labelText | String | String '' | Returns the text of the created html label. Can be used to set label text |
inline | Boolean | false | Tells the element to align its input field inline with its label field |
value | String | undefined | get/set the current selected value |
optionsGet | String | null | For dynamic options calls. This is the url of your option route |
optionsLabel | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's label field ex. 'optionName' |
optionsValue | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's value field ex. 'id' |
OD Form Multiselect
Property | Type | Default | Description |
---|---|---|---|
inputs | Array | Array | Get only. Returns an array of the nested inputs. Can be used for any semantic html form hooks. |
labelText | String | String '' | Returns the text of the created html label. Can be used to set label text |
inline | Boolean | false | Tells the element to align its input field inline with its label field |
value | String/Array | undefined | get/set the current selected values |
optionsGet | String | null | For dynamic options calls. This is the url of your option route |
optionsLabel | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's label field ex. 'optionName' |
optionsValue | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's value field ex. 'id' |
OD Form Radioselect
Property | Type | Default | Description |
---|---|---|---|
inputs | Array | Array | Get only. Returns an array of the nested inputs. Can be used for any semantic html form hooks. |
labelText | String | String '' | Returns the text of the created html label. Can be used to set label text |
inline | Boolean | false | Tells the element to align its input field inline with its label field |
value | String | undefined | get/set the current selected value |
optionsGet | String | null | For dynamic options calls. This is the url of your option route |
optionsLabel | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's label field ex. 'optionName' |
optionsValue | String | null | For dynamic options calls. This is the field identifier that corresponds to your option's value field ex. 'id' |
OD Form Richtext
Property | Type | Default | Description |
---|---|---|---|
input | HTMLInputElement | HTMLInputElement | Get only. Returns the created html input. Can be used for any semantic html form hooks. |
labelText | String | String '' | Returns the text of the created html label. Can be used to set label text |
inline | Boolean | false | Tells the element to align its input field inline with its label field |
value | String | undefined | get/set the html input value property |
editor | Quill | Quill | Get only. Returns the Quill inhstance for any required hooks |
Functions
OD Form
Name | returns | Parameters | Description |
---|---|---|---|
submitForm | undefined | None | Triggers an html submit event on the html form with custom validation. |
htmlSubmitForm | undefined | None | Triggers an html submit event on the html form with html validation. |
reset | undefined | None | Triggers a reset/clearing of the form data |
validate | Boolean | None | Cycles through inputs and validates each one. |
htmlValidate | Boolean | None | Triggers an html validation of the form. |
getData | Object | None | Returns a JSON Object of the FormData associated with the html form. |
getValue | Object | String name | Returns the current value in the form associated with the given name parameter |
setValue | undefined | String name, Object data | Sets the value in the form associated with the given name parameter |
setChecked | undefined | String name, String value, Boolean isChecked | Sets the associated checkbox or radio in the form associated with the given name parameter |
populate | undefined | Object data | Populates the form with data based on a simple JSON Object. |
saveAutocomplete | undefined | None | Triggers the form to save autocomplete data in the browser. |
OD Form Array
Name | returns | Parameters | Description |
---|---|---|---|
addNewEntry | HTMLElement | None | Adds a new form based on the template to the DOM. |
deleteEntry | undefined | Sting id | Deletes the corresponding form entry from the DOM . |
validate | Boolean | None | Cycles through form entries and validates each one. |
getData | Array | None | Returns a JSON Array of the FormData associated with the html form entries. |
populate | undefined | Object data | Populates the form with data based on a simple JSON Array. |
reset | undefined | None | Triggers a reset/clearing of all data in each form |
Any Form Element
Name | returns | Parameters | Description |
---|---|---|---|
listen | undefined | eventName, callback | Adds an event listener to the form element in the ssame way you would a normal listener |
Styling
- CSS variables are available to alter the default styling provided
Shadow Part | Description |
---|---|
form | Selects the html form |
table | The table used for aligning labels and inputs |
table-row | Rows under the table part |
table-cell | Cells under the rows part |
label-cell | Cells under the rows part containing the field label |
input-cell | Cells under the rows part containing the input element |
field-label | The labels used for identifying separate fields |
value-label | The labels used in place of the inputs to display the current value |
form-input | Selects inputs in the html form |
form-select | Selects 'select' elements in the html form |
form-textarea | Seelects Textareas in the form |
--ARRAY ONLY-- | |
array-container | The div used to insert new forms |
array-fieldset | Selects the wrapper fieldset around each form |
od-form | Selects the OD Form Elements nested in each fieldset |
add-button | The add button used to add new entries |
delete-button | The button used to delete corresponding entries |
Development
Run development server and show demo
npm run demo
Run linter
npm run lint
Fix linter errors
npm run fix
Build for production
npm run build
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
6 years ago
6 years ago