@webiny/cognito 0.0.0-unstable.3c5210ad37

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 (214) hide show
  1. package/Cognito.d.ts +8 -0
  2. package/Cognito.js +29 -0
  3. package/Cognito.js.map +1 -0
  4. package/LICENSE +21 -0
  5. package/README.md +11 -0
  6. package/admin/Cognito.d.ts +6 -0
  7. package/admin/Cognito.js +51 -0
  8. package/admin/Cognito.js.map +1 -0
  9. package/admin/CognitoLogin.d.ts +7 -0
  10. package/admin/CognitoLogin.js +18 -0
  11. package/admin/CognitoLogin.js.map +1 -0
  12. package/admin/Extension.d.ts +2 -0
  13. package/admin/Extension.js +20 -0
  14. package/admin/Extension.js.map +1 -0
  15. package/admin/SecurityPermission.d.ts +2 -0
  16. package/admin/SecurityPermission.js +26 -0
  17. package/admin/SecurityPermission.js.map +1 -0
  18. package/admin/federatedIdentityProviders.d.ts +9 -0
  19. package/admin/federatedIdentityProviders.js +9 -0
  20. package/admin/federatedIdentityProviders.js.map +1 -0
  21. package/admin/plugins/constants.d.ts +3 -0
  22. package/admin/plugins/constants.js +6 -0
  23. package/admin/plugins/constants.js.map +1 -0
  24. package/admin/plugins/userMenu/AccountDetails.d.ts +6 -0
  25. package/admin/plugins/userMenu/AccountDetails.js +23 -0
  26. package/admin/plugins/userMenu/AccountDetails.js.map +1 -0
  27. package/admin/plugins/userMenu/useIsDefaultTenant.d.ts +1 -0
  28. package/admin/plugins/userMenu/useIsDefaultTenant.js +15 -0
  29. package/admin/plugins/userMenu/useIsDefaultTenant.js.map +1 -0
  30. package/admin/presentation/Cognito/CognitoLoginScreen.d.ts +10 -0
  31. package/admin/presentation/Cognito/CognitoLoginScreen.js +54 -0
  32. package/admin/presentation/Cognito/CognitoLoginScreen.js.map +1 -0
  33. package/admin/presentation/Cognito/CognitoPresenter.d.ts +58 -0
  34. package/admin/presentation/Cognito/CognitoPresenter.js +277 -0
  35. package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -0
  36. package/admin/presentation/Cognito/abstractions.d.ts +72 -0
  37. package/admin/presentation/Cognito/abstractions.js +4 -0
  38. package/admin/presentation/Cognito/abstractions.js.map +1 -0
  39. package/admin/presentation/Cognito/components/Divider.d.ts +2 -0
  40. package/admin/presentation/Cognito/components/Divider.js +16 -0
  41. package/admin/presentation/Cognito/components/Divider.js.map +1 -0
  42. package/admin/presentation/Cognito/components/FederatedLogin.d.ts +7 -0
  43. package/admin/presentation/Cognito/components/FederatedLogin.js +32 -0
  44. package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -0
  45. package/admin/presentation/Cognito/components/FederatedProviders.d.ts +44 -0
  46. package/admin/presentation/Cognito/components/FederatedProviders.js +14 -0
  47. package/admin/presentation/Cognito/components/FederatedProviders.js.map +1 -0
  48. package/admin/presentation/Cognito/components/FooterSignIn.d.ts +6 -0
  49. package/admin/presentation/Cognito/components/FooterSignIn.js +15 -0
  50. package/admin/presentation/Cognito/components/FooterSignIn.js.map +1 -0
  51. package/admin/presentation/Cognito/components/PasswordResetCodeSent.d.ts +9 -0
  52. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js +43 -0
  53. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js.map +1 -0
  54. package/admin/presentation/Cognito/components/RequestPasswordResetCode.d.ts +8 -0
  55. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js +45 -0
  56. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js.map +1 -0
  57. package/admin/presentation/Cognito/components/RequireNewPassword.d.ts +8 -0
  58. package/admin/presentation/Cognito/components/RequireNewPassword.js +55 -0
  59. package/admin/presentation/Cognito/components/RequireNewPassword.js.map +1 -0
  60. package/admin/presentation/Cognito/components/SetNewPassword.d.ts +8 -0
  61. package/admin/presentation/Cognito/components/SetNewPassword.js +79 -0
  62. package/admin/presentation/Cognito/components/SetNewPassword.js.map +1 -0
  63. package/admin/presentation/Cognito/components/SignIn.d.ts +10 -0
  64. package/admin/presentation/Cognito/components/SignIn.js +64 -0
  65. package/admin/presentation/Cognito/components/SignIn.js.map +1 -0
  66. package/admin/presentation/Cognito/components/View.d.ts +98 -0
  67. package/admin/presentation/Cognito/components/View.js +67 -0
  68. package/admin/presentation/Cognito/components/View.js.map +1 -0
  69. package/admin/presentation/Cognito/feature.d.ts +3 -0
  70. package/admin/presentation/Cognito/feature.js +16 -0
  71. package/admin/presentation/Cognito/feature.js.map +1 -0
  72. package/admin/presentation/shared/createPasswordValidator.d.ts +8 -0
  73. package/admin/presentation/shared/createPasswordValidator.js +27 -0
  74. package/admin/presentation/shared/createPasswordValidator.js.map +1 -0
  75. package/admin/presentation/shared/usePasswordValidator.d.ts +1 -0
  76. package/admin/presentation/shared/usePasswordValidator.js +15 -0
  77. package/admin/presentation/shared/usePasswordValidator.js.map +1 -0
  78. package/admin/routes.d.ts +10 -0
  79. package/admin/routes.js +21 -0
  80. package/admin/routes.js.map +1 -0
  81. package/admin/ui/UserItem.d.ts +10 -0
  82. package/admin/ui/UserItem.js +3 -0
  83. package/admin/ui/UserItem.js.map +1 -0
  84. package/admin/ui/components/AvatarImage/AvatarImage.d.ts +3 -0
  85. package/admin/ui/components/AvatarImage/AvatarImage.js +43 -0
  86. package/admin/ui/components/AvatarImage/AvatarImage.js.map +1 -0
  87. package/admin/ui/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
  88. package/admin/ui/components/AvatarImage/AvatarImagePreview.js +55 -0
  89. package/admin/ui/components/AvatarImage/AvatarImagePreview.js.map +1 -0
  90. package/admin/ui/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
  91. package/admin/ui/components/AvatarImage/AvatarImageTrigger.js +29 -0
  92. package/admin/ui/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
  93. package/admin/ui/components/AvatarImage/index.d.ts +1 -0
  94. package/admin/ui/components/AvatarImage/index.js +3 -0
  95. package/admin/ui/components/AvatarImage/index.js.map +1 -0
  96. package/admin/ui/views/Account/Account.d.ts +2 -0
  97. package/admin/ui/views/Account/Account.js +142 -0
  98. package/admin/ui/views/Account/Account.js.map +1 -0
  99. package/admin/ui/views/Account/graphql.d.ts +2 -0
  100. package/admin/ui/views/Account/graphql.js +40 -0
  101. package/admin/ui/views/Account/graphql.js.map +1 -0
  102. package/admin/ui/views/Account/index.d.ts +1 -0
  103. package/admin/ui/views/Account/index.js +3 -0
  104. package/admin/ui/views/Account/index.js.map +1 -0
  105. package/admin/ui/views/Users/UsersDataList.d.ts +3 -0
  106. package/admin/ui/views/Users/UsersDataList.js +172 -0
  107. package/admin/ui/views/Users/UsersDataList.js.map +1 -0
  108. package/admin/ui/views/Users/UsersForm.d.ts +5 -0
  109. package/admin/ui/views/Users/UsersForm.js +174 -0
  110. package/admin/ui/views/Users/UsersForm.js.map +1 -0
  111. package/admin/ui/views/Users/UsersView.d.ts +2 -0
  112. package/admin/ui/views/Users/UsersView.js +14 -0
  113. package/admin/ui/views/Users/UsersView.js.map +1 -0
  114. package/admin/ui/views/Users/components/DeleteAction.d.ts +7 -0
  115. package/admin/ui/views/Users/components/DeleteAction.js +36 -0
  116. package/admin/ui/views/Users/components/DeleteAction.js.map +1 -0
  117. package/admin/ui/views/Users/graphql.d.ts +5 -0
  118. package/admin/ui/views/Users/graphql.js +99 -0
  119. package/admin/ui/views/Users/graphql.js.map +1 -0
  120. package/admin/ui/views/Users/hooks/useUserForm.d.ts +27 -0
  121. package/admin/ui/views/Users/hooks/useUserForm.js +127 -0
  122. package/admin/ui/views/Users/hooks/useUserForm.js.map +1 -0
  123. package/admin/ui/views/Users/search.svg +20 -0
  124. package/admin/ui/views/utils.d.ts +3 -0
  125. package/admin/ui/views/utils.js +10 -0
  126. package/admin/ui/views/utils.js.map +1 -0
  127. package/api/CognitoApiFeature.d.ts +1 -0
  128. package/api/CognitoApiFeature.js +28 -0
  129. package/api/CognitoApiFeature.js.map +1 -0
  130. package/api/domain/Username.d.ts +4 -0
  131. package/api/domain/Username.js +7 -0
  132. package/api/domain/Username.js.map +1 -0
  133. package/api/domain/errors.d.ts +37 -0
  134. package/api/domain/errors.js +63 -0
  135. package/api/domain/errors.js.map +1 -0
  136. package/api/features/CognitoIdp/CognitoIdentityProvider.d.ts +15 -0
  137. package/api/features/CognitoIdp/CognitoIdentityProvider.js +61 -0
  138. package/api/features/CognitoIdp/CognitoIdentityProvider.js.map +1 -0
  139. package/api/features/CognitoIdp/abstractions.d.ts +15 -0
  140. package/api/features/CognitoIdp/abstractions.js +4 -0
  141. package/api/features/CognitoIdp/abstractions.js.map +1 -0
  142. package/api/features/CognitoIdp/feature.d.ts +1 -0
  143. package/api/features/CognitoIdp/feature.js +10 -0
  144. package/api/features/CognitoIdp/feature.js.map +1 -0
  145. package/api/features/CognitoIdp/index.d.ts +2 -0
  146. package/api/features/CognitoIdp/index.js +4 -0
  147. package/api/features/CognitoIdp/index.js.map +1 -0
  148. package/api/features/CognitoService/CognitoService.d.ts +20 -0
  149. package/api/features/CognitoService/CognitoService.js +90 -0
  150. package/api/features/CognitoService/CognitoService.js.map +1 -0
  151. package/api/features/CognitoService/abstractions.d.ts +54 -0
  152. package/api/features/CognitoService/abstractions.js +8 -0
  153. package/api/features/CognitoService/abstractions.js.map +1 -0
  154. package/api/features/CognitoService/feature.d.ts +5 -0
  155. package/api/features/CognitoService/feature.js +12 -0
  156. package/api/features/CognitoService/feature.js.map +1 -0
  157. package/api/features/CognitoService/index.d.ts +1 -0
  158. package/api/features/CognitoService/index.js +3 -0
  159. package/api/features/CognitoService/index.js.map +1 -0
  160. package/api/features/CreateUser/CreateUserUseCase.d.ts +22 -0
  161. package/api/features/CreateUser/CreateUserUseCase.js +106 -0
  162. package/api/features/CreateUser/CreateUserUseCase.js.map +1 -0
  163. package/api/features/CreateUser/abstractions.d.ts +35 -0
  164. package/api/features/CreateUser/abstractions.js +4 -0
  165. package/api/features/CreateUser/abstractions.js.map +1 -0
  166. package/api/features/CreateUser/feature.d.ts +1 -0
  167. package/api/features/CreateUser/feature.js +10 -0
  168. package/api/features/CreateUser/feature.js.map +1 -0
  169. package/api/features/CreateUser/index.d.ts +2 -0
  170. package/api/features/CreateUser/index.js +4 -0
  171. package/api/features/CreateUser/index.js.map +1 -0
  172. package/api/features/CreateUser/schema.d.ts +47 -0
  173. package/api/features/CreateUser/schema.js +17 -0
  174. package/api/features/CreateUser/schema.js.map +1 -0
  175. package/api/features/DeleteUser/DeleteUserUseCase.d.ts +16 -0
  176. package/api/features/DeleteUser/DeleteUserUseCase.js +54 -0
  177. package/api/features/DeleteUser/DeleteUserUseCase.js.map +1 -0
  178. package/api/features/DeleteUser/abstractions.d.ts +19 -0
  179. package/api/features/DeleteUser/abstractions.js +4 -0
  180. package/api/features/DeleteUser/abstractions.js.map +1 -0
  181. package/api/features/DeleteUser/feature.d.ts +1 -0
  182. package/api/features/DeleteUser/feature.js +10 -0
  183. package/api/features/DeleteUser/feature.js.map +1 -0
  184. package/api/features/DeleteUser/index.d.ts +2 -0
  185. package/api/features/DeleteUser/index.js +4 -0
  186. package/api/features/DeleteUser/index.js.map +1 -0
  187. package/api/features/UpdateUser/UpdateUserUseCase.d.ts +21 -0
  188. package/api/features/UpdateUser/UpdateUserUseCase.js +88 -0
  189. package/api/features/UpdateUser/UpdateUserUseCase.js.map +1 -0
  190. package/api/features/UpdateUser/abstractions.d.ts +33 -0
  191. package/api/features/UpdateUser/abstractions.js +4 -0
  192. package/api/features/UpdateUser/abstractions.js.map +1 -0
  193. package/api/features/UpdateUser/feature.d.ts +1 -0
  194. package/api/features/UpdateUser/feature.js +10 -0
  195. package/api/features/UpdateUser/feature.js.map +1 -0
  196. package/api/features/UpdateUser/index.d.ts +2 -0
  197. package/api/features/UpdateUser/index.js +4 -0
  198. package/api/features/UpdateUser/index.js.map +1 -0
  199. package/api/features/UpdateUser/schema.d.ts +44 -0
  200. package/api/features/UpdateUser/schema.js +16 -0
  201. package/api/features/UpdateUser/schema.js.map +1 -0
  202. package/api/features/UserInstaller/UserInstaller.d.ts +27 -0
  203. package/api/features/UserInstaller/UserInstaller.js +48 -0
  204. package/api/features/UserInstaller/UserInstaller.js.map +1 -0
  205. package/api/features/UserInstaller/feature.d.ts +1 -0
  206. package/api/features/UserInstaller/feature.js +10 -0
  207. package/api/features/UserInstaller/feature.js.map +1 -0
  208. package/api/graphql/user.gql.d.ts +8 -0
  209. package/api/graphql/user.gql.js +167 -0
  210. package/api/graphql/user.gql.js.map +1 -0
  211. package/index.d.ts +2 -0
  212. package/index.js +4 -0
  213. package/index.js.map +1 -0
  214. package/package.json +48 -0
@@ -0,0 +1,10 @@
1
+ import { Route } from "@webiny/app-admin";
2
+ export declare const Routes: {
3
+ Users: {
4
+ List: Route<{
5
+ id: import("zod").ZodOptional<import("zod").ZodString>;
6
+ new: import("zod").ZodOptional<import("zod").ZodBoolean>;
7
+ }>;
8
+ Account: Route<undefined>;
9
+ };
10
+ };
@@ -0,0 +1,21 @@
1
+ import { Route } from "@webiny/app-admin";
2
+ export const Routes = {
3
+ Users: {
4
+ List: new Route({
5
+ name: "Cognito/Users/List",
6
+ path: "/admin-users",
7
+ params: z => {
8
+ return {
9
+ id: z.string().optional(),
10
+ new: z.boolean().optional()
11
+ };
12
+ }
13
+ }),
14
+ Account: new Route({
15
+ name: "Cognito/Users/Account",
16
+ path: "/account"
17
+ })
18
+ }
19
+ };
20
+
21
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Route","Routes","Users","List","name","path","params","z","id","string","optional","new","boolean","Account"],"sources":["routes.ts"],"sourcesContent":["import { Route } from \"@webiny/app-admin\";\n\nexport const Routes = {\n Users: {\n List: new Route({\n name: \"Cognito/Users/List\",\n path: \"/admin-users\",\n params: z => {\n return {\n id: z.string().optional(),\n new: z.boolean().optional()\n };\n }\n }),\n Account: new Route({\n name: \"Cognito/Users/Account\",\n path: \"/account\"\n })\n }\n};\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,mBAAmB;AAEzC,OAAO,MAAMC,MAAM,GAAG;EAClBC,KAAK,EAAE;IACHC,IAAI,EAAE,IAAIH,KAAK,CAAC;MACZI,IAAI,EAAE,oBAAoB;MAC1BC,IAAI,EAAE,cAAc;MACpBC,MAAM,EAAEC,CAAC,IAAI;QACT,OAAO;UACHC,EAAE,EAAED,CAAC,CAACE,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;UACzBC,GAAG,EAAEJ,CAAC,CAACK,OAAO,CAAC,CAAC,CAACF,QAAQ,CAAC;QAC9B,CAAC;MACL;IACJ,CAAC,CAAC;IACFG,OAAO,EAAE,IAAIb,KAAK,CAAC;MACfI,IAAI,EAAE,uBAAuB;MAC7BC,IAAI,EAAE;IACV,CAAC;EACL;AACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ export interface UserItem {
2
+ id: string;
3
+ avatar: {
4
+ src: string;
5
+ };
6
+ firstName: string;
7
+ lastName: string;
8
+ email: string;
9
+ external?: boolean;
10
+ }
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=UserItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["UserItem.ts"],"sourcesContent":["export interface UserItem {\n id: string;\n avatar: {\n src: string;\n };\n firstName: string;\n lastName: string;\n email: string;\n external?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ import type { SingleImageUploadProps } from "@webiny/app-admin";
3
+ export declare const AvatarImage: ({ round, ...props }: SingleImageUploadProps) => React.JSX.Element;
@@ -0,0 +1,43 @@
1
+ import * as React from "react";
2
+ import { SingleImageUpload } from "@webiny/app-admin";
3
+ import { AvatarImagePreview } from "./AvatarImagePreview.js";
4
+ import { AvatarImageTrigger } from "./AvatarImageTrigger.js";
5
+ import { cn } from "@webiny/admin-ui";
6
+ export const AvatarImage = ({
7
+ round,
8
+ ...props
9
+ }) => {
10
+ return /*#__PURE__*/React.createElement("div", {
11
+ className: "w-full flex-1"
12
+ }, /*#__PURE__*/React.createElement("div", {
13
+ className: cn(["size-[128px] mx-auto relative overflow-hidden", round && "rounded-full"])
14
+ }, /*#__PURE__*/React.createElement(SingleImageUpload, Object.assign({}, props, {
15
+ className: "p-0 border-none!",
16
+ variant: "ghost",
17
+ type: "area",
18
+ renderFilePreview: ({
19
+ onReplaceItem,
20
+ onRemoveItem,
21
+ value,
22
+ disabled
23
+ }) => {
24
+ return /*#__PURE__*/React.createElement(AvatarImagePreview, {
25
+ onReplaceItem: onReplaceItem,
26
+ onRemoveItem: onRemoveItem,
27
+ value: value,
28
+ disabled: disabled
29
+ });
30
+ },
31
+ renderTrigger: ({
32
+ onSelectItem,
33
+ disabled
34
+ }) => {
35
+ return /*#__PURE__*/React.createElement(AvatarImageTrigger, {
36
+ disabled: disabled,
37
+ onSelectItem: onSelectItem
38
+ });
39
+ }
40
+ }))));
41
+ };
42
+
43
+ //# sourceMappingURL=AvatarImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","SingleImageUpload","AvatarImagePreview","AvatarImageTrigger","cn","AvatarImage","round","props","createElement","className","Object","assign","variant","type","renderFilePreview","onReplaceItem","onRemoveItem","value","disabled","renderTrigger","onSelectItem"],"sources":["AvatarImage.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type { SingleImageUploadProps } from \"@webiny/app-admin\";\nimport { SingleImageUpload } from \"@webiny/app-admin\";\nimport { AvatarImagePreview } from \"./AvatarImagePreview.js\";\nimport { AvatarImageTrigger } from \"~/admin/ui/components/AvatarImage/AvatarImageTrigger.js\";\nimport { cn } from \"@webiny/admin-ui\";\n\nexport const AvatarImage = ({ round, ...props }: SingleImageUploadProps) => {\n return (\n <div className={\"w-full flex-1\"}>\n <div\n className={cn([\n \"size-[128px] mx-auto relative overflow-hidden\",\n round && \"rounded-full\"\n ])}\n >\n <SingleImageUpload\n {...props}\n className={\"p-0 border-none!\"}\n variant={\"ghost\"}\n type={\"area\"}\n renderFilePreview={({ onReplaceItem, onRemoveItem, value, disabled }) => {\n return (\n <AvatarImagePreview\n onReplaceItem={onReplaceItem}\n onRemoveItem={onRemoveItem}\n value={value}\n disabled={disabled}\n />\n );\n }}\n renderTrigger={({ onSelectItem, disabled }) => {\n return (\n <AvatarImageTrigger disabled={disabled} onSelectItem={onSelectItem} />\n );\n }}\n />\n </div>\n </div>\n );\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,iBAAiB,QAAQ,mBAAmB;AACrD,SAASC,kBAAkB;AAC3B,SAASC,kBAAkB;AAC3B,SAASC,EAAE,QAAQ,kBAAkB;AAErC,OAAO,MAAMC,WAAW,GAAGA,CAAC;EAAEC,KAAK;EAAE,GAAGC;AAA8B,CAAC,KAAK;EACxE,oBACIP,KAAA,CAAAQ,aAAA;IAAKC,SAAS,EAAE;EAAgB,gBAC5BT,KAAA,CAAAQ,aAAA;IACIC,SAAS,EAAEL,EAAE,CAAC,CACV,+CAA+C,EAC/CE,KAAK,IAAI,cAAc,CAC1B;EAAE,gBAEHN,KAAA,CAAAQ,aAAA,CAACP,iBAAiB,EAAAS,MAAA,CAAAC,MAAA,KACVJ,KAAK;IACTE,SAAS,EAAE,kBAAmB;IAC9BG,OAAO,EAAE,OAAQ;IACjBC,IAAI,EAAE,MAAO;IACbC,iBAAiB,EAAEA,CAAC;MAAEC,aAAa;MAAEC,YAAY;MAAEC,KAAK;MAAEC;IAAS,CAAC,KAAK;MACrE,oBACIlB,KAAA,CAAAQ,aAAA,CAACN,kBAAkB;QACfa,aAAa,EAAEA,aAAc;QAC7BC,YAAY,EAAEA,YAAa;QAC3BC,KAAK,EAAEA,KAAM;QACbC,QAAQ,EAAEA;MAAS,CACtB,CAAC;IAEV,CAAE;IACFC,aAAa,EAAEA,CAAC;MAAEC,YAAY;MAAEF;IAAS,CAAC,KAAK;MAC3C,oBACIlB,KAAA,CAAAQ,aAAA,CAACL,kBAAkB;QAACe,QAAQ,EAAEA,QAAS;QAACE,YAAY,EAAEA;MAAa,CAAE,CAAC;IAE9E;EAAE,EACL,CACA,CACJ,CAAC;AAEd,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { type FileItemFormatted } from "@webiny/admin-ui";
3
+ interface AvatarImagePreviewProps {
4
+ value: FileItemFormatted;
5
+ onReplaceItem: any;
6
+ onRemoveItem: any;
7
+ disabled?: boolean;
8
+ }
9
+ declare const AvatarImagePreview: ({ value, onReplaceItem, onRemoveItem, disabled }: AvatarImagePreviewProps) => React.JSX.Element;
10
+ export { AvatarImagePreview, type AvatarImagePreviewProps };
@@ -0,0 +1,55 @@
1
+ import React from "react";
2
+ import { ReactComponent as TrashIcon } from "@webiny/icons/delete.svg";
3
+ import { ReactComponent as EditIcon } from "@webiny/icons/edit.svg";
4
+ import { Icon, IconButton, Tooltip, cn } from "@webiny/admin-ui";
5
+ const AvatarImagePreview = ({
6
+ value,
7
+ onReplaceItem,
8
+ onRemoveItem,
9
+ disabled
10
+ }) => {
11
+ return /*#__PURE__*/React.createElement("div", {
12
+ className: "w-full flex-1"
13
+ }, /*#__PURE__*/React.createElement("div", {
14
+ className: cn("size-[128px] mx-auto relative overflow-hidden")
15
+ }, /*#__PURE__*/React.createElement("div", {
16
+ className: "size-full"
17
+ }, /*#__PURE__*/React.createElement("img", {
18
+ src: value.url,
19
+ alt: value.name,
20
+ className: "object-cover size-full"
21
+ })), /*#__PURE__*/React.createElement("div", {
22
+ className: cn(["flex justify-center items-center gap-xs size-full", "absolute top-0 left-0", "bg-neutral-xstrong/90", "opacity-0 hover:opacity-100 transition-opacity"])
23
+ }, onReplaceItem && /*#__PURE__*/React.createElement(Tooltip, {
24
+ content: "Select another image",
25
+ trigger: /*#__PURE__*/React.createElement(IconButton, {
26
+ icon: /*#__PURE__*/React.createElement(Icon, {
27
+ icon: /*#__PURE__*/React.createElement(EditIcon, null),
28
+ label: "Select another image",
29
+ size: "md",
30
+ color: "neutral-light"
31
+ }),
32
+ variant: "ghost-negative",
33
+ size: "sm",
34
+ onClick: onReplaceItem,
35
+ disabled: disabled
36
+ })
37
+ }), onRemoveItem && /*#__PURE__*/React.createElement(Tooltip, {
38
+ content: "Remove image",
39
+ trigger: /*#__PURE__*/React.createElement(IconButton, {
40
+ icon: /*#__PURE__*/React.createElement(Icon, {
41
+ icon: /*#__PURE__*/React.createElement(TrashIcon, null),
42
+ label: "Remove",
43
+ size: "md",
44
+ color: "neutral-light"
45
+ }),
46
+ variant: "ghost-negative",
47
+ size: "sm",
48
+ onClick: onRemoveItem,
49
+ disabled: disabled
50
+ })
51
+ }))));
52
+ };
53
+ export { AvatarImagePreview };
54
+
55
+ //# sourceMappingURL=AvatarImagePreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","ReactComponent","TrashIcon","EditIcon","Icon","IconButton","Tooltip","cn","AvatarImagePreview","value","onReplaceItem","onRemoveItem","disabled","createElement","className","src","url","alt","name","content","trigger","icon","label","size","color","variant","onClick"],"sources":["AvatarImagePreview.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as TrashIcon } from \"@webiny/icons/delete.svg\";\nimport { ReactComponent as EditIcon } from \"@webiny/icons/edit.svg\";\n\nimport { Icon, IconButton, Tooltip, cn, type FileItemFormatted } from \"@webiny/admin-ui\";\n\ninterface AvatarImagePreviewProps {\n value: FileItemFormatted;\n onReplaceItem: any;\n onRemoveItem: any;\n disabled?: boolean;\n}\n\nconst AvatarImagePreview = ({\n value,\n onReplaceItem,\n onRemoveItem,\n disabled\n}: AvatarImagePreviewProps) => {\n return (\n <div className={\"w-full flex-1\"}>\n <div className={cn(\"size-[128px] mx-auto relative overflow-hidden\")}>\n <div className={\"size-full\"}>\n <img src={value.url} alt={value.name} className={\"object-cover size-full\"} />\n </div>\n <div\n className={cn([\n \"flex justify-center items-center gap-xs size-full\",\n \"absolute top-0 left-0\",\n \"bg-neutral-xstrong/90\",\n \"opacity-0 hover:opacity-100 transition-opacity\"\n ])}\n >\n {onReplaceItem && (\n <Tooltip\n content={\"Select another image\"}\n trigger={\n <IconButton\n icon={\n <Icon\n icon={<EditIcon />}\n label={\"Select another image\"}\n size={\"md\"}\n color={\"neutral-light\"}\n />\n }\n variant={\"ghost-negative\"}\n size={\"sm\"}\n onClick={onReplaceItem}\n disabled={disabled}\n />\n }\n ></Tooltip>\n )}\n {onRemoveItem && (\n <Tooltip\n content={\"Remove image\"}\n trigger={\n <IconButton\n icon={\n <Icon\n icon={<TrashIcon />}\n label={\"Remove\"}\n size={\"md\"}\n color={\"neutral-light\"}\n />\n }\n variant={\"ghost-negative\"}\n size={\"sm\"}\n onClick={onRemoveItem}\n disabled={disabled}\n />\n }\n />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport { AvatarImagePreview, type AvatarImagePreviewProps };\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,IAAIC,SAAS,QAAQ,0BAA0B;AACtE,SAASD,cAAc,IAAIE,QAAQ,QAAQ,wBAAwB;AAEnE,SAASC,IAAI,EAAEC,UAAU,EAAEC,OAAO,EAAEC,EAAE,QAAgC,kBAAkB;AASxF,MAAMC,kBAAkB,GAAGA,CAAC;EACxBC,KAAK;EACLC,aAAa;EACbC,YAAY;EACZC;AACqB,CAAC,KAAK;EAC3B,oBACIZ,KAAA,CAAAa,aAAA;IAAKC,SAAS,EAAE;EAAgB,gBAC5Bd,KAAA,CAAAa,aAAA;IAAKC,SAAS,EAAEP,EAAE,CAAC,+CAA+C;EAAE,gBAChEP,KAAA,CAAAa,aAAA;IAAKC,SAAS,EAAE;EAAY,gBACxBd,KAAA,CAAAa,aAAA;IAAKE,GAAG,EAAEN,KAAK,CAACO,GAAI;IAACC,GAAG,EAAER,KAAK,CAACS,IAAK;IAACJ,SAAS,EAAE;EAAyB,CAAE,CAC3E,CAAC,eACNd,KAAA,CAAAa,aAAA;IACIC,SAAS,EAAEP,EAAE,CAAC,CACV,mDAAmD,EACnD,uBAAuB,EACvB,uBAAuB,EACvB,gDAAgD,CACnD;EAAE,GAEFG,aAAa,iBACVV,KAAA,CAAAa,aAAA,CAACP,OAAO;IACJa,OAAO,EAAE,sBAAuB;IAChCC,OAAO,eACHpB,KAAA,CAAAa,aAAA,CAACR,UAAU;MACPgB,IAAI,eACArB,KAAA,CAAAa,aAAA,CAACT,IAAI;QACDiB,IAAI,eAAErB,KAAA,CAAAa,aAAA,CAACV,QAAQ,MAAE,CAAE;QACnBmB,KAAK,EAAE,sBAAuB;QAC9BC,IAAI,EAAE,IAAK;QACXC,KAAK,EAAE;MAAgB,CAC1B,CACJ;MACDC,OAAO,EAAE,gBAAiB;MAC1BF,IAAI,EAAE,IAAK;MACXG,OAAO,EAAEhB,aAAc;MACvBE,QAAQ,EAAEA;IAAS,CACtB;EACJ,CACK,CACb,EACAD,YAAY,iBACTX,KAAA,CAAAa,aAAA,CAACP,OAAO;IACJa,OAAO,EAAE,cAAe;IACxBC,OAAO,eACHpB,KAAA,CAAAa,aAAA,CAACR,UAAU;MACPgB,IAAI,eACArB,KAAA,CAAAa,aAAA,CAACT,IAAI;QACDiB,IAAI,eAAErB,KAAA,CAAAa,aAAA,CAACX,SAAS,MAAE,CAAE;QACpBoB,KAAK,EAAE,QAAS;QAChBC,IAAI,EAAE,IAAK;QACXC,KAAK,EAAE;MAAgB,CAC1B,CACJ;MACDC,OAAO,EAAE,gBAAiB;MAC1BF,IAAI,EAAE,IAAK;MACXG,OAAO,EAAEf,YAAa;MACtBC,QAAQ,EAAEA;IAAS,CACtB;EACJ,CACJ,CAEJ,CACJ,CACJ,CAAC;AAEd,CAAC;AAED,SAASJ,kBAAkB","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ interface AvatarImageTriggerProps {
3
+ onSelectItem: () => void;
4
+ disabled?: boolean;
5
+ }
6
+ declare const AvatarImageTrigger: ({ onSelectItem, disabled }: AvatarImageTriggerProps) => React.JSX.Element;
7
+ export { AvatarImageTrigger };
@@ -0,0 +1,29 @@
1
+ import React from "react";
2
+ import { ReactComponent as ImageIcon } from "@webiny/icons/image.svg";
3
+ import { cn, Icon, IconButton, Tooltip } from "@webiny/admin-ui";
4
+ const AvatarImageTrigger = ({
5
+ onSelectItem,
6
+ disabled
7
+ }) => {
8
+ return /*#__PURE__*/React.createElement("div", {
9
+ "data-role": "select-image",
10
+ className: cn(["size-[128px]", "flex justify-center items-center gap-xs", "bg-neutral-strong"])
11
+ }, /*#__PURE__*/React.createElement(Tooltip, {
12
+ content: "Select from library",
13
+ trigger: /*#__PURE__*/React.createElement(IconButton, {
14
+ icon: /*#__PURE__*/React.createElement(Icon, {
15
+ icon: /*#__PURE__*/React.createElement(ImageIcon, null),
16
+ label: "Select from library",
17
+ size: "lg",
18
+ color: "neutral-light"
19
+ }),
20
+ variant: "ghost-negative",
21
+ size: "lg",
22
+ onClick: onSelectItem,
23
+ disabled: disabled
24
+ })
25
+ }));
26
+ };
27
+ export { AvatarImageTrigger };
28
+
29
+ //# sourceMappingURL=AvatarImageTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","ReactComponent","ImageIcon","cn","Icon","IconButton","Tooltip","AvatarImageTrigger","onSelectItem","disabled","createElement","className","content","trigger","icon","label","size","color","variant","onClick"],"sources":["AvatarImageTrigger.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as ImageIcon } from \"@webiny/icons/image.svg\";\nimport { cn, Icon, IconButton, Tooltip } from \"@webiny/admin-ui\";\n\ninterface AvatarImageTriggerProps {\n onSelectItem: () => void;\n disabled?: boolean;\n}\n\nconst AvatarImageTrigger = ({ onSelectItem, disabled }: AvatarImageTriggerProps) => {\n return (\n <div\n data-role={\"select-image\"}\n className={cn([\n \"size-[128px]\",\n \"flex justify-center items-center gap-xs\",\n \"bg-neutral-strong\"\n ])}\n >\n <Tooltip\n content={\"Select from library\"}\n trigger={\n <IconButton\n icon={\n <Icon\n icon={<ImageIcon />}\n label={\"Select from library\"}\n size={\"lg\"}\n color={\"neutral-light\"}\n />\n }\n variant={\"ghost-negative\"}\n size={\"lg\"}\n onClick={onSelectItem}\n disabled={disabled}\n />\n }\n />\n </div>\n );\n};\n\nexport { AvatarImageTrigger };\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,IAAIC,SAAS,QAAQ,yBAAyB;AACrE,SAASC,EAAE,EAAEC,IAAI,EAAEC,UAAU,EAAEC,OAAO,QAAQ,kBAAkB;AAOhE,MAAMC,kBAAkB,GAAGA,CAAC;EAAEC,YAAY;EAAEC;AAAkC,CAAC,KAAK;EAChF,oBACIT,KAAA,CAAAU,aAAA;IACI,aAAW,cAAe;IAC1BC,SAAS,EAAER,EAAE,CAAC,CACV,cAAc,EACd,yCAAyC,EACzC,mBAAmB,CACtB;EAAE,gBAEHH,KAAA,CAAAU,aAAA,CAACJ,OAAO;IACJM,OAAO,EAAE,qBAAsB;IAC/BC,OAAO,eACHb,KAAA,CAAAU,aAAA,CAACL,UAAU;MACPS,IAAI,eACAd,KAAA,CAAAU,aAAA,CAACN,IAAI;QACDU,IAAI,eAAEd,KAAA,CAAAU,aAAA,CAACR,SAAS,MAAE,CAAE;QACpBa,KAAK,EAAE,qBAAsB;QAC7BC,IAAI,EAAE,IAAK;QACXC,KAAK,EAAE;MAAgB,CAC1B,CACJ;MACDC,OAAO,EAAE,gBAAiB;MAC1BF,IAAI,EAAE,IAAK;MACXG,OAAO,EAAEX,YAAa;MACtBC,QAAQ,EAAEA;IAAS,CACtB;EACJ,CACJ,CACA,CAAC;AAEd,CAAC;AAED,SAASF,kBAAkB","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export * from "./AvatarImage.js";
@@ -0,0 +1,3 @@
1
+ export * from "./AvatarImage.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./AvatarImage.js\";\n"],"mappings":"AAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const UserAccountForm: () => React.JSX.Element;
@@ -0,0 +1,142 @@
1
+ import React, { useState } from "react";
2
+ import omit from "lodash/omit.js";
3
+ import { useQuery, useMutation } from "@apollo/react-hooks";
4
+ import { i18n } from "@webiny/app/i18n/index.js";
5
+ import { Form } from "@webiny/form";
6
+ import { validation } from "@webiny/validation";
7
+ import { AvatarImage } from "../../components/AvatarImage/index.js";
8
+ import { GET_CURRENT_USER, UPDATE_CURRENT_USER } from "./graphql.js";
9
+ import { config as appConfig } from "@webiny/app/config.js";
10
+ import { SimpleForm, SimpleFormHeader, SimpleFormFooter, SimpleFormContent, useIdentity } from "@webiny/app-admin";
11
+ import { CenteredView } from "@webiny/app-admin";
12
+ import { usePasswordValidator } from "../../../presentation/shared/usePasswordValidator.js";
13
+ import { Alert, Button, Grid, Input, OverlayLoader, useToast } from "@webiny/admin-ui";
14
+ const t = i18n.ns("app-security-admin-users/account-form");
15
+ export const UserAccountForm = () => {
16
+ const [isSaving, setSaving] = useState(false);
17
+ const toast = useToast();
18
+ const {
19
+ identity
20
+ } = useIdentity();
21
+ const passwordValidator = usePasswordValidator();
22
+ const currentUser = useQuery(GET_CURRENT_USER);
23
+ const [updateUser] = useMutation(UPDATE_CURRENT_USER);
24
+ const user = currentUser.loading ? {} : currentUser.data.adminUsers.user.data;
25
+ const isFormLoading = isSaving || currentUser.loading;
26
+ const loaderMessage = isSaving ? "Saving account..." : "Loading account...";
27
+ const emailIsDisabled = appConfig.getKey("ADMIN_USER_CAN_CHANGE_EMAIL", process.env.REACT_APP_ADMIN_USER_CAN_CHANGE_EMAIL === "false");
28
+ const isExternal = user?.external === true;
29
+ const onSubmit = async formData => {
30
+ setSaving(true);
31
+ const {
32
+ data: response
33
+ } = await updateUser({
34
+ variables: {
35
+ data: omit(formData, ["id", "external"])
36
+ }
37
+ });
38
+ const {
39
+ error
40
+ } = response.adminUsers.updateCurrentUser;
41
+ setSaving(false);
42
+ if (error) {
43
+ toast.showWarningToast({
44
+ title: "Error updating user account",
45
+ description: error.message,
46
+ duration: Infinity
47
+ });
48
+ return;
49
+ }
50
+
51
+ // TODO: set new roles/teams into the identity context
52
+
53
+ identity.update({
54
+ displayName: `${formData.firstName} ${formData.lastName}`,
55
+ profile: {
56
+ ...(identity.profile || {}),
57
+ firstName: formData.firstName,
58
+ lastName: formData.lastName,
59
+ avatar: formData.avatar
60
+ }
61
+ });
62
+ toast.showSuccessToast({
63
+ title: "Account updated successfully!"
64
+ });
65
+ };
66
+ return /*#__PURE__*/React.createElement(CenteredView, {
67
+ maxWidth: 600
68
+ }, /*#__PURE__*/React.createElement(Form, {
69
+ data: user,
70
+ onSubmit: onSubmit
71
+ }, ({
72
+ data,
73
+ form,
74
+ Bind
75
+ }) => /*#__PURE__*/React.createElement(SimpleForm, null, isFormLoading && /*#__PURE__*/React.createElement(OverlayLoader, {
76
+ text: loaderMessage
77
+ }), /*#__PURE__*/React.createElement(SimpleFormHeader, {
78
+ title: "Account"
79
+ }), /*#__PURE__*/React.createElement(SimpleFormContent, null, isExternal && /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Grid.Column, {
80
+ span: 12
81
+ }, /*#__PURE__*/React.createElement(Alert, {
82
+ type: "info",
83
+ title: "External User"
84
+ }, "This user is an external user and cannot be edited."))), /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Grid.Column, {
85
+ span: 12,
86
+ "data-testid": "avatar"
87
+ }, /*#__PURE__*/React.createElement(Bind, {
88
+ name: "avatar"
89
+ }, /*#__PURE__*/React.createElement(AvatarImage, {
90
+ round: true,
91
+ disabled: isExternal
92
+ }))), /*#__PURE__*/React.createElement(Grid.Column, {
93
+ span: 12
94
+ }, /*#__PURE__*/React.createElement(Bind, {
95
+ name: "firstName",
96
+ validators: validation.create("required")
97
+ }, /*#__PURE__*/React.createElement(Input, {
98
+ label: t`First Name`,
99
+ disabled: isExternal,
100
+ "data-testid": "account.firstname"
101
+ }))), /*#__PURE__*/React.createElement(Grid.Column, {
102
+ span: 12
103
+ }, " ", /*#__PURE__*/React.createElement(Bind, {
104
+ name: "lastName",
105
+ validators: validation.create("required")
106
+ }, /*#__PURE__*/React.createElement(Input, {
107
+ label: t`Last Name`,
108
+ disabled: isExternal,
109
+ "data-testid": "account.lastname"
110
+ }))), /*#__PURE__*/React.createElement(Grid.Column, {
111
+ span: 12
112
+ }, /*#__PURE__*/React.createElement(Bind, {
113
+ name: "email",
114
+ validators: validation.create("required,email")
115
+ }, /*#__PURE__*/React.createElement(Input, {
116
+ value: data.email,
117
+ label: t`Email`,
118
+ disabled: emailIsDisabled || isExternal,
119
+ "data-testid": "account.email",
120
+ description: "Email is your unique identifier used to login!"
121
+ }))), /*#__PURE__*/React.createElement(Grid.Column, {
122
+ span: 12
123
+ }, /*#__PURE__*/React.createElement(Bind, {
124
+ name: "password",
125
+ validators: passwordValidator
126
+ }, /*#__PURE__*/React.createElement(Input, {
127
+ autoComplete: "off",
128
+ disabled: data.external,
129
+ description: data.id && "Type a new password to reset it.",
130
+ type: "password",
131
+ label: "Password",
132
+ "data-testid": "account.password"
133
+ }))))), /*#__PURE__*/React.createElement(SimpleFormFooter, {
134
+ "data-testid": "form-footer"
135
+ }, /*#__PURE__*/React.createElement(Button, {
136
+ disabled: isExternal,
137
+ "data-testid": "account.updatebutton",
138
+ onClick: form.submit
139
+ }, t`Update account`)))));
140
+ };
141
+
142
+ //# sourceMappingURL=Account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","omit","useQuery","useMutation","i18n","Form","validation","AvatarImage","GET_CURRENT_USER","UPDATE_CURRENT_USER","config","appConfig","SimpleForm","SimpleFormHeader","SimpleFormFooter","SimpleFormContent","useIdentity","CenteredView","usePasswordValidator","Alert","Button","Grid","Input","OverlayLoader","useToast","t","ns","UserAccountForm","isSaving","setSaving","toast","identity","passwordValidator","currentUser","updateUser","user","loading","data","adminUsers","isFormLoading","loaderMessage","emailIsDisabled","getKey","process","env","REACT_APP_ADMIN_USER_CAN_CHANGE_EMAIL","isExternal","external","onSubmit","formData","response","variables","error","updateCurrentUser","showWarningToast","title","description","message","duration","Infinity","update","displayName","firstName","lastName","profile","avatar","showSuccessToast","createElement","maxWidth","form","Bind","text","Column","span","type","name","round","disabled","validators","create","label","value","email","autoComplete","id","onClick","submit"],"sources":["Account.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport omit from \"lodash/omit.js\";\nimport { useQuery, useMutation } from \"@apollo/react-hooks\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { Form } from \"@webiny/form\";\nimport { validation } from \"@webiny/validation\";\nimport { AvatarImage } from \"../../components/AvatarImage/index.js\";\nimport { GET_CURRENT_USER, UPDATE_CURRENT_USER } from \"./graphql.js\";\nimport { config as appConfig } from \"@webiny/app/config.js\";\n\nimport {\n SimpleForm,\n SimpleFormHeader,\n SimpleFormFooter,\n SimpleFormContent,\n useIdentity\n} from \"@webiny/app-admin\";\nimport { CenteredView } from \"@webiny/app-admin\";\nimport { usePasswordValidator } from \"~/admin/presentation/shared/usePasswordValidator.js\";\nimport { Alert, Button, Grid, Input, OverlayLoader, useToast } from \"@webiny/admin-ui\";\n\nconst t = i18n.ns(\"app-security-admin-users/account-form\");\n\ninterface UserAccountFormData {\n id?: boolean;\n firstName: string;\n lastName: string;\n email: string;\n password?: string;\n external?: boolean;\n avatar: {\n src?: string;\n };\n}\n\nexport const UserAccountForm = () => {\n const [isSaving, setSaving] = useState(false);\n const toast = useToast();\n const { identity } = useIdentity();\n const passwordValidator = usePasswordValidator();\n const currentUser = useQuery(GET_CURRENT_USER);\n const [updateUser] = useMutation(UPDATE_CURRENT_USER);\n\n const user = currentUser.loading ? {} : currentUser.data.adminUsers.user.data;\n\n const isFormLoading = isSaving || currentUser.loading;\n const loaderMessage = isSaving ? \"Saving account...\" : \"Loading account...\";\n\n const emailIsDisabled = appConfig.getKey(\n \"ADMIN_USER_CAN_CHANGE_EMAIL\",\n process.env.REACT_APP_ADMIN_USER_CAN_CHANGE_EMAIL === \"false\"\n );\n\n const isExternal = user?.external === true;\n\n const onSubmit = async (formData: UserAccountFormData) => {\n setSaving(true);\n const { data: response } = await updateUser({\n variables: { data: omit(formData, [\"id\", \"external\"]) }\n });\n\n const { error } = response.adminUsers.updateCurrentUser;\n setSaving(false);\n\n if (error) {\n toast.showWarningToast({\n title: \"Error updating user account\",\n description: error.message,\n duration: Infinity\n });\n return;\n }\n\n // TODO: set new roles/teams into the identity context\n\n identity.update({\n displayName: `${formData.firstName} ${formData.lastName}`,\n profile: {\n ...(identity.profile || {}),\n firstName: formData.firstName,\n lastName: formData.lastName,\n avatar: formData.avatar\n }\n });\n\n toast.showSuccessToast({ title: \"Account updated successfully!\" });\n };\n\n return (\n <CenteredView maxWidth={600}>\n <Form<UserAccountFormData> data={user} onSubmit={onSubmit}>\n {({ data, form, Bind }) => (\n <SimpleForm>\n {isFormLoading && <OverlayLoader text={loaderMessage} />}\n <SimpleFormHeader title={\"Account\"} />\n <SimpleFormContent>\n {isExternal && (\n <Grid>\n <Grid.Column span={12}>\n <Alert type={\"info\"} title={\"External User\"}>\n This user is an external user and cannot be edited.\n </Alert>\n </Grid.Column>\n </Grid>\n )}\n <Grid>\n <Grid.Column span={12} data-testid={\"avatar\"}>\n <Bind name=\"avatar\">\n <AvatarImage round disabled={isExternal} />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind\n name=\"firstName\"\n validators={validation.create(\"required\")}\n >\n <Input\n label={t`First Name`}\n disabled={isExternal}\n data-testid=\"account.firstname\"\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n {\" \"}\n <Bind\n name=\"lastName\"\n validators={validation.create(\"required\")}\n >\n <Input\n label={t`Last Name`}\n disabled={isExternal}\n data-testid=\"account.lastname\"\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind\n name=\"email\"\n validators={validation.create(\"required,email\")}\n >\n <Input\n value={data.email}\n label={t`Email`}\n disabled={emailIsDisabled || isExternal}\n data-testid=\"account.email\"\n description={\n \"Email is your unique identifier used to login!\"\n }\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name=\"password\" validators={passwordValidator}>\n <Input\n autoComplete=\"off\"\n disabled={data.external}\n description={\n data.id && \"Type a new password to reset it.\"\n }\n type=\"password\"\n label={\"Password\"}\n data-testid=\"account.password\"\n />\n </Bind>\n </Grid.Column>\n </Grid>\n </SimpleFormContent>\n <SimpleFormFooter data-testid={\"form-footer\"}>\n <Button\n disabled={isExternal}\n data-testid=\"account.updatebutton\"\n onClick={form.submit}\n >{t`Update account`}</Button>\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n </CenteredView>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,OAAOC,IAAI,MAAM,gBAAgB;AACjC,SAASC,QAAQ,EAAEC,WAAW,QAAQ,qBAAqB;AAC3D,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,WAAW;AACpB,SAASC,gBAAgB,EAAEC,mBAAmB;AAC9C,SAASC,MAAM,IAAIC,SAAS,QAAQ,uBAAuB;AAE3D,SACIC,UAAU,EACVC,gBAAgB,EAChBC,gBAAgB,EAChBC,iBAAiB,EACjBC,WAAW,QACR,mBAAmB;AAC1B,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,oBAAoB;AAC7B,SAASC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAEC,aAAa,EAAEC,QAAQ,QAAQ,kBAAkB;AAEtF,MAAMC,CAAC,GAAGrB,IAAI,CAACsB,EAAE,CAAC,uCAAuC,CAAC;AAc1D,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACjC,MAAM,CAACC,QAAQ,EAAEC,SAAS,CAAC,GAAG7B,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM8B,KAAK,GAAGN,QAAQ,CAAC,CAAC;EACxB,MAAM;IAAEO;EAAS,CAAC,GAAGf,WAAW,CAAC,CAAC;EAClC,MAAMgB,iBAAiB,GAAGd,oBAAoB,CAAC,CAAC;EAChD,MAAMe,WAAW,GAAG/B,QAAQ,CAACM,gBAAgB,CAAC;EAC9C,MAAM,CAAC0B,UAAU,CAAC,GAAG/B,WAAW,CAACM,mBAAmB,CAAC;EAErD,MAAM0B,IAAI,GAAGF,WAAW,CAACG,OAAO,GAAG,CAAC,CAAC,GAAGH,WAAW,CAACI,IAAI,CAACC,UAAU,CAACH,IAAI,CAACE,IAAI;EAE7E,MAAME,aAAa,GAAGX,QAAQ,IAAIK,WAAW,CAACG,OAAO;EACrD,MAAMI,aAAa,GAAGZ,QAAQ,GAAG,mBAAmB,GAAG,oBAAoB;EAE3E,MAAMa,eAAe,GAAG9B,SAAS,CAAC+B,MAAM,CACpC,6BAA6B,EAC7BC,OAAO,CAACC,GAAG,CAACC,qCAAqC,KAAK,OAC1D,CAAC;EAED,MAAMC,UAAU,GAAGX,IAAI,EAAEY,QAAQ,KAAK,IAAI;EAE1C,MAAMC,QAAQ,GAAG,MAAOC,QAA6B,IAAK;IACtDpB,SAAS,CAAC,IAAI,CAAC;IACf,MAAM;MAAEQ,IAAI,EAAEa;IAAS,CAAC,GAAG,MAAMhB,UAAU,CAAC;MACxCiB,SAAS,EAAE;QAAEd,IAAI,EAAEpC,IAAI,CAACgD,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;MAAE;IAC1D,CAAC,CAAC;IAEF,MAAM;MAAEG;IAAM,CAAC,GAAGF,QAAQ,CAACZ,UAAU,CAACe,iBAAiB;IACvDxB,SAAS,CAAC,KAAK,CAAC;IAEhB,IAAIuB,KAAK,EAAE;MACPtB,KAAK,CAACwB,gBAAgB,CAAC;QACnBC,KAAK,EAAE,6BAA6B;QACpCC,WAAW,EAAEJ,KAAK,CAACK,OAAO;QAC1BC,QAAQ,EAAEC;MACd,CAAC,CAAC;MACF;IACJ;;IAEA;;IAEA5B,QAAQ,CAAC6B,MAAM,CAAC;MACZC,WAAW,EAAE,GAAGZ,QAAQ,CAACa,SAAS,IAAIb,QAAQ,CAACc,QAAQ,EAAE;MACzDC,OAAO,EAAE;QACL,IAAIjC,QAAQ,CAACiC,OAAO,IAAI,CAAC,CAAC,CAAC;QAC3BF,SAAS,EAAEb,QAAQ,CAACa,SAAS;QAC7BC,QAAQ,EAAEd,QAAQ,CAACc,QAAQ;QAC3BE,MAAM,EAAEhB,QAAQ,CAACgB;MACrB;IACJ,CAAC,CAAC;IAEFnC,KAAK,CAACoC,gBAAgB,CAAC;MAAEX,KAAK,EAAE;IAAgC,CAAC,CAAC;EACtE,CAAC;EAED,oBACIxD,KAAA,CAAAoE,aAAA,CAAClD,YAAY;IAACmD,QAAQ,EAAE;EAAI,gBACxBrE,KAAA,CAAAoE,aAAA,CAAC9D,IAAI;IAAsBgC,IAAI,EAAEF,IAAK;IAACa,QAAQ,EAAEA;EAAS,GACrD,CAAC;IAAEX,IAAI;IAAEgC,IAAI;IAAEC;EAAK,CAAC,kBAClBvE,KAAA,CAAAoE,aAAA,CAACvD,UAAU,QACN2B,aAAa,iBAAIxC,KAAA,CAAAoE,aAAA,CAAC5C,aAAa;IAACgD,IAAI,EAAE/B;EAAc,CAAE,CAAC,eACxDzC,KAAA,CAAAoE,aAAA,CAACtD,gBAAgB;IAAC0C,KAAK,EAAE;EAAU,CAAE,CAAC,eACtCxD,KAAA,CAAAoE,aAAA,CAACpD,iBAAiB,QACb+B,UAAU,iBACP/C,KAAA,CAAAoE,aAAA,CAAC9C,IAAI,qBACDtB,KAAA,CAAAoE,aAAA,CAAC9C,IAAI,CAACmD,MAAM;IAACC,IAAI,EAAE;EAAG,gBAClB1E,KAAA,CAAAoE,aAAA,CAAChD,KAAK;IAACuD,IAAI,EAAE,MAAO;IAACnB,KAAK,EAAE;EAAgB,GAAC,qDAEtC,CACE,CACX,CACT,eACDxD,KAAA,CAAAoE,aAAA,CAAC9C,IAAI,qBACDtB,KAAA,CAAAoE,aAAA,CAAC9C,IAAI,CAACmD,MAAM;IAACC,IAAI,EAAE,EAAG;IAAC,eAAa;EAAS,gBACzC1E,KAAA,CAAAoE,aAAA,CAACG,IAAI;IAACK,IAAI,EAAC;EAAQ,gBACf5E,KAAA,CAAAoE,aAAA,CAAC5D,WAAW;IAACqE,KAAK;IAACC,QAAQ,EAAE/B;EAAW,CAAE,CACxC,CACG,CAAC,eACd/C,KAAA,CAAAoE,aAAA,CAAC9C,IAAI,CAACmD,MAAM;IAACC,IAAI,EAAE;EAAG,gBAClB1E,KAAA,CAAAoE,aAAA,CAACG,IAAI;IACDK,IAAI,EAAC,WAAW;IAChBG,UAAU,EAAExE,UAAU,CAACyE,MAAM,CAAC,UAAU;EAAE,gBAE1ChF,KAAA,CAAAoE,aAAA,CAAC7C,KAAK;IACF0D,KAAK,EAAEvD,CAAC,YAAa;IACrBoD,QAAQ,EAAE/B,UAAW;IACrB,eAAY;EAAmB,CAClC,CACC,CACG,CAAC,eACd/C,KAAA,CAAAoE,aAAA,CAAC9C,IAAI,CAACmD,MAAM;IAACC,IAAI,EAAE;EAAG,GACjB,GAAG,eACJ1E,KAAA,CAAAoE,aAAA,CAACG,IAAI;IACDK,IAAI,EAAC,UAAU;IACfG,UAAU,EAAExE,UAAU,CAACyE,MAAM,CAAC,UAAU;EAAE,gBAE1ChF,KAAA,CAAAoE,aAAA,CAAC7C,KAAK;IACF0D,KAAK,EAAEvD,CAAC,WAAY;IACpBoD,QAAQ,EAAE/B,UAAW;IACrB,eAAY;EAAkB,CACjC,CACC,CACG,CAAC,eACd/C,KAAA,CAAAoE,aAAA,CAAC9C,IAAI,CAACmD,MAAM;IAACC,IAAI,EAAE;EAAG,gBAClB1E,KAAA,CAAAoE,aAAA,CAACG,IAAI;IACDK,IAAI,EAAC,OAAO;IACZG,UAAU,EAAExE,UAAU,CAACyE,MAAM,CAAC,gBAAgB;EAAE,gBAEhDhF,KAAA,CAAAoE,aAAA,CAAC7C,KAAK;IACF2D,KAAK,EAAE5C,IAAI,CAAC6C,KAAM;IAClBF,KAAK,EAAEvD,CAAC,OAAQ;IAChBoD,QAAQ,EAAEpC,eAAe,IAAIK,UAAW;IACxC,eAAY,eAAe;IAC3BU,WAAW,EACP;EACH,CACJ,CACC,CACG,CAAC,eACdzD,KAAA,CAAAoE,aAAA,CAAC9C,IAAI,CAACmD,MAAM;IAACC,IAAI,EAAE;EAAG,gBAClB1E,KAAA,CAAAoE,aAAA,CAACG,IAAI;IAACK,IAAI,EAAC,UAAU;IAACG,UAAU,EAAE9C;EAAkB,gBAChDjC,KAAA,CAAAoE,aAAA,CAAC7C,KAAK;IACF6D,YAAY,EAAC,KAAK;IAClBN,QAAQ,EAAExC,IAAI,CAACU,QAAS;IACxBS,WAAW,EACPnB,IAAI,CAAC+C,EAAE,IAAI,kCACd;IACDV,IAAI,EAAC,UAAU;IACfM,KAAK,EAAE,UAAW;IAClB,eAAY;EAAkB,CACjC,CACC,CACG,CACX,CACS,CAAC,eACpBjF,KAAA,CAAAoE,aAAA,CAACrD,gBAAgB;IAAC,eAAa;EAAc,gBACzCf,KAAA,CAAAoE,aAAA,CAAC/C,MAAM;IACHyD,QAAQ,EAAE/B,UAAW;IACrB,eAAY,sBAAsB;IAClCuC,OAAO,EAAEhB,IAAI,CAACiB;EAAO,GACvB7D,CAAC,gBAAyB,CACd,CACV,CAEd,CACI,CAAC;AAEvB,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export declare const GET_CURRENT_USER: import("graphql").DocumentNode;
2
+ export declare const UPDATE_CURRENT_USER: import("graphql").DocumentNode;
@@ -0,0 +1,40 @@
1
+ import gql from "graphql-tag";
2
+ const currentUserFields = /* GraphQL */`
3
+ {
4
+ id
5
+ email
6
+ firstName
7
+ lastName
8
+ avatar
9
+ external
10
+ }
11
+ `;
12
+ export const GET_CURRENT_USER = gql`
13
+ query GetCurrentUser {
14
+ adminUsers {
15
+ user: getCurrentUser {
16
+ data ${currentUserFields}
17
+ error {
18
+ code
19
+ message
20
+ }
21
+ }
22
+ }
23
+ }
24
+ `;
25
+ export const UPDATE_CURRENT_USER = gql`
26
+ mutation UpdateCurrentUser($data: AdminUsersCurrentUserInput!) {
27
+ adminUsers {
28
+ updateCurrentUser(data: $data) {
29
+ data ${currentUserFields}
30
+ error {
31
+ code
32
+ message
33
+ data
34
+ }
35
+ }
36
+ }
37
+ }
38
+ `;
39
+
40
+ //# sourceMappingURL=graphql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["gql","currentUserFields","GET_CURRENT_USER","UPDATE_CURRENT_USER"],"sources":["graphql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nconst currentUserFields = /* GraphQL */ `\n {\n id\n email\n firstName\n lastName\n avatar\n external\n }\n`;\n\nexport const GET_CURRENT_USER = gql`\n query GetCurrentUser {\n adminUsers {\n user: getCurrentUser {\n data ${currentUserFields}\n error {\n code\n message\n }\n }\n }\n }\n`;\n\nexport const UPDATE_CURRENT_USER = gql`\n mutation UpdateCurrentUser($data: AdminUsersCurrentUserInput!) {\n adminUsers {\n updateCurrentUser(data: $data) {\n data ${currentUserFields}\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,aAAa;AAE7B,MAAMC,iBAAiB,GAAG,aAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAGF,GAAG;AACnC;AACA;AACA;AACA,uBAAuBC,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAME,mBAAmB,GAAGH,GAAG;AACtC;AACA;AACA;AACA,uBAAuBC,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export { UserAccountForm } from "./Account.js";
@@ -0,0 +1,3 @@
1
+ export { UserAccountForm } from "./Account.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["UserAccountForm"],"sources":["index.ts"],"sourcesContent":["export { UserAccountForm } from \"./Account.js\";\n"],"mappings":"AAAA,SAASA,eAAe","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ declare const UsersDataList: () => React.JSX.Element;
3
+ export default UsersDataList;