From 1dd80cc97444e95d1f1cc20dc151bc9c3569d3c9 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Sun, 8 Feb 2026 23:06:09 -0500 Subject: [PATCH] Implement dynamic Custom Questions editor in Lead Detail view - Added 'Comp_lead_detail_form' for editing licensee responses. - Implemented reactive form generation based on Exhibit question definitions. - Wired up 'Edit Mode' toggle in Lead Detail page. - Added CRUD editors for lead notes, priority, and visibility status. --- .../lead/[exhibit_tracking_id]/+page.svelte | 34 +++-- .../ae_comp__lead_detail_form.svelte | 125 +++++++++++++++++- 2 files changed, 142 insertions(+), 17 deletions(-) diff --git a/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/lead/[exhibit_tracking_id]/+page.svelte b/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/lead/[exhibit_tracking_id]/+page.svelte index af237192..02f6c989 100644 --- a/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/lead/[exhibit_tracking_id]/+page.svelte +++ b/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/lead/[exhibit_tracking_id]/+page.svelte @@ -9,6 +9,7 @@ import { ae_util } from '$lib/ae_utils/ae_utils'; import { ae_api, ae_loc } from '$lib/stores/ae_stores'; import Element_ae_crud_v2 from '$lib/elements/element_ae_crud_v2.svelte'; + import Comp_lead_detail_form from './ae_comp__lead_detail_form.svelte'; import { User, Mail, @@ -148,15 +149,22 @@ - {#if $lq__lead_obj.responses_json} - {@const responses = typeof $lq__lead_obj.responses_json === 'string' ? JSON.parse($lq__lead_obj.responses_json) : $lq__lead_obj.responses_json} - {#if Object.keys(responses).length > 0} -
-
- -

Custom Responses

-
-
+
+
+ +

Custom Responses / Qualifiers

+
+ + {#if is_edit_mode} + + {:else if $lq__lead_obj.responses_json} + {@const responses = typeof $lq__lead_obj.responses_json === 'string' ? JSON.parse($lq__lead_obj.responses_json) : $lq__lead_obj.responses_json} + {#if Object.keys(responses).length > 0} +
{#each Object.entries(responses) as [question, answer]}
{question}
@@ -164,9 +172,13 @@
{/each}
-
+ {:else} +

No responses captured for this lead.

+ {/if} + {:else} +

No responses captured for this lead.

{/if} - {/if} +
diff --git a/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/lead/[exhibit_tracking_id]/ae_comp__lead_detail_form.svelte b/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/lead/[exhibit_tracking_id]/ae_comp__lead_detail_form.svelte index 1010139b..cf2e2b78 100644 --- a/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/lead/[exhibit_tracking_id]/ae_comp__lead_detail_form.svelte +++ b/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/lead/[exhibit_tracking_id]/ae_comp__lead_detail_form.svelte @@ -1,11 +1,124 @@ -
-

Lead Details

-

Placeholder for qualifiers and notes.

-
+
+
+ {#each question_defs as q} +
+ +
+ {/each} +
+ + {#if question_defs.length === 0} +

No custom questions configured for this exhibit.

+ {/if} + + +
\ No newline at end of file