@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,369 @@
1
+ import { Component, computed, EventEmitter, input, Input, Output, signal, ViewChild, inject, } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { IonButton, IonCard, IonIcon, IonLabel, IonSegment, IonSegmentButton, } from '@ionic/angular/standalone';
4
+ import { SneatUserService } from '@sneat/auth-core';
5
+ import { isNameEmpty } from '@sneat/auth-models';
6
+ import { excludeUndefined, formNexInAnimation, } from '@sneat/core';
7
+ import { getRelatedItemIDs, } from '@sneat/dto';
8
+ import { ClassName } from '@sneat/ui';
9
+ import { UserSpaceBriefProvider } from '../../../providers/user-space-brief.provider';
10
+ import { NewContactFormBaseComponent } from '../new-contact/new-contact-form-base.component';
11
+ import { AgeGroupFormComponent } from '../person-forms/age-group';
12
+ import { EmailsFormComponent } from '../emails-form';
13
+ import { GenderFormComponent } from '../person-forms/gender-form';
14
+ import { NamesFormComponent, } from '../person-forms/names-form';
15
+ import { PhonesFormComponent } from '../phones-form';
16
+ import { ContactRelationshipFormComponent } from '../relationship-form/contact-relationship-form.component';
17
+ import { RolesFormComponent } from '../roles-form';
18
+ import * as i0 from "@angular/core";
19
+ import * as i1 from "@angular/forms";
20
+ export class PersonWizardComponent extends NewContactFormBaseComponent {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.userService = inject(SneatUserService);
24
+ this.requires = {};
25
+ this.disabled = false;
26
+ this.hideRelationship = false;
27
+ this.hidePetOption = true;
28
+ this.displayAgeGroupValue = false;
29
+ this.nameFields = {
30
+ firstName: { hide: false },
31
+ lastName: { hide: false },
32
+ middleName: { hide: false },
33
+ nickName: { hide: true, required: false },
34
+ fullName: { hide: false, required: false },
35
+ };
36
+ this.$fields = input.required(...(ngDevMode ? [{ debugName: "$fields" }] : []));
37
+ this.isReadyToSubmit = false;
38
+ this.isReadyToSubmitChange = new EventEmitter();
39
+ this.show = {};
40
+ this.$wizardStep = signal('contactType', ...(ngDevMode ? [{ debugName: "$wizardStep" }] : []));
41
+ this.tab = 'emails';
42
+ this.$relatedToUser = computed(() => {
43
+ const userContactID = this.userSpaceBrief.$userContactID();
44
+ return userContactID
45
+ ? {
46
+ spaceID: this.$spaceID(),
47
+ module: 'contactus',
48
+ collection: 'contacts',
49
+ itemID: userContactID,
50
+ }
51
+ : undefined;
52
+ }, ...(ngDevMode ? [{ debugName: "$relatedToUser" }] : []));
53
+ this.$relatedTo = computed(() => {
54
+ const key = this.$relatedToUser();
55
+ if (!key) {
56
+ return undefined;
57
+ }
58
+ return {
59
+ key,
60
+ title: '', // getContactTitle({ id: '', ...this.$contact() }),
61
+ related: this.$contact().dbo.related || {},
62
+ };
63
+ }, ...(ngDevMode ? [{ debugName: "$relatedTo" }] : []));
64
+ // private readonly $userSpaces = signal<
65
+ // Readonly<Record<string, IUserSpaceBrief>> | undefined
66
+ // >(undefined);
67
+ this.userSpaceBrief = new UserSpaceBriefProvider(this.destroyed$, this.$spaceID, this.userService);
68
+ this.formOrder = [
69
+ { id: 'contactType' },
70
+ { id: 'ageGroup' },
71
+ { id: 'gender' },
72
+ // relatedAs to current user or a specific contact
73
+ {
74
+ id: 'relatedAs',
75
+ filter: (a) => a.contactType === 'person',
76
+ },
77
+ { id: 'name' },
78
+ {
79
+ id: 'roles',
80
+ filter: (a) => a.contactType !== 'animal' && a.spaceType !== 'family',
81
+ },
82
+ {
83
+ id: 'communicationChannels',
84
+ filter: (a) => a.contactType !== 'animal',
85
+ },
86
+ { id: 'submitButton' },
87
+ ];
88
+ }
89
+ ngOnInit() {
90
+ this.setContactData(this.$contact().dbo, {
91
+ name: 'contactType',
92
+ hasValue: true,
93
+ });
94
+ // runInInjectionContext(this.injector, () => {
95
+ // effect(() => {
96
+ // // This effect currently does not makes sense
97
+ // // as we have different component for different contact types
98
+ // const contact = this.$contact();
99
+ // console.log('$contact() changed', contact);
100
+ // if (this.$wizardStep() === 'contactType') {
101
+ // if (contact.dbo.type) {
102
+ // this.onContactTypeChanged();
103
+ // this.setContactData(contact.dbo, {
104
+ // name: 'contactType',
105
+ // hasValue: true,
106
+ // });
107
+ // }
108
+ // }
109
+ // });
110
+ // });
111
+ }
112
+ ngOnChanges(changes) {
113
+ if (changes['fields']) {
114
+ this.openNext('contactType');
115
+ }
116
+ }
117
+ setContactData(dbo, changedProp) {
118
+ this.contactChange.emit({ ...this.$contact(), dbo });
119
+ if (changedProp.hasValue) {
120
+ this.openNext(changedProp.name);
121
+ }
122
+ }
123
+ onNameChanged(name) {
124
+ if (!this.show.nameNext && !isNameEmpty(name)) {
125
+ this.show = { ...this.show, nameNext: true };
126
+ }
127
+ this.setContactData({ ...this.$contact().dbo, names: name }, { name: 'name', hasValue: false });
128
+ }
129
+ onContactChanged() {
130
+ // this.setRelatedPerson(
131
+ // { ...this.newPerson, petKind },
132
+ // { name: 'petKind', hasValue: !!petKind },
133
+ // );
134
+ }
135
+ onGenderChanged(gender) {
136
+ this.setContactData({ ...this.$contact().dbo, gender }, { name: 'gender', hasValue: !!gender });
137
+ }
138
+ onContactTypeChanged() {
139
+ switch (this.$contact().dbo.type) {
140
+ case 'animal':
141
+ this.nameFields = {
142
+ ...this.nameFields,
143
+ nickName: { hide: false, required: true },
144
+ firstName: { hide: true },
145
+ lastName: { hide: true },
146
+ middleName: { hide: true },
147
+ };
148
+ break;
149
+ case 'person':
150
+ this.nameFields = {
151
+ ...this.nameFields,
152
+ nickName: { hide: true, required: false },
153
+ firstName: { hide: false },
154
+ lastName: { hide: false },
155
+ middleName: { hide: false },
156
+ };
157
+ break;
158
+ }
159
+ }
160
+ onAgeGroupChanged(ageGroup) {
161
+ if (ageGroup) {
162
+ this.show = { ...this.show, ageGroup: this.displayAgeGroupValue };
163
+ }
164
+ if (this.$contact().dbo.type !== 'person') {
165
+ this.setContactData({ ...this.$contact().dbo, type: 'person' }, {
166
+ name: 'contactType',
167
+ hasValue: true,
168
+ });
169
+ this.onContactTypeChanged();
170
+ }
171
+ const relatedPerson = excludeUndefined({
172
+ ...this.$contact().dbo,
173
+ ageGroup: ageGroup === 'pet' ? undefined : ageGroup,
174
+ type: ageGroup === 'pet' ? 'animal' : 'person',
175
+ });
176
+ this.setContactData(relatedPerson, {
177
+ name: 'ageGroup',
178
+ hasValue: !!ageGroup || this.$contact().dbo.type === 'animal',
179
+ });
180
+ }
181
+ onEmailsChanged(emails) {
182
+ this.setContactData({ ...this.$contact().dbo, emails: {} }, {
183
+ name: 'communicationChannels',
184
+ hasValue: !!Object.keys(emails || {})?.length ||
185
+ !!Object.keys(this.$contact().dbo.phones || {})?.length,
186
+ });
187
+ }
188
+ onPhoneChanged(phones) {
189
+ this.setContactData({ ...this.$contact().dbo, phones: {} }, {
190
+ name: 'communicationChannels',
191
+ hasValue: !!Object.keys(phones || {})?.length ||
192
+ !!Object.keys(this.$contact().dbo.emails || {})?.length,
193
+ });
194
+ }
195
+ onRelatedAsChanged(rolesToTarget) {
196
+ // 'PersonWizardState.onRelatedAsChanged() rolesToTarget=',
197
+ // rolesToTarget,
198
+ const itemID = this.userSpaceBrief.$userContactID();
199
+ if (!itemID) {
200
+ throw new Error('!$userContactID()');
201
+ }
202
+ const userContactRelatedItem = {
203
+ rolesToItem: rolesToTarget,
204
+ };
205
+ const related = {
206
+ contactus: {
207
+ contacts: { [itemID]: userContactRelatedItem },
208
+ },
209
+ };
210
+ let contactDbo = {
211
+ ...this.$contact().dbo,
212
+ related,
213
+ };
214
+ if (!this.$contact().dbo.ageGroup) {
215
+ const relationship = Object.keys(rolesToTarget || []).length
216
+ ? Object.keys(rolesToTarget)[0]
217
+ : undefined;
218
+ contactDbo = {
219
+ ...this.$contact().dbo,
220
+ ageGroup: relationship === 'parent' ||
221
+ relationship === 'spouse' ||
222
+ relationship === 'partner' ||
223
+ relationship === 'grandparent'
224
+ ? 'adult'
225
+ : 'child',
226
+ };
227
+ }
228
+ this.setContactData(contactDbo, {
229
+ name: 'relatedAs',
230
+ hasValue: !!rolesToTarget,
231
+ });
232
+ }
233
+ nextFromName(event) {
234
+ event.stopPropagation();
235
+ if (!this.namesFormComponent) {
236
+ throw Error('!namesFormComponent');
237
+ }
238
+ if (!this.namesFormComponent.namesForm) {
239
+ throw Error('!namesFormComponent.namesForm');
240
+ }
241
+ this.namesFormComponent.namesForm.markAllAsTouched();
242
+ if (!this.namesFormComponent.namesForm.valid) {
243
+ const errors = this.namesFormComponent?.namesForm.errors;
244
+ if (errors) {
245
+ alert('Problem with names:\n' +
246
+ Object.entries(errors)
247
+ .map((err) => `\t${err[0]}: ${err[1]}`)
248
+ .join('\n'));
249
+ }
250
+ return;
251
+ }
252
+ this.openNext('name');
253
+ this.show = { ...this.show, nameNext: false };
254
+ }
255
+ skipStep(step) {
256
+ if (!step.filter) {
257
+ return false;
258
+ }
259
+ const { dbo } = this.$contact();
260
+ const spaceType = this.$spaceType(), contactType = this.$contactType();
261
+ if (!spaceType || !contactType) {
262
+ return false;
263
+ }
264
+ if (!step?.filter({
265
+ spaceType: spaceType,
266
+ contactType: contactType,
267
+ dbo: dbo,
268
+ })) {
269
+ return false;
270
+ }
271
+ return false;
272
+ }
273
+ openNext(currentStepID) {
274
+ for (;;) {
275
+ const i = this.formOrder.findIndex((step) => step.id === currentStepID);
276
+ if (i < 0) {
277
+ // `openNext have not found ${currentStepID} in this.formOrder=${this.formOrder.join(
278
+ // ',',
279
+ // )}`,
280
+ return;
281
+ }
282
+ if (i === this.formOrder.length - 1) {
283
+ // last element
284
+ return;
285
+ }
286
+ const nextStep = this.formOrder[i + 1];
287
+ if (this.skipStep(nextStep)) {
288
+ currentStepID = nextStep.id;
289
+ continue;
290
+ }
291
+ if (!this.show[nextStep.id]) {
292
+ const nextField = this.$fields()[nextStep.id];
293
+ const showNextField = nextField ? !nextField.hide : true;
294
+ this.show = { ...this.show, [nextStep.id]: showNextField };
295
+ if (!showNextField) {
296
+ this.openNext(nextStep.id);
297
+ }
298
+ this.$wizardStep.set(nextStep.id);
299
+ if (this.stepHasValue(nextStep.id)) {
300
+ currentStepID = nextStep.id;
301
+ continue;
302
+ }
303
+ }
304
+ break; // <---------- Exit point
305
+ }
306
+ if (this.show.submitButton) {
307
+ this.isReadyToSubmit = true;
308
+ this.isReadyToSubmitChange.emit();
309
+ }
310
+ }
311
+ stepHasValue(name) {
312
+ const p = this.$contact().dbo;
313
+ switch (name) {
314
+ case 'name':
315
+ return !!p.names && Object.values(p.names).some((v) => !!v);
316
+ case 'ageGroup':
317
+ return !!p.ageGroup;
318
+ case 'gender':
319
+ return !!p.gender && p.gender !== 'unknown';
320
+ case 'relatedAs':
321
+ return (getRelatedItemIDs(p.related, 'contactus', 'contacts', this.$contact().space.id).length > 0);
322
+ case 'roles':
323
+ return !!p.roles?.length;
324
+ }
325
+ return undefined;
326
+ }
327
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PersonWizardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
328
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: PersonWizardComponent, isStandalone: true, selector: "sneat-person-wizard", inputs: { requires: { classPropertyName: "requires", publicName: "requires", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, hideRelationship: { classPropertyName: "hideRelationship", publicName: "hideRelationship", isSignal: false, isRequired: false, transformFunction: null }, hidePetOption: { classPropertyName: "hidePetOption", publicName: "hidePetOption", isSignal: false, isRequired: false, transformFunction: null }, displayAgeGroupValue: { classPropertyName: "displayAgeGroupValue", publicName: "displayAgeGroupValue", isSignal: false, isRequired: false, transformFunction: null }, nameFields: { classPropertyName: "nameFields", publicName: "nameFields", isSignal: false, isRequired: false, transformFunction: null }, $fields: { classPropertyName: "$fields", publicName: "$fields", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { isReadyToSubmitChange: "isReadyToSubmitChange" }, providers: [{ provide: ClassName, useValue: 'PersonWizardComponent' }], viewQueries: [{ propertyName: "namesFormComponent", first: true, predicate: NamesFormComponent, descendants: true }, { propertyName: "genderFormComponent", first: true, predicate: GenderFormComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!--<h2>Person wizard</h2>-->\n<!--<p>wizardStep: {{ wizardStep }}</p>-->\n<!--<p>fields: {{ fields | json }}</p>-->\n<!--<p>nameFields: {{ nameFields | json }}</p>-->\n<!--<p>show: {{ show | json }};</p>-->\n<!--<p>contact: {{ $contact() | json }}</p>-->\n<!--<p>wizardStep: {{wizardStep}}</p>-->\n\n<p>$wizardStep: {{ $wizardStep() }}</p>\n\n@if (show.ageGroup) {\n <sneat-age-group-form\n [spaceType]=\"$contact().space.type\"\n [hidePetOption]=\"hidePetOption\"\n [disabled]=\"disabled\"\n [$ageGroup]=\"$contact().dbo.ageGroup\"\n (ageGroupChange)=\"onAgeGroupChanged($event)\"\n />\n}\n\n@if (show.gender) {\n <ion-card>\n <sneat-gender-form\n [disabled]=\"disabled\"\n [$spaceID]=\"$spaceID()\"\n [$contactID]=\"undefined\"\n [$genderID]=\"$contact().dbo.gender\"\n (genderChange)=\"onGenderChanged($event)\"\n />\n </ion-card>\n}\n\n@if (!requires.relatedAs?.hide && show.relatedAs && $contact().space.id) {\n <sneat-contact-relationship-form\n [$contactID]=\"''\"\n [$userSpaceContactID]=\"null\"\n [isActive]=\"$wizardStep() === 'relatedAs'\"\n [disabled]=\"disabled\"\n [$space]=\"$contact().space\"\n [$relatedTo]=\"$relatedTo()\"\n [$ageGroup]=\"$contact().dbo.ageGroup\"\n (relatedAsChange)=\"onRelatedAsChanged($event)\"\n />\n <!--[relatedAs]=\"newPerson.related?.relatedAs?.length === 1 ? newPerson.relatedTo?.relatedAs?.[0] : undefined\"-->\n}\n\n@if (show.name) {\n <ion-card>\n <sneat-names-form\n [name]=\"$contact().dbo.names\"\n [isActive]=\"$wizardStep() === 'name'\"\n [showNextButton]=\"false\"\n [fields]=\"nameFields\"\n (namesChanged)=\"onNameChanged($event)\"\n [disabled]=\"disabled\"\n (next)=\"nextFromName($event)\"\n />\n </ion-card>\n}\n\n@if (!requires.roles?.hide && show.roles) {\n <sneat-roles-form\n [$space]=\"$contact().space\"\n [isActive]=\"$wizardStep() === 'roles'\"\n [disabled]=\"disabled\"\n />\n}\n\n@if (show.communicationChannels) {\n <ion-segment [(ngModel)]=\"tab\">\n <ion-segment-button value=\"emails\">Emails</ion-segment-button>\n <ion-segment-button value=\"phones\">Phones</ion-segment-button>\n </ion-segment>\n @switch (tab) {\n @case (\"emails\") {\n <sneat-emails-form\n [hideHeader]=\"true\"\n [emails]=\"$emails()\"\n (emailsChange)=\"onEmailsChanged($event)\"\n />\n }\n @case (\"phones\") {\n <sneat-phones-form\n [hideHeader]=\"true\"\n [phones]=\"$phones()\"\n (phonesChange)=\"onPhoneChanged($event)\"\n />\n }\n }\n}\n\n@if ($wizardStep() === \"communicationChannels\") {\n <ion-button\n class=\"ion-margin\"\n size=\"medium\"\n [color]=\"show.nameNext ? 'primary' : 'medium'\"\n (click)=\"openNext($wizardStep())\"\n >\n <ion-label>Next</ion-label>\n <ion-icon name=\"arrow-forward-circle-outline\" slot=\"end\"></ion-icon>\n </ion-button>\n}\n", dependencies: [{ kind: "component", type: AgeGroupFormComponent, selector: "sneat-age-group-form", inputs: ["spaceType", "$ageGroup", "disabled", "hidePetOption", "hideUndisclosedOption"], outputs: ["ageGroupChange"] }, { kind: "component", type: GenderFormComponent, selector: "sneat-gender-form", inputs: ["lastItemLines", "hideSkipButton", "disabled", "$spaceID", "$contactID", "$genderID"], outputs: ["genderChange"] }, { kind: "component", type: NamesFormComponent, selector: "sneat-names-form", inputs: ["showHeader", "name", "isActive", "disabled", "fields", "showNextButton"], outputs: ["keyupEnter", "namesChanged", "next"] }, { kind: "component", type: RolesFormComponent, selector: "sneat-roles-form", inputs: ["isActive", "disabled"], outputs: ["rolesChange"] }, { 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: PhonesFormComponent, selector: "sneat-phones-form", inputs: ["disabled", "hideHeader", "isActiveInWizard", "phones"], outputs: ["phonesChange"] }, { kind: "component", type: EmailsFormComponent, selector: "sneat-emails-form", inputs: ["hideHeader", "isActiveInWizard", "disabled", "emails"], outputs: ["emailsChange"] }, { 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: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: ContactRelationshipFormComponent, selector: "sneat-contact-relationship-form", inputs: ["$contactID", "$ageGroup", "$relatedTo", "$userSpaceContactID", "isActive", "disabled"], outputs: ["relatedAsChange"] }, { 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: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }], animations: [formNexInAnimation] }); }
329
+ }
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PersonWizardComponent, decorators: [{
331
+ type: Component,
332
+ args: [{ animations: [formNexInAnimation], imports: [
333
+ AgeGroupFormComponent,
334
+ GenderFormComponent,
335
+ NamesFormComponent,
336
+ RolesFormComponent,
337
+ FormsModule,
338
+ PhonesFormComponent,
339
+ EmailsFormComponent,
340
+ IonSegment,
341
+ IonSegmentButton,
342
+ IonCard,
343
+ ContactRelationshipFormComponent,
344
+ IonButton,
345
+ IonLabel,
346
+ IonIcon,
347
+ ], selector: 'sneat-person-wizard', providers: [{ provide: ClassName, useValue: 'PersonWizardComponent' }], template: "<!--<h2>Person wizard</h2>-->\n<!--<p>wizardStep: {{ wizardStep }}</p>-->\n<!--<p>fields: {{ fields | json }}</p>-->\n<!--<p>nameFields: {{ nameFields | json }}</p>-->\n<!--<p>show: {{ show | json }};</p>-->\n<!--<p>contact: {{ $contact() | json }}</p>-->\n<!--<p>wizardStep: {{wizardStep}}</p>-->\n\n<p>$wizardStep: {{ $wizardStep() }}</p>\n\n@if (show.ageGroup) {\n <sneat-age-group-form\n [spaceType]=\"$contact().space.type\"\n [hidePetOption]=\"hidePetOption\"\n [disabled]=\"disabled\"\n [$ageGroup]=\"$contact().dbo.ageGroup\"\n (ageGroupChange)=\"onAgeGroupChanged($event)\"\n />\n}\n\n@if (show.gender) {\n <ion-card>\n <sneat-gender-form\n [disabled]=\"disabled\"\n [$spaceID]=\"$spaceID()\"\n [$contactID]=\"undefined\"\n [$genderID]=\"$contact().dbo.gender\"\n (genderChange)=\"onGenderChanged($event)\"\n />\n </ion-card>\n}\n\n@if (!requires.relatedAs?.hide && show.relatedAs && $contact().space.id) {\n <sneat-contact-relationship-form\n [$contactID]=\"''\"\n [$userSpaceContactID]=\"null\"\n [isActive]=\"$wizardStep() === 'relatedAs'\"\n [disabled]=\"disabled\"\n [$space]=\"$contact().space\"\n [$relatedTo]=\"$relatedTo()\"\n [$ageGroup]=\"$contact().dbo.ageGroup\"\n (relatedAsChange)=\"onRelatedAsChanged($event)\"\n />\n <!--[relatedAs]=\"newPerson.related?.relatedAs?.length === 1 ? newPerson.relatedTo?.relatedAs?.[0] : undefined\"-->\n}\n\n@if (show.name) {\n <ion-card>\n <sneat-names-form\n [name]=\"$contact().dbo.names\"\n [isActive]=\"$wizardStep() === 'name'\"\n [showNextButton]=\"false\"\n [fields]=\"nameFields\"\n (namesChanged)=\"onNameChanged($event)\"\n [disabled]=\"disabled\"\n (next)=\"nextFromName($event)\"\n />\n </ion-card>\n}\n\n@if (!requires.roles?.hide && show.roles) {\n <sneat-roles-form\n [$space]=\"$contact().space\"\n [isActive]=\"$wizardStep() === 'roles'\"\n [disabled]=\"disabled\"\n />\n}\n\n@if (show.communicationChannels) {\n <ion-segment [(ngModel)]=\"tab\">\n <ion-segment-button value=\"emails\">Emails</ion-segment-button>\n <ion-segment-button value=\"phones\">Phones</ion-segment-button>\n </ion-segment>\n @switch (tab) {\n @case (\"emails\") {\n <sneat-emails-form\n [hideHeader]=\"true\"\n [emails]=\"$emails()\"\n (emailsChange)=\"onEmailsChanged($event)\"\n />\n }\n @case (\"phones\") {\n <sneat-phones-form\n [hideHeader]=\"true\"\n [phones]=\"$phones()\"\n (phonesChange)=\"onPhoneChanged($event)\"\n />\n }\n }\n}\n\n@if ($wizardStep() === \"communicationChannels\") {\n <ion-button\n class=\"ion-margin\"\n size=\"medium\"\n [color]=\"show.nameNext ? 'primary' : 'medium'\"\n (click)=\"openNext($wizardStep())\"\n >\n <ion-label>Next</ion-label>\n <ion-icon name=\"arrow-forward-circle-outline\" slot=\"end\"></ion-icon>\n </ion-button>\n}\n" }]
348
+ }], propDecorators: { requires: [{
349
+ type: Input
350
+ }], disabled: [{
351
+ type: Input
352
+ }], hideRelationship: [{
353
+ type: Input
354
+ }], hidePetOption: [{
355
+ type: Input
356
+ }], displayAgeGroupValue: [{
357
+ type: Input
358
+ }], nameFields: [{
359
+ type: Input
360
+ }], $fields: [{ type: i0.Input, args: [{ isSignal: true, alias: "$fields", required: true }] }], isReadyToSubmitChange: [{
361
+ type: Output
362
+ }], namesFormComponent: [{
363
+ type: ViewChild,
364
+ args: [NamesFormComponent]
365
+ }], genderFormComponent: [{
366
+ type: ViewChild,
367
+ args: [GenderFormComponent]
368
+ }] } });
369
+ //# sourceMappingURL=person-wizard.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"person-wizard.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/contactus/shared/src/lib/components/contact-forms/pesson-wizard/person-wizard.component.ts","../../../../../../../../../libs/contactus/shared/src/lib/components/contact-forms/pesson-wizard/person-wizard.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n computed,\n EventEmitter,\n input,\n Input,\n OnChanges,\n OnInit,\n Output,\n signal,\n SimpleChanges,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n IonButton,\n IonCard,\n IonIcon,\n IonLabel,\n IonSegment,\n IonSegmentButton,\n} from '@ionic/angular/standalone';\nimport { SneatUserService } from '@sneat/auth-core';\nimport { IPersonNames, isNameEmpty } from '@sneat/auth-models';\nimport {\n AgeGroupID,\n excludeUndefined,\n formNexInAnimation,\n Gender,\n SpaceType,\n} from '@sneat/core';\nimport { IFormField } from '@sneat/core';\nimport {\n ContactType,\n IContactBase,\n IEmail,\n IPersonRequirements,\n IPhone,\n IRelatedPerson,\n} from '@sneat/contactus-core';\nimport {\n getRelatedItemIDs,\n IRelatedItem,\n IRelatedModules,\n IRelatedTo,\n IRelationshipRoles,\n ISpaceModuleItemRef,\n} from '@sneat/dto';\nimport { ClassName } from '@sneat/ui';\nimport { UserSpaceBriefProvider } from '../../../providers/user-space-brief.provider';\nimport { NewContactFormBaseComponent } from '../new-contact/new-contact-form-base.component';\nimport { AgeGroupFormComponent } from '../person-forms/age-group';\nimport { EmailsFormComponent } from '../emails-form';\nimport { GenderFormComponent } from '../person-forms/gender-form';\nimport {\n INamesFormFields,\n NamesFormComponent,\n} from '../person-forms/names-form';\nimport { PhonesFormComponent } from '../phones-form';\nimport { ContactRelationshipFormComponent } from '../relationship-form/contact-relationship-form.component';\nimport { RolesFormComponent } from '../roles-form';\n\nexport interface PersonWizardState {\n // wizard state\n readonly contactType?: boolean;\n readonly ageGroup?: boolean;\n readonly name?: boolean;\n readonly nameNext?: boolean;\n readonly gender?: boolean;\n readonly roles?: boolean;\n readonly relatedAs?: boolean;\n readonly communicationChannels?: boolean;\n readonly submitButton?: boolean;\n}\n\ntype WizardStepID = keyof PersonWizardState;\n\n// interface WizardStepCondition {\n// \treadonly contactTypes: readonly MemberContactType[];\n// \treadonly contactRoles?: readonly string[];\n// \treadonly spaceTypes?: readonly SpaceType[];\n// \treadonly isRelatedToSpaceItem?: boolean;\n// \treadonly isMember?: boolean;\n// }\n\ninterface IWizardFilterArgs {\n readonly contactType: ContactType;\n readonly spaceType: SpaceType;\n readonly dbo?: IContactBase;\n}\n\ntype StepFilterFunc = (args: IWizardFilterArgs) => boolean;\n\n// interface WizardStepFilter {\n// \treadonly hideFor?: WizardStepCondition;\n// \treadonly showFor?: WizardStepCondition;\n// }\n\ninterface WizardStepDef {\n readonly id: WizardStepID;\n readonly filter?: StepFilterFunc;\n}\n\nexport type IPersonFormWizardFields = {\n [id in keyof PersonWizardState]: IFormField;\n};\n\n@Component({\n animations: [formNexInAnimation],\n imports: [\n AgeGroupFormComponent,\n GenderFormComponent,\n NamesFormComponent,\n RolesFormComponent,\n FormsModule,\n PhonesFormComponent,\n EmailsFormComponent,\n IonSegment,\n IonSegmentButton,\n IonCard,\n ContactRelationshipFormComponent,\n IonButton,\n IonLabel,\n IonIcon,\n ],\n selector: 'sneat-person-wizard',\n templateUrl: './person-wizard.component.html',\n providers: [{ provide: ClassName, useValue: 'PersonWizardComponent' }],\n})\nexport class PersonWizardComponent\n extends NewContactFormBaseComponent\n implements OnInit, OnChanges\n{\n private readonly userService = inject(SneatUserService);\n\n @Input() requires: IPersonRequirements = {};\n @Input() disabled = false;\n @Input() hideRelationship = false;\n @Input() hidePetOption = true;\n\n @Input() displayAgeGroupValue = false;\n\n @Input() nameFields: INamesFormFields = {\n firstName: { hide: false },\n lastName: { hide: false },\n middleName: { hide: false },\n nickName: { hide: true, required: false },\n fullName: { hide: false, required: false },\n };\n\n public readonly $fields = input.required<Readonly<IPersonFormWizardFields>>();\n\n public isReadyToSubmit = false;\n @Output() readonly isReadyToSubmitChange = new EventEmitter<boolean>();\n\n public show: PersonWizardState = {};\n\n public readonly $wizardStep = signal<WizardStepID>('contactType');\n\n tab?: 'emails' | 'phones' = 'emails';\n\n @ViewChild(NamesFormComponent) namesFormComponent?: NamesFormComponent;\n @ViewChild(GenderFormComponent) genderFormComponent?: GenderFormComponent;\n\n protected readonly $relatedToUser = computed<ISpaceModuleItemRef | undefined>(\n () => {\n const userContactID = this.userSpaceBrief.$userContactID();\n return userContactID\n ? {\n spaceID: this.$spaceID(),\n module: 'contactus',\n collection: 'contacts',\n itemID: userContactID,\n }\n : undefined;\n },\n );\n protected readonly $relatedTo = computed<IRelatedTo | undefined>(() => {\n const key = this.$relatedToUser();\n if (!key) {\n return undefined;\n }\n return {\n key,\n title: '', // getContactTitle({ id: '', ...this.$contact() }),\n related: this.$contact().dbo.related || {},\n };\n });\n\n // private readonly $userSpaces = signal<\n // \tReadonly<Record<string, IUserSpaceBrief>> | undefined\n // >(undefined);\n\n protected readonly userSpaceBrief = new UserSpaceBriefProvider(\n this.destroyed$,\n this.$spaceID,\n this.userService,\n );\n\n public ngOnInit() {\n this.setContactData(this.$contact().dbo, {\n name: 'contactType',\n hasValue: true,\n });\n // runInInjectionContext(this.injector, () => {\n // \teffect(() => {\n // \t\t// This effect currently does not makes sense\n // \t\t// as we have different component for different contact types\n // \t\tconst contact = this.$contact();\n // \t\tconsole.log('$contact() changed', contact);\n // \t\tif (this.$wizardStep() === 'contactType') {\n // \t\t\tif (contact.dbo.type) {\n // \t\t\t\tthis.onContactTypeChanged();\n // \t\t\t\tthis.setContactData(contact.dbo, {\n // \t\t\t\t\tname: 'contactType',\n // \t\t\t\t\thasValue: true,\n // \t\t\t\t});\n // \t\t\t}\n // \t\t}\n // \t});\n // });\n }\n\n private readonly formOrder: readonly WizardStepDef[] = [\n { id: 'contactType' },\n { id: 'ageGroup' },\n { id: 'gender' },\n // relatedAs to current user or a specific contact\n {\n id: 'relatedAs',\n filter: (a) => a.contactType === 'person',\n },\n { id: 'name' },\n {\n id: 'roles',\n filter: (a) => a.contactType !== 'animal' && a.spaceType !== 'family',\n },\n {\n id: 'communicationChannels',\n filter: (a) => a.contactType !== 'animal',\n },\n { id: 'submitButton' },\n ];\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['fields']) {\n this.openNext('contactType');\n }\n }\n\n private setContactData(\n dbo: IContactBase,\n changedProp: Readonly<{\n readonly name: WizardStepID;\n readonly hasValue: boolean;\n }>,\n ): void {\n this.contactChange.emit({ ...this.$contact(), dbo });\n if (changedProp.hasValue) {\n this.openNext(changedProp.name);\n }\n }\n\n protected onNameChanged(name: IPersonNames): void {\n if (!this.show.nameNext && !isNameEmpty(name)) {\n this.show = { ...this.show, nameNext: true };\n }\n this.setContactData(\n { ...this.$contact().dbo, names: name },\n { name: 'name', hasValue: false },\n );\n }\n\n protected onContactChanged(): void {\n // this.setRelatedPerson(\n // \t{ ...this.newPerson, petKind },\n // \t{ name: 'petKind', hasValue: !!petKind },\n // );\n }\n\n protected onGenderChanged(gender?: Gender): void {\n this.setContactData(\n { ...this.$contact().dbo, gender },\n { name: 'gender', hasValue: !!gender },\n );\n }\n\n private onContactTypeChanged(): void {\n switch (this.$contact().dbo.type) {\n case 'animal':\n this.nameFields = {\n ...this.nameFields,\n nickName: { hide: false, required: true },\n firstName: { hide: true },\n lastName: { hide: true },\n middleName: { hide: true },\n };\n break;\n case 'person':\n this.nameFields = {\n ...this.nameFields,\n nickName: { hide: true, required: false },\n firstName: { hide: false },\n lastName: { hide: false },\n middleName: { hide: false },\n };\n break;\n }\n }\n\n protected onAgeGroupChanged(ageGroup?: AgeGroupID): void {\n if (ageGroup) {\n this.show = { ...this.show, ageGroup: this.displayAgeGroupValue };\n }\n if (this.$contact().dbo.type !== 'person') {\n this.setContactData(\n { ...this.$contact().dbo, type: 'person' },\n {\n name: 'contactType',\n hasValue: true,\n },\n );\n this.onContactTypeChanged();\n }\n const relatedPerson: IRelatedPerson = excludeUndefined({\n ...this.$contact().dbo,\n ageGroup: ageGroup === 'pet' ? undefined : ageGroup,\n type: ageGroup === 'pet' ? 'animal' : 'person',\n });\n this.setContactData(relatedPerson, {\n name: 'ageGroup',\n hasValue: !!ageGroup || this.$contact().dbo.type === 'animal',\n });\n }\n\n protected onEmailsChanged(emails: readonly IEmail[]): void {\n this.setContactData(\n { ...this.$contact().dbo, emails: {} },\n {\n name: 'communicationChannels',\n hasValue:\n !!Object.keys(emails || {})?.length ||\n !!Object.keys(this.$contact().dbo.phones || {})?.length,\n },\n );\n }\n\n protected onPhoneChanged(phones: readonly IPhone[]): void {\n this.setContactData(\n { ...this.$contact().dbo, phones: {} },\n {\n name: 'communicationChannels',\n hasValue:\n !!Object.keys(phones || {})?.length ||\n !!Object.keys(this.$contact().dbo.emails || {})?.length,\n },\n );\n }\n\n protected onRelatedAsChanged(rolesToTarget: IRelationshipRoles): void {\n // 'PersonWizardState.onRelatedAsChanged() rolesToTarget=',\n // rolesToTarget,\n\n const itemID = this.userSpaceBrief.$userContactID();\n if (!itemID) {\n throw new Error('!$userContactID()');\n }\n\n const userContactRelatedItem: IRelatedItem = {\n rolesToItem: rolesToTarget,\n };\n\n const related: IRelatedModules = {\n contactus: {\n contacts: { [itemID]: userContactRelatedItem },\n },\n };\n\n let contactDbo: IContactBase = {\n ...this.$contact().dbo,\n related,\n };\n\n if (!this.$contact().dbo.ageGroup) {\n const relationship = Object.keys(rolesToTarget || []).length\n ? Object.keys(rolesToTarget)[0]\n : undefined;\n contactDbo = {\n ...this.$contact().dbo,\n ageGroup:\n relationship === 'parent' ||\n relationship === 'spouse' ||\n relationship === 'partner' ||\n relationship === 'grandparent'\n ? 'adult'\n : 'child',\n };\n }\n this.setContactData(contactDbo, {\n name: 'relatedAs',\n hasValue: !!rolesToTarget,\n });\n }\n\n protected nextFromName(event: Event): void {\n event.stopPropagation();\n\n if (!this.namesFormComponent) {\n throw Error('!namesFormComponent');\n }\n if (!this.namesFormComponent.namesForm) {\n throw Error('!namesFormComponent.namesForm');\n }\n\n this.namesFormComponent.namesForm.markAllAsTouched();\n if (!this.namesFormComponent.namesForm.valid) {\n const errors = this.namesFormComponent?.namesForm.errors;\n if (errors) {\n alert(\n 'Problem with names:\\n' +\n Object.entries(errors)\n .map((err) => `\\t${err[0]}: ${err[1]}`)\n .join('\\n'),\n );\n }\n return;\n }\n this.openNext('name');\n this.show = { ...this.show, nameNext: false };\n }\n\n private skipStep(step: WizardStepDef): boolean {\n if (!step.filter) {\n return false;\n }\n\n const { dbo } = this.$contact();\n const spaceType = this.$spaceType(),\n contactType = this.$contactType();\n if (!spaceType || !contactType) {\n return false;\n }\n if (\n !step?.filter({\n spaceType: spaceType,\n contactType: contactType,\n dbo: dbo,\n })\n ) {\n return false;\n }\n\n return false;\n }\n\n protected openNext(currentStepID: keyof PersonWizardState): void {\n for (;;) {\n const i = this.formOrder.findIndex((step) => step.id === currentStepID);\n if (i < 0) {\n // `openNext have not found ${currentStepID} in this.formOrder=${this.formOrder.join(\n // ',',\n // )}`,\n return;\n }\n if (i === this.formOrder.length - 1) {\n // last element\n return;\n }\n const nextStep = this.formOrder[i + 1];\n if (this.skipStep(nextStep)) {\n currentStepID = nextStep.id;\n continue;\n }\n\n if (!this.show[nextStep.id]) {\n const nextField = this.$fields()[nextStep.id];\n const showNextField = nextField ? !nextField.hide : true;\n this.show = { ...this.show, [nextStep.id]: showNextField };\n if (!showNextField) {\n this.openNext(nextStep.id);\n }\n this.$wizardStep.set(nextStep.id);\n if (this.stepHasValue(nextStep.id)) {\n currentStepID = nextStep.id;\n continue;\n }\n }\n break; // <---------- Exit point\n }\n if (this.show.submitButton) {\n this.isReadyToSubmit = true;\n this.isReadyToSubmitChange.emit();\n }\n }\n\n private stepHasValue(name: WizardStepID): boolean | undefined {\n const p = this.$contact().dbo;\n switch (name) {\n case 'name':\n return !!p.names && Object.values(p.names).some((v) => !!v);\n case 'ageGroup':\n return !!p.ageGroup;\n case 'gender':\n return !!p.gender && p.gender !== 'unknown';\n case 'relatedAs':\n return (\n getRelatedItemIDs(\n p.related,\n 'contactus',\n 'contacts',\n this.$contact().space.id,\n ).length > 0\n );\n case 'roles':\n return !!p.roles?.length;\n }\n return undefined;\n }\n}\n","<!--<h2>Person wizard</h2>-->\n<!--<p>wizardStep: {{ wizardStep }}</p>-->\n<!--<p>fields: {{ fields | json }}</p>-->\n<!--<p>nameFields: {{ nameFields | json }}</p>-->\n<!--<p>show: {{ show | json }};</p>-->\n<!--<p>contact: {{ $contact() | json }}</p>-->\n<!--<p>wizardStep: {{wizardStep}}</p>-->\n\n<p>$wizardStep: {{ $wizardStep() }}</p>\n\n@if (show.ageGroup) {\n <sneat-age-group-form\n [spaceType]=\"$contact().space.type\"\n [hidePetOption]=\"hidePetOption\"\n [disabled]=\"disabled\"\n [$ageGroup]=\"$contact().dbo.ageGroup\"\n (ageGroupChange)=\"onAgeGroupChanged($event)\"\n />\n}\n\n@if (show.gender) {\n <ion-card>\n <sneat-gender-form\n [disabled]=\"disabled\"\n [$spaceID]=\"$spaceID()\"\n [$contactID]=\"undefined\"\n [$genderID]=\"$contact().dbo.gender\"\n (genderChange)=\"onGenderChanged($event)\"\n />\n </ion-card>\n}\n\n@if (!requires.relatedAs?.hide && show.relatedAs && $contact().space.id) {\n <sneat-contact-relationship-form\n [$contactID]=\"''\"\n [$userSpaceContactID]=\"null\"\n [isActive]=\"$wizardStep() === 'relatedAs'\"\n [disabled]=\"disabled\"\n [$space]=\"$contact().space\"\n [$relatedTo]=\"$relatedTo()\"\n [$ageGroup]=\"$contact().dbo.ageGroup\"\n (relatedAsChange)=\"onRelatedAsChanged($event)\"\n />\n <!--[relatedAs]=\"newPerson.related?.relatedAs?.length === 1 ? newPerson.relatedTo?.relatedAs?.[0] : undefined\"-->\n}\n\n@if (show.name) {\n <ion-card>\n <sneat-names-form\n [name]=\"$contact().dbo.names\"\n [isActive]=\"$wizardStep() === 'name'\"\n [showNextButton]=\"false\"\n [fields]=\"nameFields\"\n (namesChanged)=\"onNameChanged($event)\"\n [disabled]=\"disabled\"\n (next)=\"nextFromName($event)\"\n />\n </ion-card>\n}\n\n@if (!requires.roles?.hide && show.roles) {\n <sneat-roles-form\n [$space]=\"$contact().space\"\n [isActive]=\"$wizardStep() === 'roles'\"\n [disabled]=\"disabled\"\n />\n}\n\n@if (show.communicationChannels) {\n <ion-segment [(ngModel)]=\"tab\">\n <ion-segment-button value=\"emails\">Emails</ion-segment-button>\n <ion-segment-button value=\"phones\">Phones</ion-segment-button>\n </ion-segment>\n @switch (tab) {\n @case (\"emails\") {\n <sneat-emails-form\n [hideHeader]=\"true\"\n [emails]=\"$emails()\"\n (emailsChange)=\"onEmailsChanged($event)\"\n />\n }\n @case (\"phones\") {\n <sneat-phones-form\n [hideHeader]=\"true\"\n [phones]=\"$phones()\"\n (phonesChange)=\"onPhoneChanged($event)\"\n />\n }\n }\n}\n\n@if ($wizardStep() === \"communicationChannels\") {\n <ion-button\n class=\"ion-margin\"\n size=\"medium\"\n [color]=\"show.nameNext ? 'primary' : 'medium'\"\n (click)=\"openNext($wizardStep())\"\n >\n <ion-label>Next</ion-label>\n <ion-icon name=\"arrow-forward-circle-outline\" slot=\"end\"></ion-icon>\n </ion-button>\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './pet-kind-and-breed-form.component';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../libs/contactus/shared/src/lib/components/contact-forms/pet-kind-and-breed-form/index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC","sourcesContent":["export * from './pet-kind-and-breed-form.component';\n"]}
@@ -0,0 +1,66 @@
1
+ import { Component, EventEmitter, Output } from '@angular/core';
2
+ import { IonCard, IonItemDivider, IonLabel } from '@ionic/angular/standalone';
3
+ import { ClassName, SelectFromListComponent } from '@sneat/ui';
4
+ import { ContactTypeAnimal } from '@sneat/contactus-core';
5
+ import { EditContactFormBaseComponent } from '../contact-form-base.component';
6
+ import * as i0 from "@angular/core";
7
+ export class PetKindAndBreedFormComponent extends EditContactFormBaseComponent {
8
+ constructor() {
9
+ super();
10
+ this.petKindChange = new EventEmitter();
11
+ this.breeds = [
12
+ { id: 'bulldog', title: 'Bulldog' },
13
+ { id: 'beagle', title: 'Beagle' },
14
+ { id: 'poodle', title: 'Poodle' },
15
+ { id: 'golden-retriever', title: 'Golden Retriever' },
16
+ { id: 'other', title: 'Other' },
17
+ ];
18
+ this.petKinds = [
19
+ { id: 'dog', emoji: '🐕', title: 'Dog' },
20
+ { id: 'cat', emoji: '🐈', title: 'Cat' },
21
+ { id: 'amphibian', title: 'Amphibian', emoji: '🐸' },
22
+ { id: 'bird', emoji: '🐦', title: 'Bird' },
23
+ { id: 'fish', emoji: '🐠', title: 'Fish' },
24
+ { id: 'rodent', title: 'Rodent', emoji: '🐹' },
25
+ // { id: 'mouse', emoji: '🐭', title: 'Mouse' },
26
+ // { id: 'rat', emoji: '🐁', title: 'Rat' },
27
+ // { id: 'hamster', emoji: '🐹', title: 'Hamster' },
28
+ { id: 'horse', emoji: '🐴', title: 'Horse' },
29
+ { id: 'reptile', title: 'Reptile', emoji: '🐍' },
30
+ { id: 'turtle', emoji: '🐢', title: 'Turtle' },
31
+ // { id: 'snake', emoji: '🐍', title: 'Snake' },
32
+ // { id: 'lizard', emoji: '🦎', title: 'Lizard' },
33
+ { id: 'other', emoji: '🐾', title: 'Other' },
34
+ ];
35
+ }
36
+ onPetKindChanged(petKind) {
37
+ const contact = this.$contact();
38
+ this.contactChange.emit({
39
+ ...contact,
40
+ dbo: {
41
+ ...(contact?.dbo || { type: ContactTypeAnimal }),
42
+ petKind: petKind,
43
+ petBreed: petKind ? contact?.dbo?.petBreed : undefined,
44
+ },
45
+ });
46
+ }
47
+ onPetBreedChanged(petBreed) {
48
+ const contact = this.$contact();
49
+ this.contactChange.emit({
50
+ ...contact,
51
+ dbo: {
52
+ ...(contact?.dbo || { type: ContactTypeAnimal }),
53
+ petBreed,
54
+ },
55
+ });
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PetKindAndBreedFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: PetKindAndBreedFormComponent, isStandalone: true, selector: "sneat-pet-kind-and-breed-form", outputs: { petKindChange: "petKindChange" }, providers: [{ provide: ClassName, useValue: 'PetKindAndBreedFormComponent' }], usesInheritance: true, ngImport: i0, template: "@let petKind = $contact().dbo.petKind;\n\n<ion-card>\n @if (!petKind) {\n <ion-item-divider color=\"primary\">\n <ion-label>What kind of an animal is your pet?</ion-label>\n </ion-item-divider>\n }\n <sneat-select-from-list\n label=\"Pet kind\"\n [value]=\"petKind\"\n [items]=\"petKinds\"\n (valueChange)=\"onPetKindChanged($event)\"\n />\n\n @if (petKind === \"dog\") {\n @if (!$contact().dbo.petBreed) {\n <ion-item-divider color=\"primary\">\n <ion-label>What breed is your dog?</ion-label>\n </ion-item-divider>\n }\n <sneat-select-from-list\n label=\"Breed\"\n [value]=\"\"\n [items]=\"breeds\"\n (valueChange)=\"onPetBreedChanged($event)\"\n />\n }\n</ion-card>\n", dependencies: [{ kind: "component", type: SelectFromListComponent, selector: "sneat-select-from-list", inputs: ["value", "filterLabel", "label", "listLabel", "listLabelColor", "isFilterable", "isLoading", "items", "items$", "lastItemLines", "labelPlacement", "justify", "other", "canAdd", "filterItem", "selectMode", "isReadonly", "$isProcessing", "sortBy"], outputs: ["valueChange", "filterChanged"] }, { 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"] }] }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PetKindAndBreedFormComponent, decorators: [{
61
+ type: Component,
62
+ args: [{ imports: [SelectFromListComponent, IonCard, IonItemDivider, IonLabel], selector: 'sneat-pet-kind-and-breed-form', providers: [{ provide: ClassName, useValue: 'PetKindAndBreedFormComponent' }], template: "@let petKind = $contact().dbo.petKind;\n\n<ion-card>\n @if (!petKind) {\n <ion-item-divider color=\"primary\">\n <ion-label>What kind of an animal is your pet?</ion-label>\n </ion-item-divider>\n }\n <sneat-select-from-list\n label=\"Pet kind\"\n [value]=\"petKind\"\n [items]=\"petKinds\"\n (valueChange)=\"onPetKindChanged($event)\"\n />\n\n @if (petKind === \"dog\") {\n @if (!$contact().dbo.petBreed) {\n <ion-item-divider color=\"primary\">\n <ion-label>What breed is your dog?</ion-label>\n </ion-item-divider>\n }\n <sneat-select-from-list\n label=\"Breed\"\n [value]=\"\"\n [items]=\"breeds\"\n (valueChange)=\"onPetBreedChanged($event)\"\n />\n }\n</ion-card>\n" }]
63
+ }], ctorParameters: () => [], propDecorators: { petKindChange: [{
64
+ type: Output
65
+ }] } });
66
+ //# sourceMappingURL=pet-kind-and-breed-form.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pet-kind-and-breed-form.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/contactus/shared/src/lib/components/contact-forms/pet-kind-and-breed-form/pet-kind-and-breed-form.component.ts","../../../../../../../../../libs/contactus/shared/src/lib/components/contact-forms/pet-kind-and-breed-form/pet-kind-and-breed-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, Output } from '@angular/core';\nimport { IonCard, IonItemDivider, IonLabel } from '@ionic/angular/standalone';\nimport { ClassName, ISelectItem, SelectFromListComponent } from '@sneat/ui';\nimport { ContactTypeAnimal, PetKind } from '@sneat/contactus-core';\nimport { EditContactFormBaseComponent } from '../contact-form-base.component';\n\n@Component({\n imports: [SelectFromListComponent, IonCard, IonItemDivider, IonLabel],\n selector: 'sneat-pet-kind-and-breed-form',\n templateUrl: './pet-kind-and-breed-form.component.html',\n providers: [{ provide: ClassName, useValue: 'PetKindAndBreedFormComponent' }],\n})\nexport class PetKindAndBreedFormComponent extends EditContactFormBaseComponent {\n @Output() readonly petKindChange = new EventEmitter<PetKind | undefined>();\n\n protected breeds: readonly ISelectItem[] = [\n { id: 'bulldog', title: 'Bulldog' },\n { id: 'beagle', title: 'Beagle' },\n { id: 'poodle', title: 'Poodle' },\n { id: 'golden-retriever', title: 'Golden Retriever' },\n { id: 'other', title: 'Other' },\n ];\n\n protected readonly petKinds: ISelectItem[] = [\n { id: 'dog', emoji: '🐕', title: 'Dog' },\n { id: 'cat', emoji: '🐈', title: 'Cat' },\n { id: 'amphibian', title: 'Amphibian', emoji: '🐸' },\n { id: 'bird', emoji: '🐦', title: 'Bird' },\n { id: 'fish', emoji: '🐠', title: 'Fish' },\n { id: 'rodent', title: 'Rodent', emoji: '🐹' },\n // { id: 'mouse', emoji: '🐭', title: 'Mouse' },\n // { id: 'rat', emoji: '🐁', title: 'Rat' },\n // { id: 'hamster', emoji: '🐹', title: 'Hamster' },\n { id: 'horse', emoji: '🐴', title: 'Horse' },\n { id: 'reptile', title: 'Reptile', emoji: '🐍' },\n { id: 'turtle', emoji: '🐢', title: 'Turtle' },\n // { id: 'snake', emoji: '🐍', title: 'Snake' },\n // { id: 'lizard', emoji: '🦎', title: 'Lizard' },\n { id: 'other', emoji: '🐾', title: 'Other' },\n ];\n\n public constructor() {\n super();\n }\n\n protected onPetKindChanged(petKind: string): void {\n const contact = this.$contact();\n this.contactChange.emit({\n ...contact,\n dbo: {\n ...(contact?.dbo || { type: ContactTypeAnimal }),\n petKind: petKind as PetKind,\n petBreed: petKind ? contact?.dbo?.petBreed : undefined,\n },\n });\n }\n\n protected onPetBreedChanged(petBreed: string): void {\n const contact = this.$contact();\n this.contactChange.emit({\n ...contact,\n dbo: {\n ...(contact?.dbo || { type: ContactTypeAnimal }),\n petBreed,\n },\n });\n }\n}\n","@let petKind = $contact().dbo.petKind;\n\n<ion-card>\n @if (!petKind) {\n <ion-item-divider color=\"primary\">\n <ion-label>What kind of an animal is your pet?</ion-label>\n </ion-item-divider>\n }\n <sneat-select-from-list\n label=\"Pet kind\"\n [value]=\"petKind\"\n [items]=\"petKinds\"\n (valueChange)=\"onPetKindChanged($event)\"\n />\n\n @if (petKind === \"dog\") {\n @if (!$contact().dbo.petBreed) {\n <ion-item-divider color=\"primary\">\n <ion-label>What breed is your dog?</ion-label>\n </ion-item-divider>\n }\n <sneat-select-from-list\n label=\"Breed\"\n [value]=\"\"\n [items]=\"breeds\"\n (valueChange)=\"onPetBreedChanged($event)\"\n />\n }\n</ion-card>\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './phones-form.component';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../libs/contactus/shared/src/lib/components/contact-forms/phones-form/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC","sourcesContent":["export * from './phones-form.component';\n"]}