@hedia/recommendation-screen 2.1.14 → 2.1.16

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 (102) hide show
  1. package/coverage/clover.xml +588 -590
  2. package/coverage/coverage-final.json +27 -27
  3. package/coverage/lcov-report/index.html +7 -7
  4. package/coverage/lcov-report/src/RecommendationScreen.tsx.html +1039 -70
  5. package/coverage/lcov-report/src/__tests__/index.html +1 -1
  6. package/coverage/lcov-report/src/__tests__/utils.tsx.html +35 -14
  7. package/coverage/lcov-report/src/components/Header.tsx.html +14 -5
  8. package/coverage/lcov-report/src/components/InfoBars.tsx.html +97 -13
  9. package/coverage/lcov-report/src/components/InvisibleNumberInput.tsx.html +206 -14
  10. package/coverage/lcov-report/src/components/LimitationMessage.tsx.html +20 -2
  11. package/coverage/lcov-report/src/components/LineSeparator.tsx.html +13 -4
  12. package/coverage/lcov-report/src/components/RecentInsulin.tsx.html +30 -3
  13. package/coverage/lcov-report/src/components/RecommendationModal.tsx.html +200 -20
  14. package/coverage/lcov-report/src/components/RecommendedCarbs.tsx.html +218 -20
  15. package/coverage/lcov-report/src/components/RecommendedInsulin.tsx.html +195 -27
  16. package/coverage/lcov-report/src/components/Remeasure.tsx.html +125 -14
  17. package/coverage/lcov-report/src/components/TransferToLogbook.tsx.html +71 -8
  18. package/coverage/lcov-report/src/components/TwoOptionModal.tsx.html +34 -10
  19. package/coverage/lcov-report/src/components/activity/Activity.tsx.html +58 -7
  20. package/coverage/lcov-report/src/components/activity/ActivityIcon.tsx.html +42 -3
  21. package/coverage/lcov-report/src/components/activity/ActivityIntensity.tsx.html +30 -6
  22. package/coverage/lcov-report/src/components/activity/index.html +1 -1
  23. package/coverage/lcov-report/src/components/index.html +10 -10
  24. package/coverage/lcov-report/src/components/mood/Emotion.tsx.html +85 -10
  25. package/coverage/lcov-report/src/components/mood/MoodIcon.tsx.html +87 -12
  26. package/coverage/lcov-report/src/components/mood/index.html +1 -1
  27. package/coverage/lcov-report/src/index.html +1 -1
  28. package/coverage/lcov-report/src/locale/i18nUtils.ts.html +47 -8
  29. package/coverage/lcov-report/src/locale/index.html +1 -1
  30. package/coverage/lcov-report/src/utils/AttentionMessages.tsx.html +235 -7
  31. package/coverage/lcov-report/src/utils/Constants.ts.html +71 -2
  32. package/coverage/lcov-report/src/utils/RecommendationError.tsx.html +89 -2
  33. package/coverage/lcov-report/src/utils/RecommendationUtils.ts.html +337 -40
  34. package/coverage/lcov-report/src/utils/Translations.ts.html +27 -3
  35. package/coverage/lcov-report/src/utils/Utils.ts.html +295 -19
  36. package/coverage/lcov-report/src/utils/Validations.ts.html +763 -61
  37. package/coverage/lcov-report/src/utils/index.html +1 -1
  38. package/coverage/lcov.info +1243 -1249
  39. package/ignore-git.sh +1 -0
  40. package/ignore-publish.sh +1 -0
  41. package/package.json +5 -3
  42. package/src/RecommendationScreen.d.ts +323 -6
  43. package/src/RecommendationScreen.js +234 -1
  44. package/src/__tests__/RecommendationScreen.test.js +35 -1
  45. package/src/__tests__/utils.d.ts +5 -5
  46. package/src/__tests__/utils.js +1 -1
  47. package/src/components/Header.d.ts +4 -43
  48. package/src/components/Header.js +3 -1
  49. package/src/components/Icon.d.ts +9 -2
  50. package/src/components/Icon.js +6 -1
  51. package/src/components/InfoBars.d.ts +28 -0
  52. package/src/components/InfoBars.js +23 -0
  53. package/src/components/InvisibleNumberInput.d.ts +66 -3
  54. package/src/components/InvisibleNumberInput.js +53 -0
  55. package/src/components/LimitationMessage.d.ts +6 -0
  56. package/src/components/LimitationMessage.js +4 -0
  57. package/src/components/LineSeparator.d.ts +4 -2
  58. package/src/components/LineSeparator.js +2 -0
  59. package/src/components/RecentInsulin.d.ts +10 -2
  60. package/src/components/RecentInsulin.js +7 -0
  61. package/src/components/RecommendationModal.d.ts +61 -3
  62. package/src/components/RecommendationModal.js +45 -0
  63. package/src/components/RecommendedCarbs.d.ts +71 -4
  64. package/src/components/RecommendedCarbs.js +56 -0
  65. package/src/components/RecommendedInsulin.d.ts +66 -4
  66. package/src/components/RecommendedInsulin.js +51 -5
  67. package/src/components/Remeasure.d.ts +38 -2
  68. package/src/components/Remeasure.js +31 -0
  69. package/src/components/TransferToLogbook.d.ts +23 -3
  70. package/src/components/TransferToLogbook.js +18 -0
  71. package/src/components/TwoOptionModal.d.ts +12 -1
  72. package/src/components/TwoOptionModal.js +3 -3
  73. package/src/components/activity/Activity.d.ts +21 -5
  74. package/src/components/activity/Activity.js +14 -0
  75. package/src/components/activity/ActivityIcon.d.ts +15 -0
  76. package/src/components/activity/ActivityIcon.js +14 -1
  77. package/src/components/activity/ActivityIntensity.d.ts +11 -4
  78. package/src/components/activity/ActivityIntensity.js +7 -0
  79. package/src/components/mood/Emotion.d.ts +26 -1
  80. package/src/components/mood/Emotion.js +20 -0
  81. package/src/components/mood/MoodIcon.d.ts +28 -2
  82. package/src/components/mood/MoodIcon.js +20 -2
  83. package/src/locale/i18nUtils.d.ts +13 -0
  84. package/src/locale/i18nUtils.js +13 -0
  85. package/src/types/enum.d.ts +10 -0
  86. package/src/types/enum.js +9 -0
  87. package/src/types/types.d.ts +9 -7
  88. package/src/utils/AttentionMessages.d.ts +65 -0
  89. package/src/utils/AttentionMessages.js +65 -1
  90. package/src/utils/Constants.d.ts +23 -0
  91. package/src/utils/Constants.js +23 -0
  92. package/src/utils/RecommendationError.d.ts +29 -0
  93. package/src/utils/RecommendationError.js +29 -0
  94. package/src/utils/RecommendationUtils.d.ts +98 -6
  95. package/src/utils/RecommendationUtils.js +92 -0
  96. package/src/utils/Translations.d.ts +7 -0
  97. package/src/utils/Translations.js +7 -0
  98. package/src/utils/Utils.d.ts +92 -0
  99. package/src/utils/Utils.js +94 -2
  100. package/src/utils/Validations.d.ts +232 -9
  101. package/src/utils/Validations.js +225 -2
  102. package/typedoc.json +13 -0
@@ -278,7 +278,67 @@
278
278
  <a name='L219'></a><a href='#L219'>219</a>
279
279
  <a name='L220'></a><a href='#L220'>220</a>
280
280
  <a name='L221'></a><a href='#L221'>221</a>
281
- <a name='L222'></a><a href='#L222'>222</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
281
+ <a name='L222'></a><a href='#L222'>222</a>
282
+ <a name='L223'></a><a href='#L223'>223</a>
283
+ <a name='L224'></a><a href='#L224'>224</a>
284
+ <a name='L225'></a><a href='#L225'>225</a>
285
+ <a name='L226'></a><a href='#L226'>226</a>
286
+ <a name='L227'></a><a href='#L227'>227</a>
287
+ <a name='L228'></a><a href='#L228'>228</a>
288
+ <a name='L229'></a><a href='#L229'>229</a>
289
+ <a name='L230'></a><a href='#L230'>230</a>
290
+ <a name='L231'></a><a href='#L231'>231</a>
291
+ <a name='L232'></a><a href='#L232'>232</a>
292
+ <a name='L233'></a><a href='#L233'>233</a>
293
+ <a name='L234'></a><a href='#L234'>234</a>
294
+ <a name='L235'></a><a href='#L235'>235</a>
295
+ <a name='L236'></a><a href='#L236'>236</a>
296
+ <a name='L237'></a><a href='#L237'>237</a>
297
+ <a name='L238'></a><a href='#L238'>238</a>
298
+ <a name='L239'></a><a href='#L239'>239</a>
299
+ <a name='L240'></a><a href='#L240'>240</a>
300
+ <a name='L241'></a><a href='#L241'>241</a>
301
+ <a name='L242'></a><a href='#L242'>242</a>
302
+ <a name='L243'></a><a href='#L243'>243</a>
303
+ <a name='L244'></a><a href='#L244'>244</a>
304
+ <a name='L245'></a><a href='#L245'>245</a>
305
+ <a name='L246'></a><a href='#L246'>246</a>
306
+ <a name='L247'></a><a href='#L247'>247</a>
307
+ <a name='L248'></a><a href='#L248'>248</a>
308
+ <a name='L249'></a><a href='#L249'>249</a>
309
+ <a name='L250'></a><a href='#L250'>250</a>
310
+ <a name='L251'></a><a href='#L251'>251</a>
311
+ <a name='L252'></a><a href='#L252'>252</a>
312
+ <a name='L253'></a><a href='#L253'>253</a>
313
+ <a name='L254'></a><a href='#L254'>254</a>
314
+ <a name='L255'></a><a href='#L255'>255</a>
315
+ <a name='L256'></a><a href='#L256'>256</a>
316
+ <a name='L257'></a><a href='#L257'>257</a>
317
+ <a name='L258'></a><a href='#L258'>258</a>
318
+ <a name='L259'></a><a href='#L259'>259</a>
319
+ <a name='L260'></a><a href='#L260'>260</a>
320
+ <a name='L261'></a><a href='#L261'>261</a>
321
+ <a name='L262'></a><a href='#L262'>262</a>
322
+ <a name='L263'></a><a href='#L263'>263</a>
323
+ <a name='L264'></a><a href='#L264'>264</a>
324
+ <a name='L265'></a><a href='#L265'>265</a>
325
+ <a name='L266'></a><a href='#L266'>266</a>
326
+ <a name='L267'></a><a href='#L267'>267</a>
327
+ <a name='L268'></a><a href='#L268'>268</a>
328
+ <a name='L269'></a><a href='#L269'>269</a>
329
+ <a name='L270'></a><a href='#L270'>270</a>
330
+ <a name='L271'></a><a href='#L271'>271</a>
331
+ <a name='L272'></a><a href='#L272'>272</a>
332
+ <a name='L273'></a><a href='#L273'>273</a>
333
+ <a name='L274'></a><a href='#L274'>274</a>
334
+ <a name='L275'></a><a href='#L275'>275</a>
335
+ <a name='L276'></a><a href='#L276'>276</a>
336
+ <a name='L277'></a><a href='#L277'>277</a>
337
+ <a name='L278'></a><a href='#L278'>278</a>
338
+ <a name='L279'></a><a href='#L279'>279</a>
339
+ <a name='L280'></a><a href='#L280'>280</a>
340
+ <a name='L281'></a><a href='#L281'>281</a>
341
+ <a name='L282'></a><a href='#L282'>282</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
282
342
  <span class="cline-any cline-neutral">&nbsp;</span>
283
343
  <span class="cline-any cline-neutral">&nbsp;</span>
284
344
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -303,20 +363,66 @@
303
363
  <span class="cline-any cline-neutral">&nbsp;</span>
304
364
  <span class="cline-any cline-neutral">&nbsp;</span>
305
365
  <span class="cline-any cline-neutral">&nbsp;</span>
306
- <span class="cline-any cline-yes">65x</span>
307
- <span class="cline-any cline-yes">65x</span>
308
366
  <span class="cline-any cline-neutral">&nbsp;</span>
309
367
  <span class="cline-any cline-neutral">&nbsp;</span>
310
368
  <span class="cline-any cline-neutral">&nbsp;</span>
311
369
  <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-yes">65x</span>
370
+ <span class="cline-any cline-neutral">&nbsp;</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-neutral">&nbsp;</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-neutral">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-neutral">&nbsp;</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-neutral">&nbsp;</span>
393
+ <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-yes">73x</span>
396
+ <span class="cline-any cline-yes">73x</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-neutral">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-neutral">&nbsp;</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
+ <span class="cline-any cline-yes">73x</span>
313
410
  <span class="cline-any cline-yes">3x</span>
314
411
  <span class="cline-any cline-yes">3x</span>
315
412
  <span class="cline-any cline-yes">3x</span>
316
413
  <span class="cline-any cline-neutral">&nbsp;</span>
317
414
  <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-yes">65x</span>
319
- <span class="cline-any cline-yes">35x</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-neutral">&nbsp;</span>
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">73x</span>
421
+ <span class="cline-any cline-yes">36x</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>
320
426
  <span class="cline-any cline-neutral">&nbsp;</span>
321
427
  <span class="cline-any cline-neutral">&nbsp;</span>
322
428
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -338,11 +444,11 @@
338
444
  <span class="cline-any cline-neutral">&nbsp;</span>
339
445
  <span class="cline-any cline-neutral">&nbsp;</span>
340
446
  <span class="cline-any cline-neutral">&nbsp;</span>
341
- <span class="cline-any cline-yes">65x</span>
342
- <span class="cline-any cline-yes">35x</span>
343
447
  <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-yes">35x</span>
448
+ <span class="cline-any cline-yes">73x</span>
449
+ <span class="cline-any cline-yes">36x</span>
345
450
  <span class="cline-any cline-neutral">&nbsp;</span>
451
+ <span class="cline-any cline-yes">36x</span>
346
452
  <span class="cline-any cline-neutral">&nbsp;</span>
347
453
  <span class="cline-any cline-neutral">&nbsp;</span>
348
454
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -372,15 +478,15 @@
372
478
  <span class="cline-any cline-neutral">&nbsp;</span>
373
479
  <span class="cline-any cline-neutral">&nbsp;</span>
374
480
  <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-yes">65x</span>
376
- <span class="cline-any cline-yes">133x</span>
377
- <span class="cline-any cline-yes">133x</span>
378
481
  <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-yes">133x</span>
380
482
  <span class="cline-any cline-neutral">&nbsp;</span>
381
483
  <span class="cline-any cline-neutral">&nbsp;</span>
382
484
  <span class="cline-any cline-neutral">&nbsp;</span>
485
+ <span class="cline-any cline-yes">73x</span>
486
+ <span class="cline-any cline-yes">141x</span>
487
+ <span class="cline-any cline-yes">141x</span>
383
488
  <span class="cline-any cline-neutral">&nbsp;</span>
489
+ <span class="cline-any cline-yes">141x</span>
384
490
  <span class="cline-any cline-neutral">&nbsp;</span>
385
491
  <span class="cline-any cline-neutral">&nbsp;</span>
386
492
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -401,15 +507,28 @@
401
507
  <span class="cline-any cline-neutral">&nbsp;</span>
402
508
  <span class="cline-any cline-neutral">&nbsp;</span>
403
509
  <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-yes">65x</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-yes">73x</span>
405
519
  <span class="cline-any cline-yes">3x</span>
406
520
  <span class="cline-any cline-yes">3x</span>
407
521
  <span class="cline-any cline-neutral">&nbsp;</span>
408
522
  <span class="cline-any cline-neutral">&nbsp;</span>
409
523
  <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-yes">136x</span>
411
- <span class="cline-any cline-yes">136x</span>
412
- <span class="cline-any cline-yes">136x</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-neutral">&nbsp;</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-yes">144x</span>
530
+ <span class="cline-any cline-yes">144x</span>
531
+ <span class="cline-any cline-yes">144x</span>
413
532
  <span class="cline-any cline-neutral">&nbsp;</span>
414
533
  <span class="cline-any cline-neutral">&nbsp;</span>
415
534
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -428,6 +547,7 @@
428
547
  <span class="cline-any cline-yes">4x</span>
429
548
  <span class="cline-any cline-yes">4x</span>
430
549
  <span class="cline-any cline-neutral">&nbsp;</span>
550
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
551
  <span class="cline-any cline-yes">4x</span>
432
552
  <span class="cline-any cline-neutral">&nbsp;</span>
433
553
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -510,19 +630,48 @@ import LimitationMessage from "./LimitationMessage";
510
630
  &nbsp;
511
631
  const { RecommendationModalTestIds } = Testing.Id;
512
632
  &nbsp;
513
- interface IModalProps {
633
+ export interface IModalProps {
634
+ /** Whether or not the modal should currently be displayed on the screen */
514
635
  isVisible: boolean;
636
+ /** The amount of additional carbohydrates that is being recommended for the user in grams. */
515
637
  suggestedCarbohydrates: number | null;
638
+ /** A message to display to the user to inform them in natural language about special recommendations or warnings from HDA. */
516
639
  attentionMessage: string | null;
640
+ /** A message to display to the user to inform them if their insulin recommendation was limited by the maximum threshold. */
517
641
  limitationMessage: string | null;
642
+ /** Callback function taking no arguments and returning no value - Should be called if the user taps the “OK” button on the modal. */
518
643
  onClickOkButton(): void;
644
+ /**
645
+ * Callback function taking no arguments and returning no value.
646
+ * Should be called if the user taps the “accept” button when they are recommended to eat additional carbohydrates.
647
+ */
519
648
  onAcceptCarbohydrates(): void;
649
+ /**
650
+ * Callback function taking no arguments and returning no value.
651
+ * Should be called if the user taps the “decline” button when they are recommended to eat additional carbohydrates.
652
+ */
520
653
  onDeclineCarbohydrates(): void;
521
654
  }
522
- interface IModalState {
655
+ export interface IModalState {
656
+ /** If true then the first page will be displayed, otherwise the second page will be displayed. */
523
657
  firstPageVisible: boolean;
524
658
  }
659
+ &nbsp;
660
+ /**
661
+ * Popup modal for displaying information messages or warnings to the user if necessary.
662
+ * The modal has two “pages” with different content that it is able to display.
663
+ * The first page is for informing the user if their insulin recommendation was limited by the maximum insulin safety limit.
664
+ * This page will only be displayed if the recommendation was actually limited.
665
+ * The second page is for displaying a general attention message that may contain instructions for the user,
666
+ * and for letting the user know if they are being recommended eating additional carbohydrates.
667
+ */
525
668
  export default class RecommendationModal extends React.Component&lt;IModalProps, IModalState&gt; {
669
+ /**
670
+ * Steps:
671
+ * 1. Call the super() method with the props.
672
+ * 2. Set the firstPageVisible state variable true if the limitationMessage prop is truthy.
673
+ * @param props The class props
674
+ */
526
675
  constructor(props: IModalProps) {
527
676
  super(props);
528
677
  this.state = {
@@ -530,12 +679,25 @@ export default class RecommendationModal extends React.Component&lt;IModalProps,
530
679
  };
531
680
  }
532
681
  &nbsp;
682
+ /**
683
+ * Handle what happens when the “next” button is pressed.
684
+ *
685
+ * Steps:
686
+ * 1. Unpack attentionMessage and suggestedCarbohydrates from the props object.
687
+ * 2. Define isPageVisible to be true if either attentionMessage or suggestedCarbohydrates is truthy.
688
+ * 3. If isPageVisible is true then set the firstPageVisible state variable to false. Otherwise call the onClickOkButton prop callback function.
689
+ */
533
690
  public onPressNextButton = (): void =&gt; {
534
691
  const { attentionMessage, suggestedCarbohydrates } = this.props;
535
692
  const isPageVisible = !!attentionMessage || !!suggestedCarbohydrates;
536
693
  return isPageVisible ? this.setState({ firstPageVisible: false }) : this.props.onClickOkButton();
537
694
  };
538
695
  &nbsp;
696
+ /**
697
+ * @returns Return an JSX element for composing two buttons: one for accepting a suggestion and one for rejecting it.
698
+ * If the accept button is pressed the onAcceptCarbohydrates prop callback function shall be called.
699
+ * If the accept button is pressed the onDeclineCarbohydrates prop callback function shall be called.
700
+ */
539
701
  public recommendationButtons = (): JSX.Element =&gt; {
540
702
  return (
541
703
  &lt;View style={stylesModal.recommendationButtonsContainer}&gt;
@@ -559,6 +721,11 @@ export default class RecommendationModal extends React.Component&lt;IModalProps,
559
721
  );
560
722
  };
561
723
  &nbsp;
724
+ /**
725
+ * Compose a JSX element for displaying a recommendation of additional carbohydrates (the value of the suggestedCarbohydrates prop rounded to the nearest integer)
726
+ * to the user in a way that explains what to do with the suggestion.
727
+ * @param suggestedCarbohydrates the recommended additional carbohydrates
728
+ */
562
729
  public recommendCarbohydrates = (suggestedCarbohydrates: number): JSX.Element =&gt; {
563
730
  const displayCarbs = Math.round(suggestedCarbohydrates);
564
731
  &nbsp;
@@ -593,6 +760,9 @@ export default class RecommendationModal extends React.Component&lt;IModalProps,
593
760
  );
594
761
  };
595
762
  &nbsp;
763
+ /**
764
+ * @returns JSX element for displaying the “second” page of the recommendation modal. The second page displays the string from the attentionMessage prop.
765
+ */
596
766
  public secondPage = (): JSX.Element =&gt; {
597
767
  const { attentionMessage, suggestedCarbohydrates } = this.props;
598
768
  const willRecommendCarbs = suggestedCarbohydrates !== null &amp;&amp; suggestedCarbohydrates &gt; 0;
@@ -622,11 +792,20 @@ export default class RecommendationModal extends React.Component&lt;IModalProps,
622
792
  );
623
793
  };
624
794
  &nbsp;
795
+ /**
796
+ * @returns JSX element for displaying the “first” page of the recommendation modal.
797
+ * The first page consists of a limitation message rendered using a LimitationMessage component.
798
+ */
625
799
  public firstPage = (): JSX.Element =&gt; {
626
800
  const { limitationMessage } = this.props;
627
801
  return &lt;LimitationMessage limitationMessage={limitationMessage} onPressNextButton={this.onPressNextButton} /&gt;;
628
802
  };
629
803
  &nbsp;
804
+ /**
805
+ * @returns JSX element for rendering a modal that is visible if the isVisible prop is true.
806
+ * If the firstPageVisible state variable is true then use firstPage() to render the first page.
807
+ * Otherwise use secondPage() to render the second page.
808
+ */
630
809
  public render(): JSX.Element {
631
810
  const { isVisible } = this.props;
632
811
  const { firstPageVisible } = this.state;
@@ -649,6 +828,7 @@ const recommendEatingFontSize = height / 45;
649
828
  const textFontSize = width / 20;
650
829
  const titleFontSize = width / 13;
651
830
  &nbsp;
831
+ /** @internal */
652
832
  export const stylesModal = StyleSheet.create({
653
833
  modalStyle: { margin: 0 },
654
834
  container: {
@@ -727,7 +907,7 @@ export const stylesModal = StyleSheet.create({
727
907
  <div class='footer quiet pad2 space-top1 center small'>
728
908
  Code coverage generated by
729
909
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
730
- at Tue Jul 06 2021 09:58:23 GMT+0000 (Coordinated Universal Time)
910
+ at Thu Jul 29 2021 07:55:43 GMT+0000 (Coordinated Universal Time)
731
911
  </div>
732
912
  </div>
733
913
  <script src="../../prettify.js"></script>