@webiny/tenant-manager 0.0.0-unstable.61c048f412
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 +12 -0
- package/TenantManager.js.map +1 -0
- package/admin/CurrentTenant/CurrentTenant.d.ts +6 -0
- package/admin/CurrentTenant/CurrentTenant.js +34 -0
- package/admin/CurrentTenant/CurrentTenant.js.map +1 -0
- package/admin/CurrentTenant/CurrentTenantGateway.d.ts +12 -0
- package/admin/CurrentTenant/CurrentTenantGateway.js +44 -0
- package/admin/CurrentTenant/CurrentTenantGateway.js.map +1 -0
- package/admin/CurrentTenant/CurrentTenantPresenter.d.ts +12 -0
- package/admin/CurrentTenant/CurrentTenantPresenter.js +30 -0
- package/admin/CurrentTenant/CurrentTenantPresenter.js.map +1 -0
- package/admin/CurrentTenant/CurrentTenantRepository.d.ts +15 -0
- package/admin/CurrentTenant/CurrentTenantRepository.js +37 -0
- package/admin/CurrentTenant/CurrentTenantRepository.js.map +1 -0
- package/admin/CurrentTenant/abstractions.d.ts +31 -0
- package/admin/CurrentTenant/abstractions.js +15 -0
- package/admin/CurrentTenant/abstractions.js.map +1 -0
- package/admin/CurrentTenant/feature.d.ts +3 -0
- package/admin/CurrentTenant/feature.js +20 -0
- package/admin/CurrentTenant/feature.js.map +1 -0
- package/admin/CurrentTenant/useCurrentTenant.d.ts +4 -0
- package/admin/CurrentTenant/useCurrentTenant.js +23 -0
- package/admin/CurrentTenant/useCurrentTenant.js.map +1 -0
- package/admin/CurrentTenantProvider.d.ts +2 -0
- package/admin/CurrentTenantProvider.js +12 -0
- package/admin/CurrentTenantProvider.js.map +1 -0
- package/admin/DisableTenant/DisableTenantGateway.d.ts +11 -0
- package/admin/DisableTenant/DisableTenantGateway.js +43 -0
- package/admin/DisableTenant/DisableTenantGateway.js.map +1 -0
- package/admin/DisableTenant/DisableTenantRepository.d.ts +10 -0
- package/admin/DisableTenant/DisableTenantRepository.js +15 -0
- package/admin/DisableTenant/DisableTenantRepository.js.map +1 -0
- package/admin/DisableTenant/DisableTenantUseCase.d.ts +10 -0
- package/admin/DisableTenant/DisableTenantUseCase.js +15 -0
- package/admin/DisableTenant/DisableTenantUseCase.js.map +1 -0
- package/admin/DisableTenant/abstractions.d.ts +21 -0
- package/admin/DisableTenant/abstractions.js +15 -0
- package/admin/DisableTenant/abstractions.js.map +1 -0
- package/admin/DisableTenant/feature.d.ts +3 -0
- package/admin/DisableTenant/feature.js +20 -0
- package/admin/DisableTenant/feature.js.map +1 -0
- package/admin/DisableTenant/index.d.ts +2 -0
- package/admin/DisableTenant/index.js +4 -0
- package/admin/DisableTenant/index.js.map +1 -0
- package/admin/DisableTenant/useDisableTenant.d.ts +4 -0
- package/admin/DisableTenant/useDisableTenant.js +27 -0
- package/admin/DisableTenant/useDisableTenant.js.map +1 -0
- package/admin/EnableTenant/EnableTenantGateway.d.ts +11 -0
- package/admin/EnableTenant/EnableTenantGateway.js +43 -0
- package/admin/EnableTenant/EnableTenantGateway.js.map +1 -0
- package/admin/EnableTenant/EnableTenantRepository.d.ts +10 -0
- package/admin/EnableTenant/EnableTenantRepository.js +15 -0
- package/admin/EnableTenant/EnableTenantRepository.js.map +1 -0
- package/admin/EnableTenant/EnableTenantUseCase.d.ts +10 -0
- package/admin/EnableTenant/EnableTenantUseCase.js +15 -0
- package/admin/EnableTenant/EnableTenantUseCase.js.map +1 -0
- package/admin/EnableTenant/abstractions.d.ts +21 -0
- package/admin/EnableTenant/abstractions.js +15 -0
- package/admin/EnableTenant/abstractions.js.map +1 -0
- package/admin/EnableTenant/feature.d.ts +3 -0
- package/admin/EnableTenant/feature.js +20 -0
- package/admin/EnableTenant/feature.js.map +1 -0
- package/admin/EnableTenant/index.d.ts +2 -0
- package/admin/EnableTenant/index.js +4 -0
- package/admin/EnableTenant/index.js.map +1 -0
- package/admin/EnableTenant/useEnableTenant.d.ts +4 -0
- package/admin/EnableTenant/useEnableTenant.js +23 -0
- package/admin/EnableTenant/useEnableTenant.js.map +1 -0
- package/admin/Extension.d.ts +2 -0
- package/admin/Extension.js +47 -0
- package/admin/Extension.js.map +1 -0
- package/admin/IsRootTenant.d.ts +13 -0
- package/admin/IsRootTenant.js +37 -0
- package/admin/IsRootTenant.js.map +1 -0
- package/admin/Permissions/LegacyPermissionRenderer.d.ts +1 -0
- package/admin/Permissions/LegacyPermissionRenderer.js +29 -0
- package/admin/Permissions/LegacyPermissionRenderer.js.map +1 -0
- package/admin/Permissions/TenantManagerPermissions.d.ts +11 -0
- package/admin/Permissions/TenantManagerPermissions.js +75 -0
- package/admin/Permissions/TenantManagerPermissions.js.map +1 -0
- package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.d.ts +8 -0
- package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js +42 -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 +19 -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 +39 -0
- package/admin/TenantEntryList/EnableTenant/useEnableTenant.js.map +1 -0
- package/admin/TenantEntryList/FolderNameCell.d.ts +7 -0
- package/admin/TenantEntryList/FolderNameCell.js +29 -0
- package/admin/TenantEntryList/FolderNameCell.js.map +1 -0
- package/admin/TenantEntryList/InstallTenantButton/InstallTenant.d.ts +7 -0
- package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js +19 -0
- package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js.map +1 -0
- package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.d.ts +16 -0
- package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js +17 -0
- package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js.map +1 -0
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.d.ts +5 -0
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js +46 -0
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js.map +1 -0
- package/admin/TenantEntryList/ManageTenant.d.ts +7 -0
- package/admin/TenantEntryList/ManageTenant.js +21 -0
- package/admin/TenantEntryList/ManageTenant.js.map +1 -0
- package/admin/TenantEntryList/TenantCell.d.ts +2 -0
- package/admin/TenantEntryList/TenantCell.js +39 -0
- package/admin/TenantEntryList/TenantCell.js.map +1 -0
- package/admin/TenantEntryList/TenantNameCell.d.ts +2 -0
- package/admin/TenantEntryList/TenantNameCell.js +54 -0
- package/admin/TenantEntryList/TenantNameCell.js.map +1 -0
- package/admin/TenantEntryList.d.ts +2 -0
- package/admin/TenantEntryList.js +71 -0
- package/admin/TenantEntryList.js.map +1 -0
- package/admin/TenantSelector.d.ts +2 -0
- package/admin/TenantSelector.js +22 -0
- package/admin/TenantSelector.js.map +1 -0
- package/admin/types.d.ts +7 -0
- package/admin/types.js +3 -0
- package/admin/types.js.map +1 -0
- package/api/Extension.d.ts +1 -0
- package/api/Extension.js +42 -0
- package/api/Extension.js.map +1 -0
- package/api/domain/TenantId.d.ts +3 -0
- package/api/domain/TenantId.js +12 -0
- package/api/domain/TenantId.js.map +1 -0
- package/api/domain/TenantModel.d.ts +11 -0
- package/api/domain/TenantModel.js +46 -0
- package/api/domain/TenantModel.js.map +1 -0
- package/api/domain/TenantModelExtension.d.ts +10 -0
- package/api/domain/TenantModelExtension.js +4 -0
- package/api/domain/TenantModelExtension.js.map +1 -0
- package/api/domain/errors.d.ts +33 -0
- package/api/domain/errors.js +63 -0
- package/api/domain/errors.js.map +1 -0
- package/api/features/AddCmsPermissions/AddCmsPermissions.d.ts +8 -0
- package/api/features/AddCmsPermissions/AddCmsPermissions.js +34 -0
- package/api/features/AddCmsPermissions/AddCmsPermissions.js.map +1 -0
- package/api/features/AddCmsPermissions/feature.d.ts +1 -0
- package/api/features/AddCmsPermissions/feature.js +10 -0
- package/api/features/AddCmsPermissions/feature.js.map +1 -0
- package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.d.ts +22 -0
- package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js +90 -0
- package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js.map +1 -0
- package/api/features/CreateAndInstallTenant/abstractions.d.ts +24 -0
- package/api/features/CreateAndInstallTenant/abstractions.js +9 -0
- package/api/features/CreateAndInstallTenant/abstractions.js.map +1 -0
- package/api/features/CreateAndInstallTenant/feature.d.ts +1 -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 +48 -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 +44 -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 +11 -0
- package/api/features/CreateTenant/abstractions.js.map +1 -0
- package/api/features/CreateTenant/feature.d.ts +1 -0
- package/api/features/CreateTenant/feature.js +15 -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 +37 -0
- package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js.map +1 -0
- package/api/features/DeleteTenantOnEntryDelete/feature.d.ts +1 -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 +66 -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 +4 -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 +18 -0
- package/api/features/DisableTenant/events.js.map +1 -0
- package/api/features/DisableTenant/feature.d.ts +1 -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 +68 -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 +4 -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 +18 -0
- package/api/features/EnableTenant/events.js.map +1 -0
- package/api/features/EnableTenant/feature.d.ts +1 -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 +29 -0
- package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js.map +1 -0
- package/api/features/GetCurrentTenant/abstractions.d.ts +22 -0
- package/api/features/GetCurrentTenant/abstractions.js +10 -0
- package/api/features/GetCurrentTenant/abstractions.js.map +1 -0
- package/api/features/GetCurrentTenant/feature.d.ts +1 -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 +49 -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 +27 -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 +15 -0
- package/api/features/GetTenantById/abstractions.js.map +1 -0
- package/api/features/GetTenantById/feature.d.ts +1 -0
- package/api/features/GetTenantById/feature.js +15 -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 +58 -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 +15 -0
- package/api/features/UpdateTenant/abstractions.js.map +1 -0
- package/api/features/UpdateTenant/feature.d.ts +1 -0
- package/api/features/UpdateTenant/feature.js +15 -0
- package/api/features/UpdateTenant/feature.js.map +1 -0
- package/api/graphql/CreateTenantSchema.d.ts +14 -0
- package/api/graphql/CreateTenantSchema.js +77 -0
- package/api/graphql/CreateTenantSchema.js.map +1 -0
- package/api/graphql/DisableTenantSchema.d.ts +8 -0
- package/api/graphql/DisableTenantSchema.js +35 -0
- package/api/graphql/DisableTenantSchema.js.map +1 -0
- package/api/graphql/EnableTenantSchema.d.ts +8 -0
- package/api/graphql/EnableTenantSchema.js +35 -0
- package/api/graphql/EnableTenantSchema.js.map +1 -0
- package/api/graphql/GetCurrentTenantSchema.d.ts +8 -0
- package/api/graphql/GetCurrentTenantSchema.js +59 -0
- package/api/graphql/GetCurrentTenantSchema.js.map +1 -0
- package/api/graphql/InstallTenantSchema.d.ts +8 -0
- package/api/graphql/InstallTenantSchema.js +54 -0
- package/api/graphql/InstallTenantSchema.js.map +1 -0
- package/exports/api/tenant-manager.d.ts +2 -0
- package/exports/api/tenant-manager.js +3 -0
- package/exports/api/tenant-manager.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +3 -0
- package/index.js.map +1 -0
- package/package.json +46 -0
- package/shared/Tenant.d.ts +21 -0
- package/shared/Tenant.js +26 -0
- package/shared/Tenant.js.map +1 -0
- package/shared/constants.d.ts +1 -0
- package/shared/constants.js +3 -0
- package/shared/constants.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Fragment","useCallback","useMemo","Grid","Select","i18n","PermissionInfo","gridWithPaddingClass","Form","t","ns","TENANT_MANAGER","TENANT_MANAGER_FULL_ACCESS","FULL_ACCESS","NO_ACCESS","NO_ACCESS_DATA","accessLevel","TenantManagerPermissions","value","onChange","onFormChange","data","newValue","Array","isArray","filter","item","name","startsWith","push","formData","hasFullAccess","find","createElement","Bind","className","Column","span","title","options","label"],"sources":["TenantManagerPermissions.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useMemo } from \"react\";\nimport { Grid, Select } from \"@webiny/admin-ui\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { PermissionInfo, gridWithPaddingClass } from \"@webiny/app-admin\";\nimport { Form } from \"@webiny/form\";\n\nconst t = i18n.ns(\"app-file-manager/admin/plugins/permissionRenderer\");\n\nconst TENANT_MANAGER = \"tm\";\nconst TENANT_MANAGER_FULL_ACCESS = `${TENANT_MANAGER}.*`;\n\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\n\nconst NO_ACCESS_DATA = { accessLevel: NO_ACCESS };\n\ninterface TenantManagerPermissionItem {\n accessLevel?: string;\n name?: string;\n}\ninterface TenantManagerPermissionsProps {\n value: TenantManagerPermissionItem;\n onChange: (value: TenantManagerPermissionItem[]) => void;\n}\n\nexport const TenantManagerPermissions = ({ value, onChange }: TenantManagerPermissionsProps) => {\n const onFormChange = useCallback(\n (data: TenantManagerPermissionItem) => {\n let newValue: TenantManagerPermissionItem[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `file-manager*` permission objects, it's easier to build new ones from scratch.\n newValue = value.filter(item => !item.name.startsWith(TENANT_MANAGER));\n }\n\n if (data.accessLevel === NO_ACCESS) {\n onChange(newValue);\n return;\n }\n\n if (data.accessLevel === FULL_ACCESS) {\n newValue.push({ name: TENANT_MANAGER_FULL_ACCESS });\n onChange(newValue);\n return;\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo((): TenantManagerPermissionItem => {\n if (!Array.isArray(value)) {\n return NO_ACCESS_DATA;\n }\n\n const hasFullAccess = value.find(\n item => item.name === TENANT_MANAGER_FULL_ACCESS || item.name === \"*\"\n );\n\n if (hasFullAccess) {\n return { accessLevel: FULL_ACCESS };\n }\n\n return NO_ACCESS_DATA;\n }, []);\n\n return (\n <Form data={formData} onChange={onFormChange}>\n {({ Bind }) => (\n <Fragment>\n <Grid className={gridWithPaddingClass}>\n <Grid.Column span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Grid.Column>\n <Grid.Column span={6}>\n <Bind name={\"accessLevel\"}>\n <Select\n options={[\n {\n value: NO_ACCESS,\n label: t`No access`\n },\n {\n value: FULL_ACCESS,\n label: t`Full access`\n }\n ]}\n />\n </Bind>\n </Grid.Column>\n </Grid>\n </Fragment>\n )}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React, { useCallback } from "react";
|
|
2
|
+
import { useToast, Text } from "@webiny/admin-ui";
|
|
3
|
+
import { useDialogs } from "@webiny/app-admin";
|
|
4
|
+
import { useDisableTenant } from "../../DisableTenant/index.js";
|
|
5
|
+
export function useDisableTenantDialog({
|
|
6
|
+
record
|
|
7
|
+
}) {
|
|
8
|
+
const toast = useToast();
|
|
9
|
+
const dialogs = useDialogs();
|
|
10
|
+
const {
|
|
11
|
+
disableTenant
|
|
12
|
+
} = useDisableTenant(record);
|
|
13
|
+
const disableEntry = useCallback(() => {
|
|
14
|
+
dialogs.showDialog({
|
|
15
|
+
title: "Are you sure you want to disable this tenant?",
|
|
16
|
+
content: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text, {
|
|
17
|
+
as: "div"
|
|
18
|
+
}, "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.")),
|
|
19
|
+
acceptLabel: "Yes, disable!",
|
|
20
|
+
loadingLabel: "Disabling tenant...",
|
|
21
|
+
async onAccept() {
|
|
22
|
+
try {
|
|
23
|
+
await disableTenant();
|
|
24
|
+
toast.showSuccessToast({
|
|
25
|
+
title: "Tenant was disabled successfully!"
|
|
26
|
+
});
|
|
27
|
+
} catch (e) {
|
|
28
|
+
toast.showWarningToast({
|
|
29
|
+
title: "Tenant could not be disabled!",
|
|
30
|
+
description: e.message,
|
|
31
|
+
duration: Infinity
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}, [record.id]);
|
|
37
|
+
return {
|
|
38
|
+
disableEntry
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=useDisableTenantDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useToast","Text","useDialogs","useDisableTenant","useDisableTenantDialog","record","toast","dialogs","disableTenant","disableEntry","showDialog","title","content","createElement","Fragment","as","acceptLabel","loadingLabel","onAccept","showSuccessToast","e","showWarningToast","description","message","duration","Infinity","id"],"sources":["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"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAE1C,SAASC,QAAQ,EAAEC,IAAI,QAAQ,kBAAkB;AACjD,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,gBAAgB;AAMzB,OAAO,SAASC,sBAAsBA,CAAC;EAAEC;AAA+B,CAAC,EAAE;EACvE,MAAMC,KAAK,GAAGN,QAAQ,CAAC,CAAC;EACxB,MAAMO,OAAO,GAAGL,UAAU,CAAC,CAAC;EAC5B,MAAM;IAAEM;EAAc,CAAC,GAAGL,gBAAgB,CAACE,MAAM,CAAC;EAElD,MAAMI,YAAY,GAAGV,WAAW,CAAC,MAAM;IACnCQ,OAAO,CAACG,UAAU,CAAC;MACfC,KAAK,EAAE,+CAA+C;MACtDC,OAAO,eACHd,KAAA,CAAAe,aAAA,CAAAf,KAAA,CAAAgB,QAAA,qBACIhB,KAAA,CAAAe,aAAA,CAACZ,IAAI;QAACc,EAAE,EAAE;MAAM,GAAC,uIAGX,CACR,CACL;MACDC,WAAW,EAAE,eAAe;MAC5BC,YAAY,EAAE,qBAAqB;MACnC,MAAMC,QAAQA,CAAA,EAAG;QACb,IAAI;UACA,MAAMV,aAAa,CAAC,CAAC;UACrBF,KAAK,CAACa,gBAAgB,CAAC;YACnBR,KAAK,EAAE;UACX,CAAC,CAAC;QACN,CAAC,CAAC,OAAOS,CAAC,EAAE;UACRd,KAAK,CAACe,gBAAgB,CAAC;YACnBV,KAAK,EAAE,+BAA+B;YACtCW,WAAW,EAAEF,CAAC,CAACG,OAAO;YACtBC,QAAQ,EAAEC;UACd,CAAC,CAAC;QACN;MACJ;IACJ,CAAC,CAAC;EACN,CAAC,EAAE,CAACpB,MAAM,CAACqB,EAAE,CAAC,CAAC;EAEf,OAAO;IAAEjB;EAAa,CAAC;AAC3B","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Button } from "@webiny/admin-ui";
|
|
3
|
+
import { useEnableTenant } from "./useEnableTenant.js";
|
|
4
|
+
export const EnableTenant = ({
|
|
5
|
+
tenant
|
|
6
|
+
}) => {
|
|
7
|
+
const {
|
|
8
|
+
enableTenant,
|
|
9
|
+
loading
|
|
10
|
+
} = useEnableTenant(tenant);
|
|
11
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
12
|
+
variant: "primary",
|
|
13
|
+
onClick: enableTenant,
|
|
14
|
+
disabled: loading,
|
|
15
|
+
text: loading ? "Enabling..." : "Enable"
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=EnableTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Button","useEnableTenant","EnableTenant","tenant","enableTenant","loading","createElement","variant","onClick","disabled","text"],"sources":["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"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,QAAQ,kBAAkB;AAEzC,SAASC,eAAe;AAMxB,OAAO,MAAMC,YAAY,GAAGA,CAAC;EAAEC;AAA0B,CAAC,KAAK;EAC3D,MAAM;IAAEC,YAAY;IAAEC;EAAQ,CAAC,GAAGJ,eAAe,CAACE,MAAM,CAAC;EAEzD,oBACIJ,KAAA,CAAAO,aAAA,CAACN,MAAM;IACHO,OAAO,EAAE,SAAU;IACnBC,OAAO,EAAEJ,YAAa;IACtBK,QAAQ,EAAEJ,OAAQ;IAClBK,IAAI,EAAEL,OAAO,GAAG,aAAa,GAAG;EAAS,CAC5C,CAAC;AAEV,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { useToast } from "@webiny/admin-ui";
|
|
3
|
+
import { useRecords } from "@webiny/app-aco";
|
|
4
|
+
import { useEnableTenant as baseEnableTenant } from "../../EnableTenant/index.js";
|
|
5
|
+
export const useEnableTenant = tenant => {
|
|
6
|
+
const toast = useToast();
|
|
7
|
+
const {
|
|
8
|
+
updateRecordInCache
|
|
9
|
+
} = useRecords();
|
|
10
|
+
const useCase = baseEnableTenant();
|
|
11
|
+
const enableTenant = useCallback(async () => {
|
|
12
|
+
try {
|
|
13
|
+
await useCase.enableTenant(tenant.entryId);
|
|
14
|
+
} catch (error) {
|
|
15
|
+
toast.showWarningToast({
|
|
16
|
+
title: "Could not enable tenant",
|
|
17
|
+
description: error.message,
|
|
18
|
+
duration: Infinity
|
|
19
|
+
});
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
toast.showSuccessToast({
|
|
23
|
+
title: "Tenant was enabled successfully!"
|
|
24
|
+
});
|
|
25
|
+
updateRecordInCache({
|
|
26
|
+
...tenant,
|
|
27
|
+
values: {
|
|
28
|
+
...tenant.values,
|
|
29
|
+
status: "enabled"
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}, [tenant]);
|
|
33
|
+
return {
|
|
34
|
+
enableTenant,
|
|
35
|
+
loading: useCase.loading
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=useEnableTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useToast","useRecords","useEnableTenant","baseEnableTenant","tenant","toast","updateRecordInCache","useCase","enableTenant","entryId","error","showWarningToast","title","description","message","duration","Infinity","showSuccessToast","values","status","loading"],"sources":["useEnableTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { useRecords } from \"@webiny/app-aco\";\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 { updateRecordInCache } = useRecords();\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\n updateRecordInCache({\n ...tenant,\n values: {\n ...tenant.values,\n status: \"enabled\"\n }\n });\n }, [tenant]);\n\n return { enableTenant, loading: useCase.loading };\n};\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,QAAQ,QAAQ,kBAAkB;AAC3C,SAASC,UAAU,QAAQ,iBAAiB;AAE5C,SAASC,eAAe,IAAIC,gBAAgB;AAE5C,OAAO,MAAMD,eAAe,GAAIE,MAAmB,IAAK;EACpD,MAAMC,KAAK,GAAGL,QAAQ,CAAC,CAAC;EACxB,MAAM;IAAEM;EAAoB,CAAC,GAAGL,UAAU,CAAC,CAAC;EAC5C,MAAMM,OAAO,GAAGJ,gBAAgB,CAAC,CAAC;EAElC,MAAMK,YAAY,GAAGT,WAAW,CAAC,YAAY;IACzC,IAAI;MACA,MAAMQ,OAAO,CAACC,YAAY,CAACJ,MAAM,CAACK,OAAO,CAAC;IAC9C,CAAC,CAAC,OAAOC,KAAK,EAAE;MACZL,KAAK,CAACM,gBAAgB,CAAC;QACnBC,KAAK,EAAE,yBAAyB;QAChCC,WAAW,EAAEH,KAAK,CAACI,OAAO;QAC1BC,QAAQ,EAAEC;MACd,CAAC,CAAC;MACF;IACJ;IAEAX,KAAK,CAACY,gBAAgB,CAAC;MAAEL,KAAK,EAAE;IAAmC,CAAC,CAAC;IAErEN,mBAAmB,CAAC;MAChB,GAAGF,MAAM;MACTc,MAAM,EAAE;QACJ,GAAGd,MAAM,CAACc,MAAM;QAChBC,MAAM,EAAE;MACZ;IACJ,CAAC,CAAC;EACN,CAAC,EAAE,CAACf,MAAM,CAAC,CAAC;EAEZ,OAAO;IAAEI,YAAY;IAAEY,OAAO,EAAEb,OAAO,CAACa;EAAQ,CAAC;AACrD,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { useNavigateFolder } from "@webiny/app-aco";
|
|
3
|
+
import { Icon, Text } from "@webiny/admin-ui";
|
|
4
|
+
import { ReactComponent as Folder } from "@webiny/icons/folder.svg";
|
|
5
|
+
import { ReactComponent as FolderShared } from "@webiny/icons/folder_shared.svg";
|
|
6
|
+
export const FolderNameCell = ({
|
|
7
|
+
folder
|
|
8
|
+
}) => {
|
|
9
|
+
const {
|
|
10
|
+
navigateToFolder
|
|
11
|
+
} = useNavigateFolder();
|
|
12
|
+
let icon = /*#__PURE__*/React.createElement(Folder, null);
|
|
13
|
+
if (folder.hasNonInheritedPermissions && folder.canManagePermissions) {
|
|
14
|
+
icon = /*#__PURE__*/React.createElement(FolderShared, null);
|
|
15
|
+
}
|
|
16
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
17
|
+
className: "flex items-center gap-sm truncate cursor-pointer font-semibold hover:underline",
|
|
18
|
+
onClick: () => navigateToFolder(folder.id)
|
|
19
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
20
|
+
size: "sm",
|
|
21
|
+
color: "neutral-strong",
|
|
22
|
+
icon: icon,
|
|
23
|
+
label: `Folder - ${folder.title}`
|
|
24
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
25
|
+
className: "truncate min-w-0 shrink"
|
|
26
|
+
}, folder.title));
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=FolderNameCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useNavigateFolder","Icon","Text","ReactComponent","Folder","FolderShared","FolderNameCell","folder","navigateToFolder","icon","createElement","hasNonInheritedPermissions","canManagePermissions","className","onClick","id","size","color","label","title"],"sources":["FolderNameCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { type FolderTableRow, useNavigateFolder } 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\";\n\ninterface FolderNameCellProps {\n folder: FolderTableRow[\"data\"];\n}\n\nexport const FolderNameCell = ({ folder }: FolderNameCellProps) => {\n const { navigateToFolder } = useNavigateFolder();\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={() => navigateToFolder(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"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAA8BC,iBAAiB,QAAQ,iBAAiB;AACxE,SAASC,IAAI,EAAEC,IAAI,QAAQ,kBAAkB;AAC7C,SAASC,cAAc,IAAIC,MAAM,QAAQ,0BAA0B;AACnE,SAASD,cAAc,IAAIE,YAAY,QAAQ,iCAAiC;AAMhF,OAAO,MAAMC,cAAc,GAAGA,CAAC;EAAEC;AAA4B,CAAC,KAAK;EAC/D,MAAM;IAAEC;EAAiB,CAAC,GAAGR,iBAAiB,CAAC,CAAC;EAEhD,IAAIS,IAAI,gBAAGV,KAAA,CAAAW,aAAA,CAACN,MAAM,MAAE,CAAC;EACrB,IAAIG,MAAM,CAACI,0BAA0B,IAAIJ,MAAM,CAACK,oBAAoB,EAAE;IAClEH,IAAI,gBAAGV,KAAA,CAAAW,aAAA,CAACL,YAAY,MAAE,CAAC;EAC3B;EAEA,oBACIN,KAAA,CAAAW,aAAA;IACIG,SAAS,EACL,gFACH;IACDC,OAAO,EAAEA,CAAA,KAAMN,gBAAgB,CAACD,MAAM,CAACQ,EAAE;EAAE,gBAE3ChB,KAAA,CAAAW,aAAA,CAACT,IAAI;IACDe,IAAI,EAAE,IAAK;IACXC,KAAK,EAAE,gBAAiB;IACxBR,IAAI,EAAEA,IAAK;IACXS,KAAK,EAAE,YAAYX,MAAM,CAACY,KAAK;EAAG,CACrC,CAAC,eACFpB,KAAA,CAAAW,aAAA,CAACR,IAAI;IAACW,SAAS,EAAE;EAA0B,GAAEN,MAAM,CAACY,KAAY,CAC/D,CAAC;AAEd,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Button } from "@webiny/admin-ui";
|
|
3
|
+
import { useInstallTenant } from "./useInstallTenant.js";
|
|
4
|
+
export const InstallTenant = ({
|
|
5
|
+
tenant
|
|
6
|
+
}) => {
|
|
7
|
+
const {
|
|
8
|
+
installTenant,
|
|
9
|
+
loading
|
|
10
|
+
} = useInstallTenant(tenant);
|
|
11
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
12
|
+
variant: "primary",
|
|
13
|
+
onClick: installTenant,
|
|
14
|
+
disabled: loading,
|
|
15
|
+
text: loading ? "Installing..." : "Install"
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=InstallTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Button","useInstallTenant","InstallTenant","tenant","installTenant","loading","createElement","variant","onClick","disabled","text"],"sources":["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"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,QAAQ,kBAAkB;AAEzC,SAASC,gBAAgB;AAMzB,OAAO,MAAMC,aAAa,GAAGA,CAAC;EAAEC;AAA2B,CAAC,KAAK;EAC7D,MAAM;IAAEC,aAAa;IAAEC;EAAQ,CAAC,GAAGJ,gBAAgB,CAACE,MAAM,CAAC;EAE3D,oBACIJ,KAAA,CAAAO,aAAA,CAACN,MAAM;IACHO,OAAO,EAAE,SAAU;IACnBC,OAAO,EAAEJ,aAAc;IACvBK,QAAQ,EAAEJ,OAAQ;IAClBK,IAAI,EAAEL,OAAO,GAAG,eAAe,GAAG;EAAU,CAC/C,CAAC;AAEV,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const INSTALL_TENANT: import("graphql").DocumentNode;
|
|
2
|
+
export interface InstallTenantResponse {
|
|
3
|
+
tenantManager: {
|
|
4
|
+
installTenant: {
|
|
5
|
+
data: boolean;
|
|
6
|
+
error?: null;
|
|
7
|
+
} | {
|
|
8
|
+
data: null;
|
|
9
|
+
error: {
|
|
10
|
+
code: string;
|
|
11
|
+
message: string;
|
|
12
|
+
data: Record<string, any>;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import gql from "graphql-tag";
|
|
2
|
+
export const INSTALL_TENANT = gql`
|
|
3
|
+
mutation InstallTenant($tenantId: ID!) {
|
|
4
|
+
tenantManager {
|
|
5
|
+
installTenant(tenantId: $tenantId) {
|
|
6
|
+
data
|
|
7
|
+
error {
|
|
8
|
+
code
|
|
9
|
+
message
|
|
10
|
+
data
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
`;
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=installTenant.gql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["gql","INSTALL_TENANT"],"sources":["installTenant.gql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nexport const INSTALL_TENANT = gql`\n mutation InstallTenant($tenantId: ID!) {\n tenantManager {\n installTenant(tenantId: $tenantId) {\n data\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n\nexport interface InstallTenantResponse {\n tenantManager: {\n installTenant:\n | {\n data: boolean;\n error?: null;\n }\n | {\n data: null;\n error: {\n code: string;\n message: string;\n data: Record<string, any>;\n };\n };\n };\n}\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,aAAa;AAE7B,OAAO,MAAMC,cAAc,GAAGD,GAAG;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { useMutation } from "@apollo/react-hooks";
|
|
3
|
+
import { useToast } from "@webiny/admin-ui";
|
|
4
|
+
import { useRecords } from "@webiny/app-aco";
|
|
5
|
+
import { INSTALL_TENANT } from "./installTenant.gql.js";
|
|
6
|
+
export const useInstallTenant = tenant => {
|
|
7
|
+
const toast = useToast();
|
|
8
|
+
const {
|
|
9
|
+
updateRecordInCache
|
|
10
|
+
} = useRecords();
|
|
11
|
+
const [runMutation, mutation] = useMutation(INSTALL_TENANT);
|
|
12
|
+
const installTenant = useCallback(async () => {
|
|
13
|
+
const {
|
|
14
|
+
data
|
|
15
|
+
} = await runMutation({
|
|
16
|
+
variables: {
|
|
17
|
+
tenantId: tenant.entryId
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
if (data?.tenantManager.installTenant.error) {
|
|
21
|
+
toast.showWarningToast({
|
|
22
|
+
title: "Could not install tenant",
|
|
23
|
+
description: data?.tenantManager.installTenant.error.message,
|
|
24
|
+
duration: Infinity
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
toast.showSuccessToast({
|
|
29
|
+
title: "Tenant installed successfully!"
|
|
30
|
+
});
|
|
31
|
+
updateRecordInCache({
|
|
32
|
+
...tenant,
|
|
33
|
+
values: {
|
|
34
|
+
...tenant.values,
|
|
35
|
+
status: "enabled",
|
|
36
|
+
isInstalled: true
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}, [tenant]);
|
|
40
|
+
return {
|
|
41
|
+
installTenant,
|
|
42
|
+
loading: mutation.loading
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=useInstallTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useMutation","useToast","useRecords","INSTALL_TENANT","useInstallTenant","tenant","toast","updateRecordInCache","runMutation","mutation","installTenant","data","variables","tenantId","entryId","tenantManager","error","showWarningToast","title","description","message","duration","Infinity","showSuccessToast","values","status","isInstalled","loading"],"sources":["useInstallTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useMutation } from \"@apollo/react-hooks\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { useRecords } from \"@webiny/app-aco\";\nimport { TenantEntry } from \"../../types.js\";\nimport { InstallTenantResponse, INSTALL_TENANT } from \"./installTenant.gql.js\";\n\nexport const useInstallTenant = (tenant: TenantEntry) => {\n const toast = useToast();\n const { updateRecordInCache } = useRecords();\n const [runMutation, mutation] = useMutation<InstallTenantResponse>(INSTALL_TENANT);\n\n const installTenant = useCallback(async () => {\n const { data } = await runMutation({ variables: { tenantId: tenant.entryId } });\n if (data?.tenantManager.installTenant.error) {\n toast.showWarningToast({\n title: \"Could not install tenant\",\n description: data?.tenantManager.installTenant.error.message,\n duration: Infinity\n });\n return;\n }\n\n toast.showSuccessToast({ title: \"Tenant installed successfully!\" });\n\n updateRecordInCache({\n ...tenant,\n values: {\n ...tenant.values,\n status: \"enabled\",\n isInstalled: true\n }\n });\n }, [tenant]);\n\n return { installTenant, loading: mutation.loading };\n};\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,WAAW,QAAQ,qBAAqB;AACjD,SAASC,QAAQ,QAAQ,kBAAkB;AAC3C,SAASC,UAAU,QAAQ,iBAAiB;AAE5C,SAAgCC,cAAc;AAE9C,OAAO,MAAMC,gBAAgB,GAAIC,MAAmB,IAAK;EACrD,MAAMC,KAAK,GAAGL,QAAQ,CAAC,CAAC;EACxB,MAAM;IAAEM;EAAoB,CAAC,GAAGL,UAAU,CAAC,CAAC;EAC5C,MAAM,CAACM,WAAW,EAAEC,QAAQ,CAAC,GAAGT,WAAW,CAAwBG,cAAc,CAAC;EAElF,MAAMO,aAAa,GAAGX,WAAW,CAAC,YAAY;IAC1C,MAAM;MAAEY;IAAK,CAAC,GAAG,MAAMH,WAAW,CAAC;MAAEI,SAAS,EAAE;QAAEC,QAAQ,EAAER,MAAM,CAACS;MAAQ;IAAE,CAAC,CAAC;IAC/E,IAAIH,IAAI,EAAEI,aAAa,CAACL,aAAa,CAACM,KAAK,EAAE;MACzCV,KAAK,CAACW,gBAAgB,CAAC;QACnBC,KAAK,EAAE,0BAA0B;QACjCC,WAAW,EAAER,IAAI,EAAEI,aAAa,CAACL,aAAa,CAACM,KAAK,CAACI,OAAO;QAC5DC,QAAQ,EAAEC;MACd,CAAC,CAAC;MACF;IACJ;IAEAhB,KAAK,CAACiB,gBAAgB,CAAC;MAAEL,KAAK,EAAE;IAAiC,CAAC,CAAC;IAEnEX,mBAAmB,CAAC;MAChB,GAAGF,MAAM;MACTmB,MAAM,EAAE;QACJ,GAAGnB,MAAM,CAACmB,MAAM;QAChBC,MAAM,EAAE,SAAS;QACjBC,WAAW,EAAE;MACjB;IACJ,CAAC,CAAC;EACN,CAAC,EAAE,CAACrB,MAAM,CAAC,CAAC;EAEZ,OAAO;IAAEK,aAAa;IAAEiB,OAAO,EAAElB,QAAQ,CAACkB;EAAQ,CAAC;AACvD,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { useCallback } from "react";
|
|
2
|
+
import { Button } from "@webiny/admin-ui";
|
|
3
|
+
import { useTenantContext } from "@webiny/app-admin";
|
|
4
|
+
export const ManageTenant = ({
|
|
5
|
+
tenant
|
|
6
|
+
}) => {
|
|
7
|
+
const {
|
|
8
|
+
setTenant
|
|
9
|
+
} = useTenantContext();
|
|
10
|
+
const switchToTenant = useCallback(() => {
|
|
11
|
+
localStorage.removeItem("webiny_wb_page_latest_visited_folder");
|
|
12
|
+
setTenant(tenant.entryId);
|
|
13
|
+
}, [tenant]);
|
|
14
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
15
|
+
variant: "secondary",
|
|
16
|
+
onClick: switchToTenant,
|
|
17
|
+
text: "Manage"
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=ManageTenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","Button","useTenantContext","ManageTenant","tenant","setTenant","switchToTenant","localStorage","removeItem","entryId","createElement","variant","onClick","text"],"sources":["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 localStorage.removeItem(\"webiny_wb_page_latest_visited_folder\");\n setTenant(tenant.entryId);\n }, [tenant]);\n\n return <Button variant={\"secondary\"} onClick={switchToTenant} text={\"Manage\"} />;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,gBAAgB,QAAQ,mBAAmB;AAOpD,OAAO,MAAMC,YAAY,GAAGA,CAAC;EAAEC;AAA0B,CAAC,KAAK;EAC3D,MAAM;IAAEC;EAAU,CAAC,GAAGH,gBAAgB,CAAC,CAAC;EACxC,MAAMI,cAAc,GAAGN,WAAW,CAAC,MAAM;IACrCO,YAAY,CAACC,UAAU,CAAC,sCAAsC,CAAC;IAC/DH,SAAS,CAACD,MAAM,CAACK,OAAO,CAAC;EAC7B,CAAC,EAAE,CAACL,MAAM,CAAC,CAAC;EAEZ,oBAAOL,KAAA,CAAAW,aAAA,CAACT,MAAM;IAACU,OAAO,EAAE,WAAY;IAACC,OAAO,EAAEN,cAAe;IAACO,IAAI,EAAE;EAAS,CAAE,CAAC;AACpF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
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 {
|
|
7
|
+
Browser
|
|
8
|
+
} = ContentEntryListConfig;
|
|
9
|
+
const {
|
|
10
|
+
useTableRow,
|
|
11
|
+
isFolderRow
|
|
12
|
+
} = Browser.Table.Column;
|
|
13
|
+
export const TenantCell = () => {
|
|
14
|
+
// useTableRow() allows you to access the entire data of the current row.
|
|
15
|
+
const {
|
|
16
|
+
row
|
|
17
|
+
} = useTableRow();
|
|
18
|
+
|
|
19
|
+
// isFolderRow() allows for custom rendering when the current row is a folder.
|
|
20
|
+
if (isFolderRow(row)) {
|
|
21
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, "-");
|
|
22
|
+
}
|
|
23
|
+
const tenant = row.data;
|
|
24
|
+
if (!tenant.values.isInstalled) {
|
|
25
|
+
return /*#__PURE__*/React.createElement(InstallTenant, {
|
|
26
|
+
tenant: tenant
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
if (tenant.values.status === "disabled") {
|
|
30
|
+
return /*#__PURE__*/React.createElement(EnableTenant, {
|
|
31
|
+
tenant: tenant
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return /*#__PURE__*/React.createElement(ManageTenant, {
|
|
35
|
+
tenant: tenant
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=TenantCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","ContentEntryListConfig","InstallTenant","ManageTenant","EnableTenant","Browser","useTableRow","isFolderRow","Table","Column","TenantCell","row","createElement","Fragment","tenant","data","values","isInstalled","status"],"sources":["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"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,sBAAsB,QAAQ,0BAA0B;AAEjE,SAASC,aAAa;AACtB,SAASC,YAAY;AACrB,SAASC,YAAY;AAErB,MAAM;EAAEC;AAAQ,CAAC,GAAGJ,sBAAsB;AAC1C,MAAM;EAAEK,WAAW;EAAEC;AAAY,CAAC,GAAGF,OAAO,CAACG,KAAK,CAACC,MAAM;AAEzD,OAAO,MAAMC,UAAU,GAAGA,CAAA,KAAM;EAC5B;EACA,MAAM;IAAEC;EAAI,CAAC,GAAGL,WAAW,CAAc,CAAC;;EAE1C;EACA,IAAIC,WAAW,CAACI,GAAG,CAAC,EAAE;IAClB,oBAAOX,KAAA,CAAAY,aAAA,CAAAZ,KAAA,CAAAa,QAAA,QAAG,GAAM,CAAC;EACrB;EAEA,MAAMC,MAAM,GAAGH,GAAG,CAACI,IAAI;EAEvB,IAAI,CAACD,MAAM,CAACE,MAAM,CAACC,WAAW,EAAE;IAC5B,oBAAOjB,KAAA,CAAAY,aAAA,CAACV,aAAa;MAACY,MAAM,EAAEA;IAAO,CAAE,CAAC;EAC5C;EAEA,IAAIA,MAAM,CAACE,MAAM,CAACE,MAAM,KAAK,UAAU,EAAE;IACrC,oBAAOlB,KAAA,CAAAY,aAAA,CAACR,YAAY;MAACU,MAAM,EAAEA;IAAO,CAAE,CAAC;EAC3C;EAEA,oBAAOd,KAAA,CAAAY,aAAA,CAACT,YAAY;IAACW,MAAM,EAAEA;EAAO,CAAE,CAAC;AAC3C,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Icon, Link, Text } from "@webiny/admin-ui";
|
|
3
|
+
import { ReactComponent as File } from "@webiny/icons/description.svg";
|
|
4
|
+
import { ContentEntryListConfig } from "@webiny/app-headless-cms";
|
|
5
|
+
import { FolderNameCell } from "./FolderNameCell.js";
|
|
6
|
+
import { useContentEntriesList } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
|
|
7
|
+
const TenantName = ({
|
|
8
|
+
tenant
|
|
9
|
+
}) => {
|
|
10
|
+
const {
|
|
11
|
+
getEntryEditUrl
|
|
12
|
+
} = useContentEntriesList();
|
|
13
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
14
|
+
className: "flex flex-col gap-y-[3px]"
|
|
15
|
+
}, /*#__PURE__*/React.createElement(Link, {
|
|
16
|
+
to: getEntryEditUrl(tenant),
|
|
17
|
+
variant: "secondary",
|
|
18
|
+
className: "truncate no-underline!"
|
|
19
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
20
|
+
className: "flex w-full items-center"
|
|
21
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
22
|
+
size: "sm",
|
|
23
|
+
color: "neutral-strong",
|
|
24
|
+
className: "mr-xs",
|
|
25
|
+
icon: /*#__PURE__*/React.createElement(File, null),
|
|
26
|
+
label: `Tenant - ${tenant.values.name}`
|
|
27
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
28
|
+
as: "div",
|
|
29
|
+
className: "truncate min-w-0 shrink"
|
|
30
|
+
}, tenant.values.name))), /*#__PURE__*/React.createElement(Text, {
|
|
31
|
+
as: "div",
|
|
32
|
+
size: "sm",
|
|
33
|
+
className: "text-neutral-dimmed"
|
|
34
|
+
}, "ID: ", tenant.entryId));
|
|
35
|
+
};
|
|
36
|
+
export const TenantNameCell = () => {
|
|
37
|
+
const {
|
|
38
|
+
useTableRow,
|
|
39
|
+
isFolderRow
|
|
40
|
+
} = ContentEntryListConfig.Browser.Table.Column;
|
|
41
|
+
const {
|
|
42
|
+
row
|
|
43
|
+
} = useTableRow();
|
|
44
|
+
if (isFolderRow(row)) {
|
|
45
|
+
return /*#__PURE__*/React.createElement(FolderNameCell, {
|
|
46
|
+
folder: row.data
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return /*#__PURE__*/React.createElement(TenantName, {
|
|
50
|
+
tenant: row.data
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=TenantNameCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Icon","Link","Text","ReactComponent","File","ContentEntryListConfig","FolderNameCell","useContentEntriesList","TenantName","tenant","getEntryEditUrl","createElement","className","to","variant","size","color","icon","label","values","name","as","entryId","TenantNameCell","useTableRow","isFolderRow","Browser","Table","Column","row","folder","data"],"sources":["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 { useContentEntriesList } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\n\ninterface TenantNameProps {\n tenant: TenantEntry;\n}\n\nconst TenantName = ({ tenant }: TenantNameProps) => {\n const { getEntryEditUrl } = useContentEntriesList();\n\n return (\n <div className={\"flex flex-col gap-y-[3px]\"}>\n <Link\n to={getEntryEditUrl(tenant)}\n variant={\"secondary\"}\n className={\"truncate no-underline!\"}\n >\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"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,EAAEC,IAAI,QAAQ,kBAAkB;AACnD,SAASC,cAAc,IAAIC,IAAI,QAAQ,+BAA+B;AACtE,SAASC,sBAAsB,QAAQ,0BAA0B;AACjE,SAASC,cAAc;AAEvB,SAASC,qBAAqB,QAAQ,0DAA0D;AAMhG,MAAMC,UAAU,GAAGA,CAAC;EAAEC;AAAwB,CAAC,KAAK;EAChD,MAAM;IAAEC;EAAgB,CAAC,GAAGH,qBAAqB,CAAC,CAAC;EAEnD,oBACIR,KAAA,CAAAY,aAAA;IAAKC,SAAS,EAAE;EAA4B,gBACxCb,KAAA,CAAAY,aAAA,CAACV,IAAI;IACDY,EAAE,EAAEH,eAAe,CAACD,MAAM,CAAE;IAC5BK,OAAO,EAAE,WAAY;IACrBF,SAAS,EAAE;EAAyB,gBAEpCb,KAAA,CAAAY,aAAA;IAAKC,SAAS,EAAE;EAA2B,gBACvCb,KAAA,CAAAY,aAAA,CAACX,IAAI;IACDe,IAAI,EAAE,IAAK;IACXC,KAAK,EAAE,gBAAiB;IACxBJ,SAAS,EAAE,OAAQ;IACnBK,IAAI,eAAElB,KAAA,CAAAY,aAAA,CAACP,IAAI,MAAE,CAAE;IACfc,KAAK,EAAE,YAAYT,MAAM,CAACU,MAAM,CAACC,IAAI;EAAG,CAC3C,CAAC,eACFrB,KAAA,CAAAY,aAAA,CAACT,IAAI;IAACmB,EAAE,EAAE,KAAM;IAACT,SAAS,EAAE;EAA0B,GACjDH,MAAM,CAACU,MAAM,CAACC,IACb,CACL,CACH,CAAC,eACPrB,KAAA,CAAAY,aAAA,CAACT,IAAI;IAACmB,EAAE,EAAE,KAAM;IAACN,IAAI,EAAE,IAAK;IAACH,SAAS,EAAE;EAAsB,GAAC,MACvD,EAACH,MAAM,CAACa,OACV,CACL,CAAC;AAEd,CAAC;AAED,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAChC,MAAM;IAAEC,WAAW;IAAEC;EAAY,CAAC,GAAGpB,sBAAsB,CAACqB,OAAO,CAACC,KAAK,CAACC,MAAM;EAChF,MAAM;IAAEC;EAAI,CAAC,GAAGL,WAAW,CAAc,CAAC;EAE1C,IAAIC,WAAW,CAACI,GAAG,CAAC,EAAE;IAClB,oBAAO9B,KAAA,CAAAY,aAAA,CAACL,cAAc;MAACwB,MAAM,EAAED,GAAG,CAACE;IAAK,CAAE,CAAC;EAC/C;EAEA,oBAAOhC,KAAA,CAAAY,aAAA,CAACH,UAAU;IAACC,MAAM,EAAEoB,GAAG,CAACE;EAAK,CAAE,CAAC;AAC3C,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
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 as DisableIcon } 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 {
|
|
10
|
+
Browser
|
|
11
|
+
} = ContentEntryListConfig;
|
|
12
|
+
const EntryAction = Browser.Entry.Action;
|
|
13
|
+
const {
|
|
14
|
+
useTableRow
|
|
15
|
+
} = Browser.Table.Column;
|
|
16
|
+
const WithDisableAction = ({
|
|
17
|
+
children
|
|
18
|
+
}) => {
|
|
19
|
+
// useTableRow() allows you to access the entire data of the current row.
|
|
20
|
+
const {
|
|
21
|
+
row
|
|
22
|
+
} = useTableRow();
|
|
23
|
+
const {
|
|
24
|
+
disableEntry
|
|
25
|
+
} = useDisableTenantDialog({
|
|
26
|
+
record: row.data
|
|
27
|
+
});
|
|
28
|
+
if (row.data.values.status === "enabled") {
|
|
29
|
+
return /*#__PURE__*/React.createElement(EntryAction.OptionsMenuItem, {
|
|
30
|
+
icon: /*#__PURE__*/React.createElement(DisableIcon, null),
|
|
31
|
+
label: "Disable",
|
|
32
|
+
onAction: disableEntry,
|
|
33
|
+
"data-testid": "aco.actions.entry.delete",
|
|
34
|
+
className: "text-destructive-primary! [&_svg]:fill-destructive"
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, children);
|
|
38
|
+
};
|
|
39
|
+
const DeleteActionDecorator = EntryAction.createDecorator(Original => {
|
|
40
|
+
return function DeleteAction(props) {
|
|
41
|
+
const {
|
|
42
|
+
model
|
|
43
|
+
} = useModel();
|
|
44
|
+
if (model.modelId !== TENANT_MODEL_ID) {
|
|
45
|
+
return /*#__PURE__*/React.createElement(Original, props);
|
|
46
|
+
}
|
|
47
|
+
if (props.name === "delete") {
|
|
48
|
+
return /*#__PURE__*/React.createElement(Original, Object.assign({}, props, {
|
|
49
|
+
element: /*#__PURE__*/React.createElement(WithDisableAction, null, props.element)
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
return /*#__PURE__*/React.createElement(Original, props);
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
export const TenantEntryList = () => {
|
|
56
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DeleteActionDecorator, null), /*#__PURE__*/React.createElement(ContentEntryListConfig, null, /*#__PURE__*/React.createElement(Browser.Table.Column, {
|
|
57
|
+
hideable: false,
|
|
58
|
+
name: "name",
|
|
59
|
+
header: "Name",
|
|
60
|
+
modelIds: [TENANT_MODEL_ID],
|
|
61
|
+
cell: /*#__PURE__*/React.createElement(TenantNameCell, null)
|
|
62
|
+
}), /*#__PURE__*/React.createElement(Browser.Table.Column, {
|
|
63
|
+
name: "tenant",
|
|
64
|
+
header: "Tenant",
|
|
65
|
+
modelIds: [TENANT_MODEL_ID],
|
|
66
|
+
cell: /*#__PURE__*/React.createElement(TenantCell, null),
|
|
67
|
+
before: "actions"
|
|
68
|
+
})));
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=TenantEntryList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useModel","ContentEntryListConfig","ReactComponent","DisableIcon","TenantCell","TENANT_MODEL_ID","useDisableTenantDialog","TenantNameCell","Browser","EntryAction","Entry","Action","useTableRow","Table","Column","WithDisableAction","children","row","disableEntry","record","data","values","status","createElement","OptionsMenuItem","icon","label","onAction","className","Fragment","DeleteActionDecorator","createDecorator","Original","DeleteAction","props","model","modelId","name","Object","assign","element","TenantEntryList","hideable","header","modelIds","cell","before"],"sources":["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 className={\"text-destructive-primary! [&_svg]:fill-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.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"],"mappings":"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","ignoreList":[]}
|