@webiny/tenant-manager 0.0.0-unstable.3c5210ad37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/LICENSE +36 -0
  2. package/README.md +11 -0
  3. package/TenantManager.d.ts +2 -0
  4. package/TenantManager.js +12 -0
  5. package/TenantManager.js.map +1 -0
  6. package/admin/CurrentTenant/CurrentTenant.d.ts +6 -0
  7. package/admin/CurrentTenant/CurrentTenant.js +34 -0
  8. package/admin/CurrentTenant/CurrentTenant.js.map +1 -0
  9. package/admin/CurrentTenant/CurrentTenantGateway.d.ts +12 -0
  10. package/admin/CurrentTenant/CurrentTenantGateway.js +44 -0
  11. package/admin/CurrentTenant/CurrentTenantGateway.js.map +1 -0
  12. package/admin/CurrentTenant/CurrentTenantPresenter.d.ts +12 -0
  13. package/admin/CurrentTenant/CurrentTenantPresenter.js +30 -0
  14. package/admin/CurrentTenant/CurrentTenantPresenter.js.map +1 -0
  15. package/admin/CurrentTenant/CurrentTenantRepository.d.ts +15 -0
  16. package/admin/CurrentTenant/CurrentTenantRepository.js +37 -0
  17. package/admin/CurrentTenant/CurrentTenantRepository.js.map +1 -0
  18. package/admin/CurrentTenant/abstractions.d.ts +31 -0
  19. package/admin/CurrentTenant/abstractions.js +15 -0
  20. package/admin/CurrentTenant/abstractions.js.map +1 -0
  21. package/admin/CurrentTenant/feature.d.ts +3 -0
  22. package/admin/CurrentTenant/feature.js +20 -0
  23. package/admin/CurrentTenant/feature.js.map +1 -0
  24. package/admin/CurrentTenant/useCurrentTenant.d.ts +4 -0
  25. package/admin/CurrentTenant/useCurrentTenant.js +23 -0
  26. package/admin/CurrentTenant/useCurrentTenant.js.map +1 -0
  27. package/admin/CurrentTenantProvider.d.ts +2 -0
  28. package/admin/CurrentTenantProvider.js +12 -0
  29. package/admin/CurrentTenantProvider.js.map +1 -0
  30. package/admin/DisableTenant/DisableTenantGateway.d.ts +11 -0
  31. package/admin/DisableTenant/DisableTenantGateway.js +43 -0
  32. package/admin/DisableTenant/DisableTenantGateway.js.map +1 -0
  33. package/admin/DisableTenant/DisableTenantRepository.d.ts +10 -0
  34. package/admin/DisableTenant/DisableTenantRepository.js +15 -0
  35. package/admin/DisableTenant/DisableTenantRepository.js.map +1 -0
  36. package/admin/DisableTenant/DisableTenantUseCase.d.ts +10 -0
  37. package/admin/DisableTenant/DisableTenantUseCase.js +15 -0
  38. package/admin/DisableTenant/DisableTenantUseCase.js.map +1 -0
  39. package/admin/DisableTenant/abstractions.d.ts +21 -0
  40. package/admin/DisableTenant/abstractions.js +15 -0
  41. package/admin/DisableTenant/abstractions.js.map +1 -0
  42. package/admin/DisableTenant/feature.d.ts +3 -0
  43. package/admin/DisableTenant/feature.js +20 -0
  44. package/admin/DisableTenant/feature.js.map +1 -0
  45. package/admin/DisableTenant/index.d.ts +2 -0
  46. package/admin/DisableTenant/index.js +4 -0
  47. package/admin/DisableTenant/index.js.map +1 -0
  48. package/admin/DisableTenant/useDisableTenant.d.ts +4 -0
  49. package/admin/DisableTenant/useDisableTenant.js +27 -0
  50. package/admin/DisableTenant/useDisableTenant.js.map +1 -0
  51. package/admin/EnableTenant/EnableTenantGateway.d.ts +11 -0
  52. package/admin/EnableTenant/EnableTenantGateway.js +43 -0
  53. package/admin/EnableTenant/EnableTenantGateway.js.map +1 -0
  54. package/admin/EnableTenant/EnableTenantRepository.d.ts +10 -0
  55. package/admin/EnableTenant/EnableTenantRepository.js +15 -0
  56. package/admin/EnableTenant/EnableTenantRepository.js.map +1 -0
  57. package/admin/EnableTenant/EnableTenantUseCase.d.ts +10 -0
  58. package/admin/EnableTenant/EnableTenantUseCase.js +15 -0
  59. package/admin/EnableTenant/EnableTenantUseCase.js.map +1 -0
  60. package/admin/EnableTenant/abstractions.d.ts +21 -0
  61. package/admin/EnableTenant/abstractions.js +15 -0
  62. package/admin/EnableTenant/abstractions.js.map +1 -0
  63. package/admin/EnableTenant/feature.d.ts +3 -0
  64. package/admin/EnableTenant/feature.js +20 -0
  65. package/admin/EnableTenant/feature.js.map +1 -0
  66. package/admin/EnableTenant/index.d.ts +2 -0
  67. package/admin/EnableTenant/index.js +4 -0
  68. package/admin/EnableTenant/index.js.map +1 -0
  69. package/admin/EnableTenant/useEnableTenant.d.ts +4 -0
  70. package/admin/EnableTenant/useEnableTenant.js +23 -0
  71. package/admin/EnableTenant/useEnableTenant.js.map +1 -0
  72. package/admin/Extension.d.ts +2 -0
  73. package/admin/Extension.js +47 -0
  74. package/admin/Extension.js.map +1 -0
  75. package/admin/IsRootTenant.d.ts +13 -0
  76. package/admin/IsRootTenant.js +37 -0
  77. package/admin/IsRootTenant.js.map +1 -0
  78. package/admin/SecurityPermission.d.ts +2 -0
  79. package/admin/SecurityPermission.js +20 -0
  80. package/admin/SecurityPermission.js.map +1 -0
  81. package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.d.ts +8 -0
  82. package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js +42 -0
  83. package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js.map +1 -0
  84. package/admin/TenantEntryList/EnableTenant/EnableTenant.d.ts +7 -0
  85. package/admin/TenantEntryList/EnableTenant/EnableTenant.js +19 -0
  86. package/admin/TenantEntryList/EnableTenant/EnableTenant.js.map +1 -0
  87. package/admin/TenantEntryList/EnableTenant/useEnableTenant.d.ts +5 -0
  88. package/admin/TenantEntryList/EnableTenant/useEnableTenant.js +39 -0
  89. package/admin/TenantEntryList/EnableTenant/useEnableTenant.js.map +1 -0
  90. package/admin/TenantEntryList/FolderNameCell.d.ts +7 -0
  91. package/admin/TenantEntryList/FolderNameCell.js +29 -0
  92. package/admin/TenantEntryList/FolderNameCell.js.map +1 -0
  93. package/admin/TenantEntryList/InstallTenantButton/InstallTenant.d.ts +7 -0
  94. package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js +19 -0
  95. package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js.map +1 -0
  96. package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.d.ts +16 -0
  97. package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js +17 -0
  98. package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js.map +1 -0
  99. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.d.ts +5 -0
  100. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js +46 -0
  101. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js.map +1 -0
  102. package/admin/TenantEntryList/ManageTenant.d.ts +7 -0
  103. package/admin/TenantEntryList/ManageTenant.js +21 -0
  104. package/admin/TenantEntryList/ManageTenant.js.map +1 -0
  105. package/admin/TenantEntryList/TenantCell.d.ts +2 -0
  106. package/admin/TenantEntryList/TenantCell.js +39 -0
  107. package/admin/TenantEntryList/TenantCell.js.map +1 -0
  108. package/admin/TenantEntryList/TenantNameCell.d.ts +2 -0
  109. package/admin/TenantEntryList/TenantNameCell.js +54 -0
  110. package/admin/TenantEntryList/TenantNameCell.js.map +1 -0
  111. package/admin/TenantEntryList.d.ts +2 -0
  112. package/admin/TenantEntryList.js +71 -0
  113. package/admin/TenantEntryList.js.map +1 -0
  114. package/admin/TenantSelector.d.ts +2 -0
  115. package/admin/TenantSelector.js +39 -0
  116. package/admin/TenantSelector.js.map +1 -0
  117. package/admin/types.d.ts +7 -0
  118. package/admin/types.js +3 -0
  119. package/admin/types.js.map +1 -0
  120. package/api/Extension.d.ts +1 -0
  121. package/api/Extension.js +42 -0
  122. package/api/Extension.js.map +1 -0
  123. package/api/domain/TenantId.d.ts +3 -0
  124. package/api/domain/TenantId.js +12 -0
  125. package/api/domain/TenantId.js.map +1 -0
  126. package/api/domain/TenantModel.d.ts +11 -0
  127. package/api/domain/TenantModel.js +46 -0
  128. package/api/domain/TenantModel.js.map +1 -0
  129. package/api/domain/TenantModelExtension.d.ts +10 -0
  130. package/api/domain/TenantModelExtension.js +4 -0
  131. package/api/domain/TenantModelExtension.js.map +1 -0
  132. package/api/domain/errors.d.ts +33 -0
  133. package/api/domain/errors.js +63 -0
  134. package/api/domain/errors.js.map +1 -0
  135. package/api/features/AddCmsPermissions/AddCmsPermissions.d.ts +8 -0
  136. package/api/features/AddCmsPermissions/AddCmsPermissions.js +34 -0
  137. package/api/features/AddCmsPermissions/AddCmsPermissions.js.map +1 -0
  138. package/api/features/AddCmsPermissions/feature.d.ts +1 -0
  139. package/api/features/AddCmsPermissions/feature.js +10 -0
  140. package/api/features/AddCmsPermissions/feature.js.map +1 -0
  141. package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.d.ts +24 -0
  142. package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js +99 -0
  143. package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js.map +1 -0
  144. package/api/features/CreateAndInstallTenant/abstractions.d.ts +26 -0
  145. package/api/features/CreateAndInstallTenant/abstractions.js +9 -0
  146. package/api/features/CreateAndInstallTenant/abstractions.js.map +1 -0
  147. package/api/features/CreateAndInstallTenant/feature.d.ts +1 -0
  148. package/api/features/CreateAndInstallTenant/feature.js +11 -0
  149. package/api/features/CreateAndInstallTenant/feature.js.map +1 -0
  150. package/api/features/CreateTenant/CreateTenantRepository.d.ts +15 -0
  151. package/api/features/CreateTenant/CreateTenantRepository.js +48 -0
  152. package/api/features/CreateTenant/CreateTenantRepository.js.map +1 -0
  153. package/api/features/CreateTenant/CreateTenantUseCase.d.ts +14 -0
  154. package/api/features/CreateTenant/CreateTenantUseCase.js +43 -0
  155. package/api/features/CreateTenant/CreateTenantUseCase.js.map +1 -0
  156. package/api/features/CreateTenant/abstractions.d.ts +41 -0
  157. package/api/features/CreateTenant/abstractions.js +11 -0
  158. package/api/features/CreateTenant/abstractions.js.map +1 -0
  159. package/api/features/CreateTenant/feature.d.ts +1 -0
  160. package/api/features/CreateTenant/feature.js +15 -0
  161. package/api/features/CreateTenant/feature.js.map +1 -0
  162. package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.d.ts +11 -0
  163. package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js +37 -0
  164. package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js.map +1 -0
  165. package/api/features/DeleteTenantOnEntryDelete/feature.d.ts +1 -0
  166. package/api/features/DeleteTenantOnEntryDelete/feature.js +11 -0
  167. package/api/features/DeleteTenantOnEntryDelete/feature.js.map +1 -0
  168. package/api/features/DisableTenant/DisableTenantUseCase.d.ts +20 -0
  169. package/api/features/DisableTenant/DisableTenantUseCase.js +65 -0
  170. package/api/features/DisableTenant/DisableTenantUseCase.js.map +1 -0
  171. package/api/features/DisableTenant/abstractions.d.ts +19 -0
  172. package/api/features/DisableTenant/abstractions.js +4 -0
  173. package/api/features/DisableTenant/abstractions.js.map +1 -0
  174. package/api/features/DisableTenant/events.d.ts +27 -0
  175. package/api/features/DisableTenant/events.js +18 -0
  176. package/api/features/DisableTenant/events.js.map +1 -0
  177. package/api/features/DisableTenant/feature.d.ts +1 -0
  178. package/api/features/DisableTenant/feature.js +11 -0
  179. package/api/features/DisableTenant/feature.js.map +1 -0
  180. package/api/features/EnableTenant/EnableTenantUseCase.d.ts +20 -0
  181. package/api/features/EnableTenant/EnableTenantUseCase.js +67 -0
  182. package/api/features/EnableTenant/EnableTenantUseCase.js.map +1 -0
  183. package/api/features/EnableTenant/abstractions.d.ts +19 -0
  184. package/api/features/EnableTenant/abstractions.js +4 -0
  185. package/api/features/EnableTenant/abstractions.js.map +1 -0
  186. package/api/features/EnableTenant/events.d.ts +27 -0
  187. package/api/features/EnableTenant/events.js +18 -0
  188. package/api/features/EnableTenant/events.js.map +1 -0
  189. package/api/features/EnableTenant/feature.d.ts +1 -0
  190. package/api/features/EnableTenant/feature.js +11 -0
  191. package/api/features/EnableTenant/feature.js.map +1 -0
  192. package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.d.ts +17 -0
  193. package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js +35 -0
  194. package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js.map +1 -0
  195. package/api/features/GetCurrentTenant/abstractions.d.ts +24 -0
  196. package/api/features/GetCurrentTenant/abstractions.js +10 -0
  197. package/api/features/GetCurrentTenant/abstractions.js.map +1 -0
  198. package/api/features/GetCurrentTenant/feature.d.ts +1 -0
  199. package/api/features/GetCurrentTenant/feature.js +11 -0
  200. package/api/features/GetCurrentTenant/feature.js.map +1 -0
  201. package/api/features/GetTenantById/GetTenantByIdRepository.d.ts +17 -0
  202. package/api/features/GetTenantById/GetTenantByIdRepository.js +49 -0
  203. package/api/features/GetTenantById/GetTenantByIdRepository.js.map +1 -0
  204. package/api/features/GetTenantById/GetTenantByIdUseCase.d.ts +12 -0
  205. package/api/features/GetTenantById/GetTenantByIdUseCase.js +27 -0
  206. package/api/features/GetTenantById/GetTenantByIdUseCase.js.map +1 -0
  207. package/api/features/GetTenantById/abstractions.d.ts +38 -0
  208. package/api/features/GetTenantById/abstractions.js +15 -0
  209. package/api/features/GetTenantById/abstractions.js.map +1 -0
  210. package/api/features/GetTenantById/feature.d.ts +1 -0
  211. package/api/features/GetTenantById/feature.js +15 -0
  212. package/api/features/GetTenantById/feature.js.map +1 -0
  213. package/api/features/UpdateTenant/UpdateTenantRepository.d.ts +17 -0
  214. package/api/features/UpdateTenant/UpdateTenantRepository.js +58 -0
  215. package/api/features/UpdateTenant/UpdateTenantRepository.js.map +1 -0
  216. package/api/features/UpdateTenant/UpdateTenantUseCase.d.ts +12 -0
  217. package/api/features/UpdateTenant/UpdateTenantUseCase.js +21 -0
  218. package/api/features/UpdateTenant/UpdateTenantUseCase.js.map +1 -0
  219. package/api/features/UpdateTenant/abstractions.d.ts +39 -0
  220. package/api/features/UpdateTenant/abstractions.js +15 -0
  221. package/api/features/UpdateTenant/abstractions.js.map +1 -0
  222. package/api/features/UpdateTenant/feature.d.ts +1 -0
  223. package/api/features/UpdateTenant/feature.js +15 -0
  224. package/api/features/UpdateTenant/feature.js.map +1 -0
  225. package/api/graphql/CreateTenantSchema.d.ts +14 -0
  226. package/api/graphql/CreateTenantSchema.js +77 -0
  227. package/api/graphql/CreateTenantSchema.js.map +1 -0
  228. package/api/graphql/DisableTenantSchema.d.ts +8 -0
  229. package/api/graphql/DisableTenantSchema.js +35 -0
  230. package/api/graphql/DisableTenantSchema.js.map +1 -0
  231. package/api/graphql/EnableTenantSchema.d.ts +8 -0
  232. package/api/graphql/EnableTenantSchema.js +35 -0
  233. package/api/graphql/EnableTenantSchema.js.map +1 -0
  234. package/api/graphql/GetCurrentTenantSchema.d.ts +8 -0
  235. package/api/graphql/GetCurrentTenantSchema.js +53 -0
  236. package/api/graphql/GetCurrentTenantSchema.js.map +1 -0
  237. package/api/graphql/InstallTenantSchema.d.ts +8 -0
  238. package/api/graphql/InstallTenantSchema.js +50 -0
  239. package/api/graphql/InstallTenantSchema.js.map +1 -0
  240. package/exports/admin/tenancy.d.ts +7 -0
  241. package/exports/admin/tenancy.js +8 -0
  242. package/exports/admin/tenancy.js.map +1 -0
  243. package/exports/api/tenant-manager.d.ts +2 -0
  244. package/exports/api/tenant-manager.js +3 -0
  245. package/exports/api/tenant-manager.js.map +1 -0
  246. package/index.d.ts +1 -0
  247. package/index.js +3 -0
  248. package/index.js.map +1 -0
  249. package/package.json +44 -0
  250. package/shared/Tenant.d.ts +21 -0
  251. package/shared/Tenant.js +26 -0
  252. package/shared/Tenant.js.map +1 -0
  253. package/shared/constants.d.ts +1 -0
  254. package/shared/constants.js +3 -0
  255. package/shared/constants.js.map +1 -0
@@ -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,7 @@
1
+ import React from "react";
2
+ import { type FolderTableRow } from "@webiny/app-aco";
3
+ interface FolderNameCellProps {
4
+ folder: FolderTableRow["data"];
5
+ }
6
+ export declare const FolderNameCell: ({ folder }: FolderNameCellProps) => React.JSX.Element;
7
+ export {};
@@ -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,7 @@
1
+ import React from "react";
2
+ import { TenantEntry } from "../../types.js";
3
+ interface InstallTenantProps {
4
+ tenant: TenantEntry;
5
+ }
6
+ export declare const InstallTenant: ({ tenant }: InstallTenantProps) => React.JSX.Element;
7
+ export {};
@@ -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,5 @@
1
+ import { TenantEntry } from "../../types.js";
2
+ export declare const useInstallTenant: (tenant: TenantEntry) => {
3
+ installTenant: () => Promise<void>;
4
+ loading: boolean;
5
+ };
@@ -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,7 @@
1
+ import React from "react";
2
+ import type { TenantEntry } from "../types.js";
3
+ interface ManageTenantProps {
4
+ tenant: TenantEntry;
5
+ }
6
+ export declare const ManageTenant: ({ tenant }: ManageTenantProps) => React.JSX.Element;
7
+ export {};
@@ -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,2 @@
1
+ import React from "react";
2
+ export declare const TenantCell: () => React.JSX.Element;
@@ -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,2 @@
1
+ import React from "react";
2
+ export declare const TenantNameCell: () => React.JSX.Element;
@@ -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,2 @@
1
+ import React from "react";
2
+ export declare const TenantEntryList: () => React.JSX.Element;
@@ -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":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,+CAA+C;AACxE,SAASC,sBAAsB,QAAQ,0DAA0D;AACjG,SAASC,cAAc,IAAIC,WAAW,QAAQ,6BAA6B;AAC3E,SAASC,UAAU;AACnB,SAASC,eAAe;AAExB,SAASC,sBAAsB;AAC/B,SAASC,cAAc;AAEvB,MAAM;EAAEC;AAAQ,CAAC,GAAGP,sBAAsB;AAC1C,MAAMQ,WAAW,GAAGD,OAAO,CAACE,KAAK,CAACC,MAAM;AACxC,MAAM;EAAEC;AAAY,CAAC,GAAGJ,OAAO,CAACK,KAAK,CAACC,MAAM;AAM5C,MAAMC,iBAAiB,GAAGA,CAAC;EAAEC;AAAiC,CAAC,KAAK;EAChE;EACA,MAAM;IAAEC;EAAI,CAAC,GAAGL,WAAW,CAAc,CAAC;EAC1C,MAAM;IAAEM;EAAa,CAAC,GAAGZ,sBAAsB,CAAC;IAAEa,MAAM,EAAEF,GAAG,CAACG;EAAK,CAAC,CAAC;EAErE,IAAIH,GAAG,CAACG,IAAI,CAACC,MAAM,CAACC,MAAM,KAAK,SAAS,EAAE;IACtC,oBACIvB,KAAA,CAAAwB,aAAA,CAACd,WAAW,CAACe,eAAe;MACxBC,IAAI,eAAE1B,KAAA,CAAAwB,aAAA,CAACpB,WAAW,MAAE,CAAE;MACtBuB,KAAK,EAAE,SAAU;MACjBC,QAAQ,EAAET,YAAa;MACvB,eAAa,0BAA2B;MACxCU,SAAS,EAAE;IAAqD,CACnE,CAAC;EAEV;EAEA,oBAAO7B,KAAA,CAAAwB,aAAA,CAAAxB,KAAA,CAAA8B,QAAA,QAAGb,QAAW,CAAC;AAC1B,CAAC;AAED,MAAMc,qBAAqB,GAAGrB,WAAW,CAACsB,eAAe,CAACC,QAAQ,IAAI;EAClE,OAAO,SAASC,YAAYA,CAACC,KAAK,EAAE;IAChC,MAAM;MAAEC;IAAM,CAAC,GAAGnC,QAAQ,CAAC,CAAC;IAE5B,IAAImC,KAAK,CAACC,OAAO,KAAK/B,eAAe,EAAE;MACnC,oBAAON,KAAA,CAAAwB,aAAA,CAACS,QAAQ,EAAKE,KAAQ,CAAC;IAClC;IAEA,IAAIA,KAAK,CAACG,IAAI,KAAK,QAAQ,EAAE;MACzB,oBACItC,KAAA,CAAAwB,aAAA,CAACS,QAAQ,EAAAM,MAAA,CAAAC,MAAA,KACDL,KAAK;QACTM,OAAO,eAAEzC,KAAA,CAAAwB,aAAA,CAACR,iBAAiB,QAAEmB,KAAK,CAACM,OAA2B;MAAE,EACnE,CAAC;IAEV;IAEA,oBAAOzC,KAAA,CAAAwB,aAAA,CAACS,QAAQ,EAAKE,KAAQ,CAAC;EAClC,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,MAAMO,eAAe,GAAGA,CAAA,KAAM;EACjC,oBACI1C,KAAA,CAAAwB,aAAA,CAAAxB,KAAA,CAAA8B,QAAA,qBACI9B,KAAA,CAAAwB,aAAA,CAACO,qBAAqB,MAAE,CAAC,eACzB/B,KAAA,CAAAwB,aAAA,CAACtB,sBAAsB,qBACnBF,KAAA,CAAAwB,aAAA,CAACf,OAAO,CAACK,KAAK,CAACC,MAAM;IACjB4B,QAAQ,EAAE,KAAM;IAChBL,IAAI,EAAE,MAAO;IACbM,MAAM,EAAE,MAAO;IACfC,QAAQ,EAAE,CAACvC,eAAe,CAAE;IAC5BwC,IAAI,eAAE9C,KAAA,CAAAwB,aAAA,CAAChB,cAAc,MAAE;EAAE,CAC5B,CAAC,eACFR,KAAA,CAAAwB,aAAA,CAACf,OAAO,CAACK,KAAK,CAACC,MAAM;IACjBuB,IAAI,EAAE,QAAS;IACfM,MAAM,EAAE,QAAS;IACjBC,QAAQ,EAAE,CAACvC,eAAe,CAAE;IAC5BwC,IAAI,eAAE9C,KAAA,CAAAwB,aAAA,CAACnB,UAAU,MAAE,CAAE;IACrB0C,MAAM,EAAE;EAAU,CACrB,CACmB,CAC1B,CAAC;AAEX,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const TenantSelector: (props: unknown) => React.JSX.Element;
@@ -0,0 +1,39 @@
1
+ import React from "react";
2
+ import { TenantSelector as BaseTenantSelector } from "@webiny/app-admin";
3
+ import { CopyButton, Icon, Tooltip, useToast } from "@webiny/admin-ui";
4
+ import { useAuthentication } from "@webiny/app-admin";
5
+ import { ReactComponent as TenantIcon } from "@webiny/icons/business.svg";
6
+ export const TenantSelector = BaseTenantSelector.createDecorator(() => {
7
+ return function TenantSelector() {
8
+ const {
9
+ identity
10
+ } = useAuthentication();
11
+ const currentTenant = identity.currentTenant;
12
+ const toast = useToast();
13
+ const confirmClipboard = () => {
14
+ toast.showSuccessToast({
15
+ title: "Tenant ID copied to clipboard!"
16
+ });
17
+ };
18
+ return /*#__PURE__*/React.createElement(Tooltip, {
19
+ content: /*#__PURE__*/React.createElement("div", {
20
+ className: "flex items-center gap-x-xs"
21
+ }, "ID: ", currentTenant.id, /*#__PURE__*/React.createElement(CopyButton, {
22
+ size: "sm",
23
+ value: currentTenant.id,
24
+ onCopy: confirmClipboard,
25
+ variant: "ghost-negative"
26
+ })),
27
+ side: "bottom",
28
+ trigger: /*#__PURE__*/React.createElement("div", {
29
+ className: "flex items-center gap-x-xs cursor-pointer"
30
+ }, /*#__PURE__*/React.createElement(Icon, {
31
+ label: "Root tenant",
32
+ icon: /*#__PURE__*/React.createElement(TenantIcon, null),
33
+ className: "fill-neutral-xstrong"
34
+ }), currentTenant.name)
35
+ });
36
+ };
37
+ });
38
+
39
+ //# sourceMappingURL=TenantSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","TenantSelector","BaseTenantSelector","CopyButton","Icon","Tooltip","useToast","useAuthentication","ReactComponent","TenantIcon","createDecorator","identity","currentTenant","toast","confirmClipboard","showSuccessToast","title","createElement","content","className","id","size","value","onCopy","variant","side","trigger","label","icon","name"],"sources":["TenantSelector.tsx"],"sourcesContent":["import React from \"react\";\nimport { TenantSelector as BaseTenantSelector } from \"@webiny/app-admin\";\nimport { CopyButton, Icon, Tooltip, useToast } from \"@webiny/admin-ui\";\nimport { useAuthentication } from \"@webiny/app-admin\";\nimport { ReactComponent as TenantIcon } from \"@webiny/icons/business.svg\";\n\nexport const TenantSelector = BaseTenantSelector.createDecorator(() => {\n return function TenantSelector() {\n const { identity } = useAuthentication();\n const currentTenant = identity.currentTenant;\n const toast = useToast();\n\n const confirmClipboard = () => {\n toast.showSuccessToast({\n title: \"Tenant ID copied to clipboard!\"\n });\n };\n\n return (\n <Tooltip\n content={\n <div className={\"flex items-center gap-x-xs\"}>\n ID: {currentTenant.id}\n <CopyButton\n size=\"sm\"\n value={currentTenant.id}\n onCopy={confirmClipboard}\n variant={\"ghost-negative\"}\n />\n </div>\n }\n side={\"bottom\"}\n trigger={\n <div className={\"flex items-center gap-x-xs cursor-pointer\"}>\n <Icon\n label=\"Root tenant\"\n icon={<TenantIcon />}\n className={\"fill-neutral-xstrong\"}\n />\n {currentTenant.name}\n </div>\n }\n />\n );\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,IAAIC,kBAAkB,QAAQ,mBAAmB;AACxE,SAASC,UAAU,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,kBAAkB;AACtE,SAASC,iBAAiB,QAAQ,mBAAmB;AACrD,SAASC,cAAc,IAAIC,UAAU,QAAQ,4BAA4B;AAEzE,OAAO,MAAMR,cAAc,GAAGC,kBAAkB,CAACQ,eAAe,CAAC,MAAM;EACnE,OAAO,SAAST,cAAcA,CAAA,EAAG;IAC7B,MAAM;MAAEU;IAAS,CAAC,GAAGJ,iBAAiB,CAAC,CAAC;IACxC,MAAMK,aAAa,GAAGD,QAAQ,CAACC,aAAa;IAC5C,MAAMC,KAAK,GAAGP,QAAQ,CAAC,CAAC;IAExB,MAAMQ,gBAAgB,GAAGA,CAAA,KAAM;MAC3BD,KAAK,CAACE,gBAAgB,CAAC;QACnBC,KAAK,EAAE;MACX,CAAC,CAAC;IACN,CAAC;IAED,oBACIhB,KAAA,CAAAiB,aAAA,CAACZ,OAAO;MACJa,OAAO,eACHlB,KAAA,CAAAiB,aAAA;QAAKE,SAAS,EAAE;MAA6B,GAAC,MACtC,EAACP,aAAa,CAACQ,EAAE,eACrBpB,KAAA,CAAAiB,aAAA,CAACd,UAAU;QACPkB,IAAI,EAAC,IAAI;QACTC,KAAK,EAAEV,aAAa,CAACQ,EAAG;QACxBG,MAAM,EAAET,gBAAiB;QACzBU,OAAO,EAAE;MAAiB,CAC7B,CACA,CACR;MACDC,IAAI,EAAE,QAAS;MACfC,OAAO,eACH1B,KAAA,CAAAiB,aAAA;QAAKE,SAAS,EAAE;MAA4C,gBACxDnB,KAAA,CAAAiB,aAAA,CAACb,IAAI;QACDuB,KAAK,EAAC,aAAa;QACnBC,IAAI,eAAE5B,KAAA,CAAAiB,aAAA,CAACR,UAAU,MAAE,CAAE;QACrBU,SAAS,EAAE;MAAuB,CACrC,CAAC,EACDP,aAAa,CAACiB,IACd;IACR,CACJ,CAAC;EAEV,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import { CmsContentEntry } from "@webiny/app-headless-cms/types.js";
2
+ import type { TenantValues } from "../shared/Tenant.js";
3
+ type BaseEntry = Omit<CmsContentEntry, "values">;
4
+ export interface TenantEntry extends BaseEntry {
5
+ values: TenantValues;
6
+ }
7
+ export {};
package/admin/types.js ADDED
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { CmsContentEntry } from \"@webiny/app-headless-cms/types.js\";\nimport type { TenantValues } from \"../shared/Tenant.js\";\n\ntype BaseEntry = Omit<CmsContentEntry, \"values\">;\n\nexport interface TenantEntry extends BaseEntry {\n values: TenantValues;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const Extension: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
@@ -0,0 +1,42 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import TenantModel from "./domain/TenantModel.js";
3
+ import { CreateAndInstallTenantFeature } from "./features/CreateAndInstallTenant/feature.js";
4
+ import { CreateTenantFeature } from "./features/CreateTenant/feature.js";
5
+ import { DisableTenantFeature } from "./features/DisableTenant/feature.js";
6
+ import { EnableTenantFeature } from "./features/EnableTenant/feature.js";
7
+ import { GetTenantByIdFeature } from "./features/GetTenantById/feature.js";
8
+ import { GetCurrentTenantFeature } from "./features/GetCurrentTenant/feature.js";
9
+ import { UpdateTenantFeature } from "./features/UpdateTenant/feature.js";
10
+ import { DeleteTenantOnEntryDeleteFeature } from "./features/DeleteTenantOnEntryDelete/feature.js";
11
+ import InstallTenantSchema from "./graphql/InstallTenantSchema.js";
12
+ import CreateTenantSchema from "./graphql/CreateTenantSchema.js";
13
+ import DisableTenantSchema from "./graphql/DisableTenantSchema.js";
14
+ import EnableTenantSchema from "./graphql/EnableTenantSchema.js";
15
+ import GetCurrentTenantSchema from "./graphql/GetCurrentTenantSchema.js";
16
+ import { AddCmsPermissionsFeature } from "./features/AddCmsPermissions/feature.js";
17
+ export const Extension = createFeature({
18
+ name: "TenantManagement",
19
+ register(container) {
20
+ container.register(TenantModel);
21
+
22
+ //GraphQL
23
+ container.register(InstallTenantSchema);
24
+ container.register(CreateTenantSchema);
25
+ container.register(DisableTenantSchema);
26
+ container.register(EnableTenantSchema);
27
+ container.register(GetCurrentTenantSchema);
28
+
29
+ // Features
30
+ CreateAndInstallTenantFeature.register(container);
31
+ CreateTenantFeature.register(container);
32
+ DisableTenantFeature.register(container);
33
+ EnableTenantFeature.register(container);
34
+ GetTenantByIdFeature.register(container);
35
+ GetCurrentTenantFeature.register(container);
36
+ UpdateTenantFeature.register(container);
37
+ DeleteTenantOnEntryDeleteFeature.register(container);
38
+ AddCmsPermissionsFeature.register(container);
39
+ }
40
+ });
41
+
42
+ //# sourceMappingURL=Extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFeature","TenantModel","CreateAndInstallTenantFeature","CreateTenantFeature","DisableTenantFeature","EnableTenantFeature","GetTenantByIdFeature","GetCurrentTenantFeature","UpdateTenantFeature","DeleteTenantOnEntryDeleteFeature","InstallTenantSchema","CreateTenantSchema","DisableTenantSchema","EnableTenantSchema","GetCurrentTenantSchema","AddCmsPermissionsFeature","Extension","name","register","container"],"sources":["Extension.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport TenantModel from \"./domain/TenantModel.js\";\nimport { CreateAndInstallTenantFeature } from \"./features/CreateAndInstallTenant/feature.js\";\nimport { CreateTenantFeature } from \"./features/CreateTenant/feature.js\";\nimport { DisableTenantFeature } from \"./features/DisableTenant/feature.js\";\nimport { EnableTenantFeature } from \"./features/EnableTenant/feature.js\";\nimport { GetTenantByIdFeature } from \"./features/GetTenantById/feature.js\";\nimport { GetCurrentTenantFeature } from \"./features/GetCurrentTenant/feature.js\";\nimport { UpdateTenantFeature } from \"./features/UpdateTenant/feature.js\";\nimport { DeleteTenantOnEntryDeleteFeature } from \"./features/DeleteTenantOnEntryDelete/feature.js\";\nimport InstallTenantSchema from \"./graphql/InstallTenantSchema.js\";\nimport CreateTenantSchema from \"./graphql/CreateTenantSchema.js\";\nimport DisableTenantSchema from \"./graphql/DisableTenantSchema.js\";\nimport EnableTenantSchema from \"./graphql/EnableTenantSchema.js\";\nimport GetCurrentTenantSchema from \"./graphql/GetCurrentTenantSchema.js\";\nimport { AddCmsPermissionsFeature } from \"~/api/features/AddCmsPermissions/feature.js\";\n\nexport const Extension = createFeature({\n name: \"TenantManagement\",\n register(container) {\n container.register(TenantModel);\n\n //GraphQL\n container.register(InstallTenantSchema);\n container.register(CreateTenantSchema);\n container.register(DisableTenantSchema);\n container.register(EnableTenantSchema);\n container.register(GetCurrentTenantSchema);\n\n // Features\n CreateAndInstallTenantFeature.register(container);\n CreateTenantFeature.register(container);\n DisableTenantFeature.register(container);\n EnableTenantFeature.register(container);\n GetTenantByIdFeature.register(container);\n GetCurrentTenantFeature.register(container);\n UpdateTenantFeature.register(container);\n DeleteTenantOnEntryDeleteFeature.register(container);\n AddCmsPermissionsFeature.register(container);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,OAAOC,WAAW;AAClB,SAASC,6BAA6B;AACtC,SAASC,mBAAmB;AAC5B,SAASC,oBAAoB;AAC7B,SAASC,mBAAmB;AAC5B,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAChC,SAASC,mBAAmB;AAC5B,SAASC,gCAAgC;AACzC,OAAOC,mBAAmB;AAC1B,OAAOC,kBAAkB;AACzB,OAAOC,mBAAmB;AAC1B,OAAOC,kBAAkB;AACzB,OAAOC,sBAAsB;AAC7B,SAASC,wBAAwB;AAEjC,OAAO,MAAMC,SAAS,GAAGhB,aAAa,CAAC;EACnCiB,IAAI,EAAE,kBAAkB;EACxBC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACjB,WAAW,CAAC;;IAE/B;IACAkB,SAAS,CAACD,QAAQ,CAACR,mBAAmB,CAAC;IACvCS,SAAS,CAACD,QAAQ,CAACP,kBAAkB,CAAC;IACtCQ,SAAS,CAACD,QAAQ,CAACN,mBAAmB,CAAC;IACvCO,SAAS,CAACD,QAAQ,CAACL,kBAAkB,CAAC;IACtCM,SAAS,CAACD,QAAQ,CAACJ,sBAAsB,CAAC;;IAE1C;IACAZ,6BAA6B,CAACgB,QAAQ,CAACC,SAAS,CAAC;IACjDhB,mBAAmB,CAACe,QAAQ,CAACC,SAAS,CAAC;IACvCf,oBAAoB,CAACc,QAAQ,CAACC,SAAS,CAAC;IACxCd,mBAAmB,CAACa,QAAQ,CAACC,SAAS,CAAC;IACvCb,oBAAoB,CAACY,QAAQ,CAACC,SAAS,CAAC;IACxCZ,uBAAuB,CAACW,QAAQ,CAACC,SAAS,CAAC;IAC3CX,mBAAmB,CAACU,QAAQ,CAACC,SAAS,CAAC;IACvCV,gCAAgC,CAACS,QAAQ,CAACC,SAAS,CAAC;IACpDJ,wBAAwB,CAACG,QAAQ,CAACC,SAAS,CAAC;EAChD;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export declare class TenantId {
2
+ static from(id?: string): string;
3
+ }