@fiscozen/checkbox 0.1.6 → 1.0.0-next.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.
- package/.eslintrc.cjs +19 -0
- package/.prettierrc.js +6 -0
- package/README.md +514 -0
- package/coverage/clover.xml +789 -215
- package/coverage/coverage-final.json +6 -6
- package/coverage/index.html +32 -32
- package/coverage/src/FzCheckbox.vue.html +1099 -151
- package/coverage/src/FzCheckboxGroup.vue.html +444 -81
- package/coverage/src/common.ts.html +79 -19
- package/coverage/src/components/ErrorAlert.vue.html +268 -0
- package/coverage/src/components/FzCheckboxGroupOption.vue.html +343 -70
- package/coverage/src/components/index.html +22 -22
- package/coverage/src/index.html +45 -45
- package/coverage/src/utils.ts.html +265 -0
- package/package.json +12 -10
- package/src/FzCheckbox.vue +411 -95
- package/src/FzCheckboxGroup.vue +179 -58
- package/src/__test__/FzCheckbox.test.ts +91 -19
- package/src/__test__/FzCheckboxGroup.test.ts +167 -4
- package/src/common.ts +20 -0
- package/src/components/ErrorAlert.vue +61 -0
- package/src/components/FzCheckboxGroupOption.vue +137 -46
- package/src/index.ts +1 -0
- package/src/types.ts +166 -23
- package/src/utils.ts +60 -0
- package/tsconfig.json +1 -1
- package/coverage/.tmp/coverage-0.json +0 -1
- package/coverage/.tmp/coverage-1.json +0 -1
- package/coverage/src/components/FzCheckboxErrorText.vue.html +0 -145
- package/coverage/src/types.ts.html +0 -310
- package/dist/checkbox.js +0 -301
- package/dist/checkbox.umd.cjs +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/src/FzCheckbox.vue.d.ts +0 -95
- package/dist/src/FzCheckboxGroup.vue.d.ts +0 -70
- package/dist/src/__test__/FzCheckbox.test.d.ts +0 -1
- package/dist/src/__test__/FzCheckboxGroup.test.d.ts +0 -1
- package/dist/src/common.d.ts +0 -4
- package/dist/src/components/FzCheckboxErrorText.vue.d.ts +0 -24
- package/dist/src/components/FzCheckboxGroupOption.vue.d.ts +0 -82
- package/dist/src/index.d.ts +0 -3
- package/dist/src/types.d.ts +0 -76
- package/dist/style.css +0 -1
- package/src/components/FzCheckboxErrorText.vue +0 -20
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">97.
|
|
26
|
+
<span class="strong">97.98% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>195/199</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">77.77% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>21/27</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">97.
|
|
47
|
+
<span class="strong">97.98% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>195/199</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
<template id="filterTemplate">
|
|
58
58
|
<div class="quiet">
|
|
59
59
|
Filter:
|
|
60
|
-
<input
|
|
60
|
+
<input type="search" id="fileSearch">
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
@@ -141,7 +141,128 @@
|
|
|
141
141
|
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
142
|
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
143
|
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">6x</span>
|
|
145
266
|
<span class="cline-any cline-yes">1x</span>
|
|
146
267
|
<span class="cline-any cline-yes">1x</span>
|
|
147
268
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -182,8 +303,25 @@
|
|
|
182
303
|
<span class="cline-any cline-yes">1x</span>
|
|
183
304
|
<span class="cline-any cline-yes">1x</span>
|
|
184
305
|
<span class="cline-any cline-yes">1x</span>
|
|
306
|
+
<span class="cline-any cline-yes">1x</span>
|
|
307
|
+
<span class="cline-any cline-yes">1x</span>
|
|
308
|
+
<span class="cline-any cline-yes">1x</span>
|
|
309
|
+
<span class="cline-any cline-yes">1x</span>
|
|
310
|
+
<span class="cline-any cline-yes">1x</span>
|
|
311
|
+
<span class="cline-any cline-yes">1x</span>
|
|
312
|
+
<span class="cline-any cline-yes">1x</span>
|
|
313
|
+
<span class="cline-any cline-yes">1x</span>
|
|
314
|
+
<span class="cline-any cline-yes">1x</span>
|
|
315
|
+
<span class="cline-any cline-yes">1x</span>
|
|
316
|
+
<span class="cline-any cline-yes">1x</span>
|
|
317
|
+
<span class="cline-any cline-yes">1x</span>
|
|
318
|
+
<span class="cline-any cline-yes">1x</span>
|
|
319
|
+
<span class="cline-any cline-yes">10x</span>
|
|
320
|
+
<span class="cline-any cline-no"> </span>
|
|
185
321
|
<span class="cline-any cline-no"> </span>
|
|
186
322
|
<span class="cline-any cline-no"> </span>
|
|
323
|
+
<span class="cline-any cline-no"> </span>
|
|
324
|
+
<span class="cline-any cline-yes">10x</span>
|
|
187
325
|
<span class="cline-any cline-yes">1x</span>
|
|
188
326
|
<span class="cline-any cline-yes">1x</span>
|
|
189
327
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -192,111 +330,336 @@
|
|
|
192
330
|
<span class="cline-any cline-yes">1x</span>
|
|
193
331
|
<span class="cline-any cline-yes">1x</span>
|
|
194
332
|
<span class="cline-any cline-yes">1x</span>
|
|
333
|
+
<span class="cline-any cline-yes">2x</span>
|
|
334
|
+
<span class="cline-any cline-yes">2x</span>
|
|
195
335
|
<span class="cline-any cline-yes">1x</span>
|
|
196
336
|
<span class="cline-any cline-yes">1x</span>
|
|
197
337
|
<span class="cline-any cline-yes">1x</span>
|
|
198
338
|
<span class="cline-any cline-yes">1x</span>
|
|
199
|
-
<span class="cline-any cline-yes">4x</span>
|
|
200
|
-
<span class="cline-any cline-yes">4x</span>
|
|
201
|
-
<span class="cline-any cline-yes">4x</span>
|
|
202
|
-
<span class="cline-any cline-yes">4x</span>
|
|
203
|
-
<span class="cline-any cline-yes">4x</span>
|
|
204
339
|
<span class="cline-any cline-yes">1x</span>
|
|
205
340
|
<span class="cline-any cline-yes">1x</span>
|
|
206
341
|
<span class="cline-any cline-yes">1x</span>
|
|
207
|
-
<span class="cline-any cline-yes">4x</span>
|
|
208
|
-
<span class="cline-any cline-yes">4x</span>
|
|
209
|
-
<span class="cline-any cline-yes">4x</span>
|
|
210
342
|
<span class="cline-any cline-yes">1x</span>
|
|
211
343
|
<span class="cline-any cline-yes">1x</span>
|
|
212
344
|
<span class="cline-any cline-yes">1x</span>
|
|
213
|
-
<span class="cline-any cline-yes">4x</span>
|
|
214
|
-
<span class="cline-any cline-yes">4x</span>
|
|
215
|
-
<span class="cline-any cline-yes">4x</span>
|
|
216
345
|
<span class="cline-any cline-yes">1x</span>
|
|
217
346
|
<span class="cline-any cline-yes">1x</span>
|
|
347
|
+
<span class="cline-any cline-yes">1x</span>
|
|
348
|
+
<span class="cline-any cline-yes">1x</span>
|
|
349
|
+
<span class="cline-any cline-yes">1x</span>
|
|
350
|
+
<span class="cline-any cline-yes">1x</span>
|
|
351
|
+
<span class="cline-any cline-yes">1x</span>
|
|
352
|
+
<span class="cline-any cline-yes">1x</span>
|
|
353
|
+
<span class="cline-any cline-yes">1x</span>
|
|
354
|
+
<span class="cline-any cline-yes">1x</span>
|
|
355
|
+
<span class="cline-any cline-yes">1x</span>
|
|
356
|
+
<span class="cline-any cline-yes">1x</span>
|
|
357
|
+
<span class="cline-any cline-yes">1x</span>
|
|
358
|
+
<span class="cline-any cline-yes">10x</span>
|
|
359
|
+
<span class="cline-any cline-yes">10x</span>
|
|
360
|
+
<span class="cline-any cline-yes">10x</span>
|
|
361
|
+
<span class="cline-any cline-yes">1x</span>
|
|
362
|
+
<span class="cline-any cline-yes">1x</span>
|
|
363
|
+
<span class="cline-any cline-yes">1x</span>
|
|
364
|
+
<span class="cline-any cline-yes">1x</span>
|
|
365
|
+
<span class="cline-any cline-yes">1x</span>
|
|
366
|
+
<span class="cline-any cline-yes">1x</span>
|
|
367
|
+
<span class="cline-any cline-yes">1x</span>
|
|
368
|
+
<span class="cline-any cline-yes">1x</span>
|
|
369
|
+
<span class="cline-any cline-yes">1x</span>
|
|
370
|
+
<span class="cline-any cline-yes">1x</span>
|
|
371
|
+
<span class="cline-any cline-yes">10x</span>
|
|
372
|
+
<span class="cline-any cline-yes">10x</span>
|
|
373
|
+
<span class="cline-any cline-yes">10x</span>
|
|
374
|
+
<span class="cline-any cline-yes">1x</span>
|
|
375
|
+
<span class="cline-any cline-yes">1x</span>
|
|
376
|
+
<span class="cline-any cline-yes">1x</span>
|
|
377
|
+
<span class="cline-any cline-yes">1x</span>
|
|
378
|
+
<span class="cline-any cline-yes">1x</span>
|
|
379
|
+
<span class="cline-any cline-yes">1x</span>
|
|
380
|
+
<span class="cline-any cline-yes">1x</span>
|
|
381
|
+
<span class="cline-any cline-yes">1x</span>
|
|
382
|
+
<span class="cline-any cline-yes">1x</span>
|
|
383
|
+
<span class="cline-any cline-yes">1x</span>
|
|
384
|
+
<span class="cline-any cline-yes">1x</span>
|
|
385
|
+
<span class="cline-any cline-yes">1x</span>
|
|
386
|
+
<span class="cline-any cline-yes">1x</span>
|
|
387
|
+
<span class="cline-any cline-yes">1x</span>
|
|
388
|
+
<span class="cline-any cline-yes">1x</span>
|
|
389
|
+
<span class="cline-any cline-yes">1x</span>
|
|
390
|
+
<span class="cline-any cline-yes">1x</span>
|
|
391
|
+
<span class="cline-any cline-yes">1x</span>
|
|
392
|
+
<span class="cline-any cline-yes">1x</span>
|
|
393
|
+
<span class="cline-any cline-yes">1x</span>
|
|
394
|
+
<span class="cline-any cline-yes">1x</span>
|
|
395
|
+
<span class="cline-any cline-yes">10x</span>
|
|
396
|
+
<span class="cline-any cline-yes">10x</span>
|
|
397
|
+
<span class="cline-any cline-yes">10x</span>
|
|
398
|
+
<span class="cline-any cline-yes">2x</span>
|
|
399
|
+
<span class="cline-any cline-yes">2x</span>
|
|
400
|
+
<span class="cline-any cline-yes">10x</span>
|
|
401
|
+
<span class="cline-any cline-yes">10x</span>
|
|
218
402
|
<span class="cline-any cline-yes">4x</span>
|
|
219
403
|
<span class="cline-any cline-yes">4x</span>
|
|
220
|
-
<span class="cline-any cline-yes">
|
|
404
|
+
<span class="cline-any cline-yes">10x</span>
|
|
405
|
+
<span class="cline-any cline-yes">10x</span>
|
|
221
406
|
<span class="cline-any cline-yes">1x</span>
|
|
222
|
-
<span class="cline-any cline-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
407
|
+
<span class="cline-any cline-yes">1x</span>
|
|
408
|
+
<span class="cline-any cline-yes">1x</span>
|
|
409
|
+
<span class="cline-any cline-yes">1x</span>
|
|
410
|
+
<span class="cline-any cline-yes">1x</span>
|
|
411
|
+
<span class="cline-any cline-yes">1x</span>
|
|
412
|
+
<span class="cline-any cline-yes">1x</span>
|
|
413
|
+
<span class="cline-any cline-yes">1x</span>
|
|
414
|
+
<span class="cline-any cline-yes">1x</span>
|
|
415
|
+
<span class="cline-any cline-yes">1x</span>
|
|
416
|
+
<span class="cline-any cline-yes">1x</span>
|
|
417
|
+
<span class="cline-any cline-yes">1x</span>
|
|
418
|
+
<span class="cline-any cline-yes">1x</span>
|
|
419
|
+
<span class="cline-any cline-yes">1x</span>
|
|
420
|
+
<span class="cline-any cline-yes">1x</span>
|
|
421
|
+
<span class="cline-any cline-yes">1x</span>
|
|
422
|
+
<span class="cline-any cline-yes">2x</span>
|
|
423
|
+
<span class="cline-any cline-yes">1x</span>
|
|
424
|
+
<span class="cline-any cline-yes">1x</span>
|
|
425
|
+
<span class="cline-any cline-yes">1x</span>
|
|
426
|
+
<span class="cline-any cline-yes">1x</span>
|
|
427
|
+
<span class="cline-any cline-yes">1x</span>
|
|
428
|
+
<span class="cline-any cline-yes">1x</span>
|
|
429
|
+
<span class="cline-any cline-yes">1x</span>
|
|
430
|
+
<span class="cline-any cline-yes">1x</span>
|
|
431
|
+
<span class="cline-any cline-yes">1x</span>
|
|
432
|
+
<span class="cline-any cline-yes">1x</span>
|
|
433
|
+
<span class="cline-any cline-yes">1x</span>
|
|
434
|
+
<span class="cline-any cline-yes">1x</span>
|
|
435
|
+
<span class="cline-any cline-yes">1x</span>
|
|
436
|
+
<span class="cline-any cline-yes">1x</span>
|
|
437
|
+
<span class="cline-any cline-yes">1x</span>
|
|
438
|
+
<span class="cline-any cline-yes">1x</span>
|
|
439
|
+
<span class="cline-any cline-yes">1x</span>
|
|
440
|
+
<span class="cline-any cline-yes">1x</span>
|
|
441
|
+
<span class="cline-any cline-yes">1x</span>
|
|
442
|
+
<span class="cline-any cline-yes">1x</span>
|
|
443
|
+
<span class="cline-any cline-yes">1x</span>
|
|
444
|
+
<span class="cline-any cline-yes">1x</span>
|
|
445
|
+
<span class="cline-any cline-yes">1x</span>
|
|
446
|
+
<span class="cline-any cline-yes">1x</span>
|
|
447
|
+
<span class="cline-any cline-yes">1x</span>
|
|
448
|
+
<span class="cline-any cline-yes">1x</span>
|
|
449
|
+
<span class="cline-any cline-yes">1x</span>
|
|
450
|
+
<span class="cline-any cline-yes">1x</span>
|
|
451
|
+
<span class="cline-any cline-yes">1x</span>
|
|
452
|
+
<span class="cline-any cline-yes">1x</span>
|
|
453
|
+
<span class="cline-any cline-yes">1x</span>
|
|
454
|
+
<span class="cline-any cline-yes">1x</span>
|
|
455
|
+
<span class="cline-any cline-yes">1x</span>
|
|
456
|
+
<span class="cline-any cline-yes">1x</span>
|
|
457
|
+
<span class="cline-any cline-yes">1x</span>
|
|
458
|
+
<span class="cline-any cline-yes">1x</span>
|
|
459
|
+
<span class="cline-any cline-yes">1x</span>
|
|
460
|
+
<span class="cline-any cline-yes">1x</span>
|
|
461
|
+
<span class="cline-any cline-yes">1x</span>
|
|
462
|
+
<span class="cline-any cline-yes">1x</span>
|
|
463
|
+
<span class="cline-any cline-yes">1x</span>
|
|
464
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><script setup lang="ts">
|
|
465
|
+
/**
|
|
466
|
+
* FzCheckboxGroup Component
|
|
467
|
+
*
|
|
468
|
+
* A container component for managing multiple related checkboxes as a group.
|
|
469
|
+
* Provides group-level labeling, help text, error handling, and accessibility features.
|
|
470
|
+
* Supports both flat checkbox lists and hierarchical parent-child structures.
|
|
471
|
+
*
|
|
472
|
+
* @component
|
|
473
|
+
* @example
|
|
474
|
+
* // Basic checkbox group
|
|
475
|
+
* <FzCheckboxGroup
|
|
476
|
+
* v-model="selectedOptions"
|
|
477
|
+
* label="Choose options"
|
|
478
|
+
* :options="[
|
|
479
|
+
* { label: 'Option 1', value: 'opt1' },
|
|
480
|
+
* { label: 'Option 2', value: 'opt2' }
|
|
481
|
+
* ]"
|
|
482
|
+
* />
|
|
483
|
+
*
|
|
484
|
+
* @example
|
|
485
|
+
* // Hierarchical checkbox group with children
|
|
486
|
+
* <FzCheckboxGroup
|
|
487
|
+
* v-model="selection"
|
|
488
|
+
* label="Select features"
|
|
489
|
+
* :options="[
|
|
490
|
+
* {
|
|
491
|
+
* label: 'All Features',
|
|
492
|
+
* value: 'all',
|
|
493
|
+
* children: [
|
|
494
|
+
* { label: 'Feature A', value: 'a' },
|
|
495
|
+
* { label: 'Feature B', value: 'b' }
|
|
496
|
+
* ]
|
|
497
|
+
* }
|
|
498
|
+
* ]"
|
|
499
|
+
* />
|
|
500
|
+
*/
|
|
501
|
+
import { computed, useSlots, watch } from "vue";
|
|
250
502
|
import { FzCheckboxGroupProps } from "./types";
|
|
251
|
-
import
|
|
252
|
-
import { mapSizeToClasses } from "./common";
|
|
503
|
+
import { generateGroupId } from "./utils";
|
|
253
504
|
import FzCheckboxGroupOption from "./components/FzCheckboxGroupOption.vue";
|
|
254
|
-
|
|
255
|
-
FzCheckboxGroupOption.compatConfig = {
|
|
256
|
-
MODE: 3,
|
|
257
|
-
};
|
|
505
|
+
import ErrorAlert from "./components/ErrorAlert.vue";
|
|
258
506
|
|
|
259
507
|
const props = defineProps<FzCheckboxGroupProps>();
|
|
260
|
-
const
|
|
508
|
+
const slots = useSlots();
|
|
261
509
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
510
|
+
/**
|
|
511
|
+
* Deprecation warning for size prop.
|
|
512
|
+
* Watches the size prop and warns once on mount if it's provided.
|
|
513
|
+
* Using watch with immediate:true ensures the warning only fires once per component instance.
|
|
514
|
+
*/
|
|
515
|
+
watch(
|
|
516
|
+
() => props.size,
|
|
517
|
+
(size) => {
|
|
518
|
+
if (size !== undefined) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
519
|
+
<span class="cstat-no" title="statement not covered" > console.warn(</span>
|
|
520
|
+
<span class="cstat-no" title="statement not covered" > '[FzCheckboxGroup] The "size" prop is deprecated and will be removed in a future version. Checkboxes now have a fixed size.'</span>
|
|
521
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
522
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
523
|
+
},
|
|
524
|
+
{ immediate: true }
|
|
525
|
+
);
|
|
526
|
+
|
|
527
|
+
/** Unique identifier for the checkbox group, used for ARIA relationships */
|
|
528
|
+
const id: string = generateGroupId();
|
|
529
|
+
|
|
530
|
+
/** Dynamic classes for help text based on disabled state */
|
|
531
|
+
const computedHelpTextClass = computed<string[]>(() => [
|
|
532
|
+
"text-sm",
|
|
533
|
+
props.<span class="branch-0 cbranch-no" title="branch not covered" >disabled ? "text-grey-400" : "</span>text-grey-500",
|
|
265
534
|
]);
|
|
266
535
|
|
|
267
|
-
|
|
536
|
+
/**
|
|
537
|
+
* Two-way binding for selected checkbox values.
|
|
538
|
+
* Supports string, number, and boolean values.
|
|
539
|
+
* Always an array, even when empty.
|
|
540
|
+
*/
|
|
541
|
+
const model = defineModel<(string | number | boolean)[]>({
|
|
268
542
|
required: true,
|
|
269
543
|
default: [],
|
|
270
544
|
});
|
|
271
545
|
|
|
272
|
-
|
|
273
|
-
const
|
|
274
|
-
const staticSlotContainerClass = "flex flex-col";
|
|
546
|
+
/** Base layout for the label element */
|
|
547
|
+
const staticLabeldClass: string = "flex flex-col";
|
|
275
548
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
props.size === <span class="branch-0 cbranch-no" title="branch not covered" >"sm" ? "gap-4" : "</span>",
|
|
279
|
-
props.size === "md" ? <span class="branch-0 cbranch-no" title="branch not covered" >"gap-6" : "",</span>
|
|
280
|
-
props.disabled ? "text-grey-400" : "",
|
|
281
|
-
!props.disabled ? "text-grey-500" : "",
|
|
282
|
-
]);
|
|
549
|
+
/** Base layout for the root container */
|
|
550
|
+
const staticContainerClass: string = "flex flex-col gap-10";
|
|
283
551
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
552
|
+
/** Base layout for the checkboxes container */
|
|
553
|
+
const staticSlotContainerClass: string = "flex items-start";
|
|
554
|
+
|
|
555
|
+
/** Dynamic label classes based on spacing and disabled state */
|
|
556
|
+
const computedLabelClass = computed<string[]>(() => [
|
|
557
|
+
"text-base",
|
|
558
|
+
"gap-6",
|
|
559
|
+
props.disabled ? "text-grey-400" : "text-core-black",
|
|
288
560
|
]);
|
|
289
561
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
562
|
+
/** Dynamic container classes */
|
|
563
|
+
const computedContainerClass = computed<string[]>(() => ["text-base"]);
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* Dynamic classes for the checkbox container.
|
|
567
|
+
* Handles both horizontal and vertical layouts with appropriate spacing.
|
|
568
|
+
*/
|
|
569
|
+
const computedSlotContainerClass = computed<string[]>(() => [
|
|
570
|
+
"text-base",
|
|
571
|
+
props.<span class="branch-0 cbranch-no" title="branch not covered" >horizontal ? "gap-16" : "</span>gap-8",
|
|
572
|
+
props.<span class="branch-0 cbranch-no" title="branch not covered" >horizontal ? "flex-row" : "</span>flex-col",
|
|
294
573
|
]);
|
|
295
574
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
575
|
+
/**
|
|
576
|
+
* Computes the aria-describedby attribute value for the checkbox group.
|
|
577
|
+
* Combines help text and error message IDs when present.
|
|
578
|
+
*
|
|
579
|
+
* @returns Space-separated string of IDs, or undefined if no descriptions
|
|
580
|
+
*
|
|
581
|
+
* @example
|
|
582
|
+
* // Only help text
|
|
583
|
+
* "fz-checkbox-group-123-help"
|
|
584
|
+
*
|
|
585
|
+
* @example
|
|
586
|
+
* // Only error
|
|
587
|
+
* "fz-checkbox-group-123-error"
|
|
588
|
+
*
|
|
589
|
+
* @example
|
|
590
|
+
* // Both help and error
|
|
591
|
+
* "fz-checkbox-group-123-help fz-checkbox-group-123-error"
|
|
592
|
+
*/
|
|
593
|
+
const computedAriaDescribedby = computed<string | undefined>(() => {
|
|
594
|
+
const descriptions: string[] = [];
|
|
595
|
+
|
|
596
|
+
if (slots.help) {
|
|
597
|
+
descriptions.push(`${id}-help`);
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
if (props.error && slots.error) {
|
|
601
|
+
descriptions.push(`${id}-error`);
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
return descriptions.length > 0 ? descriptions.join(" ") : undefined;
|
|
605
|
+
});
|
|
299
606
|
</script>
|
|
607
|
+
|
|
608
|
+
<template>
|
|
609
|
+
<!-- Root container for the entire checkbox group -->
|
|
610
|
+
<div :class="[staticContainerClass, computedContainerClass]">
|
|
611
|
+
<!--
|
|
612
|
+
Group label with optional required indicator and help text
|
|
613
|
+
Connected to checkbox group via aria-labelledby
|
|
614
|
+
-->
|
|
615
|
+
<label :id="id + '-label'" :class="[staticLabeldClass, computedLabelClass]">
|
|
616
|
+
<!-- Main label text with required asterisk if applicable -->
|
|
617
|
+
<span>{{ label }}<span v-if="<span class="branch-0 cbranch-no" title="branch not covered" >required"> *</span><</span>/span>
|
|
618
|
+
|
|
619
|
+
<!-- Optional help text slot for additional context -->
|
|
620
|
+
<p :id="id + '-help'" :class="computedHelpTextClass" v-if="$slots.help">
|
|
621
|
+
<slot name="help" />
|
|
622
|
+
</p>
|
|
623
|
+
</label>
|
|
624
|
+
|
|
625
|
+
<!--
|
|
626
|
+
Checkbox group container with ARIA group role
|
|
627
|
+
- role="group": Identifies this as a group of related form controls
|
|
628
|
+
- aria-labelledby: Links to the label element
|
|
629
|
+
- aria-describedby: Links to help text and/or error message for screen readers
|
|
630
|
+
- aria-required: Indicates if selection is mandatory
|
|
631
|
+
- aria-invalid: Indicates validation state
|
|
632
|
+
-->
|
|
633
|
+
<div
|
|
634
|
+
:class="[staticSlotContainerClass, computedSlotContainerClass]"
|
|
635
|
+
:id="id"
|
|
636
|
+
role="group"
|
|
637
|
+
:aria-labelledby="id + '-label'"
|
|
638
|
+
:aria-describedby="computedAriaDescribedby"
|
|
639
|
+
:aria-required="<span class="branch-0 cbranch-no" title="branch not covered" >required ? 'true' : 'false'"</span>
|
|
640
|
+
:aria-invalid="error ? 'true' : 'false'"
|
|
641
|
+
>
|
|
642
|
+
<!--
|
|
643
|
+
Render each checkbox option
|
|
644
|
+
Supports both simple checkboxes and parent-child hierarchies
|
|
645
|
+
Key uses value if available, falls back to label for uniqueness
|
|
646
|
+
-->
|
|
647
|
+
<FzCheckboxGroupOption
|
|
648
|
+
v-for="option in options"
|
|
649
|
+
:key="option.value ? option.value.toString() : option.label"
|
|
650
|
+
v-model="<span class="fstat-no" title="function not covered" >model"</span>
|
|
651
|
+
:disabled="disabled"
|
|
652
|
+
v-bind="option"
|
|
653
|
+
:emphasis="emphasis"
|
|
654
|
+
:error="error"
|
|
655
|
+
/>
|
|
656
|
+
</div>
|
|
657
|
+
<!-- Error message display with accessible ARIA live region -->
|
|
658
|
+
<ErrorAlert v-if="error && $slots.error" :id="id + '-error'">
|
|
659
|
+
<slot name="error" />
|
|
660
|
+
</ErrorAlert>
|
|
661
|
+
</div>
|
|
662
|
+
</template>
|
|
300
663
|
</pre></td></tr></table></pre>
|
|
301
664
|
|
|
302
665
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -304,7 +667,7 @@ function generateRandomId() {
|
|
|
304
667
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
305
668
|
Code coverage generated by
|
|
306
669
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
307
|
-
at
|
|
670
|
+
at 2025-10-30T09:58:41.772Z
|
|
308
671
|
</div>
|
|
309
672
|
<script src="../prettify.js"></script>
|
|
310
673
|
<script>
|