Skip to content

Commit 60976b0

Browse files
committed
fix(CFormCheck): the component is not checked/picked when the v-model value is set
1 parent 0e0c870 commit 60976b0

File tree

3 files changed

+115
-3
lines changed

3 files changed

+115
-3
lines changed

packages/coreui-vue/src/components/form/CFormCheck.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ const CFormCheck = defineComponent({
189189
const formControl = () => {
190190
return h('input', {
191191
...attrs,
192-
...(props.modelValue && props.value && { checked: isChecked.value }),
192+
...((props.modelValue || props.value) && { checked: isChecked.value }),
193193
class: inputClassName,
194194
id: props.id,
195195
indeterminate: props.indeterminate,
@@ -259,4 +259,4 @@ const CFormCheck = defineComponent({
259259
},
260260
})
261261

262-
export { CFormCheck }
262+
export { CFormCheck }

packages/docs/forms/checkbox.md

+69-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,74 @@ Browser default checkboxes are replaced with the help of `<CFormCheck>`. Checkbo
2020
<CFormCheck id="flexCheckChecked" label="Checked checkbox" checked />
2121
```
2222

23+
### vModel
24+
25+
Single checkbox, boolean value.
26+
27+
::: demo
28+
<CFormCheck id="flexCheckDefaultVModel" label="Default checkbox" v-model="checked" />
29+
<div>Checked: {{checked}}</div>
30+
:::
31+
```vue
32+
<template>
33+
<CFormCheck id="flexCheckDefaultVModel" label="Default checkbox" v-model="checked" />
34+
<div>Checked: {{checked}}</div>
35+
</template>
36+
<script>
37+
import { ref } from 'vue'
38+
export default {
39+
setup() {
40+
const checked = ref(true)
41+
return {
42+
checked
43+
}
44+
}
45+
}
46+
</script>
47+
```
48+
49+
We can also bind multiple checkboxes to the same array.
50+
51+
::: demo
52+
<CFormCheck id="lucas" value="Lucas" label="Lucas" v-model="checkedNames"/>
53+
<CFormCheck id="andrew" value="Andrew" label="Andrew" v-model="checkedNames"/>
54+
<CFormCheck id="anna" value="Anna" label="Anna" v-model="checkedNames"/>
55+
<div>Checked names: {{checkedNames}}</div>
56+
:::
57+
```vue
58+
<template>
59+
<CFormCheck id="lucas" value="Lucas" label="Lucas" v-model="checkedNames"/>
60+
<CFormCheck id="andrew" value="Andrew" label="Andrew" v-model="checkedNames"/>
61+
<CFormCheck id="anna" value="Anna" label="Anna" v-model="checkedNames"/>
62+
<div>Checked names: {{checkedNames}}</div>
63+
</template>
64+
<script>
65+
import { ref } from 'vue'
66+
export default {
67+
setup() {
68+
const checkedNames = ref(['Andrew'])
69+
return {
70+
checkedNames
71+
}
72+
}
73+
}
74+
</script>
75+
```
76+
77+
<script>
78+
import { ref } from 'vue'
79+
export default {
80+
setup() {
81+
const checked = ref(true)
82+
const checkedNames = ref(['Andrew'])
83+
return {
84+
checked,
85+
checkedNames
86+
}
87+
}
88+
}
89+
</script>
90+
2391
## Indeterminate
2492

2593
Checkboxes can utilize the `:indeterminate` pseudo-class when manually set via `indeterminate` property.
@@ -32,7 +100,7 @@ Checkboxes can utilize the `:indeterminate` pseudo-class when manually set via `
32100
<CFormCheck id="flexCheckIndeterminate" label="Indeterminate checkbox" indeterminate />
33101
```
34102

35-
### Disabled
103+
## Disabled
36104

37105
Add the `disabled` attribute and the associated `<label>`s are automatically styled to match with a lighter color to help indicate the input's state.
38106

packages/docs/forms/radio.md

+44
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,50 @@ Add the `disabled` attribute and the associated `<label>`s are automatically sty
2222
<CFormCheck type="radio" name="flexRadioDefault" id="flexRadioDefault2" label="Checked radio" checked/>
2323
```
2424

25+
### vModel
26+
27+
::: demo
28+
<CFormCheck type="radio" id="flexRadioVModel1" inline label="One" value="One" v-model="picked"/>
29+
<CFormCheck type="radio" id="flexRadioVModel2" inline label="Two" value="Two" v-model="picked"/>
30+
<CFormCheck type="radio" id="flexRadioVModel2" inline label="Three" value="Three" v-model="picked"/>
31+
<CFormCheck type="radio" id="flexRadioVModel2" inline label="Four" value="Four" v-model="picked"/>
32+
<CFormCheck type="radio" id="flexRadioVModel2" inline label="Five" value="Five" v-model="picked"/>
33+
<div>Picked: {{ picked }}</div>
34+
:::
35+
```vue
36+
<template>
37+
<CFormCheck type="radio" id="flexRadioVModel1" inline label="One" value="One" v-model="picked"/>
38+
<CFormCheck type="radio" id="flexRadioVModel2" inline label="Two" value="Two" v-model="picked"/>
39+
<CFormCheck type="radio" id="flexRadioVModel2" inline label="Three" value="Three" v-model="picked"/>
40+
<CFormCheck type="radio" id="flexRadioVModel2" inline label="Four" value="Four" v-model="picked"/>
41+
<CFormCheck type="radio" id="flexRadioVModel2" inline label="Five" value="Five" v-model="picked"/>
42+
<div>Picked: {{ picked }}</div>
43+
</template>
44+
<script>
45+
import { ref } from 'vue'
46+
export default {
47+
setup() {
48+
const picked = ref('Four')
49+
return {
50+
picked
51+
}
52+
}
53+
}
54+
</script>
55+
```
56+
57+
<script>
58+
import { ref } from 'vue'
59+
export default {
60+
setup() {
61+
const picked = ref('Four')
62+
return {
63+
picked
64+
}
65+
}
66+
}
67+
</script>
68+
2569
### Disabled
2670

2771
::: demo

0 commit comments

Comments
 (0)