diff --git a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Configuration/DesignConfigurations.jsx b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Configuration/DesignConfigurations.jsx
index 9bc35f595c1..548522b64e8 100644
--- a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Configuration/DesignConfigurations.jsx
+++ b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Configuration/DesignConfigurations.jsx
@@ -603,13 +603,6 @@ export default function DesignConfigurations() {
categories={api.categories}
/>
-
-
-
)}
+ { settings && settings.orgAccessControlEnabled && (
+
+
+
+ )}
{ settings && !settings.portalConfigurationOnlyModeEnabled && (
diff --git a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Configuration/components/SharedOrganizations.jsx b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Configuration/components/SharedOrganizations.jsx
index fa588b55576..f327ddc581a 100644
--- a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Configuration/components/SharedOrganizations.jsx
+++ b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Configuration/components/SharedOrganizations.jsx
@@ -19,16 +19,22 @@
import React, { useState, useEffect } from 'react';
import { styled } from '@mui/material/styles';
import PropTypes from 'prop-types';
-import TextField from '@mui/material/TextField';
import { FormattedMessage } from 'react-intl';
import Autocomplete from '@mui/material/Autocomplete';
import CheckBoxIcon from '@mui/icons-material/CheckBox';
import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank';
-import Checkbox from '@mui/material/Checkbox';
-import Box from '@mui/material/Box';
-import Tooltip from '@mui/material/Tooltip';
import HelpOutline from '@mui/icons-material/HelpOutline';
import API from 'AppData/api';
+import {
+ RadioGroup,
+ FormControlLabel,
+ FormLabel,
+ Radio,
+ TextField,
+ Checkbox,
+ Tooltip,
+ Box,
+} from "@mui/material";
const PREFIX = 'SharedOrganizations';
@@ -39,9 +45,8 @@ const classes = {
const StyledBox = styled(Box)(({ theme }) => ({
[`& .${classes.tooltip}`]: {
- position: 'absolute',
- right: theme.spacing(-4),
top: theme.spacing(1),
+ marginLeft: theme.spacing(1),
},
[`& .${classes.listItemText}`]: {
@@ -62,90 +67,114 @@ const checkedIcon = ;
function SharedOrganizations(props) {
const [organizations, setOrganizations] = useState({});
const { api, configDispatcher } = props;
+ const [selectionMode, setSelectionMode] = useState("all");
useEffect(() => {
API.getOrganizations().then((response) => setOrganizations(response.body));
+ if (api.visibleOrganizations.includes("all")) {
+ setSelectionMode("all");
+ } else if (api.visibleOrganizations.length === 0) {
+ setSelectionMode("none");
+ } else {
+ setSelectionMode("select");
+ }
}, []);
if (organizations && !organizations.list) {
return null;
} else if (organizations && organizations.list) {
- const allOption = { organizationId: "all", displayName: "All Organizations" };
- const optionsList = [allOption, ...organizations.list];
- const handleChange = (event, newValue) => {
- if (newValue.some((org) => org.organizationId === "all")) {
+ const optionsList = organizations.list;
+ const handleRadioChange = (event) => {
+ const { value } = event.target;
+ setSelectionMode(value);
+ if (value === "all") {
configDispatcher({ action: "visibleOrganizations", value: ["all"] });
- } else if (newValue.length === 0) {
+ } else if (value === "none") {
configDispatcher({ action: "visibleOrganizations", value: [] });
- } else {
- configDispatcher({
- action: "visibleOrganizations",
- value: newValue.map((org) => org.organizationId),
- });
}
};
+ const handleDropdownChange = (event, newValue) => {
+ configDispatcher({
+ action: "visibleOrganizations",
+ value: newValue.map((org) => org.organizationId),
+ });
+ };
+
return (
-
- option.displayName}
- isOptionEqualToValue={(option, value) => option.organizationId === value.organizationId}
- value={
- api.visibleOrganizations.includes("all")
- ? [allOption]
- : organizations.list.filter((org) => api.visibleOrganizations.includes(org.organizationId))
- }
- onChange={handleChange}
- renderOption={(optionProps, option, { selected }) => (
-
-
- {option.displayName}
-
- )}
- renderInput={(params) => (
-
+
+
+
- )}
- />
-
-
-
+
+
+
+
+ >
+ )}
+ aria-label='Shared Organizations'
+ placement='right-end'
+ interactive
+ className={classes.tooltip}
+ >
+
+
+
+
+ } label='All' />
+ } label='None' />
+ } label='Select' />
+
+ {selectionMode === "select" && (
+ option.displayName}
+ isOptionEqualToValue={(option, value) => option.organizationId === value.organizationId}
+ value={organizations.list.filter((org) =>
+ api.visibleOrganizations.includes(org.organizationId)
+ )}
+ onChange={handleDropdownChange}
+ renderOption={(optionProps, option, { selected }) => (
+
+
-
- >
- )}
- aria-label='Shared Organizations'
- placement='right-end'
- interactive
- className={classes.tooltip}
- >
-
-
+ {option.displayName}
+
+ )}
+ renderInput={(params) => (
+
+ )}
+ />
+ )}
);
}
diff --git a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Subscriptions/OrganizationSubscriptionPoliciesManage.jsx b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Subscriptions/OrganizationSubscriptionPoliciesManage.jsx
index d6e84238c1d..1f563793280 100644
--- a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Subscriptions/OrganizationSubscriptionPoliciesManage.jsx
+++ b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Subscriptions/OrganizationSubscriptionPoliciesManage.jsx
@@ -38,7 +38,7 @@ import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank';
const PREFIX = 'OrganizationSubscriptionPoliciesManage';
const classes = {
- subscriptionPoliciesPaper: `${PREFIX}-subscriptionPoliciesPaper`,
+ heading: `${PREFIX}-heading`,
grid: `${PREFIX}-grid`,
gridLabel: `${PREFIX}-gridLabel`,
mainTitle: `${PREFIX}-mainTitle`
@@ -49,9 +49,9 @@ const Root = styled('div')((
theme
}
) => ({
- [`& .${classes.subscriptionPoliciesPaper}`]: {
- marginTop: theme.spacing(2),
- padding: theme.spacing(2),
+ [`& .${classes.heading}`]: {
+ marginTop: theme.spacing(3),
+ marginBottom: theme.spacing(2),
},
[`& .${classes.grid}`]: {
@@ -160,7 +160,9 @@ function OrganizationSubscriptionPoliciesManage(props) {
return (
- Organization Specific Business Plans
+
+ Organization Specific Business Plans
+
@@ -178,6 +180,7 @@ function OrganizationSubscriptionPoliciesManage(props) {
option?.displayName ?
diff --git a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Subscriptions/Subscriptions.jsx b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Subscriptions/Subscriptions.jsx
index 4a0b5caebc5..1931cd1435a 100644
--- a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Subscriptions/Subscriptions.jsx
+++ b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Subscriptions/Subscriptions.jsx
@@ -131,10 +131,12 @@ function Subscriptions(props) {
.then((result) => {
setSubscriptions(result.body.count);
});
- restApi.organizations()
- .then((result) => {
- setOrganizations(result.body.list);
- })
+ if (settings && settings.orgAccessControlEnabled ) {
+ restApi.organizations()
+ .then((result) => {
+ setOrganizations(result.body.list);
+ })
+ }
setPolices([...api.policies]);
setOriginalPolicies([...api.policies]);
setOrganizationPolicies(api.organizationPolicies ? [...api.organizationPolicies] : []);