nestiq-component-library 1.1.141 → 1.1.142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/images/{card-arrow-left.28090aba4b4f2006.svg → card-arrow-left.55343410142dad3f.svg} +4 -4
- package/dist/assets/images/{card-arrow-right.c60af4cbbd49f3aa.svg → card-arrow-right.60b3bf0e34c1800d.svg} +4 -4
- package/dist/assets/images/{imooly.890e3dd01ea33574.svg → imooly.b46514ac970e6052.svg} +7 -7
- package/dist/assets/images/{more.1e158adc48fbb406.svg → more.ce14789c8d37e327.svg} +12 -12
- package/dist/index.es.js +41 -51
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +41 -51
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/rollup.config.mjs +36 -36
- package/src/assets/images/card-arrow-left.svg +4 -4
- package/src/assets/images/card-arrow-right.svg +4 -4
- package/src/assets/images/imooly.svg +7 -7
- package/src/assets/images/more.svg +12 -12
- package/src/components/FloorPlanPopup/FloorPlanPopup.css +3 -3
- package/src/components/FloorPlanPopup/FloorPlanPopup.tsx +83 -83
- package/src/components/ImageListPopup/ImageListPopup.css +83 -83
- package/src/components/ImageListPopup/ImageListPopup.tsx +141 -141
- package/src/components/NewPropertyCard/NewPropertyCard.css +52 -43
- package/src/components/NewPropertyCard/NewPropertyCard.tsx +358 -359
- package/src/components/Popup/Popup.tsx +29 -29
- package/src/components/ToastWrapper/ToastWrapper.tsx +25 -25
- package/src/models/message.model.ts +7 -7
- package/dist/assets/images/Icon_rightArrow.svg +0 -3
- package/dist/assets/images/LayersIcon.svg +0 -5
- package/dist/assets/images/blackarrow-Right.svg +0 -3
- package/dist/assets/images/blckarrow-Left.svg +0 -3
- package/dist/assets/images/chevron-left.svg +0 -3
- package/dist/assets/images/default-property.jpg +0 -0
- package/dist/assets/images/heartIcon.svg +0 -3
- package/dist/assets/images/icon-close-white.webp +0 -0
- package/dist/assets/images/icon_close 2.e41bb9a4db48e048.png +0 -0
- package/dist/assets/images/icon_close_2.png +0 -0
- package/dist/assets/images/icon_gallery.svg +0 -4
- package/dist/assets/images/icon_map.svg +0 -10
- package/dist/assets/images/icon_share_1.svg +0 -3
- package/dist/assets/images/layer_icon.svg +0 -5
- package/dist/assets/images/locationIcon.0af399c78e0cdc20.svg +0 -4
- package/dist/assets/images/locationIcon.svg +0 -4
- package/dist/assets/images/locationIconBlack.svg +0 -4
- package/dist/assets/images/no-image-icon.png +0 -0
- package/dist/components/Button/Button.js +0 -6
- package/dist/components/ImageListPopup/ImageListPopup.js +0 -26
- package/dist/components/MessagePopup/ErrorPopup.d.ts +0 -7
- package/dist/components/Popup/Popup.js +0 -12
- package/dist/components/SharePopup/PopUp.d.ts +0 -7
|
@@ -1,359 +1,358 @@
|
|
|
1
|
-
import React, { useRef, useState } from "react";
|
|
2
|
-
// import { FormattedMessage } from "react-intl";
|
|
3
|
-
import locationIcon from "../../assets/images/locationIcon.svg";
|
|
4
|
-
import "../NewPropertyCard/NewPropertyCard.css";
|
|
5
|
-
import noImageIcon from "../../assets/Images/default-property.jpg";
|
|
6
|
-
import { formatPrice } from "../../functions/util";
|
|
7
|
-
import shareIcon from "../../assets/Images/icon_share_1.svg";
|
|
8
|
-
import moreIcon from "../../assets/Images/more.svg";
|
|
9
|
-
import arrowLeft from "../../assets/Images/card-arrow-left.svg";
|
|
10
|
-
import arrowRight from "../../assets/Images/card-arrow-right.svg";
|
|
11
|
-
import iconLayers from "../../assets/Images/layer_icon.svg";
|
|
12
|
-
import FloorPlanPopup from "../FloorPlanPopup/FloorPlanPopup";
|
|
13
|
-
// import MessagePopUp from "../MessagePopup/MessagePopUp";
|
|
14
|
-
import SharePopup from "../SharePopup/SharePopup";
|
|
15
|
-
import { MessageModel } from "../../models/message.model";
|
|
16
|
-
import immooly from "../../assets/images/imooly.svg";
|
|
17
|
-
|
|
18
|
-
interface PopupProps {
|
|
19
|
-
property: {
|
|
20
|
-
city: string;
|
|
21
|
-
propertyArea: string;
|
|
22
|
-
historicalProtection: boolean;
|
|
23
|
-
basement: boolean;
|
|
24
|
-
balcony: boolean;
|
|
25
|
-
terrace: boolean;
|
|
26
|
-
guestBathroom: boolean;
|
|
27
|
-
bathrooms: string;
|
|
28
|
-
usableArea: string;
|
|
29
|
-
id: string;
|
|
30
|
-
rooms: string;
|
|
31
|
-
constructedArea: string;
|
|
32
|
-
title: string;
|
|
33
|
-
evaluation?: {
|
|
34
|
-
askingPrice: number;
|
|
35
|
-
};
|
|
36
|
-
expose: {
|
|
37
|
-
title: string;
|
|
38
|
-
};
|
|
39
|
-
pictures: { contentUrl: string }[];
|
|
40
|
-
};
|
|
41
|
-
Impliment: any;
|
|
42
|
-
baseUrl: string;
|
|
43
|
-
themesList: any;
|
|
44
|
-
floorPlanUrl: string;
|
|
45
|
-
// onMessagePopupSubmitClick: (formValues: MessageModel) => void;
|
|
46
|
-
messageOnClick: () => void;
|
|
47
|
-
onclickSuccess: () => void;
|
|
48
|
-
onClick: () => void;
|
|
49
|
-
}
|
|
50
|
-
export default function PropertyCard(props: PopupProps) {
|
|
51
|
-
const [liked, setLiked] = useState(false);
|
|
52
|
-
const [mainImage, setMainImage] = useState<string | null>(null);
|
|
53
|
-
const [currentImageIndex, setCurrentImageIndex] = useState(0);
|
|
54
|
-
const imageListRef = useRef<HTMLDivElement>(null);
|
|
55
|
-
const [floorPlan, setFloorPlan] = useState(false);
|
|
56
|
-
const [messagePopUp, setMessagPopUp] = useState(false);
|
|
57
|
-
const [sharePopUp, setSharePopUp] = useState(false);
|
|
58
|
-
|
|
59
|
-
const pictureUrls =
|
|
60
|
-
props.property?.pictures?.length > 0
|
|
61
|
-
? props.property.pictures.map(
|
|
62
|
-
(picture) => `${props.baseUrl}${picture.contentUrl}
|
|
63
|
-
)
|
|
64
|
-
: [noImageIcon];
|
|
65
|
-
|
|
66
|
-
// setPictureUrls(pictureUrls);
|
|
67
|
-
const handleLike = () => {
|
|
68
|
-
setLiked(!liked);
|
|
69
|
-
};
|
|
70
|
-
const floorPlanOnClick = () => {
|
|
71
|
-
if (props.floorPlanUrl) {
|
|
72
|
-
setFloorPlan(true);
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
const handleMessagPopUp = () => {
|
|
76
|
-
// setMessagPopUp(true);
|
|
77
|
-
props.messageOnClick();
|
|
78
|
-
};
|
|
79
|
-
const handleSharePopUp = () => {
|
|
80
|
-
setSharePopUp(true);
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
const handleArrowClickInMainImage = (direction: string) => {
|
|
84
|
-
if (!props.property || pictureUrls.length === 0) return;
|
|
85
|
-
|
|
86
|
-
let newIndex = currentImageIndex;
|
|
87
|
-
if (direction === "left") {
|
|
88
|
-
newIndex =
|
|
89
|
-
(currentImageIndex - 1 + pictureUrls.length) % pictureUrls.length;
|
|
90
|
-
} else if (direction === "right") {
|
|
91
|
-
newIndex = (currentImageIndex + 1) % pictureUrls.length;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
setCurrentImageIndex(newIndex);
|
|
95
|
-
setMainImage(pictureUrls[newIndex]);
|
|
96
|
-
|
|
97
|
-
// Ensure the ref exists before calling scrollTo
|
|
98
|
-
if (imageListRef.current) {
|
|
99
|
-
imageListRef.current.scrollTo({
|
|
100
|
-
left: newIndex * 150,
|
|
101
|
-
behavior: "smooth",
|
|
102
|
-
});
|
|
103
|
-
} else {
|
|
104
|
-
console.warn("imageListRef is not set");
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
// const boosted = "true";
|
|
108
|
-
|
|
109
|
-
return (
|
|
110
|
-
<div className="d-flex flex-row property-card">
|
|
111
|
-
<div className="d-flex flex-column col-md-6 col-lg-6">
|
|
112
|
-
<div
|
|
113
|
-
key={props.property.id}
|
|
114
|
-
className="card-bod position-relative cardStyles h-100 w-100"
|
|
115
|
-
style={{
|
|
116
|
-
backgroundImage: `url(${mainImage || pictureUrls[0]})`,
|
|
117
|
-
backgroundSize: "cover",
|
|
118
|
-
backgroundPosition: "center",
|
|
119
|
-
maxWidth: "640",
|
|
120
|
-
}}
|
|
121
|
-
>
|
|
122
|
-
<div className="d-flex flex-row col-12 justify-content-between ">
|
|
123
|
-
<div
|
|
124
|
-
className="d-felx align-self-start justify-items-start ms-4 "
|
|
125
|
-
style={{ left: "16px" }}
|
|
126
|
-
onClick={() => handleArrowClickInMainImage("left")}
|
|
127
|
-
role="button"
|
|
128
|
-
>
|
|
129
|
-
<img src={arrowLeft} />
|
|
130
|
-
</div>
|
|
131
|
-
<div></div>
|
|
132
|
-
<div
|
|
133
|
-
className="d-flex align-self-end justify-items-end me-4"
|
|
134
|
-
onClick={() => handleArrowClickInMainImage("right")}
|
|
135
|
-
role="button"
|
|
136
|
-
>
|
|
137
|
-
<img src={arrowRight} style={{ right: "16px" }} />
|
|
138
|
-
</div>
|
|
139
|
-
</div>
|
|
140
|
-
<div
|
|
141
|
-
className="d-flex flex-row align-self-end justify-item-start justify-content-between align-item-start gap-1 mb-2 ms-4"
|
|
142
|
-
style={{ position: "absolute", left: "0" }}
|
|
143
|
-
>
|
|
144
|
-
<div className="cardTag" style={{ marginBottom: "16px" }}>{`${
|
|
145
|
-
currentImageIndex + 1
|
|
146
|
-
}/${pictureUrls.length}`}</div>
|
|
147
|
-
<div
|
|
148
|
-
className="Grundriss kontact-button-text ms-2 "
|
|
149
|
-
role="button"
|
|
150
|
-
onClick={floorPlanOnClick}
|
|
151
|
-
style={{ marginBottom: "16px" }}
|
|
152
|
-
>
|
|
153
|
-
<img src={iconLayers} className="" style={{ width: "18px" }} />{" "}
|
|
154
|
-
Grundriss
|
|
155
|
-
</div>
|
|
156
|
-
</div>
|
|
157
|
-
</div>
|
|
158
|
-
</div>
|
|
159
|
-
<div
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
<div
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
</
|
|
246
|
-
</span>
|
|
247
|
-
</div>
|
|
248
|
-
<div
|
|
249
|
-
className="labelTopClass d-flex start-0 col-sm-5 col-lg-8 "
|
|
250
|
-
style={{ padding: "28px" }}
|
|
251
|
-
>
|
|
252
|
-
<div className=" align-items-center d-flex flex-row gap-3">
|
|
253
|
-
{props.property.historicalProtection && (
|
|
254
|
-
<label className="
|
|
255
|
-
<span className="layersText
|
|
256
|
-
</label>
|
|
257
|
-
)}
|
|
258
|
-
|
|
259
|
-
{props.property.basement && (
|
|
260
|
-
<label className="
|
|
261
|
-
<span className="layersText
|
|
262
|
-
</label>
|
|
263
|
-
)}
|
|
264
|
-
{props.property.balcony && (
|
|
265
|
-
<label className="
|
|
266
|
-
<span className="layersText
|
|
267
|
-
</label>
|
|
268
|
-
)}
|
|
269
|
-
{props.property.terrace && (
|
|
270
|
-
<label className="
|
|
271
|
-
<span className="layersText">{"Terrace"}</span>
|
|
272
|
-
</label>
|
|
273
|
-
)}
|
|
274
|
-
{props.property.guestBathroom && (
|
|
275
|
-
<label className="
|
|
276
|
-
<span className="layersText
|
|
277
|
-
</label>
|
|
278
|
-
)}
|
|
279
|
-
</div>
|
|
280
|
-
</div>
|
|
281
|
-
{props.Impliment && (
|
|
282
|
-
<div
|
|
283
|
-
className=""
|
|
284
|
-
style={{
|
|
285
|
-
paddingLeft: "32px",
|
|
286
|
-
paddingRight: "32px",
|
|
287
|
-
}}
|
|
288
|
-
>
|
|
289
|
-
<div className="Frame-136 d-flex flex-row">
|
|
290
|
-
<div className="d-flex flex-column flex-lg-row col-4 justify-content-between ">
|
|
291
|
-
<img src={immooly} alt="Logo" className="immooly" />
|
|
292
|
-
</div>
|
|
293
|
-
<div className="ms-2 d-flex flex-column col-8 justify-content-center align-self-center text-center">
|
|
294
|
-
<span className="fw-bold">Herr Florian Gauss</span>
|
|
295
|
-
<span>Immogart UGh</span>
|
|
296
|
-
<button
|
|
297
|
-
className="kontactbutton text-light align-self-center"
|
|
298
|
-
onClick={handleMessagPopUp}
|
|
299
|
-
role="button"
|
|
300
|
-
>
|
|
301
|
-
<span className="kontact-button-text">
|
|
302
|
-
Kontakt aufnehmen{" "}
|
|
303
|
-
</span>
|
|
304
|
-
</button>
|
|
305
|
-
</div>
|
|
306
|
-
</div>
|
|
307
|
-
</div>
|
|
308
|
-
)}
|
|
309
|
-
{!props.Impliment && (
|
|
310
|
-
<div
|
|
311
|
-
className=""
|
|
312
|
-
style={{
|
|
313
|
-
paddingLeft: "32px",
|
|
314
|
-
paddingRight: "32px",
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
<span
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
)}
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
}
|
|
1
|
+
import React, { useRef, useState } from "react";
|
|
2
|
+
// import { FormattedMessage } from "react-intl";
|
|
3
|
+
import locationIcon from "../../assets/images/locationIcon.svg";
|
|
4
|
+
import "../NewPropertyCard/NewPropertyCard.css";
|
|
5
|
+
import noImageIcon from "../../assets/Images/default-property.jpg";
|
|
6
|
+
import { formatPrice } from "../../functions/util";
|
|
7
|
+
import shareIcon from "../../assets/Images/icon_share_1.svg";
|
|
8
|
+
import moreIcon from "../../assets/Images/more.svg";
|
|
9
|
+
import arrowLeft from "../../assets/Images/card-arrow-left.svg";
|
|
10
|
+
import arrowRight from "../../assets/Images/card-arrow-right.svg";
|
|
11
|
+
import iconLayers from "../../assets/Images/layer_icon.svg";
|
|
12
|
+
import FloorPlanPopup from "../FloorPlanPopup/FloorPlanPopup";
|
|
13
|
+
// import MessagePopUp from "../MessagePopup/MessagePopUp";
|
|
14
|
+
import SharePopup from "../SharePopup/SharePopup";
|
|
15
|
+
import { MessageModel } from "../../models/message.model";
|
|
16
|
+
import immooly from "../../assets/images/imooly.svg";
|
|
17
|
+
|
|
18
|
+
interface PopupProps {
|
|
19
|
+
property: {
|
|
20
|
+
city: string;
|
|
21
|
+
propertyArea: string;
|
|
22
|
+
historicalProtection: boolean;
|
|
23
|
+
basement: boolean;
|
|
24
|
+
balcony: boolean;
|
|
25
|
+
terrace: boolean;
|
|
26
|
+
guestBathroom: boolean;
|
|
27
|
+
bathrooms: string;
|
|
28
|
+
usableArea: string;
|
|
29
|
+
id: string;
|
|
30
|
+
rooms: string;
|
|
31
|
+
constructedArea: string;
|
|
32
|
+
title: string;
|
|
33
|
+
evaluation?: {
|
|
34
|
+
askingPrice: number;
|
|
35
|
+
};
|
|
36
|
+
expose: {
|
|
37
|
+
title: string;
|
|
38
|
+
};
|
|
39
|
+
pictures: { contentUrl: string }[];
|
|
40
|
+
};
|
|
41
|
+
Impliment: any;
|
|
42
|
+
baseUrl: string;
|
|
43
|
+
themesList: any;
|
|
44
|
+
floorPlanUrl: string;
|
|
45
|
+
// onMessagePopupSubmitClick: (formValues: MessageModel) => void;
|
|
46
|
+
messageOnClick: () => void;
|
|
47
|
+
onclickSuccess: () => void;
|
|
48
|
+
onClick: () => void;
|
|
49
|
+
}
|
|
50
|
+
export default function PropertyCard(props: PopupProps) {
|
|
51
|
+
const [liked, setLiked] = useState(false);
|
|
52
|
+
const [mainImage, setMainImage] = useState<string | null>(null);
|
|
53
|
+
const [currentImageIndex, setCurrentImageIndex] = useState(0);
|
|
54
|
+
const imageListRef = useRef<HTMLDivElement>(null);
|
|
55
|
+
const [floorPlan, setFloorPlan] = useState(false);
|
|
56
|
+
const [messagePopUp, setMessagPopUp] = useState(false);
|
|
57
|
+
const [sharePopUp, setSharePopUp] = useState(false);
|
|
58
|
+
|
|
59
|
+
const pictureUrls =
|
|
60
|
+
props.property?.pictures?.length > 0
|
|
61
|
+
? props.property.pictures.map(
|
|
62
|
+
(picture) => `${props.baseUrl}${picture.contentUrl}`,
|
|
63
|
+
)
|
|
64
|
+
: [noImageIcon];
|
|
65
|
+
|
|
66
|
+
// setPictureUrls(pictureUrls);
|
|
67
|
+
const handleLike = () => {
|
|
68
|
+
setLiked(!liked);
|
|
69
|
+
};
|
|
70
|
+
const floorPlanOnClick = () => {
|
|
71
|
+
if (props.floorPlanUrl) {
|
|
72
|
+
setFloorPlan(true);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const handleMessagPopUp = () => {
|
|
76
|
+
// setMessagPopUp(true);
|
|
77
|
+
props.messageOnClick();
|
|
78
|
+
};
|
|
79
|
+
const handleSharePopUp = () => {
|
|
80
|
+
setSharePopUp(true);
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const handleArrowClickInMainImage = (direction: string) => {
|
|
84
|
+
if (!props.property || pictureUrls.length === 0) return;
|
|
85
|
+
|
|
86
|
+
let newIndex = currentImageIndex;
|
|
87
|
+
if (direction === "left") {
|
|
88
|
+
newIndex =
|
|
89
|
+
(currentImageIndex - 1 + pictureUrls.length) % pictureUrls.length;
|
|
90
|
+
} else if (direction === "right") {
|
|
91
|
+
newIndex = (currentImageIndex + 1) % pictureUrls.length;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
setCurrentImageIndex(newIndex);
|
|
95
|
+
setMainImage(pictureUrls[newIndex]);
|
|
96
|
+
|
|
97
|
+
// Ensure the ref exists before calling scrollTo
|
|
98
|
+
if (imageListRef.current) {
|
|
99
|
+
imageListRef.current.scrollTo({
|
|
100
|
+
left: newIndex * 150,
|
|
101
|
+
behavior: "smooth",
|
|
102
|
+
});
|
|
103
|
+
} else {
|
|
104
|
+
console.warn("imageListRef is not set");
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
// const boosted = "true";
|
|
108
|
+
|
|
109
|
+
return (
|
|
110
|
+
<div className="d-flex flex-row property-card">
|
|
111
|
+
<div className="d-flex flex-column col-md-6 col-lg-6">
|
|
112
|
+
<div
|
|
113
|
+
key={props.property.id}
|
|
114
|
+
className="card-bod position-relative cardStyles h-100 w-100"
|
|
115
|
+
style={{
|
|
116
|
+
backgroundImage: `url(${mainImage || pictureUrls[0]})`,
|
|
117
|
+
backgroundSize: "cover",
|
|
118
|
+
backgroundPosition: "center",
|
|
119
|
+
maxWidth: "640",
|
|
120
|
+
}}
|
|
121
|
+
>
|
|
122
|
+
<div className="d-flex flex-row col-12 justify-content-between ">
|
|
123
|
+
<div
|
|
124
|
+
className="d-felx align-self-start justify-items-start ms-4 "
|
|
125
|
+
style={{ left: "16px" }}
|
|
126
|
+
onClick={() => handleArrowClickInMainImage("left")}
|
|
127
|
+
role="button"
|
|
128
|
+
>
|
|
129
|
+
<img src={arrowLeft} />
|
|
130
|
+
</div>
|
|
131
|
+
<div></div>
|
|
132
|
+
<div
|
|
133
|
+
className="d-flex align-self-end justify-items-end me-4"
|
|
134
|
+
onClick={() => handleArrowClickInMainImage("right")}
|
|
135
|
+
role="button"
|
|
136
|
+
>
|
|
137
|
+
<img src={arrowRight} style={{ right: "16px" }} />
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
<div
|
|
141
|
+
className="d-flex flex-row align-self-end justify-item-start justify-content-between align-item-start gap-1 mb-2 ms-4"
|
|
142
|
+
style={{ position: "absolute", left: "0" }}
|
|
143
|
+
>
|
|
144
|
+
<div className="cardTag" style={{ marginBottom: "16px" }}>{`${
|
|
145
|
+
currentImageIndex + 1
|
|
146
|
+
}/${pictureUrls.length}`}</div>
|
|
147
|
+
<div
|
|
148
|
+
className="Grundriss kontact-button-text ms-2 "
|
|
149
|
+
role="button"
|
|
150
|
+
onClick={floorPlanOnClick}
|
|
151
|
+
style={{ marginBottom: "16px" }}
|
|
152
|
+
>
|
|
153
|
+
<img src={iconLayers} className="" style={{ width: "18px" }} />{" "}
|
|
154
|
+
Grundriss
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
</div>
|
|
159
|
+
<div
|
|
160
|
+
className={`listing-compact d-flex flex-column col-6 ${
|
|
161
|
+
props.Impliment ? "cc-height" : "listing-height"
|
|
162
|
+
}`}
|
|
163
|
+
>
|
|
164
|
+
<div className="d-flex flex-column gap-3">
|
|
165
|
+
<div className="d-flex flex-row justify-content-between gap-2">
|
|
166
|
+
<span
|
|
167
|
+
className="propertyTitle align-items-start "
|
|
168
|
+
style={{
|
|
169
|
+
paddingLeft: "32px",
|
|
170
|
+
paddingTop: "32px",
|
|
171
|
+
}}
|
|
172
|
+
onClick={props.onClick}
|
|
173
|
+
role="button"
|
|
174
|
+
>
|
|
175
|
+
{props.property.expose?.title}
|
|
176
|
+
{/*Einziehen ohne einen Pinselstrich - Kernsanierte Eigentumswohnung*/}
|
|
177
|
+
{/*in top Lage*/}
|
|
178
|
+
</span>
|
|
179
|
+
<div
|
|
180
|
+
className="d-flex gap-2"
|
|
181
|
+
style={{
|
|
182
|
+
paddingRight: "32px",
|
|
183
|
+
paddingTop: "21px",
|
|
184
|
+
paddingLeft: "10px",
|
|
185
|
+
}}
|
|
186
|
+
>
|
|
187
|
+
<img
|
|
188
|
+
src={shareIcon}
|
|
189
|
+
alt="Share Icon"
|
|
190
|
+
className=" "
|
|
191
|
+
onClick={handleSharePopUp}
|
|
192
|
+
style={{ maxHeight: "24px", maxWidth: "24px" }}
|
|
193
|
+
role="button"
|
|
194
|
+
/>
|
|
195
|
+
<img
|
|
196
|
+
src={moreIcon}
|
|
197
|
+
alt="More Icon"
|
|
198
|
+
className=""
|
|
199
|
+
style={{ maxHeight: "24px", maxWidth: "24px" }}
|
|
200
|
+
role="button"
|
|
201
|
+
/>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
|
|
205
|
+
<div
|
|
206
|
+
style={{
|
|
207
|
+
paddingLeft: "32px",
|
|
208
|
+
paddingRight: "32px",
|
|
209
|
+
}}
|
|
210
|
+
>
|
|
211
|
+
{" "}
|
|
212
|
+
<div className="location-wrapper">
|
|
213
|
+
<img
|
|
214
|
+
src={locationIcon}
|
|
215
|
+
alt="Location Icon"
|
|
216
|
+
className="location-icon"
|
|
217
|
+
/>
|
|
218
|
+
<span className="locationTexts ">
|
|
219
|
+
{props.property.city || "N/A"}
|
|
220
|
+
</span>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
</div>
|
|
224
|
+
<div
|
|
225
|
+
className="d-flex flex-row gap-3 col-6 col-lg-8 justify-content-between "
|
|
226
|
+
style={{
|
|
227
|
+
paddingLeft: "32px",
|
|
228
|
+
paddingRight: "32px",
|
|
229
|
+
}}
|
|
230
|
+
>
|
|
231
|
+
<span className="priceValue col-lg-4 col-md-4 col-sm-6 ">
|
|
232
|
+
{formatPrice(props.property?.evaluation?.askingPrice ?? 0)} €
|
|
233
|
+
<div className="price_label">Kaufpreis</div>
|
|
234
|
+
</span>
|
|
235
|
+
<span className="text-dark value col-lg-5 col-md-5 col-sm-7">
|
|
236
|
+
{props.property.constructedArea} m²
|
|
237
|
+
<div className="details">Wohnfläche</div>
|
|
238
|
+
</span>
|
|
239
|
+
<span className="text-dark value col-lg-4 col-md-3 col-sm-6 text-truncate ">
|
|
240
|
+
{+props.property?.rooms}
|
|
241
|
+
<div className="details">Zimmer</div>
|
|
242
|
+
</span>
|
|
243
|
+
<span className="text-dark value col-lg-4 col-md-3 col-sm-4 text-truncate ">
|
|
244
|
+
{+props.property.propertyArea} m²
|
|
245
|
+
<div className="details">Grundstück</div>
|
|
246
|
+
</span>
|
|
247
|
+
</div>
|
|
248
|
+
<div
|
|
249
|
+
className="labelTopClass d-flex start-0 col-sm-5 col-lg-8 "
|
|
250
|
+
style={{ padding: "0 28px" }}
|
|
251
|
+
>
|
|
252
|
+
<div className=" align-items-center d-flex flex-row gap-3">
|
|
253
|
+
{props.property.historicalProtection && (
|
|
254
|
+
<label className="chipLabel justify-content-center align-items-center">
|
|
255
|
+
<span className="layersText">{"Denkmalschutz"}</span>
|
|
256
|
+
</label>
|
|
257
|
+
)}
|
|
258
|
+
|
|
259
|
+
{props.property.basement && (
|
|
260
|
+
<label className="chipLabel justify-content-center align-items-center">
|
|
261
|
+
<span className="layersText">{"Keller"}</span>
|
|
262
|
+
</label>
|
|
263
|
+
)}
|
|
264
|
+
{props.property.balcony && (
|
|
265
|
+
<label className="chipLabel justify-content-center align-items-center">
|
|
266
|
+
<span className="layersText">{"Balkon"}</span>
|
|
267
|
+
</label>
|
|
268
|
+
)}
|
|
269
|
+
{props.property.terrace && (
|
|
270
|
+
<label className="chipLabel justify-content-center align-items-center ">
|
|
271
|
+
<span className="layersText">{"Terrace"}</span>
|
|
272
|
+
</label>
|
|
273
|
+
)}
|
|
274
|
+
{props.property.guestBathroom && (
|
|
275
|
+
<label className="chipLabel">
|
|
276
|
+
<span className="layersText">{"Gäste-WC"}</span>
|
|
277
|
+
</label>
|
|
278
|
+
)}
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
{props.Impliment && (
|
|
282
|
+
<div
|
|
283
|
+
className=""
|
|
284
|
+
style={{
|
|
285
|
+
paddingLeft: "32px",
|
|
286
|
+
paddingRight: "32px",
|
|
287
|
+
}}
|
|
288
|
+
>
|
|
289
|
+
<div className="Frame-136 d-flex flex-row">
|
|
290
|
+
<div className="d-flex flex-column flex-lg-row col-4 justify-content-between ">
|
|
291
|
+
<img src={immooly} alt="Logo" className="immooly" />
|
|
292
|
+
</div>
|
|
293
|
+
<div className="ms-2 d-flex flex-column col-8 justify-content-center align-self-center text-center">
|
|
294
|
+
<span className="fw-bold">Herr Florian Gauss</span>
|
|
295
|
+
<span>Immogart UGh</span>
|
|
296
|
+
<button
|
|
297
|
+
className="kontactbutton text-light align-self-center"
|
|
298
|
+
onClick={handleMessagPopUp}
|
|
299
|
+
role="button"
|
|
300
|
+
>
|
|
301
|
+
<span className="kontact-button-text">
|
|
302
|
+
Kontakt aufnehmen{" "}
|
|
303
|
+
</span>
|
|
304
|
+
</button>
|
|
305
|
+
</div>
|
|
306
|
+
</div>
|
|
307
|
+
</div>
|
|
308
|
+
)}
|
|
309
|
+
{!props.Impliment && (
|
|
310
|
+
<div
|
|
311
|
+
className=""
|
|
312
|
+
style={{
|
|
313
|
+
paddingLeft: "32px",
|
|
314
|
+
paddingRight: "32px",
|
|
315
|
+
}}
|
|
316
|
+
>
|
|
317
|
+
<div className="Frame-136 d-flex flex-row">
|
|
318
|
+
<div className="d-flex flex-column flex-lg-row col-4 justify-content-between ">
|
|
319
|
+
<img src={immooly} alt="Logo" className="immooly" />
|
|
320
|
+
</div>
|
|
321
|
+
<div className="d-flex flex-column flex-lg-row justify-content-between">
|
|
322
|
+
<div className="d-flex flex-column col-6">
|
|
323
|
+
<span className="">Herr Florian Gauss</span>
|
|
324
|
+
<span>Immogart UGh</span>
|
|
325
|
+
</div>
|
|
326
|
+
<button
|
|
327
|
+
className="kontactbutton text-light "
|
|
328
|
+
onClick={handleMessagPopUp}
|
|
329
|
+
role="button"
|
|
330
|
+
>
|
|
331
|
+
<span className="kontact-button-text">
|
|
332
|
+
Kontakt aufnehmen{" "}
|
|
333
|
+
</span>
|
|
334
|
+
</button>
|
|
335
|
+
</div>
|
|
336
|
+
</div>
|
|
337
|
+
</div>
|
|
338
|
+
)}
|
|
339
|
+
</div>
|
|
340
|
+
{floorPlan && (
|
|
341
|
+
<FloorPlanPopup
|
|
342
|
+
contentUrl={props.floorPlanUrl}
|
|
343
|
+
onCloseClick={() => setFloorPlan(false)}
|
|
344
|
+
/>
|
|
345
|
+
)}
|
|
346
|
+
{/* {messagePopUp && (
|
|
347
|
+
<MessagePopUp
|
|
348
|
+
onCloseClick={() => setMessagPopUp(false)}
|
|
349
|
+
sellerFirstName={props.userData?.firstname}
|
|
350
|
+
sellerLastName={props.userData?.lastname}
|
|
351
|
+
themesList={props.themesList}
|
|
352
|
+
onSubmit={props.onMessagePopupSubmitClick}
|
|
353
|
+
/>
|
|
354
|
+
)} */}
|
|
355
|
+
{sharePopUp && <SharePopup onClick={() => setSharePopUp(false)} />}
|
|
356
|
+
</div>
|
|
357
|
+
);
|
|
358
|
+
}
|