`;
- }).join('');
+ // No match — just hide, the typed name will be used as-is on submit
+ dd.classList.add('hidden');
+ return;
}
+ dd.innerHTML = matches.map(o => {
+ const d = parseData(o.data_text);
+ const name = d.name || 'Unnamed';
+ return `
+ ${escHtml(name)}
+ ${d.role || ''}
+
`;
+ }).join('');
dd.classList.remove('hidden');
}, 200);
}
- function selectOrg(orgId, orgName, role, el) {
+ function orgNameBlur() {
+ // Hide dropdown shortly after blur (allow click to register first)
+ setTimeout(() => document.getElementById('orgNameDropdown').classList.add('hidden'), 200);
+ }
+
+ function selectOrg(orgId, orgName, role) {
document.getElementById('addOrgId').value = orgId;
document.getElementById('addOrgName').value = orgName;
if (role) setOrgType(role, document.querySelector(`[data-type="${role}"]`));
document.getElementById('orgNameDropdown').classList.add('hidden');
+ // Load members of this org for suggestions
+ loadOrgMemberSuggestions(orgId);
}
- function addMemberRow() {
- const idx = memberCount++;
- const row = document.createElement('div');
- row.className = 'grid grid-cols-[1fr_1fr_1fr_auto] gap-2 items-center';
- row.id = 'member-row-' + idx;
- row.innerHTML = `
-
-
-
- `;
- document.getElementById('memberRows').appendChild(row);
+ let orgMemberSuggestions = [];
+ async function loadOrgMemberSuggestions(orgId) {
+ orgMemberSuggestions = [];
+ if (!orgId) return;
+ // Get members from existing deal_org entries that reference this org
+ try {
+ const res = await fetchAPI('/api/orgs/' + orgId);
+ const org = await res.json();
+ if (org && org.members) orgMemberSuggestions = org.members;
+ } catch(e) {}
+ }
+
+ // ---- Member bubble system ----
+ function renderMemberBubbles() {
+ const container = document.getElementById('memberRows');
+ const bubbles = pendingMembers.map((m, i) =>
+ `