@madgex/design-system 1.44.2 → 1.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/.vscode/launch.json +27 -7
  2. package/__tests__/unit/src/components/multiselect.spec.js +91 -0
  3. package/coverage/cobertura-coverage.xml +148 -29
  4. package/coverage/components/accordion/accordion.js.html +1 -1
  5. package/coverage/components/accordion/index.html +1 -1
  6. package/coverage/components/inputs/combobox/vue-components/Combobox.vue.html +1 -1
  7. package/coverage/components/inputs/combobox/vue-components/index.html +1 -1
  8. package/coverage/components/inputs/multi-select/vue-components/MultiSelect.vue.html +238 -0
  9. package/coverage/components/inputs/multi-select/vue-components/MultiSelectCheckbox.vue.html +286 -0
  10. package/coverage/components/inputs/multi-select/vue-components/MultiSelectCheckboxGroup.vue.html +298 -0
  11. package/coverage/components/inputs/multi-select/vue-components/index.html +140 -0
  12. package/coverage/components/modal/index.html +1 -1
  13. package/coverage/components/modal/modal.js.html +1 -1
  14. package/coverage/components/notification/index.html +1 -1
  15. package/coverage/components/notification/notification.js.html +1 -1
  16. package/coverage/components/popover/index.html +1 -1
  17. package/coverage/components/popover/popover.js.html +1 -1
  18. package/coverage/components/switch-state/index.html +1 -1
  19. package/coverage/components/switch-state/switch-state.js.html +1 -1
  20. package/coverage/components/tabs/index.html +1 -1
  21. package/coverage/components/tabs/tabs.js.html +1 -1
  22. package/coverage/index.html +32 -32
  23. package/coverage/js/common.js.html +1 -1
  24. package/coverage/js/fractal-scripts/combobox.js.html +1 -1
  25. package/coverage/js/fractal-scripts/index.html +20 -5
  26. package/coverage/js/fractal-scripts/multiselect.js.html +250 -0
  27. package/coverage/js/fractal-scripts/notification.js.html +1 -1
  28. package/coverage/js/fractal-scripts/switch-state.js.html +1 -1
  29. package/coverage/js/index-fractal.js.html +10 -4
  30. package/coverage/js/index-polyfills.js.html +1 -1
  31. package/coverage/js/index-vue.js.html +76 -7
  32. package/coverage/js/index.html +18 -18
  33. package/coverage/js/index.js.html +1 -1
  34. package/coverage/js/polyfills/closest.js.html +1 -1
  35. package/coverage/js/polyfills/index.html +1 -1
  36. package/coverage/js/polyfills/remove.js.html +1 -1
  37. package/coverage/tokens/_config.js.html +1 -1
  38. package/coverage/tokens/index.html +1 -1
  39. package/dist/_tokens/css/_tokens.css +1 -1
  40. package/dist/_tokens/js/_tokens-module.js +1 -1
  41. package/dist/_tokens/scss/_tokens.scss +1 -1
  42. package/dist/assets/icons.json +1 -1
  43. package/dist/css/index.css +1 -1
  44. package/dist/js/index.js +6 -6
  45. package/package.json +1 -1
  46. package/src/components/icons/icons.scss +0 -1
  47. package/src/components/inputs/combobox/combobox.njk +16 -13
  48. package/src/components/inputs/input/README.md +1 -1
  49. package/src/components/inputs/input/_template.njk +8 -30
  50. package/src/components/inputs/input/input.config.js +1 -1
  51. package/src/components/inputs/input/input.njk +20 -16
  52. package/src/components/inputs/input/input.scss +9 -13
  53. package/src/components/inputs/multi-select/_template.njk +10 -8
  54. package/src/components/inputs/multi-select/multi-select.njk +10 -6
  55. package/src/components/inputs/multi-select/multi-select.scss +8 -2
  56. package/src/components/inputs/multi-select/vue-components/MultiSelect.vue +53 -0
  57. package/src/components/inputs/multi-select/vue-components/MultiSelectCheckbox.vue +69 -0
  58. package/src/components/inputs/multi-select/vue-components/MultiSelectCheckboxGroup.vue +73 -0
  59. package/src/helpers/animation/README.md +20 -0
  60. package/src/helpers/animation/animation.njk +8 -0
  61. package/src/js/fractal-scripts/multiselect.js +57 -0
  62. package/src/js/index-fractal.js +2 -0
  63. package/src/js/index-vue.js +24 -1
  64. package/src/scss/helpers/__index.scss +2 -1
  65. package/src/scss/helpers/_animation.scss +15 -0
  66. package/coverage/components/inputs/combobox/combobox.js.html +0 -139
  67. package/coverage/components/inputs/combobox/index.html +0 -110
  68. package/src/components/inputs/combobox/combobox.js +0 -20
@@ -0,0 +1,286 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for components/inputs/multi-select/vue-components/MultiSelectCheckbox.vue</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../../base.css" />
10
+ <meta name="viewport" content="width=device-width, initial-scale=1">
11
+ <style type='text/css'>
12
+ .coverage-summary .sorter {
13
+ background-image: url(../../../../sort-arrow-sprite.png);
14
+ }
15
+ </style>
16
+ </head>
17
+
18
+ <body>
19
+ <div class='wrapper'>
20
+ <div class='pad1'>
21
+ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">components/inputs/multi-select/vue-components</a> MultiSelectCheckbox.vue</h1>
22
+ <div class='clearfix'>
23
+
24
+ <div class='fl pad1y space-right2'>
25
+ <span class="strong">100% </span>
26
+ <span class="quiet">Statements</span>
27
+ <span class='fraction'>3/3</span>
28
+ </div>
29
+
30
+
31
+ <div class='fl pad1y space-right2'>
32
+ <span class="strong">100% </span>
33
+ <span class="quiet">Branches</span>
34
+ <span class='fraction'>0/0</span>
35
+ </div>
36
+
37
+
38
+ <div class='fl pad1y space-right2'>
39
+ <span class="strong">100% </span>
40
+ <span class="quiet">Functions</span>
41
+ <span class='fraction'>2/2</span>
42
+ </div>
43
+
44
+
45
+ <div class='fl pad1y space-right2'>
46
+ <span class="strong">100% </span>
47
+ <span class="quiet">Lines</span>
48
+ <span class='fraction'>3/3</span>
49
+ </div>
50
+
51
+
52
+ </div>
53
+ <p class="quiet">
54
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
55
+ </p>
56
+ </div>
57
+ <div class='status-line high'></div>
58
+ <pre><table class="coverage">
59
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
60
+ <a name='L2'></a><a href='#L2'>2</a>
61
+ <a name='L3'></a><a href='#L3'>3</a>
62
+ <a name='L4'></a><a href='#L4'>4</a>
63
+ <a name='L5'></a><a href='#L5'>5</a>
64
+ <a name='L6'></a><a href='#L6'>6</a>
65
+ <a name='L7'></a><a href='#L7'>7</a>
66
+ <a name='L8'></a><a href='#L8'>8</a>
67
+ <a name='L9'></a><a href='#L9'>9</a>
68
+ <a name='L10'></a><a href='#L10'>10</a>
69
+ <a name='L11'></a><a href='#L11'>11</a>
70
+ <a name='L12'></a><a href='#L12'>12</a>
71
+ <a name='L13'></a><a href='#L13'>13</a>
72
+ <a name='L14'></a><a href='#L14'>14</a>
73
+ <a name='L15'></a><a href='#L15'>15</a>
74
+ <a name='L16'></a><a href='#L16'>16</a>
75
+ <a name='L17'></a><a href='#L17'>17</a>
76
+ <a name='L18'></a><a href='#L18'>18</a>
77
+ <a name='L19'></a><a href='#L19'>19</a>
78
+ <a name='L20'></a><a href='#L20'>20</a>
79
+ <a name='L21'></a><a href='#L21'>21</a>
80
+ <a name='L22'></a><a href='#L22'>22</a>
81
+ <a name='L23'></a><a href='#L23'>23</a>
82
+ <a name='L24'></a><a href='#L24'>24</a>
83
+ <a name='L25'></a><a href='#L25'>25</a>
84
+ <a name='L26'></a><a href='#L26'>26</a>
85
+ <a name='L27'></a><a href='#L27'>27</a>
86
+ <a name='L28'></a><a href='#L28'>28</a>
87
+ <a name='L29'></a><a href='#L29'>29</a>
88
+ <a name='L30'></a><a href='#L30'>30</a>
89
+ <a name='L31'></a><a href='#L31'>31</a>
90
+ <a name='L32'></a><a href='#L32'>32</a>
91
+ <a name='L33'></a><a href='#L33'>33</a>
92
+ <a name='L34'></a><a href='#L34'>34</a>
93
+ <a name='L35'></a><a href='#L35'>35</a>
94
+ <a name='L36'></a><a href='#L36'>36</a>
95
+ <a name='L37'></a><a href='#L37'>37</a>
96
+ <a name='L38'></a><a href='#L38'>38</a>
97
+ <a name='L39'></a><a href='#L39'>39</a>
98
+ <a name='L40'></a><a href='#L40'>40</a>
99
+ <a name='L41'></a><a href='#L41'>41</a>
100
+ <a name='L42'></a><a href='#L42'>42</a>
101
+ <a name='L43'></a><a href='#L43'>43</a>
102
+ <a name='L44'></a><a href='#L44'>44</a>
103
+ <a name='L45'></a><a href='#L45'>45</a>
104
+ <a name='L46'></a><a href='#L46'>46</a>
105
+ <a name='L47'></a><a href='#L47'>47</a>
106
+ <a name='L48'></a><a href='#L48'>48</a>
107
+ <a name='L49'></a><a href='#L49'>49</a>
108
+ <a name='L50'></a><a href='#L50'>50</a>
109
+ <a name='L51'></a><a href='#L51'>51</a>
110
+ <a name='L52'></a><a href='#L52'>52</a>
111
+ <a name='L53'></a><a href='#L53'>53</a>
112
+ <a name='L54'></a><a href='#L54'>54</a>
113
+ <a name='L55'></a><a href='#L55'>55</a>
114
+ <a name='L56'></a><a href='#L56'>56</a>
115
+ <a name='L57'></a><a href='#L57'>57</a>
116
+ <a name='L58'></a><a href='#L58'>58</a>
117
+ <a name='L59'></a><a href='#L59'>59</a>
118
+ <a name='L60'></a><a href='#L60'>60</a>
119
+ <a name='L61'></a><a href='#L61'>61</a>
120
+ <a name='L62'></a><a href='#L62'>62</a>
121
+ <a name='L63'></a><a href='#L63'>63</a>
122
+ <a name='L64'></a><a href='#L64'>64</a>
123
+ <a name='L65'></a><a href='#L65'>65</a>
124
+ <a name='L66'></a><a href='#L66'>66</a>
125
+ <a name='L67'></a><a href='#L67'>67</a>
126
+ <a name='L68'></a><a href='#L68'>68</a>
127
+ <a name='L69'></a><a href='#L69'>69</a>
128
+ <a name='L70'></a><a href='#L70'>70</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
129
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-neutral">&nbsp;</span>
132
+ <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-neutral">&nbsp;</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span>
135
+ <span class="cline-any cline-neutral">&nbsp;</span>
136
+ <span class="cline-any cline-neutral">&nbsp;</span>
137
+ <span class="cline-any cline-neutral">&nbsp;</span>
138
+ <span class="cline-any cline-neutral">&nbsp;</span>
139
+ <span class="cline-any cline-neutral">&nbsp;</span>
140
+ <span class="cline-any cline-neutral">&nbsp;</span>
141
+ <span class="cline-any cline-neutral">&nbsp;</span>
142
+ <span class="cline-any cline-neutral">&nbsp;</span>
143
+ <span class="cline-any cline-neutral">&nbsp;</span>
144
+ <span class="cline-any cline-neutral">&nbsp;</span>
145
+ <span class="cline-any cline-neutral">&nbsp;</span>
146
+ <span class="cline-any cline-neutral">&nbsp;</span>
147
+ <span class="cline-any cline-neutral">&nbsp;</span>
148
+ <span class="cline-any cline-neutral">&nbsp;</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-neutral">&nbsp;</span>
151
+ <span class="cline-any cline-neutral">&nbsp;</span>
152
+ <span class="cline-any cline-neutral">&nbsp;</span>
153
+ <span class="cline-any cline-neutral">&nbsp;</span>
154
+ <span class="cline-any cline-neutral">&nbsp;</span>
155
+ <span class="cline-any cline-neutral">&nbsp;</span>
156
+ <span class="cline-any cline-neutral">&nbsp;</span>
157
+ <span class="cline-any cline-neutral">&nbsp;</span>
158
+ <span class="cline-any cline-neutral">&nbsp;</span>
159
+ <span class="cline-any cline-neutral">&nbsp;</span>
160
+ <span class="cline-any cline-neutral">&nbsp;</span>
161
+ <span class="cline-any cline-neutral">&nbsp;</span>
162
+ <span class="cline-any cline-neutral">&nbsp;</span>
163
+ <span class="cline-any cline-neutral">&nbsp;</span>
164
+ <span class="cline-any cline-neutral">&nbsp;</span>
165
+ <span class="cline-any cline-neutral">&nbsp;</span>
166
+ <span class="cline-any cline-neutral">&nbsp;</span>
167
+ <span class="cline-any cline-neutral">&nbsp;</span>
168
+ <span class="cline-any cline-neutral">&nbsp;</span>
169
+ <span class="cline-any cline-neutral">&nbsp;</span>
170
+ <span class="cline-any cline-neutral">&nbsp;</span>
171
+ <span class="cline-any cline-neutral">&nbsp;</span>
172
+ <span class="cline-any cline-neutral">&nbsp;</span>
173
+ <span class="cline-any cline-neutral">&nbsp;</span>
174
+ <span class="cline-any cline-neutral">&nbsp;</span>
175
+ <span class="cline-any cline-neutral">&nbsp;</span>
176
+ <span class="cline-any cline-neutral">&nbsp;</span>
177
+ <span class="cline-any cline-neutral">&nbsp;</span>
178
+ <span class="cline-any cline-neutral">&nbsp;</span>
179
+ <span class="cline-any cline-neutral">&nbsp;</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
181
+ <span class="cline-any cline-neutral">&nbsp;</span>
182
+ <span class="cline-any cline-neutral">&nbsp;</span>
183
+ <span class="cline-any cline-neutral">&nbsp;</span>
184
+ <span class="cline-any cline-neutral">&nbsp;</span>
185
+ <span class="cline-any cline-yes">20x</span>
186
+ <span class="cline-any cline-neutral">&nbsp;</span>
187
+ <span class="cline-any cline-neutral">&nbsp;</span>
188
+ <span class="cline-any cline-neutral">&nbsp;</span>
189
+ <span class="cline-any cline-neutral">&nbsp;</span>
190
+ <span class="cline-any cline-neutral">&nbsp;</span>
191
+ <span class="cline-any cline-yes">1x</span>
192
+ <span class="cline-any cline-yes">1x</span>
193
+ <span class="cline-any cline-neutral">&nbsp;</span>
194
+ <span class="cline-any cline-neutral">&nbsp;</span>
195
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
+ <span class="cline-any cline-neutral">&nbsp;</span>
197
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&lt;!-- Vue doesn't seem to be stripping whitespace from these nodes so it's messing everything up
198
+ Hence these comments. Please feel free to give me pointers --&gt;
199
+ &nbsp;
200
+ &lt;template&gt;
201
+ &lt;div class="mds-multiselect__checkbox" :data-multiselect-id="`${name}-checkbox`"&gt;
202
+ &lt;input type="checkbox" :name="name" :id="id" :value="value" :checked="checked ? true : false" /&gt;&lt;!--
203
+ --&gt;&lt;label :for="id" @click="checked = !checked"&gt;{{ label }}&lt;/label&gt;&lt;!--
204
+ --&gt;&lt;button
205
+ v-if="this.$slots.default"
206
+ class="mds-button mds-button--plain mds-padding-b0"
207
+ @click="toggleExpansion()"
208
+ @keydown.right="toggleExpansion()"
209
+ @keydown.left="toggleExpansion()"
210
+ :aria-expanded="isShowing ? 'true' : 'false'"
211
+ :ref="`${id}-trigger`"
212
+ &gt;
213
+ &lt;!-- Ideally we would pass this in as a slot in the custom element with MdsIcon, but something is borked
214
+ with passing slots in Chrome https://github.com/karol-f/vue-custom-element/issues/162 --&gt;
215
+ &lt;svg
216
+ aria-hidden="true"
217
+ focusable="true"
218
+ class="mds-icon mds-icon--chevron-right mds-icon--after mds-icon--sm mds-animate-transform-fast"
219
+ :class="isShowing ? ' mds-rotate-cw-90' : ''"
220
+ &gt;
221
+ &lt;use href="/assets/icons.svg#chevron-right" /&gt;
222
+ &lt;/svg&gt;
223
+ &lt;/button&gt;
224
+ &lt;slot /&gt;
225
+ &lt;/div&gt;
226
+ &lt;/template&gt;
227
+ &nbsp;
228
+ &lt;script&gt;
229
+ export default {
230
+ name: 'MultiSelectCheckbox',
231
+ props: {
232
+ id: {
233
+ type: String,
234
+ required: true,
235
+ },
236
+ name: {
237
+ type: String,
238
+ required: true,
239
+ },
240
+ checked: {
241
+ type: Boolean,
242
+ default: false,
243
+ },
244
+ label: {
245
+ type: String,
246
+ required: true,
247
+ },
248
+ value: {
249
+ type: [String, Number],
250
+ required: true,
251
+ },
252
+ },
253
+ data() {
254
+ return {
255
+ isShowing: false,
256
+ };
257
+ },
258
+ methods: {
259
+ toggleExpansion() {
260
+ this.isShowing = !this.isShowing;
261
+ this.$emit('expandChild', { state: this.isShowing, id: this.$props.id });
262
+ },
263
+ },
264
+ };
265
+ &lt;/script&gt;
266
+ &nbsp;</pre></td></tr></table></pre>
267
+
268
+ <div class='push'></div><!-- for sticky footer -->
269
+ </div><!-- /wrapper -->
270
+ <div class='footer quiet pad2 space-top1 center small'>
271
+ Code coverage generated by
272
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
273
+ at Mon Apr 20 2020 14:01:39 GMT+0100 (British Summer Time)
274
+ </div>
275
+ </div>
276
+ <script src="../../../../prettify.js"></script>
277
+ <script>
278
+ window.onload = function () {
279
+ prettyPrint();
280
+ };
281
+ </script>
282
+ <script src="../../../../sorter.js"></script>
283
+ <script src="../../../../block-navigation.js"></script>
284
+ </body>
285
+ </html>
286
+
@@ -0,0 +1,298 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for components/inputs/multi-select/vue-components/MultiSelectCheckboxGroup.vue</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../../base.css" />
10
+ <meta name="viewport" content="width=device-width, initial-scale=1">
11
+ <style type='text/css'>
12
+ .coverage-summary .sorter {
13
+ background-image: url(../../../../sort-arrow-sprite.png);
14
+ }
15
+ </style>
16
+ </head>
17
+
18
+ <body>
19
+ <div class='wrapper'>
20
+ <div class='pad1'>
21
+ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">components/inputs/multi-select/vue-components</a> MultiSelectCheckboxGroup.vue</h1>
22
+ <div class='clearfix'>
23
+
24
+ <div class='fl pad1y space-right2'>
25
+ <span class="strong">75% </span>
26
+ <span class="quiet">Statements</span>
27
+ <span class='fraction'>3/4</span>
28
+ </div>
29
+
30
+
31
+ <div class='fl pad1y space-right2'>
32
+ <span class="strong">100% </span>
33
+ <span class="quiet">Branches</span>
34
+ <span class='fraction'>0/0</span>
35
+ </div>
36
+
37
+
38
+ <div class='fl pad1y space-right2'>
39
+ <span class="strong">66.67% </span>
40
+ <span class="quiet">Functions</span>
41
+ <span class='fraction'>2/3</span>
42
+ </div>
43
+
44
+
45
+ <div class='fl pad1y space-right2'>
46
+ <span class="strong">75% </span>
47
+ <span class="quiet">Lines</span>
48
+ <span class='fraction'>3/4</span>
49
+ </div>
50
+
51
+
52
+ </div>
53
+ <p class="quiet">
54
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
55
+ </p>
56
+ </div>
57
+ <div class='status-line medium'></div>
58
+ <pre><table class="coverage">
59
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
60
+ <a name='L2'></a><a href='#L2'>2</a>
61
+ <a name='L3'></a><a href='#L3'>3</a>
62
+ <a name='L4'></a><a href='#L4'>4</a>
63
+ <a name='L5'></a><a href='#L5'>5</a>
64
+ <a name='L6'></a><a href='#L6'>6</a>
65
+ <a name='L7'></a><a href='#L7'>7</a>
66
+ <a name='L8'></a><a href='#L8'>8</a>
67
+ <a name='L9'></a><a href='#L9'>9</a>
68
+ <a name='L10'></a><a href='#L10'>10</a>
69
+ <a name='L11'></a><a href='#L11'>11</a>
70
+ <a name='L12'></a><a href='#L12'>12</a>
71
+ <a name='L13'></a><a href='#L13'>13</a>
72
+ <a name='L14'></a><a href='#L14'>14</a>
73
+ <a name='L15'></a><a href='#L15'>15</a>
74
+ <a name='L16'></a><a href='#L16'>16</a>
75
+ <a name='L17'></a><a href='#L17'>17</a>
76
+ <a name='L18'></a><a href='#L18'>18</a>
77
+ <a name='L19'></a><a href='#L19'>19</a>
78
+ <a name='L20'></a><a href='#L20'>20</a>
79
+ <a name='L21'></a><a href='#L21'>21</a>
80
+ <a name='L22'></a><a href='#L22'>22</a>
81
+ <a name='L23'></a><a href='#L23'>23</a>
82
+ <a name='L24'></a><a href='#L24'>24</a>
83
+ <a name='L25'></a><a href='#L25'>25</a>
84
+ <a name='L26'></a><a href='#L26'>26</a>
85
+ <a name='L27'></a><a href='#L27'>27</a>
86
+ <a name='L28'></a><a href='#L28'>28</a>
87
+ <a name='L29'></a><a href='#L29'>29</a>
88
+ <a name='L30'></a><a href='#L30'>30</a>
89
+ <a name='L31'></a><a href='#L31'>31</a>
90
+ <a name='L32'></a><a href='#L32'>32</a>
91
+ <a name='L33'></a><a href='#L33'>33</a>
92
+ <a name='L34'></a><a href='#L34'>34</a>
93
+ <a name='L35'></a><a href='#L35'>35</a>
94
+ <a name='L36'></a><a href='#L36'>36</a>
95
+ <a name='L37'></a><a href='#L37'>37</a>
96
+ <a name='L38'></a><a href='#L38'>38</a>
97
+ <a name='L39'></a><a href='#L39'>39</a>
98
+ <a name='L40'></a><a href='#L40'>40</a>
99
+ <a name='L41'></a><a href='#L41'>41</a>
100
+ <a name='L42'></a><a href='#L42'>42</a>
101
+ <a name='L43'></a><a href='#L43'>43</a>
102
+ <a name='L44'></a><a href='#L44'>44</a>
103
+ <a name='L45'></a><a href='#L45'>45</a>
104
+ <a name='L46'></a><a href='#L46'>46</a>
105
+ <a name='L47'></a><a href='#L47'>47</a>
106
+ <a name='L48'></a><a href='#L48'>48</a>
107
+ <a name='L49'></a><a href='#L49'>49</a>
108
+ <a name='L50'></a><a href='#L50'>50</a>
109
+ <a name='L51'></a><a href='#L51'>51</a>
110
+ <a name='L52'></a><a href='#L52'>52</a>
111
+ <a name='L53'></a><a href='#L53'>53</a>
112
+ <a name='L54'></a><a href='#L54'>54</a>
113
+ <a name='L55'></a><a href='#L55'>55</a>
114
+ <a name='L56'></a><a href='#L56'>56</a>
115
+ <a name='L57'></a><a href='#L57'>57</a>
116
+ <a name='L58'></a><a href='#L58'>58</a>
117
+ <a name='L59'></a><a href='#L59'>59</a>
118
+ <a name='L60'></a><a href='#L60'>60</a>
119
+ <a name='L61'></a><a href='#L61'>61</a>
120
+ <a name='L62'></a><a href='#L62'>62</a>
121
+ <a name='L63'></a><a href='#L63'>63</a>
122
+ <a name='L64'></a><a href='#L64'>64</a>
123
+ <a name='L65'></a><a href='#L65'>65</a>
124
+ <a name='L66'></a><a href='#L66'>66</a>
125
+ <a name='L67'></a><a href='#L67'>67</a>
126
+ <a name='L68'></a><a href='#L68'>68</a>
127
+ <a name='L69'></a><a href='#L69'>69</a>
128
+ <a name='L70'></a><a href='#L70'>70</a>
129
+ <a name='L71'></a><a href='#L71'>71</a>
130
+ <a name='L72'></a><a href='#L72'>72</a>
131
+ <a name='L73'></a><a href='#L73'>73</a>
132
+ <a name='L74'></a><a href='#L74'>74</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-neutral">&nbsp;</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span>
135
+ <span class="cline-any cline-neutral">&nbsp;</span>
136
+ <span class="cline-any cline-neutral">&nbsp;</span>
137
+ <span class="cline-any cline-neutral">&nbsp;</span>
138
+ <span class="cline-any cline-neutral">&nbsp;</span>
139
+ <span class="cline-any cline-neutral">&nbsp;</span>
140
+ <span class="cline-any cline-neutral">&nbsp;</span>
141
+ <span class="cline-any cline-neutral">&nbsp;</span>
142
+ <span class="cline-any cline-neutral">&nbsp;</span>
143
+ <span class="cline-any cline-neutral">&nbsp;</span>
144
+ <span class="cline-any cline-neutral">&nbsp;</span>
145
+ <span class="cline-any cline-neutral">&nbsp;</span>
146
+ <span class="cline-any cline-neutral">&nbsp;</span>
147
+ <span class="cline-any cline-neutral">&nbsp;</span>
148
+ <span class="cline-any cline-neutral">&nbsp;</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-neutral">&nbsp;</span>
151
+ <span class="cline-any cline-neutral">&nbsp;</span>
152
+ <span class="cline-any cline-neutral">&nbsp;</span>
153
+ <span class="cline-any cline-neutral">&nbsp;</span>
154
+ <span class="cline-any cline-neutral">&nbsp;</span>
155
+ <span class="cline-any cline-neutral">&nbsp;</span>
156
+ <span class="cline-any cline-neutral">&nbsp;</span>
157
+ <span class="cline-any cline-neutral">&nbsp;</span>
158
+ <span class="cline-any cline-neutral">&nbsp;</span>
159
+ <span class="cline-any cline-neutral">&nbsp;</span>
160
+ <span class="cline-any cline-neutral">&nbsp;</span>
161
+ <span class="cline-any cline-neutral">&nbsp;</span>
162
+ <span class="cline-any cline-neutral">&nbsp;</span>
163
+ <span class="cline-any cline-neutral">&nbsp;</span>
164
+ <span class="cline-any cline-yes">1x</span>
165
+ <span class="cline-any cline-neutral">&nbsp;</span>
166
+ <span class="cline-any cline-neutral">&nbsp;</span>
167
+ <span class="cline-any cline-neutral">&nbsp;</span>
168
+ <span class="cline-any cline-neutral">&nbsp;</span>
169
+ <span class="cline-any cline-neutral">&nbsp;</span>
170
+ <span class="cline-any cline-neutral">&nbsp;</span>
171
+ <span class="cline-any cline-neutral">&nbsp;</span>
172
+ <span class="cline-any cline-neutral">&nbsp;</span>
173
+ <span class="cline-any cline-neutral">&nbsp;</span>
174
+ <span class="cline-any cline-neutral">&nbsp;</span>
175
+ <span class="cline-any cline-neutral">&nbsp;</span>
176
+ <span class="cline-any cline-neutral">&nbsp;</span>
177
+ <span class="cline-any cline-neutral">&nbsp;</span>
178
+ <span class="cline-any cline-no">&nbsp;</span>
179
+ <span class="cline-any cline-neutral">&nbsp;</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
181
+ <span class="cline-any cline-neutral">&nbsp;</span>
182
+ <span class="cline-any cline-neutral">&nbsp;</span>
183
+ <span class="cline-any cline-neutral">&nbsp;</span>
184
+ <span class="cline-any cline-neutral">&nbsp;</span>
185
+ <span class="cline-any cline-neutral">&nbsp;</span>
186
+ <span class="cline-any cline-neutral">&nbsp;</span>
187
+ <span class="cline-any cline-neutral">&nbsp;</span>
188
+ <span class="cline-any cline-neutral">&nbsp;</span>
189
+ <span class="cline-any cline-neutral">&nbsp;</span>
190
+ <span class="cline-any cline-neutral">&nbsp;</span>
191
+ <span class="cline-any cline-neutral">&nbsp;</span>
192
+ <span class="cline-any cline-neutral">&nbsp;</span>
193
+ <span class="cline-any cline-neutral">&nbsp;</span>
194
+ <span class="cline-any cline-yes">8x</span>
195
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
+ <span class="cline-any cline-neutral">&nbsp;</span>
197
+ <span class="cline-any cline-neutral">&nbsp;</span>
198
+ <span class="cline-any cline-neutral">&nbsp;</span>
199
+ <span class="cline-any cline-neutral">&nbsp;</span>
200
+ <span class="cline-any cline-yes">1x</span>
201
+ <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-neutral">&nbsp;</span>
203
+ <span class="cline-any cline-neutral">&nbsp;</span>
204
+ <span class="cline-any cline-neutral">&nbsp;</span>
205
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&lt;template&gt;
206
+ &lt;div
207
+ v-if="options"
208
+ class="mds-multiselect__checkbox-group"
209
+ :class="{ 'mds-multiselect__checkbox-group--nested': nested }"
210
+ v-show="isExpanded"
211
+ :data-multiselect-id="`${testId}-group`"
212
+ &gt;
213
+ &lt;MultiSelectCheckbox
214
+ v-for="option in options"
215
+ :key="option.id"
216
+ :id="option.id"
217
+ :name="option.name"
218
+ :value="option.value"
219
+ :label="option.label"
220
+ @expandChild="toggleExpand"
221
+ &gt;
222
+ &lt;MultiSelectCheckboxGroup
223
+ v-if="option.children"
224
+ :name="name"
225
+ :testId="`${name}-${option.id}`"
226
+ :options="option.children"
227
+ :nested="true"
228
+ :startExpanded="false"
229
+ :childOf="option.id"
230
+ :ref="`${option.id}-group`"
231
+ /&gt;
232
+ &lt;/MultiSelectCheckbox&gt;
233
+ &lt;/div&gt;
234
+ &lt;/template&gt;
235
+ &nbsp;
236
+ &lt;script&gt;
237
+ import MultiSelectCheckbox from './MultiSelectCheckbox.vue';
238
+ &nbsp;
239
+ export default {
240
+ name: 'MultiSelectCheckboxGroup',
241
+ components: {
242
+ MultiSelectCheckbox,
243
+ },
244
+ props: {
245
+ startExpanded: {
246
+ type: Boolean,
247
+ default: true,
248
+ },
249
+ options: {
250
+ type: Array,
251
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > default: () =&gt; [],</span></span>
252
+ },
253
+ name: {
254
+ type: String,
255
+ default: '',
256
+ },
257
+ nested: {
258
+ type: Boolean,
259
+ default: false,
260
+ },
261
+ testId: {
262
+ type: String,
263
+ required: true,
264
+ }
265
+ },
266
+ data() {
267
+ return {
268
+ isExpanded: this.$props.startExpanded,
269
+ };
270
+ },
271
+ methods: {
272
+ toggleExpand(payload) {
273
+ this.$refs[`${payload.id}-group`][0].isExpanded = payload.state;
274
+ },
275
+ },
276
+ };
277
+ &lt;/script&gt;
278
+ &nbsp;</pre></td></tr></table></pre>
279
+
280
+ <div class='push'></div><!-- for sticky footer -->
281
+ </div><!-- /wrapper -->
282
+ <div class='footer quiet pad2 space-top1 center small'>
283
+ Code coverage generated by
284
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
285
+ at Mon Apr 20 2020 14:01:39 GMT+0100 (British Summer Time)
286
+ </div>
287
+ </div>
288
+ <script src="../../../../prettify.js"></script>
289
+ <script>
290
+ window.onload = function () {
291
+ prettyPrint();
292
+ };
293
+ </script>
294
+ <script src="../../../../sorter.js"></script>
295
+ <script src="../../../../block-navigation.js"></script>
296
+ </body>
297
+ </html>
298
+