@rio-cloud/rio-uikit 0.15.1 → 0.16.0-beta-3

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 (215) hide show
  1. package/README.md +46 -3
  2. package/lib/components/actionBarItem/ActionBarItem.js +4 -4
  3. package/lib/components/actionBarItem/ActionBarItemPopoverContent.js +43 -0
  4. package/lib/components/actionBarItem/ActionBarOverlay.js +8 -3
  5. package/lib/components/applicationHeader/AppMenuDropdown.js +9 -13
  6. package/lib/components/applicationLayout/ApplicationLayout.js +2 -0
  7. package/lib/components/applicationLayout/ApplicationLayoutBody.js +5 -3
  8. package/lib/components/assetTree/AssetTree.js +1 -1
  9. package/lib/components/assetTree/Tree.js +2 -2
  10. package/lib/components/assetTree/TreeLeaf.js +9 -9
  11. package/lib/components/bottomSheet/BottomSheet.js +11 -7
  12. package/lib/components/browserWarning/BrowserIcons.js +76 -0
  13. package/lib/components/browserWarning/BrowserWarning.js +4 -4
  14. package/lib/components/browserWarning/BrowserWarningMessageDE.js +20 -22
  15. package/lib/components/browserWarning/BrowserWarningMessageEN.js +20 -22
  16. package/lib/components/carousel/Carousel.js +7 -426
  17. package/lib/components/checkbox/Checkbox.js +4 -4
  18. package/lib/components/datepicker/DatePicker.js +15 -6
  19. package/lib/components/dialog/ConfirmationDialog.js +8 -6
  20. package/lib/components/dialog/SaveDialog.js +3 -1
  21. package/lib/components/dropdown/ButtonDropdown.js +8 -11
  22. package/lib/components/filepicker/FilePicker.js +65 -96
  23. package/lib/components/listMenu/ListMenu.js +40 -23
  24. package/lib/components/map/components/features/old/MapSettings.js +5 -5
  25. package/lib/components/map/components/features/old/settings/MapClusterSettings.js +13 -13
  26. package/lib/components/map/components/features/old/settings/MapLayerSettings.js +15 -15
  27. package/lib/components/map/components/features/old/settings/MapTypeSettings.js +20 -20
  28. package/lib/components/map/components/features/settings/ZoomButtons.js +10 -10
  29. package/lib/components/map/components/features/settings/builtinSettings/MapClusterSettings.js +20 -18
  30. package/lib/components/map/components/features/settings/builtinSettings/MapLayerSettings.js +8 -8
  31. package/lib/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +42 -32
  32. package/lib/components/map/components/features/settings/buttons/MapBoundingBoxButton.js +8 -8
  33. package/lib/components/map/components/features/settings/buttons/MapCenterMarkerButton.js +8 -8
  34. package/lib/components/map/components/features/settings/buttons/MapLockMarkerButton.js +8 -8
  35. package/lib/components/map/components/features/settings/items/MapCustomerPoiSettingsItem.js +8 -8
  36. package/lib/components/map/components/features/settings/items/MapLayerIncidentsItem.js +8 -6
  37. package/lib/components/map/components/features/settings/items/MapLayerRoadRestrictionsItem.js +8 -6
  38. package/lib/components/map/components/features/settings/items/MapLayerTrafficItem.js +8 -6
  39. package/lib/components/map/components/features/settings/items/MapWorkshopPoiSettingsItem.js +8 -8
  40. package/lib/components/map/icons/MapIcon.js +500 -0
  41. package/lib/components/numberInput/NumberInput.js +6 -6
  42. package/lib/components/onboarding/OnboardingTip.js +9 -9
  43. package/lib/components/states/NotBookedState.js +2 -2
  44. package/lib/components/table/TableSettingsDialogFooter.js +1 -1
  45. package/lib/components/teaser/Teaser.js +1 -1
  46. package/lib/components/teaser/TeaserContainer.js +8 -8
  47. package/lib/components/tooltip/Tooltip.js +5 -5
  48. package/lib/es/DeviceUtils.d.ts +4 -2
  49. package/lib/es/deviceUtils.js +12 -0
  50. package/lib/es/useFullscreen.d.ts +4 -0
  51. package/lib/es/useFullscreen.js +15 -0
  52. package/lib/hooks/useClipboard.js +2 -2
  53. package/lib/hooks/useFullscreen.js +242 -0
  54. package/lib/style/css/_exports/man-uikit.less +7 -5
  55. package/lib/style/css/_exports/rio-buyButton.less +30 -41
  56. package/lib/style/css/_exports/rio-uikit-core.less +106 -127
  57. package/lib/style/css/_exports/rio-uikit-print-utilities.less +6 -11
  58. package/lib/style/css/_exports/rio-uikit-responsive-utilities.less +6 -11
  59. package/lib/style/css/_exports/rio-uikit.less +5 -4
  60. package/lib/style/css/_exports/rio-website.less +41 -15
  61. package/lib/style/css/_exports/vw-uikit.less +10 -8
  62. package/lib/style/css/animations/_imports.less +9 -0
  63. package/lib/style/css/animations/collapse.less +16 -0
  64. package/lib/style/css/animations/fade.less +28 -0
  65. package/lib/style/css/animations/pinging.less +7 -0
  66. package/lib/style/css/animations/rotate.less +52 -0
  67. package/lib/style/css/animations/scale.less +35 -0
  68. package/lib/style/css/animations/slide.less +39 -0
  69. package/lib/style/css/animations/spinning.less +4 -0
  70. package/lib/style/css/animations/transition.less +129 -0
  71. package/lib/style/css/animations/translate.less +28 -0
  72. package/lib/style/css/components/Activity.less +93 -0
  73. package/lib/style/css/components/ApplicationHeader.less +438 -0
  74. package/lib/style/css/components/ApplicationLayout.less +236 -0
  75. package/lib/style/css/components/AssetTree.less +443 -0
  76. package/lib/style/css/components/AutoSuggest.less +22 -0
  77. package/lib/style/css/components/BottomSheet.less +14 -0
  78. package/lib/style/css/components/Carousel.less +212 -0
  79. package/lib/style/css/components/Checkbox.less +224 -0
  80. package/lib/style/css/components/ClearableInput.less +115 -0
  81. package/lib/style/css/components/Counter.less +142 -0
  82. package/lib/style/css/components/DataTabs.less +100 -0
  83. package/lib/style/css/components/DatePicker.less +391 -0
  84. package/lib/style/css/components/Dialog.less +482 -0
  85. package/lib/style/css/components/Dropdown.less +186 -0
  86. package/lib/style/css/components/Expander.less +196 -0
  87. package/lib/style/css/components/FilePicker.less +8 -0
  88. package/lib/style/css/components/ListMenu.less +77 -0
  89. package/lib/style/css/components/MapHere.less +91 -0
  90. package/lib/style/css/components/MapMarker.less +347 -0
  91. package/lib/style/css/components/MapSettings.less +140 -0
  92. package/lib/style/css/components/NoData.less +8 -0
  93. package/lib/style/css/components/Notification.less +234 -0
  94. package/lib/style/css/components/RadioButton.less +173 -0
  95. package/lib/style/css/components/Resizer.less +43 -0
  96. package/lib/style/css/components/Select.less +286 -0
  97. package/lib/style/css/components/Sidebar.less +157 -0
  98. package/lib/style/css/components/Slider.less +278 -0
  99. package/lib/style/css/components/Spinner.less +49 -0
  100. package/lib/style/css/components/StatsWidget.less +111 -0
  101. package/lib/style/css/components/SteppedProgressBar.less +323 -0
  102. package/lib/style/css/components/SupportMarker.less +34 -0
  103. package/lib/style/css/components/Switch.less +145 -0
  104. package/lib/style/css/components/TableSettingsDialog.less +96 -0
  105. package/lib/style/css/components/TableSortArrows.less +54 -0
  106. package/lib/style/css/components/TableToolbar.less +121 -0
  107. package/lib/style/css/components/Tag.less +246 -0
  108. package/lib/style/css/components/TagManager.less +4 -0
  109. package/lib/style/css/components/Teaser.less +12 -0
  110. package/lib/style/css/components/Timeline.less +69 -0
  111. package/lib/style/css/components/Tooltip.less +261 -0
  112. package/lib/style/css/design/alerts.less +55 -0
  113. package/lib/style/css/design/aspect-ratio.less +23 -0
  114. package/lib/style/css/design/badges.less +120 -0
  115. package/lib/style/css/design/blockquote.less +49 -0
  116. package/lib/style/css/design/border.less +192 -0
  117. package/lib/style/css/design/breadcrumbs.less +20 -0
  118. package/lib/style/css/design/button-groups.less +194 -0
  119. package/lib/style/css/design/buttons.less +540 -0
  120. package/lib/style/css/design/callouts.less +27 -0
  121. package/lib/style/css/design/caret.less +28 -0
  122. package/lib/style/css/design/close.less +12 -0
  123. package/lib/style/css/design/code.less +45 -0
  124. package/lib/style/css/design/colors.less +202 -0
  125. package/lib/style/css/design/cols.less +56 -0
  126. package/lib/style/css/design/container.less +29 -0
  127. package/lib/style/css/design/cursors.less +19 -0
  128. package/lib/style/css/design/custom.less +20 -0
  129. package/lib/style/css/design/ellipsis.less +46 -0
  130. package/lib/style/css/design/flexgrid.less +7 -0
  131. package/lib/style/css/design/fonts.less +318 -0
  132. package/lib/style/css/design/form-input-groups.less +245 -0
  133. package/lib/style/css/design/form-inputs.less +655 -0
  134. package/lib/style/css/design/iframe.less +80 -0
  135. package/lib/style/css/design/images.less +47 -0
  136. package/lib/style/css/design/labels.less +66 -0
  137. package/lib/style/css/design/list-group.less +95 -0
  138. package/lib/style/css/design/navs.less +254 -0
  139. package/lib/style/css/design/normalize.less +436 -0
  140. package/lib/style/css/design/opacity.less +26 -0
  141. package/lib/style/css/design/overflow.less +1 -0
  142. package/lib/style/css/design/pagination.less +161 -0
  143. package/lib/style/css/design/panels.less +105 -0
  144. package/lib/style/css/design/popovers.less +117 -0
  145. package/lib/style/css/design/position.less +16 -0
  146. package/lib/style/css/design/progress-bars.less +131 -0
  147. package/lib/style/css/design/responsive/_imports.less +68 -0
  148. package/lib/style/css/design/responsive/backgrounds.less +32 -0
  149. package/lib/style/css/design/responsive/display.less +9 -0
  150. package/lib/style/css/design/responsive/flexgrid.less +75 -0
  151. package/lib/style/css/design/responsive/floating.less +4 -0
  152. package/lib/style/css/design/responsive/gap.less +41 -0
  153. package/lib/style/css/design/responsive/hyphens.less +14 -0
  154. package/lib/style/css/design/responsive/margin.less +127 -0
  155. package/lib/style/css/design/responsive/overflow.less +16 -0
  156. package/lib/style/css/design/responsive/padding.less +71 -0
  157. package/lib/style/css/design/responsive/position.less +102 -0
  158. package/lib/style/css/design/responsive/sizing.less +115 -0
  159. package/lib/style/css/design/responsive/text.less +71 -0
  160. package/lib/style/css/design/responsive/visibility.less +115 -0
  161. package/lib/style/css/design/responsive-embed.less +31 -0
  162. package/lib/style/css/design/responsive-video.less +22 -0
  163. package/lib/style/css/design/rioglyph.less +24 -0
  164. package/lib/style/css/design/rounded.less +44 -0
  165. package/lib/style/css/design/shadows.less +65 -0
  166. package/lib/style/css/design/tables.less +854 -0
  167. package/lib/style/css/design/text.less +201 -0
  168. package/lib/style/css/design/theme.less +200 -0
  169. package/lib/style/css/design/thumbnails.less +29 -0
  170. package/lib/style/css/design/transition.less +33 -0
  171. package/lib/style/css/design/type.less +159 -0
  172. package/lib/style/css/design/utilities.less +75 -0
  173. package/lib/style/css/design/visibilty.less +38 -0
  174. package/lib/style/css/design/wells.less +17 -0
  175. package/lib/style/css/design/z-index.less +21 -0
  176. package/lib/style/css/mapping/breakpoint-map.less +44 -0
  177. package/lib/style/css/mapping/color-map.less +200 -0
  178. package/lib/style/css/mapping/cols-map.less +15 -0
  179. package/lib/style/css/mapping/numbers-map.less +16 -0
  180. package/lib/style/css/mapping/positions-map.less +21 -0
  181. package/lib/style/css/mapping/sizes-map.less +129 -0
  182. package/lib/style/css/mapping/spacings-map.less +28 -0
  183. package/lib/style/css/mixins/_mixins.less +13 -0
  184. package/lib/style/css/mixins/alerts.less +13 -0
  185. package/lib/style/css/mixins/border-radius.less +16 -0
  186. package/lib/style/css/mixins/buttons.less +117 -0
  187. package/lib/style/css/mixins/clearfix.less +9 -0
  188. package/lib/style/css/mixins/cols.less +59 -0
  189. package/lib/style/css/mixins/forms.less +61 -0
  190. package/lib/style/css/mixins/panels.less +27 -0
  191. package/lib/style/css/mixins/placeholder.less +17 -0
  192. package/lib/style/css/mixins/reset.less +27 -0
  193. package/lib/style/css/mixins/sizings.less +21 -0
  194. package/lib/style/css/mixins/spinner.less +30 -0
  195. package/lib/style/css/mixins/table.less +26 -0
  196. package/lib/style/css/mixins/tabs.less +4 -0
  197. package/lib/style/css/mixins/text.less +5 -0
  198. package/lib/style/css/print/print.less +1 -4
  199. package/lib/style/css/rio-theme/alerts.less +23 -61
  200. package/lib/style/css/rio-theme/badges.less +16 -28
  201. package/lib/style/css/rio-theme/blockquote.less +14 -97
  202. package/lib/style/css/rio-theme/mixins/alerts.less +13 -1
  203. package/lib/style/css/shared/colors.json +1 -1
  204. package/lib/style/css/shared/colors.less +11 -8
  205. package/lib/style/css/shared/text.less +6 -5
  206. package/lib/style/css/utils/responsive/grid.less +15 -6
  207. package/lib/style/css/variables.less +179 -0
  208. package/lib/style/fonts/rioglyph/rioglyph.less +6 -11
  209. package/lib/style/fonts/rioglyph/rioglyph.woff +0 -0
  210. package/lib/types.ts +70 -59
  211. package/lib/utils/buttonEffect.js +3 -1
  212. package/lib/utils/deviceUtils.js +40 -3
  213. package/lib/utils/init.js +22 -7
  214. package/lib/version.json +1 -1
  215. package/package.json +47 -31
@@ -0,0 +1,194 @@
1
+ .btn-group {
2
+ display: inline-flex;
3
+
4
+ > .btn {
5
+ position: relative;
6
+
7
+ // Bring the "active" button to the front
8
+ &:hover,
9
+ &:focus,
10
+ &:active,
11
+ &.active {
12
+ z-index: 2;
13
+ }
14
+ }
15
+
16
+ .btn + .btn,
17
+ .btn + .btn-group,
18
+ .btn-group + .btn,
19
+ .btn-group + .btn-group {
20
+ margin-left: -1px;
21
+ }
22
+ }
23
+
24
+ .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
25
+ border-radius: 0;
26
+ }
27
+
28
+ // Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
29
+ .btn-group > .btn:first-child {
30
+ margin-left: 0;
31
+
32
+ &:not(:last-child):not(.dropdown-toggle) {
33
+ .border-right-radius(0);
34
+ }
35
+ }
36
+ // Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it
37
+ .btn-group > .btn:last-child:not(:first-child),
38
+ .btn-group > .dropdown-toggle:not(:first-child) {
39
+ .border-left-radius(0);
40
+ }
41
+
42
+ .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
43
+ border-radius: 0;
44
+ }
45
+
46
+ .btn-group > .btn-group:first-child:not(:last-child) {
47
+ > .btn:last-child,
48
+ > .dropdown-toggle {
49
+ .border-right-radius(0);
50
+ }
51
+ }
52
+
53
+ .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
54
+ .border-left-radius(0);
55
+ }
56
+
57
+ // On active and open, don't show outline
58
+ .btn-group .dropdown-toggle:active,
59
+ .btn-group.open .dropdown-toggle {
60
+ outline: 0;
61
+ }
62
+
63
+
64
+ // Sizing
65
+ //
66
+ // Remix the default button sizing classes into new ones for easier manipulation.
67
+
68
+ .btn-group-xs > .btn { &:extend(.btn-xs); }
69
+ .btn-group-sm > .btn { &:extend(.btn-sm); }
70
+ .btn-group-lg > .btn { &:extend(.btn-lg); }
71
+
72
+
73
+ // Split button dropdowns
74
+ // ----------------------
75
+
76
+ // Give the line between buttons some depth
77
+ .btn-group > .btn + .dropdown-toggle {
78
+ padding-left: 8px;
79
+ padding-right: 8px;
80
+ }
81
+
82
+ .btn-group > .btn-lg + .dropdown-toggle {
83
+ padding-left: 12px;
84
+ padding-right: 12px;
85
+ }
86
+
87
+ // The clickable button for toggling the menu
88
+ // Remove the gradient and set the same inset shadow as the :active state
89
+ .btn-group.open .dropdown-toggle {
90
+ box-shadow:inset 0 3px 5px rgba(0,0,0,.125);
91
+
92
+ // Show no shadow for `.btn-link` since it has no other button styles.
93
+ &.btn-link {
94
+ box-shadow:none;
95
+ }
96
+ }
97
+
98
+
99
+ // Reposition the caret
100
+ .btn .caret {
101
+ margin-left: 0;
102
+ }
103
+
104
+ // Carets in other button sizes
105
+ .btn-lg .caret {
106
+ border-width: 5px 5px 0;
107
+ border-bottom-width: 0;
108
+ }
109
+
110
+ // Upside down carets for .dropup
111
+ .dropup .btn-lg .caret {
112
+ border-width: 0 5px 5px;
113
+ }
114
+
115
+
116
+ // Vertical button groups
117
+ // ----------------------
118
+
119
+ .btn-group-vertical {
120
+ > .btn,
121
+ > .btn-group,
122
+ > .btn-group > .btn {
123
+ display: block;
124
+ width: 100%;
125
+ max-width: 100%;
126
+ }
127
+
128
+ // Clear floats so dropdown menus can be properly placed
129
+ > .btn-group {
130
+ &:extend(.clearfix all);
131
+ }
132
+
133
+ > .btn + .btn,
134
+ > .btn + .btn-group,
135
+ > .btn-group + .btn,
136
+ > .btn-group + .btn-group {
137
+ margin-top: -1px;
138
+ margin-left: 0;
139
+ }
140
+ }
141
+
142
+ .btn-group-vertical > .btn {
143
+ &:not(:first-child):not(:last-child) {
144
+ border-radius: 0;
145
+ }
146
+
147
+ &:first-child:not(:last-child) {
148
+ .border-top-radius(@border-radius-default);
149
+ .border-bottom-radius(0);
150
+ }
151
+
152
+ &:last-child:not(:first-child) {
153
+ .border-top-radius(0);
154
+ .border-bottom-radius(@border-radius-default);
155
+ }
156
+ }
157
+
158
+ .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
159
+ border-radius: 0;
160
+ }
161
+
162
+ .btn-group-vertical > .btn-group:first-child:not(:last-child) {
163
+ > .btn:last-child,
164
+ > .dropdown-toggle {
165
+ .border-bottom-radius(0);
166
+ }
167
+ }
168
+
169
+ .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
170
+ .border-top-radius(0);
171
+ }
172
+
173
+ .btn-group-justified {
174
+ border-collapse: inherit;
175
+ display: flex;
176
+ table-layout: inherit;
177
+ width: 100%;
178
+
179
+ > .btn,
180
+ > .btn-group {
181
+ display: flex;
182
+ flex: 1 1 auto;
183
+ float: none;
184
+ width: 0;
185
+ }
186
+
187
+ > .btn-group .btn {
188
+ width: 100%;
189
+ }
190
+
191
+ > .btn-group .dropdown-menu {
192
+ left: auto;
193
+ }
194
+ }
@@ -0,0 +1,540 @@
1
+ @btn-primary-color: @color-white;
2
+ @btn-primary-bg: @brand-primary;
3
+ @btn-primary-border: darken(@btn-primary-bg, 5%);
4
+ @btn-secondary-color: @color-white;
5
+ @btn-secondary-bg: @brand-secondary;
6
+ @btn-secondary-border: darken(@btn-secondary-bg, 5%);
7
+ @btn-default-color: @btn-primary-bg;
8
+ @btn-default-bg: @color-white;
9
+ @btn-default-border: @btn-primary-border;
10
+ @btn-success-color: @color-white;
11
+ @btn-success-bg: @brand-success;
12
+ @btn-success-border: darken(@btn-success-bg, 5%);
13
+ @btn-warning-color: @color-white;
14
+ @btn-warning-bg: @brand-warning;
15
+ @btn-warning-border: darken(@btn-warning-bg, 5%);
16
+ @btn-danger-color: @color-white;
17
+ @btn-danger-bg: @brand-danger;
18
+ @btn-danger-border: darken(@btn-danger-bg, 5%);
19
+ @btn-info-color: @color-white;
20
+ @btn-info-bg: @brand-info;
21
+ @btn-info-border: darken(@btn-info-bg, 5%);
22
+ @btn-link-disabled-color: @gray-light;
23
+ @btn-muted-color: @gray;
24
+ @btn-muted-active-color: @gray-dark;
25
+
26
+ // right order is important
27
+ .rio-btn(@btn-size-default; ~'');
28
+ .rio-btn(@btn-size-xs; -xs);
29
+ .rio-btn(@btn-size-sm; -sm);
30
+ .rio-btn(@btn-size-lg; -lg);
31
+
32
+ .btn {
33
+ align-items: center;
34
+ background-image: none;
35
+ border: 1px solid transparent;
36
+ cursor: pointer;
37
+ display: inline-flex;
38
+ font-weight: normal;
39
+ justify-content: center;
40
+ overflow: hidden;
41
+ position: relative;
42
+ text-align: center;
43
+ touch-action: manipulation;
44
+ user-select:none;
45
+ vertical-align: middle;
46
+ white-space: nowrap;
47
+
48
+ &:hover {
49
+ text-decoration: none;
50
+ }
51
+
52
+ // btn sizes
53
+ .button-size(@padding-default-vertical; @padding-default-horizontal; @font-size-default; @line-height-default; @border-radius-default);
54
+ &.btn-lg { .button-size(@padding-lg-vertical; @padding-lg-horizontal; @font-size-lg; @line-height-lg; @border-radius-lg); }
55
+ &.btn-sm { .button-size(@padding-sm-vertical; @padding-sm-horizontal; @font-size-sm; @line-height-sm; @border-radius-sm); }
56
+ &.btn-xs { .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-xs; @line-height-xs; @border-radius-xs); }
57
+
58
+ &.btn-block {
59
+ display: block;
60
+ width: 100%;
61
+ }
62
+
63
+ &.btn-icon-only {
64
+ padding: 0;
65
+ }
66
+
67
+ &.btn-toggle.active {
68
+ box-shadow: inset 0 1px 5px 1px rgb(90 101 102 / 50%);
69
+
70
+ &.btn-primary {
71
+ box-shadow: inset 0 1px 5px 1px rgb(90 101 102 / 70%);
72
+ }
73
+ }
74
+
75
+ &-toolbar {
76
+ display: flex;
77
+ flex-wrap: wrap;
78
+ gap: 10px;
79
+
80
+ // FALLBACK
81
+ .css-no-gap & {
82
+ > * {
83
+ margin: 5px;
84
+ }
85
+ }
86
+
87
+ .btn + .dropdown-toggle,
88
+ .btn-group > .btn:not(:first-child) {
89
+ margin-left: -1px !important;
90
+ }
91
+ }
92
+
93
+ &:active,
94
+ &.active,
95
+ &:focus,
96
+ &.focus {
97
+ outline: 0 !important;
98
+ outline-offset: 0 !important;
99
+ text-decoration: none;
100
+ }
101
+
102
+ &.disabled,
103
+ &[disabled] {
104
+ opacity: 0.4;
105
+ pointer-events: none;
106
+ }
107
+
108
+ .caret {
109
+ align-self: center;
110
+ position: relative;
111
+ border-color: @btn-primary-color;
112
+ }
113
+
114
+ &.btn-default {
115
+ .caret {
116
+ border-color: @brand-primary;
117
+
118
+ .open & {
119
+ border-color: @color-white;
120
+ }
121
+ }
122
+
123
+ &:hover,
124
+ &:active,
125
+ &.active,
126
+ &:focus,
127
+ &.focus,
128
+ &:active:focus,
129
+ &:active.focus,
130
+ &.active:focus,
131
+ &.active.focus {
132
+ .caret {
133
+ border-color: @color-white;
134
+ }
135
+ }
136
+ }
137
+
138
+ &.btn-muted,
139
+ &.btn-close {
140
+ background: none;
141
+
142
+ &:hover,
143
+ &:active,
144
+ &.active,
145
+ &:focus,
146
+ &.focus,
147
+ &:active:focus,
148
+ &:active.focus,
149
+ &.active:focus,
150
+ &.active.focus {
151
+ text-decoration: none;
152
+ box-shadow: none;
153
+ }
154
+ }
155
+
156
+ &.btn-muted {
157
+ background: none !important;
158
+ border-color: transparent !important;
159
+ color: @btn-muted-color !important;
160
+
161
+ > .rioglyph {
162
+ color: @btn-muted-color;
163
+ }
164
+
165
+ &:hover,
166
+ &:active,
167
+ &.active,
168
+ &:focus,
169
+ &.focus,
170
+ &:active:focus,
171
+ &:active.focus,
172
+ &.active:focus,
173
+ &.active.focus {
174
+ color: @btn-muted-active-color !important;
175
+
176
+ > .rioglyph {
177
+ color: @btn-muted-active-color;
178
+ }
179
+ }
180
+ }
181
+
182
+ &.btn-outline {
183
+ &:not(:hover):not(:active):not(.active):not(:focus):not(.focus) {
184
+ background: none;
185
+
186
+ // primary
187
+ // secondary
188
+ // info
189
+ // success
190
+ // warning
191
+ // danger
192
+ each(@colors-brand-and-status-map, {
193
+ &.btn-@{key} {
194
+ color: @value;
195
+
196
+ > .rioglyph {
197
+ color: @value;
198
+ }
199
+ }
200
+ })
201
+ }
202
+ }
203
+
204
+ &.btn-link,
205
+ &.btn-action {
206
+ background: none !important;
207
+ border: none !important;
208
+ color: @link-color;
209
+
210
+ &.btn-link-inline {
211
+ display: inline;
212
+ font-size: inherit;
213
+ line-height: inherit;
214
+ margin: 0;
215
+ padding: 0;
216
+ text-align: left;
217
+ vertical-align: baseline;
218
+ white-space: inherit;
219
+ height: inherit;
220
+ }
221
+
222
+ > .rioglyph {
223
+ color: @link-color;
224
+ }
225
+
226
+ &:active,
227
+ &.active,
228
+ &:focus,
229
+ &.focus {
230
+ background: none !important;
231
+ border-color: transparent !important;
232
+ }
233
+
234
+ // custom overwrite
235
+ &.btn-default:hover {
236
+ color: @brand-primary;
237
+
238
+ > .rioglyph {
239
+ color: @brand-primary;
240
+ }
241
+ }
242
+
243
+ // primary
244
+ // secondary
245
+ // info
246
+ // success
247
+ // warning
248
+ // danger
249
+ each(@colors-brand-and-status-map, {
250
+ &.btn-@{key} {
251
+ color: @value;
252
+
253
+ > .rioglyph {
254
+ color: @value;
255
+ }
256
+ }
257
+ })
258
+
259
+ &:hover,
260
+ &:active,
261
+ &.active,
262
+ &:focus,
263
+ &.focus,
264
+ &:active:focus,
265
+ &:active.focus,
266
+ &.active:focus,
267
+ &.active.focus {
268
+ background: none;
269
+ border-color: transparent;
270
+ text-decoration: none;
271
+ box-shadow: none;
272
+
273
+ > .rioglyph {
274
+ color: @color-highlight-dark;
275
+ }
276
+
277
+ // primary
278
+ // secondary
279
+ // info
280
+ // success
281
+ // warning
282
+ // danger
283
+ each(@colors-brand-and-status-map, {
284
+ &.btn-@{key} {
285
+ color: @value;
286
+
287
+ > .rioglyph {
288
+ color: @value;
289
+ }
290
+ }
291
+ })
292
+ }
293
+ }
294
+
295
+ &.btn-action {
296
+ height: auto;
297
+ flex-direction: column;
298
+
299
+ > .rioglyph {
300
+ font-size: 200% !important;
301
+ transform: scale(0.90);
302
+ }
303
+
304
+ &:hover {
305
+ > .rioglyph {
306
+ transform: scale(0.95);
307
+ }
308
+ }
309
+ }
310
+
311
+ &.btn-multiline {
312
+ white-space: pre-wrap;
313
+ height: auto !important;
314
+ }
315
+
316
+ &[class*='-loading'] {
317
+ pointer-events: none;
318
+
319
+ &:before {
320
+ .rioglyph;
321
+ content: "\e9c7";
322
+ color: @brand-primary;
323
+ animation: spinning 1s linear infinite;
324
+ font-size: 20px;
325
+ }
326
+
327
+ &.btn-xs:before {
328
+ font-size: 10px;
329
+ }
330
+
331
+ &:not(.btn-default),
332
+ &:focus,
333
+ &.focus {
334
+ &:before {
335
+ color: @color-white;
336
+ }
337
+ }
338
+
339
+ &.btn-muted {
340
+ &:before {
341
+ color: @btn-muted-color;
342
+ }
343
+
344
+ &:focus {
345
+ &:before {
346
+ color: @btn-muted-active-color;
347
+ }
348
+ }
349
+ }
350
+
351
+ &.btn-icon-only {
352
+ padding: 0 9px;
353
+
354
+ &.btn-xs {
355
+ padding: 0 4px;
356
+ }
357
+
358
+ &.btn-sm {
359
+ padding: 0 8px;
360
+ }
361
+
362
+ &.btn-lg {
363
+ padding: 0 14px;
364
+ }
365
+ }
366
+
367
+ &:not(.btn-icon-only) {
368
+ &:before {
369
+ margin-right: 5px;
370
+ }
371
+ }
372
+
373
+ &[class*='-overlay'] {
374
+ color: transparent;
375
+
376
+ &:before {
377
+ position: absolute;
378
+ top: calc(~'50% - 0.5em');
379
+ left: calc(~'50% - 0.5em');
380
+ }
381
+ }
382
+ }
383
+
384
+ &.btn-dynamic {
385
+ font-size: inherit !important;
386
+ line-height: inherit !important;
387
+ padding: 10px 20px !important;
388
+ height: auto !important;
389
+ text-transform: none !important;
390
+
391
+ &.btn-black {
392
+ .button-variant(
393
+ ~'!important';
394
+ @color-black;
395
+ lighten(@color-black, 5%);
396
+ @color-white;
397
+ lighten(@color-black, 10%)
398
+ );
399
+ }
400
+
401
+ &.btn-white {
402
+ .button-variant(
403
+ ~'!important';
404
+ @color-white;
405
+ darken(@color-white, 5%);
406
+ @color-black;
407
+ darken(@color-white, 3%)
408
+ );
409
+ }
410
+ }
411
+
412
+ // btn variants
413
+ &.btn-default {
414
+ .button-variant(
415
+ ~'';
416
+ @btn-default-bg;
417
+ @btn-default-border;
418
+ @btn-default-color;
419
+ @btn-default-color;
420
+ @btn-default-color;
421
+ @btn-default-color;
422
+ darken(@btn-default-color, 17%);
423
+ darken(@btn-default-border, 12%);
424
+ darken(@btn-default-border, 12%);
425
+ darken(@btn-default-border, 25%);
426
+ darken(@btn-default-border, 25%);
427
+ @btn-default-bg;
428
+ @btn-default-bg;
429
+ @btn-default-bg;
430
+ @btn-default-bg;
431
+ );
432
+ }
433
+
434
+ &.btn-primary {
435
+ .button-variant(
436
+ ~'';
437
+ @btn-primary-bg;
438
+ @btn-primary-border;
439
+ @btn-primary-color;
440
+ );
441
+ }
442
+
443
+ &.btn-secondary {
444
+ .button-variant(
445
+ ~'';
446
+ @btn-secondary-bg;
447
+ @btn-secondary-border;
448
+ @btn-secondary-color;
449
+ );
450
+ }
451
+
452
+ &.btn-success {
453
+ .button-variant(
454
+ ~'';
455
+ @btn-success-bg;
456
+ @btn-success-border;
457
+ @btn-success-color;
458
+ );
459
+ }
460
+
461
+ &.btn-info {
462
+ .button-variant(
463
+ ~'';
464
+ @btn-info-bg;
465
+ @btn-info-border;
466
+ @btn-info-color;
467
+ );
468
+ }
469
+
470
+ &.btn-warning {
471
+ .button-variant(
472
+ ~'';
473
+ @btn-warning-bg;
474
+ @btn-warning-border;
475
+ @btn-warning-color;
476
+ );
477
+ }
478
+
479
+ &.btn-danger {
480
+ .button-variant(
481
+ ~'';
482
+ @btn-danger-bg;
483
+ @btn-danger-border;
484
+ @btn-danger-color;
485
+ );
486
+ }
487
+ }
488
+
489
+ .btn-ripple {
490
+ animation: ripple 600ms linear;
491
+ background-color: fade(@color-white, 70%);
492
+ border-radius: 50%;
493
+ position: absolute;
494
+ transform: scale(0);
495
+ z-index: 1;
496
+ pointer-events: none;
497
+
498
+ // fix double ripple effect on mobile
499
+ &:not([style*="left"]):not([style*="top"]) {
500
+ display: none;
501
+ }
502
+ }
503
+
504
+ @keyframes ripple {
505
+ to {
506
+ transform: scale(4);
507
+ opacity: 0;
508
+ }
509
+ }
510
+
511
+ // Currently deactivated, because some services are already using the beta and we should introduce it globally and inform about it before.
512
+ // .btn-default,
513
+ // .btn-primary,
514
+ // .btn-secondary,
515
+ // .btn-success,
516
+ // .btn-info,
517
+ // .btn-warning,
518
+ // .btn-danger {
519
+ // &:not(.btn-link):not(.btn-action) {
520
+ // transition: transform 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
521
+
522
+ // &:hover {
523
+ // transform: translateY(-2px);
524
+ // box-shadow: 0px 2px 4px 0px rgb(143 143 143 / 60%);
525
+ // }
526
+ // }
527
+ // }
528
+
529
+ // .btn-no-hover-effect:hover {
530
+ // transform: none !important;
531
+ // box-shadow: none !important;
532
+ // }
533
+
534
+ // .input-group-btn,
535
+ // .btn-group-vertical {
536
+ // .btn:hover {
537
+ // transform: none !important;
538
+ // box-shadow: none !important;
539
+ // }
540
+ // }