@k-int/stripes-kint-components 2.5.0 → 2.6.1

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 (330) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/es/artifacts/coverage-jest/lcov-report/block-navigation.js +1 -28
  3. package/es/artifacts/coverage-jest/lcov-report/prettify.js +0 -4
  4. package/es/artifacts/coverage-jest/lcov-report/sorter.js +1 -28
  5. package/es/index.js +7 -5
  6. package/es/lib/ActionList/ActionList.js +1 -31
  7. package/es/lib/ActionList/ActionListFieldArray.js +6 -40
  8. package/es/lib/ActionList/index.js +1 -5
  9. package/es/lib/CustomProperties/Config/CustomPropertiesLookup.js +55 -46
  10. package/es/lib/CustomProperties/Config/CustomPropertiesLookup.test.js +53 -0
  11. package/es/lib/CustomProperties/Config/CustomPropertiesSettings.js +102 -62
  12. package/es/lib/CustomProperties/Config/CustomPropertiesSettings.test.js +125 -0
  13. package/es/lib/CustomProperties/Config/CustomPropertyForm.js +131 -138
  14. package/es/lib/CustomProperties/Config/CustomPropertyForm.test.js +200 -0
  15. package/es/lib/CustomProperties/Config/CustomPropertyView.js +22 -37
  16. package/es/lib/CustomProperties/Config/CustomPropertyView.test.js +194 -0
  17. package/es/lib/CustomProperties/Config/index.js +1 -5
  18. package/es/lib/CustomProperties/Config/testResources.js +198 -0
  19. package/es/lib/CustomProperties/Edit/CustomPropertiesEdit.js +1 -30
  20. package/es/lib/CustomProperties/Edit/CustomPropertiesEdit.test.js +48 -0
  21. package/es/lib/CustomProperties/Edit/CustomPropertiesEditCtx.js +1 -34
  22. package/es/lib/CustomProperties/Edit/CustomPropertiesEditCtx.test.js +48 -0
  23. package/es/lib/CustomProperties/Edit/CustomPropertiesListField.js +1 -37
  24. package/es/lib/CustomProperties/Edit/CustomPropertiesListField.test.js +113 -0
  25. package/es/lib/CustomProperties/Edit/CustomPropertyField.js +63 -64
  26. package/es/lib/CustomProperties/Edit/CustomPropertyField.test.js +283 -0
  27. package/es/lib/CustomProperties/Edit/CustomPropertyFormCard.js +2 -30
  28. package/es/lib/CustomProperties/Edit/CustomPropertyFormCard.test.js +65 -0
  29. package/es/lib/CustomProperties/Edit/index.js +1 -5
  30. package/es/lib/CustomProperties/Edit/testResources.js +923 -0
  31. package/es/lib/CustomProperties/Filter/CustomPropertiesFilter.js +10 -35
  32. package/es/lib/CustomProperties/Filter/CustomPropertiesFilter.test.js +102 -0
  33. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterField.js +1 -34
  34. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterField.test.js +41 -0
  35. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterFieldArray.js +1 -34
  36. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterFieldArray.test.js +91 -0
  37. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterForm.js +1 -30
  38. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterForm.test.js +86 -0
  39. package/es/lib/CustomProperties/Filter/CustomPropertiesRule.js +1 -35
  40. package/es/lib/CustomProperties/Filter/CustomPropertiesRule.test.js +321 -0
  41. package/es/lib/CustomProperties/Filter/index.js +1 -5
  42. package/es/lib/CustomProperties/Filter/testResources.js +262 -0
  43. package/es/lib/CustomProperties/Filter/useOperators.js +9 -39
  44. package/es/lib/CustomProperties/Filter/useParseActiveFilterStrings.js +5 -36
  45. package/es/lib/CustomProperties/Filter/useValueProps.js +13 -35
  46. package/es/lib/CustomProperties/View/CustomPropertiesView.js +1 -30
  47. package/es/lib/CustomProperties/View/CustomPropertiesView.test.js +48 -0
  48. package/es/lib/CustomProperties/View/CustomPropertiesViewCtx.js +1 -34
  49. package/es/lib/CustomProperties/View/CustomPropertiesViewCtx.test.js +55 -0
  50. package/es/lib/CustomProperties/View/CustomPropertyCard.js +13 -32
  51. package/es/lib/CustomProperties/View/index.js +1 -5
  52. package/es/lib/CustomProperties/View/testResources.js +144 -0
  53. package/es/lib/CustomProperties/index.js +1 -5
  54. package/es/lib/EditableRefdataList/EditableRefdataList.js +163 -64
  55. package/es/lib/EditableRefdataList/index.js +1 -5
  56. package/es/lib/EditableSettingsList/EditableSettingsList.js +1 -30
  57. package/es/lib/EditableSettingsList/EditableSettingsListFieldArray.js +1 -30
  58. package/es/lib/EditableSettingsList/EditableSettingsListFieldArray.test.js +10 -35
  59. package/es/lib/EditableSettingsList/SettingField/EditSettingValue.js +1 -34
  60. package/es/lib/EditableSettingsList/SettingField/EditSettingValue.test.js +1 -34
  61. package/es/lib/EditableSettingsList/SettingField/RenderSettingValue.js +1 -34
  62. package/es/lib/EditableSettingsList/SettingField/RenderSettingValue.test.js +28 -64
  63. package/es/lib/EditableSettingsList/SettingField/SettingField.js +1 -34
  64. package/es/lib/EditableSettingsList/SettingField/SettingField.test.js +8 -33
  65. package/es/lib/EditableSettingsList/SettingField/index.js +1 -5
  66. package/es/lib/EditableSettingsList/index.js +1 -5
  67. package/es/lib/FormModal/FormModal.js +2 -31
  68. package/es/lib/FormModal/index.js +1 -5
  69. package/es/lib/NoResultsMessage/NoResultsMessage.js +1 -30
  70. package/es/lib/NoResultsMessage/index.js +1 -5
  71. package/es/lib/QueryTypedown/QueryTypedown.js +1 -34
  72. package/es/lib/QueryTypedown/index.js +1 -5
  73. package/es/lib/RefdataButtons/RefdataButtons.js +1 -34
  74. package/es/lib/RefdataButtons/index.js +1 -5
  75. package/es/lib/SASQLookupComponent/SASQLookupComponent.js +2 -34
  76. package/es/lib/SASQLookupComponent/TableBody/TableBody.js +1 -34
  77. package/es/lib/SASQLookupComponent/TableBody/index.js +1 -5
  78. package/es/lib/SASQLookupComponent/index.js +1 -5
  79. package/es/lib/SASQRoute/SASQRoute.js +1 -30
  80. package/es/lib/SASQRoute/index.js +1 -5
  81. package/es/lib/SASQViewComponent/SASQViewComponent.js +1 -34
  82. package/es/lib/SASQViewComponent/index.js +1 -5
  83. package/es/lib/SearchField/SearchField.js +1 -31
  84. package/es/lib/SearchField/index.js +1 -5
  85. package/es/lib/SettingPage/SettingPage.js +1 -34
  86. package/es/lib/SettingPage/SettingPagePane.js +1 -32
  87. package/es/lib/SettingPage/index.js +1 -5
  88. package/es/lib/Typedown/Typedown.js +1 -34
  89. package/es/lib/Typedown/index.js +1 -5
  90. package/es/lib/constants/customProperties.js +4 -39
  91. package/es/lib/constants/eventCodes.js +1 -31
  92. package/es/lib/contexts/SettingsContext.js +1 -30
  93. package/es/lib/contexts/index.js +1 -5
  94. package/es/lib/hooks/index.js +7 -5
  95. package/es/lib/hooks/settingsHooks/index.js +8 -4
  96. package/es/lib/hooks/settingsHooks/useAppSettings.js +84 -0
  97. package/es/lib/hooks/settingsHooks/useSettingSection.js +1 -34
  98. package/es/lib/hooks/settingsHooks/useSettings.js +1 -36
  99. package/es/lib/hooks/typedownHooks/index.js +1 -5
  100. package/es/lib/hooks/typedownHooks/useTypedown.js +1 -34
  101. package/es/lib/hooks/typedownHooks/useTypedownData.js +1 -34
  102. package/es/lib/hooks/typedownHooks/useTypedownToggle.js +1 -34
  103. package/es/lib/hooks/useActiveElement.js +1 -32
  104. package/es/lib/hooks/useAvailableCustomProperties.js +1 -34
  105. package/es/lib/hooks/useCustomProperties.js +4 -34
  106. package/es/lib/hooks/useHelperApp.js +1 -34
  107. package/es/lib/hooks/useInvalidateRefdata.js +1 -34
  108. package/es/lib/hooks/useKiwtFieldArray.js +1 -34
  109. package/es/lib/hooks/useKiwtSASQuery.js +9 -37
  110. package/es/lib/hooks/useLocalStorageState.js +1 -34
  111. package/es/lib/hooks/useMutateCustomProperties.js +14 -42
  112. package/es/lib/hooks/useMutateRefdataValue.js +11 -39
  113. package/es/lib/hooks/useQIndex.js +1 -34
  114. package/es/lib/hooks/useRefdata.js +1 -34
  115. package/es/lib/hooks/useTemplates.js +1 -34
  116. package/es/lib/utils/buildUrl.js +2 -31
  117. package/es/lib/utils/generateKiwtQuery.js +1 -30
  118. package/es/lib/utils/generateKiwtQueryParams.js +1 -30
  119. package/es/lib/utils/groupCustomPropertiesByCtx.js +1 -30
  120. package/es/lib/utils/highlightString.js +1 -29
  121. package/es/lib/utils/index.js +1 -5
  122. package/es/lib/utils/matchString.js +1 -30
  123. package/es/lib/utils/refdataOptions.js +1 -30
  124. package/es/lib/utils/refdataQueryKey.js +1 -30
  125. package/es/lib/utils/renderHelpText.js +1 -30
  126. package/es/lib/utils/selectorSafe.js +1 -30
  127. package/es/lib/utils/sortByLabel.js +1 -30
  128. package/es/lib/utils/toCamelCase.js +1 -30
  129. package/es/lib/utils/typedownQueryKey.js +1 -30
  130. package/es/lib/utils/validators.js +1 -32
  131. package/junit.xml +731 -38
  132. package/package.json +4 -4
  133. package/src/artifacts/coverage-jest/lcov-report/ActionList/ActionList.js.html +1 -1
  134. package/src/artifacts/coverage-jest/lcov-report/ActionList/ActionListFieldArray.js.html +1 -1
  135. package/src/artifacts/coverage-jest/lcov-report/ActionList/index.html +1 -1
  136. package/src/artifacts/coverage-jest/lcov-report/ActionList/index.js.html +1 -1
  137. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/CustomPropertiesLookup.js.html +142 -28
  138. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/CustomPropertiesSettings.js.html +93 -27
  139. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/CustomPropertyForm.js.html +308 -188
  140. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/CustomPropertyView.js.html +92 -32
  141. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/index.html +65 -50
  142. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/index.js.html +1 -1
  143. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Config/testResources.js.html +793 -0
  144. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/CustomPropertiesEdit.js.html +17 -17
  145. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/CustomPropertiesEditCtx.js.html +15 -15
  146. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/CustomPropertiesListField.js.html +1 -1
  147. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/CustomPropertyField.js.html +161 -77
  148. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/CustomPropertyFormCard.js.html +29 -26
  149. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/index.html +61 -46
  150. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/index.js.html +1 -1
  151. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Edit/testResources.js.html +892 -0
  152. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/CustomPropertiesFilter.js.html +19 -19
  153. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/CustomPropertiesFilterField.js.html +42 -42
  154. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/CustomPropertiesFilterFieldArray.js.html +23 -23
  155. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/CustomPropertiesFilterForm.js.html +19 -19
  156. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/CustomPropertiesRule.js.html +41 -41
  157. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/index.html +102 -87
  158. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/index.js.html +1 -1
  159. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/testResources.js.html +976 -0
  160. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/useOperators.js.html +58 -37
  161. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/useParseActiveFilterStrings.js.html +7 -7
  162. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/Filter/useValueProps.js.html +47 -29
  163. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/CustomPropertiesView.js.html +17 -17
  164. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/CustomPropertiesViewCtx.js.html +38 -38
  165. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/CustomPropertyCard.js.html +30 -6
  166. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/index.html +48 -33
  167. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/index.js.html +1 -1
  168. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/View/testResources.js.html +571 -0
  169. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/index.html +1 -1
  170. package/src/artifacts/coverage-jest/lcov-report/CustomProperties/index.js.html +1 -1
  171. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataList/EditableRefdataList.js.html +134 -17
  172. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataList/index.html +7 -7
  173. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataList/index.js.html +1 -1
  174. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/EditableSettingsList.js.html +27 -12
  175. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/EditableSettingsListFieldArray.js.html +3 -3
  176. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/EditSettingValue.js.html +3 -3
  177. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/RenderSettingValue.js.html +2 -2
  178. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/SettingField.js.html +3 -3
  179. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/index.html +1 -1
  180. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/index.js.html +1 -1
  181. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/index.html +13 -13
  182. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/index.js.html +1 -1
  183. package/src/artifacts/coverage-jest/lcov-report/FormModal/FormModal.js.html +32 -32
  184. package/src/artifacts/coverage-jest/lcov-report/FormModal/index.html +21 -21
  185. package/src/artifacts/coverage-jest/lcov-report/FormModal/index.js.html +1 -1
  186. package/src/artifacts/coverage-jest/lcov-report/NoResultsMessage/NoResultsMessage.js.html +1 -1
  187. package/src/artifacts/coverage-jest/lcov-report/NoResultsMessage/index.html +1 -1
  188. package/src/artifacts/coverage-jest/lcov-report/NoResultsMessage/index.js.html +1 -1
  189. package/src/artifacts/coverage-jest/lcov-report/QueryTypedown/QueryTypedown.js.html +1 -1
  190. package/src/artifacts/coverage-jest/lcov-report/QueryTypedown/index.html +1 -1
  191. package/src/artifacts/coverage-jest/lcov-report/QueryTypedown/index.js.html +1 -1
  192. package/src/artifacts/coverage-jest/lcov-report/RefdataButtons/RefdataButtons.js.html +3 -3
  193. package/src/artifacts/coverage-jest/lcov-report/RefdataButtons/index.html +1 -1
  194. package/src/artifacts/coverage-jest/lcov-report/RefdataButtons/index.js.html +1 -1
  195. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/SASQLookupComponent.js.html +6 -3
  196. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/TableBody/TableBody.js.html +1 -1
  197. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/TableBody/index.html +1 -1
  198. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/TableBody/index.js.html +1 -1
  199. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/index.html +1 -1
  200. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/index.js.html +1 -1
  201. package/src/artifacts/coverage-jest/lcov-report/SASQRoute/SASQRoute.js.html +1 -1
  202. package/src/artifacts/coverage-jest/lcov-report/SASQRoute/index.html +1 -1
  203. package/src/artifacts/coverage-jest/lcov-report/SASQRoute/index.js.html +1 -1
  204. package/src/artifacts/coverage-jest/lcov-report/SASQViewComponent/SASQViewComponent.js.html +1 -1
  205. package/src/artifacts/coverage-jest/lcov-report/SASQViewComponent/index.html +1 -1
  206. package/src/artifacts/coverage-jest/lcov-report/SASQViewComponent/index.js.html +1 -1
  207. package/src/artifacts/coverage-jest/lcov-report/SearchField/SearchField.js.html +1 -1
  208. package/src/artifacts/coverage-jest/lcov-report/SearchField/index.html +1 -1
  209. package/src/artifacts/coverage-jest/lcov-report/SearchField/index.js.html +1 -1
  210. package/src/artifacts/coverage-jest/lcov-report/SettingPage/SettingPage.js.html +9 -9
  211. package/src/artifacts/coverage-jest/lcov-report/SettingPage/SettingPagePane.js.html +10 -10
  212. package/src/artifacts/coverage-jest/lcov-report/SettingPage/index.html +18 -18
  213. package/src/artifacts/coverage-jest/lcov-report/SettingPage/index.js.html +1 -1
  214. package/src/artifacts/coverage-jest/lcov-report/Typedown/Typedown.js.html +3 -3
  215. package/src/artifacts/coverage-jest/lcov-report/Typedown/index.html +1 -1
  216. package/src/artifacts/coverage-jest/lcov-report/Typedown/index.js.html +1 -1
  217. package/src/artifacts/coverage-jest/lcov-report/constants/customProperties.js.html +32 -26
  218. package/src/artifacts/coverage-jest/lcov-report/constants/eventCodes.js.html +1 -1
  219. package/src/artifacts/coverage-jest/lcov-report/constants/index.html +13 -13
  220. package/src/artifacts/coverage-jest/lcov-report/contexts/SettingsContext.js.html +2 -2
  221. package/src/artifacts/coverage-jest/lcov-report/contexts/index.html +1 -1
  222. package/src/artifacts/coverage-jest/lcov-report/contexts/index.js.html +1 -1
  223. package/src/artifacts/coverage-jest/lcov-report/hooks/index.html +92 -92
  224. package/src/artifacts/coverage-jest/lcov-report/hooks/index.js.html +1 -1
  225. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/index.html +17 -17
  226. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/index.js.html +1 -1
  227. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/useAppSettings.js.html +292 -0
  228. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/useSettingSection.js.html +7 -7
  229. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/useSettings.js.html +8 -8
  230. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/index.html +1 -1
  231. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/index.js.html +1 -1
  232. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/useTypedown.js.html +1 -1
  233. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/useTypedownData.js.html +1 -1
  234. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/useTypedownToggle.js.html +1 -1
  235. package/src/artifacts/coverage-jest/lcov-report/hooks/useActiveElement.js.html +7 -7
  236. package/src/artifacts/coverage-jest/lcov-report/hooks/useAvailableCustomProperties.js.html +7 -7
  237. package/src/artifacts/coverage-jest/lcov-report/hooks/useCustomProperties.js.html +32 -17
  238. package/src/artifacts/coverage-jest/lcov-report/hooks/useHelperApp.js.html +7 -7
  239. package/src/artifacts/coverage-jest/lcov-report/hooks/useInvalidateRefdata.js.html +7 -7
  240. package/src/artifacts/coverage-jest/lcov-report/hooks/useKiwtFieldArray.js.html +7 -7
  241. package/src/artifacts/coverage-jest/lcov-report/hooks/useKiwtSASQuery.js.html +29 -11
  242. package/src/artifacts/coverage-jest/lcov-report/hooks/useLocalStorageState.js.html +7 -7
  243. package/src/artifacts/coverage-jest/lcov-report/hooks/useMutateCustomProperties.js.html +7 -7
  244. package/src/artifacts/coverage-jest/lcov-report/hooks/useMutateRefdataValue.js.html +7 -7
  245. package/src/artifacts/coverage-jest/lcov-report/hooks/useQIndex.js.html +7 -7
  246. package/src/artifacts/coverage-jest/lcov-report/hooks/useRefdata.js.html +9 -9
  247. package/src/artifacts/coverage-jest/lcov-report/hooks/useTemplates.js.html +7 -7
  248. package/src/artifacts/coverage-jest/lcov-report/index.html +109 -109
  249. package/src/artifacts/coverage-jest/lcov-report/utils/buildUrl.js.html +1 -1
  250. package/src/artifacts/coverage-jest/lcov-report/utils/generateKiwtQuery.js.html +2 -2
  251. package/src/artifacts/coverage-jest/lcov-report/utils/generateKiwtQueryParams.js.html +2 -2
  252. package/src/artifacts/coverage-jest/lcov-report/utils/groupCustomPropertiesByCtx.js.html +22 -22
  253. package/src/artifacts/coverage-jest/lcov-report/utils/highlightString.js.html +3 -3
  254. package/src/artifacts/coverage-jest/lcov-report/utils/index.html +31 -31
  255. package/src/artifacts/coverage-jest/lcov-report/utils/index.js.html +1 -1
  256. package/src/artifacts/coverage-jest/lcov-report/utils/matchString.js.html +3 -3
  257. package/src/artifacts/coverage-jest/lcov-report/utils/refdataOptions.js.html +1 -1
  258. package/src/artifacts/coverage-jest/lcov-report/utils/refdataQueryKey.js.html +2 -2
  259. package/src/artifacts/coverage-jest/lcov-report/utils/renderHelpText.js.html +2 -2
  260. package/src/artifacts/coverage-jest/lcov-report/utils/selectorSafe.js.html +2 -2
  261. package/src/artifacts/coverage-jest/lcov-report/utils/sortByLabel.js.html +2 -2
  262. package/src/artifacts/coverage-jest/lcov-report/utils/toCamelCase.js.html +2 -2
  263. package/src/artifacts/coverage-jest/lcov-report/utils/typedownQueryKey.js.html +2 -2
  264. package/src/artifacts/coverage-jest/lcov-report/utils/validators.js.html +46 -46
  265. package/src/artifacts/coverage-jest/lcov.info +1124 -916
  266. package/src/index.js +2 -1
  267. package/src/lib/ActionList/ActionListFieldArray.js +3 -2
  268. package/src/lib/ActionList/README.md +12 -1
  269. package/src/lib/CustomProperties/Config/CustomPropertiesLookup.js +46 -8
  270. package/src/lib/CustomProperties/Config/CustomPropertiesLookup.test.js +35 -0
  271. package/src/lib/CustomProperties/Config/CustomPropertiesSettings.js +63 -20
  272. package/src/lib/CustomProperties/Config/CustomPropertiesSettings.test.js +51 -0
  273. package/src/lib/CustomProperties/Config/CustomPropertyForm.js +172 -132
  274. package/src/lib/CustomProperties/Config/CustomPropertyForm.test.js +126 -0
  275. package/src/lib/CustomProperties/Config/CustomPropertyView.js +29 -9
  276. package/src/lib/CustomProperties/Config/CustomPropertyView.test.js +55 -0
  277. package/src/lib/CustomProperties/Config/testResources.js +236 -0
  278. package/src/lib/CustomProperties/Edit/CustomPropertiesEdit.test.js +29 -0
  279. package/src/lib/CustomProperties/Edit/CustomPropertiesEditCtx.test.js +29 -0
  280. package/src/lib/CustomProperties/Edit/CustomPropertiesListField.test.js +51 -0
  281. package/src/lib/CustomProperties/Edit/CustomPropertyField.js +56 -24
  282. package/src/lib/CustomProperties/Edit/CustomPropertyField.test.js +185 -0
  283. package/src/lib/CustomProperties/Edit/CustomPropertyFormCard.js +1 -0
  284. package/src/lib/CustomProperties/Edit/CustomPropertyFormCard.test.js +57 -0
  285. package/src/lib/CustomProperties/Edit/testResources.js +1063 -0
  286. package/src/lib/CustomProperties/Filter/CustomPropertiesFilter.js +15 -3
  287. package/src/lib/CustomProperties/Filter/CustomPropertiesFilter.test.js +43 -0
  288. package/src/lib/CustomProperties/Filter/CustomPropertiesFilterField.test.js +32 -0
  289. package/src/lib/CustomProperties/Filter/CustomPropertiesFilterFieldArray.test.js +44 -0
  290. package/src/lib/CustomProperties/Filter/CustomPropertiesFilterForm.test.js +40 -0
  291. package/src/lib/CustomProperties/Filter/CustomPropertiesRule.test.js +111 -0
  292. package/src/lib/CustomProperties/Filter/testResources.js +297 -0
  293. package/src/lib/CustomProperties/Filter/useOperators.js +7 -0
  294. package/src/lib/CustomProperties/Filter/useParseActiveFilterStrings.js +5 -2
  295. package/src/lib/CustomProperties/Filter/useValueProps.js +6 -0
  296. package/src/lib/CustomProperties/View/CustomPropertiesView.test.js +32 -0
  297. package/src/lib/CustomProperties/View/CustomPropertiesViewCtx.test.js +32 -0
  298. package/src/lib/CustomProperties/View/CustomPropertyCard.js +8 -0
  299. package/src/lib/CustomProperties/View/testResources.js +162 -0
  300. package/src/lib/EditableRefdataList/EditableRefdataList.js +97 -17
  301. package/src/lib/EditableRefdataList/README.md +3 -0
  302. package/src/lib/FormModal/FormModal.js +1 -1
  303. package/src/lib/SASQLookupComponent/SASQLookupComponent.js +1 -0
  304. package/src/lib/constants/customProperties.js +2 -0
  305. package/src/lib/hooks/README.md +28 -3
  306. package/src/lib/hooks/index.js +1 -1
  307. package/src/lib/hooks/settingsHooks/index.js +1 -0
  308. package/src/lib/hooks/settingsHooks/useAppSettings.js +69 -0
  309. package/src/lib/hooks/useCustomProperties.js +5 -0
  310. package/src/lib/hooks/useKiwtSASQuery.js +7 -1
  311. package/src/lib/hooks/useMutateCustomProperties.js +7 -3
  312. package/src/lib/hooks/useMutateRefdataValue.js +5 -2
  313. package/styles/ActionListFieldArray.css +2 -1
  314. package/styles/CustomProperties.css +17 -0
  315. package/translations/stripes-kint-components/ar.json +11 -2
  316. package/translations/stripes-kint-components/cs_CZ.json +10 -1
  317. package/translations/stripes-kint-components/de.json +11 -2
  318. package/translations/stripes-kint-components/en.json +12 -3
  319. package/translations/stripes-kint-components/es.json +11 -2
  320. package/translations/stripes-kint-components/fr.json +1 -105
  321. package/translations/stripes-kint-components/hi_IN.json +1 -105
  322. package/translations/stripes-kint-components/hu.json +11 -2
  323. package/translations/stripes-kint-components/it_IT.json +11 -2
  324. package/translations/stripes-kint-components/ja.json +10 -1
  325. package/translations/stripes-kint-components/ko.json +11 -2
  326. package/translations/stripes-kint-components/pl.json +11 -2
  327. package/translations/stripes-kint-components/pt_PT.json +11 -2
  328. package/translations/stripes-kint-components/ru.json +11 -2
  329. package/translations/stripes-kint-components/sv.json +11 -2
  330. package/translations/stripes-kint-components/zh_CN.json +10 -1
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import '@folio/stripes-erm-components/test/jest/__mock__';
3
+ import { waitFor } from '@testing-library/react';
4
+ import { MemoryRouter } from 'react-router-dom';
5
+ import { renderWithKintHarness } from '../../../../test/jest/helpers';
6
+
7
+ import { contexts, customProperties, labelOverrides } from './testResources';
8
+ import CustomPropertiesView from './CustomPropertiesView';
9
+
10
+ jest.mock('./CustomPropertiesViewCtx', () => () => <div>CustomPropertiesViewCtx</div>);
11
+
12
+ describe('CustomPropertiesView', () => {
13
+ let renderComponent;
14
+ beforeEach(() => {
15
+ renderComponent = renderWithKintHarness(
16
+ <MemoryRouter>
17
+ <CustomPropertiesView
18
+ contexts={contexts}
19
+ customProperties={customProperties}
20
+ customPropertiesEndpoint="erm/custprops"
21
+ id="supplementaryProperties"
22
+ labelOverrides={labelOverrides}
23
+ />
24
+ </MemoryRouter>
25
+ );
26
+ });
27
+
28
+ it('renders CustomPropertiesViewCtx component ', () => {
29
+ const { getByText } = renderComponent;
30
+ waitFor(() => expect(getByText('CustomPropertiesViewCtx')).toBeInTheDocument());
31
+ });
32
+ });
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import '@folio/stripes-erm-components/test/jest/__mock__';
3
+ import { MemoryRouter } from 'react-router-dom';
4
+ import { waitFor } from '@testing-library/react';
5
+ import { renderWithKintHarness } from '../../../../test/jest/helpers';
6
+
7
+ import { data } from './testResources';
8
+ import CustomPropertiesViewCtx from './CustomPropertiesViewCtx';
9
+
10
+ jest.mock('../../hooks', () => ({
11
+ useCustomProperties: () => [],
12
+ }));
13
+
14
+ jest.mock('./CustomPropertyCard', () => () => <div>CustomPropertyCard</div>);
15
+
16
+ describe('CustomPropertiesViewCtx', () => {
17
+ let renderComponent;
18
+ beforeEach(() => {
19
+ renderComponent = renderWithKintHarness(
20
+ <MemoryRouter>
21
+ <CustomPropertiesViewCtx
22
+ {...data}
23
+ />
24
+ </MemoryRouter>
25
+ );
26
+ });
27
+
28
+ it('renders CustomPropertyCard component ', () => {
29
+ const { getByText } = renderComponent;
30
+ waitFor(() => expect(getByText('CustomPropertyCard')).toBeInTheDocument());
31
+ });
32
+ });
@@ -7,6 +7,7 @@ import {
7
7
  FormattedUTCDate,
8
8
  InfoPopover,
9
9
  KeyValue,
10
+ List,
10
11
  NoValue,
11
12
  Row,
12
13
  } from '@folio/stripes/components';
@@ -69,6 +70,13 @@ const CustomPropertyCard = ({
69
70
  }
70
71
 
71
72
  switch (customPropertyDefinition.type) {
73
+ case CUSTPROP_TYPES.MULTI_REFDATA_CLASS_NAME:
74
+ return (
75
+ <List
76
+ items={customProperty.value?.map((item) => item?.label ?? item?.value)}
77
+ listStyle="bullets"
78
+ />
79
+ );
72
80
  case CUSTPROP_TYPES.REFDATA_CLASS_NAME:
73
81
  return customProperty.value?.label ?? customProperty.value?.value;
74
82
  case CUSTPROP_TYPES.DECIMAL_CLASS_NAME:
@@ -0,0 +1,162 @@
1
+ const contexts = [
2
+ 'isNull',
3
+ 'OpenAccess'
4
+ ];
5
+
6
+ const customProperties = {
7
+ 'AuthorIdentification': [{
8
+ 'id': 2,
9
+ 'publicNote': 'public note',
10
+ 'note': 'internal note',
11
+ 'internal': true,
12
+ 'value': {
13
+ 'id': '2c91809c813e654501813e6c3bc50061',
14
+ 'value': 'orcid',
15
+ 'label': 'ORCID'
16
+ },
17
+ 'type': {
18
+ 'id': '2c91809c813e654501813e6c3c6a0066',
19
+ 'retired': false,
20
+ 'ctx': 'OpenAccess',
21
+ 'name': 'AuthorIdentification',
22
+ 'primary': true,
23
+ 'category': {
24
+ 'id': '2c91809c813e654501813e6c3bbb005e',
25
+ 'desc': 'AuthIdent',
26
+ 'internal': false,
27
+ 'values': [{
28
+ 'id': '2c91809c813e654501813e6c3bc50061',
29
+ 'value': 'orcid',
30
+ 'label': 'ORCID'
31
+ },
32
+ {
33
+ 'id': '2c91809c813e654501813e6c3bcf0064',
34
+ 'value': 'ringgold_id',
35
+ 'label': 'Ringgold ID'
36
+ },
37
+ {
38
+ 'id': '2c91809c813e654501813e6c3bcc0063',
39
+ 'value': 'over_ip_range',
40
+ 'label': 'Over IP Range'
41
+ },
42
+ {
43
+ 'id': '2c91809c813e654501813e6c3bd20065',
44
+ 'value': 'ror_id',
45
+ 'label': 'ROR ID'
46
+ },
47
+ {
48
+ 'id': '2c91809c813e654501813e6c3bbd005f',
49
+ 'value': 'other',
50
+ 'label': 'Other'
51
+ },
52
+ {
53
+ 'id': '2c91809c813e654501813e6c3bc90062',
54
+ 'value': 'over_institute',
55
+ 'label': 'Over Institute'
56
+ },
57
+ {
58
+ 'id': '2c91809c813e654501813e6c3bc20060',
59
+ 'value': 'email_domain',
60
+ 'label': 'Email Domain'
61
+ }
62
+ ]
63
+ },
64
+ 'defaultInternal': true,
65
+ 'label': 'Author Identification',
66
+ 'description': 'Author Identification',
67
+ 'weight': 0,
68
+ 'type': 'com.k_int.web.toolkit.custprops.types.CustomPropertyRefdata'
69
+ }
70
+ }]
71
+ };
72
+
73
+
74
+ const labelOverrides = {
75
+ 'defaultTitle': 'ƒ defaultTitle() {}',
76
+ 'noContext': '<Memo />',
77
+ 'OpenAccess': '<Memo />',
78
+ 'retiredName': 'ƒ retiredName() {}'
79
+ };
80
+
81
+ const data = {
82
+ 'ctx': 'isNull',
83
+ 'customProperties': {
84
+ 'AuthorIdentification': [{
85
+ 'id': 2,
86
+ 'internal': true,
87
+ 'value': {
88
+ 'id': '2c91809c815d4e6d01815d55adfd0060',
89
+ 'value': 'email_domain',
90
+ 'label': 'Email Domain'
91
+ },
92
+ 'type': {
93
+ 'id': '2c91809c815d4e6d01815d55af070066',
94
+ 'retired': false,
95
+ 'ctx': 'OpenAccess',
96
+ 'name': 'AuthorIdentification',
97
+ 'primary': true,
98
+ 'category': {
99
+ 'id': '2c91809c815d4e6d01815d55adf7005e',
100
+ 'desc': 'AuthIdent',
101
+ 'internal': false,
102
+ 'values': [{
103
+ 'id': '2c91809c815d4e6d01815d55adf9005f',
104
+ 'value': 'other',
105
+ 'label': 'Other'
106
+ },
107
+ {
108
+ 'id': '2c91809c815d4e6d01815d55ae080063',
109
+ 'value': 'over_ip_range',
110
+ 'label': 'Over IP Range'
111
+ },
112
+ {
113
+ 'id': '2c91809c815d4e6d01815d55ae050062',
114
+ 'value': 'over_institute',
115
+ 'label': 'Over Institute'
116
+ },
117
+ {
118
+ 'id': '2c91809c815d4e6d01815d55ae010061',
119
+ 'value': 'orcid',
120
+ 'label': 'ORCID'
121
+ },
122
+ {
123
+ 'id': '2c91809c815d4e6d01815d55ae0c0064',
124
+ 'value': 'ringgold_id',
125
+ 'label': 'Ringgold ID'
126
+ },
127
+ {
128
+ 'id': '2c91809c815d4e6d01815d55ae0f0065',
129
+ 'value': 'ror_id',
130
+ 'label': 'ROR ID'
131
+ },
132
+ {
133
+ 'id': '2c91809c815d4e6d01815d55adfd0060',
134
+ 'value': 'email_domain',
135
+ 'label': 'Email Domain'
136
+ }
137
+ ]
138
+ },
139
+ 'defaultInternal': true,
140
+ 'label': 'Author Identification',
141
+ 'description': 'Author Identification',
142
+ 'weight': 0,
143
+ 'type': 'com.k_int.web.toolkit.custprops.types.CustomPropertyRefdata'
144
+ }
145
+ }]
146
+ },
147
+ 'customPropertiesEndpoint': 'erm/custprops',
148
+ 'id': 'supplementaryProperties',
149
+ 'labelOverrides': {
150
+ 'defaultTitle': 'ƒ defaultTitle() {}',
151
+ 'noContext': '<Memo />',
152
+ 'OpenAccess': '<Memo />',
153
+ 'retiredName': 'ƒ retiredName() {}'
154
+ }
155
+ };
156
+
157
+ export {
158
+ contexts,
159
+ customProperties,
160
+ labelOverrides,
161
+ data
162
+ };
@@ -1,19 +1,34 @@
1
- import React, { useEffect, useState } from 'react';
1
+ import React, { useEffect, useState, useContext } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { FormattedMessage } from 'react-intl';
3
+ import { FormattedMessage, useIntl } from 'react-intl';
4
+
5
+ import { ConfirmationModal } from '@folio/stripes/components';
6
+ import { CalloutContext } from '@folio/stripes/core';
4
7
 
5
8
  import { useMutateRefdataValue, useRefdata } from '../hooks';
6
9
 
7
10
  import ActionList from '../ActionList';
8
11
 
9
12
  const propTypes = {
13
+ afterQueryCalls: PropTypes.object,
14
+ catchQueryCalls: PropTypes.object,
10
15
  desc: PropTypes.string,
11
16
  label: PropTypes.string,
17
+ labelOverrides: PropTypes.object,
12
18
  refdataEndpoint: PropTypes.string
13
19
  };
14
20
 
15
- const EditableRefdataList = ({ desc, label, refdataEndpoint }) => {
21
+ const EditableRefdataList = ({
22
+ afterQueryCalls,
23
+ catchQueryCalls,
24
+ desc,
25
+ label,
26
+ labelOverrides, // An object containing translation alternatives
27
+ refdataEndpoint
28
+ }) => {
16
29
  /* A component that allows for editing of refdata values */
30
+ const callout = useContext(CalloutContext);
31
+ const intl = useIntl();
17
32
 
18
33
  // fetch refdata values
19
34
  const { data: { 0: refdata } = {}, isLoading: isRefdataLoading } = useRefdata({
@@ -23,6 +38,11 @@ const EditableRefdataList = ({ desc, label, refdataEndpoint }) => {
23
38
  });
24
39
 
25
40
  const [contentData, setContentData] = useState([]);
41
+ const [deleteModal, setDeleteModal] = useState({
42
+ visible: false,
43
+ refdata: null,
44
+ });
45
+
26
46
  const sortByLabel = (a, b) => (a.label.localeCompare(b.label));
27
47
 
28
48
  useEffect(() => {
@@ -34,8 +54,38 @@ const EditableRefdataList = ({ desc, label, refdataEndpoint }) => {
34
54
  // Edit and Create will use the same PUT mutation
35
55
  const { delete: deleteRefdataValue, put: editRefdataValue } = useMutateRefdataValue({
36
56
  afterQueryCalls: {
37
- delete: json => setContentData(json?.values?.sort(sortByLabel) ?? []),
38
- put: json => setContentData(json?.values?.sort(sortByLabel) ?? [])
57
+ delete: json => {
58
+ setContentData(json?.values?.sort(sortByLabel) ?? []);
59
+ if (afterQueryCalls?.delete) {
60
+ afterQueryCalls.delete(json);
61
+ }
62
+ },
63
+ put: json => {
64
+ setContentData(json?.values?.sort(sortByLabel) ?? []);
65
+ if (afterQueryCalls?.put) {
66
+ afterQueryCalls.put(json);
67
+ }
68
+ }
69
+ },
70
+ catchQueryCalls: {
71
+ // Default delete behaviour is to fire a callout, either with kint-components default message
72
+ // or one provided in labelOverrides, which is passed the error message and refdata in question
73
+ delete: async (err) => {
74
+ const errorResp = await err.response.json();
75
+ callout.sendCallout({
76
+ message: labelOverrides?.deleteError ? labelOverrides.deleteError(errorResp?.message, deleteModal?.refdata) : (
77
+ <FormattedMessage
78
+ id="stripes-kint-components.editableRefdataList.deleteLabel.errorMessage"
79
+ values={{
80
+ label: deleteModal?.refdata?.label,
81
+ error: errorResp?.message
82
+ }}
83
+ />
84
+ ),
85
+ type: 'error',
86
+ });
87
+ },
88
+ ...catchQueryCalls // override defaults here
39
89
  },
40
90
  endpoint: refdataEndpoint,
41
91
  id: refdata?.id,
@@ -60,7 +110,11 @@ const EditableRefdataList = ({ desc, label, refdataEndpoint }) => {
60
110
  name: 'edit',
61
111
  label: <FormattedMessage id="stripes-kint-components.editableRefdataList.edit" />,
62
112
  icon: 'edit',
63
- callback: (data) => editRefdataValue(data)
113
+ callback: (data) => editRefdataValue(data),
114
+ ariaLabel: (data) => intl.formatMessage(
115
+ { id: 'stripes-kint-components.editableRefdataList.editAriaLabel' },
116
+ { label: data?.label }
117
+ ),
64
118
  }
65
119
  ];
66
120
 
@@ -69,30 +123,56 @@ const EditableRefdataList = ({ desc, label, refdataEndpoint }) => {
69
123
  name: 'delete',
70
124
  label: <FormattedMessage id="stripes-kint-components.editableRefdataList.delete" />,
71
125
  icon: 'trash',
72
- callback: (data) => deleteRefdataValue(data.id)
126
+ callback: (data) => setDeleteModal({ visible: true, refdata: data }),
127
+ ariaLabel: (data) => intl.formatMessage(
128
+ { id: 'stripes-kint-components.editableRefdataList.deleteAriaLabel' },
129
+ { label: data?.label }
130
+ ),
73
131
  });
74
132
  }
75
133
  return actionArray;
76
134
  };
77
135
 
78
136
  return (
79
- <ActionList
80
- actionAssigner={actionAssigner}
81
- columnMapping={{
137
+ <>
138
+ <ActionList
139
+ actionAssigner={actionAssigner}
140
+ columnMapping={{
82
141
  label: <FormattedMessage id="stripes-kint-components.editableRefdataList.label" />,
83
142
  value: <FormattedMessage id="stripes-kint-components.editableRefdataList.value" />
84
143
  }}
85
- contentData={contentData}
86
- creatableFields={{
144
+ contentData={contentData}
145
+ creatableFields={{
87
146
  value: () => false
88
147
  }}
89
- createCallback={refdata?.internal ? null : (data) => editRefdataValue(data)}
90
- editableFields={{
148
+ createCallback={refdata?.internal ? null : (data) => editRefdataValue(data)}
149
+ editableFields={{
91
150
  value: () => false
92
151
  }}
93
- label={label}
94
- visibleFields={['label', 'value']}
95
- />
152
+ label={label}
153
+ visibleFields={['label', 'value']}
154
+ />
155
+ <ConfirmationModal
156
+ confirmLabel={
157
+ <FormattedMessage id="stripes-kint-components.editableRefdataList.delete" />
158
+ }
159
+ heading={
160
+ <FormattedMessage id="stripes-kint-components.editableRefdataList.deleteLabel" />
161
+ }
162
+ message={
163
+ <FormattedMessage
164
+ id="stripes-kint-components.editableRefdataList.deleteLabel.confirmMessage"
165
+ values={{ name: deleteModal?.refdata?.label }}
166
+ />
167
+ }
168
+ onCancel={() => setDeleteModal({ visible: false, refdata: null })}
169
+ onConfirm={() => {
170
+ deleteRefdataValue(deleteModal?.refdata?.id);
171
+ setDeleteModal({ visible: false, refdata: null });
172
+ }}
173
+ open={deleteModal?.visible}
174
+ />
175
+ </>
96
176
  );
97
177
  };
98
178
 
@@ -17,5 +17,8 @@ import { EditableRefdataList } from '@k-int/stripes-kint-components';
17
17
 
18
18
  Name | Type | Description | default | required
19
19
  --- | --- | --- | --- | ---
20
+ afterQueryCalls | object | An object of the form `{delete: func1, put: func2}` where `func1`/`func2` are functions to be called after the `delete`/`put`. | | ✕ |
21
+ catchQueryCalls | object | An object of the form `{delete: func1, put: func2}` where `func1`/`func2` are functions to be called with a HTTPError object when the `delete`/`put` calls fail. | `{delete: <Fires a callout of the format "<strong>Error: {label}</strong> was not deleted. {error}">}` | | ✕ |
22
+ labelOverrides | object | An object containing translation overrides. Currently accepts: `deleteError: (err, object) => { ... output a callout message }`. | | ✕ |
20
23
  desc | String | A string corresponding to the refdataValue category, usually of the form `DomainClass.Field`. See `useRefdata` for more information. | | ✕ |
21
24
  endpoint | String | A string containing the path to the endpoint for refdata | | ✓ |
@@ -40,7 +40,7 @@ const FormModal = ({
40
40
  >
41
41
  {
42
42
  labelOverrides.save ??
43
- <FormattedMessage id="stripes-kint-components.save" />
43
+ <FormattedMessage id="stripes-kint-components.saveAndClose" />
44
44
  }
45
45
  </Button>
46
46
  <Button
@@ -137,6 +137,7 @@ const SASQLookupComponent = (props) => {
137
137
  <>
138
138
  <SearchField
139
139
  autoFocus
140
+ id={`sasq-search-field-${id}`}
140
141
  name="query"
141
142
  onChange={e => {
142
143
  if (e.target?.value) {
@@ -5,6 +5,8 @@ export const CONTAINER_CLASS_NAME = 'com.k_int.web.toolkit.custprops.types.Custo
5
5
  export const DECIMAL_CLASS_NAME = 'com.k_int.web.toolkit.custprops.types.CustomPropertyDecimal';
6
6
  export const INTEGER_CLASS_NAME = 'com.k_int.web.toolkit.custprops.types.CustomPropertyInteger';
7
7
  export const REFDATA_CLASS_NAME = 'com.k_int.web.toolkit.custprops.types.CustomPropertyRefdata';
8
+ export const MULTI_REFDATA_CLASS_NAME = 'com.k_int.web.toolkit.custprops.types.CustomPropertyMultiRefdata';
8
9
  export const REFDATA_DEFINITION_CLASS_NAME = 'com.k_int.web.toolkit.custprops.types.CustomPropertyRefdataDefinition';
9
10
  export const TEXT_CLASS_NAME = 'com.k_int.web.toolkit.custprops.types.CustomPropertyText';
10
11
  export const DATE_CLASS_NAME = 'com.k_int.web.toolkit.custprops.types.CustomPropertyLocalDate';
12
+
@@ -39,8 +39,9 @@ const { delete } = useMutateRefdataValue({
39
39
  ### Props
40
40
  Name | Type | Description | default | required
41
41
  --- | --- | --- | --- | ---
42
- afterQueryCalls | object | An object of the form `{delete: func1, put: func2}` where `func1`/`func2` are functions to be called after the `delete`/`put` | | ✓ |
43
- endpoint | string | The refdata endpoint | | |
42
+ afterQueryCalls | object | An object of the form `{delete: func1, put: func2}` where `func1`/`func2` are functions to be called after the `delete`/`put`. This is for ease of use, you can alternatively manually use a `.then()` on the functions returned from this hook. | | ✓ |
43
+ catchQueryCalls | object | An object of the form `{delete: func1, put: func2}` where `func1`/`func2` are functions to be called with a HTTPError object when the `delete`/`put` calls fail. This is for ease of use, you can alternatively manually use a `.catch()` on the functions returned from this hook. | | |
44
+ endpoint | string | The refdata endpoint | | ✕ |
44
45
  id | string | The id of the refdata whose values are to be mutated | | ✕ |
45
46
  queryParams | object | An object of the form `{delete: obj1, put: obj2}`, where `obj1`/`obj2` are set of queryParameters to hand to react-query's `useMutation` for the delete/put operations respectively | | ✕ |
46
47
  returnQueryObject | object | An object of the form `{delete: bool1, put: bool2}` containing switches to return the entirety of the queryObject from useMutation for `delete` and `put` respectively. If `false`, the mutateAsync function will be destructured, if `true` the return will be the full object returned by react-query's `useMutation` | {put: false, delete: false} | ✕ |
@@ -287,4 +288,28 @@ export default Test
287
288
  Name | Type | Description | default | required
288
289
  --- | --- | --- | --- | ---
289
290
  name | String | The name of the fieldArray, used to hook into the final form state for that field. | | ✓ |
290
- submitWholeDeletedObject | bool | a boolean flag to ensure that a deleted object is sent whole to the backend, rather than just as an id. | false | ✕ |
291
+ submitWholeDeletedObject | bool | a boolean flag to ensure that a deleted object is sent whole to the backend, rather than just as an id. | false | ✕ |
292
+
293
+ ## useAppSettings
294
+ A hook for fetching AppSetting values
295
+ ### Basic usage
296
+ ```
297
+ import { useAppSettings } from '@k-int/stripes-kint-components'
298
+ ...
299
+ const data = useAppSettings({
300
+ endpoint: 'oa/settings/appSettings'
301
+ });
302
+ ...
303
+ ```
304
+
305
+ This will return a list of AppSettings. If a `keyName` is passed, this will instead return a single AppSetting object.
306
+
307
+ ### Props
308
+ Name | Type | Description | default | required
309
+ --- | --- | --- | --- | ---
310
+ endpoint | string | The endpoint to fetch AppSettings from | | ✓ |
311
+ sectionName | string | A string representing a section of AppSettings to filter on | | ✕ |
312
+ keyName | string | A string representing an individual key of an AppSettings to filter on. The presence of this prop will change the output shape from Array to Object. It is not strictly necessary to use `keyName` in conjunction with `sectionName`, but keys are not guaranteed to be unique between sections. In addition it may marginally improve performance to use both, even if a key is unique, so it is recommended. | | ✕ |
313
+ queryParams | object | A set of queryParameters to hand to react-query's `useQuery` | | ✕ |
314
+ returnQueryObject | bool | A switch to return the entirety of the queryObject from useQuery. If `false`, the data will be destructured, if `true` the return will be the full object returned by react-query's `useQuery` | false | ✕ |
315
+ options | object | An object of the shape SASQ_MAP (See generateKiwtQuery) to pass to the generateKiwtQuery inside. The default | `{perPage: 100, stats: false, filters: [{path: 'section', value: sectionName }, {path: 'key', value: keyName }]}` | ✕ |
@@ -6,7 +6,7 @@ export { default as useKiwtSASQuery } from './useKiwtSASQuery';
6
6
  export { default as useHelperApp } from './useHelperApp';
7
7
  export { default as useLocalStorageState } from './useLocalStorageState';
8
8
  export { default as useQIndex } from './useQIndex';
9
- export { useSettings, useSettingSection } from './settingsHooks';
9
+ export { useSettings, useSettingSection, useAppSettings } from './settingsHooks';
10
10
  export { default as useKiwtFieldArray } from './useKiwtFieldArray';
11
11
  export { default as useCustomProperties } from './useCustomProperties';
12
12
  export { default as useMutateCustomProperties } from './useMutateCustomProperties';
@@ -1,2 +1,3 @@
1
1
  export { default as useSettings } from './useSettings';
2
2
  export { default as useSettingSection } from './useSettingSection';
3
+ export { default as useAppSettings } from './useAppSettings';
@@ -0,0 +1,69 @@
1
+ import { useQuery } from 'react-query';
2
+ import { useOkapiKy } from '@folio/stripes/core';
3
+ import { generateKiwtQueryParams } from '../../utils';
4
+
5
+ const useAppSettings = ({
6
+ endpoint,
7
+ keyName,
8
+ options,
9
+ returnQueryObject = false,
10
+ sectionName,
11
+ queryParams
12
+ }) => {
13
+ const ky = useOkapiKy();
14
+
15
+ const defaultQueryParamObject = {
16
+ perPage: 100,
17
+ stats: false,
18
+ };
19
+
20
+ const namespaceArray = [endpoint];
21
+
22
+ if (sectionName) {
23
+ defaultQueryParamObject.filters = [
24
+ ...(defaultQueryParamObject.filters ?? []),
25
+ {
26
+ path: 'section',
27
+ value: sectionName
28
+ }
29
+ ];
30
+
31
+ namespaceArray.push(sectionName);
32
+ }
33
+
34
+ if (keyName) {
35
+ defaultQueryParamObject.filters = [
36
+ ...(defaultQueryParamObject.filters ?? []),
37
+ {
38
+ path: 'key',
39
+ value: keyName
40
+ }
41
+ ];
42
+
43
+ defaultQueryParamObject.perPage = 1;
44
+
45
+ namespaceArray.push(keyName);
46
+ }
47
+
48
+ const queryParamArray = generateKiwtQueryParams(options ?? defaultQueryParamObject, {});
49
+ namespaceArray.push(queryParamArray);
50
+
51
+ const queryObject = useQuery(
52
+ namespaceArray,
53
+ () => ky(`${endpoint}?${queryParamArray?.join('&')}`).json(),
54
+ queryParams
55
+ );
56
+
57
+
58
+ if (returnQueryObject) {
59
+ return queryObject;
60
+ }
61
+
62
+ if ((queryParams ?? defaultQueryParamObject)?.perPage && (queryParams ?? defaultQueryParamObject)?.perPage === 1) {
63
+ return queryObject?.data?.[0] ?? {};
64
+ }
65
+
66
+ return queryObject?.data ?? [];
67
+ };
68
+
69
+ export default useAppSettings;
@@ -22,6 +22,11 @@ const useCustomProperties = ({
22
22
  filterKeys: {
23
23
  ContextKey: 'ctx'
24
24
  },
25
+ sort: [
26
+ {
27
+ path: 'weight'
28
+ }
29
+ ],
25
30
  filters: [],
26
31
  stats: false,
27
32
  max: 100,
@@ -5,8 +5,14 @@ import buildUrl from '../utils/buildUrl';
5
5
  import useQindex from './useQIndex';
6
6
 
7
7
  const locationQuerySetter = ({ location, history, nsValues }) => {
8
+ const { pathname, search } = location;
8
9
  const url = buildUrl(location, nsValues);
9
- history.push(url);
10
+
11
+ // Do not push to history if the url didn't change
12
+ // https://issues.folio.org/browse/STSMACOM-637
13
+ if (`${pathname}${search}` !== url) {
14
+ history.push(url);
15
+ }
10
16
  };
11
17
 
12
18
  const useKiwtSASQuery = () => {
@@ -4,6 +4,7 @@ import { useOkapiKy } from '@folio/stripes/core';
4
4
 
5
5
  const useMutateCustomProperties = ({
6
6
  afterQueryCalls,
7
+ catchQueryCalls,
7
8
  endpoint,
8
9
  id,
9
10
  queryParams,
@@ -20,21 +21,24 @@ const useMutateCustomProperties = ({
20
21
  const deleteQueryObject = useMutation(
21
22
  ['stripes-kint-components', 'useMutateCustomProperties', 'delete', id],
22
23
  async () => ky.delete(`${endpoint}/${id}`).json()
23
- .then(afterQueryCalls?.delete),
24
+ .then(afterQueryCalls?.delete)
25
+ .catch(catchQueryCalls?.delete),
24
26
  queryParams?.delete
25
27
  );
26
28
 
27
29
  const putQueryObject = useMutation(
28
30
  ['stripes-kint-components', 'useMutateCustomProperties', 'put', id],
29
31
  async (data) => ky.put(`${endpoint}/${id}`, { json: data }).json()
30
- .then(afterQueryCalls?.put),
32
+ .then(afterQueryCalls?.put)
33
+ .catch(catchQueryCalls?.put),
31
34
  queryParams?.put
32
35
  );
33
36
 
34
37
  const postQueryObject = useMutation(
35
38
  ['stripes-kint-components', 'useMutateCustomProperties', 'post'],
36
39
  async (data) => ky.post(`${endpoint}`, { json: data }).json()
37
- .then(afterQueryCalls?.post),
40
+ .then(afterQueryCalls?.post)
41
+ .catch(catchQueryCalls?.post),
38
42
  queryParams?.post
39
43
  );
40
44