@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,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);