From 71b3a7255ae30bd6444afadf8233bd6ad6033d42 Mon Sep 17 00:00:00 2001 From: Mahdi Date: Mon, 5 Oct 2026 18:19:37 +0330 Subject: [PATCH] Polish activity person picker layout and move add-person action beside the label Co-authored-by: Cursor --- apps/web/src/views/ActivityFormView.vue | 146 +++++++++++++++++++++--- 1 file changed, 129 insertions(+), 17 deletions(-) diff --git a/apps/web/src/views/ActivityFormView.vue b/apps/web/src/views/ActivityFormView.vue index 8b87513..5334eff 100644 --- a/apps/web/src/views/ActivityFormView.vue +++ b/apps/web/src/views/ActivityFormView.vue @@ -643,9 +643,17 @@ watch([id, isNew], () => void load(), { immediate: true });
- +
+ + +
  • در حال جستجو…
  • شخصی پیدا نشد. +
  • -
    @@ -1156,12 +1172,56 @@ watch([id, isNew], () => void load(), { immediate: true }); background: #f8fafc; } +.label-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.5rem; +} + +.person-add { + display: inline-flex; + align-items: center; + gap: 0.3rem; + border: 0; + background: none; + padding: 0.15rem 0.35rem; + border-radius: 6px; + font: inherit; + font-size: var(--fs-xs); + font-weight: 700; + color: #0f766e; + cursor: pointer; +} + +.person-add:hover { + background: #f0fdfa; +} + +.person-ico { + width: 32px; + height: 32px; + border-radius: 999px; + display: grid; + place-items: center; + flex-shrink: 0; + background: #f1f5f9; + color: #94a3b8; +} + +.person-ico.on { + background: #ccfbf1; + color: #0f766e; +} + .person-menu { max-height: none; overflow: visible; display: grid; - gap: 0.3rem; + gap: 0.35rem; padding: 0.45rem; + z-index: 30; + border: 1px solid #e2e8f0; } .person-search { @@ -1198,26 +1258,78 @@ watch([id, isNew], () => void load(), { immediate: true }); overflow-y: auto; } -.person-list button.on { +.menu .person-row { + gap: 0.6rem; + padding: 0.5rem 0.6rem; + border-radius: 8px; +} + +.menu .person-row.on { background: #f0fdfa; } +.row-text { + flex: 1; + min-width: 0; + display: grid; + gap: 0.1rem; +} + +.row-text b { + font-size: 0.88rem; + font-weight: 600; + color: #0f172a; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.row-text small { + font-size: 0.74rem; + color: #94a3b8; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.row-phone { + flex-shrink: 0; + font-size: 0.78rem; + color: #64748b; + font-variant-numeric: tabular-nums; +} + +.row-check { + flex-shrink: 0; + color: #0d9488; +} + +.person-list li + li { + border-top: 1px solid #f8fafc; +} + .person-empty { - padding: 0.7rem; + padding: 0.8rem; + display: grid; + gap: 0.5rem; + justify-items: center; text-align: center; color: #94a3b8; font-size: 0.85rem; } -.menu .person-add { - border-top: 1px solid #f1f5f9; - border-radius: 0 0 var(--radius) var(--radius); +.menu .empty-add { + width: auto; + justify-content: center; + border: 1px dashed #5eead4; + border-radius: 999px; + padding: 0.4rem 0.9rem; color: #0f766e; font-weight: 700; - font-size: 0.86rem; + font-size: 0.8rem; } -.menu .person-add:hover { +.menu .empty-add:hover { background: #f0fdfa; }