feat(v1.6): inline status change on orders list

Phase 44 complete:
- Clickable status badge opens dropdown with grouped statuses
- AJAX POST changes status without page reload (optimistic update)
- Fixed-position dropdown escapes table overflow:hidden
- updateStatus() returns JSON for AJAX, redirect for standard POST

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-27 09:40:06 +01:00
parent 3f072c5906
commit f2f1c44324
10 changed files with 652 additions and 47 deletions

View File

@@ -1082,6 +1082,66 @@ h4.section-title {
align-items: center;
gap: 5px;
flex-wrap: wrap;
cursor: pointer;
.order-tag {
cursor: pointer;
}
}
.orders-status-dropdown {
position: fixed;
z-index: 9999;
min-width: 180px;
max-height: 280px;
overflow-y: auto;
background: #fff;
border: 1px solid #d8e1ef;
border-radius: 6px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
padding: 4px 0;
&__group-header {
padding: 6px 12px 2px;
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #94a3b8;
&:not(:first-child) {
border-top: 1px solid #f1f5f9;
margin-top: 2px;
padding-top: 8px;
}
}
&__item {
display: flex;
align-items: center;
gap: 8px;
padding: 5px 12px;
font-size: 13px;
color: #334155;
cursor: pointer;
white-space: nowrap;
&:hover {
background: #f1f5f9;
}
&.is-current {
font-weight: 700;
background: #f8fafc;
}
}
&__color-dot {
width: 10px;
height: 10px;
border-radius: 50%;
flex-shrink: 0;
}
}
.order-tag {