import { computed, defineComponent } from 'vue'; import Checkbox from '../checkbox'; import Radio from '../radio'; import { SelectionBoxProps } from './interface'; import BaseMixin from '../_util/BaseMixin'; import { getOptionProps } from '../_util/props-util'; export default defineComponent({ name: 'SelectionBox', mixins: [BaseMixin], inheritAttrs: false, props: SelectionBoxProps, setup(props) { return { checked: computed(() => { const { store, defaultSelection, rowIndex } = props; let checked = false; if (store.selectionDirty) { checked = store.selectedRowKeys.indexOf(rowIndex) >= 0; } else { checked = store.selectedRowKeys.indexOf(rowIndex) >= 0 || defaultSelection.indexOf(rowIndex) >= 0; } return checked; }), }; }, render() { const { type, rowIndex, ...rest } = { ...getOptionProps(this), ...this.$attrs } as any; const { checked } = this; const checkboxProps = { checked, ...rest, }; if (type === 'radio') { checkboxProps.value = rowIndex; return ; } return ; }, });