@rio-cloud/rio-uikit 0.16.1 → 0.16.2-beta.10

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 (306) hide show
  1. package/.DS_Store +0 -0
  2. package/ColorScheme.d.ts +4 -0
  3. package/ColorScheme.js +2 -0
  4. package/Colors.js +1 -1
  5. package/TruckLayer.js +1 -1
  6. package/components/.DS_Store +0 -0
  7. package/components/applicationHeader/AppMenu.js +6 -3
  8. package/components/applicationHeader/AppMenuDropdown.js +6 -2
  9. package/components/applicationHeader/ApplicationHeader.js +10 -5
  10. package/components/applicationHeader/MobileAppMenu.js +8 -4
  11. package/components/assetTree/Tree.js +1 -1
  12. package/components/autosuggest/AutoSuggest.js +2 -2
  13. package/components/charts/chartHelper.js +1 -1
  14. package/components/clearableInput/ClearableInput.js +2 -1
  15. package/components/datepicker/DatePicker.js +8 -4
  16. package/components/filepicker/FilePicker.js +5 -4
  17. package/components/map/.DS_Store +0 -0
  18. package/components/map/assets/icon_map_settings_maptype_night_active.svg +12 -0
  19. package/components/map/assets/icon_map_settings_maptype_night_inactive.svg +12 -0
  20. package/components/map/components/.DS_Store +0 -0
  21. package/components/map/components/Map.js +167 -140
  22. package/components/map/components/constants.js +1 -0
  23. package/components/map/components/features/Route.js +6 -7
  24. package/components/map/components/features/basics/Polyline.js +10 -5
  25. package/components/map/components/features/layers/RoadRestrictionLayer.js +27 -0
  26. package/components/map/components/features/layers/TrafficLayer.js +19 -5
  27. package/components/map/components/features/layers/baselayers/DefaultRasterLayer.js +19 -0
  28. package/components/map/components/features/layers/baselayers/DefaultVectorLayer.js +15 -0
  29. package/components/map/components/features/layers/baselayers/FleetStyleLayer.js +13 -17
  30. package/components/map/components/features/layers/baselayers/NightLayer.js +17 -0
  31. package/components/map/components/features/layers/baselayers/SatelliteLayer.js +13 -17
  32. package/components/map/components/features/layers/baselayers/TerrainLayer.js +13 -17
  33. package/components/map/components/features/layers/baselayers/useBaseLayer.js +53 -0
  34. package/components/map/components/features/settings/builtinSettings/MapClusterSettings.js +1 -1
  35. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +9 -3
  36. package/components/map/components/mapUtils.js +44 -8
  37. package/components/map/icons/MapIcon.js +64 -0
  38. package/components/mapMarker/ClusterMapMarker.js +2 -2
  39. package/components/mapMarker/SingleMapMarker.js +8 -2
  40. package/components/numberControl/NumberControl.js +34 -11
  41. package/components/numberInput/NumberInput.js +52 -50
  42. package/components/sidebars/Sidebar.js +2 -2
  43. package/hooks/useDarkMode.js +30 -0
  44. package/hooks/useElementSize.js +1 -1
  45. package/hooks/useFullscreen.js +37 -41
  46. package/hooks/useHereMap.ts +23 -0
  47. package/hooks/useMutationObserver.js +38 -0
  48. package/hooks/useScripts.ts +52 -0
  49. package/hooks/useScrollPosition.js +72 -0
  50. package/index.js +6 -1
  51. package/lib/.DS_Store +0 -0
  52. package/lib/es/.DS_Store +0 -0
  53. package/lib/es/ColorScheme.d.ts +4 -0
  54. package/lib/es/ColorScheme.js +18 -0
  55. package/lib/es/Colors.js +1 -1
  56. package/lib/es/TruckLayer.js +2 -2
  57. package/lib/es/components/.DS_Store +0 -0
  58. package/lib/es/components/applicationHeader/AppMenu.js +6 -3
  59. package/lib/es/components/applicationHeader/AppMenuDropdown.js +6 -2
  60. package/lib/es/components/applicationHeader/ApplicationHeader.js +10 -5
  61. package/lib/es/components/applicationHeader/MobileAppMenu.js +8 -4
  62. package/lib/es/components/assetTree/Tree.js +1 -1
  63. package/lib/es/components/autosuggest/AutoSuggest.js +2 -2
  64. package/lib/es/components/charts/chartHelper.js +1 -1
  65. package/lib/es/components/clearableInput/ClearableInput.js +2 -1
  66. package/lib/es/components/datepicker/DatePicker.js +7 -3
  67. package/lib/es/components/filepicker/FilePicker.js +5 -4
  68. package/lib/es/components/map/assets/icon_map_settings_maptype_night_active.svg +12 -0
  69. package/lib/es/components/map/assets/icon_map_settings_maptype_night_inactive.svg +12 -0
  70. package/lib/es/components/map/components/Map.js +165 -135
  71. package/lib/es/components/map/components/constants.js +3 -1
  72. package/lib/es/components/map/components/features/Route.js +6 -7
  73. package/lib/es/components/map/components/features/basics/Polyline.js +10 -7
  74. package/lib/es/components/map/components/features/layers/RoadRestrictionLayer.js +35 -0
  75. package/lib/es/components/map/components/features/layers/TrafficLayer.js +18 -5
  76. package/lib/es/components/map/components/features/layers/baselayers/DefaultRasterLayer.js +25 -0
  77. package/lib/es/components/map/components/features/layers/baselayers/DefaultVectorLayer.js +22 -0
  78. package/lib/es/components/map/components/features/layers/baselayers/FleetStyleLayer.js +12 -17
  79. package/lib/es/components/map/components/features/layers/baselayers/NightLayer.js +23 -0
  80. package/lib/es/components/map/components/features/layers/baselayers/SatelliteLayer.js +12 -17
  81. package/lib/es/components/map/components/features/layers/baselayers/TerrainLayer.js +12 -17
  82. package/lib/es/components/map/components/features/layers/baselayers/useBaseLayer.js +61 -0
  83. package/lib/es/components/map/components/features/settings/builtinSettings/MapClusterSettings.js +1 -1
  84. package/lib/es/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +7 -1
  85. package/lib/es/components/map/components/mapUtils.js +44 -10
  86. package/lib/es/components/map/icons/MapIcon.js +67 -1
  87. package/lib/es/components/mapMarker/ClusterMapMarker.js +2 -2
  88. package/lib/es/components/mapMarker/SingleMapMarker.js +8 -2
  89. package/lib/es/components/numberControl/NumberControl.js +33 -10
  90. package/lib/es/components/numberInput/NumberInput.js +51 -50
  91. package/lib/es/components/sidebars/Sidebar.js +2 -2
  92. package/lib/es/hooks/useDarkMode.js +38 -0
  93. package/lib/es/hooks/useElementSize.js +1 -1
  94. package/lib/es/hooks/useFullscreen.js +37 -41
  95. package/lib/es/hooks/useHereMap.ts +23 -0
  96. package/lib/es/hooks/useMutationObserver.js +46 -0
  97. package/lib/es/hooks/useScripts.ts +52 -0
  98. package/lib/es/hooks/useScrollPosition.js +80 -0
  99. package/lib/es/index.js +40 -1
  100. package/lib/es/mapIndex.js +2 -2
  101. package/lib/es/styles/.DS_Store +0 -0
  102. package/lib/es/styles/components/Activity.less +9 -10
  103. package/lib/es/styles/components/ApplicationHeader.less +24 -29
  104. package/lib/es/styles/components/ApplicationLayout.less +7 -7
  105. package/lib/es/styles/components/AssetTree.less +30 -28
  106. package/lib/es/styles/components/AutoSuggest.less +2 -2
  107. package/lib/es/styles/components/BottomSheet.less +1 -2
  108. package/lib/es/styles/components/Carousel.less +13 -9
  109. package/lib/es/styles/components/Checkbox.less +15 -16
  110. package/lib/es/styles/components/ClearableInput.less +3 -3
  111. package/lib/es/styles/components/Counter.less +12 -12
  112. package/lib/es/styles/components/DataTabs.less +2 -2
  113. package/lib/es/styles/components/DatePicker.less +27 -27
  114. package/lib/es/styles/components/Dialog.less +15 -11
  115. package/lib/es/styles/components/Dropdown.less +11 -11
  116. package/lib/es/styles/components/Expander.less +7 -7
  117. package/lib/es/styles/components/ListMenu.less +8 -8
  118. package/lib/es/styles/components/MapHere.less +3 -2
  119. package/lib/es/styles/components/MapMarker.less +16 -17
  120. package/lib/es/styles/components/MapSettings.less +5 -5
  121. package/lib/es/styles/components/NoData.less +1 -1
  122. package/lib/es/styles/components/Notification.less +12 -12
  123. package/lib/es/styles/components/RadioButton.less +11 -12
  124. package/lib/es/styles/components/Resizer.less +1 -1
  125. package/lib/es/styles/components/Select.less +16 -26
  126. package/lib/es/styles/components/Sidebar.less +29 -21
  127. package/lib/es/styles/components/Slider.less +18 -18
  128. package/lib/es/styles/components/Spinner.less +6 -6
  129. package/lib/es/styles/components/StatsWidget.less +5 -5
  130. package/lib/es/styles/components/SteppedProgressBar.less +32 -29
  131. package/lib/es/styles/components/SupportMarker.less +1 -1
  132. package/lib/es/styles/components/Switch.less +8 -8
  133. package/lib/es/styles/components/TableSettingsDialog.less +7 -7
  134. package/lib/es/styles/components/TableToolbar.less +1 -1
  135. package/lib/es/styles/components/Tag.less +10 -10
  136. package/lib/es/styles/components/Timeline.less +3 -3
  137. package/lib/es/styles/components/Tooltip.less +10 -10
  138. package/lib/es/styles/design/badges.less +10 -10
  139. package/lib/es/styles/design/border.less +1 -1
  140. package/lib/es/styles/design/breadcrumbs.less +2 -2
  141. package/lib/es/styles/design/button-groups.less +25 -1
  142. package/lib/es/styles/design/buttons.less +53 -109
  143. package/lib/es/styles/design/callouts.less +3 -3
  144. package/lib/es/styles/design/code.less +4 -6
  145. package/lib/es/styles/design/colors.less +20 -20
  146. package/lib/es/styles/design/form-input-groups.less +4 -4
  147. package/lib/es/styles/design/form-inputs.less +33 -31
  148. package/lib/es/styles/design/images.less +2 -2
  149. package/lib/es/styles/design/labels.less +11 -11
  150. package/lib/es/styles/design/list-group.less +14 -12
  151. package/lib/es/styles/design/navs.less +27 -27
  152. package/lib/es/styles/design/normalize.less +0 -9
  153. package/lib/es/styles/design/pagination.less +10 -10
  154. package/lib/es/styles/design/panels.less +10 -10
  155. package/lib/es/styles/design/popovers.less +8 -8
  156. package/lib/es/styles/design/progress-bars.less +8 -8
  157. package/lib/es/styles/design/shadows.less +14 -7
  158. package/lib/es/styles/design/tables.less +68 -106
  159. package/lib/es/styles/design/text.less +5 -19
  160. package/lib/es/styles/design/theme.less +10 -10
  161. package/lib/es/styles/design/thumbnails.less +2 -2
  162. package/lib/es/styles/design/type.less +4 -4
  163. package/lib/es/styles/design/wells.less +1 -1
  164. package/lib/es/styles/mapping/color-map.less +76 -75
  165. package/lib/es/styles/mixins/_imports.less +14 -0
  166. package/lib/es/styles/mixins/buttons.less +24 -56
  167. package/lib/es/styles/mixins/forms.less +19 -55
  168. package/lib/es/styles/mixins/hsl.less +19 -0
  169. package/lib/es/styles/mixins/panels.less +2 -2
  170. package/lib/es/styles/print/print.less +7 -7
  171. package/lib/es/styles/rio-uikit-core.less +2 -2
  172. package/lib/es/styles/rio-uikit-print-utilities.less +2 -2
  173. package/lib/es/styles/rio-uikit-responsive-utilities.less +2 -2
  174. package/lib/es/styles/variables/_index.less +196 -0
  175. package/lib/es/styles/variables/colors.json +67 -0
  176. package/lib/es/styles/variables/concated_css_variables.less +66 -0
  177. package/lib/es/styles/variables/dark_colors.less +88 -0
  178. package/lib/es/styles/variables/dark_css_variables.less +28 -0
  179. package/lib/es/styles/variables/dark_css_variables_map.less +96 -0
  180. package/lib/es/styles/variables/light_colors.less +92 -0
  181. package/lib/es/styles/variables/light_css_variables.less +17 -0
  182. package/lib/es/styles/variables/light_css_variables_map.less +100 -0
  183. package/lib/es/styles/variables/screens.less +7 -0
  184. package/lib/es/styles/variables/text.less +23 -0
  185. package/lib/es/themes/.DS_Store +0 -0
  186. package/lib/es/themes/BuyButton/styles/rio-buyButton.less +13 -8
  187. package/lib/es/themes/MAN/styles/man-uikit.less +3 -0
  188. package/lib/es/themes/SCANIA/styles/scania-uikit.less +3 -0
  189. package/lib/es/themes/Volkswagen/styles/vw-uikit.less +21 -30
  190. package/lib/es/themes/Website/styles/rio-website.less +154 -124
  191. package/lib/es/themes/Xmas/styles/rio-xmas.less +59 -29
  192. package/lib/es/types.ts +27 -5
  193. package/lib/es/useDarkMode.d.ts +4 -0
  194. package/lib/es/useDarkMode.js +13 -0
  195. package/lib/es/useMutationObserver.d.ts +4 -0
  196. package/lib/es/useMutationObserver.js +13 -0
  197. package/lib/es/useScrollPosition.d.ts +4 -0
  198. package/lib/es/useScrollPosition.js +13 -0
  199. package/lib/es/utils/colorScheme.js +69 -0
  200. package/lib/es/utils/init.js +34 -34
  201. package/lib/es/version.json +1 -1
  202. package/mapIndex.js +1 -1
  203. package/package.json +34 -33
  204. package/styles/.DS_Store +0 -0
  205. package/styles/components/Activity.less +9 -10
  206. package/styles/components/ApplicationHeader.less +24 -29
  207. package/styles/components/ApplicationLayout.less +7 -7
  208. package/styles/components/AssetTree.less +30 -28
  209. package/styles/components/AutoSuggest.less +2 -2
  210. package/styles/components/BottomSheet.less +1 -2
  211. package/styles/components/Carousel.less +13 -9
  212. package/styles/components/Checkbox.less +15 -16
  213. package/styles/components/ClearableInput.less +3 -3
  214. package/styles/components/Counter.less +12 -12
  215. package/styles/components/DataTabs.less +2 -2
  216. package/styles/components/DatePicker.less +27 -27
  217. package/styles/components/Dialog.less +15 -11
  218. package/styles/components/Dropdown.less +11 -11
  219. package/styles/components/Expander.less +7 -7
  220. package/styles/components/ListMenu.less +8 -8
  221. package/styles/components/MapHere.less +3 -2
  222. package/styles/components/MapMarker.less +16 -17
  223. package/styles/components/MapSettings.less +5 -5
  224. package/styles/components/NoData.less +1 -1
  225. package/styles/components/Notification.less +12 -12
  226. package/styles/components/RadioButton.less +11 -12
  227. package/styles/components/Resizer.less +1 -1
  228. package/styles/components/Select.less +16 -26
  229. package/styles/components/Sidebar.less +29 -21
  230. package/styles/components/Slider.less +18 -18
  231. package/styles/components/Spinner.less +6 -6
  232. package/styles/components/StatsWidget.less +5 -5
  233. package/styles/components/SteppedProgressBar.less +32 -29
  234. package/styles/components/SupportMarker.less +1 -1
  235. package/styles/components/Switch.less +8 -8
  236. package/styles/components/TableSettingsDialog.less +7 -7
  237. package/styles/components/TableToolbar.less +1 -1
  238. package/styles/components/Tag.less +10 -10
  239. package/styles/components/Timeline.less +3 -3
  240. package/styles/components/Tooltip.less +10 -10
  241. package/styles/design/badges.less +10 -10
  242. package/styles/design/border.less +1 -1
  243. package/styles/design/breadcrumbs.less +2 -2
  244. package/styles/design/button-groups.less +25 -1
  245. package/styles/design/buttons.less +53 -109
  246. package/styles/design/callouts.less +3 -3
  247. package/styles/design/code.less +4 -6
  248. package/styles/design/colors.less +20 -20
  249. package/styles/design/form-input-groups.less +4 -4
  250. package/styles/design/form-inputs.less +33 -31
  251. package/styles/design/images.less +2 -2
  252. package/styles/design/labels.less +11 -11
  253. package/styles/design/list-group.less +14 -12
  254. package/styles/design/navs.less +27 -27
  255. package/styles/design/normalize.less +0 -9
  256. package/styles/design/pagination.less +10 -10
  257. package/styles/design/panels.less +10 -10
  258. package/styles/design/popovers.less +8 -8
  259. package/styles/design/progress-bars.less +8 -8
  260. package/styles/design/shadows.less +14 -7
  261. package/styles/design/tables.less +68 -106
  262. package/styles/design/text.less +5 -19
  263. package/styles/design/theme.less +10 -10
  264. package/styles/design/thumbnails.less +2 -2
  265. package/styles/design/type.less +4 -4
  266. package/styles/design/wells.less +1 -1
  267. package/styles/mapping/color-map.less +76 -75
  268. package/styles/mixins/_imports.less +14 -0
  269. package/styles/mixins/buttons.less +24 -56
  270. package/styles/mixins/forms.less +19 -55
  271. package/styles/mixins/hsl.less +19 -0
  272. package/styles/mixins/panels.less +2 -2
  273. package/styles/print/print.less +7 -7
  274. package/styles/rio-uikit-core.less +2 -2
  275. package/styles/rio-uikit-print-utilities.less +2 -2
  276. package/styles/rio-uikit-responsive-utilities.less +2 -2
  277. package/styles/variables/_index.less +196 -0
  278. package/styles/variables/colors.json +67 -0
  279. package/styles/variables/concated_css_variables.less +66 -0
  280. package/styles/variables/dark_colors.less +88 -0
  281. package/styles/variables/dark_css_variables.less +28 -0
  282. package/styles/variables/dark_css_variables_map.less +96 -0
  283. package/styles/variables/light_colors.less +92 -0
  284. package/styles/variables/light_css_variables.less +17 -0
  285. package/styles/variables/light_css_variables_map.less +100 -0
  286. package/styles/variables/screens.less +7 -0
  287. package/styles/variables/text.less +23 -0
  288. package/themes/.DS_Store +0 -0
  289. package/themes/BuyButton/styles/rio-buyButton.less +13 -8
  290. package/themes/MAN/styles/man-uikit.less +3 -0
  291. package/themes/SCANIA/styles/scania-uikit.less +3 -0
  292. package/themes/Volkswagen/.DS_Store +0 -0
  293. package/themes/Volkswagen/styles/vw-uikit.less +21 -30
  294. package/themes/Website/.DS_Store +0 -0
  295. package/themes/Website/styles/rio-website.less +154 -124
  296. package/themes/Xmas/styles/rio-xmas.less +59 -29
  297. package/types.ts +27 -5
  298. package/useDarkMode.d.ts +4 -0
  299. package/useDarkMode.js +2 -0
  300. package/useMutationObserver.d.ts +4 -0
  301. package/useMutationObserver.js +2 -0
  302. package/useScrollPosition.d.ts +4 -0
  303. package/useScrollPosition.js +2 -0
  304. package/utils/colorScheme.js +55 -0
  305. package/utils/init.js +34 -34
  306. package/version.json +1 -1
@@ -1,22 +1,28 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["unit", "inputAddon", "className", "bsSize", "disabled", "onValueChanged", "min", "max", "value", "step", "type"];
4
+ var _excluded = ["unit", "inputAddon", "className", "bsSize", "disabled", "onValueChanged", "min", "max", "value", "step", "placeholder"];
5
5
  import React, { useEffect, useState } from 'react';
6
6
  import PropTypes from 'prop-types';
7
7
  import classNames from 'classnames';
8
8
  import useAfterMount from '../../hooks/useAfterMount';
9
+
10
+ // Note: even if limits are set and input type is number, many browsers allow to enter invalid data
11
+ // like entering characters or values outside the boundaries, hence we have to check the input here
12
+ // See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number
13
+
9
14
  export var defaultProps = {
10
15
  min: 0,
11
16
  max: Number.MAX_VALUE,
12
- value: 0,
13
17
  step: 1
14
18
  };
15
- var getStepFromProps = function getStepFromProps(propStep, defaultStep, max, min) {
16
- return Number.isInteger(propStep) && propStep < Math.abs(max - min) ? propStep : defaultStep;
17
- };
18
- var getValueFromProps = function getValueFromProps(val, min, max, fallback) {
19
- return clampNumber(Number(val), min, max) || fallback;
19
+ var DEFAULT_VALUE = 0;
20
+ var getValueFromProps = function getValueFromProps(val, min, max, placeholder) {
21
+ // Show placeholders if given instead of 0
22
+ if (val === undefined && placeholder) {
23
+ return '';
24
+ }
25
+ return clampNumber(Number(val), min, max) || DEFAULT_VALUE;
20
26
  };
21
27
  var clampNumber = function clampNumber(value, min, max) {
22
28
  if (value < min) {
@@ -26,13 +32,10 @@ var clampNumber = function clampNumber(value, min, max) {
26
32
  }
27
33
  return value;
28
34
  };
29
- var isFormatted = function isFormatted(value) {
30
- return /^(-)?([1-9]\d*)?$/.test(value) || value === '0';
31
- };
32
- export var convertNonIntegerToDefault = function convertNonIntegerToDefault(value, min) {
35
+ export var convertNonIntegerToDefault = function convertNonIntegerToDefault(value) {
33
36
  var currentValue = value;
34
- if (!Number.isInteger(currentValue)) {
35
- currentValue = min;
37
+ if (!Number.isFinite(currentValue)) {
38
+ currentValue = DEFAULT_VALUE;
36
39
  }
37
40
  return currentValue;
38
41
  };
@@ -47,16 +50,13 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
47
50
  propMin = props.min,
48
51
  propMax = props.max,
49
52
  propValue = props.value,
50
- propStep = props.step,
51
- propType = props.type,
53
+ _props$step = props.step,
54
+ step = _props$step === void 0 ? 1 : _props$step,
55
+ placeholder = props.placeholder,
52
56
  remainingProps = _objectWithoutProperties(props, _excluded);
53
-
54
- // Breaking change - default is now "number"
55
- var type = propType === 'text' ? 'text' : 'number';
56
- var min = Number.isInteger(propMin) ? propMin : defaultProps.min;
57
- var max = Number.isInteger(propMax) ? propMax : defaultProps.max;
58
- var value = getValueFromProps(propValue, min, max, defaultProps.value);
59
- var step = getStepFromProps(propStep, defaultProps.step, max, min);
57
+ var min = Number.isFinite(propMin) ? propMin : defaultProps.min;
58
+ var max = Number.isFinite(propMax) ? propMax : defaultProps.max;
59
+ var value = getValueFromProps(propValue, min, max, placeholder);
60
60
 
61
61
  // Define local state and define initial values
62
62
  var _useState = useState({
@@ -71,33 +71,31 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
71
71
  // Update internal value whenever the value prop from outside changes
72
72
  useAfterMount(function () {
73
73
  setState({
74
- value: getValueFromProps(propValue, min, max, defaultProps.value),
74
+ value: getValueFromProps(propValue, min, max, placeholder),
75
75
  enteredValue: value,
76
76
  isValid: true
77
77
  });
78
78
  }, [propValue, clampNumber]);
79
79
  var applyValue = function applyValue(newValue) {
80
- if (isFormatted(newValue)) {
81
- if (newValue === '-' || newValue === '') {
82
- setState({
83
- value: newValue,
84
- enteredValue: newValue,
85
- isValid: true
86
- });
87
- } else {
88
- var enteredValue = Number(newValue);
89
- var isValid = enteredValue >= min && enteredValue <= max;
90
- var newValidValue = clampNumber(enteredValue, min, max);
91
- setState({
92
- value: newValidValue,
93
- enteredValue: enteredValue,
94
- isValid: isValid
95
- });
96
-
97
- // Only call back the caller for valid values
98
- isValid && onValueChanged(newValidValue);
99
- }
80
+ if (newValue === '-' || newValue === '') {
81
+ setState({
82
+ value: newValue,
83
+ enteredValue: newValue,
84
+ isValid: true
85
+ });
86
+ return;
100
87
  }
88
+ var enteredValue = Number(newValue);
89
+ var isValid = !isNaN(enteredValue) && enteredValue >= min && enteredValue <= max;
90
+ var newValidValue = clampNumber(enteredValue, min, max);
91
+ setState({
92
+ value: newValidValue,
93
+ enteredValue: enteredValue,
94
+ isValid: isValid
95
+ });
96
+
97
+ // Only call back the caller for valid values
98
+ isValid && onValueChanged(newValidValue);
101
99
  };
102
100
  var handleOnChange = function handleOnChange(event) {
103
101
  return applyValue(event.target.value);
@@ -105,7 +103,7 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
105
103
  var handleBlur = function handleBlur(event) {
106
104
  // console.log({enteredValue: state.enteredValue, event: Number(event.target.value)});
107
105
 
108
- // When the vales is removed, keep the input empty but trigger the onValueChanged callback
106
+ // When the value is removed, keep the input empty but trigger the onValueChanged callback
109
107
  // since the user has finished his input
110
108
  var lastEnteredValue = state.enteredValue;
111
109
  if (lastEnteredValue === '') {
@@ -113,15 +111,15 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
113
111
  return;
114
112
  }
115
113
 
116
- // Otherwise, validate the input and calmp it if the entered value exeeds the limitations
117
- var convertedEnteredValue = convertNonIntegerToDefault(Number(lastEnteredValue), min);
114
+ // Otherwise, validate the input and clamp it if the entered value exeeds the limitations
115
+ var convertedEnteredValue = convertNonIntegerToDefault(Number(lastEnteredValue));
118
116
  var validNumber = clampNumber(convertedEnteredValue, min, max);
119
117
  applyValue(validNumber);
120
118
  };
121
119
  var inputGroupClassNames = classNames('input-group', bsSize === 'sm' && 'input-group-sm', bsSize === 'lg' && 'input-group-lg');
122
120
  var inputClassNames = classNames('form-control', 'no-controls', bsSize === 'sm' && 'input-sm', bsSize === 'lg' && 'input-lg', className);
123
121
  var input = /*#__PURE__*/React.createElement("input", _extends({}, remainingProps, {
124
- type: type,
122
+ type: "number",
125
123
  step: step,
126
124
  min: min,
127
125
  max: max,
@@ -131,7 +129,11 @@ var NumberInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
131
129
  onBlur: handleBlur,
132
130
  onChange: handleOnChange,
133
131
  ref: ref,
134
- "aria-label": 'number-input'
132
+ "aria-label": "number-input",
133
+ placeholder: placeholder,
134
+ onWheel: function onWheel(event) {
135
+ return event.target.blur();
136
+ }
135
137
  }));
136
138
  return unit || inputAddon ? /*#__PURE__*/React.createElement("div", {
137
139
  className: inputGroupClassNames
@@ -148,12 +150,12 @@ NumberInput.propTypes = {
148
150
  max: PropTypes.number,
149
151
  value: PropTypes.number,
150
152
  step: PropTypes.number,
151
- type: PropTypes.string,
152
153
  disabled: PropTypes.bool,
153
154
  onValueChanged: PropTypes.func,
154
155
  bsSize: PropTypes.oneOf(['sm', 'lg', 'small', 'large']),
155
156
  className: PropTypes.string,
156
157
  unit: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
157
- inputAddon: PropTypes.string
158
+ inputAddon: PropTypes.string,
159
+ placeholder: PropTypes.string
158
160
  };
159
161
  export default NumberInput;
@@ -234,7 +234,7 @@ var Sidebar = /*#__PURE__*/function (_Component) {
234
234
  var headerClassNames = classNames('SidebarHeader', headerClassName && headerClassName, showHeaderBorder && 'show-border');
235
235
  var titleClassNames = classNames('SidebarTitle', titleClassName && titleClassName);
236
236
  var bodyClassNames = classNames('SidebarBody', bodyClassName && bodyClassName);
237
- var backdropClassNames = classNames('SidebarBackdrop', makeBackdropVisible && 'bg-black opacity-50', backdropClassName && backdropClassName);
237
+ var backdropClassNames = classNames('SidebarBackdrop', makeBackdropVisible && 'sidebar-backdrop-bg', backdropClassName && backdropClassName);
238
238
  var fullscreenIconClasses = classNames('rioglyph', isFullscreen ? 'rioglyph-resize-small' : 'rioglyph-resize-full');
239
239
  var resizeLimitClasses = classNames('SidebarResizeLimit', isResize && 'display-block');
240
240
  var isRight = position === Sidebar.RIGHT;
@@ -359,7 +359,7 @@ Sidebar.propTypes = {
359
359
  makeBackdropVisible: PropTypes.bool,
360
360
  onBackdropClick: PropTypes.func,
361
361
  backdropClassName: PropTypes.string,
362
- bodyRef: PropTypes.elementType,
362
+ bodyRef: PropTypes.object,
363
363
  headerButtons: PropTypes.node
364
364
  };
365
365
  export default Sidebar;
@@ -0,0 +1,30 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useCallback, useEffect, useState } from 'react';
3
+ import { THEME_DARK, THEME_DATA_ATTRIBUTE } from './../utils/colorScheme';
4
+ import useMutationObserver from './useMutationObserver';
5
+ var useDarkMode = function useDarkMode() {
6
+ var _useState = useState(false),
7
+ _useState2 = _slicedToArray(_useState, 2),
8
+ isDarkMode = _useState2[0],
9
+ setIsDarkMode = _useState2[1];
10
+ var handleMutation = useCallback(function (mutationList) {
11
+ mutationList.map(function (mutation) {
12
+ if (mutation.type === 'attributes' && mutation.attributeName === THEME_DATA_ATTRIBUTE) {
13
+ var _mutation$target$attr;
14
+ var scheme = (_mutation$target$attr = mutation.target.attributes[THEME_DATA_ATTRIBUTE]) === null || _mutation$target$attr === void 0 ? void 0 : _mutation$target$attr.value;
15
+ setIsDarkMode(scheme === THEME_DARK);
16
+ }
17
+
18
+ // if (mutation.type === 'classList') {
19
+ // console.log({ classList: mutation });
20
+ // }
21
+ });
22
+ }, []);
23
+ useMutationObserver(document.documentElement, handleMutation, {
24
+ attributes: true,
25
+ childList: false,
26
+ subtree: false
27
+ });
28
+ return isDarkMode;
29
+ };
30
+ export default useDarkMode;
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
3
3
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
5
  import { useEffect, useState } from 'react';
6
6
  export default function useElementSize(elementRef) {
7
7
  var _useState = useState(),
@@ -114,25 +114,23 @@ var useFullscreen = function useFullscreen() {
114
114
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(newTargetElement) {
115
115
  var isHtmlElement, target;
116
116
  return _regeneratorRuntime.wrap(function _callee$(_context) {
117
- while (1) {
118
- switch (_context.prev = _context.next) {
119
- case 0:
120
- // check whether the new target element is a real DOm node or just a function
121
- isHtmlElement = newTargetElement instanceof HTMLElement;
122
- _context.prev = 1;
123
- target = newTargetElement && isHtmlElement ? newTargetElement : defaultFullscreenElement;
124
- _context.next = 5;
125
- return target[getRequestFunctionName(target)](requestFullscreenOptions);
126
- case 5:
127
- return _context.abrupt("return", _context.sent);
128
- case 8:
129
- _context.prev = 8;
130
- _context.t0 = _context["catch"](1);
131
- console.log(_context.t0);
132
- case 11:
133
- case "end":
134
- return _context.stop();
135
- }
117
+ while (1) switch (_context.prev = _context.next) {
118
+ case 0:
119
+ // check whether the new target element is a real DOm node or just a function
120
+ isHtmlElement = newTargetElement instanceof HTMLElement;
121
+ _context.prev = 1;
122
+ target = newTargetElement && isHtmlElement ? newTargetElement : defaultFullscreenElement;
123
+ _context.next = 5;
124
+ return target[getRequestFunctionName(target)](requestFullscreenOptions);
125
+ case 5:
126
+ return _context.abrupt("return", _context.sent);
127
+ case 8:
128
+ _context.prev = 8;
129
+ _context.t0 = _context["catch"](1);
130
+ console.log(_context.t0);
131
+ case 11:
132
+ case "end":
133
+ return _context.stop();
136
134
  }
137
135
  }, _callee, null, [[1, 8]]);
138
136
  }));
@@ -142,29 +140,27 @@ var useFullscreen = function useFullscreen() {
142
140
  }(), []);
143
141
  var exitFullscreen = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
144
142
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
145
- while (1) {
146
- switch (_context2.prev = _context2.next) {
147
- case 0:
148
- _context2.prev = 0;
149
- if (!fullscreenElement) {
150
- _context2.next = 5;
151
- break;
152
- }
153
- _context2.next = 4;
154
- return document[getExitFunctionName()]();
155
- case 4:
156
- return _context2.abrupt("return", _context2.sent);
157
- case 5:
158
- _context2.next = 10;
143
+ while (1) switch (_context2.prev = _context2.next) {
144
+ case 0:
145
+ _context2.prev = 0;
146
+ if (!fullscreenElement) {
147
+ _context2.next = 5;
159
148
  break;
160
- case 7:
161
- _context2.prev = 7;
162
- _context2.t0 = _context2["catch"](0);
163
- console.warn(_context2.t0);
164
- case 10:
165
- case "end":
166
- return _context2.stop();
167
- }
149
+ }
150
+ _context2.next = 4;
151
+ return document[getExitFunctionName()]();
152
+ case 4:
153
+ return _context2.abrupt("return", _context2.sent);
154
+ case 5:
155
+ _context2.next = 10;
156
+ break;
157
+ case 7:
158
+ _context2.prev = 7;
159
+ _context2.t0 = _context2["catch"](0);
160
+ console.warn(_context2.t0);
161
+ case 10:
162
+ case "end":
163
+ return _context2.stop();
168
164
  }
169
165
  }, _callee2, null, [[0, 7]]);
170
166
  })), [fullscreenElement]);
@@ -0,0 +1,23 @@
1
+ import { useScripts } from './useScripts';
2
+
3
+ const DEFAULT_BASE_URL = 'https://js.api.here.com/v3/3.1.20.0/';
4
+
5
+ const HERE_EXTERNALS = [
6
+ 'mapsjs-core.js',
7
+ 'mapsjs-core-legacy.js',
8
+ 'mapsjs-service.js',
9
+ 'mapsjs-service-legacy.js',
10
+ 'mapsjs-mapevents.js',
11
+ 'mapsjs-ui.js',
12
+ 'mapsjs-clustering.js',
13
+ ];
14
+
15
+ const getExternals = (scriptList: string[], baseUrl: string): string[] =>
16
+ scriptList.map((script) => `${baseUrl}${script}`);
17
+
18
+ const sanitizeBaseUrl = (url: string) => (url.endsWith('/') ? url : `${url}/`);
19
+
20
+ export const useHereMap = (baseUrl?: string) => {
21
+ const hereScripts = getExternals(HERE_EXTERNALS, sanitizeBaseUrl(baseUrl || DEFAULT_BASE_URL));
22
+ return useScripts(hereScripts, false);
23
+ };
@@ -0,0 +1,38 @@
1
+ import _typeof from "@babel/runtime/helpers/typeof";
2
+ import { useRef, useLayoutEffect, useCallback } from 'react';
3
+ var isRef = function isRef(obj) {
4
+ return obj !== null && _typeof(obj) === 'object' && Object.prototype.hasOwnProperty.call(obj, 'current');
5
+ };
6
+ var unRef = function unRef(target) {
7
+ return isRef(target) ? target.current : target;
8
+ };
9
+
10
+ // Options for the observer (which mutations to observe)
11
+ var DEFAULT_OPTIONS = {
12
+ attributes: true,
13
+ childList: false,
14
+ subtree: false
15
+ };
16
+ var useMutationObserver = function useMutationObserver(target) {
17
+ var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
18
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_OPTIONS;
19
+ var observer = useRef(null);
20
+ var disconnect = useCallback(function () {
21
+ var _observer$current;
22
+ return (_observer$current = observer.current) === null || _observer$current === void 0 ? void 0 : _observer$current.disconnect();
23
+ }, []);
24
+ var observe = useCallback(function () {
25
+ var targetElement = unRef(target);
26
+ observer.current = new MutationObserver(callback);
27
+ if (targetElement) {
28
+ observer.current.observe(targetElement, options);
29
+ }
30
+ }, [target]);
31
+ useLayoutEffect(function () {
32
+ observe();
33
+ return function () {
34
+ return disconnect();
35
+ };
36
+ }, [disconnect, observe]);
37
+ };
38
+ export default useMutationObserver;
@@ -0,0 +1,52 @@
1
+ import { useEffect, useState } from 'react';
2
+
3
+ const hasScriptsInHead = (src: string) => document.head.querySelectorAll(`script[src*="${src}"]`).length > 0;
4
+
5
+ export const useScripts = (scripts: string[], loadAsync: boolean = false) => {
6
+ const [isLoading, setIsLoading] = useState<boolean>(false);
7
+ const [hasLoaded, setHasLoaded] = useState<boolean>(false);
8
+ const [error, setError] = useState<Error | undefined>();
9
+
10
+ const promises = new Set();
11
+
12
+ useEffect(() => {
13
+ const [firstScript] = scripts;
14
+
15
+ if (hasScriptsInHead(firstScript)) {
16
+ setHasLoaded(true);
17
+ return;
18
+ }
19
+
20
+ setIsLoading(true);
21
+
22
+ scripts.map((external) => {
23
+ promises.add(
24
+ new Promise<void>((resolve, reject) => {
25
+ const script = document.createElement('script');
26
+ script.async = loadAsync;
27
+ script.src = external;
28
+
29
+ script.onload = () => {
30
+ console.debug(`loaded ${external}`);
31
+ resolve();
32
+ };
33
+
34
+ script.onerror = () => {
35
+ console.debug(`failed to load ${external}`);
36
+ setError(new Error(`failed to load ${external}`));
37
+ reject();
38
+ };
39
+
40
+ document.head.appendChild(script);
41
+ })
42
+ );
43
+ });
44
+
45
+ Promise.all([...promises]).then(() => {
46
+ setIsLoading(false);
47
+ setHasLoaded(true);
48
+ });
49
+ }, []);
50
+
51
+ return { isLoading, error, hasLoaded };
52
+ };
@@ -0,0 +1,72 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useState, useEffect } from 'react';
3
+ var getModuleContent = function getModuleContent() {
4
+ return document.getElementsByClassName('module-content')[0];
5
+ };
6
+
7
+ // "target" can be "window", "document.body", a "ref" or undefiend
8
+ // where in later case the module-content is taken as default
9
+
10
+ var useScrollPosition = function useScrollPosition(target) {
11
+ var _useState = useState(),
12
+ _useState2 = _slicedToArray(_useState, 2),
13
+ targetElement = _useState2[0],
14
+ setTargetElement = _useState2[1];
15
+ var _useState3 = useState(0),
16
+ _useState4 = _slicedToArray(_useState3, 2),
17
+ scrollPosition = _useState4[0],
18
+ setScrollPosition = _useState4[1];
19
+ useEffect(function () {
20
+ var checkForModuleContent = null;
21
+
22
+ // In cae the target is undefined it might be that the module-content is not rendered yet,
23
+ // hence check periodically for the existence
24
+ if (!target) {
25
+ checkForModuleContent = setInterval(function () {
26
+ var element = getModuleContent();
27
+ if (element) {
28
+ setTargetElement(element);
29
+ }
30
+ }, 300);
31
+ } else if (target && checkForModuleContent) {
32
+ console.log('clearInterval');
33
+ clearInterval(checkForModuleContent);
34
+ }
35
+
36
+ // In case the target is a "ref" - set the targetElement when current is defined
37
+ else if (target !== null && target !== void 0 && target.current && !checkForModuleContent) {
38
+ setTargetElement(target.current);
39
+ }
40
+
41
+ // In case it's "wondow" or "document.body"
42
+ else {
43
+ setTargetElement(target);
44
+ }
45
+ return {
46
+ "if": function _if(checkForModuleContent) {
47
+ clearInterval(check);
48
+ }
49
+ };
50
+ }, [target]);
51
+ var handleScroll = function handleScroll() {
52
+ requestAnimationFrame(function () {
53
+ if (targetElement === window) {
54
+ setScrollPosition(targetElement.scrollY);
55
+ } else {
56
+ setScrollPosition(targetElement.scrollTop);
57
+ }
58
+ });
59
+ };
60
+ useEffect(function () {
61
+ if (targetElement) {
62
+ targetElement.addEventListener('scroll', handleScroll);
63
+ }
64
+ return function () {
65
+ if (targetElement) {
66
+ targetElement.removeEventListener('scroll', handleScroll);
67
+ }
68
+ };
69
+ }, [targetElement]);
70
+ return scrollPosition;
71
+ };
72
+ export default useScrollPosition;
package/index.js CHANGED
@@ -4,7 +4,7 @@ import versionJson from './version.json';
4
4
  var VERSION = versionJson.version;
5
5
  export { VERSION };
6
6
  export * from 'framer-motion';
7
- import _colors from './styles/shared/colors.json';
7
+ import _colors from './styles/variables/colors.json';
8
8
  export { _colors as colors };
9
9
  import { default as _Button } from './components/button/Button';
10
10
  export { _Button as Button };
@@ -153,8 +153,13 @@ export { default as useInterval } from './hooks/useInterval';
153
153
  export { default as useClickOutside } from './hooks/useClickOutside';
154
154
  export { default as useClipboard } from './hooks/useClipboard';
155
155
  export { default as useElementSize } from './hooks/useElementSize';
156
+ export { default as useScrollPosition } from './hooks/useScrollPosition';
157
+ export { default as useDarkMode } from './hooks/useDarkMode';
158
+ export { default as useMutationObserver } from './hooks/useMutationObserver';
156
159
  import { hasTouch as _hasTouch, inIframe as _inIframe, isDesktop as _isDesktop } from './utils/deviceUtils';
157
160
  export { _hasTouch as hasTouch, _inIframe as inIframe, _isDesktop as isDesktop };
161
+ import { getColorScheme as _getColorScheme, setColorScheme as _setColorScheme } from './utils/colorScheme';
162
+ export { _getColorScheme as getColorScheme, _setColorScheme as setColorScheme };
158
163
  import { getNewGroupedSelected as _getNewGroupedSelected } from './utils/GroupSelectionUtil';
159
164
  export { _getNewGroupedSelected as getNewGroupedSelected };
160
165
  import { default as _ExpanderPanel } from './components/expander/ExpanderPanel';
package/lib/.DS_Store ADDED
Binary file
Binary file
@@ -0,0 +1,4 @@
1
+ declare module '@rio-cloud/rio-uikit/lib/es/ColorScheme' {
2
+ export function getColorScheme(): string;
3
+ export function setColorScheme(scheme: 'dark' | 'light' | 'default' | 'system'): void;
4
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "getColorScheme", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _colorScheme.getColorScheme;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "setColorScheme", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _colorScheme.setColorScheme;
16
+ }
17
+ });
18
+ var _colorScheme = require("./utils/colorScheme");
package/lib/es/Colors.js CHANGED
@@ -10,4 +10,4 @@ Object.defineProperty(exports, "default", {
10
10
  return _colors2["default"];
11
11
  }
12
12
  });
13
- var _colors2 = _interopRequireDefault(require("./styles/shared/colors.json"));
13
+ var _colors2 = _interopRequireDefault(require("./styles/variables/colors.json"));
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  Object.defineProperty(exports, "default", {
8
8
  enumerable: true,
9
9
  get: function get() {
10
- return _TruckLayer2["default"];
10
+ return _RoadRestrictionLayer["default"];
11
11
  }
12
12
  });
13
- var _TruckLayer2 = _interopRequireDefault(require("./components/map/components/features/layers/TruckLayer"));
13
+ var _RoadRestrictionLayer = _interopRequireDefault(require("./components/map/components/features/layers/RoadRestrictionLayer"));
Binary file
@@ -12,7 +12,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _classnames = _interopRequireDefault(require("classnames"));
13
13
  var _AppMenuDropdown = _interopRequireDefault(require("./AppMenuDropdown"));
14
14
  var _modulePropTypes = _interopRequireDefault(require("./modulePropTypes"));
15
- var _excluded = ["label", "appMenuItems", "appNavigatorClassName", "appNavigator"];
15
+ var _excluded = ["label", "appMenuItems", "appNavigatorClassName", "appNavigator", "onToggleAppMenu"];
16
16
  var MenuContent = function MenuContent(props) {
17
17
  var appMenuItems = props.appMenuItems,
18
18
  appNavigator = props.appNavigator;
@@ -40,6 +40,7 @@ var AppMenu = function AppMenu(props) {
40
40
  appMenuItems = props.appMenuItems,
41
41
  appNavigatorClassName = props.appNavigatorClassName,
42
42
  appNavigator = props.appNavigator,
43
+ onToggleAppMenu = props.onToggleAppMenu,
43
44
  remainigProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
44
45
  var hasItems = !!(appMenuItems && appMenuItems.length || appNavigator);
45
46
  var classNames = (0, _classnames["default"])('ModuleNavigation AppMenu', 'user-select-none', {
@@ -49,7 +50,8 @@ var AppMenu = function AppMenu(props) {
49
50
  className: classNames
50
51
  }), /*#__PURE__*/_react["default"].createElement(_AppMenuDropdown["default"], {
51
52
  title: label,
52
- caret: hasItems
53
+ caret: hasItems,
54
+ onToggleAppMenu: onToggleAppMenu
53
55
  }, /*#__PURE__*/_react["default"].createElement(MenuContent, props)));
54
56
  };
55
57
  exports.AppMenu = AppMenu;
@@ -60,5 +62,6 @@ AppMenu.propTypes = {
60
62
  // Support a list of items for services without the app navigator like internal MDM services
61
63
  appMenuItems: _propTypes["default"].arrayOf(_modulePropTypes["default"]),
62
64
  appNavigator: _propTypes["default"].element,
63
- appNavigatorClassName: _propTypes["default"].string
65
+ appNavigatorClassName: _propTypes["default"].string,
66
+ onToggleAppMenu: _propTypes["default"].func
64
67
  };