richie-education 2.34.1-dev10 → 2.34.1-dev16

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "richie-education",
3
- "version": "2.34.1-dev10",
3
+ "version": "2.34.1-dev16",
4
4
  "description": "A CMS to build learning portals for Open Education",
5
5
  "main": "sandbox/manage.py",
6
6
  "scripts": {
@@ -47,6 +47,14 @@ $r-theme: (
47
47
  item-cta-hollow-background: transparent,
48
48
  item-cta-hollow-border: transparent,
49
49
  item-divider-border: r-color('light-grey'),
50
+ dropdown-border-radius: 8px,
51
+ dropdown-padding: 0.5rem,
52
+ dropdown-gap: 0.5rem,
53
+ dropdown-background-color: r-color('azure2'),
54
+ dropdown-item-background-color: r-color('indianred3'),
55
+ dropdown-item-text-color: r-color('white'),
56
+ dropdown-item-border-radius: 4px,
57
+ dropdown-item-padding: 0.5rem 1rem,
50
58
  ),
51
59
  body-content: (
52
60
  base-color: r-color('black'),
@@ -168,6 +168,10 @@
168
168
  flex-wrap: nowrap;
169
169
  }
170
170
 
171
+ & > .topbar__list {
172
+ position: relative;
173
+ }
174
+
171
175
  // Aside menu variation
172
176
  &--aside {
173
177
  @include sv-flex(1, 0, auto);
@@ -197,6 +201,76 @@
197
201
  // Menu item element
198
202
  &__item {
199
203
  $item-selector: &;
204
+ &.dropdown {
205
+ display: block;
206
+ position: static;
207
+
208
+ & > button {
209
+ width: 100%;
210
+
211
+ & > .icon {
212
+ height: 1rem;
213
+ margin-left: 0.5rem;
214
+ width: 1rem;
215
+ }
216
+ }
217
+
218
+ & ul[role='menu'] {
219
+ padding-left: 0.5rem;
220
+ }
221
+ }
222
+
223
+ @include media-breakpoint-up($r-topbar-breakpoint) {
224
+ &.dropdown {
225
+ // See header_menu.html for the definition of the variables
226
+ --active-background-color: #{r-theme-val(topbar, dropdown-item-background-color)};
227
+ --active-text-color: #{r-theme-val(topbar, dropdown-item-text-color)};
228
+
229
+ & > button[aria-expanded='true'] {
230
+ background-color: r-theme-val(topbar, dropdown-background-color);
231
+ }
232
+
233
+ & > button[aria-expanded='true'] + .topbar__sublist {
234
+ display: block;
235
+ }
236
+
237
+ & > .topbar__sublist {
238
+ background: r-theme-val(topbar, dropdown-background-color);
239
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
240
+ border-radius: r-theme-val(topbar, dropdown-border-radius);
241
+ display: none;
242
+ position: absolute;
243
+ transform: translateX(-8px);
244
+ max-width: 100%;
245
+
246
+ &--full-width {
247
+ left: 0;
248
+ transform: inherit;
249
+ }
250
+
251
+ & > ul[role='menu'] {
252
+ display: flex;
253
+ flex-wrap: wrap;
254
+ gap: r-theme-val(topbar, dropdown-gap);
255
+ padding: r-theme-val(topbar, dropdown-padding);
256
+ }
257
+
258
+ & .topbar__item > a {
259
+ background-color: #fff;
260
+ border-radius: r-theme-val(topbar, dropdown-item-border-radius);
261
+ padding: r-theme-val(topbar, dropdown-item-padding);
262
+ &::after {
263
+ display: none;
264
+ }
265
+
266
+ &:is(:focus, :hover) {
267
+ background-color: var(--active-background-color);
268
+ color: var(--active-text-color);
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
200
274
 
201
275
  @include sv-flex(1, 0, auto);
202
276
  display: flex;
@@ -213,15 +287,23 @@
213
287
  --r--menu--item--hover--color: #{r-theme-val(topbar, item-hover-color)};
214
288
  }
215
289
 
216
- & > a {
290
+ & > button {
291
+ @include button-reset-style();
292
+ --radius: #{r-theme-val(topbar, dropdown-border-radius)};
293
+ border-radius: var(--radius) var(--radius) 0 0;
294
+ }
295
+
296
+ & > a,
297
+ & > button {
217
298
  @include sv-flex(1, 0, 100%);
299
+ align-items: center;
300
+ color: inherit;
218
301
  display: flex;
219
- padding: 1rem 0.2rem 1rem 1rem;
220
302
  flex-direction: row;
221
- align-items: center;
222
303
  font-family: inherit;
223
304
  font-weight: inherit;
224
- color: inherit;
305
+ justify-content: space-between;
306
+ padding: 1rem 0.2rem 1rem 1rem;
225
307
 
226
308
  @include media-breakpoint-up($r-topbar-breakpoint) {
227
309
  padding: 1rem 1rem;
@@ -235,18 +317,22 @@
235
317
 
236
318
  // If there is no default hover color we assume there is also no variant
237
319
  @if r-theme-val(topbar, item-hover-color) {
238
- &::after {
239
- content: '';
240
- position: absolute;
241
- bottom: 0;
242
- left: 0;
243
- right: 0;
244
- height: 8px;
320
+ &:is(a)::after {
245
321
  background-color: var(--r--menu--item--hover--color);
246
322
  border-top-left-radius: 0.2rem;
247
323
  border-top-right-radius: 0.2rem;
324
+ bottom: 0;
325
+ content: '';
326
+ height: 8px;
327
+ left: 0;
328
+ position: absolute;
329
+ right: 0;
248
330
  }
249
331
  }
332
+
333
+ &:is(button) {
334
+ background-color: r-theme-val(topbar, dropdown-background-color);
335
+ }
250
336
  }
251
337
  }
252
338
  }
@@ -257,8 +343,10 @@
257
343
 
258
344
  // Current page item or current ancestor
259
345
  &--selected,
260
- &--ancestor {
261
- & > a {
346
+ &--ancestor,
347
+ &:has(.topbar__sublist .topbar__item.topbar__item--selected) {
348
+ & > a,
349
+ & > button {
262
350
  position: relative;
263
351
  color: r-theme-val(topbar, item-active-color);
264
352
 
@@ -328,7 +416,8 @@
328
416
  }
329
417
 
330
418
  // Item divider
331
- & + #{$item-selector} {
419
+ & + #{$item-selector},
420
+ & > .topbar__list #{$item-selector} {
332
421
  @if r-theme-val(topbar, item-divider-border) {
333
422
  border-top: $onepixel solid r-theme-val(topbar, item-divider-border);
334
423
  }
@@ -1,5 +1,6 @@
1
1
  .selector {
2
2
  position: relative;
3
+ z-index: 200;
3
4
 
4
5
  &__button {
5
6
  appearance: none;