Skip to content

Commit 5474367

Browse files
committed
feat: Open sidebar from map
1 parent 814b350 commit 5474367

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

src/app/components/PropertyDetailSection.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,18 @@ interface PropertyDetailSectionProps {
3333
featuresInView: MapboxGeoJSONFeature[];
3434
display: "detail" | "list";
3535
loading: boolean;
36+
selectedProperty: MapboxGeoJSONFeature | null;
37+
setSelectedProperty: (property: MapboxGeoJSONFeature | null) => void;
3638
}
3739

3840
const PropertyDetailSection: FC<PropertyDetailSectionProps> = ({
3941
featuresInView,
4042
display,
4143
loading,
44+
selectedProperty,
45+
setSelectedProperty,
4246
}) => {
4347
const [page, setPage] = useState(1);
44-
const [selectedProperty, setSelectedProperty] =
45-
useState<MapboxGeoJSONFeature | null>(null);
4648

4749
const rowsPerPage = 6;
4850
const pages = Math.ceil(featuresInView.length / rowsPerPage);

src/app/components/PropertyMap.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import Map, {
2424
AttributionControl,
2525
} from "react-map-gl";
2626
import { FillLayer, VectorSourceRaw } from "react-map-gl";
27+
import { MapboxGeoJSONFeature } from "mapbox-gl";
28+
2729
import MapboxGeocoder from "@mapbox/mapbox-gl-geocoder";
2830
import "@mapbox/mapbox-gl-geocoder/dist/mapbox-gl-geocoder.css";
2931

@@ -70,10 +72,12 @@ const MapControls = () => (
7072
interface PropertyMapProps {
7173
setFeaturesInView: Dispatch<SetStateAction<any[]>>;
7274
setLoading: Dispatch<SetStateAction<boolean>>;
75+
setSelectedProperty: (property: MapboxGeoJSONFeature | null) => void;
7376
}
7477
const PropertyMap: React.FC<PropertyMapProps> = ({
7578
setFeaturesInView,
7679
setLoading,
80+
setSelectedProperty,
7781
}: any) => {
7882
const { filter } = useFilter();
7983
const [popupInfo, setPopupInfo] = useState<any | null>(null);
@@ -115,6 +119,7 @@ const PropertyMap: React.FC<PropertyMapProps> = ({
115119
});
116120

117121
if (features.length > 0) {
122+
setSelectedProperty(features[0]);
118123
setPopupInfo({
119124
longitude: event.lngLat.lng,
120125
latitude: event.lngLat.lat,

src/app/map/page.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@ import {
1111
SidePanelControlBar,
1212
FilterView,
1313
} from "../components";
14+
import { MapboxGeoJSONFeature } from "mapbox-gl";
1415

1516
export type BarClickOptions = "filter" | "download" | "detail" | "list";
1617

1718
const Page: FC = () => {
1819
const [featuresInView, setFeaturesInView] = useState<any[]>([]);
1920
const [currentView, setCurrentView] = useState<BarClickOptions>("detail");
2021
const [loading, setLoading] = useState(false);
22+
const [selectedProperty, setSelectedProperty] = useState<MapboxGeoJSONFeature | null>(null);
2123

2224
return (
2325
<FilterProvider>
@@ -29,6 +31,7 @@ const Page: FC = () => {
2931
<PropertyMap
3032
setFeaturesInView={setFeaturesInView}
3133
setLoading={setLoading}
34+
setSelectedProperty={setSelectedProperty}
3235
/>
3336
</div>
3437
<SidePanel>
@@ -42,6 +45,8 @@ const Page: FC = () => {
4245
featuresInView={featuresInView}
4346
display={currentView as "detail" | "list"}
4447
loading={loading}
48+
selectedProperty={selectedProperty}
49+
setSelectedProperty={setSelectedProperty}
4550
/>
4651
)}
4752
{currentView === "download" && (

0 commit comments

Comments
 (0)