149 lines
3.6 KiB
JavaScript
149 lines
3.6 KiB
JavaScript
"use strict";
|
||
const common_vendor = require("../../../common/vendor.js");
|
||
var sys = common_vendor.index.getSystemInfoSync();
|
||
const _sfc_main = {
|
||
name: "fui-nav-bar",
|
||
emits: ["init", "leftClick", "rightClick", "titleClick"],
|
||
props: {
|
||
//navbar左右padding值,单位px
|
||
padding: {
|
||
type: [Number, String],
|
||
default: 8
|
||
},
|
||
//标题
|
||
title: {
|
||
type: String,
|
||
default: ""
|
||
},
|
||
//标题字体大小,单位px
|
||
size: {
|
||
type: [Number, String],
|
||
default: 17
|
||
},
|
||
//标题颜色
|
||
color: {
|
||
type: String,
|
||
default: ""
|
||
},
|
||
fontWeight: {
|
||
type: [Number, String],
|
||
default: 500
|
||
},
|
||
background: {
|
||
type: String,
|
||
default: ""
|
||
},
|
||
//是否需要底部分割线
|
||
splitLine: {
|
||
type: Boolean,
|
||
default: false
|
||
},
|
||
//分割线颜色,仅Nvue生效
|
||
lineColor: {
|
||
type: String,
|
||
default: "#eee"
|
||
},
|
||
//是否包含状态栏
|
||
statusBar: {
|
||
type: Boolean,
|
||
default: true
|
||
},
|
||
//是否固定在顶部
|
||
isFixed: {
|
||
type: Boolean,
|
||
default: false
|
||
},
|
||
//z-index
|
||
zIndex: {
|
||
type: [Number, String],
|
||
default: 996
|
||
},
|
||
//自定义navbar内容,title、右插槽失效
|
||
custom: {
|
||
type: Boolean,
|
||
default: false
|
||
},
|
||
//v1.9.9+
|
||
isOccupy: {
|
||
type: Boolean,
|
||
default: false
|
||
}
|
||
},
|
||
computed: {
|
||
getStyle() {
|
||
let style = "";
|
||
if (this.isOccupy) {
|
||
let height = this.statusBar ? this.statusBarHeight + 44 : 44;
|
||
style += `height:${height}px;`;
|
||
}
|
||
return style;
|
||
}
|
||
},
|
||
data() {
|
||
return {
|
||
statusBarHeight: sys.statusBarHeight
|
||
};
|
||
},
|
||
created() {
|
||
let obj = {};
|
||
obj = common_vendor.index.getMenuButtonBoundingClientRect();
|
||
this.$emit("init", {
|
||
windowWidth: sys.windowWidth,
|
||
//不包含状态栏高度固定为:44px
|
||
height: 44,
|
||
statusBarHeight: this.statusBarHeight,
|
||
//小程序右上角悬浮按钮左边界坐标,单位:px
|
||
left: obj.left || -1,
|
||
//小程序右上角悬浮按钮宽度,单位:px
|
||
btnWidth: obj.width || 0,
|
||
//小程序右上角悬浮按钮高度,单位:px
|
||
btnHeight: obj.height || 0
|
||
});
|
||
},
|
||
methods: {
|
||
leftClick() {
|
||
this.$emit("leftClick");
|
||
},
|
||
rightClick() {
|
||
this.$emit("rightClick");
|
||
},
|
||
titleClick() {
|
||
this.$emit("titleClick");
|
||
}
|
||
}
|
||
};
|
||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||
return common_vendor.e({
|
||
a: $props.statusBar
|
||
}, $props.statusBar ? {
|
||
b: $data.statusBarHeight + "px"
|
||
} : {}, {
|
||
c: !$props.custom
|
||
}, !$props.custom ? common_vendor.e({
|
||
d: common_vendor.o((...args) => $options.leftClick && $options.leftClick(...args)),
|
||
e: $props.title
|
||
}, $props.title ? {
|
||
f: common_vendor.t($props.title),
|
||
g: $props.size + "px",
|
||
h: $props.color,
|
||
i: $props.fontWeight,
|
||
j: common_vendor.o((...args) => $options.titleClick && $options.titleClick(...args))
|
||
} : {}, {
|
||
k: common_vendor.o((...args) => $options.rightClick && $options.rightClick(...args))
|
||
}) : {}, {
|
||
l: $props.custom
|
||
}, $props.custom ? {} : {}, {
|
||
m: $props.splitLine ? 1 : "",
|
||
n: !$props.background ? 1 : "",
|
||
o: $props.isFixed ? 1 : "",
|
||
p: $props.background,
|
||
q: $props.lineColor,
|
||
r: $props.padding + "px",
|
||
s: $props.padding + "px",
|
||
t: $props.zIndex,
|
||
v: common_vendor.s($options.getStyle)
|
||
});
|
||
}
|
||
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-d46cf250"]]);
|
||
wx.createComponent(Component);
|