@keycloakify/keycloak-account-ui 26.0.6-rc.1 → 260007.0.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 (464) hide show
  1. package/KcAccountUiLoader.d.ts +2 -4
  2. package/KcAccountUiLoader.js +34 -41
  3. package/KcAccountUiLoader.js.map +1 -1
  4. package/README.md +0 -49
  5. package/index.js.map +1 -1
  6. package/{KcAccountUi.js → keycloak-theme/account/KcAccountUi.tsx} +15 -7
  7. package/keycloak-theme/account/KcContext.ts +8 -0
  8. package/keycloak-theme/account/KcPage.tsx +11 -0
  9. package/{src → keycloak-theme/account}/account-security/AccountRow.tsx +8 -4
  10. package/{src → keycloak-theme/account}/account-security/DeviceActivity.tsx +11 -7
  11. package/{src → keycloak-theme/account}/account-security/LinkedAccounts.tsx +12 -8
  12. package/{src → keycloak-theme/account}/account-security/LinkedAccountsToolbar.tsx +4 -0
  13. package/{src → keycloak-theme/account}/account-security/SigningIn.tsx +12 -8
  14. package/{src → keycloak-theme/account}/api/constants.ts +4 -0
  15. package/{src → keycloak-theme/account}/api/methods.ts +9 -5
  16. package/{src → keycloak-theme/account}/api/parse-links.ts +4 -0
  17. package/{src → keycloak-theme/account}/api/parse-response.ts +6 -2
  18. package/{src → keycloak-theme/account}/api/representations.ts +4 -0
  19. package/{src → keycloak-theme/account}/api/request.ts +7 -3
  20. package/{src → keycloak-theme/account}/api.ts +11 -7
  21. package/{src → keycloak-theme/account}/applications/Applications.tsx +12 -8
  22. package/{src/public → keycloak-theme/account/assets}/content.ts +14 -20
  23. package/keycloak-theme/account/assets/favicon.svg +63 -0
  24. package/{src → keycloak-theme/account}/components/datalist/EmptyRow.tsx +4 -0
  25. package/{src → keycloak-theme/account}/components/page/Page.tsx +4 -0
  26. package/{src → keycloak-theme/account}/content/ContentComponent.tsx +10 -6
  27. package/keycloak-theme/account/content/fetchContent.ts +13 -0
  28. package/{src → keycloak-theme/account}/environment.ts +5 -1
  29. package/{src → keycloak-theme/account}/groups/Groups.tsx +9 -5
  30. package/{src → keycloak-theme/account/i18n}/i18n.ts +7 -5
  31. package/keycloak-theme/account/i18n/index.ts +5 -0
  32. package/{messages → keycloak-theme/account/i18n}/messages_ar.properties +8 -0
  33. package/{messages → keycloak-theme/account/i18n}/messages_ca.properties +8 -0
  34. package/{messages → keycloak-theme/account/i18n}/messages_cs.properties +8 -0
  35. package/{messages → keycloak-theme/account/i18n}/messages_da.properties +8 -0
  36. package/{messages → keycloak-theme/account/i18n}/messages_de.properties +8 -0
  37. package/{messages → keycloak-theme/account/i18n}/messages_el.properties +8 -0
  38. package/{messages → keycloak-theme/account/i18n}/messages_en.properties +8 -0
  39. package/{messages → keycloak-theme/account/i18n}/messages_es.properties +8 -0
  40. package/{messages → keycloak-theme/account/i18n}/messages_fa.properties +8 -0
  41. package/{messages → keycloak-theme/account/i18n}/messages_fi.properties +8 -0
  42. package/{messages → keycloak-theme/account/i18n}/messages_fr.properties +8 -0
  43. package/{messages → keycloak-theme/account/i18n}/messages_hu.properties +8 -0
  44. package/{messages → keycloak-theme/account/i18n}/messages_it.properties +8 -0
  45. package/{messages → keycloak-theme/account/i18n}/messages_ja.properties +8 -0
  46. package/{messages → keycloak-theme/account/i18n}/messages_ka.properties +8 -0
  47. package/{messages → keycloak-theme/account/i18n}/messages_lt.properties +8 -0
  48. package/{messages → keycloak-theme/account/i18n}/messages_lv.properties +8 -0
  49. package/{messages → keycloak-theme/account/i18n}/messages_nl.properties +8 -0
  50. package/{messages → keycloak-theme/account/i18n}/messages_no.properties +8 -0
  51. package/{messages → keycloak-theme/account/i18n}/messages_pl.properties +8 -0
  52. package/{messages → keycloak-theme/account/i18n}/messages_pt.properties +8 -0
  53. package/{messages → keycloak-theme/account/i18n}/messages_pt_BR.properties +8 -0
  54. package/{messages → keycloak-theme/account/i18n}/messages_ru.properties +8 -0
  55. package/{messages → keycloak-theme/account/i18n}/messages_sk.properties +8 -0
  56. package/{messages → keycloak-theme/account/i18n}/messages_sv.properties +8 -0
  57. package/{messages → keycloak-theme/account/i18n}/messages_th.properties +8 -0
  58. package/{messages → keycloak-theme/account/i18n}/messages_tr.properties +8 -0
  59. package/{messages → keycloak-theme/account/i18n}/messages_uk.properties +8 -0
  60. package/{messages → keycloak-theme/account/i18n}/messages_zh_CN.properties +8 -0
  61. package/{messages → keycloak-theme/account/i18n}/messages_zh_TW.properties +8 -0
  62. package/{src → keycloak-theme/account}/i18next.d.ts +4 -0
  63. package/{src → keycloak-theme/account}/oid4vci/Oid4Vci.tsx +9 -5
  64. package/{src → keycloak-theme/account}/organizations/Organizations.tsx +9 -5
  65. package/{src → keycloak-theme/account}/personal-info/PersonalInfo.tsx +13 -10
  66. package/{src → keycloak-theme/account}/resources/EditTheResource.tsx +8 -4
  67. package/{src → keycloak-theme/account}/resources/PermissionRequest.tsx +8 -4
  68. package/{src → keycloak-theme/account}/resources/ResourceToolbar.tsx +4 -0
  69. package/{src → keycloak-theme/account}/resources/Resources.tsx +6 -2
  70. package/{src → keycloak-theme/account}/resources/ResourcesTab.tsx +16 -12
  71. package/{src → keycloak-theme/account}/resources/ShareTheResource.tsx +9 -5
  72. package/{src → keycloak-theme/account}/resources/SharedWith.tsx +5 -1
  73. package/{src → keycloak-theme/account}/root/ErrorPage.tsx +4 -0
  74. package/{src → keycloak-theme/account}/root/Header.tsx +11 -6
  75. package/{src → keycloak-theme/account}/root/PageNav.tsx +9 -5
  76. package/{src → keycloak-theme/account}/root/Root.tsx +8 -4
  77. package/{src → keycloak-theme/account}/routes.tsx +18 -14
  78. package/{src → keycloak-theme/account}/utils/formatDate.ts +6 -3
  79. package/{src → keycloak-theme/account}/utils/joinPath.ts +4 -0
  80. package/{src → keycloak-theme/account}/utils/useAccountAlerts.ts +6 -2
  81. package/{src → keycloak-theme/account}/utils/usePromise.ts +4 -0
  82. package/package.json +18 -525
  83. package/src/KcAccountUiLoader.tsx +391 -370
  84. package/src/zKcContextLike.ts +31 -74
  85. package/tsconfig.tsbuildinfo +1 -0
  86. package/zKcContextLike.js +7 -7
  87. package/zKcContextLike.js.map +1 -1
  88. package/KcAccountUi.d.ts +0 -3
  89. package/KcAccountUi.js.map +0 -1
  90. package/account-security/AccountRow.d.ts +0 -8
  91. package/account-security/AccountRow.js +0 -37
  92. package/account-security/AccountRow.js.map +0 -1
  93. package/account-security/DeviceActivity.d.ts +0 -2
  94. package/account-security/DeviceActivity.js +0 -71
  95. package/account-security/DeviceActivity.js.map +0 -1
  96. package/account-security/LinkedAccounts.d.ts +0 -2
  97. package/account-security/LinkedAccounts.js +0 -40
  98. package/account-security/LinkedAccounts.js.map +0 -1
  99. package/account-security/LinkedAccountsToolbar.d.ts +0 -12
  100. package/account-security/LinkedAccountsToolbar.js +0 -24
  101. package/account-security/LinkedAccountsToolbar.js.map +0 -1
  102. package/account-security/SigningIn.d.ts +0 -2
  103. package/account-security/SigningIn.js +0 -65
  104. package/account-security/SigningIn.js.map +0 -1
  105. package/api/constants.d.ts +0 -2
  106. package/api/constants.js +0 -3
  107. package/api/constants.js.map +0 -1
  108. package/api/methods.d.ts +0 -31
  109. package/api/methods.js +0 -80
  110. package/api/methods.js.map +0 -1
  111. package/api/parse-links.d.ts +0 -5
  112. package/api/parse-links.js +0 -23
  113. package/api/parse-links.js.map +0 -1
  114. package/api/parse-response.d.ts +0 -5
  115. package/api/parse-response.js +0 -36
  116. package/api/parse-response.js.map +0 -1
  117. package/api/representations.d.ts +0 -202
  118. package/api/representations.js +0 -3
  119. package/api/representations.js.map +0 -1
  120. package/api/request.d.ts +0 -12
  121. package/api/request.js +0 -33
  122. package/api/request.js.map +0 -1
  123. package/api.d.ts +0 -13
  124. package/api.js +0 -46
  125. package/api.js.map +0 -1
  126. package/applications/Applications.d.ts +0 -2
  127. package/applications/Applications.js +0 -53
  128. package/applications/Applications.js.map +0 -1
  129. package/components/datalist/EmptyRow.d.ts +0 -5
  130. package/components/datalist/EmptyRow.js +0 -20
  131. package/components/datalist/EmptyRow.js.map +0 -1
  132. package/components/page/Page.d.ts +0 -7
  133. package/components/page/Page.js +0 -6
  134. package/components/page/Page.js.map +0 -1
  135. package/content/ContentComponent.d.ts +0 -2
  136. package/content/ContentComponent.js +0 -36
  137. package/content/ContentComponent.js.map +0 -1
  138. package/content/fetchContent.d.ts +0 -3
  139. package/content/fetchContent.js +0 -6
  140. package/content/fetchContent.js.map +0 -1
  141. package/environment.d.ts +0 -26
  142. package/environment.js +0 -3
  143. package/environment.js.map +0 -1
  144. package/groups/Groups.d.ts +0 -2
  145. package/groups/Groups.js +0 -45
  146. package/groups/Groups.js.map +0 -1
  147. package/i18n.d.ts +0 -4
  148. package/i18n.js +0 -32
  149. package/i18n.js.map +0 -1
  150. package/oid4vci/Oid4Vci.d.ts +0 -2
  151. package/oid4vci/Oid4Vci.js +0 -54
  152. package/oid4vci/Oid4Vci.js.map +0 -1
  153. package/organizations/Organizations.d.ts +0 -2
  154. package/organizations/Organizations.js +0 -19
  155. package/organizations/Organizations.js.map +0 -1
  156. package/personal-info/PersonalInfo.d.ts +0 -2
  157. package/personal-info/PersonalInfo.js +0 -69
  158. package/personal-info/PersonalInfo.js.map +0 -1
  159. package/public/content.d.ts +0 -37
  160. package/public/content.js +0 -50
  161. package/public/content.js.map +0 -1
  162. package/resources/EditTheResource.d.ts +0 -8
  163. package/resources/EditTheResource.js +0 -37
  164. package/resources/EditTheResource.js.map +0 -1
  165. package/resources/PermissionRequest.d.ts +0 -7
  166. package/resources/PermissionRequest.js +0 -40
  167. package/resources/PermissionRequest.js.map +0 -1
  168. package/resources/ResourceToolbar.d.ts +0 -12
  169. package/resources/ResourceToolbar.js +0 -24
  170. package/resources/ResourceToolbar.js.map +0 -1
  171. package/resources/Resources.d.ts +0 -2
  172. package/resources/Resources.js +0 -13
  173. package/resources/Resources.js.map +0 -1
  174. package/resources/ResourcesTab.d.ts +0 -5
  175. package/resources/ResourcesTab.js +0 -104
  176. package/resources/ResourcesTab.js.map +0 -1
  177. package/resources/ShareTheResource.d.ts +0 -9
  178. package/resources/ShareTheResource.js +0 -71
  179. package/resources/ShareTheResource.js.map +0 -1
  180. package/resources/SharedWith.d.ts +0 -6
  181. package/resources/SharedWith.js +0 -8
  182. package/resources/SharedWith.js.map +0 -1
  183. package/root/ErrorPage.d.ts +0 -5
  184. package/root/ErrorPage.js +0 -29
  185. package/root/ErrorPage.js.map +0 -1
  186. package/root/Header.d.ts +0 -1
  187. package/root/Header.js +0 -31
  188. package/root/Header.js.map +0 -1
  189. package/root/PageNav.d.ts +0 -22
  190. package/root/PageNav.js +0 -47
  191. package/root/PageNav.js.map +0 -1
  192. package/root/Root.d.ts +0 -1
  193. package/root/Root.js +0 -12
  194. package/root/Root.js.map +0 -1
  195. package/routes.d.ts +0 -16
  196. package/routes.js +0 -75
  197. package/routes.js.map +0 -1
  198. package/src/KcAccountUi.tsx +0 -25
  199. package/src/content/fetchContent.ts +0 -13
  200. package/src/global.d.ts +0 -9
  201. package/src/public/logo.svg +0 -1
  202. package/src/root/header.module.css +0 -3
  203. package/src/ui-shared/alerts/AlertPanel.tsx +0 -43
  204. package/src/ui-shared/alerts/Alerts.tsx +0 -82
  205. package/src/ui-shared/buttons/FormSubmitButton.tsx +0 -47
  206. package/src/ui-shared/context/ErrorPage.tsx +0 -60
  207. package/src/ui-shared/context/HelpContext.tsx +0 -30
  208. package/src/ui-shared/context/KeycloakContext.tsx +0 -97
  209. package/src/ui-shared/context/environment.ts +0 -50
  210. package/src/ui-shared/continue-cancel/ContinueCancelModal.tsx +0 -75
  211. package/src/ui-shared/controls/FormErrorText.tsx +0 -23
  212. package/src/ui-shared/controls/FormLabel.tsx +0 -40
  213. package/src/ui-shared/controls/HelpItem.tsx +0 -43
  214. package/src/ui-shared/controls/KeycloakSpinner.tsx +0 -12
  215. package/src/ui-shared/controls/NumberControl.tsx +0 -93
  216. package/src/ui-shared/controls/OrganizationTable.tsx +0 -122
  217. package/src/ui-shared/controls/PasswordControl.tsx +0 -71
  218. package/src/ui-shared/controls/PasswordInput.tsx +0 -50
  219. package/src/ui-shared/controls/SwitchControl.tsx +0 -67
  220. package/src/ui-shared/controls/TextAreaControl.tsx +0 -60
  221. package/src/ui-shared/controls/TextControl.tsx +0 -75
  222. package/src/ui-shared/controls/keycloak-text-area/KeycloakTextArea.tsx +0 -23
  223. package/src/ui-shared/controls/select-control/SelectControl.tsx +0 -75
  224. package/src/ui-shared/controls/select-control/SingleSelectControl.tsx +0 -109
  225. package/src/ui-shared/controls/select-control/TypeaheadSelectControl.tsx +0 -285
  226. package/src/ui-shared/controls/table/KeycloakDataTable.tsx +0 -597
  227. package/src/ui-shared/controls/table/ListEmptyState.tsx +0 -86
  228. package/src/ui-shared/controls/table/PaginatingTableToolbar.tsx +0 -106
  229. package/src/ui-shared/controls/table/TableToolbar.tsx +0 -92
  230. package/src/ui-shared/icons/IconMapper.tsx +0 -63
  231. package/src/ui-shared/index.ts +0 -1
  232. package/src/ui-shared/main.ts +0 -96
  233. package/src/ui-shared/masthead/DefaultAvatar.tsx +0 -109
  234. package/src/ui-shared/masthead/KeycloakDropdown.tsx +0 -48
  235. package/src/ui-shared/masthead/Masthead.tsx +0 -161
  236. package/src/ui-shared/scroll-form/FormPanel.tsx +0 -29
  237. package/src/ui-shared/scroll-form/FormTitle.tsx +0 -28
  238. package/src/ui-shared/scroll-form/ScrollForm.tsx +0 -98
  239. package/src/ui-shared/scroll-form/ScrollPanel.tsx +0 -21
  240. package/src/ui-shared/scroll-form/form-title.module.css +0 -4
  241. package/src/ui-shared/scroll-form/scroll-form.module.css +0 -8
  242. package/src/ui-shared/select/KeycloakSelect.tsx +0 -49
  243. package/src/ui-shared/select/SingleSelect.tsx +0 -89
  244. package/src/ui-shared/select/TypeaheadSelect.tsx +0 -198
  245. package/src/ui-shared/user-profile/LocaleSelector.tsx +0 -51
  246. package/src/ui-shared/user-profile/MultiInputComponent.tsx +0 -146
  247. package/src/ui-shared/user-profile/OptionsComponent.tsx +0 -63
  248. package/src/ui-shared/user-profile/SelectComponent.tsx +0 -109
  249. package/src/ui-shared/user-profile/TextAreaComponent.tsx +0 -23
  250. package/src/ui-shared/user-profile/TextComponent.tsx +0 -32
  251. package/src/ui-shared/user-profile/UserProfileFields.tsx +0 -243
  252. package/src/ui-shared/user-profile/UserProfileGroup.tsx +0 -71
  253. package/src/ui-shared/user-profile/utils.ts +0 -170
  254. package/src/ui-shared/utils/ErrorBoundary.tsx +0 -77
  255. package/src/ui-shared/utils/createNamedContext.ts +0 -11
  256. package/src/ui-shared/utils/darkMode.ts +0 -19
  257. package/src/ui-shared/utils/errors.ts +0 -55
  258. package/src/ui-shared/utils/generateId.ts +0 -1
  259. package/src/ui-shared/utils/getRuleValue.ts +0 -17
  260. package/src/ui-shared/utils/isDefined.ts +0 -3
  261. package/src/ui-shared/utils/useFetch.ts +0 -44
  262. package/src/ui-shared/utils/useRequiredContext.ts +0 -24
  263. package/src/ui-shared/utils/useSetTimeout.ts +0 -40
  264. package/src/ui-shared/utils/useStorageItem.ts +0 -51
  265. package/src/ui-shared/utils/useStoredState.ts +0 -38
  266. package/ui-shared/alerts/AlertPanel.d.ts +0 -6
  267. package/ui-shared/alerts/AlertPanel.js +0 -6
  268. package/ui-shared/alerts/AlertPanel.js.map +0 -1
  269. package/ui-shared/alerts/Alerts.d.ts +0 -16
  270. package/ui-shared/alerts/Alerts.js +0 -37
  271. package/ui-shared/alerts/Alerts.js.map +0 -1
  272. package/ui-shared/buttons/FormSubmitButton.d.ts +0 -10
  273. package/ui-shared/buttons/FormSubmitButton.js +0 -26
  274. package/ui-shared/buttons/FormSubmitButton.js.map +0 -1
  275. package/ui-shared/context/ErrorPage.d.ts +0 -5
  276. package/ui-shared/context/ErrorPage.js +0 -24
  277. package/ui-shared/context/ErrorPage.js.map +0 -1
  278. package/ui-shared/context/HelpContext.d.ts +0 -9
  279. package/ui-shared/context/HelpContext.js +0 -14
  280. package/ui-shared/context/HelpContext.js.map +0 -1
  281. package/ui-shared/context/KeycloakContext.d.ts +0 -12
  282. package/ui-shared/context/KeycloakContext.js +0 -53
  283. package/ui-shared/context/KeycloakContext.js.map +0 -1
  284. package/ui-shared/context/environment.d.ts +0 -36
  285. package/ui-shared/context/environment.js +0 -27
  286. package/ui-shared/context/environment.js.map +0 -1
  287. package/ui-shared/continue-cancel/ContinueCancelModal.d.ts +0 -15
  288. package/ui-shared/continue-cancel/ContinueCancelModal.js +0 -27
  289. package/ui-shared/continue-cancel/ContinueCancelModal.js.map +0 -1
  290. package/ui-shared/controls/FormErrorText.d.ts +0 -5
  291. package/ui-shared/controls/FormErrorText.js +0 -19
  292. package/ui-shared/controls/FormErrorText.js.map +0 -1
  293. package/ui-shared/controls/FormLabel.d.ts +0 -13
  294. package/ui-shared/controls/FormLabel.js +0 -20
  295. package/ui-shared/controls/FormLabel.js.map +0 -1
  296. package/ui-shared/controls/HelpItem.d.ts +0 -9
  297. package/ui-shared/controls/HelpItem.js +0 -9
  298. package/ui-shared/controls/HelpItem.js.map +0 -1
  299. package/ui-shared/controls/KeycloakSpinner.d.ts +0 -1
  300. package/ui-shared/controls/KeycloakSpinner.js +0 -8
  301. package/ui-shared/controls/KeycloakSpinner.js.map +0 -1
  302. package/ui-shared/controls/NumberControl.d.ts +0 -13
  303. package/ui-shared/controls/NumberControl.js +0 -33
  304. package/ui-shared/controls/NumberControl.js.map +0 -1
  305. package/ui-shared/controls/OrganizationTable.d.ts +0 -16
  306. package/ui-shared/controls/OrganizationTable.js +0 -45
  307. package/ui-shared/controls/OrganizationTable.js.map +0 -1
  308. package/ui-shared/controls/PasswordControl.d.ts +0 -9
  309. package/ui-shared/controls/PasswordControl.js +0 -25
  310. package/ui-shared/controls/PasswordControl.js.map +0 -1
  311. package/ui-shared/controls/PasswordInput.d.ts +0 -7
  312. package/ui-shared/controls/PasswordInput.js +0 -25
  313. package/ui-shared/controls/PasswordInput.js.map +0 -1
  314. package/ui-shared/controls/SwitchControl.d.ts +0 -11
  315. package/ui-shared/controls/SwitchControl.js +0 -29
  316. package/ui-shared/controls/SwitchControl.js.map +0 -1
  317. package/ui-shared/controls/TextAreaControl.d.ts +0 -8
  318. package/ui-shared/controls/TextAreaControl.js +0 -12
  319. package/ui-shared/controls/TextAreaControl.js.map +0 -1
  320. package/ui-shared/controls/TextControl.d.ts +0 -11
  321. package/ui-shared/controls/TextControl.js +0 -24
  322. package/ui-shared/controls/TextControl.js.map +0 -1
  323. package/ui-shared/controls/keycloak-text-area/KeycloakTextArea.d.ts +0 -4
  324. package/ui-shared/controls/keycloak-text-area/KeycloakTextArea.js +0 -5
  325. package/ui-shared/controls/keycloak-text-area/KeycloakTextArea.js.map +0 -1
  326. package/ui-shared/controls/select-control/SelectControl.d.ts +0 -31
  327. package/ui-shared/controls/select-control/SelectControl.js +0 -28
  328. package/ui-shared/controls/select-control/SelectControl.js.map +0 -1
  329. package/ui-shared/controls/select-control/SingleSelectControl.d.ts +0 -3
  330. package/ui-shared/controls/select-control/SingleSelectControl.js +0 -43
  331. package/ui-shared/controls/select-control/SingleSelectControl.js.map +0 -1
  332. package/ui-shared/controls/select-control/TypeaheadSelectControl.d.ts +0 -3
  333. package/ui-shared/controls/select-control/TypeaheadSelectControl.js +0 -140
  334. package/ui-shared/controls/select-control/TypeaheadSelectControl.js.map +0 -1
  335. package/ui-shared/controls/table/KeycloakDataTable.d.ts +0 -64
  336. package/ui-shared/controls/table/KeycloakDataTable.js +0 -279
  337. package/ui-shared/controls/table/KeycloakDataTable.js.map +0 -1
  338. package/ui-shared/controls/table/ListEmptyState.d.ts +0 -20
  339. package/ui-shared/controls/table/ListEmptyState.js +0 -11
  340. package/ui-shared/controls/table/ListEmptyState.js.map +0 -1
  341. package/ui-shared/controls/table/PaginatingTableToolbar.d.ts +0 -21
  342. package/ui-shared/controls/table/PaginatingTableToolbar.js +0 -27
  343. package/ui-shared/controls/table/PaginatingTableToolbar.js.map +0 -1
  344. package/ui-shared/controls/table/TableToolbar.d.ts +0 -12
  345. package/ui-shared/controls/table/TableToolbar.js +0 -30
  346. package/ui-shared/controls/table/TableToolbar.js.map +0 -1
  347. package/ui-shared/icons/IconMapper.d.ts +0 -5
  348. package/ui-shared/icons/IconMapper.js +0 -40
  349. package/ui-shared/icons/IconMapper.js.map +0 -1
  350. package/ui-shared/index.d.ts +0 -1
  351. package/ui-shared/index.js +0 -2
  352. package/ui-shared/index.js.map +0 -1
  353. package/ui-shared/main.d.ts +0 -45
  354. package/ui-shared/main.js +0 -41
  355. package/ui-shared/main.js.map +0 -1
  356. package/ui-shared/masthead/DefaultAvatar.d.ts +0 -7
  357. package/ui-shared/masthead/DefaultAvatar.js +0 -26
  358. package/ui-shared/masthead/DefaultAvatar.js.map +0 -1
  359. package/ui-shared/masthead/KeycloakDropdown.d.ts +0 -10
  360. package/ui-shared/masthead/KeycloakDropdown.js +0 -23
  361. package/ui-shared/masthead/KeycloakDropdown.js.map +0 -1
  362. package/ui-shared/masthead/Masthead.d.ts +0 -19
  363. package/ui-shared/masthead/Masthead.js +0 -55
  364. package/ui-shared/masthead/Masthead.js.map +0 -1
  365. package/ui-shared/scroll-form/FormPanel.d.ts +0 -8
  366. package/ui-shared/scroll-form/FormPanel.js +0 -9
  367. package/ui-shared/scroll-form/FormPanel.js.map +0 -1
  368. package/ui-shared/scroll-form/FormTitle.d.ts +0 -8
  369. package/ui-shared/scroll-form/FormTitle.js +0 -19
  370. package/ui-shared/scroll-form/FormTitle.js.map +0 -1
  371. package/ui-shared/scroll-form/ScrollForm.d.ts +0 -15
  372. package/ui-shared/scroll-form/ScrollForm.js +0 -38
  373. package/ui-shared/scroll-form/ScrollForm.js.map +0 -1
  374. package/ui-shared/scroll-form/ScrollPanel.d.ts +0 -7
  375. package/ui-shared/scroll-form/ScrollPanel.js +0 -18
  376. package/ui-shared/scroll-form/ScrollPanel.js.map +0 -1
  377. package/ui-shared/scroll-form/form-title.module.css +0 -4
  378. package/ui-shared/scroll-form/scroll-form.module.css +0 -8
  379. package/ui-shared/select/KeycloakSelect.d.ts +0 -30
  380. package/ui-shared/select/KeycloakSelect.js +0 -31
  381. package/ui-shared/select/KeycloakSelect.js.map +0 -1
  382. package/ui-shared/select/SingleSelect.d.ts +0 -4
  383. package/ui-shared/select/SingleSelect.js +0 -49
  384. package/ui-shared/select/SingleSelect.js.map +0 -1
  385. package/ui-shared/select/TypeaheadSelect.d.ts +0 -2
  386. package/ui-shared/select/TypeaheadSelect.js +0 -96
  387. package/ui-shared/select/TypeaheadSelect.js.map +0 -1
  388. package/ui-shared/user-profile/LocaleSelector.d.ts +0 -7
  389. package/ui-shared/user-profile/LocaleSelector.js +0 -28
  390. package/ui-shared/user-profile/LocaleSelector.js.map +0 -1
  391. package/ui-shared/user-profile/MultiInputComponent.d.ts +0 -15
  392. package/ui-shared/user-profile/MultiInputComponent.js +0 -61
  393. package/ui-shared/user-profile/MultiInputComponent.js.map +0 -1
  394. package/ui-shared/user-profile/OptionsComponent.d.ts +0 -2
  395. package/ui-shared/user-profile/OptionsComponent.js +0 -29
  396. package/ui-shared/user-profile/OptionsComponent.js.map +0 -1
  397. package/ui-shared/user-profile/SelectComponent.d.ts +0 -2
  398. package/ui-shared/user-profile/SelectComponent.js +0 -56
  399. package/ui-shared/user-profile/SelectComponent.js.map +0 -1
  400. package/ui-shared/user-profile/TextAreaComponent.d.ts +0 -2
  401. package/ui-shared/user-profile/TextAreaComponent.js +0 -11
  402. package/ui-shared/user-profile/TextAreaComponent.js.map +0 -1
  403. package/ui-shared/user-profile/TextComponent.d.ts +0 -2
  404. package/ui-shared/user-profile/TextComponent.js +0 -14
  405. package/ui-shared/user-profile/TextComponent.js.map +0 -1
  406. package/ui-shared/user-profile/UserProfileFields.d.ts +0 -37
  407. package/ui-shared/user-profile/UserProfileFields.js +0 -94
  408. package/ui-shared/user-profile/UserProfileFields.js.map +0 -1
  409. package/ui-shared/user-profile/UserProfileGroup.d.ts +0 -12
  410. package/ui-shared/user-profile/UserProfileGroup.js +0 -15
  411. package/ui-shared/user-profile/UserProfileGroup.js.map +0 -1
  412. package/ui-shared/user-profile/utils.d.ts +0 -32
  413. package/ui-shared/user-profile/utils.js +0 -84
  414. package/ui-shared/user-profile/utils.js.map +0 -1
  415. package/ui-shared/utils/ErrorBoundary.d.ts +0 -26
  416. package/ui-shared/utils/ErrorBoundary.js +0 -29
  417. package/ui-shared/utils/ErrorBoundary.js.map +0 -1
  418. package/ui-shared/utils/createNamedContext.d.ts +0 -3
  419. package/ui-shared/utils/createNamedContext.js +0 -7
  420. package/ui-shared/utils/createNamedContext.js.map +0 -1
  421. package/ui-shared/utils/darkMode.d.ts +0 -1
  422. package/ui-shared/utils/darkMode.js +0 -16
  423. package/ui-shared/utils/darkMode.js.map +0 -1
  424. package/ui-shared/utils/errors.d.ts +0 -4
  425. package/ui-shared/utils/errors.js +0 -42
  426. package/ui-shared/utils/errors.js.map +0 -1
  427. package/ui-shared/utils/generateId.d.ts +0 -1
  428. package/ui-shared/utils/generateId.js +0 -2
  429. package/ui-shared/utils/generateId.js.map +0 -1
  430. package/ui-shared/utils/getRuleValue.d.ts +0 -2
  431. package/ui-shared/utils/getRuleValue.js +0 -12
  432. package/ui-shared/utils/getRuleValue.js.map +0 -1
  433. package/ui-shared/utils/isDefined.d.ts +0 -1
  434. package/ui-shared/utils/isDefined.js +0 -4
  435. package/ui-shared/utils/isDefined.js.map +0 -1
  436. package/ui-shared/utils/useFetch.d.ts +0 -17
  437. package/ui-shared/utils/useFetch.js +0 -38
  438. package/ui-shared/utils/useFetch.js.map +0 -1
  439. package/ui-shared/utils/useRequiredContext.d.ts +0 -9
  440. package/ui-shared/utils/useRequiredContext.js +0 -17
  441. package/ui-shared/utils/useRequiredContext.js.map +0 -1
  442. package/ui-shared/utils/useSetTimeout.d.ts +0 -1
  443. package/ui-shared/utils/useSetTimeout.js +0 -32
  444. package/ui-shared/utils/useSetTimeout.js.map +0 -1
  445. package/ui-shared/utils/useStorageItem.d.ts +0 -10
  446. package/ui-shared/utils/useStorageItem.js +0 -40
  447. package/ui-shared/utils/useStorageItem.js.map +0 -1
  448. package/ui-shared/utils/useStoredState.d.ts +0 -13
  449. package/ui-shared/utils/useStoredState.js +0 -21
  450. package/ui-shared/utils/useStoredState.js.map +0 -1
  451. package/utils/formatDate.d.ts +0 -4
  452. package/utils/formatDate.js +0 -12
  453. package/utils/formatDate.js.map +0 -1
  454. package/utils/joinPath.d.ts +0 -1
  455. package/utils/joinPath.js +0 -18
  456. package/utils/joinPath.js.map +0 -1
  457. package/utils/useAccountAlerts.d.ts +0 -4
  458. package/utils/useAccountAlerts.js +0 -19
  459. package/utils/useAccountAlerts.js.map +0 -1
  460. package/utils/usePromise.d.ts +0 -41
  461. package/utils/usePromise.js +0 -59
  462. package/utils/usePromise.js.map +0 -1
  463. /package/{public → keycloak-theme/account/assets}/logo.svg +0 -0
  464. /package/{root → keycloak-theme/account/root}/header.module.css +0 -0
@@ -1,29 +0,0 @@
1
- import { Card, CardBody, CardHeader, CardTitle } from "@patternfly/react-core";
2
- import { PropsWithChildren, useId } from "react";
3
- import { FormTitle } from "@keycloakify/keycloak-account-ui/ui-shared/scroll-form/FormTitle";
4
-
5
- type FormPanelProps = {
6
- title: string;
7
- scrollId?: string;
8
- className?: string;
9
- };
10
-
11
- export const FormPanel = ({
12
- title,
13
- children,
14
- scrollId,
15
- className,
16
- }: PropsWithChildren<FormPanelProps>) => {
17
- const id = useId();
18
-
19
- return (
20
- <Card id={id} className={className} isFlat>
21
- <CardHeader className="kc-form-panel__header">
22
- <CardTitle tabIndex={0}>
23
- <FormTitle id={scrollId} title={title} />
24
- </CardTitle>
25
- </CardHeader>
26
- <CardBody className="kc-form-panel__body">{children}</CardBody>
27
- </Card>
28
- );
29
- };
@@ -1,28 +0,0 @@
1
- import { Title, TitleProps } from "@patternfly/react-core";
2
-
3
- import style from "@keycloakify/keycloak-account-ui/ui-shared/scroll-form/form-title.module.css";
4
-
5
- type FormTitleProps = Omit<TitleProps, "headingLevel"> & {
6
- id?: string;
7
- title: string;
8
- headingLevel?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
9
- };
10
-
11
- export const FormTitle = ({
12
- id,
13
- title,
14
- headingLevel = "h1",
15
- size = "xl",
16
- ...rest
17
- }: FormTitleProps) => (
18
- <Title
19
- headingLevel={headingLevel}
20
- size={size}
21
- className={style.title}
22
- id={id}
23
- tabIndex={0} // so that jumpLink sends focus to the section for a11y
24
- {...rest}
25
- >
26
- {title}
27
- </Title>
28
- );
@@ -1,98 +0,0 @@
1
- import {
2
- Grid,
3
- GridItem,
4
- GridProps,
5
- JumpLinks,
6
- JumpLinksItem,
7
- PageSection,
8
- } from "@patternfly/react-core";
9
- import { Fragment, ReactNode, useMemo } from "react";
10
- import { FormPanel } from "@keycloakify/keycloak-account-ui/ui-shared/scroll-form/FormPanel";
11
- import { ScrollPanel } from "@keycloakify/keycloak-account-ui/ui-shared/scroll-form/ScrollPanel";
12
-
13
- import style from "@keycloakify/keycloak-account-ui/ui-shared/scroll-form/scroll-form.module.css";
14
-
15
- export const mainPageContentId = "kc-main-content-page-container";
16
-
17
- type ScrollSection = {
18
- title: string;
19
- panel: ReactNode;
20
- isHidden?: boolean;
21
- };
22
-
23
- type ScrollFormProps = GridProps & {
24
- label: string;
25
- sections: ScrollSection[];
26
- borders?: boolean;
27
- };
28
-
29
- const spacesToHyphens = (string: string): string => {
30
- return string.replace(/\s+/g, "-");
31
- };
32
-
33
- export const ScrollForm = ({
34
- label,
35
- sections,
36
- borders = false,
37
- ...rest
38
- }: ScrollFormProps) => {
39
- const shownSections = useMemo(
40
- () => sections.filter(({ isHidden }) => !isHidden),
41
- [sections],
42
- );
43
-
44
- return (
45
- <Grid hasGutter {...rest}>
46
- <GridItem md={8} sm={12}>
47
- {shownSections.map(({ title, panel }) => {
48
- const scrollId = spacesToHyphens(title.toLowerCase());
49
-
50
- return (
51
- <Fragment key={title}>
52
- {borders ? (
53
- <FormPanel
54
- scrollId={scrollId}
55
- title={title}
56
- className={style.panel}
57
- >
58
- {panel}
59
- </FormPanel>
60
- ) : (
61
- <ScrollPanel scrollId={scrollId} title={title}>
62
- {panel}
63
- </ScrollPanel>
64
- )}
65
- </Fragment>
66
- );
67
- })}
68
- </GridItem>
69
- <GridItem md={4} sm={12} order={{ default: "-1", md: "1" }}>
70
- <PageSection className={style.sticky}>
71
- <JumpLinks
72
- isVertical
73
- // scrollableSelector has to point to the id of the element whose scrollTop changes
74
- // to scroll the entire main section, it has to be the pf-v5-c-page__main
75
- scrollableSelector={`#${mainPageContentId}`}
76
- label={label}
77
- offset={100}
78
- >
79
- {shownSections.map(({ title }) => {
80
- const scrollId = spacesToHyphens(title.toLowerCase());
81
-
82
- return (
83
- // note that JumpLinks currently does not work with spaces in the href
84
- <JumpLinksItem
85
- key={title}
86
- href={`#${scrollId}`}
87
- data-testid={`jump-link-${scrollId}`}
88
- >
89
- {title}
90
- </JumpLinksItem>
91
- );
92
- })}
93
- </JumpLinks>
94
- </PageSection>
95
- </GridItem>
96
- </Grid>
97
- );
98
- };
@@ -1,21 +0,0 @@
1
- /* eslint-disable react/jsx-no-useless-fragment */
2
- // See: https://github.com/i18next/react-i18next/issues/1543
3
- import { HTMLProps } from "react";
4
- import { FormTitle } from "@keycloakify/keycloak-account-ui/ui-shared/scroll-form/FormTitle";
5
-
6
- type ScrollPanelProps = HTMLProps<HTMLFormElement> & {
7
- title: string;
8
- scrollId: string;
9
- };
10
-
11
- export const ScrollPanel = (props: ScrollPanelProps) => {
12
- const { title, children, scrollId, ...rest } = props;
13
- return (
14
- <section {...rest} style={{ marginTop: "var(--pf-v5-global--spacer--lg)" }}>
15
- <>
16
- <FormTitle id={scrollId} title={title} />
17
- {children}
18
- </>
19
- </section>
20
- );
21
- };
@@ -1,4 +0,0 @@
1
-
2
- .title {
3
- margin-bottom: var(--pf-v5-global--spacer--lg);
4
- }
@@ -1,8 +0,0 @@
1
- .panel {
2
- margin-top: var(--pf-v5-global--spacer--lg);
3
- }
4
-
5
- .sticky {
6
- position: sticky;
7
- top: 0;
8
- }
@@ -1,49 +0,0 @@
1
- import { ChipGroupProps, SelectProps } from "@patternfly/react-core";
2
- import { SingleSelect } from "@keycloakify/keycloak-account-ui/ui-shared/select/SingleSelect";
3
- import { TypeaheadSelect } from "@keycloakify/keycloak-account-ui/ui-shared/select/TypeaheadSelect";
4
-
5
- export type Variant = `${SelectVariant}`;
6
-
7
- export enum SelectVariant {
8
- single = "single",
9
- typeahead = "typeahead",
10
- typeaheadMulti = "typeaheadMulti",
11
- }
12
-
13
- export const propertyToString = (prop: string | number | undefined) =>
14
- typeof prop === "number" ? prop + "px" : prop;
15
-
16
- export type KeycloakSelectProps<> = Omit<
17
- SelectProps,
18
- "name" | "toggle" | "selected" | "onClick" | "onSelect"
19
- > & {
20
- toggleId?: string;
21
- onFilter?: (value: string) => JSX.Element[];
22
- onClear?: () => void;
23
- variant?: Variant;
24
- isDisabled?: boolean;
25
- menuAppendTo?: string;
26
- maxHeight?: string | number;
27
- width?: string | number;
28
- toggleIcon?: React.ReactElement;
29
- direction?: "up" | "down";
30
- placeholderText?: string;
31
- onSelect?: (value: string | number | object) => void;
32
- onToggle: (val: boolean) => void;
33
- selections?: string | string[] | number | number[];
34
- validated?: "success" | "warning" | "error" | "default";
35
- typeAheadAriaLabel?: string;
36
- chipGroupProps?: Omit<ChipGroupProps, "children" | "ref">;
37
- chipGroupComponent?: React.ReactNode;
38
- footer?: React.ReactNode;
39
- };
40
- export const KeycloakSelect = ({
41
- variant = SelectVariant.single,
42
- ...rest
43
- }: KeycloakSelectProps) => {
44
- if (variant === SelectVariant.single) {
45
- return <SingleSelect {...rest} />;
46
- } else {
47
- return <TypeaheadSelect {...rest} variant={variant} />;
48
- }
49
- };
@@ -1,89 +0,0 @@
1
- import {
2
- MenuToggle,
3
- Select,
4
- SelectList,
5
- SelectOptionProps,
6
- } from "@patternfly/react-core";
7
- import { Children, useRef, useState } from "react";
8
- import { KeycloakSelectProps, propertyToString } from "@keycloakify/keycloak-account-ui/ui-shared/select/KeycloakSelect";
9
-
10
- type SingleSelectProps = Omit<KeycloakSelectProps, "variant">;
11
-
12
- export const SingleSelect = ({
13
- toggleId,
14
- onToggle,
15
- onSelect,
16
- selections,
17
- isOpen,
18
- menuAppendTo,
19
- direction,
20
- width,
21
- maxHeight,
22
- toggleIcon,
23
- className,
24
- isDisabled,
25
- children,
26
- ...props
27
- }: SingleSelectProps) => {
28
- const [open, setOpen] = useState(false);
29
- const ref = useRef<HTMLElement>();
30
- const toggle = () => {
31
- setOpen(!open);
32
- onToggle(!open);
33
- };
34
-
35
- const append = () => {
36
- if (menuAppendTo === "parent") {
37
- return ref.current?.parentElement || "inline";
38
- }
39
- return "inline";
40
- };
41
-
42
- const childArray = Children.toArray(
43
- children,
44
- ) as React.ReactElement<SelectOptionProps>[];
45
-
46
- return (
47
- <Select
48
- ref={ref}
49
- maxMenuHeight={propertyToString(maxHeight)}
50
- isScrollable
51
- popperProps={{
52
- appendTo: append(),
53
- direction,
54
- width: propertyToString(width),
55
- }}
56
- {...props}
57
- onClick={toggle}
58
- onOpenChange={(isOpen) => {
59
- if (isOpen !== open) toggle();
60
- }}
61
- selected={selections}
62
- onSelect={(_, value) => {
63
- onSelect?.(value || "");
64
- toggle();
65
- }}
66
- toggle={(ref) => (
67
- <MenuToggle
68
- id={toggleId}
69
- ref={ref}
70
- className={className}
71
- onClick={toggle}
72
- isExpanded={isOpen}
73
- aria-label={props["aria-label"]}
74
- icon={toggleIcon}
75
- isDisabled={isDisabled}
76
- isFullWidth
77
- >
78
- {childArray.find((c) => c.props.value === selections)?.props
79
- .children ||
80
- selections ||
81
- props["aria-label"]}
82
- </MenuToggle>
83
- )}
84
- isOpen={isOpen}
85
- >
86
- <SelectList>{children}</SelectList>
87
- </Select>
88
- );
89
- };
@@ -1,198 +0,0 @@
1
- import {
2
- Button,
3
- Chip,
4
- ChipGroup,
5
- MenuFooter,
6
- MenuToggle,
7
- MenuToggleStatus,
8
- Select,
9
- SelectList,
10
- SelectOptionProps,
11
- TextInputGroup,
12
- TextInputGroupMain,
13
- TextInputGroupUtilities,
14
- } from "@patternfly/react-core";
15
- import { TimesIcon } from "@patternfly/react-icons";
16
- import { Children, useRef, useState } from "react";
17
- import {
18
- KeycloakSelectProps,
19
- SelectVariant,
20
- propertyToString,
21
- } from "@keycloakify/keycloak-account-ui/ui-shared/select/KeycloakSelect";
22
-
23
- export const TypeaheadSelect = ({
24
- toggleId,
25
- onSelect,
26
- onToggle,
27
- onFilter,
28
- variant,
29
- validated,
30
- placeholderText,
31
- maxHeight,
32
- width,
33
- toggleIcon,
34
- direction,
35
- selections,
36
- typeAheadAriaLabel,
37
- chipGroupComponent,
38
- chipGroupProps,
39
- footer,
40
- isDisabled,
41
- children,
42
- ...rest
43
- }: KeycloakSelectProps) => {
44
- const [filterValue, setFilterValue] = useState("");
45
- const [focusedItemIndex, setFocusedItemIndex] = useState<number>(0);
46
- const textInputRef = useRef<HTMLInputElement>();
47
-
48
- const childArray = Children.toArray(
49
- children,
50
- ) as React.ReactElement<SelectOptionProps>[];
51
-
52
- const toggle = () => {
53
- onToggle?.(!rest.isOpen);
54
- };
55
-
56
- const onInputKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {
57
- const focusedItem = childArray[focusedItemIndex];
58
- onToggle?.(true);
59
-
60
- switch (event.key) {
61
- case "Enter": {
62
- event.preventDefault();
63
-
64
- if (variant !== SelectVariant.typeaheadMulti) {
65
- setFilterValue(focusedItem.props.value);
66
- } else {
67
- setFilterValue("");
68
- }
69
- onSelect?.(focusedItem.props.value);
70
- onToggle?.(false);
71
- setFocusedItemIndex(0);
72
-
73
- break;
74
- }
75
- case "Escape": {
76
- onToggle?.(false);
77
- break;
78
- }
79
- case "Backspace": {
80
- if (variant === SelectVariant.typeahead) {
81
- onSelect?.("");
82
- }
83
- break;
84
- }
85
- case "ArrowUp":
86
- case "ArrowDown": {
87
- event.preventDefault();
88
-
89
- let indexToFocus = 0;
90
-
91
- if (event.key === "ArrowUp") {
92
- if (focusedItemIndex === 0) {
93
- indexToFocus = childArray.length - 1;
94
- } else {
95
- indexToFocus = focusedItemIndex - 1;
96
- }
97
- }
98
-
99
- if (event.key === "ArrowDown") {
100
- if (focusedItemIndex === childArray.length - 1) {
101
- indexToFocus = 0;
102
- } else {
103
- indexToFocus = focusedItemIndex + 1;
104
- }
105
- }
106
-
107
- setFocusedItemIndex(indexToFocus);
108
- break;
109
- }
110
- }
111
- };
112
-
113
- return (
114
- <Select
115
- {...rest}
116
- onClick={toggle}
117
- onOpenChange={(isOpen) => onToggle?.(isOpen)}
118
- onSelect={(_, value) => onSelect?.(value || "")}
119
- maxMenuHeight={propertyToString(maxHeight)}
120
- popperProps={{ direction, width: propertyToString(width) }}
121
- toggle={(ref) => (
122
- <MenuToggle
123
- ref={ref}
124
- id={toggleId}
125
- variant="typeahead"
126
- onClick={() => onToggle?.(true)}
127
- icon={toggleIcon}
128
- isDisabled={isDisabled}
129
- isExpanded={rest.isOpen}
130
- isFullWidth
131
- status={validated === "error" ? MenuToggleStatus.danger : undefined}
132
- >
133
- <TextInputGroup isPlain>
134
- <TextInputGroupMain
135
- placeholder={placeholderText}
136
- value={
137
- variant === SelectVariant.typeahead && selections
138
- ? (selections as string)
139
- : filterValue
140
- }
141
- onClick={toggle}
142
- onChange={(_, value) => {
143
- setFilterValue(value);
144
- onFilter?.(value);
145
- }}
146
- onKeyDown={(event) => onInputKeyDown(event)}
147
- autoComplete="off"
148
- innerRef={textInputRef}
149
- role="combobox"
150
- isExpanded={rest.isOpen}
151
- aria-controls="select-typeahead-listbox"
152
- aria-label={typeAheadAriaLabel}
153
- >
154
- {variant === SelectVariant.typeaheadMulti &&
155
- Array.isArray(selections) &&
156
- (chipGroupComponent ? (
157
- chipGroupComponent
158
- ) : (
159
- <ChipGroup {...chipGroupProps}>
160
- {selections.map((selection, index: number) => (
161
- <Chip
162
- key={index}
163
- onClick={(ev) => {
164
- ev.stopPropagation();
165
- onSelect?.(selection);
166
- }}
167
- >
168
- {selection}
169
- </Chip>
170
- ))}
171
- </ChipGroup>
172
- ))}
173
- </TextInputGroupMain>
174
- <TextInputGroupUtilities>
175
- {!!filterValue && (
176
- <Button
177
- variant="plain"
178
- onClick={() => {
179
- onSelect?.("");
180
- setFilterValue("");
181
- onFilter?.("");
182
- textInputRef?.current?.focus();
183
- }}
184
- aria-label="Clear input value"
185
- >
186
- <TimesIcon aria-hidden />
187
- </Button>
188
- )}
189
- </TextInputGroupUtilities>
190
- </TextInputGroup>
191
- </MenuToggle>
192
- )}
193
- >
194
- <SelectList>{children}</SelectList>
195
- {footer && <MenuFooter>{footer}</MenuFooter>}
196
- </Select>
197
- );
198
- };
@@ -1,51 +0,0 @@
1
- import { useMemo } from "react";
2
- import { FormProvider } from "react-hook-form";
3
- import { SelectControl } from "@keycloakify/keycloak-account-ui/ui-shared/controls/select-control/SelectControl";
4
- import { UserProfileFieldProps } from "@keycloakify/keycloak-account-ui/ui-shared/user-profile/UserProfileFields";
5
-
6
- const localeToDisplayName = (locale: string) => {
7
- try {
8
- return new Intl.DisplayNames([locale], { type: "language" }).of(locale);
9
- } catch {
10
- return locale;
11
- }
12
- };
13
-
14
- type LocaleSelectorProps = Omit<UserProfileFieldProps, "inputType"> & {
15
- supportedLocales: string[];
16
- currentLocale: string;
17
- };
18
-
19
- export const LocaleSelector = ({
20
- t,
21
- form,
22
- supportedLocales,
23
- currentLocale,
24
- }: LocaleSelectorProps) => {
25
- const locales = useMemo(
26
- () =>
27
- supportedLocales
28
- .map((locale) => ({
29
- key: locale,
30
- value: t(`locale_${locale}`, localeToDisplayName(locale) ?? locale),
31
- }))
32
- .sort((a, b) => a.value.localeCompare(b.value, currentLocale)),
33
- [supportedLocales, currentLocale, t],
34
- );
35
-
36
- if (!locales.length) {
37
- return null;
38
- }
39
- return (
40
- <FormProvider {...form}>
41
- <SelectControl
42
- data-testid="locale-select"
43
- name="attributes.locale"
44
- label={t("selectALocale")}
45
- controller={{ defaultValue: "" }}
46
- options={locales}
47
- variant={locales.length >= 10 ? "typeahead" : "single"}
48
- />
49
- </FormProvider>
50
- );
51
- };