ant-design-vue/components/menu/SubMenu.jsx

43 lines
1.1 KiB
Vue

import { SubMenu as VcSubMenu } from '../vc-menu';
import { getListeners } from '../_util/props-util';
import classNames from 'classnames';
export default {
name: 'ASubMenu',
isSubMenu: true,
props: { ...VcSubMenu.props },
inject: {
menuPropsContext: { default: () => ({}) },
},
methods: {
onKeyDown(e) {
this.$refs.subMenu.onKeyDown(e);
},
},
render() {
const { $slots, $scopedSlots } = this;
const { rootPrefixCls, popupClassName } = this.$props;
const { theme: antdMenuTheme } = this.menuPropsContext;
const props = {
props: {
...this.$props,
popupClassName: classNames(`${rootPrefixCls}-${antdMenuTheme}`, popupClassName),
},
ref: 'subMenu',
on: getListeners(this),
scopedSlots: $scopedSlots,
};
const slotsKey = Object.keys($slots);
return (
<VcSubMenu {...props}>
{slotsKey.length
? slotsKey.map(name => {
return <template slot={name}>{$slots[name]}</template>;
})
: null}
</VcSubMenu>
);
},
};