@zajno/common 1.2.5 → 1.3.0-beta
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/coverage/clover.xml +453 -173
- package/coverage/coverage-final.json +38 -30
- package/coverage/lcov-report/index.html +34 -19
- package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
- package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
- package/coverage/lcov-report/src/async/arrays.ts.html +5 -5
- package/coverage/lcov-report/src/async/index.html +1 -1
- package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
- package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
- package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
- package/coverage/lcov-report/src/dates/format.ts.html +1 -1
- package/coverage/lcov-report/src/dates/index.html +1 -1
- package/coverage/lcov-report/src/dates/index.ts.html +1 -1
- package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
- package/coverage/lcov-report/src/dates/period.ts.html +1 -1
- package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
- package/coverage/lcov-report/src/dates/types.ts.html +1 -1
- package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
- package/coverage/lcov-report/src/enumHelper.ts.html +11 -11
- package/coverage/lcov-report/src/event.ts.html +6 -6
- package/coverage/lcov-report/src/index.html +49 -19
- package/coverage/lcov-report/src/lazy.light.ts.html +155 -0
- package/coverage/lcov-report/src/logger/console.ts.html +2 -2
- package/coverage/lcov-report/src/logger/index.html +1 -1
- package/coverage/lcov-report/src/logger/index.ts.html +8 -8
- package/coverage/lcov-report/src/logger/named.ts.html +16 -16
- package/coverage/lcov-report/src/logger/proxy.ts.html +4 -4
- package/coverage/lcov-report/src/math/arrays.ts.html +1 -1
- package/coverage/lcov-report/src/math/calc.ts.html +1 -1
- package/coverage/lcov-report/src/math/distribution.ts.html +1 -1
- package/coverage/lcov-report/src/math/index.html +1 -1
- package/coverage/lcov-report/src/math/index.ts.html +1 -1
- package/coverage/lcov-report/src/transitionObserver.ts.html +192 -45
- package/coverage/lcov-report/src/types.ts.html +143 -0
- package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +22 -22
- package/coverage/lcov-report/src/validation/creditCard.ts.html +4 -4
- package/coverage/lcov-report/src/validation/helpers.ts.html +6 -6
- package/coverage/lcov-report/src/validation/index.html +1 -1
- package/coverage/lcov-report/src/validation/index.ts.html +6 -6
- package/coverage/lcov-report/src/validation/types.ts.html +2 -2
- package/coverage/lcov-report/src/validation/validators.ts.html +5 -5
- package/coverage/lcov-report/src/validation/wrappers.ts.html +5 -5
- package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +209 -0
- package/coverage/lcov-report/src/viewModels/LabeledFlagModel.ts.html +146 -0
- package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +530 -0
- package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +188 -0
- package/coverage/lcov-report/{enumHelper.ts.html → src/viewModels/SelectModel.ts.html} +158 -152
- package/coverage/lcov-report/src/viewModels/SelectViewModel.ts.html +434 -0
- package/coverage/lcov-report/src/viewModels/Validatable.ts.html +329 -0
- package/coverage/lcov-report/src/viewModels/index.html +186 -0
- package/coverage/lcov-report/src/viewModels/wrappers.ts.html +239 -0
- package/coverage/lcov-report/transitionObserver.ts.html +155 -44
- package/coverage/lcov.info +838 -229
- package/lib/timeHelper.d.ts +3 -0
- package/lib/timeHelper.d.ts.map +1 -1
- package/lib/timeHelper.js +3 -0
- package/lib/timeHelper.js.map +1 -1
- package/lib/transitionObserver.d.ts +6 -0
- package/lib/transitionObserver.d.ts.map +1 -1
- package/lib/transitionObserver.js +42 -0
- package/lib/transitionObserver.js.map +1 -1
- package/lib/types.d.ts +5 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +14 -0
- package/lib/types.js.map +1 -1
- package/lib/viewModels/FlagModel.d.ts +19 -0
- package/lib/viewModels/FlagModel.d.ts.map +1 -0
- package/lib/viewModels/FlagModel.js +38 -0
- package/lib/viewModels/FlagModel.js.map +1 -0
- package/lib/viewModels/MultiSelectModel.d.ts +41 -0
- package/lib/viewModels/MultiSelectModel.d.ts.map +1 -0
- package/lib/viewModels/MultiSelectModel.js +150 -0
- package/lib/viewModels/MultiSelectModel.js.map +1 -0
- package/lib/viewModels/NumberModel.d.ts +16 -0
- package/lib/viewModels/NumberModel.d.ts.map +1 -0
- package/lib/viewModels/NumberModel.js +40 -0
- package/lib/viewModels/NumberModel.js.map +1 -0
- package/lib/viewModels/PromptModalViewModel.d.ts +20 -16
- package/lib/viewModels/PromptModalViewModel.d.ts.map +1 -1
- package/lib/viewModels/PromptModalViewModel.js +37 -36
- package/lib/viewModels/PromptModalViewModel.js.map +1 -1
- package/lib/viewModels/{SelectViewModel.d.ts → SelectModel.d.ts} +14 -8
- package/lib/viewModels/SelectModel.d.ts.map +1 -0
- package/lib/viewModels/SelectModel.js +109 -0
- package/lib/viewModels/SelectModel.js.map +1 -0
- package/lib/viewModels/{TextInputViewModel.d.ts → TextModel.d.ts} +10 -9
- package/lib/viewModels/TextModel.d.ts.map +1 -0
- package/lib/viewModels/{TextInputViewModel.js → TextModel.js} +8 -17
- package/lib/viewModels/TextModel.js.map +1 -0
- package/lib/viewModels/Validatable.d.ts +9 -7
- package/lib/viewModels/Validatable.d.ts.map +1 -1
- package/lib/viewModels/Validatable.js +22 -8
- package/lib/viewModels/Validatable.js.map +1 -1
- package/lib/viewModels/ValuesCollector.d.ts +28 -0
- package/lib/viewModels/ValuesCollector.d.ts.map +1 -0
- package/lib/viewModels/ValuesCollector.js +51 -0
- package/lib/viewModels/ValuesCollector.js.map +1 -0
- package/lib/viewModels/index.d.ts +7 -5
- package/lib/viewModels/index.d.ts.map +1 -1
- package/lib/viewModels/index.js +7 -5
- package/lib/viewModels/index.js.map +1 -1
- package/lib/viewModels/wrappers.d.ts +15 -0
- package/lib/viewModels/wrappers.d.ts.map +1 -0
- package/lib/viewModels/wrappers.js +43 -0
- package/lib/viewModels/wrappers.js.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/transitionObserver.test.ts +39 -0
- package/src/timeHelper.ts +3 -0
- package/src/transitionObserver.ts +49 -0
- package/src/types.ts +16 -0
- package/src/viewModels/FlagModel.ts +43 -0
- package/src/viewModels/MultiSelectModel.ts +150 -0
- package/src/viewModels/NumberModel.ts +36 -0
- package/src/viewModels/PromptModalViewModel.ts +43 -49
- package/src/viewModels/SelectModel.ts +125 -0
- package/src/viewModels/{TextInputViewModel.ts → TextModel.ts} +22 -25
- package/src/viewModels/Validatable.ts +26 -11
- package/src/viewModels/ValuesCollector.ts +84 -0
- package/src/viewModels/__tests__/multiSelect.test.ts +23 -0
- package/src/viewModels/__tests__/select.test.ts +71 -0
- package/src/viewModels/__tests__/wrappers.test.ts +79 -0
- package/src/viewModels/index.ts +9 -5
- package/src/viewModels/wrappers.ts +53 -0
- package/yarn-error.log +3709 -0
- package/lib/viewModels/RadioButtonGroupViewModel.d.ts +0 -11
- package/lib/viewModels/RadioButtonGroupViewModel.d.ts.map +0 -1
- package/lib/viewModels/RadioButtonGroupViewModel.js +0 -51
- package/lib/viewModels/RadioButtonGroupViewModel.js.map +0 -1
- package/lib/viewModels/RadioButtonViewModel.d.ts +0 -9
- package/lib/viewModels/RadioButtonViewModel.d.ts.map +0 -1
- package/lib/viewModels/RadioButtonViewModel.js +0 -32
- package/lib/viewModels/RadioButtonViewModel.js.map +0 -1
- package/lib/viewModels/SelectViewModel.d.ts.map +0 -1
- package/lib/viewModels/SelectViewModel.js +0 -88
- package/lib/viewModels/SelectViewModel.js.map +0 -1
- package/lib/viewModels/TextInputViewModel.d.ts.map +0 -1
- package/lib/viewModels/TextInputViewModel.js.map +0 -1
- package/src/viewModels/RadioButtonGroupViewModel.ts +0 -47
- package/src/viewModels/RadioButtonViewModel.ts +0 -26
- package/src/viewModels/SelectViewModel.ts +0 -88
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
<html lang="en">
|
|
4
4
|
|
|
5
5
|
<head>
|
|
6
|
-
<title>Code coverage report for
|
|
6
|
+
<title>Code coverage report for src/viewModels/SelectModel.ts</title>
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
|
|
8
|
+
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
11
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
12
|
<style type='text/css'>
|
|
13
13
|
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(sort-arrow-sprite.png);
|
|
14
|
+
background-image: url(../../sort-arrow-sprite.png);
|
|
15
15
|
}
|
|
16
16
|
</style>
|
|
17
17
|
</head>
|
|
@@ -19,34 +19,34 @@
|
|
|
19
19
|
<body>
|
|
20
20
|
<div class='wrapper'>
|
|
21
21
|
<div class='pad1'>
|
|
22
|
-
<h1><a href="index.html">All files</a>
|
|
22
|
+
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/viewModels</a> SelectModel.ts</h1>
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">96.72% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>59/61</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">93.75% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>15/16</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">91.67% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>22/24</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">96.36% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>53/55</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -180,250 +180,256 @@
|
|
|
180
180
|
<a name='L121'></a><a href='#L121'>121</a>
|
|
181
181
|
<a name='L122'></a><a href='#L122'>122</a>
|
|
182
182
|
<a name='L123'></a><a href='#L123'>123</a>
|
|
183
|
-
<a name='L124'></a><a href='#L124'>124</a
|
|
183
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
184
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
185
|
+
<a name='L126'></a><a href='#L126'>126</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
184
186
|
<span class="cline-any cline-yes">1x</span>
|
|
185
187
|
<span class="cline-any cline-yes">1x</span>
|
|
186
|
-
<span class="cline-any cline-neutral"> </span>
|
|
187
|
-
<span class="cline-any cline-neutral"> </span>
|
|
188
188
|
<span class="cline-any cline-yes">1x</span>
|
|
189
|
+
<span class="cline-any cline-neutral"> </span>
|
|
189
190
|
<span class="cline-any cline-yes">1x</span>
|
|
190
191
|
<span class="cline-any cline-neutral"> </span>
|
|
191
192
|
<span class="cline-any cline-yes">1x</span>
|
|
192
|
-
<span class="cline-any cline-yes">2x</span>
|
|
193
193
|
<span class="cline-any cline-neutral"> </span>
|
|
194
|
-
<span class="cline-any cline-yes">
|
|
194
|
+
<span class="cline-any cline-yes">5x</span>
|
|
195
195
|
<span class="cline-any cline-neutral"> </span>
|
|
196
|
+
<span class="cline-any cline-yes">5x</span>
|
|
197
|
+
<span class="cline-any cline-yes">5x</span>
|
|
198
|
+
<span class="cline-any cline-yes">5x</span>
|
|
196
199
|
<span class="cline-any cline-neutral"> </span>
|
|
200
|
+
<span class="cline-any cline-yes">5x</span>
|
|
197
201
|
<span class="cline-any cline-neutral"> </span>
|
|
198
|
-
<span class="cline-any cline-yes">1x</span>
|
|
199
202
|
<span class="cline-any cline-neutral"> </span>
|
|
203
|
+
<span class="cline-any cline-yes">5x</span>
|
|
204
|
+
<span class="cline-any cline-yes">5x</span>
|
|
200
205
|
<span class="cline-any cline-neutral"> </span>
|
|
201
206
|
<span class="cline-any cline-neutral"> </span>
|
|
207
|
+
<span class="cline-any cline-yes">5x</span>
|
|
208
|
+
<span class="cline-any cline-yes">5x</span>
|
|
209
|
+
<span class="cline-any cline-neutral"> </span>
|
|
210
|
+
<span class="cline-any cline-yes">5x</span>
|
|
211
|
+
<span class="cline-any cline-yes">5x</span>
|
|
202
212
|
<span class="cline-any cline-neutral"> </span>
|
|
203
213
|
<span class="cline-any cline-neutral"> </span>
|
|
204
214
|
<span class="cline-any cline-yes">1x</span>
|
|
205
|
-
<span class="cline-any cline-yes">1x</span>
|
|
206
|
-
<span class="cline-any cline-neutral"> </span>
|
|
207
215
|
<span class="cline-any cline-neutral"> </span>
|
|
208
216
|
<span class="cline-any cline-neutral"> </span>
|
|
209
|
-
<span class="cline-any cline-yes">3x</span>
|
|
210
217
|
<span class="cline-any cline-yes">1x</span>
|
|
211
|
-
<span class="cline-any cline-
|
|
212
|
-
<span class="cline-any cline-yes">3x</span>
|
|
213
|
-
<span class="cline-any cline-yes">2x</span>
|
|
218
|
+
<span class="cline-any cline-yes">34x</span>
|
|
214
219
|
<span class="cline-any cline-neutral"> </span>
|
|
215
220
|
<span class="cline-any cline-neutral"> </span>
|
|
216
221
|
<span class="cline-any cline-neutral"> </span>
|
|
222
|
+
<span class="cline-any cline-yes">8x</span>
|
|
217
223
|
<span class="cline-any cline-neutral"> </span>
|
|
218
224
|
<span class="cline-any cline-neutral"> </span>
|
|
219
225
|
<span class="cline-any cline-neutral"> </span>
|
|
226
|
+
<span class="cline-any cline-yes">1x</span>
|
|
220
227
|
<span class="cline-any cline-neutral"> </span>
|
|
221
|
-
<span class="cline-any cline-yes">3x</span>
|
|
222
|
-
<span class="cline-any cline-yes">4x</span>
|
|
223
|
-
<span class="cline-any cline-yes">4x</span>
|
|
224
228
|
<span class="cline-any cline-neutral"> </span>
|
|
229
|
+
<span class="cline-any cline-no"> </span>
|
|
225
230
|
<span class="cline-any cline-neutral"> </span>
|
|
226
|
-
<span class="cline-any cline-yes">
|
|
227
|
-
<span class="cline-any cline-yes">
|
|
231
|
+
<span class="cline-any cline-yes">6x</span>
|
|
232
|
+
<span class="cline-any cline-yes">6x</span>
|
|
228
233
|
<span class="cline-any cline-neutral"> </span>
|
|
229
|
-
<span class="cline-any cline-yes">4x</span>
|
|
230
|
-
<span class="cline-any cline-yes">78x</span>
|
|
231
234
|
<span class="cline-any cline-neutral"> </span>
|
|
232
|
-
<span class="cline-any cline-
|
|
235
|
+
<span class="cline-any cline-no"> </span>
|
|
233
236
|
<span class="cline-any cline-neutral"> </span>
|
|
237
|
+
<span class="cline-any cline-yes">4x</span>
|
|
238
|
+
<span class="cline-any cline-yes">4x</span>
|
|
239
|
+
<span class="cline-any cline-yes">3x</span>
|
|
234
240
|
<span class="cline-any cline-neutral"> </span>
|
|
235
241
|
<span class="cline-any cline-neutral"> </span>
|
|
236
|
-
<span class="cline-any cline-yes">9x</span>
|
|
237
|
-
<span class="cline-any cline-yes">9x</span>
|
|
238
242
|
<span class="cline-any cline-neutral"> </span>
|
|
239
243
|
<span class="cline-any cline-neutral"> </span>
|
|
244
|
+
<span class="cline-any cline-yes">5x</span>
|
|
240
245
|
<span class="cline-any cline-neutral"> </span>
|
|
241
246
|
<span class="cline-any cline-neutral"> </span>
|
|
242
247
|
<span class="cline-any cline-neutral"> </span>
|
|
243
|
-
<span class="cline-any cline-yes">
|
|
244
|
-
<span class="cline-any cline-yes">
|
|
248
|
+
<span class="cline-any cline-yes">5x</span>
|
|
249
|
+
<span class="cline-any cline-yes">5x</span>
|
|
250
|
+
<span class="cline-any cline-yes">4x</span>
|
|
245
251
|
<span class="cline-any cline-neutral"> </span>
|
|
246
252
|
<span class="cline-any cline-neutral"> </span>
|
|
247
253
|
<span class="cline-any cline-neutral"> </span>
|
|
248
|
-
<span class="cline-any cline-yes">3x</span>
|
|
249
|
-
<span class="cline-any cline-yes">3x</span>
|
|
250
|
-
<span class="cline-any cline-yes">3x</span>
|
|
251
254
|
<span class="cline-any cline-neutral"> </span>
|
|
255
|
+
<span class="cline-any cline-yes">11x</span>
|
|
252
256
|
<span class="cline-any cline-neutral"> </span>
|
|
253
257
|
<span class="cline-any cline-neutral"> </span>
|
|
254
|
-
<span class="cline-any cline-yes">6x</span>
|
|
255
|
-
<span class="cline-any cline-yes">2x</span>
|
|
256
258
|
<span class="cline-any cline-neutral"> </span>
|
|
257
|
-
<span class="cline-any cline-yes">
|
|
259
|
+
<span class="cline-any cline-yes">16x</span>
|
|
258
260
|
<span class="cline-any cline-yes">4x</span>
|
|
259
261
|
<span class="cline-any cline-neutral"> </span>
|
|
260
262
|
<span class="cline-any cline-neutral"> </span>
|
|
263
|
+
<span class="cline-any cline-yes">12x</span>
|
|
261
264
|
<span class="cline-any cline-neutral"> </span>
|
|
262
265
|
<span class="cline-any cline-neutral"> </span>
|
|
266
|
+
<span class="cline-any cline-yes">12x</span>
|
|
267
|
+
<span class="cline-any cline-yes">12x</span>
|
|
263
268
|
<span class="cline-any cline-neutral"> </span>
|
|
264
|
-
<span class="cline-any cline-yes">
|
|
265
|
-
<span class="cline-any cline-
|
|
266
|
-
<span class="cline-any cline-yes">4x</span>
|
|
267
|
-
<span class="cline-any cline-yes">1x</span>
|
|
269
|
+
<span class="cline-any cline-yes">12x</span>
|
|
270
|
+
<span class="cline-any cline-yes">33x</span>
|
|
268
271
|
<span class="cline-any cline-neutral"> </span>
|
|
269
272
|
<span class="cline-any cline-neutral"> </span>
|
|
270
|
-
<span class="cline-any cline-yes">
|
|
271
|
-
<span class="cline-any cline-yes">9x</span>
|
|
272
|
-
<span class="cline-any cline-yes">7x</span>
|
|
273
|
+
<span class="cline-any cline-yes">12x</span>
|
|
273
274
|
<span class="cline-any cline-neutral"> </span>
|
|
274
275
|
<span class="cline-any cline-neutral"> </span>
|
|
275
276
|
<span class="cline-any cline-neutral"> </span>
|
|
277
|
+
<span class="cline-any cline-yes">5x</span>
|
|
276
278
|
<span class="cline-any cline-yes">1x</span>
|
|
277
279
|
<span class="cline-any cline-yes">1x</span>
|
|
278
280
|
<span class="cline-any cline-neutral"> </span>
|
|
279
281
|
<span class="cline-any cline-neutral"> </span>
|
|
280
282
|
<span class="cline-any cline-neutral"> </span>
|
|
283
|
+
<span class="cline-any cline-yes">1x</span>
|
|
281
284
|
<span class="cline-any cline-neutral"> </span>
|
|
285
|
+
<span class="cline-any cline-yes">3x</span>
|
|
282
286
|
<span class="cline-any cline-neutral"> </span>
|
|
283
|
-
<span class="cline-any cline-yes">
|
|
287
|
+
<span class="cline-any cline-yes">9x</span>
|
|
284
288
|
<span class="cline-any cline-neutral"> </span>
|
|
285
289
|
<span class="cline-any cline-neutral"> </span>
|
|
286
290
|
<span class="cline-any cline-neutral"> </span>
|
|
287
|
-
<span class="cline-any cline-yes">
|
|
288
|
-
<span class="cline-any cline-yes">
|
|
289
|
-
<span class="cline-any cline-yes">
|
|
290
|
-
<span class="cline-any cline-neutral"> </span>
|
|
291
|
-
<span class="cline-any cline-yes">3x</span>
|
|
291
|
+
<span class="cline-any cline-yes">18x</span>
|
|
292
|
+
<span class="cline-any cline-yes">15x</span>
|
|
293
|
+
<span class="cline-any cline-yes">7x</span>
|
|
292
294
|
<span class="cline-any cline-neutral"> </span>
|
|
293
295
|
<span class="cline-any cline-neutral"> </span>
|
|
294
296
|
<span class="cline-any cline-neutral"> </span>
|
|
295
|
-
<span class="cline-any cline-yes">
|
|
297
|
+
<span class="cline-any cline-yes">3x</span>
|
|
296
298
|
<span class="cline-any cline-neutral"> </span>
|
|
297
299
|
<span class="cline-any cline-neutral"> </span>
|
|
300
|
+
<span class="cline-any cline-yes">1x</span>
|
|
298
301
|
<span class="cline-any cline-neutral"> </span>
|
|
299
|
-
<span class="cline-any cline-yes">14x</span>
|
|
300
302
|
<span class="cline-any cline-neutral"> </span>
|
|
301
303
|
<span class="cline-any cline-neutral"> </span>
|
|
302
304
|
<span class="cline-any cline-neutral"> </span>
|
|
303
305
|
<span class="cline-any cline-yes">1x</span>
|
|
304
306
|
<span class="cline-any cline-neutral"> </span>
|
|
307
|
+
<span class="cline-any cline-yes">3x</span>
|
|
305
308
|
<span class="cline-any cline-neutral"> </span>
|
|
306
|
-
<span class="cline-any cline-neutral"> </span
|
|
307
|
-
|
|
308
|
-
|
|
309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
310
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { createLazy } from '../lazy.light';
|
|
311
|
+
import { observable, computed, makeObservable, reaction } from 'mobx';
|
|
312
|
+
import { FlagModel, ILabeledFlagModel } from './FlagModel';
|
|
313
|
+
import { ValidatableModel } from './Validatable';
|
|
314
|
+
import { IValueModel } from './ValuesCollector';
|
|
315
|
+
import { withLabel } from './wrappers';
|
|
316
|
+
|
|
317
|
+
export class Select<T = any> extends ValidatableModel<T> implements IValueModel<string> {
|
|
318
|
+
@observable
|
|
319
|
+
private _index: number = undefined;
|
|
320
|
+
|
|
321
|
+
public readonly opened = new FlagModel();
|
|
322
|
+
private _indexLocked = false;
|
|
323
|
+
private _initialIndex: number = null;
|
|
324
|
+
|
|
325
|
+
private readonly _flags = createLazy(() => this.createFlags());
|
|
309
326
|
|
|
310
327
|
constructor(
|
|
311
|
-
|
|
312
|
-
private readonly
|
|
328
|
+
private readonly _items: readonly T[],
|
|
329
|
+
private readonly _accessor: (item: T) => string,
|
|
330
|
+
initialIndex: number = 0,
|
|
313
331
|
) {
|
|
314
|
-
|
|
315
|
-
|
|
332
|
+
super();
|
|
333
|
+
makeObservable(this);
|
|
316
334
|
|
|
317
|
-
this.
|
|
335
|
+
this._initialIndex = initialIndex;
|
|
336
|
+
this._index = initialIndex;
|
|
318
337
|
}
|
|
319
338
|
|
|
320
|
-
|
|
321
|
-
return this._valuesToStrings
|
|
322
|
-
? <span class="branch-0 cbranch-no" title="branch not covered" >this._valuesToStrings[this._obj[key]]</span>
|
|
323
|
-
: key;
|
|
324
|
-
}
|
|
339
|
+
protected get valueToValidate() { return this.selectedItem; }
|
|
325
340
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
return
|
|
341
|
+
@computed
|
|
342
|
+
get values(): readonly string[] {
|
|
343
|
+
return this._items.map(i => this._accessor(i));
|
|
329
344
|
}
|
|
330
345
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
return null;
|
|
334
|
-
}
|
|
335
|
-
const i = this.Values.findIndex(vv => vv === v);
|
|
336
|
-
return i >= 0
|
|
337
|
-
? this.Values[i]
|
|
338
|
-
: null;
|
|
346
|
+
get flags() {
|
|
347
|
+
return this._flags.value;
|
|
339
348
|
}
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
type ValueToStringMap = { [val: number]: string };
|
|
343
349
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
public readonly Values: T[] = null;
|
|
347
|
-
|
|
348
|
-
constructor(
|
|
349
|
-
protected readonly _obj: any,
|
|
350
|
-
private readonly _valuesToStrings: ValueToStringMap = null,
|
|
351
|
-
) {
|
|
352
|
-
this.Keys = Object.keys(this._obj)
|
|
353
|
-
.filter(k => typeof this._obj[k as any] === 'number');
|
|
354
|
-
|
|
355
|
-
this.Values = this.Keys.map(k => this._obj[k]);
|
|
350
|
+
get items() {
|
|
351
|
+
return this._items;
|
|
356
352
|
}
|
|
357
353
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
: <span class="branch-1 cbranch-no" title="branch not covered" >key;</span>
|
|
354
|
+
<span class="fstat-no" title="function not covered" > get v</span>alue() { <span class="cstat-no" title="statement not covered" >return this.selectedValue; </span>}
|
|
355
|
+
get selectedValue() {
|
|
356
|
+
const vs = this.values;
|
|
357
|
+
return vs.length ? vs[this._index] : null;
|
|
363
358
|
}
|
|
364
359
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
360
|
+
<span class="fstat-no" title="function not covered" > set v</span>alue(v: string) { <span class="cstat-no" title="statement not covered" >this.selectedValue = v; </span>}
|
|
361
|
+
set selectedValue(value: string) {
|
|
362
|
+
const index = this.values.indexOf(value);
|
|
363
|
+
if (index >= 0) {
|
|
364
|
+
this.index = index;
|
|
365
|
+
}
|
|
368
366
|
}
|
|
369
367
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
const custom = map && map[v];
|
|
373
|
-
return custom || this._obj[v];
|
|
368
|
+
get selectedItem(): T {
|
|
369
|
+
return this._items.length ? this._items[this._index] : <span class="branch-1 cbranch-no" title="branch not covered" >null;</span>
|
|
374
370
|
}
|
|
375
371
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
372
|
+
set selectedItem(item: T) {
|
|
373
|
+
const index = this._items.indexOf(item);
|
|
374
|
+
if (index >= 0) {
|
|
375
|
+
this.index = index;
|
|
379
376
|
}
|
|
380
|
-
const i = this.Values.findIndex(vv => vv === v);
|
|
381
|
-
return i >= 0
|
|
382
|
-
? this.Values[i]
|
|
383
|
-
: null;
|
|
384
377
|
}
|
|
385
|
-
}
|
|
386
378
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
379
|
+
get index() {
|
|
380
|
+
return this._index;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
set index(val: number) {
|
|
384
|
+
if (this._indexLocked) {
|
|
385
|
+
return;
|
|
391
386
|
}
|
|
392
387
|
|
|
393
|
-
|
|
394
|
-
.filter(k => this._obj[k] && this.contains(value, this._obj[k]))
|
|
395
|
-
.map(k => this.keyToString(k, overrideMap));
|
|
396
|
-
}
|
|
388
|
+
this._index = val;
|
|
397
389
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
? <span class="branch-0 cbranch-no" title="branch not covered" >this._obj[0]</span>
|
|
402
|
-
: strs.join(separator);
|
|
403
|
-
}
|
|
390
|
+
// update all flags to be properly selected
|
|
391
|
+
try {
|
|
392
|
+
this._indexLocked = true;
|
|
404
393
|
|
|
405
|
-
|
|
406
|
-
|
|
394
|
+
if (this._flags.hasValue) {
|
|
395
|
+
this._flags.value.forEach((f, i) => f.value = (i === this._index));
|
|
396
|
+
}
|
|
397
|
+
} finally {
|
|
398
|
+
this._indexLocked = false;
|
|
399
|
+
}
|
|
407
400
|
}
|
|
408
401
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
});
|
|
414
|
-
return res;
|
|
415
|
-
}
|
|
402
|
+
reset = () => {
|
|
403
|
+
super.reset();
|
|
404
|
+
this.index = this._initialIndex;
|
|
405
|
+
};
|
|
416
406
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
407
|
+
private createFlags() {
|
|
408
|
+
const flags: ReadonlyArray<ILabeledFlagModel> = this._items
|
|
409
|
+
.map((item, index) => {
|
|
410
|
+
const flag: ILabeledFlagModel = withLabel(
|
|
411
|
+
new FlagModel(index === this.index),
|
|
412
|
+
() => this._accessor(item),
|
|
413
|
+
);
|
|
414
|
+
|
|
415
|
+
// react on every flag is changed directly
|
|
416
|
+
reaction(() => flag.value, isSelected => {
|
|
417
|
+
if (isSelected) {
|
|
418
|
+
this.index = index;
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
return flag;
|
|
423
|
+
});
|
|
420
424
|
|
|
421
|
-
|
|
422
|
-
return v1 & v2;
|
|
425
|
+
return flags;
|
|
423
426
|
}
|
|
427
|
+
}
|
|
428
|
+
|
|
424
429
|
|
|
425
|
-
|
|
426
|
-
|
|
430
|
+
export class SelectString<T extends string = string> extends Select<T> {
|
|
431
|
+
constructor(items: readonly T[], initialIndex: number = 0) {
|
|
432
|
+
super(items, v => v, initialIndex);
|
|
427
433
|
}
|
|
428
434
|
}
|
|
429
435
|
</pre></td></tr></table></pre>
|
|
@@ -433,17 +439,17 @@ export class EnumBitwiseHelper<T extends number> extends EnumHelper<T&g
|
|
|
433
439
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
434
440
|
Code coverage generated by
|
|
435
441
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
436
|
-
at Mon Nov
|
|
442
|
+
at Mon Nov 22 2021 09:37:35 GMT+0000 (Coordinated Universal Time)
|
|
437
443
|
</div>
|
|
438
444
|
</div>
|
|
439
|
-
<script src="prettify.js"></script>
|
|
445
|
+
<script src="../../prettify.js"></script>
|
|
440
446
|
<script>
|
|
441
447
|
window.onload = function () {
|
|
442
448
|
prettyPrint();
|
|
443
449
|
};
|
|
444
450
|
</script>
|
|
445
|
-
<script src="sorter.js"></script>
|
|
446
|
-
<script src="block-navigation.js"></script>
|
|
451
|
+
<script src="../../sorter.js"></script>
|
|
452
|
+
<script src="../../block-navigation.js"></script>
|
|
447
453
|
</body>
|
|
448
454
|
</html>
|
|
449
455
|
|