@brightspace-ui/core 3.227.4 → 3.227.6

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 (180) hide show
  1. package/components/button/button-icon.js +10 -10
  2. package/components/button/button.js +8 -8
  3. package/components/demo/test/demo-page-settings.test.js +25 -0
  4. package/components/demo/test/demo-page.test.js +17 -0
  5. package/components/filter/filter-dimension-set-date-time-range-value.js +2 -1
  6. package/components/filter/filter-dimension-set.js +1 -1
  7. package/components/filter/filter.js +2 -1
  8. package/package.json +1 -1
  9. package/components/alert/demo/alert-toast.html +0 -106
  10. package/components/alert/demo/alert.html +0 -82
  11. package/components/backdrop/demo/backdrop-loading.html +0 -166
  12. package/components/backdrop/demo/backdrop.html +0 -57
  13. package/components/breadcrumbs/demo/breadcrumbs.html +0 -53
  14. package/components/button/demo/button-add.html +0 -55
  15. package/components/button/demo/button-copy.html +0 -122
  16. package/components/button/demo/button-icon.html +0 -174
  17. package/components/button/demo/button-move.html +0 -38
  18. package/components/button/demo/button-split.html +0 -76
  19. package/components/button/demo/button-subtle.html +0 -132
  20. package/components/button/demo/button-toggle.html +0 -80
  21. package/components/button/demo/button.html +0 -67
  22. package/components/button/demo/floating-buttons-in-frame.html +0 -44
  23. package/components/button/demo/floating-buttons-in-tabs.html +0 -244
  24. package/components/button/demo/floating-buttons-page.html +0 -100
  25. package/components/button/demo/floating-buttons.html +0 -101
  26. package/components/calendar/demo/calendar.html +0 -76
  27. package/components/card/demo/card.html +0 -304
  28. package/components/collapsible-panel/demo/collapsible-panel.html +0 -218
  29. package/components/colors/demo/color-swatch.js +0 -240
  30. package/components/colors/demo/colors.html +0 -139
  31. package/components/count-badge/demo/count-badge-icon.html +0 -48
  32. package/components/count-badge/demo/count-badge.html +0 -73
  33. package/components/demo/demo/demo-snippet.html +0 -71
  34. package/components/description-list/demo/description-list-test.js +0 -142
  35. package/components/description-list/demo/description-list.html +0 -48
  36. package/components/dialog/demo/dialog-async-content-until.js +0 -89
  37. package/components/dialog/demo/dialog-async-content.js +0 -72
  38. package/components/dialog/demo/dialog-confirm.html +0 -102
  39. package/components/dialog/demo/dialog-container.js +0 -40
  40. package/components/dialog/demo/dialog-fullscreen.html +0 -273
  41. package/components/dialog/demo/dialog-nested.html +0 -94
  42. package/components/dialog/demo/dialog.html +0 -398
  43. package/components/dropdown/demo/dropdown-button.html +0 -102
  44. package/components/dropdown/demo/dropdown-context-menu.html +0 -129
  45. package/components/dropdown/demo/dropdown-flicker-inner.html +0 -70
  46. package/components/dropdown/demo/dropdown-flicker.html +0 -142
  47. package/components/dropdown/demo/dropdown-menu-demo-view.js +0 -37
  48. package/components/dropdown/demo/dropdown-menu.html +0 -227
  49. package/components/dropdown/demo/dropdown-more.html +0 -160
  50. package/components/dropdown/demo/dropdown-positioning.html +0 -127
  51. package/components/dropdown/demo/dropdown-tabs.html +0 -87
  52. package/components/dropdown/demo/dropdown.html +0 -217
  53. package/components/empty-state/demo/empty-state.html +0 -94
  54. package/components/expand-collapse/demo/expand-collapse-content.html +0 -58
  55. package/components/filter/demo/filter-load-more-demo.js +0 -182
  56. package/components/filter/demo/filter-overflow-group.html +0 -246
  57. package/components/filter/demo/filter-search-demo.js +0 -135
  58. package/components/filter/demo/filter-tags.html +0 -115
  59. package/components/filter/demo/filter.html +0 -230
  60. package/components/focus-trap/demo/focus-trap.html +0 -75
  61. package/components/form/demo/form-demo.js +0 -105
  62. package/components/form/demo/form-dialog-demo.js +0 -94
  63. package/components/form/demo/form-panel-demo.js +0 -89
  64. package/components/form/demo/form.html +0 -37
  65. package/components/hierarchical-view/demo/hierarchical-view.html +0 -221
  66. package/components/html-block/demo/html-block-code.html +0 -55
  67. package/components/html-block/demo/html-block.html +0 -696
  68. package/components/icons/demo/icon-color-override.js +0 -23
  69. package/components/icons/demo/icon-custom.html +0 -112
  70. package/components/icons/demo/icon-size-override.js +0 -24
  71. package/components/icons/demo/icon.html +0 -52
  72. package/components/inputs/demo/input-checkbox.html +0 -118
  73. package/components/inputs/demo/input-color-palette.js +0 -67
  74. package/components/inputs/demo/input-color.html +0 -110
  75. package/components/inputs/demo/input-date-range.html +0 -114
  76. package/components/inputs/demo/input-date-time-range.html +0 -128
  77. package/components/inputs/demo/input-date-time.html +0 -100
  78. package/components/inputs/demo/input-date.html +0 -81
  79. package/components/inputs/demo/input-group.html +0 -56
  80. package/components/inputs/demo/input-number.html +0 -136
  81. package/components/inputs/demo/input-percent.html +0 -99
  82. package/components/inputs/demo/input-radio-label-test.js +0 -45
  83. package/components/inputs/demo/input-radio-solo-test.js +0 -47
  84. package/components/inputs/demo/input-radio.html +0 -119
  85. package/components/inputs/demo/input-search.html +0 -75
  86. package/components/inputs/demo/input-select-test.js +0 -60
  87. package/components/inputs/demo/input-select.html +0 -45
  88. package/components/inputs/demo/input-text.html +0 -163
  89. package/components/inputs/demo/input-textarea.html +0 -124
  90. package/components/inputs/demo/input-time-range.html +0 -121
  91. package/components/inputs/demo/input-time.html +0 -95
  92. package/components/link/demo/link.html +0 -111
  93. package/components/list/demo/demo-list-nav.js +0 -170
  94. package/components/list/demo/demo-list-nested-iterations-helper.js +0 -168
  95. package/components/list/demo/demo-list-nested-lazy-load.js +0 -133
  96. package/components/list/demo/demo-list-nested.js +0 -291
  97. package/components/list/demo/demo-list.js +0 -241
  98. package/components/list/demo/list-color.html +0 -423
  99. package/components/list/demo/list-demo-scenarios.js +0 -380
  100. package/components/list/demo/list-drag-and-drop-position.js +0 -102
  101. package/components/list/demo/list-drag-and-drop.html +0 -82
  102. package/components/list/demo/list-expand-collapse.html +0 -136
  103. package/components/list/demo/list-item-actions.html +0 -371
  104. package/components/list/demo/list-item-custom.js +0 -204
  105. package/components/list/demo/list-item-layouts.html +0 -331
  106. package/components/list/demo/list-item-scroll.html +0 -122
  107. package/components/list/demo/list-layout.html +0 -575
  108. package/components/list/demo/list-nav.html +0 -110
  109. package/components/list/demo/list-nested.html +0 -270
  110. package/components/list/demo/list-selection.html +0 -301
  111. package/components/list/demo/list.html +0 -319
  112. package/components/loading-spinner/demo/loading-spinner-override.js +0 -34
  113. package/components/loading-spinner/demo/loading-spinner.html +0 -63
  114. package/components/menu/demo/checkbox-menu.html +0 -52
  115. package/components/menu/demo/custom-menu-item.js +0 -37
  116. package/components/menu/demo/custom-view.js +0 -63
  117. package/components/menu/demo/menu.html +0 -211
  118. package/components/menu/demo/radio-menu.html +0 -52
  119. package/components/meter/demo/meter.html +0 -115
  120. package/components/more-less/demo/more-less-test.js +0 -67
  121. package/components/more-less/demo/more-less.html +0 -71
  122. package/components/object-property-list/demo/object-property-list.html +0 -99
  123. package/components/offscreen/demo/offscreen-demo.js +0 -16
  124. package/components/offscreen/demo/offscreen.html +0 -44
  125. package/components/overflow-group/demo/demo-overflow-group.js +0 -29
  126. package/components/overflow-group/demo/overflow-group.html +0 -110
  127. package/components/paging/demo/pager-load-more.html +0 -120
  128. package/components/popover/demo/popover.html +0 -309
  129. package/components/progress/demo/progress.html +0 -104
  130. package/components/scroll-wrapper/demo/scroll-wrapper-test.js +0 -108
  131. package/components/scroll-wrapper/demo/scroll-wrapper.html +0 -52
  132. package/components/selection/demo/demo-selection.js +0 -35
  133. package/components/selection/demo/selection.html +0 -198
  134. package/components/skeleton/demo/skeleton-group-nested-test.js +0 -71
  135. package/components/skeleton/demo/skeleton-group-test-wrapper.js +0 -18
  136. package/components/skeleton/demo/skeleton-group-test.js +0 -91
  137. package/components/skeleton/demo/skeleton-mixin.html +0 -78
  138. package/components/skeleton/demo/skeleton-test-box.js +0 -34
  139. package/components/skeleton/demo/skeleton-test-container.js +0 -45
  140. package/components/skeleton/demo/skeleton-test-heading.js +0 -44
  141. package/components/skeleton/demo/skeleton-test-link.js +0 -47
  142. package/components/skeleton/demo/skeleton-test-paragraph.js +0 -54
  143. package/components/skeleton/demo/skeleton-test-stack.js +0 -38
  144. package/components/skeleton/demo/skeleton-test-width.js +0 -20
  145. package/components/sorting/demo/sort.html +0 -37
  146. package/components/status-indicator/demo/status-indicator.html +0 -99
  147. package/components/switch/demo/switch.html +0 -95
  148. package/components/table/demo/table-test.js +0 -271
  149. package/components/table/demo/table.html +0 -107
  150. package/components/tabs/demo/tab-custom.js +0 -39
  151. package/components/tabs/demo/tabs-array.js +0 -43
  152. package/components/tabs/demo/tabs.html +0 -558
  153. package/components/tag-list/demo/tag-list.html +0 -117
  154. package/components/tooltip/demo/tooltip.html +0 -275
  155. package/components/typography/demo/typography.html +0 -93
  156. package/components/view-switcher/demo/demo-table-view.js +0 -41
  157. package/components/view-switcher/demo/view-switcher.html +0 -71
  158. package/directives/animate/demo/animate-test.js +0 -98
  159. package/directives/animate/demo/index.html +0 -23
  160. package/helpers/demo/announce-test.js +0 -37
  161. package/helpers/demo/announce.html +0 -19
  162. package/helpers/demo/dismissible-test.js +0 -66
  163. package/helpers/demo/dismissible.html +0 -38
  164. package/helpers/demo/gestures.html +0 -58
  165. package/helpers/demo/prism.html +0 -694
  166. package/helpers/demo/template-tags.html +0 -118
  167. package/mixins/arrow-keys/demo/arrow-keys-mixin.html +0 -29
  168. package/mixins/arrow-keys/demo/arrow-keys-test.js +0 -38
  169. package/mixins/async-container/demo/async-container.html +0 -109
  170. package/mixins/async-container/demo/async-container.js +0 -27
  171. package/mixins/async-container/demo/async-item.js +0 -80
  172. package/mixins/labelled/demo/labelled-mixin.html +0 -90
  173. package/mixins/localize/demo/localize-mixin-greeting.js +0 -39
  174. package/mixins/localize/demo/localize-mixin-mission.js +0 -25
  175. package/mixins/localize/demo/localize-mixin.html +0 -28
  176. package/templates/primary-secondary/demo/form.html +0 -55
  177. package/templates/primary-secondary/demo/index.html +0 -27
  178. package/templates/primary-secondary/demo/integration.html +0 -457
  179. package/templates/primary-secondary/demo/overflow-hidden.html +0 -22
  180. 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);