@k-int/stripes-kint-components 2.8.2 → 2.8.3

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 (158) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/es/lib/CustomProperties/Config/CustomPropertiesSettings.js +2 -2
  3. package/junit.xml +157 -656
  4. package/package.json +1 -1
  5. package/src/artifacts/coverage-jest/lcov-report/ActionList/ActionList.js.html +56 -8
  6. package/src/artifacts/coverage-jest/lcov-report/ActionList/ActionListFieldArray.js.html +394 -64
  7. package/src/artifacts/coverage-jest/lcov-report/ActionList/index.html +10 -10
  8. package/src/artifacts/coverage-jest/lcov-report/ActionList/index.js.html +1 -1
  9. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/CustomPropertiesLookup.js.html +187 -52
  10. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/CustomPropertiesSettings.js.html +372 -87
  11. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/CustomPropertyForm.js.html +293 -74
  12. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/CustomPropertyView.js.html +126 -54
  13. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/index.html +45 -60
  14. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/index.js.html +1 -1
  15. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/CustomPropertiesEdit.js.html +23 -5
  16. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/CustomPropertiesEditCtx.js.html +59 -47
  17. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/CustomPropertiesListField.js.html +259 -97
  18. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/CustomPropertyField.js.html +399 -105
  19. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/CustomPropertyFormCard.js.html +41 -68
  20. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/index.html +57 -57
  21. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/index.js.html +1 -1
  22. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/testResources.js.html +67 -688
  23. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/CustomPropertiesFilter.js.html +92 -53
  24. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/CustomPropertiesFilterField.js.html +103 -64
  25. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/CustomPropertiesFilterFieldArray.js.html +54 -63
  26. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/CustomPropertiesFilterForm.js.html +49 -16
  27. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/CustomPropertiesRule.js.html +69 -18
  28. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/index.html +89 -89
  29. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/index.js.html +1 -1
  30. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/testResources.js.html +33 -786
  31. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/useOperators.js.html +46 -46
  32. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/useParseActiveFilterStrings.js.html +45 -36
  33. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/useValueProps.js.html +43 -28
  34. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/CustomPropertiesView.js.html +20 -2
  35. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/CustomPropertiesViewCtx.js.html +50 -41
  36. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/CustomPropertyCard.js.html +54 -75
  37. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/index.html +24 -24
  38. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/index.js.html +1 -1
  39. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/testResources.js.html +1 -1
  40. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/index.html +1 -1
  41. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/index.js.html +1 -1
  42. package/src/artifacts/coverage-jest/lcov-report/{hooks/useAvailableCustomProperties.js.html → CycleButton/CycleButton.js.html} +62 -50
  43. package/src/artifacts/coverage-jest/lcov-report/CycleButton/index.html +131 -0
  44. package/src/artifacts/coverage-jest/lcov-report/CycleButton/index.js.html +88 -0
  45. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataCategoryList/EditableRefdataCategoryList.js.html +664 -0
  46. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataCategoryList/index.html +131 -0
  47. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataCategoryList/index.js.html +88 -0
  48. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataList/EditableRefdataList.js.html +264 -39
  49. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataList/index.html +9 -9
  50. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataList/index.js.html +1 -1
  51. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/EditableSettingsList.js.html +41 -14
  52. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/EditableSettingsListFieldArray.js.html +45 -6
  53. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/EditSettingValue.js.html +47 -11
  54. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/RenderSettingValue.js.html +65 -14
  55. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/SettingField.js.html +154 -31
  56. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/index.html +26 -26
  57. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/index.js.html +1 -1
  58. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/index.html +18 -18
  59. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/index.js.html +1 -1
  60. package/src/artifacts/coverage-jest/lcov-report/FormModal/FormModal.js.html +35 -17
  61. package/src/artifacts/coverage-jest/lcov-report/FormModal/index.html +15 -15
  62. package/src/artifacts/coverage-jest/lcov-report/FormModal/index.js.html +1 -1
  63. package/src/artifacts/coverage-jest/lcov-report/FormattedKintMessage/FormattedKintMessage.js.html +247 -0
  64. package/src/artifacts/coverage-jest/lcov-report/FormattedKintMessage/index.html +131 -0
  65. package/src/artifacts/coverage-jest/lcov-report/FormattedKintMessage/index.js.html +88 -0
  66. package/src/artifacts/coverage-jest/lcov-report/{CustomProperties/Config/CustomPropertiesView.js.html → IconSelect/IconSelect.js.html} +158 -257
  67. package/src/artifacts/coverage-jest/lcov-report/IconSelect/index.html +131 -0
  68. package/src/artifacts/coverage-jest/lcov-report/IconSelect/index.js.html +88 -0
  69. package/src/artifacts/coverage-jest/lcov-report/NoResultsMessage/NoResultsMessage.js.html +48 -6
  70. package/src/artifacts/coverage-jest/lcov-report/NoResultsMessage/index.html +7 -7
  71. package/src/artifacts/coverage-jest/lcov-report/NoResultsMessage/index.js.html +1 -1
  72. package/src/artifacts/coverage-jest/lcov-report/QueryTypedown/QueryTypedown.js.html +1 -1
  73. package/src/artifacts/coverage-jest/lcov-report/QueryTypedown/index.html +1 -1
  74. package/src/artifacts/coverage-jest/lcov-report/QueryTypedown/index.js.html +1 -1
  75. package/src/artifacts/coverage-jest/lcov-report/RefdataButtons/RefdataButtons.js.html +3 -3
  76. package/src/artifacts/coverage-jest/lcov-report/RefdataButtons/index.html +1 -1
  77. package/src/artifacts/coverage-jest/lcov-report/RefdataButtons/index.js.html +1 -1
  78. package/src/artifacts/coverage-jest/lcov-report/{CustomProperties/Config/testResources.js.html → RichSelect/RichSelect.js.html} +256 -334
  79. package/src/artifacts/coverage-jest/lcov-report/RichSelect/index.html +146 -0
  80. package/src/artifacts/coverage-jest/lcov-report/RichSelect/index.js.html +91 -0
  81. package/src/artifacts/coverage-jest/lcov-report/RichSelect/useSelectedOption.js.html +127 -0
  82. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/SASQLookupComponent.js.html +52 -7
  83. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/TableBody/TableBody.js.html +31 -4
  84. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/TableBody/index.html +3 -3
  85. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/TableBody/index.js.html +1 -1
  86. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/index.html +7 -7
  87. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/index.js.html +1 -1
  88. package/src/artifacts/coverage-jest/lcov-report/SASQRoute/SASQRoute.js.html +1 -1
  89. package/src/artifacts/coverage-jest/lcov-report/SASQRoute/index.html +1 -1
  90. package/src/artifacts/coverage-jest/lcov-report/SASQRoute/index.js.html +1 -1
  91. package/src/artifacts/coverage-jest/lcov-report/SASQViewComponent/SASQViewComponent.js.html +1 -1
  92. package/src/artifacts/coverage-jest/lcov-report/SASQViewComponent/index.html +1 -1
  93. package/src/artifacts/coverage-jest/lcov-report/SASQViewComponent/index.js.html +1 -1
  94. package/src/artifacts/coverage-jest/lcov-report/SearchField/SearchField.js.html +1 -1
  95. package/src/artifacts/coverage-jest/lcov-report/SearchField/index.html +1 -1
  96. package/src/artifacts/coverage-jest/lcov-report/SearchField/index.js.html +1 -1
  97. package/src/artifacts/coverage-jest/lcov-report/SettingPage/SettingPage.js.html +24 -27
  98. package/src/artifacts/coverage-jest/lcov-report/SettingPage/SettingPagePane.js.html +47 -17
  99. package/src/artifacts/coverage-jest/lcov-report/SettingPage/index.html +22 -22
  100. package/src/artifacts/coverage-jest/lcov-report/SettingPage/index.js.html +1 -1
  101. package/src/artifacts/coverage-jest/lcov-report/Typedown/Typedown.js.html +1 -1
  102. package/src/artifacts/coverage-jest/lcov-report/Typedown/index.html +1 -1
  103. package/src/artifacts/coverage-jest/lcov-report/Typedown/index.js.html +1 -1
  104. package/src/artifacts/coverage-jest/lcov-report/constants/customProperties.js.html +1 -1
  105. package/src/artifacts/coverage-jest/lcov-report/constants/eventCodes.js.html +1 -1
  106. package/src/artifacts/coverage-jest/lcov-report/constants/index.html +1 -1
  107. package/src/artifacts/coverage-jest/lcov-report/contexts/SettingsContext.js.html +2 -2
  108. package/src/artifacts/coverage-jest/lcov-report/contexts/index.html +1 -1
  109. package/src/artifacts/coverage-jest/lcov-report/contexts/index.js.html +1 -1
  110. package/src/artifacts/coverage-jest/lcov-report/favicon.png +0 -0
  111. package/src/artifacts/coverage-jest/lcov-report/hooks/index.html +142 -97
  112. package/src/artifacts/coverage-jest/lcov-report/hooks/index.js.html +13 -4
  113. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/index.html +35 -20
  114. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/index.js.html +5 -2
  115. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/useAppSettings.js.html +7 -7
  116. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/useSettingSection.js.html +7 -7
  117. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/useSettings.js.html +61 -22
  118. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/index.html +1 -1
  119. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/index.js.html +1 -1
  120. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/useTypedown.js.html +1 -1
  121. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/useTypedownData.js.html +1 -1
  122. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/useTypedownToggle.js.html +1 -1
  123. package/src/artifacts/coverage-jest/lcov-report/hooks/useActiveElement.js.html +7 -7
  124. package/src/artifacts/coverage-jest/lcov-report/hooks/useCustomProperties.js.html +19 -22
  125. package/src/artifacts/coverage-jest/lcov-report/hooks/useHelperApp.js.html +7 -7
  126. package/src/artifacts/coverage-jest/lcov-report/hooks/useIntlKey.js.html +151 -0
  127. package/src/artifacts/coverage-jest/lcov-report/{utils/renderHelpText.js.html → hooks/useIntlKeyStore.js.html} +71 -38
  128. package/src/artifacts/coverage-jest/lcov-report/hooks/useInvalidateRefdata.js.html +7 -7
  129. package/src/artifacts/coverage-jest/lcov-report/hooks/useKintIntl.js.html +238 -0
  130. package/src/artifacts/coverage-jest/lcov-report/hooks/useKiwtFieldArray.js.html +7 -7
  131. package/src/artifacts/coverage-jest/lcov-report/hooks/useKiwtSASQuery.js.html +9 -9
  132. package/src/artifacts/coverage-jest/lcov-report/hooks/useLocalStorageState.js.html +7 -7
  133. package/src/artifacts/coverage-jest/lcov-report/hooks/useMutateCustomProperties.js.html +23 -11
  134. package/src/artifacts/coverage-jest/lcov-report/hooks/useMutateRefdataCategory.js.html +274 -0
  135. package/src/artifacts/coverage-jest/lcov-report/hooks/useMutateRefdataValue.js.html +19 -10
  136. package/src/artifacts/coverage-jest/lcov-report/hooks/useQIndex.js.html +7 -7
  137. package/src/artifacts/coverage-jest/lcov-report/hooks/useRefdata.js.html +9 -9
  138. package/src/artifacts/coverage-jest/lcov-report/hooks/useTemplates.js.html +7 -7
  139. package/src/artifacts/coverage-jest/lcov-report/index.html +205 -130
  140. package/src/artifacts/coverage-jest/lcov-report/sort-arrow-sprite.png +0 -0
  141. package/src/artifacts/coverage-jest/lcov-report/utils/buildUrl.js.html +1 -1
  142. package/src/artifacts/coverage-jest/lcov-report/utils/generateKiwtQuery.js.html +2 -2
  143. package/src/artifacts/coverage-jest/lcov-report/utils/generateKiwtQueryParams.js.html +2 -2
  144. package/src/artifacts/coverage-jest/lcov-report/utils/groupCustomPropertiesByCtx.js.html +7 -7
  145. package/src/artifacts/coverage-jest/lcov-report/utils/highlightString.js.html +3 -3
  146. package/src/artifacts/coverage-jest/lcov-report/utils/index.html +34 -34
  147. package/src/artifacts/coverage-jest/lcov-report/utils/index.js.html +42 -3
  148. package/src/artifacts/coverage-jest/lcov-report/utils/matchString.js.html +2 -2
  149. package/src/artifacts/coverage-jest/lcov-report/utils/parseErrorResponse.js.html +139 -0
  150. package/src/artifacts/coverage-jest/lcov-report/utils/refdataOptions.js.html +5 -2
  151. package/src/artifacts/coverage-jest/lcov-report/utils/refdataQueryKey.js.html +2 -2
  152. package/src/artifacts/coverage-jest/lcov-report/utils/selectorSafe.js.html +2 -2
  153. package/src/artifacts/coverage-jest/lcov-report/utils/sortByLabel.js.html +2 -2
  154. package/src/artifacts/coverage-jest/lcov-report/utils/toCamelCase.js.html +2 -2
  155. package/src/artifacts/coverage-jest/lcov-report/utils/typedownQueryKey.js.html +2 -2
  156. package/src/artifacts/coverage-jest/lcov-report/utils/validators.js.html +128 -80
  157. package/src/artifacts/coverage-jest/lcov.info +2603 -2086
  158. package/src/lib/CustomProperties/Config/CustomPropertiesSettings.js +1 -1
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/95</span>
28
+ <span class='fraction'>0/119</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/68</span>
35
+ <span class='fraction'>0/88</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/28</span>
42
+ <span class='fraction'>0/30</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/86</span>
49
+ <span class='fraction'>0/111</span>
50
50
  </div>
51
51
 
52
52
 
@@ -386,7 +386,120 @@
386
386
  <a name='L321'></a><a href='#L321'>321</a>
387
387
  <a name='L322'></a><a href='#L322'>322</a>
388
388
  <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
390
503
  <span class="cline-any cline-neutral">&nbsp;</span>
391
504
  <span class="cline-any cline-neutral">&nbsp;</span>
392
505
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -414,6 +527,18 @@
414
527
  <span class="cline-any cline-neutral">&nbsp;</span>
415
528
  <span class="cline-any cline-neutral">&nbsp;</span>
416
529
  <span class="cline-any cline-neutral">&nbsp;</span>
530
+ <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span>
537
+ <span class="cline-any cline-neutral">&nbsp;</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-neutral">&nbsp;</span>
540
+ <span class="cline-any cline-no">&nbsp;</span>
541
+ <span class="cline-any cline-no">&nbsp;</span>
417
542
  <span class="cline-any cline-no">&nbsp;</span>
418
543
  <span class="cline-any cline-neutral">&nbsp;</span>
419
544
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -423,6 +548,11 @@
423
548
  <span class="cline-any cline-neutral">&nbsp;</span>
424
549
  <span class="cline-any cline-neutral">&nbsp;</span>
425
550
  <span class="cline-any cline-neutral">&nbsp;</span>
551
+ <span class="cline-any cline-no">&nbsp;</span>
552
+ <span class="cline-any cline-neutral">&nbsp;</span>
553
+ <span class="cline-any cline-neutral">&nbsp;</span>
554
+ <span class="cline-any cline-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
556
  <span class="cline-any cline-neutral">&nbsp;</span>
427
557
  <span class="cline-any cline-neutral">&nbsp;</span>
428
558
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -430,6 +560,13 @@
430
560
  <span class="cline-any cline-neutral">&nbsp;</span>
431
561
  <span class="cline-any cline-neutral">&nbsp;</span>
432
562
  <span class="cline-any cline-no">&nbsp;</span>
563
+ <span class="cline-any cline-neutral">&nbsp;</span>
564
+ <span class="cline-any cline-neutral">&nbsp;</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-neutral">&nbsp;</span>
568
+ <span class="cline-any cline-neutral">&nbsp;</span>
569
+ <span class="cline-any cline-neutral">&nbsp;</span>
433
570
  <span class="cline-any cline-no">&nbsp;</span>
434
571
  <span class="cline-any cline-neutral">&nbsp;</span>
435
572
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -437,6 +574,28 @@
437
574
  <span class="cline-any cline-neutral">&nbsp;</span>
438
575
  <span class="cline-any cline-neutral">&nbsp;</span>
439
576
  <span class="cline-any cline-neutral">&nbsp;</span>
577
+ <span class="cline-any cline-neutral">&nbsp;</span>
578
+ <span class="cline-any cline-neutral">&nbsp;</span>
579
+ <span class="cline-any cline-neutral">&nbsp;</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-neutral">&nbsp;</span>
583
+ <span class="cline-any cline-neutral">&nbsp;</span>
584
+ <span class="cline-any cline-neutral">&nbsp;</span>
585
+ <span class="cline-any cline-neutral">&nbsp;</span>
586
+ <span class="cline-any cline-neutral">&nbsp;</span>
587
+ <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</span>
590
+ <span class="cline-any cline-neutral">&nbsp;</span>
591
+ <span class="cline-any cline-no">&nbsp;</span>
592
+ <span class="cline-any cline-no">&nbsp;</span>
593
+ <span class="cline-any cline-no">&nbsp;</span>
594
+ <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-neutral">&nbsp;</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</span>
597
+ <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-neutral">&nbsp;</span>
440
599
  <span class="cline-any cline-no">&nbsp;</span>
441
600
  <span class="cline-any cline-neutral">&nbsp;</span>
442
601
  <span class="cline-any cline-no">&nbsp;</span>
@@ -460,8 +619,6 @@
460
619
  <span class="cline-any cline-no">&nbsp;</span>
461
620
  <span class="cline-any cline-no">&nbsp;</span>
462
621
  <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-no">&nbsp;</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
622
  <span class="cline-any cline-neutral">&nbsp;</span>
466
623
  <span class="cline-any cline-neutral">&nbsp;</span>
467
624
  <span class="cline-any cline-no">&nbsp;</span>
@@ -475,8 +632,6 @@
475
632
  <span class="cline-any cline-no">&nbsp;</span>
476
633
  <span class="cline-any cline-no">&nbsp;</span>
477
634
  <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-no">&nbsp;</span>
479
- <span class="cline-any cline-neutral">&nbsp;</span>
480
635
  <span class="cline-any cline-neutral">&nbsp;</span>
481
636
  <span class="cline-any cline-neutral">&nbsp;</span>
482
637
  <span class="cline-any cline-no">&nbsp;</span>
@@ -525,6 +680,9 @@
525
680
  <span class="cline-any cline-neutral">&nbsp;</span>
526
681
  <span class="cline-any cline-neutral">&nbsp;</span>
527
682
  <span class="cline-any cline-no">&nbsp;</span>
683
+ <span class="cline-any cline-neutral">&nbsp;</span>
684
+ <span class="cline-any cline-no">&nbsp;</span>
685
+ <span class="cline-any cline-no">&nbsp;</span>
528
686
  <span class="cline-any cline-no">&nbsp;</span>
529
687
  <span class="cline-any cline-neutral">&nbsp;</span>
530
688
  <span class="cline-any cline-no">&nbsp;</span>
@@ -539,6 +697,11 @@
539
697
  <span class="cline-any cline-neutral">&nbsp;</span>
540
698
  <span class="cline-any cline-neutral">&nbsp;</span>
541
699
  <span class="cline-any cline-neutral">&nbsp;</span>
700
+ <span class="cline-any cline-neutral">&nbsp;</span>
701
+ <span class="cline-any cline-neutral">&nbsp;</span>
702
+ <span class="cline-any cline-neutral">&nbsp;</span>
703
+ <span class="cline-any cline-neutral">&nbsp;</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
542
705
  <span class="cline-any cline-no">&nbsp;</span>
543
706
  <span class="cline-any cline-no">&nbsp;</span>
544
707
  <span class="cline-any cline-no">&nbsp;</span>
@@ -554,6 +717,14 @@
554
717
  <span class="cline-any cline-neutral">&nbsp;</span>
555
718
  <span class="cline-any cline-neutral">&nbsp;</span>
556
719
  <span class="cline-any cline-neutral">&nbsp;</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-no">&nbsp;</span>
724
+ <span class="cline-any cline-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-no">&nbsp;</span>
557
728
  <span class="cline-any cline-no">&nbsp;</span>
558
729
  <span class="cline-any cline-neutral">&nbsp;</span>
559
730
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -564,11 +735,31 @@
564
735
  <span class="cline-any cline-neutral">&nbsp;</span>
565
736
  <span class="cline-any cline-no">&nbsp;</span>
566
737
  <span class="cline-any cline-no">&nbsp;</span>
738
+ <span class="cline-any cline-no">&nbsp;</span>
739
+ <span class="cline-any cline-no">&nbsp;</span>
740
+ <span class="cline-any cline-no">&nbsp;</span>
741
+ <span class="cline-any cline-no">&nbsp;</span>
742
+ <span class="cline-any cline-neutral">&nbsp;</span>
743
+ <span class="cline-any cline-no">&nbsp;</span>
744
+ <span class="cline-any cline-neutral">&nbsp;</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-neutral">&nbsp;</span>
748
+ <span class="cline-any cline-neutral">&nbsp;</span>
749
+ <span class="cline-any cline-no">&nbsp;</span>
750
+ <span class="cline-any cline-no">&nbsp;</span>
751
+ <span class="cline-any cline-no">&nbsp;</span>
567
752
  <span class="cline-any cline-neutral">&nbsp;</span>
753
+ <span class="cline-any cline-no">&nbsp;</span>
568
754
  <span class="cline-any cline-neutral">&nbsp;</span>
569
755
  <span class="cline-any cline-neutral">&nbsp;</span>
570
756
  <span class="cline-any cline-no">&nbsp;</span>
571
757
  <span class="cline-any cline-no">&nbsp;</span>
758
+ <span class="cline-any cline-no">&nbsp;</span>
759
+ <span class="cline-any cline-neutral">&nbsp;</span>
760
+ <span class="cline-any cline-no">&nbsp;</span>
761
+ <span class="cline-any cline-neutral">&nbsp;</span>
762
+ <span class="cline-any cline-neutral">&nbsp;</span>
572
763
  <span class="cline-any cline-neutral">&nbsp;</span>
573
764
  <span class="cline-any cline-neutral">&nbsp;</span>
574
765
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -578,6 +769,8 @@
578
769
  <span class="cline-any cline-neutral">&nbsp;</span>
579
770
  <span class="cline-any cline-neutral">&nbsp;</span>
580
771
  <span class="cline-any cline-neutral">&nbsp;</span>
772
+ <span class="cline-any cline-neutral">&nbsp;</span>
773
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
774
  <span class="cline-any cline-no">&nbsp;</span>
582
775
  <span class="cline-any cline-neutral">&nbsp;</span>
583
776
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -590,12 +783,20 @@
590
783
  <span class="cline-any cline-neutral">&nbsp;</span>
591
784
  <span class="cline-any cline-neutral">&nbsp;</span>
592
785
  <span class="cline-any cline-neutral">&nbsp;</span>
786
+ <span class="cline-any cline-neutral">&nbsp;</span>
787
+ <span class="cline-any cline-neutral">&nbsp;</span>
788
+ <span class="cline-any cline-neutral">&nbsp;</span>
789
+ <span class="cline-any cline-neutral">&nbsp;</span>
593
790
  <span class="cline-any cline-no">&nbsp;</span>
594
791
  <span class="cline-any cline-neutral">&nbsp;</span>
595
792
  <span class="cline-any cline-neutral">&nbsp;</span>
596
793
  <span class="cline-any cline-neutral">&nbsp;</span>
597
794
  <span class="cline-any cline-neutral">&nbsp;</span>
598
795
  <span class="cline-any cline-neutral">&nbsp;</span>
796
+ <span class="cline-any cline-no">&nbsp;</span>
797
+ <span class="cline-any cline-neutral">&nbsp;</span>
798
+ <span class="cline-any cline-neutral">&nbsp;</span>
799
+ <span class="cline-any cline-neutral">&nbsp;</span>
599
800
  <span class="cline-any cline-neutral">&nbsp;</span>
600
801
  <span class="cline-any cline-neutral">&nbsp;</span>
601
802
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -616,6 +817,9 @@
616
817
  <span class="cline-any cline-no">&nbsp;</span>
617
818
  <span class="cline-any cline-no">&nbsp;</span>
618
819
  <span class="cline-any cline-neutral">&nbsp;</span>
820
+ <span class="cline-any cline-neutral">&nbsp;</span>
821
+ <span class="cline-any cline-neutral">&nbsp;</span>
822
+ <span class="cline-any cline-no">&nbsp;</span>
619
823
  <span class="cline-any cline-no">&nbsp;</span>
620
824
  <span class="cline-any cline-no">&nbsp;</span>
621
825
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -646,6 +850,8 @@
646
850
  <span class="cline-any cline-neutral">&nbsp;</span>
647
851
  <span class="cline-any cline-no">&nbsp;</span>
648
852
  <span class="cline-any cline-neutral">&nbsp;</span>
853
+ <span class="cline-any cline-no">&nbsp;</span>
854
+ <span class="cline-any cline-neutral">&nbsp;</span>
649
855
  <span class="cline-any cline-neutral">&nbsp;</span>
650
856
  <span class="cline-any cline-neutral">&nbsp;</span>
651
857
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -658,11 +864,10 @@
658
864
  <span class="cline-any cline-neutral">&nbsp;</span>
659
865
  <span class="cline-any cline-neutral">&nbsp;</span>
660
866
  <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-no">&nbsp;</span>
663
867
  <span class="cline-any cline-no">&nbsp;</span>
664
868
  <span class="cline-any cline-neutral">&nbsp;</span>
665
869
  <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-neutral">&nbsp;</span>
666
871
  <span class="cline-any cline-no">&nbsp;</span>
667
872
  <span class="cline-any cline-neutral">&nbsp;</span>
668
873
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -706,16 +911,34 @@
706
911
  <span class="cline-any cline-neutral">&nbsp;</span>
707
912
  <span class="cline-any cline-neutral">&nbsp;</span>
708
913
  <span class="cline-any cline-neutral">&nbsp;</span>
914
+ <span class="cline-any cline-neutral">&nbsp;</span>
915
+ <span class="cline-any cline-no">&nbsp;</span>
916
+ <span class="cline-any cline-neutral">&nbsp;</span>
917
+ <span class="cline-any cline-no">&nbsp;</span>
918
+ <span class="cline-any cline-no">&nbsp;</span>
919
+ <span class="cline-any cline-no">&nbsp;</span>
920
+ <span class="cline-any cline-neutral">&nbsp;</span>
921
+ <span class="cline-any cline-neutral">&nbsp;</span>
922
+ <span class="cline-any cline-neutral">&nbsp;</span>
923
+ <span class="cline-any cline-neutral">&nbsp;</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-neutral">&nbsp;</span>
926
+ <span class="cline-any cline-neutral">&nbsp;</span>
927
+ <span class="cline-any cline-neutral">&nbsp;</span>
928
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
929
  <span class="cline-any cline-no">&nbsp;</span>
710
930
  <span class="cline-any cline-neutral">&nbsp;</span>
711
931
  <span class="cline-any cline-neutral">&nbsp;</span>
712
932
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { forwardRef, useImperativeHandle, useState } from 'react';
713
933
  import PropTypes from 'prop-types';
714
- import { FormattedMessage } from 'react-intl';
934
+ &nbsp;
715
935
  import get from 'lodash/get';
936
+ import cloneDeep from 'lodash/cloneDeep';
716
937
  &nbsp;
717
938
  import { Field, useForm, useFormState } from 'react-final-form';
718
- import { Button, Headline, IconButton, MultiColumnList, TextField } from '@folio/stripes/components';
939
+ import { Button, Headline, IconButton, MultiColumnList, TextField, Tooltip } from '@folio/stripes/components';
940
+ import { useKintIntl } from '../hooks';
941
+ &nbsp;
719
942
  import css from '../../../styles/ActionListFieldArray.css';
720
943
  &nbsp;
721
944
  const EDITING_ACTIONS_WIDTH = <span class="cstat-no" title="statement not covered" >25;</span>
@@ -724,37 +947,83 @@ const TOTAL_WIDTH = <span class="cstat-no" title="statement not covered" >100;</
724
947
  &nbsp;
725
948
  const propTypes = <span class="cstat-no" title="statement not covered" >{</span>
726
949
  actionAssigner: PropTypes.func,
727
- actionCalls: PropTypes.object,
728
950
  columnMapping: PropTypes.object,
729
951
  creatableFields: PropTypes.object,
730
952
  createCallback: PropTypes.func,
953
+ defaultNewObject: PropTypes.object,
731
954
  editableFields: PropTypes.object,
732
955
  fields: PropTypes.object,
733
956
  fieldComponents: PropTypes.object,
734
957
  formatter: PropTypes.object,
735
958
  hideCreateButton: PropTypes.bool,
736
- label: PropTypes.string,
959
+ intlKey: PropTypes.string,
960
+ intlNS: PropTypes.string,
961
+ label: PropTypes.oneOfType([
962
+ PropTypes.string,
963
+ PropTypes.node
964
+ ]),
965
+ labelOverrides: PropTypes.object,
966
+ onRowClick: PropTypes.func,
967
+ triggerFormSubmit: PropTypes.func.isRequired,
968
+ validateFields: PropTypes.object,
737
969
  visibleFields: PropTypes.arrayOf(PropTypes.string)
738
970
  };
739
971
  &nbsp;
972
+ // This needs to be outside of the main component for forwardRef to work properly it seems.
973
+ const ActionTrigger = <span class="cstat-no" title="statement not covered" >forwardRef(<span class="fstat-no" title="function not covered" >({</span> action, ...actionTriggerProps }, ref) =&gt; {</span>
974
+ <span class="cstat-no" title="statement not covered" > if (action.icon) {</span>
975
+ <span class="cstat-no" title="statement not covered" > return (</span>
976
+ &lt;IconButton
977
+ ref={ref}
978
+ icon={action.icon}
979
+ {...actionTriggerProps}
980
+ /&gt;
981
+ );
982
+ }
983
+ &nbsp;
984
+ <span class="cstat-no" title="statement not covered" > return (</span>
985
+ &lt;Button
986
+ ref={ref}
987
+ marginBottom0
988
+ {...actionTriggerProps}
989
+ &gt;
990
+ {action.label ?? action.name}
991
+ &lt;/Button&gt;
992
+ );
993
+ });
994
+ &nbsp;
995
+ <span class="cstat-no" title="statement not covered" >ActionTrigger.propTypes = {</span>
996
+ action: PropTypes.shape({
997
+ icon: PropTypes.string,
998
+ label: PropTypes.string,
999
+ name: PropTypes.string
1000
+ })
1001
+ };
1002
+ &nbsp;
740
1003
  const ActionListFieldArray = <span class="cstat-no" title="statement not covered" >forwardRef(<span class="fstat-no" title="function not covered" >({</span></span>
741
1004
  actionAssigner,
742
- actionCalls, // DEPRECATED
743
1005
  columnMapping,
744
1006
  creatableFields,
745
1007
  createCallback,
1008
+ defaultNewObject,
746
1009
  editableFields,
747
1010
  fields,
748
1011
  fieldComponents,
749
1012
  hideCreateButton = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span>
1013
+ intlKey: passedIntlKey,
1014
+ intlNS: passedIntlNS,
750
1015
  label,
1016
+ labelOverrides = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span>
1017
+ onRowClick,
1018
+ validateFields,
751
1019
  visibleFields,
1020
+ triggerFormSubmit,
752
1021
  ...mclProps // Assume anything left over is to directly apply to the MCL
753
1022
  }, ref) =&gt; {
754
1023
  // Grab finalForm functions/values from form hooks
755
1024
  const { change } = <span class="cstat-no" title="statement not covered" >useForm();</span>
756
- const { initialValues, pristine, submitting, values } = <span class="cstat-no" title="statement not covered" >useFormState();</span>
757
- &nbsp;
1025
+ const { hasValidationErrors, initialValues, pristine, submitting, values } = <span class="cstat-no" title="statement not covered" >useFormState();</span>
1026
+ const kintIntl = <span class="cstat-no" title="statement not covered" >useKintIntl(passedIntlKey, passedIntlNS);</span>
758
1027
  /*
759
1028
  Keep track of which field we are editing.
760
1029
  null for no field, string id if we are editing an existing field and
@@ -782,8 +1051,6 @@ const ActionListFieldArray = <span class="cstat-no" title="statement not covered
782
1051
  const editCallback = <span class="cstat-no" title="statement not covered" >actionAssigner(rowData)?.find(<span class="fstat-no" title="function not covered" >ac</span>t =&gt; <span class="cstat-no" title="statement not covered" >act.name === 'edit')</span>?.callback;</span>
783
1052
  <span class="cstat-no" title="statement not covered" > if (editCallback) {</span>
784
1053
  <span class="cstat-no" title="statement not covered" > editCallback(rowData);</span>
785
- } else {
786
- <span class="cstat-no" title="statement not covered" > actionCalls.edit(rowData); </span>// DEPRECATED
787
1054
  }
788
1055
  };
789
1056
  &nbsp;
@@ -797,14 +1064,12 @@ const ActionListFieldArray = <span class="cstat-no" title="statement not covered
797
1064
  &nbsp;
798
1065
  <span class="cstat-no" title="statement not covered" > if (createCallback) {</span>
799
1066
  <span class="cstat-no" title="statement not covered" > createCallback(rowData);</span>
800
- } else {
801
- <span class="cstat-no" title="statement not covered" > actionCalls.create(rowData); </span>// DEPRECATED
802
1067
  }
803
1068
  };
804
1069
  &nbsp;
805
1070
  const handleClickCreate = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
806
1071
  <span class="cstat-no" title="statement not covered" > toggleEditing('NEW_ROW');</span>
807
- <span class="cstat-no" title="statement not covered" > fields.push({});</span>
1072
+ <span class="cstat-no" title="statement not covered" > fields.unshift(defaultNewObject);</span>
808
1073
  };
809
1074
  &nbsp;
810
1075
  // Way to go into create mode from external component, and way to tell internal editing state
@@ -840,22 +1105,30 @@ const ActionListFieldArray = <span class="cstat-no" title="statement not covered
840
1105
  <span class="cstat-no" title="statement not covered" > if (data.id === editing || (!data.id &amp;&amp; editing === 'NEW_ROW')) {</span>
841
1106
  // Render the save/cancel buttons
842
1107
  <span class="cstat-no" title="statement not covered" > return (</span>
843
- &lt;div&gt;
1108
+ &lt;div id="action-button-parent"&gt;
844
1109
  &lt;Button
845
1110
  key={`save[${data.rowIndex}]`}
846
1111
  buttonStyle="primary"
847
- disabled={submitting || pristine}
1112
+ disabled={hasValidationErrors || submitting || pristine}
848
1113
  marginBottom0
849
1114
  onClick={<span class="fstat-no" title="function not covered" >()</span> =&gt; {
850
- <span class="cstat-no" title="statement not covered" > if (!data.id &amp;&amp; editing === 'NEW_ROW') {</span>
851
- <span class="cstat-no" title="statement not covered" > handleCreate(data.rowIndex);</span>
852
- } else {
853
- <span class="cstat-no" title="statement not covered" > handleSave(data.rowIndex);</span>
1115
+ <span class="cstat-no" title="statement not covered" > triggerFormSubmit(); </span>// This is set up as () =&gt; null in ActionList, so essentially only acts here to force validation
1116
+ &nbsp;
1117
+ <span class="cstat-no" title="statement not covered" > if (!hasValidationErrors) {</span>
1118
+ <span class="cstat-no" title="statement not covered" > if (!data.id &amp;&amp; editing === 'NEW_ROW') {</span>
1119
+ <span class="cstat-no" title="statement not covered" > handleCreate(data.rowIndex);</span>
1120
+ } else {
1121
+ <span class="cstat-no" title="statement not covered" > handleSave(data.rowIndex);</span>
1122
+ }
1123
+ <span class="cstat-no" title="statement not covered" > toggleEditing(data.id);</span>
854
1124
  }
855
- <span class="cstat-no" title="statement not covered" > toggleEditing(data.id);</span>
856
1125
  }}
1126
+ type="submit"
857
1127
  &gt;
858
- &lt;FormattedMessage id="stripes-kint-components.actionList.save" /&gt;
1128
+ {kintIntl.formatKintMessage({
1129
+ id: 'save',
1130
+ overrideValue: labelOverrides?.save
1131
+ })}
859
1132
  &lt;/Button&gt;
860
1133
  &lt;Button
861
1134
  key={`cancel[${data.rowIndex}]`}
@@ -871,53 +1144,91 @@ const ActionListFieldArray = <span class="cstat-no" title="statement not covered
871
1144
  }
872
1145
  }}
873
1146
  &gt;
874
- &lt;FormattedMessage id="stripes-kint-components.actionList.cancel" /&gt;
1147
+ {kintIntl.formatKintMessage({
1148
+ id: 'cancel',
1149
+ overrideValue: labelOverrides?.cancel
1150
+ })}
875
1151
  &lt;/Button&gt;
876
1152
  &lt;/div&gt;
877
1153
  );
878
1154
  }
879
1155
  &nbsp;
880
1156
  <span class="cstat-no" title="statement not covered" > return (</span>
881
- &lt;div&gt;
1157
+ &lt;div id="action-button-parent"&gt;
882
1158
  {actions?.map(<span class="fstat-no" title="function not covered" >ac</span>tion =&gt; {
883
1159
  let actionFunction;
884
1160
  <span class="cstat-no" title="statement not covered" > if (action.callback) {</span>
885
1161
  <span class="cstat-no" title="statement not covered" > actionFunction = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >action.callback(rest);</span></span>
886
1162
  }
887
- &nbsp;
888
- <span class="cstat-no" title="statement not covered" > if (!actionFunction &amp;&amp; actionCalls[action.name]) {</span>
889
- <span class="cstat-no" title="statement not covered" > actionFunction = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >actionCalls[action.name](rest);</span> </span>// DEPRECATED
890
- }
891
1163
  &nbsp;
892
1164
  // Edit has special action functionality, revealing fields etc.
893
1165
  <span class="cstat-no" title="statement not covered" > if (action.name === 'edit') {</span>
894
1166
  <span class="cstat-no" title="statement not covered" > actionFunction = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >toggleEditing(data.id);</span></span>
895
1167
  }
896
1168
  &nbsp;
897
- // If we're handed an icon, use that for the action button
898
- <span class="cstat-no" title="statement not covered" > if (action.icon) {</span>
1169
+ let ariaLabel = <span class="cstat-no" title="statement not covered" >`action-${action.name}[${data.rowIndex}]`;</span>
1170
+ <span class="cstat-no" title="statement not covered" > if (action?.ariaLabel) {</span>
1171
+ <span class="cstat-no" title="statement not covered" > if (typeof action.ariaLabel === 'function') {</span>
1172
+ <span class="cstat-no" title="statement not covered" > ariaLabel = action.ariaLabel(data);</span>
1173
+ } else <span class="cstat-no" title="statement not covered" >if (typeof action.ariaLabel === 'string') {</span>
1174
+ <span class="cstat-no" title="statement not covered" > ariaLabel = action.ariaLabel;</span>
1175
+ } else {
1176
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Provided ariaLabel for action "${action.name}" must be a function or a string.`);</span>
1177
+ }
1178
+ }
1179
+ &nbsp;
1180
+ let tooltip;
1181
+ let tooltipSub;
1182
+ <span class="cstat-no" title="statement not covered" > if (action?.tooltip) {</span>
1183
+ <span class="cstat-no" title="statement not covered" > if (typeof action.tooltip === 'function') {</span>
1184
+ <span class="cstat-no" title="statement not covered" > tooltip = action.tooltip(data);</span>
1185
+ } else {
1186
+ <span class="cstat-no" title="statement not covered" > tooltip = action.tooltip;</span>
1187
+ }
1188
+ &nbsp;
1189
+ <span class="cstat-no" title="statement not covered" > if (action?.tooltipSub) {</span>
1190
+ <span class="cstat-no" title="statement not covered" > if (typeof action.tooltipSub === 'function') {</span>
1191
+ <span class="cstat-no" title="statement not covered" > tooltipSub = action.tooltipSub(data);</span>
1192
+ } else {
1193
+ <span class="cstat-no" title="statement not covered" > tooltipSub = action.tooltipSub;</span>
1194
+ }
1195
+ }
1196
+ }
1197
+ &nbsp;
1198
+ // If a tooltip is declared, render that around the actionButton
1199
+ <span class="cstat-no" title="statement not covered" > if (tooltip) {</span>
899
1200
  <span class="cstat-no" title="statement not covered" > return (</span>
900
- &lt;IconButton
901
- key={`action-${action.name}[${data.rowIndex}]`}
902
- disabled={editing}
903
- icon={action.icon}
904
- onClick={<span class="fstat-no" title="function not covered" >()</span> =&gt; (<span class="cstat-no" title="statement not covered" >actionFunction ? actionFunction() : <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >null)</span></span>}
905
- to={action.to}
906
- /&gt;
1201
+ &lt;Tooltip
1202
+ id={`action-${action.name}[${data.rowIndex}]-tooltip`}
1203
+ sub={tooltipSub}
1204
+ text={tooltip}
1205
+ &gt;
1206
+ {<span class="fstat-no" title="function not covered" >({</span> ref: actionTriggerRef, ariaIds }) =&gt; (
1207
+ <span class="cstat-no" title="statement not covered" > &lt;ActionTrigger</span>
1208
+ key={`action-${action.name}[${data.rowIndex}]`}
1209
+ ref={actionTriggerRef}
1210
+ action={action}
1211
+ aria-describedby={ariaIds.sub}
1212
+ aria-labelledby={ariaIds.text}
1213
+ disabled={editing}
1214
+ onClick={<span class="fstat-no" title="function not covered" >()</span> =&gt; (<span class="cstat-no" title="statement not covered" >actionFunction ? actionFunction() : <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >null)</span></span>}
1215
+ to={action.to}
1216
+ /&gt;
1217
+ )}
1218
+ &lt;/Tooltip&gt;
907
1219
  );
908
1220
  }
909
1221
  &nbsp;
910
- // Else return a button with the label, or failing that the name of the action
1222
+ // Finally, render the action button itself
911
1223
  <span class="cstat-no" title="statement not covered" > return (</span>
912
- &lt;Button
1224
+ &lt;ActionTrigger
913
1225
  key={`action-${action.name}[${data.rowIndex}]`}
1226
+ action={action}
1227
+ ariaLabel={ariaLabel}
914
1228
  disabled={editing}
915
- marginBottom0
916
1229
  onClick={<span class="fstat-no" title="function not covered" >()</span> =&gt; (<span class="cstat-no" title="statement not covered" >actionFunction ? actionFunction() : <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >null)</span></span>}
917
1230
  to={action.to}
918
- &gt;
919
- {action.label ?? action.name}
920
- &lt;/Button&gt;
1231
+ /&gt;
921
1232
  );
922
1233
  })}
923
1234
  &lt;/div&gt;
@@ -928,7 +1239,7 @@ const ActionListFieldArray = <span class="cstat-no" title="statement not covered
928
1239
  <span class="cstat-no" title="statement not covered" > return (</span>
929
1240
  fields.map(<span class="fstat-no" title="function not covered" >(f</span>ieldName, fieldIndex) =&gt; {
930
1241
  // Fetch the content from the field Values
931
- const cd = <span class="cstat-no" title="statement not covered" >get(values, fieldName);</span>
1242
+ const cd = <span class="cstat-no" title="statement not covered" >cloneDeep(get(values, fieldName));</span>
932
1243
  <span class="cstat-no" title="statement not covered" > cd.actionListActions = actionAssigner(cd);</span>
933
1244
  <span class="cstat-no" title="statement not covered" > return { ...cd, fieldName, fieldIndex };</span>
934
1245
  })
@@ -939,6 +1250,9 @@ const ActionListFieldArray = <span class="cstat-no" title="statement not covered
939
1250
  const fieldAwareFormatter = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
940
1251
  const returnObj = <span class="cstat-no" title="statement not covered" >{};</span>
941
1252
  // For each visible field, if it's being edited then ignore passed formatters, else use them
1253
+ &nbsp;
1254
+ // Track whether we've autoFocused on a field yet
1255
+ let autoFocus = <span class="cstat-no" title="statement not covered" >true;</span>
942
1256
  <span class="cstat-no" title="statement not covered" > visibleFields.forEach(<span class="fstat-no" title="function not covered" >ke</span>y =&gt; {</span>
943
1257
  <span class="cstat-no" title="statement not covered" > returnObj[key] = <span class="fstat-no" title="function not covered" >cd</span> =&gt; {</span>
944
1258
  // Row is being edited if it has no id, or its id is in the editing string
@@ -965,27 +1279,28 @@ const ActionListFieldArray = <span class="cstat-no" title="statement not covered
965
1279
  */
966
1280
  <span class="cstat-no" title="statement not covered" > if (</span>
967
1281
  (!cd.id &amp;&amp; createFunction(cd)) ||
968
- (editFunction(cd))
1282
+ (!!cd.id &amp;&amp; editFunction(cd))
969
1283
  ) {
1284
+ const validateFunction = <span class="cstat-no" title="statement not covered" >validateFields?.[key] ? validateFields?.[key](cd) : null;</span>
1285
+ &nbsp;
970
1286
  <span class="cstat-no" title="statement not covered" > returnValue =</span>
971
1287
  fieldComponents[key] ?
972
1288
  fieldComponents[key]({
973
1289
  name: `${cd.fieldName}.${key}`
974
1290
  }) :
975
1291
  &lt;Field
976
- autoFocus={cd.fieldIndex === 0}
1292
+ autoFocus={autoFocus}
977
1293
  component={TextField}
978
1294
  marginBottom0
979
1295
  name={`${cd.fieldName}.${key}`}
980
1296
  parse={<span class="fstat-no" title="function not covered" >v </span>=&gt; <span class="cstat-no" title="statement not covered" >v}</span>
1297
+ validate={validateFunction}
981
1298
  /&gt;;
1299
+ // After first field, every other field should not autofocus
1300
+ <span class="cstat-no" title="statement not covered" > autoFocus = false;</span>
982
1301
  }
983
1302
  }
984
1303
  &nbsp;
985
- <span class="cstat-no" title="statement not covered" > if (formatter?.[key]) {</span>
986
- <span class="cstat-no" title="statement not covered" > returnValue = formatter[key](cd);</span>
987
- }
988
- &nbsp;
989
1304
  <span class="cstat-no" title="statement not covered" > return returnValue;</span>
990
1305
  };
991
1306
  });
@@ -1002,18 +1317,24 @@ const ActionListFieldArray = <span class="cstat-no" title="statement not covered
1002
1317
  &lt;/Headline&gt;
1003
1318
  {!hideCreateButton &amp;&amp;
1004
1319
  &lt;Button
1005
- disabled={editing || (!actionCalls.create &amp;&amp; !createCallback)} // DEPRECATED actionCalls
1320
+ disabled={editing || !createCallback}
1006
1321
  marginBottom0
1007
1322
  onClick={handleClickCreate}
1008
1323
  &gt;
1009
- &lt;FormattedMessage id="stripes-kint-components.actionList.create" /&gt;
1324
+ {kintIntl.formatKintMessage({
1325
+ id: 'new',
1326
+ overrideValue: labelOverrides?.new
1327
+ })}
1010
1328
  &lt;/Button&gt;
1011
1329
  }
1012
1330
  &lt;/div&gt;
1013
1331
  &lt;MultiColumnList
1014
1332
  columnMapping={{
1015
1333
  ...columnMapping,
1016
- actionListActions: &lt;FormattedMessage id="stripes-kint-components.actionList.actions" /&gt;
1334
+ actionListActions: kintIntl.formatKintMessage({
1335
+ id: 'actions',
1336
+ overrideValue: labelOverrides?.actions
1337
+ })
1017
1338
  }}
1018
1339
  columnWidths={getColumnWidths()}
1019
1340
  contentData={assignActions()}
@@ -1021,7 +1342,16 @@ const ActionListFieldArray = <span class="cstat-no" title="statement not covered
1021
1342
  actionListActions: renderActionButtons,
1022
1343
  ...fieldAwareFormatter()
1023
1344
  }}
1024
- interactive={false}
1345
+ interactive={!!onRowClick}
1346
+ onRowClick={onRowClick ? <span class="fstat-no" title="function not covered" >(e</span>, row) =&gt; {
1347
+ // Make sure we ONLY fire row click from row, and not from action buttons.
1348
+ const targetIsAction = <span class="cstat-no" title="statement not covered" >e.target.closest('[id^=action-button-parent]') !== null;</span>
1349
+ &nbsp;
1350
+ <span class="cstat-no" title="statement not covered" > if (!targetIsAction) {</span>
1351
+ const { actionListActions: _ala, ...rowWithoutActions } = <span class="cstat-no" title="statement not covered" >row;</span>
1352
+ <span class="cstat-no" title="statement not covered" > onRowClick(e, rowWithoutActions);</span>
1353
+ }
1354
+ } : null}
1025
1355
  visibleColumns={[...visibleFields, 'actionListActions']}
1026
1356
  {...restOfMclProps}
1027
1357
  /&gt;
@@ -1039,7 +1369,7 @@ export default ActionListFieldArray;
1039
1369
  <div class='footer quiet pad2 space-top1 center small'>
1040
1370
  Code coverage generated by
1041
1371
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1042
- at Thu Jun 16 2022 14:59:18 GMT+0100 (British Summer Time)
1372
+ at 2022-09-16T13:23:25.290Z
1043
1373
  </div>
1044
1374
  <script src="../prettify.js"></script>
1045
1375
  <script>