diff --git a/src/empty/Network.tsx b/src/empty/Network.tsx new file mode 100644 index 000000000..a6cedf812 --- /dev/null +++ b/src/empty/Network.tsx @@ -0,0 +1,125 @@ +export default { + render() { + const genStop = (color: string, offset: number, opacity?: number) => ( + + ); + + return ( + + + + {genStop('#FFF', 0, 0.5)} + {genStop('#F2F3F5', 100)} + + + {genStop('#F2F3F5', 0, 0.3)} + {genStop('#F2F3F5', 100)} + + + {genStop('#EBEDF0', 0)} + {genStop('#DCDEE0', 100, 0)} + + + {genStop('#EAEDF0', 0)} + {genStop('#DCDEE0', 100)} + + + {genStop('#EAEDF0', 0)} + {genStop('#DCDEE0', 100)} + + + {genStop('#EAEDF0', 0)} + {genStop('#DCDEE0', 100)} + + + {genStop('#EAEDF0', 0)} + {genStop('#DCDEE0', 100)} + + + {genStop('#EBEDF0', 0)} + {genStop('#FFF', 100, 0)} + + + + + + + + + + + + + + + + + + + + + + + + + ); + }, +}; diff --git a/src/empty/index.js b/src/empty/index.js index 8300e09cd..ef3e307a0 100644 --- a/src/empty/index.js +++ b/src/empty/index.js @@ -1,8 +1,9 @@ import { createNamespace } from '../utils'; +import Network from './Network'; const [createComponent, bem] = createNamespace('empty'); -const PRESETS = ['error', 'search', 'default', 'network']; +const PRESETS = ['error', 'search', 'default']; export default createComponent({ props: { @@ -13,20 +14,29 @@ export default createComponent({ }, }, - computed: { - url() { - if (PRESETS.indexOf(this.image) !== -1) { - return `https://img.yzcdn.cn/vant/empty-image-${this.image}.png`; + methods: { + genImageContent() { + const slots = this.slots('image'); + + if (slots) { + return slots; } - return this.image; - }, - }, + if (this.image === 'network') { + return ; + } + + let { image } = this; + + if (PRESETS.indexOf(image) !== -1) { + image = `https://img.yzcdn.cn/vant/empty-image-${image}.png`; + } + + return ; + }, - methods: { genImage() { - const image = this.slots('image') || ; - return
{image}
; + return
{this.genImageContent()}
; }, genDescription() { diff --git a/src/empty/test/__snapshots__/index.spec.js.snap b/src/empty/test/__snapshots__/index.spec.js.snap index 3f2244c96..4484b79f0 100644 --- a/src/empty/test/__snapshots__/index.spec.js.snap +++ b/src/empty/test/__snapshots__/index.spec.js.snap @@ -1,5 +1,12 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`bottom slot 1`] = ` +
+
+
Custom bottom
+
+`; + exports[`description slot 1`] = `
@@ -12,3 +19,65 @@ exports[`image slot 1`] = `
Custom Image
`; + +exports[`render svg when image is network 1`] = ` +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+`; diff --git a/src/empty/test/index.spec.js b/src/empty/test/index.spec.js index 7dd7cb4ff..54d3d4438 100644 --- a/src/empty/test/index.spec.js +++ b/src/empty/test/index.spec.js @@ -20,3 +20,23 @@ test('description slot', () => { expect(wrapper).toMatchSnapshot(); }); + +test('bottom slot', () => { + const wrapper = mount(Empty, { + scopedSlots: { + default: () => 'Custom bottom', + }, + }); + + expect(wrapper).toMatchSnapshot(); +}); + +test('render svg when image is network', () => { + const wrapper = mount(Empty, { + propsData: { + image: 'network', + }, + }); + + expect(wrapper).toMatchSnapshot(); +}); diff --git a/yarn.lock b/yarn.lock index 0cb675f51..2c47c9afa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1561,40 +1561,40 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^2.16.0": - version "2.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.22.0.tgz#218ce6d4aa0244c6a40baba39ca1e021b26bb017" - integrity sha512-BvxRLaTDVQ3N+Qq8BivLiE9akQLAOUfxNHIEhedOcg8B2+jY8Rc4/D+iVprvuMX1AdezFYautuGDwr9QxqSxBQ== +"@typescript-eslint/eslint-plugin@^2.27.0": + version "2.28.0" + resolved "https://registry.npm.taobao.org/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-2.28.0.tgz#4431bc6d3af41903e5255770703d4e55a0ccbdec" + integrity sha1-RDG8bTr0GQPlJVdwcD1OVaDMvew= dependencies: - "@typescript-eslint/experimental-utils" "2.22.0" - eslint-utils "^1.4.3" + "@typescript-eslint/experimental-utils" "2.28.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.22.0": - version "2.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.22.0.tgz#4d00c91fbaaa68e56e7869be284999a265707f85" - integrity sha512-sJt1GYBe6yC0dWOQzXlp+tiuGglNhJC9eXZeC8GBVH98Zv9jtatccuhz0OF5kC/DwChqsNfghHx7OlIDQjNYAQ== +"@typescript-eslint/experimental-utils@2.28.0": + version "2.28.0" + resolved "https://registry.npm.taobao.org/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-2.28.0.tgz#1fd0961cd8ef6522687b4c562647da6e71f8833d" + integrity sha1-H9CWHNjvZSJoe0xWJkfabnH4gz0= dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.22.0" + "@typescript-eslint/typescript-estree" "2.28.0" eslint-scope "^5.0.0" + eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.16.0": - version "2.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.22.0.tgz#8eeb6cb6de873f655e64153397d4790898e149d0" - integrity sha512-FaZKC1X+nvD7qMPqKFUYHz3H0TAioSVFGvG29f796Nc5tBluoqfHgLbSFKsh7mKjRoeTm8J9WX2Wo9EyZWjG7w== +"@typescript-eslint/parser@^2.27.0": + version "2.28.0" + resolved "https://registry.npm.taobao.org/@typescript-eslint/parser/download/@typescript-eslint/parser-2.28.0.tgz#bb761286efd2b0714761cab9d0ee5847cf080385" + integrity sha1-u3YShu/SsHFHYcq50O5YR88IA4U= dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.22.0" - "@typescript-eslint/typescript-estree" "2.22.0" + "@typescript-eslint/experimental-utils" "2.28.0" + "@typescript-eslint/typescript-estree" "2.28.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.22.0": - version "2.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.22.0.tgz#a16ed45876abf743e1f5857e2f4a1c3199fd219e" - integrity sha512-2HFZW2FQc4MhIBB8WhDm9lVFaBDy6h9jGrJ4V2Uzxe/ON29HCHBTj3GkgcsgMWfsl2U5as+pTOr30Nibaw7qRQ== +"@typescript-eslint/typescript-estree@2.28.0": + version "2.28.0" + resolved "https://registry.npm.taobao.org/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-2.28.0.tgz#d34949099ff81092c36dc275b6a1ea580729ba00" + integrity sha1-00lJCZ/4EJLDbcJ1tqHqWAcpugA= dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -1672,15 +1672,16 @@ webpackbar "^4.0.0" "@vant/eslint-config@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@vant/eslint-config/-/eslint-config-2.0.0.tgz#cbfc1daaa42c5ffcf9fa4341d867149737986967" - integrity sha512-W6v4gNieMTGOGWSJVuSSdYjHy3giELbJibFlCMuCGK8VE8MFMSwz2M/riG/NxEOoKx51J1MVH9rFy3lvWuMH6g== + version "2.1.0" + resolved "https://registry.npm.taobao.org/@vant/eslint-config/download/@vant/eslint-config-2.1.0.tgz#736cb273ac279a44ab54a922dfd9b21fd8883308" + integrity sha1-c2yyc6wnmkSrVKki39myH9iIMwg= dependencies: - "@typescript-eslint/eslint-plugin" "^2.16.0" - "@typescript-eslint/parser" "^2.16.0" - eslint-config-airbnb-base "^14.0.0" - eslint-plugin-import "^2.20.0" - eslint-plugin-vue "^6.1.2" + "@typescript-eslint/eslint-plugin" "^2.27.0" + "@typescript-eslint/parser" "^2.27.0" + eslint-config-airbnb-base "^14.1.0" + eslint-config-prettier "^6.10.1" + eslint-plugin-import "^2.20.2" + eslint-plugin-vue "^6.2.2" "@vant/icons@1.2.1": version "1.2.1" @@ -3357,10 +3358,10 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" -confusing-browser-globals@^1.0.7: +confusing-browser-globals@^1.0.9: version "1.0.9" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" - integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + resolved "https://registry.npm.taobao.org/confusing-browser-globals/download/confusing-browser-globals-1.0.9.tgz?cache=0&sync_timestamp=1575504220073&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fconfusing-browser-globals%2Fdownload%2Fconfusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha1-crwTtIPAJ2gBaBhx1ImFFvj1T90= connect-history-api-fallback@^1.6.0: version "1.6.0" @@ -4379,14 +4380,21 @@ escodegen@^1.11.1: optionalDependencies: source-map "~0.6.1" -eslint-config-airbnb-base@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz#8a7bcb9643d13c55df4dd7444f138bf4efa61e17" - integrity sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA== +eslint-config-airbnb-base@^14.1.0: + version "14.1.0" + resolved "https://registry.npm.taobao.org/eslint-config-airbnb-base/download/eslint-config-airbnb-base-14.1.0.tgz#2ba4592dd6843258221d9bff2b6831bd77c874e4" + integrity sha1-K6RZLdaEMlgiHZv/K2gxvXfIdOQ= dependencies: - confusing-browser-globals "^1.0.7" + confusing-browser-globals "^1.0.9" object.assign "^4.1.0" - object.entries "^1.1.0" + object.entries "^1.1.1" + +eslint-config-prettier@^6.10.1: + version "6.10.1" + resolved "https://registry.npm.taobao.org/eslint-config-prettier/download/eslint-config-prettier-6.10.1.tgz?cache=0&sync_timestamp=1584871515582&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-config-prettier%2Fdownload%2Feslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a" + integrity sha1-Ep757FddXdwOJpZnvwne/NiYZCo= + dependencies: + get-stdin "^6.0.0" eslint-import-resolver-node@^0.3.2: version "0.3.3" @@ -4404,10 +4412,10 @@ eslint-module-utils@^2.4.1: debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-import@^2.20.0: - version "2.20.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" - integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== +eslint-plugin-import@^2.20.2: + version "2.20.2" + resolved "https://registry.npm.taobao.org/eslint-plugin-import/download/eslint-plugin-import-2.20.2.tgz#91fc3807ce08be4837141272c8b99073906e588d" + integrity sha1-kfw4B84Ivkg3FBJyyLmQc5BuWI0= dependencies: array-includes "^3.0.3" array.prototype.flat "^1.2.1" @@ -4422,10 +4430,10 @@ eslint-plugin-import@^2.20.0: read-pkg-up "^2.0.0" resolve "^1.12.0" -eslint-plugin-vue@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.1.tgz#ca802df5c33146aed1e56bb21d250c1abb6120a3" - integrity sha512-MiIDOotoWseIfLIfGeDzF6sDvHkVvGd2JgkvjyHtN3q4RoxdAXrAMuI3SXTOKatljgacKwpNAYShmcKZa4yZzw== +eslint-plugin-vue@^6.2.2: + version "6.2.2" + resolved "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-6.2.2.tgz?cache=0&sync_timestamp=1584178049037&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe" + integrity sha1-J/7NmjokeJsPER7N1UCp5WGY4P4= dependencies: natural-compare "^1.4.0" semver "^5.6.0" @@ -4454,6 +4462,13 @@ eslint-utils@^1.4.3: dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" + integrity sha1-e+HMcPJ6cqds0UqmmLyr7WiQ4c0= + dependencies: + eslint-visitor-keys "^1.1.0" + eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" @@ -8200,10 +8215,10 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.1.0: +object.entries@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" - integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== + resolved "https://registry.npm.taobao.org/object.entries/download/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + integrity sha1-7hzwQVPeArsJP+wzaDkA9XzlOZs= dependencies: define-properties "^1.1.3" es-abstract "^1.17.0-next.1"