UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

1 lines 5.02 kB
{"version":3,"file":"mixins-link.mjs","sources":["../../../../../src/utils/mixins/mixins-link.ts"],"sourcesContent":["import { computed } from 'vue';\r\nimport { isClient } from '../helpers';\r\n\r\nexport const mixinsLink = (proxy, { to, replace, target }) => {\r\n // computed\r\n\r\n // 链接\r\n const linkUrl = computed(() => {\r\n // 跳转的链接,支持 vue-router 对象\r\n const type = typeof to;\r\n\r\n // 判断是否字符串\r\n if (type !== 'string') {\r\n return null;\r\n }\r\n\r\n // absolute url 不需要路由\r\n if (to.includes('//')) {\r\n return to;\r\n }\r\n\r\n // router\r\n const router = proxy.$router;\r\n\r\n // 是否有路由\r\n if (router) {\r\n // 当前路由\r\n const current = proxy.$route;\r\n\r\n // 路由对象\r\n const route = router.resolve(to, current);\r\n\r\n return route ? route.href : to;\r\n }\r\n\r\n return to;\r\n });\r\n\r\n // methods\r\n\r\n // 打开新窗口\r\n const handleOpenTo = () => {\r\n if (!isClient) {\r\n return;\r\n }\r\n\r\n const router = proxy.$router;\r\n let _to = to;\r\n\r\n // 路由对象\r\n if (router) {\r\n // 当前路由\r\n const current = proxy.$route;\r\n\r\n // 路由对象\r\n const route = router.resolve(to, current);\r\n\r\n _to = route ? route.href : to;\r\n }\r\n\r\n // 判断是否字符串\r\n if (typeof to === 'string') {\r\n return;\r\n }\r\n\r\n window.open(_to);\r\n };\r\n\r\n // 跳转新链接\r\n const handleLink = (newWindow = false) => {\r\n if (!isClient) {\r\n return;\r\n }\r\n\r\n // 打开新窗口\r\n if (newWindow) {\r\n handleOpenTo();\r\n }\r\n // 没有打开新窗口\r\n else {\r\n const router = proxy.$router;\r\n\r\n // 路由对象\r\n if (router) {\r\n // href\r\n if (typeof to === 'string' && to.includes('//')) {\r\n window.location.href = to;\r\n }\r\n // replace\r\n else {\r\n replace\r\n ? proxy.$router.replace(to, () => {})\r\n : proxy.$router.push(to, () => {});\r\n }\r\n }\r\n // 普通链接\r\n else {\r\n window.location.href = to;\r\n }\r\n }\r\n };\r\n\r\n // 检查点击事件\r\n const handleCheckClick = (event: Event, newWindow = false) => {\r\n // 跳转的链接\r\n if (to) {\r\n // 相当于 a 链接的 target 属性\r\n if (target === '_blank') {\r\n handleOpenTo();\r\n\r\n return false;\r\n }\r\n // 没有打开新窗口\r\n else {\r\n event.preventDefault();\r\n\r\n handleLink(newWindow);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n // computed\r\n linkUrl,\r\n\r\n // methods\r\n handleOpenTo,\r\n handleLink,\r\n handleCheckClick,\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}