@rio-cloud/rio-uikit 0.16.1-beta-4 → 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.
Files changed (36) hide show
  1. package/lib/components/applicationHeader/ApplicationHeader.js +6 -6
  2. package/lib/components/applicationHeader/NavItems.js +8 -8
  3. package/lib/components/applicationLayout/ApplicationLayout.js +5 -8
  4. package/lib/components/applicationLayout/ApplicationLayoutBody.js +1 -3
  5. package/lib/components/applicationLayout/SubNavigation.js +60 -0
  6. package/lib/components/assetTree/Tree.js +151 -35
  7. package/lib/components/assetTree/TreeSelectAll.js +1 -1
  8. package/lib/components/assetTree/TreeSummary.js +11 -6
  9. package/lib/components/assetTree/TypeCounter.js +47 -8
  10. package/lib/components/navigation/AppNavigationBar.js +64 -0
  11. package/lib/components/selects/BaseDropdownMenu.js +29 -23
  12. package/lib/components/selects/Select.js +11 -5
  13. package/lib/es/AppNavigationBar.d.ts +5 -0
  14. package/lib/es/AppNavigationBar.js +15 -0
  15. package/lib/es/DeviceUtils.d.ts +6 -0
  16. package/lib/es/SubNavigation.d.ts +5 -0
  17. package/lib/es/SubNavigation.js +15 -0
  18. package/lib/es/deviceUtils.js +36 -0
  19. package/lib/es/useResizeObserver.d.ts +4 -0
  20. package/lib/es/useResizeObserver.js +15 -0
  21. package/lib/hooks/useClickOutside.js +2 -1
  22. package/lib/hooks/useResizeObserver.js +54 -0
  23. package/lib/hooks/useWindowResize.js +8 -5
  24. package/lib/style/css/_exports/rio-website.less +76 -7
  25. package/lib/style/css/_exports/vw-uikit.less +1 -1
  26. package/lib/style/css/animations/_imports.less +1 -0
  27. package/lib/style/css/animations/pulsing.less +5 -0
  28. package/lib/style/css/components/ApplicationHeader.less +242 -245
  29. package/lib/style/css/components/ApplicationLayout.less +10 -6
  30. package/lib/style/css/components/AssetTree.less +0 -4
  31. package/lib/style/css/design/buttons.less +4 -1
  32. package/lib/style/css/design/rioglyph.less +1 -12
  33. package/lib/types.ts +23 -1
  34. package/lib/utils/deviceUtils.js +19 -2
  35. package/lib/version.json +1 -1
  36. package/package.json +4 -2
@@ -1,6 +1,7 @@
1
1
  @import (less) "collapse.less";
2
2
  @import (less) "fade.less";
3
3
  @import (less) "pinging.less";
4
+ @import (less) "pulsing.less";
4
5
  @import (less) "rotate.less";
5
6
  @import (less) "scale.less";
6
7
  @import (less) "slide.less";
@@ -0,0 +1,5 @@
1
+ @keyframes pulsing {
2
+ 50% {
3
+ opacity:.5
4
+ }
5
+ }
@@ -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;
@@ -59,16 +60,18 @@
59
60
  border-bottom: 1px solid @gray-light;
60
61
  display: flex;
61
62
  justify-content: space-between;
62
- padding: 0 @ApplicationLayoutBodyPadding*0.25 0 @ApplicationLayoutBodyPadding*0.5;
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 {
73
+ padding-left: @ApplicationLayoutBodyPadding*0.5;
74
+
72
75
  &:not(.nav-stacked) {
73
76
  box-shadow: none;
74
77
 
@@ -96,6 +99,7 @@
96
99
  }
97
100
  }
98
101
  }
102
+ // END TODO
99
103
 
100
104
  body:not(.modal-open) & {
101
105
  -webkit-overflow-scrolling: touch;
@@ -237,10 +237,6 @@
237
237
 
238
238
  .TreeHead {
239
239
  min-height: 50px;
240
-
241
- .TreeSelectAll {
242
- margin-right: 5px;
243
- }
244
240
  }
245
241
 
246
242
  &Options {
@@ -318,9 +318,12 @@
318
318
 
319
319
  &:before {
320
320
  .rioglyph;
321
+ animation-name: spinning;
322
+ animation-duration: 1s;
323
+ animation-iteration-count: infinite;
324
+ animation-timing-function: linear;
321
325
  content: "\e9c7";
322
326
  color: @brand-primary;
323
- animation: spinning 1s linear infinite;
324
327
  font-size: 20px;
325
328
  }
326
329
 
@@ -1,16 +1,5 @@
1
1
  @import (less) '../../fonts/rioglyph/rioglyph.less';
2
2
 
3
- @keyframes spinning {
4
- from { transform: rotate(0deg) }
5
- to { transform: rotate(359deg) }
6
- }
7
-
8
- @keyframes pulse {
9
- 50% {
10
- opacity:.5
11
- }
12
- }
13
-
14
3
  .rioglyph {
15
4
  &.spinning:before {
16
5
  display: inline-block;
@@ -19,6 +8,6 @@
19
8
 
20
9
  &.pulsing:before {
21
10
  display: inline-block;
22
- animation: pulse 2s cubic-bezier(.4,0,.6,1) infinite;
11
+ animation: pulsing 2s cubic-bezier(.4,0,.6,1) infinite;
23
12
  }
24
13
  }
package/lib/types.ts CHANGED
@@ -57,6 +57,14 @@ export interface AnimatedNumberProps {
57
57
  className?: string;
58
58
  }
59
59
 
60
+ export interface AppNavigationBarProps {
61
+ ref?: React.MutableRefObject<object>;
62
+ title?: string | React.ReactNode;
63
+ right?: React.ReactNode;
64
+ onNavigateBack?: (event: React.MouseEvent<HTMLButtonElement>) => void;
65
+ className?: string;
66
+ }
67
+
60
68
  export interface ApplicationHeaderProps {
61
69
  label?: React.ReactNode;
62
70
  homeRoute?: React.ReactNode;
@@ -73,6 +81,7 @@ export interface ApplicationHeaderProps {
73
81
 
74
82
  export interface ApplicationLayoutProps {
75
83
  className?: string;
84
+ layoutRef: React.MutableRefObject<object>;
76
85
  }
77
86
 
78
87
  export interface ApplicationLayoutHeaderProps {
@@ -1728,6 +1737,11 @@ export interface SteppedProgressBarProps {
1728
1737
  variant?: 'circle' | 'rectangle' | 'roadsign';
1729
1738
  }
1730
1739
 
1740
+ export interface SubNavigationProps {
1741
+ navItems?: ModulePropTypes[];
1742
+ className?: string;
1743
+ }
1744
+
1731
1745
  export interface SwitchProps {
1732
1746
  keyName?: string;
1733
1747
  onChange: (toggleState: boolean) => void;
@@ -2029,7 +2043,13 @@ export interface TreeSummaryProps {
2029
2043
  }
2030
2044
 
2031
2045
  export interface TypeCounterProps {
2046
+ type?: string;
2032
2047
  icon?: string;
2048
+ isActive?: boolean;
2049
+ hasFilter?: boolean;
2050
+ enableActivity?: boolean;
2051
+ hideOnZero?: boolean;
2052
+ onClick?: (type: string) => void;
2033
2053
  value?: string | React.ReactNode | number;
2034
2054
  }
2035
2055
 
@@ -2038,7 +2058,7 @@ export interface TypeCounterProps {
2038
2058
  export type UseAfterMount = (callback: () => void, deps?: any[]) => void;
2039
2059
 
2040
2060
  export type UseClickOutside<T extends HTMLElement = any> = (
2041
- callback: () => void,
2061
+ callback: (event: React.MouseEvent<HTMLButtonElement>) => void,
2042
2062
  events?: ['mousedown', 'touchstart']
2043
2063
  ) => React.MutableRefObject<T>;
2044
2064
 
@@ -2117,6 +2137,8 @@ export type UseOnScreen = (
2117
2137
 
2118
2138
  export type UseRenderCount = () => number;
2119
2139
 
2140
+ export type UseResizeObserver = () => [React.MutableRefObject<object>, ResizeObserverEntry];
2141
+
2120
2142
  export type UseStateWithValidation = (validationFn: Function, initialValue: any) => [any, Function, boolean];
2121
2143
 
2122
2144
  export type UseLocalStorage = (key: string, defaultValue: any) => [any, Function, Function];
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.toggleZoomOnMobile = exports.isMobile = exports.isDesktop = exports.inIframe = exports.hasTouch = 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
@@ -34,9 +34,26 @@ var hasTouch = function hasTouch() {
34
34
  }
35
35
 
36
36
  return false;
37
- };
37
+ }; // Screen sizes
38
+
38
39
 
39
40
  exports.hasTouch = hasTouch;
41
+ var MOBILE_SCREEN = 480;
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;
51
+
52
+ var isMobileScreen = function isMobileScreen() {
53
+ return window.matchMedia("(max-width: ".concat(MOBILE_SCREEN, "px)")).matches;
54
+ };
55
+
56
+ exports.isMobileScreen = isMobileScreen;
40
57
 
41
58
  var isMobile = function isMobile() {
42
59
  return document && document.documentElement.classList.contains('ua-mobile');