@webiny/tenant-manager 0.0.0-unstable.0d717d18dd
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/LICENSE +36 -0
- package/README.md +11 -0
- package/TenantManager.d.ts +2 -0
- package/TenantManager.js +11 -0
- package/TenantManager.js.map +1 -0
- package/admin/CurrentTenant/CurrentTenant.d.ts +10 -0
- package/admin/CurrentTenant/CurrentTenant.js +25 -0
- package/admin/CurrentTenant/CurrentTenant.js.map +1 -0
- package/admin/CurrentTenant/CurrentTenantGateway.d.ts +12 -0
- package/admin/CurrentTenant/CurrentTenantGateway.js +43 -0
- package/admin/CurrentTenant/CurrentTenantGateway.js.map +1 -0
- package/admin/CurrentTenant/CurrentTenantPresenter.d.ts +12 -0
- package/admin/CurrentTenant/CurrentTenantPresenter.js +33 -0
- package/admin/CurrentTenant/CurrentTenantPresenter.js.map +1 -0
- package/admin/CurrentTenant/CurrentTenantRepository.d.ts +15 -0
- package/admin/CurrentTenant/CurrentTenantRepository.js +38 -0
- package/admin/CurrentTenant/CurrentTenantRepository.js.map +1 -0
- package/admin/CurrentTenant/abstractions.d.ts +31 -0
- package/admin/CurrentTenant/abstractions.js +7 -0
- package/admin/CurrentTenant/abstractions.js.map +1 -0
- package/admin/CurrentTenant/feature.d.ts +3 -0
- package/admin/CurrentTenant/feature.js +21 -0
- package/admin/CurrentTenant/feature.js.map +1 -0
- package/admin/CurrentTenant/useCurrentTenant.d.ts +4 -0
- package/admin/CurrentTenant/useCurrentTenant.js +18 -0
- package/admin/CurrentTenant/useCurrentTenant.js.map +1 -0
- package/admin/CurrentTenantProvider.d.ts +2 -0
- package/admin/CurrentTenantProvider.js +9 -0
- package/admin/CurrentTenantProvider.js.map +1 -0
- package/admin/DisableTenant/DisableTenantGateway.d.ts +11 -0
- package/admin/DisableTenant/DisableTenantGateway.js +42 -0
- package/admin/DisableTenant/DisableTenantGateway.js.map +1 -0
- package/admin/DisableTenant/DisableTenantRepository.d.ts +12 -0
- package/admin/DisableTenant/DisableTenantRepository.js +33 -0
- package/admin/DisableTenant/DisableTenantRepository.js.map +1 -0
- package/admin/DisableTenant/DisableTenantUseCase.d.ts +10 -0
- package/admin/DisableTenant/DisableTenantUseCase.js +18 -0
- package/admin/DisableTenant/DisableTenantUseCase.js.map +1 -0
- package/admin/DisableTenant/abstractions.d.ts +21 -0
- package/admin/DisableTenant/abstractions.js +7 -0
- package/admin/DisableTenant/abstractions.js.map +1 -0
- package/admin/DisableTenant/feature.d.ts +3 -0
- package/admin/DisableTenant/feature.js +21 -0
- package/admin/DisableTenant/feature.js.map +1 -0
- package/admin/DisableTenant/index.d.ts +2 -0
- package/admin/DisableTenant/index.js +2 -0
- package/admin/DisableTenant/useDisableTenant.d.ts +4 -0
- package/admin/DisableTenant/useDisableTenant.js +18 -0
- package/admin/DisableTenant/useDisableTenant.js.map +1 -0
- package/admin/EnableTenant/EnableTenantGateway.d.ts +11 -0
- package/admin/EnableTenant/EnableTenantGateway.js +42 -0
- package/admin/EnableTenant/EnableTenantGateway.js.map +1 -0
- package/admin/EnableTenant/EnableTenantRepository.d.ts +12 -0
- package/admin/EnableTenant/EnableTenantRepository.js +33 -0
- package/admin/EnableTenant/EnableTenantRepository.js.map +1 -0
- package/admin/EnableTenant/EnableTenantUseCase.d.ts +10 -0
- package/admin/EnableTenant/EnableTenantUseCase.js +18 -0
- package/admin/EnableTenant/EnableTenantUseCase.js.map +1 -0
- package/admin/EnableTenant/abstractions.d.ts +21 -0
- package/admin/EnableTenant/abstractions.js +7 -0
- package/admin/EnableTenant/abstractions.js.map +1 -0
- package/admin/EnableTenant/feature.d.ts +3 -0
- package/admin/EnableTenant/feature.js +21 -0
- package/admin/EnableTenant/feature.js.map +1 -0
- package/admin/EnableTenant/index.d.ts +2 -0
- package/admin/EnableTenant/index.js +2 -0
- package/admin/EnableTenant/useEnableTenant.d.ts +4 -0
- package/admin/EnableTenant/useEnableTenant.js +24 -0
- package/admin/EnableTenant/useEnableTenant.js.map +1 -0
- package/admin/Extension.d.ts +2 -0
- package/admin/Extension.js +49 -0
- package/admin/Extension.js.map +1 -0
- package/admin/InstallTenant/InstallTenantGateway.d.ts +11 -0
- package/admin/InstallTenant/InstallTenantGateway.js +42 -0
- package/admin/InstallTenant/InstallTenantGateway.js.map +1 -0
- package/admin/InstallTenant/InstallTenantRepository.d.ts +12 -0
- package/admin/InstallTenant/InstallTenantRepository.js +34 -0
- package/admin/InstallTenant/InstallTenantRepository.js.map +1 -0
- package/admin/InstallTenant/InstallTenantUseCase.d.ts +10 -0
- package/admin/InstallTenant/InstallTenantUseCase.js +18 -0
- package/admin/InstallTenant/InstallTenantUseCase.js.map +1 -0
- package/admin/InstallTenant/abstractions.d.ts +21 -0
- package/admin/InstallTenant/abstractions.js +7 -0
- package/admin/InstallTenant/abstractions.js.map +1 -0
- package/admin/InstallTenant/feature.d.ts +3 -0
- package/admin/InstallTenant/feature.js +21 -0
- package/admin/InstallTenant/feature.js.map +1 -0
- package/admin/InstallTenant/index.d.ts +2 -0
- package/admin/InstallTenant/index.js +2 -0
- package/admin/InstallTenant/useInstallTenant.d.ts +4 -0
- package/admin/InstallTenant/useInstallTenant.js +24 -0
- package/admin/InstallTenant/useInstallTenant.js.map +1 -0
- package/admin/IsRootTenant.d.ts +13 -0
- package/admin/IsRootTenant.js +19 -0
- package/admin/IsRootTenant.js.map +1 -0
- package/admin/SecurityPermission.d.ts +2 -0
- package/admin/SecurityPermission.js +15 -0
- package/admin/SecurityPermission.js.map +1 -0
- package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.d.ts +8 -0
- package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js +41 -0
- package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js.map +1 -0
- package/admin/TenantEntryList/EnableTenant/EnableTenant.d.ts +7 -0
- package/admin/TenantEntryList/EnableTenant/EnableTenant.js +15 -0
- package/admin/TenantEntryList/EnableTenant/EnableTenant.js.map +1 -0
- package/admin/TenantEntryList/EnableTenant/useEnableTenant.d.ts +5 -0
- package/admin/TenantEntryList/EnableTenant/useEnableTenant.js +31 -0
- package/admin/TenantEntryList/EnableTenant/useEnableTenant.js.map +1 -0
- package/admin/TenantEntryList/FolderNameCell.d.ts +7 -0
- package/admin/TenantEntryList/FolderNameCell.js +24 -0
- package/admin/TenantEntryList/FolderNameCell.js.map +1 -0
- package/admin/TenantEntryList/InstallTenantButton/InstallTenant.d.ts +7 -0
- package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js +15 -0
- package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js.map +1 -0
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.d.ts +5 -0
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js +31 -0
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js.map +1 -0
- package/admin/TenantEntryList/ManageTenant.d.ts +7 -0
- package/admin/TenantEntryList/ManageTenant.js +19 -0
- package/admin/TenantEntryList/ManageTenant.js.map +1 -0
- package/admin/TenantEntryList/TenantCell.d.ts +2 -0
- package/admin/TenantEntryList/TenantCell.js +24 -0
- package/admin/TenantEntryList/TenantCell.js.map +1 -0
- package/admin/TenantEntryList/TenantNameCell.d.ts +2 -0
- package/admin/TenantEntryList/TenantNameCell.js +51 -0
- package/admin/TenantEntryList/TenantNameCell.js.map +1 -0
- package/admin/TenantEntryList.d.ts +2 -0
- package/admin/TenantEntryList.js +59 -0
- package/admin/TenantEntryList.js.map +1 -0
- package/admin/TenantSelector.d.ts +2 -0
- package/admin/TenantSelector.js +35 -0
- package/admin/TenantSelector.js.map +1 -0
- package/admin/domain/permissionsSchema.d.ts +4 -0
- package/admin/domain/permissionsSchema.js +8 -0
- package/admin/domain/permissionsSchema.js.map +1 -0
- package/admin/features/permissions/abstractions.d.ts +17 -0
- package/admin/features/permissions/abstractions.js +6 -0
- package/admin/features/permissions/abstractions.js.map +1 -0
- package/admin/features/permissions/feature.d.ts +14 -0
- package/admin/features/permissions/feature.js +7 -0
- package/admin/features/permissions/feature.js.map +1 -0
- package/admin/types.d.ts +7 -0
- package/admin/types.js +0 -0
- package/api/Extension.d.ts +4 -0
- package/api/Extension.js +39 -0
- package/api/Extension.js.map +1 -0
- package/api/domain/TenantId.d.ts +3 -0
- package/api/domain/TenantId.js +10 -0
- package/api/domain/TenantId.js.map +1 -0
- package/api/domain/TenantModel.d.ts +11 -0
- package/api/domain/TenantModel.js +68 -0
- package/api/domain/TenantModel.js.map +1 -0
- package/api/domain/TenantModelExtension.d.ts +11 -0
- package/api/domain/TenantModelExtension.js +5 -0
- package/api/domain/TenantModelExtension.js.map +1 -0
- package/api/domain/errors.d.ts +33 -0
- package/api/domain/errors.js +58 -0
- package/api/domain/errors.js.map +1 -0
- package/api/features/AddCmsPermissions/AddCmsPermissions.d.ts +8 -0
- package/api/features/AddCmsPermissions/AddCmsPermissions.js +48 -0
- package/api/features/AddCmsPermissions/AddCmsPermissions.js.map +1 -0
- package/api/features/AddCmsPermissions/feature.d.ts +4 -0
- package/api/features/AddCmsPermissions/feature.js +11 -0
- package/api/features/AddCmsPermissions/feature.js.map +1 -0
- package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.d.ts +24 -0
- package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js +81 -0
- package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js.map +1 -0
- package/api/features/CreateAndInstallTenant/abstractions.d.ts +26 -0
- package/api/features/CreateAndInstallTenant/abstractions.js +5 -0
- package/api/features/CreateAndInstallTenant/abstractions.js.map +1 -0
- package/api/features/CreateAndInstallTenant/feature.d.ts +4 -0
- package/api/features/CreateAndInstallTenant/feature.js +11 -0
- package/api/features/CreateAndInstallTenant/feature.js.map +1 -0
- package/api/features/CreateTenant/CreateTenantRepository.d.ts +15 -0
- package/api/features/CreateTenant/CreateTenantRepository.js +43 -0
- package/api/features/CreateTenant/CreateTenantRepository.js.map +1 -0
- package/api/features/CreateTenant/CreateTenantUseCase.d.ts +14 -0
- package/api/features/CreateTenant/CreateTenantUseCase.js +40 -0
- package/api/features/CreateTenant/CreateTenantUseCase.js.map +1 -0
- package/api/features/CreateTenant/abstractions.d.ts +41 -0
- package/api/features/CreateTenant/abstractions.js +6 -0
- package/api/features/CreateTenant/abstractions.js.map +1 -0
- package/api/features/CreateTenant/feature.d.ts +4 -0
- package/api/features/CreateTenant/feature.js +13 -0
- package/api/features/CreateTenant/feature.js.map +1 -0
- package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.d.ts +11 -0
- package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js +27 -0
- package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js.map +1 -0
- package/api/features/DeleteTenantOnEntryDelete/feature.d.ts +4 -0
- package/api/features/DeleteTenantOnEntryDelete/feature.js +11 -0
- package/api/features/DeleteTenantOnEntryDelete/feature.js.map +1 -0
- package/api/features/DisableTenant/DisableTenantUseCase.d.ts +20 -0
- package/api/features/DisableTenant/DisableTenantUseCase.js +53 -0
- package/api/features/DisableTenant/DisableTenantUseCase.js.map +1 -0
- package/api/features/DisableTenant/abstractions.d.ts +19 -0
- package/api/features/DisableTenant/abstractions.js +5 -0
- package/api/features/DisableTenant/abstractions.js.map +1 -0
- package/api/features/DisableTenant/events.d.ts +27 -0
- package/api/features/DisableTenant/events.js +23 -0
- package/api/features/DisableTenant/events.js.map +1 -0
- package/api/features/DisableTenant/feature.d.ts +4 -0
- package/api/features/DisableTenant/feature.js +11 -0
- package/api/features/DisableTenant/feature.js.map +1 -0
- package/api/features/EnableTenant/EnableTenantUseCase.d.ts +20 -0
- package/api/features/EnableTenant/EnableTenantUseCase.js +55 -0
- package/api/features/EnableTenant/EnableTenantUseCase.js.map +1 -0
- package/api/features/EnableTenant/abstractions.d.ts +19 -0
- package/api/features/EnableTenant/abstractions.js +5 -0
- package/api/features/EnableTenant/abstractions.js.map +1 -0
- package/api/features/EnableTenant/events.d.ts +27 -0
- package/api/features/EnableTenant/events.js +23 -0
- package/api/features/EnableTenant/events.js.map +1 -0
- package/api/features/EnableTenant/feature.d.ts +4 -0
- package/api/features/EnableTenant/feature.js +11 -0
- package/api/features/EnableTenant/feature.js.map +1 -0
- package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.d.ts +17 -0
- package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js +32 -0
- package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js.map +1 -0
- package/api/features/GetCurrentTenant/abstractions.d.ts +24 -0
- package/api/features/GetCurrentTenant/abstractions.js +5 -0
- package/api/features/GetCurrentTenant/abstractions.js.map +1 -0
- package/api/features/GetCurrentTenant/feature.d.ts +4 -0
- package/api/features/GetCurrentTenant/feature.js +11 -0
- package/api/features/GetCurrentTenant/feature.js.map +1 -0
- package/api/features/GetTenantById/GetTenantByIdRepository.d.ts +17 -0
- package/api/features/GetTenantById/GetTenantByIdRepository.js +44 -0
- package/api/features/GetTenantById/GetTenantByIdRepository.js.map +1 -0
- package/api/features/GetTenantById/GetTenantByIdUseCase.d.ts +12 -0
- package/api/features/GetTenantById/GetTenantByIdUseCase.js +23 -0
- package/api/features/GetTenantById/GetTenantByIdUseCase.js.map +1 -0
- package/api/features/GetTenantById/abstractions.d.ts +38 -0
- package/api/features/GetTenantById/abstractions.js +6 -0
- package/api/features/GetTenantById/abstractions.js.map +1 -0
- package/api/features/GetTenantById/feature.d.ts +4 -0
- package/api/features/GetTenantById/feature.js +13 -0
- package/api/features/GetTenantById/feature.js.map +1 -0
- package/api/features/UpdateTenant/UpdateTenantRepository.d.ts +17 -0
- package/api/features/UpdateTenant/UpdateTenantRepository.js +51 -0
- package/api/features/UpdateTenant/UpdateTenantRepository.js.map +1 -0
- package/api/features/UpdateTenant/UpdateTenantUseCase.d.ts +12 -0
- package/api/features/UpdateTenant/UpdateTenantUseCase.js +21 -0
- package/api/features/UpdateTenant/UpdateTenantUseCase.js.map +1 -0
- package/api/features/UpdateTenant/abstractions.d.ts +39 -0
- package/api/features/UpdateTenant/abstractions.js +6 -0
- package/api/features/UpdateTenant/abstractions.js.map +1 -0
- package/api/features/UpdateTenant/feature.d.ts +4 -0
- package/api/features/UpdateTenant/feature.js +13 -0
- package/api/features/UpdateTenant/feature.js.map +1 -0
- package/api/graphql/CreateTenantSchema.d.ts +16 -0
- package/api/graphql/CreateTenantSchema.js +83 -0
- package/api/graphql/CreateTenantSchema.js.map +1 -0
- package/api/graphql/DisableTenantSchema.d.ts +8 -0
- package/api/graphql/DisableTenantSchema.js +31 -0
- package/api/graphql/DisableTenantSchema.js.map +1 -0
- package/api/graphql/EnableTenantSchema.d.ts +8 -0
- package/api/graphql/EnableTenantSchema.js +31 -0
- package/api/graphql/EnableTenantSchema.js.map +1 -0
- package/api/graphql/GetCurrentTenantSchema.d.ts +8 -0
- package/api/graphql/GetCurrentTenantSchema.js +49 -0
- package/api/graphql/GetCurrentTenantSchema.js.map +1 -0
- package/api/graphql/InstallTenantSchema.d.ts +8 -0
- package/api/graphql/InstallTenantSchema.js +43 -0
- package/api/graphql/InstallTenantSchema.js.map +1 -0
- package/exports/admin/tenancy.d.ts +7 -0
- package/exports/admin/tenancy.js +4 -0
- package/exports/api/tenant-manager.d.ts +9 -0
- package/exports/api/tenant-manager.js +8 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +46 -0
- package/shared/Tenant.d.ts +21 -0
- package/shared/Tenant.js +27 -0
- package/shared/Tenant.js.map +1 -0
- package/shared/constants.d.ts +1 -0
- package/shared/constants.js +4 -0
- package/shared/constants.js.map +1 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { InstallTenantUseCase } from "./abstractions.js";
|
|
3
|
+
import { InstallTenantUseCase as external_InstallTenantUseCase_js_InstallTenantUseCase } from "./InstallTenantUseCase.js";
|
|
4
|
+
import { InstallTenantRepository } from "./InstallTenantRepository.js";
|
|
5
|
+
import { InstallTenantGateway } from "./InstallTenantGateway.js";
|
|
6
|
+
const InstallTenantFeature = createFeature({
|
|
7
|
+
name: "InstallTenant",
|
|
8
|
+
register (container) {
|
|
9
|
+
container.register(external_InstallTenantUseCase_js_InstallTenantUseCase);
|
|
10
|
+
container.register(InstallTenantRepository).inSingletonScope();
|
|
11
|
+
container.register(InstallTenantGateway).inSingletonScope();
|
|
12
|
+
},
|
|
13
|
+
resolve (container) {
|
|
14
|
+
return {
|
|
15
|
+
useCase: container.resolve(InstallTenantUseCase)
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
export { InstallTenantFeature };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/InstallTenant/feature.js","sources":["../../../src/admin/InstallTenant/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { InstallTenantUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { InstallTenantUseCase } from \"./InstallTenantUseCase.js\";\nimport { InstallTenantRepository } from \"./InstallTenantRepository.js\";\nimport { InstallTenantGateway } from \"./InstallTenantGateway.js\";\n\nexport const InstallTenantFeature = createFeature({\n name: \"InstallTenant\",\n register(container) {\n container.register(InstallTenantUseCase);\n container.register(InstallTenantRepository).inSingletonScope();\n container.register(InstallTenantGateway).inSingletonScope();\n },\n resolve(container) {\n return {\n useCase: container.resolve(UseCaseAbstraction)\n };\n }\n});\n"],"names":["InstallTenantFeature","createFeature","container","InstallTenantUseCase","InstallTenantRepository","InstallTenantGateway","UseCaseAbstraction"],"mappings":";;;;;AAMO,MAAMA,uBAAuBC,cAAc;IAC9C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,yBAAyB,gBAAgB;QAC5DF,UAAU,QAAQ,CAACG,sBAAsB,gBAAgB;IAC7D;IACA,SAAQH,SAAS;QACb,OAAO;YACH,SAASA,UAAU,OAAO,CAACI;QAC/B;IACJ;AACJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useCallback, useState } from "react";
|
|
2
|
+
import { useFeature } from "@webiny/app-admin";
|
|
3
|
+
import { InstallTenantFeature } from "./feature.js";
|
|
4
|
+
const useInstallTenant = ()=>{
|
|
5
|
+
const { useCase } = useFeature(InstallTenantFeature);
|
|
6
|
+
const [loading, setLoading] = useState(false);
|
|
7
|
+
const installTenant = useCallback(async (tenantId)=>{
|
|
8
|
+
setLoading(true);
|
|
9
|
+
try {
|
|
10
|
+
await useCase.execute(tenantId);
|
|
11
|
+
} finally{
|
|
12
|
+
setLoading(false);
|
|
13
|
+
}
|
|
14
|
+
}, [
|
|
15
|
+
useCase
|
|
16
|
+
]);
|
|
17
|
+
return {
|
|
18
|
+
installTenant,
|
|
19
|
+
loading
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export { useInstallTenant };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=useInstallTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/InstallTenant/useInstallTenant.js","sources":["../../../src/admin/InstallTenant/useInstallTenant.ts"],"sourcesContent":["import { useState, useCallback } from \"react\";\nimport { useFeature } from \"@webiny/app-admin\";\nimport { InstallTenantFeature } from \"./feature.js\";\n\nexport const useInstallTenant = () => {\n const { useCase } = useFeature(InstallTenantFeature);\n const [loading, setLoading] = useState(false);\n\n const installTenant = useCallback(\n async (tenantId: string) => {\n setLoading(true);\n\n try {\n await useCase.execute(tenantId);\n } finally {\n setLoading(false);\n }\n },\n [useCase]\n );\n\n return { installTenant, loading };\n};\n"],"names":["useInstallTenant","useCase","useFeature","InstallTenantFeature","loading","setLoading","useState","installTenant","useCallback","tenantId"],"mappings":";;;AAIO,MAAMA,mBAAmB;IAC5B,MAAM,EAAEC,OAAO,EAAE,GAAGC,WAAWC;IAC/B,MAAM,CAACC,SAASC,WAAW,GAAGC,SAAS;IAEvC,MAAMC,gBAAgBC,YAClB,OAAOC;QACHJ,WAAW;QAEX,IAAI;YACA,MAAMJ,QAAQ,OAAO,CAACQ;QAC1B,SAAU;YACNJ,WAAW;QACf;IACJ,GACA;QAACJ;KAAQ;IAGb,OAAO;QAAEM;QAAeH;IAAQ;AACpC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { Tenant } from "../shared/Tenant.js";
|
|
3
|
+
interface IsTenantProps {
|
|
4
|
+
condition(tenant: Tenant): boolean;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}
|
|
7
|
+
interface RootTenantProps {
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export declare const IsTenant: ({ condition, children }: IsTenantProps) => React.JSX.Element | null;
|
|
11
|
+
export declare const IsRootTenant: ({ children }: RootTenantProps) => React.JSX.Element;
|
|
12
|
+
export declare const IsNotRootTenant: ({ children }: RootTenantProps) => React.JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import react, { Fragment } from "react";
|
|
2
|
+
import { useAuthentication } from "@webiny/app-admin";
|
|
3
|
+
import { useCurrentTenant } from "./CurrentTenant/useCurrentTenant.js";
|
|
4
|
+
const IsTenant = ({ condition, children })=>{
|
|
5
|
+
const { identity } = useAuthentication();
|
|
6
|
+
const { tenant } = useCurrentTenant();
|
|
7
|
+
if (!identity.isAuthenticated) return null;
|
|
8
|
+
if (!condition(tenant)) return null;
|
|
9
|
+
return /*#__PURE__*/ react.createElement(Fragment, null, children);
|
|
10
|
+
};
|
|
11
|
+
const IsRootTenant = ({ children })=>/*#__PURE__*/ react.createElement(IsTenant, {
|
|
12
|
+
condition: (tenant)=>"root" === tenant.id
|
|
13
|
+
}, children);
|
|
14
|
+
const IsNotRootTenant = ({ children })=>/*#__PURE__*/ react.createElement(IsTenant, {
|
|
15
|
+
condition: (tenant)=>"root" !== tenant.id
|
|
16
|
+
}, children);
|
|
17
|
+
export { IsNotRootTenant, IsRootTenant, IsTenant };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=IsRootTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/IsRootTenant.js","sources":["../../src/admin/IsRootTenant.tsx"],"sourcesContent":["import React, { Fragment } from \"react\";\nimport { useAuthentication } from \"@webiny/app-admin\";\nimport type { Tenant } from \"../shared/Tenant.js\";\nimport { useCurrentTenant } from \"./CurrentTenant/useCurrentTenant.js\";\n\ninterface IsTenantProps {\n condition(tenant: Tenant): boolean;\n children: React.ReactNode;\n}\n\ninterface RootTenantProps {\n children: React.ReactNode;\n}\n\nexport const IsTenant = ({ condition, children }: IsTenantProps) => {\n const { identity } = useAuthentication();\n const { tenant } = useCurrentTenant();\n\n if (!identity.isAuthenticated) {\n return null;\n }\n\n if (!condition(tenant)) {\n return null;\n }\n\n return <Fragment>{children}</Fragment>;\n};\n\nexport const IsRootTenant = ({ children }: RootTenantProps) => {\n return <IsTenant condition={tenant => tenant.id === \"root\"}>{children}</IsTenant>;\n};\n\nexport const IsNotRootTenant = ({ children }: RootTenantProps) => {\n return <IsTenant condition={tenant => tenant.id !== \"root\"}>{children}</IsTenant>;\n};\n"],"names":["IsTenant","condition","children","identity","useAuthentication","tenant","useCurrentTenant","Fragment","IsRootTenant","IsNotRootTenant"],"mappings":";;;AAcO,MAAMA,WAAW,CAAC,EAAEC,SAAS,EAAEC,QAAQ,EAAiB;IAC3D,MAAM,EAAEC,QAAQ,EAAE,GAAGC;IACrB,MAAM,EAAEC,MAAM,EAAE,GAAGC;IAEnB,IAAI,CAACH,SAAS,eAAe,EACzB,OAAO;IAGX,IAAI,CAACF,UAAUI,SACX,OAAO;IAGX,OAAO,WAAP,GAAO,oBAACE,UAAQA,MAAEL;AACtB;AAEO,MAAMM,eAAe,CAAC,EAAEN,QAAQ,EAAmB,GAC/C,WAAP,GAAO,oBAACF,UAAQA;QAAC,WAAWK,CAAAA,SAAUA,AAAc,WAAdA,OAAO,EAAE;OAAcH;AAG1D,MAAMO,kBAAkB,CAAC,EAAEP,QAAQ,EAAmB,GAClD,WAAP,GAAO,oBAACF,UAAQA;QAAC,WAAWK,CAAAA,SAAUA,AAAc,WAAdA,OAAO,EAAE;OAAcH"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { AdminConfig } from "@webiny/app-admin";
|
|
3
|
+
import { ReactComponent } from "@webiny/icons/business.svg";
|
|
4
|
+
import { TM_PERMISSIONS_SCHEMA } from "./domain/permissionsSchema.js";
|
|
5
|
+
const { Security: Security } = AdminConfig;
|
|
6
|
+
const SecurityPermission = ()=>/*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(Security.Permissions, {
|
|
7
|
+
name: "tenant-manager",
|
|
8
|
+
title: "Tenant Manager",
|
|
9
|
+
description: "Manage Tenant Manager permissions.",
|
|
10
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
11
|
+
schema: TM_PERMISSIONS_SCHEMA
|
|
12
|
+
}));
|
|
13
|
+
export { SecurityPermission };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=SecurityPermission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/SecurityPermission.js","sources":["../../src/admin/SecurityPermission.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/business.svg\";\nimport { TM_PERMISSIONS_SCHEMA } from \"./domain/permissionsSchema.js\";\n\nconst { Security } = AdminConfig;\n\nexport const SecurityPermission = () => {\n return (\n <AdminConfig>\n <Security.Permissions\n name=\"tenant-manager\"\n title=\"Tenant Manager\"\n description=\"Manage Tenant Manager permissions.\"\n icon={<PermissionsIcon />}\n schema={TM_PERMISSIONS_SCHEMA}\n />\n </AdminConfig>\n );\n};\n"],"names":["Security","AdminConfig","SecurityPermission","PermissionsIcon","TM_PERMISSIONS_SCHEMA"],"mappings":";;;;AAKA,MAAM,EAAEA,UAAAA,QAAQ,EAAE,GAAGC;AAEd,MAAMC,qBAAqB,IACvB,WAAP,GACI,oBAACD,aAAWA,MAAAA,WAAAA,GACR,oBAACD,SAAS,WAAW;QACjB,MAAK;QACL,OAAM;QACN,aAAY;QACZ,oBAAM,oBAACG,gBAAeA;QACtB,QAAQC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import react, { useCallback } from "react";
|
|
2
|
+
import { Text, useToast } from "@webiny/admin-ui";
|
|
3
|
+
import { useDialogs } from "@webiny/app-admin";
|
|
4
|
+
import { useDisableTenant } from "../../DisableTenant/index.js";
|
|
5
|
+
function useDisableTenantDialog({ record }) {
|
|
6
|
+
const toast = useToast();
|
|
7
|
+
const dialogs = useDialogs();
|
|
8
|
+
const { disableTenant } = useDisableTenant(record);
|
|
9
|
+
const disableEntry = useCallback(()=>{
|
|
10
|
+
dialogs.showDialog({
|
|
11
|
+
title: "Are you sure you want to disable this tenant?",
|
|
12
|
+
content: /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Text, {
|
|
13
|
+
as: "div"
|
|
14
|
+
}, "Users won't be able to sign in, and all API access will stop working immediately. Don't worry - you can re-enable it later if needed.")),
|
|
15
|
+
acceptLabel: "Yes, disable!",
|
|
16
|
+
loadingLabel: "Disabling tenant...",
|
|
17
|
+
async onAccept () {
|
|
18
|
+
try {
|
|
19
|
+
await disableTenant();
|
|
20
|
+
toast.showSuccessToast({
|
|
21
|
+
title: "Tenant was disabled successfully!"
|
|
22
|
+
});
|
|
23
|
+
} catch (e) {
|
|
24
|
+
toast.showWarningToast({
|
|
25
|
+
title: "Tenant could not be disabled!",
|
|
26
|
+
description: e.message,
|
|
27
|
+
duration: 1 / 0
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}, [
|
|
33
|
+
record.id
|
|
34
|
+
]);
|
|
35
|
+
return {
|
|
36
|
+
disableEntry
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export { useDisableTenantDialog };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=useDisableTenantDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js","sources":["../../../../src/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport type { TenantEntry } from \"~/admin/types.js\";\nimport { useToast, Text } from \"@webiny/admin-ui\";\nimport { useDialogs } from \"@webiny/app-admin\";\nimport { useDisableTenant } from \"~/admin/DisableTenant/index.js\";\n\ninterface UseDisableTenantDialog {\n record: TenantEntry;\n}\n\nexport function useDisableTenantDialog({ record }: UseDisableTenantDialog) {\n const toast = useToast();\n const dialogs = useDialogs();\n const { disableTenant } = useDisableTenant(record);\n\n const disableEntry = useCallback(() => {\n dialogs.showDialog({\n title: \"Are you sure you want to disable this tenant?\",\n content: (\n <>\n <Text as={\"div\"}>\n Users won't be able to sign in, and all API access will stop working\n immediately. Don't worry - you can re-enable it later if needed.\n </Text>\n </>\n ),\n acceptLabel: \"Yes, disable!\",\n loadingLabel: \"Disabling tenant...\",\n async onAccept() {\n try {\n await disableTenant();\n toast.showSuccessToast({\n title: \"Tenant was disabled successfully!\"\n });\n } catch (e) {\n toast.showWarningToast({\n title: \"Tenant could not be disabled!\",\n description: e.message,\n duration: Infinity\n });\n }\n }\n });\n }, [record.id]);\n\n return { disableEntry };\n}\n"],"names":["useDisableTenantDialog","record","toast","useToast","dialogs","useDialogs","disableTenant","useDisableTenant","disableEntry","useCallback","Text","e","Infinity"],"mappings":";;;;AAUO,SAASA,uBAAuB,EAAEC,MAAM,EAA0B;IACrE,MAAMC,QAAQC;IACd,MAAMC,UAAUC;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAiBN;IAE3C,MAAMO,eAAeC,YAAY;QAC7BL,QAAQ,UAAU,CAAC;YACf,OAAO;YACP,SAAS,WAAT,GACI,wDACI,oBAACM,MAAIA;gBAAC,IAAI;eAAO;YAMzB,aAAa;YACb,cAAc;YACd,MAAM;gBACF,IAAI;oBACA,MAAMJ;oBACNJ,MAAM,gBAAgB,CAAC;wBACnB,OAAO;oBACX;gBACJ,EAAE,OAAOS,GAAG;oBACRT,MAAM,gBAAgB,CAAC;wBACnB,OAAO;wBACP,aAAaS,EAAE,OAAO;wBACtB,UAAUC;oBACd;gBACJ;YACJ;QACJ;IACJ,GAAG;QAACX,OAAO,EAAE;KAAC;IAEd,OAAO;QAAEO;IAAa;AAC1B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { Button } from "@webiny/admin-ui";
|
|
3
|
+
import { useEnableTenant } from "./useEnableTenant.js";
|
|
4
|
+
const EnableTenant = ({ tenant })=>{
|
|
5
|
+
const { enableTenant, loading } = useEnableTenant(tenant);
|
|
6
|
+
return /*#__PURE__*/ react.createElement(Button, {
|
|
7
|
+
variant: "primary",
|
|
8
|
+
onClick: enableTenant,
|
|
9
|
+
disabled: loading,
|
|
10
|
+
text: loading ? "Enabling..." : "Enable"
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
export { EnableTenant };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=EnableTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/EnableTenant/EnableTenant.js","sources":["../../../../src/admin/TenantEntryList/EnableTenant/EnableTenant.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { TenantEntry } from \"../../types.js\";\nimport { useEnableTenant } from \"./useEnableTenant.js\";\n\ninterface EnableTenantProps {\n tenant: TenantEntry;\n}\n\nexport const EnableTenant = ({ tenant }: EnableTenantProps) => {\n const { enableTenant, loading } = useEnableTenant(tenant);\n\n return (\n <Button\n variant={\"primary\"}\n onClick={enableTenant}\n disabled={loading}\n text={loading ? \"Enabling...\" : \"Enable\"}\n />\n );\n};\n"],"names":["EnableTenant","tenant","enableTenant","loading","useEnableTenant","Button"],"mappings":";;;AASO,MAAMA,eAAe,CAAC,EAAEC,MAAM,EAAqB;IACtD,MAAM,EAAEC,YAAY,EAAEC,OAAO,EAAE,GAAGC,gBAAgBH;IAElD,OAAO,WAAP,GACI,oBAACI,QAAMA;QACH,SAAS;QACT,SAASH;QACT,UAAUC;QACV,MAAMA,UAAU,gBAAgB;;AAG5C"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { useToast } from "@webiny/admin-ui";
|
|
3
|
+
import { useEnableTenant } from "../../EnableTenant/index.js";
|
|
4
|
+
const useEnableTenant_useEnableTenant = (tenant)=>{
|
|
5
|
+
const toast = useToast();
|
|
6
|
+
const useCase = useEnableTenant();
|
|
7
|
+
const enableTenant = useCallback(async ()=>{
|
|
8
|
+
try {
|
|
9
|
+
await useCase.enableTenant(tenant.entryId);
|
|
10
|
+
} catch (error) {
|
|
11
|
+
toast.showWarningToast({
|
|
12
|
+
title: "Could not enable tenant",
|
|
13
|
+
description: error.message,
|
|
14
|
+
duration: 1 / 0
|
|
15
|
+
});
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
toast.showSuccessToast({
|
|
19
|
+
title: "Tenant was enabled successfully!"
|
|
20
|
+
});
|
|
21
|
+
}, [
|
|
22
|
+
tenant
|
|
23
|
+
]);
|
|
24
|
+
return {
|
|
25
|
+
enableTenant,
|
|
26
|
+
loading: useCase.loading
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export { useEnableTenant_useEnableTenant as useEnableTenant };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=useEnableTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/EnableTenant/useEnableTenant.js","sources":["../../../../src/admin/TenantEntryList/EnableTenant/useEnableTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { TenantEntry } from \"../../types.js\";\nimport { useEnableTenant as baseEnableTenant } from \"~/admin/EnableTenant/index.js\";\n\nexport const useEnableTenant = (tenant: TenantEntry) => {\n const toast = useToast();\n const useCase = baseEnableTenant();\n\n const enableTenant = useCallback(async () => {\n try {\n await useCase.enableTenant(tenant.entryId);\n } catch (error) {\n toast.showWarningToast({\n title: \"Could not enable tenant\",\n description: error.message,\n duration: Infinity\n });\n return;\n }\n\n toast.showSuccessToast({ title: \"Tenant was enabled successfully!\" });\n }, [tenant]);\n\n return { enableTenant, loading: useCase.loading };\n};\n"],"names":["useEnableTenant","tenant","toast","useToast","useCase","baseEnableTenant","enableTenant","useCallback","error","Infinity"],"mappings":";;;AAKO,MAAMA,kCAAkB,CAACC;IAC5B,MAAMC,QAAQC;IACd,MAAMC,UAAUC;IAEhB,MAAMC,eAAeC,YAAY;QAC7B,IAAI;YACA,MAAMH,QAAQ,YAAY,CAACH,OAAO,OAAO;QAC7C,EAAE,OAAOO,OAAO;YACZN,MAAM,gBAAgB,CAAC;gBACnB,OAAO;gBACP,aAAaM,MAAM,OAAO;gBAC1B,UAAUC;YACd;YACA;QACJ;QAEAP,MAAM,gBAAgB,CAAC;YAAE,OAAO;QAAmC;IACvE,GAAG;QAACD;KAAO;IAEX,OAAO;QAAEK;QAAc,SAASF,QAAQ,OAAO;IAAC;AACpD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { Icon, Text } from "@webiny/admin-ui";
|
|
3
|
+
import { ReactComponent } from "@webiny/icons/folder.svg";
|
|
4
|
+
import { ReactComponent as folder_shared_svg_ReactComponent } from "@webiny/icons/folder_shared.svg";
|
|
5
|
+
import { useContentEntriesPresenter } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
|
|
6
|
+
const FolderNameCell = ({ folder })=>{
|
|
7
|
+
const presenter = useContentEntriesPresenter();
|
|
8
|
+
let icon = /*#__PURE__*/ react.createElement(ReactComponent, null);
|
|
9
|
+
if (folder.hasNonInheritedPermissions && folder.canManagePermissions) icon = /*#__PURE__*/ react.createElement(folder_shared_svg_ReactComponent, null);
|
|
10
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
11
|
+
className: "flex items-center gap-sm truncate cursor-pointer font-semibold hover:underline",
|
|
12
|
+
onClick: ()=>presenter.folders.selectFolder(folder.id)
|
|
13
|
+
}, /*#__PURE__*/ react.createElement(Icon, {
|
|
14
|
+
size: "sm",
|
|
15
|
+
color: "neutral-strong",
|
|
16
|
+
icon: icon,
|
|
17
|
+
label: `Folder - ${folder.title}`
|
|
18
|
+
}), /*#__PURE__*/ react.createElement(Text, {
|
|
19
|
+
className: "truncate min-w-0 shrink"
|
|
20
|
+
}, folder.title));
|
|
21
|
+
};
|
|
22
|
+
export { FolderNameCell };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=FolderNameCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/FolderNameCell.js","sources":["../../../src/admin/TenantEntryList/FolderNameCell.tsx"],"sourcesContent":["import React from \"react\";\nimport type { FolderTableRow } from \"@webiny/app-aco\";\nimport { Icon, Text } from \"@webiny/admin-ui\";\nimport { ReactComponent as Folder } from \"@webiny/icons/folder.svg\";\nimport { ReactComponent as FolderShared } from \"@webiny/icons/folder_shared.svg\";\nimport { useContentEntriesPresenter } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\n\ninterface FolderNameCellProps {\n folder: FolderTableRow[\"data\"];\n}\n\nexport const FolderNameCell = ({ folder }: FolderNameCellProps) => {\n const presenter = useContentEntriesPresenter();\n\n let icon = <Folder />;\n if (folder.hasNonInheritedPermissions && folder.canManagePermissions) {\n icon = <FolderShared />;\n }\n\n return (\n <div\n className={\n \"flex items-center gap-sm truncate cursor-pointer font-semibold hover:underline\"\n }\n onClick={() => presenter.folders.selectFolder(folder.id)}\n >\n <Icon\n size={\"sm\"}\n color={\"neutral-strong\"}\n icon={icon}\n label={`Folder - ${folder.title}`}\n />\n <Text className={\"truncate min-w-0 shrink\"}>{folder.title}</Text>\n </div>\n );\n};\n"],"names":["FolderNameCell","folder","presenter","useContentEntriesPresenter","icon","Folder","FolderShared","Icon","Text"],"mappings":";;;;;AAWO,MAAMA,iBAAiB,CAAC,EAAEC,MAAM,EAAuB;IAC1D,MAAMC,YAAYC;IAElB,IAAIC,OAAO,WAAPA,GAAO,oBAACC,gBAAMA;IAClB,IAAIJ,OAAO,0BAA0B,IAAIA,OAAO,oBAAoB,EAChEG,OAAO,WAAPA,GAAO,oBAACE,kCAAYA;IAGxB,OAAO,WAAP,GACI,oBAAC;QACG,WACI;QAEJ,SAAS,IAAMJ,UAAU,OAAO,CAAC,YAAY,CAACD,OAAO,EAAE;qBAEvD,oBAACM,MAAIA;QACD,MAAM;QACN,OAAO;QACP,MAAMH;QACN,OAAO,CAAC,SAAS,EAAEH,OAAO,KAAK,EAAE;sBAErC,oBAACO,MAAIA;QAAC,WAAW;OAA4BP,OAAO,KAAK;AAGrE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { Button } from "@webiny/admin-ui";
|
|
3
|
+
import { useInstallTenant } from "./useInstallTenant.js";
|
|
4
|
+
const InstallTenant = ({ tenant })=>{
|
|
5
|
+
const { installTenant, loading } = useInstallTenant(tenant);
|
|
6
|
+
return /*#__PURE__*/ react.createElement(Button, {
|
|
7
|
+
variant: "primary",
|
|
8
|
+
onClick: installTenant,
|
|
9
|
+
disabled: loading,
|
|
10
|
+
text: loading ? "Installing..." : "Install"
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
export { InstallTenant };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=InstallTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/InstallTenantButton/InstallTenant.js","sources":["../../../../src/admin/TenantEntryList/InstallTenantButton/InstallTenant.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { TenantEntry } from \"../../types.js\";\nimport { useInstallTenant } from \"./useInstallTenant.js\";\n\ninterface InstallTenantProps {\n tenant: TenantEntry;\n}\n\nexport const InstallTenant = ({ tenant }: InstallTenantProps) => {\n const { installTenant, loading } = useInstallTenant(tenant);\n\n return (\n <Button\n variant={\"primary\"}\n onClick={installTenant}\n disabled={loading}\n text={loading ? \"Installing...\" : \"Install\"}\n />\n );\n};\n"],"names":["InstallTenant","tenant","installTenant","loading","useInstallTenant","Button"],"mappings":";;;AASO,MAAMA,gBAAgB,CAAC,EAAEC,MAAM,EAAsB;IACxD,MAAM,EAAEC,aAAa,EAAEC,OAAO,EAAE,GAAGC,iBAAiBH;IAEpD,OAAO,WAAP,GACI,oBAACI,QAAMA;QACH,SAAS;QACT,SAASH;QACT,UAAUC;QACV,MAAMA,UAAU,kBAAkB;;AAG9C"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { useToast } from "@webiny/admin-ui";
|
|
3
|
+
import { useInstallTenant } from "../../InstallTenant/index.js";
|
|
4
|
+
const useInstallTenant_useInstallTenant = (tenant)=>{
|
|
5
|
+
const toast = useToast();
|
|
6
|
+
const hook = useInstallTenant();
|
|
7
|
+
const installTenant = useCallback(async ()=>{
|
|
8
|
+
try {
|
|
9
|
+
await hook.installTenant(tenant.entryId);
|
|
10
|
+
} catch (error) {
|
|
11
|
+
toast.showWarningToast({
|
|
12
|
+
title: "Could not install tenant",
|
|
13
|
+
description: error.message,
|
|
14
|
+
duration: 1 / 0
|
|
15
|
+
});
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
toast.showSuccessToast({
|
|
19
|
+
title: "Tenant installed successfully!"
|
|
20
|
+
});
|
|
21
|
+
}, [
|
|
22
|
+
tenant
|
|
23
|
+
]);
|
|
24
|
+
return {
|
|
25
|
+
installTenant,
|
|
26
|
+
loading: hook.loading
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export { useInstallTenant_useInstallTenant as useInstallTenant };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=useInstallTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/InstallTenantButton/useInstallTenant.js","sources":["../../../../src/admin/TenantEntryList/InstallTenantButton/useInstallTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { TenantEntry } from \"../../types.js\";\nimport { useInstallTenant as baseInstallTenant } from \"~/admin/InstallTenant/index.js\";\n\nexport const useInstallTenant = (tenant: TenantEntry) => {\n const toast = useToast();\n const hook = baseInstallTenant();\n\n const installTenant = useCallback(async () => {\n try {\n await hook.installTenant(tenant.entryId);\n } catch (error) {\n toast.showWarningToast({\n title: \"Could not install tenant\",\n description: error.message,\n duration: Infinity\n });\n return;\n }\n\n toast.showSuccessToast({ title: \"Tenant installed successfully!\" });\n }, [tenant]);\n\n return { installTenant, loading: hook.loading };\n};\n"],"names":["useInstallTenant","tenant","toast","useToast","hook","baseInstallTenant","installTenant","useCallback","error","Infinity"],"mappings":";;;AAKO,MAAMA,oCAAmB,CAACC;IAC7B,MAAMC,QAAQC;IACd,MAAMC,OAAOC;IAEb,MAAMC,gBAAgBC,YAAY;QAC9B,IAAI;YACA,MAAMH,KAAK,aAAa,CAACH,OAAO,OAAO;QAC3C,EAAE,OAAOO,OAAO;YACZN,MAAM,gBAAgB,CAAC;gBACnB,OAAO;gBACP,aAAaM,MAAM,OAAO;gBAC1B,UAAUC;YACd;YACA;QACJ;QAEAP,MAAM,gBAAgB,CAAC;YAAE,OAAO;QAAiC;IACrE,GAAG;QAACD;KAAO;IAEX,OAAO;QAAEK;QAAe,SAASF,KAAK,OAAO;IAAC;AAClD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import react, { useCallback } from "react";
|
|
2
|
+
import { Button } from "@webiny/admin-ui";
|
|
3
|
+
import { useTenantContext } from "@webiny/app-admin";
|
|
4
|
+
const ManageTenant = ({ tenant })=>{
|
|
5
|
+
const { setTenant } = useTenantContext();
|
|
6
|
+
const switchToTenant = useCallback(()=>{
|
|
7
|
+
setTenant(tenant.entryId);
|
|
8
|
+
}, [
|
|
9
|
+
tenant
|
|
10
|
+
]);
|
|
11
|
+
return /*#__PURE__*/ react.createElement(Button, {
|
|
12
|
+
variant: "secondary",
|
|
13
|
+
onClick: switchToTenant,
|
|
14
|
+
text: "Manage"
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
export { ManageTenant };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=ManageTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/ManageTenant.js","sources":["../../../src/admin/TenantEntryList/ManageTenant.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { useTenantContext } from \"@webiny/app-admin\";\nimport type { TenantEntry } from \"../types.js\";\n\ninterface ManageTenantProps {\n tenant: TenantEntry;\n}\n\nexport const ManageTenant = ({ tenant }: ManageTenantProps) => {\n const { setTenant } = useTenantContext();\n const switchToTenant = useCallback(() => {\n setTenant(tenant.entryId);\n }, [tenant]);\n\n return <Button variant={\"secondary\"} onClick={switchToTenant} text={\"Manage\"} />;\n};\n"],"names":["ManageTenant","tenant","setTenant","useTenantContext","switchToTenant","useCallback","Button"],"mappings":";;;AASO,MAAMA,eAAe,CAAC,EAAEC,MAAM,EAAqB;IACtD,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAMC,iBAAiBC,YAAY;QAC/BH,UAAUD,OAAO,OAAO;IAC5B,GAAG;QAACA;KAAO;IAEX,OAAO,WAAP,GAAO,oBAACK,QAAMA;QAAC,SAAS;QAAa,SAASF;QAAgB,MAAM;;AACxE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { ContentEntryListConfig } from "@webiny/app-headless-cms";
|
|
3
|
+
import { InstallTenant } from "./InstallTenantButton/InstallTenant.js";
|
|
4
|
+
import { ManageTenant } from "./ManageTenant.js";
|
|
5
|
+
import { EnableTenant } from "./EnableTenant/EnableTenant.js";
|
|
6
|
+
const { Browser: Browser } = ContentEntryListConfig;
|
|
7
|
+
const { useTableRow: useTableRow, isFolderRow: isFolderRow } = Browser.Table.Column;
|
|
8
|
+
const TenantCell = ()=>{
|
|
9
|
+
const { row } = useTableRow();
|
|
10
|
+
if (isFolderRow(row)) return /*#__PURE__*/ react.createElement(react.Fragment, null, "-");
|
|
11
|
+
const tenant = row.data;
|
|
12
|
+
if (!tenant.values.isInstalled) return /*#__PURE__*/ react.createElement(InstallTenant, {
|
|
13
|
+
tenant: tenant
|
|
14
|
+
});
|
|
15
|
+
if ("disabled" === tenant.values.status) return /*#__PURE__*/ react.createElement(EnableTenant, {
|
|
16
|
+
tenant: tenant
|
|
17
|
+
});
|
|
18
|
+
return /*#__PURE__*/ react.createElement(ManageTenant, {
|
|
19
|
+
tenant: tenant
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
export { TenantCell };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=TenantCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/TenantCell.js","sources":["../../../src/admin/TenantEntryList/TenantCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms\";\nimport { TenantEntry } from \"../types.js\";\nimport { InstallTenant } from \"./InstallTenantButton/InstallTenant.js\";\nimport { ManageTenant } from \"./ManageTenant.js\";\nimport { EnableTenant } from \"~/admin/TenantEntryList/EnableTenant/EnableTenant.js\";\n\nconst { Browser } = ContentEntryListConfig;\nconst { useTableRow, isFolderRow } = Browser.Table.Column;\n\nexport const TenantCell = () => {\n // useTableRow() allows you to access the entire data of the current row.\n const { row } = useTableRow<TenantEntry>();\n\n // isFolderRow() allows for custom rendering when the current row is a folder.\n if (isFolderRow(row)) {\n return <>{\"-\"}</>;\n }\n\n const tenant = row.data;\n\n if (!tenant.values.isInstalled) {\n return <InstallTenant tenant={tenant} />;\n }\n\n if (tenant.values.status === \"disabled\") {\n return <EnableTenant tenant={tenant} />;\n }\n\n return <ManageTenant tenant={tenant} />;\n};\n"],"names":["Browser","ContentEntryListConfig","useTableRow","isFolderRow","TenantCell","row","tenant","InstallTenant","EnableTenant","ManageTenant"],"mappings":";;;;;AAOA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAM,EAAEC,aAAAA,WAAW,EAAEC,aAAAA,WAAW,EAAE,GAAGH,QAAQ,KAAK,CAAC,MAAM;AAElD,MAAMI,aAAa;IAEtB,MAAM,EAAEC,GAAG,EAAE,GAAGH;IAGhB,IAAIC,YAAYE,MACZ,OAAO,WAAP,GAAO,0CAAG;IAGd,MAAMC,SAASD,IAAI,IAAI;IAEvB,IAAI,CAACC,OAAO,MAAM,CAAC,WAAW,EAC1B,OAAO,WAAP,GAAO,oBAACC,eAAaA;QAAC,QAAQD;;IAGlC,IAAIA,AAAyB,eAAzBA,OAAO,MAAM,CAAC,MAAM,EACpB,OAAO,WAAP,GAAO,oBAACE,cAAYA;QAAC,QAAQF;;IAGjC,OAAO,WAAP,GAAO,oBAACG,cAAYA;QAAC,QAAQH;;AACjC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { Icon, Link, Text } from "@webiny/admin-ui";
|
|
3
|
+
import { ReactComponent } from "@webiny/icons/description.svg";
|
|
4
|
+
import { ContentEntryListConfig, Routes } from "@webiny/app-headless-cms";
|
|
5
|
+
import { FolderNameCell } from "./FolderNameCell.js";
|
|
6
|
+
import { useContentEntriesPresenter } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
|
|
7
|
+
import { useRouter } from "@webiny/app-admin";
|
|
8
|
+
const TenantName = ({ tenant })=>{
|
|
9
|
+
const presenter = useContentEntriesPresenter();
|
|
10
|
+
const { getLink } = useRouter();
|
|
11
|
+
const url = getLink(Routes.ContentEntries.List, {
|
|
12
|
+
modelId: presenter.vm.model.modelId,
|
|
13
|
+
folderId: presenter.folders.vm.currentFolderId ?? void 0,
|
|
14
|
+
id: tenant.id
|
|
15
|
+
});
|
|
16
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
17
|
+
className: "flex flex-col gap-y-[3px]"
|
|
18
|
+
}, /*#__PURE__*/ react.createElement(Link, {
|
|
19
|
+
to: url,
|
|
20
|
+
variant: "secondary",
|
|
21
|
+
className: "truncate no-underline!"
|
|
22
|
+
}, /*#__PURE__*/ react.createElement("div", {
|
|
23
|
+
className: "flex w-full items-center"
|
|
24
|
+
}, /*#__PURE__*/ react.createElement(Icon, {
|
|
25
|
+
size: "sm",
|
|
26
|
+
color: "neutral-strong",
|
|
27
|
+
className: "mr-xs",
|
|
28
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
29
|
+
label: `Tenant - ${tenant.values.name}`
|
|
30
|
+
}), /*#__PURE__*/ react.createElement(Text, {
|
|
31
|
+
as: "div",
|
|
32
|
+
className: "truncate min-w-0 shrink"
|
|
33
|
+
}, tenant.values.name))), /*#__PURE__*/ react.createElement(Text, {
|
|
34
|
+
as: "div",
|
|
35
|
+
size: "sm",
|
|
36
|
+
className: "text-neutral-dimmed"
|
|
37
|
+
}, "ID: ", tenant.entryId));
|
|
38
|
+
};
|
|
39
|
+
const TenantNameCell = ()=>{
|
|
40
|
+
const { useTableRow, isFolderRow } = ContentEntryListConfig.Browser.Table.Column;
|
|
41
|
+
const { row } = useTableRow();
|
|
42
|
+
if (isFolderRow(row)) return /*#__PURE__*/ react.createElement(FolderNameCell, {
|
|
43
|
+
folder: row.data
|
|
44
|
+
});
|
|
45
|
+
return /*#__PURE__*/ react.createElement(TenantName, {
|
|
46
|
+
tenant: row.data
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
export { TenantNameCell };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=TenantNameCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/TenantNameCell.js","sources":["../../../src/admin/TenantEntryList/TenantNameCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Link, Text } from \"@webiny/admin-ui\";\nimport { ReactComponent as File } from \"@webiny/icons/description.svg\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms\";\nimport { FolderNameCell } from \"./FolderNameCell.js\";\nimport type { TenantEntry } from \"~/admin/types.js\";\nimport { useContentEntriesPresenter } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Routes } from \"@webiny/app-headless-cms\";\n\ninterface TenantNameProps {\n tenant: TenantEntry;\n}\n\nconst TenantName = ({ tenant }: TenantNameProps) => {\n const presenter = useContentEntriesPresenter();\n const { getLink } = useRouter();\n\n const url = getLink(Routes.ContentEntries.List, {\n modelId: presenter.vm.model.modelId,\n folderId: presenter.folders.vm.currentFolderId ?? undefined,\n id: tenant.id\n });\n\n return (\n <div className={\"flex flex-col gap-y-[3px]\"}>\n <Link to={url} variant={\"secondary\"} className={\"truncate no-underline!\"}>\n <div className={\"flex w-full items-center\"}>\n <Icon\n size={\"sm\"}\n color={\"neutral-strong\"}\n className={\"mr-xs\"}\n icon={<File />}\n label={`Tenant - ${tenant.values.name}`}\n />\n <Text as={\"div\"} className={\"truncate min-w-0 shrink\"}>\n {tenant.values.name}\n </Text>\n </div>\n </Link>\n <Text as={\"div\"} size={\"sm\"} className={\"text-neutral-dimmed\"}>\n ID: {tenant.entryId}\n </Text>\n </div>\n );\n};\n\nexport const TenantNameCell = () => {\n const { useTableRow, isFolderRow } = ContentEntryListConfig.Browser.Table.Column;\n const { row } = useTableRow<TenantEntry>();\n\n if (isFolderRow(row)) {\n return <FolderNameCell folder={row.data} />;\n }\n\n return <TenantName tenant={row.data} />;\n};\n"],"names":["TenantName","tenant","presenter","useContentEntriesPresenter","getLink","useRouter","url","Routes","undefined","Link","Icon","File","Text","TenantNameCell","useTableRow","isFolderRow","ContentEntryListConfig","row","FolderNameCell"],"mappings":";;;;;;;AAcA,MAAMA,aAAa,CAAC,EAAEC,MAAM,EAAmB;IAC3C,MAAMC,YAAYC;IAClB,MAAM,EAAEC,OAAO,EAAE,GAAGC;IAEpB,MAAMC,MAAMF,QAAQG,OAAO,cAAc,CAAC,IAAI,EAAE;QAC5C,SAASL,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO;QACnC,UAAUA,UAAU,OAAO,CAAC,EAAE,CAAC,eAAe,IAAIM;QAClD,IAAIP,OAAO,EAAE;IACjB;IAEA,OAAO,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAACQ,MAAIA;QAAC,IAAIH;QAAK,SAAS;QAAa,WAAW;qBAC5C,oBAAC;QAAI,WAAW;qBACZ,oBAACI,MAAIA;QACD,MAAM;QACN,OAAO;QACP,WAAW;QACX,oBAAM,oBAACC,gBAAIA;QACX,OAAO,CAAC,SAAS,EAAEV,OAAO,MAAM,CAAC,IAAI,EAAE;sBAE3C,oBAACW,MAAIA;QAAC,IAAI;QAAO,WAAW;OACvBX,OAAO,MAAM,CAAC,IAAI,mBAI/B,oBAACW,MAAIA;QAAC,IAAI;QAAO,MAAM;QAAM,WAAW;OAAuB,QACtDX,OAAO,OAAO;AAInC;AAEO,MAAMY,iBAAiB;IAC1B,MAAM,EAAEC,WAAW,EAAEC,WAAW,EAAE,GAAGC,uBAAuB,OAAO,CAAC,KAAK,CAAC,MAAM;IAChF,MAAM,EAAEC,GAAG,EAAE,GAAGH;IAEhB,IAAIC,YAAYE,MACZ,OAAO,WAAP,GAAO,oBAACC,gBAAcA;QAAC,QAAQD,IAAI,IAAI;;IAG3C,OAAO,WAAP,GAAO,oBAACjB,YAAUA;QAAC,QAAQiB,IAAI,IAAI;;AACvC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { useModel } from "@webiny/app-headless-cms/exports/admin/cms.js";
|
|
3
|
+
import { ContentEntryListConfig } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
|
|
4
|
+
import { ReactComponent } from "@webiny/icons/power_off.svg";
|
|
5
|
+
import { TenantCell } from "./TenantEntryList/TenantCell.js";
|
|
6
|
+
import { TENANT_MODEL_ID } from "../shared/constants.js";
|
|
7
|
+
import { useDisableTenantDialog } from "./TenantEntryList/DisableTenant/useDisableTenantDialog.js";
|
|
8
|
+
import { TenantNameCell } from "./TenantEntryList/TenantNameCell.js";
|
|
9
|
+
const { Browser: Browser } = ContentEntryListConfig;
|
|
10
|
+
const EntryAction = Browser.Entry.Action;
|
|
11
|
+
const { useTableRow: useTableRow } = Browser.Table.Column;
|
|
12
|
+
const WithDisableAction = ({ children })=>{
|
|
13
|
+
const { row } = useTableRow();
|
|
14
|
+
const { disableEntry } = useDisableTenantDialog({
|
|
15
|
+
record: row.data
|
|
16
|
+
});
|
|
17
|
+
if ("enabled" === row.data.values.status) return /*#__PURE__*/ react.createElement(EntryAction.OptionsMenuItem, {
|
|
18
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
19
|
+
label: "Disable",
|
|
20
|
+
onAction: disableEntry,
|
|
21
|
+
"data-testid": "aco.actions.entry.delete",
|
|
22
|
+
variant: "destructive"
|
|
23
|
+
});
|
|
24
|
+
return /*#__PURE__*/ react.createElement(react.Fragment, null, children);
|
|
25
|
+
};
|
|
26
|
+
const DeleteActionDecorator = EntryAction.createDecorator((Original)=>function(props) {
|
|
27
|
+
const { model } = useModel();
|
|
28
|
+
if (model.modelId !== TENANT_MODEL_ID) return /*#__PURE__*/ react.createElement(Original, props);
|
|
29
|
+
if ("delete" === props.name) return /*#__PURE__*/ react.createElement(Original, {
|
|
30
|
+
...props,
|
|
31
|
+
element: /*#__PURE__*/ react.createElement(WithDisableAction, null, props.element)
|
|
32
|
+
});
|
|
33
|
+
return /*#__PURE__*/ react.createElement(Original, props);
|
|
34
|
+
});
|
|
35
|
+
const TenantEntryList = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(DeleteActionDecorator, null), /*#__PURE__*/ react.createElement(ContentEntryListConfig, null, /*#__PURE__*/ react.createElement(Browser.BreadcrumbRoot, {
|
|
36
|
+
label: "Tenant Manager",
|
|
37
|
+
modelIds: [
|
|
38
|
+
TENANT_MODEL_ID
|
|
39
|
+
]
|
|
40
|
+
}), /*#__PURE__*/ react.createElement(Browser.Table.Column, {
|
|
41
|
+
hideable: false,
|
|
42
|
+
name: "name",
|
|
43
|
+
header: "Name",
|
|
44
|
+
modelIds: [
|
|
45
|
+
TENANT_MODEL_ID
|
|
46
|
+
],
|
|
47
|
+
cell: /*#__PURE__*/ react.createElement(TenantNameCell, null)
|
|
48
|
+
}), /*#__PURE__*/ react.createElement(Browser.Table.Column, {
|
|
49
|
+
name: "tenant",
|
|
50
|
+
header: "Tenant",
|
|
51
|
+
modelIds: [
|
|
52
|
+
TENANT_MODEL_ID
|
|
53
|
+
],
|
|
54
|
+
cell: /*#__PURE__*/ react.createElement(TenantCell, null),
|
|
55
|
+
before: "actions"
|
|
56
|
+
})));
|
|
57
|
+
export { TenantEntryList };
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=TenantEntryList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList.js","sources":["../../src/admin/TenantEntryList.tsx"],"sourcesContent":["import React from \"react\";\nimport { useModel } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { ReactComponent as DisableIcon } from \"@webiny/icons/power_off.svg\";\nimport { TenantCell } from \"./TenantEntryList/TenantCell.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport type { TenantEntry } from \"~/admin/types.js\";\nimport { useDisableTenantDialog } from \"~/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js\";\nimport { TenantNameCell } from \"~/admin/TenantEntryList/TenantNameCell.js\";\n\nconst { Browser } = ContentEntryListConfig;\nconst EntryAction = Browser.Entry.Action;\nconst { useTableRow } = Browser.Table.Column;\n\ninterface WithDisableActionProps {\n children: React.ReactNode;\n}\n\nconst WithDisableAction = ({ children }: WithDisableActionProps) => {\n // useTableRow() allows you to access the entire data of the current row.\n const { row } = useTableRow<TenantEntry>();\n const { disableEntry } = useDisableTenantDialog({ record: row.data });\n\n if (row.data.values.status === \"enabled\") {\n return (\n <EntryAction.OptionsMenuItem\n icon={<DisableIcon />}\n label={\"Disable\"}\n onAction={disableEntry}\n data-testid={\"aco.actions.entry.delete\"}\n variant={\"destructive\"}\n />\n );\n }\n\n return <>{children}</>;\n};\n\nconst DeleteActionDecorator = EntryAction.createDecorator(Original => {\n return function DeleteAction(props) {\n const { model } = useModel();\n\n if (model.modelId !== TENANT_MODEL_ID) {\n return <Original {...props} />;\n }\n\n if (props.name === \"delete\") {\n return (\n <Original\n {...props}\n element={<WithDisableAction>{props.element}</WithDisableAction>}\n />\n );\n }\n\n return <Original {...props} />;\n };\n});\n\nexport const TenantEntryList = () => {\n return (\n <>\n <DeleteActionDecorator />\n <ContentEntryListConfig>\n <Browser.BreadcrumbRoot label={\"Tenant Manager\"} modelIds={[TENANT_MODEL_ID]} />\n <Browser.Table.Column\n hideable={false}\n name={\"name\"}\n header={\"Name\"}\n modelIds={[TENANT_MODEL_ID]}\n cell={<TenantNameCell />}\n />\n <Browser.Table.Column\n name={\"tenant\"}\n header={\"Tenant\"}\n modelIds={[TENANT_MODEL_ID]}\n cell={<TenantCell />}\n before={\"actions\"}\n />\n </ContentEntryListConfig>\n </>\n );\n};\n"],"names":["Browser","ContentEntryListConfig","EntryAction","useTableRow","WithDisableAction","children","row","disableEntry","useDisableTenantDialog","DisableIcon","DeleteActionDecorator","Original","props","model","useModel","TENANT_MODEL_ID","TenantEntryList","TenantNameCell","TenantCell"],"mappings":";;;;;;;;AAUA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAMC,cAAcF,QAAQ,KAAK,CAAC,MAAM;AACxC,MAAM,EAAEG,aAAAA,WAAW,EAAE,GAAGH,QAAQ,KAAK,CAAC,MAAM;AAM5C,MAAMI,oBAAoB,CAAC,EAAEC,QAAQ,EAA0B;IAE3D,MAAM,EAAEC,GAAG,EAAE,GAAGH;IAChB,MAAM,EAAEI,YAAY,EAAE,GAAGC,uBAAuB;QAAE,QAAQF,IAAI,IAAI;IAAC;IAEnE,IAAIA,AAA2B,cAA3BA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EACtB,OAAO,WAAP,GACI,oBAACJ,YAAY,eAAe;QACxB,oBAAM,oBAACO,gBAAWA;QAClB,OAAO;QACP,UAAUF;QACV,eAAa;QACb,SAAS;;IAKrB,OAAO,WAAP,GAAO,0CAAGF;AACd;AAEA,MAAMK,wBAAwBR,YAAY,eAAe,CAACS,CAAAA,WAC/C,SAAsBC,KAAK;QAC9B,MAAM,EAAEC,KAAK,EAAE,GAAGC;QAElB,IAAID,MAAM,OAAO,KAAKE,iBAClB,OAAO,WAAP,GAAO,oBAACJ,UAAaC;QAGzB,IAAIA,AAAe,aAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GACI,oBAACD,UAAAA;YACI,GAAGC,KAAK;YACT,uBAAS,oBAACR,mBAAiBA,MAAEQ,MAAM,OAAO;;QAKtD,OAAO,WAAP,GAAO,oBAACD,UAAaC;IACzB;AAGG,MAAMI,kBAAkB,IACpB,WAAP,GACI,wDACI,oBAACN,uBAAqBA,OAAAA,WAAAA,GACtB,oBAACT,wBAAsBA,MAAAA,WAAAA,GACnB,oBAACD,QAAQ,cAAc;QAAC,OAAO;QAAkB,UAAU;YAACe;SAAgB;sBAC5E,oBAACf,QAAQ,KAAK,CAAC,MAAM;QACjB,UAAU;QACV,MAAM;QACN,QAAQ;QACR,UAAU;YAACe;SAAgB;QAC3B,oBAAM,oBAACE,gBAAcA;sBAEzB,oBAACjB,QAAQ,KAAK,CAAC,MAAM;QACjB,MAAM;QACN,QAAQ;QACR,UAAU;YAACe;SAAgB;QAC3B,oBAAM,oBAACG,YAAUA;QACjB,QAAQ"}
|