nestiq-component-library 1.1.169 → 1.1.171

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.
@@ -21,7 +21,6 @@ interface PopupProps {
21
21
  expose: {
22
22
  title: string;
23
23
  };
24
- selectedFloorPlan?: string;
25
24
  pictures: {
26
25
  contentUrl: string;
27
26
  pictureType: {
@@ -6,7 +6,24 @@ interface PopupProps {
6
6
  title: string;
7
7
  url: string;
8
8
  }[];
9
- floorPlanUrl: string;
9
+ allPictureUrls: {
10
+ title: string;
11
+ url: string;
12
+ }[];
13
+ property: {
14
+ pictures: {
15
+ contentUrl: string;
16
+ pictureType: {
17
+ id: number;
18
+ };
19
+ }[];
20
+ };
21
+ translations?: {
22
+ allPhotos?: string;
23
+ map?: string;
24
+ grundriss?: string;
25
+ };
26
+ baseUrl: string;
10
27
  }
11
28
  export default function PropertyImageList(prop: PopupProps): React.JSX.Element;
12
29
  export {};
package/dist/index.es.js CHANGED
@@ -261,58 +261,11 @@ function ImageListPopup(props) {
261
261
  } }))); }))))))))));
262
262
  }
263
263
 
264
- var FloorPlanPopup = function (_a) {
265
- var contentUrl = _a.contentUrl, onCloseClick = _a.onCloseClick;
266
- var _b = useState(false), isContentImage = _b[0], setIsContentImage = _b[1];
267
- useEffect(function () {
268
- var _a;
269
- if (contentUrl) {
270
- var fileFormat = (_a = contentUrl.split(".").pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
271
- if (fileFormat === "png" ||
272
- fileFormat === "jpg" ||
273
- fileFormat === "jpeg" ||
274
- fileFormat === "svg") {
275
- setIsContentImage(true);
276
- }
277
- }
278
- }, [contentUrl]);
279
- var downloadButtonClickHandler = function () {
280
- // Create a temporary anchor element
281
- var link = document.createElement("a");
282
- link.href = contentUrl;
283
- link.setAttribute("download", ""); // This attribute hints the browser to download the file
284
- // Append the anchor to the body and click it to trigger the download
285
- document.body.appendChild(link);
286
- link.click();
287
- // Clean up: remove the anchor element
288
- document.body.removeChild(link);
289
- };
290
- return (React.createElement("div", { className: "popup-overlay" },
291
- React.createElement("div", { className: " d-flex w-50 flex-column col-6 " },
292
- React.createElement("div", { className: "d-flex align-self-end me-5 mt-5" },
293
- React.createElement("img", { src: iconClose, alt: "close", className: "closeIcon mt-5", onClick: onCloseClick })),
294
- React.createElement("div", { className: "d-flex justify-content-center" },
295
- React.createElement("div", { className: "p-2 bd-highlight" },
296
- isContentImage && (React.createElement("div", { className: "rounded-5 mainImage", style: {
297
- backgroundImage: "url(".concat(contentUrl, ")"),
298
- height: "350px",
299
- width: "600px",
300
- backgroundSize: "cover",
301
- backgroundPosition: "center",
302
- } })),
303
- !isContentImage && (React.createElement("div", { className: "text-white text-center" },
304
- "No Preview Available",
305
- React.createElement("button", { className: "btn btn-info", onClick: downloadButtonClickHandler },
306
- " ",
307
- "Download",
308
- " "))))))));
309
- };
310
-
311
264
  function PropertyImageList(prop) {
312
- var _a;
313
- var _b = useState(0), currentImageIndex = _b[0], setCurrentImageIndex = _b[1];
314
- var _c = useState(false), isImagePopupOpen = _c[0], setIsImagePopupOpen = _c[1];
315
- var _d = useState(false), isFloorPlanPopupOpen = _d[0], setIsFloorPlanPopupOpen = _d[1];
265
+ var _a, _b, _c, _d, _e;
266
+ var _f = useState(0), currentImageIndex = _f[0], setCurrentImageIndex = _f[1];
267
+ var _g = useState(false), isImagePopupOpen = _g[0], setIsImagePopupOpen = _g[1];
268
+ var _h = useState(false), isFloorPlanPopupOpen = _h[0], setIsFloorPlanPopupOpen = _h[1];
316
269
  var imageListRef = useRef(null);
317
270
  var handleArrowClickInMainImage = function (direction) {
318
271
  if (!prop.pictureUrls.length)
@@ -323,30 +276,36 @@ function PropertyImageList(prop) {
323
276
  newIndex =
324
277
  (prevIndex - 1 + prop.pictureUrls.length) % prop.pictureUrls.length;
325
278
  }
326
- else if (direction === "right") {
279
+ else {
327
280
  newIndex = (prevIndex + 1) % prop.pictureUrls.length;
328
281
  }
282
+ if (imageListRef.current) {
283
+ imageListRef.current.scrollTo({
284
+ left: newIndex * 150,
285
+ behavior: "smooth",
286
+ });
287
+ }
329
288
  return newIndex || 0;
330
289
  });
331
- imageListRef.current.scrollTo({
332
- left: currentImageIndex * (direction === "left" ? -150 : 150),
333
- behavior: "smooth",
334
- });
335
290
  };
291
+ var floorPlanImages = ((_a = prop.property.pictures) === null || _a === void 0 ? void 0 : _a.filter(function (p) { var _a; return ((_a = p.pictureType) === null || _a === void 0 ? void 0 : _a.id) === 1; }).map(function (p, index) { return ({
292
+ url: prop.baseUrl + p.contentUrl,
293
+ title: "Floor Plan ".concat(index + 1),
294
+ }); })) || [];
336
295
  var toggleAllPhotos = function () {
337
296
  setIsImagePopupOpen(!isImagePopupOpen);
338
297
  };
339
298
  var floorPlanClickHandler = function () {
340
- if (prop.floorPlanUrl) {
341
- setIsFloorPlanPopupOpen(true);
342
- }
299
+ setIsFloorPlanPopupOpen(true);
343
300
  };
344
- var floorPlanPopupCloseHandler = function () {
345
- setIsFloorPlanPopupOpen(false);
301
+ var t = {
302
+ allPhotos: ((_b = prop.translations) === null || _b === void 0 ? void 0 : _b.allPhotos) || "Alle Fotos",
303
+ map: ((_c = prop.translations) === null || _c === void 0 ? void 0 : _c.map) || "Karte",
304
+ grundriss: ((_d = prop.translations) === null || _d === void 0 ? void 0 : _d.grundriss) || "Grundriss",
346
305
  };
347
306
  return (React.createElement("div", { className: "col-8 Pimagelist " },
348
307
  React.createElement("div", { className: "col-12 rounded-5 mainImage d-flex position-relative align-items-center", style: {
349
- backgroundImage: "url(".concat((_a = prop.pictureUrls[currentImageIndex]) === null || _a === void 0 ? void 0 : _a.url, ")"),
308
+ backgroundImage: "url(".concat((_e = prop.pictureUrls[currentImageIndex]) === null || _e === void 0 ? void 0 : _e.url, ")"),
350
309
  backgroundSize: "cover",
351
310
  backgroundPosition: "center",
352
311
  } },
@@ -382,11 +341,13 @@ function PropertyImageList(prop) {
382
341
  React.createElement("div", { className: "col-lg-4 col-4 py-0 px-1", role: "button", onClick: toggleAllPhotos },
383
342
  React.createElement("div", { className: "border col-lg-12 h-100 d-flex flex-column listImageButton border-0 rounded-3" },
384
343
  React.createElement("img", { src: iconGallery, alt: "Gallery Icon" }),
385
- React.createElement("span", { className: "listImgText" }, "Alle Fotos"))),
344
+ React.createElement("span", { className: "listImgText" },
345
+ " ",
346
+ t.allPhotos))),
386
347
  React.createElement("div", { className: "col-lg-4 col-3 py-0 px-1", role: "button", onClick: floorPlanClickHandler },
387
348
  React.createElement("div", { className: "border col-lg-12 h-100 d-flex flex-column listImageButton border-0 rounded-3" },
388
349
  React.createElement("img", { src: iconLayers$1, alt: "Layers Icon" }),
389
- React.createElement("span", { className: "listImgText" }, "Grundriss"))),
350
+ React.createElement("span", { className: "listImgText" }, t.grundriss))),
390
351
  React.createElement("div", { className: "col-lg-4 col-3 py-0 px-1", role: "button", onClick: function () {
391
352
  return window.scrollTo({
392
353
  top: document.documentElement.scrollHeight,
@@ -394,9 +355,9 @@ function PropertyImageList(prop) {
394
355
  } },
395
356
  React.createElement("div", { className: "border col-lg-12 h-100 d-flex flex-column listImageButton border-0 rounded-3" },
396
357
  React.createElement("img", { src: iconMap, alt: "Map Icon" }),
397
- React.createElement("span", { className: "listImgText" }, "Karte")))))),
398
- isImagePopupOpen && (React.createElement(ImageListPopup, { pictureUrls: prop.pictureUrls, onClose: function () { return setIsImagePopupOpen(false); } })),
399
- isFloorPlanPopupOpen && (React.createElement(FloorPlanPopup, { contentUrl: prop.floorPlanUrl, onCloseClick: floorPlanPopupCloseHandler }))));
358
+ React.createElement("span", { className: "listImgText" }, t.map)))))),
359
+ isImagePopupOpen && (React.createElement(ImageListPopup, { pictureUrls: prop.allPictureUrls, onClose: function () { return setIsImagePopupOpen(false); } })),
360
+ isFloorPlanPopupOpen && (React.createElement(ImageListPopup, { pictureUrls: floorPlanImages, onClose: function () { return setIsFloorPlanPopupOpen(false); } }))));
400
361
  }
401
362
 
402
363
  var layerIcon = "/static/media/LayersIcon.34c085c352a2c9c8.svg";
@@ -459,6 +420,53 @@ function PropertyCard$1(props) {
459
420
  React.createElement("span", null, "Wohnfl\u00E4che")))));
460
421
  }
461
422
 
423
+ var FloorPlanPopup = function (_a) {
424
+ var contentUrl = _a.contentUrl, onCloseClick = _a.onCloseClick;
425
+ var _b = useState(false), isContentImage = _b[0], setIsContentImage = _b[1];
426
+ useEffect(function () {
427
+ var _a;
428
+ if (contentUrl) {
429
+ var fileFormat = (_a = contentUrl.split(".").pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
430
+ if (fileFormat === "png" ||
431
+ fileFormat === "jpg" ||
432
+ fileFormat === "jpeg" ||
433
+ fileFormat === "svg") {
434
+ setIsContentImage(true);
435
+ }
436
+ }
437
+ }, [contentUrl]);
438
+ var downloadButtonClickHandler = function () {
439
+ // Create a temporary anchor element
440
+ var link = document.createElement("a");
441
+ link.href = contentUrl;
442
+ link.setAttribute("download", ""); // This attribute hints the browser to download the file
443
+ // Append the anchor to the body and click it to trigger the download
444
+ document.body.appendChild(link);
445
+ link.click();
446
+ // Clean up: remove the anchor element
447
+ document.body.removeChild(link);
448
+ };
449
+ return (React.createElement("div", { className: "popup-overlay" },
450
+ React.createElement("div", { className: " d-flex w-50 flex-column col-6 " },
451
+ React.createElement("div", { className: "d-flex align-self-end me-5 mt-5" },
452
+ React.createElement("img", { src: iconClose, alt: "close", className: "closeIcon mt-5", onClick: onCloseClick })),
453
+ React.createElement("div", { className: "d-flex justify-content-center" },
454
+ React.createElement("div", { className: "p-2 bd-highlight" },
455
+ isContentImage && (React.createElement("div", { className: "rounded-5 mainImage", style: {
456
+ backgroundImage: "url(".concat(contentUrl, ")"),
457
+ height: "350px",
458
+ width: "600px",
459
+ backgroundSize: "cover",
460
+ backgroundPosition: "center",
461
+ } })),
462
+ !isContentImage && (React.createElement("div", { className: "text-white text-center" },
463
+ "No Preview Available",
464
+ React.createElement("button", { className: "btn btn-info", onClick: downloadButtonClickHandler },
465
+ " ",
466
+ "Download",
467
+ " "))))))));
468
+ };
469
+
462
470
  var css_248z$3 = ".property-card {\r\n width: 100%;\r\n /* max-width: 1280px; */\r\n height: auto;\r\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);\r\n border-radius: 32px;\r\n\r\n /* @media (min-width: 1500px) {\r\n max-width: 1280px;\r\n margin: 0 auto;\r\n } */\r\n}\r\n\r\n.priceValue,\r\n.value {\r\n white-space: nowrap;\r\n}\r\n\r\n.price_label,\r\n.details {\r\n white-space: nowrap;\r\n}\r\n\r\n.listing-compact_c {\r\n /* max-width: 750px; */\r\n gap: 8px;\r\n padding: 24px;\r\n border-radius: 0 32px 32px 0;\r\n background-color: rgba(58, 58, 58, 0.068);\r\n}\r\n\r\n.wrapperCompanySec {\r\n height: 119px;\r\n align-self: stretch;\r\n flex-grow: 0;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: center;\r\n gap: 16px;\r\n padding: 10px 16px;\r\n border-radius: 16px;\r\n border: solid 1px rgba(0, 0, 0, 0.1);\r\n background-color: #fff;\r\n}\r\n\r\n.kontactbutton_cc {\r\n width: 180px;\r\n height: 43px;\r\n gap: 10px;\r\n border-radius: 16px;\r\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);\r\n background: linear-gradient(to top, #000, #666);\r\n}\r\n\r\n.cc-height {\r\n height: 460px;\r\n}\r\n\r\n.listing-height {\r\n height: 422px;\r\n}\r\n\r\n.cardStyles {\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 460px;\r\n border-radius: 32px 0px 0px 32px !important;\r\n}\r\n.cardTag {\r\n width: 75px;\r\n height: 30px;\r\n flex-grow: 0;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: center;\r\n gap: 6px;\r\n padding: 0 24px;\r\n border-radius: 16px;\r\n border: solid 1px #313131;\r\n background-color: #fff;\r\n}\r\n.Grundriss {\r\n width: 120px;\r\n height: 30px;\r\n flex-grow: 0;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 10px;\r\n font-size: 14px;\r\n border-radius: 16px;\r\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);\r\n background: linear-gradient(to top, #000, #666);\r\n}\r\n.Frame-136 {\r\n height: 85px;\r\n align-self: stretch;\r\n flex-grow: 0;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: center;\r\n gap: 16px;\r\n padding: 10px 16px;\r\n border-radius: 16px;\r\n border: solid 1px rgba(0, 0, 0, 0.1);\r\n background-color: #fff;\r\n}\r\n.kontactbutton {\r\n width: 198px;\r\n height: 43px;\r\n flex-grow: 0;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 10px;\r\n border-radius: 16px;\r\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);\r\n background: linear-gradient(to top, #000, #666);\r\n}\r\n.kontact-button-text {\r\n flex-grow: 0;\r\n font-size: 16px;\r\n font-weight: 500;\r\n font-stretch: normal;\r\n font-style: normal;\r\n line-height: normal;\r\n letter-spacing: normal;\r\n text-align: center;\r\n color: #fff;\r\n}\r\n.propertyTitle {\r\n display: flex;\r\n flex-grow: 0;\r\n font-size: 24px;\r\n font-weight: 580;\r\n font-stretch: normal;\r\n font-style: normal;\r\n line-height: normal;\r\n letter-spacing: normal;\r\n text-align: start;\r\n color: #313131;\r\n}\r\n\r\n.chipLabel {\r\n height: 30px;\r\n padding: 0 10px;\r\n border-radius: 16px;\r\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);\r\n border: solid 1px #000;\r\n background-color: #fff;\r\n display: flex;\r\n}\r\n\r\n.layersVector {\r\n width: 15.1px;\r\n height: 16px;\r\n}\r\n\r\n.layersText {\r\n padding: 0 8px;\r\n font-size: 14px;\r\n color: #1b1b1b;\r\n line-height: 2.14;\r\n text-wrap: nowrap;\r\n}\r\n\r\n.style-img {\r\n object-fit: cover;\r\n border-radius: 30px !important;\r\n}\r\n\r\n.Vector {\r\n width: 12px;\r\n height: 16.1px;\r\n flex-grow: 0;\r\n margin: 0.4px 6px 0.4px 0;\r\n}\r\n\r\n.customButton {\r\n width: 262px;\r\n height: 43px;\r\n color: #000;\r\n cursor: pointer;\r\n border-color: #161410;\r\n background-color: #181716;\r\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);\r\n}\r\n.button_text {\r\n font-size: 16px;\r\n font-weight: 500;\r\n color: #1b1b1b;\r\n}\r\n\r\n.heartVector {\r\n width: 23px;\r\n height: 26.7px;\r\n cursor: pointer;\r\n}\r\n\r\n.heartVector.liked {\r\n fill: rgb(255, 255, 255) !important;\r\n}\r\n\r\n.location-wrapper {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n}\r\n\r\n.location-icon {\r\n width: 16px;\r\n height: 21px;\r\n flex-grow: 0;\r\n object-fit: contain;\r\n}\r\n\r\n.locationTexts {\r\n font-size: 16px;\r\n color: #344041;\r\n text-align: center;\r\n}\r\n\r\n.arrowVector {\r\n width: 23px;\r\n height: 23px;\r\n flex-grow: 0;\r\n object-fit: contain;\r\n}\r\n\r\n.Price {\r\n font-size: 26px;\r\n font-weight: 500;\r\n font-stretch: normal;\r\n font-style: normal;\r\n line-height: normal;\r\n letter-spacing: normal;\r\n text-align: center;\r\n color: #ffffff;\r\n}\r\n\r\n.details {\r\n font-size: 16px;\r\n color: #344041;\r\n}\r\n\r\n.price_label {\r\n font-size: 16px;\r\n text-align: left;\r\n color: #344041;\r\n}\r\n\r\n.value {\r\n font-size: 20px;\r\n font-weight: 500;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 5px;\r\n line-height: 1;\r\n}\r\n.priceValue {\r\n font-size: 20px;\r\n font-weight: 500;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 5px;\r\n line-height: 1;\r\n}\r\n\r\n.class {\r\n background-color: #1b1b1b;\r\n}\r\n\r\n.header {\r\n height: 64px;\r\n justify-content: center;\r\n}\r\n\r\n.rightConer {\r\n width: 200px;\r\n}\r\n.labelTopClass {\r\n height: 32px;\r\n}\r\n@media all and (min-width: 2560px) {\r\n .header {\r\n font-size: 38px;\r\n\r\n display: flex;\r\n }\r\n .cardStyle {\r\n gap: 0px;\r\n width: 350px;\r\n height: 300px;\r\n /* margin-left: 250px; */\r\n }\r\n}\r\n@media (max-width: 1399px) {\r\n .header {\r\n font-size: 38px;\r\n align-self: center;\r\n margin-left: 150px;\r\n }\r\n .cardStyle {\r\n gap: 0px;\r\n width: 350px;\r\n height: 300px;\r\n }\r\n}\r\n\r\n@media (max-width: 1199px) {\r\n .header {\r\n font-size: 38px;\r\n }\r\n .cardStyle {\r\n width: 300px;\r\n height: 250px;\r\n }\r\n}\r\n\r\n@media (max-width: 575px) {\r\n .detail {\r\n font-size: 11px;\r\n padding: 2px;\r\n }\r\n .Price {\r\n font-size: 19px;\r\n }\r\n .header {\r\n font-size: 28px;\r\n }\r\n .locationText {\r\n font-size: 12px;\r\n }\r\n .customButton {\r\n width: 200px !important;\r\n }\r\n .button_text {\r\n font-size: 13px;\r\n }\r\n}\r\n\r\n@media (max-width: 375px) {\r\n .labelTopClass {\r\n width: 105px !important;\r\n }\r\n .layersText {\r\n font-size: 9px;\r\n padding: 0 2rem;\r\n }\r\n .firstLabel {\r\n gap: 2px;\r\n }\r\n .layersVector {\r\n width: 9px;\r\n height: 10px;\r\n gap: 0px;\r\n }\r\n .cardStyle {\r\n width: 320px !important;\r\n height: 220px !important;\r\n }\r\n .header {\r\n font-size: 24px;\r\n }\r\n .detail {\r\n font-size: 10px;\r\n padding: 2px;\r\n }\r\n .Price {\r\n font-size: 18px;\r\n }\r\n .locationText {\r\n font-size: 10px;\r\n }\r\n .Vector {\r\n width: 8px;\r\n height: 16px;\r\n margin: 0px 2px 0.4px;\r\n }\r\n}\r\n\r\n@media (max-width: 280px) {\r\n .cardStyle {\r\n width: 260px !important;\r\n height: 160px !important;\r\n }\r\n .detail {\r\n margin-bottom: 5px;\r\n font-size: 0.6ch;\r\n }\r\n .Price {\r\n font-size: 9px;\r\n }\r\n .locationText {\r\n font-size: 6px;\r\n }\r\n .Vector {\r\n width: 7px;\r\n height: 10px;\r\n margin: 0px 2px 4px;\r\n }\r\n .heartVector {\r\n width: 15px;\r\n height: 20px;\r\n }\r\n}\r\n";
463
471
  styleInject(css_248z$3);
464
472
 
@@ -495,12 +503,6 @@ function PropertyCard(props) {
495
503
  url: props.baseUrl + p.contentUrl,
496
504
  title: "Floor Plan ".concat(index + 1),
497
505
  }); })) || [];
498
- if (props.property.selectedFloorPlan) {
499
- floorPlanImages.push({
500
- url: props.property.selectedFloorPlan,
501
- title: "Selected Floor Plan",
502
- });
503
- }
504
506
  var handleFloorPlanButton = function () {
505
507
  setIsImagePopupOpen(true);
506
508
  if (props.onFloorPlanClick) {