diff options
| author | Petri Hienonen <petri.hienonen@gmail.com> | 2025-11-13 18:12:17 +0200 |
|---|---|---|
| committer | Petri Hienonen <petri.hienonen@gmail.com> | 2025-11-13 18:12:17 +0200 |
| commit | e4fdd8457d2d320eea502f0801fc22eceb8947b1 (patch) | |
| tree | 110530c498b276085bb409a537a3e2174d53d435 /app/components.js | |
| parent | 2113f8269423932fa76ae4f822f77a07dd703266 (diff) | |
| download | housing-e4fdd8457d2d320eea502f0801fc22eceb8947b1.tar.zst | |
Nothing
Diffstat (limited to 'app/components.js')
| -rw-r--r-- | app/components.js | 57 |
1 files changed, 45 insertions, 12 deletions
diff --git a/app/components.js b/app/components.js index 6531206..1c8c6aa 100644 --- a/app/components.js +++ b/app/components.js @@ -1,5 +1,5 @@ import { Dom, DomOptions, ToastType } from "dom"; -import { AreaParam, District, Filters, House, HouseParameter, Weights } from "models"; +import { AreaParam, Filters, House, HouseParameter, Weights } from "models"; export class Widgets { /** @@ -422,7 +422,7 @@ export class Sidebar { children: [ Dom.heading( 3, - "Weights", + "Scoring", new DomOptions({ styles: { color: "#333", @@ -715,34 +715,67 @@ export class Modal { const imgSect = Dom.div( new DomOptions({ children: [ - Dom.div( + Dom.span( + "Images", new DomOptions({ - id: "img_title", - styles: { fontSize: "14px", fontWeight: "bold", marginBottom: "10px" }, + styles: { + fontSize: "14px", + fontWeight: "bold", + marginBottom: "10px", + }, }), ), Dom.div( new DomOptions({ children: house.images.slice(0, 3).map((src) => { - return Dom.img( - src, + // Wrap image in anchor tag that opens in new tab + return Dom.a( new DomOptions({ - attributes: { loading: "lazy" }, - styles: { borderRadius: "4px", flexShrink: "0", height: "100px" }, + attributes: { + href: src, + rel: "noopener noreferrer", + target: "_blank", + }, + children: [ + Dom.img( + src, + new DomOptions({ + attributes: { + alt: "House image", + loading: "lazy", + }, + styles: { + borderRadius: "4px", + cursor: "pointer", + flexShrink: "0", + height: "100px", + transition: "opacity 0.2s ease", + }, + }), + ), + ], + styles: { + display: "block", + textDecoration: "none", + }, }), ); }), - - styles: { display: "flex", gap: "10px", overflowX: "auto", paddingBottom: "5px" }, + styles: { + display: "flex", + gap: "10px", + overflowX: "auto", + paddingBottom: "5px", + }, }), ), ], styles: { marginBottom: "20px" }, }), ); + frag.appendChild(imgSect); } - return frag; } |
