@rio-cloud/rio-uikit 0.16.1-beta-7 → 0.16.1-beta-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.
@@ -46,7 +46,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
46
46
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
47
47
 
48
48
  var RESIZE_THROTTELING = 10;
49
- var MOBILE_MAX_WIDTH = 580; //const COLLAPSED_DROPDOWN_WIDTH = 50;
49
+ var MOBILE_MAX_WIDTH = 580; // const COLLAPSED_DROPDOWN_WIDTH = 50;
50
50
 
51
51
  var ApplicationHeader = /*#__PURE__*/function (_PureComponent) {
52
52
  (0, _inherits2.default)(ApplicationHeader, _PureComponent);
@@ -71,10 +71,10 @@ var ApplicationHeader = /*#__PURE__*/function (_PureComponent) {
71
71
  (0, _createClass2.default)(ApplicationHeader, [{
72
72
  key: "isMobile",
73
73
  value: function isMobile() {
74
- //const node = this.navRef;
74
+ // const node = this.navRef;
75
75
  // FIXME: collision check need to be done after second rendering of NavItems
76
76
 
77
- /*let isColliding = false;
77
+ /* let isColliding = false;
78
78
  // check for collision of NavItems and ActionBar
79
79
  if (this.refNavItems && this.refActionBar) {
80
80
  const navItemsNode = ReactDOM.findDOMNode(this.refNavItems);
@@ -92,14 +92,14 @@ var ApplicationHeader = /*#__PURE__*/function (_PureComponent) {
92
92
  }
93
93
  }*/
94
94
  return (
95
- /*isColliding || */
95
+ /* isColliding || */
96
96
  this.getContainerWidth() < MOBILE_MAX_WIDTH && this.props.label
97
97
  );
98
98
  }
99
99
  }, {
100
100
  key: "getContainerWidth",
101
101
  value: function getContainerWidth() {
102
- //return this.navRef.clientWidth;
102
+ // return this.navRef.clientWidth;
103
103
  return window.innerWidth;
104
104
  }
105
105
  }, {
@@ -152,7 +152,7 @@ var ApplicationHeader = /*#__PURE__*/function (_PureComponent) {
152
152
  appMenuItems = _this$props.appMenuItems,
153
153
  navItems = _this$props.navItems,
154
154
  actionBarItems = _this$props.actionBarItems;
155
- var classNames = (0, _classnames.default)('ApplicationHeader', 'navbar navbar-default', 'user-select-none', this.state.isMobile && 'mobile', className && className);
155
+ var classNames = (0, _classnames.default)('ApplicationHeader', 'user-select-none', this.state.isMobile && 'mobile', className && className);
156
156
 
157
157
  var renderNavItems = /*#__PURE__*/_react.default.createElement(_NavItems.default, {
158
158
  key: "NavItems",
@@ -234,11 +234,11 @@ var NavItems = /*#__PURE__*/function (_Component) {
234
234
 
235
235
  return /*#__PURE__*/_react.default.createElement("li", {
236
236
  className: "CollapsedDropdown dropdown ".concat(collapsedDropdownClass),
237
- key: 'collapsed-dropdown'
237
+ key: "collapsed-dropdown"
238
238
  }, /*#__PURE__*/_react.default.createElement("a", {
239
239
  id: "basic-nav-dropdown",
240
240
  role: "button",
241
- className: "dropdown-toggle",
241
+ className: "dropdown-toggle text-color-gray",
242
242
  "aria-haspopup": "true",
243
243
  "aria-expanded": "true",
244
244
  onClick: this.handleCollapsedDropdown
@@ -246,16 +246,16 @@ var NavItems = /*#__PURE__*/function (_Component) {
246
246
  className: "rioglyph rioglyph-option-horizontal",
247
247
  "aria-hidden": "true"
248
248
  })), /*#__PURE__*/_react.default.createElement("ul", {
249
- className: 'dropdown-menu',
249
+ className: "dropdown-menu",
250
250
  role: "menu",
251
251
  "aria-labelledby": "basic-nav-dropdown",
252
252
  style: inlineStyle
253
- }, /*#__PURE__*/_react.default.createElement(_ApplicationActionBar.ApplicationActionBar, {
253
+ }, isMobile && /*#__PURE__*/_react.default.createElement(_ApplicationActionBar.ApplicationActionBar, {
254
254
  items: this.props.actionBarItems
255
255
  }), collapsedNavItems.map(function (navItem) {
256
256
  return /*#__PURE__*/_react.default.createElement("li", {
257
257
  key: navItem.key,
258
- className: 'submodule nav-link-item',
258
+ className: "submodule",
259
259
  onClick: _this3.handleCollapsedNavItemSelected,
260
260
  "data-nav-item-key": navItem.key
261
261
  }, navItem.route);
@@ -266,7 +266,7 @@ var NavItems = /*#__PURE__*/function (_Component) {
266
266
  value: function renderNavItem(navItem, isOffscreen) {
267
267
  return /*#__PURE__*/_react.default.createElement("li", {
268
268
  key: navItem.key,
269
- className: "submodule nav-link-item ".concat(isOffscreen ? 'offscreen' : ''),
269
+ className: "submodule ".concat(isOffscreen ? 'offscreen' : ''),
270
270
  "data-nav-item-key": navItem.key
271
271
  }, navItem.route);
272
272
  }
@@ -286,7 +286,7 @@ var NavItems = /*#__PURE__*/function (_Component) {
286
286
  if (isMobile) {
287
287
  return !hasNavItems && hasSingleActionItem ? /*#__PURE__*/_react.default.createElement(_ApplicationActionBar.ApplicationActionBar, {
288
288
  items: actionBarItems,
289
- className: 'position-relative'
289
+ className: "position-relative"
290
290
  }) : this.renderCollapsedNavItem(navItems);
291
291
  }
292
292
 
@@ -310,7 +310,7 @@ var NavItems = /*#__PURE__*/function (_Component) {
310
310
  // As all navItems need to be added to the DOM first in order to get their real size
311
311
  // the computation wheather a navItem need to be shown under the collapsed dropdown or not
312
312
  // needs to be done after the component did mount to the DOM.
313
- var classes = (0, _classnames.default)('SubmoduleNavigation', 'NavItems', 'nav', 'navbar-nav');
313
+ var classes = (0, _classnames.default)('SubmoduleNavigation', 'nav');
314
314
  return /*#__PURE__*/_react.default.createElement("ul", {
315
315
  className: classes,
316
316
  ref: function ref(node) {
@@ -19,8 +19,6 @@ var _debounce = _interopRequireDefault(require("lodash/fp/debounce"));
19
19
 
20
20
  var _classnames = _interopRequireDefault(require("classnames"));
21
21
 
22
- var _ApplicationLayoutBodyBottomBar = require("./ApplicationLayoutBodyBottomBar");
23
-
24
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
23
 
26
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
@@ -71,7 +69,7 @@ var ApplicationLayoutBody = function ApplicationLayoutBody(props) {
71
69
  className: classes
72
70
  }, /*#__PURE__*/_react.default.createElement("div", {
73
71
  className: "module-content-wrapper"
74
- }, banner && banner, navigation && navigation, /*#__PURE__*/_react.default.createElement("div", {
72
+ }, navigation && navigation, banner && banner, /*#__PURE__*/_react.default.createElement("div", {
75
73
  className: innerClasses,
76
74
  onScroll: handleScroll,
77
75
  ref: moduleContentRef
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = exports.SubNavigation = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _propTypes = _interopRequireDefault(require("prop-types"));
19
+
20
+ var _classnames = _interopRequireDefault(require("classnames"));
21
+
22
+ var _excluded = ["className", "navItems", "right"];
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
27
+
28
+ var SubNavigation = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
29
+ var className = props.className,
30
+ navItems = props.navItems,
31
+ right = props.right,
32
+ remainingProps = (0, _objectWithoutProperties2.default)(props, _excluded);
33
+ var navigationClasses = (0, _classnames.default)('SubNavigation', 'width-100pct display-flex align-items-center justify-content-between overflow-auto', className);
34
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
35
+ ref: ref
36
+ }, remainingProps, {
37
+ className: navigationClasses
38
+ }), /*#__PURE__*/_react.default.createElement("ul", {
39
+ className: "SubmoduleNavigation nav"
40
+ }, navItems.map(function (navItem) {
41
+ return /*#__PURE__*/_react.default.createElement("li", {
42
+ className: "submodule",
43
+ key: navItem.key,
44
+ "data-nav-item-key": navItem.key
45
+ }, navItem.route);
46
+ })));
47
+ });
48
+ exports.SubNavigation = SubNavigation;
49
+ SubNavigation.defaultProps = {
50
+ navItems: []
51
+ };
52
+ SubNavigation.propTypes = {
53
+ navItems: _propTypes.default.arrayOf(_propTypes.default.shape({
54
+ key: _propTypes.default.string.isRequired,
55
+ route: _propTypes.default.node.isRequired
56
+ })),
57
+ className: _propTypes.default.string
58
+ };
59
+ var _default = SubNavigation;
60
+ exports.default = _default;
@@ -21,8 +21,6 @@ var _head = _interopRequireDefault(require("lodash/fp/head"));
21
21
 
22
22
  var _isArray = _interopRequireDefault(require("lodash/fp/isArray"));
23
23
 
24
- var _deviceUtils = require("../../utils/deviceUtils");
25
-
26
24
  var _Resizer = _interopRequireDefault(require("../resizer/Resizer"));
27
25
 
28
26
  var _TreeSidebar = _interopRequireDefault(require("./TreeSidebar"));
@@ -112,7 +110,7 @@ var AssetTree = /*#__PURE__*/(0, _react.memo)(function (props) {
112
110
  (0, _react.useEffect)(function () {
113
111
  return setSidebarMode(getSidebarMode(fly));
114
112
  }, [fly]);
115
- var classes = (0, _classnames.default)('AssetTree', className, !isOpen && 'closed', !isOpen && _deviceUtils.isMobile && 'width-0 border-none position-absolute', bordered && 'panel panel-default', sidebarMode === AssetTree.MODE_FLY ? 'fly' : 'fluid');
113
+ var classes = (0, _classnames.default)('AssetTree', className, !isOpen && 'closed', bordered && 'panel panel-default', sidebarMode === AssetTree.MODE_FLY ? 'fly' : 'fluid');
116
114
  var resizeLimitClasses = (0, _classnames.default)('AssetTreeResizeLimit', isResize && 'display-block');
117
115
  var resizeIndicatorPosition = maxWidth || window.innerWidth * 0.5;
118
116
  var resizeLimitStyle = {
@@ -179,14 +177,13 @@ var AssetTree = /*#__PURE__*/(0, _react.memo)(function (props) {
179
177
  className: resizeLimitClasses,
180
178
  style: resizeLimitStyle
181
179
  }), /*#__PURE__*/_react.default.createElement("div", {
182
- className: "AssetTreeContent"
180
+ className: 'AssetTreeContent'
183
181
  }, /*#__PURE__*/_react.default.createElement(_TreeSidebar.default, {
184
182
  onSelectCategory: handleSelectCategory,
185
183
  currentCategoryId: currentCategoryId,
186
- onClick: handleToggleTreeContent,
187
- isOpen: isOpen
184
+ onClick: handleToggleTreeContent
188
185
  }, (0, _isArray.default)(children) ? children : [children]), /*#__PURE__*/_react.default.createElement("div", {
189
- className: "AssetTreeBody"
186
+ className: 'AssetTreeBody'
190
187
  }, useOffscreen ? renderTreesOffscreen(children, categoryId) : category)), resizable && isOpen && /*#__PURE__*/_react.default.createElement(_Resizer.default, {
191
188
  onResizeStart: handleResizeStart,
192
189
  onResize: handleResize,
@@ -57,6 +57,8 @@ var _omit = _interopRequireDefault(require("lodash/fp/omit"));
57
57
 
58
58
  var _negate = _interopRequireDefault(require("lodash/fp/negate"));
59
59
 
60
+ var _keys = _interopRequireDefault(require("lodash/fp/keys"));
61
+
60
62
  var _TreeSearch = _interopRequireDefault(require("./TreeSearch"));
61
63
 
62
64
  var _TreeSelectAll = _interopRequireDefault(require("./TreeSelectAll"));
@@ -86,15 +88,16 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
86
88
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
87
89
 
88
90
  var SEARCH_DEBOUNCE = 100;
89
- var TYPE_TRUCK = 'truck';
90
- var TYPE_TRAILER = 'trailer';
91
- var TYPE_VAN = 'van';
92
- var TYPE_BUS = 'bus';
93
- var TYPE_DRIVER = 'driver';
94
91
  var otherwise = _stubTrue.default;
95
92
  var notEqual = (0, _negate.default)(_isEqual.default);
96
93
  var notEmpty = (0, _negate.default)(_isEmpty.default);
97
94
 
95
+ var Divider = function Divider() {
96
+ return /*#__PURE__*/_react.default.createElement("div", {
97
+ className: 'TreeSelectAllDivider bg-light width-2 height-15 ' + 'margin-top-2 margin-bottom-0 margin-left-10 margin-right-10'
98
+ });
99
+ };
100
+
98
101
  var isNameObject = function isNameObject(item) {
99
102
  return (0, _isObject.default)(item.name);
100
103
  };
@@ -383,12 +386,13 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
383
386
  previousGroups.current = groups;
384
387
  var typeCounts = getAssetTypeCounts(items);
385
388
  dispatch(assetCounted(typeCounts));
386
- dispatch(allCheckedChanged(checkAllSelected({
389
+ var allChecked = checkAllSelected({
387
390
  items: items,
388
391
  groups: groups,
389
392
  selectedItems: selectedItems,
390
393
  selectedGroups: selectedGroups
391
- }, state.flatItems))); // Get the distinct asset types from the asset list that is passed into the component
394
+ }, state.flatItems);
395
+ dispatch(allCheckedChanged(allChecked)); // Get the distinct asset types from the asset list that is passed into the component
392
396
  // to know which asset type counter to render
393
397
 
394
398
  dispatch(visibleTypeCountersChanged(Object.keys(typeCounts)));
@@ -406,24 +410,37 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
406
410
  }
407
411
  }, [state.searchValue]);
408
412
  (0, _react.useEffect)(function () {
409
- makeTree(groups, items);
410
- }, [showEmptyGroups]);
413
+ return makeTree(groups, items);
414
+ }, [state.typeFilter]); // Update tree when empty groups are toggled from outside
415
+
411
416
  (0, _react.useEffect)(function () {
412
- makeTree(groups, items);
413
- }, [state.typeFilter]);
417
+ return makeTree(groups, items);
418
+ }, [showEmptyGroups]); // Update "select all" state from outside when groups are selected outside programatically
419
+ // without using the "select all" checkbox
420
+
421
+ (0, _react.useEffect)(function () {
422
+ var numOfAllGroups = (0, _size.default)(groups);
423
+ var numOfSelectedGroups = (0, _size.default)(selectedGroups);
424
+
425
+ if (numOfSelectedGroups !== numOfAllGroups && state.allChecked) {
426
+ dispatch(allCheckedChanged(false));
427
+ } else if (numOfSelectedGroups === numOfAllGroups && !state.allChecked) {
428
+ dispatch(allCheckedChanged(true));
429
+ }
430
+ }, [selectedGroups]);
414
431
 
415
432
  var checkAllSelected = function checkAllSelected(updatedProps, flatItems) {
416
433
  var updatedItems = updatedProps.items,
417
434
  updatedGroups = updatedProps.groups,
418
435
  updatedSelectedItems = updatedProps.selectedItems,
419
- updatedSlectedGroups = updatedProps.selectedGroups;
436
+ updatedSelectedGroups = updatedProps.selectedGroups;
420
437
 
421
- if (!hasGroups() && (0, _isEmpty.default)(updatedSelectedItems) || hasNoSearchAndGroups() && (0, _isEmpty.default)(updatedSlectedGroups) || hasSearchAndGroups() && (0, _isEmpty.default)(updatedSelectedItems)) {
438
+ if (!hasGroups() && (0, _isEmpty.default)(updatedSelectedItems) || hasNoSearchAndGroups() && (0, _isEmpty.default)(updatedSelectedGroups) || hasSearchAndGroups() && (0, _isEmpty.default)(updatedSelectedItems)) {
422
439
  return false;
423
440
  }
424
441
 
425
442
  if (hasNoSearchAndGroups()) {
426
- var unselectedGroups = (0, _filter.default)(filterOutByItemId(updatedSlectedGroups))(updatedGroups);
443
+ var unselectedGroups = (0, _filter.default)(filterOutByItemId(updatedSelectedGroups))(updatedGroups);
427
444
  return (0, _isEmpty.default)(unselectedGroups);
428
445
  } else if (hasSearchAndGroups()) {
429
446
  var unselectedSearchItems = (0, _filter.default)(filterOutByItemId(updatedSelectedItems))(flatItems);
@@ -685,7 +702,8 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
685
702
  dispatch(typeFilterChanged((0, _toConsumableArray2.default)(currentTypeFilter)));
686
703
  };
687
704
 
688
- var isFilterActive = !(0, _isEmpty.default)(state.typeFilter);
705
+ var isClickable = (0, _size.default)((0, _keys.default)(state.assetCounts)) > 1;
706
+ var isFilterActive = notEmpty(state.typeFilter);
689
707
  var showTreeHead = !hideTreeHead;
690
708
  var showSelectAll = !hideSelectAll;
691
709
  var showSearch = !hideSearch;
@@ -707,46 +725,20 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
707
725
  isEnabled: hasMultiselect,
708
726
  isIndeterminate: isIndeterminate,
709
727
  onSelect: handeSelectAll
710
- }), showSelectAll && hasMultiselect && showSummary && /*#__PURE__*/_react.default.createElement("div", {
711
- className: 'TreeSelectAllDivider bg-light width-2 height-15 ' + 'margin-top-2 margin-bottom-0 margin-left-10 margin-right-10'
712
- }), /*#__PURE__*/_react.default.createElement("div", {
728
+ }), showSelectAll && hasMultiselect && showSummary && /*#__PURE__*/_react.default.createElement(Divider, null), /*#__PURE__*/_react.default.createElement("div", {
713
729
  className: "display-flex justify-content-between align-items-center width-100pct"
714
- }, showSummary ? summary || /*#__PURE__*/_react.default.createElement(_TreeSummary.default, null, state.visibleTypeCounters.includes(TYPE_TRUCK) && /*#__PURE__*/_react.default.createElement(_TypeCounter.default, {
715
- type: TYPE_TRUCK,
716
- icon: "truck-baseline",
717
- value: state.assetCounts.truck,
718
- onClick: handleFilterByType,
719
- isActive: state.typeFilter.includes(TYPE_TRUCK),
720
- enableActivity: isFilterActive
721
- }), state.visibleTypeCounters.includes(TYPE_TRAILER) && /*#__PURE__*/_react.default.createElement(_TypeCounter.default, {
722
- type: TYPE_TRAILER,
723
- icon: "trailer-baseline",
724
- value: state.assetCounts.trailer,
725
- onClick: handleFilterByType,
726
- isActive: state.typeFilter.includes(TYPE_TRAILER),
727
- enableActivity: isFilterActive
728
- }), state.visibleTypeCounters.includes(TYPE_BUS) && /*#__PURE__*/_react.default.createElement(_TypeCounter.default, {
729
- type: TYPE_BUS,
730
- icon: "bus-baseline",
731
- value: state.assetCounts.bus,
732
- onClick: handleFilterByType,
733
- isActive: state.typeFilter.includes(TYPE_BUS),
734
- enableActivity: isFilterActive
735
- }), state.visibleTypeCounters.includes(TYPE_VAN) && /*#__PURE__*/_react.default.createElement(_TypeCounter.default, {
736
- type: TYPE_VAN,
737
- icon: "van-baseline",
738
- value: state.assetCounts.van,
739
- onClick: handleFilterByType,
740
- isActive: state.typeFilter.includes(TYPE_VAN),
741
- enableActivity: isFilterActive
742
- }), state.visibleTypeCounters.includes(TYPE_DRIVER) && /*#__PURE__*/_react.default.createElement(_TypeCounter.default, {
743
- type: TYPE_DRIVER,
744
- icon: TYPE_DRIVER,
745
- value: state.assetCounts.driver,
746
- onClick: handleFilterByType,
747
- isActive: state.typeFilter.includes(TYPE_DRIVER),
748
- enableActivity: isFilterActive
749
- })) : null, /*#__PURE__*/_react.default.createElement(_TreeOptions.default, {
730
+ }, showSummary ? summary || /*#__PURE__*/_react.default.createElement(_TreeSummary.default, null, (0, _map.default)(function (typeCounter) {
731
+ return /*#__PURE__*/_react.default.createElement(_TypeCounter.default, {
732
+ key: typeCounter,
733
+ type: typeCounter,
734
+ icon: "".concat(typeCounter),
735
+ value: state.assetCounts[typeCounter],
736
+ onClick: handleFilterByType,
737
+ isActive: state.typeFilter.includes(typeCounter),
738
+ hasFilter: isFilterActive,
739
+ enableActivity: isClickable
740
+ });
741
+ })(state.visibleTypeCounters)) : null, /*#__PURE__*/_react.default.createElement(_TreeOptions.default, {
750
742
  treeOptions: treeOptions
751
743
  })))), /*#__PURE__*/_react.default.createElement(_TreeRoot.default, {
752
744
  maxHeight: scrollHeight
@@ -19,7 +19,7 @@ var _OverlayTrigger = _interopRequireDefault(require("../overlay/OverlayTrigger"
19
19
 
20
20
  var _Tooltip = _interopRequireDefault(require("../tooltip/Tooltip"));
21
21
 
22
- var _excluded = ["className", "onClick", "isOpen"];
22
+ var _excluded = ["className", "onClick"];
23
23
  var ACTIVE_CLASS_NAME = 'active';
24
24
  var SELECTED_CLASS_NAME = 'selected';
25
25
  var LABEL_TOOLTIP_DELAY = 1500;
@@ -44,7 +44,7 @@ var TreeSidebarCategories = function TreeSidebarCategories(_ref) {
44
44
  onClick: handleSelectCategory,
45
45
  className: statusClassName
46
46
  }, /*#__PURE__*/_react.default.createElement("div", {
47
- className: "selection-bubble"
47
+ className: 'selection-bubble'
48
48
  }, /*#__PURE__*/_react.default.createElement("span", {
49
49
  className: "rioglyph ".concat(icon)
50
50
  })));
@@ -57,8 +57,8 @@ var TreeSidebarCategories = function TreeSidebarCategories(_ref) {
57
57
  placement: _Tooltip.default.RIGHT,
58
58
  delayShow: LABEL_TOOLTIP_DELAY,
59
59
  overlay: /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
60
- id: "tooltip",
61
- width: "auto"
60
+ id: 'tooltip',
61
+ width: 'auto'
62
62
  }, tooltip)
63
63
  }, category);
64
64
  }
@@ -70,30 +70,19 @@ var TreeSidebarCategories = function TreeSidebarCategories(_ref) {
70
70
  var TreeSidebar = /*#__PURE__*/_react.default.memo(function (props) {
71
71
  var className = props.className,
72
72
  onClick = props.onClick,
73
- isOpen = props.isOpen,
74
73
  remainingProps = (0, _objectWithoutProperties2.default)(props, _excluded);
75
- var classes = (0, _classnames.default)('TreeSidebar', !isOpen && 'width-0', className);
76
-
77
- if (!isOpen) {
78
- return /*#__PURE__*/_react.default.createElement("div", {
79
- className: "TreeSidebarToggle position-absolute bottom-0 left--5 height-50 width-50 border rounded bg-lightest display-flex justify-content-center align-items-center",
80
- onClick: onClick
81
- }, /*#__PURE__*/_react.default.createElement("span", {
82
- className: "rioglyph rioglyph-chevron-left"
83
- }));
84
- }
85
-
74
+ var classes = (0, _classnames.default)('TreeSidebar', className);
86
75
  return /*#__PURE__*/_react.default.createElement("div", {
87
76
  className: classes
88
- }, isOpen && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("ul", {
89
- className: "TreeSidebarNavigation",
77
+ }, /*#__PURE__*/_react.default.createElement("ul", {
78
+ className: 'TreeSidebarNavigation',
90
79
  onClick: onClick
91
80
  }, /*#__PURE__*/_react.default.createElement(TreeSidebarCategories, remainingProps)), /*#__PURE__*/_react.default.createElement("div", {
92
- className: "TreeSidebarToggle",
81
+ className: 'TreeSidebarToggle',
93
82
  onClick: onClick
94
83
  }, /*#__PURE__*/_react.default.createElement("span", {
95
- className: "rioglyph rioglyph-chevron-left"
96
- }))));
84
+ className: 'rioglyph rioglyph-chevron-left'
85
+ })));
97
86
  });
98
87
 
99
88
  TreeSidebar.displayName = 'TreeSidebar';
@@ -104,7 +93,6 @@ TreeSidebar.propTypes = {
104
93
  currentCategoryId: _propTypes.default.string,
105
94
  children: _propTypes.default.arrayOf(_propTypes.default.node),
106
95
  onClick: _propTypes.default.func.isRequired,
107
- isOpen: _propTypes.default.bool,
108
96
  className: _propTypes.default.string
109
97
  };
110
98
  var _default = TreeSidebar;
@@ -17,25 +17,23 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
18
  var _classnames = _interopRequireDefault(require("classnames"));
19
19
 
20
- var _excluded = ["icon", "value", "isActive", "enableActivity", "onClick", "type", "hideOnZero"];
20
+ var _excluded = ["icon", "value", "isActive", "hasFilter", "enableActivity", "onClick", "type", "hideOnZero"];
21
21
 
22
22
  var TypeCounter = function TypeCounter(props) {
23
23
  var icon = props.icon,
24
24
  value = props.value,
25
25
  isActive = props.isActive,
26
+ hasFilter = props.hasFilter,
26
27
  enableActivity = props.enableActivity,
27
28
  onClick = props.onClick,
28
29
  type = props.type,
29
30
  hideOnZero = props.hideOnZero,
30
31
  remainingProps = (0, _objectWithoutProperties2.default)(props, _excluded);
31
- var isClickable = onClick !== undefined;
32
- var wrapperClassName = (0, _classnames.default)('TypeCounter', 'user-select-none margin-right-15', isClickable && 'cursor-pointer', enableActivity && !isActive && 'opacity-50');
32
+ var wrapperClassName = (0, _classnames.default)('TypeCounter', 'user-select-none margin-right-15', enableActivity ? 'cursor-pointer' : 'pointer-events-none', enableActivity && hasFilter && !isActive && 'opacity-50');
33
33
  var counterClassNames = (0, _classnames.default)('TreeLabelCount', 'margin-left-3', 'label label-condensed', isActive ? 'label-primary' : 'label-muted label-filled');
34
34
 
35
35
  var handleClick = function handleClick() {
36
- if (isClickable) {
37
- onClick(type);
38
- }
36
+ return onClick(type);
39
37
  };
40
38
 
41
39
  if (hideOnZero && !value) {
@@ -58,7 +56,11 @@ TypeCounter.defaultProps = {
58
56
  TypeCounter.propTypes = {
59
57
  type: _propTypes.default.string,
60
58
  icon: _propTypes.default.string,
59
+ // Highlights the current active filter
61
60
  isActive: _propTypes.default.bool,
61
+ // Defined if there is a filter
62
+ hasFilter: _propTypes.default.bool,
63
+ // Allow the counter to be clickable
62
64
  enableActivity: _propTypes.default.bool,
63
65
  hideOnZero: _propTypes.default.bool,
64
66
  onClick: _propTypes.default.func,
@@ -5,5 +5,9 @@ declare module '@rio-cloud/rio-uikit/lib/es/DeviceUtils' {
5
5
  export function isMobileScreen(): boolean;
6
6
  export function inIframe(): boolean;
7
7
  export function toggleZoomOnMobile(): boolean;
8
- export type MOBILE_SCREEN = number;
8
+ export type MOBILE_SCREEN = number;
9
+ export type SCREEN_SM = number;
10
+ export type SCREEN_MD = number;
11
+ export type SCREEN_LG = number;
12
+ export type SCREEN_XL = number;
9
13
  }
@@ -0,0 +1,5 @@
1
+ declare module '@rio-cloud/rio-uikit/lib/es/SubNavigation' {
2
+ import React from 'react';
3
+ import { SubNavigationProps } from '../types';
4
+ export default class SubNavigation extends React.Component<SubNavigationProps> {}
5
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _SubNavigation2.default;
12
+ }
13
+ });
14
+
15
+ var _SubNavigation2 = _interopRequireDefault(require("../components/applicationLayout/SubNavigation"));
@@ -9,6 +9,30 @@ Object.defineProperty(exports, "MOBILE_SCREEN", {
9
9
  return _deviceUtils.MOBILE_SCREEN;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "SCREEN_LG", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _deviceUtils.SCREEN_LG;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "SCREEN_MD", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _deviceUtils.SCREEN_MD;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "SCREEN_SM", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _deviceUtils.SCREEN_SM;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "SCREEN_XL", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _deviceUtils.SCREEN_XL;
34
+ }
35
+ });
12
36
  Object.defineProperty(exports, "hasTouch", {
13
37
  enumerable: true,
14
38
  get: function get() {
@@ -7,6 +7,7 @@ exports.default = useClickOutside;
7
7
 
8
8
  var _react = require("react");
9
9
 
10
+ /* eslint-disable prefer-arrow/prefer-arrow-functions */
10
11
  // eslint-disable-next-line max-len
11
12
  // Inspired from https://github.com/mantinedev/mantine/blob/master/src/mantine-hooks/src/use-click-outside/use-click-outside.ts
12
13
  function useClickOutside(callback) {
@@ -15,7 +16,7 @@ function useClickOutside(callback) {
15
16
  (0, _react.useEffect)(function () {
16
17
  var listener = function listener(event) {
17
18
  if (targetRef.current && !targetRef.current.contains(event.target)) {
18
- callback();
19
+ callback(event);
19
20
  }
20
21
  };
21
22
 
@@ -195,6 +195,10 @@ body .module-content {
195
195
  background-size: cover;
196
196
  }
197
197
 
198
+ .SubmoduleNavigation .SubmoduleNavigation {
199
+ padding-left: 0;
200
+ }
201
+
198
202
  html.show-handheld-navigation & {
199
203
  position: fixed;
200
204
  top: 0;
@@ -222,6 +226,7 @@ body .module-content {
222
226
  }
223
227
 
224
228
  .SubmoduleNavigation {
229
+ border-bottom: none;
225
230
  display: block;
226
231
  margin: 50px 0;
227
232
  padding-left: 0;
@@ -329,6 +334,7 @@ body .module-content {
329
334
  @media (min-width: @screen-ls) {
330
335
  > .SubmoduleNavigation {
331
336
  max-height: calc(~"100vh - 100px");
337
+ height: auto;
332
338
  overflow: auto;
333
339
  -webkit-overflow-scrolling: touch;
334
340
  }
@@ -173,7 +173,7 @@
173
173
  display: none;
174
174
  }
175
175
 
176
- .navbar-nav {
176
+ .nav {
177
177
  display: flex;
178
178
  justify-content: center !important;
179
179
 
@@ -1,14 +1,6 @@
1
- .ApplicationHeader .SubmoduleNavigation .submodule,
2
- .navbar .SubmoduleNavigation .submodule {
3
- white-space: nowrap;
4
- }
5
-
6
1
  .ApplicationHeader {
7
2
  background-color: @color-white;
8
- border-bottom: 1px solid @gray-light;
9
- border-left: none;
10
- border-right: none;
11
- border-top: none;
3
+ border: none;
12
4
  display: flex;
13
5
  float: none !important;
14
6
  margin-bottom: 0;
@@ -64,7 +56,7 @@
64
56
  background-image: @navbar-brand-icon !important;
65
57
  background-size: cover;
66
58
  display: block;
67
- height: @navbar-height-without-border;
59
+ height: @navbar-height;
68
60
  margin: 0;
69
61
  padding: 0;
70
62
  position: relative;
@@ -91,241 +83,6 @@
91
83
  }
92
84
  }
93
85
 
94
- .navbar-nav {
95
- float: none;
96
- margin: 0;
97
-
98
- > li {
99
- float: none !important;
100
-
101
- > a {
102
- line-height: @navbar-height-without-border - (@navbar-padding-vertical * 2);
103
- padding-bottom: @navbar-padding-vertical;
104
- padding-top: @navbar-padding-vertical;
105
- }
106
- }
107
-
108
- &:not(.navbar-right) {
109
- > li {
110
- &:empty {
111
- display: none;
112
- }
113
-
114
- &:empty + .submodule,
115
- &:first-child:not(:empty) {
116
- margin-left: 15px;
117
- }
118
-
119
- > a {
120
- background-color: transparent;
121
- color: @gray;
122
- cursor: pointer;
123
- font-size: 14px;
124
- font-weight: @font-medium;
125
- margin: 0 15px;
126
- padding: 15px 0;
127
- text-transform: uppercase;
128
- transition: all 100ms ease-in-out;
129
- user-select: none;
130
- }
131
-
132
- &.disabled,
133
- &:disabled {
134
- > a {
135
- color: @gray-light
136
- }
137
- }
138
-
139
- &:not(.disabled):not(:disabled) {
140
- > a.active,
141
- &.active > a,
142
- &:focus > a,
143
- &:hover > a {
144
- &:not(.disabled):not(:disabled) {
145
- background-color: transparent;
146
- box-shadow: inset 0 -3px 0 @color-black, 0 1px 0 @color-black;
147
- color: @color-black;
148
-
149
- &:after {
150
- background-color: @color-black;
151
- height: 3px;
152
- width: 100%;
153
- z-index: 1;
154
- }
155
- }
156
- }
157
- }
158
-
159
- &.dropdown {
160
- &.active > a,
161
- &:hover > a {
162
- box-shadow: none;
163
- }
164
-
165
- > .dropdown-menu {
166
- border: none;
167
- }
168
- }
169
- }
170
- }
171
- }
172
-
173
- .ModuleNavigation {
174
- border: none;
175
- height: @navbar-height-without-border;
176
- line-height: @navbar-height-without-border;
177
- list-style: none;
178
- margin-bottom: 0;
179
- padding-left: 0;
180
- position: relative;
181
-
182
- // avoid floating content on mobile
183
- max-width: calc(~'100% - @{navbar-height}');
184
-
185
- // NOTE: enforce it with important so all services look similar
186
- background-color: @color-white !important;
187
- color: @color-black !important;
188
-
189
- .dropdown {
190
- width: 300px;
191
-
192
- &.open {
193
- background-color: inherit;
194
-
195
- .ModuleNavigation-dropdown,
196
- .dropdown-toggle {
197
- &:after {
198
- bottom: 0;
199
- top: 0;
200
- }
201
- }
202
- }
203
- }
204
-
205
- .ModuleNavigation-dropdown,
206
- .dropdown-toggle {
207
- align-items: center;
208
- display: flex;
209
- padding: 0;
210
-
211
- &.inactive {
212
- pointer-events: none;
213
- }
214
-
215
- // Style the separator between main dropdown and submodules
216
- &:after {
217
- background-color: @gray-lighter;
218
- bottom: 15px;
219
- content: '';
220
- display: block;
221
- position: absolute;
222
- right: 0;
223
- top: 15px;
224
- transition: all 0.1s ease-in-out;
225
- width: 3px;
226
- }
227
-
228
- &:first-child:not(:last-child) {
229
- &:hover:after {
230
- bottom: 0;
231
- top: 0;
232
- }
233
- }
234
-
235
- > span {
236
- &:not(.caret) {
237
- .ellipsis-1;
238
- flex: 1 0 auto;
239
- //max-width: @navbar-application-dropdown-width - @navbar-height;
240
- padding-left: @navbar-padding-horizontal;
241
- }
242
-
243
- &.caret {
244
- margin: 0;
245
- text-align: center;
246
- width: @navbar-height;
247
- }
248
- }
249
- }
250
-
251
- // Style for the main dropdown
252
- > li > a,
253
- > a {
254
- background-color: transparent;
255
- color: inherit;
256
- font-size: 18px;
257
- font-weight: @font-medium;
258
- text-decoration: none;
259
- text-transform: uppercase;
260
- }
261
-
262
- .dropdown-menu {
263
- -webkit-overflow-scrolling: touch;
264
- border: none;
265
- border-radius: 0 0 @border-radius-default @border-radius-default;
266
- max-height: ~'calc(100vh - @{navbar-height} - 20px)'; // --vh fallback
267
- max-height: ~'calc(var(--vh, 1vh) * 100 - @{navbar-height} - 20px)';
268
- max-width: calc(~'100% - 3px');
269
- width: 100%;
270
- overflow-x: hidden;
271
- overflow-y: auto;
272
-
273
- > li > a {
274
- color: @color-black;
275
- font-size: 14px;
276
- font-weight: @font-medium;
277
- padding: 5px @navbar-padding-horizontal;
278
- text-transform: uppercase;
279
-
280
- &.inactive {
281
- pointer-events: none;
282
- }
283
- }
284
- }
285
-
286
- &.hasModules,
287
- &.hasModules > li > a {
288
- cursor: pointer;
289
- }
290
-
291
- > li > a {
292
- .ellipsis-1;
293
- cursor: default;
294
- height: 100%;
295
- padding-left: @navbar-padding-horizontal;
296
- }
297
- }
298
-
299
- .SubmoduleNavigation {
300
- display: flex;
301
- flex: 1 1 0;
302
-
303
- .submodule {
304
- white-space: nowrap;
305
-
306
- &.offscreen {
307
- opacity: 0;
308
- position: absolute;
309
- }
310
- }
311
-
312
- .CollapsedDropdown {
313
- > .dropdown-menu {
314
- left: auto;
315
- right: 0;
316
- }
317
-
318
- > .dropdown-toggle {
319
- margin: 0 !important;
320
- padding: 15px 15px !important;
321
-
322
- .rioglyph-option-horizontal {
323
- font-size: 18px;
324
- }
325
- }
326
- }
327
- }
328
-
329
86
  .ApplicationActionBar {
330
87
  background-color: @color-white;
331
88
  cursor: auto;
@@ -436,3 +193,243 @@
436
193
  margin-bottom: 5px;
437
194
  }
438
195
  }
196
+
197
+ .ModuleNavigation {
198
+ border-bottom: 1px solid @gray-light;
199
+ height: @navbar-height;
200
+ line-height: @navbar-height;
201
+ list-style: none;
202
+ margin-bottom: 0;
203
+ padding-left: 0;
204
+ position: relative;
205
+
206
+ // avoid floating content on mobile
207
+ max-width: calc(~'100% - @{navbar-height}');
208
+
209
+ // NOTE: enforce it with important so all services look similar
210
+ background-color: @color-white !important;
211
+ color: @color-black !important;
212
+
213
+ .dropdown {
214
+ width: 300px;
215
+
216
+ &.open {
217
+ background-color: inherit;
218
+
219
+ .ModuleNavigation-dropdown,
220
+ .dropdown-toggle {
221
+ &:after {
222
+ bottom: 0;
223
+ top: 0;
224
+ }
225
+ }
226
+ }
227
+ }
228
+
229
+ .ModuleNavigation-dropdown,
230
+ .dropdown-toggle {
231
+ align-items: center;
232
+ display: flex;
233
+ padding: 0;
234
+
235
+ &.inactive {
236
+ pointer-events: none;
237
+ }
238
+
239
+ // Style the separator between main dropdown and submodules
240
+ &:after {
241
+ background-color: @gray-lighter;
242
+ bottom: 15px;
243
+ content: '';
244
+ display: block;
245
+ position: absolute;
246
+ right: 0;
247
+ top: 15px;
248
+ transition: all 0.1s ease-in-out;
249
+ width: 3px;
250
+ }
251
+
252
+ &:first-child:not(:last-child) {
253
+ &:hover:after {
254
+ bottom: 0;
255
+ top: 0;
256
+ }
257
+ }
258
+
259
+ > span {
260
+ &:not(.caret) {
261
+ .ellipsis-1;
262
+ flex: 1 0 auto;
263
+ //max-width: @navbar-application-dropdown-width - @navbar-height;
264
+ padding-left: @navbar-padding-horizontal;
265
+ }
266
+
267
+ &.caret {
268
+ margin: 0;
269
+ text-align: center;
270
+ width: @navbar-height;
271
+ }
272
+ }
273
+ }
274
+
275
+ // Style for the main dropdown
276
+ > li > a,
277
+ > a {
278
+ background-color: transparent;
279
+ color: inherit;
280
+ font-size: 18px;
281
+ font-weight: @font-medium;
282
+ text-decoration: none;
283
+ text-transform: uppercase;
284
+ }
285
+
286
+ .dropdown-menu {
287
+ -webkit-overflow-scrolling: touch;
288
+ border: none;
289
+ border-radius: 0 0 @border-radius-default @border-radius-default;
290
+ max-height: ~'calc(100vh - @{navbar-height} - 20px)'; // --vh fallback
291
+ max-height: ~'calc(var(--vh, 1vh) * 100 - @{navbar-height} - 20px)';
292
+ max-width: calc(~'100% - 3px');
293
+ width: 100%;
294
+ overflow-x: hidden;
295
+ overflow-y: auto;
296
+
297
+ > li > a {
298
+ color: @color-black;
299
+ font-size: 14px;
300
+ font-weight: @font-medium;
301
+ padding: 5px @navbar-padding-horizontal;
302
+ text-transform: uppercase;
303
+
304
+ &.inactive {
305
+ pointer-events: none;
306
+ }
307
+ }
308
+ }
309
+
310
+ &.hasModules,
311
+ &.hasModules > li > a {
312
+ cursor: pointer;
313
+ }
314
+
315
+ > li > a {
316
+ .ellipsis-1;
317
+ cursor: default;
318
+ height: 100%;
319
+ padding-left: @navbar-padding-horizontal;
320
+ }
321
+ }
322
+
323
+ .SubmoduleNavigation {
324
+ border-bottom: 1px solid @gray-light;
325
+ height: @navbar-height;
326
+ display: flex;
327
+ flex: 1 1 0;
328
+
329
+ .ApplicationLayoutBodyNavigation & {
330
+ .submodule:first-of-type > a {
331
+ margin-left: 0;
332
+ }
333
+
334
+ @media (max-width: @screen-xs-max) {
335
+ padding-left: @ApplicationLayoutBodyPadding*0.5;
336
+ }
337
+
338
+ @media (min-width: @screen-ls) {
339
+ padding-left: @ApplicationLayoutBodyPadding;
340
+ }
341
+ }
342
+
343
+ .ApplicationLayoutBodyNavigation.has-offset & {
344
+ @media (min-width: @screen-ls) {
345
+ padding-left: 380px;
346
+ }
347
+ }
348
+
349
+ .ApplicationHeader:not(.mobile) & {
350
+ padding-left: 15px;
351
+ }
352
+
353
+ > .submodule {
354
+ white-space: nowrap;
355
+
356
+ &:empty {
357
+ display: none;
358
+ }
359
+
360
+ > a {
361
+ background-color: transparent;
362
+ color: @gray;
363
+ cursor: pointer;
364
+ font-size: 14px;
365
+ margin: 0 15px;
366
+ padding: 15px 0;
367
+ transition: all 100ms ease-in-out;
368
+ user-select: none;
369
+
370
+ .ApplicationHeader & {
371
+ font-weight: @font-medium;
372
+ text-transform: uppercase;
373
+ }
374
+ }
375
+
376
+ &.disabled,
377
+ &:disabled {
378
+ > a {
379
+ color: @gray-light
380
+ }
381
+ }
382
+
383
+ &:not(.disabled):not(:disabled) {
384
+ > a.active,
385
+ &.active > a,
386
+ &:focus > a,
387
+ &:hover > a {
388
+ &:not(.disabled):not(:disabled) {
389
+ background-color: transparent;
390
+ box-shadow: inset 0 -4px 0 @color-black, 0 0px 0 @color-black;
391
+ color: @color-black;
392
+
393
+ &:after {
394
+ background-color: @color-black;
395
+ height: 3px;
396
+ width: 100%;
397
+ z-index: 1;
398
+ }
399
+ }
400
+ }
401
+ }
402
+
403
+ &.dropdown {
404
+ &.active > a,
405
+ &:hover > a {
406
+ box-shadow: none;
407
+ }
408
+
409
+ > .dropdown-menu {
410
+ border: none;
411
+ }
412
+ }
413
+
414
+ &.offscreen {
415
+ opacity: 0;
416
+ position: absolute;
417
+ }
418
+ }
419
+
420
+ .CollapsedDropdown {
421
+ > .dropdown-menu {
422
+ left: auto;
423
+ right: 0;
424
+ }
425
+
426
+ > .dropdown-toggle {
427
+ margin: 0 !important;
428
+ padding: 15px 15px !important;
429
+
430
+ .rioglyph-option-horizontal {
431
+ font-size: 18px;
432
+ }
433
+ }
434
+ }
435
+ }
@@ -52,6 +52,7 @@
52
52
  height: @ApplicationLayoutBodyHeightWithoutFooterAndViewportFix;
53
53
  }
54
54
 
55
+ // TODO remove with v1.0 (downward compatibility) - remove when cleanup
55
56
  .ApplicationLayoutBodyNavigation {
56
57
  &:not(.unstyled) {
57
58
  align-items: center;
@@ -62,11 +63,11 @@
62
63
  // padding: 0 @ApplicationLayoutBodyPadding*0.25 0 @ApplicationLayoutBodyPadding*0.5;
63
64
  }
64
65
 
65
- &:not(.header-has-no-application-menu) {
66
- @media (min-width: @screen-lg) {
67
- padding-left: 365px;
68
- }
69
- }
66
+ // &:not(.header-has-no-application-menu) {
67
+ // @media (min-width: @screen-lg) {
68
+ // padding-left: 365px;
69
+ // }
70
+ // }
70
71
 
71
72
  .nav-pills {
72
73
  padding-left: @ApplicationLayoutBodyPadding*0.5;
@@ -98,6 +99,7 @@
98
99
  }
99
100
  }
100
101
  }
102
+ // END TODO
101
103
 
102
104
  body:not(.modal-open) & {
103
105
  -webkit-overflow-scrolling: touch;
@@ -42,7 +42,7 @@
42
42
 
43
43
  &.closed {
44
44
  box-shadow: none !important;
45
- width: 50px;
45
+ width: 50px !important;
46
46
 
47
47
  .TreeSidebarToggle {
48
48
  transform: rotate(180deg);
package/lib/types.ts CHANGED
@@ -1737,6 +1737,11 @@ export interface SteppedProgressBarProps {
1737
1737
  variant?: 'circle' | 'rectangle' | 'roadsign';
1738
1738
  }
1739
1739
 
1740
+ export interface SubNavigationProps {
1741
+ navItems?: ModulePropTypes[];
1742
+ className?: string;
1743
+ }
1744
+
1740
1745
  export interface SwitchProps {
1741
1746
  keyName?: string;
1742
1747
  onChange: (toggleState: boolean) => void;
@@ -2041,6 +2046,7 @@ export interface TypeCounterProps {
2041
2046
  type?: string;
2042
2047
  icon?: string;
2043
2048
  isActive?: boolean;
2049
+ hasFilter?: boolean;
2044
2050
  enableActivity?: boolean;
2045
2051
  hideOnZero?: boolean;
2046
2052
  onClick?: (type: string) => void;
@@ -2052,7 +2058,7 @@ export interface TypeCounterProps {
2052
2058
  export type UseAfterMount = (callback: () => void, deps?: any[]) => void;
2053
2059
 
2054
2060
  export type UseClickOutside<T extends HTMLElement = any> = (
2055
- callback: () => void,
2061
+ callback: (event: React.MouseEvent<HTMLButtonElement>) => void,
2056
2062
  events?: ['mousedown', 'touchstart']
2057
2063
  ) => React.MutableRefObject<T>;
2058
2064
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.toggleZoomOnMobile = exports.isMobileScreen = exports.isMobile = exports.isDesktop = exports.inIframe = exports.hasTouch = exports.MOBILE_SCREEN = void 0;
6
+ exports.toggleZoomOnMobile = exports.isMobileScreen = exports.isMobile = exports.isDesktop = exports.inIframe = exports.hasTouch = exports.SCREEN_XL = exports.SCREEN_SM = exports.SCREEN_MD = exports.SCREEN_LG = exports.MOBILE_SCREEN = void 0;
7
7
 
8
8
  // As "cssuseragent" is accessing the html dom object directly without checking whether it exists or not, we need to
9
9
  // use old shool require() to have a conditional import only when html really exists. This avoids issues when
@@ -40,6 +40,14 @@ var hasTouch = function hasTouch() {
40
40
  exports.hasTouch = hasTouch;
41
41
  var MOBILE_SCREEN = 480;
42
42
  exports.MOBILE_SCREEN = MOBILE_SCREEN;
43
+ var SCREEN_SM = 768;
44
+ exports.SCREEN_SM = SCREEN_SM;
45
+ var SCREEN_MD = 992;
46
+ exports.SCREEN_MD = SCREEN_MD;
47
+ var SCREEN_LG = 1200;
48
+ exports.SCREEN_LG = SCREEN_LG;
49
+ var SCREEN_XL = 1700;
50
+ exports.SCREEN_XL = SCREEN_XL;
43
51
 
44
52
  var isMobileScreen = function isMobileScreen() {
45
53
  return window.matchMedia("(max-width: ".concat(MOBILE_SCREEN, "px)")).matches;
package/lib/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "0.16.1-beta-7"
2
+ "version": "0.16.1-beta-8"
3
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rio-cloud/rio-uikit",
3
- "version": "0.16.1-beta-7",
3
+ "version": "0.16.1-beta-8",
4
4
  "description": "The RIO UIKIT component library",
5
5
  "repository": "https://collaboration.msi.audi.com/stash/projects/RIOFRONT/repos/uikit-web/browse",
6
6
  "scripts": {