diff --git a/portal-ui/src/screens/Console/Account/NotificationEndpointTypeSelectorHelpBox.tsx b/portal-ui/src/screens/Console/Account/NotificationEndpointTypeSelectorHelpBox.tsx
index 0df50604f..23cddf9d1 100644
--- a/portal-ui/src/screens/Console/Account/NotificationEndpointTypeSelectorHelpBox.tsx
+++ b/portal-ui/src/screens/Console/Account/NotificationEndpointTypeSelectorHelpBox.tsx
@@ -14,84 +14,23 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
import React from "react";
-import { Box } from "@mui/material";
-import { HelpIconFilled, LambdaNotificationsIcon } from "mds";
-const FeatureItem = ({
- icon,
- description,
-}: {
- icon: any;
- description: string;
-}) => {
- return (
-
- {icon}{" "}
-
+
+ {isLoading && }
+ {!isLoading && (
+
+ {records.length > 0 && (
+
+
+
+
+
+
+
+ }
+ help={
+
+ MinIO bucket notifications allow administrators to
+ send notifications to supported external services on
+ certain object or bucket events. MinIO supports bucket
+ and object-level S3 events similar to the Amazon S3
+ Event Notifications.
+
+
+ You can learn more at our{" "}
+
+ documentation
+
+ .
+
+ }
/>
-
+
+
+ )}
+ {records.length === 0 && (
+
+
+ }
+ help={
+
+ MinIO bucket notifications allow administrators to
+ send notifications to supported external services on
+ certain object or bucket events. MinIO supports bucket
+ and object-level S3 events similar to the Amazon S3
+ Event Notifications.
+
+
+ To get started,{" "}
+ {
+ navigate(IAM_PAGES.EVENT_DESTINATIONS_ADD);
+ }}
+ >
+ Add an Event Destination
+
+ .
+
+ }
+ />
+
-
- }
- help={
-
- MinIO bucket notifications allow administrators to send
- notifications to supported external services on certain
- object or bucket events. MinIO supports bucket and
- object-level S3 events similar to the Amazon S3 Event
- Notifications.
-
-
- You can learn more at our{" "}
-
- documentation
-
- .
-
- }
- />
-
-
- )}
- {records.length === 0 && (
-
-
- }
- help={
-
- MinIO bucket notifications allow administrators to send
- notifications to supported external services on certain
- object or bucket events. MinIO supports bucket and
- object-level S3 events similar to the Amazon S3 Event
- Notifications.
-
-
- To get started,{" "}
- {
- navigate(IAM_PAGES.EVENT_DESTINATIONS_ADD);
- }}
- >
- Add an Event Destination
-
- .
-
- }
- />
-
-
- )}
-
- )}
+ )}
+
+ )}
- {isDelConfirmOpen ? (
- {
- resetNotificationConfig(selNotifyEndPoint);
- }}
- status={`${selNotifyEndPoint?.status}`}
- serviceName={`${selNotifyEndPoint?.service_name}`}
- onClose={() => {
- setIsDelConfirmOpen(false);
- }}
- />
- ) : null}
+ {isDelConfirmOpen ? (
+ {
+ resetNotificationConfig(selNotifyEndPoint);
+ }}
+ status={`${selNotifyEndPoint?.status}`}
+ serviceName={`${selNotifyEndPoint?.service_name}`}
+ onClose={() => {
+ setIsDelConfirmOpen(false);
+ }}
+ />
+ ) : null}
+
);
diff --git a/portal-ui/src/screens/Console/EventDestinations/TargetTitle.tsx b/portal-ui/src/screens/Console/EventDestinations/TargetTitle.tsx
new file mode 100644
index 000000000..38bb6ee0b
--- /dev/null
+++ b/portal-ui/src/screens/Console/EventDestinations/TargetTitle.tsx
@@ -0,0 +1,78 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2023 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+import React from "react";
+import get from "lodash/get";
+import styled from "styled-components";
+import { Box } from "mds";
+
+interface ITargetTitle {
+ logoSrc: string;
+ title: string;
+}
+
+const TargetBase = styled.div(({ theme }) => ({
+ background: get(theme, "boxBackground", "#fff"),
+ border: `${get(theme, "borderColor", "#E5E5E5")} 1px solid`,
+ borderRadius: 5,
+ height: 80,
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "start",
+ marginBottom: 16,
+ cursor: "pointer",
+ padding: 0,
+ overflow: "hidden",
+ "& .logoButton": {
+ height: "80px",
+ },
+ "& .imageContainer": {
+ backgroundColor: get(theme, "bgColor", "#fff"),
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "center",
+ width: 80,
+ height: 80,
+
+ "& img": {
+ maxWidth: 46,
+ maxHeight: 46,
+ filter: "drop-shadow(1px 1px 8px #fff)",
+ },
+ },
+ "& .titleBox": {
+ color: get(theme, "fontColor", "#000"),
+ fontSize: 16,
+ fontFamily: "Inter,sans-serif",
+ paddingLeft: 18,
+ },
+}));
+
+const TargetTitle = ({ logoSrc, title }: ITargetTitle) => {
+ return (
+
+
+
+
+
+
+ {title} Event Destination
+
+
+ );
+};
+
+export default TargetTitle;
diff --git a/portal-ui/src/screens/Console/EventDestinations/destinationsSlice.ts b/portal-ui/src/screens/Console/EventDestinations/destinationsSlice.ts
new file mode 100644
index 000000000..2796d8fb6
--- /dev/null
+++ b/portal-ui/src/screens/Console/EventDestinations/destinationsSlice.ts
@@ -0,0 +1,40 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2023 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+import { createSlice, PayloadAction } from "@reduxjs/toolkit";
+
+export interface DestinationState {
+ loading: boolean;
+}
+
+const initialState: DestinationState = {
+ loading: true,
+};
+
+export const destinationSlice = createSlice({
+ name: "destination",
+ initialState,
+ reducers: {
+ setDestinationLoading: (state, action: PayloadAction) => {
+ state.loading = action.payload;
+ },
+ },
+});
+
+// Action creators are generated for each case reducer function
+export const { setDestinationLoading } = destinationSlice.actions;
+
+export default destinationSlice.reducer;
diff --git a/portal-ui/src/store.ts b/portal-ui/src/store.ts
index 4c7189964..8f47121d8 100644
--- a/portal-ui/src/store.ts
+++ b/portal-ui/src/store.ts
@@ -30,6 +30,7 @@ import dashboardReducer from "./screens/Console/Dashboard/dashboardSlice";
import createUserReducer from "./screens/Console/Users/AddUsersSlice";
import licenseReducer from "./screens/Console/License/licenseSlice";
import registerReducer from "./screens/Console/Support/registerSlice";
+import destinationSlice from "./screens/Console/EventDestinations/destinationsSlice";
const rootReducer = combineReducers({
system: systemReducer,
@@ -46,6 +47,7 @@ const rootReducer = combineReducers({
register: registerReducer,
createUser: createUserReducer,
license: licenseReducer,
+ destination: destinationSlice,
});
export const store = configureStore({