From 0bb8033ed7771cd496a99312614e334ccc9cfd9f Mon Sep 17 00:00:00 2001 From: James Date: Thu, 12 Mar 2026 00:56:43 -0400 Subject: [PATCH] fix: add org website/domain field for invite validation; dropdown hides on blur --- dealspace | Bin 34762224 -> 34762224 bytes portal/templates/app/project.html | 18 ++++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/dealspace b/dealspace index 4d328856016841cda7d25f535e00b75007920ed2..a5e78294c8459b7d457ecbf3d21d0ae86c258144 100755 GIT binary patch delta 2533 zcmb`{RaX^S6o%ok!A2Cj#crfwZ*18riVA|FV3HyRAfRA(p^4D6bB~c2cQ3hpUi*hKB3aE%msEjJ8ifX8i8mNg{utROw z!vT(Pf-_v;3OBgJ2opR|2X#>o_0a$g(Fl#<2{W3YDVo6x&CvqhXo*&64IlWT4gBDb zwrGa{v_}U7A_yJP37ydeUC|A}2tg>q5RM3RMqNI@zlV+y8X8m40gW?~j*V-DtG z9_C{K79tJlScJt`f~8o79YY z6iembS$3UrC^?l}N^T{OVx{C&td)F9e#J&9pcGUJDTS3HN>QblQd}valvGM7rIj*D zSwjZDgW+S4jmgo~&KTkl>|hEBaSwM4&hY4JYw)+K_TO1pM1)IluydHv=xPdeHoAm5 zncR(TuEF7M;o)iNo(TrqY$gv!*VN1?TLUSllvgS!6_rX#Wu=NzRjH;_S86CVm0F6O zQd_ZC927^zNpV(O6j#MfaaW9rN%2tXD0P*3N`0k)(okunG*&znv(iLqsx(u)l;%nc z#an5qv{G6tK8ml>M)6bpm9|PdB|vGfbWj47Af=HGNa-R_0ImEyHC^Z9nvC;4mMb)m=g>s=6>jp zL?mGV24WBfV+e*~7=~j6Mq(63V+_V(9L8e;k}(mJkb+c9#uQA&G)%_~%)~6r#vIJW zJj}-eEJPa8u?UN?1WU0D%drA0u?nlP25Yen>#+eFu?d^81zWKV+pz;Xu?xGg2Yay( z`;mbIIEX_yj3YRTV>pfzIEhm@jWallb2yI+xQI)*j4QZ`Yq*X~+`vuT!fo8aUEITc zJitRd!eczaQ#`|SyueGm!fU+2Tf9RS-s1y4;uAjO3%=qTzT*de;un775B?e^m@QJw k23Wun*^nJMkQ2F(8+l-bys$<-4mRfQlfB-C{Q~z~C^ph!SF=fUO`%DGFkDC)n6vw_>;0-QC@Z-Flw) zT%AAQT>PH3_jmiPy)$o}aLhz{nsvUTRwkeHJtYl(DG!_4zOx&c67;#r^exuLK<9+` zsJ_AeEn?#Q%#jgZ3C#mzqFh2ukpql9n#EgU8~H|d@8TZs+b!B9!MC3&F~qZRq^HR> zp_iAXP0RkiEb93|j{k|>4JD1)*nhw`X^il~IjsDi3+Mm4y= z2v@kl9VU37I?V8d1vO9;wNM*%P#5)3A6{qxZ!|BGqMhM!VE!v?yI-nyup)sUZ5Q8unLogJ>FdQQ=5~DC0V=xxuFdh>y5tA?(Nl3;NOvN-z#|+HGETmvI=3p-7 zVLldMAyScsMOcg_Sc+v>julvmRalKRSc`R7j}1u2Mr^`nY{6D+!*=YzPVB;N?7?2_ zLk9Na01o014&w-p;uwzO1Ww`@OL6_KN*UZ zVy*l;%c4_OC7WWaWLNAIdnJeBpyX6?DUM2RC6AI<$*1I33Md7YLP}w!h*DH3rW997 z7&7=B3?JJ%noUM$k1$trXoQEw)9B`&QKOTSA<(|!e`jHyCQFzx!e|VwZmez&v$$C- z;jR(JaM!RTN(04PX{a<(d=y{BPw`h8 zD*;LqrK!?PX|A+TS}K7`E2Xs(qy#G=N*krE(oSiwbWl1fos`Z>7bR2)Q@SeQN`%r) ziBzJLXeCC8Rk|xZlsKiQ(o2a~5)2vFqk9`_pZPy`pQ_y(QzHuuHaH}CCmNEx`=BrS zp+5#-AO>MDhF~a$VK_!$Bt~I0#$YVQVLT>aA|_!nl8}rkn2Kqbjv1JVSxCWb%)wmD z!+b2jLZl)Mi?A3=uoTO%94oLAtFRhtuommE9vhI3jo5_E*n+LthV9sao!Eul*n_>; zhYak;0UX339L5nG#W5Vm37o_!oW>cP#W|eE1zf}>T*eh##Wh^V4cx>n+{PW;#Xa1| z13bhdJjN3|#WOs|3%tZDyv7^6#XDr;JwD(gKH)RI;48l2JAU9Ne&IL%;ICnVw^fq2 k0ambv4YD9BvcVSFVF!EUfCF+O7aWn>YM*x=tISIO06cV6+yDRo diff --git a/portal/templates/app/project.html b/portal/templates/app/project.html index df6c44b..f58b5e6 100644 --- a/portal/templates/app/project.html +++ b/portal/templates/app/project.html @@ -167,12 +167,15 @@ + +
+ + +
-
- - -
+
@@ -869,6 +872,7 @@ document.getElementById('addOrgError').classList.add('hidden'); document.getElementById('addOrgName').value = ''; document.getElementById('addOrgId').value = ''; + document.getElementById('addOrgWebsite').value = ''; pendingMembers = []; renderMemberBubbles(); setOrgType('buyer', document.querySelector('[data-type="buyer"]')); @@ -1057,11 +1061,13 @@ try { let orgId = existingOrgId; if (!orgId) { - // Auto-derive domains from member emails + // Use manually entered website/domain first, fall back to member email domains + const websiteInput = (document.getElementById('addOrgWebsite').value || '').trim().replace(/^https?:\/\//, '').replace(/\/.*$/, '').toLowerCase(); const emailDomains = [...new Set( members.map(m => m.email ? m.email.split('@')[1] : null).filter(Boolean) )]; - const createRes = await fetchAPI('/api/orgs', { method: 'POST', body: JSON.stringify({ name, domains: emailDomains, role, website: '' }) }); + const domains = websiteInput ? [websiteInput, ...emailDomains.filter(d => d !== websiteInput)] : emailDomains; + const createRes = await fetchAPI('/api/orgs', { method: 'POST', body: JSON.stringify({ name, domains, role, website: websiteInput ? 'https://' + websiteInput : '' }) }); if (!createRes.ok) { const e = await createRes.json(); throw new Error(e.error || 'Failed to create org'); } const created = await createRes.json(); orgId = created.entry_id || created.org_id;