feat: tigger socket event to display dropdown

This commit is contained in:
RohitR311
2024-12-19 14:04:05 +05:30
parent d8b5ae4113
commit 7bd7a84173

View File

@@ -4,6 +4,7 @@ import { getMappedCoordinates } from "../../helpers/inputHelpers";
import { useGlobalInfoStore } from "../../context/globalInfo"; import { useGlobalInfoStore } from "../../context/globalInfo";
import { useActionContext } from '../../context/browserActions'; import { useActionContext } from '../../context/browserActions';
import DatePicker from './DatePicker'; import DatePicker from './DatePicker';
import Dropdown from './Dropdown';
interface CreateRefCallback { interface CreateRefCallback {
(ref: React.RefObject<HTMLCanvasElement>): void; (ref: React.RefObject<HTMLCanvasElement>): void;
@@ -37,6 +38,17 @@ const Canvas = ({ width, height, onCreateRef }: CanvasProps) => {
selector: string; selector: string;
} | null>(null); } | null>(null);
const [dropdownInfo, setDropdownInfo] = React.useState<{
coordinates: Coordinates;
selector: string;
options: Array<{
value: string;
text: string;
disabled: boolean;
selected: boolean;
}>;
} | null>(null);
const notifyLastAction = (action: string) => { const notifyLastAction = (action: string) => {
if (lastAction !== action) { if (lastAction !== action) {
setLastAction(action); setLastAction(action);
@@ -56,8 +68,22 @@ const Canvas = ({ width, height, onCreateRef }: CanvasProps) => {
setDatePickerInfo(info); setDatePickerInfo(info);
}); });
socket.on('showDropdown', (info: {
coordinates: Coordinates,
selector: string,
options: Array<{
value: string;
text: string;
disabled: boolean;
selected: boolean;
}>;
}) => {
setDropdownInfo(info);
});
return () => { return () => {
socket.off('showDatePicker'); socket.off('showDatePicker');
socket.off('showDropdown');
}; };
} }
}, [socket]); }, [socket]);
@@ -171,6 +197,14 @@ const Canvas = ({ width, height, onCreateRef }: CanvasProps) => {
onClose={() => setDatePickerInfo(null)} onClose={() => setDatePickerInfo(null)}
/> />
)} )}
{dropdownInfo && (
<Dropdown
coordinates={dropdownInfo.coordinates}
selector={dropdownInfo.selector}
options={dropdownInfo.options}
onClose={() => setDropdownInfo(null)}
/>
)}
</div> </div>
); );