@brightspace-ui/core 3.227.4 → 3.227.5

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 (176) hide show
  1. package/components/button/button.js +8 -8
  2. package/components/demo/test/demo-page-settings.test.js +25 -0
  3. package/components/demo/test/demo-page.test.js +17 -0
  4. package/package.json +1 -1
  5. package/components/alert/demo/alert-toast.html +0 -106
  6. package/components/alert/demo/alert.html +0 -82
  7. package/components/backdrop/demo/backdrop-loading.html +0 -166
  8. package/components/backdrop/demo/backdrop.html +0 -57
  9. package/components/breadcrumbs/demo/breadcrumbs.html +0 -53
  10. package/components/button/demo/button-add.html +0 -55
  11. package/components/button/demo/button-copy.html +0 -122
  12. package/components/button/demo/button-icon.html +0 -174
  13. package/components/button/demo/button-move.html +0 -38
  14. package/components/button/demo/button-split.html +0 -76
  15. package/components/button/demo/button-subtle.html +0 -132
  16. package/components/button/demo/button-toggle.html +0 -80
  17. package/components/button/demo/button.html +0 -67
  18. package/components/button/demo/floating-buttons-in-frame.html +0 -44
  19. package/components/button/demo/floating-buttons-in-tabs.html +0 -244
  20. package/components/button/demo/floating-buttons-page.html +0 -100
  21. package/components/button/demo/floating-buttons.html +0 -101
  22. package/components/calendar/demo/calendar.html +0 -76
  23. package/components/card/demo/card.html +0 -304
  24. package/components/collapsible-panel/demo/collapsible-panel.html +0 -218
  25. package/components/colors/demo/color-swatch.js +0 -240
  26. package/components/colors/demo/colors.html +0 -139
  27. package/components/count-badge/demo/count-badge-icon.html +0 -48
  28. package/components/count-badge/demo/count-badge.html +0 -73
  29. package/components/demo/demo/demo-snippet.html +0 -71
  30. package/components/description-list/demo/description-list-test.js +0 -142
  31. package/components/description-list/demo/description-list.html +0 -48
  32. package/components/dialog/demo/dialog-async-content-until.js +0 -89
  33. package/components/dialog/demo/dialog-async-content.js +0 -72
  34. package/components/dialog/demo/dialog-confirm.html +0 -102
  35. package/components/dialog/demo/dialog-container.js +0 -40
  36. package/components/dialog/demo/dialog-fullscreen.html +0 -273
  37. package/components/dialog/demo/dialog-nested.html +0 -94
  38. package/components/dialog/demo/dialog.html +0 -398
  39. package/components/dropdown/demo/dropdown-button.html +0 -102
  40. package/components/dropdown/demo/dropdown-context-menu.html +0 -129
  41. package/components/dropdown/demo/dropdown-flicker-inner.html +0 -70
  42. package/components/dropdown/demo/dropdown-flicker.html +0 -142
  43. package/components/dropdown/demo/dropdown-menu-demo-view.js +0 -37
  44. package/components/dropdown/demo/dropdown-menu.html +0 -227
  45. package/components/dropdown/demo/dropdown-more.html +0 -160
  46. package/components/dropdown/demo/dropdown-positioning.html +0 -127
  47. package/components/dropdown/demo/dropdown-tabs.html +0 -87
  48. package/components/dropdown/demo/dropdown.html +0 -217
  49. package/components/empty-state/demo/empty-state.html +0 -94
  50. package/components/expand-collapse/demo/expand-collapse-content.html +0 -58
  51. package/components/filter/demo/filter-load-more-demo.js +0 -182
  52. package/components/filter/demo/filter-overflow-group.html +0 -246
  53. package/components/filter/demo/filter-search-demo.js +0 -135
  54. package/components/filter/demo/filter-tags.html +0 -115
  55. package/components/filter/demo/filter.html +0 -230
  56. package/components/focus-trap/demo/focus-trap.html +0 -75
  57. package/components/form/demo/form-demo.js +0 -105
  58. package/components/form/demo/form-dialog-demo.js +0 -94
  59. package/components/form/demo/form-panel-demo.js +0 -89
  60. package/components/form/demo/form.html +0 -37
  61. package/components/hierarchical-view/demo/hierarchical-view.html +0 -221
  62. package/components/html-block/demo/html-block-code.html +0 -55
  63. package/components/html-block/demo/html-block.html +0 -696
  64. package/components/icons/demo/icon-color-override.js +0 -23
  65. package/components/icons/demo/icon-custom.html +0 -112
  66. package/components/icons/demo/icon-size-override.js +0 -24
  67. package/components/icons/demo/icon.html +0 -52
  68. package/components/inputs/demo/input-checkbox.html +0 -118
  69. package/components/inputs/demo/input-color-palette.js +0 -67
  70. package/components/inputs/demo/input-color.html +0 -110
  71. package/components/inputs/demo/input-date-range.html +0 -114
  72. package/components/inputs/demo/input-date-time-range.html +0 -128
  73. package/components/inputs/demo/input-date-time.html +0 -100
  74. package/components/inputs/demo/input-date.html +0 -81
  75. package/components/inputs/demo/input-group.html +0 -56
  76. package/components/inputs/demo/input-number.html +0 -136
  77. package/components/inputs/demo/input-percent.html +0 -99
  78. package/components/inputs/demo/input-radio-label-test.js +0 -45
  79. package/components/inputs/demo/input-radio-solo-test.js +0 -47
  80. package/components/inputs/demo/input-radio.html +0 -119
  81. package/components/inputs/demo/input-search.html +0 -75
  82. package/components/inputs/demo/input-select-test.js +0 -60
  83. package/components/inputs/demo/input-select.html +0 -45
  84. package/components/inputs/demo/input-text.html +0 -163
  85. package/components/inputs/demo/input-textarea.html +0 -124
  86. package/components/inputs/demo/input-time-range.html +0 -121
  87. package/components/inputs/demo/input-time.html +0 -95
  88. package/components/link/demo/link.html +0 -111
  89. package/components/list/demo/demo-list-nav.js +0 -170
  90. package/components/list/demo/demo-list-nested-iterations-helper.js +0 -168
  91. package/components/list/demo/demo-list-nested-lazy-load.js +0 -133
  92. package/components/list/demo/demo-list-nested.js +0 -291
  93. package/components/list/demo/demo-list.js +0 -241
  94. package/components/list/demo/list-color.html +0 -423
  95. package/components/list/demo/list-demo-scenarios.js +0 -380
  96. package/components/list/demo/list-drag-and-drop-position.js +0 -102
  97. package/components/list/demo/list-drag-and-drop.html +0 -82
  98. package/components/list/demo/list-expand-collapse.html +0 -136
  99. package/components/list/demo/list-item-actions.html +0 -371
  100. package/components/list/demo/list-item-custom.js +0 -204
  101. package/components/list/demo/list-item-layouts.html +0 -331
  102. package/components/list/demo/list-item-scroll.html +0 -122
  103. package/components/list/demo/list-layout.html +0 -575
  104. package/components/list/demo/list-nav.html +0 -110
  105. package/components/list/demo/list-nested.html +0 -270
  106. package/components/list/demo/list-selection.html +0 -301
  107. package/components/list/demo/list.html +0 -319
  108. package/components/loading-spinner/demo/loading-spinner-override.js +0 -34
  109. package/components/loading-spinner/demo/loading-spinner.html +0 -63
  110. package/components/menu/demo/checkbox-menu.html +0 -52
  111. package/components/menu/demo/custom-menu-item.js +0 -37
  112. package/components/menu/demo/custom-view.js +0 -63
  113. package/components/menu/demo/menu.html +0 -211
  114. package/components/menu/demo/radio-menu.html +0 -52
  115. package/components/meter/demo/meter.html +0 -115
  116. package/components/more-less/demo/more-less-test.js +0 -67
  117. package/components/more-less/demo/more-less.html +0 -71
  118. package/components/object-property-list/demo/object-property-list.html +0 -99
  119. package/components/offscreen/demo/offscreen-demo.js +0 -16
  120. package/components/offscreen/demo/offscreen.html +0 -44
  121. package/components/overflow-group/demo/demo-overflow-group.js +0 -29
  122. package/components/overflow-group/demo/overflow-group.html +0 -110
  123. package/components/paging/demo/pager-load-more.html +0 -120
  124. package/components/popover/demo/popover.html +0 -309
  125. package/components/progress/demo/progress.html +0 -104
  126. package/components/scroll-wrapper/demo/scroll-wrapper-test.js +0 -108
  127. package/components/scroll-wrapper/demo/scroll-wrapper.html +0 -52
  128. package/components/selection/demo/demo-selection.js +0 -35
  129. package/components/selection/demo/selection.html +0 -198
  130. package/components/skeleton/demo/skeleton-group-nested-test.js +0 -71
  131. package/components/skeleton/demo/skeleton-group-test-wrapper.js +0 -18
  132. package/components/skeleton/demo/skeleton-group-test.js +0 -91
  133. package/components/skeleton/demo/skeleton-mixin.html +0 -78
  134. package/components/skeleton/demo/skeleton-test-box.js +0 -34
  135. package/components/skeleton/demo/skeleton-test-container.js +0 -45
  136. package/components/skeleton/demo/skeleton-test-heading.js +0 -44
  137. package/components/skeleton/demo/skeleton-test-link.js +0 -47
  138. package/components/skeleton/demo/skeleton-test-paragraph.js +0 -54
  139. package/components/skeleton/demo/skeleton-test-stack.js +0 -38
  140. package/components/skeleton/demo/skeleton-test-width.js +0 -20
  141. package/components/sorting/demo/sort.html +0 -37
  142. package/components/status-indicator/demo/status-indicator.html +0 -99
  143. package/components/switch/demo/switch.html +0 -95
  144. package/components/table/demo/table-test.js +0 -271
  145. package/components/table/demo/table.html +0 -107
  146. package/components/tabs/demo/tab-custom.js +0 -39
  147. package/components/tabs/demo/tabs-array.js +0 -43
  148. package/components/tabs/demo/tabs.html +0 -558
  149. package/components/tag-list/demo/tag-list.html +0 -117
  150. package/components/tooltip/demo/tooltip.html +0 -275
  151. package/components/typography/demo/typography.html +0 -93
  152. package/components/view-switcher/demo/demo-table-view.js +0 -41
  153. package/components/view-switcher/demo/view-switcher.html +0 -71
  154. package/directives/animate/demo/animate-test.js +0 -98
  155. package/directives/animate/demo/index.html +0 -23
  156. package/helpers/demo/announce-test.js +0 -37
  157. package/helpers/demo/announce.html +0 -19
  158. package/helpers/demo/dismissible-test.js +0 -66
  159. package/helpers/demo/dismissible.html +0 -38
  160. package/helpers/demo/gestures.html +0 -58
  161. package/helpers/demo/prism.html +0 -694
  162. package/helpers/demo/template-tags.html +0 -118
  163. package/mixins/arrow-keys/demo/arrow-keys-mixin.html +0 -29
  164. package/mixins/arrow-keys/demo/arrow-keys-test.js +0 -38
  165. package/mixins/async-container/demo/async-container.html +0 -109
  166. package/mixins/async-container/demo/async-container.js +0 -27
  167. package/mixins/async-container/demo/async-item.js +0 -80
  168. package/mixins/labelled/demo/labelled-mixin.html +0 -90
  169. package/mixins/localize/demo/localize-mixin-greeting.js +0 -39
  170. package/mixins/localize/demo/localize-mixin-mission.js +0 -25
  171. package/mixins/localize/demo/localize-mixin.html +0 -28
  172. package/templates/primary-secondary/demo/form.html +0 -55
  173. package/templates/primary-secondary/demo/index.html +0 -27
  174. package/templates/primary-secondary/demo/integration.html +0 -457
  175. package/templates/primary-secondary/demo/overflow-hidden.html +0 -22
  176. package/templates/primary-secondary/demo/width-type-normal.html +0 -26
@@ -1,39 +0,0 @@
1
- import { css, html, LitElement } from 'lit';
2
- import { getFocusRingStyles } from '../../../helpers/focus.js';
3
- import { TabMixin } from '../tab-mixin.js';
4
-
5
- class TabCustom extends TabMixin(LitElement) {
6
-
7
- static get styles() {
8
- const styles = [ css`
9
- .d2l-tab-custom-content {
10
- --d2l-focus-ring-offset: 0;
11
- margin: 0.5rem;
12
- overflow: clip;
13
- overflow-clip-margin: 1em;
14
- padding: 0.1rem;
15
- white-space: nowrap;
16
- }
17
- :host(:first-child) .d2l-tab-custom-content {
18
- margin-inline-start: 0;
19
- }
20
- ${getFocusRingStyles(
21
- pseudoClass => `:host(:${pseudoClass}) .d2l-tab-custom-content`,
22
- { extraStyles: css`border-radius: 0.3rem; color: var(--d2l-color-celestine);` }
23
- )}
24
- `];
25
-
26
- super.styles && styles.unshift(super.styles);
27
- return styles;
28
- }
29
-
30
- renderContent() {
31
- return html`
32
- <div class="d2l-tab-custom-content">
33
- <slot></slot>
34
- </div>
35
- `;
36
- }
37
- }
38
-
39
- customElements.define('d2l-tab-custom', TabCustom);
@@ -1,43 +0,0 @@
1
- import '../tab.js';
2
- import '../tabs.js';
3
- import '../tab-panel.js';
4
- import { html, LitElement } from 'lit';
5
-
6
- class TabsArray extends LitElement {
7
-
8
- static get properties() {
9
- return {
10
- _tabs: { type: Array }
11
- };
12
- }
13
-
14
- constructor() {
15
- super();
16
- this._tabs = [{ text: 'Tab 1', selected: true }, { text: 'Tab 2' }, { text: 'Tab 3' }];
17
- }
18
-
19
- render() {
20
- return html`
21
- <d2l-tabs @d2l-tab-selected="${this._handleTabSelected}">
22
- ${this._tabs.map((tab, index) => html`
23
- <d2l-tab text="${tab.text}" ?selected="${tab.selected}" slot="tabs" id="tab-${index}"></d2l-tab>
24
- <d2l-tab-panel labelled-by="tab-${index}" slot="panels">
25
- ${tab.text} content goes here.
26
- </d2l-tab-panel>`
27
- )}
28
- </d2l-tabs>
29
- `;
30
- }
31
-
32
- _handleTabSelected(e) {
33
- const selectedTab = e.target;
34
- this._tabs = this._tabs.map(tab => {
35
- return {
36
- ...tab,
37
- selected: tab.text === selectedTab.text
38
- };
39
- });
40
- }
41
- }
42
-
43
- customElements.define('d2l-tabs-array', TabsArray);
@@ -1,558 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
5
- <meta charset="UTF-8">
6
- <link rel="stylesheet" href="../../demo/styles.css" type="text/css">
7
- <script type="module">
8
- import '../../demo/demo-page.js';
9
- import '../../button/button-subtle.js';
10
- import '../../count-badge/count-badge.js';
11
- import '../../dropdown/dropdown-button-subtle.js';
12
- import '../../dropdown/dropdown-menu.js';
13
- import '../../empty-state/empty-state-illustrated.js';
14
- import '../../menu/menu.js';
15
- import '../../menu/menu-item.js';
16
- import '../tab.js';
17
- import '../tabs.js';
18
- import '../tab-panel.js';
19
- import './tab-custom.js';
20
- import './tabs-array.js';
21
- </script>
22
- </head>
23
- <body unresolved>
24
-
25
- <d2l-demo-page page-title="d2l-tabs">
26
-
27
- <h2>Tabs</h2>
28
-
29
- <d2l-demo-snippet>
30
- <template>
31
- <d2l-tabs text="Courses">
32
- <d2l-tab id="all" text="All" slot="tabs"></d2l-tab>
33
- <d2l-tab id="biology" text="Biology" slot="tabs" selected></d2l-tab>
34
- <d2l-tab id="chemistry" text="Chemistry" slot="tabs"></d2l-tab>
35
- <d2l-tab id="physics" text="Physics" slot="tabs"></d2l-tab>
36
- <d2l-tab id="math" text="Math" slot="tabs"></d2l-tab>
37
- <d2l-tab id="earth-sciences" text="Earth Sciences" slot="tabs"></d2l-tab>
38
- <d2l-tab-panel labelled-by="all" slot="panels" id="all-panel">Tab content for All</d2l-tab-panel>
39
- <d2l-tab-panel labelled-by="biology" slot="panels" id="biology-panel">Tab content for Biology</d2l-tab-panel>
40
- <d2l-tab-panel labelled-by="chemistry" slot="panels">Tab content for Chemistry</d2l-tab-panel>
41
- <d2l-tab-panel labelled-by="physics" slot="panels">Tab content for Physics</d2l-tab-panel>
42
- <d2l-tab-panel labelled-by="math" slot="panels">Tab content for Math</d2l-tab-panel>
43
- <d2l-tab-panel labelled-by="earth-sciences" slot="panels">Tab content for Earth Sciences</d2l-tab-panel>
44
- <d2l-dropdown-button-subtle slot="ext" text="Explore Topics">
45
- <d2l-dropdown-menu>
46
- <d2l-menu label="Astronomy">
47
- <d2l-menu-item text="Introduction"></d2l-menu-item>
48
- <d2l-menu-item text="Searching for the Heavens "></d2l-menu-item>
49
- <d2l-menu-item text="The Solar System"></d2l-menu-item>
50
- <d2l-menu-item text="Stars &amp; Galaxies"></d2l-menu-item>
51
- <d2l-menu-item text="The Night Sky"></d2l-menu-item>
52
- <d2l-menu-item text="The Universe"></d2l-menu-item>
53
- </d2l-menu>
54
- </d2l-dropdown-menu>
55
- </d2l-dropdown-button-subtle>
56
- </d2l-tabs>
57
- </template>
58
- </d2l-demo-snippet>
59
-
60
- <h2>Tabs (with before and after slot content)</h2>
61
-
62
- <d2l-demo-snippet>
63
- <template>
64
- <d2l-tabs text="Courses">
65
- <d2l-tab id="beforelong" text="Long Panel Text That Will Also Have Slot Content" slot="tabs">
66
- <d2l-icon icon="tier1:gear" slot="before"></d2l-icon>
67
- </d2l-tab>
68
- <d2l-tab id="afterlong" text="Long Panel Text That Will Also Have Slot Content" slot="tabs">
69
- <d2l-count-badge number="100" size="small" text="100 new notifications" type="notification" slot="after"></d2l-count-badge>
70
- </d2l-tab>
71
- <d2l-tab id="beforeshort" text="Biology" slot="tabs">
72
- <d2l-count-badge number="100" size="small" text="100 new notifications" type="notification" slot="before"></d2l-count-badge>
73
- </d2l-tab>
74
- <d2l-tab id="aftershort" text="Biology" slot="tabs">
75
- <d2l-count-badge number="100" size="small" text="100 new notifications" type="notification" slot="after"></d2l-count-badge>
76
- </d2l-tab>
77
- <d2l-tab id="beforeafter" text="Biology" slot="tabs">
78
- <d2l-count-badge number="5" size="small" text="100 new notifications" type="notification" slot="before"></d2l-count-badge>
79
- <d2l-count-badge number="10" size="small" text="100 new notifications" type="notification" slot="after"></d2l-count-badge>
80
- </d2l-tab>
81
- <d2l-tab-panel labelled-by="beforelong" slot="panels">Tab content for All</d2l-tab-panel>
82
- <d2l-tab-panel labelled-by="afterlong" slot="panels">Tab content for Biology</d2l-tab-panel>
83
- <d2l-tab-panel labelled-by="beforeshort" slot="panels">Tab content for Chemistry</d2l-tab-panel>
84
- <d2l-tab-panel labelled-by="aftershort" slot="panels">Tab content for Physics</d2l-tab-panel>
85
- <d2l-tab-panel labelled-by="beforeafter" slot="panels">Tab content for Trig</d2l-tab-panel>
86
- </d2l-tabs>
87
- </template>
88
- </d2l-demo-snippet>
89
-
90
- <h2>Tabs (with custom tab)</h2>
91
-
92
- <d2l-demo-snippet>
93
- <template>
94
- <d2l-tabs text="Courses">
95
- <d2l-tab-custom id="all" slot="tabs"><div style="color: purple;">All</div></d2l-tab-custom>
96
- <d2l-tab-custom id="biology" slot="tabs" selected>
97
- Biology <d2l-count-badge number="100" size="small" text="100 new notifications" type="notification"></d2l-count-badge>
98
- </d2l-tab-custom>
99
- <d2l-tab-custom id="chemistry" slot="tabs">Chemistry</d2l-tab-custom>
100
- <d2l-tab-panel labelled-by="all" slot="panels">Tab content for All</d2l-tab-panel>
101
- <d2l-tab-panel labelled-by="biology" slot="panels">Tab content for Biology</d2l-tab-panel>
102
- <d2l-tab-panel labelled-by="chemistry" slot="panels">Tab content for Chemistry</d2l-tab-panel>
103
- <d2l-dropdown-button-subtle slot="ext" text="Explore Topics">
104
- <d2l-dropdown-menu>
105
- <d2l-menu label="Astronomy">
106
- <d2l-menu-item text="Introduction"></d2l-menu-item>
107
- <d2l-menu-item text="Searching for the Heavens "></d2l-menu-item>
108
- <d2l-menu-item text="The Solar System"></d2l-menu-item>
109
- <d2l-menu-item text="Stars &amp; Galaxies"></d2l-menu-item>
110
- <d2l-menu-item text="The Night Sky"></d2l-menu-item>
111
- <d2l-menu-item text="The Universe"></d2l-menu-item>
112
- </d2l-menu>
113
- </d2l-dropdown-menu>
114
- </d2l-dropdown-button-subtle>
115
- </d2l-tabs>
116
- </template>
117
- </d2l-demo-snippet>
118
-
119
- <h3>Tabs (with slot)</h3>
120
-
121
- <div style="margin-bottom: 30px;">
122
- <d2l-button-subtle id="add" text="Add"></d2l-button-subtle>
123
- <d2l-button-subtle id="add-selected" text="Add Selected"></d2l-button-subtle>
124
- <d2l-button-subtle id="remove" text="Remove"></d2l-button-subtle>
125
- <d2l-button-subtle id="remove-multiple" text="Remove Multiple"></d2l-button-subtle>
126
- </div>
127
- <script>
128
- let newPanelId = 0;
129
- const addPanel = (selected, tabs) => {
130
- newPanelId += 1;
131
- const panel = document.createElement('d2l-tab-panel');
132
- panel.textContent = `Content for new panel ${newPanelId}`;
133
- panel.slot = 'panels';
134
- panel.labelledBy = `newPanel${newPanelId}`;
135
- tabs.appendChild(panel);
136
-
137
- const tab = document.createElement('d2l-tab');
138
- tab.text = `New Panel ${newPanelId}`;
139
- tab.slot = 'tabs';
140
- tab.id = `newPanel${newPanelId}`;
141
- if (selected) tab.selected = true;
142
-
143
- const tabList = [...tabs.querySelectorAll('d2l-tab')];
144
- if (tabList.length < 2) {
145
- const firstPanel = tabs.querySelector('d2l-tab-panel');
146
- tabs.insertBefore(tab, firstPanel);
147
- } else {
148
- tabs.insertBefore(tab, tabList[1]);
149
- }
150
- };
151
- const removeTab = (tabs) => {
152
- const tabElems = [...tabs.querySelectorAll('d2l-tab')];
153
- if (tabElems.length === 0) return;
154
-
155
- const tab = tabElems.length === 1 ? tabElems[0] : tabElems[1];
156
- Promise.resolve(tabs.hideTab((tab))).then(() => {
157
- const panel = tabs.querySelector(`d2l-tab-panel[labelled-by="${tab.id}"]`);
158
- if (panel) tabs.removeChild(panel);
159
- tabs.removeChild(tab);
160
- });
161
- };
162
- const removeTabs = (tabs) => {
163
- const tabElems = [...tabs.querySelectorAll('d2l-tab')];
164
- if (tabElems.length === 0) return;
165
- else if (tabElems.length === 1) removeTab(tabs);
166
- else {
167
- const tab1 = tabElems[0];
168
- const tab2 = tabElems[1];
169
- const animPromises = [];
170
- animPromises.push(tabs.hideTab(tab1));
171
- animPromises.push(tabs.hideTab(tab2));
172
- Promise.all(animPromises).then(() => {
173
- const panel1 = tabs.querySelector(`d2l-tab-panel[labelled-by="${tab1.id}"]`);
174
- const panel2 = tabs.querySelector(`d2l-tab-panel[labelled-by="${tab2.id}"]`);
175
- if (panel1) tabs.removeChild(panel1);
176
- if (panel2) tabs.removeChild(panel2);
177
- tabs.removeChild(tab1);
178
- tabs.removeChild(tab2);
179
- });
180
- }
181
- };
182
-
183
- document.querySelector('#add').addEventListener('click', () => addPanel(false, document.querySelector('#withSlot').querySelector('d2l-tabs')));
184
- document.querySelector('#add-selected').addEventListener('click', () => addPanel(true, document.querySelector('#withSlot').querySelector('d2l-tabs')));
185
- document.querySelector('#remove').addEventListener('click', () => removeTab(document.querySelector('#withSlot').querySelector('d2l-tabs')));
186
- document.querySelector('#remove-multiple').addEventListener('click', () => removeTabs(document.querySelector('#withSlot').querySelector('d2l-tabs')));
187
- </script>
188
-
189
- <d2l-demo-snippet id="withSlot">
190
- <template>
191
- <d2l-tabs>
192
- <d2l-tab id="all" text="All" slot="tabs"></d2l-tab>
193
- <d2l-tab id="biology" text="Biology" slot="tabs" selected></d2l-tab>
194
- <d2l-tab id="chemistry" text="Chemistry" slot="tabs"></d2l-tab>
195
- <d2l-tab id="physics" text="Physics" slot="tabs"></d2l-tab>
196
- <d2l-tab id="math" text="Math" slot="tabs"></d2l-tab>
197
- <d2l-tab id="earth-sciences" text="Earth Sciences" slot="tabs"></d2l-tab>
198
- <d2l-tab-panel labelled-by="all" slot="panels">Tab content for All</d2l-tab-panel>
199
- <d2l-tab-panel labelled-by="biology" slot="panels">Tab content for Biology</d2l-tab-panel>
200
- <d2l-tab-panel labelled-by="chemistry" slot="panels">Tab content for Chemistry</d2l-tab-panel>
201
- <d2l-tab-panel labelled-by="physics" slot="panels">Tab content for Physics</d2l-tab-panel>
202
- <d2l-tab-panel labelled-by="math" slot="panels">Tab content for Math</d2l-tab-panel>
203
- <d2l-tab-panel labelled-by="earth-sciences" slot="panels">Tab content for Earth Sciences</d2l-tab-panel>
204
- <d2l-dropdown-button-subtle slot="ext" text="Explore Topics">
205
- <d2l-dropdown-menu>
206
- <d2l-menu label="Astronomy">
207
- <d2l-menu-item text="Introduction"></d2l-menu-item>
208
- <d2l-menu-item text="Searching for the Heavens "></d2l-menu-item>
209
- <d2l-menu-item text="The Solar System"></d2l-menu-item>
210
- <d2l-menu-item text="Stars &amp; Galaxies"></d2l-menu-item>
211
- <d2l-menu-item text="The Night Sky"></d2l-menu-item>
212
- <d2l-menu-item text="The Universe"></d2l-menu-item>
213
- </d2l-menu>
214
- </d2l-dropdown-menu>
215
- </d2l-dropdown-button-subtle>
216
- </d2l-tabs>
217
- </template>
218
- </d2l-demo-snippet>
219
-
220
- <h3>Tabs (with hidden)</h3>
221
-
222
- <d2l-demo-snippet>
223
- <template>
224
- <div style="display: flex; gap: 0.5rem; margin-bottom: 0.5rem;">
225
- <d2l-button-subtle text="Hide Next Tab" primary aria-label="Hide next visible tab" title="Hide next visible tab" id="hide-next-tab-btn"></d2l-button-subtle>
226
- <d2l-button-subtle text="Show Next Hidden Tab" primary aria-label="Show next hidden tab" title="Show next hidden tab" id="show-next-hidden-tab-btn"></d2l-button-subtle>
227
- </div>
228
- <d2l-tabs text="Courses">
229
- <d2l-tab id="all" text="All" slot="tabs" ></d2l-tab>
230
- <d2l-tab id="biology" text="Biology" slot="tabs"></d2l-tab>
231
- <d2l-tab id="chemistry" text="Chemistry" slot="tabs" ></d2l-tab>
232
- <d2l-tab id="physics" text="Physics" slot="tabs" hidden></d2l-tab>
233
- <d2l-tab id="math" text="Math" slot="tabs" hidden></d2l-tab>
234
- <d2l-tab id="earth-sciences" text="Earth Sciences" slot="tabs" hidden></d2l-tab>
235
- <d2l-tab-panel labelled-by="all" slot="panels" id="all-panel">Tab content for All</d2l-tab-panel>
236
- <d2l-tab-panel labelled-by="biology" slot="panels" id="biology-panel">Tab content for Biology</d2l-tab-panel>
237
- <d2l-tab-panel labelled-by="chemistry" slot="panels">Tab content for Chemistry</d2l-tab-panel>
238
- <d2l-tab-panel labelled-by="physics" slot="panels">Tab content for Physics</d2l-tab-panel>
239
- <d2l-tab-panel labelled-by="math" slot="panels">Tab content for Math</d2l-tab-panel>
240
- <d2l-tab-panel labelled-by="earth-sciences" slot="panels">Tab content for Earth Sciences</d2l-tab-panel>
241
- </d2l-tabs>
242
- <script>
243
- const templateRoot = document.currentScript.parentNode;
244
- const hideBtn = templateRoot.querySelector('#hide-next-tab-btn');
245
- const showBtn = templateRoot.querySelector('#show-next-hidden-tab-btn');
246
- const tabsEl = templateRoot.querySelector('d2l-tabs');
247
-
248
- hideBtn.addEventListener('click', () => {
249
- const visibleTabs = [...tabsEl.querySelectorAll('d2l-tab:not([hidden])')];
250
- if (visibleTabs.length === 0) return;
251
- visibleTabs[0].setAttribute('hidden', '');
252
- });
253
-
254
- showBtn.addEventListener('click', () => {
255
- const hiddenTabs = [...tabsEl.querySelectorAll('d2l-tab[hidden]')];
256
- if (hiddenTabs.length === 0) return;
257
- hiddenTabs[0].removeAttribute('hidden');
258
- });
259
- </script>
260
- </template>
261
- </d2l-demo-snippet>
262
-
263
- <h3>Tabs (responsive)</h3>
264
-
265
- <d2l-demo-snippet>
266
- <template>
267
- <div style="max-width: 500px;">
268
- <d2l-tabs text="Many Miscellaneous Tabs">
269
- <d2l-tab id="s18" text="S18" slot="tabs"></d2l-tab>
270
- <d2l-tab-panel labelled-by="s18" slot="panels">Tab content for S18</d2l-tab-panel>
271
- <d2l-tab id="w18" text="W18" slot="tabs"></d2l-tab>
272
- <d2l-tab-panel labelled-by="w18" slot="panels">Tab content for W18</d2l-tab-panel>
273
- <d2l-tab id="f17" text="F17" slot="tabs"></d2l-tab>
274
- <d2l-tab-panel labelled-by="f17" slot="panels">Tab content for F17</d2l-tab-panel>
275
- <d2l-tab id="s17" text="S17" slot="tabs"></d2l-tab>
276
- <d2l-tab-panel labelled-by="s17" slot="panels">Tab content for S17</d2l-tab-panel>
277
- <d2l-tab id="w17" text="W17" slot="tabs"></d2l-tab>
278
- <d2l-tab-panel labelled-by="w17" slot="panels">Tab content for W17</d2l-tab-panel>
279
- <d2l-tab id="f16" text="F16" slot="tabs"></d2l-tab>
280
- <d2l-tab-panel labelled-by="f16" slot="panels">Tab content for F16</d2l-tab-panel>
281
- <d2l-tab id="s16" text="S16" slot="tabs"></d2l-tab>
282
- <d2l-tab-panel labelled-by="s16" slot="panels">Tab content for S16</d2l-tab-panel>
283
- <d2l-tab id="w16" text="W16" slot="tabs"></d2l-tab>
284
- <d2l-tab-panel labelled-by="w16" slot="panels">Tab content for W16</d2l-tab-panel>
285
- <d2l-tab id="f15" text="F15" slot="tabs"></d2l-tab>
286
- <d2l-tab-panel labelled-by="f15" slot="panels">Tab content for F15</d2l-tab-panel>
287
- <d2l-tab id="s15" text="S15" slot="tabs"></d2l-tab>
288
- <d2l-tab-panel labelled-by="s15" slot="panels">Tab content for S15</d2l-tab-panel>
289
- <d2l-tab id="w15" text="W15" slot="tabs"></d2l-tab>
290
- <d2l-tab-panel labelled-by="w15" slot="panels">Tab content for W15</d2l-tab-panel>
291
- <d2l-tab id="f14" text="F14" slot="tabs"></d2l-tab>
292
- <d2l-tab-panel labelled-by="f14" slot="panels">Tab content for F14</d2l-tab-panel>
293
- <d2l-tab id="s14" text="S14" slot="tabs"></d2l-tab>
294
- <d2l-tab-panel labelled-by="s14" slot="panels">Tab content for S14</d2l-tab-panel>
295
- <d2l-tab id="w14" text="W14" slot="tabs"></d2l-tab>
296
- <d2l-tab-panel labelled-by="w14" slot="panels">Tab content for W14</d2l-tab-panel>
297
- <d2l-tab id="f13" text="F13" slot="tabs"></d2l-tab>
298
- <d2l-tab-panel labelled-by="f13" slot="panels">Tab content for F13</d2l-tab-panel>
299
- <d2l-tab id="s13" text="S13" slot="tabs"></d2l-tab>
300
- <d2l-tab-panel labelled-by="s13" slot="panels">Tab content for S13</d2l-tab-panel>
301
- <d2l-tab id="w13" text="W13" slot="tabs"></d2l-tab>
302
- <d2l-tab-panel labelled-by="w13" slot="panels">Tab content for W13</d2l-tab-panel>
303
- <d2l-tab id="f12" text="F12" slot="tabs"></d2l-tab>
304
- <d2l-tab-panel labelled-by="f12" slot="panels">Tab content for F12</d2l-tab-panel>
305
- <d2l-tab id="s12" text="S12" slot="tabs"></d2l-tab>
306
- <d2l-tab-panel labelled-by="s12" slot="panels">Tab content for S12</d2l-tab-panel>
307
- <d2l-tab id="w12" text="W12" slot="tabs"></d2l-tab>
308
- <d2l-tab-panel labelled-by="w12" slot="panels">Tab content for W12</d2l-tab-panel>
309
- <d2l-tab id="f11" text="F11" slot="tabs"></d2l-tab>
310
- <d2l-tab-panel labelled-by="f11" slot="panels">Tab content for F11</d2l-tab-panel>
311
- <d2l-tab id="s11" text="S11" slot="tabs"></d2l-tab>
312
- <d2l-tab-panel labelled-by="s11" slot="panels">Tab content for S11</d2l-tab-panel>
313
- </d2l-tabs>
314
- </div>
315
- </template>
316
- </d2l-demo-snippet>
317
-
318
- <h3>Tabs (max-to-show)</h3>
319
-
320
- <d2l-demo-snippet>
321
- <template>
322
- <d2l-tabs max-to-show="3" text="Courses">
323
- <d2l-tab id="all" text="All" slot="tabs"></d2l-tab>
324
- <d2l-tab-panel labelled-by="all" slot="panels">Tab content for All</d2l-tab-panel>
325
- <d2l-tab id="biology" text="Biology" slot="tabs" selected></d2l-tab>
326
- <d2l-tab-panel labelled-by="biology" slot="panels">Tab content for Biology</d2l-tab-panel>
327
- <d2l-tab id="chemistry" text="Chemistry" slot="tabs"></d2l-tab>
328
- <d2l-tab-panel labelled-by="chemistry" slot="panels">Tab content for Chemistry</d2l-tab-panel>
329
- <d2l-tab id="earth-sciences" text="Earth Sciences" slot="tabs"></d2l-tab>
330
- <d2l-tab-panel labelled-by="earth-sciences" slot="panels">Tab content for Earth Sciences</d2l-tab-panel>
331
- <d2l-tab id="physics" text="Physics" slot="tabs"></d2l-tab>
332
- <d2l-tab-panel labelled-by="physics" slot="panels">Tab content for Physics</d2l-tab-panel>
333
- <d2l-tab id="math" text="Math" slot="tabs"></d2l-tab>
334
- <d2l-tab-panel labelled-by="math" slot="panels">Tab content for Math</d2l-tab-panel>
335
- <d2l-tab id="community" text="Community" slot="tabs"></d2l-tab>
336
- <d2l-tab-panel labelled-by="community" slot="panels">Tab content for Community</d2l-tab-panel>
337
- </d2l-tabs>
338
- </template>
339
- </d2l-demo-snippet>
340
-
341
- <h2>Tabs (before selected)</h2>
342
-
343
- <d2l-demo-snippet>
344
- <template>
345
- <d2l-tabs text="Courses" id="courses-before-selection">
346
- <d2l-tab id="all" text="All" slot="tabs"></d2l-tab>
347
- <d2l-tab id="biology" text="Biology" slot="tabs" selected></d2l-tab>
348
- <d2l-tab-panel labelled-by="all" slot="panels" id="all-panel">Tab content for All</d2l-tab-panel>
349
- <d2l-tab-panel labelled-by="biology" slot="panels" id="biology-panel">Tab content for Biology</d2l-tab-panel>
350
- </d2l-tabs>
351
-
352
- <script>
353
- document.querySelector('#courses-before-selection').addEventListener('d2l-tab-before-selected', e => {
354
- e.preventDefault();
355
- setTimeout(() => {
356
- e.detail.select();
357
- }, 2000);
358
- });
359
- </script>
360
- </template>
361
- </d2l-demo-snippet>
362
-
363
- <h2>Tabs (before selected, don't select)</h2>
364
-
365
- <d2l-demo-snippet>
366
- <template>
367
- <d2l-tabs text="Courses" id="courses-before-selection-reset">
368
- <d2l-tab id="all" text="All" slot="tabs"></d2l-tab>
369
- <d2l-tab id="biology" text="Biology" slot="tabs" selected></d2l-tab>
370
- <d2l-tab-panel labelled-by="all" slot="panels" id="all-panel">Tab content for All</d2l-tab-panel>
371
- <d2l-tab-panel labelled-by="biology" slot="panels" id="biology-panel">Tab content for Biology</d2l-tab-panel>
372
- </d2l-tabs>
373
-
374
- <script>
375
- document.querySelector('#courses-before-selection-reset').addEventListener('d2l-tab-before-selected', e => {
376
- e.preventDefault();
377
- setTimeout(() => {
378
- e.detail.reset();
379
- }, 2000);
380
- });
381
- </script>
382
- </template>
383
- </d2l-demo-snippet>
384
-
385
- <h2>Tabs (array)</h2>
386
-
387
- <d2l-demo-snippet>
388
- <template>
389
- <d2l-tabs-array></d2l-tabs-array>
390
- </template>
391
- </d2l-demo-snippet>
392
-
393
- <h2>Tabs (simple empty illustrated)</h2>
394
-
395
- <d2l-demo-snippet>
396
- <template>
397
- <d2l-tabs text="Simple Empty States">
398
- <d2l-tab id="simple-empty-one" slot="tabs" text="One"></d2l-tab>
399
- <d2l-tab id="simple-empty-two" slot="tabs" text="Two"></d2l-tab>
400
- <d2l-tab-panel labelled-by="simple-empty-one" slot="panels">
401
- <d2l-empty-state-illustrated illustration-name="race" title-text="No Items in First Tab" description="none"></d2l-empty-state-illustrated>
402
- </d2l-tab-panel>
403
- <d2l-tab-panel labelled-by="simple-empty-two" slot="panels">
404
- <d2l-empty-state-illustrated illustration-name="calendar" title-text="No Items in Second Tab" description="none"></d2l-empty-state-illustrated>
405
- </d2l-tab-panel>
406
- </d2l-tabs>
407
- </template>
408
- </d2l-demo-snippet>
409
-
410
- <h2>Tabs (deprecated structure)</h2>
411
-
412
- <d2l-demo-snippet>
413
- <template>
414
- <d2l-tabs>
415
- <d2l-tab-panel text="All">Tab content for All</d2l-tab-panel>
416
- <d2l-tab-panel text="Biology">Tab content for Biology</d2l-tab-panel>
417
- <d2l-tab-panel text="Chemistry">Tab content for Chemistry</d2l-tab-panel>
418
- <d2l-tab-panel text="Earth &amp; Planetary Sciences">Tab content for Earth &amp; Planetary Sciences</d2l-tab-panel>
419
- <d2l-tab-panel text="Physics">Tab content for Physics</d2l-tab-panel>
420
- <d2l-tab-panel text="Math">Tab content for Math</d2l-tab-panel>
421
- </d2l-tabs>
422
- </template>
423
- </d2l-demo-snippet>
424
-
425
- <h3>Tabs (deprecated; with slot)</h3>
426
-
427
- <div style="margin-bottom: 30px;">
428
- <d2l-button-subtle id="add-deprecated" text="Add"></d2l-button-subtle>
429
- <d2l-button-subtle id="add-selected-deprecated" text="Add Selected"></d2l-button-subtle>
430
- <d2l-button-subtle id="remove-deprecated" text="Remove"></d2l-button-subtle>
431
- <d2l-button-subtle id="remove-multiple-deprecated" text="Remove Multiple"></d2l-button-subtle>
432
- </div>
433
- <script>
434
- let newPanelIdDeprecated = 0;
435
- const addPanelDeprecated = (selected, tabs) => {
436
- newPanelIdDeprecated += 1;
437
- const panel = document.createElement('d2l-tab-panel');
438
- panel.selected = selected;
439
- panel.text = `New Panel ${newPanelIdDeprecated}`;
440
- panel.textContent = `Content for new panel ${newPanelIdDeprecated}`;
441
- const panels = [...tabs.querySelectorAll('d2l-tab-panel')];
442
- if (panels.length < 2) tabs.appendChild(panel);
443
- else tabs.insertBefore(panel, panels[1]);
444
- };
445
- const removePanelDeprecated = (tabs) => {
446
- const panels = [...tabs.querySelectorAll('d2l-tab-panel')];
447
- if (panels.length === 0) return;
448
- if (panels.length === 1) tabs.removeChild(panels[0]);
449
- else tabs.removeChild(panels[1]);
450
- };
451
- const removePanelsDeprecated = (tabs) => {
452
- const panels = [...tabs.querySelectorAll('d2l-tab-panel')];
453
- if (panels.length === 0) return;
454
- if (panels.length === 1) tabs.removeChild(panels[0]);
455
- else {
456
- tabs.removeChild(panels[1]);
457
- tabs.removeChild(panels[0]);
458
- }
459
- };
460
-
461
- document.querySelector('#add-deprecated').addEventListener('click', () => addPanelDeprecated(false, document.querySelector('#withSlotDeprecated').querySelector('d2l-tabs')));
462
- document.querySelector('#add-selected-deprecated').addEventListener('click', () => addPanelDeprecated(true, document.querySelector('#withSlotDeprecated').querySelector('d2l-tabs')));
463
- document.querySelector('#remove-deprecated').addEventListener('click', () => removePanelDeprecated(document.querySelector('#withSlotDeprecated').querySelector('d2l-tabs')));
464
- document.querySelector('#remove-multiple-deprecated').addEventListener('click', () => removePanelsDeprecated(document.querySelector('#withSlotDeprecated').querySelector('d2l-tabs')));
465
- </script>
466
-
467
- <d2l-demo-snippet id="withSlotDeprecated">
468
- <template>
469
- <d2l-tabs>
470
- <d2l-tab-panel text="Biology">Tab content for Biology</d2l-tab-panel>
471
- <d2l-tab-panel text="Chemistry">Tab content for Chemistry</d2l-tab-panel>
472
- <d2l-tab-panel text="Earth Sciences">Tab content for Earth Sciences</d2l-tab-panel>
473
- <d2l-tab-panel text="Physics">Tab content for Physics</d2l-tab-panel>
474
- <d2l-tab-panel text="Math">Tab content for Math</d2l-tab-panel>
475
- <d2l-dropdown-button-subtle slot="ext" text="Explore Topics">
476
- <d2l-dropdown-menu>
477
- <d2l-menu label="Astronomy">
478
- <d2l-menu-item text="Introduction"></d2l-menu-item>
479
- <d2l-menu-item text="Searching for the Heavens "></d2l-menu-item>
480
- <d2l-menu-item text="The Solar System"></d2l-menu-item>
481
- <d2l-menu-item text="Stars &amp; Galaxies"></d2l-menu-item>
482
- <d2l-menu-item text="The Night Sky"></d2l-menu-item>
483
- <d2l-menu-item text="The Universe"></d2l-menu-item>
484
- </d2l-menu>
485
- </d2l-dropdown-menu>
486
- </d2l-dropdown-button-subtle>
487
- </d2l-tabs>
488
- </template>
489
- </d2l-demo-snippet>
490
-
491
- <h3>Tabs (deprecated; responsive)</h3>
492
-
493
- <d2l-demo-snippet>
494
- <template>
495
- <div style="max-width: 500px;">
496
- <d2l-tabs>
497
- <d2l-tab-panel text="S18">Tab content for S18</d2l-tab-panel>
498
- <d2l-tab-panel text="W18">Tab content for W18</d2l-tab-panel>
499
- <d2l-tab-panel text="F17">Tab content for F17</d2l-tab-panel>
500
- <d2l-tab-panel text="S17">Tab content for S17</d2l-tab-panel>
501
- <d2l-tab-panel text="W17">Tab content for W17</d2l-tab-panel>
502
- <d2l-tab-panel text="F16">Tab content for F16</d2l-tab-panel>
503
- <d2l-tab-panel text="S16">Tab content for S16</d2l-tab-panel>
504
- <d2l-tab-panel text="W16">Tab content for W16</d2l-tab-panel>
505
- <d2l-tab-panel text="F15">Tab content for F15</d2l-tab-panel>
506
- <d2l-tab-panel text="S15">Tab content for S15</d2l-tab-panel>
507
- <d2l-tab-panel text="W15">Tab content for W15</d2l-tab-panel>
508
- <d2l-tab-panel text="F14">Tab content for F14</d2l-tab-panel>
509
- <d2l-tab-panel text="S14">Tab content for S14</d2l-tab-panel>
510
- <d2l-tab-panel text="W14">Tab content for W14</d2l-tab-panel>
511
- <d2l-tab-panel text="F13">Tab content for F13</d2l-tab-panel>
512
- <d2l-tab-panel text="S13">Tab content for S13</d2l-tab-panel>
513
- <d2l-tab-panel text="W13">Tab content for W13</d2l-tab-panel>
514
- <d2l-tab-panel text="F12">Tab content for F12</d2l-tab-panel>
515
- <d2l-tab-panel text="S12">Tab content for S12</d2l-tab-panel>
516
- <d2l-tab-panel text="W12">Tab content for W12</d2l-tab-panel>
517
- <d2l-tab-panel text="F11">Tab content for F11</d2l-tab-panel>
518
- <d2l-tab-panel text="S11">Tab content for S11</d2l-tab-panel>
519
- </d2l-tabs>
520
- </div>
521
- </template>
522
- </d2l-demo-snippet>
523
-
524
- <h3>Tabs (deprecated; max-to-show)</h3>
525
-
526
- <d2l-demo-snippet>
527
- <template>
528
- <d2l-tabs max-to-show="3">
529
- <d2l-tab-panel text="All">Tab content for All</d2l-tab-panel>
530
- <d2l-tab-panel selected text="Biology">Tab content for Biology</d2l-tab-panel>
531
- <d2l-tab-panel text="Chemistry">Tab content for Chemistry</d2l-tab-panel>
532
- <d2l-tab-panel text="Earth Sciences">Tab content for Earth Sciences</d2l-tab-panel>
533
- <d2l-tab-panel text="Physics">Tab content for Physics</d2l-tab-panel>
534
- <d2l-tab-panel text="Math">Tab content for Math</d2l-tab-panel>
535
- <d2l-tab-panel text="Community">Tab content for Community</d2l-tab-panel>
536
- </d2l-tabs>
537
- </template>
538
- </d2l-demo-snippet>
539
-
540
- </d2l-demo-page>
541
-
542
- <script>
543
- document.addEventListener('d2l-tab-panel-selected', (e) => {
544
- console.log('tab panel selected', e);
545
- });
546
- document.addEventListener('d2l-tab-selected', (e) => {
547
- console.log('tab selected', e);
548
- });
549
- document.addEventListener('d2l-tab-panel-text-changed', (e) => {
550
- console.log('tab panel text changed', e);
551
- });
552
- document.addEventListener('d2l-tab-content-change', (e) => {
553
- console.log('tab content changed', e);
554
- });
555
- </script>
556
-
557
- </body>
558
- </html>