Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(react-components): Toolbar styling and missing buttons toggle #3653

Merged
merged 56 commits into from
Sep 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
4c3f8cd
Created hook for outside click to support toggle button. Corrected To…
pramodcog Aug 30, 2023
3a156a0
Merge master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Aug 30, 2023
3623e78
removed unused import
pramodcog Aug 30, 2023
a37cff6
Merge branch 'pramodcog/fix-react-components-issue-FDX-QA' of https:/…
pramodcog Aug 30, 2023
42a084a
resrtuctured useOutsideClick hook
pramodcog Aug 30, 2023
c370ea5
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Aug 31, 2023
6fcfad5
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Aug 31, 2023
661c6b4
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Aug 31, 2023
e86bc93
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Aug 31, 2023
f4de576
added border for toolbar & layers menu
pramodcog Aug 31, 2023
178e51f
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Aug 31, 2023
b212450
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 1, 2023
9280c2f
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 1, 2023
acd413b
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 4, 2023
11caabb
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 4, 2023
ca86047
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 4, 2023
122fbb7
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 4, 2023
7ee0ad4
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 4, 2023
197d96f
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 4, 2023
f30edaa
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 4, 2023
d518c27
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 4, 2023
a6f6552
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 4, 2023
91913a5
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 5, 2023
954bb8e
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 5, 2023
fec6a76
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 5, 2023
6334f3f
Merge master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 5, 2023
aabd9eb
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 5, 2023
85a8f6e
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 5, 2023
380c6ef
resturctured Help, Setting & Slicer button outside clicked by using D…
pramodcog Sep 5, 2023
2d2dc45
Merge branch 'pramodcog/fix-react-components-issue-FDX-QA' of https:/…
pramodcog Sep 5, 2023
4198fb7
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 5, 2023
ea393f2
removed unused variable
pramodcog Sep 5, 2023
72bea90
Merge branch 'pramodcog/fix-react-components-issue-FDX-QA' of https:/…
pramodcog Sep 5, 2023
5d19247
align setting menu to right-start
pramodcog Sep 5, 2023
a295499
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 6, 2023
7edc19d
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 6, 2023
a27598f
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 6, 2023
3412018
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 6, 2023
1f95d28
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 7, 2023
dae860a
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 7, 2023
d399757
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 7, 2023
7396d4b
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 7, 2023
1cacf1f
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 7, 2023
f0f23d5
moved outside click into LayerButton
pramodcog Sep 8, 2023
96a2d6d
fixed reveal toolbar to merge the custom styling
pramodcog Sep 8, 2023
003599f
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 8, 2023
8d0ef61
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 11, 2023
0e16e2a
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 11, 2023
aa8e676
fixed type error and removed warning on Function components for ref
pramodcog Sep 11, 2023
6793b57
Merge branch 'pramodcog/fix-react-components-issue-FDX-QA' of https:/…
pramodcog Sep 11, 2023
cc7927c
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 12, 2023
52810f5
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 12, 2023
0612f58
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 12, 2023
b3af395
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 13, 2023
a878d41
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 13, 2023
cbd2613
Merge refs/heads/master into pramodcog/fix-react-components-issue-FDX-QA
cognite-bulldozer[bot] Sep 13, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions react-components/src/components/RevealToolbar/HelpButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Copyright 2023 Cognite AS
*/

import { type ReactElement } from 'react';
import { useState, type ReactElement } from 'react';

import { Button, Dropdown, Tooltip as CogsTooltip } from '@cognite/cogs.js';
import styled from 'styled-components';
Expand All @@ -11,10 +11,15 @@ import { TouchNavigation } from './Help/TouchNavigation';
import { KeyboardNavigation } from './Help/KeyboardNavigation';

export const HelpButton = (): ReactElement => {
const [helpActive, setHelpActive] = useState<boolean>(false);

return (
<CogsTooltip content={'Help'} placement="right" appendTo={document.body}>
<Dropdown
appendTo={document.body}
onClickOutside={() => {
setHelpActive(false);
}}
content={
<StyledMenu>
<MouseNavigation />
Expand All @@ -23,7 +28,15 @@ export const HelpButton = (): ReactElement => {
</StyledMenu>
}
placement="right">
<Button type="ghost" icon="Help" aria-label="help-button" />
<Button
type="ghost"
icon="Help"
aria-label="help-button"
toggled={helpActive}
onClick={() => {
setHelpActive((prevState) => !prevState);
}}
/>
</Dropdown>
</CogsTooltip>
);
Expand Down
38 changes: 29 additions & 9 deletions react-components/src/components/RevealToolbar/LayersButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Copyright 2023 Cognite AS
*/

import { type ReactElement, useState, useEffect, useMemo, useRef } from 'react';
import { type ReactElement, useState, useEffect, useMemo, useRef, type RefObject } from 'react';
import { Button, Dropdown, Tooltip as CogsTooltip } from '@cognite/cogs.js';
import { type Reveal3DResourcesLayerStates } from './LayersContainer/types';
import LayersContainer from './LayersContainer/LayersContainer';
Expand Down Expand Up @@ -40,6 +40,25 @@ export const LayersButton = (): ReactElement => {
setVisible((prevState) => !prevState);
};

const useOutsideClick = (ref: RefObject<HTMLElement | null>): void => {
useEffect(() => {
const handleClick = (event: MouseEvent): void => {
if (ref.current !== null && !ref.current.contains(event.target as Node)) {
pramodcog marked this conversation as resolved.
Show resolved Hide resolved
setVisible(false);
}
};

document.addEventListener('click', handleClick);

return () => {
document.removeEventListener('click', handleClick);
};
}, [ref]);
};

const ref = useRef<HTMLButtonElement | null>(null);
useOutsideClick(ref);

useEffect(() => {
const currentModels = viewer.models;
// Compare the previous and current models to avoid infinite loop
Expand Down Expand Up @@ -148,12 +167,6 @@ export const LayersButton = (): ReactElement => {
setReveal3DResourcesLayerData(updated3DResourcesLayerData);
}, [updated3DResourcesLayerData]);

useEffect(() => {
viewer.on('click', () => {
setVisible(false);
});
}, [viewer]);

return (
<CogsTooltip content={'Filter 3D resource layers'} placement="right" appendTo={document.body}>
<Dropdown
Expand All @@ -167,8 +180,15 @@ export const LayersButton = (): ReactElement => {
/>
}
visible={visible}
placement="auto">
<Button type="ghost" icon="Layers" aria-label="3D Resource layers" onClick={showLayers} />
placement="right-start">
<Button
ref={ref}
type="ghost"
icon="Layers"
aria-label="3D Resource layers"
onClick={showLayers}
toggled={visible}
/>
</Dropdown>
</CogsTooltip>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,10 @@ export const CadModelLayersContainer = ({

const cadModelContent = (): ReactElement => {
return (
<StyledSubMenu>
<StyledSubMenu
onClick={(event: MouseEvent) => {
event.stopPropagation();
}}>
{cadLayerData.map((data) => (
<Menu.Item
key={uniqueId()}
Expand All @@ -85,7 +88,10 @@ export const CadModelLayersContainer = ({
};

return (
<>
<div
onClick={() => {
setVisible((prevState) => !prevState);
}}>
{cadLayerData.length > 0 && (
<Menu.Submenu
appendTo={revealContainerElement ?? document.body}
Expand All @@ -95,13 +101,7 @@ export const CadModelLayersContainer = ({
}}
content={cadModelContent()}
title="CAD models">
<Flex
direction="row"
justifyContent="space-between"
gap={4}
onClick={() => {
setVisible((prevState) => !prevState);
}}>
<Flex direction="row" justifyContent="space-between" gap={4}>
<Checkbox
checked={someModelVisible}
indeterminate={indeterminate}
Expand All @@ -116,6 +116,6 @@ export const CadModelLayersContainer = ({
</Flex>
</Menu.Submenu>
)}
</>
</div>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,10 @@ export const Image360CollectionLayerContainer = ({

const image360Content = (): ReactElement => {
return (
<StyledSubMenu>
<StyledSubMenu
onClick={(event: MouseEvent) => {
event.stopPropagation();
}}>
{image360LayerData.map((data) => (
<Menu.Item
key={uniqueId()}
Expand All @@ -82,7 +85,10 @@ export const Image360CollectionLayerContainer = ({
};

return (
<>
<div
onClick={() => {
setVisible((prevState) => !prevState);
}}>
{image360LayerData.length > 0 && (
<Menu.Submenu
appendTo={revealContainerElement ?? document.body}
Expand All @@ -92,12 +98,7 @@ export const Image360CollectionLayerContainer = ({
}}
content={image360Content()}
title="360 images">
<Flex
direction="row"
justifyContent="space-between"
onClick={() => {
setVisible((prevState) => !prevState);
}}>
<Flex direction="row" justifyContent="space-between">
<Checkbox
checked={someImagesVisible}
indeterminate={indeterminate}
Expand All @@ -112,6 +113,6 @@ export const Image360CollectionLayerContainer = ({
</Flex>
</Menu.Submenu>
)}
</>
</div>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ const LayersContainer = ({ props }: { props: Reveal3DResourcesLayersProps }): Re
<>
{(viewer.models.length > 0 || viewer.get360ImageCollections().length > 0) && (
<Container>
<StyledMenu>
<StyledMenu
onClick={(event: MouseEvent) => {
event.stopPropagation();
}}>
<CadModelLayersContainer layerProps={props} />
<PointCloudLayersContainer layerProps={props} />
<Image360CollectionLayerContainer layerProps={props} />
Expand All @@ -35,6 +38,7 @@ const Container = styled.div`
const StyledMenu = styled(Menu)`
padding: 6px;
width: 214px;
border: 1px solid rgba(83, 88, 127, 0.24);
`;

export default LayersContainer;
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ export const PointCloudLayersContainer = ({

const pointCloudModelContent = (): ReactElement => {
return (
<StyledSubMenu>
<StyledSubMenu
onClick={(event: MouseEvent) => {
event.stopPropagation();
}}>
{pointCloudLayerData.map((data) => (
<Menu.Item
key={uniqueId()}
Expand All @@ -77,7 +80,10 @@ export const PointCloudLayersContainer = ({
};

return (
<>
<div
onClick={() => {
setVisible((prevState) => !prevState);
}}>
{pointCloudLayerData.length > 0 && (
<Menu.Submenu
appendTo={revealContainerElement ?? document.body}
Expand All @@ -87,12 +93,7 @@ export const PointCloudLayersContainer = ({
}}
content={pointCloudModelContent()}
title="Point clouds">
<Flex
direction="row"
justifyContent="space-between"
onClick={() => {
setVisible((prevState) => !prevState);
}}>
<Flex direction="row" justifyContent="space-between">
<Checkbox
checked={someModelVisible}
indeterminate={indeterminate}
Expand All @@ -107,6 +108,6 @@ export const PointCloudLayersContainer = ({
</Flex>
</Menu.Submenu>
)}
</>
</div>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import styled from 'styled-components';
export const StyledSubMenu = styled(Menu)`
padding: 8px;
overflow-y: auto;
border: 1px solid rgba(83, 88, 127, 0.24);
max-height: 300px;
::-webkit-scrollbar {
width: 8px;
Expand Down
70 changes: 39 additions & 31 deletions react-components/src/components/RevealToolbar/RevealToolbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Copyright 2023 Cognite AS
*/

import { type ReactElement, type JSX } from 'react';
import { type ReactElement, type JSX, forwardRef, type Ref } from 'react';
import { I18nWrapper } from '@cognite/cdf-i18n-utils';
import { ToolBar, type ToolBarProps } from '@cognite/cogs.js';
import { FitModelsButton } from './FitModelsButton';
Expand All @@ -14,14 +14,18 @@ import { MeasurementButton } from './MeasurementButton';
import { HelpButton } from './HelpButton';
import { type QualitySettings } from './SettingsContainer/types';
import { translations } from '../../common/i18n';
import styled from 'styled-components';

const defaultStyle: ToolBarProps = {
style: {
position: 'absolute',
left: '20px',
top: '70px'
}
};
const StyledToolBar = styled(ToolBar)`
position: absolute;
left: 20px;
top: 70px;
width: 48px;
padding: 6px;
gap: 8px;
border-radius: 8px;
border: 1px solid rgba(83, 88, 127, 0.24);
`;

type RevealToolbarProps = ToolBarProps & CustomContent;

Expand Down Expand Up @@ -54,30 +58,34 @@ const DefaultContentWrapper = (props: CustomContent): ReactElement => {
);
};

const RevealToolbarContainer = ({
customSettingsContent,
lowFidelitySettings,
highFidelitySettings,
toolBarContent,
...restProps
}: RevealToolbarProps & { toolBarContent?: JSX.Element }): ReactElement => {
if (restProps.className === undefined && restProps.style === undefined) {
restProps = { ...restProps, ...defaultStyle };
const RevealToolbarContainer = forwardRef(
(
{
customSettingsContent,
lowFidelitySettings,
highFidelitySettings,
toolBarContent,
...restProps
}: RevealToolbarProps & { toolBarContent?: JSX.Element },
ref: Ref<HTMLDivElement>
): ReactElement => {
return (
<I18nWrapper translations={translations} addNamespace="reveal-react-components">
<StyledToolBar {...restProps} ref={ref}>
{toolBarContent ?? (
<DefaultContentWrapper
customSettingsContent={customSettingsContent}
highFidelitySettings={highFidelitySettings}
lowFidelitySettings={lowFidelitySettings}
/>
)}
</StyledToolBar>
</I18nWrapper>
);
}
return (
<I18nWrapper translations={translations} addNamespace="reveal-react-components">
<ToolBar {...restProps}>
{toolBarContent ?? (
<DefaultContentWrapper
customSettingsContent={customSettingsContent}
highFidelitySettings={highFidelitySettings}
lowFidelitySettings={lowFidelitySettings}
/>
)}
</ToolBar>
</I18nWrapper>
);
};
);

RevealToolbarContainer.displayName = 'RevealToolbarContainer';

export const RevealToolbar = withSuppressRevealEvents(
RevealToolbarContainer
Expand Down
Loading
Loading