diff --git a/package.json b/package.json index 9ab1a0445..2466ad64c 100644 --- a/package.json +++ b/package.json @@ -58,9 +58,9 @@ "license": "MIT", "dependencies": { "@babel/runtime": "7.x", - "@popperjs/core": "^2.5.4", "@vant/icons": "1.4.0", "@vant/use": "^0.1.0", + "@vant/popperjs": "^1.0.0", "vue-lazyload": "1.2.3" }, "peerDependencies": { diff --git a/packages/vant-popperjs/babel.config.js b/packages/vant-popperjs/babel.config.js new file mode 100644 index 000000000..fa5ee221e --- /dev/null +++ b/packages/vant-popperjs/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ['@vant/cli/preset'], +}; diff --git a/packages/vant-popperjs/package.json b/packages/vant-popperjs/package.json new file mode 100644 index 000000000..5731c7d3c --- /dev/null +++ b/packages/vant-popperjs/package.json @@ -0,0 +1,30 @@ +{ + "name": "@vant/popperjs", + "version": "1.0.0", + "description": "Precompiled popperjs core", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, + "scripts": { + "dev": "rollup --config rollup.config.js --watch", + "build": "rollup --config rollup.config.js && tsc -p ./tsconfig.json --emitDeclarationOnly" + }, + "license": "MIT", + "repository": "https://github.com/youzan/vant/tree/dev/packages/vant-popperjs", + "dependencies": { + "@popperjs/core": "^2.5.4" + }, + "devDependencies": { + "@babel/runtime": "7.x", + "@rollup/plugin-babel": "^5.2.1", + "@rollup/plugin-node-resolve": "^10.0.0", + "rollup": "^2.33.3" + }, + "browserslist": [ + "Android >= 4.0", + "iOS >= 8" + ] +} diff --git a/packages/vant-popperjs/rollup.config.js b/packages/vant-popperjs/rollup.config.js new file mode 100644 index 000000000..a2bf18ab5 --- /dev/null +++ b/packages/vant-popperjs/rollup.config.js @@ -0,0 +1,12 @@ +import path from 'path'; +import babel from '@rollup/plugin-babel'; +import nodeResolve from '@rollup/plugin-node-resolve'; + +export default { + input: path.join(__dirname, 'src', 'index.ts'), + output: { + dir: 'lib', + format: 'cjs', + }, + plugins: [nodeResolve(), babel({ babelHelpers: 'runtime' })], +}; diff --git a/packages/vant-popperjs/src/index.ts b/packages/vant-popperjs/src/index.ts new file mode 100644 index 000000000..bc3f0ded6 --- /dev/null +++ b/packages/vant-popperjs/src/index.ts @@ -0,0 +1,4 @@ +import { createPopper } from '@popperjs/core/lib/popper-lite'; +import offsetModifier from '@popperjs/core/lib/modifiers/offset'; + +export { createPopper, offsetModifier }; diff --git a/packages/vant-popperjs/tsconfig.json b/packages/vant-popperjs/tsconfig.json new file mode 100644 index 000000000..4f8094c6f --- /dev/null +++ b/packages/vant-popperjs/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es5", + "outDir": "./lib", + "module": "ES2015", + "strict": true, + "declaration": true, + "esModuleInterop": true, + "moduleResolution": "node", + "lib": ["esnext", "dom"] + }, + "include": ["src/**/*"] +} diff --git a/packages/vant-popperjs/yarn.lock b/packages/vant-popperjs/yarn.lock new file mode 100644 index 000000000..f5c97ec0e --- /dev/null +++ b/packages/vant-popperjs/yarn.lock @@ -0,0 +1,166 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/helper-module-imports@^7.10.4": + version "7.12.5" + resolved "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.12.5.tgz?cache=0&sync_timestamp=1604441102741&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-imports%2Fdownload%2F%40babel%2Fhelper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha1-G/wCKfeUmI927QpNTpCGCFC1Tfs= + dependencies: + "@babel/types" "^7.12.5" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI= + +"@babel/runtime@7.x": + version "7.12.5" + resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.12.5.tgz?cache=0&sync_timestamp=1604443606981&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" + integrity sha1-QQ5+SHRB4bNgwpvnFdhw2bmFiC4= + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/types@^7.12.5": + version "7.12.7" + resolved "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.7.tgz?cache=0&sync_timestamp=1605904888635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13" + integrity sha1-YDn/HiQmQKKUUsmuVyFi7JqPXRM= + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@popperjs/core@^2.5.4": + version "2.5.4" + resolved "https://registry.npm.taobao.org/@popperjs/core/download/@popperjs/core-2.5.4.tgz?cache=0&sync_timestamp=1604076368519&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40popperjs%2Fcore%2Fdownload%2F%40popperjs%2Fcore-2.5.4.tgz#de25b5da9f727985a3757fd59b5d028aba75841a" + integrity sha1-3iW12p9yeYWjdX/Vm10Cirp1hBo= + +"@rollup/plugin-babel@^5.2.1": + version "5.2.1" + resolved "https://registry.npm.taobao.org/@rollup/plugin-babel/download/@rollup/plugin-babel-5.2.1.tgz#20fc8f8864dc0eaa1c5578408459606808f72924" + integrity sha1-IPyPiGTcDqocVXhAhFlgaAj3KSQ= + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-node-resolve@^10.0.0": + version "10.0.0" + resolved "https://registry.npm.taobao.org/@rollup/plugin-node-resolve/download/@rollup/plugin-node-resolve-10.0.0.tgz?cache=0&sync_timestamp=1603768362523&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40rollup%2Fplugin-node-resolve%2Fdownload%2F%40rollup%2Fplugin-node-resolve-10.0.0.tgz#44064a2b98df7530e66acf8941ff262fc9b4ead8" + integrity sha1-RAZKK5jfdTDmas+JQf8mL8m06tg= + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.17.0" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.npm.taobao.org/@rollup/pluginutils/download/@rollup/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha1-cGtFJO5tyLEDs8mVUz5a1oDAK5s= + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.npm.taobao.org/@types/estree/download/@types/estree-0.0.39.tgz?cache=0&sync_timestamp=1605053132167&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Festree%2Fdownload%2F%40types%2Festree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha1-4Xfmme4bjCLSMXTKqnQiZEOJUJ8= + +"@types/node@*": + version "14.14.10" + resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785" + integrity sha1-WVioLkGGPPxx8jB7N0jjSRugN4U= + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.npm.taobao.org/@types/resolve/download/@types/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha1-Ov1q2JZ8d+Q3bFmKgt3Vj0bsRdY= + dependencies: + "@types/node" "*" + +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/builtin-modules/download/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha1-qtl8FRMet2tltQ7yCOdYTNdqdIQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.npm.taobao.org/deepmerge/download/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha1-RNLqNnm49NT/ujPwPYZfwee/SVU= + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/estree-walker/download/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha1-MbxdYSyWtwQQa0d+bdXYqhOMtwA= + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.3.tgz?cache=0&sync_timestamp=1604593304255&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha1-+3OHA66NL5/pAMM4Nt3r7ouX8j4= + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y= + dependencies: + function-bind "^1.1.1" + +is-core-module@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/is-core-module/download/is-core-module-2.1.0.tgz?cache=0&sync_timestamp=1604519172113&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-core-module%2Fdownload%2Fis-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" + integrity sha1-pMwDHZsaymPuy9GKZQ4Ty07quUY= + dependencies: + has "^1.0.3" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-module/download/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha1-1i27VnlAXXLEc37FhgDp3c8G0kw= + +picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha1-IfMz6ba46v8CRo9RRupAbTRfTa0= + +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha1-ysLazIoepnX+qrrriugziYrkb1U= + +resolve@^1.17.0: + version "1.19.0" + resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha1-GvW/YwQJc0oGfK4pMYqsf6KaJnw= + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +rollup@^2.33.3: + version "2.33.3" + resolved "https://registry.npm.taobao.org/rollup/download/rollup-2.33.3.tgz?cache=0&sync_timestamp=1605677163089&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frollup%2Fdownload%2Frollup-2.33.3.tgz#ae72ce31f992b09a580072951bfea76e9df17342" + integrity sha1-rnLOMfmSsJpYAHKVG/6nbp3xc0I= + optionalDependencies: + fsevents "~2.1.2" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= diff --git a/src/button/index.less b/src/button/index.less index 66c31a6a6..3a077c40a 100644 --- a/src/button/index.less +++ b/src/button/index.less @@ -151,6 +151,12 @@ align-items: center; justify-content: center; height: 100%; + + // fix icon vertical align + // see: https://github.com/youzan/vant/issues/7617 + &::before { + content: ' '; + } } &__icon { diff --git a/src/popover/index.js b/src/popover/index.js index 82de6ea0b..c33fb53af 100644 --- a/src/popover/index.js +++ b/src/popover/index.js @@ -1,7 +1,5 @@ import { ref, watch, nextTick, onMounted, onBeforeUnmount } from 'vue'; -import { createPopper } from '@popperjs/core/lib/popper-lite'; -import offsetModifier from '@popperjs/core/lib/modifiers/offset'; -import extendsHelper from '@babel/runtime/helpers/esm/extends'; +import { createPopper, offsetModifier } from '@vant/popperjs'; // Utils import { createNamespace } from '../utils'; @@ -14,13 +12,6 @@ import { useClickAway } from '@vant/use'; import Icon from '../icon'; import Popup from '../popup'; -// add Object.assign polyfill for popper.js -// see: https://popper.js.org/docs/v2/browser-support/ -/* istanbul ignore if */ -if (!Object.assign) { - Object.assign = extendsHelper; -} - const [createComponent, bem] = createNamespace('popover'); export default createComponent({ diff --git a/src/share-sheet/README.md b/src/share-sheet/README.md index 5d802972e..19a0d7c34 100644 --- a/src/share-sheet/README.md +++ b/src/share-sheet/README.md @@ -70,6 +70,7 @@ export default { { name: 'Link', icon: 'link' }, { name: 'Poster', icon: 'poster' }, { name: 'Qrcode', icon: 'qrcode' }, + { name: 'Weapp Qrcode', icon: 'weapp-qrcode' }, ], ], }; @@ -131,7 +132,7 @@ export default { | --- | --- | --- | | name | Option name | _string_ | | description `v2.8.5` | Option description | _string_ | -| icon | Option icon,can be set to `wechat` `weibo` `qq` `link` `qrcode` `poster` or image URL | _string_ | +| icon | Option icon,can be set to `wechat` `weibo` `qq` `link` `qrcode` `poster` `weapp-qrcode` or image URL | _string_ | | className | Option className is used to set the class props to the share item | _string_ | ### Events diff --git a/src/share-sheet/README.zh-CN.md b/src/share-sheet/README.zh-CN.md index 9b7c2d66d..6536322e0 100644 --- a/src/share-sheet/README.zh-CN.md +++ b/src/share-sheet/README.zh-CN.md @@ -82,6 +82,7 @@ export default { { name: '复制链接', icon: 'link' }, { name: '分享海报', icon: 'poster' }, { name: '二维码', icon: 'qrcode' }, + { name: '小程序码', icon: 'weapp-qrcode' }, ], ], }; @@ -179,7 +180,7 @@ export default { | --- | --- | --- | | name | 分享渠道名称 | _string_ | | description `v2.8.5` | 分享选项描述 | _string_ | -| icon | 图标,可选值为 `wechat` `weibo` `qq` `link` `qrcode` `poster`,支持传入图片 URL | _string_ | +| icon | 图标,可选值为 `wechat` `weibo` `qq` `link` `qrcode` `poster` `weapp-qrcode`,支持传入图片 URL | _string_ | | className | 分享选项类名 | _string_ | ### Events diff --git a/src/share-sheet/demo/index.vue b/src/share-sheet/demo/index.vue index 5702b806d..2dde9fef8 100644 --- a/src/share-sheet/demo/index.vue +++ b/src/share-sheet/demo/index.vue @@ -57,6 +57,7 @@ export default { withDesc: '展示描述信息', customIcon: '自定义图标', description: '描述信息', + weappQrcode: '小程序码', }, 'en-US': { qq: 'QQ', @@ -72,6 +73,7 @@ export default { withDesc: 'Show Description', customIcon: 'Custom Icon', description: 'Description', + weappQrcode: 'Weapp Qrcode', }, }, @@ -108,6 +110,7 @@ export default { { name: this.t('link'), icon: 'link' }, { name: this.t('poster'), icon: 'poster' }, { name: this.t('qrcode'), icon: 'qrcode' }, + { name: this.t('weappQrcode'), icon: 'weapp-qrcode' }, ], ]; }, diff --git a/src/share-sheet/index.js b/src/share-sheet/index.js index 673c9ef5b..329a53b33 100644 --- a/src/share-sheet/index.js +++ b/src/share-sheet/index.js @@ -4,7 +4,15 @@ import { createNamespace, pick } from '../utils'; // Components import Popup, { popupSharedProps } from '../popup'; -const PRESET_ICONS = ['qq', 'weibo', 'wechat', 'link', 'qrcode', 'poster']; +const PRESET_ICONS = [ + 'qq', + 'link', + 'weibo', + 'wechat', + 'poster', + 'qrcode', + 'weapp-qrcode', +]; function getIconURL(icon) { if (PRESET_ICONS.indexOf(icon) !== -1) { diff --git a/yarn.lock b/yarn.lock index 4835ef360..3a728ef1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1821,6 +1821,13 @@ fast-glob "^3.2.2" fs-extra "^9.0.0" +"@vant/popperjs@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@vant/popperjs/-/popperjs-1.0.0.tgz#2d66ab4b8e275c98fb82f5efd43fdd47964d11f2" + integrity sha512-2OAl3URmH37OOATcKuT8iuZozoZVNMc8iLLZvurWZqHlWlAojsDHm7lQ2OKlAV4jlxbiFJt0en6DY+WlxHvN9w== + dependencies: + "@popperjs/core" "^2.5.4" + "@vant/stylelint-config@^1.4.0": version "1.4.1" resolved "https://registry.npm.taobao.org/@vant/stylelint-config/download/@vant/stylelint-config-1.4.1.tgz#f96d21e09de884e4d9fee71712aacb35228a066f"