Skip to content

Commit 96c0ab9

Browse files
committed
created new Checkbox component with bootstrap 4 custom component styles
1 parent b2aa5a6 commit 96c0ab9

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

src/components/CheckBox.vue

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<template>
2+
<td v-show="checkboxRows" class="text-center" v-on="!rowsSelectable ? { click: () => selectCheckbox() } : {}">
3+
<div class="custom-control custom-checkbox">
4+
<input type="checkbox" class="custom-control-input" v-model="row_selected" v-on="!rowsSelectable ? { change: ($event) => handleChange($event) } : {}"/>
5+
<label class="custom-control-label"></label>
6+
</div>
7+
</td>
8+
</template>
9+
10+
<script>
11+
export default {
12+
name: 'CheckBox',
13+
props: {
14+
checkboxRows: {
15+
type: Boolean,
16+
default: false
17+
},
18+
rowsSelectable: {
19+
type: Boolean,
20+
default: false
21+
},
22+
row: {
23+
type: Object,
24+
default: function() {
25+
return {
26+
27+
};
28+
}
29+
},
30+
selectedItems: {
31+
type: Array,
32+
default: function() {
33+
return [];
34+
}
35+
},
36+
},
37+
data: function() {
38+
return {
39+
row_selected:false
40+
}
41+
},
42+
mounted() {
43+
this.checkInSelecteditems();
44+
},
45+
methods: {
46+
handleChange(event) {
47+
if (event.target.checked) {
48+
this.$emit('add-selected-item', this.row);
49+
} else {
50+
this.$emit('remove-selected-item', this.row);
51+
}
52+
},
53+
selectCheckbox() {
54+
if (this.row_selected) {
55+
this.$emit('remove-selected-item', this.row);
56+
} else {
57+
this.$emit('add-selected-item', this.row);
58+
}
59+
this.row_selected = !this.row_selected;
60+
},
61+
checkInSelecteditems() {
62+
let difference = _.differenceWith(this.selectedItems, [this.row], _.isEqual);
63+
if (difference.length != this.selectedItems.length) {
64+
this.row_selected = true;
65+
} else {
66+
this.row_selected = false;
67+
}
68+
},
69+
},
70+
watch: {
71+
row: {
72+
handler: function(newVal, oldVal) {
73+
let difference = _.differenceWith(this.selectedItems, [newVal], _.isEqual);
74+
if (difference.length != this.selectedItems.length) {
75+
this.row_selected = true;
76+
} else {
77+
this.row_selected = false;
78+
}
79+
},
80+
deep: true
81+
},
82+
selectedItems: {
83+
handler: function(newVal, oldVal) {
84+
let difference = _.differenceWith(newVal, [this.row], _.isEqual);
85+
if (difference.length != this.selectedItems.length) {
86+
this.row_selected = true;
87+
} else {
88+
this.row_selected = false;
89+
}
90+
},
91+
deep: true
92+
}
93+
}
94+
}
95+
</script>
96+
97+
<style scoped>
98+
.custom-control-label {
99+
vertical-align: top;
100+
}
101+
102+
</style>

0 commit comments

Comments
 (0)