提交 cd971673 编写于 作者: fxy060608's avatar fxy060608

wip(app): nvue

上级 1d66dcc4
export function initComponents({ uni, Vue, weex, plus, BroadcastChannel, UniViewJSBridge, VueShared, UniShared }) {
var components = function(vue, shared) {
"use strict";
const OPEN_TYPES = [
"navigate",
"redirect",
"switchTab",
"reLaunch",
"navigateBack"
];
const navigatorProps = {
hoverClass: {
type: String,
default: "navigator-hover"
},
url: {
type: String,
default: ""
},
openType: {
type: String,
default: "navigate",
validator(value) {
return Boolean(~OPEN_TYPES.indexOf(value));
}
},
delta: {
type: Number,
default: 1
},
hoverStartTime: {
type: [Number, String],
default: 50
},
hoverStayTime: {
type: [Number, String],
default: 600
},
exists: {
type: String,
default: ""
},
hoverStopPropagation: {
type: Boolean,
default: false
}
};
function createNavigatorOnClick(props) {
return () => {
if (props.openType !== "navigateBack" && !props.url) {
console.error("<navigator/> should have url attribute when using navigateTo, redirectTo, reLaunch or switchTab");
return;
}
switch (props.openType) {
case "navigate":
uni.navigateTo({
url: props.url
});
break;
case "redirect":
uni.redirectTo({
url: props.url,
exists: props.exists
});
break;
case "switchTab":
uni.switchTab({
url: props.url
});
break;
case "reLaunch":
uni.reLaunch({
url: props.url
});
break;
case "navigateBack":
uni.navigateBack({
delta: props.delta
});
break;
}
};
import { defineComponent, createVNode, mergeProps } from "vue";
import { hasOwn } from "@vue/shared";
const OPEN_TYPES = [
"navigate",
"redirect",
"switchTab",
"reLaunch",
"navigateBack"
];
const navigatorProps = {
hoverClass: {
type: String,
default: "navigator-hover"
},
url: {
type: String,
default: ""
},
openType: {
type: String,
default: "navigate",
validator(value) {
return Boolean(~OPEN_TYPES.indexOf(value));
}
function useHoverClass(props) {
if (props.hoverClass && props.hoverClass !== "none") {
const hoverAttrs = { hoverClass: props.hoverClass };
if (shared.hasOwn(props, "hoverStartTime")) {
hoverAttrs.hoverStartTime = props.hoverStartTime;
}
if (shared.hasOwn(props, "hoverStayTime")) {
hoverAttrs.hoverStayTime = props.hoverStayTime;
}
if (shared.hasOwn(props, "hoverStopPropagation")) {
hoverAttrs.hoverStopPropagation = props.hoverStopPropagation;
}
return hoverAttrs;
}
return {};
},
delta: {
type: Number,
default: 1
},
hoverStartTime: {
type: [Number, String],
default: 50
},
hoverStayTime: {
type: [Number, String],
default: 600
},
exists: {
type: String,
default: ""
},
hoverStopPropagation: {
type: Boolean,
default: false
}
};
function createNavigatorOnClick(props) {
return () => {
if (props.openType !== "navigateBack" && !props.url) {
console.error("<navigator/> should have url attribute when using navigateTo, redirectTo, reLaunch or switchTab");
return;
}
const navigatorStyles = [{
"navigator-hover": {
backgroundColor: "rgba(0,0,0,0.1)",
opacity: 0.7
}
}];
var Navigator = vue.defineComponent({
name: "Navigator",
props: navigatorProps,
styles: navigatorStyles,
setup(props, {
slots
}) {
const onClick = createNavigatorOnClick(props);
return () => {
return vue.createVNode("view", vue.mergeProps(useHoverClass(props), {
"onClick": onClick
}), [slots.default && slots.default()]);
};
}
});
var components2 = {
Navigator
};
return components2;
}(Vue, VueShared);
return components;
switch (props.openType) {
case "navigate":
uni.navigateTo({
url: props.url
});
break;
case "redirect":
uni.redirectTo({
url: props.url,
exists: props.exists
});
break;
case "switchTab":
uni.switchTab({
url: props.url
});
break;
case "reLaunch":
uni.reLaunch({
url: props.url
});
break;
case "navigateBack":
uni.navigateBack({
delta: props.delta
});
break;
}
};
}
function useHoverClass(props) {
if (props.hoverClass && props.hoverClass !== "none") {
const hoverAttrs = { hoverClass: props.hoverClass };
if (hasOwn(props, "hoverStartTime")) {
hoverAttrs.hoverStartTime = props.hoverStartTime;
}
if (hasOwn(props, "hoverStayTime")) {
hoverAttrs.hoverStayTime = props.hoverStayTime;
}
if (hasOwn(props, "hoverStopPropagation")) {
hoverAttrs.hoverStopPropagation = props.hoverStopPropagation;
}
return hoverAttrs;
}
return {};
}
const navigatorStyles = [{
"navigator-hover": {
backgroundColor: "rgba(0,0,0,0.1)",
opacity: 0.7
}
}];
var Navigator = defineComponent({
name: "Navigator",
props: navigatorProps,
styles: navigatorStyles,
setup(props, {
slots
}) {
const onClick = createNavigatorOnClick(props);
return () => {
return createVNode("view", mergeProps(useHoverClass(props), {
"onClick": onClick
}), [slots.default && slots.default()]);
};
}
});
var components = {
Navigator
};
export { components as default };
......@@ -25,22 +25,12 @@ export default defineConfig({
lib: {
name: 'components',
entry: path.resolve(__dirname, 'src/nvue/components.ts'),
formats: ['iife'],
formats: ['es'],
},
rollupOptions: {
external: ['uni', 'vue', 'weex', '@vue/shared', '@dcloudio/uni-shared'],
output: {
banner:
'export function initComponents({uni,Vue,weex,plus,BroadcastChannel,UniViewJSBridge,VueShared,UniShared}) {',
footer: 'return components\n}',
entryFileNames: 'components.js',
globals: {
uni: 'uni',
vue: 'Vue',
weex: 'weex',
'@vue/shared': 'VueShared',
'@dcloudio/uni-shared': 'UniShared',
},
},
},
},
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册