@aglyn/plugins-crm 1.0.0-beta.221 → 1.0.0-beta.223

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 (541) hide show
  1. package/README.md +2 -1
  2. package/package.json +13 -13
  3. package/src/lib/components/activity-list.js +12 -5
  4. package/src/lib/components/activity-list.js.map +1 -1
  5. package/src/lib/components/companies-bulk-bar.d.ts +1 -4
  6. package/src/lib/components/companies-bulk-bar.js +7 -20
  7. package/src/lib/components/companies-bulk-bar.js.map +1 -1
  8. package/src/lib/components/companies-section.d.ts +3 -3
  9. package/src/lib/components/companies-section.js +149 -46
  10. package/src/lib/components/companies-section.js.map +1 -1
  11. package/src/lib/components/company-edit-drawer.js +281 -20
  12. package/src/lib/components/company-edit-drawer.js.map +1 -1
  13. package/src/lib/components/company-properties-card.js +99 -8
  14. package/src/lib/components/company-properties-card.js.map +1 -1
  15. package/src/lib/components/contact-detail-page.js +3 -1
  16. package/src/lib/components/contact-detail-page.js.map +1 -1
  17. package/src/lib/components/contact-merge-dialog.js +33 -10
  18. package/src/lib/components/contact-merge-dialog.js.map +1 -1
  19. package/src/lib/components/contact-properties-card.d.ts +0 -69
  20. package/src/lib/components/contact-properties-card.js +350 -60
  21. package/src/lib/components/contact-properties-card.js.map +1 -1
  22. package/src/lib/components/contact-reports-to-field.d.ts +46 -0
  23. package/src/lib/components/contact-reports-to-field.js +67 -0
  24. package/src/lib/components/contact-reports-to-field.js.map +1 -0
  25. package/src/lib/components/contacts-bulk-bar.d.ts +1 -8
  26. package/src/lib/components/contacts-bulk-bar.js +7 -19
  27. package/src/lib/components/contacts-bulk-bar.js.map +1 -1
  28. package/src/lib/components/contacts-section.js +46 -33
  29. package/src/lib/components/contacts-section.js.map +1 -1
  30. package/src/lib/components/crm-call-actions.d.ts +10 -0
  31. package/src/lib/components/crm-call-actions.js +26 -9
  32. package/src/lib/components/crm-call-actions.js.map +1 -1
  33. package/src/lib/components/crm-next-activity-column.js +1 -1
  34. package/src/lib/components/crm-next-activity-column.js.map +1 -1
  35. package/src/lib/components/crm-record-picker.d.ts +15 -0
  36. package/src/lib/components/crm-record-picker.js +16 -10
  37. package/src/lib/components/crm-record-picker.js.map +1 -1
  38. package/src/lib/components/crm-transfer-buttons.d.ts +54 -0
  39. package/src/lib/components/crm-transfer-buttons.js +167 -0
  40. package/src/lib/components/crm-transfer-buttons.js.map +1 -0
  41. package/src/lib/components/deal-contact-roles-card.d.ts +46 -0
  42. package/src/lib/components/deal-contact-roles-card.js +368 -0
  43. package/src/lib/components/deal-contact-roles-card.js.map +1 -0
  44. package/src/lib/components/deal-detail-page.d.ts +3 -2
  45. package/src/lib/components/deal-detail-page.js +25 -6
  46. package/src/lib/components/deal-detail-page.js.map +1 -1
  47. package/src/lib/components/deal-edit-drawer.d.ts +10 -0
  48. package/src/lib/components/deal-edit-drawer.js +219 -10
  49. package/src/lib/components/deal-edit-drawer.js.map +1 -1
  50. package/src/lib/components/deal-properties-card.d.ts +7 -0
  51. package/src/lib/components/deal-properties-card.js +34 -3
  52. package/src/lib/components/deal-properties-card.js.map +1 -1
  53. package/src/lib/components/deal-stage-card.d.ts +4 -0
  54. package/src/lib/components/deal-stage-card.js +10 -2
  55. package/src/lib/components/deal-stage-card.js.map +1 -1
  56. package/src/lib/components/deals-bulk-bar.d.ts +0 -3
  57. package/src/lib/components/deals-bulk-bar.js +7 -20
  58. package/src/lib/components/deals-bulk-bar.js.map +1 -1
  59. package/src/lib/components/deals-section.d.ts +3 -3
  60. package/src/lib/components/deals-section.js +123 -63
  61. package/src/lib/components/deals-section.js.map +1 -1
  62. package/src/lib/components/fields-section.js +31 -17
  63. package/src/lib/components/fields-section.js.map +1 -1
  64. package/src/lib/components/lead-convert-dialog.d.ts +4 -0
  65. package/src/lib/components/lead-convert-dialog.js +23 -1
  66. package/src/lib/components/lead-convert-dialog.js.map +1 -1
  67. package/src/lib/components/lead-detail-page.js +8 -2
  68. package/src/lib/components/lead-detail-page.js.map +1 -1
  69. package/src/lib/components/lead-profile-fields.d.ts +71 -0
  70. package/src/lib/components/lead-profile-fields.js +386 -0
  71. package/src/lib/components/lead-profile-fields.js.map +1 -0
  72. package/src/lib/components/lead-properties-card.d.ts +2 -1
  73. package/src/lib/components/lead-properties-card.js +85 -176
  74. package/src/lib/components/lead-properties-card.js.map +1 -1
  75. package/src/lib/components/lead-source-select.d.ts +4 -23
  76. package/src/lib/components/lead-source-select.js +9 -73
  77. package/src/lib/components/lead-source-select.js.map +1 -1
  78. package/src/lib/components/lead-status-chip.d.ts +9 -3
  79. package/src/lib/components/lead-status-chip.js +8 -4
  80. package/src/lib/components/lead-status-chip.js.map +1 -1
  81. package/src/lib/components/lead-status-options.d.ts +20 -0
  82. package/src/lib/components/lead-status-options.js +51 -0
  83. package/src/lib/components/lead-status-options.js.map +1 -0
  84. package/src/lib/components/lead-unqualify-dialog.d.ts +5 -0
  85. package/src/lib/components/lead-unqualify-dialog.js +50 -18
  86. package/src/lib/components/lead-unqualify-dialog.js.map +1 -1
  87. package/src/lib/components/leads-bulk-bar.d.ts +0 -3
  88. package/src/lib/components/leads-bulk-bar.js +29 -29
  89. package/src/lib/components/leads-bulk-bar.js.map +1 -1
  90. package/src/lib/components/leads-section.js +120 -68
  91. package/src/lib/components/leads-section.js.map +1 -1
  92. package/src/lib/components/linked-deals-card.d.ts +4 -0
  93. package/src/lib/components/linked-deals-card.js +47 -3
  94. package/src/lib/components/linked-deals-card.js.map +1 -1
  95. package/src/lib/components/log-activity-dialog.js +43 -3
  96. package/src/lib/components/log-activity-dialog.js.map +1 -1
  97. package/src/lib/components/new-contact-drawer.d.ts +8 -0
  98. package/src/lib/components/new-contact-drawer.js +108 -6
  99. package/src/lib/components/new-contact-drawer.js.map +1 -1
  100. package/src/lib/components/new-lead-drawer.d.ts +9 -2
  101. package/src/lib/components/new-lead-drawer.js +88 -121
  102. package/src/lib/components/new-lead-drawer.js.map +1 -1
  103. package/src/lib/components/picklist-select.d.ts +36 -0
  104. package/src/lib/components/picklist-select.js +114 -0
  105. package/src/lib/components/picklist-select.js.map +1 -0
  106. package/src/lib/components/picklist-values-card.d.ts +34 -0
  107. package/src/lib/components/{lead-source-values-card.js → picklist-values-card.js} +241 -58
  108. package/src/lib/components/picklist-values-card.js.map +1 -0
  109. package/src/lib/components/pipeline-stages-dialog.d.ts +7 -0
  110. package/src/lib/components/pipeline-stages-dialog.js +26 -4
  111. package/src/lib/components/pipeline-stages-dialog.js.map +1 -1
  112. package/src/lib/components/pipelines-dialog.js +15 -6
  113. package/src/lib/components/pipelines-dialog.js.map +1 -1
  114. package/src/lib/components/recent-activity-feed.js +20 -5
  115. package/src/lib/components/recent-activity-feed.js.map +1 -1
  116. package/src/lib/components/recipes-card.js +4 -2
  117. package/src/lib/components/recipes-card.js.map +1 -1
  118. package/src/lib/components/record-tasks-card.js +15 -8
  119. package/src/lib/components/record-tasks-card.js.map +1 -1
  120. package/src/lib/components/reports/forecast-card.d.ts +6 -0
  121. package/src/lib/components/reports/forecast-card.js +101 -3
  122. package/src/lib/components/reports/forecast-card.js.map +1 -1
  123. package/src/lib/components/reports/lead-funnel-card.d.ts +12 -0
  124. package/src/lib/components/reports/lead-funnel-card.js +9 -5
  125. package/src/lib/components/reports/lead-funnel-card.js.map +1 -1
  126. package/src/lib/components/reports/lead-source-card.d.ts +23 -0
  127. package/src/lib/components/reports/lead-source-card.js +318 -0
  128. package/src/lib/components/reports/lead-source-card.js.map +1 -0
  129. package/src/lib/components/reports/pipeline-card.js +2 -1
  130. package/src/lib/components/reports/pipeline-card.js.map +1 -1
  131. package/src/lib/components/reports/report-export.js +1 -1
  132. package/src/lib/components/reports/report-export.js.map +1 -1
  133. package/src/lib/components/reports-section.js +8 -0
  134. package/src/lib/components/reports-section.js.map +1 -1
  135. package/src/lib/components/sharing-rule-drawer.d.ts +5 -0
  136. package/src/lib/components/sharing-rule-drawer.js +108 -19
  137. package/src/lib/components/sharing-rule-drawer.js.map +1 -1
  138. package/src/lib/components/sharing-rules-card.js +11 -3
  139. package/src/lib/components/sharing-rules-card.js.map +1 -1
  140. package/src/lib/components/task-cells.d.ts +9 -1
  141. package/src/lib/components/task-cells.js +9 -4
  142. package/src/lib/components/task-cells.js.map +1 -1
  143. package/src/lib/components/task-edit-drawer.js +111 -43
  144. package/src/lib/components/task-edit-drawer.js.map +1 -1
  145. package/src/lib/components/tasks-bulk-bar.d.ts +0 -3
  146. package/src/lib/components/tasks-bulk-bar.js +7 -20
  147. package/src/lib/components/tasks-bulk-bar.js.map +1 -1
  148. package/src/lib/components/tasks-calendar.d.ts +3 -0
  149. package/src/lib/components/tasks-calendar.js +8 -1
  150. package/src/lib/components/tasks-calendar.js.map +1 -1
  151. package/src/lib/components/tasks-section.d.ts +3 -3
  152. package/src/lib/components/tasks-section.js +58 -43
  153. package/src/lib/components/tasks-section.js.map +1 -1
  154. package/src/lib/constants/api-routes.d.ts +2 -9
  155. package/src/lib/constants/api-routes.js +1 -7
  156. package/src/lib/constants/api-routes.js.map +1 -1
  157. package/src/lib/constants/bundle-common.d.ts +6 -0
  158. package/src/lib/constants/bundle-common.js +11 -0
  159. package/src/lib/constants/bundle-common.js.map +1 -1
  160. package/src/lib/constants/company-filters.d.ts +14 -0
  161. package/src/lib/constants/company-filters.js +51 -1
  162. package/src/lib/constants/company-filters.js.map +1 -1
  163. package/src/lib/constants/contact-filters.d.ts +2 -0
  164. package/src/lib/constants/contact-filters.js +18 -1
  165. package/src/lib/constants/contact-filters.js.map +1 -1
  166. package/src/lib/constants/deal-filters.d.ts +22 -1
  167. package/src/lib/constants/deal-filters.js +67 -4
  168. package/src/lib/constants/deal-filters.js.map +1 -1
  169. package/src/lib/declarations.console-server.d.ts +3 -0
  170. package/src/lib/declarations.console-server.js +35 -0
  171. package/src/lib/declarations.console-server.js.map +1 -1
  172. package/src/lib/declarations.d.ts +26 -0
  173. package/src/lib/declarations.js +35 -0
  174. package/src/lib/declarations.js.map +1 -0
  175. package/src/lib/declarations.server.d.ts +11 -0
  176. package/src/lib/declarations.server.js +97 -1
  177. package/src/lib/declarations.server.js.map +1 -1
  178. package/src/lib/hooks/use-company-picklists.d.ts +15 -0
  179. package/src/lib/hooks/use-company-picklists.js +55 -0
  180. package/src/lib/hooks/use-company-picklists.js.map +1 -0
  181. package/src/lib/hooks/use-crm-picklist.d.ts +25 -0
  182. package/src/lib/hooks/use-crm-picklist.js +53 -0
  183. package/src/lib/hooks/use-crm-picklist.js.map +1 -0
  184. package/src/lib/hooks/use-crm-record-names.d.ts +16 -0
  185. package/src/lib/hooks/use-crm-record-names.js +45 -19
  186. package/src/lib/hooks/use-crm-record-names.js.map +1 -1
  187. package/src/lib/hooks/use-crm-task-picklists.d.ts +11 -0
  188. package/src/lib/hooks/use-crm-task-picklists.js +45 -0
  189. package/src/lib/hooks/use-crm-task-picklists.js.map +1 -0
  190. package/src/lib/hooks/use-deals.d.ts +14 -0
  191. package/src/lib/hooks/use-deals.js +29 -0
  192. package/src/lib/hooks/use-deals.js.map +1 -1
  193. package/src/lib/hooks/use-lead-picklists.d.ts +14 -0
  194. package/src/lib/hooks/use-lead-picklists.js +46 -0
  195. package/src/lib/hooks/use-lead-picklists.js.map +1 -0
  196. package/src/lib/hooks/use-lead-source-picklist.d.ts +5 -19
  197. package/src/lib/hooks/use-lead-source-picklist.js +12 -22
  198. package/src/lib/hooks/use-lead-source-picklist.js.map +1 -1
  199. package/src/lib/hooks/use-lead-status-picklist.d.ts +9 -0
  200. package/src/lib/hooks/use-lead-status-picklist.js +40 -0
  201. package/src/lib/hooks/use-lead-status-picklist.js.map +1 -0
  202. package/src/lib/model/companies.d.ts +32 -3
  203. package/src/lib/model/companies.js +133 -16
  204. package/src/lib/model/companies.js.map +1 -1
  205. package/src/lib/model/contact-merge.d.ts +27 -3
  206. package/src/lib/model/contact-merge.js +81 -7
  207. package/src/lib/model/contact-merge.js.map +1 -1
  208. package/src/lib/model/contact-record.d.ts +17 -0
  209. package/src/lib/model/contact-record.js +17 -2
  210. package/src/lib/model/contact-record.js.map +1 -1
  211. package/src/lib/model/contact-update.d.ts +31 -2
  212. package/src/lib/model/contact-update.js +14 -0
  213. package/src/lib/model/contact-update.js.map +1 -1
  214. package/src/lib/model/crm-list-query.d.ts +5 -0
  215. package/src/lib/model/crm-list-query.js +8 -0
  216. package/src/lib/model/crm-list-query.js.map +1 -1
  217. package/src/lib/model/crm-next-activity.d.ts +107 -0
  218. package/src/lib/model/crm-next-activity.js +140 -0
  219. package/src/lib/model/crm-next-activity.js.map +1 -0
  220. package/src/lib/model/crm-recipes.d.ts +40 -0
  221. package/src/lib/model/crm-recipes.js +259 -0
  222. package/src/lib/model/crm-recipes.js.map +1 -0
  223. package/src/lib/model/crm-record-counts.d.ts +36 -0
  224. package/src/lib/model/crm-record-counts.js +54 -0
  225. package/src/lib/model/crm-record-counts.js.map +1 -0
  226. package/src/lib/model/crm-record-lists.d.ts +23 -0
  227. package/src/lib/model/crm-record-lists.js +161 -0
  228. package/src/lib/model/crm-record-lists.js.map +1 -0
  229. package/src/lib/model/crm-reports.d.ts +73 -3
  230. package/src/lib/model/crm-reports.js +120 -1
  231. package/src/lib/model/crm-reports.js.map +1 -1
  232. package/src/lib/model/crm-sharing.d.ts +21 -3
  233. package/src/lib/model/crm-sharing.js +27 -6
  234. package/src/lib/model/crm-sharing.js.map +1 -1
  235. package/src/lib/model/crm-task-reminders.d.ts +152 -0
  236. package/src/lib/model/crm-task-reminders.js +161 -0
  237. package/src/lib/model/crm-task-reminders.js.map +1 -0
  238. package/src/lib/model/deal-board-model.d.ts +8 -2
  239. package/src/lib/model/deal-board-model.js +15 -2
  240. package/src/lib/model/deal-board-model.js.map +1 -1
  241. package/src/lib/model/deal-contact-roles.d.ts +45 -0
  242. package/src/lib/model/deal-contact-roles.js +73 -0
  243. package/src/lib/model/deal-contact-roles.js.map +1 -0
  244. package/src/lib/model/deal-form-model.d.ts +56 -0
  245. package/src/lib/model/deal-form-model.js +79 -7
  246. package/src/lib/model/deal-form-model.js.map +1 -1
  247. package/src/lib/model/download-text-file.d.ts +23 -0
  248. package/src/lib/model/download-text-file.js +34 -0
  249. package/src/lib/model/download-text-file.js.map +1 -0
  250. package/src/lib/model/lead-filters.d.ts +36 -2
  251. package/src/lib/model/lead-filters.js +123 -2
  252. package/src/lib/model/lead-filters.js.map +1 -1
  253. package/src/lib/model/lead-source-direction.d.ts +38 -0
  254. package/src/lib/model/lead-source-direction.js +52 -0
  255. package/src/lib/model/lead-source-direction.js.map +1 -0
  256. package/src/lib/model/next-activity.d.ts +1 -1
  257. package/src/lib/model/next-activity.js.map +1 -1
  258. package/src/lib/model/picklist-values.d.ts +119 -0
  259. package/src/lib/model/picklist-values.js +256 -0
  260. package/src/lib/model/picklist-values.js.map +1 -0
  261. package/src/lib/model/record-facts-disclosed.d.ts +81 -0
  262. package/src/lib/model/record-facts-disclosed.js +281 -0
  263. package/src/lib/model/record-facts-disclosed.js.map +1 -0
  264. package/src/lib/model/record-facts.d.ts +215 -34
  265. package/src/lib/model/record-facts.js +307 -128
  266. package/src/lib/model/record-facts.js.map +1 -1
  267. package/src/lib/model/task-picklists.d.ts +52 -0
  268. package/src/lib/model/task-picklists.js +83 -0
  269. package/src/lib/model/task-picklists.js.map +1 -0
  270. package/src/lib/model/task-routes.d.ts +13 -0
  271. package/src/lib/model/task-routes.js +23 -4
  272. package/src/lib/model/task-routes.js.map +1 -1
  273. package/src/lib/plan-entitlements.js +6 -4
  274. package/src/lib/plan-entitlements.js.map +1 -1
  275. package/src/lib/plugin.js +17 -0
  276. package/src/lib/plugin.js.map +1 -1
  277. package/src/lib/server/api-v1/contacts.js +220 -14
  278. package/src/lib/server/api-v1/contacts.js.map +1 -1
  279. package/src/lib/server/api-v1/crm-activities.js +14 -1
  280. package/src/lib/server/api-v1/crm-activities.js.map +1 -1
  281. package/src/lib/server/api-v1/crm-companies.js +123 -14
  282. package/src/lib/server/api-v1/crm-companies.js.map +1 -1
  283. package/src/lib/server/api-v1/crm-deals.js +291 -26
  284. package/src/lib/server/api-v1/crm-deals.js.map +1 -1
  285. package/src/lib/server/api-v1/crm-leads.js +144 -38
  286. package/src/lib/server/api-v1/crm-leads.js.map +1 -1
  287. package/src/lib/server/api-v1/crm-pipelines.d.ts +6 -0
  288. package/src/lib/server/api-v1/crm-pipelines.js +8 -2
  289. package/src/lib/server/api-v1/crm-pipelines.js.map +1 -1
  290. package/src/lib/server/api-v1/crm-tasks.js +78 -34
  291. package/src/lib/server/api-v1/crm-tasks.js.map +1 -1
  292. package/src/lib/server/api-v1/openapi.d.ts +0 -11
  293. package/src/lib/server/api-v1/openapi.js +171 -16
  294. package/src/lib/server/api-v1/openapi.js.map +1 -1
  295. package/src/lib/server/assign-contact-owner.d.ts +188 -0
  296. package/src/lib/server/assign-contact-owner.js +446 -0
  297. package/src/lib/server/assign-contact-owner.js.map +1 -0
  298. package/src/lib/server/associate-company-by-domain.d.ts +70 -0
  299. package/src/lib/server/associate-company-by-domain.js +153 -0
  300. package/src/lib/server/associate-company-by-domain.js.map +1 -0
  301. package/src/lib/server/automation-steps.d.ts +140 -0
  302. package/src/lib/server/automation-steps.js +669 -0
  303. package/src/lib/server/automation-steps.js.map +1 -0
  304. package/src/lib/server/capture-contact.d.ts +17 -0
  305. package/src/lib/server/capture-contact.js +95 -26
  306. package/src/lib/server/capture-contact.js.map +1 -1
  307. package/src/lib/server/capture-host-contact.d.ts +104 -0
  308. package/src/lib/server/capture-host-contact.js +151 -0
  309. package/src/lib/server/capture-host-contact.js.map +1 -0
  310. package/src/lib/server/company-children.d.ts +25 -0
  311. package/src/lib/server/company-children.js +42 -0
  312. package/src/lib/server/company-children.js.map +1 -0
  313. package/src/lib/server/company-delete.d.ts +18 -0
  314. package/src/lib/server/company-delete.js +44 -21
  315. package/src/lib/server/company-delete.js.map +1 -1
  316. package/src/lib/server/contact-email-history.js +21 -19
  317. package/src/lib/server/contact-email-history.js.map +1 -1
  318. package/src/lib/server/contact-remove.js +27 -2
  319. package/src/lib/server/contact-remove.js.map +1 -1
  320. package/src/lib/server/contact-reports-to.d.ts +61 -0
  321. package/src/lib/server/contact-reports-to.js +114 -0
  322. package/src/lib/server/contact-reports-to.js.map +1 -0
  323. package/src/lib/server/contact-update.d.ts +42 -1
  324. package/src/lib/server/contact-update.js +204 -23
  325. package/src/lib/server/contact-update.js.map +1 -1
  326. package/src/lib/server/convert-host-lead.d.ts +46 -1
  327. package/src/lib/server/convert-host-lead.js +173 -15
  328. package/src/lib/server/convert-host-lead.js.map +1 -1
  329. package/src/lib/server/convert-open-lead.js +12 -5
  330. package/src/lib/server/convert-open-lead.js.map +1 -1
  331. package/src/lib/server/crm-email-activity.d.ts +118 -0
  332. package/src/lib/server/crm-email-activity.js +148 -0
  333. package/src/lib/server/crm-email-activity.js.map +1 -0
  334. package/src/lib/server/crm-inbound-email.js +1 -1
  335. package/src/lib/server/crm-inbound-email.js.map +1 -1
  336. package/src/lib/server/crm-next-activity.d.ts +74 -0
  337. package/src/lib/server/crm-next-activity.js +194 -0
  338. package/src/lib/server/crm-next-activity.js.map +1 -0
  339. package/src/lib/server/crm-record-indexes.d.ts +45 -0
  340. package/src/lib/server/crm-record-indexes.js +78 -0
  341. package/src/lib/server/crm-record-indexes.js.map +1 -0
  342. package/src/lib/server/crm-sharing.d.ts +9 -1
  343. package/src/lib/server/crm-sharing.js +23 -3
  344. package/src/lib/server/crm-sharing.js.map +1 -1
  345. package/src/lib/server/deal-contact-roles.d.ts +27 -0
  346. package/src/lib/server/deal-contact-roles.js +89 -0
  347. package/src/lib/server/deal-contact-roles.js.map +1 -0
  348. package/src/lib/server/email-send.js +2 -1
  349. package/src/lib/server/email-send.js.map +1 -1
  350. package/src/lib/server/lead-convert.d.ts +5 -0
  351. package/src/lib/server/lead-convert.js +19 -3
  352. package/src/lib/server/lead-convert.js.map +1 -1
  353. package/src/lib/server/lead-create.d.ts +17 -2
  354. package/src/lib/server/lead-create.js +46 -14
  355. package/src/lib/server/lead-create.js.map +1 -1
  356. package/src/lib/server/lead-nurturing.d.ts +6 -0
  357. package/src/lib/server/lead-nurturing.js +57 -20
  358. package/src/lib/server/lead-nurturing.js.map +1 -1
  359. package/src/lib/server/lead-picklists.d.ts +35 -0
  360. package/src/lib/server/lead-picklists.js +52 -0
  361. package/src/lib/server/lead-picklists.js.map +1 -0
  362. package/src/lib/server/lead-source-picklist.d.ts +1 -13
  363. package/src/lib/server/lead-source-picklist.js +6 -33
  364. package/src/lib/server/lead-source-picklist.js.map +1 -1
  365. package/src/lib/server/merge-contacts.js +23 -5
  366. package/src/lib/server/merge-contacts.js.map +1 -1
  367. package/src/lib/server/next-activity-routes.js +2 -1
  368. package/src/lib/server/next-activity-routes.js.map +1 -1
  369. package/src/lib/server/person-eraser.d.ts +53 -0
  370. package/src/lib/server/person-eraser.js +149 -0
  371. package/src/lib/server/person-eraser.js.map +1 -0
  372. package/src/lib/server/person-records.d.ts +69 -0
  373. package/src/lib/server/person-records.js +317 -0
  374. package/src/lib/server/person-records.js.map +1 -0
  375. package/src/lib/server/person-refund.d.ts +97 -0
  376. package/src/lib/server/person-refund.js +221 -0
  377. package/src/lib/server/person-refund.js.map +1 -0
  378. package/src/lib/server/picklist-values.d.ts +21 -0
  379. package/src/lib/server/picklist-values.js +308 -0
  380. package/src/lib/server/picklist-values.js.map +1 -0
  381. package/src/lib/server/read-picklist.d.ts +44 -0
  382. package/src/lib/server/read-picklist.js +65 -0
  383. package/src/lib/server/read-picklist.js.map +1 -0
  384. package/src/lib/server/recipe-routes.js +22 -8
  385. package/src/lib/server/recipe-routes.js.map +1 -1
  386. package/src/lib/server/record-email-state.js +7 -1
  387. package/src/lib/server/record-email-state.js.map +1 -1
  388. package/src/lib/server/record-facts.d.ts +3 -0
  389. package/src/lib/server/record-facts.js +233 -31
  390. package/src/lib/server/record-facts.js.map +1 -1
  391. package/src/lib/server/record-origin.d.ts +27 -0
  392. package/src/lib/server/record-origin.js +104 -0
  393. package/src/lib/server/record-origin.js.map +1 -0
  394. package/src/lib/server/record-timeline.js +40 -3
  395. package/src/lib/server/record-timeline.js.map +1 -1
  396. package/src/lib/server/suite-gate.js +4 -3
  397. package/src/lib/server/suite-gate.js.map +1 -1
  398. package/src/lib/server/task-reminders-route.js +2 -1
  399. package/src/lib/server/task-reminders-route.js.map +1 -1
  400. package/src/lib/server/task-routes.js +33 -17
  401. package/src/lib/server/task-routes.js.map +1 -1
  402. package/src/lib/server-deal-stage.d.ts +5 -1
  403. package/src/lib/server-deal-stage.js +10 -5
  404. package/src/lib/server-deal-stage.js.map +1 -1
  405. package/src/lib/server.d.ts +8 -3
  406. package/src/lib/server.js +47 -43
  407. package/src/lib/server.js.map +1 -1
  408. package/src/lib/testing/memory-firestore.d.ts +55 -0
  409. package/src/lib/testing/memory-firestore.js +335 -0
  410. package/src/lib/testing/memory-firestore.js.map +1 -0
  411. package/src/lib/testing/stand-in-email-send-index.d.ts +25 -0
  412. package/src/lib/testing/stand-in-email-send-index.js +49 -0
  413. package/src/lib/testing/stand-in-email-send-index.js.map +1 -0
  414. package/src/lib/transfer/activities.d.ts +30 -0
  415. package/src/lib/transfer/activities.js +132 -0
  416. package/src/lib/transfer/activities.js.map +1 -0
  417. package/src/lib/transfer/aliases.d.ts +22 -0
  418. package/src/lib/transfer/aliases.js +1342 -0
  419. package/src/lib/transfer/aliases.js.map +1 -0
  420. package/src/lib/transfer/common.d.ts +222 -0
  421. package/src/lib/transfer/common.js +832 -0
  422. package/src/lib/transfer/common.js.map +1 -0
  423. package/src/lib/transfer/companies.d.ts +43 -0
  424. package/src/lib/transfer/companies.js +549 -0
  425. package/src/lib/transfer/companies.js.map +1 -0
  426. package/src/lib/transfer/contacts.d.ts +31 -0
  427. package/src/lib/transfer/contacts.js +727 -0
  428. package/src/lib/transfer/contacts.js.map +1 -0
  429. package/src/lib/transfer/deals.d.ts +66 -0
  430. package/src/lib/transfer/deals.js +698 -0
  431. package/src/lib/transfer/deals.js.map +1 -0
  432. package/src/lib/transfer/email-templates-package.d.ts +40 -0
  433. package/src/lib/transfer/email-templates-package.js +76 -0
  434. package/src/lib/transfer/email-templates-package.js.map +1 -0
  435. package/src/lib/transfer/email-templates-package.server.d.ts +32 -0
  436. package/src/lib/transfer/email-templates-package.server.js +176 -0
  437. package/src/lib/transfer/email-templates-package.server.js.map +1 -0
  438. package/src/lib/transfer/fields.d.ts +102 -0
  439. package/src/lib/transfer/fields.js +1755 -0
  440. package/src/lib/transfer/fields.js.map +1 -0
  441. package/src/lib/transfer/leads.d.ts +30 -0
  442. package/src/lib/transfer/leads.js +582 -0
  443. package/src/lib/transfer/leads.js.map +1 -0
  444. package/src/lib/transfer/pipelines.d.ts +21 -0
  445. package/src/lib/transfer/pipelines.js +172 -0
  446. package/src/lib/transfer/pipelines.js.map +1 -0
  447. package/src/lib/transfer/register.d.ts +47 -0
  448. package/src/lib/transfer/register.js +277 -0
  449. package/src/lib/transfer/register.js.map +1 -0
  450. package/src/lib/transfer/tasks.d.ts +30 -0
  451. package/src/lib/transfer/tasks.js +418 -0
  452. package/src/lib/transfer/tasks.js.map +1 -0
  453. package/src/lib/transfer/ui.d.ts +20 -0
  454. package/src/lib/transfer/ui.js +42 -0
  455. package/src/lib/transfer/ui.js.map +1 -0
  456. package/src/lib/components/company-import-drawer.d.ts +0 -42
  457. package/src/lib/components/company-import-drawer.js +0 -99
  458. package/src/lib/components/company-import-drawer.js.map +0 -1
  459. package/src/lib/components/contact-import-drawer.d.ts +0 -46
  460. package/src/lib/components/contact-import-drawer.js +0 -149
  461. package/src/lib/components/contact-import-drawer.js.map +0 -1
  462. package/src/lib/components/crm-export-all-button.d.ts +0 -39
  463. package/src/lib/components/crm-export-all-button.js +0 -98
  464. package/src/lib/components/crm-export-all-button.js.map +0 -1
  465. package/src/lib/components/csv-import-drawer.d.ts +0 -139
  466. package/src/lib/components/csv-import-drawer.js +0 -757
  467. package/src/lib/components/csv-import-drawer.js.map +0 -1
  468. package/src/lib/components/deal-import-drawer.d.ts +0 -24
  469. package/src/lib/components/deal-import-drawer.js +0 -83
  470. package/src/lib/components/deal-import-drawer.js.map +0 -1
  471. package/src/lib/components/lead-import-drawer.d.ts +0 -27
  472. package/src/lib/components/lead-import-drawer.js +0 -118
  473. package/src/lib/components/lead-import-drawer.js.map +0 -1
  474. package/src/lib/components/lead-source-values-card.d.ts +0 -27
  475. package/src/lib/components/lead-source-values-card.js.map +0 -1
  476. package/src/lib/components/task-import-drawer.d.ts +0 -24
  477. package/src/lib/components/task-import-drawer.js +0 -82
  478. package/src/lib/components/task-import-drawer.js.map +0 -1
  479. package/src/lib/model/companies-csv.d.ts +0 -36
  480. package/src/lib/model/companies-csv.js +0 -38
  481. package/src/lib/model/companies-csv.js.map +0 -1
  482. package/src/lib/model/contacts-csv.d.ts +0 -54
  483. package/src/lib/model/contacts-csv.js +0 -67
  484. package/src/lib/model/contacts-csv.js.map +0 -1
  485. package/src/lib/model/crm-company-import.d.ts +0 -154
  486. package/src/lib/model/crm-company-import.js +0 -331
  487. package/src/lib/model/crm-company-import.js.map +0 -1
  488. package/src/lib/model/crm-csv.d.ts +0 -239
  489. package/src/lib/model/crm-csv.js +0 -467
  490. package/src/lib/model/crm-csv.js.map +0 -1
  491. package/src/lib/model/crm-deal-import.d.ts +0 -112
  492. package/src/lib/model/crm-deal-import.js +0 -263
  493. package/src/lib/model/crm-deal-import.js.map +0 -1
  494. package/src/lib/model/crm-import.d.ts +0 -250
  495. package/src/lib/model/crm-import.js +0 -467
  496. package/src/lib/model/crm-import.js.map +0 -1
  497. package/src/lib/model/crm-lead-import.d.ts +0 -138
  498. package/src/lib/model/crm-lead-import.js +0 -446
  499. package/src/lib/model/crm-lead-import.js.map +0 -1
  500. package/src/lib/model/crm-task-import.d.ts +0 -94
  501. package/src/lib/model/crm-task-import.js +0 -275
  502. package/src/lib/model/crm-task-import.js.map +0 -1
  503. package/src/lib/model/deals-csv.d.ts +0 -32
  504. package/src/lib/model/deals-csv.js +0 -36
  505. package/src/lib/model/deals-csv.js.map +0 -1
  506. package/src/lib/model/import-column-shapes.d.ts +0 -36
  507. package/src/lib/model/import-column-shapes.js +0 -76
  508. package/src/lib/model/import-column-shapes.js.map +0 -1
  509. package/src/lib/model/lead-source-values.d.ts +0 -82
  510. package/src/lib/model/lead-source-values.js +0 -149
  511. package/src/lib/model/lead-source-values.js.map +0 -1
  512. package/src/lib/model/leads-csv.d.ts +0 -40
  513. package/src/lib/model/leads-csv.js +0 -40
  514. package/src/lib/model/leads-csv.js.map +0 -1
  515. package/src/lib/model/tasks-csv.d.ts +0 -28
  516. package/src/lib/model/tasks-csv.js +0 -28
  517. package/src/lib/model/tasks-csv.js.map +0 -1
  518. package/src/lib/server/companies-import.d.ts +0 -57
  519. package/src/lib/server/companies-import.js +0 -242
  520. package/src/lib/server/companies-import.js.map +0 -1
  521. package/src/lib/server/contacts-import.d.ts +0 -109
  522. package/src/lib/server/contacts-import.js +0 -393
  523. package/src/lib/server/contacts-import.js.map +0 -1
  524. package/src/lib/server/deals-import.d.ts +0 -76
  525. package/src/lib/server/deals-import.js +0 -248
  526. package/src/lib/server/deals-import.js.map +0 -1
  527. package/src/lib/server/export-route.d.ts +0 -60
  528. package/src/lib/server/export-route.js +0 -447
  529. package/src/lib/server/export-route.js.map +0 -1
  530. package/src/lib/server/import-context.d.ts +0 -87
  531. package/src/lib/server/import-context.js +0 -182
  532. package/src/lib/server/import-context.js.map +0 -1
  533. package/src/lib/server/lead-source-values.d.ts +0 -50
  534. package/src/lib/server/lead-source-values.js +0 -191
  535. package/src/lib/server/lead-source-values.js.map +0 -1
  536. package/src/lib/server/leads-import.d.ts +0 -84
  537. package/src/lib/server/leads-import.js +0 -367
  538. package/src/lib/server/leads-import.js.map +0 -1
  539. package/src/lib/server/tasks-import.d.ts +0 -54
  540. package/src/lib/server/tasks-import.js +0 -160
  541. package/src/lib/server/tasks-import.js.map +0 -1
@@ -21,43 +21,35 @@ import { mdiAccountCancelOutline } from "@aglyn/shared-data-mdi";
21
21
  import { AppLink, CardDisplay, MdiIcon } from "@aglyn/shared-ui-jsx";
22
22
  import { useSnackbar } from "@aglyn/shared-ui-snackstack";
23
23
  import { useFirestore, writeGuardedBySeed } from "@aglyn/tenant-feature-instance";
24
- import { Alert, Button, FormControl, InputLabel, MenuItem, Select, Stack, TextField, Tooltip, Typography } from "@mui/material";
24
+ import { Alert, Button, FormControl, InputLabel, Select, Stack, TextField, Tooltip, Typography } from "@mui/material";
25
25
  import { deleteField, doc, serverTimestamp, updateDoc } from "firebase/firestore";
26
26
  import { useEffect, useId, useMemo, useState } from "react";
27
27
  import { useContactFieldDefinitions } from "../hooks/use-contact-field-definitions.js";
28
28
  import { useLeadSourcePicklist } from "../hooks/use-lead-source-picklist.js";
29
+ import { useLeadStatusPicklist } from "../hooks/use-lead-status-picklist.js";
30
+ import { useLeadPicklists } from "../hooks/use-lead-picklists.js";
29
31
  import { crmCustomDraftChanges, crmCustomDraftMissingRequired, crmCustomDraftValue, crmCustomDraftWrites } from "../model/crm-custom-draft.js";
30
32
  import { CrmCustomFieldControl } from "./crm-custom-field-control.js";
31
33
  import { crmRoutes } from "../model/crm-routes.js";
32
- import { addressDraftFrom, ContactAddressFields } from "./contact-address-fields.js";
34
+ import { LeadProfileFields, leadProfileDraftBody, leadProfileDraftFrom } from "./lead-profile-fields.js";
33
35
  import { CrmCallButton, CrmPhoneLink } from "./crm-call-actions.js";
34
36
  import { CrmEmailStateChip } from "./crm-email-state-chip.js";
35
37
  import { CrmEmailGatewayChip } from "./crm-email-check.js";
36
38
  import { CrmRecordChip, CrmRecordHeader } from "./crm-record-header.js";
37
39
  import { CrmSendEmailButton } from "./crm-send-email-button.js";
38
40
  import { LeadOwnerSelect } from "./lead-owner-select.js";
39
- import { LeadSourceSelect } from "./lead-source-select.js";
40
41
  import { LeadStatusChip } from "./lead-status-chip.js";
42
+ import { leadStatusChoices, leadStatusMenuItems } from "./lead-status-options.js";
41
43
  import { crmClientListFields, CRM_CLIENT_SEARCH_FIELDS } from "../model/crm-list-query.js";
42
44
  import { useCrmSharingFollowUp } from "../hooks/use-crm-sharing.js";
43
45
  /** The Leads list's fields a profile save rewrites; the verdict key is the server's. */ const LEAD_CLIENT_LIST_FIELDS = [
44
46
  ...CRM_CLIENT_SEARCH_FIELDS,
45
- 'leadSourceKey'
47
+ 'leadSourceKey',
48
+ // Industry and Rating (AGL-3513).
49
+ 'industryKey',
50
+ 'ratingKey'
46
51
  ];
47
52
  const NOTES_MAX = Aglyn.CRM_LEAD_NOTES_MAX;
48
- const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
49
- /** The stored profile as a draft the fields can edit. */ function profileDraftFrom(lead) {
50
- var _lead_company, _lead_jobTitle, _ref, _lead_phone, _lead_website, _lead_leadSource, _lead_tags, _lead_address;
51
- return {
52
- company: String((_lead_company = lead.company) != null ? _lead_company : ''),
53
- jobTitle: String((_lead_jobTitle = lead.jobTitle) != null ? _lead_jobTitle : ''),
54
- phone: String((_ref = (_lead_phone = lead.phone) != null ? _lead_phone : lead['phone']) != null ? _ref : ''),
55
- website: String((_lead_website = lead.website) != null ? _lead_website : ''),
56
- leadSource: String((_lead_leadSource = lead.leadSource) != null ? _lead_leadSource : ''),
57
- tags: ((_lead_tags = lead.tags) != null ? _lead_tags : []).join(', '),
58
- address: addressDraftFrom((_lead_address = lead.address) != null ? _lead_address : null)
59
- };
60
- }
61
53
  /** The patch as the document takes it: a cleared field is deleted, not blanked. */ function profileWrite(patch) {
62
54
  const write = {};
63
55
  for (const [key, value] of Object.entries(patch)){
@@ -109,7 +101,7 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
109
101
  * conversion, and the header's actions become links to what the conversion
110
102
  * made.
111
103
  */ export function LeadPropertiesCard(props) {
112
- var _lead_phone, _lead_notes, _lead_email, _lead_email1, _lead_name, _lead_email2, _lead_leadSource;
104
+ var _lead_phone, _lead_mobilePhone, _lead_notes, _lead_email, _lead_email1, _lead_name, _lead_email2;
113
105
  const { hostId, consentGroup, orgId, leadId, lead, leadStatus, fromCache, basePath, roster, onConvert, onUnqualify, extraMenuItems = [], banner, extraChips, erasurePending = false, org } = props;
114
106
  const firestore = useFirestore();
115
107
  const { enqueueSnackbar } = useSnackbar();
@@ -128,35 +120,38 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
128
120
  // The last verdict on the address (AGL-3245), as the platform stamped it.
129
121
  const emailState = Aglyn.readEmailState(lead);
130
122
  /** What a capture that took a number left on the document (AGL-2661). */ const leadPhone = String((_lead_phone = lead['phone']) != null ? _lead_phone : '').trim();
123
+ const leadMobile = String((_lead_mobilePhone = lead.mobilePhone) != null ? _lead_mobilePhone : '').trim();
124
+ // The person asked not to be phoned (AGL-3513): a hint on every dial control.
125
+ const doNotCall = lead.doNotCall === true;
131
126
  const [notes, setNotes] = useState(String((_lead_notes = lead.notes) != null ? _lead_notes : ''));
132
127
  // The label's id, so the status combobox is named "Status" rather than
133
128
  // after the status it shows — see `LeadOwnerSelect`.
134
129
  const statusLabelId = useId();
135
130
  const [notesDirty, setNotesDirty] = useState(false);
136
131
  /*
137
- * THE LEAD'S OWN PROFILE (AGL-3231) — company, title, phone, website,
138
- * address, tags, lead source — edited in the Details card with the notes
139
- * and the custom fields, under one Save, the way the contact's Properties
140
- * card saves. Seeded from the document and guarded on save: a draft
141
- * edited over a cached read must not overwrite a newer profile with an
142
- * older one.
143
- */ const [profile, setProfile] = useState(()=>profileDraftFrom(lead));
132
+ * THE LEAD'S OWN PROFILE (AGL-3231, AGL-3513) — the name's parts,
133
+ * company, title, the phones, website, address, tags, lead source,
134
+ * industry, rating, size and revenue — edited in the Details card with
135
+ * the notes and the custom fields, under one Save, the way the contact's
136
+ * Properties card saves. Seeded from the document and guarded on save: a
137
+ * draft edited over a cached read must not overwrite a newer profile
138
+ * with an older one.
139
+ */ const [profile, setProfile] = useState(()=>leadProfileDraftFrom(lead));
144
140
  const [profileDirty, setProfileDirty] = useState(false);
145
141
  const [saving, setSaving] = useState(false);
146
142
  const [profileErrors, setProfileErrors] = useState({});
143
+ // The stored profile as one value, so a change to any of its fields reseeds.
144
+ const profileSeed = JSON.stringify(Aglyn.CRM_LEAD_PROFILE_KEYS.map((key)=>{
145
+ var _lead_key;
146
+ return (_lead_key = lead[key]) != null ? _lead_key : null;
147
+ }));
147
148
  useEffect(()=>{
148
- if (!profileDirty) setProfile(profileDraftFrom(lead));
149
- // The draft follows the document until it is edited; the fields are
150
- // read one by one so a change to any of them reseeds.
149
+ if (!profileDirty) setProfile(leadProfileDraftFrom(lead));
150
+ // The draft follows the document until it is edited.
151
+ // eslint-disable-next-line react-hooks/exhaustive-deps
151
152
  }, [
152
153
  profileDirty,
153
- lead.company,
154
- lead.jobTitle,
155
- lead.phone,
156
- lead.website,
157
- lead.leadSource,
158
- lead.tags,
159
- lead.address
154
+ profileSeed
160
155
  ]);
161
156
  /*
162
157
  * THE ORG'S OWN LEAD FIELDS (AGL-3272), edited under the same Save as
@@ -170,6 +165,14 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
170
165
  */ const fields = useContactFieldDefinitions(orgId, 'lead');
171
166
  // The org's lead source values (AGL-3298), for the select below.
172
167
  const leadSources = useLeadSourcePicklist(orgId);
168
+ // The org's lead status values (AGL-3512): the chip's words and the select's choices.
169
+ const leadStatuses = useLeadStatusPicklist(orgId);
170
+ // The org's Salutation, Industry and Rating lists (AGL-3513).
171
+ const leadPicklists = useLeadPicklists(orgId);
172
+ const statusChoices = useMemo(()=>leadStatusChoices(leadStatuses.picklist, lead), [
173
+ leadStatuses.picklist,
174
+ lead
175
+ ]);
173
176
  const storedCustom = useMemo(()=>{
174
177
  var _lead_custom;
175
178
  return (_lead_custom = lead.custom) != null ? _lead_custom : {};
@@ -229,7 +232,7 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
229
232
  const dirty = profileDirty || customChanged || notesDirty;
230
233
  /** Every draft back to what the document holds. */ const discard = ()=>{
231
234
  var _lead_notes;
232
- setProfile(profileDraftFrom(lead));
235
+ setProfile(leadProfileDraftFrom(lead));
233
236
  setProfileDirty(false);
234
237
  setProfileErrors({});
235
238
  setCustom({});
@@ -243,17 +246,12 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
243
246
  */ const saveDetails = async ()=>{
244
247
  const update = {};
245
248
  if (!converted && (profileDirty || customChanged)) {
246
- const { patch, errors } = Aglyn.normalizeCrmLeadProfile({
247
- company: profile.company,
248
- jobTitle: profile.jobTitle,
249
- phone: profile.phone,
250
- website: profile.website,
251
- leadSource: profile.leadSource,
252
- tags: profile.tags,
253
- address: profile.address
254
- });
255
- setProfileErrors(errors);
256
- if (Object.keys(errors).length) return;
249
+ const { body, revenueError } = leadProfileDraftBody(profile);
250
+ const { patch, errors } = Aglyn.normalizeCrmLeadProfile(body);
251
+ const shown = _extends({}, errors);
252
+ if (revenueError) shown['annualRevenueCents'] = revenueError;
253
+ setProfileErrors(shown);
254
+ if (Object.keys(shown).length) return;
257
255
  /*
258
256
  * A required field the reader CLEARED is refused; one the lead has
259
257
  * always lacked is not this save's to demand, or a field added after
@@ -266,6 +264,9 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
266
264
  return;
267
265
  }
268
266
  const profileFields = profileWrite(patch);
267
+ // While a first or last name is set, the name is theirs (AGL-3513).
268
+ const composed = Aglyn.crmLeadComposedName(lead, patch);
269
+ if (composed && composed !== lead['name']) profileFields['name'] = composed;
269
270
  Object.assign(update, profileFields, crmCustomDraftWrites(storedCustom, custom), // The company, title, tags and lead source are what the Leads list
270
271
  // searches and filters by (AGL-3321).
271
272
  crmClientListFields('leads', lead, profileFields, LEAD_CLIENT_LIST_FIELDS));
@@ -380,7 +381,8 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
380
381
  link: {
381
382
  leadId
382
383
  },
383
- phone: leadPhone
384
+ phone: leadPhone || leadMobile,
385
+ doNotCall: doNotCall
384
386
  }),
385
387
  /*#__PURE__*/ _jsx(CrmSendEmailButton, {
386
388
  hostId: hostId,
@@ -401,7 +403,7 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
401
403
  size: 0.8
402
404
  }),
403
405
  destructive: true,
404
- onClick: onUnqualify
406
+ onClick: ()=>onUnqualify()
405
407
  }
406
408
  ] : [],
407
409
  ...extraMenuItems
@@ -409,7 +411,8 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
409
411
  chips: /*#__PURE__*/ _jsxs(_Fragment, {
410
412
  children: [
411
413
  /*#__PURE__*/ _jsx(LeadStatusChip, {
412
- lead: lead
414
+ lead: lead,
415
+ statuses: leadStatuses.picklist
413
416
  }),
414
417
  /*#__PURE__*/ _jsx(CrmEmailStateChip, {
415
418
  state: emailState
@@ -433,7 +436,15 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
433
436
  leadPhone ? /*#__PURE__*/ _jsx(Fact, {
434
437
  label: "Phone",
435
438
  children: /*#__PURE__*/ _jsx(CrmPhoneLink, {
436
- phone: leadPhone
439
+ phone: leadPhone,
440
+ doNotCall: doNotCall
441
+ })
442
+ }) : null,
443
+ leadMobile ? /*#__PURE__*/ _jsx(Fact, {
444
+ label: "Mobile phone",
445
+ children: /*#__PURE__*/ _jsx(CrmPhoneLink, {
446
+ phone: leadMobile,
447
+ doNotCall: doNotCall
437
448
  })
438
449
  }) : null,
439
450
  /*#__PURE__*/ _jsx(Fact, {
@@ -457,7 +468,8 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
457
468
  },
458
469
  children: [
459
470
  /*#__PURE__*/ _jsx(LeadStatusChip, {
460
- lead: lead
471
+ lead: lead,
472
+ statuses: leadStatuses.picklist
461
473
  }),
462
474
  /*#__PURE__*/ _jsx(Typography, {
463
475
  variant: "body2",
@@ -476,42 +488,29 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
476
488
  id: statusLabelId,
477
489
  children: 'Status'
478
490
  }),
479
- /*#__PURE__*/ _jsxs(Select, {
491
+ /*#__PURE__*/ _jsx(Select, {
480
492
  labelId: statusLabelId,
481
493
  label: "Status",
482
- value: status === 'unqualified' ? 'unqualified' : status,
494
+ value: Aglyn.crmLeadStatusLabel(lead, leadStatuses.picklist),
483
495
  onChange: (event)=>{
484
- const next = String(event.target.value);
485
- if (next === 'unqualified') {
486
- onUnqualify();
496
+ const choice = statusChoices.find((entry)=>entry.label === event.target.value);
497
+ if (!choice) return;
498
+ if (choice.status === 'unqualified') {
499
+ onUnqualify(choice.label);
487
500
  return;
488
501
  }
489
- // Reopening drops the reason with the closed state: a lead
490
- // being worked again is not "unqualified because …".
502
+ // The meaning and the org's label for it, together
503
+ // (AGL-3512). Reopening drops the reason with the closed
504
+ // state: a lead being worked again is not "unqualified
505
+ // because …".
491
506
  void write(_extends({
492
- status: next
507
+ status: choice.status,
508
+ statusLabel: choice.label
493
509
  }, status === 'unqualified' ? {
494
510
  unqualifiedReason: deleteField()
495
511
  } : {}), 'Status updated');
496
512
  },
497
- children: [
498
- /*#__PURE__*/ _jsx(MenuItem, {
499
- value: "new",
500
- children: Aglyn.CRM_LEAD_STATUS_LABELS.new
501
- }),
502
- /*#__PURE__*/ _jsx(MenuItem, {
503
- value: "nurturing",
504
- children: Aglyn.CRM_LEAD_STATUS_LABELS.nurturing
505
- }),
506
- /*#__PURE__*/ _jsx(MenuItem, {
507
- value: "working",
508
- children: Aglyn.CRM_LEAD_STATUS_LABELS.working
509
- }),
510
- /*#__PURE__*/ _jsx(MenuItem, {
511
- value: "unqualified",
512
- children: `${Aglyn.CRM_LEAD_STATUS_LABELS.unqualified}…`
513
- })
514
- ]
513
+ children: leadStatusMenuItems(statusChoices)
515
514
  })
516
515
  ]
517
516
  }),
@@ -563,104 +562,14 @@ const TEXT_MAX = Aglyn.CRM_LEAD_TEXT_MAX;
563
562
  children: /*#__PURE__*/ _jsxs(Stack, {
564
563
  spacing: 2,
565
564
  children: [
566
- /*#__PURE__*/ _jsxs(Stack, {
567
- direction: {
568
- xs: 'column',
569
- md: 'row'
570
- },
571
- spacing: 2,
572
- children: [
573
- /*#__PURE__*/ _jsx(TextField, {
574
- size: "small",
575
- label: "Company",
576
- value: profile.company,
577
- onChange: (event)=>editProfile('company', event.target.value),
578
- disabled: converted,
579
- slotProps: {
580
- htmlInput: {
581
- maxLength: TEXT_MAX
582
- }
583
- },
584
- fullWidth: true
585
- }),
586
- /*#__PURE__*/ _jsx(TextField, {
587
- size: "small",
588
- label: "Job title",
589
- value: profile.jobTitle,
590
- onChange: (event)=>editProfile('jobTitle', event.target.value),
591
- disabled: converted,
592
- slotProps: {
593
- htmlInput: {
594
- maxLength: TEXT_MAX
595
- }
596
- },
597
- fullWidth: true
598
- })
599
- ]
600
- }),
601
- /*#__PURE__*/ _jsxs(Stack, {
602
- direction: {
603
- xs: 'column',
604
- md: 'row'
605
- },
606
- spacing: 2,
607
- children: [
608
- /*#__PURE__*/ _jsx(TextField, {
609
- size: "small",
610
- label: "Phone",
611
- value: profile.phone,
612
- onChange: (event)=>editProfile('phone', event.target.value),
613
- disabled: converted,
614
- error: Boolean(profileErrors['phone']),
615
- helperText: profileErrors['phone'] || 'With the country code, like +1 512 555 0107',
616
- fullWidth: true
617
- }),
618
- /*#__PURE__*/ _jsx(TextField, {
619
- size: "small",
620
- label: "Website",
621
- value: profile.website,
622
- onChange: (event)=>editProfile('website', event.target.value),
623
- disabled: converted,
624
- error: Boolean(profileErrors['website']),
625
- helperText: profileErrors['website'] || 'Like acme.com',
626
- fullWidth: true
627
- })
628
- ]
629
- }),
630
- /*#__PURE__*/ _jsxs(Stack, {
631
- direction: {
632
- xs: 'column',
633
- md: 'row'
634
- },
635
- spacing: 2,
636
- children: [
637
- /*#__PURE__*/ _jsx(LeadSourceSelect, {
638
- picklist: leadSources.picklist,
639
- value: profile.leadSource,
640
- stored: String((_lead_leadSource = lead.leadSource) != null ? _lead_leadSource : ''),
641
- onChange: (label)=>editProfile('leadSource', label),
642
- disabled: converted
643
- }),
644
- /*#__PURE__*/ _jsx(TextField, {
645
- size: "small",
646
- label: "Tags",
647
- value: profile.tags,
648
- onChange: (event)=>editProfile('tags', event.target.value),
649
- disabled: converted,
650
- helperText: "Comma-separated",
651
- fullWidth: true
652
- })
653
- ]
654
- }),
655
- /*#__PURE__*/ _jsx(Typography, {
656
- variant: "caption",
657
- color: "text.secondary",
658
- children: 'Address'
659
- }),
660
- /*#__PURE__*/ _jsx(ContactAddressFields, {
661
- value: profile.address,
662
- onChange: (next)=>editProfile('address', next),
663
- disabled: converted
565
+ /*#__PURE__*/ _jsx(LeadProfileFields, {
566
+ draft: profile,
567
+ onChange: editProfile,
568
+ errors: profileErrors,
569
+ disabled: converted,
570
+ leadSources: leadSources.picklist,
571
+ lists: leadPicklists.lists,
572
+ stored: lead
664
573
  }),
665
574
  fields.active.length ? /*#__PURE__*/ _jsxs(_Fragment, {
666
575
  children: [