diff --git a/web-app/src/screens/Console/Common/FormComponents/common/styleLibrary.ts b/web-app/src/screens/Console/Common/FormComponents/common/styleLibrary.ts
index 4870f20f4db..70b3dd21541 100644
--- a/web-app/src/screens/Console/Common/FormComponents/common/styleLibrary.ts
+++ b/web-app/src/screens/Console/Common/FormComponents/common/styleLibrary.ts
@@ -207,32 +207,6 @@ export const searchField = {
},
};
-// ** According to W3 spec, default minimum values for flex width flex-grow is "auto" (https://drafts.csswg.org/css-flexbox/#min-size-auto). So in this case we need to enforce the use of an absolute width.
-// "The preferred width of a box element child containing text content is currently the text without line breaks, leading to very unintuitive width and flex calculations → declare a width on a box element child with more than a few words (ever wonder why flexbox demos are all “1,2,3”?)"
-
-export const settingsCommon: any = {
- settingsFormContainer: {
- padding: 38,
- overflowY: "auto" as const,
- scrollbarWidth: "none" as const,
- "&::-webkit-scrollbar": {
- display: "none",
- },
- },
- settingsButtonContainer: {
- padding: "15px 38px",
- display: "flex",
- justifyContent: "flex-end",
- },
- settingsOptionsContainer: {
- height: "calc(100vh - 244px)",
- backgroundColor: "#fff",
- border: "#EAEDEE 1px solid",
- borderRadius: 3,
- marginTop: 15,
- },
-};
-
export const snackBarCommon = {
snackBar: {
backgroundColor: "#081F44",
@@ -498,45 +472,6 @@ export const fileInputStyles = {
},
};
-export const deleteDialogStyles: any = {
- root: {
- "& .MuiPaper-root": {
- padding: "1rem 2rem 2rem 1rem",
- },
- },
- title: {
- display: "flex",
- alignItems: "center",
- justifyContent: "space-between",
- },
- titleText: {
- fontSize: 20,
- fontWeight: 600,
- display: "flex",
- alignItems: "center",
- "& svg": {
- marginRight: 10,
- },
- wordBreak: "break-all",
- whiteSpace: "normal",
- },
- closeContainer: {
- "& .MuiIconButton-root": {
- top: -20,
- left: 30,
- position: "relative",
- padding: 1,
- "&:focus, &:hover": {
- background: "#EAEAEA",
- },
- },
- "& .min-icon": {
- height: 16,
- width: 16,
- },
- },
-};
-
export const createTenantCommon: any = {
fieldGroup: {
border: "1px solid #EAEAEA",
diff --git a/web-app/src/screens/Console/Common/H3Section.tsx b/web-app/src/screens/Console/Common/H3Section.tsx
index 4790fcda8f6..6f31e62f464 100644
--- a/web-app/src/screens/Console/Common/H3Section.tsx
+++ b/web-app/src/screens/Console/Common/H3Section.tsx
@@ -14,9 +14,12 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
-import styled from "@emotion/styled";
+import styled from "styled-components";
+import get from "lodash/get";
+
+const H3Section = styled.h3(({ theme }) => ({
+ color: get(theme, "fontColor", "#000"),
+ margin: 0,
+}));
-const H3Section = styled("h3")`
- margin: 0px;
-`;
export default H3Section;
diff --git a/web-app/src/screens/Console/Common/SectionH1.tsx b/web-app/src/screens/Console/Common/SectionH1.tsx
deleted file mode 100644
index eacf3f284eb..00000000000
--- a/web-app/src/screens/Console/Common/SectionH1.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-// This file is part of MinIO Operator
-// Copyright (c) 2022 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";
-
-type Props = {
- children: string;
-};
-
-const SectionH1: React.FC = ({ children }) => {
- return (
-
-
+
);
};
diff --git a/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/AzureKMSAdd.tsx b/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/AzureKMSAdd.tsx
index a969eb12e38..4c301c6ec75 100644
--- a/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/AzureKMSAdd.tsx
+++ b/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/AzureKMSAdd.tsx
@@ -15,19 +15,9 @@
// along with this program. If not, see .
import React, { Fragment, useCallback, useEffect, useState } from "react";
-import Grid from "@mui/material/Grid";
-import InputBoxWrapper from "../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
+import { InputBox } from "mds";
import { useSelector } from "react-redux";
import { AppState, useAppDispatch } from "../../../../../../store";
-import { Theme } from "@mui/material/styles";
-import createStyles from "@mui/styles/createStyles";
-import {
- createTenantCommon,
- formFieldStyles,
- modalBasic,
- wizardCommon,
-} from "../../../../Common/FormComponents/common/styleLibrary";
-import makeStyles from "@mui/styles/makeStyles";
import {
commonFormValidation,
IValidation,
@@ -35,18 +25,8 @@ import {
import { isPageValid, updateAddField } from "../../createTenantSlice";
import { clearValidationError } from "../../../utils";
-const useStyles = makeStyles((theme: Theme) =>
- createStyles({
- ...createTenantCommon,
- ...formFieldStyles,
- ...modalBasic,
- ...wizardCommon,
- }),
-);
-
const AzureKMSAdd = () => {
const dispatch = useAppDispatch();
- const classes = useStyles();
const encryptionTab = useSelector(
(state: AppState) => state.createTenant.fields.encryption.encryptionTab,
@@ -131,67 +111,57 @@ const AzureKMSAdd = () => {
return (
-
- ) => {
+ updateField("azureEndpoint", e.target.value);
+ cleanValidation("azure_endpoint");
+ }}
+ label="Endpoint"
+ tooltip="Endpoint is the Azure KeyVault endpoint"
+ value={azureEndpoint}
+ error={validationErrors["azure_endpoint"] || ""}
+ />
+
+
+ ) => {
+ updateField("azureTenantID", e.target.value);
+ cleanValidation("azure_tenant_id");
+ }}
+ label="Tenant ID"
+ tooltip="TenantID is the ID of the Azure KeyVault tenant"
+ value={azureTenantID}
+ error={validationErrors["azure_tenant_id"] || ""}
+ />
+ ) => {
+ updateField("azureClientID", e.target.value);
+ cleanValidation("azure_client_id");
+ }}
+ label="Client ID"
+ tooltip="ClientID is the ID of the client accessing Azure KeyVault"
+ value={azureClientID}
+ error={validationErrors["azure_client_id"] || ""}
+ />
+ ) => {
- updateField("azureEndpoint", e.target.value);
- cleanValidation("azure_endpoint");
+ updateField("azureClientSecret", e.target.value);
+ cleanValidation("azure_client_secret");
}}
- label="Endpoint"
- tooltip="Endpoint is the Azure KeyVault endpoint"
- value={azureEndpoint}
- error={validationErrors["azure_endpoint"] || ""}
+ label="Client Secret"
+ tooltip="ClientSecret is the client secret accessing the Azure KeyVault"
+ value={azureClientSecret}
+ error={validationErrors["azure_client_secret"] || ""}
/>
-
-
-
-
-
- ) => {
- updateField("azureTenantID", e.target.value);
- cleanValidation("azure_tenant_id");
- }}
- label="Tenant ID"
- tooltip="TenantID is the ID of the Azure KeyVault tenant"
- value={azureTenantID}
- error={validationErrors["azure_tenant_id"] || ""}
- />
-
-
- ) => {
- updateField("azureClientID", e.target.value);
- cleanValidation("azure_client_id");
- }}
- label="Client ID"
- tooltip="ClientID is the ID of the client accessing Azure KeyVault"
- value={azureClientID}
- error={validationErrors["azure_client_id"] || ""}
- />
-
-
- ) => {
- updateField("azureClientSecret", e.target.value);
- cleanValidation("azure_client_secret");
- }}
- label="Client Secret"
- tooltip="ClientSecret is the client secret accessing the Azure KeyVault"
- value={azureClientSecret}
- error={validationErrors["azure_client_secret"] || ""}
- />
-
-
-
+
);
};
diff --git a/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/GCPKMSAdd.tsx b/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/GCPKMSAdd.tsx
index 58877ac5297..0d10be6971b 100644
--- a/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/GCPKMSAdd.tsx
+++ b/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/GCPKMSAdd.tsx
@@ -15,32 +15,12 @@
// along with this program. If not, see .
import React, { Fragment, useCallback } from "react";
-import Grid from "@mui/material/Grid";
-import InputBoxWrapper from "../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
+import { InputBox } from "mds";
import { useSelector } from "react-redux";
import { AppState, useAppDispatch } from "../../../../../../store";
-import { Theme } from "@mui/material/styles";
-import createStyles from "@mui/styles/createStyles";
-import {
- createTenantCommon,
- formFieldStyles,
- modalBasic,
- wizardCommon,
-} from "../../../../Common/FormComponents/common/styleLibrary";
-import makeStyles from "@mui/styles/makeStyles";
import { updateAddField } from "../../createTenantSlice";
-const useStyles = makeStyles((theme: Theme) =>
- createStyles({
- ...createTenantCommon,
- ...formFieldStyles,
- ...modalBasic,
- ...wizardCommon,
- }),
-);
-
const GCPKMSAdd = () => {
- const classes = useStyles();
const dispatch = useAppDispatch();
const gcpProjectID = useSelector(
@@ -74,83 +54,69 @@ const GCPKMSAdd = () => {
return (
-
- ) => {
+ updateField("gcpProjectID", e.target.value);
+ }}
+ label="Project ID"
+ tooltip="ProjectID is the GCP project ID."
+ value={gcpProjectID}
+ />
+ ) => {
+ updateField("gcpEndpoint", e.target.value);
+ }}
+ label="Endpoint"
+ tooltip="Endpoint is the GCP project ID. If empty defaults to: secretmanager.googleapis.com:443"
+ value={gcpEndpoint}
+ />
+
+
+ ) => {
+ updateField("gcpClientEmail", e.target.value);
+ }}
+ label="Client Email"
+ tooltip="Is the Client email of the GCP service account used to access the SecretManager"
+ value={gcpClientEmail}
+ />
+ ) => {
+ updateField("gcpClientID", e.target.value);
+ }}
+ label="Client ID"
+ tooltip="Is the Client ID of the GCP service account used to access the SecretManager"
+ value={gcpClientID}
+ />
+ ) => {
- updateField("gcpProjectID", e.target.value);
+ updateField("gcpPrivateKeyID", e.target.value);
}}
- label="Project ID"
- tooltip="ProjectID is the GCP project ID."
- value={gcpProjectID}
+ label="Private Key ID"
+ tooltip="Is the private key ID of the GCP service account used to access the SecretManager"
+ value={gcpPrivateKeyID}
/>
-
-
- ) => {
- updateField("gcpEndpoint", e.target.value);
+ updateField("gcpPrivateKey", e.target.value);
}}
- label="Endpoint"
- tooltip="Endpoint is the GCP project ID. If empty defaults to: secretmanager.googleapis.com:443"
- value={gcpEndpoint}
+ label="Private Key"
+ tooltip="Is the private key of the GCP service account used to access the SecretManager"
+ value={gcpPrivateKey}
/>
-
-
-
-
-
- ) => {
- updateField("gcpClientEmail", e.target.value);
- }}
- label="Client Email"
- tooltip="Is the Client email of the GCP service account used to access the SecretManager"
- value={gcpClientEmail}
- />
-
-
- ) => {
- updateField("gcpClientID", e.target.value);
- }}
- label="Client ID"
- tooltip="Is the Client ID of the GCP service account used to access the SecretManager"
- value={gcpClientID}
- />
-
-
- ) => {
- updateField("gcpPrivateKeyID", e.target.value);
- }}
- label="Private Key ID"
- tooltip="Is the private key ID of the GCP service account used to access the SecretManager"
- value={gcpPrivateKeyID}
- />
-
-
- ) => {
- updateField("gcpPrivateKey", e.target.value);
- }}
- label="Private Key"
- tooltip="Is the private key of the GCP service account used to access the SecretManager"
- value={gcpPrivateKey}
- />
-
-
-
+
);
};
diff --git a/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/GemaltoKMSAdd.tsx b/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/GemaltoKMSAdd.tsx
index 0457fc78fd9..418ff4bc482 100644
--- a/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/GemaltoKMSAdd.tsx
+++ b/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/GemaltoKMSAdd.tsx
@@ -15,19 +15,9 @@
// along with this program. If not, see .
import React, { Fragment, useCallback, useEffect, useState } from "react";
-import Grid from "@mui/material/Grid";
-import InputBoxWrapper from "../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
+import { InputBox } from "mds";
import { useSelector } from "react-redux";
import { AppState, useAppDispatch } from "../../../../../../store";
-import { Theme } from "@mui/material/styles";
-import createStyles from "@mui/styles/createStyles";
-import {
- createTenantCommon,
- formFieldStyles,
- modalBasic,
- wizardCommon,
-} from "../../../../Common/FormComponents/common/styleLibrary";
-import makeStyles from "@mui/styles/makeStyles";
import { isPageValid, updateAddField } from "../../createTenantSlice";
import {
commonFormValidation,
@@ -35,18 +25,8 @@ import {
} from "../../../../../../utils/validationFunctions";
import { clearValidationError } from "../../../utils";
-const useStyles = makeStyles((theme: Theme) =>
- createStyles({
- ...createTenantCommon,
- ...formFieldStyles,
- ...modalBasic,
- ...wizardCommon,
- }),
-);
-
const GemaltoKMSAdd = () => {
const dispatch = useAppDispatch();
- const classes = useStyles();
const encryptionTab = useSelector(
(state: AppState) => state.createTenant.fields.encryption.encryptionTab,
@@ -133,77 +113,61 @@ const GemaltoKMSAdd = () => {
return (
-
- ) => {
+ updateField("gemaltoEndpoint", e.target.value);
+ cleanValidation("gemalto_endpoint");
+ }}
+ label="Endpoint"
+ tooltip="Endpoint is the endpoint to the KeySecure server"
+ value={gemaltoEndpoint}
+ error={validationErrors["gemalto_endpoint"] || ""}
+ required
+ />
+
+
+ ) => {
- updateField("gemaltoEndpoint", e.target.value);
- cleanValidation("gemalto_endpoint");
+ updateField("gemaltoToken", e.target.value);
+ cleanValidation("gemalto_token");
}}
- label="Endpoint"
- tooltip="Endpoint is the endpoint to the KeySecure server"
- value={gemaltoEndpoint}
- error={validationErrors["gemalto_endpoint"] || ""}
+ label="Token"
+ tooltip="Token is the refresh authentication token to access the KeySecure server"
+ value={gemaltoToken}
+ error={validationErrors["gemalto_token"] || ""}
required
/>
-
-
-
-
-
- ) => {
- updateField("gemaltoToken", e.target.value);
- cleanValidation("gemalto_token");
- }}
- label="Token"
- tooltip="Token is the refresh authentication token to access the KeySecure server"
- value={gemaltoToken}
- error={validationErrors["gemalto_token"] || ""}
- required
- />
-
-
- ) => {
- updateField("gemaltoDomain", e.target.value);
- cleanValidation("gemalto_domain");
- }}
- label="Domain"
- tooltip="Domain is the isolated namespace within the KeySecure server. If empty, defaults to the top-level / root domain"
- value={gemaltoDomain}
- error={validationErrors["gemalto_domain"] || ""}
- required
- />
-
-
- ) => {
- updateField("gemaltoRetry", e.target.value);
- cleanValidation("gemalto_retry");
- }}
- label="Retry (seconds)"
- value={gemaltoRetry}
- error={validationErrors["gemalto_retry"] || ""}
- />
-
-
-
+ ) => {
+ updateField("gemaltoDomain", e.target.value);
+ cleanValidation("gemalto_domain");
+ }}
+ label="Domain"
+ tooltip="Domain is the isolated namespace within the KeySecure server. If empty, defaults to the top-level / root domain"
+ value={gemaltoDomain}
+ error={validationErrors["gemalto_domain"] || ""}
+ required
+ />
+ ) => {
+ updateField("gemaltoRetry", e.target.value);
+ cleanValidation("gemalto_retry");
+ }}
+ label="Retry (seconds)"
+ value={gemaltoRetry}
+ error={validationErrors["gemalto_retry"] || ""}
+ />
+
);
};
diff --git a/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/VaultKMSAdd.tsx b/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/VaultKMSAdd.tsx
index 948009f872b..bfce98ba47b 100644
--- a/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/VaultKMSAdd.tsx
+++ b/web-app/src/screens/Console/Tenants/AddTenant/Steps/Encryption/VaultKMSAdd.tsx
@@ -15,39 +15,18 @@
// along with this program. If not, see .
import React, { Fragment, useCallback, useEffect, useState } from "react";
-import Grid from "@mui/material/Grid";
-import InputBoxWrapper from "../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
-
-import { isPageValid, updateAddField } from "../../createTenantSlice";
+import { InputBox } from "mds";
import { useSelector } from "react-redux";
+import { isPageValid, updateAddField } from "../../createTenantSlice";
import { AppState, useAppDispatch } from "../../../../../../store";
-import { Theme } from "@mui/material/styles";
-import createStyles from "@mui/styles/createStyles";
-import {
- createTenantCommon,
- formFieldStyles,
- modalBasic,
- wizardCommon,
-} from "../../../../Common/FormComponents/common/styleLibrary";
-import makeStyles from "@mui/styles/makeStyles";
import {
commonFormValidation,
IValidation,
} from "../../../../../../utils/validationFunctions";
import { clearValidationError } from "../../../utils";
-const useStyles = makeStyles((theme: Theme) =>
- createStyles({
- ...createTenantCommon,
- ...formFieldStyles,
- ...modalBasic,
- ...wizardCommon,
- }),
-);
-
const VaultKMSAdd = () => {
const dispatch = useAppDispatch();
- const classes = useStyles();
const encryptionTab = useSelector(
(state: AppState) => state.createTenant.fields.encryption.encryptionTab,
@@ -159,144 +138,118 @@ const VaultKMSAdd = () => {
return (
-
- ) => {
+ updateField("vaultEndpoint", e.target.value);
+ cleanValidation("vault_endpoint");
+ }}
+ label="Endpoint"
+ tooltip="Endpoint is the Hashicorp Vault endpoint"
+ value={vaultEndpoint}
+ error={validationErrors["vault_endpoint"] || ""}
+ required
+ />
+ ) => {
+ updateField("vaultEngine", e.target.value);
+ cleanValidation("vault_engine");
+ }}
+ label="Engine"
+ tooltip="Engine is the Hashicorp Vault K/V engine path. If empty, defaults to 'kv'"
+ value={vaultEngine}
+ />
+ ) => {
+ updateField("vaultNamespace", e.target.value);
+ }}
+ label="Namespace"
+ tooltip="Namespace is an optional Hashicorp Vault namespace. An empty namespace means no particular namespace is used."
+ value={vaultNamespace}
+ />
+ ) => {
+ updateField("vaultPrefix", e.target.value);
+ }}
+ label="Prefix"
+ tooltip="Prefix is an optional prefix / directory within the K/V engine. If empty, keys will be stored at the K/V engine top level"
+ value={vaultPrefix}
+ />
+
+
+ ) => {
+ updateField("vaultAppRoleEngine", e.target.value);
+ }}
+ label="Engine"
+ tooltip="AppRoleEngine is the AppRole authentication engine path. If empty, defaults to 'approle'"
+ value={vaultAppRoleEngine}
+ />
+ ) => {
- updateField("vaultEndpoint", e.target.value);
- cleanValidation("vault_endpoint");
+ updateField("vaultId", e.target.value);
+ cleanValidation("vault_id");
}}
- label="Endpoint"
- tooltip="Endpoint is the Hashicorp Vault endpoint"
- value={vaultEndpoint}
- error={validationErrors["vault_endpoint"] || ""}
+ label="AppRole ID"
+ tooltip="AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method"
+ value={vaultId}
+ error={validationErrors["vault_id"] || ""}
required
/>
-
-
- ) => {
- updateField("vaultEngine", e.target.value);
- cleanValidation("vault_engine");
+ updateField("vaultSecret", e.target.value);
+ cleanValidation("vault_secret");
}}
- label="Engine"
- tooltip="Engine is the Hashicorp Vault K/V engine path. If empty, defaults to 'kv'"
- value={vaultEngine}
+ label="AppRole Secret"
+ tooltip="AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method"
+ value={vaultSecret}
+ error={validationErrors["vault_secret"] || ""}
+ required
/>
-
-
- ) => {
- updateField("vaultNamespace", e.target.value);
+ updateField("vaultRetry", e.target.value);
+ cleanValidation("vault_retry");
}}
- label="Namespace"
- tooltip="Namespace is an optional Hashicorp Vault namespace. An empty namespace means no particular namespace is used."
- value={vaultNamespace}
+ label="Retry (Seconds)"
+ value={vaultRetry}
+ error={validationErrors["vault_retry"] || ""}
/>
-
-
-
+
+
+ ) => {
- updateField("vaultPrefix", e.target.value);
+ updateField("vaultPing", e.target.value);
+ cleanValidation("vault_ping");
}}
- label="Prefix"
- tooltip="Prefix is an optional prefix / directory within the K/V engine. If empty, keys will be stored at the K/V engine top level"
- value={vaultPrefix}
+ label="Ping (Seconds)"
+ value={vaultPing}
+ error={validationErrors["vault_ping"] || ""}
/>
-
-
-
-
-
-
- ) => {
- updateField("vaultAppRoleEngine", e.target.value);
- }}
- label="Engine"
- tooltip="AppRoleEngine is the AppRole authentication engine path. If empty, defaults to 'approle'"
- value={vaultAppRoleEngine}
- />
-
-
- ) => {
- updateField("vaultId", e.target.value);
- cleanValidation("vault_id");
- }}
- label="AppRole ID"
- tooltip="AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method"
- value={vaultId}
- error={validationErrors["vault_id"] || ""}
- required
- />
-
-
- ) => {
- updateField("vaultSecret", e.target.value);
- cleanValidation("vault_secret");
- }}
- label="AppRole Secret"
- tooltip="AppRoleSecret is the AppRole access secret for authenticating to Hashicorp Vault via the AppRole method"
- value={vaultSecret}
- error={validationErrors["vault_secret"] || ""}
- required
- />
-
-
- ) => {
- updateField("vaultRetry", e.target.value);
- cleanValidation("vault_retry");
- }}
- label="Retry (Seconds)"
- value={vaultRetry}
- error={validationErrors["vault_retry"] || ""}
- />
-
-
-
-
-
- ) => {
- updateField("ecParity", e.target.value as string);
- }}
- label="Erasure Code Parity"
- disabled={selectedStorageClass === ""}
- value={ecParity}
- options={ecParityChoices}
- />
-
- Please select the desired parity. This setting will change the max
- usable capacity in the cluster
-
-
+ }
+ />
+ {
+ updateField("ecParity", value);
+ }}
+ label="Erasure Code Parity"
+ disabled={selectedStorageClass === ""}
+ value={ecParity}
+ options={ecParityChoices}
+ />
+
+ Please select the desired parity. This setting will change the max
+ usable capacity in the cluster
+
);
};
-export default withStyles(styles)(TenantSize);
+export default TenantSize;
diff --git a/web-app/src/screens/Console/Tenants/AddTenant/Steps/TenantResources/TenantSizeResources.tsx b/web-app/src/screens/Console/Tenants/AddTenant/Steps/TenantResources/TenantSizeResources.tsx
index e1be5da6222..1dc1e38b00f 100644
--- a/web-app/src/screens/Console/Tenants/AddTenant/Steps/TenantResources/TenantSizeResources.tsx
+++ b/web-app/src/screens/Console/Tenants/AddTenant/Steps/TenantResources/TenantSizeResources.tsx
@@ -15,44 +15,18 @@
// along with this program. If not, see .
import React, { Fragment, useCallback, useEffect } from "react";
+import { Box, InputBox, Switch } from "mds";
import { useSelector } from "react-redux";
-import { Theme } from "@mui/material/styles";
-import createStyles from "@mui/styles/createStyles";
-import withStyles from "@mui/styles/withStyles";
+import floor from "lodash/floor";
import get from "lodash/get";
import { AppState, useAppDispatch } from "../../../../../../store";
-import {
- formFieldStyles,
- modalBasic,
- wizardCommon,
-} from "../../../../Common/FormComponents/common/styleLibrary";
-import Grid from "@mui/material/Grid";
import { AllocableResourcesResponse } from "../../../types";
+import { isPageValid, updateAddField } from "../../createTenantSlice";
import api from "../../../../../../common/api";
-import InputBoxWrapper from "../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
-import FormSwitchWrapper from "../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper";
-import { floor } from "lodash";
import InputUnitMenu from "../../../../Common/FormComponents/InputUnitMenu/InputUnitMenu";
-import { isPageValid, updateAddField } from "../../createTenantSlice";
import H3Section from "../../../../Common/H3Section";
-interface ITenantSizeResourcesProps {
- classes: any;
-}
-
-const styles = (theme: Theme) =>
- createStyles({
- ...formFieldStyles,
- ...modalBasic,
- ...wizardCommon,
- });
-
-const TenantSizeResources = ({
- classes,
-}: // updateAddField,
-// isPageValid,
-
-ITenantSizeResourcesProps) => {
+const TenantSizeResources = () => {
const dispatch = useAppDispatch();
const nodes = useSelector(
@@ -219,186 +193,162 @@ ITenantSizeResourcesProps) => {
return (
-
-
- Resources
-
- You may specify the amount of CPU and Memory that MinIO servers
- should reserve on each node.
-
-
-
+
+ Resources
+
+ You may specify the amount of CPU and Memory that MinIO servers should
+ reserve on each node.
+
+
{resourcesSize.error !== "" && (
-
-
+
Replace <tenant-name>,{" "}
<namespace> and
diff --git a/web-app/src/screens/Console/Tenants/LogoComponents.tsx b/web-app/src/screens/Console/Tenants/LogoComponents.tsx
deleted file mode 100644
index b36fc64860c..00000000000
--- a/web-app/src/screens/Console/Tenants/LogoComponents.tsx
+++ /dev/null
@@ -1,51 +0,0 @@
-// This file is part of MinIO Operator
-// Copyright (c) 2022 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 { Grid } from "@mui/material";
-import { LDAPIcon, OIDCIcon, UsersIcon } from "mds";
-
-export const OIDCLogoElement = () => {
- return (
-
-
-
-
- Open ID
-
- );
-};
-
-export const LDAPLogoElement = () => {
- return (
-
-
-
-
- LDAP / Active Directory
-
- );
-};
-
-export const BuiltInLogoElement = () => {
- return (
-
-
-
-
- Built-in
-
- );
-};
diff --git a/web-app/src/screens/Console/Tenants/TenantDetails/TenantIdentityProvider.tsx b/web-app/src/screens/Console/Tenants/TenantDetails/TenantIdentityProvider.tsx
index 8f1195398b6..e28c34ac892 100644
--- a/web-app/src/screens/Console/Tenants/TenantDetails/TenantIdentityProvider.tsx
+++ b/web-app/src/screens/Console/Tenants/TenantDetails/TenantIdentityProvider.tsx
@@ -15,6 +15,7 @@
// along with this program. If not, see .
import React, { Fragment, useCallback, useEffect, useState } from "react";
+import { RadioGroup } from "mds";
import { connect, useSelector } from "react-redux";
import {
DialogContentText,
@@ -23,7 +24,15 @@ import {
Typography,
} from "@mui/material";
import { Theme } from "@mui/material/styles";
-import { Button, ConfirmModalIcon, Loader, SectionTitle } from "mds";
+import {
+ Button,
+ ConfirmModalIcon,
+ LDAPIcon,
+ Loader,
+ OIDCIcon,
+ SectionTitle,
+ UsersIcon,
+} from "mds";
import Grid from "@mui/material/Grid";
import createStyles from "@mui/styles/createStyles";
import withStyles from "@mui/styles/withStyles";
@@ -42,11 +51,6 @@ import {
ITenantIdentityProviderResponse,
ITenantSetAdministratorsRequest,
} from "../types";
-import {
- BuiltInLogoElement,
- LDAPLogoElement,
- OIDCLogoElement,
-} from "../LogoComponents";
import { clearValidationError } from "../utils";
import {
commonFormValidation,
@@ -58,7 +62,6 @@ import {
} from "../../../../systemSlice";
import { AppState, useAppDispatch } from "../../../../store";
import { ErrorResponseHandler } from "../../../../common/types";
-import RadioGroupSelector from "../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector";
import InputBoxWrapper from "../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
import FormSwitchWrapper from "../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper";
import ConfirmDialog from "../../Common/ModalWrapper/ConfirmDialog";
@@ -360,8 +363,8 @@ const TenantIdentityProvider = ({ classes }: ITenantIdentityProvider) => {
className={classes.protocolRadioOptions}
paddingBottom={1}
>
- {
setIdpSelection(e.target.value);
}}
selectorOptions={[
- { label: , value: "Built-in" },
- { label: , value: "OpenID" },
- { label: , value: "AD" },
+ { label: "Built-in", value: "Built-in", icon: },
+ { label: "Open ID", value: "OpenID", icon: },
+ {
+ label: "LDAP / Active Directory",
+ value: "AD",
+ icon: ,
+ },
]}
/>
diff --git a/web-app/src/screens/Console/Tenants/types.ts b/web-app/src/screens/Console/Tenants/types.ts
index 895a51f7360..72550dd0f8b 100644
--- a/web-app/src/screens/Console/Tenants/types.ts
+++ b/web-app/src/screens/Console/Tenants/types.ts
@@ -193,7 +193,7 @@ export interface ISecurityFields {
export interface IEncryptionFields {
rawConfiguration: string;
- encryptionTab: number;
+ encryptionTab: string;
enableEncryption: boolean;
encryptionType: string;
gemaltoEndpoint: string;