UNPKG

zmp-vue

Version:

Build full featured iOS & Android apps using ZMP & Vue

79 lines (69 loc) 2.66 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _vue = require("vue"); var _utils = require("../shared/utils"); var _mixins = require("../shared/mixins"); var _useRouteProps = require("../shared/use-route-props"); function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function render(_ctx, _cache) { return (0, _vue.openBlock)(), (0, _vue.createBlock)("div", (0, _vue.mergeProps)({ ref: "elRef", class: _ctx.classes }, _ctx.attrs, { onClick: _cache[1] || (_cache[1] = function () { return _ctx.onClick && _ctx.onClick.apply(_ctx, arguments); }) }), [(0, _vue.createTextVNode)((0, _vue.toDisplayString)(_ctx.text) + " ", 1), (0, _vue.renderSlot)(_ctx.$slots, "default")], 16); } var _default = { name: 'zmp-menu-dropdown-item', render: render, props: _extends({ text: String, link: Boolean, href: String, target: String, divider: Boolean }, _mixins.colorProps, _mixins.routerProps, _mixins.actionsProps), emits: ['click'], setup: function setup(props, _ref) { var emit = _ref.emit; var elRef = (0, _vue.ref)(null); var onClick = function onClick(e) { emit('click', e); }; (0, _useRouteProps.useRouteProps)(elRef, props); var isLink = (0, _vue.computed)(function () { return props.link || props.href || props.href === ''; }); var tag = (0, _vue.computed)(function () { return isLink.value ? 'a' : 'div'; }); var classes = (0, _vue.computed)(function () { return (0, _utils.classNames)({ 'menu-dropdown-link': isLink.value && !props.divider, 'menu-dropdown-item': !isLink.value && !props.divider, 'menu-dropdown-divider': props.divider }, (0, _mixins.colorClasses)(props), (0, _mixins.routerClasses)(props), (0, _mixins.actionsClasses)(props), { 'menu-close': typeof props.menuClose === 'undefined' }); }); var attrs = (0, _vue.computed)(function () { var hrefComputed = props.href; if (typeof hrefComputed === 'undefined' && props.link) hrefComputed = '#'; return _extends({ href: hrefComputed, target: props.target }, (0, _mixins.routerAttrs)(props), (0, _mixins.actionsAttrs)(props)); }); return { classes: classes, attrs: attrs, tag: tag, onClick: onClick, elRef: elRef }; } }; exports.default = _default;