CreateImageWizard: display message for invalid chosen packages filter
When the user filters the chosen packages list they may find no packages containing the entered string. In this case we display a message that no packages are found. There are now tests for both the available and chosen packages lists for when packages are not found.
This commit is contained in:
parent
8c3a60a7ed
commit
db6aa5158d
2 changed files with 73 additions and 11 deletions
|
|
@ -29,6 +29,7 @@ const Packages = ({ defaultArch, ...props }) => {
|
|||
const [ packagesAvailable, setPackagesAvailable ] = useState([]);
|
||||
const [ packagesAvailableFound, setPackagesAvailableFound ] = useState(true);
|
||||
const [ packagesChosen, setPackagesChosen ] = useState([]);
|
||||
const [ packagesChosenFound, setPackagesChosenFound ] = useState(true);
|
||||
const [ filterChosen, setFilterChosen ] = useState('');
|
||||
const [ focus, setFocus ] = useState('');
|
||||
|
||||
|
|
@ -96,15 +97,18 @@ const Packages = ({ defaultArch, ...props }) => {
|
|||
|
||||
// filter displayed selected packages
|
||||
const handlePackagesChosenSearch = () => {
|
||||
let found = false;
|
||||
const filteredPackagesChosen = packagesChosen.map((pack) => {
|
||||
if (!pack.name.includes(filterChosen)) {
|
||||
pack.isHidden = true;
|
||||
} else {
|
||||
pack.isHidden = false;
|
||||
found = true;
|
||||
}
|
||||
|
||||
return pack;
|
||||
});
|
||||
setPackagesChosenFound(found);
|
||||
setPackagesChosen(filteredPackagesChosen);
|
||||
};
|
||||
|
||||
|
|
@ -247,7 +251,7 @@ const Packages = ({ defaultArch, ...props }) => {
|
|||
<AngleDoubleRightIcon />
|
||||
</DualListSelectorControl>
|
||||
<DualListSelectorControl
|
||||
isDisabled={ packagesChosen.length === 0 }
|
||||
isDisabled={ !packagesChosen.length || !packagesChosenFound }
|
||||
onClick={ () => moveAll(false) }
|
||||
aria-label="Remove all"
|
||||
tooltipContent="Remove all">
|
||||
|
|
@ -255,7 +259,7 @@ const Packages = ({ defaultArch, ...props }) => {
|
|||
</DualListSelectorControl>
|
||||
<DualListSelectorControl
|
||||
onClick={ () => moveSelected(false) }
|
||||
isDisabled={ !packagesChosen.some(option => option.selected) }
|
||||
isDisabled={ !packagesChosen.some(option => option.selected) || !packagesChosenFound }
|
||||
aria-label="Remove selected"
|
||||
tooltipContent="Remove selected">
|
||||
<AngleLeftIcon />
|
||||
|
|
@ -265,6 +269,7 @@ const Packages = ({ defaultArch, ...props }) => {
|
|||
title="Chosen packages"
|
||||
searchInput={ <SearchInput
|
||||
placeholder="Search for a package"
|
||||
data-testid="search-chosen-pkgs-input"
|
||||
value={ filterChosen }
|
||||
onFocus={ () => setFocus('chosen') }
|
||||
onBlur={ () => setFocus('') }
|
||||
|
|
@ -273,17 +278,21 @@ const Packages = ({ defaultArch, ...props }) => {
|
|||
<Button
|
||||
aria-label="Search button for selected packages"
|
||||
key="selectedSearchButton"
|
||||
data-testid="search-selected-pkgs-button"
|
||||
data-testid="search-chosen-pkgs-button"
|
||||
onClick={ handlePackagesChosenSearch }>
|
||||
Search
|
||||
</Button>
|
||||
] }
|
||||
isChosen>
|
||||
<DualListSelectorList>
|
||||
{packagesChosen.length === 0 ? (
|
||||
<DualListSelectorList data-testid="chosen-pkgs-list">
|
||||
{!packagesChosen.length ? (
|
||||
<p className="pf-u-text-align-center pf-u-mt-md">
|
||||
No packages added
|
||||
</p>
|
||||
) : !packagesChosenFound ? (
|
||||
<p className="pf-u-text-align-center pf-u-mt-md">
|
||||
No packages found
|
||||
</p>
|
||||
) : (packagesChosen.map((pack, index) => {
|
||||
return !pack.isHidden ? (
|
||||
<DualListSelectorListItem
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue