vue-easytable
Version:
70 lines (64 loc) • 1.98 kB
JSX
import VeCheckbox from "vue-easytable/packages/ve-checkbox";
import { COMPS_NAME, EMIT_EVENTS } from "../util/constant";
import { clsName } from "../util";
import emitter from "../../../src/mixins/emitter";
export default {
name: COMPS_NAME.VE_TABLE_HEADER_CHECKBOX_CONTENT,
mixins: [emitter],
props: {
// checkbox option
checkboxOption: {
type: Object,
default: function () {
return null;
},
},
},
data() {
return {
// is selected
isSelected: false,
isIndeterminate: false,
};
},
methods: {
// selected change
selectedChange(isSelected) {
this.isSelected = isSelected;
this.dispatch(
COMPS_NAME.VE_TABLE,
EMIT_EVENTS.CHECKBOX_SELECTED_ALL_CHANGE,
{
isSelected,
},
);
},
// set selected all info
setSelectedAllInfo({ isSelected, isIndeterminate }) {
this.isSelected = isSelected;
this.isIndeterminate = isIndeterminate;
},
},
mounted() {
// receive selected all info
this.$on(EMIT_EVENTS.CHECKBOX_SELECTED_ALL_INFO, (params) => {
this.setSelectedAllInfo(params);
});
},
render() {
const { isSelected, isIndeterminate, selectedChange } = this;
const checkboxProps = {
class: clsName("checkbox-wrapper"),
props: {
isControlled: true,
isSelected: isSelected,
indeterminate: isIndeterminate,
},
on: {
"on-checked-change": (isSelectedParam) =>
selectedChange(isSelectedParam),
},
};
return <VeCheckbox {...checkboxProps} />;
},
};