@coreui/react 2.5.4 → 2.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/css/scrollbar.css +18 -0
  3. package/es/Aside.js +29 -37
  4. package/es/AsideToggler.js +36 -44
  5. package/es/Breadcrumb.js +51 -58
  6. package/es/Breadcrumb2.js +52 -60
  7. package/es/Footer.js +24 -32
  8. package/es/Header.js +23 -35
  9. package/es/HeaderDropdown.js +23 -27
  10. package/es/NavbarBrand.js +32 -39
  11. package/es/Shared/classes.js +0 -3
  12. package/es/Shared/element-closest.js +2 -0
  13. package/es/Shared/index.js +0 -1
  14. package/es/Shared/layout/layout.js +75 -16
  15. package/es/Shared/toggle-classes.js +2 -0
  16. package/es/Sidebar.js +43 -53
  17. package/es/SidebarFooter.js +19 -29
  18. package/es/SidebarForm.js +19 -29
  19. package/es/SidebarHeader.js +19 -29
  20. package/es/SidebarMinimizer.js +30 -35
  21. package/es/SidebarNav.js +128 -162
  22. package/es/SidebarNav2.js +249 -174
  23. package/es/SidebarToggler.js +35 -36
  24. package/es/Switch.js +59 -62
  25. package/lib/Aside.js +51 -60
  26. package/lib/AsideToggler.js +58 -67
  27. package/lib/Breadcrumb.js +71 -77
  28. package/lib/Breadcrumb2.js +72 -79
  29. package/lib/Footer.js +40 -47
  30. package/lib/Header.js +39 -50
  31. package/lib/HeaderDropdown.js +36 -37
  32. package/lib/NavbarBrand.js +50 -56
  33. package/lib/Shared/classes.js +8 -6
  34. package/lib/Shared/element-closest.js +3 -1
  35. package/lib/Shared/index.js +2 -3
  36. package/lib/Shared/layout/layout.js +82 -19
  37. package/lib/Shared/toggle-classes.js +6 -2
  38. package/lib/Sidebar.js +69 -81
  39. package/lib/SidebarFooter.js +33 -42
  40. package/lib/SidebarForm.js +33 -42
  41. package/lib/SidebarHeader.js +33 -42
  42. package/lib/SidebarMinimizer.js +51 -55
  43. package/lib/SidebarNav.js +154 -187
  44. package/lib/SidebarNav2.js +275 -198
  45. package/lib/SidebarToggler.js +56 -58
  46. package/lib/Switch.js +90 -92
  47. package/lib/index.js +36 -55
  48. package/package.json +21 -20
  49. package/umd/main.d0f057e5.css +5 -0
  50. package/umd/main.d0f057e5.css.map +1 -0
  51. package/umd/react.js +6069 -0
  52. package/umd/react.min.js +38 -0
  53. package/umd/react.min.js.map +1 -0
  54. package/umd/@coreui/react.js +0 -11849
  55. package/umd/@coreui/react.min.js +0 -77
  56. package/umd/@coreui/react.min.js.map +0 -1
  57. package/umd/main.a25994ba.css +0 -129
  58. package/umd/main.a25994ba.css.map +0 -1
@@ -1,53 +1,51 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
+ exports["default"] = void 0;
4
5
 
5
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6
+ var _react = _interopRequireWildcard(require("react"));
6
7
 
7
- var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
8
+ var _reactstrap = require("reactstrap");
8
9
 
9
- var _react = require('react');
10
+ var _classnames = _interopRequireDefault(require("classnames"));
10
11
 
11
- var _react2 = _interopRequireDefault(_react);
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
13
 
13
- var _reactstrap = require('reactstrap');
14
+ var _reactPerfectScrollbar = _interopRequireDefault(require("react-perfect-scrollbar"));
14
15
 
15
- var _classnames = require('classnames');
16
+ require("react-perfect-scrollbar/dist/css/styles.css");
16
17
 
17
- var _classnames2 = _interopRequireDefault(_classnames);
18
+ require("../css/scrollbar.css");
18
19
 
19
- var _propTypes = require('prop-types');
20
+ var _layout = _interopRequireDefault(require("./Shared/layout/layout"));
20
21
 
21
- var _propTypes2 = _interopRequireDefault(_propTypes);
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
22
23
 
23
- var _reactPerfectScrollbar = require('react-perfect-scrollbar');
24
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
24
25
 
25
- var _reactPerfectScrollbar2 = _interopRequireDefault(_reactPerfectScrollbar);
26
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
27
 
27
- require('react-perfect-scrollbar/dist/css/styles.css');
28
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
28
29
 
29
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
30
31
 
31
- function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
32
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
32
33
 
33
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
34
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
34
35
 
35
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
36
-
37
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
38
-
39
- var propTypes = {
40
- children: _propTypes2.default.node,
41
- className: _propTypes2.default.string,
42
- navConfig: _propTypes2.default.any,
43
- navFunc: _propTypes2.default.oneOfType([_propTypes2.default.func, _propTypes2.default.string]),
44
- isOpen: _propTypes2.default.bool,
45
- staticContext: _propTypes2.default.any,
46
- tag: _propTypes2.default.oneOfType([_propTypes2.default.func, _propTypes2.default.string]),
47
- router: _propTypes2.default.any,
48
- props: _propTypes2.default.any
49
- };
36
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
50
37
 
38
+ var propTypes = process.env.NODE_ENV !== "production" ? {
39
+ children: _propTypes["default"].node,
40
+ className: _propTypes["default"].string,
41
+ navConfig: _propTypes["default"].any,
42
+ navFunc: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].string]),
43
+ isOpen: _propTypes["default"].bool,
44
+ staticContext: _propTypes["default"].any,
45
+ tag: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].string]),
46
+ router: _propTypes["default"].any,
47
+ props: _propTypes["default"].any
48
+ } : {};
51
49
  var defaultProps = {
52
50
  tag: 'nav',
53
51
  navConfig: {
@@ -55,236 +53,315 @@ var defaultProps = {
55
53
  name: 'Dashboard',
56
54
  url: '/dashboard',
57
55
  icon: 'icon-speedometer',
58
- badge: { variant: 'info', text: 'NEW' }
56
+ badge: {
57
+ variant: 'info',
58
+ text: 'NEW'
59
+ }
59
60
  }]
60
61
  },
61
62
  isOpen: false,
62
- router: { RsNavLink: _reactstrap.NavLink }
63
+ router: {
64
+ RsNavLink: _reactstrap.NavLink
65
+ }
63
66
  };
64
67
 
65
- var AppSidebarNav2 = function (_Component) {
66
- _inherits(AppSidebarNav2, _Component);
68
+ var AppSidebarNav2 = /*#__PURE__*/function (_Component) {
69
+ _inheritsLoose(AppSidebarNav2, _Component);
67
70
 
68
71
  function AppSidebarNav2(props) {
69
- _classCallCheck(this, AppSidebarNav2);
72
+ var _this;
70
73
 
71
- var _this = _possibleConstructorReturn(this, _Component.call(this, props));
74
+ _this = _Component.call(this, props) || this;
72
75
 
73
- _this.handleClick = _this.handleClick.bind(_this);
74
- _this.activeRoute = _this.activeRoute.bind(_this);
75
- _this.hideMobile = _this.hideMobile.bind(_this);
76
+ _defineProperty(_assertThisInitialized(_this), "_scrollBarRef", null);
77
+
78
+ _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));
79
+ _this.activeRoute = _this.activeRoute.bind(_assertThisInitialized(_this));
80
+ _this.hideMobile = _this.hideMobile.bind(_assertThisInitialized(_this));
81
+ _this.changes = null;
82
+ _this.state = {
83
+ sidebarMinimized: false
84
+ };
76
85
  return _this;
77
86
  }
78
87
 
79
- AppSidebarNav2.prototype.handleClick = function handleClick(e) {
80
- e.preventDefault();
88
+ var _proto = AppSidebarNav2.prototype;
89
+
90
+ _proto.handleClick = function handleClick(e, item) {
91
+ if (item.attributes && typeof item.attributes.onClick === 'function' && !this.isActiveRoute(item.url, this.props)) {
92
+ item.attributes.onClick(e, item);
93
+ } else {
94
+ e.preventDefault();
95
+ }
96
+
81
97
  e.currentTarget.parentElement.classList.toggle('open');
82
98
  };
83
99
 
84
- AppSidebarNav2.prototype.activeRoute = function activeRoute(routeName, props) {
85
- return props.location.pathname.indexOf(routeName) > -1 ? 'nav-item nav-dropdown open' : 'nav-item nav-dropdown';
100
+ _proto.isActiveRoute = function isActiveRoute(routeName, props) {
101
+ return props.location.pathname.indexOf(routeName) > -1;
102
+ };
103
+
104
+ _proto.activeRoute = function activeRoute(routeName, props) {
105
+ return this.isActiveRoute(routeName, props) ? 'nav-item nav-dropdown open' : 'nav-item nav-dropdown';
86
106
  };
87
107
 
88
- AppSidebarNav2.prototype.hideMobile = function hideMobile() {
108
+ _proto.hideMobile = function hideMobile() {
89
109
  if (document.body.classList.contains('sidebar-show')) {
90
110
  document.body.classList.toggle('sidebar-show');
91
111
  }
92
112
  };
93
113
 
94
- AppSidebarNav2.prototype.getAttribs = function getAttribs(attributes) {
95
- return JSON.parse(JSON.stringify(attributes || {}));
96
- };
97
-
98
- // nav list
99
-
114
+ _proto.getAttribs = function getAttribs(attributes) {
115
+ return _extends({}, attributes);
116
+ } // nav list
117
+ ;
100
118
 
101
- AppSidebarNav2.prototype.navList = function navList(items) {
119
+ _proto.navList = function navList(items) {
102
120
  var _this2 = this;
103
121
 
104
122
  return items.map(function (item, index) {
105
123
  return _this2.navType(item, index);
106
124
  });
107
- };
108
-
109
- // nav type
125
+ } // nav type
126
+ ;
110
127
 
111
-
112
- AppSidebarNav2.prototype.navType = function navType(item, idx) {
128
+ _proto.navType = function navType(item, idx) {
113
129
  return item.title ? this.navTitle(item, idx) : item.divider ? this.navDivider(item, idx) : item.label ? this.navLabel(item, idx) : item.children ? this.navDropdown(item, idx) : this.navItem(item, idx);
114
- };
115
-
116
- // nav list section title
117
-
118
-
119
- AppSidebarNav2.prototype.navTitle = function navTitle(title, key) {
120
- var classes = (0, _classnames2.default)('nav-title', title.class, title.className);
121
- return _react2.default.createElement(
122
- 'li',
123
- { key: key, className: classes },
124
- this.navWrapper(title),
125
- ' '
126
- );
127
- };
128
-
129
- // simple wrapper for nav-title item
130
-
131
-
132
- AppSidebarNav2.prototype.navWrapper = function navWrapper(item) {
133
- return item.wrapper && item.wrapper.element ? _react2.default.createElement(item.wrapper.element, item.wrapper.attributes, item.name) : item.name;
134
- };
135
-
136
- // nav list divider
137
-
138
-
139
- AppSidebarNav2.prototype.navDivider = function navDivider(divider, key) {
140
- var classes = (0, _classnames2.default)('divider', divider.class, divider.className);
141
- return _react2.default.createElement('li', { key: key, className: classes });
142
- };
143
-
144
- // nav label with nav link
145
-
130
+ } // nav list section title
131
+ ;
132
+
133
+ _proto.navTitle = function navTitle(title, key) {
134
+ var classes = (0, _classnames["default"])('nav-title', title["class"], title.className);
135
+ return /*#__PURE__*/_react["default"].createElement("li", {
136
+ key: key,
137
+ className: classes
138
+ }, this.navWrapper(title), " ");
139
+ } // simple wrapper for nav-title item
140
+ ;
141
+
142
+ _proto.navWrapper = function navWrapper(item) {
143
+ return item.wrapper && item.wrapper.element ? _react["default"].createElement(item.wrapper.element, item.wrapper.attributes, item.name) : item.name;
144
+ } // nav list divider
145
+ ;
146
+
147
+ _proto.navDivider = function navDivider(divider, key) {
148
+ var classes = (0, _classnames["default"])('divider', divider["class"], divider.className);
149
+ return /*#__PURE__*/_react["default"].createElement("li", {
150
+ key: key,
151
+ className: classes
152
+ });
153
+ } // nav label with nav link
154
+ ;
146
155
 
147
- AppSidebarNav2.prototype.navLabel = function navLabel(item, key) {
156
+ _proto.navLabel = function navLabel(item, key) {
148
157
  var classes = {
149
- item: (0, _classnames2.default)('hidden-cn', item.class),
150
- link: (0, _classnames2.default)('nav-label', item.class ? item.class : ''),
151
- icon: (0, _classnames2.default)('nav-icon', !item.icon ? 'fa fa-circle' : item.icon, item.label.variant ? 'text-' + item.label.variant : '', item.label.class ? item.label.class : '')
158
+ item: (0, _classnames["default"])('hidden-cn', item["class"]),
159
+ link: (0, _classnames["default"])('nav-label', item["class"] ? item["class"] : ''),
160
+ icon: (0, _classnames["default"])('nav-icon', !item.icon ? 'fa fa-circle' : item.icon, item.label.variant ? "text-" + item.label.variant : '', item.label["class"] ? item.label["class"] : '')
152
161
  };
153
162
  return this.navLink(item, key, classes);
154
- };
155
-
156
- // nav dropdown
163
+ } // nav dropdown
164
+ ;
157
165
 
166
+ _proto.navDropdown = function navDropdown(item, key) {
167
+ var _this3 = this;
158
168
 
159
- AppSidebarNav2.prototype.navDropdown = function navDropdown(item, key) {
160
- var classIcon = (0, _classnames2.default)('nav-icon', item.icon);
169
+ var itemIcon = this.navIcon(item);
161
170
  var attributes = this.getAttribs(item.attributes);
162
- var classes = (0, _classnames2.default)('nav-link', 'nav-dropdown-toggle', item.class, attributes.class, attributes.className);
163
- delete attributes.class;
171
+ var classes = (0, _classnames["default"])('nav-link', 'nav-dropdown-toggle', item["class"], attributes["class"], attributes.className);
172
+ delete attributes["class"];
164
173
  delete attributes.className;
165
174
  var itemAttr = this.getAttribs(item.itemAttr);
166
- var liClasses = (0, _classnames2.default)(this.activeRoute(item.url, this.props), itemAttr.class, itemAttr.className);
167
- delete itemAttr.class;
175
+ var liClasses = (0, _classnames["default"])('nav-item', 'nav-dropdown', itemAttr["class"], itemAttr.className);
176
+ delete itemAttr["class"];
168
177
  delete itemAttr.className;
169
- return _react2.default.createElement(
170
- 'li',
171
- _extends({ key: key, className: liClasses }, itemAttr),
172
- _react2.default.createElement(
173
- 'a',
174
- _extends({ className: classes, href: '#', onClick: this.handleClick }, attributes),
175
- _react2.default.createElement('i', { className: classIcon }),
176
- item.name,
177
- this.navBadge(item.badge)
178
- ),
179
- _react2.default.createElement(
180
- 'ul',
181
- { className: 'nav-dropdown-items' },
182
- this.navList(item.children)
183
- )
184
- );
185
- };
186
-
187
- // nav item with nav link
188
-
189
-
190
- AppSidebarNav2.prototype.navItem = function navItem(item, key) {
178
+ var NavLink = this.props.router.NavLink || _reactstrap.NavLink;
179
+ return /*#__PURE__*/_react["default"].createElement("li", _extends({
180
+ key: key,
181
+ className: (0, _classnames["default"])(liClasses, {
182
+ 'open': this.isActiveRoute(item.url, this.props)
183
+ })
184
+ }, itemAttr), /*#__PURE__*/_react["default"].createElement(NavLink, _extends({
185
+ activeClassName: "open",
186
+ className: classes,
187
+ to: item.url || ''
188
+ }, attributes, {
189
+ onClick: function onClick(e) {
190
+ return _this3.handleClick(e, item);
191
+ }
192
+ }), itemIcon, item.name, this.navBadge(item.badge)), /*#__PURE__*/_react["default"].createElement("ul", {
193
+ className: "nav-dropdown-items"
194
+ }, this.navList(item.children)));
195
+ } // nav item with nav link
196
+ ;
197
+
198
+ _proto.navItem = function navItem(item, key) {
191
199
  var classes = {
192
- item: (0, _classnames2.default)(item.class),
193
- link: (0, _classnames2.default)('nav-link', item.variant ? 'nav-link-' + item.variant : ''),
194
- icon: (0, _classnames2.default)('nav-icon', item.icon)
200
+ item: (0, _classnames["default"])(item["class"]),
201
+ link: (0, _classnames["default"])('nav-link', item.variant ? "nav-link-" + item.variant : ''),
202
+ icon: (0, _classnames["default"])('nav-icon', item.icon)
195
203
  };
196
204
  return this.navLink(item, key, classes);
197
205
  };
198
206
 
199
- // nav link
200
-
207
+ _proto.navIcon = function navIcon(item) {
208
+ var icon = item.icon;
209
+ var iconObject = typeof icon === 'object' && icon !== null ? _extends({
210
+ iconClass: icon["class"],
211
+ iconClassName: icon.className
212
+ }, icon) : {
213
+ iconClass: icon
214
+ };
215
+ var iconClass = iconObject.iconClass,
216
+ iconClassName = iconObject.iconClassName,
217
+ innerText = iconObject.innerText,
218
+ img = iconObject.img,
219
+ attributes = iconObject.attributes;
220
+
221
+ var iconAttr = _extends({}, attributes);
222
+
223
+ delete iconAttr["class"];
224
+ delete iconAttr.className;
225
+ delete iconAttr.img;
226
+ var iconImg = img && img.src ? img : null;
227
+ var iconInner = innerText || null;
228
+ var classIcon = (0, _classnames["default"])('nav-icon', iconClass, iconClassName);
229
+ var iconComponent = iconImg ? /*#__PURE__*/_react["default"].createElement("img", _extends({}, iconAttr, {
230
+ className: classIcon,
231
+ src: iconImg.src
232
+ })) : /*#__PURE__*/_react["default"].createElement("i", _extends({}, iconAttr, {
233
+ className: classIcon
234
+ }), iconInner);
235
+ return iconComponent;
236
+ } // nav link
237
+ ;
238
+
239
+ _proto.navLink = function navLink(item, key, classes) {
240
+ var _this4 = this;
241
+
242
+ var ref = _react["default"].createRef();
201
243
 
202
- AppSidebarNav2.prototype.navLink = function navLink(item, key, classes) {
203
244
  var url = item.url || '';
204
- var itemIcon = _react2.default.createElement('i', { className: classes.icon });
245
+ var itemIcon = this.navIcon(item);
205
246
  var itemBadge = this.navBadge(item.badge);
206
247
  var attributes = this.getAttribs(item.attributes);
207
- classes.link = (0, _classnames2.default)(classes.link, attributes.class, attributes.className);
208
- delete attributes.class;
248
+ classes.link = (0, _classnames["default"])(classes.link, attributes["class"], attributes.className);
249
+ delete attributes["class"];
209
250
  delete attributes.className;
210
251
  var itemAttr = this.getAttribs(item.itemAttr);
211
- classes.item = (0, _classnames2.default)(classes.item, itemAttr.class, itemAttr.className);
212
- delete itemAttr.class;
252
+ classes.item = (0, _classnames["default"])(classes.item, itemAttr["class"], itemAttr.className);
253
+ delete itemAttr["class"];
213
254
  delete itemAttr.className;
214
255
  var NavLink = this.props.router.NavLink || _reactstrap.NavLink;
215
- return _react2.default.createElement(
216
- _reactstrap.NavItem,
217
- _extends({ key: key, className: classes.item }, itemAttr),
218
- attributes.disabled ? _react2.default.createElement(
219
- _reactstrap.NavLink,
220
- _extends({ href: '', className: classes.link }, attributes),
221
- itemIcon,
222
- item.name,
223
- itemBadge
224
- ) : this.isExternal(url, this.props) || NavLink === _reactstrap.NavLink ? _react2.default.createElement(
225
- _reactstrap.NavLink,
226
- _extends({ href: url, className: classes.link, active: true }, attributes),
227
- itemIcon,
228
- item.name,
229
- itemBadge
230
- ) : _react2.default.createElement(
231
- NavLink,
232
- _extends({ to: url, className: classes.link, activeClassName: 'active', onClick: this.hideMobile }, attributes),
233
- itemIcon,
234
- item.name,
235
- itemBadge
236
- )
237
- );
238
- };
239
-
240
- // badge addon to NavItem
241
-
242
-
243
- AppSidebarNav2.prototype.navBadge = function navBadge(badge) {
256
+ return /*#__PURE__*/_react["default"].createElement(_reactstrap.NavItem, _extends({
257
+ key: key,
258
+ className: classes.item
259
+ }, itemAttr), attributes.disabled ? /*#__PURE__*/_react["default"].createElement(_reactstrap.NavLink, _extends({
260
+ href: '',
261
+ className: classes.link
262
+ }, attributes), itemIcon, item.name, itemBadge) : this.isExternal(url, this.props) || NavLink === _reactstrap.NavLink ? /*#__PURE__*/_react["default"].createElement(_reactstrap.NavLink, _extends({
263
+ href: url,
264
+ className: classes.link,
265
+ active: true
266
+ }, attributes), itemIcon, item.name, itemBadge) : /*#__PURE__*/_react["default"].createElement(NavLink, _extends({
267
+ to: url,
268
+ className: classes.link,
269
+ activeClassName: "active",
270
+ onClick: function onClick() {
271
+ return _this4.hideMobile(ref);
272
+ },
273
+ ref: ref
274
+ }, attributes), itemIcon, item.name, itemBadge));
275
+ } // badge addon to NavItem
276
+ ;
277
+
278
+ _proto.navBadge = function navBadge(badge) {
244
279
  if (badge) {
245
- var classes = (0, _classnames2.default)(badge.class, badge.className);
246
- return _react2.default.createElement(
247
- _reactstrap.Badge,
248
- { className: classes, color: badge.variant },
249
- badge.text
250
- );
280
+ var classes = (0, _classnames["default"])(badge["class"], badge.className);
281
+ return /*#__PURE__*/_react["default"].createElement(_reactstrap.Badge, {
282
+ className: classes,
283
+ color: badge.variant
284
+ }, badge.text);
251
285
  }
286
+
252
287
  return null;
253
288
  };
254
289
 
255
- AppSidebarNav2.prototype.isExternal = function isExternal(url, props) {
256
- var linkType = typeof url === 'undefined' ? 'undefined' : _typeof(url);
257
- var link = linkType === 'string' ? url : linkType === 'object' && url.pathname ? url.pathname : linkType === 'function' && typeof url(props.location) === 'string' ? url(props.location) : linkType === 'function' && _typeof(url(props.location)) === 'object' ? url(props.location).pathname : '';
290
+ _proto.isExternal = function isExternal(url, props) {
291
+ var linkType = typeof url;
292
+ var link = linkType === 'string' ? url : linkType === 'object' && url.pathname ? url.pathname : linkType === 'function' && typeof url(props.location) === 'string' ? url(props.location) : linkType === 'function' && typeof url(props.location) === 'object' ? url(props.location).pathname : '';
258
293
  return link.substring(0, 4) === 'http';
259
294
  };
260
295
 
261
- AppSidebarNav2.prototype.render = function render() {
262
- var _props = this.props,
263
- className = _props.className,
264
- children = _props.children,
265
- navConfig = _props.navConfig,
266
- attributes = _objectWithoutProperties(_props, ['className', 'children', 'navConfig']);
296
+ _proto.observeDomMutations = function observeDomMutations() {
297
+ var _this5 = this;
298
+
299
+ if (window.MutationObserver) {
300
+ // eslint-disable-next-line
301
+ this.changes = new MutationObserver(function (mutations) {
302
+ var isSidebarMinimized = document.body.classList.contains('sidebar-minimized') || false;
303
+
304
+ _this5.setState({
305
+ sidebarMinimized: isSidebarMinimized
306
+ });
307
+
308
+ _layout["default"].sidebarPSToggle(!isSidebarMinimized);
309
+ });
310
+ var element = document.body;
311
+ this.changes.observe(element, {
312
+ attributes: true,
313
+ attributeFilter: ['class']
314
+ });
315
+ }
316
+
317
+ window.addEventListener('resize', this.onResize);
318
+ };
319
+
320
+ _proto.onResize = function onResize() {
321
+ _layout["default"].sidebarPSToggle(true);
322
+ };
323
+
324
+ _proto.componentDidMount = function componentDidMount() {
325
+ this.observeDomMutations();
326
+ };
327
+
328
+ _proto.componentWillUnmount = function componentWillUnmount() {
329
+ try {
330
+ this.changes.disconnect();
331
+ window.removeEventListener('resize', this.onResize);
332
+ } catch (ignore) {
333
+ // eslint-disable-next-line
334
+ console.warn('CoreUI SidebarNav failed to disconnect from MutationObserver', ignore);
335
+ }
336
+ };
337
+
338
+ _proto.render = function render() {
339
+ var _this6 = this;
340
+
341
+ var _this$props = this.props,
342
+ className = _this$props.className,
343
+ children = _this$props.children,
344
+ navConfig = _this$props.navConfig,
345
+ attributes = _objectWithoutPropertiesLoose(_this$props, ["className", "children", "navConfig"]);
267
346
 
268
347
  delete attributes.isOpen;
269
348
  delete attributes.staticContext;
270
349
  delete attributes.Tag;
271
350
  delete attributes.router;
272
-
273
- var navClasses = (0, _classnames2.default)(className, 'sidebar-nav');
274
-
275
- // ToDo: find better rtl fix
276
- var isRtl = getComputedStyle(document.documentElement).direction === 'rtl';
277
-
278
- // sidebar-nav root
279
- return _react2.default.createElement(
280
- _reactPerfectScrollbar2.default,
281
- _extends({ className: navClasses }, attributes, { options: { suppressScrollX: !isRtl } }),
282
- _react2.default.createElement(
283
- _reactstrap.Nav,
284
- null,
285
- children || this.navList(navConfig.items)
286
- )
287
- );
351
+ var navClasses = (0, _classnames["default"])(className, 'sidebar-nav');
352
+ var options = Object.assign({}, {
353
+ suppressScrollX: true,
354
+ suppressScrollY: this.state.sidebarMinimized
355
+ }); // sidebar-nav root
356
+
357
+ return /*#__PURE__*/_react["default"].createElement(_reactPerfectScrollbar["default"], _extends({
358
+ className: navClasses
359
+ }, attributes, {
360
+ options: options,
361
+ ref: function ref(_ref) {
362
+ _this6._scrollBarRef = _ref;
363
+ }
364
+ }), /*#__PURE__*/_react["default"].createElement(_reactstrap.Nav, null, children || this.navList(navConfig.items)));
288
365
  };
289
366
 
290
367
  return AppSidebarNav2;
@@ -292,6 +369,6 @@ var AppSidebarNav2 = function (_Component) {
292
369
 
293
370
  AppSidebarNav2.propTypes = process.env.NODE_ENV !== "production" ? propTypes : {};
294
371
  AppSidebarNav2.defaultProps = defaultProps;
295
-
296
- exports.default = AppSidebarNav2;
297
- module.exports = exports['default'];
372
+ var _default = AppSidebarNav2;
373
+ exports["default"] = _default;
374
+ module.exports = exports.default;