magiccube-vue3
Version:
vue3-js版组件库
56 lines (50 loc) • 1.52 kB
JavaScript
import { inject, onBeforeUnmount } from 'vue'
const SelectOption = {
name: 'McSelectOption',
props: {
name: {
type: [String, Number],
default: ''
},
value: [String, Number],
disabled: {
type: Boolean,
default: false,
},
},
emits: [],
setup(props, { slots }) {
const handleSelect = inject('handleSelect', () => { })
const optionsData = inject('optionsData', [])
const getChecked = inject('getChecked', () => {})
optionsData.value.push({
value: props.value,
name: props.name
})
const handleClick = () => {
if (props.disabled) return false
handleSelect({
name: props.name,
value: props.value
})
}
onBeforeUnmount(() => {
const i = optionsData.value.findIndex(item => item.value === props.value)
optionsData.value.splice(i, 1)
})
return () => (
<li class={{
'mc-select-option': true,
disabled: props.disabled,
active: getChecked(props.value)
}} onClick={handleClick}>
{slots.default ? slots.default() : props.name}
</li>
)
}
}
SelectOption.install = (app) => {
app.component(SelectOption.name, SelectOption)
}
const McSelectOption = SelectOption
export { McSelectOption, McSelectOption as default }