README
dw-form
A form element which is used to get serialized data and to perform validation of it's local elements.
Installation
npm install --save @dreamworld/dw-form
Usage
@import `@dreamworld/dw-form/dw-form`;
Demo
Features
serialize()Used to get key/value data of it's children form elements as JSON Object.validate()Used to validate child elements- Invokes
validate()method on each form element if it's defined/available. - Returns
trueif all elementsvalidatehas returnedtrue.
- Invokes
Example
<dw-form>
<dw-input name="name" label="Name" required></dw-input>
<dw-checkbox name="isChecked" label="This is checkbox"></>
</dw-form>
dw-form-element
A Mixin used to create custom form element.
Installation
npm install --save @dreamworld/dw-form
Usage
@import `@dreamworld/dw-form/dw-form-element`;
How it works?
- Triggers
register-dw-form-elementwhen attached (fromconnectedCallback).dw-formuses this event to register this element as custom form element. - Triggers
unregister-dw-form-elementwhen detached (fromdisconnectedCallback).dw-formon this event removes this element from the custom elements registry it has. - Stops propagation of
register-dw-form-elementevent from child elements (from local dom or light dom). It allows to create composite form elements. Only most souter form element is registered withdw-form.
Example
class CustomElement extends DwFormElement(LitElement) {
...
}
** NOTE: Do not forget to call super.connectedCallback() and super.disconnectedCallback() in your element **
dw-form-field
It's a wrapper of mwc-formfield which aligns form-field with it's label.
It also activates a ripple effect upon interacting with the label. For more detail visit
https://github.com/material-components/material-web/tree/master/packages/formfield.
It's used to show label for checkbox & radio buttons. Used by dw-checkbox and dw-radio-button.
Installation
npm install --save @dreamworld/dw-form-field
Usage
@import '@dreamworld/dw-form-field'
<dw-form-field label="Name" disabled>
<my-form-element></my-form-element>
</dw-form-field>
Demo
Enhancements in addition to mwc-formfield
- Adds
disabledproperty- When set to
true, text will be rendered in--disabled-text-color - Deactivates ripple on click
- When set to
- Removes left padding from label When label is not available
- Adds a way to change font style. By default it inherits font style from parent element
- Provides a way to align label to top through
alignTopproperty.
Properties
- label
- alignEnd
- alignTop
- disabled
Theme
--primary-text-color- use this to customize label color--disabled-text-color- use this to customize disabled label color--dw-form-field-label-min-height- use this to set minimum height to label.
Example css to change label style
dw-form-field {
--primary-text-color: blue;
--dw-form-field-label-min-height: 40px;
font-size: 18px;
}
dw-composite-form-element
- It's a custom form element. As it's name suggests, used to create a form-element which is composed of other form-elements.
- All the elements for the composition are identified from either local-dom (When used by extending this class) or light-dom.
- Data-type of the
valueproperty isObject. Object's key represents name of the inner form-element & value represents value of that inner form element. - When
validate()of this element is called, it invokesvalidate()of all the inner form elements. - Fires
value-changedevent when it's value is changed. (OR in other word,valueof any inner form element is changed).
Installation
npm install --save @dreamworld/dw-form
Usage (Composition or light-dom)
@import '@dreamworld/dw-form/dw-composite-form-element'
<dw-composite-form-element>
<dw-input></dw-input>
</dw-composite-form-element>
Usage (Extension)
- Create a new form element by extending the class
DwCompositeFormElementand in therender()template render all the children elements.