Revision 7878a4a5
Added by Oleh Fedorenko 25 days ago
webpack/assets/javascripts/react_app/components/PF4/TableIndexPage/Table/TableHooks.js | ||
---|---|---|
export const useSelectionSet = ({
|
||
results,
|
||
metadata,
|
||
defaultArry = [],
|
||
initialArry = [],
|
||
idColumn = 'id',
|
||
isSelectable = () => true,
|
||
... | ... | |
}
|
||
}
|
||
};
|
||
const selectDefault = () => {
|
||
selectNone();
|
||
selectionSet.addAll(defaultArry);
|
||
defaultArry.forEach(id => {
|
||
selectedResults.current[id] = results.find(
|
||
result => result[idColumn] === id
|
||
);
|
||
});
|
||
};
|
||
|
||
const selectedCount = selectionSet.size;
|
||
|
||
... | ... | |
areAllRowsSelected,
|
||
selectPage,
|
||
selectNone,
|
||
selectDefault,
|
||
isSelected,
|
||
isSelectable: canSelect,
|
||
selectionSet,
|
||
... | ... | |
results,
|
||
metadata,
|
||
initialArry = [],
|
||
initialExclusionArry = [],
|
||
defaultArry = [],
|
||
initialSearchQuery = '',
|
||
idColumn = 'id',
|
||
filtersQuery = '',
|
||
isSelectable,
|
||
initialSelectAllMode = false,
|
||
}) => {
|
||
const { selectionSet: inclusionSet, ...selectOptions } = useSelectionSet({
|
||
results,
|
||
metadata,
|
||
initialArry,
|
||
defaultArry,
|
||
idColumn,
|
||
isSelectable,
|
||
});
|
||
const exclusionSet = useSet([]);
|
||
const exclusionSet = useSet(initialExclusionArry);
|
||
const [searchQuery, updateSearchQuery] = useState(initialSearchQuery);
|
||
const [selectAllMode, setSelectAllMode] = useState(false);
|
||
const [selectAllMode, setSelectAllMode] = useState(initialSelectAllMode);
|
||
const selectedCount = selectAllMode
|
||
? Number(metadata.selectable || metadata.total) - exclusionSet.size
|
||
: selectOptions.selectedCount;
|
||
... | ... | |
}
|
||
};
|
||
|
||
const selectDefault = () => {
|
||
selectNone();
|
||
selectOptions.selectDefault();
|
||
};
|
||
|
||
const fetchBulkParams = ({
|
||
idColumnName = idColumn,
|
||
selectAllQuery = '',
|
||
... | ... | |
selectPage,
|
||
selectNone,
|
||
selectAll,
|
||
selectDefault,
|
||
selectAllMode,
|
||
isSelected,
|
||
selectedCount,
|
||
... | ... | |
selectOne,
|
||
areAllRowsOnPageSelected,
|
||
areAllRowsSelected,
|
||
inclusionSet,
|
||
exclusionSet,
|
||
};
|
||
};
|
||
|
Also available in: Unified diff
Fixes #37307 - Add more control over SelectAllCheckbox