nestiq-component-library 1.1.164 → 1.1.166
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/components/NewPropertyCard/NewPropertyCard.d.ts +6 -0
- package/dist/components/PropertyDetailsHeader/PropertyDetailsHeader.d.ts +7 -0
- package/dist/index.es.js +61 -49
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +61 -49
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/NewPropertyCard/NewPropertyCard.css +11 -3
- package/src/components/NewPropertyCard/NewPropertyCard.tsx +41 -8
- package/src/components/PropertyDetailsHeader/PropertyDetailsHeader.css +44 -44
- package/src/components/PropertyDetailsHeader/PropertyDetailsHeader.tsx +80 -61
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
.property-card {
|
|
2
2
|
width: 100%;
|
|
3
3
|
max-width: 1280px;
|
|
4
|
+
height: auto;
|
|
4
5
|
box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);
|
|
5
6
|
border-radius: 32px;
|
|
6
7
|
|
|
@@ -10,6 +11,16 @@
|
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
|
|
14
|
+
.priceValue,
|
|
15
|
+
.value {
|
|
16
|
+
white-space: nowrap;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.price_label,
|
|
20
|
+
.details {
|
|
21
|
+
white-space: nowrap;
|
|
22
|
+
}
|
|
23
|
+
|
|
13
24
|
.listing-compact {
|
|
14
25
|
max-width: 750px;
|
|
15
26
|
gap: 32px;
|
|
@@ -90,7 +101,6 @@
|
|
|
90
101
|
}
|
|
91
102
|
.kontact-button-text {
|
|
92
103
|
flex-grow: 0;
|
|
93
|
-
font-family: Inter;
|
|
94
104
|
font-size: 16px;
|
|
95
105
|
font-weight: 500;
|
|
96
106
|
font-stretch: normal;
|
|
@@ -212,7 +222,6 @@
|
|
|
212
222
|
|
|
213
223
|
.details {
|
|
214
224
|
font-size: 16px;
|
|
215
|
-
text-align: center;
|
|
216
225
|
color: #344041;
|
|
217
226
|
}
|
|
218
227
|
|
|
@@ -224,7 +233,6 @@
|
|
|
224
233
|
|
|
225
234
|
.value {
|
|
226
235
|
font-size: 20px;
|
|
227
|
-
text-align: center;
|
|
228
236
|
font-weight: 500;
|
|
229
237
|
display: flex;
|
|
230
238
|
flex-direction: column;
|
|
@@ -49,6 +49,12 @@ interface PopupProps {
|
|
|
49
49
|
onclickSuccess: () => void;
|
|
50
50
|
onClick: () => void;
|
|
51
51
|
onFloorPlanClick: (images: { url: string; title: string }[]) => void;
|
|
52
|
+
translations?: {
|
|
53
|
+
kaufpreis?: string;
|
|
54
|
+
wohnflache?: string;
|
|
55
|
+
zimmer?: string;
|
|
56
|
+
grundriss?: string;
|
|
57
|
+
};
|
|
52
58
|
}
|
|
53
59
|
export default function PropertyCard(props: PopupProps) {
|
|
54
60
|
const [liked, setLiked] = useState(false);
|
|
@@ -129,6 +135,13 @@ export default function PropertyCard(props: PopupProps) {
|
|
|
129
135
|
};
|
|
130
136
|
// const boosted = "true";
|
|
131
137
|
|
|
138
|
+
const t = {
|
|
139
|
+
kaufpreis: props.translations?.kaufpreis || "Kaufpreis",
|
|
140
|
+
wohnflache: props.translations?.wohnflache || "Wohnfläche",
|
|
141
|
+
zimmer: props.translations?.zimmer || "Zimmer",
|
|
142
|
+
grundriss: props.translations?.grundriss || "Grundriss",
|
|
143
|
+
};
|
|
144
|
+
|
|
132
145
|
return (
|
|
133
146
|
<div className="d-flex flex-row property-card">
|
|
134
147
|
<div className="d-flex flex-column col-md-6 col-lg-6">
|
|
@@ -174,7 +187,7 @@ export default function PropertyCard(props: PopupProps) {
|
|
|
174
187
|
style={{ marginBottom: "16px" }}
|
|
175
188
|
>
|
|
176
189
|
<img src={iconLayers} className="" style={{ width: "18px" }} />{" "}
|
|
177
|
-
|
|
190
|
+
{t.grundriss}
|
|
178
191
|
</div>
|
|
179
192
|
</div>
|
|
180
193
|
</div>
|
|
@@ -248,29 +261,49 @@ export default function PropertyCard(props: PopupProps) {
|
|
|
248
261
|
</div>
|
|
249
262
|
</div>
|
|
250
263
|
<div
|
|
251
|
-
className="d-flex
|
|
264
|
+
className="d-flex flex-row justify-content-between mt-3"
|
|
252
265
|
style={{
|
|
253
266
|
paddingLeft: "32px",
|
|
254
267
|
paddingRight: "32px",
|
|
255
268
|
}}
|
|
256
269
|
>
|
|
257
|
-
<span
|
|
270
|
+
<span
|
|
271
|
+
className="priceValue col-lg-5 col-md-5 col-sm-6"
|
|
272
|
+
style={{ whiteSpace: "nowrap" }}
|
|
273
|
+
>
|
|
258
274
|
{formatPrice(props.property?.evaluation?.askingPrice ?? 0)} €
|
|
259
|
-
<div className="price_label">
|
|
275
|
+
<div className="price_label" style={{ whiteSpace: "nowrap" }}>
|
|
276
|
+
{t.kaufpreis}
|
|
277
|
+
</div>
|
|
260
278
|
</span>
|
|
261
|
-
<span
|
|
279
|
+
<span
|
|
280
|
+
className="text-dark value col-lg-5 col-md-5 col-sm-7"
|
|
281
|
+
style={{ whiteSpace: "nowrap" }}
|
|
282
|
+
>
|
|
262
283
|
{props.property.constructedArea} m²
|
|
263
|
-
<div className="details">
|
|
284
|
+
<div className="details" style={{ whiteSpace: "nowrap" }}>
|
|
285
|
+
{t.wohnflache}
|
|
286
|
+
</div>
|
|
264
287
|
</span>
|
|
265
|
-
<span
|
|
288
|
+
<span
|
|
289
|
+
className="text-dark value text-center col-lg-2 col-md-2 col-sm-5 text-truncate"
|
|
290
|
+
style={{ whiteSpace: "nowrap" }}
|
|
291
|
+
>
|
|
266
292
|
{+props.property?.rooms}
|
|
267
|
-
|
|
293
|
+
|
|
294
|
+
<div
|
|
295
|
+
className="details text-center"
|
|
296
|
+
style={{ whiteSpace: "nowrap" }}
|
|
297
|
+
>
|
|
298
|
+
{t.zimmer}
|
|
299
|
+
</div>
|
|
268
300
|
</span>
|
|
269
301
|
{/* <span className="text-dark value col-lg-4 col-md-3 col-sm-4 text-truncate ">
|
|
270
302
|
{+props.property.propertyArea} m²
|
|
271
303
|
<div className="details">Grundstück</div>
|
|
272
304
|
</span> */}
|
|
273
305
|
</div>
|
|
306
|
+
|
|
274
307
|
<div
|
|
275
308
|
className="labelTopClass d-flex start-0 col-sm-5 col-lg-8 "
|
|
276
309
|
style={{ padding: "0 28px" }}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
.
|
|
1
|
+
.compact_cc {
|
|
2
|
+
padding: 32px;
|
|
2
3
|
height: 194px;
|
|
3
4
|
border-radius: 32px;
|
|
4
5
|
box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);
|
|
5
6
|
background-color: #f2f2f2;
|
|
6
|
-
position: relative !important;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
.header_Text {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
line-height: normal;
|
|
13
13
|
color: #1b1b1b;
|
|
14
14
|
}
|
|
15
|
-
.location{
|
|
15
|
+
.location {
|
|
16
16
|
left: 0;
|
|
17
17
|
}
|
|
18
18
|
.vector svg {
|
|
@@ -24,8 +24,11 @@
|
|
|
24
24
|
cursor: pointer;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
.textWrapper {
|
|
28
|
+
height: 20px;
|
|
29
|
+
}
|
|
30
|
+
|
|
27
31
|
.propText {
|
|
28
|
-
height: 30px;
|
|
29
32
|
font-size: 16px;
|
|
30
33
|
letter-spacing: normal;
|
|
31
34
|
text-align: center;
|
|
@@ -51,44 +54,41 @@
|
|
|
51
54
|
height: 700px;
|
|
52
55
|
}
|
|
53
56
|
.compact {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
.compact2{
|
|
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
|
-
font-weight: 1000;
|
|
92
|
-
font-size: 24px;
|
|
93
|
-
}
|
|
57
|
+
border-radius: 32px;
|
|
58
|
+
box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);
|
|
59
|
+
background-color: #f2f2f2;
|
|
60
|
+
}
|
|
61
|
+
.compact2 {
|
|
62
|
+
position: relative !important;
|
|
63
|
+
display: flex !important;
|
|
64
|
+
align-self: flex-start !important;
|
|
65
|
+
margin-left: 25px;
|
|
66
|
+
justify-content: start !important;
|
|
67
|
+
align-items: flex-start !important;
|
|
68
|
+
}
|
|
69
|
+
.compact3 {
|
|
70
|
+
position: relative !important;
|
|
71
|
+
display: flex !important;
|
|
72
|
+
margin-left: 30px;
|
|
73
|
+
margin-top: 10px !important;
|
|
74
|
+
}
|
|
75
|
+
.header_Text {
|
|
76
|
+
margin-top: 0px;
|
|
77
|
+
}
|
|
78
|
+
.fetch_section {
|
|
79
|
+
margin-top: 0px;
|
|
80
|
+
height: 60px;
|
|
81
|
+
}
|
|
82
|
+
.propText {
|
|
83
|
+
justify-content: start !important;
|
|
84
|
+
align-self: flex-start !important;
|
|
85
|
+
text-align: start !important;
|
|
86
|
+
}
|
|
87
|
+
.propText2 {
|
|
88
|
+
justify-content: start !important;
|
|
89
|
+
align-self: flex-start !important;
|
|
90
|
+
text-align: start !important;
|
|
91
|
+
font-weight: 1000;
|
|
92
|
+
font-size: 24px;
|
|
93
|
+
}
|
|
94
94
|
}
|
|
@@ -8,6 +8,7 @@ import { formatPrice, formatPropertyArea } from "../../functions/util";
|
|
|
8
8
|
|
|
9
9
|
export interface PopupProps {
|
|
10
10
|
property: {
|
|
11
|
+
fullAddress: string;
|
|
11
12
|
city: string;
|
|
12
13
|
constructedArea: string;
|
|
13
14
|
rooms: string;
|
|
@@ -15,73 +16,91 @@ export interface PopupProps {
|
|
|
15
16
|
askingPrice: number;
|
|
16
17
|
};
|
|
17
18
|
title: string;
|
|
19
|
+
translations?: {
|
|
20
|
+
kaufpreis?: string;
|
|
21
|
+
wohnflache?: string;
|
|
22
|
+
zimmer?: string;
|
|
23
|
+
grundriss?: string;
|
|
24
|
+
};
|
|
18
25
|
}
|
|
19
26
|
|
|
20
27
|
export default function PropertyDetailsHeader(props: PopupProps) {
|
|
21
28
|
const [showPopUp, setShowPopUp] = useState(false);
|
|
22
29
|
const area = props.property?.propertyArea;
|
|
23
|
-
|
|
24
|
-
const handleOpenPopup = () => setShowPopUp(true);
|
|
25
30
|
|
|
26
|
-
|
|
31
|
+
const handleOpenPopup = () => setShowPopUp(true);
|
|
32
|
+
|
|
33
|
+
const handleClosePopup = () => setShowPopUp(false);
|
|
34
|
+
|
|
35
|
+
const t = {
|
|
36
|
+
kaufpreis: props.translations?.kaufpreis || "Kaufpreis",
|
|
37
|
+
wohnflache: props.translations?.wohnflache || "Wohnfläche",
|
|
38
|
+
zimmer: props.translations?.zimmer || "Zimmer",
|
|
39
|
+
grundriss: props.translations?.grundriss || "Grundriss",
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<div className="compact_cc d-flex flex-column col-12 col-lg-12 mt-3 justify-content-between">
|
|
44
|
+
<div className="col-12 d-flex flex-row">
|
|
45
|
+
<div className="header_Text d-flex col-lg-11 col-md-11 mt-0">
|
|
46
|
+
<strong>{props.title ?? "-"}</strong>
|
|
47
|
+
</div>
|
|
48
|
+
<div className="d-flex col-lg-1 col-md-1 justify-content-end position-relative">
|
|
49
|
+
{/* <img src={Hearticon} alt="Location Icon" className="v_share me-3" /> */}
|
|
50
|
+
<img
|
|
51
|
+
src={ShareIcon}
|
|
52
|
+
alt="share icon"
|
|
53
|
+
className="v_share me-3 position-absolute"
|
|
54
|
+
onClick={handleOpenPopup}
|
|
55
|
+
/>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
27
58
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
/>
|
|
47
|
-
</div>
|
|
48
|
-
<div className="compact2 gap-3 gap-md-0 fetch_section d-flex align-items-center flex-column flex-md-row col-lg-5 col-md-6 col-sm-5 justify-content-end position-absolute end-0">
|
|
49
|
-
{props && (
|
|
50
|
-
<div className="propText col-lg-3 col-md-3 h-100 d-flex flex-column align-items-md-center justify-content-center mt-4 mt-md-0">
|
|
51
|
-
<span className="propText2">
|
|
52
|
-
{formatPrice(props.property?.askingPrice ?? 0)}€
|
|
53
|
-
</span>
|
|
54
|
-
<span>Kaufpreis</span>
|
|
55
|
-
</div>
|
|
56
|
-
)}
|
|
59
|
+
<div className="d-flex flex-row justify-content-between">
|
|
60
|
+
<div className="col-6 d-flex flex-row align-items-end jsutify-content-start gap-1">
|
|
61
|
+
<div className="d-flex gap-1 justify-content-center">
|
|
62
|
+
<div className="d-flex gap-2 align-items-center">
|
|
63
|
+
<img src={locationIcon} className="" alt="location Icon" />
|
|
64
|
+
</div>
|
|
65
|
+
<div className="textWrapper">{props.property?.fullAddress}</div>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
<div className="d-flex align-items-end gap-3 justify-content-end flex-row col-lg-6 col-md-6 col-sm-5">
|
|
69
|
+
{props && (
|
|
70
|
+
<div className="propText h-100 d-flex flex-column align-items-center justify-content-center">
|
|
71
|
+
<span className="">
|
|
72
|
+
{formatPrice(props.property?.askingPrice ?? 0)}€ <br />
|
|
73
|
+
</span>
|
|
74
|
+
<span className="textWrapper">{t.kaufpreis}</span>
|
|
75
|
+
</div>
|
|
76
|
+
)}
|
|
57
77
|
|
|
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
|
-
);
|
|
78
|
+
{props && (
|
|
79
|
+
<div className="propText h-100 d-flex flex-column align-items-center justify-content-center">
|
|
80
|
+
<span className="">
|
|
81
|
+
{formatPropertyArea(props.property.constructedArea) ?? 0}
|
|
82
|
+
</span>
|
|
83
|
+
<span className="textWrapper">{t.wohnflache}</span>
|
|
84
|
+
</div>
|
|
85
|
+
)}
|
|
86
|
+
{props && (
|
|
87
|
+
<div className="propText h-100 d-flex flex-column align-items-center justify-content-center">
|
|
88
|
+
<span className="">{props.property.rooms}</span>
|
|
89
|
+
<span className="textWrapper">{t.zimmer}</span>
|
|
90
|
+
</div>
|
|
91
|
+
)}
|
|
92
|
+
{/* {props && (
|
|
93
|
+
<div className="propText col-lg-3 col-md-3 d-flex h-100 align-items-center justify-content-center flex-column">
|
|
94
|
+
<span className="">
|
|
95
|
+
{formatPropertyArea(area ?? 0)} m²
|
|
96
|
+
</span>
|
|
97
|
+
Grundstück
|
|
98
|
+
<FormattedMessage id="Grundstück" />
|
|
99
|
+
</div>
|
|
100
|
+
)} */}
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
{showPopUp && <SharePopup onClick={() => handleClosePopup()} />}
|
|
104
|
+
</div>
|
|
105
|
+
);
|
|
87
106
|
}
|