@sneat/contactus-shared 0.2.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 (320) hide show
  1. package/esm2022/index.js +4 -0
  2. package/esm2022/index.js.map +1 -0
  3. package/esm2022/lib/components/address-form/address-form.component.js +182 -0
  4. package/esm2022/lib/components/address-form/address-form.component.js.map +1 -0
  5. package/esm2022/lib/components/address-form/index.js +2 -0
  6. package/esm2022/lib/components/address-form/index.js.map +1 -0
  7. package/esm2022/lib/components/basic-contact-form/basic-contact-form.component.js +71 -0
  8. package/esm2022/lib/components/basic-contact-form/basic-contact-form.component.js.map +1 -0
  9. package/esm2022/lib/components/basic-contact-form/index.js +2 -0
  10. package/esm2022/lib/components/basic-contact-form/index.js.map +1 -0
  11. package/esm2022/lib/components/contact-comm-channels/comm-channel-form.component.js +90 -0
  12. package/esm2022/lib/components/contact-comm-channels/comm-channel-form.component.js.map +1 -0
  13. package/esm2022/lib/components/contact-comm-channels/comm-channel-item.component.js +128 -0
  14. package/esm2022/lib/components/contact-comm-channels/comm-channel-item.component.js.map +1 -0
  15. package/esm2022/lib/components/contact-comm-channels/comm-channels-list.component.js +30 -0
  16. package/esm2022/lib/components/contact-comm-channels/comm-channels-list.component.js.map +1 -0
  17. package/esm2022/lib/components/contact-comm-channels/contact-comm-channels.component.js +16 -0
  18. package/esm2022/lib/components/contact-comm-channels/contact-comm-channels.component.js.map +1 -0
  19. package/esm2022/lib/components/contact-comm-channels/contact-emails.component.js +30 -0
  20. package/esm2022/lib/components/contact-comm-channels/contact-emails.component.js.map +1 -0
  21. package/esm2022/lib/components/contact-comm-channels/contact-phones.component.js +30 -0
  22. package/esm2022/lib/components/contact-comm-channels/contact-phones.component.js.map +1 -0
  23. package/esm2022/lib/components/contact-comm-channels/index.js +2 -0
  24. package/esm2022/lib/components/contact-comm-channels/index.js.map +1 -0
  25. package/esm2022/lib/components/contact-details/contact-details.component.js +235 -0
  26. package/esm2022/lib/components/contact-details/contact-details.component.js.map +1 -0
  27. package/esm2022/lib/components/contact-details/index.js +2 -0
  28. package/esm2022/lib/components/contact-details/index.js.map +1 -0
  29. package/esm2022/lib/components/contact-details/related-contacts.component.js +116 -0
  30. package/esm2022/lib/components/contact-details/related-contacts.component.js.map +1 -0
  31. package/esm2022/lib/components/contact-dob/contact-dob.component.js +57 -0
  32. package/esm2022/lib/components/contact-dob/contact-dob.component.js.map +1 -0
  33. package/esm2022/lib/components/contact-dob/index.js +2 -0
  34. package/esm2022/lib/components/contact-dob/index.js.map +1 -0
  35. package/esm2022/lib/components/contact-events.js +2 -0
  36. package/esm2022/lib/components/contact-events.js.map +1 -0
  37. package/esm2022/lib/components/contact-forms/contact-form-base.component.js +30 -0
  38. package/esm2022/lib/components/contact-forms/contact-form-base.component.js.map +1 -0
  39. package/esm2022/lib/components/contact-forms/emails-form/emails-form.component.js +76 -0
  40. package/esm2022/lib/components/contact-forms/emails-form/emails-form.component.js.map +1 -0
  41. package/esm2022/lib/components/contact-forms/emails-form/index.js +2 -0
  42. package/esm2022/lib/components/contact-forms/emails-form/index.js.map +1 -0
  43. package/esm2022/lib/components/contact-forms/index.js +11 -0
  44. package/esm2022/lib/components/contact-forms/index.js.map +1 -0
  45. package/esm2022/lib/components/contact-forms/location-form/index.js +2 -0
  46. package/esm2022/lib/components/contact-forms/location-form/index.js.map +1 -0
  47. package/esm2022/lib/components/contact-forms/location-form/location-form.component.js +194 -0
  48. package/esm2022/lib/components/contact-forms/location-form/location-form.component.js.map +1 -0
  49. package/esm2022/lib/components/contact-forms/new-contact/index.js +5 -0
  50. package/esm2022/lib/components/contact-forms/new-contact/index.js.map +1 -0
  51. package/esm2022/lib/components/contact-forms/new-contact/new-company-form.component.js +115 -0
  52. package/esm2022/lib/components/contact-forms/new-contact/new-company-form.component.js.map +1 -0
  53. package/esm2022/lib/components/contact-forms/new-contact/new-contact-form-base.component.js +34 -0
  54. package/esm2022/lib/components/contact-forms/new-contact/new-contact-form-base.component.js.map +1 -0
  55. package/esm2022/lib/components/contact-forms/new-contact/new-contact-form.component.js +82 -0
  56. package/esm2022/lib/components/contact-forms/new-contact/new-contact-form.component.js.map +1 -0
  57. package/esm2022/lib/components/contact-forms/new-contact/new-person-form.component.js +282 -0
  58. package/esm2022/lib/components/contact-forms/new-contact/new-person-form.component.js.map +1 -0
  59. package/esm2022/lib/components/contact-forms/new-contact/new-pet-form.component.js +25 -0
  60. package/esm2022/lib/components/contact-forms/new-contact/new-pet-form.component.js.map +1 -0
  61. package/esm2022/lib/components/contact-forms/person-forms/age-group/age-group-form.component.js +64 -0
  62. package/esm2022/lib/components/contact-forms/person-forms/age-group/age-group-form.component.js.map +1 -0
  63. package/esm2022/lib/components/contact-forms/person-forms/age-group/index.js +2 -0
  64. package/esm2022/lib/components/contact-forms/person-forms/age-group/index.js.map +1 -0
  65. package/esm2022/lib/components/contact-forms/person-forms/gender-form/gender-form.component.js +118 -0
  66. package/esm2022/lib/components/contact-forms/person-forms/gender-form/gender-form.component.js.map +1 -0
  67. package/esm2022/lib/components/contact-forms/person-forms/gender-form/index.js +2 -0
  68. package/esm2022/lib/components/contact-forms/person-forms/gender-form/index.js.map +1 -0
  69. package/esm2022/lib/components/contact-forms/person-forms/names-form/index.js +2 -0
  70. package/esm2022/lib/components/contact-forms/person-forms/names-form/index.js.map +1 -0
  71. package/esm2022/lib/components/contact-forms/person-forms/names-form/names-form.component.js +296 -0
  72. package/esm2022/lib/components/contact-forms/person-forms/names-form/names-form.component.js.map +1 -0
  73. package/esm2022/lib/components/contact-forms/pesson-wizard/index.js +2 -0
  74. package/esm2022/lib/components/contact-forms/pesson-wizard/index.js.map +1 -0
  75. package/esm2022/lib/components/contact-forms/pesson-wizard/person-wizard.component.js +369 -0
  76. package/esm2022/lib/components/contact-forms/pesson-wizard/person-wizard.component.js.map +1 -0
  77. package/esm2022/lib/components/contact-forms/pet-kind-and-breed-form/index.js +2 -0
  78. package/esm2022/lib/components/contact-forms/pet-kind-and-breed-form/index.js.map +1 -0
  79. package/esm2022/lib/components/contact-forms/pet-kind-and-breed-form/pet-kind-and-breed-form.component.js +66 -0
  80. package/esm2022/lib/components/contact-forms/pet-kind-and-breed-form/pet-kind-and-breed-form.component.js.map +1 -0
  81. package/esm2022/lib/components/contact-forms/phones-form/index.js +2 -0
  82. package/esm2022/lib/components/contact-forms/phones-form/index.js.map +1 -0
  83. package/esm2022/lib/components/contact-forms/phones-form/phones-form.component.js +79 -0
  84. package/esm2022/lib/components/contact-forms/phones-form/phones-form.component.js.map +1 -0
  85. package/esm2022/lib/components/contact-forms/relationship-form/contact-relationship-form.component.js +125 -0
  86. package/esm2022/lib/components/contact-forms/relationship-form/contact-relationship-form.component.js.map +1 -0
  87. package/esm2022/lib/components/contact-forms/relationship-form/index.js +2 -0
  88. package/esm2022/lib/components/contact-forms/relationship-form/index.js.map +1 -0
  89. package/esm2022/lib/components/contact-forms/relationship-form/relationship-form.component.js +136 -0
  90. package/esm2022/lib/components/contact-forms/relationship-form/relationship-form.component.js.map +1 -0
  91. package/esm2022/lib/components/contact-forms/role-form/contact-role-form.component.js +98 -0
  92. package/esm2022/lib/components/contact-forms/role-form/contact-role-form.component.js.map +1 -0
  93. package/esm2022/lib/components/contact-forms/role-form/index.js +2 -0
  94. package/esm2022/lib/components/contact-forms/role-form/index.js.map +1 -0
  95. package/esm2022/lib/components/contact-forms/roles-form/index.js +2 -0
  96. package/esm2022/lib/components/contact-forms/roles-form/index.js.map +1 -0
  97. package/esm2022/lib/components/contact-forms/roles-form/roles-form.component.js +59 -0
  98. package/esm2022/lib/components/contact-forms/roles-form/roles-form.component.js.map +1 -0
  99. package/esm2022/lib/components/contact-forms/space-related-form.component.js +32 -0
  100. package/esm2022/lib/components/contact-forms/space-related-form.component.js.map +1 -0
  101. package/esm2022/lib/components/contact-input/contact-input.component.js +151 -0
  102. package/esm2022/lib/components/contact-input/contact-input.component.js.map +1 -0
  103. package/esm2022/lib/components/contact-input/index.js +2 -0
  104. package/esm2022/lib/components/contact-input/index.js.map +1 -0
  105. package/esm2022/lib/components/contact-locations/contact-locations.component.js +52 -0
  106. package/esm2022/lib/components/contact-locations/contact-locations.component.js.map +1 -0
  107. package/esm2022/lib/components/contact-locations/index.js +2 -0
  108. package/esm2022/lib/components/contact-locations/index.js.map +1 -0
  109. package/esm2022/lib/components/contact-modules-menu/contact-modules-menu.component.js +29 -0
  110. package/esm2022/lib/components/contact-modules-menu/contact-modules-menu.component.js.map +1 -0
  111. package/esm2022/lib/components/contact-modules-menu/index.js +2 -0
  112. package/esm2022/lib/components/contact-modules-menu/index.js.map +1 -0
  113. package/esm2022/lib/components/contact-role-badges/contact-role-badges.component.js +44 -0
  114. package/esm2022/lib/components/contact-role-badges/contact-role-badges.component.js.map +1 -0
  115. package/esm2022/lib/components/contact-roles-input/contact-roles-input.component.js +37 -0
  116. package/esm2022/lib/components/contact-roles-input/contact-roles-input.component.js.map +1 -0
  117. package/esm2022/lib/components/contact-roles-input/index.js +2 -0
  118. package/esm2022/lib/components/contact-roles-input/index.js.map +1 -0
  119. package/esm2022/lib/components/contacts-by-type/contacts-by-type.component.js +200 -0
  120. package/esm2022/lib/components/contacts-by-type/contacts-by-type.component.js.map +1 -0
  121. package/esm2022/lib/components/contacts-by-type/index.js +2 -0
  122. package/esm2022/lib/components/contacts-by-type/index.js.map +1 -0
  123. package/esm2022/lib/components/contacts-checklist/contacts-checklist-item.component.js +32 -0
  124. package/esm2022/lib/components/contacts-checklist/contacts-checklist-item.component.js.map +1 -0
  125. package/esm2022/lib/components/contacts-checklist/contacts-checklist.component.js +140 -0
  126. package/esm2022/lib/components/contacts-checklist/contacts-checklist.component.js.map +1 -0
  127. package/esm2022/lib/components/contacts-checklist/index.js +2 -0
  128. package/esm2022/lib/components/contacts-checklist/index.js.map +1 -0
  129. package/esm2022/lib/components/contacts-component/contacts.component.js +200 -0
  130. package/esm2022/lib/components/contacts-component/contacts.component.js.map +1 -0
  131. package/esm2022/lib/components/contacts-component.commands.js +2 -0
  132. package/esm2022/lib/components/contacts-component.commands.js.map +1 -0
  133. package/esm2022/lib/components/contacts-list/contacts-list.component.js +32 -0
  134. package/esm2022/lib/components/contacts-list/contacts-list.component.js.map +1 -0
  135. package/esm2022/lib/components/contacts-list/index.js +3 -0
  136. package/esm2022/lib/components/contacts-list/index.js.map +1 -0
  137. package/esm2022/lib/components/contacts-list-item/contacts-list-item.component.js +138 -0
  138. package/esm2022/lib/components/contacts-list-item/contacts-list-item.component.js.map +1 -0
  139. package/esm2022/lib/components/contacts-list-item/related-as.component.js +34 -0
  140. package/esm2022/lib/components/contacts-list-item/related-as.component.js.map +1 -0
  141. package/esm2022/lib/components/contacts-selector/contacts-selector-input.component.js +91 -0
  142. package/esm2022/lib/components/contacts-selector/contacts-selector-input.component.js.map +1 -0
  143. package/esm2022/lib/components/contacts-selector/contacts-selector.component.js +415 -0
  144. package/esm2022/lib/components/contacts-selector/contacts-selector.component.js.map +1 -0
  145. package/esm2022/lib/components/contacts-selector/contacts-selector.interfaces.js +2 -0
  146. package/esm2022/lib/components/contacts-selector/contacts-selector.interfaces.js.map +1 -0
  147. package/esm2022/lib/components/contacts-selector/contacts-selector.module.js +28 -0
  148. package/esm2022/lib/components/contacts-selector/contacts-selector.module.js.map +1 -0
  149. package/esm2022/lib/components/contacts-selector/contacts-selector.service.js +18 -0
  150. package/esm2022/lib/components/contacts-selector/contacts-selector.service.js.map +1 -0
  151. package/esm2022/lib/components/contacts-selector/lib-exports.js +6 -0
  152. package/esm2022/lib/components/contacts-selector/lib-exports.js.map +1 -0
  153. package/esm2022/lib/components/contactus-module.base.component.js +4 -0
  154. package/esm2022/lib/components/contactus-module.base.component.js.map +1 -0
  155. package/esm2022/lib/components/inlist-options/inlist-age-group.component.js +53 -0
  156. package/esm2022/lib/components/inlist-options/inlist-age-group.component.js.map +1 -0
  157. package/esm2022/lib/components/inlist-options/inlist-options.component.js +27 -0
  158. package/esm2022/lib/components/inlist-options/inlist-options.component.js.map +1 -0
  159. package/esm2022/lib/components/invite-links/invite-links.component.js +87 -0
  160. package/esm2022/lib/components/invite-links/invite-links.component.js.map +1 -0
  161. package/esm2022/lib/components/lib-exports.js +29 -0
  162. package/esm2022/lib/components/lib-exports.js.map +1 -0
  163. package/esm2022/lib/components/members-as-badges/contacts-as-badges.component.js +39 -0
  164. package/esm2022/lib/components/members-as-badges/contacts-as-badges.component.js.map +1 -0
  165. package/esm2022/lib/components/members-as-badges/index.js +2 -0
  166. package/esm2022/lib/components/members-as-badges/index.js.map +1 -0
  167. package/esm2022/lib/components/members-by-role/family-members.component.js +180 -0
  168. package/esm2022/lib/components/members-by-role/family-members.component.js.map +1 -0
  169. package/esm2022/lib/components/members-by-role/index.js +4 -0
  170. package/esm2022/lib/components/members-by-role/index.js.map +1 -0
  171. package/esm2022/lib/components/members-by-role/member-group.js +2 -0
  172. package/esm2022/lib/components/members-by-role/member-group.js.map +1 -0
  173. package/esm2022/lib/components/members-by-role/members-by-role.component.js +34 -0
  174. package/esm2022/lib/components/members-by-role/members-by-role.component.js.map +1 -0
  175. package/esm2022/lib/components/members-card-header/members-card-header.component.js +33 -0
  176. package/esm2022/lib/components/members-card-header/members-card-header.component.js.map +1 -0
  177. package/esm2022/lib/components/members-list/index.js +2 -0
  178. package/esm2022/lib/components/members-list/index.js.map +1 -0
  179. package/esm2022/lib/components/members-list/members-list.component.js +164 -0
  180. package/esm2022/lib/components/members-list/members-list.component.js.map +1 -0
  181. package/esm2022/lib/components/members-short-list-card/members-short-list-card.component.js +60 -0
  182. package/esm2022/lib/components/members-short-list-card/members-short-list-card.component.js.map +1 -0
  183. package/esm2022/lib/components/shared-with/index.js +2 -0
  184. package/esm2022/lib/components/shared-with/index.js.map +1 -0
  185. package/esm2022/lib/components/shared-with/shared-with.component.js +25 -0
  186. package/esm2022/lib/components/shared-with/shared-with.component.js.map +1 -0
  187. package/esm2022/lib/components/with-new-contact-input.js +18 -0
  188. package/esm2022/lib/components/with-new-contact-input.js.map +1 -0
  189. package/esm2022/lib/constants.js +2 -0
  190. package/esm2022/lib/constants.js.map +1 -0
  191. package/esm2022/lib/index.js +3 -0
  192. package/esm2022/lib/index.js.map +1 -0
  193. package/esm2022/lib/modals/contact-names-modal/contact-names-modal.component.js +88 -0
  194. package/esm2022/lib/modals/contact-names-modal/contact-names-modal.component.js.map +1 -0
  195. package/esm2022/lib/modals/invite-modal/index.js +2 -0
  196. package/esm2022/lib/modals/invite-modal/index.js.map +1 -0
  197. package/esm2022/lib/modals/invite-modal/invite-modal.component.js +255 -0
  198. package/esm2022/lib/modals/invite-modal/invite-modal.component.js.map +1 -0
  199. package/esm2022/lib/pipes/contact-title.pipe.js +25 -0
  200. package/esm2022/lib/pipes/contact-title.pipe.js.map +1 -0
  201. package/esm2022/lib/pipes/index.js +4 -0
  202. package/esm2022/lib/pipes/index.js.map +1 -0
  203. package/esm2022/lib/pipes/person-title.pipe.js +21 -0
  204. package/esm2022/lib/pipes/person-title.pipe.js.map +1 -0
  205. package/esm2022/lib/pipes/selected-contacts.pipe.js +22 -0
  206. package/esm2022/lib/pipes/selected-contacts.pipe.js.map +1 -0
  207. package/esm2022/lib/providers/user-space-brief.provider.js +30 -0
  208. package/esm2022/lib/providers/user-space-brief.provider.js.map +1 -0
  209. package/esm2022/lib/ui-types.js +2 -0
  210. package/esm2022/lib/ui-types.js.map +1 -0
  211. package/esm2022/sneat-contactus-shared.js +5 -0
  212. package/esm2022/sneat-contactus-shared.js.map +1 -0
  213. package/index.d.ts +3 -0
  214. package/lib/components/address-form/address-form.component.d.ts +51 -0
  215. package/lib/components/address-form/index.d.ts +1 -0
  216. package/lib/components/basic-contact-form/basic-contact-form.component.d.ts +20 -0
  217. package/lib/components/basic-contact-form/index.d.ts +1 -0
  218. package/lib/components/contact-comm-channels/comm-channel-form.component.d.ts +20 -0
  219. package/lib/components/contact-comm-channels/comm-channel-item.component.d.ts +24 -0
  220. package/lib/components/contact-comm-channels/comm-channels-list.component.d.ts +15 -0
  221. package/lib/components/contact-comm-channels/contact-comm-channels.component.d.ts +7 -0
  222. package/lib/components/contact-comm-channels/contact-emails.component.d.ts +9 -0
  223. package/lib/components/contact-comm-channels/contact-phones.component.d.ts +9 -0
  224. package/lib/components/contact-comm-channels/index.d.ts +1 -0
  225. package/lib/components/contact-details/contact-details.component.d.ts +32 -0
  226. package/lib/components/contact-details/index.d.ts +1 -0
  227. package/lib/components/contact-details/related-contacts.component.d.ts +24 -0
  228. package/lib/components/contact-dob/contact-dob.component.d.ts +13 -0
  229. package/lib/components/contact-dob/index.d.ts +1 -0
  230. package/lib/components/contact-events.d.ts +6 -0
  231. package/lib/components/contact-forms/contact-form-base.component.d.ts +15 -0
  232. package/lib/components/contact-forms/emails-form/emails-form.component.d.ts +27 -0
  233. package/lib/components/contact-forms/emails-form/index.d.ts +1 -0
  234. package/lib/components/contact-forms/index.d.ts +10 -0
  235. package/lib/components/contact-forms/location-form/index.d.ts +1 -0
  236. package/lib/components/contact-forms/location-form/location-form.component.d.ts +39 -0
  237. package/lib/components/contact-forms/new-contact/index.d.ts +4 -0
  238. package/lib/components/contact-forms/new-contact/new-company-form.component.d.ts +26 -0
  239. package/lib/components/contact-forms/new-contact/new-contact-form-base.component.d.ts +15 -0
  240. package/lib/components/contact-forms/new-contact/new-contact-form.component.d.ts +20 -0
  241. package/lib/components/contact-forms/new-contact/new-person-form.component.d.ts +51 -0
  242. package/lib/components/contact-forms/new-contact/new-pet-form.component.d.ts +8 -0
  243. package/lib/components/contact-forms/person-forms/age-group/age-group-form.component.d.ts +17 -0
  244. package/lib/components/contact-forms/person-forms/age-group/index.d.ts +1 -0
  245. package/lib/components/contact-forms/person-forms/gender-form/gender-form.component.d.ts +22 -0
  246. package/lib/components/contact-forms/person-forms/gender-form/index.d.ts +1 -0
  247. package/lib/components/contact-forms/person-forms/names-form/index.d.ts +1 -0
  248. package/lib/components/contact-forms/person-forms/names-form/names-form.component.d.ts +63 -0
  249. package/lib/components/contact-forms/pesson-wizard/index.d.ts +1 -0
  250. package/lib/components/contact-forms/pesson-wizard/person-wizard.component.d.ts +63 -0
  251. package/lib/components/contact-forms/pet-kind-and-breed-form/index.d.ts +1 -0
  252. package/lib/components/contact-forms/pet-kind-and-breed-form/pet-kind-and-breed-form.component.d.ts +14 -0
  253. package/lib/components/contact-forms/phones-form/index.d.ts +1 -0
  254. package/lib/components/contact-forms/phones-form/phones-form.component.d.ts +21 -0
  255. package/lib/components/contact-forms/relationship-form/contact-relationship-form.component.d.ts +24 -0
  256. package/lib/components/contact-forms/relationship-form/index.d.ts +1 -0
  257. package/lib/components/contact-forms/relationship-form/relationship-form.component.d.ts +34 -0
  258. package/lib/components/contact-forms/role-form/contact-role-form.component.d.ts +33 -0
  259. package/lib/components/contact-forms/role-form/index.d.ts +1 -0
  260. package/lib/components/contact-forms/roles-form/index.d.ts +1 -0
  261. package/lib/components/contact-forms/roles-form/roles-form.component.d.ts +21 -0
  262. package/lib/components/contact-forms/space-related-form.component.d.ts +11 -0
  263. package/lib/components/contact-input/contact-input.component.d.ts +36 -0
  264. package/lib/components/contact-input/index.d.ts +1 -0
  265. package/lib/components/contact-locations/contact-locations.component.d.ts +14 -0
  266. package/lib/components/contact-locations/index.d.ts +1 -0
  267. package/lib/components/contact-modules-menu/contact-modules-menu.component.d.ts +12 -0
  268. package/lib/components/contact-modules-menu/index.d.ts +1 -0
  269. package/lib/components/contact-role-badges/contact-role-badges.component.d.ts +12 -0
  270. package/lib/components/contact-roles-input/contact-roles-input.component.d.ts +18 -0
  271. package/lib/components/contact-roles-input/index.d.ts +1 -0
  272. package/lib/components/contacts-by-type/contacts-by-type.component.d.ts +38 -0
  273. package/lib/components/contacts-by-type/index.d.ts +1 -0
  274. package/lib/components/contacts-checklist/contacts-checklist-item.component.d.ts +21 -0
  275. package/lib/components/contacts-checklist/contacts-checklist.component.d.ts +40 -0
  276. package/lib/components/contacts-checklist/index.d.ts +1 -0
  277. package/lib/components/contacts-component/contacts.component.d.ts +45 -0
  278. package/lib/components/contacts-component.commands.d.ts +5 -0
  279. package/lib/components/contacts-list/contacts-list.component.d.ts +11 -0
  280. package/lib/components/contacts-list/index.d.ts +2 -0
  281. package/lib/components/contacts-list-item/contacts-list-item.component.d.ts +29 -0
  282. package/lib/components/contacts-list-item/related-as.component.d.ts +16 -0
  283. package/lib/components/contacts-selector/contacts-selector-input.component.d.ts +24 -0
  284. package/lib/components/contacts-selector/contacts-selector.component.d.ts +80 -0
  285. package/lib/components/contacts-selector/contacts-selector.interfaces.d.ts +22 -0
  286. package/lib/components/contacts-selector/contacts-selector.module.d.ts +6 -0
  287. package/lib/components/contacts-selector/contacts-selector.service.d.ts +10 -0
  288. package/lib/components/contacts-selector/lib-exports.d.ts +5 -0
  289. package/lib/components/contactus-module.base.component.d.ts +4 -0
  290. package/lib/components/inlist-options/inlist-age-group.component.d.ts +12 -0
  291. package/lib/components/inlist-options/inlist-options.component.d.ts +18 -0
  292. package/lib/components/invite-links/invite-links.component.d.ts +28 -0
  293. package/lib/components/lib-exports.d.ts +27 -0
  294. package/lib/components/members-as-badges/contacts-as-badges.component.d.ts +18 -0
  295. package/lib/components/members-as-badges/index.d.ts +1 -0
  296. package/lib/components/members-by-role/family-members.component.d.ts +21 -0
  297. package/lib/components/members-by-role/index.d.ts +3 -0
  298. package/lib/components/members-by-role/member-group.d.ts +9 -0
  299. package/lib/components/members-by-role/members-by-role.component.d.ts +12 -0
  300. package/lib/components/members-card-header/members-card-header.component.d.ts +13 -0
  301. package/lib/components/members-list/index.d.ts +1 -0
  302. package/lib/components/members-list/members-list.component.d.ts +32 -0
  303. package/lib/components/members-short-list-card/members-short-list-card.component.d.ts +12 -0
  304. package/lib/components/shared-with/index.d.ts +1 -0
  305. package/lib/components/shared-with/shared-with.component.d.ts +6 -0
  306. package/lib/components/with-new-contact-input.d.ts +10 -0
  307. package/lib/constants.d.ts +13 -0
  308. package/lib/index.d.ts +2 -0
  309. package/lib/modals/contact-names-modal/contact-names-modal.component.d.ts +15 -0
  310. package/lib/modals/invite-modal/index.d.ts +1 -0
  311. package/lib/modals/invite-modal/invite-modal.component.d.ts +49 -0
  312. package/lib/pipes/contact-title.pipe.d.ts +10 -0
  313. package/lib/pipes/index.d.ts +3 -0
  314. package/lib/pipes/person-title.pipe.d.ts +9 -0
  315. package/lib/pipes/selected-contacts.pipe.d.ts +8 -0
  316. package/lib/providers/user-space-brief.provider.d.ts +12 -0
  317. package/lib/ui-types.d.ts +9 -0
  318. package/package.json +27 -0
  319. package/sneat-contactus-shared.d.ts +5 -0
  320. package/tsconfig.lib.prod.tsbuildinfo +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comm-channel-item.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-comm-channels/comm-channel-item.component.ts","../../../../../../../../libs/contactus/shared/src/lib/components/contact-comm-channels/comm-channel-item.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n effect,\n signal,\n input,\n inject,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n IonButton,\n IonButtons,\n IonIcon,\n IonInput,\n IonItem,\n IonLabel,\n IonSelect,\n IonSelectOption,\n} from '@ionic/angular/standalone';\nimport {\n ContactCommChannelType,\n IContactCommChannelProps,\n} from '@sneat/contactus-core';\nimport {\n ContactService,\n IContactCommChannelRequest,\n IUpdateContactCommChannelRequest,\n} from '@sneat/contactus-services';\nimport { ClassName, SneatBaseComponent } from '@sneat/ui';\n\nexport interface ICommChannelListItem extends IContactCommChannelProps {\n readonly id: string;\n}\n\n@Component({\n imports: [\n IonButton,\n IonButtons,\n IonIcon,\n IonInput,\n IonItem,\n IonSelect,\n IonSelectOption,\n ReactiveFormsModule,\n IonLabel,\n ],\n providers: [\n {\n provide: ClassName,\n useValue: 'CommChannelItemComponent',\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'sneat-comm-channel-item',\n templateUrl: 'comm-channel-item.component.html',\n})\nexport class CommChannelItemComponent extends SneatBaseComponent {\n public readonly $channelType = input.required<ContactCommChannelType>();\n public $channel = input.required<ICommChannelListItem>();\n public $contactID = input.required<string>();\n public $spaceID = input.required<string>();\n\n protected readonly channelID = new FormControl();\n public readonly $lines = input.required<'none' | 'full' | undefined>();\n protected readonly $saving = signal(false);\n\n protected readonly contactService = inject(ContactService);\n\n constructor() {\n super();\n effect(() => {\n const channel = this.$channel();\n if (!this.channelID.dirty) {\n this.channelID.setValue(channel.id);\n }\n });\n }\n\n protected deleteChannel(_event?: Event): void {\n // console.log('deleteChannel', event);\n const channelID = this.$channel().id;\n if (!channelID) {\n throw new Error('Unable to delete channel without ID');\n }\n if (!confirm(`Are you sure you want to delete ${channelID}?`)) {\n return;\n }\n this.$saving.set(true);\n const request: IContactCommChannelRequest = {\n spaceID: this.$spaceID(),\n contactID: this.$contactID(),\n channelType: this.$channelType(),\n channelID,\n };\n this.contactService\n .deleteContactCommChannel(request)\n .pipe(this.takeUntilDestroyed())\n .subscribe({\n next: () => this.$saving.set(false),\n error: (err) => {\n this.$saving.set(false);\n this.errorLogger.logError(\n err,\n 'Failed to delete contact ' + this.$channelType(),\n );\n },\n });\n }\n\n protected saveChanges(_event?: Event): void {\n // console.log('saveChanges', event);\n const channelID = (this.channelID.value || '').trim();\n if (!channelID) {\n this.channelID.markAsTouched();\n this.channelID.setErrors({ required: true });\n return;\n }\n this.$saving.set(true);\n const request: IUpdateContactCommChannelRequest = {\n spaceID: this.$spaceID(),\n contactID: this.$contactID(),\n channelID: this.$channel().id,\n channelType: this.$channelType(),\n newChannelID: channelID,\n };\n this.contactService\n .updateContactCommChannel(request)\n .pipe(this.takeUntilDestroyed())\n .subscribe({\n next: () => this.$saving.set(false),\n error: (err) => {\n this.errorLogger.logError(\n err,\n 'Failed to update contact' + this.$channelType(),\n );\n },\n });\n }\n\n protected onTypeChanged(event: CustomEvent): void {\n // console.log('onTypeChanged', event);\n const type = event.detail.value as 'private' | 'work';\n this.$saving.set(true);\n const request: IUpdateContactCommChannelRequest = {\n spaceID: this.$spaceID(),\n contactID: this.$contactID(),\n channelID: this.$channel().id,\n channelType: this.$channelType(),\n type,\n };\n this.contactService\n .updateContactCommChannel(request)\n .pipe(this.takeUntilDestroyed())\n .subscribe({\n next: () => this.$saving.set(false),\n error: (err) => {\n this.$saving.set(false);\n this.errorLogger.logError(\n err,\n 'Failed to update type of contact ' + this.$channelType(),\n );\n },\n });\n }\n}\n","<ion-item class=\"sneat-tiny-end-padding\" [lines]=\"$lines()\">\n <ion-select\n placeholder=\"Choose type\"\n interface=\"popover\"\n slot=\"start\"\n [value]=\"$channel().type\"\n style=\"min-width: 120px\"\n (ionChange)=\"onTypeChanged($event)\"\n >\n <ion-select-option value=\"work\">Work</ion-select-option>\n <ion-select-option value=\"personal\">Personal</ion-select-option>\n </ion-select>\n\n <ion-input [formControl]=\"channelID\" (keyup.enter)=\"saveChanges($event)\" />\n\n <ion-buttons slot=\"end\">\n @if (channelID.dirty) {\n <ion-button fill=\"solid\" color=\"danger\" (click)=\"saveChanges($event)\">\n <ion-icon name=\"save-outline\" />\n <ion-label>Save</ion-label>\n </ion-button>\n <ion-button\n title=\"Cancel changes\"\n (click)=\"channelID.reset($channel().id)\"\n >\n <ion-icon name=\"close-outline\" />\n </ion-button>\n } @else {\n <ion-button title=\"Copy\">\n <ion-icon name=\"copy-outline\" />\n </ion-button>\n <ion-button title=\"Remove\" (click)=\"deleteChannel($event)\">\n <ion-icon name=\"close-outline\" />\n </ion-button>\n }\n </ion-buttons>\n</ion-item>\n"]}
@@ -0,0 +1,30 @@
1
+ import { computed, signal } from '@angular/core';
2
+ import { IonButton, IonButtons, IonCard, IonIcon, IonInput, IonItem, IonLabel, } from '@ionic/angular/standalone';
3
+ import { SneatBaseComponent } from '@sneat/ui';
4
+ import { CommChannelFormComponent } from './comm-channel-form.component';
5
+ import { CommChannelItemComponent, } from './comm-channel-item.component';
6
+ export const importsForChannelsListComponent = [
7
+ IonItem,
8
+ IonCard,
9
+ IonLabel,
10
+ IonButtons,
11
+ IonButton,
12
+ IonIcon,
13
+ IonInput,
14
+ CommChannelItemComponent,
15
+ CommChannelFormComponent,
16
+ ];
17
+ // @Directive({})
18
+ export class CommChannelsListComponent extends SneatBaseComponent {
19
+ constructor(channelType, title, placeholder, $channels) {
20
+ super();
21
+ this.channelType = channelType;
22
+ this.$showAddForm = signal(false, ...(ngDevMode ? [{ debugName: "$showAddForm" }] : []));
23
+ this.$title = signal('', ...(ngDevMode ? [{ debugName: "$title" }] : []));
24
+ this.$placeholder = signal('', ...(ngDevMode ? [{ debugName: "$placeholder" }] : []));
25
+ this.$channels = computed(() => Object.entries($channels() || {}).map(([id, props]) => Object.assign({ id }, props)), ...(ngDevMode ? [{ debugName: "$channels" }] : []));
26
+ this.$title.set(title);
27
+ this.$placeholder.set(placeholder);
28
+ }
29
+ }
30
+ //# sourceMappingURL=comm-channels-list.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comm-channels-list.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-comm-channels/comm-channels-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAU,MAAM,eAAe,CAAC;AACzD,OAAO,EACL,SAAS,EACT,UAAU,EACV,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,wBAAwB,GAEzB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,OAAO;IACP,OAAO;IACP,QAAQ;IACR,UAAU;IACV,SAAS;IACT,OAAO;IACP,QAAQ;IACR,wBAAwB;IACxB,wBAAwB;CACzB,CAAC;AAEF,iBAAiB;AACjB,MAAM,OAAgB,yBAA0B,SAAQ,kBAAkB;IAUxE,YACqB,WAAmC,EACtD,KAAa,EACb,WAAmB,EACnB,SAEC;QAED,KAAK,EAAE,CAAC;QAPW,gBAAW,GAAX,WAAW,CAAwB;QAV9C,iBAAY,GAAG,MAAM,CAAC,KAAK,wDAAC,CAAC;QAMpB,WAAM,GAAG,MAAM,CAAC,EAAE,kDAAC,CAAC;QACpB,iBAAY,GAAG,MAAM,CAAC,EAAE,wDAAC,CAAC;QAW3C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,CAC7B,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CACpD,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAC7B,qDACF,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;CACF","sourcesContent":["import { computed, signal, Signal } from '@angular/core';\nimport {\n IonButton,\n IonButtons,\n IonCard,\n IonIcon,\n IonInput,\n IonItem,\n IonLabel,\n} from '@ionic/angular/standalone';\nimport {\n ContactCommChannelType,\n IContactCommChannelProps,\n} from '@sneat/contactus-core';\nimport { SneatBaseComponent } from '@sneat/ui';\nimport { CommChannelFormComponent } from './comm-channel-form.component';\nimport {\n CommChannelItemComponent,\n ICommChannelListItem,\n} from './comm-channel-item.component';\n\nexport const importsForChannelsListComponent = [\n IonItem,\n IonCard,\n IonLabel,\n IonButtons,\n IonButton,\n IonIcon,\n IonInput,\n CommChannelItemComponent,\n CommChannelFormComponent,\n];\n\n// @Directive({})\nexport abstract class CommChannelsListComponent extends SneatBaseComponent {\n protected $showAddForm = signal(false);\n\n protected readonly $channels: Signal<\n readonly ICommChannelListItem[] | undefined\n >;\n\n protected readonly $title = signal('');\n protected readonly $placeholder = signal('');\n\n protected constructor(\n protected readonly channelType: ContactCommChannelType,\n title: string,\n placeholder: string,\n $channels: Signal<\n Readonly<Record<string, IContactCommChannelProps>> | undefined\n >,\n ) {\n super();\n this.$channels = computed(() =>\n Object.entries($channels() || {}).map(([id, props]) =>\n Object.assign({ id }, props),\n ),\n );\n this.$title.set(title);\n this.$placeholder.set(placeholder);\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { Component, input, ChangeDetectionStrategy } from '@angular/core';
2
+ import { ContactEmailsComponent } from './contact-emails.component';
3
+ import { ContactPhonesComponent } from './contact-phones.component';
4
+ import * as i0 from "@angular/core";
5
+ export class ContactCommChannelsComponent {
6
+ constructor() {
7
+ this.$contact = input.required(...(ngDevMode ? [{ debugName: "$contact" }] : []));
8
+ }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactCommChannelsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: ContactCommChannelsComponent, isStandalone: true, selector: "sneat-contact-comm-channels", inputs: { $contact: { classPropertyName: "$contact", publicName: "$contact", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<sneat-contact-emails [$contact]=\"$contact()\" />\n\n<sneat-contact-phones [$contact]=\"$contact()\" />\n", dependencies: [{ kind: "component", type: ContactEmailsComponent, selector: "sneat-contact-emails", inputs: ["$contact"] }, { kind: "component", type: ContactPhonesComponent, selector: "sneat-contact-phones", inputs: ["$contact"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactCommChannelsComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ imports: [ContactEmailsComponent, ContactPhonesComponent], selector: 'sneat-contact-comm-channels', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sneat-contact-emails [$contact]=\"$contact()\" />\n\n<sneat-contact-phones [$contact]=\"$contact()\" />\n" }]
15
+ }], propDecorators: { $contact: [{ type: i0.Input, args: [{ isSignal: true, alias: "$contact", required: true }] }] } });
16
+ //# sourceMappingURL=contact-comm-channels.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-comm-channels.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-comm-channels/contact-comm-channels.component.ts","../../../../../../../../libs/contactus/shared/src/lib/components/contact-comm-channels/contact-comm-channels.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;;AAQpE,MAAM,OAAO,4BAA4B;IANzC;QAOkB,aAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAmB,CAAC;KAC9D;8GAFY,4BAA4B;kGAA5B,4BAA4B,mOCXzC,4GAGA,4CDGY,sBAAsB,uFAAE,sBAAsB;;2FAK7C,4BAA4B;kBANxC,SAAS;8BACC,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,YAC/C,6BAA6B,mBAEtB,uBAAuB,CAAC,MAAM","sourcesContent":["import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { IContactContext } from '@sneat/contactus-core';\nimport { ContactEmailsComponent } from './contact-emails.component';\nimport { ContactPhonesComponent } from './contact-phones.component';\n\n@Component({\n imports: [ContactEmailsComponent, ContactPhonesComponent],\n selector: 'sneat-contact-comm-channels',\n templateUrl: 'contact-comm-channels.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContactCommChannelsComponent {\n public readonly $contact = input.required<IContactContext>();\n}\n","<sneat-contact-emails [$contact]=\"$contact()\" />\n\n<sneat-contact-phones [$contact]=\"$contact()\" />\n"]}
@@ -0,0 +1,30 @@
1
+ import { ChangeDetectionStrategy, Component, computed, input, } from '@angular/core';
2
+ import { CommChannelsListComponent, importsForChannelsListComponent, } from './comm-channels-list.component';
3
+ import { ClassName } from '@sneat/ui';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ionic/angular/standalone";
6
+ import * as i2 from "./comm-channel-item.component";
7
+ import * as i3 from "./comm-channel-form.component";
8
+ export class ContactEmailsComponent extends CommChannelsListComponent {
9
+ constructor() {
10
+ super('email', 'Emails', 'email@address', computed(() => this.$contact().dbo?.emails));
11
+ this.$contact = input.required(...(ngDevMode ? [{ debugName: "$contact" }] : []));
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactEmailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: ContactEmailsComponent, isStandalone: true, selector: "sneat-contact-emails", inputs: { $contact: { classPropertyName: "$contact", publicName: "$contact", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
15
+ {
16
+ provide: ClassName,
17
+ useValue: 'ContactEmailsComponent',
18
+ },
19
+ ], usesInheritance: true, ngImport: i0, template: "<ion-card>\n <ion-item color=\"light\" lines=\"full\" class=\"sneat-tiny-end-padding\">\n <ion-label color=\"medium\" style=\"font-weight: bold\"\n >{{ $title() }}\n </ion-label>\n <ion-buttons slot=\"end\">\n @if ($contact().dbo && !$showAddForm()) {\n <ion-button color=\"tertiary\" (click)=\"$showAddForm.set(true)\">\n <ion-icon name=\"add-outline\" slot=\"start\" />\n <ion-label>New</ion-label>\n </ion-button>\n }\n </ion-buttons>\n </ion-item>\n\n @if ($contact().dbo) {\n @for (channel of $channels(); track channel.id) {\n <sneat-comm-channel-item\n [$spaceID]=\"$contact().space.id\"\n [$contactID]=\"$contact().id\"\n [$channel]=\"channel\"\n [$channelType]=\"channelType\"\n [$lines]=\"$showAddForm() && $last ? 'full' : $last ? 'none' : undefined\"\n />\n } @empty {\n @if (!$showAddForm()) {\n <ion-item>\n <ion-label\n color=\"medium\"\n style=\"font-style: italic; font-size: smaller\"\n >\n Nothing added yet.\n </ion-label>\n <ion-buttons slot=\"start\">\n <ion-button\n fill=\"outline\"\n color=\"tertiary\"\n class=\"ion-margin-start\"\n (click)=\"$showAddForm.set(true)\"\n >Add the 1st one\n </ion-button>\n </ion-buttons>\n </ion-item>\n }\n }\n } @else {\n <ion-item lines=\"none\">\n <ion-label>Loading...</ion-label>\n </ion-item>\n }\n @if ($showAddForm()) {\n <sneat-comm-channel-form\n [$contact]=\"$contact()\"\n [$channelType]=\"channelType\"\n [$placeholder]=\"$placeholder()\"\n (closeForm)=\"$showAddForm.set(false)\"\n />\n }\n</ion-card>\n", dependencies: [{ kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.CommChannelItemComponent, selector: "sneat-comm-channel-item", inputs: ["$channelType", "$channel", "$contactID", "$spaceID", "$lines"] }, { kind: "component", type: i3.CommChannelFormComponent, selector: "sneat-comm-channel-form", inputs: ["$contact", "$channelType", "$placeholder"], outputs: ["closeForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactEmailsComponent, decorators: [{
22
+ type: Component,
23
+ args: [{ imports: importsForChannelsListComponent, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
24
+ {
25
+ provide: ClassName,
26
+ useValue: 'ContactEmailsComponent',
27
+ },
28
+ ], selector: 'sneat-contact-emails', template: "<ion-card>\n <ion-item color=\"light\" lines=\"full\" class=\"sneat-tiny-end-padding\">\n <ion-label color=\"medium\" style=\"font-weight: bold\"\n >{{ $title() }}\n </ion-label>\n <ion-buttons slot=\"end\">\n @if ($contact().dbo && !$showAddForm()) {\n <ion-button color=\"tertiary\" (click)=\"$showAddForm.set(true)\">\n <ion-icon name=\"add-outline\" slot=\"start\" />\n <ion-label>New</ion-label>\n </ion-button>\n }\n </ion-buttons>\n </ion-item>\n\n @if ($contact().dbo) {\n @for (channel of $channels(); track channel.id) {\n <sneat-comm-channel-item\n [$spaceID]=\"$contact().space.id\"\n [$contactID]=\"$contact().id\"\n [$channel]=\"channel\"\n [$channelType]=\"channelType\"\n [$lines]=\"$showAddForm() && $last ? 'full' : $last ? 'none' : undefined\"\n />\n } @empty {\n @if (!$showAddForm()) {\n <ion-item>\n <ion-label\n color=\"medium\"\n style=\"font-style: italic; font-size: smaller\"\n >\n Nothing added yet.\n </ion-label>\n <ion-buttons slot=\"start\">\n <ion-button\n fill=\"outline\"\n color=\"tertiary\"\n class=\"ion-margin-start\"\n (click)=\"$showAddForm.set(true)\"\n >Add the 1st one\n </ion-button>\n </ion-buttons>\n </ion-item>\n }\n }\n } @else {\n <ion-item lines=\"none\">\n <ion-label>Loading...</ion-label>\n </ion-item>\n }\n @if ($showAddForm()) {\n <sneat-comm-channel-form\n [$contact]=\"$contact()\"\n [$channelType]=\"channelType\"\n [$placeholder]=\"$placeholder()\"\n (closeForm)=\"$showAddForm.set(false)\"\n />\n }\n</ion-card>\n" }]
29
+ }], ctorParameters: () => [], propDecorators: { $contact: [{ type: i0.Input, args: [{ isSignal: true, alias: "$contact", required: true }] }] } });
30
+ //# sourceMappingURL=contact-emails.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-emails.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-comm-channels/contact-emails.component.ts","../../../../../../../../libs/contactus/shared/src/lib/components/contact-comm-channels/comm-channels-list.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,KAAK,GACN,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;;;;;AActC,MAAM,OAAO,sBAAuB,SAAQ,yBAAyB;IAGnE;QACE,KAAK,CACH,OAAO,EACP,QAAQ,EACR,eAAe,EACf,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAC5C,CAAC;QARY,aAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAmB,CAAC;IAS7D,CAAC;8GAVU,sBAAsB;kGAAtB,sBAAsB,+MATtB;YACT;gBACE,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,wBAAwB;aACnC;SACF,iDCrBH,gyDA2DA;;2FDlCa,sBAAsB;kBAZlC,SAAS;8BACC,+BAA+B,mBACvB,uBAAuB,CAAC,MAAM,aACpC;wBACT;4BACE,OAAO,EAAE,SAAS;4BAClB,QAAQ,EAAE,wBAAwB;yBACnC;qBACF,YACS,sBAAsB","sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport { IContactContext } from '@sneat/contactus-core';\nimport {\n CommChannelsListComponent,\n importsForChannelsListComponent,\n} from './comm-channels-list.component';\nimport { ClassName } from '@sneat/ui';\n\n@Component({\n imports: importsForChannelsListComponent,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ClassName,\n useValue: 'ContactEmailsComponent',\n },\n ],\n selector: 'sneat-contact-emails',\n templateUrl: 'comm-channels-list.component.html',\n})\nexport class ContactEmailsComponent extends CommChannelsListComponent {\n public readonly $contact = input.required<IContactContext>();\n\n constructor() {\n super(\n 'email',\n 'Emails',\n 'email@address',\n computed(() => this.$contact().dbo?.emails),\n );\n }\n}\n","<ion-card>\n <ion-item color=\"light\" lines=\"full\" class=\"sneat-tiny-end-padding\">\n <ion-label color=\"medium\" style=\"font-weight: bold\"\n >{{ $title() }}\n </ion-label>\n <ion-buttons slot=\"end\">\n @if ($contact().dbo && !$showAddForm()) {\n <ion-button color=\"tertiary\" (click)=\"$showAddForm.set(true)\">\n <ion-icon name=\"add-outline\" slot=\"start\" />\n <ion-label>New</ion-label>\n </ion-button>\n }\n </ion-buttons>\n </ion-item>\n\n @if ($contact().dbo) {\n @for (channel of $channels(); track channel.id) {\n <sneat-comm-channel-item\n [$spaceID]=\"$contact().space.id\"\n [$contactID]=\"$contact().id\"\n [$channel]=\"channel\"\n [$channelType]=\"channelType\"\n [$lines]=\"$showAddForm() && $last ? 'full' : $last ? 'none' : undefined\"\n />\n } @empty {\n @if (!$showAddForm()) {\n <ion-item>\n <ion-label\n color=\"medium\"\n style=\"font-style: italic; font-size: smaller\"\n >\n Nothing added yet.\n </ion-label>\n <ion-buttons slot=\"start\">\n <ion-button\n fill=\"outline\"\n color=\"tertiary\"\n class=\"ion-margin-start\"\n (click)=\"$showAddForm.set(true)\"\n >Add the 1st one\n </ion-button>\n </ion-buttons>\n </ion-item>\n }\n }\n } @else {\n <ion-item lines=\"none\">\n <ion-label>Loading...</ion-label>\n </ion-item>\n }\n @if ($showAddForm()) {\n <sneat-comm-channel-form\n [$contact]=\"$contact()\"\n [$channelType]=\"channelType\"\n [$placeholder]=\"$placeholder()\"\n (closeForm)=\"$showAddForm.set(false)\"\n />\n }\n</ion-card>\n"]}
@@ -0,0 +1,30 @@
1
+ import { ChangeDetectionStrategy, Component, computed, input, } from '@angular/core';
2
+ import { CommChannelsListComponent, importsForChannelsListComponent, } from './comm-channels-list.component';
3
+ import { ClassName } from '@sneat/ui';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ionic/angular/standalone";
6
+ import * as i2 from "./comm-channel-item.component";
7
+ import * as i3 from "./comm-channel-form.component";
8
+ export class ContactPhonesComponent extends CommChannelsListComponent {
9
+ constructor() {
10
+ super('phone', 'Phones', 'Phone #', computed(() => this.$contact().dbo?.phones));
11
+ this.$contact = input.required(...(ngDevMode ? [{ debugName: "$contact" }] : []));
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactPhonesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: ContactPhonesComponent, isStandalone: true, selector: "sneat-contact-phones", inputs: { $contact: { classPropertyName: "$contact", publicName: "$contact", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
15
+ {
16
+ provide: ClassName,
17
+ useValue: 'ContactPhonesComponent',
18
+ },
19
+ ], usesInheritance: true, ngImport: i0, template: "<ion-card>\n <ion-item color=\"light\" lines=\"full\" class=\"sneat-tiny-end-padding\">\n <ion-label color=\"medium\" style=\"font-weight: bold\"\n >{{ $title() }}\n </ion-label>\n <ion-buttons slot=\"end\">\n @if ($contact().dbo && !$showAddForm()) {\n <ion-button color=\"tertiary\" (click)=\"$showAddForm.set(true)\">\n <ion-icon name=\"add-outline\" slot=\"start\" />\n <ion-label>New</ion-label>\n </ion-button>\n }\n </ion-buttons>\n </ion-item>\n\n @if ($contact().dbo) {\n @for (channel of $channels(); track channel.id) {\n <sneat-comm-channel-item\n [$spaceID]=\"$contact().space.id\"\n [$contactID]=\"$contact().id\"\n [$channel]=\"channel\"\n [$channelType]=\"channelType\"\n [$lines]=\"$showAddForm() && $last ? 'full' : $last ? 'none' : undefined\"\n />\n } @empty {\n @if (!$showAddForm()) {\n <ion-item>\n <ion-label\n color=\"medium\"\n style=\"font-style: italic; font-size: smaller\"\n >\n Nothing added yet.\n </ion-label>\n <ion-buttons slot=\"start\">\n <ion-button\n fill=\"outline\"\n color=\"tertiary\"\n class=\"ion-margin-start\"\n (click)=\"$showAddForm.set(true)\"\n >Add the 1st one\n </ion-button>\n </ion-buttons>\n </ion-item>\n }\n }\n } @else {\n <ion-item lines=\"none\">\n <ion-label>Loading...</ion-label>\n </ion-item>\n }\n @if ($showAddForm()) {\n <sneat-comm-channel-form\n [$contact]=\"$contact()\"\n [$channelType]=\"channelType\"\n [$placeholder]=\"$placeholder()\"\n (closeForm)=\"$showAddForm.set(false)\"\n />\n }\n</ion-card>\n", dependencies: [{ kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.CommChannelItemComponent, selector: "sneat-comm-channel-item", inputs: ["$channelType", "$channel", "$contactID", "$spaceID", "$lines"] }, { kind: "component", type: i3.CommChannelFormComponent, selector: "sneat-comm-channel-form", inputs: ["$contact", "$channelType", "$placeholder"], outputs: ["closeForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactPhonesComponent, decorators: [{
22
+ type: Component,
23
+ args: [{ imports: importsForChannelsListComponent, providers: [
24
+ {
25
+ provide: ClassName,
26
+ useValue: 'ContactPhonesComponent',
27
+ },
28
+ ], changeDetection: ChangeDetectionStrategy.OnPush, selector: 'sneat-contact-phones', template: "<ion-card>\n <ion-item color=\"light\" lines=\"full\" class=\"sneat-tiny-end-padding\">\n <ion-label color=\"medium\" style=\"font-weight: bold\"\n >{{ $title() }}\n </ion-label>\n <ion-buttons slot=\"end\">\n @if ($contact().dbo && !$showAddForm()) {\n <ion-button color=\"tertiary\" (click)=\"$showAddForm.set(true)\">\n <ion-icon name=\"add-outline\" slot=\"start\" />\n <ion-label>New</ion-label>\n </ion-button>\n }\n </ion-buttons>\n </ion-item>\n\n @if ($contact().dbo) {\n @for (channel of $channels(); track channel.id) {\n <sneat-comm-channel-item\n [$spaceID]=\"$contact().space.id\"\n [$contactID]=\"$contact().id\"\n [$channel]=\"channel\"\n [$channelType]=\"channelType\"\n [$lines]=\"$showAddForm() && $last ? 'full' : $last ? 'none' : undefined\"\n />\n } @empty {\n @if (!$showAddForm()) {\n <ion-item>\n <ion-label\n color=\"medium\"\n style=\"font-style: italic; font-size: smaller\"\n >\n Nothing added yet.\n </ion-label>\n <ion-buttons slot=\"start\">\n <ion-button\n fill=\"outline\"\n color=\"tertiary\"\n class=\"ion-margin-start\"\n (click)=\"$showAddForm.set(true)\"\n >Add the 1st one\n </ion-button>\n </ion-buttons>\n </ion-item>\n }\n }\n } @else {\n <ion-item lines=\"none\">\n <ion-label>Loading...</ion-label>\n </ion-item>\n }\n @if ($showAddForm()) {\n <sneat-comm-channel-form\n [$contact]=\"$contact()\"\n [$channelType]=\"channelType\"\n [$placeholder]=\"$placeholder()\"\n (closeForm)=\"$showAddForm.set(false)\"\n />\n }\n</ion-card>\n" }]
29
+ }], ctorParameters: () => [], propDecorators: { $contact: [{ type: i0.Input, args: [{ isSignal: true, alias: "$contact", required: true }] }] } });
30
+ //# sourceMappingURL=contact-phones.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-phones.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-comm-channels/contact-phones.component.ts","../../../../../../../../libs/contactus/shared/src/lib/components/contact-comm-channels/comm-channels-list.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,KAAK,GACN,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;;;;;AActC,MAAM,OAAO,sBAAuB,SAAQ,yBAAyB;IAGnE;QACE,KAAK,CACH,OAAO,EACP,QAAQ,EACR,SAAS,EACT,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAC5C,CAAC;QARY,aAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAmB,CAAC;IAS7D,CAAC;8GAVU,sBAAsB;kGAAtB,sBAAsB,+MAVtB;YACT;gBACE,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,wBAAwB;aACnC;SACF,iDCpBH,gyDA2DA;;2FDlCa,sBAAsB;kBAZlC,SAAS;8BACC,+BAA+B,aAC7B;wBACT;4BACE,OAAO,EAAE,SAAS;4BAClB,QAAQ,EAAE,wBAAwB;yBACnC;qBACF,mBACgB,uBAAuB,CAAC,MAAM,YACrC,sBAAsB","sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport { IContactContext } from '@sneat/contactus-core';\nimport {\n CommChannelsListComponent,\n importsForChannelsListComponent,\n} from './comm-channels-list.component';\nimport { ClassName } from '@sneat/ui';\n\n@Component({\n imports: importsForChannelsListComponent,\n providers: [\n {\n provide: ClassName,\n useValue: 'ContactPhonesComponent',\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'sneat-contact-phones',\n templateUrl: 'comm-channels-list.component.html',\n})\nexport class ContactPhonesComponent extends CommChannelsListComponent {\n public readonly $contact = input.required<IContactContext>();\n\n constructor() {\n super(\n 'phone',\n 'Phones',\n 'Phone #',\n computed(() => this.$contact().dbo?.phones),\n );\n }\n}\n","<ion-card>\n <ion-item color=\"light\" lines=\"full\" class=\"sneat-tiny-end-padding\">\n <ion-label color=\"medium\" style=\"font-weight: bold\"\n >{{ $title() }}\n </ion-label>\n <ion-buttons slot=\"end\">\n @if ($contact().dbo && !$showAddForm()) {\n <ion-button color=\"tertiary\" (click)=\"$showAddForm.set(true)\">\n <ion-icon name=\"add-outline\" slot=\"start\" />\n <ion-label>New</ion-label>\n </ion-button>\n }\n </ion-buttons>\n </ion-item>\n\n @if ($contact().dbo) {\n @for (channel of $channels(); track channel.id) {\n <sneat-comm-channel-item\n [$spaceID]=\"$contact().space.id\"\n [$contactID]=\"$contact().id\"\n [$channel]=\"channel\"\n [$channelType]=\"channelType\"\n [$lines]=\"$showAddForm() && $last ? 'full' : $last ? 'none' : undefined\"\n />\n } @empty {\n @if (!$showAddForm()) {\n <ion-item>\n <ion-label\n color=\"medium\"\n style=\"font-style: italic; font-size: smaller\"\n >\n Nothing added yet.\n </ion-label>\n <ion-buttons slot=\"start\">\n <ion-button\n fill=\"outline\"\n color=\"tertiary\"\n class=\"ion-margin-start\"\n (click)=\"$showAddForm.set(true)\"\n >Add the 1st one\n </ion-button>\n </ion-buttons>\n </ion-item>\n }\n }\n } @else {\n <ion-item lines=\"none\">\n <ion-label>Loading...</ion-label>\n </ion-item>\n }\n @if ($showAddForm()) {\n <sneat-comm-channel-form\n [$contact]=\"$contact()\"\n [$channelType]=\"channelType\"\n [$placeholder]=\"$placeholder()\"\n (closeForm)=\"$showAddForm.set(false)\"\n />\n }\n</ion-card>\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './contact-comm-channels.component';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-comm-channels/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC","sourcesContent":["export * from './contact-comm-channels.component';\n"]}
@@ -0,0 +1,235 @@
1
+ import { Component, computed, EventEmitter, inject, input, Output, } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { IonBadge, IonButton, IonButtons, IonCard, IonCol, IonGrid, IonIcon, IonItem, IonLabel, IonList, IonRow, IonSegment, IonSegmentButton, IonText, ModalController, } from '@ionic/angular/standalone';
4
+ import { SneatUserService } from '@sneat/auth-core';
5
+ import { getRelatedItemByKey, } from '@sneat/dto';
6
+ import { WithSpaceInput } from '@sneat/space-services';
7
+ import { ClassName } from '@sneat/ui';
8
+ import { ContactNamesModalComponent } from '../../modals/contact-names-modal/contact-names-modal.component';
9
+ import { ContactTitlePipe } from '../../pipes';
10
+ import { UserSpaceBriefProvider } from '../../providers/user-space-brief.provider';
11
+ import { ContactCommChannelsComponent } from '../contact-comm-channels';
12
+ import { ContactDobComponent } from '../contact-dob';
13
+ import { ContactRelationshipFormComponent } from '../contact-forms/relationship-form/contact-relationship-form.component';
14
+ import { ContactLocationsComponent } from '../contact-locations';
15
+ import { ContactModulesMenuComponent } from '../contact-modules-menu';
16
+ import { ContactRolesInputComponent } from '../contact-roles-input';
17
+ import { GenderFormComponent } from '../contact-forms';
18
+ import { RelatedContactsComponent } from './related-contacts.component';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "@angular/forms";
21
+ export class ContactDetailsComponent extends WithSpaceInput {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.$contact = input.required(...(ngDevMode ? [{ debugName: "$contact" }] : []));
25
+ this.$contactID = computed(() => this.$contact()?.id, ...(ngDevMode ? [{ debugName: "$contactID" }] : []));
26
+ this.contactChange = new EventEmitter();
27
+ // protected readonly $relatedTo = computed<IRelatedTo | undefined>(() => {
28
+ // const key = this.$relatedToContactOfCurrentUser(),
29
+ // contact = this.$contact();
30
+ // if (!key || !contact?.dbo) {
31
+ // return undefined;
32
+ // }
33
+ // return {
34
+ // key,
35
+ // title: '',
36
+ // related: contact.dbo.related || {},
37
+ // };
38
+ // });
39
+ this.$relatedTo = computed(() => {
40
+ const contact = this.$contact();
41
+ const userSpaceContactID = this.$userSpaceContactID();
42
+ if (!contact?.id || !userSpaceContactID) {
43
+ return undefined;
44
+ }
45
+ return {
46
+ key: {
47
+ spaceID: this.$spaceID(),
48
+ module: 'contactus',
49
+ collection: 'contacts',
50
+ itemID: userSpaceContactID,
51
+ },
52
+ related: contact.dbo ? contact.dbo.related || {} : undefined,
53
+ title: '', // pass empty string as we don't want to display name of the contact twice
54
+ };
55
+ }, ...(ngDevMode ? [{ debugName: "$relatedTo" }] : []));
56
+ this.$showRolesTab = computed(() => this.$spaceType() !== 'family', ...(ngDevMode ? [{ debugName: "$showRolesTab" }] : []));
57
+ this.$isMember = computed(() => !!this.$contact()?.brief?.roles?.includes('member'), ...(ngDevMode ? [{ debugName: "$isMember" }] : []));
58
+ this.modalController = inject(ModalController);
59
+ this.$contactWithBriefAndOptionalDbo = computed(() => {
60
+ const contact = this.$contact();
61
+ return contact?.brief
62
+ ? contact
63
+ : undefined;
64
+ }, ...(ngDevMode ? [{ debugName: "$contactWithBriefAndOptionalDbo" }] : []));
65
+ this.tab = 'peers';
66
+ this.userService = inject(SneatUserService);
67
+ // this.setRelatedToCurrentUser();
68
+ // this.setRelatedAs(spaceID, this.userContactID);
69
+ this.userSpaceBrief = new UserSpaceBriefProvider(this.destroyed$, this.$spaceID, this.userService);
70
+ this.$userSpaceContactID = this.userSpaceBrief.$userContactID;
71
+ this.$relatedToContactOfCurrentUser = computed(() => {
72
+ const userContactID = this.userSpaceBrief.$userContactID();
73
+ return userContactID
74
+ ? {
75
+ module: 'contactus',
76
+ collection: 'contacts',
77
+ spaceID: this.$spaceID() || '',
78
+ itemID: userContactID,
79
+ }
80
+ : undefined;
81
+ }, ...(ngDevMode ? [{ debugName: "$relatedToContactOfCurrentUser" }] : []));
82
+ this.$rolesOfItem = computed(() => {
83
+ const spaceID = this.$spaceID();
84
+ const contact = this.$contact();
85
+ const userContactID = this.userSpaceBrief.$userContactID();
86
+ if (!contact || !userContactID || !spaceID) {
87
+ return undefined;
88
+ }
89
+ const relatedContact = getRelatedItemByKey(contact.dbo?.related, {
90
+ module: 'contactus',
91
+ collection: 'contacts',
92
+ spaceID,
93
+ itemID: userContactID,
94
+ });
95
+ return relatedContact?.rolesOfItem;
96
+ }, ...(ngDevMode ? [{ debugName: "$rolesOfItem" }] : []));
97
+ this.$relatedToUserAs = computed(() => {
98
+ const relationshipIDs = Object.keys(this.$rolesOfItem() || {});
99
+ if (relationshipIDs.length === 0) {
100
+ return undefined;
101
+ }
102
+ if (relationshipIDs.includes('child')) {
103
+ return 'child';
104
+ }
105
+ if (relationshipIDs.includes('spouse')) {
106
+ return 'spouse';
107
+ }
108
+ return undefined;
109
+ }, ...(ngDevMode ? [{ debugName: "$relatedToUserAs" }] : []));
110
+ this.$relatedToUserAsBadgeText = computed(() => {
111
+ const contact = this.$contact();
112
+ const relatedToUserAs = this.$relatedToUserAs();
113
+ if (contact?.brief?.gender && relatedToUserAs) {
114
+ switch (relatedToUserAs) {
115
+ case 'child':
116
+ switch (contact.brief.gender) {
117
+ case 'male':
118
+ return 'My son';
119
+ case 'female':
120
+ return 'My daughter';
121
+ }
122
+ break;
123
+ case 'spouse':
124
+ switch (contact.brief.gender) {
125
+ case 'male':
126
+ return 'My husband';
127
+ case 'female':
128
+ return 'My wife';
129
+ }
130
+ break;
131
+ }
132
+ }
133
+ return undefined;
134
+ }, ...(ngDevMode ? [{ debugName: "$relatedToUserAsBadgeText" }] : []));
135
+ }
136
+ get currentUserID() {
137
+ return this.userService.currentUserID;
138
+ }
139
+ hideForContactTypes(contactTypes) {
140
+ const contact = this.$contact();
141
+ return !!contact?.brief?.type && !contactTypes.includes(contact.brief.type);
142
+ }
143
+ get currentUserId() {
144
+ return this.userService.currentUserID;
145
+ }
146
+ // protected goMember(id: string): void {
147
+ // const space = this.$space();
148
+ // if (!space) {
149
+ // throw new Error('Can not navigate to member without team context');
150
+ // }
151
+ // this.spaceNavService.navigateToMember(this.navController, {
152
+ // id,
153
+ // space,
154
+ // });
155
+ // }
156
+ // protected addRelatedContact(event: Event): void {
157
+ // event.stopPropagation();
158
+ // alert('Not implemented yet');
159
+ // }
160
+ async openEditNamesDialog() {
161
+ const contact = this.$contact();
162
+ if (!contact) {
163
+ throw new Error('this.$contact() is not set');
164
+ }
165
+ const modal = await this.modalController.create({
166
+ component: ContactNamesModalComponent,
167
+ componentProps: {
168
+ spaceID: this.$spaceID(),
169
+ contactID: contact.id,
170
+ names: contact.dbo?.names,
171
+ },
172
+ });
173
+ await modal.present();
174
+ }
175
+ newUpdateContactRequest() {
176
+ const contactID = this.$contact()?.id;
177
+ const spaceID = this.$spaceID();
178
+ if (!contactID || !spaceID) {
179
+ throw new Error('ContactDetailsComponent.newUpdateContactRequest() - contactID or spaceID is not set');
180
+ }
181
+ return { spaceID, contactID };
182
+ }
183
+ onGenderChanged(gender) {
184
+ const contact = this.$contact();
185
+ if (!contact) {
186
+ throw new Error('Contact is not set');
187
+ }
188
+ if (contact.dbo) {
189
+ this.contactChange.emit({
190
+ ...contact,
191
+ dbo: { ...contact.dbo, gender },
192
+ });
193
+ }
194
+ }
195
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactDetailsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
196
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: ContactDetailsComponent, isStandalone: true, selector: "sneat-contact-details", inputs: { $contact: { classPropertyName: "$contact", publicName: "$contact", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { contactChange: "contactChange" }, providers: [
197
+ { provide: ClassName, useValue: 'ContactDetailsComponent' },
198
+ ModalController,
199
+ ], usesInheritance: true, ngImport: i0, template: "@let contact = $contact();\n\n<!--<p>$contact().dbo: {{ $contact()?.dbo|json }}</p>-->\n\n<!--<p>$relatedToContactOfCurrentUser: {{ $relatedToContactOfCurrentUser()|json }};</p>-->\n\n<ion-grid class=\"ion-grid-layout\">\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-item class=\"sneat-no-end-padding\">\n <ion-label style=\"font-weight: bold\">\n @if (contact?.brief?.gender) {\n <span class=\"ion-margin-end\">\n @switch (contact?.brief?.gender) {\n @case (\"male\") {\n \uD83E\uDDD1\n }\n @case (\"female\") {\n \uD83D\uDC69\n }\n @default {\n <ion-icon name=\"person\" />\n }\n }\n </span>\n {{\n (contact | contactTitle) ||\n contact?.brief?.shortTitle ||\n (contact?.brief?.userID === currentUserId\n ? \"Me\"\n : \"(no title)\")\n }}\n }\n @if ($relatedToUserAsBadgeText(); as text) {\n <ion-badge color=\"light\" class=\"ion-margin-start\">\n <ion-text color=\"medium\" style=\"font-weight: normal\"\n >{{ text }}\n </ion-text>\n </ion-badge>\n }\n </ion-label>\n <ion-buttons slot=\"end\">\n <ion-button\n color=\"medium\"\n title=\"Edit names\"\n (click)=\"openEditNamesDialog()\"\n >\n <ion-icon name=\"create\" />\n </ion-button>\n </ion-buttons>\n </ion-item>\n <sneat-contact-dob [$contact]=\"$contact()\" />\n </ion-card>\n\n <ion-card>\n <sneat-gender-form\n lastItemLines=\"none\"\n [hideSkipButton]=\"false\"\n [$spaceID]=\"$spaceID()\"\n [$contactID]=\"contact.id\"\n [$genderID]=\"contact.dbo?.gender\"\n (genderChange)=\"onGenderChanged($event)\"\n />\n </ion-card>\n\n @if ($isMember() && contact?.brief?.userID !== currentUserID) {\n <sneat-contact-relationship-form\n [$contactID]=\"$contactID()\"\n [$userSpaceContactID]=\"$userSpaceContactID()\"\n [$space]=\"$space()\"\n [$relatedTo]=\"$relatedTo()\"\n [$ageGroup]=\"contact?.brief?.ageGroup\"\n />\n }\n </ion-col>\n <ion-col>\n <ion-card>\n <ion-list>\n <sneat-contact-modules-menu\n [$space]=\"$space()\"\n [contact]=\"$contactWithBriefAndOptionalDbo()\"\n />\n </ion-list>\n </ion-card>\n </ion-col>\n </ion-row>\n</ion-grid>\n\n<div class=\"ion-padding-horizontal\">\n <ion-segment color=\"primary\" [(ngModel)]=\"tab\">\n <ion-segment-button value=\"peers\"> Peers</ion-segment-button>\n @if (hideForContactTypes([\"pet\"])) {\n <ion-segment-button value=\"communicationChannels\">\n Email/Phone\n </ion-segment-button>\n @if ($showRolesTab()) {\n <ion-segment-button value=\"roles\"> Roles</ion-segment-button>\n }\n <ion-segment-button value=\"locations\"> Locations</ion-segment-button>\n }\n </ion-segment>\n</div>\n\n@switch (tab) {\n @case (\"communicationChannels\") {\n <sneat-contact-comm-channels [$contact]=\"$contact()\" />\n }\n @case (\"peers\") {\n <sneat-related-contacts [$space]=\"$space()\" [$relatedTo]=\"$relatedTo()\" />\n }\n @case (\"locations\") {\n <sneat-contact-locations\n [$space]=\"$space()\"\n [contact]=\"$contactWithBriefAndOptionalDbo()\"\n />\n }\n @case (\"roles\") {\n <sneat-contact-roles-input\n [space]=\"$space()\"\n [contact]=\"$contactWithBriefAndOptionalDbo()\"\n />\n }\n}\n", dependencies: [{ kind: "component", type: ContactDobComponent, selector: "sneat-contact-dob", inputs: ["$contact"] }, { kind: "component", type: ContactModulesMenuComponent, selector: "sneat-contact-modules-menu", inputs: ["contact"] }, { kind: "component", type: ContactCommChannelsComponent, selector: "sneat-contact-comm-channels", inputs: ["$contact"] }, { kind: "component", type: ContactRolesInputComponent, selector: "sneat-contact-roles-input", inputs: ["space", "contact"] }, { kind: "component", type: ContactLocationsComponent, selector: "sneat-contact-locations", inputs: ["$space", "contact"] }, { kind: "component", type: GenderFormComponent, selector: "sneat-gender-form", inputs: ["lastItemLines", "hideSkipButton", "disabled", "$spaceID", "$contactID", "$genderID"], outputs: ["genderChange"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { kind: "component", type: IonSegmentButton, selector: "ion-segment-button", inputs: ["contentId", "disabled", "layout", "mode", "type", "value"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: RelatedContactsComponent, selector: "sneat-related-contacts", inputs: ["$relatedTo"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: ContactRelationshipFormComponent, selector: "sneat-contact-relationship-form", inputs: ["$contactID", "$ageGroup", "$relatedTo", "$userSpaceContactID", "isActive", "disabled"], outputs: ["relatedAsChange"] }, { kind: "pipe", type: ContactTitlePipe, name: "contactTitle" }] }); }
200
+ }
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactDetailsComponent, decorators: [{
202
+ type: Component,
203
+ args: [{ imports: [
204
+ ContactDobComponent,
205
+ ContactModulesMenuComponent,
206
+ ContactCommChannelsComponent,
207
+ ContactRolesInputComponent,
208
+ ContactLocationsComponent,
209
+ GenderFormComponent,
210
+ ContactTitlePipe,
211
+ IonGrid,
212
+ IonRow,
213
+ IonCol,
214
+ IonCard,
215
+ IonItem,
216
+ IonLabel,
217
+ IonButtons,
218
+ IonButton,
219
+ IonIcon,
220
+ IonList,
221
+ IonSegment,
222
+ IonSegmentButton,
223
+ FormsModule,
224
+ RelatedContactsComponent,
225
+ IonBadge,
226
+ IonText,
227
+ ContactRelationshipFormComponent,
228
+ ], selector: 'sneat-contact-details', providers: [
229
+ { provide: ClassName, useValue: 'ContactDetailsComponent' },
230
+ ModalController,
231
+ ], template: "@let contact = $contact();\n\n<!--<p>$contact().dbo: {{ $contact()?.dbo|json }}</p>-->\n\n<!--<p>$relatedToContactOfCurrentUser: {{ $relatedToContactOfCurrentUser()|json }};</p>-->\n\n<ion-grid class=\"ion-grid-layout\">\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-item class=\"sneat-no-end-padding\">\n <ion-label style=\"font-weight: bold\">\n @if (contact?.brief?.gender) {\n <span class=\"ion-margin-end\">\n @switch (contact?.brief?.gender) {\n @case (\"male\") {\n \uD83E\uDDD1\n }\n @case (\"female\") {\n \uD83D\uDC69\n }\n @default {\n <ion-icon name=\"person\" />\n }\n }\n </span>\n {{\n (contact | contactTitle) ||\n contact?.brief?.shortTitle ||\n (contact?.brief?.userID === currentUserId\n ? \"Me\"\n : \"(no title)\")\n }}\n }\n @if ($relatedToUserAsBadgeText(); as text) {\n <ion-badge color=\"light\" class=\"ion-margin-start\">\n <ion-text color=\"medium\" style=\"font-weight: normal\"\n >{{ text }}\n </ion-text>\n </ion-badge>\n }\n </ion-label>\n <ion-buttons slot=\"end\">\n <ion-button\n color=\"medium\"\n title=\"Edit names\"\n (click)=\"openEditNamesDialog()\"\n >\n <ion-icon name=\"create\" />\n </ion-button>\n </ion-buttons>\n </ion-item>\n <sneat-contact-dob [$contact]=\"$contact()\" />\n </ion-card>\n\n <ion-card>\n <sneat-gender-form\n lastItemLines=\"none\"\n [hideSkipButton]=\"false\"\n [$spaceID]=\"$spaceID()\"\n [$contactID]=\"contact.id\"\n [$genderID]=\"contact.dbo?.gender\"\n (genderChange)=\"onGenderChanged($event)\"\n />\n </ion-card>\n\n @if ($isMember() && contact?.brief?.userID !== currentUserID) {\n <sneat-contact-relationship-form\n [$contactID]=\"$contactID()\"\n [$userSpaceContactID]=\"$userSpaceContactID()\"\n [$space]=\"$space()\"\n [$relatedTo]=\"$relatedTo()\"\n [$ageGroup]=\"contact?.brief?.ageGroup\"\n />\n }\n </ion-col>\n <ion-col>\n <ion-card>\n <ion-list>\n <sneat-contact-modules-menu\n [$space]=\"$space()\"\n [contact]=\"$contactWithBriefAndOptionalDbo()\"\n />\n </ion-list>\n </ion-card>\n </ion-col>\n </ion-row>\n</ion-grid>\n\n<div class=\"ion-padding-horizontal\">\n <ion-segment color=\"primary\" [(ngModel)]=\"tab\">\n <ion-segment-button value=\"peers\"> Peers</ion-segment-button>\n @if (hideForContactTypes([\"pet\"])) {\n <ion-segment-button value=\"communicationChannels\">\n Email/Phone\n </ion-segment-button>\n @if ($showRolesTab()) {\n <ion-segment-button value=\"roles\"> Roles</ion-segment-button>\n }\n <ion-segment-button value=\"locations\"> Locations</ion-segment-button>\n }\n </ion-segment>\n</div>\n\n@switch (tab) {\n @case (\"communicationChannels\") {\n <sneat-contact-comm-channels [$contact]=\"$contact()\" />\n }\n @case (\"peers\") {\n <sneat-related-contacts [$space]=\"$space()\" [$relatedTo]=\"$relatedTo()\" />\n }\n @case (\"locations\") {\n <sneat-contact-locations\n [$space]=\"$space()\"\n [contact]=\"$contactWithBriefAndOptionalDbo()\"\n />\n }\n @case (\"roles\") {\n <sneat-contact-roles-input\n [space]=\"$space()\"\n [contact]=\"$contactWithBriefAndOptionalDbo()\"\n />\n }\n}\n" }]
232
+ }], propDecorators: { $contact: [{ type: i0.Input, args: [{ isSignal: true, alias: "$contact", required: true }] }], contactChange: [{
233
+ type: Output
234
+ }] } });
235
+ //# sourceMappingURL=contact-details.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-details.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-details/contact-details.component.ts","../../../../../../../../libs/contactus/shared/src/lib/components/contact-details/contact-details.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n computed,\n EventEmitter,\n inject,\n input,\n Output,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n IonBadge,\n IonButton,\n IonButtons,\n IonCard,\n IonCol,\n IonGrid,\n IonIcon,\n IonItem,\n IonLabel,\n IonList,\n IonRow,\n IonSegment,\n IonSegmentButton,\n IonText,\n ModalController,\n} from '@ionic/angular/standalone';\nimport { SneatUserService } from '@sneat/auth-core';\nimport { IUpdateContactRequest } from '@sneat/contactus-services';\nimport { Gender, IIdAndBriefAndOptionalDbo } from '@sneat/core';\nimport {\n ContactType,\n IContactBrief,\n IContactDbo,\n IContactContext,\n IContactWithOptionalDbo,\n} from '@sneat/contactus-core';\nimport {\n getRelatedItemByKey,\n IRelatedTo,\n ISpaceModuleItemRef,\n} from '@sneat/dto';\nimport { WithSpaceInput } from '@sneat/space-services';\nimport { ClassName } from '@sneat/ui';\nimport { ContactNamesModalComponent } from '../../modals/contact-names-modal/contact-names-modal.component';\nimport { ContactTitlePipe } from '../../pipes';\nimport { UserSpaceBriefProvider } from '../../providers/user-space-brief.provider';\nimport { ContactCommChannelsComponent } from '../contact-comm-channels';\nimport { ContactDobComponent } from '../contact-dob';\nimport { ContactRelationshipFormComponent } from '../contact-forms/relationship-form/contact-relationship-form.component';\nimport { ContactLocationsComponent } from '../contact-locations';\nimport { ContactModulesMenuComponent } from '../contact-modules-menu';\nimport { ContactRolesInputComponent } from '../contact-roles-input';\nimport { GenderFormComponent } from '../contact-forms';\nimport { RelatedContactsComponent } from './related-contacts.component';\n\n@Component({\n imports: [\n ContactDobComponent,\n ContactModulesMenuComponent,\n ContactCommChannelsComponent,\n ContactRolesInputComponent,\n ContactLocationsComponent,\n GenderFormComponent,\n ContactTitlePipe,\n IonGrid,\n IonRow,\n IonCol,\n IonCard,\n IonItem,\n IonLabel,\n IonButtons,\n IonButton,\n IonIcon,\n IonList,\n IonSegment,\n IonSegmentButton,\n FormsModule,\n RelatedContactsComponent,\n IonBadge,\n IonText,\n ContactRelationshipFormComponent,\n ],\n selector: 'sneat-contact-details',\n templateUrl: './contact-details.component.html',\n providers: [\n { provide: ClassName, useValue: 'ContactDetailsComponent' },\n ModalController,\n ],\n})\nexport class ContactDetailsComponent extends WithSpaceInput {\n public readonly $contact = input.required<IContactContext>();\n protected readonly $contactID = computed(() => this.$contact()?.id);\n\n @Output() readonly contactChange = new EventEmitter<\n IContactContext | undefined\n >();\n\n // protected readonly $relatedTo = computed<IRelatedTo | undefined>(() => {\n // \tconst key = this.$relatedToContactOfCurrentUser(),\n // \t\tcontact = this.$contact();\n // \tif (!key || !contact?.dbo) {\n // \t\treturn undefined;\n // \t}\n // \treturn {\n // \t\tkey,\n // \t\ttitle: '',\n // \t\trelated: contact.dbo.related || {},\n // \t};\n // });\n\n protected readonly $relatedTo = computed<IRelatedTo | undefined>(() => {\n const contact = this.$contact();\n const userSpaceContactID = this.$userSpaceContactID();\n if (!contact?.id || !userSpaceContactID) {\n return undefined;\n }\n return {\n key: {\n spaceID: this.$spaceID(),\n module: 'contactus',\n collection: 'contacts',\n itemID: userSpaceContactID,\n },\n related: contact.dbo ? contact.dbo.related || {} : undefined,\n title: '', // pass empty string as we don't want to display name of the contact twice\n };\n });\n\n protected readonly $showRolesTab = computed(\n () => this.$spaceType() !== 'family',\n );\n\n protected readonly $isMember = computed(\n () => !!this.$contact()?.brief?.roles?.includes('member'),\n );\n\n private readonly modalController = inject(ModalController);\n\n protected readonly $contactWithBriefAndOptionalDbo = computed<\n IContactWithOptionalDbo | undefined\n >(() => {\n const contact = this.$contact();\n return contact?.brief\n ? (contact as IIdAndBriefAndOptionalDbo<IContactBrief, IContactDbo>)\n : undefined;\n });\n\n protected tab: 'communicationChannels' | 'roles' | 'peers' | 'locations' =\n 'peers';\n\n private readonly userService = inject(SneatUserService);\n\n // this.setRelatedToCurrentUser();\n // this.setRelatedAs(spaceID, this.userContactID);\n private readonly userSpaceBrief = new UserSpaceBriefProvider(\n this.destroyed$,\n this.$spaceID,\n this.userService,\n );\n\n protected $userSpaceContactID = this.userSpaceBrief.$userContactID;\n\n protected readonly $relatedToContactOfCurrentUser = computed<\n ISpaceModuleItemRef | undefined\n >(() => {\n const userContactID = this.userSpaceBrief.$userContactID();\n return userContactID\n ? {\n module: 'contactus',\n collection: 'contacts',\n spaceID: this.$spaceID() || '',\n itemID: userContactID,\n }\n : undefined;\n });\n\n protected readonly $rolesOfItem = computed(() => {\n const spaceID = this.$spaceID();\n const contact = this.$contact();\n const userContactID = this.userSpaceBrief.$userContactID();\n if (!contact || !userContactID || !spaceID) {\n return undefined;\n }\n const relatedContact = getRelatedItemByKey(contact.dbo?.related, {\n module: 'contactus',\n collection: 'contacts',\n spaceID,\n itemID: userContactID,\n });\n return relatedContact?.rolesOfItem;\n });\n\n protected readonly $relatedToUserAs = computed(() => {\n const relationshipIDs = Object.keys(this.$rolesOfItem() || {});\n if (relationshipIDs.length === 0) {\n return undefined;\n }\n if (relationshipIDs.includes('child')) {\n return 'child';\n }\n if (relationshipIDs.includes('spouse')) {\n return 'spouse';\n }\n return undefined;\n });\n\n protected readonly $relatedToUserAsBadgeText = computed(() => {\n const contact = this.$contact();\n const relatedToUserAs = this.$relatedToUserAs();\n if (contact?.brief?.gender && relatedToUserAs) {\n switch (relatedToUserAs) {\n case 'child':\n switch (contact.brief.gender) {\n case 'male':\n return 'My son';\n case 'female':\n return 'My daughter';\n }\n break;\n case 'spouse':\n switch (contact.brief.gender) {\n case 'male':\n return 'My husband';\n case 'female':\n return 'My wife';\n }\n break;\n }\n }\n return undefined;\n });\n\n protected get currentUserID() {\n return this.userService.currentUserID;\n }\n\n protected hideForContactTypes(contactTypes: ContactType[]): boolean {\n const contact = this.$contact();\n return !!contact?.brief?.type && !contactTypes.includes(contact.brief.type);\n }\n\n protected get currentUserId() {\n return this.userService.currentUserID;\n }\n\n // protected goMember(id: string): void {\n // \tconst space = this.$space();\n // \tif (!space) {\n // \t\tthrow new Error('Can not navigate to member without team context');\n // \t}\n // \tthis.spaceNavService.navigateToMember(this.navController, {\n // \t\tid,\n // \t\tspace,\n // \t});\n // }\n\n // protected addRelatedContact(event: Event): void {\n // \tevent.stopPropagation();\n // \talert('Not implemented yet');\n // }\n\n protected async openEditNamesDialog(): Promise<void> {\n const contact = this.$contact();\n if (!contact) {\n throw new Error('this.$contact() is not set');\n }\n const modal = await this.modalController.create({\n component: ContactNamesModalComponent,\n componentProps: {\n spaceID: this.$spaceID(),\n contactID: contact.id,\n names: contact.dbo?.names,\n },\n });\n await modal.present();\n }\n\n private newUpdateContactRequest(): IUpdateContactRequest {\n const contactID = this.$contact()?.id;\n const spaceID = this.$spaceID();\n if (!contactID || !spaceID) {\n throw new Error(\n 'ContactDetailsComponent.newUpdateContactRequest() - contactID or spaceID is not set',\n );\n }\n return { spaceID, contactID };\n }\n\n protected onGenderChanged(gender: Gender): void {\n const contact = this.$contact();\n if (!contact) {\n throw new Error('Contact is not set');\n }\n if (contact.dbo) {\n this.contactChange.emit({\n ...contact,\n dbo: { ...contact.dbo, gender },\n });\n }\n }\n\n // changeGender(event: Event): void {\n // \tconst gender = (event as CustomEvent).detail.value as Gender;\n // \tconsole.debug(`CommuneMemberPageComponent.changeGender(${gender})`);\n //\n // \t// this.startCommuneReadwriteTx([CommuneKind, MemberKind], (tx, communeDto) =>\n // \t// \tthis.membersService.changeMemberPrimaryField(tx, this.memberId, { name: 'gender', value: gender }, communeDto))\n // \t// \t.subscribe({\n // \t// \t\tnext: memberDto => {\n // \t// \t\t\tthis.setMemberInfo(newCommuneMemberInfo(memberDto));\n // \t// \t\t\tthis.setMemberDto(memberDto);\n // \t// \t\t},\n // \t// \t\terror: this.params.errorLogger.logErrorHandler('Failed to set member gender'),\n // \t// \t});\n // }\n}\n","@let contact = $contact();\n\n<!--<p>$contact().dbo: {{ $contact()?.dbo|json }}</p>-->\n\n<!--<p>$relatedToContactOfCurrentUser: {{ $relatedToContactOfCurrentUser()|json }};</p>-->\n\n<ion-grid class=\"ion-grid-layout\">\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-item class=\"sneat-no-end-padding\">\n <ion-label style=\"font-weight: bold\">\n @if (contact?.brief?.gender) {\n <span class=\"ion-margin-end\">\n @switch (contact?.brief?.gender) {\n @case (\"male\") {\n 🧑\n }\n @case (\"female\") {\n 👩\n }\n @default {\n <ion-icon name=\"person\" />\n }\n }\n </span>\n {{\n (contact | contactTitle) ||\n contact?.brief?.shortTitle ||\n (contact?.brief?.userID === currentUserId\n ? \"Me\"\n : \"(no title)\")\n }}\n }\n @if ($relatedToUserAsBadgeText(); as text) {\n <ion-badge color=\"light\" class=\"ion-margin-start\">\n <ion-text color=\"medium\" style=\"font-weight: normal\"\n >{{ text }}\n </ion-text>\n </ion-badge>\n }\n </ion-label>\n <ion-buttons slot=\"end\">\n <ion-button\n color=\"medium\"\n title=\"Edit names\"\n (click)=\"openEditNamesDialog()\"\n >\n <ion-icon name=\"create\" />\n </ion-button>\n </ion-buttons>\n </ion-item>\n <sneat-contact-dob [$contact]=\"$contact()\" />\n </ion-card>\n\n <ion-card>\n <sneat-gender-form\n lastItemLines=\"none\"\n [hideSkipButton]=\"false\"\n [$spaceID]=\"$spaceID()\"\n [$contactID]=\"contact.id\"\n [$genderID]=\"contact.dbo?.gender\"\n (genderChange)=\"onGenderChanged($event)\"\n />\n </ion-card>\n\n @if ($isMember() && contact?.brief?.userID !== currentUserID) {\n <sneat-contact-relationship-form\n [$contactID]=\"$contactID()\"\n [$userSpaceContactID]=\"$userSpaceContactID()\"\n [$space]=\"$space()\"\n [$relatedTo]=\"$relatedTo()\"\n [$ageGroup]=\"contact?.brief?.ageGroup\"\n />\n }\n </ion-col>\n <ion-col>\n <ion-card>\n <ion-list>\n <sneat-contact-modules-menu\n [$space]=\"$space()\"\n [contact]=\"$contactWithBriefAndOptionalDbo()\"\n />\n </ion-list>\n </ion-card>\n </ion-col>\n </ion-row>\n</ion-grid>\n\n<div class=\"ion-padding-horizontal\">\n <ion-segment color=\"primary\" [(ngModel)]=\"tab\">\n <ion-segment-button value=\"peers\"> Peers</ion-segment-button>\n @if (hideForContactTypes([\"pet\"])) {\n <ion-segment-button value=\"communicationChannels\">\n Email/Phone\n </ion-segment-button>\n @if ($showRolesTab()) {\n <ion-segment-button value=\"roles\"> Roles</ion-segment-button>\n }\n <ion-segment-button value=\"locations\"> Locations</ion-segment-button>\n }\n </ion-segment>\n</div>\n\n@switch (tab) {\n @case (\"communicationChannels\") {\n <sneat-contact-comm-channels [$contact]=\"$contact()\" />\n }\n @case (\"peers\") {\n <sneat-related-contacts [$space]=\"$space()\" [$relatedTo]=\"$relatedTo()\" />\n }\n @case (\"locations\") {\n <sneat-contact-locations\n [$space]=\"$space()\"\n [contact]=\"$contactWithBriefAndOptionalDbo()\"\n />\n }\n @case (\"roles\") {\n <sneat-contact-roles-input\n [space]=\"$space()\"\n [contact]=\"$contactWithBriefAndOptionalDbo()\"\n />\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './contact-details.component';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-details/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC","sourcesContent":["export * from './contact-details.component';\n"]}