@k-int/stripes-kint-components 5.30.0 → 5.31.0

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 (278) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/es/index.js +8 -0
  3. package/es/lib/ButtonTypedown/ButtonTypedown.js +58 -0
  4. package/es/lib/ButtonTypedown/index.js +13 -0
  5. package/es/lib/Typedown/Typedown.js +85 -44
  6. package/es/lib/hooks/typedownHooks/useTypedown.js +104 -81
  7. package/package.json +1 -1
  8. package/src/artifacts/coverage-jest/ActionList/ActionList.js.html +1 -1
  9. package/src/artifacts/coverage-jest/ActionList/ActionListFieldArray.js.html +1 -1
  10. package/src/artifacts/coverage-jest/ActionList/index.html +1 -1
  11. package/src/artifacts/coverage-jest/ActionList/index.js.html +1 -1
  12. package/src/artifacts/coverage-jest/ButtonTypedown/ButtonTypedown.js.html +241 -0
  13. package/src/artifacts/coverage-jest/ButtonTypedown/index.html +131 -0
  14. package/src/artifacts/coverage-jest/ButtonTypedown/index.js.html +88 -0
  15. package/src/artifacts/coverage-jest/ComboButton/ComboButton.js.html +1 -1
  16. package/src/artifacts/coverage-jest/ComboButton/index.html +1 -1
  17. package/src/artifacts/coverage-jest/ComboButton/index.js.html +1 -1
  18. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertiesLookup.js.html +1 -1
  19. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertiesSettings.js.html +1 -1
  20. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertyForm.js.html +1 -1
  21. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertyView.js.html +1 -1
  22. package/src/artifacts/coverage-jest/CustomProperties/Config/index.html +1 -1
  23. package/src/artifacts/coverage-jest/CustomProperties/Config/index.js.html +1 -1
  24. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesEdit.js.html +1 -1
  25. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesEditCtx.js.html +1 -1
  26. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesListField.js.html +1 -1
  27. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertyField.js.html +1 -1
  28. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertyFormCard.js.html +1 -1
  29. package/src/artifacts/coverage-jest/CustomProperties/Edit/index.html +1 -1
  30. package/src/artifacts/coverage-jest/CustomProperties/Edit/index.js.html +1 -1
  31. package/src/artifacts/coverage-jest/CustomProperties/Edit/testResources.js.html +1 -1
  32. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilter.js.html +1 -1
  33. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterField.js.html +1 -1
  34. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterFieldArray.js.html +1 -1
  35. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterForm.js.html +1 -1
  36. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesRule.js.html +1 -1
  37. package/src/artifacts/coverage-jest/CustomProperties/Filter/index.html +1 -1
  38. package/src/artifacts/coverage-jest/CustomProperties/Filter/index.js.html +1 -1
  39. package/src/artifacts/coverage-jest/CustomProperties/Filter/testResources.js.html +1 -1
  40. package/src/artifacts/coverage-jest/CustomProperties/Filter/useOperators.js.html +1 -1
  41. package/src/artifacts/coverage-jest/CustomProperties/Filter/useParseActiveFilterStrings.js.html +1 -1
  42. package/src/artifacts/coverage-jest/CustomProperties/Filter/useValueProps.js.html +1 -1
  43. package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertiesView.js.html +1 -1
  44. package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertiesViewCtx.js.html +1 -1
  45. package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertyCard.js.html +1 -1
  46. package/src/artifacts/coverage-jest/CustomProperties/View/index.html +1 -1
  47. package/src/artifacts/coverage-jest/CustomProperties/View/index.js.html +1 -1
  48. package/src/artifacts/coverage-jest/CustomProperties/View/testResources.js.html +1 -1
  49. package/src/artifacts/coverage-jest/CustomProperties/index.html +1 -1
  50. package/src/artifacts/coverage-jest/CustomProperties/index.js.html +1 -1
  51. package/src/artifacts/coverage-jest/CycleButton/CycleButton.js.html +1 -1
  52. package/src/artifacts/coverage-jest/CycleButton/index.html +1 -1
  53. package/src/artifacts/coverage-jest/CycleButton/index.js.html +1 -1
  54. package/src/artifacts/coverage-jest/FieldLabel/FieldLabel.js.html +1 -1
  55. package/src/artifacts/coverage-jest/FieldLabel/index.html +1 -1
  56. package/src/artifacts/coverage-jest/FieldLabel/index.js.html +1 -1
  57. package/src/artifacts/coverage-jest/FormModal/FormModal.js.html +1 -1
  58. package/src/artifacts/coverage-jest/FormModal/index.html +1 -1
  59. package/src/artifacts/coverage-jest/FormModal/index.js.html +1 -1
  60. package/src/artifacts/coverage-jest/FormattedKintMessage/FormattedKintMessage.js.html +1 -1
  61. package/src/artifacts/coverage-jest/FormattedKintMessage/index.html +1 -1
  62. package/src/artifacts/coverage-jest/FormattedKintMessage/index.js.html +1 -1
  63. package/src/artifacts/coverage-jest/IconSelect/IconSelect.js.html +1 -1
  64. package/src/artifacts/coverage-jest/IconSelect/index.html +1 -1
  65. package/src/artifacts/coverage-jest/IconSelect/index.js.html +1 -1
  66. package/src/artifacts/coverage-jest/NoResultsMessage/NoResultsMessage.js.html +1 -1
  67. package/src/artifacts/coverage-jest/NoResultsMessage/index.html +1 -1
  68. package/src/artifacts/coverage-jest/NoResultsMessage/index.js.html +1 -1
  69. package/src/artifacts/coverage-jest/NumberField/NumberField.js.html +1 -1
  70. package/src/artifacts/coverage-jest/NumberField/index.html +1 -1
  71. package/src/artifacts/coverage-jest/NumberField/index.js.html +1 -1
  72. package/src/artifacts/coverage-jest/QueryTypedown/QueryTypedown.js.html +1 -1
  73. package/src/artifacts/coverage-jest/QueryTypedown/index.html +1 -1
  74. package/src/artifacts/coverage-jest/QueryTypedown/index.js.html +1 -1
  75. package/src/artifacts/coverage-jest/RefdataButtons/RefdataButtons.js.html +1 -1
  76. package/src/artifacts/coverage-jest/RefdataButtons/index.html +1 -1
  77. package/src/artifacts/coverage-jest/RefdataButtons/index.js.html +1 -1
  78. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/ResponsiveButtonGroup.js.html +1 -1
  79. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/index.html +1 -1
  80. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/index.js.html +1 -1
  81. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/useResponsiveButtonGroupSizing.js.html +1 -1
  82. package/src/artifacts/coverage-jest/RichSelect/RichSelect.js.html +1 -1
  83. package/src/artifacts/coverage-jest/RichSelect/index.html +1 -1
  84. package/src/artifacts/coverage-jest/RichSelect/index.js.html +1 -1
  85. package/src/artifacts/coverage-jest/RichSelect/useSelectedOption.js.html +1 -1
  86. package/src/artifacts/coverage-jest/SASQLookupComponent/SASQLookupComponent.js.html +1 -1
  87. package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/TableBody.js.html +1 -1
  88. package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/index.html +1 -1
  89. package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/index.js.html +1 -1
  90. package/src/artifacts/coverage-jest/SASQLookupComponent/index.html +1 -1
  91. package/src/artifacts/coverage-jest/SASQLookupComponent/index.js.html +1 -1
  92. package/src/artifacts/coverage-jest/SASQRoute/SASQRoute.js.html +1 -1
  93. package/src/artifacts/coverage-jest/SASQRoute/index.html +1 -1
  94. package/src/artifacts/coverage-jest/SASQRoute/index.js.html +1 -1
  95. package/src/artifacts/coverage-jest/SASQViewComponent/SASQViewComponent.js.html +1 -1
  96. package/src/artifacts/coverage-jest/SASQViewComponent/index.html +1 -1
  97. package/src/artifacts/coverage-jest/SASQViewComponent/index.js.html +1 -1
  98. package/src/artifacts/coverage-jest/SearchField/SearchField.js.html +1 -1
  99. package/src/artifacts/coverage-jest/SearchField/index.html +1 -1
  100. package/src/artifacts/coverage-jest/SearchField/index.js.html +1 -1
  101. package/src/artifacts/coverage-jest/SearchKeyControl/SearchKeyControl.js.html +1 -1
  102. package/src/artifacts/coverage-jest/SearchKeyControl/index.html +1 -1
  103. package/src/artifacts/coverage-jest/SearchKeyControl/index.js.html +1 -1
  104. package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/EditableRefdataCategoryList.js.html +1 -1
  105. package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/index.html +1 -1
  106. package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/index.js.html +1 -1
  107. package/src/artifacts/coverage-jest/Settings/EditableRefdataList/EditableRefdataList.js.html +1 -1
  108. package/src/artifacts/coverage-jest/Settings/EditableRefdataList/index.html +1 -1
  109. package/src/artifacts/coverage-jest/Settings/EditableRefdataList/index.js.html +1 -1
  110. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsList.js.html +1 -1
  111. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/EditableSettingsListFieldArray.js.html +1 -1
  112. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/index.html +1 -1
  113. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/index.js.html +1 -1
  114. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/EditSettingValue.js.html +1 -1
  115. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/index.html +1 -1
  116. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/index.js.html +1 -1
  117. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/RenderSettingValue.js.html +1 -1
  118. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/index.html +1 -1
  119. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/index.js.html +1 -1
  120. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/SettingField.js.html +1 -1
  121. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/index.html +1 -1
  122. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/index.js.html +1 -1
  123. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/index.html +1 -1
  124. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/index.js.html +1 -1
  125. package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/RefdataCategoriesSettings.js.html +1 -1
  126. package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/index.html +1 -1
  127. package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/index.js.html +1 -1
  128. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPage.js.html +1 -1
  129. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/SettingPagePane.js.html +1 -1
  130. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/index.html +1 -1
  131. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/index.js.html +1 -1
  132. package/src/artifacts/coverage-jest/Settings/SettingPage/index.html +1 -1
  133. package/src/artifacts/coverage-jest/Settings/SettingPage/index.js.html +1 -1
  134. package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/SettingsFormContainer.js.html +1 -1
  135. package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/index.html +1 -1
  136. package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/index.js.html +1 -1
  137. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsField.js.html +1 -1
  138. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/StaticSettingsFieldComponent.js.html +1 -1
  139. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/index.html +1 -1
  140. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/index.js.html +1 -1
  141. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/index.html +1 -1
  142. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/index.js.html +1 -1
  143. package/src/artifacts/coverage-jest/Settings/constants/index.html +1 -1
  144. package/src/artifacts/coverage-jest/Settings/constants/index.js.html +1 -1
  145. package/src/artifacts/coverage-jest/Settings/constants/queryKeys.js.html +1 -1
  146. package/src/artifacts/coverage-jest/Settings/contexts/SettingsContext.js.html +1 -1
  147. package/src/artifacts/coverage-jest/Settings/contexts/index.html +1 -1
  148. package/src/artifacts/coverage-jest/Settings/contexts/index.js.html +1 -1
  149. package/src/artifacts/coverage-jest/Settings/hooks/index.html +1 -1
  150. package/src/artifacts/coverage-jest/Settings/hooks/index.js.html +1 -1
  151. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/index.html +1 -1
  152. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/index.js.html +1 -1
  153. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/index.html +1 -1
  154. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/index.js.html +1 -1
  155. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/useSettingCallout.js.html +1 -1
  156. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/index.html +1 -1
  157. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/index.js.html +1 -1
  158. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/useSettingsSectionInitalValues.js.html +1 -1
  159. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useStaticSettingsSection.js.html +1 -1
  160. package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/index.html +1 -1
  161. package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/index.js.html +1 -1
  162. package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/useAppSettings.js.html +1 -1
  163. package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/index.html +1 -1
  164. package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/index.js.html +1 -1
  165. package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/useSettingSection.js.html +1 -1
  166. package/src/artifacts/coverage-jest/Settings/hooks/useSettings/index.html +1 -1
  167. package/src/artifacts/coverage-jest/Settings/hooks/useSettings/index.js.html +1 -1
  168. package/src/artifacts/coverage-jest/Settings/hooks/useSettings/useSettings.js.html +1 -1
  169. package/src/artifacts/coverage-jest/Settings/index.html +1 -1
  170. package/src/artifacts/coverage-jest/Settings/index.js.html +1 -1
  171. package/src/artifacts/coverage-jest/Tags/Tags.js.html +1 -1
  172. package/src/artifacts/coverage-jest/Tags/hooks/index.html +1 -1
  173. package/src/artifacts/coverage-jest/Tags/hooks/index.js.html +1 -1
  174. package/src/artifacts/coverage-jest/Tags/hooks/useTags.js.html +1 -1
  175. package/src/artifacts/coverage-jest/Tags/hooks/useTagsEnabled.js.html +1 -1
  176. package/src/artifacts/coverage-jest/Tags/index.html +1 -1
  177. package/src/artifacts/coverage-jest/Tags/index.js.html +1 -1
  178. package/src/artifacts/coverage-jest/Tags/tagsConfig.js.html +1 -1
  179. package/src/artifacts/coverage-jest/Typedown/Typedown.js.html +219 -60
  180. package/src/artifacts/coverage-jest/Typedown/index.html +15 -15
  181. package/src/artifacts/coverage-jest/Typedown/index.js.html +1 -1
  182. package/src/artifacts/coverage-jest/cobertura-coverage.xml +196 -99
  183. package/src/artifacts/coverage-jest/constants/comparators.js.html +1 -1
  184. package/src/artifacts/coverage-jest/constants/customProperties.js.html +1 -1
  185. package/src/artifacts/coverage-jest/constants/endpoints.js.html +1 -1
  186. package/src/artifacts/coverage-jest/constants/eventCodes.js.html +1 -1
  187. package/src/artifacts/coverage-jest/constants/index.html +1 -1
  188. package/src/artifacts/coverage-jest/constants/pagination.js.html +1 -1
  189. package/src/artifacts/coverage-jest/hooks/index.html +1 -1
  190. package/src/artifacts/coverage-jest/hooks/index.js.html +1 -1
  191. package/src/artifacts/coverage-jest/hooks/intlHooks/index.html +1 -1
  192. package/src/artifacts/coverage-jest/hooks/intlHooks/index.js.html +1 -1
  193. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/index.html +1 -1
  194. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/index.js.html +1 -1
  195. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/useIntlKey.js.html +1 -1
  196. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/index.html +1 -1
  197. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/index.js.html +1 -1
  198. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/useIntlKeyStore.js.html +1 -1
  199. package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/index.html +1 -1
  200. package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/index.js.html +1 -1
  201. package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/useKintIntl.js.html +1 -1
  202. package/src/artifacts/coverage-jest/hooks/typedownHooks/index.html +14 -14
  203. package/src/artifacts/coverage-jest/hooks/typedownHooks/index.js.html +1 -1
  204. package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedown.js.html +170 -116
  205. package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedownData.js.html +1 -1
  206. package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedownToggle.js.html +1 -1
  207. package/src/artifacts/coverage-jest/hooks/useActionListRef.js.html +1 -1
  208. package/src/artifacts/coverage-jest/hooks/useActiveElement.js.html +1 -1
  209. package/src/artifacts/coverage-jest/hooks/useCustomProperties.js.html +1 -1
  210. package/src/artifacts/coverage-jest/hooks/useHelperApp.js.html +1 -1
  211. package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/index.html +1 -1
  212. package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/index.js.html +1 -1
  213. package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/useInvalidateRefdata.js.html +1 -1
  214. package/src/artifacts/coverage-jest/hooks/useKiwtFieldArray.js.html +1 -1
  215. package/src/artifacts/coverage-jest/hooks/useKiwtSASQuery.js.html +1 -1
  216. package/src/artifacts/coverage-jest/hooks/useLocalPageStore.js.html +1 -1
  217. package/src/artifacts/coverage-jest/hooks/useLocalStorageState.js.html +1 -1
  218. package/src/artifacts/coverage-jest/hooks/useModConfigEntries.js.html +1 -1
  219. package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/index.html +1 -1
  220. package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/index.js.html +1 -1
  221. package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/useMutateCustomProperties.js.html +1 -1
  222. package/src/artifacts/coverage-jest/hooks/useMutateGeneric/index.html +1 -1
  223. package/src/artifacts/coverage-jest/hooks/useMutateGeneric/index.js.html +1 -1
  224. package/src/artifacts/coverage-jest/hooks/useMutateGeneric/useMutateGeneric.js.html +1 -1
  225. package/src/artifacts/coverage-jest/hooks/useMutateModConfigEntry.js.html +1 -1
  226. package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/index.html +1 -1
  227. package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/index.js.html +1 -1
  228. package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/useMutateRefdataCategory.js.html +1 -1
  229. package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/index.html +1 -1
  230. package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/index.js.html +1 -1
  231. package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/useMutateRefdataValue.js.html +1 -1
  232. package/src/artifacts/coverage-jest/hooks/usePrevNextPagination.js.html +1 -1
  233. package/src/artifacts/coverage-jest/hooks/useQIndex.js.html +1 -1
  234. package/src/artifacts/coverage-jest/hooks/useRefdata.js.html +1 -1
  235. package/src/artifacts/coverage-jest/hooks/useSASQQueryMeta.js.html +1 -1
  236. package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/index.html +1 -1
  237. package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/index.js.html +1 -1
  238. package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/useStandaloneSASQQueryParameter.js.html +1 -1
  239. package/src/artifacts/coverage-jest/hooks/useTemplates.js.html +1 -1
  240. package/src/artifacts/coverage-jest/index.html +39 -24
  241. package/src/artifacts/coverage-jest/utils/buildUrl.js.html +1 -1
  242. package/src/artifacts/coverage-jest/utils/filterParsers/deparseKiwtQueryFilters.js.html +1 -1
  243. package/src/artifacts/coverage-jest/utils/filterParsers/index.html +1 -1
  244. package/src/artifacts/coverage-jest/utils/filterParsers/index.js.html +1 -1
  245. package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryFilters.js.html +1 -1
  246. package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryGroups.js.html +1 -1
  247. package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryString.js.html +1 -1
  248. package/src/artifacts/coverage-jest/utils/generateKiwtQuery.js.html +1 -1
  249. package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/generateKiwtQueryParams.js.html +1 -1
  250. package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/index.html +1 -1
  251. package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/index.js.html +1 -1
  252. package/src/artifacts/coverage-jest/utils/groupCustomPropertiesByCtx.js.html +1 -1
  253. package/src/artifacts/coverage-jest/utils/highlightString.js.html +1 -1
  254. package/src/artifacts/coverage-jest/utils/index.html +1 -1
  255. package/src/artifacts/coverage-jest/utils/index.js.html +1 -1
  256. package/src/artifacts/coverage-jest/utils/matchString.js.html +1 -1
  257. package/src/artifacts/coverage-jest/utils/modConfigEntriesQueryKey.js.html +1 -1
  258. package/src/artifacts/coverage-jest/utils/parseErrorResponse.js.html +1 -1
  259. package/src/artifacts/coverage-jest/utils/parseModConfigEntry.js.html +1 -1
  260. package/src/artifacts/coverage-jest/utils/refdataOptions.js.html +1 -1
  261. package/src/artifacts/coverage-jest/utils/refdataQueryKey/index.html +1 -1
  262. package/src/artifacts/coverage-jest/utils/refdataQueryKey/index.js.html +1 -1
  263. package/src/artifacts/coverage-jest/utils/refdataQueryKey/refdataQueryKey.js.html +1 -1
  264. package/src/artifacts/coverage-jest/utils/selectorSafe.js.html +1 -1
  265. package/src/artifacts/coverage-jest/utils/sortByLabel.js.html +1 -1
  266. package/src/artifacts/coverage-jest/utils/toCamelCase.js.html +1 -1
  267. package/src/artifacts/coverage-jest/utils/typedownQueryKey.js.html +1 -1
  268. package/src/artifacts/coverage-jest/validators/index.html +1 -1
  269. package/src/artifacts/coverage-jest/validators/index.js.html +1 -1
  270. package/src/artifacts/coverage-jest/validators/validators.js.html +1 -1
  271. package/src/index.js +4 -0
  272. package/src/lib/ButtonTypedown/ButtonTypedown.js +52 -0
  273. package/src/lib/ButtonTypedown/README.md +53 -0
  274. package/src/lib/ButtonTypedown/index.js +1 -0
  275. package/src/lib/Typedown/README.md +24 -21
  276. package/src/lib/Typedown/Typedown.js +101 -48
  277. package/src/lib/hooks/typedownHooks/useTypedown.js +105 -87
  278. package/styles/TypeDown.css +4 -0
@@ -184,7 +184,7 @@ export default useIntlKeyStore;
184
184
  <div class='footer quiet pad2 space-top1 center small'>
185
185
  Code coverage generated by
186
186
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
187
- at 2025-12-10T12:12:10.913Z
187
+ at 2025-12-12T16:39:50.848Z
188
188
  </div>
189
189
  <script src="../../../prettify.js"></script>
190
190
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2025-12-10T12:12:10.913Z
119
+ at 2025-12-12T16:39:50.848Z
120
120
  </div>
121
121
  <script src="../../../prettify.js"></script>
122
122
  <script>
@@ -73,7 +73,7 @@
73
73
  <div class='footer quiet pad2 space-top1 center small'>
74
74
  Code coverage generated by
75
75
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
76
- at 2025-12-10T12:12:10.913Z
76
+ at 2025-12-12T16:39:50.848Z
77
77
  </div>
78
78
  <script src="../../../prettify.js"></script>
79
79
  <script>
@@ -223,7 +223,7 @@ export default useKintIntl;
223
223
  <div class='footer quiet pad2 space-top1 center small'>
224
224
  Code coverage generated by
225
225
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
226
- at 2025-12-10T12:12:10.913Z
226
+ at 2025-12-12T16:39:50.848Z
227
227
  </div>
228
228
  <script src="../../../prettify.js"></script>
229
229
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">3.57% </span>
26
+ <span class="strong">3.44% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>3/84</span>
28
+ <span class='fraction'>3/87</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/54</span>
35
+ <span class='fraction'>0/69</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/14</span>
42
+ <span class='fraction'>0/22</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">3.65% </span>
47
+ <span class="strong">3.79% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>3/82</span>
49
+ <span class='fraction'>3/79</span>
50
50
  </div>
51
51
 
52
52
 
@@ -95,17 +95,17 @@
95
95
 
96
96
  <tr>
97
97
  <td class="file low" data-value="useTypedown.js"><a href="useTypedown.js.html">useTypedown.js</a></td>
98
- <td data-value="1.63" class="pic low">
98
+ <td data-value="1.56" class="pic low">
99
99
  <div class="chart"><div class="cover-fill" style="width: 1%"></div><div class="cover-empty" style="width: 99%"></div></div>
100
100
  </td>
101
- <td data-value="1.63" class="pct low">1.63%</td>
102
- <td data-value="61" class="abs low">1/61</td>
101
+ <td data-value="1.56" class="pct low">1.56%</td>
102
+ <td data-value="64" class="abs low">1/64</td>
103
103
  <td data-value="0" class="pct low">0%</td>
104
- <td data-value="42" class="abs low">0/42</td>
104
+ <td data-value="57" class="abs low">0/57</td>
105
105
  <td data-value="0" class="pct low">0%</td>
106
- <td data-value="8" class="abs low">0/8</td>
107
- <td data-value="1.69" class="pct low">1.69%</td>
108
- <td data-value="59" class="abs low">1/59</td>
106
+ <td data-value="16" class="abs low">0/16</td>
107
+ <td data-value="1.78" class="pct low">1.78%</td>
108
+ <td data-value="56" class="abs low">1/56</td>
109
109
  </tr>
110
110
 
111
111
  <tr>
@@ -146,7 +146,7 @@
146
146
  <div class='footer quiet pad2 space-top1 center small'>
147
147
  Code coverage generated by
148
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at 2025-12-10T12:12:10.913Z
149
+ at 2025-12-12T16:39:50.848Z
150
150
  </div>
151
151
  <script src="../../prettify.js"></script>
152
152
  <script>
@@ -79,7 +79,7 @@ export { default as useTypedownData } from './useTypedownData';
79
79
  <div class='footer quiet pad2 space-top1 center small'>
80
80
  Code coverage generated by
81
81
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
82
- at 2025-12-10T12:12:10.913Z
82
+ at 2025-12-12T16:39:50.848Z
83
83
  </div>
84
84
  <script src="../../prettify.js"></script>
85
85
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">1.63% </span>
26
+ <span class="strong">1.56% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>1/61</span>
28
+ <span class='fraction'>1/64</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/42</span>
35
+ <span class='fraction'>0/57</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/8</span>
42
+ <span class='fraction'>0/16</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">1.69% </span>
47
+ <span class="strong">1.78% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>1/59</span>
49
+ <span class='fraction'>1/56</span>
50
50
  </div>
51
51
 
52
52
 
@@ -222,9 +222,25 @@
222
222
  <a name='L157'></a><a href='#L157'>157</a>
223
223
  <a name='L158'></a><a href='#L158'>158</a>
224
224
  <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
226
- <span class="cline-any cline-neutral">&nbsp;</span>
227
- <span class="cline-any cline-neutral">&nbsp;</span>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
228
244
  <span class="cline-any cline-neutral">&nbsp;</span>
229
245
  <span class="cline-any cline-neutral">&nbsp;</span>
230
246
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -248,92 +264,112 @@
248
264
  <span class="cline-any cline-neutral">&nbsp;</span>
249
265
  <span class="cline-any cline-neutral">&nbsp;</span>
250
266
  <span class="cline-any cline-no">&nbsp;</span>
251
- <span class="cline-any cline-neutral">&nbsp;</span>
252
- <span class="cline-any cline-neutral">&nbsp;</span>
253
- <span class="cline-any cline-no">&nbsp;</span>
254
267
  <span class="cline-any cline-no">&nbsp;</span>
255
268
  <span class="cline-any cline-no">&nbsp;</span>
256
269
  <span class="cline-any cline-no">&nbsp;</span>
257
270
  <span class="cline-any cline-neutral">&nbsp;</span>
258
- <span class="cline-any cline-no">&nbsp;</span>
259
- <span class="cline-any cline-neutral">&nbsp;</span>
260
271
  <span class="cline-any cline-neutral">&nbsp;</span>
261
272
  <span class="cline-any cline-no">&nbsp;</span>
262
273
  <span class="cline-any cline-no">&nbsp;</span>
263
- <span class="cline-any cline-neutral">&nbsp;</span>
264
274
  <span class="cline-any cline-no">&nbsp;</span>
265
- <span class="cline-any cline-neutral">&nbsp;</span>
266
275
  <span class="cline-any cline-no">&nbsp;</span>
267
276
  <span class="cline-any cline-no">&nbsp;</span>
268
277
  <span class="cline-any cline-no">&nbsp;</span>
269
278
  <span class="cline-any cline-neutral">&nbsp;</span>
270
279
  <span class="cline-any cline-no">&nbsp;</span>
271
- <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-no">&nbsp;</span>
273
280
  <span class="cline-any cline-no">&nbsp;</span>
274
281
  <span class="cline-any cline-neutral">&nbsp;</span>
275
- <span class="cline-any cline-no">&nbsp;</span>
276
282
  <span class="cline-any cline-neutral">&nbsp;</span>
277
283
  <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-no">&nbsp;</span>
279
284
  <span class="cline-any cline-neutral">&nbsp;</span>
280
285
  <span class="cline-any cline-neutral">&nbsp;</span>
281
286
  <span class="cline-any cline-neutral">&nbsp;</span>
282
287
  <span class="cline-any cline-neutral">&nbsp;</span>
283
- <span class="cline-any cline-no">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
295
+ <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-neutral">&nbsp;</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-neutral">&nbsp;</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-neutral">&nbsp;</span>
301
+ <span class="cline-any cline-neutral">&nbsp;</span>
302
+ <span class="cline-any cline-neutral">&nbsp;</span>
303
+ <span class="cline-any cline-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
284
311
  <span class="cline-any cline-neutral">&nbsp;</span>
285
312
  <span class="cline-any cline-neutral">&nbsp;</span>
286
313
  <span class="cline-any cline-neutral">&nbsp;</span>
287
314
  <span class="cline-any cline-no">&nbsp;</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
316
  <span class="cline-any cline-no">&nbsp;</span>
289
317
  <span class="cline-any cline-no">&nbsp;</span>
290
318
  <span class="cline-any cline-no">&nbsp;</span>
291
319
  <span class="cline-any cline-no">&nbsp;</span>
292
- <span class="cline-any cline-neutral">&nbsp;</span>
293
- <span class="cline-any cline-neutral">&nbsp;</span>
294
- <span class="cline-any cline-neutral">&nbsp;</span>
295
320
  <span class="cline-any cline-no">&nbsp;</span>
296
321
  <span class="cline-any cline-no">&nbsp;</span>
297
322
  <span class="cline-any cline-no">&nbsp;</span>
298
323
  <span class="cline-any cline-no">&nbsp;</span>
299
324
  <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-neutral">&nbsp;</span>
301
- <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-no">&nbsp;</span>
302
326
  <span class="cline-any cline-neutral">&nbsp;</span>
303
327
  <span class="cline-any cline-no">&nbsp;</span>
304
328
  <span class="cline-any cline-no">&nbsp;</span>
305
329
  <span class="cline-any cline-neutral">&nbsp;</span>
306
330
  <span class="cline-any cline-no">&nbsp;</span>
307
- <span class="cline-any cline-no">&nbsp;</span>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
333
  <span class="cline-any cline-no">&nbsp;</span>
309
334
  <span class="cline-any cline-neutral">&nbsp;</span>
310
335
  <span class="cline-any cline-no">&nbsp;</span>
336
+ <span class="cline-any cline-no">&nbsp;</span>
311
337
  <span class="cline-any cline-neutral">&nbsp;</span>
338
+ <span class="cline-any cline-no">&nbsp;</span>
312
339
  <span class="cline-any cline-neutral">&nbsp;</span>
340
+ <span class="cline-any cline-no">&nbsp;</span>
341
+ <span class="cline-any cline-no">&nbsp;</span>
313
342
  <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-no">&nbsp;</span>
314
344
  <span class="cline-any cline-neutral">&nbsp;</span>
315
345
  <span class="cline-any cline-no">&nbsp;</span>
316
346
  <span class="cline-any cline-no">&nbsp;</span>
317
347
  <span class="cline-any cline-no">&nbsp;</span>
318
348
  <span class="cline-any cline-no">&nbsp;</span>
319
- <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-no">&nbsp;</span>
320
350
  <span class="cline-any cline-neutral">&nbsp;</span>
321
351
  <span class="cline-any cline-no">&nbsp;</span>
322
352
  <span class="cline-any cline-no">&nbsp;</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
354
  <span class="cline-any cline-no">&nbsp;</span>
324
355
  <span class="cline-any cline-neutral">&nbsp;</span>
325
356
  <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
326
360
  <span class="cline-any cline-no">&nbsp;</span>
327
361
  <span class="cline-any cline-no">&nbsp;</span>
328
362
  <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
329
365
  <span class="cline-any cline-no">&nbsp;</span>
330
- <span class="cline-any cline-no">&nbsp;</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
368
  <span class="cline-any cline-no">&nbsp;</span>
332
369
  <span class="cline-any cline-no">&nbsp;</span>
333
370
  <span class="cline-any cline-neutral">&nbsp;</span>
334
- <span class="cline-any cline-no">&nbsp;</span>
335
371
  <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-no">&nbsp;</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
337
373
  <span class="cline-any cline-neutral">&nbsp;</span>
338
374
  <span class="cline-any cline-neutral">&nbsp;</span>
339
375
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -381,7 +417,7 @@
381
417
  <span class="cline-any cline-neutral">&nbsp;</span>
382
418
  <span class="cline-any cline-neutral">&nbsp;</span>
383
419
  <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { useEffect, useRef, useState } from 'react';
420
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { useCallback, useEffect, useRef, useState } from 'react';
385
421
  import { useResizeDetector } from 'react-resize-detector';
386
422
  &nbsp;
387
423
  import {
@@ -397,106 +433,124 @@ import {
397
433
  UP_ARROW
398
434
  } from '../../constants/eventCodes';
399
435
  &nbsp;
400
- import selectorSafe from '../../utils/selectorSafe';
401
- &nbsp;
402
436
  import useTypedownToggle from './useTypedownToggle';
403
437
  &nbsp;
404
438
  const useTypedown = <span class="fstat-no" title="function not covered" >(</span>
405
439
  name,
406
440
  { timeout = <span class="branch-0 cbranch-no" title="branch not covered" >800 </span>} = <span class="branch-0 cbranch-no" title="branch not covered" >{}</span>
407
441
  ) =&gt; {
408
- // SEARCHFIELD COMPONENT
409
- const searchFieldComponent = <span class="cstat-no" title="statement not covered" >document.getElementById(`typedown-searchField-${selectorSafe(name)}`);</span>
442
+ // SET UP STATE HOLDING DOM ELEMENTS
443
+ const [list, setListElement] = <span class="cstat-no" title="statement not covered" >useState();</span>
444
+ const [trigger, setTriggerElement] = <span class="cstat-no" title="statement not covered" >useState();</span>
445
+ const [footer, setFooterElement] = <span class="cstat-no" title="statement not covered" >useState();</span>
446
+ const [header, setHeaderElement] = <span class="cstat-no" title="statement not covered" >useState();</span>
410
447
  &nbsp;
411
448
  // SET UP REFS
412
- const listRef = <span class="cstat-no" title="statement not covered" >useRef();</span>
413
449
  const triggerRef = <span class="cstat-no" title="statement not covered" >useRef();</span>
414
450
  const overlayRef = <span class="cstat-no" title="statement not covered" >useRef();</span>
415
- const footerRef = <span class="cstat-no" title="statement not covered" >useRef();</span>
416
- &nbsp;
417
- const footer = <span class="cstat-no" title="statement not covered" >document.getElementById(`typedown-footer-${selectorSafe(name)}`);</span>
418
- // Add an event listener to the footer, so that we can control tab behaviour between footer elements
419
- &nbsp;
420
- <span class="cstat-no" title="statement not covered" > if (footer &amp;&amp; footer.getAttribute('hasListener') !== 'true') {</span>
421
- <span class="cstat-no" title="statement not covered" > footer.addEventListener('keydown', <span class="fstat-no" title="function not covered" >e </span>=&gt; {</span>
422
- // We want special behaviour on tab
423
- <span class="cstat-no" title="statement not covered" > if (e.code === TAB) {</span>
424
- // Prevent the default behaviour
425
- <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
426
- const focusFunc = <span class="cstat-no" title="statement not covered" >e.shiftKey ? getPreviousFocusable : getNextFocusable;</span>
427
- const elem = <span class="cstat-no" title="statement not covered" >focusFunc(footerRef.current, true, true, false, true);</span>
451
+ const listRef = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >no</span>de =&gt; <span class="cstat-no" title="statement not covered" >setListElement(node),</span> []);</span>
452
+ const triggerComponentRef = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >no</span>de =&gt; <span class="cstat-no" title="statement not covered" >setTriggerElement(node),</span> []);</span>
453
+ const footerRef = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >no</span>de =&gt; <span class="cstat-no" title="statement not covered" >setFooterElement(node),</span> []);</span>
454
+ const headerRef = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >no</span>de =&gt; <span class="cstat-no" title="statement not covered" >setHeaderElement(node),</span> []);</span>
428
455
  &nbsp;
429
- <span class="cstat-no" title="statement not covered" > if (elem) {</span>
430
- // Focus on next focusable element
431
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
432
- } else <span class="cstat-no" title="statement not covered" >if (e.shiftKey) {</span>
433
- // We are at the beginning of the list, refocus on search bar
434
- <span class="cstat-no" title="statement not covered" > searchFieldComponent.focus();</span>
435
- } else {
436
- // We are at the end of the list, move onto next focusable element in page
437
- <span class="cstat-no" title="statement not covered" > getNextFocusable(searchFieldComponent, false).focus();</span>
438
- }
456
+ <span class="cstat-no" title="statement not covered" > useEffect(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
457
+ const configs = <span class="cstat-no" title="statement not covered" >[</span>
458
+ // --- HEADER CONFIG ---
459
+ {
460
+ element: header,
461
+ allowTabThroughContents: true,
462
+ previousElement: trigger,
463
+ nextElement: (footer &amp;&amp; getFirstFocusable(footer)) ?? getNextFocusable(trigger, false),
464
+ downElement: list &amp;&amp; getFirstFocusable(list),
465
+ upElement: list &amp;&amp; getLastFocusable(list),
466
+ },
467
+ // --- FOOTER CONFIG ---
468
+ {
469
+ element: footer,
470
+ allowTabThroughContents: true,
471
+ previousElement: (header &amp;&amp; getLastFocusable(header)) ?? trigger,
472
+ nextElement: getNextFocusable(trigger, false),
473
+ downElement: list &amp;&amp; getFirstFocusable(list),
474
+ upElement: list &amp;&amp; getLastFocusable(list),
475
+ },
476
+ // --- LIST/CONTAINER CONFIG ---
477
+ {
478
+ element: list,
479
+ allowUpDownThroughContents: true,
480
+ previousElement: (header &amp;&amp; getLastFocusable(header)) ?? trigger,
481
+ nextElement: (footer &amp;&amp; getFirstFocusable(footer)) ?? getNextFocusable(trigger, false)
482
+ },
483
+ // --- TRIGGER CONFIG ---
484
+ {
485
+ element: trigger,
486
+ nextElement: (header &amp;&amp; getFirstFocusable(header)) ?? (footer &amp;&amp; getFirstFocusable(footer)) ?? getNextFocusable(trigger, false),
487
+ previousElement: getPreviousFocusable(trigger, false),
488
+ downElement: list &amp;&amp; getFirstFocusable(list),
489
+ upElement: list &amp;&amp; getLastFocusable(list),
439
490
  }
440
- });
491
+ ].filter(<span class="fstat-no" title="function not covered" >c </span>=&gt; <span class="cstat-no" title="statement not covered" >c.element)</span>; // Filter out configs where the element (e.g., header) is null
441
492
  &nbsp;
442
- <span class="cstat-no" title="statement not covered" > footer.setAttribute('hasListener', 'true');</span>
443
- }
493
+ const cleanups = <span class="cstat-no" title="statement not covered" >[];</span>
494
+ const setupListener = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(c</span>onfig) =&gt; {</span>
495
+ const handler = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(e</span>) =&gt; {</span>
496
+ <span class="cstat-no" title="statement not covered" > if (e.code === TAB) {</span>
497
+ <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
498
+ <span class="cstat-no" title="statement not covered" > if (config.allowTabThroughContents) {</span>
499
+ const focusFunc = <span class="cstat-no" title="statement not covered" >e.shiftKey ? getPreviousFocusable : getNextFocusable;</span>
500
+ const elem = <span class="cstat-no" title="statement not covered" >focusFunc(config.element, true, true, false, true);</span>
444
501
  &nbsp;
445
- // SET UP HANDLERS
446
- const searchFieldKeyDownHandler = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >e </span>=&gt; {</span>
447
- <span class="cstat-no" title="statement not covered" > if (e.code === UP_ARROW) {</span>
448
- const elem = <span class="cstat-no" title="statement not covered" >getLastFocusable(listRef.current, true, true);</span>
449
- <span class="cstat-no" title="statement not covered" > if (elem) {</span>
450
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
451
- }
452
- }
502
+ <span class="cstat-no" title="statement not covered" > if (elem) {</span>
503
+ // Focus on next focusable element
504
+ <span class="cstat-no" title="statement not covered" > elem.focus();</span>
505
+ } else <span class="cstat-no" title="statement not covered" >if (e.shiftKey) {</span>
506
+ // We are at the beginning of the list moving backwards, focus on the previous element
507
+ <span class="cstat-no" title="statement not covered" > config.previousElement.focus();</span>
508
+ } else {
509
+ // We are at the end of the list, move onto next focusable element in page
510
+ <span class="cstat-no" title="statement not covered" > config.nextElement.focus();</span>
511
+ }
512
+ } else <span class="cstat-no" title="statement not covered" >if (e.shiftKey) {</span>
513
+ <span class="cstat-no" title="statement not covered" > config.previousElement.focus();</span>
514
+ } else {
515
+ <span class="cstat-no" title="statement not covered" > config.nextElement.focus();</span>
516
+ }
517
+ } else <span class="cstat-no" title="statement not covered" >if (e.code === DOWN_ARROW || e.code === UP_ARROW) {</span>
518
+ <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
519
+ // Prevent the default behaviour
520
+ <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
453
521
  &nbsp;
454
- <span class="cstat-no" title="statement not covered" > if (e.code === DOWN_ARROW) {</span>
455
- const elem = <span class="cstat-no" title="statement not covered" >getFirstFocusable(listRef.current, true, true);</span>
456
- <span class="cstat-no" title="statement not covered" > if (elem) {</span>
457
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
458
- }
459
- }
522
+ <span class="cstat-no" title="statement not covered" > if (config.allowUpDownThroughContents) {</span>
523
+ const focusFunc = <span class="cstat-no" title="statement not covered" >e.code === UP_ARROW ? getPreviousFocusable : getNextFocusable;</span>
524
+ const elem = <span class="cstat-no" title="statement not covered" >focusFunc(config.element, true, true, true, true);</span> // Allow looping through elements
525
+ <span class="cstat-no" title="statement not covered" > if (elem) {</span>
526
+ <span class="cstat-no" title="statement not covered" > elem.focus();</span>
527
+ }
528
+ } else <span class="cstat-no" title="statement not covered" >if (e.code === UP_ARROW) {</span>
529
+ <span class="cstat-no" title="statement not covered" > config.upElement.focus();</span>
530
+ } else {
531
+ <span class="cstat-no" title="statement not covered" > config.downElement.focus();</span>
532
+ }
533
+ }
534
+ };
460
535
  &nbsp;
461
- // Tab key (But not while shifting)
462
- <span class="cstat-no" title="statement not covered" > if (e.code === TAB &amp;&amp; !e.shiftKey) {</span>
463
- <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
464
- // If we have focusable elements in the footer, then focus on them, else unfocus searchbar
465
- const elem = <span class="cstat-no" title="statement not covered" >getNextFocusable(footerRef.current, true, true, true, true);</span>
466
- <span class="cstat-no" title="statement not covered" > if (elem) {</span>
467
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
468
- } else {
469
- <span class="cstat-no" title="statement not covered" > getNextFocusable(searchFieldComponent, false).focus();</span>
470
- }
471
- }
472
- };
536
+ // Add event listener and add the removal of said event listener to the cleanup function
537
+ <span class="cstat-no" title="statement not covered" > config.element.addEventListener('keydown', handler);</span>
538
+ <span class="cstat-no" title="statement not covered" > cleanups.push(<span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >config.element.removeEventListener('keydown', handler))</span>;</span>
539
+ };
473
540
  &nbsp;
474
- const listKeyDownHandler = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >e </span>=&gt; {</span>
475
- <span class="cstat-no" title="statement not covered" > if (e.code === DOWN_ARROW) {</span>
476
- const elem = <span class="cstat-no" title="statement not covered" >getNextFocusable(listRef.current, true, true);</span>
477
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
478
- }
541
+ // Setup the event listener for each config entry
542
+ <span class="cstat-no" title="statement not covered" > configs.forEach(setupListener);</span>
479
543
  &nbsp;
480
- <span class="cstat-no" title="statement not covered" > if (e.code === UP_ARROW) {</span>
481
- const elem = <span class="cstat-no" title="statement not covered" >getPreviousFocusable(listRef.current, true, true);</span>
482
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
483
- }
544
+ // Cleanup any event listeners
545
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
546
+ <span class="cstat-no" title="statement not covered" > cleanups.forEach(<span class="fstat-no" title="function not covered" >cl</span>eanup =&gt; <span class="cstat-no" title="statement not covered" >cleanup())</span>;</span>
547
+ };
484
548
  &nbsp;
485
- <span class="cstat-no" title="statement not covered" > if (e.code === TAB) {</span>
486
- <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
487
- let elem;
488
- <span class="cstat-no" title="statement not covered" > if (!e.shiftKey &amp;&amp; !footerRef.current) {</span>
489
- <span class="cstat-no" title="statement not covered" > elem = getNextFocusable(searchFieldComponent, false);</span>
490
- } else <span class="cstat-no" title="statement not covered" >if (!e.shiftKey) {</span>
491
- <span class="cstat-no" title="statement not covered" > elem = getNextFocusable(footerRef.current, true, true, true, true);</span>
492
- } else {
493
- <span class="cstat-no" title="statement not covered" > elem = searchFieldComponent;</span>
494
- }
495
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
496
- }
497
- };
549
+ // Re-add the listener ANY time any of the elements changes (this is why we're using callback refs)
550
+ }, [header, trigger, footer, list]);
498
551
  &nbsp;
499
- const handleNextFocus = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >getNextFocusable(searchFieldComponent, false).focus();</span></span>
552
+ // TODO is this still necessary?
553
+ const handleNextFocus = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >getNextFocusable(trigger, false).focus();</span></span>
500
554
  &nbsp;
501
555
  // SET UP VARIABLES
502
556
  const { open } = <span class="cstat-no" title="statement not covered" >useTypedownToggle(name);</span>
@@ -522,13 +576,13 @@ const useTypedown = <span class="fstat-no" title="function not covered" >(</span
522
576
  refs: {
523
577
  listRef,
524
578
  triggerRef,
579
+ triggerComponentRef,
525
580
  overlayRef,
526
- footerRef
581
+ footerRef,
582
+ headerRef
527
583
  },
528
584
  handlers: {
529
585
  handleNextFocus,
530
- listKeyDownHandler,
531
- searchFieldKeyDownHandler
532
586
  },
533
587
  variables: {
534
588
  open: useOpen ? open : false,
@@ -547,7 +601,7 @@ export default useTypedown;
547
601
  <div class='footer quiet pad2 space-top1 center small'>
548
602
  Code coverage generated by
549
603
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
550
- at 2025-12-10T12:12:10.913Z
604
+ at 2025-12-12T16:39:50.848Z
551
605
  </div>
552
606
  <script src="../../prettify.js"></script>
553
607
  <script>
@@ -166,7 +166,7 @@ export default useTypedownData;
166
166
  <div class='footer quiet pad2 space-top1 center small'>
167
167
  Code coverage generated by
168
168
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
169
- at 2025-12-10T12:12:10.913Z
169
+ at 2025-12-12T16:39:50.848Z
170
170
  </div>
171
171
  <script src="../../prettify.js"></script>
172
172
  <script>
@@ -148,7 +148,7 @@ export default useTypedownToggle;
148
148
  <div class='footer quiet pad2 space-top1 center small'>
149
149
  Code coverage generated by
150
150
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
151
- at 2025-12-10T12:12:10.913Z
151
+ at 2025-12-12T16:39:50.848Z
152
152
  </div>
153
153
  <script src="../../prettify.js"></script>
154
154
  <script>
@@ -178,7 +178,7 @@ export default useActionListRef;
178
178
  <div class='footer quiet pad2 space-top1 center small'>
179
179
  Code coverage generated by
180
180
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
181
- at 2025-12-10T12:12:10.913Z
181
+ at 2025-12-12T16:39:50.848Z
182
182
  </div>
183
183
  <script src="../prettify.js"></script>
184
184
  <script>
@@ -142,7 +142,7 @@ export default useActiveElement;
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
145
- at 2025-12-10T12:12:10.913Z
145
+ at 2025-12-12T16:39:50.848Z
146
146
  </div>
147
147
  <script src="../prettify.js"></script>
148
148
  <script>