@brightspace-ui/core 3.287.4 → 3.288.0

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.
@@ -39,16 +39,16 @@ class ButtonToggle extends LitElement {
39
39
 
40
40
  firstUpdated(changedProperties) {
41
41
  super.firstUpdated(changedProperties);
42
- if (this._focusOnFirstRender) {
43
- this._focusOnFirstRender = false;
42
+ if (this.#focusOnFirstRender) {
43
+ this.#focusOnFirstRender = false;
44
44
  this.focus();
45
45
  }
46
46
  }
47
47
 
48
48
  render() {
49
49
  return html`
50
- <slot @click="${this._handleNotPressedClick}" name="not-pressed"></slot>
51
- <slot @click="${this._handlePressedClick}" name="pressed"></slot>
50
+ <slot @click="${this.#handleNotPressedClick}" name="not-pressed"></slot>
51
+ <slot @click="${this.#handlePressedClick}" name="pressed"></slot>
52
52
  `;
53
53
  }
54
54
 
@@ -63,7 +63,7 @@ class ButtonToggle extends LitElement {
63
63
 
64
64
  focus() {
65
65
  if (!this.hasUpdated) {
66
- this._focusOnFirstRender = true;
66
+ this.#focusOnFirstRender = true;
67
67
  return;
68
68
  }
69
69
 
@@ -75,28 +75,30 @@ class ButtonToggle extends LitElement {
75
75
  elem.focus();
76
76
  }
77
77
 
78
- async _handleClick(pressed) {
78
+ #focusOnFirstRender = false;
79
+
80
+ async #handleClick(pressed) {
79
81
  const beforeToggleEvent = new CustomEvent('d2l-button-toggle-before-change', {
80
82
  detail: {
81
- update: (newPressed) => this._updatePressedState(newPressed)
83
+ update: (newPressed) => this.#updatePressedState(newPressed)
82
84
  },
83
85
  cancelable: true
84
86
  });
85
87
  this.dispatchEvent(beforeToggleEvent);
86
88
  if (beforeToggleEvent.defaultPrevented) return;
87
89
 
88
- this._updatePressedState(pressed);
90
+ this.#updatePressedState(pressed);
89
91
  }
90
92
 
91
- _handleNotPressedClick() {
92
- this._handleClick(true);
93
+ #handleNotPressedClick() {
94
+ this.#handleClick(true);
93
95
  }
94
96
 
95
- _handlePressedClick() {
96
- this._handleClick(false);
97
+ #handlePressedClick() {
98
+ this.#handleClick(false);
97
99
  }
98
100
 
99
- async _updatePressedState(newPressed) {
101
+ async #updatePressedState(newPressed) {
100
102
  this.pressed = newPressed;
101
103
  await this.updateComplete;
102
104
  this.focus();
@@ -14,10 +14,19 @@ const DRAWER_MIN_HEIGHT = 200; // TO DO: Confirm
14
14
  export const MAIN_MIN_WIDTH = 600; // TO DO: Confirm
15
15
  export const PANEL_MIN_WIDTH = 320;
16
16
 
17
+ const DIVIDER_GUTTER_WIDTH = 18;
18
+
17
19
  export const SIDE_NAV_DEFAULT_WIDTH = 334;
18
20
  export const supportingDefaultWidth = contentWidth => Math.floor(contentWidth / 3);
21
+ export const supportingOverlayDefaultWidth = contentWidth => Math.min(400, Math.floor(0.9 * (contentWidth - DIVIDER_WIDTH - DIVIDER_GUTTER_WIDTH)));
19
22
  export const supportingMobileDefaultHeight = fullHeight => Math.floor(fullHeight / 2);
20
23
 
24
+ const OVERLAY_MODE_BREAKPOINT = 929;
25
+ const MOBILE_MODE_BREAKPOINT = 767;
26
+
27
+ const overlayModeQuery = window.matchMedia(`(max-width: ${OVERLAY_MODE_BREAKPOINT}px)`);
28
+ const mobileModeQuery = window.matchMedia(`(max-width: ${MOBILE_MODE_BREAKPOINT}px)`);
29
+
21
30
  class PanelStateController {
22
31
  constructor(host, panelConfigs) {
23
32
  this.#host = host;
@@ -25,7 +34,8 @@ class PanelStateController {
25
34
  for (const [key, config] of Object.entries(panelConfigs)) {
26
35
  this.#panels[key] = {
27
36
  animate: false,
28
- collapsed: false,
37
+ collapsed: config.collapsed,
38
+ restoreCollapsed: !config.collapsed,
29
39
  size: 0,
30
40
  minSize: config.minSize,
31
41
  maxSize: config.minSize
@@ -56,7 +66,7 @@ class PanelStateController {
56
66
  if (stored) {
57
67
  const storedSize = parseInt(stored.size);
58
68
  this.resize(key, isFinite(storedSize) ? storedSize : defaults[key]);
59
- if (stored.collapsed) panel.collapsed = true;
69
+ if (panel.restoreCollapsed && stored.collapsed) panel.collapsed = true;
60
70
  } else {
61
71
  this.resize(key, defaults[key]);
62
72
  }
@@ -92,7 +102,7 @@ class PanelStateController {
92
102
  panel.maxSize = newMaxSize;
93
103
 
94
104
  if (panel.size > newMaxSize) {
95
- this.resize(key, panel.size);
105
+ this.resize(key, panel.size, { animate: true });
96
106
  }
97
107
  }
98
108
 
@@ -122,9 +132,11 @@ class PanelStateController {
122
132
 
123
133
  try {
124
134
  state[panelKey] = {
125
- size: this.#panels[panelKey].size,
126
- collapsed: this.#panels[panelKey].collapsed
135
+ size: this.#panels[panelKey].size
127
136
  };
137
+ if (this.#panels[panelKey].restoreCollapsed) {
138
+ state[panelKey].collapsed = this.#panels[panelKey].collapsed;
139
+ }
128
140
  localStorage.setItem(fullKey, JSON.stringify(state));
129
141
  } catch {
130
142
  // Do nothing if storage quota exceeded or using private browsing mode of an old Safari version
@@ -159,6 +171,8 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
159
171
  _headerHeight: { state: true },
160
172
  _headerIsSticky: { state: true },
161
173
  _footerHeight: { state: true },
174
+ _inOverlayMode: { state: true },
175
+ _inMobileMode: { state: true },
162
176
  _slotVisibility: { state: true }
163
177
  };
164
178
 
@@ -183,12 +197,12 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
183
197
  --d2l-page-footer-max-width: 100%;
184
198
  }
185
199
 
186
- @media (max-width: 929px) {
200
+ @media (max-width: ${OVERLAY_MODE_BREAKPOINT}px) {
187
201
  :host {
188
202
  --d2l-page-padding: 24px;
189
203
  }
190
204
  }
191
- @media (max-width: 767px) {
205
+ @media (max-width: ${MOBILE_MODE_BREAKPOINT}px) {
192
206
  :host {
193
207
  --d2l-page-padding: 18px;
194
208
  }
@@ -262,10 +276,10 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
262
276
  }
263
277
 
264
278
  .side-nav-panel.collapsed {
265
- padding-inline-end: 18px;
279
+ padding-inline-end: ${DIVIDER_GUTTER_WIDTH}px;
266
280
  }
267
281
  .supporting-panel.collapsed {
268
- padding-inline-start: 18px;
282
+ padding-inline-start: ${DIVIDER_GUTTER_WIDTH}px;
269
283
  }
270
284
  .side-nav-panel.collapsed .side-nav-panel-content,
271
285
  .supporting-panel.collapsed .supporting-panel-content {
@@ -315,9 +329,11 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
315
329
  this._headerIsSticky = false;
316
330
  this._footerHeight = 0;
317
331
  this._panelState = new PanelStateController(this, {
318
- 'side-nav': { minSize: PANEL_MIN_WIDTH },
319
- 'supporting': { minSize: PANEL_MIN_WIDTH },
320
- 'supporting-mobile': { minSize: DRAWER_MIN_HEIGHT }
332
+ 'side-nav': { collapsed: false, minSize: PANEL_MIN_WIDTH },
333
+ 'side-nav-overlay': { collapsed: true, minSize: PANEL_MIN_WIDTH },
334
+ 'supporting': { collapsed: false, minSize: PANEL_MIN_WIDTH },
335
+ 'supporting-overlay': { collapsed: true, minSize: PANEL_MIN_WIDTH },
336
+ 'supporting-mobile': { collapsed: false, minSize: DRAWER_MIN_HEIGHT }
321
337
  });
322
338
  this._slotVisibility = {};
323
339
  this.#resizeObserver = new ResizeObserver(entries => {
@@ -341,7 +357,9 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
341
357
  this._panelState.updateMaxSize('side-nav', newMaxWidth);
342
358
  this._panelState.updateMaxSize('supporting', newMaxWidth);
343
359
 
344
- // TO DO: Collapse panel if needed
360
+ const newMaxOverlayWidth = this.#getMaxPanelOverlayWidth();
361
+ this._panelState.updateMaxSize('side-nav-overlay', newMaxOverlayWidth);
362
+ this._panelState.updateMaxSize('supporting-overlay', newMaxOverlayWidth);
345
363
  }
346
364
  }
347
365
  });
@@ -363,12 +381,20 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
363
381
  connectedCallback() {
364
382
  super.connectedCallback();
365
383
  window.addEventListener('resize', this.#handleWindowResize);
384
+
385
+ this._inOverlayMode = overlayModeQuery.matches;
386
+ overlayModeQuery.addEventListener('change', this.#handleOverlayModeChange);
387
+ this._inMobileMode = mobileModeQuery.matches;
388
+ mobileModeQuery.addEventListener('change', this.#handleMobileModeChange);
366
389
  }
367
390
 
368
391
  disconnectedCallback() {
369
392
  super.disconnectedCallback();
370
393
  this.#resizeObserver.disconnect();
371
394
  window.removeEventListener('resize', this.#handleWindowResize);
395
+
396
+ overlayModeQuery.removeEventListener('change', this.#handleOverlayModeChange);
397
+ mobileModeQuery.removeEventListener('change', this.#handleMobileModeChange);
372
398
  }
373
399
 
374
400
  firstUpdated() {
@@ -381,6 +407,9 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
381
407
  }
382
408
 
383
409
  render() {
410
+ const sideNavPanelKey = this._inOverlayMode ? 'side-nav-overlay' : 'side-nav';
411
+ const supportingPanelKey = this._inMobileMode ? 'supporting-overlay' : (this._inOverlayMode ? 'supporting-overlay' : 'supporting'); // TO DO: Switch to supporting-mobile
412
+
384
413
  const pageClasses = {
385
414
  'page': true,
386
415
  'header-sticky': this._headerIsSticky
@@ -394,9 +423,9 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
394
423
  <div class="${classMap(pageClasses)}">
395
424
  ${this.#renderHeader()}
396
425
  <div class="${classMap(contentClasses)}">
397
- ${this.#renderSideNavPanel()}
426
+ ${this.#renderSideNavPanel(sideNavPanelKey)}
398
427
  <main><slot></slot></main>
399
- ${this.#renderSupportingPanel()}
428
+ ${this.#renderSupportingPanel(supportingPanelKey)}
400
429
  </div>
401
430
  ${this.#renderFooter()}
402
431
  </div>
@@ -413,6 +442,16 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
413
442
  #resizeObserver;
414
443
  #stateStorageKey;
415
444
 
445
+ #handleMobileModeChange = (e) => {
446
+ // TO DO: Collapse supporting panel if needed
447
+ this._inMobileMode = e.matches;
448
+ };
449
+
450
+ #handleOverlayModeChange = (e) => {
451
+ // TO DO: Collapse side-nav and supporting panel if needed
452
+ this._inOverlayMode = e.matches;
453
+ };
454
+
416
455
  #handleWindowResize = () => {
417
456
  this._panelState.updateMaxSize('supporting-mobile', this.#getMaxDrawerHeight());
418
457
  };
@@ -422,6 +461,11 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
422
461
  return Math.max(DRAWER_MIN_HEIGHT, window.innerHeight - reservedSpace);
423
462
  }
424
463
 
464
+ #getMaxPanelOverlayWidth() {
465
+ const reservedSpace = MAIN_MIN_WIDTH + DIVIDER_WIDTH; // TO DO: Update when overlay styles added
466
+ return Math.max(PANEL_MIN_WIDTH, this._contentWidth - reservedSpace);
467
+ }
468
+
425
469
  #getMaxPanelWidth() {
426
470
  const reservedSpace = MAIN_MIN_WIDTH + DIVIDER_WIDTH;
427
471
  return Math.max(PANEL_MIN_WIDTH, this._contentWidth - reservedSpace);
@@ -447,7 +491,9 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
447
491
  #initializePanelSizes() {
448
492
  this._panelState.initialize({
449
493
  'side-nav': SIDE_NAV_DEFAULT_WIDTH,
494
+ 'side-nav-overlay': SIDE_NAV_DEFAULT_WIDTH,
450
495
  'supporting': supportingDefaultWidth(this._contentWidth),
496
+ 'supporting-overlay': supportingOverlayDefaultWidth(this._contentWidth),
451
497
  'supporting-mobile': supportingMobileDefaultHeight(window.innerHeight)
452
498
  });
453
499
  }
@@ -509,43 +555,43 @@ class Page extends ProviderMixin(LocalizeCoreElement(LitElement)) {
509
555
  `;
510
556
  }
511
557
 
512
- #renderSideNavPanel() {
558
+ #renderSideNavPanel(panelKey) {
513
559
  const classes = {
514
560
  'side-nav-panel': true,
515
- 'animate': this._panelState.getAnimate('side-nav'),
516
- 'collapsed': this._panelState.getCollapsed('side-nav')
561
+ 'animate': this._panelState.getAnimate(panelKey),
562
+ 'collapsed': this._panelState.getCollapsed(panelKey)
517
563
  };
518
564
  return html`
519
565
  <nav class="side-nav" aria-label="${this.localize('components.page.side-nav-label')}">
520
566
  <div
521
567
  class="${classMap(classes)}"
522
- style=${styleMap({ width: `${this._panelState.getSize('side-nav')}px` })}
568
+ style=${styleMap({ width: `${this._panelState.getSize(panelKey)}px` })}
523
569
  ?hidden="${!this._slotVisibility['side-nav']}">
524
- <div class="side-nav-panel-content" style=${styleMap({ width: `${this._panelState.getTrueSize('side-nav')}px` })}>
570
+ <div class="side-nav-panel-content" style=${styleMap({ width: `${this._panelState.getTrueSize(panelKey)}px` })}>
525
571
  <slot name="side-nav" @slotchange="${this.#handleSlotVisibilityChange}"></slot>
526
572
  </div>
527
573
  </div>
528
574
  ${!this._slotVisibility['side-nav'] ? nothing :
529
- this.#renderDivider('side-nav', this.localize('components.page.side-nav-divider-label'), 'start')}
575
+ this.#renderDivider(panelKey, this.localize('components.page.side-nav-divider-label'), 'start')}
530
576
  </nav>
531
577
  `;
532
578
  }
533
579
 
534
- #renderSupportingPanel() {
580
+ #renderSupportingPanel(panelKey) {
535
581
  const classes = {
536
582
  'supporting-panel': true,
537
- 'animate': this._panelState.getAnimate('supporting'),
538
- 'collapsed': this._panelState.getCollapsed('supporting')
583
+ 'animate': this._panelState.getAnimate(panelKey),
584
+ 'collapsed': this._panelState.getCollapsed(panelKey)
539
585
  };
540
586
  return html`
541
587
  <aside class="supporting" aria-label="${this.localize('components.page.supporting-label')}">
542
588
  ${!this._slotVisibility['supporting'] ? nothing :
543
- this.#renderDivider('supporting', this.localize('components.page.supporting-divider-label'), 'end')}
589
+ this.#renderDivider(panelKey, this.localize('components.page.supporting-divider-label'), 'end')}
544
590
  <div
545
591
  class="${classMap(classes)}"
546
- style=${styleMap({ width: `${this._panelState.getSize('supporting')}px` })}
592
+ style=${styleMap({ width: `${this._panelState.getSize(panelKey)}px` })}
547
593
  ?hidden="${!this._slotVisibility['supporting']}">
548
- <div class="supporting-panel-content" style=${styleMap({ width: `${this._panelState.getTrueSize('supporting')}px` })}>
594
+ <div class="supporting-panel-content" style=${styleMap({ width: `${this._panelState.getTrueSize(panelKey)}px` })}>
549
595
  <slot name="supporting" @slotchange="${this.#handleSlotVisibilityChange}"></slot>
550
596
  </div>
551
597
  </div>
@@ -13147,7 +13147,7 @@
13147
13147
  "properties": [
13148
13148
  {
13149
13149
  "name": "styles",
13150
- "default": "\"css`\\n\\t\\t.full-nav-header {\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\theight: 90px;\\n\\t\\t}\\n\\t\\t.full-nav-header-left {\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\tgap: 5px;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\t\\t.full-nav-header-spacer {\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\tmin-width: 30px;\\n\\t\\t}\\n\\t\\t.full-nav-header-right {\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\t\\t.full-nav-header-right d2l-page-header-button {\\n\\t\\t\\tmargin-inline: 15px;\\n\\t\\t}\\n\\t\\t.full-nav-logo {\\n\\t\\t\\tbackground-color: var(--d2l-color-celestine);\\n\\t\\t\\tborder-radius: 4px;\\n\\t\\t\\tcolor: white;\\n\\t\\t\\tfont-size: 0.8rem;\\n\\t\\t\\tfont-weight: 700;\\n\\t\\t\\tpadding: 8px 14px;\\n\\t\\t}\\n\\t\\t.full-nav-footer-inner {\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\tgap: 20px;\\n\\t\\t}\\n\\t\\t.full-nav-footer-link {\\n\\t\\t\\tborder-bottom: 4px solid transparent;\\n\\t\\t\\tcolor: var(--d2l-color-ferrite);\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tpadding: 8px 0;\\n\\t\\t\\ttext-decoration: none;\\n\\t\\t}\\n\\t\\t.full-nav-footer-link:hover,\\n\\t\\t.full-nav-footer-link:focus-visible {\\n\\t\\t\\tborder-bottom-color: var(--d2l-color-celestine);\\n\\t\\t\\tcolor: var(--d2l-color-celestine);\\n\\t\\t}\\n\\t`\""
13150
+ "default": "\"css`\\n\\t\\t.full-nav-header {\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\theight: 90px;\\n\\t\\t}\\n\\t\\t.full-nav-header-left {\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\tgap: 5px;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\t\\t.full-nav-header-course {\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: 5px;\\n\\t\\t}\\n\\t\\t.full-nav-header-spacer {\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\tmin-width: 30px;\\n\\t\\t}\\n\\t\\t.full-nav-header-right {\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\t\\t.full-nav-header-alerts {\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\t\\t.full-nav-header-alerts-combined {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t\\t.full-nav-header-right d2l-page-header-button {\\n\\t\\t\\tmargin-inline: 15px;\\n\\t\\t}\\n\\t\\t.full-nav-logo {\\n\\t\\t\\tbackground-color: var(--d2l-color-celestine);\\n\\t\\t\\tborder-radius: 4px;\\n\\t\\t\\tcolor: white;\\n\\t\\t\\tfont-size: 0.8rem;\\n\\t\\t\\tfont-weight: 700;\\n\\t\\t\\tpadding: 8px 14px;\\n\\t\\t}\\n\\t\\t.full-nav-footer-inner {\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: 20px;\\n\\t\\t}\\n\\t\\t.full-nav-footer-links {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\tgap: 20px;\\n\\t\\t\\tmin-width: 0;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t}\\n\\t\\t.full-nav-footer-inner d2l-button-icon {\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t}\\n\\t\\t.full-nav-footer-link {\\n\\t\\t\\tborder-bottom: 4px solid transparent;\\n\\t\\t\\tcolor: var(--d2l-color-ferrite);\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tpadding: 8px 0;\\n\\t\\t\\ttext-decoration: none;\\n\\t\\t}\\n\\t\\t.full-nav-footer-link:hover,\\n\\t\\t.full-nav-footer-link:focus-visible {\\n\\t\\t\\tborder-bottom-color: var(--d2l-color-celestine);\\n\\t\\t\\tcolor: var(--d2l-color-celestine);\\n\\t\\t}\\n\\t\\t@media (max-width: 615px) {\\n\\t\\t\\t.full-nav-header-alerts {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t\\t.full-nav-header-alerts-combined {\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t@media (max-width: 400px) {\\n\\t\\t\\t.full-nav-header-course {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t`\""
13151
13151
  }
13152
13152
  ]
13153
13153
  },
@@ -13589,7 +13589,7 @@
13589
13589
  "properties": [
13590
13590
  {
13591
13591
  "name": "styles",
13592
- "default": "\"css`\\n\\t\\t:host {\\n\\t\\t\\t--d2l-page-header-max-width: 1230px;\\n\\t\\t\\t--d2l-page-content-max-width: 1230px;\\n\\t\\t\\t--d2l-page-footer-max-width: 1230px;\\n\\t\\t\\t--d2l-page-margin-inline: auto;\\n\\t\\t\\t--d2l-page-padding: 30px;\\n\\t\\t}\\n\\n\\t\\t:host([width-type=\\\"wide\\\"]) {\\n\\t\\t\\t--d2l-page-header-max-width: 1440px;\\n\\t\\t\\t--d2l-page-content-max-width: 1440px;\\n\\t\\t\\t--d2l-page-footer-max-width: 1440px;\\n\\t\\t}\\n\\n\\t\\t:host([width-type=\\\"fullscreen\\\"]) {\\n\\t\\t\\t--d2l-page-header-max-width: 100%;\\n\\t\\t\\t--d2l-page-content-max-width: 100%;\\n\\t\\t\\t--d2l-page-footer-max-width: 100%;\\n\\t\\t}\\n\\n\\t\\t@media (max-width: 929px) {\\n\\t\\t\\t:host {\\n\\t\\t\\t\\t--d2l-page-padding: 24px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t@media (max-width: 767px) {\\n\\t\\t\\t:host {\\n\\t\\t\\t\\t--d2l-page-padding: 18px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.header {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tz-index: 16; /* To be over sticky content of our core components and the divider */\\n\\t\\t}\\n\\n\\t\\t.page.header-sticky .header {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: 0;\\n\\t\\t}\\n\\n\\t\\t.content {\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tmargin-inline: var(--d2l-page-margin-inline, 0);\\n\\t\\t\\tmax-width: var(--d2l-page-content-max-width, 100%);\\n\\t\\t\\tpadding-bottom: var(--d2l-page-footer-height, 0); /* Reserve space for fixed footer */\\n\\t\\t}\\n\\t\\t.content.has-panels {\\n\\t\\t\\tmin-height: calc(100vh - var(--d2l-page-header-height-measured, 0px));\\n\\t\\t}\\n\\n\\t\\tmain {\\n\\t\\t\\tflex: 1;\\n\\t\\t\\tmin-width: min(${MAIN_MIN_WIDTH}px, 100%);\\n\\t\\t}\\n\\n\\t\\t.side-nav,\\n\\t\\t.supporting {\\n\\t\\t\\tdisplay: contents;\\n\\t\\t}\\n\\n\\t\\t.side-nav-panel,\\n\\t\\t.supporting-panel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t}\\n\\n\\t\\t.side-nav-panel,\\n\\t\\t.supporting-panel,\\n\\t\\t.divider {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: var(--d2l-page-header-height, 0);\\n\\t\\t}\\n\\n\\t\\t.side-nav-panel,\\n\\t\\t.supporting-panel,\\n\\t\\t.side-nav-panel-content,\\n\\t\\t.supporting-panel-content,\\n\\t\\t.divider {\\n\\t\\t\\tmax-height: calc(100vh - var(--d2l-page-header-height, 0) - var(--d2l-page-footer-height, 0));\\n\\t\\t}\\n\\n\\t\\t.side-nav-panel-content,\\n\\t\\t.supporting-panel-content {\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\toverflow: clip auto;\\n\\t\\t}\\n\\t\\t.side-nav-panel-content {\\n\\t\\t\\tfloat: inline-end;\\n\\t\\t}\\n\\t\\t.supporting-panel-content {\\n\\t\\t\\tfloat: inline-start;\\n\\t\\t}\\n\\n\\t\\t.divider {\\n\\t\\t\\tz-index: 15; /* To be over d2l-page-* panel headers */\\n\\t\\t}\\n\\n\\t\\t.side-nav-panel.collapsed {\\n\\t\\t\\tpadding-inline-end: 18px;\\n\\t\\t}\\n\\t\\t.supporting-panel.collapsed {\\n\\t\\t\\tpadding-inline-start: 18px;\\n\\t\\t}\\n\\t\\t.side-nav-panel.collapsed .side-nav-panel-content,\\n\\t\\t.supporting-panel.collapsed .supporting-panel-content {\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t}\\n\\t\\t@media (prefers-reduced-motion: no-preference) {\\n\\t\\t\\t.side-nav-panel.animate,\\n\\t\\t\\t.supporting-panel.animate,\\n\\t\\t\\t.side-nav-panel.animate .side-nav-panel-content,\\n\\t\\t\\t.supporting-panel.animate .supporting-panel-content {\\n\\t\\t\\t\\ttransition:\\n\\t\\t\\t\\t\\twidth 400ms cubic-bezier(0, 0.7, 0.5, 1),\\n\\t\\t\\t\\t\\tpadding 400ms cubic-bezier(0, 0.7, 0.5, 1);\\n\\t\\t\\t}\\n\\t\\t\\t.side-nav-panel.animate.collapsed .side-nav-panel-content,\\n\\t\\t\\t.supporting-panel.animate.collapsed .supporting-panel-content {\\n\\t\\t\\t\\ttransition:\\n\\t\\t\\t\\t\\twidth 400ms cubic-bezier(0, 0.7, 0.5, 1),\\n\\t\\t\\t\\t\\tvisibility 0s 400ms;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.footer:not([hidden]),\\n\\t\\t.floating-buttons-container {\\n\\t\\t\\tdisplay: inline;\\n\\t\\t}\\n\\t\\t.fixed-footer {\\n\\t\\t\\tbackground-color: white;\\n\\t\\t\\tbox-shadow: 0 -2px 4px rgba(32, 33, 34, 0.2); /* ferrite */\\n\\t\\t\\tinset: auto 0 0;\\n\\t\\t\\tpadding-block-start: 0.75rem;\\n\\t\\t\\tposition: fixed;\\n\\t\\t\\tz-index: 15; /* To be over sticky content of our core components and divider */\\n\\t\\t}\\n\\t\\t.footer-contents {\\n\\t\\t\\tmargin-inline: var(--d2l-page-margin-inline, 0);\\n\\t\\t\\tmax-width: var(--d2l-page-footer-max-width, 100%);\\n\\t\\t}\\n\\t`\""
13592
+ "default": "\"css`\\n\\t\\t:host {\\n\\t\\t\\t--d2l-page-header-max-width: 1230px;\\n\\t\\t\\t--d2l-page-content-max-width: 1230px;\\n\\t\\t\\t--d2l-page-footer-max-width: 1230px;\\n\\t\\t\\t--d2l-page-margin-inline: auto;\\n\\t\\t\\t--d2l-page-padding: 30px;\\n\\t\\t}\\n\\n\\t\\t:host([width-type=\\\"wide\\\"]) {\\n\\t\\t\\t--d2l-page-header-max-width: 1440px;\\n\\t\\t\\t--d2l-page-content-max-width: 1440px;\\n\\t\\t\\t--d2l-page-footer-max-width: 1440px;\\n\\t\\t}\\n\\n\\t\\t:host([width-type=\\\"fullscreen\\\"]) {\\n\\t\\t\\t--d2l-page-header-max-width: 100%;\\n\\t\\t\\t--d2l-page-content-max-width: 100%;\\n\\t\\t\\t--d2l-page-footer-max-width: 100%;\\n\\t\\t}\\n\\n\\t\\t@media (max-width: ${OVERLAY_MODE_BREAKPOINT}px) {\\n\\t\\t\\t:host {\\n\\t\\t\\t\\t--d2l-page-padding: 24px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t@media (max-width: ${MOBILE_MODE_BREAKPOINT}px) {\\n\\t\\t\\t:host {\\n\\t\\t\\t\\t--d2l-page-padding: 18px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.header {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tz-index: 16; /* To be over sticky content of our core components and the divider */\\n\\t\\t}\\n\\n\\t\\t.page.header-sticky .header {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: 0;\\n\\t\\t}\\n\\n\\t\\t.content {\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tmargin-inline: var(--d2l-page-margin-inline, 0);\\n\\t\\t\\tmax-width: var(--d2l-page-content-max-width, 100%);\\n\\t\\t\\tpadding-bottom: var(--d2l-page-footer-height, 0); /* Reserve space for fixed footer */\\n\\t\\t}\\n\\t\\t.content.has-panels {\\n\\t\\t\\tmin-height: calc(100vh - var(--d2l-page-header-height-measured, 0px));\\n\\t\\t}\\n\\n\\t\\tmain {\\n\\t\\t\\tflex: 1;\\n\\t\\t\\tmin-width: min(${MAIN_MIN_WIDTH}px, 100%);\\n\\t\\t}\\n\\n\\t\\t.side-nav,\\n\\t\\t.supporting {\\n\\t\\t\\tdisplay: contents;\\n\\t\\t}\\n\\n\\t\\t.side-nav-panel,\\n\\t\\t.supporting-panel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t}\\n\\n\\t\\t.side-nav-panel,\\n\\t\\t.supporting-panel,\\n\\t\\t.divider {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: var(--d2l-page-header-height, 0);\\n\\t\\t}\\n\\n\\t\\t.side-nav-panel,\\n\\t\\t.supporting-panel,\\n\\t\\t.side-nav-panel-content,\\n\\t\\t.supporting-panel-content,\\n\\t\\t.divider {\\n\\t\\t\\tmax-height: calc(100vh - var(--d2l-page-header-height, 0) - var(--d2l-page-footer-height, 0));\\n\\t\\t}\\n\\n\\t\\t.side-nav-panel-content,\\n\\t\\t.supporting-panel-content {\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\toverflow: clip auto;\\n\\t\\t}\\n\\t\\t.side-nav-panel-content {\\n\\t\\t\\tfloat: inline-end;\\n\\t\\t}\\n\\t\\t.supporting-panel-content {\\n\\t\\t\\tfloat: inline-start;\\n\\t\\t}\\n\\n\\t\\t.divider {\\n\\t\\t\\tz-index: 15; /* To be over d2l-page-* panel headers */\\n\\t\\t}\\n\\n\\t\\t.side-nav-panel.collapsed {\\n\\t\\t\\tpadding-inline-end: ${DIVIDER_GUTTER_WIDTH}px;\\n\\t\\t}\\n\\t\\t.supporting-panel.collapsed {\\n\\t\\t\\tpadding-inline-start: ${DIVIDER_GUTTER_WIDTH}px;\\n\\t\\t}\\n\\t\\t.side-nav-panel.collapsed .side-nav-panel-content,\\n\\t\\t.supporting-panel.collapsed .supporting-panel-content {\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t}\\n\\t\\t@media (prefers-reduced-motion: no-preference) {\\n\\t\\t\\t.side-nav-panel.animate,\\n\\t\\t\\t.supporting-panel.animate,\\n\\t\\t\\t.side-nav-panel.animate .side-nav-panel-content,\\n\\t\\t\\t.supporting-panel.animate .supporting-panel-content {\\n\\t\\t\\t\\ttransition:\\n\\t\\t\\t\\t\\twidth 400ms cubic-bezier(0, 0.7, 0.5, 1),\\n\\t\\t\\t\\t\\tpadding 400ms cubic-bezier(0, 0.7, 0.5, 1);\\n\\t\\t\\t}\\n\\t\\t\\t.side-nav-panel.animate.collapsed .side-nav-panel-content,\\n\\t\\t\\t.supporting-panel.animate.collapsed .supporting-panel-content {\\n\\t\\t\\t\\ttransition:\\n\\t\\t\\t\\t\\twidth 400ms cubic-bezier(0, 0.7, 0.5, 1),\\n\\t\\t\\t\\t\\tvisibility 0s 400ms;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.footer:not([hidden]),\\n\\t\\t.floating-buttons-container {\\n\\t\\t\\tdisplay: inline;\\n\\t\\t}\\n\\t\\t.fixed-footer {\\n\\t\\t\\tbackground-color: white;\\n\\t\\t\\tbox-shadow: 0 -2px 4px rgba(32, 33, 34, 0.2); /* ferrite */\\n\\t\\t\\tinset: auto 0 0;\\n\\t\\t\\tpadding-block-start: 0.75rem;\\n\\t\\t\\tposition: fixed;\\n\\t\\t\\tz-index: 15; /* To be over sticky content of our core components and divider */\\n\\t\\t}\\n\\t\\t.footer-contents {\\n\\t\\t\\tmargin-inline: var(--d2l-page-margin-inline, 0);\\n\\t\\t\\tmax-width: var(--d2l-page-footer-max-width, 100%);\\n\\t\\t}\\n\\t`\""
13593
13593
  },
13594
13594
  {
13595
13595
  "name": "stateStorageKey",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspace-ui/core",
3
- "version": "3.287.4",
3
+ "version": "3.288.0",
4
4
  "description": "A collection of accessible, free, open-source web components for building Brightspace applications",
5
5
  "type": "module",
6
6
  "repository": "https://github.com/BrightspaceUI/core.git",