vue-enhanced-check
Enhanced checkboxes /radio input, component for vue 2+.
Note that unicode is used for 'icons'. Therefore design can change according to your browser. It is still possible to override CSS style with '!important' instruction (checked and hover styles)
- Issue with ES2015 -> switch away in version 1.4
- Issue with bootstrap 3.3 on toggle component -> style fix in version 1.5
Based on first enhancedCheck project (CSS/JS)
Global use
- npm install
npm install --save vue-enhanced-check
- import components
import { EnhancedCheck, EnhancedCheckGroup, EnhancedCheckRadio, EnhancedToggle } from 'vue-enhanced-check'
or only one according to your needs
import { EnhancedCheck } from 'vue-enhanced-check'
- declare use or imported components in your vue script
export default { components: { EnhancedCheck, EnhancedCheckGroup, EnhancedCheckRadio, EnhancedToggle }, methods: ... }
- Use components as described below
Components
Checkbox
Label is prefixed by 'check' icon
<enhanced-check label="Checkbox"></enhanced-check>
<enhanced-check :label="sc_label" :subClass="sc_subclass" v-model="sc_model" :disabled="sc_disabled" :rounded="sc_rounded" :animate="sc_animate" id="enhancedCheck" name="" value=""> </enhanced-check>
Prop | Type | Note |
---|---|---|
label | String | REQUIRED: by design, label is a main part of the display |
id | String | id of input and associated label. |
name | String | name of classic input. Empty by default |
value | String | value of classic input. Empty by default |
subClass | String | Same colors than bootstrap style, possible values are 'default', 'primary', 'success', 'warning', 'danger' |
disabled | Boolean | False by default. Prevent clic action but not direct model change |
rounded | Boolean | False by default. Rounded border style |
animate | Boolean | False by default. Add a transition on style |
As a classic simple checkbox, model bound to check state: true or false
Checkbox group
<enhanced-check-group :label="['First', 'Second', 'Third']"></enhanced-check-group>
<enhanced-check-group :label="['First', 'Second', 'Third']" :subClass="gc_subclass" v-model="gc_model" :disabled="gc_disabled" :rounded="gc_rounded" :animate="gc_animate" :inline="gc_inline" :combine="gc_combine" :value="[gc_val1, gc_val2, gc_val3]" id="enhancedCheckGroup" name=""> </enhanced-check-group>
Prop | Type | Note |
---|---|---|
label | Array | REQUIRED |
value | Array | Value for each input. By default equal to label |
id | String /Array | id of input and associated label. If string provided, each element id will have a counter as suffix |
name | String /Array | name of classic input. Use array to specify different names |
subClass | String | Same than checkbox |
disabled | Boolean | Same than checkbox |
rounded | Boolean | Same than checkbox |
animate | Boolean | Same than checkbox |
inline | Boolean | False by default. Turn all input as inline-block |
combine | Boolean | False by default. Turn 'check' icon into 'plus' icon |
As classic multiple checkboxes, model bound to array of value from checked input
Radio
Label is prefixed by 'dot' icon
<enhanced-check-radio :label="['Element A', 'Element B', 'Element C']"></enhanced-check-radio>
<enhanced-check-radio :label="['Element A', 'Element B', 'Element C']" name="radiotest" :subClass="rc_subclass" v-model="rc_model" :disabled="rc_disabled" :rounded="rc_rounded" :animate="rc_animate" :inline="rc_inline" id="enhancedCheckRadio" :value="[rc_val1, rc_val2, rc_val3]"> </enhanced-check-radio>
Prop | Type | Note |
---|---|---|
label | Array | REQUIRED |
name | String | name of classic input. |
id | String /Array | id of input and associated label. If string provided, each element id will have a counter as suffix |
value | Array | Value for each input. By default equal to label |
subClass | String | Same than checkbox |
disabled | Boolean | Same than checkbox |
rounded | Boolean | Same than checkbox |
animate | Boolean | Same than checkbox |
inline | Boolean | Same than checkbox group |
As classic radio buttons, model bound to value from checked input
Toggle button
Checkbox is replaced by 2 switching labels, for on and off states
<enhanced-toggle></enhanced-check>
<enhanced-toggle :labelOn="tc_labelOn" :labelOff="tc_labelOff" :styleOn="tc_styleOn" :styleOff="tc_styleOff" v-model="tc_model" :disabled="tc_disabled" :rounded="tc_rounded" id="enhancedToggle" name=""> </enhanced-toggle>
Prop | Type | Note |
---|---|---|
labelOn | String | Label display for 'on' state (checked). Default is 'On' |
labelOff | String | Label display for 'off' state (unchecked). Default is 'Off' |
styleOn | String | style for 'on' state (checked), see checkbox's subclass. Default is primary |
styleOff | String | style for 'off' state (unchecked), see checkbox's subclass. Default is default |
id | String | id of input and associated label. |
name | String | Same than checkbox |
value | String | Same than checkbox |
disabled | Boolean | Same than checkbox |
rounded | Boolean | Same than checkbox |
As a classic simple checkbox, model bound to check state: true or false
Override style
You can define your own check color by adding a specific style
For example, let's define a 'custom' sub class.
<enhanced-check label="Custom" subClass="custom"></enhanced-check>
Checkbox will get the class 'enhancedCheck-custom', that you can use in your CSS. Simple override for checkboxes:
.enhancedCheck.enhancedCheck-custom input[type="checkbox"]:checked + label:before { background: fuchsia; color: white; } .enhancedCheck.enhancedCheck-custom input[type="checkbox"]:not(:checked) + label:hover { border-color: fuchsia; }
Full less sample:
.enhancedCheck.enhancedCheck-custom { input[type="radio"], input[type="checkbox"] { &:checked + label:before { background: $color; color: white; } &:not(:checked) + label:hover { border: 1px solid $color; } &:checked:disabled + label:before { background: $color-disabled; } &:not(:checked):disabled + label:hover { border: 1px solid $color-disabled; } } }
Contribution
- Fork the repository
- Run
npm install
- You can run
npm run dev
, site is at http://localhost:8081. - Do your stuff
- When you're done, run
npm run build
command and commit your work for a pull request.