Skip to content

Commit 3a3ee13

Browse files
authored
Merge pull request #104 from coreui/dev-v2.5.6-fix
v2.5.6
2 parents 569a93d + 16af3eb commit 3a3ee13

File tree

5 files changed

+55
-12
lines changed

5 files changed

+55
-12
lines changed

Diff for: CHANGELOG.md

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

3+
##### `v2.5.6`
4+
- fix(SidebarNav): navigate to route on AppSideBarNav parent menu click - thanx @regimani #98
5+
6+
###### dependencies update
7+
- update `react` to `^16.13.0`
8+
- update `react-dom` to `^16.13.0`
9+
310
##### `v2.5.5`
411
- fix(SidebarNav): perfect scrollbar issue on sidebar minimized / rtl
512
- chore: dependencies update and config refactor

Diff for: nwb.config.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ module.exports = {
66
global: 'CoreUIReact',
77
externals: {
88
react: 'React',
9-
'react-router': 'ReactRouter'
9+
'react-router': 'ReactRouter',
10+
'react-router-dom': 'ReactRouterDom'
1011
}
1112
}
1213
}

Diff for: package.json

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@coreui/react",
3-
"version": "2.5.5",
3+
"version": "2.5.6",
44
"description": "CoreUI React Bootstrap 4 components",
55
"license": "MIT",
66
"author": {
@@ -44,20 +44,21 @@
4444
"peerDependencies": {
4545
"@coreui/coreui": "^2.1.16",
4646
"react": "^16.12.0",
47+
"react-dom": "^16.12.0",
4748
"react-router-dom": "^5.1.2",
4849
"mutationobserver-shim": "^0.3.3"
4950
},
5051
"devDependencies": {
5152
"@coreui/icons": "~0.3.0",
52-
"babel-eslint": "^10.0.3",
53+
"babel-eslint": "^10.1.0",
5354
"enzyme": "^3.11.0",
5455
"enzyme-adapter-react-16": "^1.15.2",
5556
"eslint": "^5.16.0",
5657
"eslint-plugin-import": "^2.20.1",
5758
"eslint-plugin-react": "^7.18.3",
5859
"nwb": "^0.23.0",
59-
"react": "^16.12.0",
60-
"react-dom": "^16.12.0",
60+
"react": "^16.13.0",
61+
"react-dom": "^16.13.0",
6162
"react-router-dom": "^5.1.2",
6263
"reactstrap": "^8.4.1",
6364
"sinon": "^5.1.1"

Diff for: src/SidebarNav.md

+23
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,29 @@ __React Router NavLink props to pass in `attributes` object:__
120120
]
121121
}
122122
```
123+
To override default behavior of `nav-dropdown toggle` and navigate to `url` use custom `onClick` method:
124+
```json5
125+
{
126+
name: 'Base',
127+
url: '/base',
128+
icon: 'icon-puzzle',
129+
attributes: {onClick: (e, item)=>{ console.log(e, item) }}, // (v2.5.6 up) optional
130+
children: []
131+
}
132+
```
133+
For active route consistency, you can set redirect on partial routes in `src/routes.js`:
134+
```js
135+
import { Redirect } from 'react-router-dom';
136+
...
137+
const routes = [
138+
...
139+
{ path: '/base', exact: true, name: 'Base', component: () => <Redirect to={'/base/cards'}/> },
140+
{ path: '/base/cards', name: 'Cards', component: Cards },
141+
{ path: '/base/forms', name: 'Forms', component: Forms },
142+
...
143+
]
144+
```
145+
123146
- divider:
124147
```json5
125148
{

Diff for: src/SidebarNav2.js

+18-7
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,12 @@ class AppSidebarNav2 extends Component {
4949

5050
_scrollBarRef = null;
5151

52-
handleClick(e) {
53-
e.preventDefault();
52+
handleClick(e, item) {
53+
if (item.attributes && typeof item.attributes.onClick === 'function' && !this.isActiveRoute(item.url, this.props)) {
54+
item.attributes.onClick(e, item)
55+
} else {
56+
e.preventDefault();
57+
}
5458
e.currentTarget.parentElement.classList.toggle('open');
5559
}
5660

@@ -71,7 +75,7 @@ class AppSidebarNav2 extends Component {
7175
}
7276

7377
getAttribs(attributes) {
74-
return JSON.parse(JSON.stringify(attributes || {}));
78+
return {...attributes};
7579
}
7680

7781
// nav list
@@ -132,14 +136,21 @@ class AppSidebarNav2 extends Component {
132136
delete attributes.class;
133137
delete attributes.className;
134138
const itemAttr = this.getAttribs(item.itemAttr);
135-
const liClasses = classNames(this.activeRoute(item.url, this.props), itemAttr.class, itemAttr.className)
139+
const liClasses = classNames('nav-item', 'nav-dropdown', itemAttr.class, itemAttr.className);
136140
delete itemAttr.class;
137141
delete itemAttr.className;
142+
const NavLink = this.props.router.NavLink || RsNavLink;
143+
138144
return (
139-
<li key={key} className={liClasses} {...itemAttr}>
140-
<a className={classes} href="#" onClick={this.handleClick} {...attributes}><i className={classIcon}/>
145+
<li key={key} className={classNames(liClasses, {'open': this.isActiveRoute(item.url, this.props)})} {...itemAttr}>
146+
<NavLink activeClassName='open'
147+
className={classes}
148+
to={item.url || ''}
149+
{...attributes}
150+
onClick={(e) => this.handleClick(e, item)}>
151+
<i className={classIcon}/>
141152
{item.name}{this.navBadge(item.badge)}
142-
</a>
153+
</NavLink>
143154
<ul className="nav-dropdown-items">
144155
{this.navList(item.children)}
145156
</ul>

0 commit comments

Comments
 (0)