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

wip(app): nvue

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