UNPKG

@coreui/vue-pro

Version:

UI Components Library for Vue.js

52 lines (48 loc) 1.81 kB
'use strict'; var vue = require('vue'); var CConditionalTeleport = require('../conditional-teleport/CConditionalTeleport.js'); var utils = require('./utils.js'); const CDropdownMenu = vue.defineComponent({ name: 'CDropdownMenu', inheritAttrs: false, props: { /** * Component used for the root node. Either a string to use a HTML element or a component. * * @values 'div', 'ul' */ as: { type: String, default: 'div', }, }, setup(props, { attrs, slots }) { const dropdownMenuRef = vue.inject('dropdownMenuRef'); const config = vue.inject('config'); // eslint-disable-line @typescript-eslint/no-explicit-any const visible = vue.inject('visible'); const { alignment, container, dark, popper, teleport } = config; return () => vue.h(CConditionalTeleport.CConditionalTeleport, { container: container, teleport: teleport, }, { default: () => vue.h(props.as, { ...attrs, class: [ 'dropdown-menu', { show: visible.value }, utils.getAlignmentClassNames(alignment), attrs.class, ], ...((typeof alignment === 'object' || !popper) && { 'data-coreui-popper': 'static', }), ...(dark && { 'data-coreui-theme': 'dark' }), ref: dropdownMenuRef, }, props.as === 'ul' ? slots.default && slots.default().map((vnode) => vue.h('li', {}, vnode)) : slots.default && slots.default()), }); }, }); exports.CDropdownMenu = CDropdownMenu; //# sourceMappingURL=CDropdownMenu.js.map