diff --git a/src/components/layouts/BasicSelector.tsx b/src/components/layouts/BasicSelector.tsx new file mode 100644 index 00000000..f7445afd --- /dev/null +++ b/src/components/layouts/BasicSelector.tsx @@ -0,0 +1,77 @@ +import React from "react"; +// Patternfly +import { + MenuToggle, + MenuToggleElement, + Select, + SelectList, + SelectOption, + SelectOptionProps, +} from "@patternfly/react-core"; + +interface PropsToBasicSelector { + id: string; + selected: string; + options: SelectOptionProps[]; + onSelectedChange: (selected: string) => void; + ariaLabel?: string; +} + +const BasicSelector = (props: PropsToBasicSelector) => { + const [isOpen, setIsOpen] = React.useState(false); + const [selected, setSelected] = React.useState(props.selected); + + const onToggleClick = () => { + setIsOpen(!isOpen); + }; + + const onSelect = ( + _event: React.MouseEvent | undefined, + value: string | number | undefined + ) => { + props.onSelectedChange(value as string); + setSelected(value as string); + setIsOpen(false); + }; + + const toggle = (toggleRef: React.Ref) => ( + + {selected} + + ); + + return ( + + ); +}; + +export default BasicSelector; diff --git a/src/navigation/AppRoutes.tsx b/src/navigation/AppRoutes.tsx index 171e17e8..97dfd27f 100644 --- a/src/navigation/AppRoutes.tsx +++ b/src/navigation/AppRoutes.tsx @@ -25,7 +25,7 @@ import ServicesTabs from "src/pages/Services/ServicesTabs"; import IDViews from "src/pages/IDViews/IDViews"; import AutoMemHostRules from "src/pages/AutoMemHostRules/AutoMemHostRules"; import AutoMemUserRules from "src/pages/AutoMemUserRules/AutoMemUserRules"; -import AutoMemUserRulesTabs from "src/pages/AutoMemUserRules/AutoMemUserRulesTabs"; +import AutoMemRulesTabs from "src/pages/AutoMemUserRules/AutoMemRulesTabs"; import HBACRules from "src/pages/HBACRules/HBACRules"; import HBACServices from "src/pages/HBACServices/HBACServices"; import HBACServiceGroups from "src/pages/HBACServiceGroups/HBACServiceGroups"; @@ -305,7 +305,7 @@ export const AppRoutes = ({ isInitialDataLoaded }): React.ReactElement => { @@ -315,6 +315,17 @@ export const AppRoutes = ({ isInitialDataLoaded }): React.ReactElement => { } /> + + + } + /> + } /> diff --git a/src/pages/AutoMemHostRules/AutoMemHostRules.tsx b/src/pages/AutoMemHostRules/AutoMemHostRules.tsx index 01f685fd..4874166d 100644 --- a/src/pages/AutoMemHostRules/AutoMemHostRules.tsx +++ b/src/pages/AutoMemHostRules/AutoMemHostRules.tsx @@ -26,7 +26,7 @@ import ToolbarLayout, { } from "src/components/layouts/ToolbarLayout"; import SearchInputLayout from "src/components/layouts/SearchInputLayout"; // Tables -import MainTable from "../AutoMemUserRules/AutomemUserRulesTable"; +import MainTable from "../AutoMemUserRules/AutomemRulesTable"; // Components import PaginationLayout from "../../components/layouts/PaginationLayout"; import BulkSelectorPrep from "src/components/BulkSelectorPrep"; @@ -624,6 +624,7 @@ const AutoMemHostRules = () => { buttonsData={automembersTableButtonsData} paginationData={selectedPerPageData} searchValue={searchValue} + automemberType="host-group" /> )} diff --git a/src/pages/AutoMemUserRules/AutoMemUserRulesTabs.tsx b/src/pages/AutoMemUserRules/AutoMemRulesTabs.tsx similarity index 100% rename from src/pages/AutoMemUserRules/AutoMemUserRulesTabs.tsx rename to src/pages/AutoMemUserRules/AutoMemRulesTabs.tsx diff --git a/src/pages/AutoMemUserRules/AutoMemSettings.tsx b/src/pages/AutoMemUserRules/AutoMemSettings.tsx index 74566ec7..0ca249ba 100644 --- a/src/pages/AutoMemUserRules/AutoMemSettings.tsx +++ b/src/pages/AutoMemUserRules/AutoMemSettings.tsx @@ -55,8 +55,12 @@ const AutoMemSettings = (props: PropsToSettings) => { // RPC calls const [saveAutomember] = useSaveAutomemberMutation(); + // Infer pathname from automemberType + const pathname = + props.automemberType === "group" ? "user-group-rules" : "host-group-rules"; + // Update current route data to Redux and highlight the current page in the Nav bar - useUpdateRoute({ pathname: "user-group-rules", noBreadcrumb: true }); + useUpdateRoute({ pathname: pathname, noBreadcrumb: true }); // Get 'ipaObject' and 'recordOnChange' to use in 'IpaTextInput' const { ipaObject, recordOnChange } = asRecord( diff --git a/src/pages/AutoMemUserRules/AutoMemUserRules.tsx b/src/pages/AutoMemUserRules/AutoMemUserRules.tsx index c3700e31..978ae440 100644 --- a/src/pages/AutoMemUserRules/AutoMemUserRules.tsx +++ b/src/pages/AutoMemUserRules/AutoMemUserRules.tsx @@ -26,7 +26,7 @@ import ToolbarLayout, { } from "src/components/layouts/ToolbarLayout"; import SearchInputLayout from "src/components/layouts/SearchInputLayout"; // Tables -import MainTable from "./AutomemUserRulesTable"; +import MainTable from "./AutomemRulesTable"; // Components import PaginationLayout from "../../components/layouts/PaginationLayout"; import BulkSelectorPrep from "src/components/BulkSelectorPrep"; @@ -624,6 +624,7 @@ const AutoMemUserRules = () => { buttonsData={automembersTableButtonsData} paginationData={selectedPerPageData} searchValue={searchValue} + automemberType="user-group" /> )} diff --git a/src/pages/AutoMemUserRules/AutomemUserRulesTable.tsx b/src/pages/AutoMemUserRules/AutomemRulesTable.tsx similarity index 98% rename from src/pages/AutoMemUserRules/AutomemUserRulesTable.tsx rename to src/pages/AutoMemUserRules/AutomemRulesTable.tsx index 1ebf9fc1..ec2d0cdd 100644 --- a/src/pages/AutoMemUserRules/AutomemUserRulesTable.tsx +++ b/src/pages/AutoMemUserRules/AutomemRulesTable.tsx @@ -39,6 +39,7 @@ export interface PropsToTable { buttonsData: ButtonsData; paginationData: PaginationData; searchValue: string; + automemberType: "user-group" | "host-group"; } const MainTable = (props: PropsToTable) => { @@ -207,7 +208,7 @@ const MainTable = (props: PropsToTable) => { {element.automemberRule}