Skip to content

Commit 4e198ac

Browse files
committed
feat: router custom icon #59
1 parent aae13ee commit 4e198ac

File tree

7 files changed

+59
-8
lines changed

7 files changed

+59
-8
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
"eslint-plugin-vue": "^5.0.0",
4444
"less": "^3.8.1",
4545
"less-loader": "^4.1.0",
46+
"vue-svg-loader": "^0.12.0",
4647
"vue-template-compiler": "^2.5.22"
4748
},
4849
"eslintConfig": {

src/assets/icons/bx-analyse.svg

Lines changed: 1 addition & 0 deletions
Loading

src/components/menu/index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,12 @@ export default {
5858
},
5959
methods: {
6060
renderIcon: function (h, icon) {
61-
return icon === 'none' || icon === undefined ? null : h(Icon, { props: { type: icon !== undefined ? icon : '' } })
61+
if (icon === 'none' || icon === undefined) {
62+
return null
63+
}
64+
const props = {}
65+
typeof (icon) === 'object' ? props.component = icon : props.type = icon
66+
return h(Icon, { props: { ...props } })
6267
},
6368
renderMenuItem: function (h, menu, pIndex, index) {
6469
return h(Item, { key: menu.path ? menu.path : 'item_' + pIndex + '_' + index }, [

src/config/router.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// eslint-disable-next-line
22
import { UserLayout, BasicLayout, RouteView, BlankLayout, PageView } from '@/components/layouts'
3+
import { bxAnaalyse } from '@/core/icons'
34

45
export const asyncRouterMap = [
56

@@ -16,7 +17,7 @@ export const asyncRouterMap = [
1617
name: 'dashboard',
1718
redirect: '/dashboard/workplace',
1819
component: RouteView,
19-
meta: { title: '仪表盘', keepAlive: true, icon: 'dashboard', permission: [ 'dashboard' ] },
20+
meta: { title: '仪表盘', keepAlive: true, icon: bxAnaalyse, permission: [ 'dashboard' ] },
2021
children: [
2122
{
2223
path: '/dashboard/analysis',

src/core/icons.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import bxAnaalyse from '@/assets/icons/bx-analyse.svg' // path to your '*.svg' file.
2+
3+
export { bxAnaalyse }

vue.config.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ module.exports = {
3737
.set('@views', resolve('src/views'))
3838
.set('@layout', resolve('src/layout'))
3939
.set('@static', resolve('src/static'))
40+
41+
const svgRule = config.module.rule('svg')
42+
svgRule.uses.clear()
43+
svgRule.use('vue-svg-loader')
44+
.loader('vue-svg-loader')
4045
},
4146

4247
css: {

yarn.lock

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2583,7 +2583,7 @@ co@^4.6.0:
25832583
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
25842584
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
25852585

2586-
coa@~2.0.1:
2586+
coa@^2.0.2, coa@~2.0.1:
25872587
version "2.0.2"
25882588
resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
25892589
integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
@@ -2970,7 +2970,7 @@ css-loader@^1.0.0, css-loader@^1.0.1:
29702970
postcss-value-parser "^3.3.0"
29712971
source-list-map "^2.0.0"
29722972

2973-
css-select-base-adapter@~0.1.0:
2973+
css-select-base-adapter@^0.1.1, css-select-base-adapter@~0.1.0:
29742974
version "0.1.1"
29752975
resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
29762976
integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
@@ -3123,7 +3123,7 @@ cssnano@^4.0.0, cssnano@^4.1.8:
31233123
is-resolvable "^1.0.0"
31243124
postcss "^7.0.0"
31253125

3126-
csso@^3.5.0:
3126+
csso@^3.5.0, csso@^3.5.1:
31273127
version "3.5.1"
31283128
resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
31293129
integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==
@@ -6568,7 +6568,7 @@ loader-utils@^0.2.16:
65686568
json5 "^0.5.0"
65696569
object-assign "^4.0.1"
65706570

6571-
loader-utils@^1.0.2, loader-utils@^1.1.0:
6571+
loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3:
65726572
version "1.2.3"
65736573
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
65746574
integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
@@ -7365,7 +7365,7 @@ object.pick@^1.3.0:
73657365
dependencies:
73667366
isobject "^3.0.1"
73677367

7368-
object.values@^1.0.4:
7368+
object.values@^1.0.4, object.values@^1.1.0:
73697369
version "1.1.0"
73707370
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
73717371
integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
@@ -9318,7 +9318,7 @@ ssri@^6.0.1:
93189318
dependencies:
93199319
figgy-pudding "^3.5.1"
93209320

9321-
stable@~0.1.6:
9321+
stable@^0.1.8, stable@~0.1.6:
93229322
version "0.1.8"
93239323
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
93249324
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
@@ -9560,6 +9560,13 @@ svg-tags@^1.0.0:
95609560
resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
95619561
integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
95629562

9563+
svg-to-vue@^0.4.0:
9564+
version "0.4.0"
9565+
resolved "https://registry.yarnpkg.com/svg-to-vue/-/svg-to-vue-0.4.0.tgz#93a2fc9658c09593f6099ac7f5ded73ac83dc549"
9566+
integrity sha512-g/ZHtEFf4QDsDtTk9tuYX/MJ2HESTUBMTkuLoffQGQ3xMtlmD9Ec4YyTgmMkP1P8QJtWWu2FiGdOnlKaXc/X/Q==
9567+
dependencies:
9568+
svgo "^1.1.1"
9569+
95639570
svgo@^1.0.0:
95649571
version "1.1.1"
95659572
resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985"
@@ -9580,6 +9587,26 @@ svgo@^1.0.0:
95809587
unquote "~1.1.1"
95819588
util.promisify "~1.0.0"
95829589

9590+
svgo@^1.1.1:
9591+
version "1.2.0"
9592+
resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.0.tgz#305a8fc0f4f9710828c65039bb93d5793225ffc3"
9593+
integrity sha512-xBfxJxfk4UeVN8asec9jNxHiv3UAMv/ujwBWGYvQhhMb2u3YTGKkiybPcLFDLq7GLLWE9wa73e0/m8L5nTzQbw==
9594+
dependencies:
9595+
chalk "^2.4.1"
9596+
coa "^2.0.2"
9597+
css-select "^2.0.0"
9598+
css-select-base-adapter "^0.1.1"
9599+
css-tree "1.0.0-alpha.28"
9600+
css-url-regex "^1.1.0"
9601+
csso "^3.5.1"
9602+
js-yaml "^3.12.0"
9603+
mkdirp "~0.5.1"
9604+
object.values "^1.1.0"
9605+
sax "~1.2.4"
9606+
stable "^0.1.8"
9607+
unquote "~1.1.1"
9608+
util.promisify "~1.0.0"
9609+
95839610
symbol-tree@^3.2.2:
95849611
version "3.2.2"
95859612
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
@@ -10268,6 +10295,14 @@ vue-style-loader@^4.1.0:
1026810295
hash-sum "^1.0.2"
1026910296
loader-utils "^1.0.2"
1027010297

10298+
vue-svg-loader@^0.12.0:
10299+
version "0.12.0"
10300+
resolved "https://registry.yarnpkg.com/vue-svg-loader/-/vue-svg-loader-0.12.0.tgz#5ea97d021edd3023236b92f96c3aba433b5d428b"
10301+
integrity sha512-pg8H6iKCj+DAC7FZuxdfGJMHiFpJPv/YyoN1M7Iqlf+Hu4eU6Q/W/sEFx978syQA+aOx0NXrp+uQUAajqQvXbQ==
10302+
dependencies:
10303+
loader-utils "^1.2.3"
10304+
svg-to-vue "^0.4.0"
10305+
1027110306
vue-template-compiler@^2.5.17, vue-template-compiler@^2.5.22:
1027210307
version "2.5.22"
1027310308
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.22.tgz#c3d3c02c65f1908205c4fbd3b0ef579e51239955"

0 commit comments

Comments
 (0)