fix: add org website/domain field for invite validation; dropdown hides on blur

This commit is contained in:
James 2026-03-12 00:56:43 -04:00
parent 8b0a09bb7e
commit 0bb8033ed7
2 changed files with 12 additions and 6 deletions

BIN
dealspace

Binary file not shown.

View File

@ -167,12 +167,15 @@
<div id="orgNameDropdown" class="hidden absolute left-0 right-0 top-full mt-1 bg-[#0d1f3c] border border-white/[0.12] rounded-lg z-10 max-h-48 overflow-y-auto shadow-xl"></div>
<input type="hidden" id="addOrgId" value="">
</div>
<!-- Website / Domain -->
<div>
<label class="block text-sm font-medium text-[#94a3b8] mb-2">Website <span class="text-[#475569] font-normal">(used for invite domain validation)</span></label>
<input type="text" id="addOrgWebsite" placeholder="e.g. blackstone.com"
class="w-full px-4 py-2.5 bg-[#0a1628] border border-white/[0.08] rounded-lg text-white placeholder-[#475569] focus:outline-none focus:border-[#c9a84c] text-sm">
</div>
<!-- Members -->
<div>
<div class="flex items-center justify-between mb-2">
<label class="text-sm font-medium text-[#94a3b8]">Team Members</label>
<button onclick="addMemberRow()" class="text-xs text-[#c9a84c] hover:underline">+ Add member</button>
</div>
<label class="block text-sm font-medium text-[#94a3b8] mb-2">Team Members</label>
<div id="memberRows" class="space-y-2"></div>
</div>
<!-- Permissions -->
@ -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;