naive-ui
Version:
A Vue 3 Component Library. Fairly Complete, Theme Customizable, Uses TypeScript, Fast
38 lines • 912 B
JavaScript
import { defineComponent, h, inject } from 'vue';
import { NRadio } from "../../../radio/index.mjs";
import { dataTableInjectionKey } from "../interface.mjs";
// Extract the radio to avoid useless rendering in table body
export default defineComponent({
name: 'DataTableBodyRadio',
props: {
rowKey: {
type: [String, Number],
required: true
},
disabled: {
type: Boolean,
required: true
},
onUpdateChecked: {
type: Function,
required: true
}
},
setup(props) {
const {
mergedCheckedRowKeySetRef,
componentId
} = inject(dataTableInjectionKey);
return () => {
const {
rowKey
} = props;
return h(NRadio, {
name: componentId,
disabled: props.disabled,
checked: mergedCheckedRowKeySetRef.value.has(rowKey),
onUpdateChecked: props.onUpdateChecked
});
};
}
});