@brightspace-ui/core 3.227.3 → 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 (179) hide show
  1. package/components/button/button.js +8 -8
  2. package/components/colors/colors.js +8 -0
  3. package/components/count-badge/count-badge-icon.js +1 -1
  4. package/components/count-badge/count-badge-mixin.js +4 -4
  5. package/components/demo/test/demo-page-settings.test.js +25 -0
  6. package/components/demo/test/demo-page.test.js +17 -0
  7. package/package.json +1 -1
  8. package/components/alert/demo/alert-toast.html +0 -106
  9. package/components/alert/demo/alert.html +0 -82
  10. package/components/backdrop/demo/backdrop-loading.html +0 -166
  11. package/components/backdrop/demo/backdrop.html +0 -57
  12. package/components/breadcrumbs/demo/breadcrumbs.html +0 -53
  13. package/components/button/demo/button-add.html +0 -55
  14. package/components/button/demo/button-copy.html +0 -122
  15. package/components/button/demo/button-icon.html +0 -174
  16. package/components/button/demo/button-move.html +0 -38
  17. package/components/button/demo/button-split.html +0 -76
  18. package/components/button/demo/button-subtle.html +0 -132
  19. package/components/button/demo/button-toggle.html +0 -80
  20. package/components/button/demo/button.html +0 -67
  21. package/components/button/demo/floating-buttons-in-frame.html +0 -44
  22. package/components/button/demo/floating-buttons-in-tabs.html +0 -244
  23. package/components/button/demo/floating-buttons-page.html +0 -100
  24. package/components/button/demo/floating-buttons.html +0 -101
  25. package/components/calendar/demo/calendar.html +0 -76
  26. package/components/card/demo/card.html +0 -304
  27. package/components/collapsible-panel/demo/collapsible-panel.html +0 -218
  28. package/components/colors/demo/color-swatch.js +0 -240
  29. package/components/colors/demo/colors.html +0 -139
  30. package/components/count-badge/demo/count-badge-icon.html +0 -48
  31. package/components/count-badge/demo/count-badge.html +0 -73
  32. package/components/demo/demo/demo-snippet.html +0 -71
  33. package/components/description-list/demo/description-list-test.js +0 -142
  34. package/components/description-list/demo/description-list.html +0 -48
  35. package/components/dialog/demo/dialog-async-content-until.js +0 -89
  36. package/components/dialog/demo/dialog-async-content.js +0 -72
  37. package/components/dialog/demo/dialog-confirm.html +0 -102
  38. package/components/dialog/demo/dialog-container.js +0 -40
  39. package/components/dialog/demo/dialog-fullscreen.html +0 -273
  40. package/components/dialog/demo/dialog-nested.html +0 -94
  41. package/components/dialog/demo/dialog.html +0 -398
  42. package/components/dropdown/demo/dropdown-button.html +0 -102
  43. package/components/dropdown/demo/dropdown-context-menu.html +0 -129
  44. package/components/dropdown/demo/dropdown-flicker-inner.html +0 -70
  45. package/components/dropdown/demo/dropdown-flicker.html +0 -142
  46. package/components/dropdown/demo/dropdown-menu-demo-view.js +0 -37
  47. package/components/dropdown/demo/dropdown-menu.html +0 -227
  48. package/components/dropdown/demo/dropdown-more.html +0 -160
  49. package/components/dropdown/demo/dropdown-positioning.html +0 -127
  50. package/components/dropdown/demo/dropdown-tabs.html +0 -87
  51. package/components/dropdown/demo/dropdown.html +0 -217
  52. package/components/empty-state/demo/empty-state.html +0 -94
  53. package/components/expand-collapse/demo/expand-collapse-content.html +0 -58
  54. package/components/filter/demo/filter-load-more-demo.js +0 -182
  55. package/components/filter/demo/filter-overflow-group.html +0 -246
  56. package/components/filter/demo/filter-search-demo.js +0 -135
  57. package/components/filter/demo/filter-tags.html +0 -115
  58. package/components/filter/demo/filter.html +0 -230
  59. package/components/focus-trap/demo/focus-trap.html +0 -75
  60. package/components/form/demo/form-demo.js +0 -105
  61. package/components/form/demo/form-dialog-demo.js +0 -94
  62. package/components/form/demo/form-panel-demo.js +0 -89
  63. package/components/form/demo/form.html +0 -37
  64. package/components/hierarchical-view/demo/hierarchical-view.html +0 -221
  65. package/components/html-block/demo/html-block-code.html +0 -55
  66. package/components/html-block/demo/html-block.html +0 -696
  67. package/components/icons/demo/icon-color-override.js +0 -23
  68. package/components/icons/demo/icon-custom.html +0 -112
  69. package/components/icons/demo/icon-size-override.js +0 -24
  70. package/components/icons/demo/icon.html +0 -52
  71. package/components/inputs/demo/input-checkbox.html +0 -118
  72. package/components/inputs/demo/input-color-palette.js +0 -67
  73. package/components/inputs/demo/input-color.html +0 -110
  74. package/components/inputs/demo/input-date-range.html +0 -114
  75. package/components/inputs/demo/input-date-time-range.html +0 -128
  76. package/components/inputs/demo/input-date-time.html +0 -100
  77. package/components/inputs/demo/input-date.html +0 -81
  78. package/components/inputs/demo/input-group.html +0 -56
  79. package/components/inputs/demo/input-number.html +0 -136
  80. package/components/inputs/demo/input-percent.html +0 -99
  81. package/components/inputs/demo/input-radio-label-test.js +0 -45
  82. package/components/inputs/demo/input-radio-solo-test.js +0 -47
  83. package/components/inputs/demo/input-radio.html +0 -119
  84. package/components/inputs/demo/input-search.html +0 -75
  85. package/components/inputs/demo/input-select-test.js +0 -60
  86. package/components/inputs/demo/input-select.html +0 -45
  87. package/components/inputs/demo/input-text.html +0 -163
  88. package/components/inputs/demo/input-textarea.html +0 -124
  89. package/components/inputs/demo/input-time-range.html +0 -121
  90. package/components/inputs/demo/input-time.html +0 -95
  91. package/components/link/demo/link.html +0 -111
  92. package/components/list/demo/demo-list-nav.js +0 -170
  93. package/components/list/demo/demo-list-nested-iterations-helper.js +0 -168
  94. package/components/list/demo/demo-list-nested-lazy-load.js +0 -133
  95. package/components/list/demo/demo-list-nested.js +0 -291
  96. package/components/list/demo/demo-list.js +0 -241
  97. package/components/list/demo/list-color.html +0 -423
  98. package/components/list/demo/list-demo-scenarios.js +0 -380
  99. package/components/list/demo/list-drag-and-drop-position.js +0 -102
  100. package/components/list/demo/list-drag-and-drop.html +0 -82
  101. package/components/list/demo/list-expand-collapse.html +0 -136
  102. package/components/list/demo/list-item-actions.html +0 -371
  103. package/components/list/demo/list-item-custom.js +0 -204
  104. package/components/list/demo/list-item-layouts.html +0 -331
  105. package/components/list/demo/list-item-scroll.html +0 -122
  106. package/components/list/demo/list-layout.html +0 -575
  107. package/components/list/demo/list-nav.html +0 -110
  108. package/components/list/demo/list-nested.html +0 -270
  109. package/components/list/demo/list-selection.html +0 -301
  110. package/components/list/demo/list.html +0 -319
  111. package/components/loading-spinner/demo/loading-spinner-override.js +0 -34
  112. package/components/loading-spinner/demo/loading-spinner.html +0 -63
  113. package/components/menu/demo/checkbox-menu.html +0 -52
  114. package/components/menu/demo/custom-menu-item.js +0 -37
  115. package/components/menu/demo/custom-view.js +0 -63
  116. package/components/menu/demo/menu.html +0 -211
  117. package/components/menu/demo/radio-menu.html +0 -52
  118. package/components/meter/demo/meter.html +0 -115
  119. package/components/more-less/demo/more-less-test.js +0 -67
  120. package/components/more-less/demo/more-less.html +0 -71
  121. package/components/object-property-list/demo/object-property-list.html +0 -99
  122. package/components/offscreen/demo/offscreen-demo.js +0 -16
  123. package/components/offscreen/demo/offscreen.html +0 -44
  124. package/components/overflow-group/demo/demo-overflow-group.js +0 -29
  125. package/components/overflow-group/demo/overflow-group.html +0 -110
  126. package/components/paging/demo/pager-load-more.html +0 -120
  127. package/components/popover/demo/popover.html +0 -309
  128. package/components/progress/demo/progress.html +0 -104
  129. package/components/scroll-wrapper/demo/scroll-wrapper-test.js +0 -108
  130. package/components/scroll-wrapper/demo/scroll-wrapper.html +0 -52
  131. package/components/selection/demo/demo-selection.js +0 -35
  132. package/components/selection/demo/selection.html +0 -198
  133. package/components/skeleton/demo/skeleton-group-nested-test.js +0 -71
  134. package/components/skeleton/demo/skeleton-group-test-wrapper.js +0 -18
  135. package/components/skeleton/demo/skeleton-group-test.js +0 -91
  136. package/components/skeleton/demo/skeleton-mixin.html +0 -78
  137. package/components/skeleton/demo/skeleton-test-box.js +0 -34
  138. package/components/skeleton/demo/skeleton-test-container.js +0 -45
  139. package/components/skeleton/demo/skeleton-test-heading.js +0 -44
  140. package/components/skeleton/demo/skeleton-test-link.js +0 -47
  141. package/components/skeleton/demo/skeleton-test-paragraph.js +0 -54
  142. package/components/skeleton/demo/skeleton-test-stack.js +0 -38
  143. package/components/skeleton/demo/skeleton-test-width.js +0 -20
  144. package/components/sorting/demo/sort.html +0 -37
  145. package/components/status-indicator/demo/status-indicator.html +0 -99
  146. package/components/switch/demo/switch.html +0 -95
  147. package/components/table/demo/table-test.js +0 -271
  148. package/components/table/demo/table.html +0 -107
  149. package/components/tabs/demo/tab-custom.js +0 -39
  150. package/components/tabs/demo/tabs-array.js +0 -43
  151. package/components/tabs/demo/tabs.html +0 -558
  152. package/components/tag-list/demo/tag-list.html +0 -117
  153. package/components/tooltip/demo/tooltip.html +0 -275
  154. package/components/typography/demo/typography.html +0 -93
  155. package/components/view-switcher/demo/demo-table-view.js +0 -41
  156. package/components/view-switcher/demo/view-switcher.html +0 -71
  157. package/directives/animate/demo/animate-test.js +0 -98
  158. package/directives/animate/demo/index.html +0 -23
  159. package/helpers/demo/announce-test.js +0 -37
  160. package/helpers/demo/announce.html +0 -19
  161. package/helpers/demo/dismissible-test.js +0 -66
  162. package/helpers/demo/dismissible.html +0 -38
  163. package/helpers/demo/gestures.html +0 -58
  164. package/helpers/demo/prism.html +0 -694
  165. package/helpers/demo/template-tags.html +0 -118
  166. package/mixins/arrow-keys/demo/arrow-keys-mixin.html +0 -29
  167. package/mixins/arrow-keys/demo/arrow-keys-test.js +0 -38
  168. package/mixins/async-container/demo/async-container.html +0 -109
  169. package/mixins/async-container/demo/async-container.js +0 -27
  170. package/mixins/async-container/demo/async-item.js +0 -80
  171. package/mixins/labelled/demo/labelled-mixin.html +0 -90
  172. package/mixins/localize/demo/localize-mixin-greeting.js +0 -39
  173. package/mixins/localize/demo/localize-mixin-mission.js +0 -25
  174. package/mixins/localize/demo/localize-mixin.html +0 -28
  175. package/templates/primary-secondary/demo/form.html +0 -55
  176. package/templates/primary-secondary/demo/index.html +0 -27
  177. package/templates/primary-secondary/demo/integration.html +0 -457
  178. package/templates/primary-secondary/demo/overflow-hidden.html +0 -22
  179. package/templates/primary-secondary/demo/width-type-normal.html +0 -26
@@ -1,182 +0,0 @@
1
- import '../filter.js';
2
- import '../filter-dimension-set.js';
3
- import '../filter-dimension-set-value.js';
4
- import '../filter-overflow-group.js';
5
- import { html, LitElement } from 'lit';
6
- import { repeat } from 'lit/directives/repeat.js';
7
-
8
- const FullData = [
9
- {
10
- key: 'course',
11
- text: 'Course',
12
- values: [
13
- { key: 'art', selected:false, text: 'Art' },
14
- { key: 'astronomy', selected:false, text: 'Astronomy' },
15
- { key: 'biology', selected:true, text: 'Biology' },
16
- { key: 'chemistry', selected:false, text: 'Chemistry' },
17
- { key: 'drama', selected:false, text: 'Drama' },
18
- { key: 'english', selected:false, text: 'English' },
19
- { key: 'how-to', selected:false, text: 'How To Write a How To Article With a Flashy Title' },
20
- { key: 'math', selected:false, text: 'Math' },
21
- { key: 'physics', selected:false, text: 'Physics' },
22
- { key: 'stats', selected:false, text: 'Statistics' },
23
- { key: 'writerscraft', selected:true, text: 'Writer\'s Craft' },
24
- ],
25
- loadCount: 6
26
- },
27
- {
28
- key: 'role',
29
- text: 'Role',
30
- values: [
31
- { key: 'admin', selected:false, text: 'Admin' },
32
- { key: 'instructor', selected:false, text: 'Instructor' },
33
- { key: 'student', selected:false, text: 'Student' }
34
- ],
35
- loadCount: 2
36
- },
37
- {
38
- key: 'dep',
39
- text: 'Department',
40
- values: [
41
- { key: 'english', selected:false, text: 'English' },
42
- { key: 'spanish', selected:false, text: 'Spanish' },
43
- { key: 'science', selected:false, text: 'Science' }
44
- ],
45
- loadCount: 2
46
- },
47
- {
48
- key: 'grad',
49
- text: 'Grade Level',
50
- values: [
51
- { key: '1', selected:false, text: '1st Grade' },
52
- { key: '2', selected:false, text: '2nd Grade' },
53
- { key: '3', selected:false, text: '3rd Grade' }
54
- ],
55
- loadCount: 2
56
- }
57
- ,
58
- {
59
- key: 'city',
60
- text: 'City',
61
- values: [
62
- { key: '1', selected:false, text: '1st City' },
63
- { key: '2', selected:false, text: '2nd City' },
64
- { key: '3', selected:false, text: '3rd City' }
65
- ],
66
- loadCount: 2
67
- }
68
- ];
69
-
70
- class FilterLoadMoreDemo extends LitElement {
71
-
72
- static get properties() {
73
- return {
74
- useOverflowGroup: { type: Boolean, attribute: 'use-overflow-group' }
75
- };
76
- }
77
-
78
- constructor() {
79
- super();
80
- this._dimensions = FullData.map(dim => ({ ...dim }));
81
- }
82
-
83
- render() {
84
- if (this.useOverflowGroup) return html`<d2l-filter-overflow-group min-to-show="0">
85
- ${repeat(this._dimensions, dimension => dimension.key, dimension => html`<d2l-filter
86
- @d2l-filter-change="${this._handleFilterChange}"
87
- @d2l-filter-dimension-load-more=${this._handleLoadMore}
88
- @d2l-filter-dimension-search=${this._handleSearch}>
89
- ${this._renderDimensionSet(dimension)}
90
- </d2l-filter>`)}
91
- </d2l-filter-overflow-group>`;
92
- return html`
93
- <d2l-filter
94
- @d2l-filter-change="${this._handleFilterChange}"
95
- @d2l-filter-dimension-load-more=${this._handleLoadMore}
96
- @d2l-filter-dimension-search=${this._handleSearch}>
97
- ${repeat(this._dimensions, dimension => dimension.key, dimension => this._renderDimensionSet(dimension))}
98
- </d2l-filter>
99
- `;
100
- }
101
-
102
- _addKeys(dimension, addCount, searchValue = '') {
103
- dimension.loadCount += addCount;
104
- const keys = dimension.values.filter(val => this._textIsInSearch(searchValue, val.text));
105
- const selectedKeys = [];
106
- const unselectedKeys = [];
107
- for (const val of keys) {
108
- if (val.selected) {
109
- selectedKeys.push(val.key);
110
- } else {
111
- unselectedKeys.push(val.key);
112
- }
113
- }
114
-
115
- dimension.loadCount = Math.max(selectedKeys.length, dimension.loadCount);
116
- dimension.hasMore = keys.length > dimension.loadCount;
117
-
118
- return selectedKeys.concat(unselectedKeys).slice(0, dimension.loadCount);
119
- }
120
-
121
- _handleFilterChange(e) {
122
- e.detail.dimensions.forEach(dimension => {
123
- const localData = Object.values(this._dimensions.find(dim => dim.key === dimension.dimensionKey).values);
124
- const FullDataValues = FullData.find(dim => dim.key === dimension.dimensionKey).values;
125
- if (dimension.cleared) {
126
- localData.forEach(value => value.selected = false);
127
- FullDataValues.forEach(value => value.selected = false);
128
- } else {
129
- dimension.changes.forEach(change => {
130
- localData.find(value => value.key === change.valueKey).selected = change.selected;
131
- FullDataValues.find(value => value.key === change.valueKey).selected = change.selected;
132
- });
133
- }
134
- });
135
- this.requestUpdate();
136
- }
137
-
138
- async _handleLoadMore(e) {
139
- const dimensionKey = e.detail.key;
140
- const dimension = this._dimensions.find(dim => dim.key === dimensionKey);
141
-
142
- const keysToDisplay = this._addKeys(dimension, 2, e.detail.value);
143
- this.requestUpdate();
144
- await this.updateComplete;
145
- e.detail.loadMoreCompleteCallback({ keysToDisplay });
146
- }
147
-
148
- async _handleSearch(e) {
149
- const dimensionKey = e.detail.key;
150
- const dimension = this._dimensions.find(dim => dim.key === dimensionKey);
151
- const dimData = FullData.find(dim => dim.key === dimensionKey);
152
-
153
- dimension.loadCount = 0;
154
- const keysToDisplay = this._addKeys(dimension, dimData.loadCount, e.detail.value);
155
-
156
- this.requestUpdate();
157
- await this.updateComplete;
158
- e.detail.searchCompleteCallback({ keysToDisplay });
159
- }
160
-
161
- _renderDimensionSet(dimension) {
162
- const { values, key, text, hasMore } = dimension;
163
-
164
- return html`
165
- <d2l-filter-dimension-set key="${key}" text="${text}" ?has-more="${hasMore}" search-type="manual">
166
- ${repeat(Object.values(values).sort((a, b) => (a.text < b.text ? -1 : 0)), value => value.key, value => html`
167
- <d2l-filter-dimension-set-value
168
- key="${value.key}"
169
- text="${value.text}"
170
- ?selected=${value.selected}>
171
- </d2l-filter-dimension-set-value>
172
- `)}
173
- </d2l-filter-dimension-set>`;
174
- }
175
-
176
- _textIsInSearch(searchValue, text) {
177
- return searchValue === '' || text.toLowerCase().indexOf(searchValue.toLowerCase()) > -1;
178
- }
179
-
180
- }
181
- customElements.define('d2l-filter-load-more-demo', FilterLoadMoreDemo);
182
-
@@ -1,246 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <link rel="stylesheet" href="../../demo/styles.css" type="text/css">
6
- <script type="module">
7
- import '../../demo/demo-page.js';
8
- import '../../filter/filter.js';
9
- import '../../filter/filter-dimension-set.js';
10
- import '../../filter/filter-dimension-set-value.js';
11
- import '../../filter/filter-overflow-group.js';
12
- import '../../filter/filter-tags.js';
13
- import './filter-load-more-demo.js';
14
- </script>
15
- <meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1.0">
16
- <meta charset="UTF-8">
17
- <style>
18
- d2l-filter-tags {
19
- padding-top: 1rem;
20
- }
21
- </style>
22
- </head>
23
-
24
- <body unresolved>
25
-
26
- <d2l-demo-page page-title="d2l-filter-overflow-group">
27
-
28
- <h2>Filter Overflow Group</h2>
29
- <d2l-demo-snippet>
30
- <template>
31
- <d2l-filter-overflow-group>
32
- <d2l-filter>
33
- <d2l-filter-dimension-set key="skill" text="Skill">
34
- <d2l-filter-dimension-set-value key="communication" text="Fall"></d2l-filter-dimension-set-value>
35
- <d2l-filter-dimension-set-value key="leadership" text="Winter"></d2l-filter-dimension-set-value>
36
- <d2l-filter-dimension-set-value key="management" text="Spring"></d2l-filter-dimension-set-value>
37
- <d2l-filter-dimension-set-value key="planning" text="Summer"></d2l-filter-dimension-set-value>
38
- </d2l-filter-dimension-set>
39
- </d2l-filter>
40
- <d2l-filter>
41
- <d2l-filter-dimension-set key="type" text="Type" selection-single>
42
- <d2l-filter-dimension-set-value key="certificate" text="Certificate"></d2l-filter-dimension-set-value>
43
- <d2l-filter-dimension-set-value key="degree" text="Degree"></d2l-filter-dimension-set-value>
44
- <d2l-filter-dimension-set-value key="diploma" text="Diploma"></d2l-filter-dimension-set-value>
45
- <d2l-filter-dimension-set-value key="course" text="Course"></d2l-filter-dimension-set-value>
46
- </d2l-filter-dimension-set>
47
- </d2l-filter>
48
- <d2l-filter>
49
- <d2l-filter-dimension-set key="provider" text="Semester3">
50
- <d2l-filter-dimension-set-value key="mcmaster" text="McMaster"></d2l-filter-dimension-set-value>
51
- <d2l-filter-dimension-set-value key="powered" text="PowerED"></d2l-filter-dimension-set-value>
52
- <d2l-filter-dimension-set-value key="guelph" text="University of Guelph"></d2l-filter-dimension-set-value>
53
- <d2l-filter-dimension-set-value key="manitoba" text="University of Manitoba"></d2l-filter-dimension-set-value>
54
- </d2l-filter-dimension-set>
55
- </d2l-filter>
56
- <d2l-filter>
57
- <d2l-filter-dimension-set key="format" text="Format">
58
- <d2l-filter-dimension-set-value key="selfpaced" text="Self-Paced"></d2l-filter-dimension-set-value>
59
- <d2l-filter-dimension-set-value key="instructor" text="Instructor Lead" selected></d2l-filter-dimension-set-value>
60
- </d2l-filter-dimension-set>
61
- </d2l-filter>
62
- <d2l-filter>
63
- <d2l-filter-dimension-set key="language" text="Language" selection-single>
64
- <d2l-filter-dimension-set-value key="english" text="English"></d2l-filter-dimension-set-value>
65
- <d2l-filter-dimension-set-value key="french" text="French"></d2l-filter-dimension-set-value>
66
- <d2l-filter-dimension-set-value key="spanish" text="Spanish"></d2l-filter-dimension-set-value>
67
- </d2l-filter-dimension-set>
68
- </d2l-filter>
69
- <d2l-filter>
70
- <d2l-filter-dimension-set key="course" text="Course" select-all>
71
- <d2l-filter-dimension-set-value key="art" text="Art"></d2l-filter-dimension-set-value>
72
- <d2l-filter-dimension-set-value key="astronomy" text="Astronomy" selected></d2l-filter-dimension-set-value>
73
- <d2l-filter-dimension-set-value key="biology" text="Biology"></d2l-filter-dimension-set-value>
74
- <d2l-filter-dimension-set-value key="chemistry" text="Chemistry"></d2l-filter-dimension-set-value>
75
- <d2l-filter-dimension-set-value key="drama" text="Drama"></d2l-filter-dimension-set-value>
76
- <d2l-filter-dimension-set-value key="english" text="English"></d2l-filter-dimension-set-value>
77
- <d2l-filter-dimension-set-value key="how-to" text="How To Write a How To Article With a Flashy Title"></d2l-filter-dimension-set-value>
78
- <d2l-filter-dimension-set-value key="math" text="Math"></d2l-filter-dimension-set-value>
79
- <d2l-filter-dimension-set-value key="physics" text="Physics"></d2l-filter-dimension-set-value>
80
- <d2l-filter-dimension-set-value key="stats" text="Statistics"></d2l-filter-dimension-set-value>
81
- <d2l-filter-dimension-set-value key="writerscraft" text="Writer's Craft"></d2l-filter-dimension-set-value>
82
- </d2l-filter-dimension-set>
83
- <d2l-filter-dimension-set key="duration" text="Duration">
84
- <d2l-filter-dimension-set-value key="lessthanthree" text="< 3 months"></d2l-filter-dimension-set-value>
85
- <d2l-filter-dimension-set-value key="threetosix" text="3-6 months"></d2l-filter-dimension-set-value>
86
- <d2l-filter-dimension-set-value key="sixtotwelve" text="6-12 months"></d2l-filter-dimension-set-value>
87
- </d2l-filter-dimension-set>
88
- <d2l-filter-dimension-set key="hoursperweek" text="SemesterNested" selection-single>
89
- <d2l-filter-dimension-set-value key="lessthanfive" text="< 5 hrs/week"></d2l-filter-dimension-set-value>
90
- <d2l-filter-dimension-set-value key="fivetoten" text="5-10 hrs/week" selected></d2l-filter-dimension-set-value>
91
- <d2l-filter-dimension-set-value key="tentotwenty" text="10-20 hrs/week"></d2l-filter-dimension-set-value>
92
- </d2l-filter-dimension-set>
93
- </d2l-filter>
94
- </d2l-filter-overflow-group>
95
- </template>
96
- </d2l-demo-snippet>
97
-
98
- <h2>Filter Overflow Group with Tags (built-in)</h2>
99
- <d2l-demo-snippet>
100
- <template>
101
- <d2l-filter-overflow-group tags>
102
- <d2l-filter>
103
- <d2l-filter-dimension-set key="skill" text="Skill">
104
- <d2l-filter-dimension-set-value key="communication" text="Fall"></d2l-filter-dimension-set-value>
105
- <d2l-filter-dimension-set-value key="leadership" text="Winter"></d2l-filter-dimension-set-value>
106
- <d2l-filter-dimension-set-value key="management" text="Spring"></d2l-filter-dimension-set-value>
107
- <d2l-filter-dimension-set-value key="planning" text="Summer"></d2l-filter-dimension-set-value>
108
- </d2l-filter-dimension-set>
109
- </d2l-filter>
110
- <d2l-filter id="filter-2">
111
- <d2l-filter-dimension-set key="type" text="Type" selection-single>
112
- <d2l-filter-dimension-set-value key="certificate" text="Certificate"></d2l-filter-dimension-set-value>
113
- <d2l-filter-dimension-set-value key="degree" text="Degree"></d2l-filter-dimension-set-value>
114
- <d2l-filter-dimension-set-value key="diploma" text="Diploma"></d2l-filter-dimension-set-value>
115
- <d2l-filter-dimension-set-value key="course" text="Course"></d2l-filter-dimension-set-value>
116
- </d2l-filter-dimension-set>
117
- </d2l-filter>
118
- <d2l-filter>
119
- <d2l-filter-dimension-set key="provider" text="Semester3">
120
- <d2l-filter-dimension-set-value key="mcmaster" text="McMaster"></d2l-filter-dimension-set-value>
121
- <d2l-filter-dimension-set-value key="powered" text="PowerED"></d2l-filter-dimension-set-value>
122
- <d2l-filter-dimension-set-value key="guelph" text="University of Guelph"></d2l-filter-dimension-set-value>
123
- <d2l-filter-dimension-set-value key="manitoba" text="University of Manitoba"></d2l-filter-dimension-set-value>
124
- </d2l-filter-dimension-set>
125
- </d2l-filter>
126
- <d2l-filter>
127
- <d2l-filter-dimension-set key="format" text="Format">
128
- <d2l-filter-dimension-set-value key="selfpaced" text="Self-Paced"></d2l-filter-dimension-set-value>
129
- <d2l-filter-dimension-set-value key="instructor" text="Instructor Lead" selected></d2l-filter-dimension-set-value>
130
- </d2l-filter-dimension-set>
131
- </d2l-filter>
132
- <d2l-filter>
133
- <d2l-filter-dimension-set key="language" text="Language" select-single>
134
- <d2l-filter-dimension-set-value key="english" text="English"></d2l-filter-dimension-set-value>
135
- <d2l-filter-dimension-set-value key="french" text="French"></d2l-filter-dimension-set-value>
136
- <d2l-filter-dimension-set-value key="spanish" text="Spanish"></d2l-filter-dimension-set-value>
137
- </d2l-filter-dimension-set>
138
- </d2l-filter>
139
- <d2l-filter>
140
- <d2l-filter-dimension-set key="course" text="Course" select-all>
141
- <d2l-filter-dimension-set-value key="art" text="Art"></d2l-filter-dimension-set-value>
142
- <d2l-filter-dimension-set-value key="astronomy" text="Astronomy" selected></d2l-filter-dimension-set-value>
143
- <d2l-filter-dimension-set-value key="biology" text="Biology"></d2l-filter-dimension-set-value>
144
- <d2l-filter-dimension-set-value key="chemistry" text="Chemistry"></d2l-filter-dimension-set-value>
145
- <d2l-filter-dimension-set-value key="drama" text="Drama"></d2l-filter-dimension-set-value>
146
- <d2l-filter-dimension-set-value key="english" text="English"></d2l-filter-dimension-set-value>
147
- <d2l-filter-dimension-set-value key="how-to" text="How To Write a How To Article With a Flashy Title"></d2l-filter-dimension-set-value>
148
- <d2l-filter-dimension-set-value key="math" text="Math"></d2l-filter-dimension-set-value>
149
- <d2l-filter-dimension-set-value key="physics" text="Physics"></d2l-filter-dimension-set-value>
150
- <d2l-filter-dimension-set-value key="stats" text="Statistics"></d2l-filter-dimension-set-value>
151
- <d2l-filter-dimension-set-value key="writerscraft" text="Writer's Craft"></d2l-filter-dimension-set-value>
152
- </d2l-filter-dimension-set>
153
- <d2l-filter-dimension-set key="duration" text="Duration">
154
- <d2l-filter-dimension-set-value key="lessthanthree" text="< 3 months"></d2l-filter-dimension-set-value>
155
- <d2l-filter-dimension-set-value key="threetosix" text="3-6 months"></d2l-filter-dimension-set-value>
156
- <d2l-filter-dimension-set-value key="sixtotwelve" text="6-12 months"></d2l-filter-dimension-set-value>
157
- </d2l-filter-dimension-set>
158
- <d2l-filter-dimension-set key="hoursperweek" text="SemesterNested" selection-single>
159
- <d2l-filter-dimension-set-value key="lessthanfive" text="< 5 hrs/week"></d2l-filter-dimension-set-value>
160
- <d2l-filter-dimension-set-value key="fivetoten" text="5-10 hrs/week" selected></d2l-filter-dimension-set-value>
161
- <d2l-filter-dimension-set-value key="tentotwenty" text="10-20 hrs/week"></d2l-filter-dimension-set-value>
162
- </d2l-filter-dimension-set>
163
- </d2l-filter>
164
- </d2l-filter-overflow-group>
165
- </template>
166
- </d2l-demo-snippet>
167
-
168
- <h2>Filter Overflow Group with Tags (external to d2l-filter-overflow-group)</h2>
169
- <d2l-demo-snippet>
170
- <template>
171
- <d2l-filter-overflow-group>
172
- <d2l-filter id="filter1">
173
- <d2l-filter-dimension-set key="skill" text="Skill">
174
- <d2l-filter-dimension-set-value key="communication" text="Fall"></d2l-filter-dimension-set-value>
175
- <d2l-filter-dimension-set-value key="leadership" text="Winter"></d2l-filter-dimension-set-value>
176
- <d2l-filter-dimension-set-value key="management" text="Spring"></d2l-filter-dimension-set-value>
177
- <d2l-filter-dimension-set-value key="planning" text="Summer"></d2l-filter-dimension-set-value>
178
- </d2l-filter-dimension-set>
179
- </d2l-filter>
180
- <d2l-filter id="filter2">
181
- <d2l-filter-dimension-set key="type" text="Type" selection-single>
182
- <d2l-filter-dimension-set-value key="certificate" text="Certificate"></d2l-filter-dimension-set-value>
183
- <d2l-filter-dimension-set-value key="degree" text="Degree"></d2l-filter-dimension-set-value>
184
- <d2l-filter-dimension-set-value key="diploma" text="Diploma"></d2l-filter-dimension-set-value>
185
- <d2l-filter-dimension-set-value key="course" text="Course"></d2l-filter-dimension-set-value>
186
- </d2l-filter-dimension-set>
187
- </d2l-filter>
188
- <d2l-filter id="filter3">
189
- <d2l-filter-dimension-set key="provider" text="Semester3">
190
- <d2l-filter-dimension-set-value key="mcmaster" text="McMaster"></d2l-filter-dimension-set-value>
191
- <d2l-filter-dimension-set-value key="powered" text="PowerED"></d2l-filter-dimension-set-value>
192
- <d2l-filter-dimension-set-value key="guelph" text="University of Guelph"></d2l-filter-dimension-set-value>
193
- <d2l-filter-dimension-set-value key="manitoba" text="University of Manitoba"></d2l-filter-dimension-set-value>
194
- </d2l-filter-dimension-set>
195
- </d2l-filter>
196
- <d2l-filter id="filter4">
197
- <d2l-filter-dimension-set key="format" text="Format">
198
- <d2l-filter-dimension-set-value key="selfpaced" text="Self-Paced"></d2l-filter-dimension-set-value>
199
- <d2l-filter-dimension-set-value key="instructor" text="Instructor Lead" selected></d2l-filter-dimension-set-value>
200
- </d2l-filter-dimension-set>
201
- </d2l-filter>
202
- <d2l-filter id="filter5">
203
- <d2l-filter-dimension-set key="language" text="Language" selection-single>
204
- <d2l-filter-dimension-set-value key="english" text="English"></d2l-filter-dimension-set-value>
205
- <d2l-filter-dimension-set-value key="french" text="French"></d2l-filter-dimension-set-value>
206
- <d2l-filter-dimension-set-value key="spanish" text="Spanish"></d2l-filter-dimension-set-value>
207
- </d2l-filter-dimension-set>
208
- </d2l-filter>
209
- <d2l-filter id="filter6">
210
- <d2l-filter-dimension-set key="course" text="Course" select-all>
211
- <d2l-filter-dimension-set-value key="art" text="Art"></d2l-filter-dimension-set-value>
212
- <d2l-filter-dimension-set-value key="astronomy" text="Astronomy" selected></d2l-filter-dimension-set-value>
213
- <d2l-filter-dimension-set-value key="biology" text="Biology"></d2l-filter-dimension-set-value>
214
- <d2l-filter-dimension-set-value key="chemistry" text="Chemistry"></d2l-filter-dimension-set-value>
215
- <d2l-filter-dimension-set-value key="drama" text="Drama"></d2l-filter-dimension-set-value>
216
- <d2l-filter-dimension-set-value key="english" text="English"></d2l-filter-dimension-set-value>
217
- <d2l-filter-dimension-set-value key="how-to" text="How To Write a How To Article With a Flashy Title"></d2l-filter-dimension-set-value>
218
- <d2l-filter-dimension-set-value key="math" text="Math"></d2l-filter-dimension-set-value>
219
- <d2l-filter-dimension-set-value key="physics" text="Physics"></d2l-filter-dimension-set-value>
220
- <d2l-filter-dimension-set-value key="stats" text="Statistics"></d2l-filter-dimension-set-value>
221
- <d2l-filter-dimension-set-value key="writerscraft" text="Writer's Craft"></d2l-filter-dimension-set-value>
222
- </d2l-filter-dimension-set>
223
- <d2l-filter-dimension-set key="duration" text="Duration">
224
- <d2l-filter-dimension-set-value key="lessthanthree" text="< 3 months"></d2l-filter-dimension-set-value>
225
- <d2l-filter-dimension-set-value key="threetosix" text="3-6 months"></d2l-filter-dimension-set-value>
226
- <d2l-filter-dimension-set-value key="sixtotwelve" text="6-12 months"></d2l-filter-dimension-set-value>
227
- </d2l-filter-dimension-set>
228
- <d2l-filter-dimension-set key="hoursperweek" text="SemesterNested" selection-single>
229
- <d2l-filter-dimension-set-value key="lessthanfive" text="< 5 hrs/week"></d2l-filter-dimension-set-value>
230
- <d2l-filter-dimension-set-value key="fivetoten" text="5-10 hrs/week" selected></d2l-filter-dimension-set-value>
231
- <d2l-filter-dimension-set-value key="tentotwenty" text="10-20 hrs/week"></d2l-filter-dimension-set-value>
232
- </d2l-filter-dimension-set>
233
- </d2l-filter-overflow-group>
234
- <d2l-filter-tags filter-ids="filter1 filter2 filter3 filter4 filter5 filter6" label="Applied Filters:"></d2l-filter-tags>
235
- </template>
236
- </d2l-demo-snippet>
237
-
238
- <h2>Filter Overflow Group with Load More and Search</h2>
239
- <d2l-demo-snippet>
240
- <template>
241
- <d2l-filter-load-more-demo use-overflow-group></d2l-filter-load-more-demo>
242
- </template>
243
- </d2l-demo-snippet>
244
- </d2l-demo-page>
245
- </body>
246
- </html>
@@ -1,135 +0,0 @@
1
- import '../filter.js';
2
- import '../filter-dimension-set.js';
3
- import '../filter-dimension-set-value.js';
4
- import { html, LitElement } from 'lit';
5
-
6
- const initialData = [
7
- { key: 'admin', text: 'Admin', selected: false },
8
- { key: 'instructor', text: 'Instructor', selected: true },
9
- { key: 'student', text: 'Student', selected: false }
10
- ];
11
-
12
- class FilterSearchDemo extends LitElement {
13
-
14
- constructor() {
15
- super();
16
- this._fullData = JSON.parse(JSON.stringify(initialData));
17
- this._fullDataSingle = JSON.parse(JSON.stringify(initialData));
18
- this._fullDataInitialSubset = JSON.parse(JSON.stringify(initialData));
19
- }
20
-
21
- render() {
22
- return html`
23
- <d2l-filter @d2l-filter-change="${this._handleFilterChange}" @d2l-filter-dimension-first-open="${this._handleFirstOpen}" @d2l-filter-dimension-search="${this._handleSearch}">
24
- <d2l-filter-dimension-set key="none" text="No Search" search-type="none">
25
- <d2l-filter-dimension-set-value key="admin" text="Admin"></d2l-filter-dimension-set-value>
26
- <d2l-filter-dimension-set-value key="instructor" text="Instructor"></d2l-filter-dimension-set-value>
27
- <d2l-filter-dimension-set-value key="student" text="Student"></d2l-filter-dimension-set-value>
28
- </d2l-filter-dimension-set>
29
- <d2l-filter-dimension-set key="none-select-all" text="No Search and Select All" search-type="none" select-all>
30
- <d2l-filter-dimension-set-value key="admin" text="Admin"></d2l-filter-dimension-set-value>
31
- <d2l-filter-dimension-set-value key="instructor" text="Instructor"></d2l-filter-dimension-set-value>
32
- <d2l-filter-dimension-set-value key="student" text="Student"></d2l-filter-dimension-set-value>
33
- </d2l-filter-dimension-set>
34
- <d2l-filter-dimension-set key="event" text="Event on Search" select-all search-type="manual">
35
- ${this._fullData.map(value => html`
36
- <d2l-filter-dimension-set-value key="${value.key}" text="${value.text}" ?selected="${value.selected}"></d2l-filter-dimension-set-value>
37
- `)}
38
- </d2l-filter-dimension-set>
39
- <d2l-filter-dimension-set key="event-single" text="Event on Search - Single" search-type="manual" selection-single>
40
- ${this._fullDataSingle.map(value => html`
41
- <d2l-filter-dimension-set-value key="${value.key}" text="${value.text}" ?selected="${value.selected}"></d2l-filter-dimension-set-value>
42
- `)}
43
- </d2l-filter-dimension-set>
44
- <d2l-filter-dimension-set key="event-initial-subset" text="Event on Search - Initial Subset" search-type="manual" header-text="Related Roles at D2L" selected-first>
45
- ${this._fullDataInitialSubset.map(value => html`
46
- <d2l-filter-dimension-set-value key="${value.key}" text="${value.text}" ?selected="${value.selected}"></d2l-filter-dimension-set-value>
47
- `)}
48
- </d2l-filter-dimension-set>
49
- <d2l-filter-dimension-set key="auto" text="Automatic Search" search-type="automatic">
50
- <d2l-filter-dimension-set-value key="admin" text="Admin"></d2l-filter-dimension-set-value>
51
- <d2l-filter-dimension-set-value key="instructor" text="Instructor"></d2l-filter-dimension-set-value>
52
- <d2l-filter-dimension-set-value key="student" text="Student"></d2l-filter-dimension-set-value>
53
- </d2l-filter-dimension-set>
54
- </d2l-filter>
55
- `;
56
- }
57
-
58
- _handleFilterChange(e) {
59
- if (e.detail.dimensions.length === 1) {
60
- console.log(`Filter selection(s) changed for dimension "${e.detail.dimensions[0].dimensionKey}":`, e.detail.dimensions[0].changes); // eslint-disable-line no-console
61
- if (e.detail.dimensions[0].cleared) console.log(`(Dimension "${e.detail.dimensions[0].dimensionKey}" cleared)`); // eslint-disable-line no-console
62
- } else {
63
- console.log('Multiple dimension selections changed:', e.detail.dimensions); // eslint-disable-line no-console
64
- }
65
-
66
- e.detail.dimensions.forEach(dimension => {
67
- if (!dimension.dimensionKey.includes('event')) return;
68
-
69
- const dataToUpdateMap = {
70
- 'event': this._fullData,
71
- 'event-single': this._fullDataSingle,
72
- 'event-initial-subset': this._fullDataInitialSubset,
73
- };
74
- const dataToUpdate = dataToUpdateMap[dimension.dimensionKey];
75
- if (dimension.cleared) {
76
- dataToUpdate.forEach(value => value.selected = false);
77
- } else {
78
- dimension.changes.forEach(change => { dataToUpdate.find(value => value.key === change.valueKey).selected = change.selected; });
79
- }
80
- });
81
-
82
- if (e.detail.allCleared) {
83
- console.log('(All dimensions cleared)'); // eslint-disable-line no-console
84
- }
85
- this.requestUpdate();
86
- }
87
-
88
- _handleFirstOpen(e) {
89
- // eslint-disable-next-line no-console
90
- console.log(`Filter dimension opened for the first time: ${e.detail.key}`);
91
- }
92
-
93
- _handleSearch(e) {
94
- if (!e.detail.key.includes('event')) return;
95
-
96
- let keysToDisplay = [];
97
- if (e.detail.key === 'event-initial-subset') keysToDisplay = this._performInitialSubsetSearch(e.detail.value);
98
- else {
99
- this._fullData.forEach(value => {
100
- if (value.text.toLowerCase().indexOf(e.detail.value.toLowerCase()) > -1) {
101
- keysToDisplay.push(value.key);
102
- }
103
- });
104
- }
105
-
106
- setTimeout(() => {
107
- e.detail.searchCompleteCallback({ keysToDisplay: keysToDisplay });
108
- // eslint-disable-next-line no-console
109
- console.log(`Filter dimension "${e.detail.key}" searched: ${e.detail.value}`);
110
- }, 2000);
111
-
112
- }
113
-
114
- _performInitialSubsetSearch(searchValue) {
115
- const initialSubset = ['admin', 'instructor'];
116
- let keysToDisplay = [];
117
- if (searchValue === '') {
118
- keysToDisplay = initialSubset;
119
- this._fullDataInitialSubset.forEach(value => {
120
- if (value.selected) {
121
- if (!keysToDisplay.includes(value.key)) keysToDisplay.push(value.key);
122
- }
123
- });
124
- } else {
125
- this._fullDataInitialSubset.forEach(value => {
126
- if (value.text.toLowerCase().indexOf(searchValue.toLowerCase()) > -1) {
127
- keysToDisplay.push(value.key);
128
- }
129
- });
130
- }
131
- return keysToDisplay;
132
- }
133
-
134
- }
135
- customElements.define('d2l-filter-search-demo', FilterSearchDemo);