@zajno/common 1.4.0 → 1.4.4

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 (90) hide show
  1. package/coverage/clover.xml +92 -81
  2. package/coverage/coverage-final.json +6 -6
  3. package/coverage/lcov-report/index.html +27 -27
  4. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  5. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
  6. package/coverage/lcov-report/src/async/arrays.ts.html +1 -1
  7. package/coverage/lcov-report/src/async/index.html +1 -1
  8. package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
  9. package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
  10. package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
  11. package/coverage/lcov-report/src/dates/format.ts.html +1 -1
  12. package/coverage/lcov-report/src/dates/index.html +1 -1
  13. package/coverage/lcov-report/src/dates/index.ts.html +1 -1
  14. package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
  15. package/coverage/lcov-report/src/dates/period.ts.html +1 -1
  16. package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
  17. package/coverage/lcov-report/src/dates/types.ts.html +1 -1
  18. package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
  19. package/coverage/lcov-report/src/enumHelper.ts.html +1 -1
  20. package/coverage/lcov-report/src/event.ts.html +1 -1
  21. package/coverage/lcov-report/src/fields/index.html +1 -1
  22. package/coverage/lcov-report/src/fields/update.ts.html +1 -1
  23. package/coverage/lcov-report/src/functions.ts.html +1 -1
  24. package/coverage/lcov-report/src/index.html +15 -15
  25. package/coverage/lcov-report/src/lazy.light.ts.html +4 -4
  26. package/coverage/lcov-report/src/logger/batch.ts.html +1 -1
  27. package/coverage/lcov-report/src/logger/console.ts.html +1 -1
  28. package/coverage/lcov-report/src/logger/index.html +1 -1
  29. package/coverage/lcov-report/src/logger/index.ts.html +1 -1
  30. package/coverage/lcov-report/src/logger/named.ts.html +1 -1
  31. package/coverage/lcov-report/src/logger/proxy.ts.html +1 -1
  32. package/coverage/lcov-report/src/math/arrays.ts.html +1 -1
  33. package/coverage/lcov-report/src/math/calc.ts.html +1 -1
  34. package/coverage/lcov-report/src/math/distribution.ts.html +1 -1
  35. package/coverage/lcov-report/src/math/index.html +1 -1
  36. package/coverage/lcov-report/src/math/index.ts.html +1 -1
  37. package/coverage/lcov-report/src/transitionObserver.ts.html +29 -8
  38. package/coverage/lcov-report/src/types.ts.html +1 -1
  39. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
  40. package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
  41. package/coverage/lcov-report/src/validation/helpers.ts.html +1 -1
  42. package/coverage/lcov-report/src/validation/index.html +1 -1
  43. package/coverage/lcov-report/src/validation/index.ts.html +1 -1
  44. package/coverage/lcov-report/src/validation/types.ts.html +1 -1
  45. package/coverage/lcov-report/src/validation/validators.ts.html +2 -2
  46. package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
  47. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +3 -3
  48. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +20 -8
  49. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +1 -1
  50. package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +48 -21
  51. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +28 -10
  52. package/coverage/lcov-report/src/viewModels/index.html +35 -35
  53. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +1 -1
  54. package/coverage/lcov.info +229 -207
  55. package/lib/observers.d.ts +16 -0
  56. package/lib/observers.d.ts.map +1 -0
  57. package/lib/observers.js +74 -0
  58. package/lib/observers.js.map +1 -0
  59. package/lib/transitionObserver.d.ts +1 -0
  60. package/lib/transitionObserver.d.ts.map +1 -1
  61. package/lib/transitionObserver.js +8 -1
  62. package/lib/transitionObserver.js.map +1 -1
  63. package/lib/validation/validators.js +1 -1
  64. package/lib/viewModels/CommonModel.d.ts +2 -3
  65. package/lib/viewModels/CommonModel.d.ts.map +1 -1
  66. package/lib/viewModels/CommonModel.js +8 -19
  67. package/lib/viewModels/CommonModel.js.map +1 -1
  68. package/lib/viewModels/MultiSelectModel.d.ts.map +1 -1
  69. package/lib/viewModels/MultiSelectModel.js +3 -0
  70. package/lib/viewModels/MultiSelectModel.js.map +1 -1
  71. package/lib/viewModels/SelectModel.d.ts +1 -0
  72. package/lib/viewModels/SelectModel.d.ts.map +1 -1
  73. package/lib/viewModels/SelectModel.js +24 -14
  74. package/lib/viewModels/SelectModel.js.map +1 -1
  75. package/lib/viewModels/TextModel.d.ts.map +1 -1
  76. package/lib/viewModels/TextModel.js +3 -0
  77. package/lib/viewModels/TextModel.js.map +1 -1
  78. package/lib/viewModels/Validatable.d.ts +2 -0
  79. package/lib/viewModels/Validatable.d.ts.map +1 -1
  80. package/lib/viewModels/Validatable.js +5 -0
  81. package/lib/viewModels/Validatable.js.map +1 -1
  82. package/package.json +1 -1
  83. package/src/observers.ts +82 -0
  84. package/src/transitionObserver.ts +7 -0
  85. package/src/validation/validators.ts +1 -1
  86. package/src/viewModels/CommonModel.ts +10 -13
  87. package/src/viewModels/MultiSelectModel.ts +4 -0
  88. package/src/viewModels/SelectModel.ts +11 -2
  89. package/src/viewModels/TextModel.ts +4 -0
  90. package/src/viewModels/Validatable.ts +6 -0
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">89.53% </span>
26
+ <span class="strong">88.64% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>77/86</span>
28
+ <span class='fraction'>78/88</span>
29
29
  </div>
30
30
 
31
31
 
@@ -37,16 +37,16 @@
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">81.82% </span>
40
+ <span class="strong">78.26% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>18/22</span>
42
+ <span class='fraction'>18/23</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">89.53% </span>
47
+ <span class="strong">88.64% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>77/86</span>
49
+ <span class='fraction'>78/88</span>
50
50
  </div>
51
51
 
52
52
 
@@ -233,7 +233,14 @@
233
233
  <a name='L174'></a><a href='#L174'>174</a>
234
234
  <a name='L175'></a><a href='#L175'>175</a>
235
235
  <a name='L176'></a><a href='#L176'>176</a>
236
- <a name='L177'></a><a href='#L177'>177</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
236
+ <a name='L177'></a><a href='#L177'>177</a>
237
+ <a name='L178'></a><a href='#L178'>178</a>
238
+ <a name='L179'></a><a href='#L179'>179</a>
239
+ <a name='L180'></a><a href='#L180'>180</a>
240
+ <a name='L181'></a><a href='#L181'>181</a>
241
+ <a name='L182'></a><a href='#L182'>182</a>
242
+ <a name='L183'></a><a href='#L183'>183</a>
243
+ <a name='L184'></a><a href='#L184'>184</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
237
244
  <span class="cline-any cline-yes">1x</span>
238
245
  <span class="cline-any cline-yes">1x</span>
239
246
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -409,6 +416,13 @@
409
416
  <span class="cline-any cline-neutral">&nbsp;</span>
410
417
  <span class="cline-any cline-neutral">&nbsp;</span>
411
418
  <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-yes">1x</span>
421
+ <span class="cline-any cline-no">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
426
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { reaction } from 'mobx';
413
427
  import { IEvent, Event } from './event';
414
428
  import { ILogger, createLogger } from './logger';
@@ -585,6 +599,13 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
585
599
  }
586
600
  }
587
601
  }
602
+ &nbsp;
603
+ export function <span class="fstat-no" title="function not covered" >waitFor&lt;</span>T&gt;(current: () =&gt; T, toBe: T) {
604
+ <span class="cstat-no" title="statement not covered" > return new TransitionObserver(current)</span>
605
+ .to(toBe)
606
+ .fireOnce()
607
+ .getPromise();
608
+ }
588
609
  &nbsp;</pre></td></tr></table></pre>
589
610
 
590
611
  <div class='push'></div><!-- for sticky footer -->
@@ -592,7 +613,7 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
592
613
  <div class='footer quiet pad2 space-top1 center small'>
593
614
  Code coverage generated by
594
615
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
595
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
616
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
596
617
  </div>
597
618
  </div>
598
619
  <script src="../prettify.js"></script>
@@ -154,7 +154,7 @@ export type TypedKeys&lt;T extends Object, K&gt; = {
154
154
  <div class='footer quiet pad2 space-top1 center small'>
155
155
  Code coverage generated by
156
156
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
157
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
157
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
158
158
  </div>
159
159
  </div>
160
160
  <script src="../prettify.js"></script>
@@ -142,7 +142,7 @@ export namespace <span class="branch-1 cbranch-no" title="branch not covered" >V
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
145
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
145
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
146
146
  </div>
147
147
  </div>
148
148
  <script src="../../prettify.js"></script>
@@ -139,7 +139,7 @@ export default {
139
139
  <div class='footer quiet pad2 space-top1 center small'>
140
140
  Code coverage generated by
141
141
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
142
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
142
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
143
143
  </div>
144
144
  </div>
145
145
  <script src="../../prettify.js"></script>
@@ -208,7 +208,7 @@ export function <span class="fstat-no" title="function not covered" >validateObj
208
208
  <div class='footer quiet pad2 space-top1 center small'>
209
209
  Code coverage generated by
210
210
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
211
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
211
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
212
212
  </div>
213
213
  </div>
214
214
  <script src="../../prettify.js"></script>
@@ -185,7 +185,7 @@
185
185
  <div class='footer quiet pad2 space-top1 center small'>
186
186
  Code coverage generated by
187
187
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
188
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
188
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
189
189
  </div>
190
190
  </div>
191
191
  <script src="../../prettify.js"></script>
@@ -91,7 +91,7 @@ export * from './helpers';
91
91
  <div class='footer quiet pad2 space-top1 center small'>
92
92
  Code coverage generated by
93
93
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
94
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
94
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
95
95
  </div>
96
96
  </div>
97
97
  <script src="../../prettify.js"></script>
@@ -109,7 +109,7 @@ export class ValidationError&lt;TErrors = ValidationErrors&gt; extends Error {
109
109
  <div class='footer quiet pad2 space-top1 center small'>
110
110
  Code coverage generated by
111
111
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
112
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
112
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
113
113
  </div>
114
114
  </div>
115
115
  <script src="../../prettify.js"></script>
@@ -191,7 +191,7 @@ export const ValidatorsRegExps = {
191
191
  expiryDateCard: /^\d+$/,
192
192
  cvv: /^\d+$/,
193
193
  // eslint-disable-next-line no-useless-escape
194
- website: /^(https?:\/\/)?([a-z0-9]+(-?[a-z0-9]+\.))+[a-z]{2,}(:[0-9]{1,})?(\/.*)?$/i,
194
+ website: /^(https?:\/\/)?([a-z0-9]+([a-z0-9\-]+\.))+[a-z]{2,}(:[0-9]{1,})?(\/.*)?$/i,
195
195
  linkedin: /^(https?:\/\/)?([a-z]+\d*[a-z]*\.)?linkedin\.com\/.*$/i,
196
196
  };
197
197
  &nbsp;
@@ -229,7 +229,7 @@ export const Validators = {
229
229
  <div class='footer quiet pad2 space-top1 center small'>
230
230
  Code coverage generated by
231
231
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
232
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
232
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
233
233
  </div>
234
234
  </div>
235
235
  <script src="../../prettify.js"></script>
@@ -142,7 +142,7 @@ export const Wrappers = {
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
145
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
145
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
146
146
  </div>
147
147
  </div>
148
148
  <script src="../../prettify.js"></script>
@@ -149,12 +149,12 @@
149
149
  <span class="cline-any cline-neutral">&nbsp;</span>
150
150
  <span class="cline-any cline-neutral">&nbsp;</span>
151
151
  <span class="cline-any cline-neutral">&nbsp;</span>
152
- <span class="cline-any cline-yes">38x</span>
152
+ <span class="cline-any cline-yes">50x</span>
153
153
  <span class="cline-any cline-neutral">&nbsp;</span>
154
154
  <span class="cline-any cline-neutral">&nbsp;</span>
155
155
  <span class="cline-any cline-neutral">&nbsp;</span>
156
156
  <span class="cline-any cline-yes">17x</span>
157
- <span class="cline-any cline-yes">38x</span>
157
+ <span class="cline-any cline-yes">50x</span>
158
158
  <span class="cline-any cline-neutral">&nbsp;</span>
159
159
  <span class="cline-any cline-neutral">&nbsp;</span>
160
160
  <span class="cline-any cline-no">&nbsp;</span>
@@ -253,7 +253,7 @@ export class FlagModel implements IFlagModel, IFlagModelReadonly {
253
253
  <div class='footer quiet pad2 space-top1 center small'>
254
254
  Code coverage generated by
255
255
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
256
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
256
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
257
257
  </div>
258
258
  </div>
259
259
  <script src="../../prettify.js"></script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">77.67% </span>
26
+ <span class="strong">77.14% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>80/103</span>
28
+ <span class='fraction'>81/105</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">43.75% </span>
33
+ <span class="strong">44.44% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>7/16</span>
35
+ <span class='fraction'>8/18</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">77.11% </span>
47
+ <span class="strong">76.47% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>64/83</span>
49
+ <span class='fraction'>65/85</span>
50
50
  </div>
51
51
 
52
52
 
@@ -221,7 +221,11 @@
221
221
  <a name='L162'></a><a href='#L162'>162</a>
222
222
  <a name='L163'></a><a href='#L163'>163</a>
223
223
  <a name='L164'></a><a href='#L164'>164</a>
224
- <a name='L165'></a><a href='#L165'>165</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
224
+ <a name='L165'></a><a href='#L165'>165</a>
225
+ <a name='L166'></a><a href='#L166'>166</a>
226
+ <a name='L167'></a><a href='#L167'>167</a>
227
+ <a name='L168'></a><a href='#L168'>168</a>
228
+ <a name='L169'></a><a href='#L169'>169</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
225
229
  <span class="cline-any cline-yes">1x</span>
226
230
  <span class="cline-any cline-yes">1x</span>
227
231
  <span class="cline-any cline-yes">1x</span>
@@ -333,6 +337,10 @@
333
337
  <span class="cline-any cline-neutral">&nbsp;</span>
334
338
  <span class="cline-any cline-neutral">&nbsp;</span>
335
339
  <span class="cline-any cline-yes">8x</span>
340
+ <span class="cline-any cline-no">&nbsp;</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-yes">8x</span>
336
344
  <span class="cline-any cline-yes">8x</span>
337
345
  <span class="cline-any cline-neutral">&nbsp;</span>
338
346
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -495,6 +503,10 @@ export class MultiSelect&lt;T = any&gt; extends ValidatableModel&lt;ReadonlyArra
495
503
  } else {
496
504
  this._indexes.delete(index);
497
505
  }
506
+ &nbsp;
507
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this._validateOnChange) {
508
+ <span class="cstat-no" title="statement not covered" > this.validate();</span>
509
+ }
498
510
  &nbsp;
499
511
  <span class="missing-if-branch" title="else path not taken" >E</span>if (!this._flags.hasValue) {
500
512
  return;
@@ -556,7 +568,7 @@ export class MultiSelectString&lt;T extends string = string&gt; extends MultiSel
556
568
  <div class='footer quiet pad2 space-top1 center small'>
557
569
  Code coverage generated by
558
570
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
559
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
571
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
560
572
  </div>
561
573
  </div>
562
574
  <script src="../../prettify.js"></script>
@@ -196,7 +196,7 @@ export default NumberModel;
196
196
  <div class='footer quiet pad2 space-top1 center small'>
197
197
  Code coverage generated by
198
198
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
199
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
199
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
200
200
  </div>
201
201
  </div>
202
202
  <script src="../../prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">93.55% </span>
26
+ <span class="strong">91.04% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>58/62</span>
28
+ <span class='fraction'>61/67</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">93.75% </span>
33
+ <span class="strong">83.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>15/16</span>
35
+ <span class='fraction'>15/18</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">84% </span>
40
+ <span class="strong">84.62% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>21/25</span>
42
+ <span class='fraction'>22/26</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">92.86% </span>
47
+ <span class="strong">90% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>52/56</span>
49
+ <span class='fraction'>54/60</span>
50
50
  </div>
51
51
 
52
52
 
@@ -185,7 +185,16 @@
185
185
  <a name='L126'></a><a href='#L126'>126</a>
186
186
  <a name='L127'></a><a href='#L127'>127</a>
187
187
  <a name='L128'></a><a href='#L128'>128</a>
188
- <a name='L129'></a><a href='#L129'>129</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
188
+ <a name='L129'></a><a href='#L129'>129</a>
189
+ <a name='L130'></a><a href='#L130'>130</a>
190
+ <a name='L131'></a><a href='#L131'>131</a>
191
+ <a name='L132'></a><a href='#L132'>132</a>
192
+ <a name='L133'></a><a href='#L133'>133</a>
193
+ <a name='L134'></a><a href='#L134'>134</a>
194
+ <a name='L135'></a><a href='#L135'>135</a>
195
+ <a name='L136'></a><a href='#L136'>136</a>
196
+ <a name='L137'></a><a href='#L137'>137</a>
197
+ <a name='L138'></a><a href='#L138'>138</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
189
198
  <span class="cline-any cline-yes">1x</span>
190
199
  <span class="cline-any cline-yes">1x</span>
191
200
  <span class="cline-any cline-yes">1x</span>
@@ -263,20 +272,29 @@
263
272
  <span class="cline-any cline-neutral">&nbsp;</span>
264
273
  <span class="cline-any cline-neutral">&nbsp;</span>
265
274
  <span class="cline-any cline-yes">16x</span>
266
- <span class="cline-any cline-yes">4x</span>
267
275
  <span class="cline-any cline-neutral">&nbsp;</span>
268
276
  <span class="cline-any cline-neutral">&nbsp;</span>
269
- <span class="cline-any cline-yes">12x</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-yes">5x</span>
279
+ <span class="cline-any cline-yes">16x</span>
280
+ <span class="cline-any cline-no">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-yes">16x</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-yes">16x</span>
286
+ <span class="cline-any cline-no">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
270
288
  <span class="cline-any cline-neutral">&nbsp;</span>
271
289
  <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-yes">12x</span>
273
- <span class="cline-any cline-yes">12x</span>
290
+ <span class="cline-any cline-yes">16x</span>
291
+ <span class="cline-any cline-yes">16x</span>
274
292
  <span class="cline-any cline-neutral">&nbsp;</span>
275
- <span class="cline-any cline-yes">12x</span>
276
- <span class="cline-any cline-yes">33x</span>
293
+ <span class="cline-any cline-yes">16x</span>
294
+ <span class="cline-any cline-yes">45x</span>
277
295
  <span class="cline-any cline-neutral">&nbsp;</span>
278
296
  <span class="cline-any cline-neutral">&nbsp;</span>
279
- <span class="cline-any cline-yes">12x</span>
297
+ <span class="cline-any cline-yes">16x</span>
280
298
  <span class="cline-any cline-neutral">&nbsp;</span>
281
299
  <span class="cline-any cline-neutral">&nbsp;</span>
282
300
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -314,7 +332,7 @@
314
332
  <span class="cline-any cline-neutral">&nbsp;</span>
315
333
  <span class="cline-any cline-neutral">&nbsp;</span>
316
334
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { createLazy } from '../lazy.light';
317
- import { observable, computed, makeObservable, reaction } from 'mobx';
335
+ import { observable, computed, makeObservable, reaction, action } from 'mobx';
318
336
  import { FlagModel, ILabeledFlagModel } from './FlagModel';
319
337
  import { ValidatableModel } from './Validatable';
320
338
  import { IValueModel } from './types';
@@ -390,11 +408,20 @@ export class Select&lt;T = any&gt; extends ValidatableModel&lt;T&gt; implements
390
408
  }
391
409
  &nbsp;
392
410
  set index(val: number) {
393
- if (this._indexLocked) {
394
- return;
411
+ this.setIndex(val);
412
+ }
413
+ &nbsp;
414
+ @action
415
+ public setIndex = (val: number) =&gt; {
416
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this._indexLocked) {
417
+ <span class="cstat-no" title="statement not covered" > return;</span>
395
418
  }
396
419
  &nbsp;
397
420
  this._index = val;
421
+ &nbsp;
422
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this._validateOnChange) {
423
+ <span class="cstat-no" title="statement not covered" > this.validate();</span>
424
+ }
398
425
  &nbsp;
399
426
  // update all flags to be properly selected
400
427
  try {
@@ -406,7 +433,7 @@ export class Select&lt;T = any&gt; extends ValidatableModel&lt;T&gt; implements
406
433
  } finally {
407
434
  this._indexLocked = false;
408
435
  }
409
- }
436
+ };
410
437
  &nbsp;
411
438
  reset = () =&gt; {
412
439
  super.reset();
@@ -448,7 +475,7 @@ export class SelectString&lt;T extends string = string&gt; extends Select&lt;T&g
448
475
  <div class='footer quiet pad2 space-top1 center small'>
449
476
  Code coverage generated by
450
477
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
451
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
478
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
452
479
  </div>
453
480
  </div>
454
481
  <script src="../../prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">37.78% </span>
26
+ <span class="strong">37.5% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>17/45</span>
28
+ <span class='fraction'>18/48</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">4.35% </span>
33
+ <span class="strong">4.17% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>1/23</span>
35
+ <span class='fraction'>1/24</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">28.57% </span>
40
+ <span class="strong">26.67% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>4/14</span>
42
+ <span class='fraction'>4/15</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">40% </span>
47
+ <span class="strong">39.53% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>16/40</span>
49
+ <span class='fraction'>17/43</span>
50
50
  </div>
51
51
 
52
52
 
@@ -150,7 +150,13 @@
150
150
  <a name='L91'></a><a href='#L91'>91</a>
151
151
  <a name='L92'></a><a href='#L92'>92</a>
152
152
  <a name='L93'></a><a href='#L93'>93</a>
153
- <a name='L94'></a><a href='#L94'>94</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
153
+ <a name='L94'></a><a href='#L94'>94</a>
154
+ <a name='L95'></a><a href='#L95'>95</a>
155
+ <a name='L96'></a><a href='#L96'>96</a>
156
+ <a name='L97'></a><a href='#L97'>97</a>
157
+ <a name='L98'></a><a href='#L98'>98</a>
158
+ <a name='L99'></a><a href='#L99'>99</a>
159
+ <a name='L100'></a><a href='#L100'>100</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
154
160
  <span class="cline-any cline-yes">2x</span>
155
161
  <span class="cline-any cline-yes">2x</span>
156
162
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -173,6 +179,7 @@
173
179
  <span class="cline-any cline-yes">11x</span>
174
180
  <span class="cline-any cline-neutral">&nbsp;</span>
175
181
  <span class="cline-any cline-yes">11x</span>
182
+ <span class="cline-any cline-yes">11x</span>
176
183
  <span class="cline-any cline-neutral">&nbsp;</span>
177
184
  <span class="cline-any cline-neutral">&nbsp;</span>
178
185
  <span class="cline-any cline-yes">11x</span>
@@ -193,6 +200,11 @@
193
200
  <span class="cline-any cline-neutral">&nbsp;</span>
194
201
  <span class="cline-any cline-no">&nbsp;</span>
195
202
  <span class="cline-any cline-no">&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>
206
+ <span class="cline-any cline-no">&nbsp;</span>
207
+ <span class="cline-any cline-no">&nbsp;</span>
196
208
  <span class="cline-any cline-no">&nbsp;</span>
197
209
  <span class="cline-any cline-neutral">&nbsp;</span>
198
210
  <span class="cline-any cline-no">&nbsp;</span>
@@ -266,6 +278,7 @@ export abstract class ValidatableModel&lt;T = string&gt; {
266
278
  private _error: string = null;
267
279
  &nbsp;
268
280
  private _validationError: ValidationError = null;
281
+ protected _validateOnChange = false;
269
282
  &nbsp;
270
283
  constructor() {
271
284
  makeObservable(this);
@@ -280,6 +293,11 @@ export abstract class ValidatableModel&lt;T = string&gt; {
280
293
  public <span class="fstat-no" title="function not covered" >setValidationConfig&lt;</span>TErrors extends string | number = ValidationErrors&gt;(config?: ValidationConfig&lt;T, TErrors&gt;) {
281
294
  <span class="cstat-no" title="statement not covered" > this._validator = config?.validator || EmptyValidator;</span>
282
295
  <span class="cstat-no" title="statement not covered" > this._strings = config?.errors;</span>
296
+ <span class="cstat-no" title="statement not covered" > return this;</span>
297
+ }
298
+ &nbsp;
299
+ public <span class="fstat-no" title="function not covered" >validateOnChange(</span>enable = <span class="branch-0 cbranch-no" title="branch not covered" >true)</span> {
300
+ <span class="cstat-no" title="statement not covered" > this._validateOnChange = enable;</span>
283
301
  <span class="cstat-no" title="statement not covered" > return this;</span>
284
302
  }
285
303
  &nbsp;
@@ -343,7 +361,7 @@ export abstract class ValidatableModel&lt;T = string&gt; {
343
361
  <div class='footer quiet pad2 space-top1 center small'>
344
362
  Code coverage generated by
345
363
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
346
- at Mon Jan 31 2022 14:10:18 GMT+0000 (Coordinated Universal Time)
364
+ at Tue Feb 08 2022 10:51:10 GMT+0000 (Coordinated Universal Time)
347
365
  </div>
348
366
  </div>
349
367
  <script src="../../prettify.js"></script>