zmp-vue
Version:
Build full featured iOS & Android apps using ZMP & Vue
94 lines (88 loc) • 3.22 kB
JavaScript
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
};
}
};