UNPKG

zmp-vue

Version:

Build full featured iOS & Android apps using ZMP & Vue

94 lines (88 loc) 3.22 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 { resolveComponent as _resolveComponent, mergeProps as _mergeProps, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, withCtx as _withCtx, renderList as _renderList, createSlots as _createSlots } from "vue"; function render(_ctx, _cache) { var _component_NavLeft = _resolveComponent("NavLeft"); var _component_NavTitle = _resolveComponent("NavTitle"); var _component_Navbar = _resolveComponent("Navbar"); return _openBlock(), _createBlock("div", { ref: _ctx.elRef }, [_createVNode(_component_Navbar, _mergeProps(_extends({}, _ctx.$props, _ctx.$attrs), { class: { 'zmp-navbar-fill': _ctx.fill }, "back-link": false, title: false, subtitle: false }), _createSlots({ default: _withCtx(function () { return [_ctx.title || _ctx.subtitle ? (_openBlock(), _createBlock(_component_NavTitle, _mergeProps({ key: 0 }, _ctx.$props), null, 16)) : _createCommentVNode("", true)]; }), _: 2 }, [_ctx.backLink ? { name: "nav-left", fn: _withCtx(function () { return [_createVNode(_component_NavLeft, _mergeProps(_ctx.$props, { onBackClick: _cache[1] || (_cache[1] = function ($event) { return _ctx.$emit('click:back', $event); }) }), null, 16)]; }) } : undefined, _renderList(_ctx.$slots, function (_, name) { return { name: name, fn: _withCtx(function (slotData) { return [_renderSlot(_ctx.$slots, name, slotData)]; }) }; })]), 1040, ["class"])], 512); } import NavLeft from './nav-left'; import NavTitle from './nav-title'; import Navbar from '../components/navbar'; import { ref, onMounted } from 'vue'; import { DEFAULT_LARGE_NAVBAR_HEIGHT } from '../../common/constants'; import { colorProps } from '../shared/mixins'; export default { name: 'zmp-navbar', render: render, components: { Navbar: Navbar, NavLeft: NavLeft, NavTitle: NavTitle }, props: _extends({ backLink: [Boolean, String], backLinkUrl: String, backLinkForce: Boolean, backLinkShowText: Boolean, sliding: Boolean, title: String, subtitle: String, hidden: Boolean, fill: Boolean, noShadow: Boolean, noHairline: Boolean, innerClass: String, innerClassName: String, large: Boolean, largeTransparent: Boolean, transparent: Boolean, titleLarge: String }, colorProps), emits: ['click:back'], setup: function setup(props) { var elRef = ref(); onMounted(function () { if (props.large) { var root = document.documentElement; var height = elRef.value.el ? elRef.value.el.offsetHeight : DEFAULT_LARGE_NAVBAR_HEIGHT; root.style.setProperty('--zmp-navbar-height', height + "px"); } }, []); return { elRef: elRef }; } };