Servis: radni nalog za servisera, hover napomena, responsive popravke

- Nalepnica: uklonjen QR (ostaje na uređaju u servisu, klijent nema šta da skenira);
oslobođen prostor iskorišćen za telefon klijenta i datume (prijem + rok)
- Radni nalog: obrisani „servis_stampa" i „servis_predracun"; nov interni
„servis_radni_nalog" (ruta /servis/{id}/radni-nalog) sa podacima samo za
servisera, bez cena, sa barkodom i praznim poljima (dijagnoza, urađen rad, potpis)
- Forma „Izmeni nalog": kartice „Serviser" i „Avans i napomena" spojene u jednu
„Serviser, avans i napomena"
- Servis kanban: dugme uz SN broj otvara internu napomenu (hover na desktopu,
tap→focus na mobilnom); okidač na omotaču da napomena ne treperi
- Detalji naloga (responsive): forme „Dodaj rad/deo" izvučene iz inline grid-a u
klase + @media (2 kolone na telefonu); tabele radova/delova u tabela-skrol
This commit is contained in:
2026-06-23 11:08:58 +02:00
parent 8e06b9cd97
commit 6a96d07156
10 changed files with 226 additions and 594 deletions
+67
View File
@@ -1298,6 +1298,7 @@ select {
/* kartica naloga u koloni — nasleđuje .kartica, dodaje kompaktan padding i hover */
.kanban-karta {
display: block;
position: relative;
text-decoration: none;
padding: 12px;
cursor: pointer;
@@ -1307,6 +1308,72 @@ select {
transform: translateY(-1px);
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12);
}
/* dugme uz SN broj — otvara internu napomenu */
.napomena-omot {
display: inline-flex;
}
.napomena-dugme {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 2px;
border: none;
background: transparent;
color: var(--sb-akcent);
cursor: pointer;
border-radius: 5px;
line-height: 0;
opacity: 0.75;
user-select: none;
-webkit-user-select: none;
transition: opacity 0.12s ease, background 0.12s ease;
}
.napomena-dugme:hover,
.napomena-dugme:focus {
opacity: 1;
background: var(--pozadina-hover);
outline: none;
}
/* napomena kao overlay preko karte; ostaje u granicama karte → overflow kanbana je ne seče */
.karta-napomena {
position: absolute;
inset: 0;
padding: 10px 12px;
background: var(--pozadina-kartica, var(--pozadina));
border: 1px solid var(--sb-akcent);
border-radius: inherit;
font-size: 12px;
line-height: 1.45;
color: var(--tekst-glavni);
white-space: pre-wrap;
overflow: auto;
text-align: left;
opacity: 0;
visibility: hidden;
transition: opacity 0.12s ease;
z-index: 5;
}
/* okidač je omot (ne dugme): pošto je napomena DOM-dete omota, hover nad samom
napomenom drži omot „hovered" → ostaje stabilno vidljiva, ne treperi.
focus-within pokriva tap na mobilnom (fokus dugmeta unutar omota). */
.napomena-omot:hover .karta-napomena,
.napomena-omot:focus-within .karta-napomena {
opacity: 1;
visibility: visible;
}
/* forme „Dodaj rad/deo" u detaljima naloga — grid u CSS (ne inline) da ga @media može nadjačati */
.detalji-forma-rad { display: grid; grid-template-columns: 1fr 80px 120px auto; gap: 10px; align-items: flex-end; }
.detalji-forma-deo { display: grid; grid-template-columns: 1fr 70px 80px 120px auto; gap: 10px; align-items: flex-end; }
@media (max-width: 600px) {
/* na telefonu: dve kolone, dugme preko cele širine */
.detalji-forma-rad,
.detalji-forma-deo { grid-template-columns: 1fr 1fr; }
.detalji-forma-rad > :last-child,
.detalji-forma-deo > :last-child { grid-column: 1 / -1; }
.detalji-forma-rad > :last-child .btn-primarno,
.detalji-forma-deo > :last-child .btn-primarno { width: 100%; }
}
@media (max-width: 768px) {
.nabavke-tabela { display: none; } .nabavke-kartice { display: flex; }