Skip to content

Commit 40c7e6f

Browse files
authored
Merge pull request #21 from coreui/feat-sidebar-navlink-attributes
v2.1.0
2 parents 86acf11 + 2238329 commit 40c7e6f

19 files changed

+161
-111
lines changed

CHANGELOG.md

+29
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,34 @@
11
### [@coreui/vue](https://coreui.io/) changelog
22

3+
##### v2.1.0
4+
- feat(SidebarNavLink): attributes
5+
- refactor(SidebarNav*): classes type [String, Array, Object]
6+
- test: update SidebarNavLabel, SidebarNavLink, SidebarNavDivider
7+
- refactor: rollup.config.js uglify()
8+
- chore: update jest.config.js
9+
- update `@vue/test-utils` to `^1.0.0-beta.27`
10+
- update `babel-plugin-dynamic-import-node` to `^2.2.0`
11+
- update `eslint` to `^5.10.0`
12+
- update `eslint-config-prettier` to `^3.3.0`
13+
- update `eslint-plugin-html` to `^5.0.0`
14+
- update `eslint-plugin-jest` to `^22.1.2`
15+
- update `eslint-plugin-vue` to `^5.0.0`
16+
- update `husky` to `^1.2.0`
17+
- update `lint-staged` to `^8.1.0`
18+
- update `node-sass` to `^4.11.0`
19+
- update `prettier` to `^1.15.3`
20+
- update `rollup` to `^0.67.4`
21+
- update `rollup-plugin-commonjs` to `^9.2.0`
22+
- update `rollup-plugin-filesize` to `^5.0.1`
23+
- update `rollup-plugin-replace` to `^2.1.0`
24+
- update `rollup-plugin-uglify` to `^6.0.0`
25+
- update `vue` to `^2.5.19`
26+
- update `vue-server-renderer` to `^2.5.19`
27+
- update `vue-template-compiler` to `^2.5.19`
28+
- update `vue-jest` to `^3.0.1`
29+
- update `vue-router` to `^3.0.2`
30+
- update `@coreui/coreui` to `^2.1.4`
31+
332
##### v2.0.2
433
- fix(AsideToggler): add missing `display { default:'lg' }` prop value
534
- fix(AsideToggler): add missing `defaultOpen` prop value handling

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
[![Npm badge](https://img.shields.io/npm/v/@coreui/vue.svg)][npm]
44
[![NPM downloads][npm-download]][npm]
5-
![Rollup badge](https://img.shields.io/badge/Rollup-^0.59.4-ff69b4.svg)
5+
![Rollup badge](https://img.shields.io/badge/Rollup-^0.67.4-ff69b4.svg)
66
![Jest](https://img.shields.io/badge/Jest-^23.6.0-blue.svg)
7-
![Vue](https://img.shields.io/badge/Vue-^2.5.17-brightgreen.svg)
7+
![Vue](https://img.shields.io/badge/Vue-^2.5.19-brightgreen.svg)
88

99
[npm]: https://www.npmjs.com/package/@coreui/vue
1010
[npm-download]: https://img.shields.io/npm/dm/@coreui/vue.svg?style=flat-square

jest.config.js

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ module.exports = {
1212
coverageDirectory: "<rootDir>/coverage",
1313
collectCoverageFrom: [
1414
"src/**/*.{js,vue}",
15+
"!src/components/index.js",
1516
"!src/index.umd.js",
1617
"!**/node_modules/**"
1718
]

package.json

+23-23
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@coreui/vue",
33
"description": "CoreUI Vue Bootstrap 4 layout components",
4-
"version": "2.0.2",
4+
"version": "2.1.0",
55
"license": "MIT",
66
"main": "dist/coreui-vue.common.js",
77
"module": "dist/coreui-vue.esm.js",
@@ -63,51 +63,51 @@
6363
"vue-perfect-scrollbar": "^0.1.0"
6464
},
6565
"devDependencies": {
66-
"@vue/test-utils": "^1.0.0-beta.25",
66+
"@vue/test-utils": "^1.0.0-beta.27",
6767
"babel-core": "^6.26.3",
6868
"babel-eslint": "^10.0.1",
6969
"babel-jest": "^23.6.0",
70-
"babel-plugin-dynamic-import-node": "^2.1.0",
70+
"babel-plugin-dynamic-import-node": "^2.2.0",
7171
"babel-plugin-module-resolver": "^3.1.1",
7272
"babel-preset-vue-app": "^2.0.0",
73-
"eslint": "^5.6.1",
74-
"eslint-config-prettier": "^3.1.0",
73+
"eslint": "^5.10.0",
74+
"eslint-config-prettier": "^3.3.0",
7575
"eslint-import-resolver-babel-module": "^4.0.0",
76-
"eslint-plugin-html": "^4.0.6",
76+
"eslint-plugin-html": "^5.0.0",
7777
"eslint-plugin-import": "^2.14.0",
78-
"eslint-plugin-jest": "^21.24.1",
78+
"eslint-plugin-jest": "^22.1.2",
7979
"eslint-plugin-prettier": "^3.0.0",
80-
"eslint-plugin-vue": "^5.0.0-beta.3",
81-
"husky": "^1.1.0",
80+
"eslint-plugin-vue": "^5.0.0",
81+
"husky": "^1.2.0",
8282
"jest": "^23.6.0",
8383
"jest-serializer-html": "^5.0.0",
8484
"jest-serializer-vue": "^2.0.2",
8585
"jest-vue-preprocessor": "^1.4.0",
86-
"lint-staged": "^7.3.0",
86+
"lint-staged": "^8.1.0",
8787
"lodash": "^4.17.11",
88-
"node-sass": "^4.9.3",
89-
"prettier": "^1.14.3",
90-
"rollup": "^0.59.4",
88+
"node-sass": "^4.11.0",
89+
"prettier": "^1.15.3",
90+
"rollup": "^0.67.4",
9191
"rollup-plugin-babel": "^3.0.7",
92-
"rollup-plugin-commonjs": "^9.1.8",
93-
"rollup-plugin-filesize": "^4.0.1",
92+
"rollup-plugin-commonjs": "^9.2.0",
93+
"rollup-plugin-filesize": "^5.0.1",
9494
"rollup-plugin-json": "^3.1.0",
9595
"rollup-plugin-license": "^0.7.0",
9696
"rollup-plugin-node-resolve": "^3.4.0",
97-
"rollup-plugin-replace": "^2.0.0",
98-
"rollup-plugin-uglify": "^3.0.0",
97+
"rollup-plugin-replace": "^2.1.0",
98+
"rollup-plugin-uglify": "^6.0.0",
9999
"rollup-plugin-vue": "^4.3.2",
100100
"sass-loader": "^7.1.0",
101101
"uglify-es": "^3.3.9",
102-
"vue": "^2.5.17",
103-
"vue-jest": "^2.6.0",
102+
"vue": "^2.5.19",
103+
"vue-jest": "^3.0.1",
104104
"vue-loader": "^15.4.2",
105-
"vue-router": "^3.0.1",
106-
"vue-server-renderer": "^2.5.17",
107-
"vue-template-compiler": "^2.5.17"
105+
"vue-router": "^3.0.2",
106+
"vue-server-renderer": "^2.5.19",
107+
"vue-template-compiler": "^2.5.19"
108108
},
109109
"peerDependencies": {
110-
"@coreui/coreui": "^2.0.14"
110+
"@coreui/coreui": "^2.1.4"
111111
},
112112
"lint-staged": {
113113
"*.{js,vue}": [

rollup.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import json from "rollup-plugin-json";
77
import license from "rollup-plugin-license";
88
import resolve from "rollup-plugin-node-resolve";
99
import replace from "rollup-plugin-replace";
10-
import uglify from "rollup-plugin-uglify";
10+
import { uglify } from "rollup-plugin-uglify";
1111
import vue from "rollup-plugin-vue";
1212
import { minify } from "uglify-es";
1313

src/components/Breadcrumb/Breadcrumb.vue

+5-5
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,18 @@ export default {
1616
default: () => []
1717
}
1818
},
19+
computed: {
20+
routeRecords: function () {
21+
return this.list.filter((route) => route.name || route.meta.label)
22+
}
23+
},
1924
methods: {
2025
getName (item) {
2126
return item.meta && item.meta.label ? item.meta.label : item.name || null
2227
},
2328
isLast (index) {
2429
return index === this.list.length - 1
2530
}
26-
},
27-
computed: {
28-
routeRecords: function () {
29-
return this.list.filter((route) => route.name || route.meta.label)
30-
}
3131
}
3232
}
3333
</script>

src/components/Footer/Footer.vue

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ export default {
1313
default: false
1414
}
1515
},
16-
mounted: function () {
17-
this.isFixed()
18-
},
1916
computed: {
2017
classList () {
2118
return [
2219
'app-footer'
2320
]
2421
}
2522
},
23+
mounted: function () {
24+
this.isFixed()
25+
},
2626
methods: {
2727
isFixed () {
2828
this.fixed ? document.body.classList.add('footer-fixed') : document.body.classList.remove('footer-fixed')

src/components/Sidebar/SidebarNav.vue

+10-10
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,21 @@
2121
<!-- Second level dropdown -->
2222
<SidebarNavDropdown :key="index1" :name="childL1.name" :url="childL1.url" :icon="childL1.icon">
2323
<li :key="index2" class="nav-item" v-for="(childL2, index2) in childL1.children">
24-
<SidebarNavLink :name="childL2.name" :url="childL2.url" :icon="childL2.icon" :badge="childL2.badge" :variant="item.variant"/>
24+
<SidebarNavLink :name="childL2.name" :url="childL2.url" :icon="childL2.icon" :badge="childL2.badge" :variant="childL2.variant" :attributes="childL2.attributes" />
2525
</li>
2626
</SidebarNavDropdown>
2727
</template>
2828
<template v-else>
2929
<SidebarNavItem :key="index1" :classes="item.class">
30-
<SidebarNavLink :name="childL1.name" :url="childL1.url" :icon="childL1.icon" :badge="childL1.badge" :variant="item.variant"/>
30+
<SidebarNavLink :name="childL1.name" :url="childL1.url" :icon="childL1.icon" :badge="childL1.badge" :variant="childL1.variant" :attributes="childL1.attributes"/>
3131
</SidebarNavItem>
3232
</template>
3333
</template>
3434
</SidebarNavDropdown>
3535
</template>
3636
<template v-else>
3737
<SidebarNavItem :key="index" :classes="item.class">
38-
<SidebarNavLink :name="item.name" :url="item.url" :icon="item.icon" :badge="item.badge" :variant="item.variant"/>
38+
<SidebarNavLink :name="item.name" :url="item.url" :icon="item.icon" :badge="item.badge" :variant="item.variant" :attributes="item.attributes"/>
3939
</SidebarNavItem>
4040
</template>
4141
</template>
@@ -57,13 +57,6 @@ import VuePerfectScrollbar from 'vue-perfect-scrollbar'
5757
5858
export default {
5959
name: 'SidebarNav',
60-
props: {
61-
navItems: {
62-
type: Array,
63-
required: true,
64-
default: () => []
65-
}
66-
},
6760
components: {
6861
SidebarNavDivider,
6962
SidebarNavDropdown,
@@ -73,6 +66,13 @@ export default {
7366
SidebarNavLabel,
7467
VuePerfectScrollbar
7568
},
69+
props: {
70+
navItems: {
71+
type: Array,
72+
required: true,
73+
default: () => []
74+
}
75+
},
7676
data () {
7777
return {}
7878
},

src/components/Sidebar/SidebarNavDivider.vue

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
<template>
2-
<li :class="classList"></li>
2+
<li :class="classList" />
33
</template>
44

55
<script>
66
export default {
7-
name: 'sidebar-nav-divider',
7+
name: 'SidebarNavDivider',
88
props: {
99
classes: {
10-
type: String,
10+
type: [String, Array, Object],
1111
default: ''
1212
}
1313
},
1414
computed: {
1515
classList () {
1616
return [
17-
'divider',
17+
'nav-divider',
1818
...this.itemClasses
1919
]
2020
},
2121
itemClasses () {
22-
return this.classes ? this.classes.split(' ') : ''
22+
const classes = this.classes
23+
return !classes ? [] : typeof classes === 'string' || classes instanceof String ? classes.split(' ') : Array.isArray(classes) ? classes : Object.keys(classes).filter(i=>classes[i])
2324
}
2425
}
2526
}

src/components/Sidebar/SidebarNavItem.vue

+5-4
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import { hideMobile } from '../../mixins/hideMobile'
99
1010
export default {
1111
name: 'sidebar-nav-item',
12-
mixins: [ hideMobile ],
13-
props: {
12+
mixins: [ hideMobile ],
13+
props: {
1414
classes: {
15-
type: String,
15+
type: [String, Array, Object],
1616
default: ''
1717
}
1818
},
@@ -24,7 +24,8 @@ export default {
2424
]
2525
},
2626
itemClasses () {
27-
return this.classes ? this.classes.split(' ') : ''
27+
const classes = this.classes
28+
return !classes ? [] : typeof classes === 'string' || classes instanceof String ? classes.split(' ') : Array.isArray(classes) ? classes : Object.keys(classes).filter(i=>classes[i])
2829
}
2930
}
3031
}

src/components/Sidebar/SidebarNavLabel.vue

+6-7
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export default {
2727
default: 'fa fa-circle'
2828
},
2929
classes: {
30-
type: String,
30+
type: [String, Array, Object],
3131
default: ''
3232
},
3333
label: {
@@ -39,7 +39,7 @@ export default {
3939
computed: {
4040
classList () {
4141
const classes = {
42-
navItem: ['hidden-cn', ...this.getClasses(this.classes)].join(' '),
42+
navItem: ['hidden-cn', ...this.itemClasses],
4343
navLink: 'nav-label',
4444
icon: [
4545
this.icon ? this.icon : 'fa fa-circle',
@@ -48,12 +48,11 @@ export default {
4848
].join(' ')
4949
}
5050
return classes
51+
},
52+
itemClasses () {
53+
const classes = this.classes
54+
return !classes ? [] : typeof classes === 'string' || classes instanceof String ? classes.split(' ') : Array.isArray(classes) ? classes : Object.keys(classes).filter(i=>classes[i])
5155
}
5256
},
53-
methods: {
54-
getClasses (classes) {
55-
return classes ? classes.split(' ') : []
56-
}
57-
}
5857
}
5958
</script>

0 commit comments

Comments
 (0)