@orcden/od-forms
v8.2.3
Published
OrcDen Forms Component
Downloads
32
Readme
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