UNPKG

zmp-vue

Version:

Build full featured iOS & Android apps using ZMP & Vue

67 lines (62 loc) 2.77 kB
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); } import { toDisplayString as _toDisplayString, renderSlot as _renderSlot, createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock } from "vue"; function render(_ctx, _cache) { return _openBlock(), _createBlock("li", null, [_createVNode("a", _mergeProps({ ref: "linkElRef", class: _ctx.linkClasses }, _ctx.linkAttrs, { onClick: _cache[1] || (_cache[1] = function () { return _ctx.onClick && _ctx.onClick.apply(_ctx, arguments); }) }), [_createTextVNode(_toDisplayString(_ctx.title) + " " + _toDisplayString(_ctx.text) + " ", 1), _renderSlot(_ctx.$slots, "default")], 16)]); } import { computed, ref } from 'vue'; import { classNames, isStringProp } from '../shared/utils'; import { colorClasses, colorProps, actionsAttrs, actionsClasses, actionsProps, routerAttrs, routerClasses, routerProps } from '../shared/mixins'; import { useTooltip } from '../shared/use-tooltip'; import { useRouteProps } from '../shared/use-route-props'; export default { name: 'zmp-list-button', render: render, props: _extends({ title: [String, Number], text: [String, Number], tabLink: [Boolean, String], tabLinkActive: Boolean, link: [Boolean, String], href: [Boolean, String], target: String, tooltip: String, tooltipTrigger: String }, colorProps, actionsProps, routerProps), emits: ['click'], setup: function setup(props, _ref) { var emit = _ref.emit; var linkElRef = ref(null); var onClick = function onClick(e) { emit('click', e); }; useTooltip(linkElRef, props); useRouteProps(linkElRef, props); var linkAttrs = computed(function () { return _extends({ href: typeof props.link === 'boolean' && typeof props.href === 'boolean' ? '#' : props.link || props.href, target: props.target, 'data-tab': isStringProp(props.tabLink) && props.tabLink }, routerAttrs(props), actionsAttrs(props)); }); var linkClasses = computed(function () { return classNames(_extends({ 'list-button': true, 'tab-link': props.tabLink || props.tabLink === '', 'tab-link-active': props.tabLinkActive }, colorClasses(props), routerClasses(props), actionsClasses(props))); }); return { linkAttrs: linkAttrs, linkClasses: linkClasses, onClick: onClick, linkElRef: linkElRef }; } };