@rio-cloud/rio-uikit 0.16.1-beta-3 → 0.16.1-beta-7

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.
@@ -2,14 +2,12 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.default = exports.ApplicationLayout = void 0;
11
9
 
12
- var _react = _interopRequireWildcard(require("react"));
10
+ var _react = _interopRequireDefault(require("react"));
13
11
 
14
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
13
 
@@ -23,18 +21,16 @@ var _ApplicationLayoutBody = _interopRequireDefault(require("./ApplicationLayout
23
21
 
24
22
  var _init = require("../../utils/init");
25
23
 
26
- 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); }
27
-
28
- 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; }
29
-
30
24
  // initializes document bootstrapping - keep the import to avoid being tree-shaked
31
25
  _init.initDocumentBootstrapping;
32
26
 
33
27
  var ApplicationLayout = function ApplicationLayout(_ref) {
34
28
  var className = _ref.className,
29
+ layoutRef = _ref.layoutRef,
35
30
  children = _ref.children;
36
31
  var classes = (0, _classnames.default)('ApplicationLayout', className);
37
32
  return /*#__PURE__*/_react.default.createElement("div", {
33
+ ref: layoutRef,
38
34
  className: classes
39
35
  }, children);
40
36
  };
@@ -44,7 +40,8 @@ ApplicationLayout.Header = _ApplicationLayoutHeader.default;
44
40
  ApplicationLayout.Sidebar = _ApplicationLayoutSidebar.default;
45
41
  ApplicationLayout.Body = _ApplicationLayoutBody.default;
46
42
  ApplicationLayout.propTypes = {
47
- className: _propTypes.default.string
43
+ className: _propTypes.default.string,
44
+ layoutRef: _propTypes.default.func
48
45
  };
49
46
  var _default = ApplicationLayout;
50
47
  exports.default = _default;
@@ -21,6 +21,8 @@ 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
+
24
26
  var _Resizer = _interopRequireDefault(require("../resizer/Resizer"));
25
27
 
26
28
  var _TreeSidebar = _interopRequireDefault(require("./TreeSidebar"));
@@ -110,7 +112,7 @@ var AssetTree = /*#__PURE__*/(0, _react.memo)(function (props) {
110
112
  (0, _react.useEffect)(function () {
111
113
  return setSidebarMode(getSidebarMode(fly));
112
114
  }, [fly]);
113
- var classes = (0, _classnames.default)('AssetTree', className, !isOpen && 'closed', bordered && 'panel panel-default', sidebarMode === AssetTree.MODE_FLY ? 'fly' : 'fluid');
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');
114
116
  var resizeLimitClasses = (0, _classnames.default)('AssetTreeResizeLimit', isResize && 'display-block');
115
117
  var resizeIndicatorPosition = maxWidth || window.innerWidth * 0.5;
116
118
  var resizeLimitStyle = {
@@ -177,13 +179,14 @@ var AssetTree = /*#__PURE__*/(0, _react.memo)(function (props) {
177
179
  className: resizeLimitClasses,
178
180
  style: resizeLimitStyle
179
181
  }), /*#__PURE__*/_react.default.createElement("div", {
180
- className: 'AssetTreeContent'
182
+ className: "AssetTreeContent"
181
183
  }, /*#__PURE__*/_react.default.createElement(_TreeSidebar.default, {
182
184
  onSelectCategory: handleSelectCategory,
183
185
  currentCategoryId: currentCategoryId,
184
- onClick: handleToggleTreeContent
186
+ onClick: handleToggleTreeContent,
187
+ isOpen: isOpen
185
188
  }, (0, _isArray.default)(children) ? children : [children]), /*#__PURE__*/_react.default.createElement("div", {
186
- className: 'AssetTreeBody'
189
+ className: "AssetTreeBody"
187
190
  }, useOffscreen ? renderTreesOffscreen(children, categoryId) : category)), resizable && isOpen && /*#__PURE__*/_react.default.createElement(_Resizer.default, {
188
191
  onResizeStart: handleResizeStart,
189
192
  onResize: handleResize,
@@ -21,6 +21,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
21
21
 
22
22
  var _classnames = _interopRequireDefault(require("classnames"));
23
23
 
24
+ var _isNil = _interopRequireDefault(require("lodash/fp/isNil"));
25
+
24
26
  var _isEmpty = _interopRequireDefault(require("lodash/fp/isEmpty"));
25
27
 
26
28
  var _isEqual = _interopRequireDefault(require("lodash/fp/isEqual"));
@@ -73,6 +75,8 @@ var _TreeOptions = _interopRequireDefault(require("./TreeOptions"));
73
75
 
74
76
  var _TreeRoot = _interopRequireDefault(require("./TreeRoot"));
75
77
 
78
+ var _TypeCounter = _interopRequireDefault(require("./TypeCounter"));
79
+
76
80
  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); }
77
81
 
78
82
  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; }
@@ -82,6 +86,11 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
82
86
  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; }
83
87
 
84
88
  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';
85
94
  var otherwise = _stubTrue.default;
86
95
  var notEqual = (0, _negate.default)(_isEqual.default);
87
96
  var notEmpty = (0, _negate.default)(_isEmpty.default);
@@ -113,6 +122,13 @@ var filterEmptyGroups = (0, _filter.default)(function (group) {
113
122
  return notEmpty(group.items);
114
123
  });
115
124
 
125
+ var filterAssetByType = function filterAssetByType() {
126
+ var types = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
127
+ return (0, _filter.default)(function (asset) {
128
+ return types.includes(asset.type);
129
+ });
130
+ };
131
+
116
132
  var sortGroupsByName = function sortGroupsByName(groups) {
117
133
  var fixedGroups = {};
118
134
  var sortableGroups = {};
@@ -222,9 +238,9 @@ var assetCounted = function assetCounted(payload) {
222
238
  };
223
239
  };
224
240
 
225
- var allChecked = function allChecked(payload) {
241
+ var allCheckedChanged = function allCheckedChanged(payload) {
226
242
  return {
227
- type: 'allChecked',
243
+ type: 'allCheckedChanged',
228
244
  payload: payload
229
245
  };
230
246
  };
@@ -250,6 +266,27 @@ var groupedItemsChanged = function groupedItemsChanged(payload) {
250
266
  };
251
267
  };
252
268
 
269
+ var typeFilterChanged = function typeFilterChanged(payload) {
270
+ return {
271
+ type: 'typeFilterChanged',
272
+ payload: payload
273
+ };
274
+ };
275
+
276
+ var visibleTypeCountersChanged = function visibleTypeCountersChanged(payload) {
277
+ return {
278
+ type: 'visibleTypeCountersChanged',
279
+ payload: payload
280
+ };
281
+ };
282
+
283
+ var emptyGroupsChanged = function emptyGroupsChanged(payload) {
284
+ return {
285
+ type: 'emptyGroupsChanged',
286
+ payload: payload
287
+ };
288
+ };
289
+
253
290
  var treeReducer = function treeReducer(state, action) {
254
291
  switch (action.type) {
255
292
  case 'assetCounted':
@@ -257,7 +294,7 @@ var treeReducer = function treeReducer(state, action) {
257
294
  assetCounts: action.payload
258
295
  });
259
296
 
260
- case 'allChecked':
297
+ case 'allCheckedChanged':
261
298
  return _objectSpread(_objectSpread({}, state), {}, {
262
299
  allChecked: action.payload
263
300
  });
@@ -278,6 +315,21 @@ var treeReducer = function treeReducer(state, action) {
278
315
  groupedItems: action.payload
279
316
  });
280
317
 
318
+ case 'typeFilterChanged':
319
+ return _objectSpread(_objectSpread({}, state), {}, {
320
+ typeFilter: action.payload
321
+ });
322
+
323
+ case 'visibleTypeCountersChanged':
324
+ return _objectSpread(_objectSpread({}, state), {}, {
325
+ visibleTypeCounters: action.payload
326
+ });
327
+
328
+ case 'emptyGroupsChanged':
329
+ return _objectSpread(_objectSpread({}, state), {}, {
330
+ emptyGroups: action.payload
331
+ });
332
+
281
333
  default:
282
334
  throw new Error();
283
335
  }
@@ -310,7 +362,10 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
310
362
  flatItems: [],
311
363
  allChecked: false,
312
364
  searchValue: '',
313
- assetCounts: {}
365
+ assetCounts: {},
366
+ typeFilter: [],
367
+ visibleTypeCounters: [],
368
+ emptyGroups: []
314
369
  }),
315
370
  _useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2),
316
371
  state = _useReducer2[0],
@@ -326,18 +381,22 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
326
381
  if (notEqual(previousItems.current, items) || notEqual(previousGroups.current, groups)) {
327
382
  previousItems.current = items;
328
383
  previousGroups.current = groups;
329
- dispatch(assetCounted(getAssetTypeCounts(items)));
330
- dispatch(allChecked(checkAllSelected({
384
+ var typeCounts = getAssetTypeCounts(items);
385
+ dispatch(assetCounted(typeCounts));
386
+ dispatch(allCheckedChanged(checkAllSelected({
331
387
  items: items,
332
388
  groups: groups,
333
389
  selectedItems: selectedItems,
334
390
  selectedGroups: selectedGroups
335
- }, state.flatItems)));
391
+ }, state.flatItems))); // Get the distinct asset types from the asset list that is passed into the component
392
+ // to know which asset type counter to render
393
+
394
+ dispatch(visibleTypeCountersChanged(Object.keys(typeCounts)));
336
395
  makeTree(groups, items);
337
396
  }
338
397
  }, [items, groups]);
339
- var debouncedMakeTree = debounceFn(function (g, i) {
340
- return makeTree(g, i);
398
+ var debouncedMakeTree = debounceFn(function (losGroupos, losItems) {
399
+ return makeTree(losGroupos, losItems);
341
400
  });
342
401
  (0, _react.useEffect)(function () {
343
402
  // To prevent executing the effect on first render, use a ref to check previous render values
@@ -349,6 +408,9 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
349
408
  (0, _react.useEffect)(function () {
350
409
  makeTree(groups, items);
351
410
  }, [showEmptyGroups]);
411
+ (0, _react.useEffect)(function () {
412
+ makeTree(groups, items);
413
+ }, [state.typeFilter]);
352
414
 
353
415
  var checkAllSelected = function checkAllSelected(updatedProps, flatItems) {
354
416
  var updatedItems = updatedProps.items,
@@ -397,7 +459,7 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
397
459
 
398
460
  var handeSelectAll = function handeSelectAll(shouldSelect, isIndeterminate) {
399
461
  var shouldSelectAll = shouldSelect && !isIndeterminate;
400
- dispatch(allChecked(shouldSelectAll));
462
+ dispatch(allCheckedChanged(shouldSelectAll));
401
463
  (0, _cond.default)([[hasNoSearchAndGroups, function () {
402
464
  return selectAllGroups(shouldSelectAll);
403
465
  }], [hasSearchAndGroups, function () {
@@ -435,7 +497,13 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
435
497
  var itemIdsOfGroup = (0, _map.default)(function (item) {
436
498
  return item.id;
437
499
  })(itemsInGroup.items);
438
- var updatedSelectedItems = (0, _without.default)(itemIdsOfGroup, selectedItems);
500
+ var updatedSelectedItems = (0, _without.default)(itemIdsOfGroup, selectedItems); // check if all groups are selected to change the state of TreeSelectAll
501
+
502
+ var groupAmount = groups.length;
503
+ var emptyGroupAmount = showEmptyGroups ? 0 : state.emptyGroups.length;
504
+ var totalGroupAmount = groupAmount - emptyGroupAmount;
505
+ var areAllGroupsChecked = totalGroupAmount === newSelectedGroups.length;
506
+ dispatch(allCheckedChanged(areAllGroupsChecked));
439
507
  respondSelection(updatedSelectedItems, newSelectedGroups);
440
508
  };
441
509
 
@@ -466,13 +534,20 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
466
534
  // Map items to groups with filtered items
467
535
  var mappedItemsToGroups = getMappedItemsToGroups(groupsToProcess, itemsToProcess);
468
536
  var newGroupedItems = (0, _flow.default)(sortGroupsByName, sortGroupItemsByName)(mappedItemsToGroups);
469
- var groupedItems = considerEmptyGroups ? newGroupedItems : filterEmptyGroups(newGroupedItems);
537
+ var groupedItems = considerEmptyGroups ? newGroupedItems : filterEmptyGroups(newGroupedItems); // Keep the empty groups in memory for later access in select all, without re-iterating on every
538
+ // group selection
539
+
540
+ var emptyGroups = (0, _filter.default)(function (group) {
541
+ return (0, _isEmpty.default)(group.items);
542
+ })(newGroupedItems);
543
+ dispatch(emptyGroupsChanged(emptyGroups));
470
544
  dispatch(assetCounted(getAssetTypeCounts(items)));
471
545
  dispatch(groupedItemsChanged(groupedItems));
472
546
  };
473
547
 
474
548
  var makeTree = function makeTree(updatedGroups, updatedItems) {
475
549
  var internalSearchValue = state.searchValue;
550
+ var internalTypeFilter = state.typeFilter;
476
551
  var groupsToProcess = updatedGroups;
477
552
  var itemsToProcess = updatedItems;
478
553
 
@@ -488,12 +563,14 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
488
563
  return notEmpty(internalSearchValue) && hasGroupList(groupsToProcess);
489
564
  };
490
565
 
566
+ var filteredItems = (0, _isEmpty.default)(internalTypeFilter) ? itemsToProcess : filterAssetByType(internalTypeFilter)(itemsToProcess);
567
+
491
568
  var setGroupedItems = function setGroupedItems() {
492
- return setGroupedItemList(groupsToProcess, itemsToProcess, showEmptyGroups);
569
+ return setGroupedItemList(groupsToProcess, filteredItems, showEmptyGroups);
493
570
  };
494
571
 
495
572
  var setFlatItems = function setFlatItems() {
496
- return setFlatItemList(itemsToProcess, internalSearchValue);
573
+ return setFlatItemList(filteredItems, internalSearchValue);
497
574
  };
498
575
 
499
576
  (0, _cond.default)([[hasNoInternalSearchAndGroups, setGroupedItems], [hasInternalSearchAndGroups, setFlatItems], [otherwise, setFlatItems]])();
@@ -556,16 +633,6 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
556
633
  }, hasLeafs ? /*#__PURE__*/_react.default.createElement(_TreeNothingFound.default, null) : getLeafs());
557
634
  };
558
635
 
559
- var renderSummary = function renderSummary() {
560
- if (hideSummary) {
561
- return null;
562
- }
563
-
564
- return summary || /*#__PURE__*/_react.default.createElement(_TreeSummary.default, {
565
- assetCounts: state.assetCounts
566
- });
567
- };
568
-
569
636
  var hasExternalGroups = notEmpty(groups);
570
637
 
571
638
  var hasInternalSearchValue = function hasInternalSearchValue() {
@@ -581,7 +648,8 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
581
648
  };
582
649
 
583
650
  var hasSelectedAllGroups = function hasSelectedAllGroups() {
584
- return (0, _isEqual.default)((0, _size.default)(selectedGroups), (0, _size.default)(groups));
651
+ var emptyGroupAmount = showEmptyGroups ? 0 : state.emptyGroups.length;
652
+ return (0, _isEqual.default)((0, _size.default)(selectedGroups), (0, _size.default)(groups) - emptyGroupAmount);
585
653
  };
586
654
 
587
655
  var hasPartialySelectedGroups = function hasPartialySelectedGroups() {
@@ -604,25 +672,81 @@ var Tree = /*#__PURE__*/_react.default.memo(function (props) {
604
672
  }], [otherwise, function () {
605
673
  return renderFlatList();
606
674
  }]])();
675
+
676
+ var handleFilterByType = function handleFilterByType(type) {
677
+ var currentTypeFilter = new Set(state.typeFilter);
678
+
679
+ if (currentTypeFilter.has(type)) {
680
+ currentTypeFilter.delete(type);
681
+ } else {
682
+ currentTypeFilter.add(type);
683
+ }
684
+
685
+ dispatch(typeFilterChanged((0, _toConsumableArray2.default)(currentTypeFilter)));
686
+ };
687
+
688
+ var isFilterActive = !(0, _isEmpty.default)(state.typeFilter);
689
+ var showTreeHead = !hideTreeHead;
690
+ var showSelectAll = !hideSelectAll;
691
+ var showSearch = !hideSearch;
692
+ var showSummary = !hideSummary;
693
+ var hasCustomSearch = !(0, _isNil.default)(search);
607
694
  return /*#__PURE__*/_react.default.createElement("div", {
608
695
  className: treeClassNames,
609
696
  ref: treeRef
610
697
  }, /*#__PURE__*/_react.default.createElement("div", {
611
698
  className: "TreeHeader"
612
- }, !hideSearch && !search && /*#__PURE__*/_react.default.createElement(_TreeSearch.default, {
699
+ }, showSearch && !hasCustomSearch && /*#__PURE__*/_react.default.createElement(_TreeSearch.default, {
613
700
  value: state.searchValue,
614
701
  onChange: handleSearchChange,
615
702
  placeholder: searchPlaceholder
616
- }), search && search, !hideTreeHead && /*#__PURE__*/_react.default.createElement("div", {
703
+ }), hasCustomSearch && search, showTreeHead && /*#__PURE__*/_react.default.createElement("div", {
617
704
  className: treeHeadClasses
618
- }, !hideSelectAll && /*#__PURE__*/_react.default.createElement(_TreeSelectAll.default, {
705
+ }, showSelectAll && /*#__PURE__*/_react.default.createElement(_TreeSelectAll.default, {
619
706
  isChecked: state.allChecked,
620
707
  isEnabled: hasMultiselect,
621
708
  isIndeterminate: isIndeterminate,
622
709
  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'
623
712
  }), /*#__PURE__*/_react.default.createElement("div", {
624
713
  className: "display-flex justify-content-between align-items-center width-100pct"
625
- }, renderSummary(), /*#__PURE__*/_react.default.createElement(_TreeOptions.default, {
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, {
626
750
  treeOptions: treeOptions
627
751
  })))), /*#__PURE__*/_react.default.createElement(_TreeRoot.default, {
628
752
  maxHeight: scrollHeight
@@ -25,7 +25,7 @@ var TreeSelectAll = function TreeSelectAll(props) {
25
25
  };
26
26
 
27
27
  return isEnabled ? /*#__PURE__*/_react.default.createElement("div", {
28
- className: 'TreeSelectAll display-flex align-items-center'
28
+ className: "TreeSelectAll display-flex align-items-center"
29
29
  }, /*#__PURE__*/_react.default.createElement(_Checkbox.default, {
30
30
  checked: isChecked,
31
31
  onClick: handleSelectAll,
@@ -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"];
22
+ var _excluded = ["className", "onClick", "isOpen"];
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,19 +70,30 @@ 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,
73
74
  remainingProps = (0, _objectWithoutProperties2.default)(props, _excluded);
74
- var classes = (0, _classnames.default)('TreeSidebar', className);
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
+
75
86
  return /*#__PURE__*/_react.default.createElement("div", {
76
87
  className: classes
77
- }, /*#__PURE__*/_react.default.createElement("ul", {
78
- className: 'TreeSidebarNavigation',
88
+ }, isOpen && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("ul", {
89
+ className: "TreeSidebarNavigation",
79
90
  onClick: onClick
80
91
  }, /*#__PURE__*/_react.default.createElement(TreeSidebarCategories, remainingProps)), /*#__PURE__*/_react.default.createElement("div", {
81
- className: 'TreeSidebarToggle',
92
+ className: "TreeSidebarToggle",
82
93
  onClick: onClick
83
94
  }, /*#__PURE__*/_react.default.createElement("span", {
84
- className: 'rioglyph rioglyph-chevron-left'
85
- })));
95
+ className: "rioglyph rioglyph-chevron-left"
96
+ }))));
86
97
  });
87
98
 
88
99
  TreeSidebar.displayName = 'TreeSidebar';
@@ -93,6 +104,7 @@ TreeSidebar.propTypes = {
93
104
  currentCategoryId: _propTypes.default.string,
94
105
  children: _propTypes.default.arrayOf(_propTypes.default.node),
95
106
  onClick: _propTypes.default.func.isRequired,
107
+ isOpen: _propTypes.default.bool,
96
108
  className: _propTypes.default.string
97
109
  };
98
110
  var _default = TreeSidebar;
@@ -23,21 +23,26 @@ var DefaultAssetCounts = function DefaultAssetCounts(_ref) {
23
23
  trailer = assetCounts.trailer,
24
24
  driver = assetCounts.driver;
25
25
  return /*#__PURE__*/_react.default.createElement("div", {
26
- className: 'display-flex'
26
+ className: "display-flex"
27
27
  }, /*#__PURE__*/_react.default.createElement(_TypeCounter.default, {
28
- icon: 'truck-baseline',
28
+ hideOnZero: true,
29
+ icon: "truck-baseline",
29
30
  value: truck
30
31
  }), /*#__PURE__*/_react.default.createElement(_TypeCounter.default, {
31
- icon: 'trailer-baseline',
32
+ hideOnZero: true,
33
+ icon: "trailer-baseline",
32
34
  value: trailer
33
35
  }), /*#__PURE__*/_react.default.createElement(_TypeCounter.default, {
34
- icon: 'bus-baseline',
36
+ hideOnZero: true,
37
+ icon: "bus-baseline",
35
38
  value: bus
36
39
  }), /*#__PURE__*/_react.default.createElement(_TypeCounter.default, {
37
- icon: 'van-baseline',
40
+ hideOnZero: true,
41
+ icon: "van-baseline",
38
42
  value: van
39
43
  }), /*#__PURE__*/_react.default.createElement(_TypeCounter.default, {
40
- icon: 'driver',
44
+ hideOnZero: true,
45
+ icon: "driver",
41
46
  value: driver
42
47
  }));
43
48
  };
@@ -7,24 +7,61 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+
10
14
  var _react = _interopRequireDefault(require("react"));
11
15
 
12
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
17
 
14
- var TypeCounter = function TypeCounter(_ref) {
15
- var icon = _ref.icon,
16
- value = _ref.value;
17
- return value ? /*#__PURE__*/_react.default.createElement("div", {
18
- className: 'user-select-none margin-right-15'
19
- }, /*#__PURE__*/_react.default.createElement("span", {
18
+ var _classnames = _interopRequireDefault(require("classnames"));
19
+
20
+ var _excluded = ["icon", "value", "isActive", "enableActivity", "onClick", "type", "hideOnZero"];
21
+
22
+ var TypeCounter = function TypeCounter(props) {
23
+ var icon = props.icon,
24
+ value = props.value,
25
+ isActive = props.isActive,
26
+ enableActivity = props.enableActivity,
27
+ onClick = props.onClick,
28
+ type = props.type,
29
+ hideOnZero = props.hideOnZero,
30
+ 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');
33
+ var counterClassNames = (0, _classnames.default)('TreeLabelCount', 'margin-left-3', 'label label-condensed', isActive ? 'label-primary' : 'label-muted label-filled');
34
+
35
+ var handleClick = function handleClick() {
36
+ if (isClickable) {
37
+ onClick(type);
38
+ }
39
+ };
40
+
41
+ if (hideOnZero && !value) {
42
+ return null;
43
+ }
44
+
45
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, remainingProps, {
46
+ className: wrapperClassName,
47
+ onClick: handleClick
48
+ }), /*#__PURE__*/_react.default.createElement("span", {
20
49
  className: "rioglyph rioglyph-".concat(icon, " text-size-16")
21
50
  }), /*#__PURE__*/_react.default.createElement("span", {
22
- className: 'TreeLabelCount margin-left-3 label label-muted label-filled label-condensed'
23
- }, value)) : null;
51
+ className: counterClassNames
52
+ }, value || 0));
24
53
  };
25
54
 
55
+ TypeCounter.defaultProps = {
56
+ hideOnZero: false
57
+ };
26
58
  TypeCounter.propTypes = {
59
+ type: _propTypes.default.string,
27
60
  icon: _propTypes.default.string,
61
+ isActive: _propTypes.default.bool,
62
+ enableActivity: _propTypes.default.bool,
63
+ hideOnZero: _propTypes.default.bool,
64
+ onClick: _propTypes.default.func,
28
65
  value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node, _propTypes.default.number])
29
66
  };
30
67
  var _default = TypeCounter;
@@ -71,7 +71,6 @@ var DatePicker = function DatePicker(props) {
71
71
  DatePicker.defaultProps = {
72
72
  closeOnSelect: true,
73
73
  dropup: false,
74
- defaultValue: (0, _moment.default)(),
75
74
  locale: 'en-GB',
76
75
  onChange: function onChange() {},
77
76
  clearableInput: false,
@@ -82,7 +81,7 @@ DatePicker.propTypes = {
82
81
  className: _propTypes.default.string,
83
82
  closeOnSelect: _propTypes.default.bool,
84
83
  clearableInput: _propTypes.default.bool,
85
- defaultValue: _propTypes.default.object,
84
+ initialValue: _propTypes.default.object,
86
85
  locale: _propTypes.default.string,
87
86
  onChange: _propTypes.default.func,
88
87
  dropup: _propTypes.default.bool,