@kelpie/ui 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/dist/api/resource.d.ts +59 -6
  2. package/dist/api/resource.d.ts.map +1 -1
  3. package/dist/api/resource.js +106 -24
  4. package/dist/api/resource.js.map +1 -1
  5. package/dist/api/resources/companies.d.ts +2 -0
  6. package/dist/api/resources/companies.d.ts.map +1 -1
  7. package/dist/api/resources/companies.js +5 -1
  8. package/dist/api/resources/companies.js.map +1 -1
  9. package/dist/api/resources/consentPurposes.d.ts +13 -0
  10. package/dist/api/resources/consentPurposes.d.ts.map +1 -0
  11. package/dist/api/resources/consentPurposes.js +39 -0
  12. package/dist/api/resources/consentPurposes.js.map +1 -0
  13. package/dist/api/resources/customFields.d.ts +15 -0
  14. package/dist/api/resources/customFields.d.ts.map +1 -0
  15. package/dist/api/resources/customFields.js +41 -0
  16. package/dist/api/resources/customFields.js.map +1 -0
  17. package/dist/api/resources/decisions.d.ts +2 -0
  18. package/dist/api/resources/decisions.d.ts.map +1 -1
  19. package/dist/api/resources/decisions.js +1 -0
  20. package/dist/api/resources/decisions.js.map +1 -1
  21. package/dist/api/resources/emailDomainLinker.d.ts +16 -0
  22. package/dist/api/resources/emailDomainLinker.d.ts.map +1 -0
  23. package/dist/api/resources/emailDomainLinker.js +16 -0
  24. package/dist/api/resources/emailDomainLinker.js.map +1 -0
  25. package/dist/api/resources/enquiries.d.ts +39 -0
  26. package/dist/api/resources/enquiries.d.ts.map +1 -0
  27. package/dist/api/resources/enquiries.js +68 -0
  28. package/dist/api/resources/enquiries.js.map +1 -0
  29. package/dist/api/resources/forms.d.ts +21 -1
  30. package/dist/api/resources/forms.d.ts.map +1 -1
  31. package/dist/api/resources/forms.js +44 -17
  32. package/dist/api/resources/forms.js.map +1 -1
  33. package/dist/api/resources/handbookPages.d.ts +1 -1
  34. package/dist/api/resources/handbookPages.js +1 -1
  35. package/dist/api/resources/importJobs.d.ts +5 -0
  36. package/dist/api/resources/importJobs.d.ts.map +1 -1
  37. package/dist/api/resources/importJobs.js +3 -0
  38. package/dist/api/resources/importJobs.js.map +1 -1
  39. package/dist/api/resources/listMembers.d.ts +27 -0
  40. package/dist/api/resources/listMembers.d.ts.map +1 -0
  41. package/dist/api/resources/listMembers.js +108 -0
  42. package/dist/api/resources/listMembers.js.map +1 -0
  43. package/dist/api/resources/lists.d.ts +14 -0
  44. package/dist/api/resources/lists.d.ts.map +1 -0
  45. package/dist/api/resources/lists.js +34 -0
  46. package/dist/api/resources/lists.js.map +1 -0
  47. package/dist/api/resources/opportunities.d.ts +2 -0
  48. package/dist/api/resources/opportunities.d.ts.map +1 -1
  49. package/dist/api/resources/opportunities.js +1 -0
  50. package/dist/api/resources/opportunities.js.map +1 -1
  51. package/dist/api/resources/people.d.ts.map +1 -1
  52. package/dist/api/resources/people.js +4 -1
  53. package/dist/api/resources/people.js.map +1 -1
  54. package/dist/api/resources/roles.d.ts +2 -0
  55. package/dist/api/resources/roles.d.ts.map +1 -1
  56. package/dist/api/resources/roles.js +1 -1
  57. package/dist/api/resources/roles.js.map +1 -1
  58. package/dist/api/resources/sampleData.d.ts +17 -0
  59. package/dist/api/resources/sampleData.d.ts.map +1 -0
  60. package/dist/api/resources/sampleData.js +31 -0
  61. package/dist/api/resources/sampleData.js.map +1 -0
  62. package/dist/api/resources/webhooks.d.ts.map +1 -1
  63. package/dist/api/resources/webhooks.js +7 -22
  64. package/dist/api/resources/webhooks.js.map +1 -1
  65. package/dist/app/KelpieApp.d.ts.map +1 -1
  66. package/dist/app/KelpieApp.js +9 -1
  67. package/dist/app/KelpieApp.js.map +1 -1
  68. package/dist/components/ActivitiesPanel.d.ts.map +1 -1
  69. package/dist/components/ActivitiesPanel.js +3 -1
  70. package/dist/components/ActivitiesPanel.js.map +1 -1
  71. package/dist/components/ColumnPicker.d.ts +24 -0
  72. package/dist/components/ColumnPicker.d.ts.map +1 -0
  73. package/dist/components/ColumnPicker.js +56 -0
  74. package/dist/components/ColumnPicker.js.map +1 -0
  75. package/dist/components/CustomFieldsPanel.d.ts +23 -0
  76. package/dist/components/CustomFieldsPanel.d.ts.map +1 -0
  77. package/dist/components/CustomFieldsPanel.js +116 -0
  78. package/dist/components/CustomFieldsPanel.js.map +1 -0
  79. package/dist/components/DataTable.d.ts +16 -1
  80. package/dist/components/DataTable.d.ts.map +1 -1
  81. package/dist/components/DataTable.js +51 -10
  82. package/dist/components/DataTable.js.map +1 -1
  83. package/dist/components/DecisionsPanel.d.ts.map +1 -1
  84. package/dist/components/DecisionsPanel.js +4 -3
  85. package/dist/components/DecisionsPanel.js.map +1 -1
  86. package/dist/components/EntitySearch.d.ts.map +1 -1
  87. package/dist/components/EntitySearch.js +11 -5
  88. package/dist/components/EntitySearch.js.map +1 -1
  89. package/dist/components/FormsPanel.d.ts +18 -0
  90. package/dist/components/FormsPanel.d.ts.map +1 -0
  91. package/dist/components/FormsPanel.js +37 -0
  92. package/dist/components/FormsPanel.js.map +1 -0
  93. package/dist/components/ListsPanel.d.ts +14 -0
  94. package/dist/components/ListsPanel.d.ts.map +1 -0
  95. package/dist/components/ListsPanel.js +56 -0
  96. package/dist/components/ListsPanel.js.map +1 -0
  97. package/dist/components/NotesPanel.d.ts.map +1 -1
  98. package/dist/components/NotesPanel.js +6 -5
  99. package/dist/components/NotesPanel.js.map +1 -1
  100. package/dist/components/Paginator.d.ts +26 -0
  101. package/dist/components/Paginator.d.ts.map +1 -0
  102. package/dist/components/Paginator.js +16 -0
  103. package/dist/components/Paginator.js.map +1 -0
  104. package/dist/components/PlanAttention.d.ts +3 -2
  105. package/dist/components/PlanAttention.d.ts.map +1 -1
  106. package/dist/components/PlanAttention.js +7 -3
  107. package/dist/components/PlanAttention.js.map +1 -1
  108. package/dist/components/PlanPanel.d.ts.map +1 -1
  109. package/dist/components/PlanPanel.js +2 -1
  110. package/dist/components/PlanPanel.js.map +1 -1
  111. package/dist/components/Shell.d.ts.map +1 -1
  112. package/dist/components/Shell.js +4 -0
  113. package/dist/components/Shell.js.map +1 -1
  114. package/dist/components/useHasCustomFields.d.ts +13 -0
  115. package/dist/components/useHasCustomFields.d.ts.map +1 -0
  116. package/dist/components/useHasCustomFields.js +16 -0
  117. package/dist/components/useHasCustomFields.js.map +1 -0
  118. package/dist/index.d.ts +8 -2
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +4 -1
  121. package/dist/index.js.map +1 -1
  122. package/dist/lib/listView.d.ts +15 -0
  123. package/dist/lib/listView.d.ts.map +1 -0
  124. package/dist/lib/listView.js +66 -0
  125. package/dist/lib/listView.js.map +1 -0
  126. package/dist/lib/sort.d.ts +43 -0
  127. package/dist/lib/sort.d.ts.map +1 -0
  128. package/dist/lib/sort.js +102 -0
  129. package/dist/lib/sort.js.map +1 -0
  130. package/dist/pages/CompaniesPage.d.ts.map +1 -1
  131. package/dist/pages/CompaniesPage.js +88 -3
  132. package/dist/pages/CompaniesPage.js.map +1 -1
  133. package/dist/pages/CompanyDetail.d.ts.map +1 -1
  134. package/dist/pages/CompanyDetail.js +40 -15
  135. package/dist/pages/CompanyDetail.js.map +1 -1
  136. package/dist/pages/DealDetail.d.ts.map +1 -1
  137. package/dist/pages/DealDetail.js +20 -1
  138. package/dist/pages/DealDetail.js.map +1 -1
  139. package/dist/pages/DealsPage.d.ts.map +1 -1
  140. package/dist/pages/DealsPage.js +134 -14
  141. package/dist/pages/DealsPage.js.map +1 -1
  142. package/dist/pages/DecisionsPage.d.ts.map +1 -1
  143. package/dist/pages/DecisionsPage.js +52 -8
  144. package/dist/pages/DecisionsPage.js.map +1 -1
  145. package/dist/pages/EnquiriesPage.d.ts +2 -0
  146. package/dist/pages/EnquiriesPage.d.ts.map +1 -0
  147. package/dist/pages/EnquiriesPage.js +251 -0
  148. package/dist/pages/EnquiriesPage.js.map +1 -0
  149. package/dist/pages/EnquiryDetail.d.ts +2 -0
  150. package/dist/pages/EnquiryDetail.d.ts.map +1 -0
  151. package/dist/pages/EnquiryDetail.js +207 -0
  152. package/dist/pages/EnquiryDetail.js.map +1 -0
  153. package/dist/pages/EnquiryStageSettingsPage.d.ts +3 -0
  154. package/dist/pages/EnquiryStageSettingsPage.d.ts.map +1 -0
  155. package/dist/pages/EnquiryStageSettingsPage.js +34 -0
  156. package/dist/pages/EnquiryStageSettingsPage.js.map +1 -0
  157. package/dist/pages/FormDetail.d.ts.map +1 -1
  158. package/dist/pages/FormDetail.js +19 -1
  159. package/dist/pages/FormDetail.js.map +1 -1
  160. package/dist/pages/FormsPage.d.ts.map +1 -1
  161. package/dist/pages/FormsPage.js +53 -2
  162. package/dist/pages/FormsPage.js.map +1 -1
  163. package/dist/pages/FundraisingPage.d.ts.map +1 -1
  164. package/dist/pages/FundraisingPage.js +116 -14
  165. package/dist/pages/FundraisingPage.js.map +1 -1
  166. package/dist/pages/HiringPage.d.ts.map +1 -1
  167. package/dist/pages/HiringPage.js +27 -4
  168. package/dist/pages/HiringPage.js.map +1 -1
  169. package/dist/pages/ListDetail.d.ts +11 -0
  170. package/dist/pages/ListDetail.d.ts.map +1 -0
  171. package/dist/pages/ListDetail.js +214 -0
  172. package/dist/pages/ListDetail.js.map +1 -0
  173. package/dist/pages/ListsPage.d.ts +9 -0
  174. package/dist/pages/ListsPage.d.ts.map +1 -0
  175. package/dist/pages/ListsPage.js +125 -0
  176. package/dist/pages/ListsPage.js.map +1 -0
  177. package/dist/pages/OpportunitiesPage.d.ts.map +1 -1
  178. package/dist/pages/OpportunitiesPage.js +97 -14
  179. package/dist/pages/OpportunitiesPage.js.map +1 -1
  180. package/dist/pages/OpportunityDetail.d.ts.map +1 -1
  181. package/dist/pages/OpportunityDetail.js +64 -3
  182. package/dist/pages/OpportunityDetail.js.map +1 -1
  183. package/dist/pages/PartnershipDetail.d.ts.map +1 -1
  184. package/dist/pages/PartnershipDetail.js +19 -1
  185. package/dist/pages/PartnershipDetail.js.map +1 -1
  186. package/dist/pages/PartnershipsPage.d.ts.map +1 -1
  187. package/dist/pages/PartnershipsPage.js +111 -14
  188. package/dist/pages/PartnershipsPage.js.map +1 -1
  189. package/dist/pages/PeoplePage.d.ts.map +1 -1
  190. package/dist/pages/PeoplePage.js +119 -3
  191. package/dist/pages/PeoplePage.js.map +1 -1
  192. package/dist/pages/PersonDetail.d.ts.map +1 -1
  193. package/dist/pages/PersonDetail.js +67 -5
  194. package/dist/pages/PersonDetail.js.map +1 -1
  195. package/dist/pages/PlanningPage.d.ts.map +1 -1
  196. package/dist/pages/PlanningPage.js +88 -17
  197. package/dist/pages/PlanningPage.js.map +1 -1
  198. package/dist/pages/RaiseDetail.d.ts.map +1 -1
  199. package/dist/pages/RaiseDetail.js +13 -1
  200. package/dist/pages/RaiseDetail.js.map +1 -1
  201. package/dist/pages/RoleDetail.d.ts.map +1 -1
  202. package/dist/pages/RoleDetail.js +5 -4
  203. package/dist/pages/RoleDetail.js.map +1 -1
  204. package/dist/pages/SearchPage.d.ts.map +1 -1
  205. package/dist/pages/SearchPage.js +1 -0
  206. package/dist/pages/SearchPage.js.map +1 -1
  207. package/dist/pages/admin/DataPage.d.ts.map +1 -1
  208. package/dist/pages/admin/DataPage.js +126 -13
  209. package/dist/pages/admin/DataPage.js.map +1 -1
  210. package/dist/pages/admin/FieldsPage.d.ts +2 -0
  211. package/dist/pages/admin/FieldsPage.d.ts.map +1 -0
  212. package/dist/pages/admin/FieldsPage.js +164 -0
  213. package/dist/pages/admin/FieldsPage.js.map +1 -0
  214. package/dist/pages/admin/PrivacyPage.d.ts +9 -0
  215. package/dist/pages/admin/PrivacyPage.d.ts.map +1 -0
  216. package/dist/pages/admin/PrivacyPage.js +170 -0
  217. package/dist/pages/admin/PrivacyPage.js.map +1 -0
  218. package/dist/pages/admin/WebhookDeliveries.d.ts.map +1 -1
  219. package/dist/pages/admin/WebhookDeliveries.js +3 -2
  220. package/dist/pages/admin/WebhookDeliveries.js.map +1 -1
  221. package/dist/pages/admin/WebhooksPage.d.ts.map +1 -1
  222. package/dist/pages/admin/WebhooksPage.js +3 -2
  223. package/dist/pages/admin/WebhooksPage.js.map +1 -1
  224. package/dist/pages/admin/WorkspaceSettingsPage.d.ts.map +1 -1
  225. package/dist/pages/admin/WorkspaceSettingsPage.js +45 -2
  226. package/dist/pages/admin/WorkspaceSettingsPage.js.map +1 -1
  227. package/dist/pages/dashboard/attention.d.ts.map +1 -1
  228. package/dist/pages/dashboard/attention.js +3 -0
  229. package/dist/pages/dashboard/attention.js.map +1 -1
  230. package/dist/pages/forms/AddFieldMenu.d.ts +17 -0
  231. package/dist/pages/forms/AddFieldMenu.d.ts.map +1 -0
  232. package/dist/pages/forms/AddFieldMenu.js +43 -0
  233. package/dist/pages/forms/AddFieldMenu.js.map +1 -0
  234. package/dist/pages/forms/EmbedPanel.d.ts +4 -0
  235. package/dist/pages/forms/EmbedPanel.d.ts.map +1 -1
  236. package/dist/pages/forms/EmbedPanel.js +62 -3
  237. package/dist/pages/forms/EmbedPanel.js.map +1 -1
  238. package/dist/pages/forms/FieldsEditor.d.ts.map +1 -1
  239. package/dist/pages/forms/FieldsEditor.js +179 -36
  240. package/dist/pages/forms/FieldsEditor.js.map +1 -1
  241. package/dist/pages/forms/FormActions.d.ts +6 -0
  242. package/dist/pages/forms/FormActions.d.ts.map +1 -0
  243. package/dist/pages/forms/FormActions.js +149 -0
  244. package/dist/pages/forms/FormActions.js.map +1 -0
  245. package/dist/pages/forms/FormSettings.d.ts.map +1 -1
  246. package/dist/pages/forms/FormSettings.js +15 -19
  247. package/dist/pages/forms/FormSettings.js.map +1 -1
  248. package/dist/pages/forms/SubmissionDetail.d.ts +2 -0
  249. package/dist/pages/forms/SubmissionDetail.d.ts.map +1 -0
  250. package/dist/pages/forms/SubmissionDetail.js +76 -0
  251. package/dist/pages/forms/SubmissionDetail.js.map +1 -0
  252. package/dist/pages/forms/SubmissionsTable.d.ts.map +1 -1
  253. package/dist/pages/forms/SubmissionsTable.js +57 -8
  254. package/dist/pages/forms/SubmissionsTable.js.map +1 -1
  255. package/dist/pages/forms/fieldList.d.ts +11 -5
  256. package/dist/pages/forms/fieldList.d.ts.map +1 -1
  257. package/dist/pages/forms/fieldList.js +66 -6
  258. package/dist/pages/forms/fieldList.js.map +1 -1
  259. package/dist/pages/forms/template.d.ts +17 -0
  260. package/dist/pages/forms/template.d.ts.map +1 -1
  261. package/dist/pages/forms/template.js +93 -0
  262. package/dist/pages/forms/template.js.map +1 -1
  263. package/dist/pages/handbook/HandbookPage.js +1 -1
  264. package/dist/pages/hiringDirectory.js +2 -2
  265. package/dist/pages/onboarding/WorkspaceStepPage.d.ts.map +1 -1
  266. package/dist/pages/onboarding/WorkspaceStepPage.js +15 -2
  267. package/dist/pages/onboarding/WorkspaceStepPage.js.map +1 -1
  268. package/dist/pages/positionDirectory.js +2 -2
  269. package/package.json +2 -2
  270. package/src/api/resource.ts +155 -32
  271. package/src/api/resources/companies.ts +7 -1
  272. package/src/api/resources/consentPurposes.ts +83 -0
  273. package/src/api/resources/customFields.ts +88 -0
  274. package/src/api/resources/decisions.ts +3 -0
  275. package/src/api/resources/emailDomainLinker.ts +43 -0
  276. package/src/api/resources/enquiries.ts +118 -0
  277. package/src/api/resources/forms.ts +59 -19
  278. package/src/api/resources/handbookPages.ts +1 -1
  279. package/src/api/resources/importJobs.ts +9 -0
  280. package/src/api/resources/listMembers.ts +173 -0
  281. package/src/api/resources/lists.ts +61 -0
  282. package/src/api/resources/opportunities.ts +3 -0
  283. package/src/api/resources/people.ts +4 -1
  284. package/src/api/resources/roles.ts +3 -1
  285. package/src/api/resources/sampleData.ts +57 -0
  286. package/src/api/resources/webhooks.ts +8 -24
  287. package/src/app/KelpieApp.tsx +16 -0
  288. package/src/components/ActivitiesPanel.tsx +3 -10
  289. package/src/components/ColumnPicker.tsx +124 -0
  290. package/src/components/CustomFieldsPanel.tsx +330 -0
  291. package/src/components/DataTable.tsx +89 -10
  292. package/src/components/DecisionsPanel.tsx +4 -12
  293. package/src/components/EntitySearch.tsx +12 -5
  294. package/src/components/FormsPanel.tsx +86 -0
  295. package/src/components/ListsPanel.tsx +176 -0
  296. package/src/components/NotesPanel.tsx +6 -14
  297. package/src/components/Paginator.tsx +78 -0
  298. package/src/components/PlanAttention.tsx +20 -3
  299. package/src/components/PlanPanel.tsx +2 -10
  300. package/src/components/Shell.tsx +4 -0
  301. package/src/components/useHasCustomFields.ts +18 -0
  302. package/src/index.ts +10 -1
  303. package/src/lib/listView.ts +149 -0
  304. package/src/lib/sort.ts +143 -0
  305. package/src/pages/CompaniesPage.tsx +125 -11
  306. package/src/pages/CompanyDetail.tsx +98 -63
  307. package/src/pages/DealDetail.tsx +34 -0
  308. package/src/pages/DealsPage.tsx +178 -24
  309. package/src/pages/DecisionsPage.tsx +75 -18
  310. package/src/pages/EnquiriesPage.tsx +434 -0
  311. package/src/pages/EnquiryDetail.tsx +554 -0
  312. package/src/pages/EnquiryStageSettingsPage.tsx +63 -0
  313. package/src/pages/FormDetail.tsx +23 -1
  314. package/src/pages/FormsPage.tsx +81 -17
  315. package/src/pages/FundraisingPage.tsx +152 -24
  316. package/src/pages/HiringPage.tsx +39 -11
  317. package/src/pages/ListDetail.tsx +470 -0
  318. package/src/pages/ListsPage.tsx +281 -0
  319. package/src/pages/OpportunitiesPage.tsx +130 -24
  320. package/src/pages/OpportunityDetail.tsx +168 -2
  321. package/src/pages/PartnershipDetail.tsx +35 -0
  322. package/src/pages/PartnershipsPage.tsx +149 -24
  323. package/src/pages/PeoplePage.tsx +157 -11
  324. package/src/pages/PersonDetail.tsx +157 -6
  325. package/src/pages/PlanningPage.tsx +259 -29
  326. package/src/pages/RaiseDetail.tsx +24 -0
  327. package/src/pages/RoleDetail.tsx +21 -26
  328. package/src/pages/SearchPage.tsx +1 -0
  329. package/src/pages/admin/DataPage.tsx +324 -13
  330. package/src/pages/admin/FieldsPage.tsx +455 -0
  331. package/src/pages/admin/PrivacyPage.tsx +461 -0
  332. package/src/pages/admin/WebhookDeliveries.tsx +10 -15
  333. package/src/pages/admin/WebhooksPage.tsx +14 -19
  334. package/src/pages/admin/WorkspaceSettingsPage.tsx +134 -2
  335. package/src/pages/dashboard/attention.ts +3 -0
  336. package/src/pages/forms/AddFieldMenu.tsx +121 -0
  337. package/src/pages/forms/EmbedPanel.tsx +163 -2
  338. package/src/pages/forms/FieldsEditor.tsx +539 -165
  339. package/src/pages/forms/FormActions.tsx +552 -0
  340. package/src/pages/forms/FormSettings.tsx +29 -70
  341. package/src/pages/forms/SubmissionDetail.tsx +249 -0
  342. package/src/pages/forms/SubmissionsTable.tsx +112 -26
  343. package/src/pages/forms/fieldList.ts +68 -5
  344. package/src/pages/forms/template.ts +103 -0
  345. package/src/pages/handbook/HandbookPage.tsx +1 -1
  346. package/src/pages/hiringDirectory.ts +2 -2
  347. package/src/pages/onboarding/WorkspaceStepPage.tsx +31 -3
  348. package/src/pages/positionDirectory.ts +2 -2
  349. package/src/styles.css +3 -3
@@ -1,16 +1,21 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { DndContext, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors, } from '@dnd-kit/core';
3
3
  import { SortableContext, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';
4
4
  import { CSS } from '@dnd-kit/utilities';
5
5
  import { FORM_FIELD_MAP_TARGET_LABELS, FORM_OPTION_VALUE_TYPES } from '@kelpie/schemas';
6
- import { useEffect, useState } from 'react';
6
+ import { useEffect, useRef, useState } from 'react';
7
+ import { useConsentPurposes } from '../../api/resources/consentPurposes.js';
7
8
  import { useUpdateFormFields } from '../../api/resources/forms.js';
8
9
  import { ErrorPanel } from '../../components/QueryState.js';
9
- import { SectionHeader } from '../../components/SectionHeader.js';
10
+ import { AddFieldMenu } from './AddFieldMenu.js';
10
11
  import { FIELD_TYPE_OPTIONS, MAP_TARGET_OPTIONS, editField, fieldsChanged, findProblems, insertField, isUsable, removeField, reorderFields, toEditableFields, toFieldInputs, typeForTarget, } from './fieldList.js';
11
- import { NEW_FIELD } from './template.js';
12
12
  /**
13
- * The field builder.
13
+ * The field builder: the form as a visitor will see it, edited in place.
14
+ *
15
+ * The left column renders the fields the way the embed does — labels, required
16
+ * markers, placeholders, the Submit button. Clicking a field selects it and the
17
+ * panel beside the preview edits its settings; the anchor that appears on hover
18
+ * drags it up and down; "Add field" offers ready-made fields to append.
14
19
  *
15
20
  * Explicitly saved rather than saved per keystroke, unlike the inline editing
16
21
  * everywhere else in the app. A write replaces the whole list, so an
@@ -30,37 +35,64 @@ function localFieldId() {
30
35
  const inputClass = 'w-full rounded-md border border-border bg-surface-raised px-2.5 py-1.5 text-[13px] outline-none focus:border-accent focus:ring-2 focus:ring-accent/20';
31
36
  export function FieldsEditor({ form }) {
32
37
  const [fields, setFields] = useState(() => toEditableFields(form));
38
+ const [selectedId, setSelectedId] = useState(null);
33
39
  const updateFields = useUpdateFormFields();
40
+ const fieldsRef = useRef(fields);
41
+ fieldsRef.current = fields;
34
42
  const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 6 } }), useSensor(KeyboardSensor));
35
43
  // A save answers with the stored list, ids and all. Re-reading it here is what
36
- // turns the local ids of newly added fields into the real ones.
44
+ // turns the local ids of newly added fields into the real ones. The selection
45
+ // survives by position: a just-added field comes back at the same index under
46
+ // the id the server gave it.
37
47
  useEffect(() => {
38
- setFields(toEditableFields(form));
48
+ const next = toEditableFields(form);
49
+ setSelectedId((current) => {
50
+ if (current === null || next.some((field) => field.id === current)) {
51
+ return current;
52
+ }
53
+ const index = fieldsRef.current.findIndex((field) => field.id === current);
54
+ return index >= 0 ? (next[index]?.id ?? null) : null;
55
+ });
56
+ setFields(next);
39
57
  }, [form]);
40
58
  const problems = findProblems(fields, form.createDeal);
41
59
  const changed = fieldsChanged(form, fields);
60
+ const selected = fields.find((field) => field.id === selectedId);
42
61
  function onDragEnd(event) {
43
62
  const overId = event.over?.id;
44
63
  if (overId !== undefined) {
45
64
  setFields((current) => reorderFields(current, String(event.active.id), String(overId)));
46
65
  }
47
66
  }
67
+ function addField(input) {
68
+ const added = { ...input, id: localFieldId() };
69
+ setFields((current) => insertField(current, added, selectedId));
70
+ setSelectedId(added.id);
71
+ }
48
72
  function save() {
49
73
  updateFields.run({ id: form.id, fields: toFieldInputs(fields) });
50
74
  }
51
- return (_jsxs("div", { className: "max-w-3xl", children: [_jsx(SectionHeader, { title: "Fields", description: "Drag to reorder. What a field maps to decides what a submission writes.", onAdd: () => {
52
- setFields((current) => insertField(current, { ...NEW_FIELD, id: localFieldId() }, null));
53
- }, addLabel: "Add field" }), problems.list.map((problem) => (_jsx("p", { className: "mb-2 text-[12px] text-danger", children: problem }, problem))), _jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: onDragEnd, children: _jsx(SortableContext, { items: fields.map((field) => field.id), strategy: verticalListSortingStrategy, children: _jsx("ul", { className: "flex flex-col gap-2", children: fields.map((field) => (_jsx(SortableField, { field: field, problem: problems.byField.get(field.id), onChange: (change) => {
54
- setFields((current) => editField(current, field.id, change));
55
- }, onRemove: () => {
56
- setFields((current) => removeField(current, field.id));
57
- }, onAddBelow: () => {
58
- setFields((current) => insertField(current, { ...NEW_FIELD, id: localFieldId() }, field.id));
59
- } }, field.id))) }) }) }), fields.length === 0 && (_jsx("p", { className: "rounded-md border border-dashed border-border px-6 py-10 text-center text-[13px] text-ink-muted", children: "No fields yet. A form needs at least an email field." })), updateFields.error !== null && (_jsx("div", { className: "mt-3", children: _jsx(ErrorPanel, { error: updateFields.error }) })), _jsxs("div", { className: "mt-4 flex items-center gap-3", children: [_jsx("button", { type: "button", onClick: save, disabled: !changed || !isUsable(problems) || updateFields.isPending, className: "rounded-md bg-accent px-3 py-1.5 text-[12px] font-semibold text-accent-fg transition hover:bg-accent-hover disabled:opacity-50", children: updateFields.isPending ? 'Saving…' : 'Save fields' }), changed && (_jsx("button", { type: "button", onClick: () => {
75
+ return (_jsxs("div", { children: [_jsxs("div", { className: "mb-3 flex items-start justify-between gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "text-[13px] font-semibold text-ink", children: "Fields" }), _jsx("p", { className: "mt-0.5 text-[11px] text-ink-faint", children: "Click a field to edit it. Drag the anchor to reorder. What a field maps to decides what a submission writes." })] }), _jsx(AddFieldMenu, { fields: fields, onAdd: addField })] }), problems.list.map((problem) => (_jsx("p", { className: "mb-2 text-[12px] text-danger", children: problem }, problem))), _jsxs("div", { className: "grid items-start gap-6 lg:grid-cols-[minmax(0,1fr)_300px]", children: [_jsxs("div", { className: "rounded-lg border border-border bg-surface-raised p-4 sm:p-6", children: [fields.length === 0 ? (_jsx("p", { className: "rounded-md border border-dashed border-border px-6 py-10 text-center text-[13px] text-ink-muted", children: "No fields yet. A form needs at least an email field." })) : (_jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: onDragEnd, children: _jsx(SortableContext, { items: fields.map((field) => field.id), strategy: verticalListSortingStrategy, children: _jsx("ul", { className: "flex flex-col gap-1", children: fields.map((field) => (_jsx(PreviewField, { field: field, selected: field.id === selectedId, problem: problems.byField.get(field.id), onSelect: () => {
76
+ setSelectedId(field.id);
77
+ } }, field.id))) }) }) })), _jsx("div", { className: "mt-4 pl-7", "aria-hidden": "true", children: _jsx("span", { className: "pointer-events-none inline-flex rounded-md bg-accent px-4 py-2 text-[13px] font-semibold text-accent-fg", children: "Submit" }) })] }), selected === undefined ? (_jsx("aside", { className: "rounded-lg border border-dashed border-border p-4 text-[13px] text-ink-muted lg:sticky lg:top-4", children: "Select a field in the preview to edit its label, mapping, and type. \"Add field\" appends a new one." })) : (_jsx(FieldSettings, { field: selected, problem: problems.byField.get(selected.id), onChange: (change) => {
78
+ setFields((current) => editField(current, selected.id, change));
79
+ }, onRemove: () => {
80
+ setFields((current) => removeField(current, selected.id));
81
+ setSelectedId(null);
82
+ }, onClose: () => {
83
+ setSelectedId(null);
84
+ } }))] }), updateFields.error !== null && (_jsx("div", { className: "mt-3", children: _jsx(ErrorPanel, { error: updateFields.error }) })), _jsxs("div", { className: "mt-4 flex items-center gap-3", children: [_jsx("button", { type: "button", onClick: save, disabled: !changed || !isUsable(problems) || updateFields.isPending, className: "rounded-md bg-accent px-3 py-1.5 text-[12px] font-semibold text-accent-fg transition hover:bg-accent-hover disabled:opacity-50", children: updateFields.isPending ? 'Saving…' : 'Save fields' }), changed && (_jsx("button", { type: "button", onClick: () => {
60
85
  setFields(toEditableFields(form));
86
+ setSelectedId(null);
61
87
  }, className: "text-[12px] font-medium text-ink-muted transition hover:text-ink", children: "Discard changes" })), !changed && _jsx("span", { className: "text-[12px] text-ink-faint", children: "Saved" })] })] }));
62
88
  }
63
- function SortableField({ field, problem, onChange, onRemove, onAddBelow, }) {
89
+ /**
90
+ * One field, rendered the way the embed renders it and inert: the control never
91
+ * takes input here. A full-row button on top is what selects the field, so the
92
+ * click target is the whole thing a visitor would see, and the drag anchor
93
+ * beside the row is the one place a press means "move" instead of "edit".
94
+ */
95
+ function PreviewField({ field, selected, problem, onSelect }) {
64
96
  const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
65
97
  id: field.id,
66
98
  });
@@ -68,23 +100,82 @@ function SortableField({ field, problem, onChange, onRemove, onAddBelow, }) {
68
100
  transform: CSS.Transform.toString(transform),
69
101
  transition,
70
102
  opacity: isDragging ? 0.35 : 1,
71
- }, className: [
72
- 'rounded-md border bg-surface-raised p-3',
73
- problem === undefined ? 'border-border' : 'border-danger/50',
74
- ].join(' '), children: [_jsxs("div", { className: "flex items-start gap-2", children: [_jsx("button", { type: "button", className: "cursor-grab touch-none px-1 py-2 text-[10px] text-ink-faint active:cursor-grabbing", "aria-label": `Drag ${field.label} to reorder`, ...attributes, ...listeners, children: "\u22EE\u22EE" }), _jsxs("div", { className: "grid flex-1 gap-2 sm:grid-cols-2", children: [_jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1 block text-[11px] font-medium text-ink-faint", children: "Label" }), _jsx("input", { className: inputClass, value: field.label, onChange: (event) => {
75
- onChange({ label: event.target.value });
76
- } })] }), _jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1 block text-[11px] font-medium text-ink-faint", children: "Maps to" }), _jsx("select", { className: inputClass, value: field.mapTo, onChange: (event) => {
77
- const mapTo = event.target.value;
78
- onChange({ mapTo, type: typeForTarget(mapTo, field.type) });
79
- }, children: MAP_TARGET_OPTIONS.map((option) => (_jsx("option", { value: option.value, children: FORM_FIELD_MAP_TARGET_LABELS[option.value] }, option.value))) })] }), _jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1 block text-[11px] font-medium text-ink-faint", children: "Type" }), _jsx("select", { className: inputClass, value: field.type, onChange: (event) => {
80
- onChange({ type: event.target.value });
81
- }, children: FIELD_TYPE_OPTIONS.map((option) => (_jsx("option", { value: option.value, children: option.label }, option.value))) })] }), _jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1 block text-[11px] font-medium text-ink-faint", children: "Placeholder" }), _jsx("input", { className: inputClass, value: field.placeholder ?? '', onChange: (event) => {
82
- onChange({ placeholder: event.target.value.length === 0 ? null : event.target.value });
83
- } })] })] }), _jsxs("div", { className: "flex shrink-0 flex-col items-end gap-1", children: [_jsx("button", { type: "button", onClick: onRemove, "aria-label": `Remove ${field.label}`, className: "rounded-md px-1.5 py-1 text-[12px] text-ink-faint transition hover:text-danger", children: "\u2715" }), _jsx("button", { type: "button", onClick: onAddBelow, "aria-label": `Add a field below ${field.label}`, className: "rounded-md px-1.5 py-1 text-[12px] text-ink-faint transition hover:text-accent", children: "+" })] })] }), _jsxs("label", { className: "mt-2 flex items-center gap-2 pl-7 text-[12px] text-ink-muted", children: [_jsx("input", { type: "checkbox", checked: field.required ?? false, onChange: (event) => {
84
- onChange({ required: event.target.checked });
85
- } }), "Required"] }), field.type === 'select' && (_jsx(OptionsEditor, { options: field.options ?? [], onChange: (options) => {
86
- onChange({ options });
87
- } })), problem !== undefined && _jsx("p", { className: "mt-2 pl-7 text-[12px] text-danger", children: problem })] }));
103
+ }, className: "group flex items-start gap-0.5", children: [_jsx("button", { type: "button", className: "mt-8 shrink-0 cursor-grab touch-none rounded-md px-1 py-1 text-[10px] leading-none text-ink-faint opacity-0 transition hover:text-ink focus-visible:opacity-100 active:cursor-grabbing group-hover:opacity-100", "aria-label": `Drag ${field.label} to reorder`, ...attributes, ...listeners, children: "\u22EE\u22EE" }), _jsxs("div", { className: [
104
+ 'relative min-w-0 flex-1 rounded-md p-2.5 transition',
105
+ selected
106
+ ? 'ring-2 ring-accent'
107
+ : problem === undefined
108
+ ? 'ring-1 ring-transparent group-hover:ring-border-strong'
109
+ : 'ring-1 ring-danger/50',
110
+ ].join(' '), children: [_jsx("button", { type: "button", onClick: onSelect, "aria-label": `Edit ${field.label}`, "aria-pressed": selected, className: "absolute inset-0 z-10 cursor-pointer rounded-md" }), _jsxs("div", { className: "pointer-events-none", children: [_jsxs("span", { className: "mb-1 block text-[13px] font-medium text-ink", children: [field.label, (field.required ?? false) && _jsx("span", { className: "ml-0.5 text-danger", children: "*" })] }), _jsx(PreviewControl, { field: field }), problem !== undefined && _jsx("p", { className: "mt-1.5 text-[12px] text-danger", children: problem })] })] })] }));
111
+ }
112
+ /** The control itself, matching what the embed serves for each field type. */
113
+ function PreviewControl({ field }) {
114
+ const controlClass = 'w-full rounded-md border border-border bg-surface px-3 py-2 text-[13px] text-ink placeholder:text-ink-faint';
115
+ if (field.type === 'textarea') {
116
+ return (_jsx("textarea", { readOnly: true, tabIndex: -1, rows: 3, placeholder: field.placeholder ?? undefined, className: controlClass }));
117
+ }
118
+ if (field.type === 'select') {
119
+ const options = field.options ?? [];
120
+ // Remounted whenever the choices change, so the uncontrolled select cannot
121
+ // show a choice that no longer exists. The embed gives a non-required
122
+ // select a blank "—" first, and the preview shows the same.
123
+ return (_jsxs("select", { tabIndex: -1, defaultValue: "", className: controlClass, children: [(field.required ?? false) === false && _jsx("option", { value: "", children: "\u2014" }), options.map((option) => (_jsx("option", { value: option.key, children: option.value }, option.key)))] }, options.map((option) => option.key).join('\n')));
124
+ }
125
+ if (field.type === 'consent') {
126
+ return _jsx(ConsentPreview, { field: field });
127
+ }
128
+ if (field.type === 'notice') {
129
+ return _jsx(NoticePreview, { field: field });
130
+ }
131
+ return (_jsx("input", { readOnly: true, tabIndex: -1, type: field.type === 'email' ? 'email' : 'text', placeholder: field.placeholder ?? undefined, className: controlClass }));
132
+ }
133
+ /**
134
+ * The consent preview — matches what the visitor sees: a statement above,
135
+ * one checkbox per selected purpose below, each labelled by the purpose. The
136
+ * label above (in FieldRow) still shows the field heading.
137
+ */
138
+ /**
139
+ * The notice preview — prose only, styled like the hosted embed. There is no
140
+ * checkbox because a notice is granted implicitly by submission.
141
+ */
142
+ function NoticePreview({ field }) {
143
+ const statement = (field.statement ?? '').trim();
144
+ return (_jsx("div", { children: statement.length === 0 ? (_jsx("p", { className: "text-[11px] italic text-ink-faint", children: "Add a statement in the settings panel \u2014 the notice text the visitor reads." })) : (_jsx("p", { className: "rounded-md border border-border bg-surface px-3 py-2 text-[12px] leading-snug text-ink-muted whitespace-pre-line", children: statement })) }));
145
+ }
146
+ function ConsentPreview({ field }) {
147
+ const purposes = useConsentPurposes({ sort: 'sort_order', limit: 200 });
148
+ const labelById = new Map(purposes.records.map((purpose) => [purpose.id, purpose.label]));
149
+ const statement = field.statement ?? field.label;
150
+ const ids = field.consentPurposeIds ?? [];
151
+ const overrides = field.consentPurposeLabels ?? {};
152
+ return (_jsxs("div", { className: "space-y-1.5", children: [_jsx("p", { className: "text-[12px] text-ink-muted", children: statement }), ids.length === 0 ? (_jsx("p", { className: "text-[11px] italic text-ink-faint", children: "Pick at least one purpose in the settings panel." })) : (ids.map((id) => (_jsxs("div", { className: "flex items-start gap-2", children: [_jsx("input", { readOnly: true, tabIndex: -1, type: "checkbox", className: "mt-0.5" }), _jsx("span", { className: "text-[13px] text-ink", children: overrides[id] ?? labelById.get(id) ?? id })] }, id))))] }));
153
+ }
154
+ /** The panel a selected field's settings edit in. */
155
+ function FieldSettings({ field, problem, onChange, onRemove, onClose, }) {
156
+ return (_jsxs("aside", { className: "rounded-lg border border-border bg-surface-raised p-4 lg:sticky lg:top-4", children: [_jsxs("div", { className: "mb-3 flex items-center justify-between gap-2", children: [_jsx("h3", { className: "text-[12px] font-semibold text-ink", children: "Field settings" }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close field settings", className: "rounded-md px-1.5 py-1 text-[12px] text-ink-faint transition hover:text-ink", children: "\u2715" })] }), _jsxs("div", { className: "flex flex-col gap-3", children: [_jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1 block text-[11px] font-medium text-ink-faint", children: "Label" }), _jsx("input", { className: inputClass, value: field.label, onChange: (event) => {
157
+ onChange({ label: event.target.value });
158
+ } })] }), _jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1 block text-[11px] font-medium text-ink-faint", children: "Maps to" }), _jsx("select", { className: inputClass, value: field.mapTo, onChange: (event) => {
159
+ const mapTo = event.target.value;
160
+ onChange({ mapTo, type: typeForTarget(mapTo, field.type) });
161
+ }, children: MAP_TARGET_OPTIONS.map((option) => (_jsx("option", { value: option.value, children: FORM_FIELD_MAP_TARGET_LABELS[option.value] }, option.value))) })] }), _jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1 block text-[11px] font-medium text-ink-faint", children: "Type" }), _jsx("select", { className: inputClass, value: field.type, onChange: (event) => {
162
+ onChange({ type: event.target.value });
163
+ }, children: FIELD_TYPE_OPTIONS.map((option) => (_jsx("option", { value: option.value, children: option.label }, option.value))) })] }), _jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1 block text-[11px] font-medium text-ink-faint", children: "Placeholder" }), _jsx("input", { className: inputClass, value: field.placeholder ?? '', onChange: (event) => {
164
+ onChange({ placeholder: event.target.value.length === 0 ? null : event.target.value });
165
+ } })] }), _jsxs("label", { className: "flex items-center gap-2 text-[12px] text-ink-muted", children: [_jsx("input", { type: "checkbox", checked: field.required ?? false, onChange: (event) => {
166
+ onChange({ required: event.target.checked });
167
+ } }), "Required"] }), field.type === 'select' && (_jsx(OptionsEditor, { options: field.options ?? [], onChange: (options) => {
168
+ onChange({ options });
169
+ } })), (field.type === 'consent' || field.type === 'notice') && (_jsxs(_Fragment, { children: [_jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1 block text-[11px] font-medium text-ink-faint", children: field.type === 'notice'
170
+ ? 'Notice (the text the visitor reads)'
171
+ : 'Statement (intro sentence above the checkboxes)' }), _jsx("textarea", { className: inputClass, rows: field.type === 'notice' ? 5 : 3, value: field.statement ?? '', onChange: (event) => {
172
+ const value = event.target.value;
173
+ onChange({ statement: value.length === 0 ? null : value });
174
+ }, placeholder: field.type === 'notice'
175
+ ? 'By submitting this form you agree to us storing your information and using it to contact you about your enquiry.'
176
+ : 'Please tell us how we can contact you.' })] }), _jsx(ConsentPurposePicker, { mode: field.type === 'notice' ? 'notice' : 'checkbox', value: field.consentPurposeIds ?? [], labels: field.consentPurposeLabels ?? {}, onChange: (consentPurposeIds, consentPurposeLabels) => {
177
+ onChange({ consentPurposeIds, consentPurposeLabels });
178
+ } })] })), problem !== undefined && _jsx("p", { className: "text-[12px] text-danger", children: problem }), _jsx("button", { type: "button", onClick: onRemove, className: "self-start rounded-md border border-border px-2.5 py-1.5 text-[12px] font-medium text-danger transition hover:border-danger/50 hover:bg-danger-soft", children: "Remove field" })] })] }));
88
179
  }
89
180
  /**
90
181
  * A select's choices.
@@ -95,11 +186,11 @@ function SortableField({ field, problem, onChange, onRemove, onAddBelow, }) {
95
186
  * is the whole reason the two are separate.
96
187
  */
97
188
  function OptionsEditor({ options, onChange, }) {
98
- return (_jsxs("div", { className: "mt-3 space-y-2 pl-7", children: [_jsx("span", { className: "block text-[11px] font-medium text-ink-faint", children: "Options" }), options.map((option, index) => (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { className: `${inputClass} font-mono text-[12px]`, "aria-label": `Option ${String(index + 1)} key`, value: option.key, onChange: (event) => {
189
+ return (_jsxs("div", { className: "space-y-2", children: [_jsx("span", { className: "block text-[11px] font-medium text-ink-faint", children: "Options" }), options.map((option, index) => (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { className: `${inputClass} font-mono text-[12px]`, "aria-label": `Option ${String(index + 1)} key`, value: option.key, onChange: (event) => {
99
190
  onChange(options.map((existing, at) => at === index ? { ...existing, key: event.target.value } : existing));
100
191
  } }), _jsx("input", { className: inputClass, "aria-label": `Option ${String(index + 1)} label`, value: option.value, onChange: (event) => {
101
192
  onChange(options.map((existing, at) => at === index ? { ...existing, value: event.target.value } : existing));
102
- } }), _jsx("select", { className: `${inputClass} w-28`, "aria-label": `Option ${String(index + 1)} value type`, value: option.valueType ?? 'string', onChange: (event) => {
193
+ } }), _jsx("select", { className: `${inputClass} w-24`, "aria-label": `Option ${String(index + 1)} value type`, value: option.valueType ?? 'string', onChange: (event) => {
103
194
  onChange(options.map((existing, at) => at === index
104
195
  ? { ...existing, valueType: event.target.value }
105
196
  : existing));
@@ -112,4 +203,56 @@ function OptionsEditor({ options, onChange, }) {
112
203
  ]);
113
204
  }, className: "text-[12px] font-medium text-ink-muted transition hover:text-accent", children: "+ Add option" })] }));
114
205
  }
206
+ /**
207
+ * Picks the workspace consent purposes this field offers, with a text input
208
+ * beside each selected purpose so the admin can override the checkbox text.
209
+ * The override is bound to the same purpose the checkbox grants — the wording
210
+ * changes, the mapping never does. An empty override falls back to the
211
+ * workspace purpose's own label at render time.
212
+ */
213
+ function ConsentPurposePicker({ mode, value, labels, onChange, }) {
214
+ const purposes = useConsentPurposes({ sort: 'sort_order', limit: 200 });
215
+ if (purposes.isLoading) {
216
+ return _jsx("p", { className: "text-[12px] text-ink-muted", children: "Loading consent purposes\u2026" });
217
+ }
218
+ if (purposes.records.length === 0) {
219
+ return (_jsx("p", { className: "text-[12px] text-ink-muted", children: "No consent purposes yet. Add one on the Privacy admin page, then pick it here." }));
220
+ }
221
+ const chosen = new Set(value);
222
+ function toggle(id, checked) {
223
+ // Preserve the workspace's purpose order so the visitor sees the checkboxes
224
+ // in a consistent order regardless of which one the admin ticked first.
225
+ const order = purposes.records.map((purpose) => purpose.id);
226
+ const nextIds = order.filter((purposeId) => purposeId === id ? checked : chosen.has(purposeId));
227
+ // A deselected purpose drops its override too — silent orphan overrides
228
+ // would resurface if the admin ticked it again later.
229
+ const nextLabels = {};
230
+ for (const [key, val] of Object.entries(labels)) {
231
+ if (nextIds.includes(key))
232
+ nextLabels[key] = val;
233
+ }
234
+ onChange(nextIds, nextLabels);
235
+ }
236
+ function setLabel(id, text) {
237
+ const nextLabels = { ...labels };
238
+ if (text.length === 0) {
239
+ delete nextLabels[id];
240
+ }
241
+ else {
242
+ nextLabels[id] = text;
243
+ }
244
+ onChange(value, nextLabels);
245
+ }
246
+ const legend = mode === 'notice'
247
+ ? 'Purposes granted when the visitor submits (implicit consent)'
248
+ : 'Consent purposes (each selected one becomes a checkbox)';
249
+ return (_jsxs("fieldset", { className: "block", children: [_jsx("legend", { className: "mb-1 block text-[11px] font-medium text-ink-faint", children: legend }), _jsx("div", { className: "flex flex-col gap-2", children: purposes.records.map((purpose) => {
250
+ const isChosen = chosen.has(purpose.id);
251
+ return (_jsxs("div", { className: "rounded-md border border-border p-2", children: [_jsxs("label", { className: "flex items-center gap-2 text-[13px] text-ink", children: [_jsx("input", { type: "checkbox", checked: isChosen, onChange: (event) => {
252
+ toggle(purpose.id, event.target.checked);
253
+ } }), purpose.label] }), isChosen && mode === 'checkbox' && (_jsxs("label", { className: "mt-1.5 block", children: [_jsx("span", { className: "mb-1 block text-[11px] font-medium text-ink-faint", children: "Checkbox text (defaults to the purpose label)" }), _jsx("input", { className: inputClass, value: labels[purpose.id] ?? '', onChange: (event) => {
254
+ setLabel(purpose.id, event.target.value);
255
+ }, placeholder: purpose.label })] }))] }, purpose.id));
256
+ }) })] }));
257
+ }
115
258
  //# sourceMappingURL=FieldsEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldsEditor.js","sourceRoot":"","sources":["../../../src/pages/forms/FieldsEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldsEditor.js","sourceRoot":"","sources":["../../../src/pages/forms/FieldsEditor.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,GACX,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAC7F,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAQvF,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAiC,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAA;AACjD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,gBAAgB,CAAA;AAGvB;;;;;;;;;;;;;;;;;GAiBG;AAEH,IAAI,eAAe,GAAG,CAAC,CAAA;AAEvB,SAAS,YAAY;IACnB,eAAe,IAAI,CAAC,CAAA;IAEpB,OAAO,OAAO,MAAM,CAAC,eAAe,CAAC,EAAE,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,GACd,uJAAuJ,CAAA;AAMzJ,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAqB;IACtD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAkB,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;IACnF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACjE,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAA;IAC1C,MAAM,SAAS,GAAG,MAAM,CAA2B,MAAM,CAAC,CAAA;IAC1D,SAAS,CAAC,OAAO,GAAG,MAAM,CAAA;IAC1B,MAAM,OAAO,GAAG,UAAU,CACxB,SAAS,CAAC,aAAa,EAAE,EAAE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EACnE,SAAS,CAAC,cAAc,CAAC,CAC1B,CAAA;IAED,+EAA+E;IAC/E,8EAA8E;IAC9E,8EAA8E;IAC9E,6BAA6B;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAEnC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE;YACxB,IAAI,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;gBACnE,OAAO,OAAO,CAAA;YAChB,CAAC;YAED,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;YAE1E,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACtD,CAAC,CAAC,CAAA;QACF,SAAS,CAAC,IAAI,CAAC,CAAA;IACjB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU,CAAC,CAAA;IAEhE,SAAS,SAAS,CAAC,KAAmB;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,CAAA;QAE7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;IAED,SAAS,QAAQ,CAAC,KAAqB;QACrC,MAAM,KAAK,GAAkB,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,CAAA;QAE7D,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;QAC/D,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACzB,CAAC;IAED,SAAS,IAAI;QACX,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,OAAO,CACL,0BACE,eAAK,SAAS,EAAC,6CAA6C,aAC1D,eAAK,SAAS,EAAC,SAAS,aACtB,aAAI,SAAS,EAAC,oCAAoC,uBAAY,EAC9D,YAAG,SAAS,EAAC,mCAAmC,6HAG5C,IACA,EACN,KAAC,YAAY,IAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAI,IAC7C,EAEL,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC9B,YAAiB,SAAS,EAAC,8BAA8B,YACtD,OAAO,IADF,OAAO,CAEX,CACL,CAAC,EAEF,eAAK,SAAS,EAAC,2DAA2D,aACxE,eAAK,SAAS,EAAC,8DAA8D,aAC1E,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACrB,YAAG,SAAS,EAAC,iGAAiG,qEAE1G,CACL,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IAAC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,YACnF,KAAC,eAAe,IACd,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EACtC,QAAQ,EAAE,2BAA2B,YAErC,aAAI,SAAS,EAAC,qBAAqB,YAChC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,YAAY,IAEX,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,KAAK,CAAC,EAAE,KAAK,UAAU,EACjC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EACvC,QAAQ,EAAE,GAAG,EAAE;gDACb,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;4CACzB,CAAC,IANI,KAAK,CAAC,EAAE,CAOb,CACH,CAAC,GACC,GACW,GACP,CACd,EAED,cAAK,SAAS,EAAC,WAAW,iBAAa,MAAM,YAC3C,eAAM,SAAS,EAAC,yGAAyG,uBAElH,GACH,IACF,EAEL,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CACxB,gBAAO,SAAS,EAAC,iGAAiG,qHAG1G,CACT,CAAC,CAAC,CAAC,CACF,KAAC,aAAa,IACZ,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAC1C,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;4BACnB,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;wBACjE,CAAC,EACD,QAAQ,EAAE,GAAG,EAAE;4BACb,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;4BACzD,aAAa,CAAC,IAAI,CAAC,CAAA;wBACrB,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;4BACZ,aAAa,CAAC,IAAI,CAAC,CAAA;wBACrB,CAAC,GACD,CACH,IACG,EAEL,YAAY,CAAC,KAAK,KAAK,IAAI,IAAI,CAC9B,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,UAAU,IAAC,KAAK,EAAE,YAAY,CAAC,KAAK,GAAI,GACrC,CACP,EAED,eAAK,SAAS,EAAC,8BAA8B,aAC3C,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,SAAS,EACnE,SAAS,EAAC,gIAAgI,YAEzI,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,GAC5C,EACR,OAAO,IAAI,CACV,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE;4BACZ,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;4BACjC,aAAa,CAAC,IAAI,CAAC,CAAA;wBACrB,CAAC,EACD,SAAS,EAAC,kEAAkE,gCAGrE,CACV,EACA,CAAC,OAAO,IAAI,eAAM,SAAS,EAAC,4BAA4B,sBAAa,IAClE,IACF,CACP,CAAA;AACH,CAAC;AASD;;;;;GAKG;AACH,SAAS,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAqB;IAC7E,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;QAC3F,EAAE,EAAE,KAAK,CAAC,EAAE;KACb,CAAC,CAAA;IAEF,OAAO,CACL,cACE,GAAG,EAAE,UAAU,EACf,KAAK,EAAE;YACL,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC5C,UAAU;YACV,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC/B,EACD,SAAS,EAAC,gCAAgC,aAE1C,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,gNAAgN,gBAC9M,QAAQ,KAAK,CAAC,KAAK,aAAa,KACxC,UAAU,KACV,SAAS,6BAGN,EAET,eACE,SAAS,EAAE;oBACT,qDAAqD;oBACrD,QAAQ;wBACN,CAAC,CAAC,oBAAoB;wBACtB,CAAC,CAAC,OAAO,KAAK,SAAS;4BACrB,CAAC,CAAC,wDAAwD;4BAC1D,CAAC,CAAC,uBAAuB;iBAC9B,CAAC,IAAI,CAAC,GAAG,CAAC,aAEX,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,gBACL,QAAQ,KAAK,CAAC,KAAK,EAAE,kBACnB,QAAQ,EACtB,SAAS,EAAC,iDAAiD,GAC3D,EAEF,eAAK,SAAS,EAAC,qBAAqB,aAClC,gBAAM,SAAS,EAAC,6CAA6C,aAC1D,KAAK,CAAC,KAAK,EACX,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,eAAM,SAAS,EAAC,oBAAoB,kBAAS,IACtE,EACP,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,GAAI,EAC/B,OAAO,KAAK,SAAS,IAAI,YAAG,SAAS,EAAC,gCAAgC,YAAE,OAAO,GAAK,IACjF,IACF,IACH,CACN,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,cAAc,CAAC,EAAE,KAAK,EAAqC;IAClE,MAAM,YAAY,GAChB,6GAA6G,CAAA;IAE/G,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,CACL,mBACE,QAAQ,QACR,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAE,CAAC,EACP,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,SAAS,EAC3C,SAAS,EAAE,YAAY,GACvB,CACH,CAAA;IACH,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAA;QAEnC,2EAA2E;QAC3E,sEAAsE;QACtE,4DAA4D;QAC5D,OAAO,CACL,kBAEE,QAAQ,EAAE,CAAC,CAAC,EACZ,YAAY,EAAC,EAAE,EACf,SAAS,EAAE,YAAY,aAEtB,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,iBAAQ,KAAK,EAAC,EAAE,uBAAW,EAClE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,iBAAyB,KAAK,EAAE,MAAM,CAAC,GAAG,YACvC,MAAM,CAAC,KAAK,IADF,MAAM,CAAC,GAAG,CAEd,CACV,CAAC,KAVG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAW5C,CACV,CAAA;IACH,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,GAAI,CAAA;IACzC,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAC,aAAa,IAAC,KAAK,EAAE,KAAK,GAAI,CAAA;IACxC,CAAC;IAED,OAAO,CACL,gBACE,QAAQ,QACR,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAC/C,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,SAAS,EAC3C,SAAS,EAAE,YAAY,GACvB,CACH,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH;;;GAGG;AACH,SAAS,aAAa,CAAC,EAAE,KAAK,EAAqC;IACjE,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAChD,OAAO,CACL,wBACG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACxB,YAAG,SAAS,EAAC,mCAAmC,gGAE5C,CACL,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,kHAAkH,YAC5H,SAAS,GACR,CACL,GACG,CACP,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,KAAK,EAAqC;IAClE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IACvE,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAuB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAC/E,CAAA;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAA;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAA;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAA;IAElD,OAAO,CACL,eAAK,SAAS,EAAC,aAAa,aAC1B,YAAG,SAAS,EAAC,4BAA4B,YAAE,SAAS,GAAK,EACxD,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAClB,YAAG,SAAS,EAAC,mCAAmC,iEAE5C,CACL,CAAC,CAAC,CAAC,CACF,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CACd,eAAc,SAAS,EAAC,wBAAwB,aAC9C,gBAAO,QAAQ,QAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,GAAG,EACnE,eAAM,SAAS,EAAC,sBAAsB,YACnC,SAAS,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,GACpC,KAJC,EAAE,CAKN,CACP,CAAC,CACH,IACG,CACP,CAAA;AACH,CAAC;AAUD,qDAAqD;AACrD,SAAS,aAAa,CAAC,EACrB,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,GACY;IACnB,OAAO,CACL,iBAAO,SAAS,EAAC,0EAA0E,aACzF,eAAK,SAAS,EAAC,8CAA8C,aAC3D,aAAI,SAAS,EAAC,oCAAoC,+BAAoB,EACtE,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,gBACL,sBAAsB,EACjC,SAAS,EAAC,6EAA6E,uBAGhF,IACL,EAEN,eAAK,SAAS,EAAC,qBAAqB,aAClC,iBAAO,SAAS,EAAC,OAAO,aACtB,eAAM,SAAS,EAAC,mDAAmD,sBAAa,EAChF,gBACE,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oCAClB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;gCACzC,CAAC,GACD,IACI,EAER,iBAAO,SAAS,EAAC,OAAO,aACtB,eAAM,SAAS,EAAC,mDAAmD,wBAAe,EAClF,iBACE,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oCAClB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAA2B,CAAA;oCAEtD,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gCAC7D,CAAC,YAEA,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAClC,iBAA2B,KAAK,EAAE,MAAM,CAAC,KAAK,YAC3C,4BAA4B,CAAC,MAAM,CAAC,KAAK,CAAC,IADhC,MAAM,CAAC,KAAK,CAEhB,CACV,CAAC,GACK,IACH,EAER,iBAAO,SAAS,EAAC,OAAO,aACtB,eAAM,SAAS,EAAC,mDAAmD,qBAAY,EAC/E,iBACE,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,KAAK,CAAC,IAAI,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oCAClB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAsB,EAAE,CAAC,CAAA;gCACzD,CAAC,YAEA,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAClC,iBAA2B,KAAK,EAAE,MAAM,CAAC,KAAK,YAC3C,MAAM,CAAC,KAAK,IADF,MAAM,CAAC,KAAK,CAEhB,CACV,CAAC,GACK,IACH,EAER,iBAAO,SAAS,EAAC,OAAO,aACtB,eAAM,SAAS,EAAC,mDAAmD,4BAAmB,EACtF,gBACE,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,EAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oCAClB,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;gCACxF,CAAC,GACD,IACI,EAER,iBAAO,SAAS,EAAC,oDAAoD,aACnE,gBACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,EAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oCAClB,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;gCAC9C,CAAC,GACD,gBAEI,EAEP,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAC1B,KAAC,aAAa,IACZ,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,EAC5B,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;4BACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;wBACvB,CAAC,GACD,CACH,EAEA,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CACxD,8BACE,iBAAO,SAAS,EAAC,OAAO,aACtB,eAAM,SAAS,EAAC,mDAAmD,YAChE,KAAK,CAAC,IAAI,KAAK,QAAQ;4CACtB,CAAC,CAAC,qCAAqC;4CACvC,CAAC,CAAC,iDAAiD,GAChD,EACP,mBACE,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrC,KAAK,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE,EAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;4CAClB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAA;4CAChC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;wCAC5D,CAAC,EACD,WAAW,EACT,KAAK,CAAC,IAAI,KAAK,QAAQ;4CACrB,CAAC,CAAC,kHAAkH;4CACpH,CAAC,CAAC,wCAAwC,GAE9C,IACI,EACR,KAAC,oBAAoB,IACnB,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EACrD,KAAK,EAAE,KAAK,CAAC,iBAAiB,IAAI,EAAE,EACpC,MAAM,EAAE,KAAK,CAAC,oBAAoB,IAAI,EAAE,EACxC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,EAAE;oCACpD,QAAQ,CAAC,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC,CAAA;gCACvD,CAAC,GACD,IACD,CACJ,EAEA,OAAO,KAAK,SAAS,IAAI,YAAG,SAAS,EAAC,yBAAyB,YAAE,OAAO,GAAK,EAE9E,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,qJAAqJ,6BAGxJ,IACL,IACA,CACT,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,EACrB,OAAO,EACP,QAAQ,GAIT;IACC,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,eAAM,SAAS,EAAC,8CAA8C,wBAAe,EAC5E,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9B,eAA4C,SAAS,EAAC,yBAAyB,aAC7E,gBACE,SAAS,EAAE,GAAG,UAAU,wBAAwB,gBACpC,UAAU,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,EAC7C,KAAK,EAAE,MAAM,CAAC,GAAG,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;4BAClB,QAAQ,CACN,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAC3B,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CACnE,CACF,CAAA;wBACH,CAAC,GACD,EACF,gBACE,SAAS,EAAE,UAAU,gBACT,UAAU,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,EAC/C,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;4BAClB,QAAQ,CACN,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAC3B,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CACrE,CACF,CAAA;wBACH,CAAC,GACD,EACF,iBACE,SAAS,EAAE,GAAG,UAAU,OAAO,gBACnB,UAAU,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,aAAa,EACpD,KAAK,EAAE,MAAM,CAAC,SAAS,IAAI,QAAQ,EACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;4BAClB,QAAQ,CACN,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAC3B,EAAE,KAAK,KAAK;gCACV,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,KAAwC,EAAE;gCACnF,CAAC,CAAC,QAAQ,CACb,CACF,CAAA;wBACH,CAAC,YAEA,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACrC,iBAAmB,KAAK,EAAE,IAAI,YAC3B,IAAI,IADM,IAAI,CAER,CACV,CAAC,GACK,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE;4BACZ,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAA;wBACzD,CAAC,gBACW,iBAAiB,MAAM,CAAC,KAAK,EAAE,EAC3C,SAAS,EAAC,gFAAgF,uBAGnF,KAtDD,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAuDpC,CACP,CAAC,EACF,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE;oBACZ,QAAQ,CAAC;wBACP,GAAG,OAAO;wBACV,EAAE,GAAG,EAAE,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE;qBAC1F,CAAC,CAAA;gBACJ,CAAC,EACD,SAAS,EAAC,qEAAqE,6BAGxE,IACL,CACP,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,MAAM,EACN,QAAQ,GAcT;IACC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IAEvE,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,YAAG,SAAS,EAAC,4BAA4B,+CAA8B,CAAA;IAChF,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,CACL,YAAG,SAAS,EAAC,4BAA4B,+FAErC,CACL,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IAE7B,SAAS,MAAM,CAAC,EAAU,EAAE,OAAgB;QAC1C,4EAA4E;QAC5E,wEAAwE;QACxE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACzC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CACnD,CAAA;QACD,wEAAwE;QACxE,sDAAsD;QACtD,MAAM,UAAU,GAA2B,EAAE,CAAA;QAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;QAClD,CAAC;QACD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IAC/B,CAAC;IAED,SAAS,QAAQ,CAAC,EAAU,EAAE,IAAY;QACxC,MAAM,UAAU,GAA2B,EAAE,GAAG,MAAM,EAAE,CAAA;QACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,UAAU,CAAC,EAAE,CAAC,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;QACvB,CAAC;QACD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,MAAM,GACV,IAAI,KAAK,QAAQ;QACf,CAAC,CAAC,8DAA8D;QAChE,CAAC,CAAC,yDAAyD,CAAA;IAE/D,OAAO,CACL,oBAAU,SAAS,EAAC,OAAO,aACzB,iBAAQ,SAAS,EAAC,mDAAmD,YAAE,MAAM,GAAU,EACvF,cAAK,SAAS,EAAC,qBAAqB,YACjC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;oBACvC,OAAO,CACL,eAAsB,SAAS,EAAC,qCAAqC,aACnE,iBAAO,SAAS,EAAC,8CAA8C,aAC7D,gBACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;4CAClB,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;wCAC1C,CAAC,GACD,EACD,OAAO,CAAC,KAAK,IACR,EACP,QAAQ,IAAI,IAAI,KAAK,UAAU,IAAI,CAClC,iBAAO,SAAS,EAAC,cAAc,aAC7B,eAAM,SAAS,EAAC,mDAAmD,8DAE5D,EACP,gBACE,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;4CAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;wCAC1C,CAAC,EACD,WAAW,EAAE,OAAO,CAAC,KAAK,GAC1B,IACI,CACT,KAzBO,OAAO,CAAC,EAAE,CA0Bd,CACP,CAAA;gBACH,CAAC,CAAC,GACE,IACG,CACZ,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Form } from '@kelpie/schemas';
2
+ export interface FormActionsProps {
3
+ readonly form: Form;
4
+ }
5
+ export declare function FormActions({ form }: FormActionsProps): React.JSX.Element;
6
+ //# sourceMappingURL=FormActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormActions.d.ts","sourceRoot":"","sources":["../../../src/pages/forms/FormActions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAkC,MAAM,iBAAiB,CAAA;AAkC3E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA+FzE"}
@@ -0,0 +1,149 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PIPELINE_KINDS } from '@kelpie/schemas';
3
+ import { useMemo, useState } from 'react';
4
+ import { useDeals } from '../../api/resources/deals.js';
5
+ import { useEnquiries } from '../../api/resources/enquiries.js';
6
+ import { useUpdateForm } from '../../api/resources/forms.js';
7
+ import { useLists } from '../../api/resources/lists.js';
8
+ import { useMembers } from '../../api/resources/members.js';
9
+ import { useOpportunities } from '../../api/resources/opportunities.js';
10
+ import { usePartnerships } from '../../api/resources/partnerships.js';
11
+ import { usePipelineStages } from '../../api/resources/pipelineStages.js';
12
+ import { useRaises } from '../../api/resources/raises.js';
13
+ import { Chip } from '../../components/Chip.js';
14
+ import { ErrorPanel } from '../../components/QueryState.js';
15
+ import { SectionHeader } from '../../components/SectionHeader.js';
16
+ import { toTags } from '../fields.js';
17
+ /**
18
+ * What the form does with a submission, once the answers are captured.
19
+ *
20
+ * The three create-triggers sit side by side here. Deal moved off the
21
+ * Settings tab in the forms post-submit actions release: the form's identity
22
+ * (name, status, thank-you copy) is one thing, and what the form *produces*
23
+ * — a deal, an opportunity, a partnership, tagged records, list memberships,
24
+ * pipeline attachments — is another. Actions is where a builder answers
25
+ * "what happens next?".
26
+ *
27
+ * Every control commits on change; the optimistic update in
28
+ * `createResourceHooks` puts the old value back if the PATCH is refused.
29
+ */
30
+ const inputClass = 'w-full rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent focus:ring-2 focus:ring-accent/20';
31
+ export function FormActions({ form }) {
32
+ const updateForm = useUpdateForm();
33
+ const patch = (changes) => {
34
+ updateForm.run({ id: form.id, changes });
35
+ };
36
+ const hasCompanyField = form.fields.some((field) => field.mapTo.startsWith('company.'));
37
+ return (_jsxs("div", { className: "max-w-2xl space-y-6", children: [_jsx(SectionHeader, { title: "Actions", description: "What the form creates, tags, lists, and links every submitter to." }), updateForm.error !== null && _jsx(ErrorPanel, { error: updateForm.error }), _jsx(TriggerBlock, { form: form, kind: "deal", toggle: form.createDeal, kindValue: null, stageId: form.dealStageId, nameTemplate: form.dealNameTemplate, ownerId: null, requiresCompany: true, hasCompanyField: hasCompanyField, onToggle: (next) => patch({ createDeal: next }), onStage: (next) => patch({ dealStageId: next }), onTemplate: (next) => patch({ dealNameTemplate: next }) }), _jsx(TriggerBlock, { form: form, kind: "opportunity", toggle: form.createOpportunity, kindValue: form.opportunityKind, stageId: form.opportunityStageId, nameTemplate: form.opportunityNameTemplate, ownerId: form.opportunityOwnerId, onToggle: (next) => patch({ createOpportunity: next }), onKind: (next) => patch({ opportunityKind: next }), onStage: (next) => patch({ opportunityStageId: next }), onTemplate: (next) => patch({ opportunityNameTemplate: next }), onOwner: (next) => patch({ opportunityOwnerId: next }) }), _jsx(TriggerBlock, { form: form, kind: "partnership", toggle: form.createPartnership, kindValue: form.partnershipKind, stageId: form.partnershipStageId, nameTemplate: form.partnershipNameTemplate, ownerId: form.partnershipOwnerId, requiresCompany: true, hasCompanyField: hasCompanyField, onToggle: (next) => patch({ createPartnership: next }), onKind: (next) => patch({ partnershipKind: next }), onStage: (next) => patch({ partnershipStageId: next }), onTemplate: (next) => patch({ partnershipNameTemplate: next }), onOwner: (next) => patch({ partnershipOwnerId: next }) }), _jsx(TriggerBlock, { form: form, kind: "enquiry", toggle: form.createEnquiry, kindValue: null, stageId: form.enquiryStageId, nameTemplate: form.enquiryNameTemplate, ownerId: form.enquiryOwnerId, onToggle: (next) => patch({ createEnquiry: next }), onStage: (next) => patch({ enquiryStageId: next }), onTemplate: (next) => patch({ enquiryNameTemplate: next }), onOwner: (next) => patch({ enquiryOwnerId: next }) }), _jsx(TagsBlock, { title: "Tag the person", hint: "Merged into the submitter's tags. Never removes a tag someone set by hand.", value: form.personTags, onChange: (next) => patch({ personTags: next }) }), _jsx(TagsBlock, { title: "Tag the company", hint: "Merged into the resolved company's tags. Skipped when no company is resolved.", value: form.companyTags, onChange: (next) => patch({ companyTags: next }) }), _jsx(ListsBlock, { form: form, onChange: (next) => patch({ listIds: next }) }), _jsx(AttachTargetsBlock, { form: form, onChange: (next) => patch({ attachTargets: next }) })] }));
38
+ }
39
+ const TRIGGER_LABEL = {
40
+ enquiry: 'Create an Enquiry',
41
+ deal: 'Create a Deal',
42
+ opportunity: 'Create an Opportunity',
43
+ raise: 'Create a Raise',
44
+ partnership: 'Create a Partnership',
45
+ };
46
+ function TriggerBlock(props) {
47
+ const stages = usePipelineStages(props.kind);
48
+ const members = useMembers();
49
+ const disabled = props.requiresCompany === true && props.hasCompanyField !== true && !props.toggle;
50
+ const showsKind = props.onKind !== undefined;
51
+ const showsOwner = props.onOwner !== undefined;
52
+ return (_jsxs("div", { className: "space-y-3 rounded-md border border-border p-4", children: [_jsxs("label", { className: "flex items-center gap-2 text-[13px] font-medium text-ink", children: [_jsx("input", { type: "checkbox", checked: props.toggle, disabled: disabled, onChange: (event) => props.onToggle(event.target.checked) }), TRIGGER_LABEL[props.kind]] }), props.requiresCompany === true && props.hasCompanyField !== true && (_jsxs("p", { className: "text-[12px] text-danger", children: ["Add a field mapped to Company \u00B7 name or Company \u00B7 domain first. A ", props.kind, " belongs to a company, and this form collects neither."] })), props.toggle && (_jsxs(_Fragment, { children: [showsKind && (_jsx(Labelled, { label: "Kind", hint: `Optional. Free text: "Grant", "Accelerator", …`, children: _jsx("input", { className: inputClass, defaultValue: props.kindValue ?? '', onBlur: (event) => {
53
+ const next = event.target.value.length === 0 ? null : event.target.value;
54
+ if (next !== props.kindValue) {
55
+ props.onKind?.(next);
56
+ }
57
+ } }) })), _jsx(Labelled, { label: "Stage", hint: "Leaving this on the first open stage follows the board, so reordering it does not strand old forms on a column that moved.", children: _jsxs("select", { className: inputClass, value: props.stageId ?? '', onChange: (event) => {
58
+ props.onStage(event.target.value.length === 0 ? null : event.target.value);
59
+ }, children: [_jsx("option", { value: "", children: "First open stage" }), stages.records.map((stage) => (_jsx("option", { value: stage.id, children: stage.label }, stage.id)))] }) }), _jsx(Labelled, { label: "Name template", hint: "Tokens: {{company.name}} and {{person.name}}. A field mapped to the record's name wins over this.", children: _jsx("input", { className: inputClass, defaultValue: props.nameTemplate ?? '', onBlur: (event) => {
60
+ const next = event.target.value.length === 0 ? null : event.target.value;
61
+ if (next !== props.nameTemplate) {
62
+ props.onTemplate(next);
63
+ }
64
+ } }) }), showsOwner && (_jsx(Labelled, { label: "Owner", hint: "Empty falls back to the workspace default member.", children: _jsxs("select", { className: inputClass, value: props.ownerId ?? '', onChange: (event) => {
65
+ props.onOwner?.(event.target.value.length === 0 ? null : event.target.value);
66
+ }, children: [_jsx("option", { value: "", children: "Workspace default" }), members.members.map((member) => (_jsx("option", { value: member.id, children: member.name }, member.id)))] }) }))] }))] }));
67
+ }
68
+ // -------- Tags --------
69
+ function TagsBlock({ title, hint, value, onChange, }) {
70
+ return (_jsxs("div", { className: "space-y-2 rounded-md border border-border p-4", children: [_jsx("div", { className: "text-[13px] font-medium text-ink", children: title }), _jsx("input", { className: inputClass, defaultValue: value.join(', '), onBlur: (event) => {
71
+ const next = toTags(event.target.value);
72
+ const changed = next.length !== value.length || next.some((tag, index) => tag !== value[index]);
73
+ if (changed) {
74
+ onChange(next);
75
+ }
76
+ } }), _jsx("div", { className: "flex flex-wrap gap-1", children: value.map((tag) => (_jsx(Chip, { children: tag }, tag))) }), _jsx("p", { className: "text-[11px] text-ink-faint", children: hint })] }));
77
+ }
78
+ // -------- Lists --------
79
+ function ListsBlock({ form, onChange, }) {
80
+ const personLists = useLists({ targetType: 'person' });
81
+ const companyLists = useLists({ targetType: 'company' });
82
+ const eligible = useMemo(() => [...personLists.records, ...companyLists.records], [personLists.records, companyLists.records]);
83
+ const eligibleById = new Map(eligible.map((list) => [list.id, list]));
84
+ const [pick, setPick] = useState('');
85
+ const chosen = form.listIds;
86
+ const remaining = eligible.filter((list) => !chosen.includes(list.id));
87
+ function add() {
88
+ if (pick.length === 0 || chosen.includes(pick)) {
89
+ return;
90
+ }
91
+ onChange([...chosen, pick]);
92
+ setPick('');
93
+ }
94
+ return (_jsxs("div", { className: "space-y-2 rounded-md border border-border p-4", children: [_jsx("div", { className: "text-[13px] font-medium text-ink", children: "Add to a list" }), _jsx("p", { className: "text-[11px] text-ink-faint", children: "Person lists get the submitter. Company lists get the resolved company, or are skipped when no company is resolved." }), _jsxs("ul", { className: "divide-y divide-border", children: [chosen.length === 0 && (_jsx("li", { className: "py-2 text-[12px] text-ink-faint", children: "No lists yet." })), chosen.map((listId) => {
95
+ const list = eligibleById.get(listId);
96
+ return (_jsxs("li", { className: "flex items-center justify-between gap-2 py-2", children: [_jsx("span", { className: "text-[13px] text-ink", children: list === undefined ? listId : `${list.name} (${list.targetType})` }), _jsx("button", { type: "button", onClick: () => onChange(chosen.filter((id) => id !== listId)), className: "text-[11px] font-medium text-danger hover:underline", children: "Remove" })] }, listId));
97
+ })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("select", { className: `${inputClass} min-w-0 flex-1`, value: pick, onChange: (event) => setPick(event.target.value), children: [_jsx("option", { value: "", children: "Pick a list\u2026" }), remaining.map((list) => (_jsxs("option", { value: list.id, children: [list.name, " (", list.targetType, ")"] }, list.id)))] }), _jsx("button", { type: "button", onClick: add, className: "shrink-0 rounded-md bg-accent px-3 py-2 text-[12px] font-semibold text-accent-fg hover:bg-accent-hover disabled:opacity-50", disabled: pick.length === 0, children: "Add" })] })] }));
98
+ }
99
+ function useAttachOptions(kind) {
100
+ const deals = useDeals({}, { enabled: kind === 'deal' });
101
+ const opportunities = useOpportunities({}, { enabled: kind === 'opportunity' });
102
+ const raises = useRaises({}, { enabled: kind === 'raise' });
103
+ const partnerships = usePartnerships({}, { enabled: kind === 'partnership' });
104
+ const enquiries = useEnquiries({}, { enabled: kind === 'enquiry' });
105
+ switch (kind) {
106
+ case 'deal':
107
+ return deals.records.map((deal) => ({ id: deal.id, name: deal.name }));
108
+ case 'opportunity':
109
+ return opportunities.records.map((opp) => ({ id: opp.id, name: opp.name }));
110
+ case 'raise':
111
+ return raises.records.map((raise) => ({ id: raise.id, name: raise.name }));
112
+ case 'partnership':
113
+ return partnerships.records.map((partnership) => ({
114
+ id: partnership.id,
115
+ name: partnership.name,
116
+ }));
117
+ case 'enquiry':
118
+ return enquiries.records.map((enquiry) => ({ id: enquiry.id, name: enquiry.name }));
119
+ }
120
+ }
121
+ function AttachTargetsBlock({ form, onChange, }) {
122
+ const [kind, setKind] = useState('deal');
123
+ const [pick, setPick] = useState('');
124
+ const options = useAttachOptions(kind);
125
+ const chosen = form.attachTargets;
126
+ const chosenKey = new Set(chosen.map((target) => `${target.targetType}:${target.targetId}`));
127
+ const remaining = options.filter((record) => !chosenKey.has(`${kind}:${record.id}`));
128
+ function add() {
129
+ if (pick.length === 0) {
130
+ return;
131
+ }
132
+ const key = `${kind}:${pick}`;
133
+ if (chosenKey.has(key)) {
134
+ return;
135
+ }
136
+ onChange([...chosen, { targetType: kind, targetId: pick }]);
137
+ setPick('');
138
+ }
139
+ return (_jsxs("div", { className: "space-y-2 rounded-md border border-border p-4", children: [_jsx("div", { className: "text-[13px] font-medium text-ink", children: "Attach the submitter to a record" }), _jsxs("p", { className: "text-[11px] text-ink-faint", children: ["Every submitter is linked into these records through ", _jsx("code", { children: "person_links" }), "."] }), _jsxs("ul", { className: "divide-y divide-border", children: [chosen.length === 0 && (_jsx("li", { className: "py-2 text-[12px] text-ink-faint", children: "No records yet." })), chosen.map((target) => (_jsxs("li", { className: "flex items-center justify-between gap-2 py-2", children: [_jsxs("span", { className: "text-[13px] text-ink", children: [target.targetType, " \u00B7 ", target.targetId] }), _jsx("button", { type: "button", onClick: () => onChange(chosen.filter((candidate) => candidate.targetType !== target.targetType ||
140
+ candidate.targetId !== target.targetId)), className: "text-[11px] font-medium text-danger hover:underline", children: "Remove" })] }, `${target.targetType}:${target.targetId}`)))] }), _jsxs("div", { className: "grid grid-cols-[auto_1fr_auto] items-center gap-2", children: [_jsx("select", { className: inputClass, value: kind, onChange: (event) => {
141
+ setKind(event.target.value);
142
+ setPick('');
143
+ }, children: PIPELINE_KINDS.map((option) => (_jsx("option", { value: option, children: option }, option))) }), _jsxs("select", { className: inputClass, value: pick, onChange: (event) => setPick(event.target.value), children: [_jsx("option", { value: "", children: "Pick a record\u2026" }), remaining.map((record) => (_jsx("option", { value: record.id, children: record.name }, record.id)))] }), _jsx("button", { type: "button", onClick: add, className: "rounded-md bg-accent px-3 py-2 text-[12px] font-semibold text-accent-fg hover:bg-accent-hover disabled:opacity-50", disabled: pick.length === 0, children: "Add" })] })] }));
144
+ }
145
+ // -------- Shared bits --------
146
+ function Labelled({ label, hint, children, }) {
147
+ return (_jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1.5 block text-[12px] font-medium text-ink", children: label }), children, hint !== undefined && _jsx("p", { className: "mt-1 text-[11px] text-ink-faint", children: hint })] }));
148
+ }
149
+ //# sourceMappingURL=FormActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormActions.js","sourceRoot":"","sources":["../../../src/pages/forms/FormActions.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormSettings.d.ts","sourceRoot":"","sources":["../../../src/pages/forms/FormSettings.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,iBAAiB,CAAA;AAmBvD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmH3E"}
1
+ {"version":3,"file":"FormSettings.d.ts","sourceRoot":"","sources":["../../../src/pages/forms/FormSettings.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,iBAAiB,CAAA;AAmBvD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA0E3E"}