UNPKG

naive-ui

Version:

A Vue 3 Component Library. Fairly Complete, Theme Customizable, Uses TypeScript, Fast

46 lines (45 loc) 2.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NMenuOptionGroup = exports.menuItemGroupPropKeys = exports.menuItemGroupProps = void 0; const vue_1 = require("vue"); const _utils_1 = require("../../_utils"); const context_1 = require("./context"); const use_menu_child_1 = require("./use-menu-child"); const use_menu_child_props_1 = require("./use-menu-child-props"); const utils_1 = require("./utils"); exports.menuItemGroupProps = Object.assign(Object.assign({}, use_menu_child_props_1.useMenuChildProps), { tmNode: { type: Object, required: true }, tmNodes: { type: Array, required: true } }); exports.menuItemGroupPropKeys = (0, _utils_1.keysOf)(exports.menuItemGroupProps); exports.NMenuOptionGroup = (0, vue_1.defineComponent)({ name: 'MenuOptionGroup', props: exports.menuItemGroupProps, setup(props) { (0, vue_1.provide)(context_1.submenuInjectionKey, null); const MenuChild = (0, use_menu_child_1.useMenuChild)(props); (0, vue_1.provide)(context_1.menuItemGroupInjectionKey, { paddingLeftRef: MenuChild.paddingLeft }); const { mergedClsPrefixRef, props: menuProps } = (0, vue_1.inject)(context_1.menuInjectionKey); return function () { const { value: mergedClsPrefix } = mergedClsPrefixRef; const paddingLeft = MenuChild.paddingLeft.value; const { nodeProps } = menuProps; const attrs = nodeProps === null || nodeProps === void 0 ? void 0 : nodeProps(props.tmNode.rawNode); return ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-menu-item-group`, role: "group" }, (0, vue_1.h)("div", Object.assign({}, attrs, { class: [`${mergedClsPrefix}-menu-item-group-title`, attrs === null || attrs === void 0 ? void 0 : attrs.class], style: [ (attrs === null || attrs === void 0 ? void 0 : attrs.style) || '', paddingLeft !== undefined ? `padding-left: ${paddingLeft}px;` : '' ] }), (0, _utils_1.render)(props.title), props.extra ? ((0, vue_1.h)(vue_1.Fragment, null, ' ', (0, _utils_1.render)(props.extra))) : null), (0, vue_1.h)("div", null, props.tmNodes.map(tmNode => (0, utils_1.itemRenderer)(tmNode, menuProps))))); }; } });