diff --git a/apps/hq-web/src/pages/ClientDetail.tsx b/apps/hq-web/src/pages/ClientDetail.tsx index a9bf323..2951f8d 100644 --- a/apps/hq-web/src/pages/ClientDetail.tsx +++ b/apps/hq-web/src/pages/ClientDetail.tsx @@ -971,7 +971,7 @@ function ServiceDataCard(props: { cm: ClientModule; name: string; fieldSpec: Fie const [pw, setPw] = useState('') const [busy, setBusy] = useState(false) const [editing, setEditing] = useState(false) - const [f, setF] = useState({ provider: '', username: '', remark: '' }) + const [f, setF] = useState({ provider: '', username: '', remark: '', password: '' }) const [details, setDetails] = useState([]) const copy = (text: string, what: string) => { @@ -994,7 +994,7 @@ function ServiceDataCard(props: { cm: ClientModule; name: string; fieldSpec: Fie .finally(() => setBusy(false)) } const startEdit = () => { - setF({ provider: cm.provider ?? '', username: cm.username ?? '', remark: cm.remark ?? '' }) + setF({ provider: cm.provider ?? '', username: cm.username ?? '', remark: cm.remark ?? '', password: '' }) setDetails(cm.details.map((d) => ({ ...d }))) setEditing(true) } @@ -1006,6 +1006,8 @@ function ServiceDataCard(props: { cm: ClientModule; name: string; fieldSpec: Fie patchClientModule(cm.id, { provider: f.provider, username: f.username, remark: f.remark, details: cleaned.map((d) => ({ label: d.label.trim(), value: d.value })), + // Password only when the managerial user typed one (blank = keep current). + ...(managerial && f.password.trim() !== '' ? { password: f.password } : {}), }) .then(() => { toast.ok('Service data saved'); setEditing(false); props.onChanged() }) .catch((e: Error) => toast.err(e.message)) @@ -1027,6 +1029,12 @@ function ServiceDataCard(props: { cm: ClientModule; name: string; fieldSpec: Fie
setF((p) => ({ ...p, provider: e.target.value }))} /> setF((p) => ({ ...p, username: e.target.value }))} /> + {managerial && ( + + setF((p) => ({ ...p, password: e.target.value }))} /> + + )} setF((p) => ({ ...p, remark: e.target.value }))} />
{details.map((d, i) => (