Web:Components:Selector: disable braed crumbs click while body is loading

This commit is contained in:
Timofey Boyko 2023-06-19 18:18:39 +03:00
parent 5351178713
commit cb0795ea76
4 changed files with 13 additions and 5 deletions

View File

@ -123,6 +123,7 @@ const Body = ({
<BreadCrumbs
breadCrumbs={breadCrumbs}
onSelectBreadCrumb={onSelectBreadCrumb}
isLoading={isLoading}
/>
)
) : null}

View File

@ -19,4 +19,5 @@ export type DisplayedItem = {
export type BreadCrumbsProps = {
breadCrumbs?: BreadCrumb[];
onSelectBreadCrumb?: (item: BreadCrumb) => void;
isLoading?: boolean;
};

View File

@ -29,13 +29,13 @@ const StyledBreadCrumbs = styled.div<{
}
`;
const StyledItemText = styled(Text)<{ isCurrent: boolean }>`
const StyledItemText = styled(Text)<{ isCurrent: boolean; isLoading: boolean }>`
${(props) =>
!props.isCurrent &&
css`
color: ${props.theme.selector.breadCrumbs.prevItemColor};
cursor: pointer;
${!props.isLoading && `cursor: pointer`};
`}
`;

View File

@ -14,16 +14,21 @@ import {
StyledArrowRightSvg,
} from "./StyledBreadCrumbs";
const BreadCrumbs = ({ breadCrumbs, onSelectBreadCrumb }: BreadCrumbsProps) => {
const BreadCrumbs = ({
breadCrumbs,
onSelectBreadCrumb,
isLoading,
}: BreadCrumbsProps) => {
const [displayedItems, setDisplayedItems] = React.useState<DisplayedItem[]>(
[]
);
const onClickItem = React.useCallback(
(e, open, item: BreadCrumb) => {
if (isLoading) return;
onSelectBreadCrumb && onSelectBreadCrumb(item);
},
[breadCrumbs]
[breadCrumbs, isLoading]
);
const calculateDisplayedItems = React.useCallback(
@ -173,8 +178,9 @@ const BreadCrumbs = ({ breadCrumbs, onSelectBreadCrumb }: BreadCrumbsProps) => {
noSelect
truncate
isCurrent={index === displayedItems.length - 1}
isLoading={isLoading}
onClick={() => {
if (index === displayedItems.length - 1) return;
if (index === displayedItems.length - 1 || isLoading) return;
onSelectBreadCrumb &&
onSelectBreadCrumb({