@webiny/app-admin 6.6.0-alpha.1 → 6.6.0-alpha.10
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/base/Admin.js +19 -2
- package/base/Admin.js.map +1 -1
- package/base/Base/DefaultFieldRenderers.js +4 -0
- package/base/Base/DefaultFieldRenderers.js.map +1 -1
- package/base/Base/FieldRenderers/AutoCompleteRenderer.js +1 -0
- package/base/Base/FieldRenderers/AutoCompleteRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/BirthdayInputRenderer.d.ts +21 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.js +39 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.test.d.ts +1 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js +123 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js +21 -4
- package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js +11 -2
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +2 -0
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +14 -5
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +16 -25
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +18 -3
- package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/{TemplatePicker.d.ts → TemplatePicker/AddTemplateButton.d.ts} +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js +24 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.d.ts +13 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js +21 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.d.ts +3 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js +35 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.d.ts +8 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js +22 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.d.ts +10 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js +52 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.d.ts +8 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js +16 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.d.ts +10 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js +22 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.d.ts +3 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js +35 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.d.ts +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.js +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.d.ts +6 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.js +0 -0
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.d.ts +8 -3
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +25 -17
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.d.ts +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js +106 -0
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js.map +1 -0
- package/base/Base/FieldRenderers/RadioButtonsRenderer.js +3 -2
- package/base/Base/FieldRenderers/RadioButtonsRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/SelectRenderer.js +4 -2
- package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
- package/base/Base.js +2 -1
- package/base/Base.js.map +1 -1
- package/base/createRootContainer.js +4 -0
- package/base/createRootContainer.js.map +1 -1
- package/base/resolveApiUrl.d.ts +10 -0
- package/base/resolveApiUrl.js +11 -3
- package/base/resolveApiUrl.js.map +1 -1
- package/base/ui/AssumedPermissionsSelector.d.ts +47 -0
- package/base/ui/AssumedPermissionsSelector.js +7 -0
- package/base/ui/AssumedPermissionsSelector.js.map +1 -0
- package/base/ui/DebuggerIndicator.d.ts +23 -0
- package/base/ui/DebuggerIndicator.js +5 -0
- package/base/ui/DebuggerIndicator.js.map +1 -0
- package/base/ui/Layout.d.ts +20 -0
- package/base/ui/Layout.js +2 -1
- package/base/ui/Layout.js.map +1 -1
- package/components/DeveloperMode/DeveloperMode.d.ts +1 -3
- package/components/DeveloperMode/DeveloperMode.js.map +1 -1
- package/components/Filters/Filters.js +7 -1
- package/components/Filters/Filters.js.map +1 -1
- package/components/IconPicker/IconPickerComponent.js +1 -1
- package/components/IconPicker/IconPickerComponent.js.map +1 -1
- package/components/SplitView/SplitView.d.ts +2 -2
- package/components/SplitView/SplitView.js +7 -7
- package/components/SplitView/SplitView.js.map +1 -1
- package/config/AdminConfig/Widget.d.ts +9 -1
- package/config/AdminConfig/Widget.js +6 -2
- package/config/AdminConfig/Widget.js.map +1 -1
- package/domain/Identity.js +1 -1
- package/domain/Identity.js.map +1 -1
- package/exports/admin/ui.d.ts +4 -0
- package/exports/admin/ui.js +4 -1
- package/exports/admin.d.ts +4 -0
- package/exports/admin.js +2 -0
- package/features/{aiChat/AiChatGateway.d.ts → adminAssistant/AdminAssistantGateway.d.ts} +7 -7
- package/features/{aiChat/AiChatGateway.js → adminAssistant/AdminAssistantGateway.js} +8 -8
- package/features/adminAssistant/AdminAssistantGateway.js.map +1 -0
- package/features/adminAssistant/AdminAssistantPresenter.d.ts +60 -0
- package/features/adminAssistant/AdminAssistantPresenter.js +377 -0
- package/features/adminAssistant/AdminAssistantPresenter.js.map +1 -0
- package/features/adminAssistant/abstractions.d.ts +176 -0
- package/features/adminAssistant/abstractions.js +6 -0
- package/features/adminAssistant/abstractions.js.map +1 -0
- package/features/adminAssistant/feature.d.ts +3 -0
- package/features/adminAssistant/feature.js +19 -0
- package/features/adminAssistant/feature.js.map +1 -0
- package/features/adminAssistant/index.d.ts +6 -0
- package/features/adminAssistant/index.js +3 -0
- package/features/adminAssistant/turnsFromMessages.d.ts +15 -0
- package/features/adminAssistant/turnsFromMessages.js +77 -0
- package/features/adminAssistant/turnsFromMessages.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.d.ts +11 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js +44 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.d.ts +10 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js +19 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.d.ts +16 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js +5 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.d.ts +10 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js +5 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/index.d.ts +6 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/index.js +2 -0
- package/features/adminUsers/account/getCurrentUser/feature.d.ts +3 -0
- package/features/adminUsers/account/getCurrentUser/feature.js +19 -0
- package/features/adminUsers/account/getCurrentUser/feature.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/index.d.ts +1 -0
- package/features/adminUsers/account/getCurrentUser/index.js +1 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.d.ts +11 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js +48 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.d.ts +10 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js +19 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.d.ts +26 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js +5 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.d.ts +13 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js +5 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/index.d.ts +8 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/index.js +2 -0
- package/features/adminUsers/account/updateCurrentUser/feature.d.ts +3 -0
- package/features/adminUsers/account/updateCurrentUser/feature.js +19 -0
- package/features/adminUsers/account/updateCurrentUser/feature.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/index.d.ts +1 -0
- package/features/adminUsers/account/updateCurrentUser/index.js +1 -0
- package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.d.ts +6 -0
- package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js +22 -0
- package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js.map +1 -0
- package/features/adminUsers/passwordPolicy/abstractions.d.ts +20 -0
- package/features/adminUsers/passwordPolicy/abstractions.js +5 -0
- package/features/adminUsers/passwordPolicy/abstractions.js.map +1 -0
- package/features/adminUsers/passwordPolicy/feature.d.ts +8 -0
- package/features/adminUsers/passwordPolicy/feature.js +18 -0
- package/features/adminUsers/passwordPolicy/feature.js.map +1 -0
- package/features/adminUsers/passwordPolicy/index.d.ts +3 -0
- package/features/adminUsers/passwordPolicy/index.js +3 -0
- package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.d.ts +10 -0
- package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js +11 -0
- package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js.map +1 -0
- package/features/adminUsers/permissions/abstractions.d.ts +17 -0
- package/features/adminUsers/permissions/abstractions.js +6 -0
- package/features/adminUsers/permissions/abstractions.js.map +1 -0
- package/features/adminUsers/permissions/feature.d.ts +14 -0
- package/features/adminUsers/permissions/feature.js +7 -0
- package/features/adminUsers/permissions/feature.js.map +1 -0
- package/features/adminUsers/permissionsSchema.d.ts +10 -0
- package/features/adminUsers/permissionsSchema.js +18 -0
- package/features/adminUsers/permissionsSchema.js.map +1 -0
- package/features/adminUsers/users/createUser/CreateUserGateway.d.ts +11 -0
- package/features/adminUsers/users/createUser/CreateUserGateway.js +49 -0
- package/features/adminUsers/users/createUser/CreateUserGateway.js.map +1 -0
- package/features/adminUsers/users/createUser/CreateUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/createUser/CreateUserUseCase.js +18 -0
- package/features/adminUsers/users/createUser/CreateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.d.ts +21 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js +5 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js.map +1 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.d.ts +14 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js +5 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/createUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/createUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/createUser/feature.d.ts +3 -0
- package/features/adminUsers/users/createUser/feature.js +19 -0
- package/features/adminUsers/users/createUser/feature.js.map +1 -0
- package/features/adminUsers/users/createUser/index.d.ts +2 -0
- package/features/adminUsers/users/createUser/index.js +2 -0
- package/features/adminUsers/users/deleteUser/DeleteUserGateway.d.ts +11 -0
- package/features/adminUsers/users/deleteUser/DeleteUserGateway.js +40 -0
- package/features/adminUsers/users/deleteUser/DeleteUserGateway.js.map +1 -0
- package/features/adminUsers/users/deleteUser/DeleteUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js +18 -0
- package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js.map +1 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.d.ts +11 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js +5 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js.map +1 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.d.ts +11 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js +5 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js.map +1 -0
- package/features/adminUsers/users/deleteUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/deleteUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/deleteUser/feature.d.ts +3 -0
- package/features/adminUsers/users/deleteUser/feature.js +19 -0
- package/features/adminUsers/users/deleteUser/feature.js.map +1 -0
- package/features/adminUsers/users/deleteUser/index.d.ts +2 -0
- package/features/adminUsers/users/deleteUser/index.js +2 -0
- package/features/adminUsers/users/getUser/GetUserGateway.d.ts +11 -0
- package/features/adminUsers/users/getUser/GetUserGateway.js +57 -0
- package/features/adminUsers/users/getUser/GetUserGateway.js.map +1 -0
- package/features/adminUsers/users/getUser/GetUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/getUser/GetUserUseCase.js +18 -0
- package/features/adminUsers/users/getUser/GetUserUseCase.js.map +1 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserGateway.d.ts +32 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js +5 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js.map +1 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.d.ts +14 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js +5 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js.map +1 -0
- package/features/adminUsers/users/getUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/getUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/getUser/feature.d.ts +3 -0
- package/features/adminUsers/users/getUser/feature.js +19 -0
- package/features/adminUsers/users/getUser/feature.js.map +1 -0
- package/features/adminUsers/users/getUser/index.d.ts +2 -0
- package/features/adminUsers/users/getUser/index.js +2 -0
- package/features/adminUsers/users/listUsers/ListUsersGateway.d.ts +11 -0
- package/features/adminUsers/users/listUsers/ListUsersGateway.js +39 -0
- package/features/adminUsers/users/listUsers/ListUsersGateway.js.map +1 -0
- package/features/adminUsers/users/listUsers/ListUsersUseCase.d.ts +10 -0
- package/features/adminUsers/users/listUsers/ListUsersUseCase.js +18 -0
- package/features/adminUsers/users/listUsers/ListUsersUseCase.js.map +1 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.d.ts +17 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js +5 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js.map +1 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.d.ts +10 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js +5 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js.map +1 -0
- package/features/adminUsers/users/listUsers/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/listUsers/abstractions/index.js +2 -0
- package/features/adminUsers/users/listUsers/feature.d.ts +3 -0
- package/features/adminUsers/users/listUsers/feature.js +19 -0
- package/features/adminUsers/users/listUsers/feature.js.map +1 -0
- package/features/adminUsers/users/listUsers/index.d.ts +2 -0
- package/features/adminUsers/users/listUsers/index.js +2 -0
- package/features/adminUsers/users/updateUser/UpdateUserGateway.d.ts +11 -0
- package/features/adminUsers/users/updateUser/UpdateUserGateway.js +59 -0
- package/features/adminUsers/users/updateUser/UpdateUserGateway.js.map +1 -0
- package/features/adminUsers/users/updateUser/UpdateUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/updateUser/UpdateUserUseCase.js +18 -0
- package/features/adminUsers/users/updateUser/UpdateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.d.ts +33 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js +5 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js.map +1 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.d.ts +15 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js +5 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/updateUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/updateUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/updateUser/feature.d.ts +3 -0
- package/features/adminUsers/users/updateUser/feature.js +19 -0
- package/features/adminUsers/users/updateUser/feature.js.map +1 -0
- package/features/adminUsers/users/updateUser/index.d.ts +2 -0
- package/features/adminUsers/users/updateUser/index.js +2 -0
- package/features/aiChats/AiChatSaveError.d.ts +6 -0
- package/features/aiChats/AiChatSaveError.js +8 -0
- package/features/aiChats/AiChatSaveError.js.map +1 -0
- package/features/aiChats/AiChatsGateway.d.ts +18 -0
- package/features/aiChats/AiChatsGateway.js +132 -0
- package/features/aiChats/AiChatsGateway.js.map +1 -0
- package/features/aiChats/AiChatsRepository.d.ts +36 -0
- package/features/aiChats/AiChatsRepository.js +110 -0
- package/features/aiChats/AiChatsRepository.js.map +1 -0
- package/features/aiChats/AiChatsRequestError.d.ts +9 -0
- package/features/aiChats/AiChatsRequestError.js +8 -0
- package/features/aiChats/AiChatsRequestError.js.map +1 -0
- package/features/aiChats/abstractions.d.ts +76 -0
- package/features/aiChats/abstractions.js +6 -0
- package/features/aiChats/abstractions.js.map +1 -0
- package/features/aiChats/feature.d.ts +3 -0
- package/features/aiChats/feature.js +19 -0
- package/features/aiChats/feature.js.map +1 -0
- package/features/aiChats/index.d.ts +9 -0
- package/features/aiChats/index.js +3 -0
- package/features/aiChats/messageOf.d.ts +2 -0
- package/features/aiChats/messageOf.js +7 -0
- package/features/aiChats/messageOf.js.map +1 -0
- package/features/aiSettings/abstractions.d.ts +16 -0
- package/features/aiSettings/abstractions.js +5 -0
- package/features/aiSettings/abstractions.js.map +1 -0
- package/features/aiSettings/index.d.ts +2 -0
- package/features/aiSettings/index.js +1 -0
- package/features/assumePermissions/ApiStreamClientDecorator.d.ts +16 -0
- package/features/assumePermissions/ApiStreamClientDecorator.js +29 -0
- package/features/assumePermissions/ApiStreamClientDecorator.js.map +1 -0
- package/features/assumePermissions/AssumePermissionsContext.d.ts +17 -0
- package/features/assumePermissions/AssumePermissionsContext.js +32 -0
- package/features/assumePermissions/AssumePermissionsContext.js.map +1 -0
- package/features/assumePermissions/AssumePermissionsUseCase.d.ts +33 -0
- package/features/assumePermissions/AssumePermissionsUseCase.js +48 -0
- package/features/assumePermissions/AssumePermissionsUseCase.js.map +1 -0
- package/features/assumePermissions/GraphQLClientDecorator.d.ts +16 -0
- package/features/assumePermissions/GraphQLClientDecorator.js +29 -0
- package/features/assumePermissions/GraphQLClientDecorator.js.map +1 -0
- package/features/assumePermissions/ListAssumableTargetsGateway.d.ts +13 -0
- package/features/assumePermissions/ListAssumableTargetsGateway.js +74 -0
- package/features/assumePermissions/ListAssumableTargetsGateway.js.map +1 -0
- package/features/assumePermissions/ListAssumableTargetsUseCase.d.ts +16 -0
- package/features/assumePermissions/ListAssumableTargetsUseCase.js +38 -0
- package/features/assumePermissions/ListAssumableTargetsUseCase.js.map +1 -0
- package/features/assumePermissions/LogInUseCaseDecorator.d.ts +33 -0
- package/features/assumePermissions/LogInUseCaseDecorator.js +36 -0
- package/features/assumePermissions/LogInUseCaseDecorator.js.map +1 -0
- package/features/assumePermissions/LogOutUseCaseDecorator.d.ts +16 -0
- package/features/assumePermissions/LogOutUseCaseDecorator.js +21 -0
- package/features/assumePermissions/LogOutUseCaseDecorator.js.map +1 -0
- package/features/assumePermissions/abstractions.d.ts +78 -0
- package/features/assumePermissions/abstractions.js +8 -0
- package/features/assumePermissions/abstractions.js.map +1 -0
- package/features/assumePermissions/assumePermissionsHeader.d.ts +3 -0
- package/features/assumePermissions/assumePermissionsHeader.js +7 -0
- package/features/assumePermissions/assumePermissionsHeader.js.map +1 -0
- package/features/assumePermissions/feature.d.ts +4 -0
- package/features/assumePermissions/feature.js +32 -0
- package/features/assumePermissions/feature.js.map +1 -0
- package/features/assumePermissions/index.d.ts +4 -0
- package/features/assumePermissions/index.js +2 -0
- package/features/banners/Banners.d.ts +15 -0
- package/features/banners/Banners.js +39 -0
- package/features/banners/Banners.js.map +1 -0
- package/features/banners/abstractions.d.ts +34 -0
- package/features/banners/abstractions.js +5 -0
- package/features/banners/abstractions.js.map +1 -0
- package/features/banners/feature.d.ts +3 -0
- package/features/banners/feature.js +17 -0
- package/features/banners/feature.js.map +1 -0
- package/features/banners/index.d.ts +2 -0
- package/features/banners/index.js +2 -0
- package/features/dateFormatter/formatUtcOffset.d.ts +1 -0
- package/features/dateFormatter/formatUtcOffset.js +11 -0
- package/features/dateFormatter/formatUtcOffset.js.map +1 -0
- package/features/debugger/DebugSessionsRepository.d.ts +35 -0
- package/features/debugger/DebugSessionsRepository.js +57 -0
- package/features/debugger/DebugSessionsRepository.js.map +1 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.d.ts +17 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.js +21 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.js.map +1 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.test.d.ts +1 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.test.js +112 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.test.js.map +1 -0
- package/features/debugger/abstractions.d.ts +50 -0
- package/features/debugger/abstractions.js +5 -0
- package/features/debugger/abstractions.js.map +1 -0
- package/features/debugger/constants.d.ts +1 -0
- package/features/debugger/constants.js +4 -0
- package/features/debugger/constants.js.map +1 -0
- package/features/debugger/feature.d.ts +3 -0
- package/features/debugger/feature.js +19 -0
- package/features/debugger/feature.js.map +1 -0
- package/features/debugger/index.d.ts +3 -0
- package/features/debugger/index.js +3 -0
- package/features/formModel/AccessControlRuleEvaluator.d.ts +12 -0
- package/features/formModel/AccessControlRuleEvaluator.js +30 -0
- package/features/formModel/AccessControlRuleEvaluator.js.map +1 -0
- package/features/formModel/AccessControlRuleEvaluator.test.d.ts +1 -0
- package/features/formModel/AccessControlRuleEvaluator.test.js +219 -0
- package/features/formModel/AccessControlRuleEvaluator.test.js.map +1 -0
- package/features/formModel/ConditionRuleEvaluator.js +34 -4
- package/features/formModel/ConditionRuleEvaluator.js.map +1 -1
- package/features/formModel/Field.d.ts +14 -1
- package/features/formModel/Field.js +41 -5
- package/features/formModel/Field.js.map +1 -1
- package/features/formModel/FieldBuilder.d.ts +3 -3
- package/features/formModel/FieldBuilder.js +2 -1
- package/features/formModel/FieldBuilder.js.map +1 -1
- package/features/formModel/FieldBuilder.test.js +158 -1
- package/features/formModel/FieldBuilder.test.js.map +1 -1
- package/features/formModel/FocusManager.js +10 -3
- package/features/formModel/FocusManager.js.map +1 -1
- package/features/formModel/FormErrors.js +1 -1
- package/features/formModel/FormErrors.js.map +1 -1
- package/features/formModel/FormModel.d.ts +2 -0
- package/features/formModel/FormModel.js +32 -9
- package/features/formModel/FormModel.js.map +1 -1
- package/features/formModel/FormModel.test.js +835 -4
- package/features/formModel/FormModel.test.js.map +1 -1
- package/features/formModel/ObjectField.d.ts +12 -1
- package/features/formModel/ObjectField.js +70 -20
- package/features/formModel/ObjectField.js.map +1 -1
- package/features/formModel/Rules.test.js +224 -16
- package/features/formModel/Rules.test.js.map +1 -1
- package/features/formModel/abstractions.d.ts +56 -4
- package/features/formModel/abstractions.js +2 -1
- package/features/formModel/abstractions.js.map +1 -1
- package/features/formModel/createFieldRenderer.d.ts +42 -0
- package/features/formModel/createFieldRenderer.js +33 -10
- package/features/formModel/createFieldRenderer.js.map +1 -1
- package/features/formModel/feature.js +2 -0
- package/features/formModel/feature.js.map +1 -1
- package/features/formModel/fieldTypes/DateTimeFieldType.d.ts +67 -4
- package/features/formModel/fieldTypes/DateTimeFieldType.js +88 -22
- package/features/formModel/fieldTypes/DateTimeFieldType.js.map +1 -1
- package/features/formModel/fieldTypes/ObjectFieldType.d.ts +3 -1
- package/features/formModel/fieldTypes/ObjectFieldType.js +23 -1
- package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -1
- package/features/formModel/fieldTypes/dateLimits.d.ts +37 -0
- package/features/formModel/fieldTypes/dateLimits.js +64 -0
- package/features/formModel/fieldTypes/dateLimits.js.map +1 -0
- package/features/formModel/fieldTypes/dateLimits.test.d.ts +1 -0
- package/features/formModel/fieldTypes/dateLimits.test.js +60 -0
- package/features/formModel/fieldTypes/dateLimits.test.js.map +1 -0
- package/features/formModel/hasSubtreeFocusRequest.d.ts +12 -0
- package/features/formModel/hasSubtreeFocusRequest.js +15 -0
- package/features/formModel/hasSubtreeFocusRequest.js.map +1 -0
- package/features/formModel/index.d.ts +3 -2
- package/features/formModel/index.js +2 -1
- package/features/formModel/jsonSchema/JsonSchema.d.ts +18 -0
- package/features/formModel/jsonSchema/JsonSchema.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaFieldOptions.d.ts +4 -0
- package/features/formModel/jsonSchema/JsonSchemaFieldOptions.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaIssue.d.ts +4 -0
- package/features/formModel/jsonSchema/JsonSchemaIssue.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaValidationResult.d.ts +5 -0
- package/features/formModel/jsonSchema/JsonSchemaValidationResult.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaValidator.d.ts +4 -0
- package/features/formModel/jsonSchema/JsonSchemaValidator.js +0 -0
- package/features/formModel/jsonSchema/PlainObject.d.ts +1 -0
- package/features/formModel/jsonSchema/PlainObject.js +0 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.d.ts +5 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js +154 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js.map +1 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.d.ts +1 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js +643 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js.map +1 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.d.ts +3 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.js +40 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.js.map +1 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.test.d.ts +1 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js +141 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js.map +1 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.d.ts +3 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js +52 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js.map +1 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.d.ts +1 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js +250 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js.map +1 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.d.ts +3 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.js +31 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.js.map +1 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.test.d.ts +1 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.test.js +123 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.test.js.map +1 -0
- package/features/formModel/jsonSchema/isPlainObject.d.ts +2 -0
- package/features/formModel/jsonSchema/isPlainObject.js +4 -0
- package/features/formModel/jsonSchema/isPlainObject.js.map +1 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.d.ts +3 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js +30 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js.map +1 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.d.ts +1 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js +207 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js.map +1 -0
- package/features/formModel/jsonSchema/normalizeJsonSchema.d.ts +2 -0
- package/features/formModel/jsonSchema/normalizeJsonSchema.js +10 -0
- package/features/formModel/jsonSchema/normalizeJsonSchema.js.map +1 -0
- package/features/formModel/renderers.d.ts +1 -0
- package/features/formModel/renderers.js +1 -0
- package/features/notifications/Notifications.d.ts +1 -0
- package/features/notifications/Notifications.js +3 -0
- package/features/notifications/Notifications.js.map +1 -1
- package/features/notifications/Notifications.test.d.ts +1 -0
- package/features/notifications/Notifications.test.js +106 -0
- package/features/notifications/Notifications.test.js.map +1 -0
- package/features/notifications/NotificationsRenderer.d.ts +2 -1
- package/features/notifications/NotificationsRenderer.js +23 -4
- package/features/notifications/NotificationsRenderer.js.map +1 -1
- package/features/notifications/NotificationsRenderer.test.d.ts +1 -0
- package/features/notifications/NotificationsRenderer.test.js +261 -0
- package/features/notifications/NotificationsRenderer.test.js.map +1 -0
- package/features/notifications/abstractions.d.ts +13 -2
- package/features/notifications/abstractions.js.map +1 -1
- package/features/security/LogIn/LogInUseCase.d.ts +0 -1
- package/features/security/LogIn/LogInUseCase.js +2 -5
- package/features/security/LogIn/LogInUseCase.js.map +1 -1
- package/features/security/LogIn/hasAppPermissions.d.ts +2 -0
- package/features/security/LogIn/hasAppPermissions.js +8 -0
- package/features/security/LogIn/hasAppPermissions.js.map +1 -0
- package/features/wcp/ReactLicense.d.ts +6 -1
- package/features/wcp/ReactLicense.js +17 -2
- package/features/wcp/ReactLicense.js.map +1 -1
- package/features/wcp/WcpGateway.js +4 -0
- package/features/wcp/WcpGateway.js.map +1 -1
- package/hooks/useHotkeys.js +6 -4
- package/hooks/useHotkeys.js.map +1 -1
- package/index.d.ts +27 -3
- package/index.js +23 -6
- package/modules/AccessManagementExtension.js +3 -1
- package/modules/AccessManagementExtension.js.map +1 -1
- package/modules/DebuggerExtension.d.ts +2 -0
- package/modules/DebuggerExtension.js +55 -0
- package/modules/DebuggerExtension.js.map +1 -0
- package/package.json +41 -41
- package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js +1 -2
- package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js.map +1 -1
- package/presentation/accessManagement/roles/RolesPresenter.js +1 -2
- package/presentation/accessManagement/roles/RolesPresenter.js.map +1 -1
- package/presentation/accessManagement/roles/components/RolesDataList.d.ts +10 -0
- package/presentation/accessManagement/roles/components/RolesDataList.js +146 -0
- package/presentation/accessManagement/roles/components/RolesDataList.js.map +1 -0
- package/presentation/accessManagement/roles/components/RolesForm.d.ts +13 -0
- package/presentation/accessManagement/roles/components/RolesForm.js +114 -0
- package/presentation/accessManagement/roles/components/RolesForm.js.map +1 -0
- package/presentation/accessManagement/roles/components/RolesView.js +6 -216
- package/presentation/accessManagement/roles/components/RolesView.js.map +1 -1
- package/presentation/accessManagement/teams/TeamsPresenter.js +1 -2
- package/presentation/accessManagement/teams/TeamsPresenter.js.map +1 -1
- package/presentation/accessManagement/teams/components/TeamsDataList.d.ts +10 -0
- package/presentation/accessManagement/teams/components/TeamsDataList.js +146 -0
- package/presentation/accessManagement/teams/components/TeamsDataList.js.map +1 -0
- package/presentation/accessManagement/teams/components/TeamsForm.d.ts +13 -0
- package/presentation/accessManagement/teams/components/TeamsForm.js +96 -0
- package/presentation/accessManagement/teams/components/TeamsForm.js.map +1 -0
- package/presentation/accessManagement/teams/components/TeamsView.js +6 -198
- package/presentation/accessManagement/teams/components/TeamsView.js.map +1 -1
- package/presentation/adminUsers/AdminUsers.d.ts +10 -0
- package/presentation/adminUsers/AdminUsers.js +77 -0
- package/presentation/adminUsers/AdminUsers.js.map +1 -0
- package/presentation/adminUsers/SecurityPermission.d.ts +2 -0
- package/presentation/adminUsers/SecurityPermission.js +15 -0
- package/presentation/adminUsers/SecurityPermission.js.map +1 -0
- package/presentation/adminUsers/UserItem.d.ts +10 -0
- package/presentation/adminUsers/UserItem.js +0 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImage.d.ts +3 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImage.js +31 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImage.js.map +1 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js +53 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js.map +1 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js +28 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
- package/presentation/adminUsers/components/AvatarImage/index.d.ts +1 -0
- package/presentation/adminUsers/components/AvatarImage/index.js +1 -0
- package/presentation/adminUsers/routes.d.ts +10 -0
- package/presentation/adminUsers/routes.js +20 -0
- package/presentation/adminUsers/routes.js.map +1 -0
- package/presentation/adminUsers/userMenu/AccountDetails.d.ts +6 -0
- package/presentation/adminUsers/userMenu/AccountDetails.js +20 -0
- package/presentation/adminUsers/userMenu/AccountDetails.js.map +1 -0
- package/presentation/adminUsers/userMenu/useIsDefaultTenant.d.ts +1 -0
- package/presentation/adminUsers/userMenu/useIsDefaultTenant.js +9 -0
- package/presentation/adminUsers/userMenu/useIsDefaultTenant.js.map +1 -0
- package/presentation/adminUsers/views/Account/Account.d.ts +2 -0
- package/presentation/adminUsers/views/Account/Account.js +137 -0
- package/presentation/adminUsers/views/Account/Account.js.map +1 -0
- package/presentation/adminUsers/views/Account/index.d.ts +1 -0
- package/presentation/adminUsers/views/Account/index.js +1 -0
- package/presentation/adminUsers/views/Users/UsersDataList.d.ts +3 -0
- package/presentation/adminUsers/views/Users/UsersDataList.js +180 -0
- package/presentation/adminUsers/views/Users/UsersDataList.js.map +1 -0
- package/presentation/adminUsers/views/Users/UsersForm.d.ts +5 -0
- package/presentation/adminUsers/views/Users/UsersForm.js +175 -0
- package/presentation/adminUsers/views/Users/UsersForm.js.map +1 -0
- package/presentation/adminUsers/views/Users/UsersView.d.ts +2 -0
- package/presentation/adminUsers/views/Users/UsersView.js +15 -0
- package/presentation/adminUsers/views/Users/UsersView.js.map +1 -0
- package/presentation/adminUsers/views/Users/components/DeleteAction.d.ts +7 -0
- package/presentation/adminUsers/views/Users/components/DeleteAction.js +29 -0
- package/presentation/adminUsers/views/Users/components/DeleteAction.js.map +1 -0
- package/presentation/adminUsers/views/Users/hooks/useUserForm.d.ts +27 -0
- package/presentation/adminUsers/views/Users/hooks/useUserForm.js +101 -0
- package/presentation/adminUsers/views/Users/hooks/useUserForm.js.map +1 -0
- package/presentation/adminUsers/views/Users/search.js +21 -0
- package/presentation/adminUsers/views/Users/search.js.map +1 -0
- package/presentation/adminUsers/views/Users/search.svg +20 -0
- package/presentation/adminUsers/views/utils.d.ts +3 -0
- package/presentation/adminUsers/views/utils.js +12 -0
- package/presentation/adminUsers/views/utils.js.map +1 -0
- package/presentation/aiChats/AiChatsPanelPresenter.d.ts +28 -0
- package/presentation/aiChats/AiChatsPanelPresenter.js +132 -0
- package/presentation/aiChats/AiChatsPanelPresenter.js.map +1 -0
- package/presentation/aiChats/abstractions.d.ts +69 -0
- package/presentation/aiChats/abstractions.js +5 -0
- package/presentation/aiChats/abstractions.js.map +1 -0
- package/presentation/aiChats/feature.d.ts +3 -0
- package/presentation/aiChats/feature.js +17 -0
- package/presentation/aiChats/feature.js.map +1 -0
- package/presentation/aiChats/index.d.ts +2 -0
- package/presentation/aiChats/index.js +2 -0
- package/presentation/assumePermissions/AssumePermissionsPresenter.d.ts +36 -0
- package/presentation/assumePermissions/AssumePermissionsPresenter.js +153 -0
- package/presentation/assumePermissions/AssumePermissionsPresenter.js.map +1 -0
- package/presentation/assumePermissions/abstractions.d.ts +30 -0
- package/presentation/assumePermissions/abstractions.js +5 -0
- package/presentation/assumePermissions/abstractions.js.map +1 -0
- package/presentation/assumePermissions/components/AssumePermissionsButton.d.ts +14 -0
- package/presentation/assumePermissions/components/AssumePermissionsButton.js +42 -0
- package/presentation/assumePermissions/components/AssumePermissionsButton.js.map +1 -0
- package/presentation/assumePermissions/components/AssumedPermissionsBanner.d.ts +11 -0
- package/presentation/assumePermissions/components/AssumedPermissionsBanner.js +25 -0
- package/presentation/assumePermissions/components/AssumedPermissionsBanner.js.map +1 -0
- package/presentation/assumePermissions/components/AssumedPermissionsSelector.d.ts +2 -0
- package/presentation/assumePermissions/components/AssumedPermissionsSelector.js +68 -0
- package/presentation/assumePermissions/components/AssumedPermissionsSelector.js.map +1 -0
- package/presentation/assumePermissions/feature.d.ts +3 -0
- package/presentation/assumePermissions/feature.js +17 -0
- package/presentation/assumePermissions/feature.js.map +1 -0
- package/presentation/assumePermissions/index.d.ts +4 -0
- package/presentation/assumePermissions/index.js +4 -0
- package/presentation/banners/BannersPresenter.d.ts +14 -0
- package/presentation/banners/BannersPresenter.js +60 -0
- package/presentation/banners/BannersPresenter.js.map +1 -0
- package/presentation/banners/abstractions.d.ts +24 -0
- package/presentation/banners/abstractions.js +5 -0
- package/presentation/banners/abstractions.js.map +1 -0
- package/presentation/banners/components/Banner.d.ts +10 -0
- package/presentation/banners/components/Banner.js +32 -0
- package/presentation/banners/components/Banner.js.map +1 -0
- package/presentation/banners/components/BannerBar.d.ts +11 -0
- package/presentation/banners/components/BannerBar.js +51 -0
- package/presentation/banners/components/BannerBar.js.map +1 -0
- package/presentation/banners/feature.d.ts +3 -0
- package/presentation/banners/feature.js +17 -0
- package/presentation/banners/feature.js.map +1 -0
- package/presentation/banners/index.d.ts +6 -0
- package/presentation/banners/index.js +4 -0
- package/presentation/banners/useBanner.d.ts +10 -0
- package/presentation/banners/useBanner.js +15 -0
- package/presentation/banners/useBanner.js.map +1 -0
- package/presentation/commandPalette/CommandPalettePresenter.js +3 -1
- package/presentation/commandPalette/CommandPalettePresenter.js.map +1 -1
- package/presentation/commandPalette/abstractions.d.ts +5 -0
- package/presentation/commandPalette/abstractions.js.map +1 -1
- package/presentation/commandPalette/commands/AiChatsCommand.d.ts +24 -0
- package/presentation/commandPalette/commands/AiChatsCommand.js +41 -0
- package/presentation/commandPalette/commands/AiChatsCommand.js.map +1 -0
- package/presentation/commandPalette/commands/AskAiCommand.d.ts +1 -0
- package/presentation/commandPalette/commands/AskAiCommand.js +3 -2
- package/presentation/commandPalette/commands/AskAiCommand.js.map +1 -1
- package/presentation/commandPalette/commands/feature.js +2 -0
- package/presentation/commandPalette/commands/feature.js.map +1 -1
- package/presentation/createReactiveComponent.d.ts +1 -0
- package/presentation/createReactiveComponent.js +1 -0
- package/presentation/debugger/DebuggerPresenter.d.ts +14 -0
- package/presentation/debugger/DebuggerPresenter.js +45 -0
- package/presentation/debugger/DebuggerPresenter.js.map +1 -0
- package/presentation/debugger/abstractions.d.ts +17 -0
- package/presentation/debugger/abstractions.js +5 -0
- package/presentation/debugger/abstractions.js.map +1 -0
- package/presentation/debugger/components/DebuggerIndicator.d.ts +2 -0
- package/presentation/debugger/components/DebuggerIndicator.js +45 -0
- package/presentation/debugger/components/DebuggerIndicator.js.map +1 -0
- package/presentation/debugger/components/DebuggerView.d.ts +4 -0
- package/presentation/debugger/components/DebuggerView.js +44 -0
- package/presentation/debugger/components/DebuggerView.js.map +1 -0
- package/presentation/debugger/downloadJson.d.ts +7 -0
- package/presentation/debugger/downloadJson.js +17 -0
- package/presentation/debugger/downloadJson.js.map +1 -0
- package/presentation/debugger/feature.d.ts +3 -0
- package/presentation/debugger/feature.js +17 -0
- package/presentation/debugger/feature.js.map +1 -0
- package/presentation/debugger/routes.d.ts +4 -0
- package/presentation/debugger/routes.js +10 -0
- package/presentation/debugger/routes.js.map +1 -0
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js +4 -3
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js.map +1 -1
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js.map +1 -1
- package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map +1 -1
- package/presentation/listPresenter/FolderAwareDataSource.d.ts +5 -0
- package/presentation/listPresenter/FolderAwareDataSource.js +4 -3
- package/presentation/listPresenter/FolderAwareDataSource.js.map +1 -1
- package/presentation/listPresenter/QueryMatcher.d.ts +28 -5
- package/presentation/listPresenter/QueryMatcher.js +72 -2
- package/presentation/listPresenter/QueryMatcher.js.map +1 -1
- package/presentation/listPresenter/QueryMatcher.test.d.ts +1 -0
- package/presentation/listPresenter/QueryMatcher.test.js +345 -0
- package/presentation/listPresenter/QueryMatcher.test.js.map +1 -0
- package/presentation/trashBin/TrashBinPresenter.js +3 -1
- package/presentation/trashBin/TrashBinPresenter.js.map +1 -1
- package/presentation/trashBin/TrashBinPresenter.test.d.ts +1 -0
- package/presentation/trashBin/TrashBinPresenter.test.js +91 -0
- package/presentation/trashBin/TrashBinPresenter.test.js.map +1 -0
- package/presentation/trashBin/abstractions.d.ts +1 -1
- package/presentation/trashBin/abstractions.js.map +1 -1
- package/presentation/trashBin/components/BulkActions/DeleteItems.js +5 -1
- package/presentation/trashBin/components/BulkActions/DeleteItems.js.map +1 -1
- package/presentation/trashBin/components/BulkActions/DeleteItems.test.d.ts +1 -0
- package/presentation/trashBin/components/BulkActions/DeleteItems.test.js +100 -0
- package/presentation/trashBin/components/BulkActions/DeleteItems.test.js.map +1 -0
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.js +2 -1
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.js.map +1 -1
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.d.ts +1 -0
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js +67 -0
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js.map +1 -0
- package/static/svg/search.43fa797c.svg +20 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +0 -68
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +0 -1
- package/features/aiChat/AiChatGateway.js.map +0 -1
- package/features/aiChat/AiChatPresenter.d.ts +0 -32
- package/features/aiChat/AiChatPresenter.js +0 -220
- package/features/aiChat/AiChatPresenter.js.map +0 -1
- package/features/aiChat/abstractions.d.ts +0 -124
- package/features/aiChat/abstractions.js +0 -6
- package/features/aiChat/abstractions.js.map +0 -1
- package/features/aiChat/feature.d.ts +0 -3
- package/features/aiChat/feature.js +0 -19
- package/features/aiChat/feature.js.map +0 -1
- package/features/aiChat/index.d.ts +0 -6
- package/features/aiChat/index.js +0 -3
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.d.ts +0 -8
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js +0 -17
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js.map +0 -1
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.d.ts +0 -1
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js +0 -16
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js.map +0 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FeatureFlagsService } from "../../features/featureFlags/abstractions.js";
|
|
2
|
+
import { IdentityContext } from "../../features/security/IdentityContext/index.js";
|
|
3
|
+
import { AssumePermissionsContext } from "../../features/assumePermissions/abstractions.js";
|
|
4
|
+
import { AssumePermissionsUseCase } from "../../features/assumePermissions/abstractions.js";
|
|
5
|
+
import { ListAssumableTargetsUseCase } from "../../features/assumePermissions/abstractions.js";
|
|
6
|
+
import { AssumePermissionsPresenter as Abstraction } from "./abstractions.js";
|
|
7
|
+
declare class AssumePermissionsPresenterImpl implements Abstraction.Interface {
|
|
8
|
+
private assumePermissionsUseCase;
|
|
9
|
+
private listAssumableTargetsUseCase;
|
|
10
|
+
private identityContext;
|
|
11
|
+
private featureFlags;
|
|
12
|
+
private loading;
|
|
13
|
+
private switching;
|
|
14
|
+
private roles;
|
|
15
|
+
private teams;
|
|
16
|
+
private error;
|
|
17
|
+
private readonly loadedAssumed;
|
|
18
|
+
constructor(assumePermissionsContext: AssumePermissionsContext.Interface, assumePermissionsUseCase: AssumePermissionsUseCase.Interface, listAssumableTargetsUseCase: ListAssumableTargetsUseCase.Interface, identityContext: IdentityContext.Interface, featureFlags: FeatureFlagsService.Interface);
|
|
19
|
+
get vm(): Abstraction.ViewModel;
|
|
20
|
+
load(): Promise<void>;
|
|
21
|
+
assume(value: string): Promise<void>;
|
|
22
|
+
assumeTarget(target: AssumePermissionsUseCase.Target): Promise<void>;
|
|
23
|
+
exit(): Promise<void>;
|
|
24
|
+
dismissError(): void;
|
|
25
|
+
private switchTo;
|
|
26
|
+
private startLoading;
|
|
27
|
+
private stopLoading;
|
|
28
|
+
private setEntries;
|
|
29
|
+
private setError;
|
|
30
|
+
private startSwitching;
|
|
31
|
+
private failSwitching;
|
|
32
|
+
}
|
|
33
|
+
export declare const AssumePermissionsPresenter: typeof AssumePermissionsPresenterImpl & {
|
|
34
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IAssumePermissionsPresenter>;
|
|
35
|
+
};
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { makeAutoObservable } from "mobx";
|
|
2
|
+
import { FeatureFlagsService } from "../../features/featureFlags/abstractions.js";
|
|
3
|
+
import { IdentityContext } from "../../features/security/IdentityContext/index.js";
|
|
4
|
+
import { AssumePermissionsContext, AssumePermissionsUseCase, ListAssumableTargetsUseCase } from "../../features/assumePermissions/abstractions.js";
|
|
5
|
+
import { AssumePermissionsPresenter } from "./abstractions.js";
|
|
6
|
+
function optionValue(entry) {
|
|
7
|
+
return `${entry.type}:${entry.id}`;
|
|
8
|
+
}
|
|
9
|
+
function toOption(entry) {
|
|
10
|
+
return {
|
|
11
|
+
value: optionValue(entry),
|
|
12
|
+
label: entry.name
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function currentPath() {
|
|
16
|
+
const { pathname, search, hash } = window.location;
|
|
17
|
+
return `${pathname}${search}${hash}`;
|
|
18
|
+
}
|
|
19
|
+
function isSameOrigin(path) {
|
|
20
|
+
const url = new URL(path, window.location.origin);
|
|
21
|
+
return url.origin === window.location.origin;
|
|
22
|
+
}
|
|
23
|
+
function leavePage(returnTo) {
|
|
24
|
+
if (returnTo && isSameOrigin(returnTo)) return void window.location.assign(returnTo);
|
|
25
|
+
window.location.reload();
|
|
26
|
+
}
|
|
27
|
+
function toMessage(error, fallback) {
|
|
28
|
+
if (error instanceof Error) return error.message;
|
|
29
|
+
return fallback;
|
|
30
|
+
}
|
|
31
|
+
class AssumePermissionsPresenterImpl {
|
|
32
|
+
constructor(assumePermissionsContext, assumePermissionsUseCase, listAssumableTargetsUseCase, identityContext, featureFlags){
|
|
33
|
+
this.assumePermissionsUseCase = assumePermissionsUseCase;
|
|
34
|
+
this.listAssumableTargetsUseCase = listAssumableTargetsUseCase;
|
|
35
|
+
this.identityContext = identityContext;
|
|
36
|
+
this.featureFlags = featureFlags;
|
|
37
|
+
this.loading = false;
|
|
38
|
+
this.switching = false;
|
|
39
|
+
this.roles = [];
|
|
40
|
+
this.teams = [];
|
|
41
|
+
this.error = null;
|
|
42
|
+
this.loadedAssumed = assumePermissionsContext.get();
|
|
43
|
+
makeAutoObservable(this, {}, {
|
|
44
|
+
autoBind: true
|
|
45
|
+
});
|
|
46
|
+
if (this.loadedAssumed) this.load();
|
|
47
|
+
}
|
|
48
|
+
get vm() {
|
|
49
|
+
const identity = this.identityContext.getIdentity();
|
|
50
|
+
const roleOptions = this.roles.map(toOption);
|
|
51
|
+
const teamOptions = this.teams.map(toOption);
|
|
52
|
+
const hasFullAccess = null !== identity.getPermission("*", true);
|
|
53
|
+
const canAssume = null !== this.loadedAssumed || hasFullAccess;
|
|
54
|
+
return {
|
|
55
|
+
loading: this.loading,
|
|
56
|
+
switching: this.switching,
|
|
57
|
+
roleOptions,
|
|
58
|
+
teamOptions,
|
|
59
|
+
assumed: this.loadedAssumed,
|
|
60
|
+
canAssume,
|
|
61
|
+
error: this.error
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async load() {
|
|
65
|
+
const hasOptions = this.roles.length > 0 || this.teams.length > 0;
|
|
66
|
+
this.startLoading(!hasOptions);
|
|
67
|
+
const includeTeams = this.featureFlags.getFlags().isEnabled("advancedAccessControlLayer.teams");
|
|
68
|
+
try {
|
|
69
|
+
const result = await this.listAssumableTargetsUseCase.execute({
|
|
70
|
+
includeTeams
|
|
71
|
+
});
|
|
72
|
+
this.setEntries(result.roles, result.teams);
|
|
73
|
+
} catch (error) {
|
|
74
|
+
const message = toMessage(error, "Could not load roles.");
|
|
75
|
+
this.setError(message);
|
|
76
|
+
} finally{
|
|
77
|
+
this.stopLoading();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async assume(value) {
|
|
81
|
+
const entries = [
|
|
82
|
+
...this.roles,
|
|
83
|
+
...this.teams
|
|
84
|
+
];
|
|
85
|
+
const entry = entries.find((item)=>optionValue(item) === value);
|
|
86
|
+
if (!entry) return;
|
|
87
|
+
await this.switchTo({
|
|
88
|
+
type: entry.type,
|
|
89
|
+
id: entry.id,
|
|
90
|
+
name: entry.name
|
|
91
|
+
}, {});
|
|
92
|
+
}
|
|
93
|
+
async assumeTarget(target) {
|
|
94
|
+
const returnTo = currentPath();
|
|
95
|
+
await this.switchTo(target, {
|
|
96
|
+
returnTo
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
async exit() {
|
|
100
|
+
await this.switchTo(null, {});
|
|
101
|
+
}
|
|
102
|
+
dismissError() {
|
|
103
|
+
this.error = null;
|
|
104
|
+
}
|
|
105
|
+
async switchTo(target, options) {
|
|
106
|
+
this.startSwitching();
|
|
107
|
+
try {
|
|
108
|
+
await this.assumePermissionsUseCase.execute(target, options);
|
|
109
|
+
} catch (error) {
|
|
110
|
+
const message = toMessage(error, "Could not switch roles.");
|
|
111
|
+
this.failSwitching(message);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
let returnTo;
|
|
115
|
+
if (!target) returnTo = this.loadedAssumed?.returnTo;
|
|
116
|
+
leavePage(returnTo);
|
|
117
|
+
}
|
|
118
|
+
startLoading(showLoader) {
|
|
119
|
+
this.loading = showLoader;
|
|
120
|
+
this.error = null;
|
|
121
|
+
}
|
|
122
|
+
stopLoading() {
|
|
123
|
+
this.loading = false;
|
|
124
|
+
}
|
|
125
|
+
setEntries(roles, teams) {
|
|
126
|
+
this.roles = roles;
|
|
127
|
+
this.teams = teams;
|
|
128
|
+
}
|
|
129
|
+
setError(message) {
|
|
130
|
+
this.error = message;
|
|
131
|
+
}
|
|
132
|
+
startSwitching() {
|
|
133
|
+
this.switching = true;
|
|
134
|
+
this.error = null;
|
|
135
|
+
}
|
|
136
|
+
failSwitching(message) {
|
|
137
|
+
this.switching = false;
|
|
138
|
+
this.error = message;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const AssumePermissionsPresenter_AssumePermissionsPresenter = AssumePermissionsPresenter.createImplementation({
|
|
142
|
+
implementation: AssumePermissionsPresenterImpl,
|
|
143
|
+
dependencies: [
|
|
144
|
+
AssumePermissionsContext,
|
|
145
|
+
AssumePermissionsUseCase,
|
|
146
|
+
ListAssumableTargetsUseCase,
|
|
147
|
+
IdentityContext,
|
|
148
|
+
FeatureFlagsService
|
|
149
|
+
]
|
|
150
|
+
});
|
|
151
|
+
export { AssumePermissionsPresenter_AssumePermissionsPresenter as AssumePermissionsPresenter };
|
|
152
|
+
|
|
153
|
+
//# sourceMappingURL=AssumePermissionsPresenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/assumePermissions/AssumePermissionsPresenter.js","sources":["../../../src/presentation/assumePermissions/AssumePermissionsPresenter.ts"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\nimport { FeatureFlagsService } from \"~/features/featureFlags/abstractions.js\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nimport { AssumePermissionsContext } from \"~/features/assumePermissions/abstractions.js\";\nimport { AssumePermissionsUseCase } from \"~/features/assumePermissions/abstractions.js\";\nimport { ListAssumableTargetsUseCase } from \"~/features/assumePermissions/abstractions.js\";\nimport { AssumePermissionsPresenter as Abstraction } from \"./abstractions.js\";\n\ntype AssumableTarget = ListAssumableTargetsUseCase.Target;\n\nfunction optionValue(entry: { type: string; id: string }): string {\n return `${entry.type}:${entry.id}`;\n}\n\nfunction toOption(entry: AssumableTarget): Abstraction.Option {\n return { value: optionValue(entry), label: entry.name };\n}\n\nfunction currentPath(): string {\n const { pathname, search, hash } = window.location;\n return `${pathname}${search}${hash}`;\n}\n\n/*\n * The stored path comes back out of local storage, so it is only followed when it resolves to\n * this Admin's own origin. Anything else falls back to a plain reload.\n */\nfunction isSameOrigin(path: string): boolean {\n const url = new URL(path, window.location.origin);\n return url.origin === window.location.origin;\n}\n\nfunction leavePage(returnTo: string | undefined): void {\n if (returnTo && isSameOrigin(returnTo)) {\n window.location.assign(returnTo);\n return;\n }\n\n window.location.reload();\n}\n\nfunction toMessage(error: unknown, fallback: string): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n return fallback;\n}\n\nclass AssumePermissionsPresenterImpl implements Abstraction.Interface {\n private loading = false;\n private switching = false;\n private roles: AssumableTarget[] = [];\n private teams: AssumableTarget[] = [];\n private error: string | null = null;\n /*\n * The role this page was LOADED with, captured once. The banner renders from this rather than\n * from the live context so it doesn't flicker during a switch: starting a preview would\n * otherwise pop the banner up a moment before the reload, and exiting would drop it a moment\n * before, both of which read as a glitch. Since every switch reloads, the snapshot and the\n * live value only ever differ inside that window.\n */\n private readonly loadedAssumed: AssumePermissionsContext.Value | null;\n\n constructor(\n assumePermissionsContext: AssumePermissionsContext.Interface,\n private assumePermissionsUseCase: AssumePermissionsUseCase.Interface,\n private listAssumableTargetsUseCase: ListAssumableTargetsUseCase.Interface,\n private identityContext: IdentityContext.Interface,\n private featureFlags: FeatureFlagsService.Interface\n ) {\n this.loadedAssumed = assumePermissionsContext.get();\n makeAutoObservable(this, {}, { autoBind: true });\n\n /*\n * Preload, but only for a page that loaded into a preview. That is the one case where a\n * header control exists to open, and it should open on a ready list rather than a spinner.\n * On the other 99% of page loads nobody is switching roles, so nothing is fetched.\n */\n if (this.loadedAssumed) {\n void this.load();\n }\n }\n\n get vm(): Abstraction.ViewModel {\n const identity = this.identityContext.getIdentity();\n const roleOptions = this.roles.map(toOption);\n const teamOptions = this.teams.map(toOption);\n\n /*\n * The same rule the API enforces in AssumedPermissions: only a caller with full access can\n * preview. The API doesn't refuse anyone else, it quietly keeps their own permissions, so a\n * looser check here would let someone start a \"preview\" whose banner is a lie.\n *\n * While a preview is active the identity carries the previewed role's permissions instead.\n * Whoever started it already passed this check, so an active preview is enough.\n */\n const hasFullAccess = identity.getPermission(\"*\", true) !== null;\n const canAssume = this.loadedAssumed !== null || hasFullAccess;\n\n return {\n loading: this.loading,\n switching: this.switching,\n roleOptions,\n teamOptions,\n assumed: this.loadedAssumed,\n canAssume,\n error: this.error\n };\n }\n\n async load(): Promise<void> {\n const hasOptions = this.roles.length > 0 || this.teams.length > 0;\n\n /*\n * Only show the loader when there is nothing to show yet. Every later call refreshes in the\n * background, so a role or team added since the last time still turns up without the list\n * blanking out first.\n */\n this.startLoading(!hasOptions);\n\n const includeTeams = this.featureFlags\n .getFlags()\n .isEnabled(\"advancedAccessControlLayer.teams\");\n\n try {\n const result = await this.listAssumableTargetsUseCase.execute({ includeTeams });\n this.setEntries(result.roles, result.teams);\n } catch (error) {\n const message = toMessage(error, \"Could not load roles.\");\n this.setError(message);\n } finally {\n this.stopLoading();\n }\n }\n\n async assume(value: string): Promise<void> {\n const entries = [...this.roles, ...this.teams];\n const entry = entries.find(item => optionValue(item) === value);\n\n if (!entry) {\n return;\n }\n\n // From the header control: exiting still returns to where the first preview began.\n await this.switchTo({ type: entry.type, id: entry.id, name: entry.name }, {});\n }\n\n async assumeTarget(target: AssumePermissionsUseCase.Target): Promise<void> {\n // Started from the role or team form, so exiting comes back to it.\n const returnTo = currentPath();\n await this.switchTo(target, { returnTo });\n }\n\n async exit(): Promise<void> {\n await this.switchTo(null, {});\n }\n\n dismissError(): void {\n this.error = null;\n }\n\n private async switchTo(\n target: AssumePermissionsUseCase.Target | null,\n options: AssumePermissionsUseCase.Options\n ): Promise<void> {\n this.startSwitching();\n\n try {\n await this.assumePermissionsUseCase.execute(target, options);\n } catch (error) {\n const message = toMessage(error, \"Could not switch roles.\");\n this.failSwitching(message);\n return;\n }\n\n /*\n * A full reload, not an in-place identity swap. Permission checks such as\n * `createHasPermission` read the identity during render without observing it, and every\n * list fetched under the old role is still cached, so a swap leaves parts of the Admin,\n * such as menus and the dashboard, still showing the previous role. The tenant switcher\n * reaches for a full page load for the same reason.\n *\n * Exiting goes back to the page the preview started from, usually the role form, where the\n * next step is editing what the preview showed was missing.\n *\n * `switching` stays true on purpose: the page is on its way out, and the control should\n * not look ready for another click in the meantime.\n */\n let returnTo: string | undefined;\n if (!target) {\n returnTo = this.loadedAssumed?.returnTo;\n }\n\n leavePage(returnTo);\n }\n\n private startLoading(showLoader: boolean): void {\n this.loading = showLoader;\n this.error = null;\n }\n\n private stopLoading(): void {\n this.loading = false;\n }\n\n private setEntries(roles: AssumableTarget[], teams: AssumableTarget[]): void {\n this.roles = roles;\n this.teams = teams;\n }\n\n private setError(message: string): void {\n this.error = message;\n }\n\n private startSwitching(): void {\n this.switching = true;\n this.error = null;\n }\n\n private failSwitching(message: string): void {\n this.switching = false;\n this.error = message;\n }\n}\n\nexport const AssumePermissionsPresenter = Abstraction.createImplementation({\n implementation: AssumePermissionsPresenterImpl,\n dependencies: [\n AssumePermissionsContext,\n AssumePermissionsUseCase,\n ListAssumableTargetsUseCase,\n IdentityContext,\n FeatureFlagsService\n ]\n});\n"],"names":["optionValue","entry","toOption","currentPath","pathname","search","hash","window","isSameOrigin","path","url","URL","leavePage","returnTo","toMessage","error","fallback","Error","AssumePermissionsPresenterImpl","assumePermissionsContext","assumePermissionsUseCase","listAssumableTargetsUseCase","identityContext","featureFlags","makeAutoObservable","identity","roleOptions","teamOptions","hasFullAccess","canAssume","hasOptions","includeTeams","result","message","value","entries","item","target","options","showLoader","roles","teams","AssumePermissionsPresenter","Abstraction","AssumePermissionsContext","AssumePermissionsUseCase","ListAssumableTargetsUseCase","IdentityContext","FeatureFlagsService"],"mappings":";;;;;AAUA,SAASA,YAAYC,KAAmC;IACpD,OAAO,GAAGA,MAAM,IAAI,CAAC,CAAC,EAAEA,MAAM,EAAE,EAAE;AACtC;AAEA,SAASC,SAASD,KAAsB;IACpC,OAAO;QAAE,OAAOD,YAAYC;QAAQ,OAAOA,MAAM,IAAI;IAAC;AAC1D;AAEA,SAASE;IACL,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGC,OAAO,QAAQ;IAClD,OAAO,GAAGH,WAAWC,SAASC,MAAM;AACxC;AAMA,SAASE,aAAaC,IAAY;IAC9B,MAAMC,MAAM,IAAIC,IAAIF,MAAMF,OAAO,QAAQ,CAAC,MAAM;IAChD,OAAOG,IAAI,MAAM,KAAKH,OAAO,QAAQ,CAAC,MAAM;AAChD;AAEA,SAASK,UAAUC,QAA4B;IAC3C,IAAIA,YAAYL,aAAaK,WAAW,YACpCN,OAAO,QAAQ,CAAC,MAAM,CAACM;IAI3BN,OAAO,QAAQ,CAAC,MAAM;AAC1B;AAEA,SAASO,UAAUC,KAAc,EAAEC,QAAgB;IAC/C,IAAID,iBAAiBE,OACjB,OAAOF,MAAM,OAAO;IAGxB,OAAOC;AACX;AAEA,MAAME;IAeF,YACIC,wBAA4D,EACpDC,wBAA4D,EAC5DC,2BAAkE,EAClEC,eAA0C,EAC1CC,YAA2C,CACrD;aAJUH,wBAAwB,GAAxBA;aACAC,2BAA2B,GAA3BA;aACAC,eAAe,GAAfA;aACAC,YAAY,GAAZA;aAnBJ,OAAO,GAAG;aACV,SAAS,GAAG;aACZ,KAAK,GAAsB,EAAE;aAC7B,KAAK,GAAsB,EAAE;aAC7B,KAAK,GAAkB;QAiB3B,IAAI,CAAC,aAAa,GAAGJ,yBAAyB,GAAG;QACjDK,mBAAmB,IAAI,EAAE,CAAC,GAAG;YAAE,UAAU;QAAK;QAO9C,IAAI,IAAI,CAAC,aAAa,EACb,IAAI,CAAC,IAAI;IAEtB;IAEA,IAAI,KAA4B;QAC5B,MAAMC,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QACjD,MAAMC,cAAc,IAAI,CAAC,KAAK,CAAC,GAAG,CAACxB;QACnC,MAAMyB,cAAc,IAAI,CAAC,KAAK,CAAC,GAAG,CAACzB;QAUnC,MAAM0B,gBAAgBH,AAAsC,SAAtCA,SAAS,aAAa,CAAC,KAAK;QAClD,MAAMI,YAAY,AAAuB,SAAvB,IAAI,CAAC,aAAa,IAAaD;QAEjD,OAAO;YACH,SAAS,IAAI,CAAC,OAAO;YACrB,WAAW,IAAI,CAAC,SAAS;YACzBF;YACAC;YACA,SAAS,IAAI,CAAC,aAAa;YAC3BE;YACA,OAAO,IAAI,CAAC,KAAK;QACrB;IACJ;IAEA,MAAM,OAAsB;QACxB,MAAMC,aAAa,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG;QAOhE,IAAI,CAAC,YAAY,CAAC,CAACA;QAEnB,MAAMC,eAAe,IAAI,CAAC,YAAY,CACjC,QAAQ,GACR,SAAS,CAAC;QAEf,IAAI;YACA,MAAMC,SAAS,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC;gBAAED;YAAa;YAC7E,IAAI,CAAC,UAAU,CAACC,OAAO,KAAK,EAAEA,OAAO,KAAK;QAC9C,EAAE,OAAOjB,OAAO;YACZ,MAAMkB,UAAUnB,UAAUC,OAAO;YACjC,IAAI,CAAC,QAAQ,CAACkB;QAClB,SAAU;YACN,IAAI,CAAC,WAAW;QACpB;IACJ;IAEA,MAAM,OAAOC,KAAa,EAAiB;QACvC,MAAMC,UAAU;eAAI,IAAI,CAAC,KAAK;eAAK,IAAI,CAAC,KAAK;SAAC;QAC9C,MAAMlC,QAAQkC,QAAQ,IAAI,CAACC,CAAAA,OAAQpC,YAAYoC,UAAUF;QAEzD,IAAI,CAACjC,OACD;QAIJ,MAAM,IAAI,CAAC,QAAQ,CAAC;YAAE,MAAMA,MAAM,IAAI;YAAE,IAAIA,MAAM,EAAE;YAAE,MAAMA,MAAM,IAAI;QAAC,GAAG,CAAC;IAC/E;IAEA,MAAM,aAAaoC,MAAuC,EAAiB;QAEvE,MAAMxB,WAAWV;QACjB,MAAM,IAAI,CAAC,QAAQ,CAACkC,QAAQ;YAAExB;QAAS;IAC3C;IAEA,MAAM,OAAsB;QACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC/B;IAEA,eAAqB;QACjB,IAAI,CAAC,KAAK,GAAG;IACjB;IAEA,MAAc,SACVwB,MAA8C,EAC9CC,OAAyC,EAC5B;QACb,IAAI,CAAC,cAAc;QAEnB,IAAI;YACA,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAACD,QAAQC;QACxD,EAAE,OAAOvB,OAAO;YACZ,MAAMkB,UAAUnB,UAAUC,OAAO;YACjC,IAAI,CAAC,aAAa,CAACkB;YACnB;QACJ;QAeA,IAAIpB;QACJ,IAAI,CAACwB,QACDxB,WAAW,IAAI,CAAC,aAAa,EAAE;QAGnCD,UAAUC;IACd;IAEQ,aAAa0B,UAAmB,EAAQ;QAC5C,IAAI,CAAC,OAAO,GAAGA;QACf,IAAI,CAAC,KAAK,GAAG;IACjB;IAEQ,cAAoB;QACxB,IAAI,CAAC,OAAO,GAAG;IACnB;IAEQ,WAAWC,KAAwB,EAAEC,KAAwB,EAAQ;QACzE,IAAI,CAAC,KAAK,GAAGD;QACb,IAAI,CAAC,KAAK,GAAGC;IACjB;IAEQ,SAASR,OAAe,EAAQ;QACpC,IAAI,CAAC,KAAK,GAAGA;IACjB;IAEQ,iBAAuB;QAC3B,IAAI,CAAC,SAAS,GAAG;QACjB,IAAI,CAAC,KAAK,GAAG;IACjB;IAEQ,cAAcA,OAAe,EAAQ;QACzC,IAAI,CAAC,SAAS,GAAG;QACjB,IAAI,CAAC,KAAK,GAAGA;IACjB;AACJ;AAEO,MAAMS,wDAA6BC,2BAAAA,oBAAgC,CAAC;IACvE,gBAAgBzB;IAChB,cAAc;QACV0B;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AssumePermissionsContext } from "../../features/assumePermissions/abstractions.js";
|
|
2
|
+
import type { AssumePermissionsUseCase } from "../../features/assumePermissions/abstractions.js";
|
|
3
|
+
export interface IAssumePermissionsOption {
|
|
4
|
+
value: string;
|
|
5
|
+
label: string;
|
|
6
|
+
}
|
|
7
|
+
export interface IAssumePermissionsViewModel {
|
|
8
|
+
loading: boolean;
|
|
9
|
+
switching: boolean;
|
|
10
|
+
roleOptions: IAssumePermissionsOption[];
|
|
11
|
+
teamOptions: IAssumePermissionsOption[];
|
|
12
|
+
assumed: AssumePermissionsContext.Value | null;
|
|
13
|
+
canAssume: boolean;
|
|
14
|
+
error: string | null;
|
|
15
|
+
}
|
|
16
|
+
export interface IAssumePermissionsPresenter {
|
|
17
|
+
readonly vm: IAssumePermissionsViewModel;
|
|
18
|
+
load(): Promise<void>;
|
|
19
|
+
assume(value: string): Promise<void>;
|
|
20
|
+
assumeTarget(target: AssumePermissionsUseCase.Target): Promise<void>;
|
|
21
|
+
exit(): Promise<void>;
|
|
22
|
+
dismissError(): void;
|
|
23
|
+
}
|
|
24
|
+
export declare const AssumePermissionsPresenter: import("@webiny/di").Abstraction<IAssumePermissionsPresenter>;
|
|
25
|
+
export declare namespace AssumePermissionsPresenter {
|
|
26
|
+
type Interface = IAssumePermissionsPresenter;
|
|
27
|
+
type ViewModel = IAssumePermissionsViewModel;
|
|
28
|
+
type Option = IAssumePermissionsOption;
|
|
29
|
+
type Target = AssumePermissionsUseCase.Target;
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/assumePermissions/abstractions.js","sources":["../../../src/presentation/assumePermissions/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { AssumePermissionsContext } from \"~/features/assumePermissions/abstractions.js\";\nimport type { AssumePermissionsUseCase } from \"~/features/assumePermissions/abstractions.js\";\n\nexport interface IAssumePermissionsOption {\n // `${type}:${id}`, so a single string identifies an option across both lists.\n value: string;\n label: string;\n}\n\nexport interface IAssumePermissionsViewModel {\n loading: boolean;\n switching: boolean;\n roleOptions: IAssumePermissionsOption[];\n teamOptions: IAssumePermissionsOption[];\n assumed: AssumePermissionsContext.Value | null;\n // Whether the signed-in user may start a preview at all. Mirrors the API's own rule.\n canAssume: boolean;\n error: string | null;\n}\n\nexport interface IAssumePermissionsPresenter {\n readonly vm: IAssumePermissionsViewModel;\n load(): Promise<void>;\n // Picks one of the loaded options by its `value`. Does nothing before `load()` has run.\n assume(value: string): Promise<void>;\n // Previews a role or team the caller already knows, such as the one open in its edit form.\n assumeTarget(target: AssumePermissionsUseCase.Target): Promise<void>;\n exit(): Promise<void>;\n dismissError(): void;\n}\n\nexport const AssumePermissionsPresenter = createAbstraction<IAssumePermissionsPresenter>(\n \"AssumePermissionsPresenter\"\n);\n\nexport namespace AssumePermissionsPresenter {\n export type Interface = IAssumePermissionsPresenter;\n export type ViewModel = IAssumePermissionsViewModel;\n export type Option = IAssumePermissionsOption;\n export type Target = AssumePermissionsUseCase.Target;\n}\n"],"names":["AssumePermissionsPresenter","createAbstraction"],"mappings":";AAgCO,MAAMA,6BAA6BC,kBACtC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { AssumePermissionsPresenter } from "../abstractions.js";
|
|
3
|
+
interface AssumePermissionsButtonProps {
|
|
4
|
+
target: AssumePermissionsPresenter.Target | null;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* "View as this role" in the role and team forms. This is where a preview starts: next to where the
|
|
8
|
+
* permissions are edited. Success reloads the page, so the only outcome this has to show is a
|
|
9
|
+
* failure.
|
|
10
|
+
*/
|
|
11
|
+
export declare const AssumePermissionsButton: (({ target }: AssumePermissionsButtonProps) => React.JSX.Element | null) & React.NamedExoticComponent<AssumePermissionsButtonProps> & {
|
|
12
|
+
readonly type: ({ target }: AssumePermissionsButtonProps) => React.JSX.Element | null;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { useFeature } from "@webiny/app";
|
|
3
|
+
import { Button, Tooltip } from "@webiny/admin-ui";
|
|
4
|
+
import { ReactComponent } from "@webiny/icons/visibility.svg";
|
|
5
|
+
import { createReactiveComponent } from "../../createReactiveComponent.js";
|
|
6
|
+
import { useSnackbar } from "../../../hooks/useSnackbar.js";
|
|
7
|
+
import { AssumePermissionsPresenterFeature } from "../feature.js";
|
|
8
|
+
function tooltipText(type) {
|
|
9
|
+
return `Reloads the Admin with only this ${type}'s permissions, so you see what its users see. Exit from the banner at the top. Anything you save while previewing is saved for real.`;
|
|
10
|
+
}
|
|
11
|
+
const AssumePermissionsButton = createReactiveComponent(({ target })=>{
|
|
12
|
+
const { presenter } = useFeature(AssumePermissionsPresenterFeature);
|
|
13
|
+
const { showSnackbar } = useSnackbar();
|
|
14
|
+
const vm = presenter.vm;
|
|
15
|
+
if (!target || !vm.canAssume) return null;
|
|
16
|
+
const isAssumed = vm.assumed?.type === target.type && vm.assumed.id === target.id;
|
|
17
|
+
let text = `View as this ${target.type}`;
|
|
18
|
+
if (isAssumed) text = `Viewing as this ${target.type}`;
|
|
19
|
+
const assume = async ()=>{
|
|
20
|
+
await presenter.assumeTarget(target);
|
|
21
|
+
if (presenter.vm.error) {
|
|
22
|
+
showSnackbar(presenter.vm.error);
|
|
23
|
+
presenter.dismissError();
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const button = /*#__PURE__*/ react.createElement(Button, {
|
|
27
|
+
variant: "ghost",
|
|
28
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
29
|
+
text: text,
|
|
30
|
+
disabled: vm.switching || isAssumed,
|
|
31
|
+
onClick: assume,
|
|
32
|
+
"data-testid": "admin.am.view-as"
|
|
33
|
+
});
|
|
34
|
+
if (isAssumed) return button;
|
|
35
|
+
return /*#__PURE__*/ react.createElement(Tooltip, {
|
|
36
|
+
content: tooltipText(target.type),
|
|
37
|
+
trigger: button
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
export { AssumePermissionsButton };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=AssumePermissionsButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/assumePermissions/components/AssumePermissionsButton.js","sources":["../../../../src/presentation/assumePermissions/components/AssumePermissionsButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { useFeature } from \"@webiny/app\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { Tooltip } from \"@webiny/admin-ui\";\nimport { ReactComponent as VisibilityIcon } from \"@webiny/icons/visibility.svg\";\nimport { createReactiveComponent } from \"~/presentation/createReactiveComponent.js\";\nimport { useSnackbar } from \"~/hooks/useSnackbar.js\";\nimport { AssumePermissionsPresenterFeature } from \"../feature.js\";\nimport type { AssumePermissionsPresenter } from \"../abstractions.js\";\n\n/*\n * What happens on click, said before the click. The last sentence matters most: a preview is not a\n * sandbox, so anything the role is allowed to save is saved for real.\n */\nfunction tooltipText(type: AssumePermissionsPresenter.Target[\"type\"]): string {\n return `Reloads the Admin with only this ${type}'s permissions, so you see what its users see. Exit from the banner at the top. Anything you save while previewing is saved for real.`;\n}\n\ninterface AssumePermissionsButtonProps {\n // The saved role or team open in the form. `null` while the record is new or still loading.\n target: AssumePermissionsPresenter.Target | null;\n}\n\n/**\n * \"View as this role\" in the role and team forms. This is where a preview starts: next to where the\n * permissions are edited. Success reloads the page, so the only outcome this has to show is a\n * failure.\n */\nexport const AssumePermissionsButton = createReactiveComponent(\n ({ target }: AssumePermissionsButtonProps) => {\n const { presenter } = useFeature(AssumePermissionsPresenterFeature);\n const { showSnackbar } = useSnackbar();\n const vm = presenter.vm;\n\n if (!target || !vm.canAssume) {\n return null;\n }\n\n const isAssumed = vm.assumed?.type === target.type && vm.assumed.id === target.id;\n\n // Already previewing this one: say so, rather than leave a dead button with no reason.\n let text = `View as this ${target.type}`;\n if (isAssumed) {\n text = `Viewing as this ${target.type}`;\n }\n\n const assume = async () => {\n await presenter.assumeTarget(target);\n\n if (presenter.vm.error) {\n showSnackbar(presenter.vm.error);\n presenter.dismissError();\n }\n };\n\n const button = (\n <Button\n variant={\"ghost\"}\n icon={<VisibilityIcon />}\n text={text}\n disabled={vm.switching || isAssumed}\n onClick={assume}\n data-testid={\"admin.am.view-as\"}\n />\n );\n\n // The label already explains a disabled button, and a disabled button gets no hover anyway.\n if (isAssumed) {\n return button;\n }\n\n return <Tooltip content={tooltipText(target.type)} trigger={button} />;\n }\n);\n"],"names":["tooltipText","type","AssumePermissionsButton","createReactiveComponent","target","presenter","useFeature","AssumePermissionsPresenterFeature","showSnackbar","useSnackbar","vm","isAssumed","text","assume","button","Button","VisibilityIcon","Tooltip"],"mappings":";;;;;;;AAcA,SAASA,YAAYC,IAA+C;IAChE,OAAO,CAAC,iCAAiC,EAAEA,KAAK,qIAAqI,CAAC;AAC1L;AAYO,MAAMC,0BAA0BC,wBACnC,CAAC,EAAEC,MAAM,EAAgC;IACrC,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACjC,MAAM,EAAEC,YAAY,EAAE,GAAGC;IACzB,MAAMC,KAAKL,UAAU,EAAE;IAEvB,IAAI,CAACD,UAAU,CAACM,GAAG,SAAS,EACxB,OAAO;IAGX,MAAMC,YAAYD,GAAG,OAAO,EAAE,SAASN,OAAO,IAAI,IAAIM,GAAG,OAAO,CAAC,EAAE,KAAKN,OAAO,EAAE;IAGjF,IAAIQ,OAAO,CAAC,aAAa,EAAER,OAAO,IAAI,EAAE;IACxC,IAAIO,WACAC,OAAO,CAAC,gBAAgB,EAAER,OAAO,IAAI,EAAE;IAG3C,MAAMS,SAAS;QACX,MAAMR,UAAU,YAAY,CAACD;QAE7B,IAAIC,UAAU,EAAE,CAAC,KAAK,EAAE;YACpBG,aAAaH,UAAU,EAAE,CAAC,KAAK;YAC/BA,UAAU,YAAY;QAC1B;IACJ;IAEA,MAAMS,SAAS,WAATA,GACF,oBAACC,QAAMA;QACH,SAAS;QACT,oBAAM,oBAACC,gBAAcA;QACrB,MAAMJ;QACN,UAAUF,GAAG,SAAS,IAAIC;QAC1B,SAASE;QACT,eAAa;;IAKrB,IAAIF,WACA,OAAOG;IAGX,OAAO,WAAP,GAAO,oBAACG,SAAOA;QAAC,SAASjB,YAAYI,OAAO,IAAI;QAAG,SAASU;;AAChE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Shows the preview banner for as long as a preview is active. It is deliberately not dismissible:
|
|
4
|
+
* writes fail while previewing, and someone who has lost the banner has no way to explain why.
|
|
5
|
+
*
|
|
6
|
+
* Mounted outside every permission gate, because the previewed role usually cannot see the menu
|
|
7
|
+
* the preview was started from. Leaving it behind a gate would strand the user.
|
|
8
|
+
*/
|
|
9
|
+
export declare const AssumedPermissionsBanner: (() => React.JSX.Element | null) & React.NamedExoticComponent<unknown> & {
|
|
10
|
+
readonly type: () => React.JSX.Element | null;
|
|
11
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { useFeature } from "@webiny/app";
|
|
3
|
+
import { createReactiveComponent } from "../../createReactiveComponent.js";
|
|
4
|
+
import { Banner } from "../../banners/components/Banner.js";
|
|
5
|
+
import { AssumePermissionsPresenterFeature } from "../feature.js";
|
|
6
|
+
const AssumedPermissionsBanner = createReactiveComponent(()=>{
|
|
7
|
+
const { presenter } = useFeature(AssumePermissionsPresenterFeature);
|
|
8
|
+
const { assumed, switching } = presenter.vm;
|
|
9
|
+
if (!assumed) return null;
|
|
10
|
+
const action = {
|
|
11
|
+
label: "Exit preview",
|
|
12
|
+
disabled: switching,
|
|
13
|
+
onClick: presenter.exit
|
|
14
|
+
};
|
|
15
|
+
return /*#__PURE__*/ react.createElement(Banner, {
|
|
16
|
+
id: "assume-permissions",
|
|
17
|
+
variant: "warning",
|
|
18
|
+
title: `Viewing the Admin as the ${assumed.name} ${assumed.type}.`,
|
|
19
|
+
message: `Permissions are enforced as this ${assumed.type}, so anything you are not allowed to do will fail.`,
|
|
20
|
+
action: action
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
export { AssumedPermissionsBanner };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=AssumedPermissionsBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/assumePermissions/components/AssumedPermissionsBanner.js","sources":["../../../../src/presentation/assumePermissions/components/AssumedPermissionsBanner.tsx"],"sourcesContent":["import React from \"react\";\nimport { useFeature } from \"@webiny/app\";\nimport { createReactiveComponent } from \"~/presentation/createReactiveComponent.js\";\nimport { Banner } from \"~/presentation/banners/components/Banner.js\";\nimport { AssumePermissionsPresenterFeature } from \"../feature.js\";\n\n/**\n * Shows the preview banner for as long as a preview is active. It is deliberately not dismissible:\n * writes fail while previewing, and someone who has lost the banner has no way to explain why.\n *\n * Mounted outside every permission gate, because the previewed role usually cannot see the menu\n * the preview was started from. Leaving it behind a gate would strand the user.\n */\nexport const AssumedPermissionsBanner = createReactiveComponent(() => {\n const { presenter } = useFeature(AssumePermissionsPresenterFeature);\n const { assumed, switching } = presenter.vm;\n\n if (!assumed) {\n return null;\n }\n\n const action = { label: \"Exit preview\", disabled: switching, onClick: presenter.exit };\n\n return (\n <Banner\n id={\"assume-permissions\"}\n variant={\"warning\"}\n title={`Viewing the Admin as the ${assumed.name} ${assumed.type}.`}\n message={`Permissions are enforced as this ${assumed.type}, so anything you are not allowed to do will fail.`}\n action={action}\n />\n );\n});\n"],"names":["AssumedPermissionsBanner","createReactiveComponent","presenter","useFeature","AssumePermissionsPresenterFeature","assumed","switching","action","Banner"],"mappings":";;;;;AAaO,MAAMA,2BAA2BC,wBAAwB;IAC5D,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACjC,MAAM,EAAEC,OAAO,EAAEC,SAAS,EAAE,GAAGJ,UAAU,EAAE;IAE3C,IAAI,CAACG,SACD,OAAO;IAGX,MAAME,SAAS;QAAE,OAAO;QAAgB,UAAUD;QAAW,SAASJ,UAAU,IAAI;IAAC;IAErF,OAAO,WAAP,GACI,oBAACM,QAAMA;QACH,IAAI;QACJ,SAAS;QACT,OAAO,CAAC,yBAAyB,EAAEH,QAAQ,IAAI,CAAC,CAAC,EAAEA,QAAQ,IAAI,CAAC,CAAC,CAAC;QAClE,SAAS,CAAC,iCAAiC,EAAEA,QAAQ,IAAI,CAAC,kDAAkD,CAAC;QAC7G,QAAQE;;AAGpB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import react, { useState } from "react";
|
|
2
|
+
import { createReactiveComponent } from "../../createReactiveComponent.js";
|
|
3
|
+
import { useFeature } from "@webiny/app";
|
|
4
|
+
import { DropdownMenu, Icon, useToast } from "@webiny/admin-ui";
|
|
5
|
+
import { ReactComponent } from "@webiny/icons/visibility.svg";
|
|
6
|
+
import { AssumedPermissionsSelector as AssumedPermissionsSelector_js_AssumedPermissionsSelector } from "../../../base/ui/AssumedPermissionsSelector.js";
|
|
7
|
+
import { AssumePermissionsPresenterFeature } from "../feature.js";
|
|
8
|
+
const renderGroup = (label, options, onPick)=>{
|
|
9
|
+
if (0 === options.length) return null;
|
|
10
|
+
return /*#__PURE__*/ react.createElement(DropdownMenu.Group, {
|
|
11
|
+
key: label
|
|
12
|
+
}, /*#__PURE__*/ react.createElement(DropdownMenu.Label, {
|
|
13
|
+
text: label
|
|
14
|
+
}), options.map((option)=>/*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
15
|
+
key: option.value,
|
|
16
|
+
text: option.label,
|
|
17
|
+
onClick: ()=>onPick(option.value)
|
|
18
|
+
})));
|
|
19
|
+
};
|
|
20
|
+
const AssumedPermissionsSelectorView = createReactiveComponent(()=>{
|
|
21
|
+
const { presenter } = useFeature(AssumePermissionsPresenterFeature);
|
|
22
|
+
const toast = useToast();
|
|
23
|
+
const vm = presenter.vm;
|
|
24
|
+
const [opened, setOpened] = useState(false);
|
|
25
|
+
if (!vm.assumed) return null;
|
|
26
|
+
const reportError = ()=>{
|
|
27
|
+
if (!presenter.vm.error) return;
|
|
28
|
+
toast.showWarningToast({
|
|
29
|
+
title: presenter.vm.error
|
|
30
|
+
});
|
|
31
|
+
presenter.dismissError();
|
|
32
|
+
};
|
|
33
|
+
const onOpenChange = (open)=>{
|
|
34
|
+
setOpened(open);
|
|
35
|
+
if (open) presenter.load();
|
|
36
|
+
};
|
|
37
|
+
const pick = async (value)=>{
|
|
38
|
+
await presenter.assume(value);
|
|
39
|
+
reportError();
|
|
40
|
+
};
|
|
41
|
+
const exit = async ()=>{
|
|
42
|
+
await presenter.exit();
|
|
43
|
+
reportError();
|
|
44
|
+
};
|
|
45
|
+
return /*#__PURE__*/ react.createElement(DropdownMenu, {
|
|
46
|
+
open: opened,
|
|
47
|
+
onOpenChange: onOpenChange,
|
|
48
|
+
className: "w-[240px]",
|
|
49
|
+
trigger: /*#__PURE__*/ react.createElement("div", {
|
|
50
|
+
className: "flex items-center gap-x-xs cursor-pointer",
|
|
51
|
+
"data-testid": "assumed-permissions-selector"
|
|
52
|
+
}, /*#__PURE__*/ react.createElement(Icon, {
|
|
53
|
+
label: "Previewing as",
|
|
54
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
55
|
+
className: "fill-neutral-xstrong"
|
|
56
|
+
}), vm.assumed.name)
|
|
57
|
+
}, /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
58
|
+
text: "Exit preview",
|
|
59
|
+
onClick: exit,
|
|
60
|
+
disabled: vm.switching
|
|
61
|
+
}), /*#__PURE__*/ react.createElement(DropdownMenu.Separator, null), renderGroup("Roles", vm.roleOptions, pick), renderGroup("Teams", vm.teamOptions, pick));
|
|
62
|
+
});
|
|
63
|
+
const AssumedPermissionsSelector_AssumedPermissionsSelector = AssumedPermissionsSelector_js_AssumedPermissionsSelector.createDecorator(()=>function() {
|
|
64
|
+
return /*#__PURE__*/ react.createElement(AssumedPermissionsSelectorView, null);
|
|
65
|
+
});
|
|
66
|
+
export { AssumedPermissionsSelector_AssumedPermissionsSelector as AssumedPermissionsSelector };
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=AssumedPermissionsSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/assumePermissions/components/AssumedPermissionsSelector.js","sources":["../../../../src/presentation/assumePermissions/components/AssumedPermissionsSelector.tsx"],"sourcesContent":["import React from \"react\";\nimport { useState } from \"react\";\nimport { createReactiveComponent } from \"~/presentation/createReactiveComponent.js\";\nimport { useFeature } from \"@webiny/app\";\nimport { DropdownMenu } from \"@webiny/admin-ui\";\nimport { Icon } from \"@webiny/admin-ui\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { ReactComponent as VisibilityIcon } from \"@webiny/icons/visibility.svg\";\nimport { AssumedPermissionsSelector as BaseAssumedPermissionsSelector } from \"~/base/ui/AssumedPermissionsSelector.js\";\nimport { AssumePermissionsPresenterFeature } from \"../feature.js\";\nimport type { AssumePermissionsPresenter } from \"../abstractions.js\";\n\nconst renderGroup = (\n label: string,\n options: AssumePermissionsPresenter.Option[],\n onPick: (value: string) => void\n) => {\n if (options.length === 0) {\n return null;\n }\n\n return (\n <DropdownMenu.Group key={label}>\n <DropdownMenu.Label text={label} />\n {options.map(option => (\n <DropdownMenu.Item\n key={option.value}\n text={option.label}\n onClick={() => onPick(option.value)}\n />\n ))}\n </DropdownMenu.Group>\n );\n};\n\n/**\n * Shown only while a preview is active, so that comparing two roles is one click rather than\n * exiting and opening the next role's form. When nothing is being previewed this renders nothing\n * and the role and team forms are the way in, which keeps a feature used on setup days out of the\n * header on every other day.\n *\n * The options are already loaded by the time this can be opened: the presenter preloads them on\n * page load, but only when the page loaded into a preview.\n */\nconst AssumedPermissionsSelectorView = createReactiveComponent(() => {\n const { presenter } = useFeature(AssumePermissionsPresenterFeature);\n const toast = useToast();\n const vm = presenter.vm;\n\n const [opened, setOpened] = useState(false);\n\n if (!vm.assumed) {\n return null;\n }\n\n const reportError = () => {\n if (!presenter.vm.error) {\n return;\n }\n\n toast.showWarningToast({ title: presenter.vm.error });\n presenter.dismissError();\n };\n\n const onOpenChange = (open: boolean) => {\n setOpened(open);\n\n if (open) {\n // Refreshes in the background; the list stays on screen while it does.\n presenter.load();\n }\n };\n\n const pick = async (value: string) => {\n await presenter.assume(value);\n reportError();\n };\n\n const exit = async () => {\n await presenter.exit();\n reportError();\n };\n\n return (\n <DropdownMenu\n open={opened}\n onOpenChange={onOpenChange}\n className={\"w-[240px]\"}\n trigger={\n <div\n className={\"flex items-center gap-x-xs cursor-pointer\"}\n data-testid={\"assumed-permissions-selector\"}\n >\n <Icon\n label={\"Previewing as\"}\n icon={<VisibilityIcon />}\n className={\"fill-neutral-xstrong\"}\n />\n {vm.assumed.name}\n </div>\n }\n >\n <DropdownMenu.Item text={\"Exit preview\"} onClick={exit} disabled={vm.switching} />\n <DropdownMenu.Separator />\n {renderGroup(\"Roles\", vm.roleOptions, pick)}\n {renderGroup(\"Teams\", vm.teamOptions, pick)}\n </DropdownMenu>\n );\n});\n\nexport const AssumedPermissionsSelector = BaseAssumedPermissionsSelector.createDecorator(() => {\n return function AssumedPermissionsSelector() {\n return <AssumedPermissionsSelectorView />;\n };\n});\n"],"names":["renderGroup","label","options","onPick","DropdownMenu","option","AssumedPermissionsSelectorView","createReactiveComponent","presenter","useFeature","AssumePermissionsPresenterFeature","toast","useToast","vm","opened","setOpened","useState","reportError","onOpenChange","open","pick","value","exit","Icon","VisibilityIcon","AssumedPermissionsSelector","BaseAssumedPermissionsSelector"],"mappings":";;;;;;;AAYA,MAAMA,cAAc,CAChBC,OACAC,SACAC;IAEA,IAAID,AAAmB,MAAnBA,QAAQ,MAAM,EACd,OAAO;IAGX,OAAO,WAAP,GACI,oBAACE,aAAa,KAAK;QAAC,KAAKH;qBACrB,oBAACG,aAAa,KAAK;QAAC,MAAMH;QACzBC,QAAQ,GAAG,CAACG,CAAAA,SAAAA,WAAAA,GACT,oBAACD,aAAa,IAAI;YACd,KAAKC,OAAO,KAAK;YACjB,MAAMA,OAAO,KAAK;YAClB,SAAS,IAAMF,OAAOE,OAAO,KAAK;;AAKtD;AAWA,MAAMC,iCAAiCC,wBAAwB;IAC3D,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACjC,MAAMC,QAAQC;IACd,MAAMC,KAAKL,UAAU,EAAE;IAEvB,MAAM,CAACM,QAAQC,UAAU,GAAGC,SAAS;IAErC,IAAI,CAACH,GAAG,OAAO,EACX,OAAO;IAGX,MAAMI,cAAc;QAChB,IAAI,CAACT,UAAU,EAAE,CAAC,KAAK,EACnB;QAGJG,MAAM,gBAAgB,CAAC;YAAE,OAAOH,UAAU,EAAE,CAAC,KAAK;QAAC;QACnDA,UAAU,YAAY;IAC1B;IAEA,MAAMU,eAAe,CAACC;QAClBJ,UAAUI;QAEV,IAAIA,MAEAX,UAAU,IAAI;IAEtB;IAEA,MAAMY,OAAO,OAAOC;QAChB,MAAMb,UAAU,MAAM,CAACa;QACvBJ;IACJ;IAEA,MAAMK,OAAO;QACT,MAAMd,UAAU,IAAI;QACpBS;IACJ;IAEA,OAAO,WAAP,GACI,oBAACb,cAAYA;QACT,MAAMU;QACN,cAAcI;QACd,WAAW;QACX,uBACI,oBAAC;YACG,WAAW;YACX,eAAa;yBAEb,oBAACK,MAAIA;YACD,OAAO;YACP,oBAAM,oBAACC,gBAAcA;YACrB,WAAW;YAEdX,GAAG,OAAO,CAAC,IAAI;qBAIxB,oBAACT,aAAa,IAAI;QAAC,MAAM;QAAgB,SAASkB;QAAM,UAAUT,GAAG,SAAS;sBAC9E,oBAACT,aAAa,SAAS,SACtBJ,YAAY,SAASa,GAAG,WAAW,EAAEO,OACrCpB,YAAY,SAASa,GAAG,WAAW,EAAEO;AAGlD;AAEO,MAAMK,wDAA6BC,yDAAAA,eAA8C,CAAC,IAC9E;QACH,OAAO,WAAP,GAAO,oBAACpB,gCAA8BA;IAC1C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { AssumePermissionsPresenter } from "./abstractions.js";
|
|
3
|
+
import { AssumePermissionsPresenter as external_AssumePermissionsPresenter_js_AssumePermissionsPresenter } from "./AssumePermissionsPresenter.js";
|
|
4
|
+
const AssumePermissionsPresenterFeature = createFeature({
|
|
5
|
+
name: "AssumePermissionsPresenter",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.register(external_AssumePermissionsPresenter_js_AssumePermissionsPresenter).inSingletonScope();
|
|
8
|
+
},
|
|
9
|
+
resolve (container) {
|
|
10
|
+
return {
|
|
11
|
+
presenter: container.resolve(AssumePermissionsPresenter)
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
export { AssumePermissionsPresenterFeature };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/assumePermissions/feature.js","sources":["../../../src/presentation/assumePermissions/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { AssumePermissionsPresenter as Abstraction } from \"./abstractions.js\";\nimport { AssumePermissionsPresenter } from \"./AssumePermissionsPresenter.js\";\n\nexport const AssumePermissionsPresenterFeature = createFeature({\n name: \"AssumePermissionsPresenter\",\n register(container) {\n container.register(AssumePermissionsPresenter).inSingletonScope();\n },\n resolve(container) {\n return {\n presenter: container.resolve(Abstraction)\n };\n }\n});\n"],"names":["AssumePermissionsPresenterFeature","createFeature","container","AssumePermissionsPresenter","Abstraction"],"mappings":";;;AAIO,MAAMA,oCAAoCC,cAAc;IAC3D,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,mEAA4B,gBAAgB;IACnE;IACA,SAAQD,SAAS;QACb,OAAO;YACH,WAAWA,UAAU,OAAO,CAACE;QACjC;IACJ;AACJ"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { AssumePermissionsPresenter } from "./abstractions.js";
|
|
2
|
+
export { AssumePermissionsPresenterFeature } from "./feature.js";
|
|
3
|
+
export { AssumedPermissionsBanner } from "./components/AssumedPermissionsBanner.js";
|
|
4
|
+
export { AssumedPermissionsSelector } from "./components/AssumedPermissionsSelector.js";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { AssumePermissionsPresenter } from "./abstractions.js";
|
|
2
|
+
export { AssumePermissionsPresenterFeature } from "./feature.js";
|
|
3
|
+
export { AssumedPermissionsBanner } from "./components/AssumedPermissionsBanner.js";
|
|
4
|
+
export { AssumedPermissionsSelector } from "./components/AssumedPermissionsSelector.js";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Banners } from "../../features/banners/abstractions.js";
|
|
2
|
+
import { BannersPresenter as Abstraction } from "./abstractions.js";
|
|
3
|
+
declare class BannersPresenterImpl implements Abstraction.Interface {
|
|
4
|
+
private banners;
|
|
5
|
+
constructor(banners: Banners.Interface);
|
|
6
|
+
get vm(): Abstraction.ViewModel;
|
|
7
|
+
runAction(): void;
|
|
8
|
+
dismiss(): void;
|
|
9
|
+
private get current();
|
|
10
|
+
}
|
|
11
|
+
export declare const BannersPresenter: typeof BannersPresenterImpl & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IBannersPresenter>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { makeAutoObservable } from "mobx";
|
|
2
|
+
import { Banners } from "../../features/banners/abstractions.js";
|
|
3
|
+
import { BannersPresenter } from "./abstractions.js";
|
|
4
|
+
const SEVERITY = {
|
|
5
|
+
info: 0,
|
|
6
|
+
success: 1,
|
|
7
|
+
warning: 2,
|
|
8
|
+
error: 3
|
|
9
|
+
};
|
|
10
|
+
function pickBanner(banners) {
|
|
11
|
+
let picked = null;
|
|
12
|
+
for (const banner of banners)if (!picked || SEVERITY[banner.variant] >= SEVERITY[picked.variant]) picked = banner;
|
|
13
|
+
return picked;
|
|
14
|
+
}
|
|
15
|
+
function toViewModel(banner) {
|
|
16
|
+
return {
|
|
17
|
+
id: banner.id,
|
|
18
|
+
variant: banner.variant,
|
|
19
|
+
title: banner.title ?? null,
|
|
20
|
+
message: banner.message,
|
|
21
|
+
dismissible: banner.dismissible ?? false,
|
|
22
|
+
actionLabel: banner.action?.label ?? null,
|
|
23
|
+
actionDisabled: banner.action?.disabled ?? false
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
class BannersPresenterImpl {
|
|
27
|
+
constructor(banners){
|
|
28
|
+
this.banners = banners;
|
|
29
|
+
makeAutoObservable(this);
|
|
30
|
+
}
|
|
31
|
+
get vm() {
|
|
32
|
+
const banner = this.current;
|
|
33
|
+
if (!banner) return {
|
|
34
|
+
banner: null
|
|
35
|
+
};
|
|
36
|
+
return {
|
|
37
|
+
banner: toViewModel(banner)
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
runAction() {
|
|
41
|
+
this.current?.action?.onClick();
|
|
42
|
+
}
|
|
43
|
+
dismiss() {
|
|
44
|
+
const banner = this.current;
|
|
45
|
+
if (banner) this.banners.dismiss(banner.id);
|
|
46
|
+
}
|
|
47
|
+
get current() {
|
|
48
|
+
const banners = this.banners.getBanners();
|
|
49
|
+
return pickBanner(banners);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const BannersPresenter_BannersPresenter = BannersPresenter.createImplementation({
|
|
53
|
+
implementation: BannersPresenterImpl,
|
|
54
|
+
dependencies: [
|
|
55
|
+
Banners
|
|
56
|
+
]
|
|
57
|
+
});
|
|
58
|
+
export { BannersPresenter_BannersPresenter as BannersPresenter };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=BannersPresenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/banners/BannersPresenter.js","sources":["../../../src/presentation/banners/BannersPresenter.ts"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\nimport { Banners } from \"~/features/banners/abstractions.js\";\nimport { BannersPresenter as Abstraction } from \"./abstractions.js\";\n\nconst SEVERITY: Record<Banners.Variant, number> = {\n info: 0,\n success: 1,\n warning: 2,\n error: 3\n};\n\n// The most severe banner, and the most recently shown one among equally severe banners.\nfunction pickBanner(banners: Banners.Banner[]): Banners.Banner | null {\n let picked: Banners.Banner | null = null;\n\n for (const banner of banners) {\n if (!picked || SEVERITY[banner.variant] >= SEVERITY[picked.variant]) {\n picked = banner;\n }\n }\n\n return picked;\n}\n\nfunction toViewModel(banner: Banners.Banner): Abstraction.Banner {\n return {\n id: banner.id,\n variant: banner.variant,\n title: banner.title ?? null,\n message: banner.message,\n dismissible: banner.dismissible ?? false,\n actionLabel: banner.action?.label ?? null,\n actionDisabled: banner.action?.disabled ?? false\n };\n}\n\nclass BannersPresenterImpl implements Abstraction.Interface {\n constructor(private banners: Banners.Interface) {\n makeAutoObservable(this);\n }\n\n get vm(): Abstraction.ViewModel {\n const banner = this.current;\n if (!banner) {\n return { banner: null };\n }\n\n return { banner: toViewModel(banner) };\n }\n\n runAction(): void {\n this.current?.action?.onClick();\n }\n\n dismiss(): void {\n const banner = this.current;\n if (banner) {\n this.banners.dismiss(banner.id);\n }\n }\n\n private get current(): Banners.Banner | null {\n const banners = this.banners.getBanners();\n return pickBanner(banners);\n }\n}\n\nexport const BannersPresenter = Abstraction.createImplementation({\n implementation: BannersPresenterImpl,\n dependencies: [Banners]\n});\n"],"names":["SEVERITY","pickBanner","banners","picked","banner","toViewModel","BannersPresenterImpl","makeAutoObservable","BannersPresenter","Abstraction","Banners"],"mappings":";;;AAIA,MAAMA,WAA4C;IAC9C,MAAM;IACN,SAAS;IACT,SAAS;IACT,OAAO;AACX;AAGA,SAASC,WAAWC,OAAyB;IACzC,IAAIC,SAAgC;IAEpC,KAAK,MAAMC,UAAUF,QACjB,IAAI,CAACC,UAAUH,QAAQ,CAACI,OAAO,OAAO,CAAC,IAAIJ,QAAQ,CAACG,OAAO,OAAO,CAAC,EAC/DA,SAASC;IAIjB,OAAOD;AACX;AAEA,SAASE,YAAYD,MAAsB;IACvC,OAAO;QACH,IAAIA,OAAO,EAAE;QACb,SAASA,OAAO,OAAO;QACvB,OAAOA,OAAO,KAAK,IAAI;QACvB,SAASA,OAAO,OAAO;QACvB,aAAaA,OAAO,WAAW,IAAI;QACnC,aAAaA,OAAO,MAAM,EAAE,SAAS;QACrC,gBAAgBA,OAAO,MAAM,EAAE,YAAY;IAC/C;AACJ;AAEA,MAAME;IACF,YAAoBJ,OAA0B,CAAE;aAA5BA,OAAO,GAAPA;QAChBK,mBAAmB,IAAI;IAC3B;IAEA,IAAI,KAA4B;QAC5B,MAAMH,SAAS,IAAI,CAAC,OAAO;QAC3B,IAAI,CAACA,QACD,OAAO;YAAE,QAAQ;QAAK;QAG1B,OAAO;YAAE,QAAQC,YAAYD;QAAQ;IACzC;IAEA,YAAkB;QACd,IAAI,CAAC,OAAO,EAAE,QAAQ;IAC1B;IAEA,UAAgB;QACZ,MAAMA,SAAS,IAAI,CAAC,OAAO;QAC3B,IAAIA,QACA,IAAI,CAAC,OAAO,CAAC,OAAO,CAACA,OAAO,EAAE;IAEtC;IAEA,IAAY,UAAiC;QACzC,MAAMF,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU;QACvC,OAAOD,WAAWC;IACtB;AACJ;AAEO,MAAMM,oCAAmBC,iBAAAA,oBAAgC,CAAC;IAC7D,gBAAgBH;IAChB,cAAc;QAACI;KAAQ;AAC3B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Banners } from "../../features/banners/abstractions.js";
|
|
2
|
+
export interface IBannerViewModel {
|
|
3
|
+
id: string;
|
|
4
|
+
variant: Banners.Variant;
|
|
5
|
+
title: string | null;
|
|
6
|
+
message: string;
|
|
7
|
+
dismissible: boolean;
|
|
8
|
+
actionLabel: string | null;
|
|
9
|
+
actionDisabled: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface IBannersViewModel {
|
|
12
|
+
banner: IBannerViewModel | null;
|
|
13
|
+
}
|
|
14
|
+
export interface IBannersPresenter {
|
|
15
|
+
readonly vm: IBannersViewModel;
|
|
16
|
+
runAction(): void;
|
|
17
|
+
dismiss(): void;
|
|
18
|
+
}
|
|
19
|
+
export declare const BannersPresenter: import("@webiny/di").Abstraction<IBannersPresenter>;
|
|
20
|
+
export declare namespace BannersPresenter {
|
|
21
|
+
type Interface = IBannersPresenter;
|
|
22
|
+
type ViewModel = IBannersViewModel;
|
|
23
|
+
type Banner = IBannerViewModel;
|
|
24
|
+
}
|