From cd9716736a667ed9177005a511ab201ba05648d0 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Wed, 9 Feb 2022 13:47:48 +0800 Subject: [PATCH] wip(app): nvue --- packages/uni-components/dist/components.js | 244 ++++++++++----------- packages/uni-components/vite.config.ts | 12 +- 2 files changed, 121 insertions(+), 135 deletions(-) diff --git a/packages/uni-components/dist/components.js b/packages/uni-components/dist/components.js index c0ceca380..7bed05e94 100644 --- a/packages/uni-components/dist/components.js +++ b/packages/uni-components/dist/components.js @@ -1,127 +1,123 @@ -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(" 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(" 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 }; diff --git a/packages/uni-components/vite.config.ts b/packages/uni-components/vite.config.ts index 0d52b971b..20332819b 100644 --- a/packages/uni-components/vite.config.ts +++ b/packages/uni-components/vite.config.ts @@ -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', - }, }, }, }, -- GitLab