@webiny/cognito 6.3.0 → 6.4.0-beta.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.
- package/Cognito.js +23 -24
- package/Cognito.js.map +1 -1
- package/admin/Cognito.js +35 -41
- package/admin/Cognito.js.map +1 -1
- package/admin/CognitoLogin.js +8 -13
- package/admin/CognitoLogin.js.map +1 -1
- package/admin/Extension.js +17 -16
- package/admin/Extension.js.map +1 -1
- package/admin/SecurityPermission.js +11 -14
- package/admin/SecurityPermission.js.map +1 -1
- package/admin/domain/permissionsSchema.js +14 -9
- package/admin/domain/permissionsSchema.js.map +1 -1
- package/admin/features/permissions/abstractions.js +2 -1
- package/admin/features/permissions/abstractions.js.map +1 -1
- package/admin/features/permissions/feature.js +2 -1
- package/admin/features/permissions/feature.js.map +1 -1
- package/admin/federatedIdentityProviders.js +7 -6
- package/admin/federatedIdentityProviders.js.map +1 -1
- package/admin/presentation/Cognito/CognitoLoginScreen.js +39 -42
- package/admin/presentation/Cognito/CognitoLoginScreen.js.map +1 -1
- package/admin/presentation/Cognito/CognitoPresenter.js +250 -275
- package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -1
- package/admin/presentation/Cognito/abstractions.js +2 -1
- package/admin/presentation/Cognito/abstractions.js.map +1 -1
- package/admin/presentation/Cognito/components/Divider.js +12 -13
- package/admin/presentation/Cognito/components/Divider.js.map +1 -1
- package/admin/presentation/Cognito/components/FederatedLogin.js +24 -29
- package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -1
- package/admin/presentation/Cognito/components/FederatedProviders.js +7 -10
- package/admin/presentation/Cognito/components/FederatedProviders.js.map +1 -1
- package/admin/presentation/Cognito/components/FooterSignIn.js +9 -12
- package/admin/presentation/Cognito/components/FooterSignIn.js.map +1 -1
- package/admin/presentation/Cognito/components/PasswordResetCodeSent.js +33 -37
- package/admin/presentation/Cognito/components/PasswordResetCodeSent.js.map +1 -1
- package/admin/presentation/Cognito/components/RequestPasswordResetCode.js +35 -39
- package/admin/presentation/Cognito/components/RequestPasswordResetCode.js.map +1 -1
- package/admin/presentation/Cognito/components/RequireNewPassword.js +44 -48
- package/admin/presentation/Cognito/components/RequireNewPassword.js.map +1 -1
- package/admin/presentation/Cognito/components/SetNewPassword.js +70 -71
- package/admin/presentation/Cognito/components/SetNewPassword.js.map +1 -1
- package/admin/presentation/Cognito/components/SignIn.js +52 -59
- package/admin/presentation/Cognito/components/SignIn.js.map +1 -1
- package/admin/presentation/Cognito/components/View.js +41 -60
- package/admin/presentation/Cognito/components/View.js.map +1 -1
- package/admin/presentation/Cognito/feature.js +12 -11
- package/admin/presentation/Cognito/feature.js.map +1 -1
- package/admin/presentation/shared/createPasswordValidator.js +13 -24
- package/admin/presentation/shared/createPasswordValidator.js.map +1 -1
- package/admin/presentation/shared/usePasswordValidator.js +11 -10
- package/admin/presentation/shared/usePasswordValidator.js.map +1 -1
- package/admin/presentation/userMenu/AccountDetails.js +15 -18
- package/admin/presentation/userMenu/AccountDetails.js.map +1 -1
- package/admin/presentation/userMenu/useIsDefaultTenant.js +5 -11
- package/admin/presentation/userMenu/useIsDefaultTenant.js.map +1 -1
- package/admin/routes.js +16 -17
- package/admin/routes.js.map +1 -1
- package/admin/ui/UserItem.js +0 -3
- package/admin/ui/components/AvatarImage/AvatarImage.js +25 -37
- package/admin/ui/components/AvatarImage/AvatarImage.js.map +1 -1
- package/admin/ui/components/AvatarImage/AvatarImagePreview.js +49 -51
- package/admin/ui/components/AvatarImage/AvatarImagePreview.js.map +1 -1
- package/admin/ui/components/AvatarImage/AvatarImageTrigger.js +25 -26
- package/admin/ui/components/AvatarImage/AvatarImageTrigger.js.map +1 -1
- package/admin/ui/components/AvatarImage/index.js +0 -2
- package/admin/ui/views/Account/Account.js +117 -130
- package/admin/ui/views/Account/Account.js.map +1 -1
- package/admin/ui/views/Account/graphql.js +5 -4
- package/admin/ui/views/Account/graphql.js.map +1 -1
- package/admin/ui/views/Account/index.js +0 -2
- package/admin/ui/views/Users/UsersDataList.js +146 -159
- package/admin/ui/views/Users/UsersDataList.js.map +1 -1
- package/admin/ui/views/Users/UsersForm.js +151 -162
- package/admin/ui/views/Users/UsersForm.js.map +1 -1
- package/admin/ui/views/Users/UsersView.js +9 -9
- package/admin/ui/views/Users/UsersView.js.map +1 -1
- package/admin/ui/views/Users/components/DeleteAction.js +23 -30
- package/admin/ui/views/Users/components/DeleteAction.js.map +1 -1
- package/admin/ui/views/Users/graphql.js +9 -10
- package/admin/ui/views/Users/graphql.js.map +1 -1
- package/admin/ui/views/Users/hooks/useUserForm.js +104 -114
- package/admin/ui/views/Users/hooks/useUserForm.js.map +1 -1
- package/admin/ui/views/Users/search.js +21 -0
- package/admin/ui/views/Users/search.js.map +1 -0
- package/admin/ui/views/utils.js +9 -7
- package/admin/ui/views/utils.js.map +1 -1
- package/api/CognitoApiFeature.js +15 -17
- package/api/CognitoApiFeature.js.map +1 -1
- package/api/domain/Username.js +5 -4
- package/api/domain/Username.js.map +1 -1
- package/api/domain/errors.js +37 -56
- package/api/domain/errors.js.map +1 -1
- package/api/features/CognitoIdp/CognitoIdentityProvider.js +49 -51
- package/api/features/CognitoIdp/CognitoIdentityProvider.js.map +1 -1
- package/api/features/CognitoIdp/abstractions.js +2 -1
- package/api/features/CognitoIdp/abstractions.js.map +1 -1
- package/api/features/CognitoIdp/feature.js +6 -5
- package/api/features/CognitoIdp/feature.js.map +1 -1
- package/api/features/CognitoIdp/index.js +0 -2
- package/api/features/CognitoService/CognitoService.js +93 -83
- package/api/features/CognitoService/CognitoService.js.map +1 -1
- package/api/features/CognitoService/abstractions.js +3 -5
- package/api/features/CognitoService/abstractions.js.map +1 -1
- package/api/features/CognitoService/feature.js +7 -6
- package/api/features/CognitoService/feature.js.map +1 -1
- package/api/features/CognitoService/index.js +0 -2
- package/api/features/CreateUser/CreateUserUseCase.js +62 -88
- package/api/features/CreateUser/CreateUserUseCase.js.map +1 -1
- package/api/features/CreateUser/abstractions.js +2 -1
- package/api/features/CreateUser/abstractions.js.map +1 -1
- package/api/features/CreateUser/feature.js +6 -5
- package/api/features/CreateUser/feature.js.map +1 -1
- package/api/features/CreateUser/index.js +0 -2
- package/api/features/CreateUser/schema.js +14 -13
- package/api/features/CreateUser/schema.js.map +1 -1
- package/api/features/DeleteUser/DeleteUserUseCase.js +34 -41
- package/api/features/DeleteUser/DeleteUserUseCase.js.map +1 -1
- package/api/features/DeleteUser/abstractions.js +2 -1
- package/api/features/DeleteUser/abstractions.js.map +1 -1
- package/api/features/DeleteUser/feature.js +6 -5
- package/api/features/DeleteUser/feature.js.map +1 -1
- package/api/features/DeleteUser/index.js +0 -2
- package/api/features/UpdateUser/UpdateUserUseCase.js +49 -71
- package/api/features/UpdateUser/UpdateUserUseCase.js.map +1 -1
- package/api/features/UpdateUser/abstractions.js +2 -1
- package/api/features/UpdateUser/abstractions.js.map +1 -1
- package/api/features/UpdateUser/feature.js +6 -5
- package/api/features/UpdateUser/feature.js.map +1 -1
- package/api/features/UpdateUser/index.js +0 -2
- package/api/features/UpdateUser/schema.js +13 -12
- package/api/features/UpdateUser/schema.js.map +1 -1
- package/api/features/UserInstaller/UserInstaller.js +36 -36
- package/api/features/UserInstaller/UserInstaller.js.map +1 -1
- package/api/features/UserInstaller/feature.js +6 -5
- package/api/features/UserInstaller/feature.js.map +1 -1
- package/api/graphql/user.gql.js +83 -107
- package/api/graphql/user.gql.js.map +1 -1
- package/index.js +0 -2
- package/package.json +22 -23
- package/static/svg/search.43fa797c.svg +20 -0
- package/admin/ui/UserItem.js.map +0 -1
- package/admin/ui/components/AvatarImage/index.js.map +0 -1
- package/admin/ui/views/Account/index.js.map +0 -1
- package/api/features/CognitoIdp/index.js.map +0 -1
- package/api/features/CognitoService/index.js.map +0 -1
- package/api/features/CreateUser/index.js.map +0 -1
- package/api/features/DeleteUser/index.js.map +0 -1
- package/api/features/UpdateUser/index.js.map +0 -1
- package/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/presentation/shared/createPasswordValidator.js","sources":["../../../../src/admin/presentation/shared/createPasswordValidator.ts"],"sourcesContent":["import { ValidationError } from \"@webiny/validation\";\n\nexport interface PasswordPolicy {\n minimumLength?: number;\n requireLowercase?: boolean;\n requireNumbers?: boolean;\n requireSymbols?: boolean;\n requireUppercase?: boolean;\n}\n\nexport const createPasswordValidator =\n (policy: PasswordPolicy) =>\n (value?: string): void => {\n if (!value) {\n return;\n }\n\n const requireSymbols = /([=+\\-^$*.[\\]{}()?\"!@#%&/,><':;|_~`])+/;\n const requireNumber = /[0-9]/;\n const requireLowercase = /[a-z]/;\n const requireUppercase = /[A-Z]/;\n\n if (policy.minimumLength !== undefined && value.length < policy.minimumLength) {\n throw new ValidationError(\n `Value requires at least ${policy.minimumLength} characters.`\n );\n }\n\n if (policy.requireLowercase && !requireLowercase.test(value)) {\n throw new ValidationError(\"Value must contain a lowercase character.\");\n }\n\n if (policy.requireNumbers && !requireNumber.test(value)) {\n throw new ValidationError(\"Value must contain a number.\");\n }\n\n if (policy.requireUppercase && !requireUppercase.test(value)) {\n throw new ValidationError(\"Value must contain an uppercase character.\");\n }\n\n if (policy.requireSymbols && !requireSymbols.test(value)) {\n throw new ValidationError(\"Value must contain a special character.\");\n }\n };\n"],"names":["createPasswordValidator","policy","value","requireSymbols","requireNumber","requireLowercase","requireUppercase","undefined","ValidationError"],"mappings":";AAUO,MAAMA,0BACT,CAACC,SACD,CAACC;QACG,IAAI,CAACA,OACD;QAGJ,MAAMC,iBAAiB;QACvB,MAAMC,gBAAgB;QACtB,MAAMC,mBAAmB;QACzB,MAAMC,mBAAmB;QAEzB,IAAIL,AAAyBM,WAAzBN,OAAO,aAAa,IAAkBC,MAAM,MAAM,GAAGD,OAAO,aAAa,EACzE,MAAM,IAAIO,gBACN,CAAC,wBAAwB,EAAEP,OAAO,aAAa,CAAC,YAAY,CAAC;QAIrE,IAAIA,OAAO,gBAAgB,IAAI,CAACI,iBAAiB,IAAI,CAACH,QAClD,MAAM,IAAIM,gBAAgB;QAG9B,IAAIP,OAAO,cAAc,IAAI,CAACG,cAAc,IAAI,CAACF,QAC7C,MAAM,IAAIM,gBAAgB;QAG9B,IAAIP,OAAO,gBAAgB,IAAI,CAACK,iBAAiB,IAAI,CAACJ,QAClD,MAAM,IAAIM,gBAAgB;QAG9B,IAAIP,OAAO,cAAc,IAAI,CAACE,eAAe,IAAI,CAACD,QAC9C,MAAM,IAAIM,gBAAgB;IAElC"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { config
|
|
1
|
+
import { config } from "@webiny/app/config.js";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
import { createPasswordValidator } from "./createPasswordValidator.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
function usePasswordValidator() {
|
|
5
|
+
let envPasswordValidatorPolicy;
|
|
6
|
+
try {
|
|
7
|
+
envPasswordValidatorPolicy = JSON.parse(process.env.REACT_APP_USER_POOL_PASSWORD_POLICY);
|
|
8
|
+
} catch {}
|
|
9
|
+
const passwordValidatorPolicy = config.getKey("USER_POOL_PASSWORD_POLICY", envPasswordValidatorPolicy);
|
|
10
|
+
return useMemo(()=>createPasswordValidator(passwordValidatorPolicy), [
|
|
11
|
+
passwordValidatorPolicy
|
|
12
|
+
]);
|
|
13
13
|
}
|
|
14
|
+
export { usePasswordValidator };
|
|
14
15
|
|
|
15
16
|
//# sourceMappingURL=usePasswordValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/presentation/shared/usePasswordValidator.js","sources":["../../../../src/admin/presentation/shared/usePasswordValidator.ts"],"sourcesContent":["import { config as appConfig } from \"@webiny/app/config.js\";\nimport { useMemo } from \"react\";\nimport { createPasswordValidator, type PasswordPolicy } from \"./createPasswordValidator.js\";\n\nexport function usePasswordValidator() {\n let envPasswordValidatorPolicy;\n try {\n envPasswordValidatorPolicy = JSON.parse(\n process.env.REACT_APP_USER_POOL_PASSWORD_POLICY as string\n );\n } catch {\n // Do nothing.\n }\n\n const passwordValidatorPolicy = appConfig.getKey<PasswordPolicy>(\n \"USER_POOL_PASSWORD_POLICY\",\n envPasswordValidatorPolicy\n );\n\n return useMemo(\n () => createPasswordValidator(passwordValidatorPolicy),\n [passwordValidatorPolicy]\n );\n}\n"],"names":["usePasswordValidator","envPasswordValidatorPolicy","JSON","process","passwordValidatorPolicy","appConfig","useMemo","createPasswordValidator"],"mappings":";;;AAIO,SAASA;IACZ,IAAIC;IACJ,IAAI;QACAA,6BAA6BC,KAAK,KAAK,CACnCC,QAAQ,GAAG,CAAC,mCAAmC;IAEvD,EAAE,OAAM,CAER;IAEA,MAAMC,0BAA0BC,OAAAA,MAAgB,CAC5C,6BACAJ;IAGJ,OAAOK,QACH,IAAMC,wBAAwBH,0BAC9B;QAACA;KAAwB;AAEjC"}
|
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ReactComponent
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { ReactComponent } from "@webiny/icons/account_circle.svg";
|
|
3
3
|
import { AdminConfig } from "@webiny/app-admin";
|
|
4
4
|
import { useIsDefaultTenant } from "./useIsDefaultTenant.js";
|
|
5
|
-
const {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}),
|
|
18
|
-
text: "Account settings",
|
|
19
|
-
to: props.accountRoute
|
|
20
|
-
});
|
|
5
|
+
const { Menu: Menu } = AdminConfig;
|
|
6
|
+
const AccountDetails = (props)=>{
|
|
7
|
+
const isDefaultTenant = useIsDefaultTenant();
|
|
8
|
+
if (!isDefaultTenant) return null;
|
|
9
|
+
return /*#__PURE__*/ react.createElement(Menu.User.Link, {
|
|
10
|
+
icon: /*#__PURE__*/ react.createElement(Menu.User.Item.Icon, {
|
|
11
|
+
element: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
12
|
+
label: "Account settings"
|
|
13
|
+
}),
|
|
14
|
+
text: "Account settings",
|
|
15
|
+
to: props.accountRoute
|
|
16
|
+
});
|
|
21
17
|
};
|
|
18
|
+
export { AccountDetails };
|
|
22
19
|
|
|
23
20
|
//# sourceMappingURL=AccountDetails.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/presentation/userMenu/AccountDetails.js","sources":["../../../../src/admin/presentation/userMenu/AccountDetails.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as AccountIcon } from \"@webiny/icons/account_circle.svg\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { useIsDefaultTenant } from \"./useIsDefaultTenant.js\";\n\nconst { Menu } = AdminConfig;\n\ninterface AccountDetailsProps {\n accountRoute: string;\n}\n\nexport const AccountDetails = (props: AccountDetailsProps) => {\n const isDefaultTenant = useIsDefaultTenant();\n\n if (!isDefaultTenant) {\n return null;\n }\n return (\n <Menu.User.Link\n icon={<Menu.User.Item.Icon element={<AccountIcon />} label={\"Account settings\"} />}\n text={\"Account settings\"}\n to={props.accountRoute}\n />\n );\n};\n"],"names":["Menu","AdminConfig","AccountDetails","props","isDefaultTenant","useIsDefaultTenant","AccountIcon"],"mappings":";;;;AAKA,MAAM,EAAEA,MAAAA,IAAI,EAAE,GAAGC;AAMV,MAAMC,iBAAiB,CAACC;IAC3B,MAAMC,kBAAkBC;IAExB,IAAI,CAACD,iBACD,OAAO;IAEX,OAAO,WAAP,GACI,oBAACJ,KAAK,IAAI,CAAC,IAAI;QACX,oBAAM,oBAACA,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;YAAC,uBAAS,oBAACM,gBAAWA;YAAK,OAAO;;QAC5D,MAAM;QACN,IAAIH,MAAM,YAAY;;AAGlC"}
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
import { useIdentity } from "@webiny/app-admin";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
identity
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
// This is only applicable in multi-tenant environments
|
|
8
|
-
const {
|
|
9
|
-
currentTenant,
|
|
10
|
-
defaultTenant
|
|
11
|
-
} = identity;
|
|
12
|
-
return currentTenant.id === defaultTenant.id;
|
|
2
|
+
function useIsDefaultTenant() {
|
|
3
|
+
const { identity } = useIdentity();
|
|
4
|
+
const { currentTenant, defaultTenant } = identity;
|
|
5
|
+
return currentTenant.id === defaultTenant.id;
|
|
13
6
|
}
|
|
7
|
+
export { useIsDefaultTenant };
|
|
14
8
|
|
|
15
9
|
//# sourceMappingURL=useIsDefaultTenant.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/presentation/userMenu/useIsDefaultTenant.js","sources":["../../../../src/admin/presentation/userMenu/useIsDefaultTenant.ts"],"sourcesContent":["import { useIdentity } from \"@webiny/app-admin\";\n\nexport function useIsDefaultTenant(): boolean {\n const { identity } = useIdentity();\n\n // This is only applicable in multi-tenant environments\n const { currentTenant, defaultTenant } = identity;\n\n return currentTenant.id === defaultTenant.id;\n}\n"],"names":["useIsDefaultTenant","identity","useIdentity","currentTenant","defaultTenant"],"mappings":";AAEO,SAASA;IACZ,MAAM,EAAEC,QAAQ,EAAE,GAAGC;IAGrB,MAAM,EAAEC,aAAa,EAAEC,aAAa,EAAE,GAAGH;IAEzC,OAAOE,cAAc,EAAE,KAAKC,cAAc,EAAE;AAChD"}
|
package/admin/routes.js
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { Route } from "@webiny/app-admin";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
})
|
|
18
|
-
}
|
|
2
|
+
const Routes = {
|
|
3
|
+
Users: {
|
|
4
|
+
List: new Route({
|
|
5
|
+
name: "Cognito/Users/List",
|
|
6
|
+
path: "/admin-users",
|
|
7
|
+
params: (z)=>({
|
|
8
|
+
id: z.string().optional(),
|
|
9
|
+
new: z.boolean().optional()
|
|
10
|
+
})
|
|
11
|
+
}),
|
|
12
|
+
Account: new Route({
|
|
13
|
+
name: "Cognito/Users/Account",
|
|
14
|
+
path: "/account"
|
|
15
|
+
})
|
|
16
|
+
}
|
|
19
17
|
};
|
|
18
|
+
export { Routes };
|
|
20
19
|
|
|
21
20
|
//# sourceMappingURL=routes.js.map
|
package/admin/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/routes.js","sources":["../../src/admin/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"],"names":["Routes","Route","z"],"mappings":";AAEO,MAAMA,SAAS;IAClB,OAAO;QACH,MAAM,IAAIC,MAAM;YACZ,MAAM;YACN,MAAM;YACN,QAAQC,CAAAA,IACG;oBACH,IAAIA,EAAE,MAAM,GAAG,QAAQ;oBACvB,KAAKA,EAAE,OAAO,GAAG,QAAQ;gBAC7B;QAER;QACA,SAAS,IAAID,MAAM;YACf,MAAM;YACN,MAAM;QACV;IACJ;AACJ"}
|
package/admin/ui/UserItem.js
CHANGED
|
@@ -1,43 +1,31 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
1
|
import { SingleImageUpload } from "@webiny/app-admin";
|
|
3
2
|
import { AvatarImagePreview } from "./AvatarImagePreview.js";
|
|
4
3
|
import { AvatarImageTrigger } from "./AvatarImageTrigger.js";
|
|
5
4
|
import { cn } from "@webiny/admin-ui";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
};
|
|
5
|
+
import * as __rspack_external_react from "react";
|
|
6
|
+
const AvatarImage = ({ round, ...props })=>/*#__PURE__*/ __rspack_external_react.createElement("div", {
|
|
7
|
+
className: "w-full flex-1"
|
|
8
|
+
}, /*#__PURE__*/ __rspack_external_react.createElement("div", {
|
|
9
|
+
className: cn([
|
|
10
|
+
"size-[128px] mx-auto relative overflow-hidden",
|
|
11
|
+
round && "rounded-full"
|
|
12
|
+
])
|
|
13
|
+
}, /*#__PURE__*/ __rspack_external_react.createElement(SingleImageUpload, {
|
|
14
|
+
...props,
|
|
15
|
+
className: "p-0 border-none!",
|
|
16
|
+
variant: "ghost",
|
|
17
|
+
type: "area",
|
|
18
|
+
renderFilePreview: ({ onReplaceItem, onRemoveItem, value, disabled })=>/*#__PURE__*/ __rspack_external_react.createElement(AvatarImagePreview, {
|
|
19
|
+
onReplaceItem: onReplaceItem,
|
|
20
|
+
onRemoveItem: onRemoveItem,
|
|
21
|
+
value: value,
|
|
22
|
+
disabled: disabled
|
|
23
|
+
}),
|
|
24
|
+
renderTrigger: ({ onSelectItem, disabled })=>/*#__PURE__*/ __rspack_external_react.createElement(AvatarImageTrigger, {
|
|
25
|
+
disabled: disabled,
|
|
26
|
+
onSelectItem: onSelectItem
|
|
27
|
+
})
|
|
28
|
+
})));
|
|
29
|
+
export { AvatarImage };
|
|
42
30
|
|
|
43
31
|
//# sourceMappingURL=AvatarImage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/ui/components/AvatarImage/AvatarImage.js","sources":["../../../../../src/admin/ui/components/AvatarImage/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"],"names":["AvatarImage","round","props","cn","SingleImageUpload","onReplaceItem","onRemoveItem","value","disabled","AvatarImagePreview","onSelectItem","AvatarImageTrigger"],"mappings":";;;;;AAOO,MAAMA,cAAc,CAAC,EAAEC,KAAK,EAAE,GAAGC,OAA+B,GAC5D,WAAP,GACI,sCAAC;QAAI,WAAW;qBACZ,sCAAC;QACG,WAAWC,GAAG;YACV;YACAF,SAAS;SACZ;qBAED,sCAACG,mBAAiBA;QACb,GAAGF,KAAK;QACT,WAAW;QACX,SAAS;QACT,MAAM;QACN,mBAAmB,CAAC,EAAEG,aAAa,EAAEC,YAAY,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GACzD,WAAP,GACI,sCAACC,oBAAkBA;gBACf,eAAeJ;gBACf,cAAcC;gBACd,OAAOC;gBACP,UAAUC;;QAItB,eAAe,CAAC,EAAEE,YAAY,EAAEF,QAAQ,EAAE,GAC/B,WAAP,GACI,sCAACG,oBAAkBA;gBAAC,UAAUH;gBAAU,cAAcE"}
|
|
@@ -1,55 +1,53 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ReactComponent
|
|
3
|
-
import { ReactComponent as
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { ReactComponent } from "@webiny/icons/delete.svg";
|
|
3
|
+
import { ReactComponent as edit_svg_ReactComponent } from "@webiny/icons/edit.svg";
|
|
4
4
|
import { Icon, IconButton, Tooltip, cn } from "@webiny/admin-ui";
|
|
5
|
-
const AvatarImagePreview = ({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
})
|
|
51
|
-
}))));
|
|
52
|
-
};
|
|
5
|
+
const AvatarImagePreview = ({ value, onReplaceItem, onRemoveItem, disabled })=>/*#__PURE__*/ react.createElement("div", {
|
|
6
|
+
className: "w-full flex-1"
|
|
7
|
+
}, /*#__PURE__*/ react.createElement("div", {
|
|
8
|
+
className: cn("size-[128px] mx-auto relative overflow-hidden")
|
|
9
|
+
}, /*#__PURE__*/ react.createElement("div", {
|
|
10
|
+
className: "size-full"
|
|
11
|
+
}, /*#__PURE__*/ react.createElement("img", {
|
|
12
|
+
src: value.url,
|
|
13
|
+
alt: value.name,
|
|
14
|
+
className: "object-cover size-full"
|
|
15
|
+
})), /*#__PURE__*/ react.createElement("div", {
|
|
16
|
+
className: cn([
|
|
17
|
+
"flex justify-center items-center gap-xs size-full",
|
|
18
|
+
"absolute top-0 left-0",
|
|
19
|
+
"bg-neutral-xstrong/90",
|
|
20
|
+
"opacity-0 hover:opacity-100 transition-opacity"
|
|
21
|
+
])
|
|
22
|
+
}, onReplaceItem && /*#__PURE__*/ react.createElement(Tooltip, {
|
|
23
|
+
content: "Select another image",
|
|
24
|
+
trigger: /*#__PURE__*/ react.createElement(IconButton, {
|
|
25
|
+
icon: /*#__PURE__*/ react.createElement(Icon, {
|
|
26
|
+
icon: /*#__PURE__*/ react.createElement(edit_svg_ReactComponent, null),
|
|
27
|
+
label: "Select another image",
|
|
28
|
+
size: "md",
|
|
29
|
+
color: "neutral-light"
|
|
30
|
+
}),
|
|
31
|
+
variant: "ghost-negative",
|
|
32
|
+
size: "sm",
|
|
33
|
+
onClick: onReplaceItem,
|
|
34
|
+
disabled: disabled
|
|
35
|
+
})
|
|
36
|
+
}), onRemoveItem && /*#__PURE__*/ react.createElement(Tooltip, {
|
|
37
|
+
content: "Remove image",
|
|
38
|
+
trigger: /*#__PURE__*/ react.createElement(IconButton, {
|
|
39
|
+
icon: /*#__PURE__*/ react.createElement(Icon, {
|
|
40
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
41
|
+
label: "Remove",
|
|
42
|
+
size: "md",
|
|
43
|
+
color: "neutral-light"
|
|
44
|
+
}),
|
|
45
|
+
variant: "ghost-negative",
|
|
46
|
+
size: "sm",
|
|
47
|
+
onClick: onRemoveItem,
|
|
48
|
+
disabled: disabled
|
|
49
|
+
})
|
|
50
|
+
}))));
|
|
53
51
|
export { AvatarImagePreview };
|
|
54
52
|
|
|
55
53
|
//# sourceMappingURL=AvatarImagePreview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/ui/components/AvatarImage/AvatarImagePreview.js","sources":["../../../../../src/admin/ui/components/AvatarImage/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"],"names":["AvatarImagePreview","value","onReplaceItem","onRemoveItem","disabled","cn","Tooltip","IconButton","Icon","EditIcon","TrashIcon"],"mappings":";;;;AAaA,MAAMA,qBAAqB,CAAC,EACxBC,KAAK,EACLC,aAAa,EACbC,YAAY,EACZC,QAAQ,EACc,GACf,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAAC;QAAI,WAAWC,GAAG;qBACf,oBAAC;QAAI,WAAW;qBACZ,oBAAC;QAAI,KAAKJ,MAAM,GAAG;QAAE,KAAKA,MAAM,IAAI;QAAE,WAAW;uBAErD,oBAAC;QACG,WAAWI,GAAG;YACV;YACA;YACA;YACA;SACH;OAEAH,iBAAiB,WAAjBA,GACG,oBAACI,SAAOA;QACJ,SAAS;QACT,uBACI,oBAACC,YAAUA;YACP,oBACI,oBAACC,MAAIA;gBACD,oBAAM,oBAACC,yBAAQA;gBACf,OAAO;gBACP,MAAM;gBACN,OAAO;;YAGf,SAAS;YACT,MAAM;YACN,SAASP;YACT,UAAUE;;QAKzBD,gBAAgB,WAAhBA,GACG,oBAACG,SAAOA;QACJ,SAAS;QACT,uBACI,oBAACC,YAAUA;YACP,oBACI,oBAACC,MAAIA;gBACD,oBAAM,oBAACE,gBAASA;gBAChB,OAAO;gBACP,MAAM;gBACN,OAAO;;YAGf,SAAS;YACT,MAAM;YACN,SAASP;YACT,UAAUC"}
|
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ReactComponent
|
|
3
|
-
import {
|
|
4
|
-
const AvatarImageTrigger = ({
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { ReactComponent } from "@webiny/icons/image.svg";
|
|
3
|
+
import { Icon, IconButton, Tooltip, cn } from "@webiny/admin-ui";
|
|
4
|
+
const AvatarImageTrigger = ({ onSelectItem, disabled })=>/*#__PURE__*/ react.createElement("div", {
|
|
5
|
+
"data-role": "select-image",
|
|
6
|
+
className: cn([
|
|
7
|
+
"size-[128px]",
|
|
8
|
+
"flex justify-center items-center gap-xs",
|
|
9
|
+
"bg-neutral-strong"
|
|
10
|
+
])
|
|
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(ReactComponent, 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
|
+
}));
|
|
27
26
|
export { AvatarImageTrigger };
|
|
28
27
|
|
|
29
28
|
//# sourceMappingURL=AvatarImageTrigger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/ui/components/AvatarImage/AvatarImageTrigger.js","sources":["../../../../../src/admin/ui/components/AvatarImage/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"],"names":["AvatarImageTrigger","onSelectItem","disabled","cn","Tooltip","IconButton","Icon","ImageIcon"],"mappings":";;;AASA,MAAMA,qBAAqB,CAAC,EAAEC,YAAY,EAAEC,QAAQ,EAA2B,GACpE,WAAP,GACI,oBAAC;QACG,aAAW;QACX,WAAWC,GAAG;YACV;YACA;YACA;SACH;qBAED,oBAACC,SAAOA;QACJ,SAAS;QACT,uBACI,oBAACC,YAAUA;YACP,oBACI,oBAACC,MAAIA;gBACD,oBAAM,oBAACC,gBAASA;gBAChB,OAAO;gBACP,MAAM;gBACN,OAAO;;YAGf,SAAS;YACT,MAAM;YACN,SAASN;YACT,UAAUC"}
|