import { createNamespace } from '../utils';
import Cell from '../cell';
import Icon from '../icon';
import Popup from '../popup';
import { ChildrenMixin } from '../mixins/relation';
const [createComponent, bem] = createNamespace('dropdown-item');
export default createComponent({
mixins: [ChildrenMixin('vanDropdownMenu')],
props: {
value: null,
title: String,
disabled: Boolean,
titleClass: String,
options: {
type: Array,
default: () => []
}
},
data() {
return {
transition: true,
showPopup: false,
showWrapper: false
};
},
computed: {
displayTitle() {
if (this.title) {
return this.title;
}
const match = this.options.filter(option => option.value === this.value);
return match.length ? match[0].text : '';
}
},
methods: {
toggle(show = !this.showPopup, options = {}) {
if (show === this.showPopup) {
return;
}
this.transition = !options.immediate;
this.showPopup = show;
if (show) {
this.parent.updateOffset();
this.showWrapper = true;
}
}
},
beforeCreate() {
const createEmitter = eventName => () => this.$emit(eventName);
this.onOpen = createEmitter('open');
this.onClose = createEmitter('close');
this.onOpened = createEmitter('opened');
},
render(h) {
const {
zIndex,
offset,
overlay,
duration,
direction,
activeColor,
closeOnClickOverlay
} = this.parent;
const Options = this.options.map(option => {
const active = option.value === this.value;
return (