@ons/design-system 70.0.7 → 70.0.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 (270) hide show
  1. package/README.md +11 -17
  2. package/components/access-code/_macro.spec.js +145 -145
  3. package/components/access-code/access-code.dom.js +5 -5
  4. package/components/access-code/access-code.js +16 -16
  5. package/components/access-code/access-code.scss +22 -22
  6. package/components/access-code/access-code.spec.js +17 -17
  7. package/components/accordion/_macro.spec.js +154 -154
  8. package/components/accordion/accordion.dom.js +10 -10
  9. package/components/accordion/accordion.js +50 -50
  10. package/components/accordion/accordion.spec.js +104 -104
  11. package/components/address-input/_macro.spec.js +420 -420
  12. package/components/address-input/autosuggest.address.dom.js +5 -5
  13. package/components/address-input/autosuggest.address.error.js +77 -77
  14. package/components/address-input/autosuggest.address.js +357 -357
  15. package/components/address-input/autosuggest.address.setter.js +95 -95
  16. package/components/address-input/autosuggest.address.spec.js +668 -651
  17. package/components/address-input/example-address-input-editable.njk +1 -1
  18. package/components/address-input/example-address-input.njk +1 -1
  19. package/components/address-output/_address-output.scss +3 -3
  20. package/components/address-output/_macro.spec.js +84 -84
  21. package/components/autosuggest/_autosuggest.scss +114 -114
  22. package/components/autosuggest/_macro.spec.js +255 -255
  23. package/components/autosuggest/autosuggest.dom.js +5 -5
  24. package/components/autosuggest/autosuggest.helpers.js +11 -11
  25. package/components/autosuggest/autosuggest.helpers.spec.js +73 -73
  26. package/components/autosuggest/autosuggest.js +20 -20
  27. package/components/autosuggest/autosuggest.spec.js +542 -536
  28. package/components/autosuggest/autosuggest.ui.js +478 -475
  29. package/components/autosuggest/fuse-config.js +17 -17
  30. package/components/back-to-top/_back-to-top.scss +27 -27
  31. package/components/back-to-top/_macro.spec.js +49 -49
  32. package/components/back-to-top/back-to-top.dom.js +5 -5
  33. package/components/back-to-top/back-to-top.js +52 -52
  34. package/components/back-to-top/back-to-top.spec.js +106 -106
  35. package/components/back-to-top/example-back-to-top.njk +6 -6
  36. package/components/breadcrumbs/_breadcrumbs.scss +63 -65
  37. package/components/breadcrumbs/_macro.spec.js +91 -91
  38. package/components/browser-banner/_browser-banner.scss +23 -23
  39. package/components/browser-banner/_macro.spec.js +92 -92
  40. package/components/button/_button.scss +482 -483
  41. package/components/button/_macro.spec.js +363 -363
  42. package/components/button/button.dom.js +15 -15
  43. package/components/button/button.js +53 -53
  44. package/components/button/button.spec.js +248 -240
  45. package/components/call-to-action/_call-to-action.scss +5 -5
  46. package/components/call-to-action/_macro.spec.js +28 -28
  47. package/components/card/_card.scss +23 -23
  48. package/components/card/_macro.spec.js +180 -180
  49. package/components/char-check-limit/_macro.spec.js +48 -48
  50. package/components/char-check-limit/character-check.js +58 -58
  51. package/components/char-check-limit/character-check.spec.js +173 -173
  52. package/components/char-check-limit/character-limit.js +40 -40
  53. package/components/checkboxes/_checkbox-macro.spec.js +355 -355
  54. package/components/checkboxes/_checkbox.scss +180 -180
  55. package/components/checkboxes/_checkboxes.scss +37 -27
  56. package/components/checkboxes/_macro.spec.js +261 -261
  57. package/components/checkboxes/checkbox-with-autoselect.js +32 -32
  58. package/components/checkboxes/checkbox-with-fieldset.js +21 -21
  59. package/components/checkboxes/checkboxes-with-reveal.js +10 -10
  60. package/components/checkboxes/checkboxes.dom.js +27 -27
  61. package/components/checkboxes/checkboxes.spec.js +183 -183
  62. package/components/content-pagination/_content-pagination.scss +41 -41
  63. package/components/content-pagination/_macro.spec.js +159 -159
  64. package/components/cookies-banner/_cookies-banner.scss +22 -22
  65. package/components/cookies-banner/_macro.spec.js +177 -177
  66. package/components/cookies-banner/cookies-banner.dom.js +7 -7
  67. package/components/cookies-banner/cookies-banner.js +76 -76
  68. package/components/cookies-banner/cookies-banner.spec.js +72 -68
  69. package/components/date-input/_macro.spec.js +338 -338
  70. package/components/description-list/_description-list.scss +23 -23
  71. package/components/description-list/_macro.spec.js +144 -144
  72. package/components/details/_details.scss +109 -109
  73. package/components/details/_macro.spec.js +132 -132
  74. package/components/details/details.dom.js +6 -6
  75. package/components/details/details.js +60 -60
  76. package/components/details/details.spec.js +106 -106
  77. package/components/document-list/_macro.spec.js +444 -444
  78. package/components/document-list/document-list.scss +145 -149
  79. package/components/download-resources/_download-resources.scss +109 -108
  80. package/components/download-resources/download-resources.js +907 -900
  81. package/components/download-resources/download-resources.spec.js +461 -461
  82. package/components/duration/_macro.spec.js +291 -291
  83. package/components/error/_macro.spec.js +72 -72
  84. package/components/external-link/_external-link.scss +19 -19
  85. package/components/external-link/_macro.spec.js +68 -68
  86. package/components/feedback/_feedback.scss +31 -31
  87. package/components/feedback/_macro.spec.js +72 -72
  88. package/components/field/_field-group.scss +10 -10
  89. package/components/field/_field.scss +16 -16
  90. package/components/field/_macro.spec.js +80 -80
  91. package/components/fieldset/_fieldset.scss +27 -27
  92. package/components/fieldset/_macro.spec.js +161 -161
  93. package/components/footer/_footer.scss +45 -45
  94. package/components/footer/_macro.spec.js +452 -452
  95. package/components/header/_header.scss +202 -202
  96. package/components/header/_macro.spec.js +833 -829
  97. package/components/helpers/_grid.scss +4 -4
  98. package/components/hero/_hero.scss +48 -48
  99. package/components/hero/_macro.spec.js +59 -59
  100. package/components/icon/_icon.scss +44 -44
  101. package/components/icon/_macro.spec.js +110 -110
  102. package/components/image/_image.scss +11 -11
  103. package/components/image/_macro.spec.js +81 -81
  104. package/components/input/_input-type.scss +86 -89
  105. package/components/input/_input.scss +123 -124
  106. package/components/input/_macro.spec.js +604 -604
  107. package/components/input/character-check.dom.js +5 -5
  108. package/components/input/input.dom.js +5 -5
  109. package/components/input/input.js +10 -10
  110. package/components/input/input.spec.js +18 -18
  111. package/components/label/_label.scss +24 -24
  112. package/components/label/_macro.spec.js +173 -170
  113. package/components/language-selector/_macro.spec.js +97 -97
  114. package/components/language-selector/language.scss +7 -7
  115. package/components/list/_list.scss +84 -84
  116. package/components/list/_macro.spec.js +583 -583
  117. package/components/message/_macro.njk +5 -5
  118. package/components/message/_macro.spec.js +74 -74
  119. package/components/message/_message.scss +39 -39
  120. package/components/message-list/_macro.spec.js +86 -86
  121. package/components/message-list/_message-list.scss +16 -16
  122. package/components/modal/_macro.spec.js +69 -69
  123. package/components/modal/_modal.scss +36 -36
  124. package/components/modal/modal.dom.js +6 -6
  125. package/components/modal/modal.js +89 -89
  126. package/components/modal/modal.spec.js +50 -50
  127. package/components/mutually-exclusive/_macro.spec.js +140 -140
  128. package/components/mutually-exclusive/mutually-exclusive.checkboxes.spec.js +188 -188
  129. package/components/mutually-exclusive/mutually-exclusive.date.spec.js +211 -211
  130. package/components/mutually-exclusive/mutually-exclusive.dom.js +5 -5
  131. package/components/mutually-exclusive/mutually-exclusive.duration.spec.js +210 -210
  132. package/components/mutually-exclusive/mutually-exclusive.email.spec.js +90 -90
  133. package/components/mutually-exclusive/mutually-exclusive.js +137 -137
  134. package/components/mutually-exclusive/mutually-exclusive.multiple-options.checkboxes.spec.js +197 -197
  135. package/components/mutually-exclusive/mutually-exclusive.number.spec.js +96 -96
  136. package/components/mutually-exclusive/mutually-exclusive.textarea.spec.js +102 -102
  137. package/components/navigation/_macro.spec.js +360 -354
  138. package/components/navigation/_navigation.scss +122 -123
  139. package/components/navigation/navigation.dom.js +35 -35
  140. package/components/navigation/navigation.js +49 -49
  141. package/components/navigation/navigation.spec.js +249 -249
  142. package/components/pagination/_macro.spec.js +342 -335
  143. package/components/pagination/_pagination.scss +58 -58
  144. package/components/panel/_macro.spec.js +372 -372
  145. package/components/panel/_panel.scss +200 -199
  146. package/components/password/_macro.spec.js +95 -95
  147. package/components/password/password.dom.js +5 -5
  148. package/components/password/password.js +10 -10
  149. package/components/password/password.spec.js +26 -26
  150. package/components/phase-banner/_macro.spec.js +86 -86
  151. package/components/phase-banner/_phase-banner.scss +16 -16
  152. package/components/question/_macro.spec.js +235 -235
  153. package/components/question/_question.scss +24 -24
  154. package/components/quote/_macro.spec.js +52 -52
  155. package/components/quote/_quote.scss +24 -24
  156. package/components/radios/_macro.spec.js +524 -524
  157. package/components/radios/_radio.scss +49 -48
  158. package/components/radios/_radios.scss +14 -20
  159. package/components/radios/check-radios.js +21 -21
  160. package/components/radios/clear-radios.js +45 -45
  161. package/components/radios/radio-with-fieldset.js +22 -22
  162. package/components/radios/radios.dom.js +32 -32
  163. package/components/radios/radios.spec.js +251 -251
  164. package/components/related-content/_macro.spec.js +109 -109
  165. package/components/related-content/_related-content.scss +12 -12
  166. package/components/related-content/_section-macro.spec.js +20 -20
  167. package/components/relationships/_macro.spec.js +94 -94
  168. package/components/relationships/_relationships.scss +9 -9
  169. package/components/relationships/relationships.dom.js +5 -5
  170. package/components/relationships/relationships.js +18 -18
  171. package/components/relationships/relationships.spec.js +71 -71
  172. package/components/reply/_macro.spec.js +47 -47
  173. package/components/reply/reply-input.js +15 -15
  174. package/components/reply/reply.dom.js +5 -5
  175. package/components/reply/reply.spec.js +57 -57
  176. package/components/section-navigation/_macro.spec.js +210 -210
  177. package/components/section-navigation/_section-navigation.scss +76 -76
  178. package/components/select/_macro.spec.js +166 -166
  179. package/components/share-page/_macro.spec.js +68 -68
  180. package/components/skip-to-content/_macro.spec.js +54 -54
  181. package/components/skip-to-content/_skip.scss +30 -30
  182. package/components/skip-to-content/skip-to-content.dom.js +6 -6
  183. package/components/skip-to-content/skip-to-content.js +7 -7
  184. package/components/skip-to-content/skip-to-content.spec.js +21 -21
  185. package/components/status/_macro.spec.js +53 -53
  186. package/components/status/_status.scss +32 -32
  187. package/components/summary/_macro.spec.js +551 -535
  188. package/components/summary/_summary.scss +191 -195
  189. package/components/table/_macro.spec.js +499 -499
  190. package/components/table/_table.scss +204 -201
  191. package/components/table/scrollable-table.dom.js +5 -5
  192. package/components/table/scrollable-table.js +60 -60
  193. package/components/table/sortable-table.dom.js +5 -5
  194. package/components/table/sortable-table.js +135 -135
  195. package/components/table/table.spec.js +144 -140
  196. package/components/table-of-contents/_macro.spec.js +125 -125
  197. package/components/table-of-contents/_toc.scss +9 -9
  198. package/components/table-of-contents/toc.dom.js +5 -5
  199. package/components/table-of-contents/toc.js +30 -30
  200. package/components/table-of-contents/toc.spec.js +88 -88
  201. package/components/tabs/_macro.spec.js +92 -92
  202. package/components/tabs/_tabs.scss +120 -115
  203. package/components/tabs/tabs.dom.js +5 -5
  204. package/components/tabs/tabs.js +266 -266
  205. package/components/tabs/tabs.spec.js +268 -268
  206. package/components/text-indent/_macro.spec.js +33 -33
  207. package/components/text-indent/_text-indent.scss +3 -3
  208. package/components/textarea/_macro.spec.js +238 -238
  209. package/components/textarea/textarea.dom.js +5 -5
  210. package/components/textarea/textarea.spec.js +78 -74
  211. package/components/timeline/_macro.spec.js +83 -83
  212. package/components/timeline/_timeline.scss +26 -26
  213. package/components/timeout-modal/_macro.spec.js +47 -47
  214. package/components/timeout-modal/timeout-modal.dom.js +9 -9
  215. package/components/timeout-modal/timeout-modal.js +66 -66
  216. package/components/timeout-modal/timeout-modal.spec.js +157 -157
  217. package/components/timeout-panel/_macro.spec.js +41 -41
  218. package/components/timeout-panel/timeout-panel.dom.js +8 -8
  219. package/components/timeout-panel/timeout-panel.spec.js +118 -118
  220. package/components/upload/_macro.spec.js +52 -52
  221. package/components/upload/_upload.scss +28 -28
  222. package/components/video/_macro.spec.js +42 -42
  223. package/components/video/_video.scss +16 -16
  224. package/components/video/video.dom.js +5 -5
  225. package/components/video/video.js +32 -32
  226. package/components/video/video.spec.js +103 -97
  227. package/css/main.css +1 -1
  228. package/favicons/manifest.json +25 -25
  229. package/js/abortable-fetch.js +23 -23
  230. package/js/analytics.js +53 -53
  231. package/js/cookies-functions.js +135 -135
  232. package/js/cookies-settings.dom.js +7 -7
  233. package/js/cookies-settings.js +77 -77
  234. package/js/cookies-settings.spec.js +106 -106
  235. package/js/domready.js +8 -8
  236. package/js/fetch.js +14 -14
  237. package/js/inpagelink.dom.js +5 -5
  238. package/js/inpagelink.js +19 -19
  239. package/js/polyfills.js +0 -1
  240. package/js/print-button.js +6 -6
  241. package/js/timeout.js +211 -211
  242. package/layout/_template.njk +5 -7
  243. package/package.json +131 -128
  244. package/scss/base/_forms.scss +10 -10
  245. package/scss/base/_global.scss +45 -44
  246. package/scss/base/_typography.scss +20 -20
  247. package/scss/helpers/_functions.scss +18 -15
  248. package/scss/helpers/_mixins.scss +59 -53
  249. package/scss/helpers/_mq.scss +62 -65
  250. package/scss/objects/_container.scss +20 -20
  251. package/scss/objects/_page.scss +33 -33
  252. package/scss/objects/_spacing.scss +10 -10
  253. package/scss/overrides/hcm.scss +237 -237
  254. package/scss/overrides/rtl.scss +95 -95
  255. package/scss/print.scss +47 -47
  256. package/scss/utilities/_border.scss +7 -7
  257. package/scss/utilities/_colors.scss +6 -6
  258. package/scss/utilities/_display.scss +8 -8
  259. package/scss/utilities/_float.scss +7 -7
  260. package/scss/utilities/_grid.scss +144 -144
  261. package/scss/utilities/_highlight.scss +4 -4
  262. package/scss/utilities/_margin.scss +17 -17
  263. package/scss/utilities/_pad.scss +15 -15
  264. package/scss/utilities/_typography.scss +35 -33
  265. package/scss/utilities/_utilities.scss +8 -8
  266. package/scss/utilities/_visibility.scss +25 -25
  267. package/scss/vars/_colors.scss +116 -116
  268. package/scss/vars/_forms.scss +22 -22
  269. package/scss/vars/_grid.scss +11 -9
  270. package/scss/vars/_typography.scss +54 -54
@@ -1,532 +1,531 @@
1
1
  $button-shadow-size: 3px;
2
2
 
3
3
  .ons-btn {
4
- background: transparent;
5
- border: 0;
6
- border-radius: 0;
7
- cursor: pointer;
8
- display: inline-block;
9
- font-family: inherit;
10
- font-size: 1rem;
11
- font-weight: $font-weight-bold;
12
- line-height: 1.35;
13
- margin: 0;
14
- padding: 0;
15
- position: relative;
16
- text-align: center;
17
- text-decoration: none;
18
- text-rendering: optimizelegibility;
19
- vertical-align: top;
20
- white-space: nowrap;
21
-
22
- // Transparent border for IE11 High Contrast mode support due to 'border: 0' on buttons
23
- &::after {
24
- border: ems($button-shadow-size) solid transparent;
25
- inset: 0 0 - (ems($button-shadow-size)) 0; // makes sure button shadow is selectable
26
- content: '';
27
- position: absolute;
28
- }
29
-
30
- &--search {
31
- .ons-icon {
32
- @include mq(s, l) {
33
- margin-right: 0.5rem;
34
- }
35
- }
36
- }
37
-
38
- &__inner {
39
- background: var(--ons-color-button);
40
- border-radius: $input-radius;
41
- box-shadow: 0 ems($button-shadow-size) 0 var(--ons-color-button-shadow);
42
- color: var(--ons-color-text-inverse);
43
- display: inherit;
44
- padding: 0.7em 1em 0.8em;
45
- // Required for Google Tag Manager
46
- pointer-events: none;
4
+ background: transparent;
5
+ border: 0;
6
+ border-radius: 0;
7
+ cursor: pointer;
8
+ display: inline-block;
9
+ font-family: inherit;
10
+ font-size: 1rem;
11
+ font-weight: $font-weight-bold;
12
+ line-height: 1.35;
13
+ margin: 0;
14
+ padding: 0;
47
15
  position: relative;
48
-
49
- .ons-icon {
50
- fill: var(--ons-color-text-inverse);
51
- height: 18px;
52
- margin-top: -$button-shadow-size;
53
- vertical-align: middle;
54
- width: 18px;
55
- }
56
- }
57
-
58
- // When preceded by another button (for example, in a group)
59
- & + & {
60
- margin-left: 0.5rem;
61
- }
62
-
63
- // When focused
64
- &:focus,
65
- &:focus-visible {
66
- // Add transparent outline because Windows High Contrast Mode doesn't show box-shadows
67
- outline: 3px solid transparent;
68
- outline-offset: 1px;
69
- }
70
-
71
- &:focus &__inner {
72
- background: var(--ons-color-focus);
73
- box-shadow: 0 ems($button-shadow-size) 0 var(--ons-color-text-link-focus);
74
- color: var(--ons-color-text-link-focus);
75
-
76
- .ons-icon {
77
- fill: var(--ons-color-text-link-focus);
78
- }
79
- }
80
-
81
- &:focus:hover:not(:active, .active) &__inner {
82
- background: var(--ons-color-focus-dark);
83
- }
84
-
85
- // When down
86
- &:active &,
87
- &:active:focus &,
88
- &.active &,
89
- &.active:focus & {
90
- &__inner {
91
- background: var(--ons-color-button);
92
- box-shadow: none;
93
- color: var(--ons-color-text-inverse);
94
-
95
- .ons-icon {
96
- fill: var(--ons-color-text-inverse);
97
- }
98
- }
99
- }
100
-
101
- &:active,
102
- &.active {
103
- top: ems($button-shadow-size);
104
- }
105
-
106
- // Small buttons
107
- &--small,
108
- &--mobile {
109
- font-size: 0.9rem;
110
- }
111
-
112
- &--small & {
113
- &__inner {
114
- padding: 0.5em 0.7em;
115
- .ons-icon {
116
- height: 16px;
117
- width: 16px;
118
- }
119
- }
120
- }
121
-
122
- &--small.ons-btn--ghost &,
123
- &--mobile & {
124
- &__inner {
125
- padding: 0.5em 0.7em;
126
- }
127
- }
128
-
129
- // Secondary button style
130
- &--secondary & {
131
- &__inner {
132
- box-shadow: 0 ems($button-shadow-size) 0 var(--ons-color-button-secondary-shadow);
133
- }
134
- }
135
-
136
- &--secondary &,
137
- &--secondary:active &,
138
- &--secondary.active &,
139
- &--secondary:active:focus &,
140
- &--secondary.active:focus & {
141
- &__inner {
142
- background: var(--ons-color-button-secondary);
143
- color: var(--ons-color-text);
144
- font-weight: $font-weight-regular;
145
-
146
- .ons-icon {
147
- fill: var(--ons-color-text);
148
- }
149
- }
150
- }
151
-
152
- // When hovered
153
- &:hover & {
154
- &__inner {
155
- background: var(--ons-color-button-hover);
156
- }
157
- }
158
-
159
- &--secondary:hover:not(&--disabled) & {
160
- &__inner {
161
- background: var(--ons-color-button-secondary-hover);
162
- }
163
- }
164
-
165
- &--disabled:not(&--secondary) &,
166
- &--loader.ons-is-loading:hover:not(&--secondary) & {
167
- &__inner {
168
- background: var(--ons-color-button);
169
- }
170
- }
171
-
172
- // Link button when hovered
173
- &--link:hover {
16
+ text-align: center;
174
17
  text-decoration: none;
175
- }
176
-
177
- &--link:focus:not(:active, .active, &--secondary) &,
178
- &--link:focus:hover:not(:active, .active, &--secondary) & {
179
- outline: inherit;
180
-
181
- &__inner {
182
- .ons-icon {
183
- fill: var(--ons-color-text);
184
- }
18
+ text-rendering: optimizelegibility;
19
+ vertical-align: top;
20
+ white-space: nowrap;
21
+
22
+ // Transparent border for IE11 High Contrast mode support due to 'border: 0' on buttons
23
+ &::after {
24
+ border: ems($button-shadow-size) solid transparent;
25
+ inset: 0 0 - (ems($button-shadow-size)) 0; // Makes sure button shadow is selectable
26
+ content: '';
27
+ position: absolute;
185
28
  }
186
- }
187
-
188
- &--text-link {
189
- vertical-align: baseline;
190
- }
191
29
 
192
- &--text-link & {
193
- &__inner {
194
- background: transparent;
195
- border: none;
196
- border-radius: 0;
197
- box-shadow: none;
198
- color: var(--ons-color-text-link);
199
- font-weight: $font-weight-regular;
200
- padding: 0;
201
- .ons-icon {
202
- fill: var(--ons-color-text-link);
203
- }
204
- }
205
- }
206
-
207
- &--text-link-inverse & {
208
- &__inner {
209
- color: var(--ons-color-text-inverse-link);
210
- .ons-icon {
211
- fill: var(--ons-color-text-inverse-link);
212
- }
30
+ &--search {
31
+ .ons-icon {
32
+ @include mq(s, l) {
33
+ margin-right: 0.5rem;
34
+ }
35
+ }
213
36
  }
214
- }
215
37
 
216
- &--text-link:hover &,
217
- &--text-link:active &,
218
- &--text-link.active & {
219
38
  &__inner {
220
- background: none;
221
- color: var(--ons-color-text-link-hover);
222
- .ons-icon {
223
- fill: var(--ons-color-text-link-hover);
224
- }
225
- }
226
- }
39
+ background: var(--ons-color-button);
40
+ border-radius: $input-radius;
41
+ box-shadow: 0 ems($button-shadow-size) 0 var(--ons-color-button-shadow);
42
+ color: var(--ons-color-text-inverse);
43
+ display: inherit;
44
+ padding: 0.7em 1em 0.8em;
45
+ // Required for Google Tag Manager
46
+ pointer-events: none;
47
+ position: relative;
227
48
 
228
- &--text-link-inverse:hover &,
229
- &--text-link-inverse:active &,
230
- &--text-link-inverse.active & {
231
- &__inner {
232
- color: var(--ons-color-text-inverse-link-hover);
233
- .ons-icon {
234
- fill: var(--ons-color-text-inverse-link-hover);
235
- }
49
+ .ons-icon {
50
+ fill: var(--ons-color-text-inverse);
51
+ height: 18px;
52
+ margin-top: -$button-shadow-size;
53
+ vertical-align: middle;
54
+ width: 18px;
55
+ }
236
56
  }
237
- }
238
57
 
239
- &--text-link:focus:hover & {
240
- &__inner {
241
- color: var(--ons-color-black);
58
+ // When preceded by another button (for example, in a group)
59
+ & + & {
60
+ margin-left: 0.5rem;
242
61
  }
243
- }
244
62
 
245
- &--text-link:focus &,
246
- &--text-link:active:focus &,
247
- &--text-link.active:focus & {
248
- &__inner {
249
- background-color: var(--ons-color-focus);
250
- box-shadow: 0 -2px var(--ons-color-focus),
251
- 0 4px var(--ons-color-text-link-focus) !important;
252
- color: var(--ons-color-text-link-focus);
253
- .ons-icon {
254
- fill: var(--ons-color-text-link-focus);
255
- }
63
+ // When focused
64
+ &:focus,
65
+ &:focus-visible {
66
+ // Add transparent outline because Windows High Contrast Mode doesn't show box-shadows
67
+ outline: 3px solid transparent;
68
+ outline-offset: 1px;
256
69
  }
257
- }
258
70
 
259
- &--ghost & {
260
- &__inner {
261
- background: transparent;
262
- border: 2px solid rgb(255 255 255 / 60%);
263
- box-shadow: none;
264
- color: var(--ons-color-text-inverse);
265
- .ons-icon {
266
- fill: var(--ons-color-text-inverse);
267
- }
268
- }
269
- }
71
+ &:focus &__inner {
72
+ background: var(--ons-color-focus);
73
+ box-shadow: 0 ems($button-shadow-size) 0 var(--ons-color-text-link-focus);
74
+ color: var(--ons-color-text-link-focus);
270
75
 
271
- &--ghost-dark & {
272
- &__inner {
273
- background: transparent;
274
- border: 2px solid var(--ons-color-black);
275
- box-shadow: none;
276
- color: var(--ons-color-text);
277
- .ons-icon {
278
- fill: var(--ons-color-text);
279
- }
280
- }
281
- }
282
-
283
- &--ghost,
284
- &--ghost-dark,
285
- &--dropdown,
286
- &--text-link,
287
- &--disabled,
288
- &--loader.ons-is-loading {
289
- &:active,
290
- .active {
291
- top: 0 !important; // Override 'pressed' state for flat and non-selectable buttons
292
- }
293
- }
294
-
295
- &--ghost:active:focus,
296
- &--ghost.active:focus
297
- &--ghost-dark:active:focus
298
- &--ghost-dark.active:focus {
299
- box-shadow: none;
300
- outline: 3px solid transparent;
301
- }
302
-
303
- &--ghost:focus:hover,
304
- &--ghost-dark:focus:hover,
305
- &--dropdown:focus:hover,
306
- &--text-link:focus:hover {
307
- outline: none;
308
- }
309
-
310
- &--ghost-dark:focus:hover &,
311
- &--dropdown:focus:hover & {
312
- &__inner {
313
- color: var(--ons-color-text);
314
- .ons-icon {
315
- fill: var(--ons-color-text);
316
- }
76
+ .ons-icon {
77
+ fill: var(--ons-color-text-link-focus);
78
+ }
317
79
  }
318
- }
319
80
 
320
- &--ghost:hover & {
321
- &__inner {
322
- background: rgb(0 0 0 / 10%);
323
- border-color: var(--ons-color-white);
81
+ &:focus:hover:not(:active, .active) &__inner {
82
+ background: var(--ons-color-focus-dark);
324
83
  }
325
- }
326
84
 
327
- &--ghost:active &,
328
- &--ghost:active:focus &,
329
- &--ghost.active & {
330
- &__inner {
331
- background: rgb(0 0 0 / 20%);
332
- border-color: rgb(255 255 255 / 60%);
333
- color: var(--ons-color-text-inverse);
334
- .ons-icon {
335
- fill: var(--ons-color-text-inverse);
336
- }
337
- }
338
- }
339
-
340
- &--ghost-dark:hover &,
341
- &--ghost-dark:active &,
342
- &--ghost-dark:active:focus &,
343
- &--ghost-dark.active & {
344
- &__inner {
345
- background: var(--ons-color-black);
346
- border-color: var(--ons-color-black);
347
- color: var(--ons-color-white);
348
- .ons-icon {
349
- fill: var(--ons-color-white);
350
- }
351
- }
352
- }
353
-
354
- &--ghost.active:focus &,
355
- &--ghost-dark.active:focus &,
356
- &--dropdown.active:focus & {
357
- &__inner {
358
- background: var(--ons-color-focus);
359
- color: var(--ons-color-text-link-focus);
360
- .ons-icon {
361
- fill: var(--ons-color-text-link-focus);
362
- }
363
- }
364
- }
85
+ // When down
86
+ &:active &,
87
+ &:active:focus &,
88
+ &.active &,
89
+ &.active:focus & {
90
+ &__inner {
91
+ background: var(--ons-color-button);
92
+ box-shadow: none;
93
+ color: var(--ons-color-text-inverse);
365
94
 
366
- &--ghost:focus &,
367
- &--ghost-dark:focus &,
368
- &--dropdown:focus & {
369
- &__inner {
370
- border-color: var(--ons-color-text-link-focus);
371
- box-shadow: 0 0 0 1px var(--ons-color-text-link-focus);
372
- .ons-icon {
373
- fill: var(--ons-color-black);
374
- }
95
+ .ons-icon {
96
+ fill: var(--ons-color-text-inverse);
97
+ }
98
+ }
375
99
  }
376
- }
377
100
 
378
- &--loader & {
379
- &__inner {
380
- position: relative;
381
- transition: color 0.3s ease-in-out;
382
- .ons-icon {
383
- height: 27px;
384
- left: 50%;
385
- margin: 0;
386
- opacity: 0;
387
- position: absolute;
388
- top: 50%;
389
- transform: translate(-50%, -50%);
390
- transition: opacity 0.3s ease-in-out;
391
- width: 27px;
392
- }
101
+ &:active,
102
+ &.active {
103
+ top: ems($button-shadow-size);
393
104
  }
394
- }
395
105
 
396
- &--loader.ons-btn--small {
397
- .ons-icon {
398
- height: 24px;
399
- width: 24px;
106
+ // Small buttons
107
+ &--small,
108
+ &--mobile {
109
+ font-size: 0.9rem;
400
110
  }
401
- }
402
111
 
403
- &--loader.ons-is-loading & {
404
- &__inner {
405
- color: transparent;
406
- .ons-icon {
407
- margin-left: 0 !important;
408
- opacity: 1;
409
- }
112
+ &--small & {
113
+ &__inner {
114
+ padding: 0.5em 0.7em;
115
+ .ons-icon {
116
+ height: 16px;
117
+ width: 16px;
118
+ }
119
+ }
410
120
  }
411
- }
412
121
 
413
- &--loader.ons-is-loading:active &,
414
- &--loader.ons-is-loading.active & {
415
- &__inner {
416
- box-shadow: 0 ems($button-shadow-size) 0 var(--ons-color-button-shadow);
122
+ &--small.ons-btn--ghost &,
123
+ &--mobile & {
124
+ &__inner {
125
+ padding: 0.5em 0.7em;
126
+ }
417
127
  }
418
- }
419
128
 
420
- &--loader.ons-is-loading:hover {
421
- cursor: not-allowed;
422
- }
129
+ // Secondary button style
130
+ &--secondary & {
131
+ &__inner {
132
+ box-shadow: 0 ems($button-shadow-size) 0 var(--ons-color-button-secondary-shadow);
133
+ }
134
+ }
135
+
136
+ &--secondary &,
137
+ &--secondary:active &,
138
+ &--secondary.active &,
139
+ &--secondary:active:focus &,
140
+ &--secondary.active:focus & {
141
+ &__inner {
142
+ background: var(--ons-color-button-secondary);
143
+ color: var(--ons-color-text);
144
+ font-weight: $font-weight-regular;
423
145
 
424
- &--dropdown:focus & {
425
- &__inner {
426
- box-shadow: inset 0 -4px 0 0 var(--ons-color-text-link-focus);
146
+ .ons-icon {
147
+ fill: var(--ons-color-text);
148
+ }
149
+ }
150
+ }
151
+
152
+ // When hovered
153
+ &:hover & {
154
+ &__inner {
155
+ background: var(--ons-color-button-hover);
156
+ }
157
+ }
158
+
159
+ &--secondary:hover:not(&--disabled) & {
160
+ &__inner {
161
+ background: var(--ons-color-button-secondary-hover);
162
+ }
163
+ }
164
+
165
+ &--disabled:not(&--secondary) &,
166
+ &--loader.ons-is-loading:hover:not(&--secondary) & {
167
+ &__inner {
168
+ background: var(--ons-color-button);
169
+ }
170
+ }
171
+
172
+ // Link button when hovered
173
+ &--link:hover {
174
+ text-decoration: none;
175
+ }
176
+
177
+ &--link:focus:not(:active, .active, &--secondary) &,
178
+ &--link:focus:hover:not(:active, .active, &--secondary) & {
179
+ outline: inherit;
180
+
181
+ &__inner {
182
+ .ons-icon {
183
+ fill: var(--ons-color-text);
184
+ }
185
+ }
186
+ }
187
+
188
+ &--text-link {
189
+ vertical-align: baseline;
190
+ }
191
+
192
+ &--text-link & {
193
+ &__inner {
194
+ background: transparent;
195
+ border: 0;
196
+ border-radius: 0;
197
+ box-shadow: none;
198
+ color: var(--ons-color-text-link);
199
+ font-weight: $font-weight-regular;
200
+ padding: 0;
201
+ .ons-icon {
202
+ fill: var(--ons-color-text-link);
203
+ }
204
+ }
205
+ }
206
+
207
+ &--text-link-inverse & {
208
+ &__inner {
209
+ color: var(--ons-color-text-inverse-link);
210
+ .ons-icon {
211
+ fill: var(--ons-color-text-inverse-link);
212
+ }
213
+ }
214
+ }
215
+
216
+ &--text-link:hover &,
217
+ &--text-link:active &,
218
+ &--text-link.active & {
219
+ &__inner {
220
+ background: none;
221
+ color: var(--ons-color-text-link-hover);
222
+ .ons-icon {
223
+ fill: var(--ons-color-text-link-hover);
224
+ }
225
+ }
226
+ }
227
+
228
+ &--text-link-inverse:hover &,
229
+ &--text-link-inverse:active &,
230
+ &--text-link-inverse.active & {
231
+ &__inner {
232
+ color: var(--ons-color-text-inverse-link-hover);
233
+ .ons-icon {
234
+ fill: var(--ons-color-text-inverse-link-hover);
235
+ }
236
+ }
237
+ }
238
+
239
+ &--text-link:focus:hover & {
240
+ &__inner {
241
+ color: var(--ons-color-black);
242
+ }
243
+ }
244
+
245
+ &--text-link:focus &,
246
+ &--text-link:active:focus &,
247
+ &--text-link.active:focus & {
248
+ &__inner {
249
+ background-color: var(--ons-color-focus);
250
+ box-shadow:
251
+ 0 -2px var(--ons-color-focus),
252
+ 0 4px var(--ons-color-text-link-focus) !important;
253
+ color: var(--ons-color-text-link-focus);
254
+ .ons-icon {
255
+ fill: var(--ons-color-text-link-focus);
256
+ }
257
+ }
258
+ }
259
+
260
+ &--ghost & {
261
+ &__inner {
262
+ background: transparent;
263
+ border: 2px solid rgb(255 255 255 / 60%);
264
+ box-shadow: none;
265
+ color: var(--ons-color-text-inverse);
266
+ .ons-icon {
267
+ fill: var(--ons-color-text-inverse);
268
+ }
269
+ }
270
+ }
271
+
272
+ &--ghost-dark & {
273
+ &__inner {
274
+ background: transparent;
275
+ border: 2px solid var(--ons-color-black);
276
+ box-shadow: none;
277
+ color: var(--ons-color-text);
278
+ .ons-icon {
279
+ fill: var(--ons-color-text);
280
+ }
281
+ }
282
+ }
283
+
284
+ &--ghost,
285
+ &--ghost-dark,
286
+ &--dropdown,
287
+ &--text-link,
288
+ &--disabled,
289
+ &--loader.ons-is-loading {
290
+ &:active,
291
+ .active {
292
+ top: 0 !important; // Override 'pressed' state for flat and non-selectable buttons
293
+ }
294
+ }
295
+
296
+ &--ghost:active:focus,
297
+ &--ghost.active:focus &--ghost-dark:active:focus &--ghost-dark.active:focus {
298
+ box-shadow: none;
299
+ outline: 3px solid transparent;
300
+ }
301
+
302
+ &--ghost:focus:hover,
303
+ &--ghost-dark:focus:hover,
304
+ &--dropdown:focus:hover,
305
+ &--text-link:focus:hover {
306
+ outline: none;
307
+ }
308
+
309
+ &--ghost-dark:focus:hover &,
310
+ &--dropdown:focus:hover & {
311
+ &__inner {
312
+ color: var(--ons-color-text);
313
+ .ons-icon {
314
+ fill: var(--ons-color-text);
315
+ }
316
+ }
317
+ }
318
+
319
+ &--ghost:hover & {
320
+ &__inner {
321
+ background: rgb(0 0 0 / 10%);
322
+ border-color: var(--ons-color-white);
323
+ }
324
+ }
325
+
326
+ &--ghost:active &,
327
+ &--ghost:active:focus &,
328
+ &--ghost.active & {
329
+ &__inner {
330
+ background: rgb(0 0 0 / 20%);
331
+ border-color: rgb(255 255 255 / 60%);
332
+ color: var(--ons-color-text-inverse);
333
+ .ons-icon {
334
+ fill: var(--ons-color-text-inverse);
335
+ }
336
+ }
337
+ }
338
+
339
+ &--ghost-dark:hover &,
340
+ &--ghost-dark:active &,
341
+ &--ghost-dark:active:focus &,
342
+ &--ghost-dark.active & {
343
+ &__inner {
344
+ background: var(--ons-color-black);
345
+ border-color: var(--ons-color-black);
346
+ color: var(--ons-color-white);
347
+ .ons-icon {
348
+ fill: var(--ons-color-white);
349
+ }
350
+ }
351
+ }
352
+
353
+ &--ghost.active:focus &,
354
+ &--ghost-dark.active:focus &,
355
+ &--dropdown.active:focus & {
356
+ &__inner {
357
+ background: var(--ons-color-focus);
358
+ color: var(--ons-color-text-link-focus);
359
+ .ons-icon {
360
+ fill: var(--ons-color-text-link-focus);
361
+ }
362
+ }
363
+ }
364
+
365
+ &--ghost:focus &,
366
+ &--ghost-dark:focus &,
367
+ &--dropdown:focus & {
368
+ &__inner {
369
+ border-color: var(--ons-color-text-link-focus);
370
+ box-shadow: 0 0 0 1px var(--ons-color-text-link-focus);
371
+ .ons-icon {
372
+ fill: var(--ons-color-black);
373
+ }
374
+ }
375
+ }
376
+
377
+ &--loader & {
378
+ &__inner {
379
+ position: relative;
380
+ transition: color 0.3s ease-in-out;
381
+ .ons-icon {
382
+ height: 27px;
383
+ left: 50%;
384
+ margin: 0;
385
+ opacity: 0;
386
+ position: absolute;
387
+ top: 50%;
388
+ transform: translate(-50%, -50%);
389
+ transition: opacity 0.3s ease-in-out;
390
+ width: 27px;
391
+ }
392
+ }
393
+ }
394
+
395
+ &--loader.ons-btn--small {
396
+ .ons-icon {
397
+ height: 24px;
398
+ width: 24px;
399
+ }
400
+ }
401
+
402
+ &--loader.ons-is-loading & {
403
+ &__inner {
404
+ color: transparent;
405
+ .ons-icon {
406
+ margin-left: 0 !important;
407
+ opacity: 1;
408
+ }
409
+ }
410
+ }
411
+
412
+ &--loader.ons-is-loading:active &,
413
+ &--loader.ons-is-loading.active & {
414
+ &__inner {
415
+ box-shadow: 0 ems($button-shadow-size) 0 var(--ons-color-button-shadow);
416
+ }
417
+ }
418
+
419
+ &--loader.ons-is-loading:hover {
420
+ cursor: not-allowed;
421
+ }
422
+
423
+ &--dropdown:focus & {
424
+ &__inner {
425
+ box-shadow: inset 0 -4px 0 0 var(--ons-color-text-link-focus);
426
+ }
427
+ }
428
+
429
+ &--mobile[aria-expanded='true'],
430
+ &--text-link[aria-expanded='true'] {
431
+ .ons-icon {
432
+ transform: rotate(270deg);
433
+ }
434
+ }
435
+
436
+ &--mobile,
437
+ &--text-link {
438
+ .ons-icon {
439
+ transform: rotate(90deg);
440
+ }
441
+
442
+ @include mq(l) {
443
+ display: none;
444
+ }
445
+ }
446
+
447
+ // Disabled buttons
448
+ &--disabled & {
449
+ &__inner {
450
+ opacity: 0.4;
451
+ }
452
+ }
453
+
454
+ &--disabled:hover {
455
+ cursor: not-allowed;
456
+ }
457
+
458
+ &--disabled:active &,
459
+ &--disabled.active & {
460
+ &__inner {
461
+ box-shadow: 0 ems($button-shadow-size) 0 var(--ons-color-button-shadow);
462
+ }
427
463
  }
428
- }
429
464
 
430
- &--mobile[aria-expanded='true'],
431
- &--text-link[aria-expanded='true'] {
432
- .ons-icon {
433
- transform: rotate(270deg);
434
- }
435
- }
465
+ &--dropdown {
466
+ @extend .ons-btn--mobile;
467
+
468
+ width: 100%;
469
+ }
470
+
471
+ &--dropdown & {
472
+ @extend .ons-btn--mobile;
473
+
474
+ width: 100%;
436
475
 
437
- &--mobile,
438
- &--text-link {
439
- .ons-icon {
440
- transform: rotate(90deg);
441
- }
476
+ &__inner {
477
+ background: var(--ons-color-branded-tint);
478
+ border: 0;
479
+ border-radius: 0;
480
+ box-shadow: none;
481
+ color: var(--ons-color-branded-text);
482
+ display: block;
483
+ font-size: 1rem;
484
+ font-weight: $font-weight-regular;
485
+ padding: 0.6rem 1rem;
486
+ text-align: left;
442
487
 
443
- @include mq(l) {
444
- display: none;
488
+ .ons-icon {
489
+ fill: var(--ons-color-branded-text);
490
+ float: right;
491
+ margin-top: 3px;
492
+ }
493
+ }
445
494
  }
446
- }
447
-
448
- // Disabled buttons
449
- &--disabled & {
450
- &__inner {
451
- opacity: 0.4;
452
- }
453
- }
454
-
455
- &--disabled:hover {
456
- cursor: not-allowed;
457
- }
458
495
 
459
- &--disabled:active &,
460
- &--disabled.active & {
461
- &__inner {
462
- box-shadow: 0 ems($button-shadow-size) 0 var(--ons-color-button-shadow);
496
+ &--dropdown:hover & {
497
+ &__inner {
498
+ background: var(--ons-color-branded-secondary);
499
+ color: var(--ons-color-white);
500
+ .ons-icon {
501
+ fill: var(--ons-color-white);
502
+ }
503
+ }
463
504
  }
464
- }
465
-
466
- &--dropdown {
467
- @extend .ons-btn--mobile;
468
-
469
- width: 100%;
470
- }
471
-
472
- &--dropdown & {
473
- @extend .ons-btn--mobile;
474
-
475
- width: 100%;
476
505
 
477
- &__inner {
478
- background: var(--ons-color-branded-tint);
479
- border: none;
480
- border-radius: 0;
481
- box-shadow: none;
482
- color: var(--ons-color-branded-text);
483
- display: block;
484
- font-size: 1rem;
485
- font-weight: $font-weight-regular;
486
- padding: 0.6rem 1rem;
487
- text-align: left;
488
-
489
- .ons-icon {
490
- fill: var(--ons-color-branded-text);
491
- float: right;
492
- margin-top: 3px;
493
- }
494
- }
495
- }
496
-
497
- &--dropdown:hover & {
498
- &__inner {
499
- background: var(--ons-color-branded-secondary);
500
- color: var(--ons-color-white);
501
- .ons-icon {
502
- fill: var(--ons-color-white);
503
- }
504
- }
505
- }
506
-
507
- &--dropdown:active &,
508
- &--dropdown.active &,
509
- &--dropdown:active:focus &,
510
- &--dropdown.active:focus & {
511
- &__inner {
512
- background: var(--ons-color-branded-secondary);
513
- color: var(--ons-color-white);
514
- .ons-icon {
515
- fill: var(--ons-color-white);
516
- }
506
+ &--dropdown:active &,
507
+ &--dropdown.active &,
508
+ &--dropdown:active:focus &,
509
+ &--dropdown.active:focus & {
510
+ &__inner {
511
+ background: var(--ons-color-branded-secondary);
512
+ color: var(--ons-color-white);
513
+ .ons-icon {
514
+ fill: var(--ons-color-white);
515
+ }
516
+ }
517
517
  }
518
- }
519
518
  }
520
519
 
521
520
  .ons-btn-group {
522
- @extend .ons-u-mb-m;
521
+ @extend .ons-u-mb-m;
523
522
 
524
- align-items: baseline;
525
- display: flex;
526
- flex-flow: row wrap;
523
+ align-items: baseline;
524
+ display: flex;
525
+ flex-flow: row wrap;
527
526
 
528
- & .ons-btn,
529
- & a {
530
- margin: 0 1rem 1rem 0;
531
- }
527
+ .ons-btn,
528
+ a {
529
+ margin: 0 1rem 1rem 0;
530
+ }
532
531
  }