Skip to content

Commit 1f167ea

Browse files
authored
Merge pull request #41 from coreui/dev-vnext
v2.0.8
2 parents 1c12c7b + 46accce commit 1f167ea

File tree

10 files changed

+126
-50
lines changed

10 files changed

+126
-50
lines changed

Diff for: CHANGELOG.md

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
### [@coreui/react](https://coreui.io/) changelog
2+
3+
##### `v2.0.8`
4+
- refactor(SidebarMinimizer): extract `togglePs` method
5+
- refactor(SidebarMinimizer): for use `togglePs` method
6+
- fix(SidebarMinimizer): add `componentDidMount` with `togglePs`
7+
- refactor(AsideToggler): extract `toggle` method
8+
- fix(AsideToggler): add missing `defaultOpen` prop
9+
- fix(Aside): deprecate `hidden` prop in v2 as conflicting with HTML5 `hidden` attribute
10+
- fix(Aside): `displayBreakpoint` behaviour
11+
- update `@coreui/coreui` to `^2.0.14`
12+
- update `reactstrap` to `^6.5.0`
13+
- update `enzyme` to `3.7.0`
14+
- update `enzyme-adapter-react-16` to `1.6.0`
15+
16+
##### `v2.0.7`
17+
- fix(SidebarNav): dirty fix for rtl ps scrollingX issue
18+
19+
##### `v2.0.6`
20+
- update `@coreui/coreui` to `^2.0.12`
21+
- update `@coreui/icons` to `0.3.0`
22+
- update `react-perfect-scrollbar` to `^1.2.2`
23+
- update `reactstrap` to `^6.4.0`
24+
- update `babel-eslint` to `^10.0.1`
25+
- update `enzyme` to `^3.6.0`
26+
- update `enzyme-adapter-react-16` to `^1.5.0`
27+
- update `eslint` to `^5.6.1`
28+
- update `eslint-plugin-import` to `^2.14.0`
29+
- update `eslint-plugin-react` to `^7.11.1`
30+
- update `nwb` to `^0.23.0`
31+
- update `react` to `^16.5.2`
32+
- update `react-dom` to `^16.5.2`
33+
- update `sinon` to `^5.1.1`
34+
35+
##### `v2.0.5`
36+
- feat: hide onclick outside mobile sidebar
37+
- refactor: toggle-classes force
38+
- refactor: Shared/classes.js *Breakpoints
39+
- refactor: element-closest IE polyfill added
40+
- chore: dependencies update
41+
42+
##### `v2.0.4`
43+
- refactor(Breadcrumb): fix for dynamic url like `/path/:id`
44+
- chore: update `prop-types` to `^15.6.2
45+
46+
##### `v2.0.3`
47+
- fix: rollback to @coreui/icons v0.2.0
48+
49+
##### `v2.0.2`
50+
- fix: remove AppLayout export as not production ready
51+
- chore: dependencies update
52+
- fix(Switch): not updating on props change - thanks @IceOnFire
53+
54+
##### `v2.0.1`
55+
- chore: dependencies update
56+
57+
##### `v2.0.0`
58+
- chore: dependencies update
59+
- refactor(demo): `@coreui/icons`
60+
61+
##### `v2.0.0-rc.1`
62+
-fix: minimized sidebar scrollbar issue

Diff for: demo/src/containers/DefaultLayout/DefaultLayout.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class DefaultLayout extends Component {
8484
</Switch>
8585
</Container>
8686
</main>
87-
<AppAside fixed hidden display="lg">
87+
<AppAside fixed>
8888
Aside
8989
</AppAside>
9090
</div>

Diff for: demo/src/scss/style.css

+11-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@coreui/react",
3-
"version": "2.0.7",
3+
"version": "2.0.8",
44
"description": "CoreUI React Bootstrap 4 components",
55
"license": "MIT",
66
"author": {
@@ -43,16 +43,16 @@
4343
"react-onclickout": "^2.0.8",
4444
"react-perfect-scrollbar": "^1.2.2",
4545
"react-router-dom": "^4.3.1",
46-
"reactstrap": "^6.4.0"
46+
"reactstrap": "^6.5.0"
4747
},
4848
"peerDependencies": {
4949
"@coreui/coreui": "^2.0.14",
5050
"react": "16.x"
5151
},
5252
"devDependencies": {
5353
"babel-eslint": "^10.0.1",
54-
"enzyme": "^3.6.0",
55-
"enzyme-adapter-react-16": "^1.5.0",
54+
"enzyme": "^3.7.0",
55+
"enzyme-adapter-react-16": "^1.6.0",
5656
"eslint": "^5.6.1",
5757
"eslint-plugin-import": "^2.14.0",
5858
"eslint-plugin-react": "^7.11.1",

Diff for: src/Aside.js

+5-15
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import React, { Component } from 'react';
22
import PropTypes from 'prop-types';
33
import classNames from 'classnames';
4-
import { asideMenuCssClasses } from './Shared';
4+
import { asideMenuCssClasses, checkBreakpoint, validBreakpoints } from './Shared';
5+
import toggleClasses from './Shared/toggle-classes';
56

67
const propTypes = {
78
children: PropTypes.node,
89
className: PropTypes.string,
910
display: PropTypes.string,
1011
fixed: PropTypes.bool,
11-
hidden: PropTypes.bool,
1212
isOpen: PropTypes.bool,
1313
offCanvas: PropTypes.bool,
1414
tag: PropTypes.oneOfType([PropTypes.func, PropTypes.string])
@@ -18,7 +18,6 @@ const defaultProps = {
1818
tag: 'aside',
1919
display: '',
2020
fixed: false,
21-
hidden: false,
2221
isOpen: false,
2322
offCanvas: true
2423
};
@@ -28,22 +27,16 @@ class AppAside extends Component {
2827
super(props);
2928

3029
this.isFixed = this.isFixed.bind(this);
31-
this.isHidden = this.isHidden.bind(this);
3230
this.isOffCanvas = this.isOffCanvas.bind(this);
3331
this.displayBreakpoint = this.displayBreakpoint.bind(this);
3432
}
3533

3634
componentDidMount() {
3735
this.isFixed(this.props.fixed);
38-
this.isHidden(this.props.hidden);
3936
this.isOffCanvas(this.props.offCanvas);
4037
this.displayBreakpoint(this.props.display);
4138
}
4239

43-
isHidden(hidden) {
44-
if (hidden) { document.body.classList.add('aside-menu-hidden'); }
45-
}
46-
4740
isFixed(fixed) {
4841
if (fixed) { document.body.classList.add('aside-menu-fixed'); }
4942
}
@@ -53,20 +46,17 @@ class AppAside extends Component {
5346
}
5447

5548
displayBreakpoint(display) {
56-
const cssTemplate = `aside-menu-${display}-show`;
57-
let [cssClass] = asideMenuCssClasses[0];
58-
if (display && asideMenuCssClasses.indexOf(cssTemplate) > -1) {
59-
cssClass = cssTemplate;
49+
if (display && checkBreakpoint(display, validBreakpoints)) {
50+
const cssClass = `aside-menu-${display}-show`
51+
toggleClasses(cssClass, asideMenuCssClasses, true)
6052
}
61-
document.body.classList.add(cssClass);
6253
}
6354

6455
render() {
6556
const { className, children, tag: Tag, ...attributes } = this.props;
6657

6758
delete attributes.display
6859
delete attributes.fixed
69-
delete attributes.hidden
7060
delete attributes.offCanvas
7161
delete attributes.isOpen
7262

Diff for: src/Aside.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
| prop | default |
44
| ------- | ---------
5-
| children |
5+
| children |
66
| className | `aside-menu`
7-
| display | `sm, md, lg, xl, ""`
7+
| display | `sm, md, lg, xl, ""`
88
| fixed | `false`
9-
| hidden | `false`
9+
| hidden | `false` *deprecated* in v2 as conflicting with HTML5 `hidden` attribute
1010
| isOpen | `false`
1111
| offCanvas | `true`
1212
| tag | `aside`

Diff for: src/AsideToggler.js

+20-15
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
import React, { Component } from 'react';
22
import PropTypes from 'prop-types';
33
import classNames from 'classnames';
4-
import { asideMenuCssClasses } from './Shared/index';
4+
import { asideMenuCssClasses, validBreakpoints, checkBreakpoint } from './Shared/index';
55
import toggleClasses from './Shared/toggle-classes';
66

77
const propTypes = {
88
children: PropTypes.node,
99
className: PropTypes.string,
10+
defaultOpen: PropTypes.bool,
1011
display: PropTypes.any,
1112
mobile: PropTypes.bool,
1213
tag: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
1314
type: PropTypes.string
1415
};
1516

1617
const defaultProps = {
18+
defaultOpen: false,
1719
display: 'lg',
1820
mobile: false,
1921
tag: 'button',
@@ -28,27 +30,30 @@ class AppAsideToggler extends Component {
2830
this.state = {};
2931
}
3032

31-
asideToggle(e) {
32-
e.preventDefault();
33+
componentDidMount() {
34+
this.toggle(this.props.defaultOpen)
35+
}
3336

34-
if (this.props.mobile) {
35-
document.body.classList.toggle('aside-menu-show');
36-
} else {
37-
const display = this.props.display;
38-
const cssTemplate = `aside-menu-${display}-show`;
39-
let [cssClass] = asideMenuCssClasses[0];
40-
if (display && asideMenuCssClasses.indexOf(cssTemplate) > -1) {
41-
cssClass = cssTemplate;
42-
}
43-
toggleClasses(cssClass, asideMenuCssClasses);
37+
toggle (force) {
38+
const [display, mobile] = [this.props.display, this.props.mobile];
39+
let cssClass = asideMenuCssClasses[0];
40+
if (!mobile && display && checkBreakpoint(display, validBreakpoints)) {
41+
cssClass = `aside-menu-${display}-show`
4442
}
43+
toggleClasses(cssClass, asideMenuCssClasses, force)
44+
}
45+
46+
asideToggle(e) {
47+
e.preventDefault();
48+
this.toggle()
4549
}
4650

4751
render() {
4852
const { className, children, type, tag: Tag, ...attributes } = this.props;
4953

50-
delete attributes.display
51-
delete attributes.mobile
54+
delete attributes.defaultOpen;
55+
delete attributes.display;
56+
delete attributes.mobile;
5257

5358
const classes = classNames(className, 'navbar-toggler');
5459

Diff for: src/AsideToggler.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ prop | default
55
--- | ---
66
children | `<span className="navbar-toggler-icon" />`
77
className | `navbar-toggler`
8+
defaultOpen| `false`
89
display | `lg`
910
mobile | `false`
1011
tag | `button`

Diff for: src/SidebarMinimizer.js

+17-4
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,27 @@ class AppSidebarMinimizer extends Component {
2020

2121
this.handleClick = this.handleClick.bind(this);
2222
}
23+
24+
componentDidMount() {
25+
const isMinimized = document.body.classList.contains('sidebar-minimized');
26+
this.togglePs(!isMinimized)
27+
}
28+
2329
sidebarMinimize() {
24-
document.body.classList.toggle('sidebar-minimized');
30+
const isMinimized = document.body.classList.toggle('sidebar-minimized');
31+
this.togglePs(!isMinimized)
32+
}
33+
34+
togglePs(toggle) {
2535
const sidebar = document.querySelector('.sidebar-nav')
2636
if (sidebar) {
27-
const toggleOn = sidebar.classList.toggle('ps');
28-
sidebar.classList.toggle('scrollbar-container', toggleOn);
29-
sidebar.classList.toggle('ps--active-y', toggleOn);
37+
if (toggle) {
38+
sidebar.classList.add('ps', 'ps-container', 'ps--active-y')
39+
} else {
40+
sidebar.classList.remove('ps', 'ps-container', 'ps--active-y')
41+
}
3042
}
43+
3144
}
3245

3346
brandMinimize() {

Diff for: tests/Aside.test.js

+2-7
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,15 @@ configure({ adapter: new Adapter() });
1212

1313
describe('AppAside', () => {
1414
it('renders aside with class="aside-menu"', () => {
15-
expect(render(<AppAside fixed hidden offCanvas display="lg">aside</AppAside>))
15+
expect(render(<AppAside fixed offCanvas display="lg">aside</AppAside>))
1616
.toContain('<aside class="aside-menu">aside</aside>')
1717
});
1818
it('calls componentDidMount', () => {
1919
spy(AppAside.prototype, 'componentDidMount');
2020

21-
const wrapper = mount(<AppAside fixed hidden display="lg" />);
21+
const wrapper = mount(<AppAside fixed />);
2222
expect(AppAside.prototype.componentDidMount.calledOnce).toEqual(true);
2323
});
24-
it('should call isHidden()', () => {
25-
const isHidden = spy(AppAside.prototype, 'isHidden');
26-
shallow(<AppAside />);
27-
expect(isHidden.called).toBe(true);
28-
});
2924
it('should call isOffCanvas()', () => {
3025
const isOffCanvas = spy(AppAside.prototype, 'isOffCanvas');
3126
shallow(<AppAside offCanvas={false}/>);

0 commit comments

Comments
 (0)