-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFieldLocationIcon.tsx
More file actions
95 lines (87 loc) · 3.14 KB
/
FieldLocationIcon.tsx
File metadata and controls
95 lines (87 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import classNames from "classnames";
import { visualBuilderStyles } from "../visualBuilder.style";
import { EmptyAppIcon } from "./icons/EmptyAppIcon";
import { MoreIcon } from "./icons";
import React, { useRef } from "preact/compat";
import { LoadingIcon } from "./icons/loading";
import { VisualBuilderPostMessageEvents } from "../utils/types/postMessage.types";
import visualBuilderPostMessage from "../utils/visualBuilderPostMessage";
import { CslpData } from "../../utils/cslpdata";
export const FieldLocationIcon = ({
fieldLocationData,
multipleFieldToolbarButtonClasses,
handleMoreIconClick,
moreButtonRef,
toolbarRef,
domEditStack
}: {
fieldLocationData: any;
multipleFieldToolbarButtonClasses: any;
handleMoreIconClick: () => void;
moreButtonRef: any;
toolbarRef: any;
domEditStack:CslpData[]
}) => {
if (!fieldLocationData?.apps || fieldLocationData.apps.length === 0) {
return null;
}
const handleAppClick = (app: any) => {
if(!toolbarRef.current) return
visualBuilderPostMessage?.send(VisualBuilderPostMessageEvents.FIELD_LOCATION_SELECTED_APP, {
app,
position: toolbarRef.current?.getBoundingClientRect(),
DomEditStack:domEditStack
});
};
return (
<div
ref={toolbarRef}
className={classNames(
visualBuilderStyles()[
"visual-builder__field-location-icons-container"
]
)}
>
<hr
className={visualBuilderStyles()["visual-builder__field-location-icons-container__divider"]}
/>
<button
key={`${fieldLocationData.apps[0].uid}`}
title={fieldLocationData.apps[0].title}
className={multipleFieldToolbarButtonClasses}
data-tooltip={fieldLocationData.apps[0].title}
onClick={(e) => {
e.preventDefault();
e.stopPropagation();
handleAppClick(fieldLocationData.apps[0]);
}}
data-testid="field-location-icon"
>
{fieldLocationData.apps[0].icon ? (
<img
src={fieldLocationData.apps[0].icon}
alt={fieldLocationData.apps[0].title}
className={visualBuilderStyles()["visual-builder__field-location-icons-container__app-icon"]}
/>
) : (
<EmptyAppIcon
id={fieldLocationData.apps[0].app_installation_uid}
/>
)}
</button>
{
fieldLocationData.apps.length > 1 && (
<button
ref={moreButtonRef}
className={multipleFieldToolbarButtonClasses}
data-tooltip={"More"}
onClick={handleMoreIconClick}
data-testid="field-location-more-button"
>
<MoreIcon />
</button>
)
}
</div>
);
};