Skip to content

Commit e74d151

Browse files
committed
fixup! ui-manchette: fix waypoint menu positioning
1 parent c343ac1 commit e74d151

File tree

6 files changed

+21
-18
lines changed

6 files changed

+21
-18
lines changed

ui-manchette/src/components/Manchette.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import type { StyledOperationalPointType, WaypointMenuData } from '../types';
99

1010
type ManchetteProps = {
1111
operationalPoints: StyledOperationalPointType[];
12-
waypointMenuData: WaypointMenuData;
12+
waypointMenuData?: WaypointMenuData;
1313
zoomYIn: () => void;
1414
zoomYOut: () => void;
1515
resetZoom: () => void;

ui-manchette/src/components/OperationalPoint.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ type OperationalPointProps = {
1212
isActive: boolean;
1313
waypointMenuItems?: WaypointMenuItem[];
1414
waypointMenuClassName?: string;
15+
index: number;
1516
};
1617

1718
const OperationalPoint = ({
1819
operationalPoint: { extensions, id, position, display, onClick },
1920
isActive,
2021
waypointMenuItems,
2122
waypointMenuClassName,
23+
index,
2224
}: OperationalPointProps) => {
2325
const opRef = useRef<HTMLDivElement>(null);
2426

@@ -32,7 +34,7 @@ const OperationalPoint = ({
3234
id={id}
3335
ref={opRef}
3436
onClick={() => {
35-
if (onClick) onClick(`${id}-${position}`); // to handle waypoints with same id
37+
if (onClick) onClick(index);
3638
}}
3739
>
3840
<div className="op-position justify-self-start text-end">{positionMmToKm(position)}</div>

ui-manchette/src/components/OperationalPointList.tsx

+7-6
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,26 @@ import type { WaypointMenuData, StyledOperationalPointType } from '../types';
55

66
type OperationalPointListProps = {
77
operationalPoints: StyledOperationalPointType[];
8-
waypointMenuData: WaypointMenuData;
8+
waypointMenuData?: WaypointMenuData;
99
};
1010

1111
const OperationalPointList = ({
1212
operationalPoints,
13-
waypointMenuData: { activeOperationalPointId, waypointMenuItems, waypointMenuClassName },
13+
waypointMenuData,
1414
}: OperationalPointListProps) => (
1515
<div className="operational-point-list ">
16-
{operationalPoints.map((op) => (
16+
{operationalPoints.map((op, index) => (
1717
<div
1818
key={op.id}
1919
className="operational-point-wrapper flex flex-col justify-start"
2020
style={op.styles}
2121
>
2222
<OperationalPoint
2323
operationalPoint={op}
24-
isActive={activeOperationalPointId === `${op.id}-${op.position}`}
25-
waypointMenuItems={waypointMenuItems}
26-
waypointMenuClassName={waypointMenuClassName}
24+
isActive={waypointMenuData?.activeWaypointIndex === index}
25+
waypointMenuItems={waypointMenuData?.waypointMenuItems}
26+
waypointMenuClassName={waypointMenuData?.waypointMenuClassName}
27+
index={index}
2728
/>
2829
</div>
2930
))}

ui-manchette/src/components/WaypointMenu.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ type WaypointMenuProps = HTMLAttributes<unknown> & {
1515
*/
1616
const WaypointMenu = ({ items, className }: WaypointMenuProps) => (
1717
<div className={className}>
18-
{items.map(({ title, icon, onClick }) => (
18+
{items.map(({ title, icon, onClick }, index) => (
1919
<button
20-
key={title}
20+
key={index}
2121
type="button"
2222
onClick={(e) => {
2323
onClick(e);

ui-manchette/src/stories/Manchette.stories.tsx

+6-6
Original file line numberDiff line numberDiff line change
@@ -32,29 +32,29 @@ const meta: Meta<typeof Manchette> = {
3232
};
3333

3434
const ManchetteWithWaypointMenu = () => {
35-
const [activeOperationalPointId, setActiveOperationalPointId] = useState<string>();
35+
const [activeWaypointIndex, setActiveWaypointPointIndex] = useState<number>();
3636

3737
const menuItems: WaypointMenuItem[] = [
3838
{
3939
title: 'Action 1',
4040
icon: <EyeClosed />,
4141
onClick: (e: React.MouseEvent) => {
4242
e.stopPropagation();
43-
setActiveOperationalPointId(undefined);
43+
setActiveWaypointPointIndex(undefined);
4444
},
4545
},
4646
{
4747
title: 'Action 2',
4848
icon: <Telescope />,
4949
onClick: (e: React.MouseEvent) => {
5050
e.stopPropagation();
51-
setActiveOperationalPointId(undefined);
51+
setActiveWaypointPointIndex(undefined);
5252
},
5353
},
5454
];
5555

56-
const handleWaypointClick = (id: string) => {
57-
setActiveOperationalPointId(id);
56+
const handleWaypointClick = (waypointIndex: number) => {
57+
setActiveWaypointPointIndex(waypointIndex);
5858
};
5959

6060
return (
@@ -68,7 +68,7 @@ const ManchetteWithWaypointMenu = () => {
6868
resetZoom={() => {}}
6969
toggleMode={() => {}}
7070
waypointMenuData={{
71-
activeOperationalPointId,
71+
activeWaypointIndex,
7272
waypointMenuItems: menuItems,
7373
waypointMenuClassName: 'menu',
7474
}}

ui-manchette/src/types.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ export type OperationalPointType = ArrayElement<PathProperties['operational_poin
5151
export type StyledOperationalPointType = OperationalPointType & {
5252
styles?: CSSProperties;
5353
display?: boolean;
54-
onClick?: (opId: string) => void;
54+
onClick?: (opIndex: number) => void;
5555
};
5656

5757
export type WaypointMenuData = {
58-
activeOperationalPointId?: string;
58+
activeWaypointIndex?: number;
5959
waypointMenuItems?: WaypointMenuItem[];
6060
waypointMenuClassName?: string;
6161
};

0 commit comments

Comments
 (0)