From 6fbf672c501f6d80b5c64d5773a770f2b6b77a87 Mon Sep 17 00:00:00 2001 From: b0txec Date: Sat, 22 Aug 2026 21:41:52 +0300 Subject: [PATCH] =?UTF-8?q?Separate=20Br=C4=ABdin=C4=81jumi=20map=20select?= =?UTF-8?q?ion=20from=20viewing=20warning=20detail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/pages/warnings/Warnings.tsx | 21 ++++++++++++--------- web/src/pages/warnings/warnings.css | 15 ++++++++------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/web/src/pages/warnings/Warnings.tsx b/web/src/pages/warnings/Warnings.tsx index 2c7c727..727ccd2 100644 --- a/web/src/pages/warnings/Warnings.tsx +++ b/web/src/pages/warnings/Warnings.tsx @@ -54,12 +54,12 @@ export function Warnings() { })); const [selectedId, setSelectedId] = createSignal(); const selectedWarning = createMemo(() => filteredWarnings().find(item => item.id === selectedId())); - const [detailOpen, setDetailOpen] = createSignal(false); - const openWarning = (id: string) => { setSelectedId(id); setDetailOpen(true); }; - const closeDetail = () => setDetailOpen(false); + const [detailId, setDetailId] = createSignal(); + const detailWarning = createMemo(() => filteredWarnings().find(item => item.id === detailId())); + const closeDetail = () => setDetailId(undefined); createEffect(() => { - if (!detailOpen()) return; + if (!detailId()) return; const onKeyDown = (event: KeyboardEvent) => { if (event.key === 'Escape') closeDetail(); }; document.addEventListener('keydown', onKeyDown); onCleanup(() => document.removeEventListener('keydown', onKeyDown)); @@ -128,15 +128,18 @@ export function Warnings() {
Izvēlētajam periodam nav aktīvu brīdinājumu. Karti joprojām var priekšskatīt, bet tajā nebūs iekrāsotu teritoriju.
0}>
{warning => - +
+ setSelectedId(warning.id)}/> + +
}
3. Kartes priekšskatījums{template().width} × {template().height} px eksports
- {warning => + {warning =>
event.stopPropagation()}> diff --git a/web/src/pages/warnings/warnings.css b/web/src/pages/warnings/warnings.css index 416bec0..9106374 100644 --- a/web/src/pages/warnings/warnings.css +++ b/web/src/pages/warnings/warnings.css @@ -1,9 +1,10 @@ .warningsPage{max-width:1900px}.warningsHeading{margin-bottom:18px}.warningsSetup{display:grid;grid-template-columns:260px minmax(0,1fr);gap:28px;padding:18px 0 24px;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.warningsSetup h2{margin:0 0 14px;font-size:20px}.warningFilterGrid{display:grid;grid-template-columns:220px 260px minmax(320px,1fr);gap:12px}.warningFilterGrid label{display:grid;gap:5px}.warningFilterGrid label span{font-size:12px;color:var(--text-muted)}.warningTitle input{width:100%}.warningsPreview{padding-top:24px}.warningsPreview canvas{display:block;width:100%;height:auto}.inlineNotice button{margin-left:14px} .warningSummary{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0} -.warningCard{position:relative;display:flex;align-items:center;height:44px;flex:0 1 190px;padding:0 16px 0 48px;border:1.5px solid var(--border);border-radius:12px;background:rgba(255,255,255,.65);overflow:hidden;appearance:none;font:inherit;color:var(--text);text-align:left;cursor:pointer;transition:border-color 200ms,box-shadow 200ms,transform 200ms} -.warningCard:hover{transform:translateY(-1px)} -.warningCardIcon{position:absolute;left:0;top:0;width:40px;height:100%;display:flex;align-items:center;justify-content:center;color:#fff;transition:width 300ms ease} +.warningCard{position:relative;display:flex;align-items:center;height:44px;flex:0 1 220px;border:1.5px solid var(--border);border-radius:12px;background:rgba(255,255,255,.65);overflow:hidden;transition:border-color 200ms,box-shadow 200ms} +.warningCardCheck{flex:0 0 auto;margin:0 0 0 12px} +.warningCardOpen{position:relative;flex:1 1 auto;align-self:stretch;display:flex;align-items:center;padding:0 14px 0 40px;border:none;background:none;appearance:none;font:inherit;color:var(--text);text-align:left;cursor:pointer} +.warningCardIcon{position:absolute;left:0;top:0;width:36px;height:100%;display:flex;align-items:center;justify-content:center;color:#fff;transition:width 300ms ease} .warningCardText{position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;transition:color 300ms ease} .warningCard.yellow{border-color:#caa000} .warningCard.orange{border-color:#c1580f} @@ -11,13 +12,13 @@ .warningCard.yellow .warningCardIcon{background:#caa000} .warningCard.orange .warningCardIcon{background:#c1580f} .warningCard.red .warningCardIcon{background:#b91c1c} -.warningCard:hover .warningCardIcon{width:100%} -.warningCard:hover .warningCardText{color:transparent} -.warningCard:active .warningCardIcon{filter:brightness(.88)} +.warningCardOpen:hover .warningCardIcon{width:100%} +.warningCardOpen:hover .warningCardText{color:transparent} +.warningCardOpen:active .warningCardIcon{filter:brightness(.88)} .warningCard.active{background:rgba(255,255,255,.95);box-shadow:0 0 0 3px var(--accent-pale)} .warningBackdrop{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(10,20,35,.55);backdrop-filter:blur(6px);animation:warningFadeIn 180ms ease} -.warningModal{position:relative;width:100%;max-width:640px;max-height:85vh;overflow-y:auto;padding:28px;border-radius:20px;background:var(--surface);box-shadow:var(--shadow-md);animation:warningPopIn 200ms ease} +.warningModal{position:relative;width:100%;max-width:900px;max-height:85vh;overflow-y:auto;padding:32px 36px;border-radius:20px;background:var(--surface);box-shadow:var(--shadow-md);animation:warningPopIn 200ms ease} .warningModalClose{position:absolute;top:16px;right:16px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:50%;background:var(--surface-strong);color:var(--text-muted);cursor:pointer;transition:background 150ms,color 150ms} .warningModalClose:hover{background:var(--accent-pale);color:var(--accent-strong)} .warningModalHeader{display:flex;align-items:center;gap:14px;padding:0 32px 14px 0;margin-bottom:14px;border-bottom:1px solid var(--border)}