@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,59 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { IonCard, IonCheckbox, IonItem, IonItemDivider, IonItemGroup, IonLabel, } from '@ionic/angular/standalone';
4
+ import { formNexInAnimation } from '@sneat/core';
5
+ import { ClassName } from '@sneat/ui';
6
+ import { SpaceRelatedFormComponent } from '../space-related-form.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/forms";
9
+ export class RolesFormComponent extends SpaceRelatedFormComponent {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.isActive = false;
13
+ this.disabled = false;
14
+ this.rolesChange = new EventEmitter();
15
+ }
16
+ onSpaceTypeChanged(space) {
17
+ super.onSpaceTypeChanged(space);
18
+ switch (space?.type) {
19
+ case 'educator':
20
+ if (location.pathname.includes('staff')) {
21
+ this.roles = [
22
+ { id: 'teacher', title: 'Teacher', icon: 'person' },
23
+ { id: 'administrator', title: 'Administrator', icon: 'robot' },
24
+ ];
25
+ }
26
+ break;
27
+ default:
28
+ break;
29
+ }
30
+ }
31
+ roleChecked(event) {
32
+ event.stopPropagation();
33
+ const roles = this.roles
34
+ ?.filter((role) => role.checked)
35
+ .map((role) => role.id);
36
+ this.rolesChange.emit(roles);
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: RolesFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: RolesFormComponent, isStandalone: true, selector: "sneat-roles-form", inputs: { isActive: "isActive", disabled: "disabled" }, outputs: { rolesChange: "rolesChange" }, providers: [{ provide: ClassName, useValue: 'RolesFormComponent' }], usesInheritance: true, ngImport: i0, template: "<ion-card>\n <ion-item-divider [color]=\"isActive ? 'primary' : 'light'\">\n <ion-label>Roles</ion-label>\n </ion-item-divider>\n <ion-item>\n <ion-label color=\"medium\">Loading roles...</ion-label>\n </ion-item>\n @if (roles) {\n <ion-item-group>\n @for (role of roles; track role.id) {\n <ion-item>\n <ion-label>{{ role.title }}</ion-label>\n <ion-checkbox\n [disabled]=\"disabled\"\n [(ngModel)]=\"role.checked\"\n (ionChange)=\"roleChecked($event)\"\n >{{ role.title }}\n </ion-checkbox>\n </ion-item>\n }\n </ion-item-group>\n }\n</ion-card>\n", dependencies: [{ 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: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonItemDivider, selector: "ion-item-divider", inputs: ["color", "mode", "sticky"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { 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: IonItemGroup, selector: "ion-item-group" }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }], animations: [formNexInAnimation] }); }
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: RolesFormComponent, decorators: [{
42
+ type: Component,
43
+ args: [{ selector: 'sneat-roles-form', animations: [formNexInAnimation], imports: [
44
+ FormsModule,
45
+ IonCard,
46
+ IonItemDivider,
47
+ IonLabel,
48
+ IonItem,
49
+ IonItemGroup,
50
+ IonCheckbox,
51
+ ], providers: [{ provide: ClassName, useValue: 'RolesFormComponent' }], template: "<ion-card>\n <ion-item-divider [color]=\"isActive ? 'primary' : 'light'\">\n <ion-label>Roles</ion-label>\n </ion-item-divider>\n <ion-item>\n <ion-label color=\"medium\">Loading roles...</ion-label>\n </ion-item>\n @if (roles) {\n <ion-item-group>\n @for (role of roles; track role.id) {\n <ion-item>\n <ion-label>{{ role.title }}</ion-label>\n <ion-checkbox\n [disabled]=\"disabled\"\n [(ngModel)]=\"role.checked\"\n (ionChange)=\"roleChecked($event)\"\n >{{ role.title }}\n </ion-checkbox>\n </ion-item>\n }\n </ion-item-group>\n }\n</ion-card>\n" }]
52
+ }], propDecorators: { isActive: [{
53
+ type: Input
54
+ }], disabled: [{
55
+ type: Input
56
+ }], rolesChange: [{
57
+ type: Output
58
+ }] } });
59
+ //# sourceMappingURL=roles-form.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles-form.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/contactus/shared/src/lib/components/contact-forms/roles-form/roles-form.component.ts","../../../../../../../../../libs/contactus/shared/src/lib/components/contact-forms/roles-form/roles-form.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,OAAO,EACP,WAAW,EACX,OAAO,EACP,cAAc,EACd,YAAY,EACZ,QAAQ,GACT,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;;;AAwB5E,MAAM,OAAO,kBAAmB,SAAQ,yBAAyB;IAfjE;;QAgBW,aAAQ,GAAG,KAAK,CAAC;QACjB,aAAQ,GAAG,KAAK,CAAC;QAGP,gBAAW,GAAG,IAAI,YAAY,EAAY,CAAC;KAyB/D;IAvBoB,kBAAkB,CAAC,KAAqB;QACzD,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChC,QAAQ,KAAK,EAAE,IAAI,EAAE,CAAC;YACpB,KAAK,UAAU;gBACb,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACxC,IAAI,CAAC,KAAK,GAAG;wBACX,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACnD,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE;qBAC/D,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR;gBACE,MAAM;QACV,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAAY;QACtB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;YACtB,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;8GA7BU,kBAAkB;kGAAlB,kBAAkB,gKAFlB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,iDCnCrE,wpBAuBA,2CDII,WAAW,+VACX,OAAO,yLACP,cAAc,kGACd,QAAQ,6FACR,OAAO,0NACP,YAAY,2DACZ,WAAW,uLARD,CAAC,kBAAkB,CAAC;;2FAYrB,kBAAkB;kBAf9B,SAAS;+BACE,kBAAkB,cAEhB,CAAC,kBAAkB,CAAC,WACvB;wBACP,WAAW;wBACX,OAAO;wBACP,cAAc;wBACd,QAAQ;wBACR,OAAO;wBACP,YAAY;wBACZ,WAAW;qBACZ,aACU,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;;sBAGlE,KAAK;;sBACL,KAAK;;sBAGL,MAAM","sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n IonCard,\n IonCheckbox,\n IonItem,\n IonItemDivider,\n IonItemGroup,\n IonLabel,\n} from '@ionic/angular/standalone';\nimport { formNexInAnimation } from '@sneat/core';\nimport { ISpaceContext } from '@sneat/space-models';\nimport { ClassName } from '@sneat/ui';\nimport { SpaceRelatedFormComponent } from '../space-related-form.component';\n\ninterface Role {\n checked?: boolean;\n id: string;\n title: string;\n icon: string;\n}\n\n@Component({\n selector: 'sneat-roles-form',\n templateUrl: 'roles-form.component.html',\n animations: [formNexInAnimation],\n imports: [\n FormsModule,\n IonCard,\n IonItemDivider,\n IonLabel,\n IonItem,\n IonItemGroup,\n IonCheckbox,\n ],\n providers: [{ provide: ClassName, useValue: 'RolesFormComponent' }],\n})\nexport class RolesFormComponent extends SpaceRelatedFormComponent {\n @Input() isActive = false;\n @Input() disabled = false;\n roles?: Role[];\n\n @Output() readonly rolesChange = new EventEmitter<string[]>();\n\n protected override onSpaceTypeChanged(space?: ISpaceContext): void {\n super.onSpaceTypeChanged(space);\n switch (space?.type) {\n case 'educator':\n if (location.pathname.includes('staff')) {\n this.roles = [\n { id: 'teacher', title: 'Teacher', icon: 'person' },\n { id: 'administrator', title: 'Administrator', icon: 'robot' },\n ];\n }\n break;\n default:\n break;\n }\n }\n\n roleChecked(event: Event): void {\n event.stopPropagation();\n const roles = this.roles\n ?.filter((role) => role.checked)\n .map((role) => role.id);\n this.rolesChange.emit(roles);\n }\n}\n","<ion-card>\n <ion-item-divider [color]=\"isActive ? 'primary' : 'light'\">\n <ion-label>Roles</ion-label>\n </ion-item-divider>\n <ion-item>\n <ion-label color=\"medium\">Loading roles...</ion-label>\n </ion-item>\n @if (roles) {\n <ion-item-group>\n @for (role of roles; track role.id) {\n <ion-item>\n <ion-label>{{ role.title }}</ion-label>\n <ion-checkbox\n [disabled]=\"disabled\"\n [(ngModel)]=\"role.checked\"\n (ionChange)=\"roleChecked($event)\"\n >{{ role.title }}\n </ion-checkbox>\n </ion-item>\n }\n </ion-item-group>\n }\n</ion-card>\n"]}
@@ -0,0 +1,32 @@
1
+ import { Component, } from '@angular/core';
2
+ import { WithSpaceInput } from '@sneat/space-services';
3
+ import * as i0 from "@angular/core";
4
+ export class SpaceRelatedFormComponent extends WithSpaceInput {
5
+ // TODO: Needs to be in other place
6
+ ngOnChanges(changes) {
7
+ const spaceChange = changes['$space'];
8
+ if (spaceChange) {
9
+ this.onSpaceChanged(spaceChange);
10
+ }
11
+ }
12
+ onSpaceChanged(teamChange) {
13
+ const previous = teamChange.previousValue;
14
+ const current = teamChange.currentValue;
15
+ if (previous?.type !== current?.type) {
16
+ this.onSpaceTypeChanged(current);
17
+ }
18
+ }
19
+ onSpaceTypeChanged(_space) {
20
+ // TODO: remove in favor of $spaceType?
21
+ // console.log('SpaceRelatedFormComponent.onSpaceTypeChanged()', team);
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SpaceRelatedFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: SpaceRelatedFormComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SpaceRelatedFormComponent, decorators: [{
27
+ type: Component,
28
+ args: [{
29
+ template: '',
30
+ }]
31
+ }] });
32
+ //# sourceMappingURL=space-related-form.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-related-form.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-forms/space-related-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAIV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;;AAMvD,MAAM,OAAgB,yBACpB,SAAQ,cAAc;IAGtB,mCAAmC;IAEnC,WAAW,CAAC,OAAsB;QAChC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAES,cAAc,CAAC,UAAwB;QAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,aAA0C,CAAC;QACvE,MAAM,OAAO,GAAG,UAAU,CAAC,YAAyC,CAAC;QACrE,IAAI,QAAQ,EAAE,IAAI,KAAK,OAAO,EAAE,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAES,kBAAkB,CAAC,MAAsB;QACjD,uCAAuC;QACvC,uEAAuE;IACzE,CAAC;8GAxBmB,yBAAyB;kGAAzB,yBAAyB,oHAFnC,EAAE;;2FAEQ,yBAAyB;kBAH9C,SAAS;mBAAC;oBACT,QAAQ,EAAE,EAAE;iBACb","sourcesContent":["import {\n Component,\n OnChanges,\n SimpleChange,\n SimpleChanges,\n} from '@angular/core';\nimport { WithSpaceInput } from '@sneat/space-services';\nimport { ISpaceContext } from '@sneat/space-models';\n\n@Component({\n template: '',\n})\nexport abstract class SpaceRelatedFormComponent\n extends WithSpaceInput\n implements OnChanges\n{\n // TODO: Needs to be in other place\n\n ngOnChanges(changes: SimpleChanges): void {\n const spaceChange = changes['$space'];\n if (spaceChange) {\n this.onSpaceChanged(spaceChange);\n }\n }\n\n protected onSpaceChanged(teamChange: SimpleChange): void {\n const previous = teamChange.previousValue as ISpaceContext | undefined;\n const current = teamChange.currentValue as ISpaceContext | undefined;\n if (previous?.type !== current?.type) {\n this.onSpaceTypeChanged(current);\n }\n }\n\n protected onSpaceTypeChanged(_space?: ISpaceContext): void {\n // TODO: remove in favor of $spaceType?\n // console.log('SpaceRelatedFormComponent.onSpaceTypeChanged()', team);\n }\n}\n"]}
@@ -0,0 +1,151 @@
1
+ import { Component, EventEmitter, Input, Output, inject, } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ import { IonButton, IonButtons, IonIcon, IonInput, IonItem, IonLabel, IonSpinner, } from '@ionic/angular/standalone';
4
+ import { countryFlagEmoji } from '@sneat/components';
5
+ import { ErrorLogger } from '@sneat/core';
6
+ import { ContactsSelectorModule } from '../contacts-selector/contacts-selector.module';
7
+ import { ContactsSelectorService } from '../contacts-selector/contacts-selector.service';
8
+ import * as i0 from "@angular/core";
9
+ export class ContactInputComponent {
10
+ constructor() {
11
+ this.errorLogger = inject(ErrorLogger);
12
+ this.contactSelectorService = inject(ContactsSelectorService);
13
+ this.canChangeContact = true;
14
+ this.canReset = false;
15
+ this.readonly = false;
16
+ this.subLabel = 'by';
17
+ this.deleting = false;
18
+ this.contactChange = new EventEmitter();
19
+ this.labelText = () => this.label ||
20
+ (this.contactRole &&
21
+ this.contactRole[0].toUpperCase() + this.contactRole.substr(1)) ||
22
+ 'Contact';
23
+ }
24
+ get showFlag() {
25
+ return !!this.contact?.brief?.countryID;
26
+ }
27
+ get showParentFlag() {
28
+ return ((!!this.parentRole || !!this.parentType) &&
29
+ !!(this.parentContact?.brief?.countryID ||
30
+ this.parentContact?.dbo?.countryID));
31
+ }
32
+ parentTitle() {
33
+ return this.getTitle(this.showParentFlag, this.parentContact);
34
+ }
35
+ contactTitle() {
36
+ return this.getTitle(this.showFlag, this.contact);
37
+ }
38
+ getTitle(showFlag, contact) {
39
+ if (!contact) {
40
+ return '';
41
+ }
42
+ const title = contact?.brief?.title || '';
43
+ const flag = showFlag
44
+ ? countryFlagEmoji(contact?.brief?.countryID || contact?.dbo?.countryID) +
45
+ ' '
46
+ : '';
47
+ return flag + title;
48
+ }
49
+ ngOnChanges(changes) {
50
+ const contactChange = changes['contact'];
51
+ if (contactChange) {
52
+ const prevContact = contactChange.previousValue;
53
+ if (prevContact &&
54
+ prevContact.id !== this.contact?.id &&
55
+ !changes['parentContact']) {
56
+ this.parentContact = undefined;
57
+ }
58
+ }
59
+ }
60
+ get contactLink() {
61
+ return `/company/${this.space?.type}/${this.space?.id}/contact/${this.contact?.id}`;
62
+ }
63
+ reset(event) {
64
+ event.stopPropagation();
65
+ event.preventDefault();
66
+ // this.contact = undefined;
67
+ this.contactChange.emit(undefined);
68
+ }
69
+ openContactSelector(event) {
70
+ event.stopPropagation();
71
+ event.preventDefault();
72
+ if (!this.canChangeContact || this.readonly) {
73
+ return;
74
+ }
75
+ if (!this.space) {
76
+ this.errorLogger.logError('ContactInputComponent.openContactSelector(): team is required', undefined);
77
+ return;
78
+ }
79
+ const selectorOptions = {
80
+ componentProps: {
81
+ space: this.space, // TODO: switch to this.$space
82
+ parentType: this.parentType,
83
+ parentRole: this.parentRole,
84
+ contactRole: this.contactRole,
85
+ contactType: this.contactType,
86
+ },
87
+ };
88
+ this.contactSelectorService
89
+ .selectSingleInModal(selectorOptions)
90
+ .then((contact) => {
91
+ // 'ContactInputComponent.openContactSelector() contact:',
92
+ // contact,
93
+ this.contact = contact || undefined;
94
+ // this.parentContact = contact?.parentContact;
95
+ if (contact) {
96
+ this.contactChange.emit(contact);
97
+ }
98
+ })
99
+ .catch(this.errorLogger.logErrorHandler('failed to open contact selector'));
100
+ }
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
102
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: ContactInputComponent, isStandalone: true, selector: "sneat-contact-input", inputs: { space: "space", disabled: "disabled", canChangeContact: "canChangeContact", canReset: "canReset", readonly: "readonly", label: "label", labelPosition: "labelPosition", contactRole: "contactRole", contactType: "contactType", subLabel: "subLabel", parentType: "parentType", parentRole: "parentRole", parentContact: "parentContact", deleting: "deleting", contact: "contact" }, outputs: { contactChange: "contactChange" }, usesOnChanges: true, ngImport: i0, template: "<ion-item\n tappable\n class=\"sneat-tiny-end-padding sneat-label-color-medium\"\n (click)=\"openContactSelector($event)\"\n [class.deleting-list-item]=\"deleting\"\n>\n <ion-input\n [label]=\"labelText()\"\n labelPlacement=\"fixed\"\n [disabled]=\"disabled\"\n [readonly]=\"true\"\n [color]=\"deleting ? 'medium' : undefined\"\n [value]=\"contactTitle()\"\n />\n\n @if (parentRole) {\n <ion-input\n [label]=\"subLabel\"\n [disabled]=\"disabled\"\n [value]=\"parentTitle()\"\n />\n }\n\n @if (!readonly && canChangeContact) {\n <ion-buttons slot=\"end\">\n @if (!deleting) {\n <ion-button (click)=\"openContactSelector($event)\" [disabled]=\"disabled\">\n <ion-label>...</ion-label>\n </ion-button>\n }\n\n @if (contact && canReset) {\n <ion-button\n color=\"medium\"\n (click)=\"reset($event)\"\n [disabled]=\"disabled || deleting\"\n >\n @if (deleting) {\n <ion-spinner name=\"lines-small\" slot=\"end\" />\n } @else {\n <ion-icon name=\"close-outline\" />\n }\n </ion-button>\n }\n </ion-buttons>\n }\n</ion-item>\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: ContactsSelectorModule }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { 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: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }] }); }
103
+ }
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactInputComponent, decorators: [{
105
+ type: Component,
106
+ args: [{ selector: 'sneat-contact-input', imports: [
107
+ RouterModule,
108
+ ContactsSelectorModule,
109
+ IonInput,
110
+ IonItem,
111
+ IonSpinner,
112
+ IonIcon,
113
+ IonButton,
114
+ IonLabel,
115
+ IonButtons,
116
+ ], template: "<ion-item\n tappable\n class=\"sneat-tiny-end-padding sneat-label-color-medium\"\n (click)=\"openContactSelector($event)\"\n [class.deleting-list-item]=\"deleting\"\n>\n <ion-input\n [label]=\"labelText()\"\n labelPlacement=\"fixed\"\n [disabled]=\"disabled\"\n [readonly]=\"true\"\n [color]=\"deleting ? 'medium' : undefined\"\n [value]=\"contactTitle()\"\n />\n\n @if (parentRole) {\n <ion-input\n [label]=\"subLabel\"\n [disabled]=\"disabled\"\n [value]=\"parentTitle()\"\n />\n }\n\n @if (!readonly && canChangeContact) {\n <ion-buttons slot=\"end\">\n @if (!deleting) {\n <ion-button (click)=\"openContactSelector($event)\" [disabled]=\"disabled\">\n <ion-label>...</ion-label>\n </ion-button>\n }\n\n @if (contact && canReset) {\n <ion-button\n color=\"medium\"\n (click)=\"reset($event)\"\n [disabled]=\"disabled || deleting\"\n >\n @if (deleting) {\n <ion-spinner name=\"lines-small\" slot=\"end\" />\n } @else {\n <ion-icon name=\"close-outline\" />\n }\n </ion-button>\n }\n </ion-buttons>\n }\n</ion-item>\n" }]
117
+ }], propDecorators: { space: [{
118
+ type: Input,
119
+ args: [{ required: true }]
120
+ }], disabled: [{
121
+ type: Input
122
+ }], canChangeContact: [{
123
+ type: Input
124
+ }], canReset: [{
125
+ type: Input
126
+ }], readonly: [{
127
+ type: Input
128
+ }], label: [{
129
+ type: Input
130
+ }], labelPosition: [{
131
+ type: Input
132
+ }], contactRole: [{
133
+ type: Input
134
+ }], contactType: [{
135
+ type: Input
136
+ }], subLabel: [{
137
+ type: Input
138
+ }], parentType: [{
139
+ type: Input
140
+ }], parentRole: [{
141
+ type: Input
142
+ }], parentContact: [{
143
+ type: Input
144
+ }], deleting: [{
145
+ type: Input
146
+ }], contact: [{
147
+ type: Input
148
+ }], contactChange: [{
149
+ type: Output
150
+ }] } });
151
+ //# sourceMappingURL=contact-input.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-input.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-input/contact-input.component.ts","../../../../../../../../libs/contactus/shared/src/lib/components/contact-input/contact-input.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport {\n IonButton,\n IonButtons,\n IonIcon,\n IonInput,\n IonItem,\n IonLabel,\n IonSpinner,\n} from '@ionic/angular/standalone';\nimport { countryFlagEmoji } from '@sneat/components';\nimport { IIdAndOptionalBriefAndOptionalDbo } from '@sneat/core';\nimport {\n ContactRole,\n ContactType,\n IContactBrief,\n IContactDbo,\n IContactContext,\n} from '@sneat/contactus-core';\nimport { ErrorLogger, IErrorLogger } from '@sneat/core';\nimport { ISpaceContext } from '@sneat/space-models';\nimport { IContactSelectorOptions } from '../contacts-selector/contacts-selector.interfaces';\nimport { ContactsSelectorModule } from '../contacts-selector/contacts-selector.module';\nimport { ContactsSelectorService } from '../contacts-selector/contacts-selector.service';\n\n@Component({\n selector: 'sneat-contact-input',\n templateUrl: './contact-input.component.html',\n imports: [\n RouterModule,\n ContactsSelectorModule,\n IonInput,\n IonItem,\n IonSpinner,\n IonIcon,\n IonButton,\n IonLabel,\n IonButtons,\n ],\n})\nexport class ContactInputComponent implements OnChanges {\n private readonly errorLogger = inject<IErrorLogger>(ErrorLogger);\n private readonly contactSelectorService = inject(ContactsSelectorService);\n\n @Input({ required: true }) space?: ISpaceContext;\n @Input() disabled?: boolean;\n @Input() canChangeContact = true;\n @Input() canReset = false;\n @Input() readonly = false;\n @Input() label?: string;\n @Input() labelPosition?: 'fixed' | 'stacked' | 'floating';\n @Input() contactRole?: ContactRole;\n @Input() contactType?: ContactType;\n @Input() subLabel = 'by';\n @Input() parentType?: ContactType;\n @Input() parentRole?: ContactRole;\n @Input() parentContact?: IContactContext;\n @Input() deleting = false;\n @Input() contact?: IContactContext;\n\n @Output() readonly contactChange = new EventEmitter<\n undefined | IContactContext\n >();\n\n protected readonly labelText = () =>\n this.label ||\n (this.contactRole &&\n this.contactRole[0].toUpperCase() + this.contactRole.substr(1)) ||\n 'Contact';\n\n protected get showFlag(): boolean {\n return !!this.contact?.brief?.countryID;\n }\n\n protected get showParentFlag(): boolean {\n return (\n (!!this.parentRole || !!this.parentType) &&\n !!(\n this.parentContact?.brief?.countryID ||\n this.parentContact?.dbo?.countryID\n )\n );\n }\n\n protected parentTitle(): string {\n return this.getTitle(this.showParentFlag, this.parentContact);\n }\n\n protected contactTitle(): string {\n return this.getTitle(this.showFlag, this.contact);\n }\n\n private getTitle(\n showFlag: boolean,\n contact?: IIdAndOptionalBriefAndOptionalDbo<IContactBrief, IContactDbo>,\n ): string {\n if (!contact) {\n return '';\n }\n const title = contact?.brief?.title || '';\n const flag = showFlag\n ? countryFlagEmoji(contact?.brief?.countryID || contact?.dbo?.countryID) +\n ' '\n : '';\n return flag + title;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const contactChange = changes['contact'];\n if (contactChange) {\n const prevContact = contactChange.previousValue as\n | IContactContext\n | undefined;\n if (\n prevContact &&\n prevContact.id !== this.contact?.id &&\n !changes['parentContact']\n ) {\n this.parentContact = undefined;\n }\n }\n }\n\n get contactLink(): string {\n return `/company/${this.space?.type}/${this.space?.id}/contact/${this.contact?.id}`;\n }\n\n reset(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n // this.contact = undefined;\n this.contactChange.emit(undefined);\n }\n\n openContactSelector(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (!this.canChangeContact || this.readonly) {\n return;\n }\n if (!this.space) {\n this.errorLogger.logError(\n 'ContactInputComponent.openContactSelector(): team is required',\n undefined,\n );\n return;\n }\n const selectorOptions: IContactSelectorOptions = {\n componentProps: {\n space: this.space, // TODO: switch to this.$space\n parentType: this.parentType,\n parentRole: this.parentRole,\n contactRole: this.contactRole,\n contactType: this.contactType,\n },\n };\n this.contactSelectorService\n .selectSingleInModal(selectorOptions)\n .then((contact) => {\n // 'ContactInputComponent.openContactSelector() contact:',\n // contact,\n this.contact = contact || undefined;\n // this.parentContact = contact?.parentContact;\n if (contact) {\n this.contactChange.emit(contact);\n }\n })\n .catch(\n this.errorLogger.logErrorHandler('failed to open contact selector'),\n );\n }\n}\n","<ion-item\n tappable\n class=\"sneat-tiny-end-padding sneat-label-color-medium\"\n (click)=\"openContactSelector($event)\"\n [class.deleting-list-item]=\"deleting\"\n>\n <ion-input\n [label]=\"labelText()\"\n labelPlacement=\"fixed\"\n [disabled]=\"disabled\"\n [readonly]=\"true\"\n [color]=\"deleting ? 'medium' : undefined\"\n [value]=\"contactTitle()\"\n />\n\n @if (parentRole) {\n <ion-input\n [label]=\"subLabel\"\n [disabled]=\"disabled\"\n [value]=\"parentTitle()\"\n />\n }\n\n @if (!readonly && canChangeContact) {\n <ion-buttons slot=\"end\">\n @if (!deleting) {\n <ion-button (click)=\"openContactSelector($event)\" [disabled]=\"disabled\">\n <ion-label>...</ion-label>\n </ion-button>\n }\n\n @if (contact && canReset) {\n <ion-button\n color=\"medium\"\n (click)=\"reset($event)\"\n [disabled]=\"disabled || deleting\"\n >\n @if (deleting) {\n <ion-spinner name=\"lines-small\" slot=\"end\" />\n } @else {\n <ion-icon name=\"close-outline\" />\n }\n </ion-button>\n }\n </ion-buttons>\n }\n</ion-item>\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './contact-input.component';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-input/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC","sourcesContent":["export * from './contact-input.component';\n"]}
@@ -0,0 +1,52 @@
1
+ import { ChangeDetectionStrategy, Component, input, Input, signal, } from '@angular/core';
2
+ import { RouterLink } from '@angular/router';
3
+ import { IonButton, IonButtons, IonCard, IonIcon, IonItemDivider, IonLabel, } from '@ionic/angular/standalone';
4
+ import { ContactsListComponent } from '../contacts-list';
5
+ import * as i0 from "@angular/core";
6
+ export class ContactLocationsComponent {
7
+ constructor() {
8
+ this.$space = input.required(...(ngDevMode ? [{ debugName: "$space" }] : []));
9
+ this.$contactLocations = signal([], ...(ngDevMode ? [{ debugName: "$contactLocations" }] : []));
10
+ }
11
+ ngOnChanges(changes) {
12
+ if (changes['contact']) {
13
+ const space = this.$space();
14
+ if (!space) {
15
+ return;
16
+ }
17
+ this.$contactLocations.set(this.getContactLocations().map((c) => Object.assign(c, { space })));
18
+ }
19
+ }
20
+ getContactLocations() {
21
+ return [];
22
+ // return (
23
+ // zipMapBriefsWithIDs<IContactRelationships>(this.contact?.dto?.relatedContacts)
24
+ // ?.map((c) => ({
25
+ // id: c.id,
26
+ // brief: c.brief,
27
+ // team: this.team,
28
+ // }))
29
+ // ?.filter((c) => c.brief?.type === 'location')
30
+ // || []
31
+ // );
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactLocationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: ContactLocationsComponent, isStandalone: true, selector: "sneat-contact-locations", inputs: { $space: { classPropertyName: "$space", publicName: "$space", isSignal: true, isRequired: true, transformFunction: null }, contact: { classPropertyName: "contact", publicName: "contact", isSignal: false, isRequired: true, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: "<ion-card>\n <ion-item-divider color=\"light\">\n <ion-label>Locations</ion-label>\n <ion-buttons slot=\"end\">\n <ion-button color=\"medium\" routerLink=\"new-location\">\n <ion-icon name=\"add-outline\" slot=\"start\" />\n <ion-label>New</ion-label>\n </ion-button>\n </ion-buttons>\n </ion-item-divider>\n <sneat-contacts-list\n [$space]=\"$space()\"\n [$contacts]=\"$contactLocations()\"\n emptyText=\"Locations have not been added yet\"\n />\n</ion-card>\n", dependencies: [{ kind: "component", type: ContactsListComponent, selector: "sneat-contacts-list", inputs: ["emptyText", "$space", "$contacts"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonItemDivider, selector: "ion-item-divider", inputs: ["color", "mode", "sticky"] }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactLocationsComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: 'sneat-contact-locations', imports: [
39
+ ContactsListComponent,
40
+ RouterLink,
41
+ IonCard,
42
+ IonItemDivider,
43
+ IonLabel,
44
+ IonButtons,
45
+ IonButton,
46
+ IonIcon,
47
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-card>\n <ion-item-divider color=\"light\">\n <ion-label>Locations</ion-label>\n <ion-buttons slot=\"end\">\n <ion-button color=\"medium\" routerLink=\"new-location\">\n <ion-icon name=\"add-outline\" slot=\"start\" />\n <ion-label>New</ion-label>\n </ion-button>\n </ion-buttons>\n </ion-item-divider>\n <sneat-contacts-list\n [$space]=\"$space()\"\n [$contacts]=\"$contactLocations()\"\n emptyText=\"Locations have not been added yet\"\n />\n</ion-card>\n" }]
48
+ }], propDecorators: { $space: [{ type: i0.Input, args: [{ isSignal: true, alias: "$space", required: true }] }], contact: [{
49
+ type: Input,
50
+ args: [{ required: true }]
51
+ }] } });
52
+ //# sourceMappingURL=contact-locations.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-locations.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-locations/contact-locations.component.ts","../../../../../../../../libs/contactus/shared/src/lib/components/contact-locations/contact-locations.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,KAAK,EACL,KAAK,EAEL,MAAM,GAEP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,SAAS,EACT,UAAU,EACV,OAAO,EACP,OAAO,EACP,cAAc,EACd,QAAQ,GACT,MAAM,2BAA2B,CAAC;AASnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;;AAiBzD,MAAM,OAAO,yBAAyB;IAftC;QAgBkB,WAAM,GAAG,KAAK,CAAC,QAAQ,iDAAiB,CAAC;QAOtC,sBAAiB,GAAG,MAAM,CAC3C,EAAE,6DACH,CAAC;KA2BH;IAzBC,WAAW,CAAC,OAAsB;QAChC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACxB,IAAI,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,mBAAmB;QACzB,OAAO,EAAE,CAAC;QACV,WAAW;QACX,kFAAkF;QAClF,oBAAoB;QACpB,eAAe;QACf,qBAAqB;QACrB,sBAAsB;QACtB,QAAQ;QACR,kDAAkD;QAClD,SAAS;QACT,KAAK;IACP,CAAC;8GApCU,yBAAyB;kGAAzB,yBAAyB,4WC3CtC,6fAgBA,4CDgBI,qBAAqB,8GACrB,UAAU,oOACV,OAAO,yLACP,cAAc,kGACd,QAAQ,6FACR,UAAU,8EACV,SAAS,oPACT,OAAO;;2FAIE,yBAAyB;kBAfrC,SAAS;+BACE,yBAAyB,WAE1B;wBACP,qBAAqB;wBACrB,UAAU;wBACV,OAAO;wBACP,cAAc;wBACd,QAAQ;wBACR,UAAU;wBACV,SAAS;wBACT,OAAO;qBACR,mBACgB,uBAAuB,CAAC,MAAM;;sBAK9C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE","sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n input,\n Input,\n OnChanges,\n signal,\n SimpleChanges,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport {\n IonButton,\n IonButtons,\n IonCard,\n IonIcon,\n IonItemDivider,\n IonLabel,\n} from '@ionic/angular/standalone';\nimport { IIdAndBriefAndOptionalDbo } from '@sneat/core';\nimport {\n IContactBrief,\n IContactDbo,\n IContactWithBrief,\n IContactWithCheck,\n} from '@sneat/contactus-core';\nimport { ISpaceContext } from '@sneat/space-models';\nimport { ContactsListComponent } from '../contacts-list';\n\n@Component({\n selector: 'sneat-contact-locations',\n templateUrl: './contact-locations.component.html',\n imports: [\n ContactsListComponent,\n RouterLink,\n IonCard,\n IonItemDivider,\n IonLabel,\n IonButtons,\n IonButton,\n IonIcon,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContactLocationsComponent implements OnChanges {\n public readonly $space = input.required<ISpaceContext>();\n\n @Input({ required: true }) public contact?: IIdAndBriefAndOptionalDbo<\n IContactBrief,\n IContactDbo\n >;\n\n protected readonly $contactLocations = signal<readonly IContactWithCheck[]>(\n [],\n );\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['contact']) {\n const space = this.$space();\n if (!space) {\n return;\n }\n this.$contactLocations.set(\n this.getContactLocations().map((c) => Object.assign(c, { space })),\n );\n }\n }\n\n private getContactLocations(): IContactWithBrief[] {\n return [];\n // return (\n // \tzipMapBriefsWithIDs<IContactRelationships>(this.contact?.dto?.relatedContacts)\n // \t\t?.map((c) => ({\n // \t\t\tid: c.id,\n // \t\t\tbrief: c.brief,\n // \t\t\tteam: this.team,\n // \t\t}))\n // \t\t?.filter((c) => c.brief?.type === 'location')\n // \t|| []\n // );\n }\n}\n","<ion-card>\n <ion-item-divider color=\"light\">\n <ion-label>Locations</ion-label>\n <ion-buttons slot=\"end\">\n <ion-button color=\"medium\" routerLink=\"new-location\">\n <ion-icon name=\"add-outline\" slot=\"start\" />\n <ion-label>New</ion-label>\n </ion-button>\n </ion-buttons>\n </ion-item-divider>\n <sneat-contacts-list\n [$space]=\"$space()\"\n [$contacts]=\"$contactLocations()\"\n emptyText=\"Locations have not been added yet\"\n />\n</ion-card>\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './contact-locations.component';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-locations/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC","sourcesContent":["export * from './contact-locations.component';\n"]}
@@ -0,0 +1,29 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { RouterLink } from '@angular/router';
3
+ import { IonButton, IonButtons, IonIcon, IonItem, IonLabel, } from '@ionic/angular/standalone';
4
+ import { defaultFamilyMemberExtensions } from '@sneat/core';
5
+ import { WithSpaceInput } from '@sneat/space-services';
6
+ import { ClassName } from '@sneat/ui';
7
+ import * as i0 from "@angular/core";
8
+ export class ContactModulesMenuComponent extends WithSpaceInput {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.extensions = defaultFamilyMemberExtensions;
12
+ }
13
+ goExt(ext) {
14
+ console.warn('not implemented go()', ext);
15
+ }
16
+ goNew(event, ext) {
17
+ console.warn('not implemented goNew()', ext);
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactModulesMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: ContactModulesMenuComponent, isStandalone: true, selector: "sneat-contact-modules-menu", inputs: { contact: "contact" }, providers: [{ provide: ClassName, useValue: 'ContactModulesMenuComponent' }], usesInheritance: true, ngImport: i0, template: "<!--<ion-item>-->\n<!--\t<ion-label color=\"medium\">Apps</ion-label>-->\n<!--</ion-item>-->\n@for (ext of extensions; track ext.id; let last = $last) {\n <ion-item\n [lines]=\"last ? 'none' : undefined\"\n class=\"sneat-tiny-end-padding\"\n tappable\n [routerLink]=\"ext.id\"\n (click)=\"goExt(ext)\"\n >\n <ion-label>\n <span class=\"ion-margin-end\">{{ ext.emoji }}</span>\n {{ ext.title }}\n </ion-label>\n <ion-buttons slot=\"end\">\n <ion-button color=\"medium\" title=\"Add\" (click)=\"goNew($event, ext)\">\n <ion-icon name=\"add\" />\n </ion-button>\n </ion-buttons>\n </ion-item>\n}\n\n<!--\t\t<app-menu-item-budget [goNew]=\"goNew\" [memberInfo]=\"memberInfo\"-->\n<!--\t\t\t\t\t\t\t\t\t\t\t\t\t[communeDto]=\"commune && commune.dto\"></app-menu-item-budget>-->\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { 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"] }] }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactModulesMenuComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: 'sneat-contact-modules-menu', imports: [RouterLink, IonItem, IonLabel, IonButtons, IonButton, IonIcon], providers: [{ provide: ClassName, useValue: 'ContactModulesMenuComponent' }], template: "<!--<ion-item>-->\n<!--\t<ion-label color=\"medium\">Apps</ion-label>-->\n<!--</ion-item>-->\n@for (ext of extensions; track ext.id; let last = $last) {\n <ion-item\n [lines]=\"last ? 'none' : undefined\"\n class=\"sneat-tiny-end-padding\"\n tappable\n [routerLink]=\"ext.id\"\n (click)=\"goExt(ext)\"\n >\n <ion-label>\n <span class=\"ion-margin-end\">{{ ext.emoji }}</span>\n {{ ext.title }}\n </ion-label>\n <ion-buttons slot=\"end\">\n <ion-button color=\"medium\" title=\"Add\" (click)=\"goNew($event, ext)\">\n <ion-icon name=\"add\" />\n </ion-button>\n </ion-buttons>\n </ion-item>\n}\n\n<!--\t\t<app-menu-item-budget [goNew]=\"goNew\" [memberInfo]=\"memberInfo\"-->\n<!--\t\t\t\t\t\t\t\t\t\t\t\t\t[communeDto]=\"commune && commune.dto\"></app-menu-item-budget>-->\n" }]
25
+ }], propDecorators: { contact: [{
26
+ type: Input,
27
+ args: [{ required: true }]
28
+ }] } });
29
+ //# sourceMappingURL=contact-modules-menu.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-modules-menu.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-modules-menu/contact-modules-menu.component.ts","../../../../../../../../libs/contactus/shared/src/lib/components/contact-modules-menu/contact-modules-menu.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,SAAS,EACT,UAAU,EACV,OAAO,EACP,OAAO,EACP,QAAQ,GACT,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,6BAA6B,EAAmB,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;;AAQtC,MAAM,OAAO,2BAA4B,SAAQ,cAAc;IAN/D;;QASkB,eAAU,GAAG,6BAA6B,CAAC;KAS5D;IAPW,KAAK,CAAC,GAAoB;QAClC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAES,KAAK,CAAC,KAAY,EAAE,GAAoB;QAChD,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;8GAXU,2BAA2B;kGAA3B,2BAA2B,yGAF3B,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,6BAA6B,EAAE,CAAC,iDClB9E,i0BAyBA,4CDRY,UAAU,oOAAE,OAAO,0NAAE,QAAQ,6FAAE,UAAU,8EAAE,SAAS,oPAAE,OAAO;;2FAG5D,2BAA2B;kBANvC,SAAS;+BACE,4BAA4B,WAE7B,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,aAC7D,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,6BAA6B,EAAE,CAAC;;sBAG3E,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE","sourcesContent":["import { Component, Input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport {\n IonButton,\n IonButtons,\n IonIcon,\n IonItem,\n IonLabel,\n} from '@ionic/angular/standalone';\nimport { defaultFamilyMemberExtensions, ISneatExtension } from '@sneat/core';\nimport { IContactWithBrief } from '@sneat/contactus-core';\nimport { WithSpaceInput } from '@sneat/space-services';\nimport { ClassName } from '@sneat/ui';\n\n@Component({\n selector: 'sneat-contact-modules-menu',\n templateUrl: 'contact-modules-menu.component.html',\n imports: [RouterLink, IonItem, IonLabel, IonButtons, IonButton, IonIcon],\n providers: [{ provide: ClassName, useValue: 'ContactModulesMenuComponent' }],\n})\nexport class ContactModulesMenuComponent extends WithSpaceInput {\n @Input({ required: true }) public contact?: IContactWithBrief;\n\n public readonly extensions = defaultFamilyMemberExtensions;\n\n protected goExt(ext: ISneatExtension): void {\n console.warn('not implemented go()', ext);\n }\n\n protected goNew(event: Event, ext: ISneatExtension): void {\n console.warn('not implemented goNew()', ext);\n }\n}\n","<!--<ion-item>-->\n<!--\t<ion-label color=\"medium\">Apps</ion-label>-->\n<!--</ion-item>-->\n@for (ext of extensions; track ext.id; let last = $last) {\n <ion-item\n [lines]=\"last ? 'none' : undefined\"\n class=\"sneat-tiny-end-padding\"\n tappable\n [routerLink]=\"ext.id\"\n (click)=\"goExt(ext)\"\n >\n <ion-label>\n <span class=\"ion-margin-end\">{{ ext.emoji }}</span>\n {{ ext.title }}\n </ion-label>\n <ion-buttons slot=\"end\">\n <ion-button color=\"medium\" title=\"Add\" (click)=\"goNew($event, ext)\">\n <ion-icon name=\"add\" />\n </ion-button>\n </ion-buttons>\n </ion-item>\n}\n\n<!--\t\t<app-menu-item-budget [goNew]=\"goNew\" [memberInfo]=\"memberInfo\"-->\n<!--\t\t\t\t\t\t\t\t\t\t\t\t\t[communeDto]=\"commune && commune.dto\"></app-menu-item-budget>-->\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './contact-modules-menu.component';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-modules-menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC","sourcesContent":["export * from './contact-modules-menu.component';\n"]}
@@ -0,0 +1,44 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { IonBadge } from '@ionic/angular/standalone';
3
+ import * as i0 from "@angular/core";
4
+ export class ContactRoleBadgesComponent {
5
+ constructor() {
6
+ this.alwaysHide = [
7
+ '--',
8
+ 'creator',
9
+ 'contributor',
10
+ 'owner',
11
+ ];
12
+ this.hideRoles = this.alwaysHide;
13
+ this.hiddenRoles = new Set();
14
+ this._roles = [];
15
+ }
16
+ ngOnChanges(changes) {
17
+ if (changes['hideRoles']) {
18
+ this.hiddenRoles = new Set([...this.hideRoles, ...this.alwaysHide]);
19
+ }
20
+ if (changes['roles'] || changes['hideRoles']) {
21
+ this._roles = this.roles?.filter((r) => !this.hiddenRoles.has(r)) || [];
22
+ }
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactRoleBadgesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: ContactRoleBadgesComponent, isStandalone: true, selector: "sneat-contact-role-badges", inputs: { roles: "roles", hideRoles: "hideRoles" }, usesOnChanges: true, ngImport: i0, template: `
26
+ @for (r of _roles; track r) {
27
+ <ion-badge color="medium" class="ion-margin-start">{{ r }}</ion-badge>
28
+ }
29
+ `, isInline: true, styles: ["ion-badge{font-weight:400;opacity:.5}\n"], dependencies: [{ kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }] }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactRoleBadgesComponent, decorators: [{
32
+ type: Component,
33
+ args: [{ selector: 'sneat-contact-role-badges', template: `
34
+ @for (r of _roles; track r) {
35
+ <ion-badge color="medium" class="ion-margin-start">{{ r }}</ion-badge>
36
+ }
37
+ `, imports: [IonBadge], styles: ["ion-badge{font-weight:400;opacity:.5}\n"] }]
38
+ }], propDecorators: { roles: [{
39
+ type: Input,
40
+ args: [{ required: true }]
41
+ }], hideRoles: [{
42
+ type: Input
43
+ }] } });
44
+ //# sourceMappingURL=contact-role-badges.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-role-badges.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-role-badges/contact-role-badges.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAA4B,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;;AAmBrD,MAAM,OAAO,0BAA0B;IAjBvC;QAkBmB,eAAU,GAAsB;YAC/C,IAAI;YACJ,SAAS;YACT,aAAa;YACb,OAAO;SACR,CAAC;QAGO,cAAS,GAAsB,IAAI,CAAC,UAAU,CAAC;QAEhD,gBAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,WAAM,GAAsB,EAAE,CAAC;KAU1C;IARC,WAAW,CAAC,OAAsB;QAChC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1E,CAAC;IACH,CAAC;8GArBU,0BAA0B;kGAA1B,0BAA0B,8JAP3B;;;;GAIT,iHACS,QAAQ;;2FAEP,0BAA0B;kBAjBtC,SAAS;+BACE,2BAA2B,YAS3B;;;;GAIT,WACQ,CAAC,QAAQ,CAAC;;sBAUlB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK","sourcesContent":["import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { IonBadge } from '@ionic/angular/standalone';\n\n@Component({\n selector: 'sneat-contact-role-badges',\n styles: [\n `\n ion-badge {\n font-weight: normal;\n opacity: 0.5;\n }\n `,\n ],\n template: `\n @for (r of _roles; track r) {\n <ion-badge color=\"medium\" class=\"ion-margin-start\">{{ r }}</ion-badge>\n }\n `,\n imports: [IonBadge],\n})\nexport class ContactRoleBadgesComponent implements OnChanges {\n private readonly alwaysHide: readonly string[] = [\n '--',\n 'creator',\n 'contributor',\n 'owner',\n ];\n\n @Input({ required: true }) roles?: readonly string[];\n @Input() hideRoles: readonly string[] = this.alwaysHide;\n\n private hiddenRoles = new Set<string>();\n protected _roles: readonly string[] = [];\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['hideRoles']) {\n this.hiddenRoles = new Set([...this.hideRoles, ...this.alwaysHide]);\n }\n if (changes['roles'] || changes['hideRoles']) {\n this._roles = this.roles?.filter((r) => !this.hiddenRoles.has(r)) || [];\n }\n }\n}\n"]}
@@ -0,0 +1,37 @@
1
+ import { Component, Input, inject, } from '@angular/core';
2
+ import { CONTACT_ROLES_BY_TYPE } from '@sneat/app';
3
+ import { ErrorLogger } from '@sneat/core';
4
+ import { ContactService } from '@sneat/contactus-services';
5
+ import { MultiSelectorComponent } from '@sneat/ui';
6
+ import * as i0 from "@angular/core";
7
+ export class ContactRolesInputComponent {
8
+ constructor() {
9
+ this.errorLogger = inject(ErrorLogger);
10
+ this.contactService = inject(ContactService);
11
+ this.contactRolesByType = inject(CONTACT_ROLES_BY_TYPE);
12
+ this.processingRoleIDs = [];
13
+ }
14
+ ngOnChanges(changes) {
15
+ if (changes['contact']) {
16
+ this.setRoles();
17
+ }
18
+ }
19
+ setRoles() {
20
+ this.roles =
21
+ this.contact?.brief?.type && this.contactRolesByType
22
+ ? this.contactRolesByType[this.contact.brief.type]
23
+ : undefined;
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactRolesInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: ContactRolesInputComponent, isStandalone: true, selector: "sneat-contact-roles-input", inputs: { space: "space", contact: "contact" }, usesOnChanges: true, ngImport: i0, template: "<sneat-multi-selector\n title=\"Roles\"\n [allItems]=\"roles\"\n [selectedIDs]=\"contact?.brief?.roles\"\n/>\n<div style=\"height: 100px\">\n <!-- TODO(css): need a proper padding at bottom using CSS-->\n</div>\n", dependencies: [{ kind: "component", type: MultiSelectorComponent, selector: "sneat-multi-selector", inputs: ["title", "canRemove", "allItems", "selectedIDs"], outputs: ["removeItems", "addItems"] }] }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactRolesInputComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ selector: 'sneat-contact-roles-input', imports: [MultiSelectorComponent], template: "<sneat-multi-selector\n title=\"Roles\"\n [allItems]=\"roles\"\n [selectedIDs]=\"contact?.brief?.roles\"\n/>\n<div style=\"height: 100px\">\n <!-- TODO(css): need a proper padding at bottom using CSS-->\n</div>\n" }]
31
+ }], propDecorators: { space: [{
32
+ type: Input,
33
+ args: [{ required: true }]
34
+ }], contact: [{
35
+ type: Input
36
+ }] } });
37
+ //# sourceMappingURL=contact-roles-input.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-roles-input.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-roles-input/contact-roles-input.component.ts","../../../../../../../../libs/contactus/shared/src/lib/components/contact-roles-input/contact-roles-input.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,EAGL,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,qBAAqB,EAAgB,MAAM,YAAY,CAAC;AAMjE,OAAO,EAAE,WAAW,EAAgB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;;AAOnD,MAAM,OAAO,0BAA0B;IALvC;QAMmB,gBAAW,GAAG,MAAM,CAAe,WAAW,CAAC,CAAC;QAChD,mBAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QACxC,uBAAkB,GAAG,MAAM,CAE1C,qBAAqB,CAAC,CAAC;QAOf,sBAAiB,GAAkB,EAAE,CAAC;KA8CjD;IA5CC,WAAW,CAAC,OAAsB;QAChC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,KAAK;YACR,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,kBAAkB;gBAClD,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;gBAClD,CAAC,CAAC,SAAS,CAAC;IAClB,CAAC;8GAzBU,0BAA0B;kGAA1B,0BAA0B,0JCvBvC,0NAQA,4CDaY,sBAAsB;;2FAErB,0BAA0B;kBALtC,SAAS;+BACE,2BAA2B,WAE5B,CAAC,sBAAsB,CAAC;;sBAShC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK","sourcesContent":["import {\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport { CONTACT_ROLES_BY_TYPE, IContactRole } from '@sneat/app';\nimport {\n ContactRole,\n ContactType,\n IContactWithBrief,\n} from '@sneat/contactus-core';\nimport { ErrorLogger, IErrorLogger } from '@sneat/core';\nimport { ContactService } from '@sneat/contactus-services';\nimport { ISpaceContext } from '@sneat/space-models';\nimport { MultiSelectorComponent } from '@sneat/ui';\n\n@Component({\n selector: 'sneat-contact-roles-input',\n templateUrl: './contact-roles-input.component.html',\n imports: [MultiSelectorComponent],\n})\nexport class ContactRolesInputComponent implements OnChanges {\n private readonly errorLogger = inject<IErrorLogger>(ErrorLogger);\n private readonly contactService = inject(ContactService);\n private readonly contactRolesByType = inject<\n Record<ContactType, IContactRole[]>\n >(CONTACT_ROLES_BY_TYPE);\n\n @Input({ required: true }) space?: ISpaceContext;\n @Input() contact?: IContactWithBrief;\n // @Output() readonly rolesChange = new EventEmitter<ContactRole[]>();\n\n protected roles?: IContactRole[];\n protected processingRoleIDs: ContactRole[] = [];\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['contact']) {\n this.setRoles();\n }\n }\n\n private setRoles(): void {\n this.roles =\n this.contact?.brief?.type && this.contactRolesByType\n ? this.contactRolesByType[this.contact.brief.type]\n : undefined;\n }\n\n // onRoleChanged(event: Event, role: IContactRole): void {\n // \tconsole.log('onRoleChanged', role, event);\n // \tif (!this.space || !this.contact) {\n // \t\talert('space or contact is not set');\n // \t\treturn;\n // \t}\n // \tconst checked = (event.target as HTMLInputElement).checked;\n // \tconst request: IUpdateContactRequest = {\n // \t\tcontactID: this.contact.id,\n // \t\tspaceID: this.space?.id,\n // \t\troles: {\n // \t\t\tadd: checked ? [role.id] : undefined,\n // \t\t\tremove: checked ? undefined : [role.id],\n // \t\t},\n // \t};\n // \tthis.processingRoleIDs.push(role.id);\n // \tconst complete = () =>\n // \t\t(this.processingRoleIDs = this.processingRoleIDs.filter(\n // \t\t\t(id) => id !== role.id,\n // \t\t));\n // \tthis.contactService.updateContact(request).subscribe({\n // \t\terror: (err: unknown) => {\n // \t\t\tconsole.log('setContactRole error', err);\n // \t\t\tthis.errorLogger.logError(err, 'failed to set contact role');\n // \t\t\tcomplete();\n // \t\t\tthis.setRoles();\n // \t\t\tevent.preventDefault();\n // \t\t},\n // \t\tcomplete,\n // \t});\n // }\n}\n","<sneat-multi-selector\n title=\"Roles\"\n [allItems]=\"roles\"\n [selectedIDs]=\"contact?.brief?.roles\"\n/>\n<div style=\"height: 100px\">\n <!-- TODO(css): need a proper padding at bottom using CSS-->\n</div>\n"]}
@@ -0,0 +1,2 @@
1
+ export { ContactRolesInputComponent } from './contact-roles-input.component';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/components/contact-roles-input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC","sourcesContent":["export { ContactRolesInputComponent } from './contact-roles-input.component';\n"]}