@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.
- package/esm2022/index.js +4 -0
- package/esm2022/index.js.map +1 -0
- package/esm2022/lib/components/address-form/address-form.component.js +182 -0
- package/esm2022/lib/components/address-form/address-form.component.js.map +1 -0
- package/esm2022/lib/components/address-form/index.js +2 -0
- package/esm2022/lib/components/address-form/index.js.map +1 -0
- package/esm2022/lib/components/basic-contact-form/basic-contact-form.component.js +71 -0
- package/esm2022/lib/components/basic-contact-form/basic-contact-form.component.js.map +1 -0
- package/esm2022/lib/components/basic-contact-form/index.js +2 -0
- package/esm2022/lib/components/basic-contact-form/index.js.map +1 -0
- package/esm2022/lib/components/contact-comm-channels/comm-channel-form.component.js +90 -0
- package/esm2022/lib/components/contact-comm-channels/comm-channel-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-comm-channels/comm-channel-item.component.js +128 -0
- package/esm2022/lib/components/contact-comm-channels/comm-channel-item.component.js.map +1 -0
- package/esm2022/lib/components/contact-comm-channels/comm-channels-list.component.js +30 -0
- package/esm2022/lib/components/contact-comm-channels/comm-channels-list.component.js.map +1 -0
- package/esm2022/lib/components/contact-comm-channels/contact-comm-channels.component.js +16 -0
- package/esm2022/lib/components/contact-comm-channels/contact-comm-channels.component.js.map +1 -0
- package/esm2022/lib/components/contact-comm-channels/contact-emails.component.js +30 -0
- package/esm2022/lib/components/contact-comm-channels/contact-emails.component.js.map +1 -0
- package/esm2022/lib/components/contact-comm-channels/contact-phones.component.js +30 -0
- package/esm2022/lib/components/contact-comm-channels/contact-phones.component.js.map +1 -0
- package/esm2022/lib/components/contact-comm-channels/index.js +2 -0
- package/esm2022/lib/components/contact-comm-channels/index.js.map +1 -0
- package/esm2022/lib/components/contact-details/contact-details.component.js +235 -0
- package/esm2022/lib/components/contact-details/contact-details.component.js.map +1 -0
- package/esm2022/lib/components/contact-details/index.js +2 -0
- package/esm2022/lib/components/contact-details/index.js.map +1 -0
- package/esm2022/lib/components/contact-details/related-contacts.component.js +116 -0
- package/esm2022/lib/components/contact-details/related-contacts.component.js.map +1 -0
- package/esm2022/lib/components/contact-dob/contact-dob.component.js +57 -0
- package/esm2022/lib/components/contact-dob/contact-dob.component.js.map +1 -0
- package/esm2022/lib/components/contact-dob/index.js +2 -0
- package/esm2022/lib/components/contact-dob/index.js.map +1 -0
- package/esm2022/lib/components/contact-events.js +2 -0
- package/esm2022/lib/components/contact-events.js.map +1 -0
- package/esm2022/lib/components/contact-forms/contact-form-base.component.js +30 -0
- package/esm2022/lib/components/contact-forms/contact-form-base.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/emails-form/emails-form.component.js +76 -0
- package/esm2022/lib/components/contact-forms/emails-form/emails-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/emails-form/index.js +2 -0
- package/esm2022/lib/components/contact-forms/emails-form/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/index.js +11 -0
- package/esm2022/lib/components/contact-forms/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/location-form/index.js +2 -0
- package/esm2022/lib/components/contact-forms/location-form/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/location-form/location-form.component.js +194 -0
- package/esm2022/lib/components/contact-forms/location-form/location-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/new-contact/index.js +5 -0
- package/esm2022/lib/components/contact-forms/new-contact/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/new-contact/new-company-form.component.js +115 -0
- package/esm2022/lib/components/contact-forms/new-contact/new-company-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/new-contact/new-contact-form-base.component.js +34 -0
- package/esm2022/lib/components/contact-forms/new-contact/new-contact-form-base.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/new-contact/new-contact-form.component.js +82 -0
- package/esm2022/lib/components/contact-forms/new-contact/new-contact-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/new-contact/new-person-form.component.js +282 -0
- package/esm2022/lib/components/contact-forms/new-contact/new-person-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/new-contact/new-pet-form.component.js +25 -0
- package/esm2022/lib/components/contact-forms/new-contact/new-pet-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/person-forms/age-group/age-group-form.component.js +64 -0
- package/esm2022/lib/components/contact-forms/person-forms/age-group/age-group-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/person-forms/age-group/index.js +2 -0
- package/esm2022/lib/components/contact-forms/person-forms/age-group/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/person-forms/gender-form/gender-form.component.js +118 -0
- package/esm2022/lib/components/contact-forms/person-forms/gender-form/gender-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/person-forms/gender-form/index.js +2 -0
- package/esm2022/lib/components/contact-forms/person-forms/gender-form/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/person-forms/names-form/index.js +2 -0
- package/esm2022/lib/components/contact-forms/person-forms/names-form/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/person-forms/names-form/names-form.component.js +296 -0
- package/esm2022/lib/components/contact-forms/person-forms/names-form/names-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/pesson-wizard/index.js +2 -0
- package/esm2022/lib/components/contact-forms/pesson-wizard/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/pesson-wizard/person-wizard.component.js +369 -0
- package/esm2022/lib/components/contact-forms/pesson-wizard/person-wizard.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/pet-kind-and-breed-form/index.js +2 -0
- package/esm2022/lib/components/contact-forms/pet-kind-and-breed-form/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/pet-kind-and-breed-form/pet-kind-and-breed-form.component.js +66 -0
- package/esm2022/lib/components/contact-forms/pet-kind-and-breed-form/pet-kind-and-breed-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/phones-form/index.js +2 -0
- package/esm2022/lib/components/contact-forms/phones-form/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/phones-form/phones-form.component.js +79 -0
- package/esm2022/lib/components/contact-forms/phones-form/phones-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/relationship-form/contact-relationship-form.component.js +125 -0
- package/esm2022/lib/components/contact-forms/relationship-form/contact-relationship-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/relationship-form/index.js +2 -0
- package/esm2022/lib/components/contact-forms/relationship-form/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/relationship-form/relationship-form.component.js +136 -0
- package/esm2022/lib/components/contact-forms/relationship-form/relationship-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/role-form/contact-role-form.component.js +98 -0
- package/esm2022/lib/components/contact-forms/role-form/contact-role-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/role-form/index.js +2 -0
- package/esm2022/lib/components/contact-forms/role-form/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/roles-form/index.js +2 -0
- package/esm2022/lib/components/contact-forms/roles-form/index.js.map +1 -0
- package/esm2022/lib/components/contact-forms/roles-form/roles-form.component.js +59 -0
- package/esm2022/lib/components/contact-forms/roles-form/roles-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-forms/space-related-form.component.js +32 -0
- package/esm2022/lib/components/contact-forms/space-related-form.component.js.map +1 -0
- package/esm2022/lib/components/contact-input/contact-input.component.js +151 -0
- package/esm2022/lib/components/contact-input/contact-input.component.js.map +1 -0
- package/esm2022/lib/components/contact-input/index.js +2 -0
- package/esm2022/lib/components/contact-input/index.js.map +1 -0
- package/esm2022/lib/components/contact-locations/contact-locations.component.js +52 -0
- package/esm2022/lib/components/contact-locations/contact-locations.component.js.map +1 -0
- package/esm2022/lib/components/contact-locations/index.js +2 -0
- package/esm2022/lib/components/contact-locations/index.js.map +1 -0
- package/esm2022/lib/components/contact-modules-menu/contact-modules-menu.component.js +29 -0
- package/esm2022/lib/components/contact-modules-menu/contact-modules-menu.component.js.map +1 -0
- package/esm2022/lib/components/contact-modules-menu/index.js +2 -0
- package/esm2022/lib/components/contact-modules-menu/index.js.map +1 -0
- package/esm2022/lib/components/contact-role-badges/contact-role-badges.component.js +44 -0
- package/esm2022/lib/components/contact-role-badges/contact-role-badges.component.js.map +1 -0
- package/esm2022/lib/components/contact-roles-input/contact-roles-input.component.js +37 -0
- package/esm2022/lib/components/contact-roles-input/contact-roles-input.component.js.map +1 -0
- package/esm2022/lib/components/contact-roles-input/index.js +2 -0
- package/esm2022/lib/components/contact-roles-input/index.js.map +1 -0
- package/esm2022/lib/components/contacts-by-type/contacts-by-type.component.js +200 -0
- package/esm2022/lib/components/contacts-by-type/contacts-by-type.component.js.map +1 -0
- package/esm2022/lib/components/contacts-by-type/index.js +2 -0
- package/esm2022/lib/components/contacts-by-type/index.js.map +1 -0
- package/esm2022/lib/components/contacts-checklist/contacts-checklist-item.component.js +32 -0
- package/esm2022/lib/components/contacts-checklist/contacts-checklist-item.component.js.map +1 -0
- package/esm2022/lib/components/contacts-checklist/contacts-checklist.component.js +140 -0
- package/esm2022/lib/components/contacts-checklist/contacts-checklist.component.js.map +1 -0
- package/esm2022/lib/components/contacts-checklist/index.js +2 -0
- package/esm2022/lib/components/contacts-checklist/index.js.map +1 -0
- package/esm2022/lib/components/contacts-component/contacts.component.js +200 -0
- package/esm2022/lib/components/contacts-component/contacts.component.js.map +1 -0
- package/esm2022/lib/components/contacts-component.commands.js +2 -0
- package/esm2022/lib/components/contacts-component.commands.js.map +1 -0
- package/esm2022/lib/components/contacts-list/contacts-list.component.js +32 -0
- package/esm2022/lib/components/contacts-list/contacts-list.component.js.map +1 -0
- package/esm2022/lib/components/contacts-list/index.js +3 -0
- package/esm2022/lib/components/contacts-list/index.js.map +1 -0
- package/esm2022/lib/components/contacts-list-item/contacts-list-item.component.js +138 -0
- package/esm2022/lib/components/contacts-list-item/contacts-list-item.component.js.map +1 -0
- package/esm2022/lib/components/contacts-list-item/related-as.component.js +34 -0
- package/esm2022/lib/components/contacts-list-item/related-as.component.js.map +1 -0
- package/esm2022/lib/components/contacts-selector/contacts-selector-input.component.js +91 -0
- package/esm2022/lib/components/contacts-selector/contacts-selector-input.component.js.map +1 -0
- package/esm2022/lib/components/contacts-selector/contacts-selector.component.js +415 -0
- package/esm2022/lib/components/contacts-selector/contacts-selector.component.js.map +1 -0
- package/esm2022/lib/components/contacts-selector/contacts-selector.interfaces.js +2 -0
- package/esm2022/lib/components/contacts-selector/contacts-selector.interfaces.js.map +1 -0
- package/esm2022/lib/components/contacts-selector/contacts-selector.module.js +28 -0
- package/esm2022/lib/components/contacts-selector/contacts-selector.module.js.map +1 -0
- package/esm2022/lib/components/contacts-selector/contacts-selector.service.js +18 -0
- package/esm2022/lib/components/contacts-selector/contacts-selector.service.js.map +1 -0
- package/esm2022/lib/components/contacts-selector/lib-exports.js +6 -0
- package/esm2022/lib/components/contacts-selector/lib-exports.js.map +1 -0
- package/esm2022/lib/components/contactus-module.base.component.js +4 -0
- package/esm2022/lib/components/contactus-module.base.component.js.map +1 -0
- package/esm2022/lib/components/inlist-options/inlist-age-group.component.js +53 -0
- package/esm2022/lib/components/inlist-options/inlist-age-group.component.js.map +1 -0
- package/esm2022/lib/components/inlist-options/inlist-options.component.js +27 -0
- package/esm2022/lib/components/inlist-options/inlist-options.component.js.map +1 -0
- package/esm2022/lib/components/invite-links/invite-links.component.js +87 -0
- package/esm2022/lib/components/invite-links/invite-links.component.js.map +1 -0
- package/esm2022/lib/components/lib-exports.js +29 -0
- package/esm2022/lib/components/lib-exports.js.map +1 -0
- package/esm2022/lib/components/members-as-badges/contacts-as-badges.component.js +39 -0
- package/esm2022/lib/components/members-as-badges/contacts-as-badges.component.js.map +1 -0
- package/esm2022/lib/components/members-as-badges/index.js +2 -0
- package/esm2022/lib/components/members-as-badges/index.js.map +1 -0
- package/esm2022/lib/components/members-by-role/family-members.component.js +180 -0
- package/esm2022/lib/components/members-by-role/family-members.component.js.map +1 -0
- package/esm2022/lib/components/members-by-role/index.js +4 -0
- package/esm2022/lib/components/members-by-role/index.js.map +1 -0
- package/esm2022/lib/components/members-by-role/member-group.js +2 -0
- package/esm2022/lib/components/members-by-role/member-group.js.map +1 -0
- package/esm2022/lib/components/members-by-role/members-by-role.component.js +34 -0
- package/esm2022/lib/components/members-by-role/members-by-role.component.js.map +1 -0
- package/esm2022/lib/components/members-card-header/members-card-header.component.js +33 -0
- package/esm2022/lib/components/members-card-header/members-card-header.component.js.map +1 -0
- package/esm2022/lib/components/members-list/index.js +2 -0
- package/esm2022/lib/components/members-list/index.js.map +1 -0
- package/esm2022/lib/components/members-list/members-list.component.js +164 -0
- package/esm2022/lib/components/members-list/members-list.component.js.map +1 -0
- package/esm2022/lib/components/members-short-list-card/members-short-list-card.component.js +60 -0
- package/esm2022/lib/components/members-short-list-card/members-short-list-card.component.js.map +1 -0
- package/esm2022/lib/components/shared-with/index.js +2 -0
- package/esm2022/lib/components/shared-with/index.js.map +1 -0
- package/esm2022/lib/components/shared-with/shared-with.component.js +25 -0
- package/esm2022/lib/components/shared-with/shared-with.component.js.map +1 -0
- package/esm2022/lib/components/with-new-contact-input.js +18 -0
- package/esm2022/lib/components/with-new-contact-input.js.map +1 -0
- package/esm2022/lib/constants.js +2 -0
- package/esm2022/lib/constants.js.map +1 -0
- package/esm2022/lib/index.js +3 -0
- package/esm2022/lib/index.js.map +1 -0
- package/esm2022/lib/modals/contact-names-modal/contact-names-modal.component.js +88 -0
- package/esm2022/lib/modals/contact-names-modal/contact-names-modal.component.js.map +1 -0
- package/esm2022/lib/modals/invite-modal/index.js +2 -0
- package/esm2022/lib/modals/invite-modal/index.js.map +1 -0
- package/esm2022/lib/modals/invite-modal/invite-modal.component.js +255 -0
- package/esm2022/lib/modals/invite-modal/invite-modal.component.js.map +1 -0
- package/esm2022/lib/pipes/contact-title.pipe.js +25 -0
- package/esm2022/lib/pipes/contact-title.pipe.js.map +1 -0
- package/esm2022/lib/pipes/index.js +4 -0
- package/esm2022/lib/pipes/index.js.map +1 -0
- package/esm2022/lib/pipes/person-title.pipe.js +21 -0
- package/esm2022/lib/pipes/person-title.pipe.js.map +1 -0
- package/esm2022/lib/pipes/selected-contacts.pipe.js +22 -0
- package/esm2022/lib/pipes/selected-contacts.pipe.js.map +1 -0
- package/esm2022/lib/providers/user-space-brief.provider.js +30 -0
- package/esm2022/lib/providers/user-space-brief.provider.js.map +1 -0
- package/esm2022/lib/ui-types.js +2 -0
- package/esm2022/lib/ui-types.js.map +1 -0
- package/esm2022/sneat-contactus-shared.js +5 -0
- package/esm2022/sneat-contactus-shared.js.map +1 -0
- package/index.d.ts +3 -0
- package/lib/components/address-form/address-form.component.d.ts +51 -0
- package/lib/components/address-form/index.d.ts +1 -0
- package/lib/components/basic-contact-form/basic-contact-form.component.d.ts +20 -0
- package/lib/components/basic-contact-form/index.d.ts +1 -0
- package/lib/components/contact-comm-channels/comm-channel-form.component.d.ts +20 -0
- package/lib/components/contact-comm-channels/comm-channel-item.component.d.ts +24 -0
- package/lib/components/contact-comm-channels/comm-channels-list.component.d.ts +15 -0
- package/lib/components/contact-comm-channels/contact-comm-channels.component.d.ts +7 -0
- package/lib/components/contact-comm-channels/contact-emails.component.d.ts +9 -0
- package/lib/components/contact-comm-channels/contact-phones.component.d.ts +9 -0
- package/lib/components/contact-comm-channels/index.d.ts +1 -0
- package/lib/components/contact-details/contact-details.component.d.ts +32 -0
- package/lib/components/contact-details/index.d.ts +1 -0
- package/lib/components/contact-details/related-contacts.component.d.ts +24 -0
- package/lib/components/contact-dob/contact-dob.component.d.ts +13 -0
- package/lib/components/contact-dob/index.d.ts +1 -0
- package/lib/components/contact-events.d.ts +6 -0
- package/lib/components/contact-forms/contact-form-base.component.d.ts +15 -0
- package/lib/components/contact-forms/emails-form/emails-form.component.d.ts +27 -0
- package/lib/components/contact-forms/emails-form/index.d.ts +1 -0
- package/lib/components/contact-forms/index.d.ts +10 -0
- package/lib/components/contact-forms/location-form/index.d.ts +1 -0
- package/lib/components/contact-forms/location-form/location-form.component.d.ts +39 -0
- package/lib/components/contact-forms/new-contact/index.d.ts +4 -0
- package/lib/components/contact-forms/new-contact/new-company-form.component.d.ts +26 -0
- package/lib/components/contact-forms/new-contact/new-contact-form-base.component.d.ts +15 -0
- package/lib/components/contact-forms/new-contact/new-contact-form.component.d.ts +20 -0
- package/lib/components/contact-forms/new-contact/new-person-form.component.d.ts +51 -0
- package/lib/components/contact-forms/new-contact/new-pet-form.component.d.ts +8 -0
- package/lib/components/contact-forms/person-forms/age-group/age-group-form.component.d.ts +17 -0
- package/lib/components/contact-forms/person-forms/age-group/index.d.ts +1 -0
- package/lib/components/contact-forms/person-forms/gender-form/gender-form.component.d.ts +22 -0
- package/lib/components/contact-forms/person-forms/gender-form/index.d.ts +1 -0
- package/lib/components/contact-forms/person-forms/names-form/index.d.ts +1 -0
- package/lib/components/contact-forms/person-forms/names-form/names-form.component.d.ts +63 -0
- package/lib/components/contact-forms/pesson-wizard/index.d.ts +1 -0
- package/lib/components/contact-forms/pesson-wizard/person-wizard.component.d.ts +63 -0
- package/lib/components/contact-forms/pet-kind-and-breed-form/index.d.ts +1 -0
- package/lib/components/contact-forms/pet-kind-and-breed-form/pet-kind-and-breed-form.component.d.ts +14 -0
- package/lib/components/contact-forms/phones-form/index.d.ts +1 -0
- package/lib/components/contact-forms/phones-form/phones-form.component.d.ts +21 -0
- package/lib/components/contact-forms/relationship-form/contact-relationship-form.component.d.ts +24 -0
- package/lib/components/contact-forms/relationship-form/index.d.ts +1 -0
- package/lib/components/contact-forms/relationship-form/relationship-form.component.d.ts +34 -0
- package/lib/components/contact-forms/role-form/contact-role-form.component.d.ts +33 -0
- package/lib/components/contact-forms/role-form/index.d.ts +1 -0
- package/lib/components/contact-forms/roles-form/index.d.ts +1 -0
- package/lib/components/contact-forms/roles-form/roles-form.component.d.ts +21 -0
- package/lib/components/contact-forms/space-related-form.component.d.ts +11 -0
- package/lib/components/contact-input/contact-input.component.d.ts +36 -0
- package/lib/components/contact-input/index.d.ts +1 -0
- package/lib/components/contact-locations/contact-locations.component.d.ts +14 -0
- package/lib/components/contact-locations/index.d.ts +1 -0
- package/lib/components/contact-modules-menu/contact-modules-menu.component.d.ts +12 -0
- package/lib/components/contact-modules-menu/index.d.ts +1 -0
- package/lib/components/contact-role-badges/contact-role-badges.component.d.ts +12 -0
- package/lib/components/contact-roles-input/contact-roles-input.component.d.ts +18 -0
- package/lib/components/contact-roles-input/index.d.ts +1 -0
- package/lib/components/contacts-by-type/contacts-by-type.component.d.ts +38 -0
- package/lib/components/contacts-by-type/index.d.ts +1 -0
- package/lib/components/contacts-checklist/contacts-checklist-item.component.d.ts +21 -0
- package/lib/components/contacts-checklist/contacts-checklist.component.d.ts +40 -0
- package/lib/components/contacts-checklist/index.d.ts +1 -0
- package/lib/components/contacts-component/contacts.component.d.ts +45 -0
- package/lib/components/contacts-component.commands.d.ts +5 -0
- package/lib/components/contacts-list/contacts-list.component.d.ts +11 -0
- package/lib/components/contacts-list/index.d.ts +2 -0
- package/lib/components/contacts-list-item/contacts-list-item.component.d.ts +29 -0
- package/lib/components/contacts-list-item/related-as.component.d.ts +16 -0
- package/lib/components/contacts-selector/contacts-selector-input.component.d.ts +24 -0
- package/lib/components/contacts-selector/contacts-selector.component.d.ts +80 -0
- package/lib/components/contacts-selector/contacts-selector.interfaces.d.ts +22 -0
- package/lib/components/contacts-selector/contacts-selector.module.d.ts +6 -0
- package/lib/components/contacts-selector/contacts-selector.service.d.ts +10 -0
- package/lib/components/contacts-selector/lib-exports.d.ts +5 -0
- package/lib/components/contactus-module.base.component.d.ts +4 -0
- package/lib/components/inlist-options/inlist-age-group.component.d.ts +12 -0
- package/lib/components/inlist-options/inlist-options.component.d.ts +18 -0
- package/lib/components/invite-links/invite-links.component.d.ts +28 -0
- package/lib/components/lib-exports.d.ts +27 -0
- package/lib/components/members-as-badges/contacts-as-badges.component.d.ts +18 -0
- package/lib/components/members-as-badges/index.d.ts +1 -0
- package/lib/components/members-by-role/family-members.component.d.ts +21 -0
- package/lib/components/members-by-role/index.d.ts +3 -0
- package/lib/components/members-by-role/member-group.d.ts +9 -0
- package/lib/components/members-by-role/members-by-role.component.d.ts +12 -0
- package/lib/components/members-card-header/members-card-header.component.d.ts +13 -0
- package/lib/components/members-list/index.d.ts +1 -0
- package/lib/components/members-list/members-list.component.d.ts +32 -0
- package/lib/components/members-short-list-card/members-short-list-card.component.d.ts +12 -0
- package/lib/components/shared-with/index.d.ts +1 -0
- package/lib/components/shared-with/shared-with.component.d.ts +6 -0
- package/lib/components/with-new-contact-input.d.ts +10 -0
- package/lib/constants.d.ts +13 -0
- package/lib/index.d.ts +2 -0
- package/lib/modals/contact-names-modal/contact-names-modal.component.d.ts +15 -0
- package/lib/modals/invite-modal/index.d.ts +1 -0
- package/lib/modals/invite-modal/invite-modal.component.d.ts +49 -0
- package/lib/pipes/contact-title.pipe.d.ts +10 -0
- package/lib/pipes/index.d.ts +3 -0
- package/lib/pipes/person-title.pipe.d.ts +9 -0
- package/lib/pipes/selected-contacts.pipe.d.ts +8 -0
- package/lib/providers/user-space-brief.provider.d.ts +12 -0
- package/lib/ui-types.d.ts +9 -0
- package/package.json +27 -0
- package/sneat-contactus-shared.d.ts +5 -0
- package/tsconfig.lib.prod.tsbuildinfo +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invite-modal.component.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/shared/src/lib/modals/invite-modal/invite-modal.component.ts","../../../../../../../../libs/contactus/shared/src/lib/modals/invite-modal/invite-modal.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Input,\n Pipe,\n PipeTransform,\n inject,\n} from '@angular/core';\nimport {\n FormControl,\n FormsModule,\n ReactiveFormsModule,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport {\n IonButton,\n IonButtons,\n IonCardContent,\n IonContent,\n IonHeader,\n IonIcon,\n IonInput,\n IonItem,\n IonLabel,\n IonSegment,\n IonSegmentButton,\n IonSpinner,\n IonText,\n IonTextarea,\n IonTitle,\n IonToolbar,\n ModalController,\n ToastController,\n} from '@ionic/angular/standalone';\nimport {\n IContactWithBriefAndSpace,\n ICreatePersonalInviteRequest,\n ICreatePersonalInviteResponse,\n InviteChannel,\n} from '@sneat/contactus-core';\nimport {\n ContactTitlePipe,\n getContactTitle,\n} from '../../pipes/contact-title.pipe';\nimport { ErrorLogger, IErrorLogger } from '@sneat/core';\nimport { ISpaceContext } from '@sneat/space-models';\nimport { InviteService } from '@sneat/contactus-services';\nimport { Observable, throwError } from 'rxjs';\n\n@Pipe({ name: 'encodeSmsText' })\nexport class EncodeSmsText implements PipeTransform {\n transform(text: string): string | undefined {\n return encodeURIComponent(text);\n }\n}\n\n@Component({\n imports: [\n IonHeader,\n IonToolbar,\n IonTitle,\n IonButtons,\n IonButton,\n IonIcon,\n IonContent,\n IonSegment,\n IonSegmentButton,\n IonItem,\n IonInput,\n ReactiveFormsModule,\n FormsModule,\n IonCardContent,\n IonTextarea,\n IonLabel,\n IonText,\n IonSpinner,\n ContactTitlePipe,\n ],\n providers: [InviteService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'sneat-invite-modal',\n templateUrl: 'invite-modal.component.html',\n})\nexport class InviteModalComponent {\n private readonly errorLogger = inject<IErrorLogger>(ErrorLogger);\n private readonly modalController = inject(ModalController);\n private readonly toastController = inject(ToastController);\n private readonly inviteService = inject(InviteService);\n\n @Input({ required: true }) space?: ISpaceContext;\n @Input() member?: IContactWithBriefAndSpace;\n\n tab: InviteChannel = 'email';\n link?: string;\n error?: string;\n\n protected creatingInvite = false;\n\n readonly email = new FormControl<string>('', [\n Validators.required,\n Validators.email,\n ]);\n readonly phone = new FormControl<string>('', Validators.required);\n readonly message = new FormControl<string>('');\n\n readonly emailForm = new UntypedFormGroup({\n email: this.email,\n message: this.message,\n });\n\n readonly smsForm = new UntypedFormGroup({\n phone: this.phone,\n message: this.message,\n });\n\n async close(): Promise<void> {\n await this.modalController.dismiss();\n }\n\n getInviteText(invite: { id: string; pin?: string }): string {\n if (!this.member) {\n throw new Error('!this.member');\n }\n const receiver = getContactTitle(this.member);\n let m = `Hi ${receiver}, please join our family @ Sneat.app - https://sneat.app/pwa/join/family?id=${invite.id}#pin=${invite.pin}`;\n if (this.message.value) {\n m += '\\n\\n' + this.message.value;\n }\n return m;\n }\n\n private composeInvite(\n channel: InviteChannel,\n protocol: 'sms' | 'mailto',\n address: string,\n ): void {\n this.creatingInvite = true;\n switch (protocol) {\n case 'sms':\n this.smsForm.disable();\n break;\n case 'mailto':\n this.emailForm.disable();\n break;\n }\n this.createInvite({ channel, address }).subscribe({\n next: (response) => {\n const m = this.getInviteText(response.invite);\n const body = encodeURIComponent(m);\n const url =\n protocol +\n `:${address}?subject=You+are+invited+to+join+${this.space?.type}&body=${body}`;\n this.creatingInvite = false;\n switch (protocol) {\n case 'sms':\n this.smsForm.enable();\n break;\n case 'mailto':\n this.emailForm.enable();\n break;\n }\n window.open(url);\n },\n error: (err) => {\n this.creatingInvite = false;\n switch (protocol) {\n case 'sms':\n this.smsForm.enable();\n break;\n case 'mailto':\n this.emailForm.enable();\n break;\n }\n this.errorLogger.logError(\n err,\n 'failed to create an invite for SMS channel',\n );\n },\n });\n }\n\n composeEmail(): void {\n this.composeInvite('email', 'mailto', this.email.value || '');\n }\n\n composeSMS(): void {\n this.composeInvite('sms', 'sms', this.phone.value || '');\n }\n\n sendInvite(): void {\n if (!this.space) {\n this.errorLogger.logError('can not send invite without team context');\n return;\n }\n if (!this.member) {\n this.errorLogger.logError('can not send invite without member context');\n return;\n }\n switch (this.tab) {\n case 'email':\n this.emailForm.markAllAsTouched();\n break;\n case 'sms':\n this.smsForm.markAllAsTouched();\n break;\n }\n\n if (this.tab === 'email' && !this.email.value) {\n this.error = 'Email address is required';\n return;\n }\n if (this.tab === 'sms' && !this.phone.value) {\n this.error = 'Phone number is required';\n return;\n }\n const address = this.tab === 'email' ? this.email.value : this.phone.value;\n\n this.createInvite({\n channel: this.tab,\n address: address || '',\n send: true,\n }).subscribe({\n next: async () => {\n // console.log('personal invite created:', response);\n await this.showToast(\n 'Invite has been created and will be sent shortly',\n 2000,\n );\n await this.modalController.dismiss();\n },\n error: this.errorLogger.logErrorHandler(\n 'failed to create an invite for a member',\n ),\n });\n }\n\n createInvite(to: {\n channel: InviteChannel;\n address?: string;\n send?: boolean;\n }): Observable<ICreatePersonalInviteResponse> {\n if (!this.space) {\n return throwError(() => 'can not create invite without team context');\n }\n if (!this.member) {\n return throwError(() => 'can not create invite without member context');\n }\n const request: ICreatePersonalInviteRequest = {\n spaceID: this.space.id,\n to: {\n ...to,\n memberID: this.member.id,\n },\n message: this.message.value || '',\n };\n return this.inviteService.createInviteForMember(request);\n }\n\n async copyLinkToClipboard() {\n if (!this.link) {\n return;\n }\n await navigator.clipboard.writeText(this.link);\n await this.showToast('Invite link has been copied to your clipboard');\n }\n\n async copyLinkWithInviteTextToClipboard() {\n if (!this.link) {\n return;\n }\n await navigator.clipboard.writeText(this.link);\n await this.showToast(\n 'Invite text with a link has been copied to your clipboard',\n );\n }\n\n private async showToast(message: string, duration = 1500): Promise<void> {\n await this.modalController.dismiss();\n const toast = await this.toastController.create({\n message,\n duration,\n position: 'middle',\n keyboardClose: true,\n color: 'tertiary',\n buttons: [{ role: 'cancel', icon: 'close' }],\n });\n await toast.present();\n }\n\n onTabChanged(): void {\n if (this.tab === 'link' && !this.link) {\n this.generateLink();\n }\n }\n\n private generateLink(): void {\n // console.log('generateLink()', this.space, this.member);\n if (!this.space) {\n return;\n }\n if (!this.member) {\n return;\n }\n const request: ICreatePersonalInviteRequest = {\n spaceID: this.space.id,\n to: {\n channel: 'link',\n memberID: this.member.id,\n },\n message: this.message.value || '',\n };\n this.inviteService.getInviteLinkForMember(request).subscribe({\n next: (response) => {\n // console.log('response', response);\n const { id, pin } = response.invite;\n const host = location.host.startsWith('localhost:')\n ? location.host\n : 'sneat.app/pwa';\n const protocol = location.host.startsWith('localhost:')\n ? 'http'\n : 'https';\n this.link = `${protocol}://${host}/join/${this.space?.brief?.type}?id=${id}#pin=${pin}`;\n },\n error: this.errorLogger.logErrorHandler(\n 'failed to generate an invite link',\n ),\n });\n }\n}\n","<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-title>\n @if (member) {\n Invite {{ member | contactTitle }} to join\n } @else {\n Invite member to join\n }\n </ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\">\n <ion-icon name=\"close-outline\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-segment [(ngModel)]=\"tab\" (ionChange)=\"onTabChanged()\">\n <ion-segment-button value=\"email\">By Email</ion-segment-button>\n <ion-segment-button value=\"sms\">By SMS</ion-segment-button>\n <ion-segment-button value=\"link\">Get link</ion-segment-button>\n </ion-segment>\n <form>\n <ion-item>\n @if (tab === \"email\") {\n <ion-input\n placeholder=\"email@address\"\n label=\"To\"\n labelPlacement=\"stacked\"\n [required]=\"true\"\n [formControl]=\"email\"\n />\n }\n @if (tab === \"sms\") {\n <ion-input\n label=\"Invite link\"\n labelPlacement=\"stacked\"\n placeholder=\"phone #\"\n [formControl]=\"phone\"\n />\n }\n @if (tab === \"link\") {\n <ion-input\n label=\"Invite link\"\n labelPlacement=\"stacked\"\n readonly=\"readonly\"\n [disabled]=\"!link\"\n [value]=\"link ?? 'Generating...'\"\n [color]=\"link ? 'primary' : 'medium'\"\n />\n @if (link) {\n <ion-buttons slot=\"end\">\n <ion-button color=\"medium\" (click)=\"copyLinkToClipboard()\">\n <ion-icon name=\"copy-outline\" />\n </ion-button>\n </ion-buttons>\n } @else {\n <ion-spinner color=\"warning\" slot=\"end\" name=\"lines\"></ion-spinner>\n }\n }\n </ion-item>\n <ion-item>\n <ion-textarea\n [formControl]=\"message\"\n maxlength=\"100\"\n label=\"Message\"\n labelPlacement=\"stacked\"\n />\n </ion-item>\n @switch (tab) {\n @case (\"email\") {\n <ion-card-content>\n <p>\n @if (!email.value) {\n <ion-text color=\"danger\"\n >Email address is required for sending an invite.</ion-text\n >\n }\n @if (email.value && !email.valid) {\n <ion-text color=\"danger\">\n A valid email address is required for sending an invite.\n </ion-text>\n }\n </p>\n <ion-button (click)=\"sendInvite()\" [disabled]=\"!email.valid\">\n <ion-icon name=\"mail-outline\" slot=\"start\" />\n <ion-label>Send invite</ion-label>\n </ion-button>\n <ion-button\n [disabled]=\"true\"\n fill=\"clear\"\n color=\"medium\"\n style=\"text-transform: none\"\n >or\n </ion-button>\n <ion-button\n (click)=\"composeEmail()\"\n fill=\"outline\"\n [disabled]=\"!email.valid\"\n >\n <ion-icon name=\"mail-outline\" slot=\"start\" />\n <ion-label>Compose email</ion-label>\n </ion-button>\n </ion-card-content>\n }\n @case (\"sms\") {\n <ion-card-content>\n <ion-button\n style=\"text-transform: none\"\n fill=\"outline\"\n (click)=\"composeSMS()\"\n >\n <ion-icon name=\"phone-portrait-outline\" slot=\"start\" />\n <ion-label>Compose SMS</ion-label>\n @if (creatingInvite) {\n <ion-spinner\n name=\"lines-small\"\n color=\"medium\"\n class=\"ion-margin-start\"\n slot=\"end\"\n />\n }\n </ion-button>\n <p>\n <ion-text color=\"medium\"\n >This works on mobiles or if your computer supports sending SMS\n </ion-text>\n </p>\n </ion-card-content>\n }\n @case (\"link\") {\n <ion-card-content>\n <ion-button\n fill=\"outline\"\n (click)=\"copyLinkWithInviteTextToClipboard()\"\n [disabled]=\"creatingInvite || !link\"\n >\n <ion-icon slot=\"start\" name=\"copy-outline\" />\n <ion-label style=\"text-transform: none\"\n >Copy invite text with a link\n </ion-label>\n </ion-button>\n </ion-card-content>\n }\n }\n\n @if (error) {\n <ion-card-content>\n <ion-text class=\"ion-margin\" color=\"danger\">{{ error }}</ion-text>\n </ion-card-content>\n }\n </form>\n</ion-content>\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import { personNames } from '@sneat/auth-ui';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export function getContactTitle(m, shortTitle) {
|
|
5
|
+
return (shortTitle ||
|
|
6
|
+
m?.brief?.title ||
|
|
7
|
+
m?.dbo?.title ||
|
|
8
|
+
personNames(m?.brief?.names) ||
|
|
9
|
+
m?.id ||
|
|
10
|
+
'MEMBER is UNDEFINED');
|
|
11
|
+
}
|
|
12
|
+
export class ContactTitlePipe {
|
|
13
|
+
transform(m, shortTitle) {
|
|
14
|
+
return m ? getContactTitle(m, shortTitle) : '';
|
|
15
|
+
}
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactTitlePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
17
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: ContactTitlePipe, isStandalone: true, name: "contactTitle" }); }
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContactTitlePipe, decorators: [{
|
|
20
|
+
type: Pipe,
|
|
21
|
+
args: [{
|
|
22
|
+
name: 'contactTitle',
|
|
23
|
+
}]
|
|
24
|
+
}] });
|
|
25
|
+
//# sourceMappingURL=contact-title.pipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contact-title.pipe.js","sourceRoot":"","sources":["../../../../../../../libs/contactus/shared/src/lib/pipes/contact-title.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAiB,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;;AAI7C,MAAM,UAAU,eAAe,CAC7B,CAAgE,EAChE,UAAmB;IAEnB,OAAO,CACL,UAAU;QACV,CAAC,EAAE,KAAK,EAAE,KAAK;QACf,CAAC,EAAE,GAAG,EAAE,KAAK;QACb,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;QAC5B,CAAC,EAAE,EAAE;QACL,qBAAqB,CACtB,CAAC;AACJ,CAAC;AAKD,MAAM,OAAO,gBAAgB;IAC3B,SAAS,CACP,CAAiE,EACjE,UAAmB;QAEnB,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;8GANU,gBAAgB;4GAAhB,gBAAgB;;2FAAhB,gBAAgB;kBAH5B,IAAI;mBAAC;oBACJ,IAAI,EAAE,cAAc;iBACrB","sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { personNames } from '@sneat/auth-ui';\nimport { IIdAndOptionalBriefAndOptionalDbo } from '@sneat/core';\nimport { IContactBrief, IContactDbo } from '@sneat/contactus-core';\n\nexport function getContactTitle(\n m: IIdAndOptionalBriefAndOptionalDbo<IContactBrief, IContactDbo>,\n shortTitle?: string,\n): string {\n return (\n shortTitle ||\n m?.brief?.title ||\n m?.dbo?.title ||\n personNames(m?.brief?.names) ||\n m?.id ||\n 'MEMBER is UNDEFINED'\n );\n}\n\n@Pipe({\n name: 'contactTitle',\n})\nexport class ContactTitlePipe implements PipeTransform {\n transform(\n m?: IIdAndOptionalBriefAndOptionalDbo<IContactBrief, IContactDbo>,\n shortTitle?: string,\n ): string {\n return m ? getContactTitle(m, shortTitle) : '';\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/contactus/shared/src/lib/pipes/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC","sourcesContent":["export * from './selected-contacts.pipe';\nexport * from './person-title.pipe';\nexport * from './contact-title.pipe';\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import { personNames } from '@sneat/auth-ui';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class PersonTitle {
|
|
5
|
+
transform(p, shortTitle) {
|
|
6
|
+
// console.log('PersonTitle.transform()', { ...p }, shortTitle);
|
|
7
|
+
return (shortTitle ||
|
|
8
|
+
p?.dbo?.title ||
|
|
9
|
+
p?.brief?.title ||
|
|
10
|
+
personNames(p?.brief?.names) ||
|
|
11
|
+
p?.id ||
|
|
12
|
+
'NO TITLE');
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PersonTitle, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
15
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: PersonTitle, isStandalone: true, name: "personTitle" }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PersonTitle, decorators: [{
|
|
18
|
+
type: Pipe,
|
|
19
|
+
args: [{ name: 'personTitle' }]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=person-title.pipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"person-title.pipe.js","sourceRoot":"","sources":["../../../../../../../libs/contactus/shared/src/lib/pipes/person-title.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAiB,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;;AAK7C,MAAM,OAAO,WAAW;IACtB,SAAS,CACP,CAA4D,EAC5D,UAAmB;QAEnB,gEAAgE;QAChE,OAAO,CACL,UAAU;YACV,CAAC,EAAE,GAAG,EAAE,KAAK;YACb,CAAC,EAAE,KAAK,EAAE,KAAK;YACf,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YAC5B,CAAC,EAAE,EAAE;YACL,UAAU,CACX,CAAC;IACJ,CAAC;8GAdU,WAAW;4GAAX,WAAW;;2FAAX,WAAW;kBADvB,IAAI;mBAAC,EAAE,IAAI,EAAE,aAAa,EAAE","sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { personNames } from '@sneat/auth-ui';\nimport { IIdAndOptionalBriefAndOptionalDbo } from '@sneat/core';\nimport { IPerson, IPersonBrief } from '@sneat/contactus-core';\n\n@Pipe({ name: 'personTitle' })\nexport class PersonTitle implements PipeTransform {\n transform(\n p?: IIdAndOptionalBriefAndOptionalDbo<IPersonBrief, IPerson>,\n shortTitle?: string,\n ): string {\n // console.log('PersonTitle.transform()', { ...p }, shortTitle);\n return (\n shortTitle ||\n p?.dbo?.title ||\n p?.brief?.title ||\n personNames(p?.brief?.names) ||\n p?.id ||\n 'NO TITLE'\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SelectedContactsPipe {
|
|
4
|
+
transform(selectedIDs, contactBriefs) {
|
|
5
|
+
// 'SelectedContactsPipe',
|
|
6
|
+
// selectedIDs?.length,
|
|
7
|
+
// `selectedIDs=${selectedIDs?.join(',')}`,
|
|
8
|
+
// 'contactBriefs:',
|
|
9
|
+
// contactBriefs,
|
|
10
|
+
return selectedIDs.map((id) => {
|
|
11
|
+
const brief = contactBriefs ? contactBriefs[id] : undefined;
|
|
12
|
+
return { id, brief };
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SelectedContactsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
16
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: SelectedContactsPipe, isStandalone: true, name: "selectedContacts" }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SelectedContactsPipe, decorators: [{
|
|
19
|
+
type: Pipe,
|
|
20
|
+
args: [{ name: 'selectedContacts' }]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=selected-contacts.pipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selected-contacts.pipe.js","sourceRoot":"","sources":["../../../../../../../libs/contactus/shared/src/lib/pipes/selected-contacts.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAiB,MAAM,eAAe,CAAC;;AAOpD,MAAM,OAAO,oBAAoB;IAC/B,SAAS,CACP,WAA8B,EAC9B,aAA6C;QAE7C,0BAA0B;QAC1B,uBAAuB;QACvB,2CAA2C;QAC3C,oBAAoB;QACpB,iBAAiB;QACjB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5B,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACvB,CAAC,CAAgC,CAAC;IACpC,CAAC;8GAdU,oBAAoB;4GAApB,oBAAoB;;2FAApB,oBAAoB;kBADhC,IAAI;mBAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE","sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport {\n IContactBrief,\n IContactWithBriefAndSpace,\n} from '@sneat/contactus-core';\n\n@Pipe({ name: 'selectedContacts' })\nexport class SelectedContactsPipe implements PipeTransform {\n transform(\n selectedIDs: readonly string[],\n contactBriefs?: Record<string, IContactBrief>,\n ): IContactWithBriefAndSpace[] {\n // 'SelectedContactsPipe',\n // selectedIDs?.length,\n // `selectedIDs=${selectedIDs?.join(',')}`,\n // 'contactBriefs:',\n // contactBriefs,\n return selectedIDs.map((id) => {\n const brief = contactBriefs ? contactBriefs[id] : undefined;\n return { id, brief };\n }) as IContactWithBriefAndSpace[];\n }\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { computed, signal } from '@angular/core';
|
|
2
|
+
import { filter, map, takeUntil } from 'rxjs';
|
|
3
|
+
export class UserSpaceBriefProvider {
|
|
4
|
+
constructor(destroyed$, $spaceID, userService) {
|
|
5
|
+
this.destroyed$ = destroyed$;
|
|
6
|
+
this.$spaceID = $spaceID;
|
|
7
|
+
// `null` indicates the user's record has been loaded but has no spaces
|
|
8
|
+
this.$userSpaceBriefs = signal(undefined, ...(ngDevMode ? [{ debugName: "$userSpaceBriefs" }] : []));
|
|
9
|
+
// `null` indicates the user's record has been loaded but has no space
|
|
10
|
+
this.$userSpaceBrief = computed(() => {
|
|
11
|
+
const spaceID = this.$spaceID();
|
|
12
|
+
const userSpaceBriefs = this.$userSpaceBriefs();
|
|
13
|
+
if (!spaceID || !userSpaceBriefs) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
return userSpaceBriefs[spaceID] || null;
|
|
17
|
+
}, ...(ngDevMode ? [{ debugName: "$userSpaceBrief" }] : []));
|
|
18
|
+
// `null` indicates the user's record has been loaded but has no respective value
|
|
19
|
+
this.$userContactID = computed(() => {
|
|
20
|
+
const userSpace = this.$userSpaceBrief();
|
|
21
|
+
return userSpace == undefined
|
|
22
|
+
? undefined
|
|
23
|
+
: userSpace?.userContactID || null;
|
|
24
|
+
}, ...(ngDevMode ? [{ debugName: "$userContactID" }] : []));
|
|
25
|
+
userService.userState
|
|
26
|
+
.pipe(takeUntil(this.destroyed$), filter((user) => !!user.record), map((user) => user.record?.spaces || {}))
|
|
27
|
+
.subscribe(this.$userSpaceBriefs.set);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=user-space-brief.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-space-brief.provider.js","sourceRoot":"","sources":["../../../../../../../libs/contactus/shared/src/lib/providers/user-space-brief.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAU,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAc,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1D,MAAM,OAAO,sBAAsB;IAMjC,YACmB,UAA4B,EAC5B,QAAwB,EACzC,WAA6B;QAFZ,eAAU,GAAV,UAAU,CAAkB;QAC5B,aAAQ,GAAR,QAAQ,CAAgB;QAP3C,uEAAuE;QACtD,qBAAgB,GAAG,MAAM,CAExC,SAAS,4DAAC,CAAC;QAgBb,sEAAsE;QACtD,oBAAe,GAAG,QAAQ,CAAC,GAAG,EAAE;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;gBACjC,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,eAAe,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;QAC1C,CAAC,2DAAC,CAAC;QAEH,iFAAiF;QACjE,mBAAc,GAAG,QAAQ,CAA4B,GAAG,EAAE;YACxE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACzC,OAAO,SAAS,IAAI,SAAS;gBAC3B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS,EAAE,aAAa,IAAI,IAAI,CAAC;QACvC,CAAC,0DAAC,CAAC;QAzBD,WAAW,CAAC,SAAS;aAClB,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CACzC;aACA,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;CAmBF","sourcesContent":["import { computed, signal, Signal } from '@angular/core';\nimport { SneatUserService } from '@sneat/auth-core';\nimport { IUserSpaceBrief } from '@sneat/auth-models';\nimport { filter, map, Observable, takeUntil } from 'rxjs';\n\nexport class UserSpaceBriefProvider {\n // `null` indicates the user's record has been loaded but has no spaces\n private readonly $userSpaceBriefs = signal<\n Readonly<Record<string, IUserSpaceBrief>> | undefined\n >(undefined);\n\n constructor(\n private readonly destroyed$: Observable<void>,\n private readonly $spaceID: Signal<string>,\n userService: SneatUserService,\n ) {\n userService.userState\n .pipe(\n takeUntil(this.destroyed$),\n filter((user) => !!user.record),\n map((user) => user.record?.spaces || {}),\n )\n .subscribe(this.$userSpaceBriefs.set);\n }\n\n // `null` indicates the user's record has been loaded but has no space\n public readonly $userSpaceBrief = computed(() => {\n const spaceID = this.$spaceID();\n const userSpaceBriefs = this.$userSpaceBriefs();\n if (!spaceID || !userSpaceBriefs) {\n return undefined;\n }\n return userSpaceBriefs[spaceID] || null;\n });\n\n // `null` indicates the user's record has been loaded but has no respective value\n public readonly $userContactID = computed<string | null | undefined>(() => {\n const userSpace = this.$userSpaceBrief();\n return userSpace == undefined\n ? undefined\n : userSpace?.userContactID || null;\n });\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-types.js","sourceRoot":"","sources":["../../../../../../libs/contactus/shared/src/lib/ui-types.ts"],"names":[],"mappings":"","sourcesContent":["import {\n IContactGroupBrief,\n IContactRoleWithIdAndBrief,\n IContactWithCheck,\n} from '@sneat/contactus-core';\n\nexport interface IContactRoleWithContacts extends IContactRoleWithIdAndBrief {\n readonly contacts: readonly IContactWithCheck[] | undefined;\n}\n\nexport interface IContactGroupWithContacts {\n readonly id: string;\n readonly brief: IContactGroupBrief;\n readonly roles: IContactRoleWithContacts[];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sneat-contactus-shared.js","sourceRoot":"","sources":["../../../../../libs/contactus/shared/src/sneat-contactus-shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"]}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import { IonInput, IonTextarea } from '@ionic/angular/standalone';
|
|
4
|
+
import { ISaveEvent } from '@sneat/components';
|
|
5
|
+
import { IAddress } from '@sneat/contactus-core';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export interface IAddressFormControls {
|
|
8
|
+
countryID: FormControl<string | null>;
|
|
9
|
+
zip: FormControl<string | null>;
|
|
10
|
+
state: FormControl<string | null>;
|
|
11
|
+
city: FormControl<string | null>;
|
|
12
|
+
lines: FormControl<string | null>;
|
|
13
|
+
}
|
|
14
|
+
export type AddressForm = FormGroup<IAddressFormControls>;
|
|
15
|
+
export interface AddressRequiredFields {
|
|
16
|
+
zip?: boolean;
|
|
17
|
+
state?: boolean;
|
|
18
|
+
city?: boolean;
|
|
19
|
+
lines?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare class AddressFormComponent implements OnChanges, OnInit {
|
|
22
|
+
private readonly errorLogger;
|
|
23
|
+
mode?: 'new' | 'edit';
|
|
24
|
+
title: string;
|
|
25
|
+
address?: IAddress;
|
|
26
|
+
requiredFields?: AddressRequiredFields;
|
|
27
|
+
readonly save: EventEmitter<ISaveEvent<IAddress>>;
|
|
28
|
+
readonly addressChange: EventEmitter<IAddress>;
|
|
29
|
+
readonly formCreated: EventEmitter<AddressForm>;
|
|
30
|
+
zipInput?: IonInput;
|
|
31
|
+
readonly setFocusToInput: (input?: IonInput | IonTextarea, delay?: number) => void;
|
|
32
|
+
protected readonly $saving: import("@angular/core").WritableSignal<boolean>;
|
|
33
|
+
protected readonly countryID: FormControl<string | null>;
|
|
34
|
+
protected readonly zip: FormControl<string | null>;
|
|
35
|
+
readonly state: FormControl<string | null>;
|
|
36
|
+
readonly city: FormControl<string | null>;
|
|
37
|
+
protected readonly lines: FormControl<string | null>;
|
|
38
|
+
readonly form: AddressForm;
|
|
39
|
+
ngOnInit(): void;
|
|
40
|
+
onCountryChanged(countryID: string): void;
|
|
41
|
+
get mustAddress(): IAddress;
|
|
42
|
+
onZipChanged(): void;
|
|
43
|
+
onStateChanged(): void;
|
|
44
|
+
onCityChanged(): void;
|
|
45
|
+
onLinesChanged(): void;
|
|
46
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
47
|
+
protected cancelChanges(): void;
|
|
48
|
+
protected saveChanges(): void;
|
|
49
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AddressFormComponent, never>;
|
|
50
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AddressFormComponent, "sneat-address-form", never, { "mode": { "alias": "mode"; "required": false; }; "title": { "alias": "title"; "required": false; }; "address": { "alias": "address"; "required": false; }; "requiredFields": { "alias": "requiredFields"; "required": false; }; }, { "save": "save"; "addressChange": "addressChange"; "formCreated": "formCreated"; }, never, never, true, never>;
|
|
51
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './address-form.component';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { ContactRole, ContactType, IContactWithBrief } from '@sneat/contactus-core';
|
|
3
|
+
import { ISpaceContext } from '@sneat/space-models';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class BasicContactFormComponent {
|
|
6
|
+
private readonly errorLogger;
|
|
7
|
+
private readonly contactService;
|
|
8
|
+
parentContact?: IContactWithBrief;
|
|
9
|
+
space?: ISpaceContext;
|
|
10
|
+
contactType?: ContactType;
|
|
11
|
+
contactRoles?: ContactRole[];
|
|
12
|
+
readonly contactChange: EventEmitter<IContactWithBrief>;
|
|
13
|
+
readonly contactCreated: EventEmitter<IContactWithBrief>;
|
|
14
|
+
isSubmitting: boolean;
|
|
15
|
+
isCreated: boolean;
|
|
16
|
+
title: string;
|
|
17
|
+
createContact(event: Event): void;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BasicContactFormComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BasicContactFormComponent, "sneat-basic-contact-form", never, { "parentContact": { "alias": "parentContact"; "required": false; }; "space": { "alias": "space"; "required": true; }; "contactType": { "alias": "contactType"; "required": false; }; "contactRoles": { "alias": "contactRoles"; "required": false; }; }, { "contactChange": "contactChange"; "contactCreated": "contactCreated"; }, never, never, true, never>;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './basic-contact-form.component';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import { ContactCommChannelType, IContactContext } from '@sneat/contactus-core';
|
|
4
|
+
import { ISelectItem, SneatBaseComponent } from '@sneat/ui';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class CommChannelFormComponent extends SneatBaseComponent {
|
|
7
|
+
readonly $contact: import("@angular/core").InputSignal<IContactContext>;
|
|
8
|
+
readonly $channelType: import("@angular/core").InputSignal<ContactCommChannelType>;
|
|
9
|
+
readonly $placeholder: import("@angular/core").InputSignal<string>;
|
|
10
|
+
readonly closeForm: EventEmitter<void>;
|
|
11
|
+
protected readonly $type: import("@angular/core").WritableSignal<"personal" | "work" | undefined>;
|
|
12
|
+
protected readonly channelID: FormControl<string | null>;
|
|
13
|
+
protected readonly types: readonly ISelectItem[];
|
|
14
|
+
protected onTypeChanged(value: string): void;
|
|
15
|
+
private readonly contactService;
|
|
16
|
+
protected readonly $saving: import("@angular/core").WritableSignal<boolean>;
|
|
17
|
+
protected addNewChannel(event: Event): void;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CommChannelFormComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CommChannelFormComponent, "sneat-comm-channel-form", never, { "$contact": { "alias": "$contact"; "required": true; "isSignal": true; }; "$channelType": { "alias": "$channelType"; "required": true; "isSignal": true; }; "$placeholder": { "alias": "$placeholder"; "required": true; "isSignal": true; }; }, { "closeForm": "closeForm"; }, never, never, true, never>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { FormControl } from '@angular/forms';
|
|
2
|
+
import { ContactCommChannelType, IContactCommChannelProps } from '@sneat/contactus-core';
|
|
3
|
+
import { ContactService } from '@sneat/contactus-services';
|
|
4
|
+
import { SneatBaseComponent } from '@sneat/ui';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export interface ICommChannelListItem extends IContactCommChannelProps {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class CommChannelItemComponent extends SneatBaseComponent {
|
|
10
|
+
readonly $channelType: import("@angular/core").InputSignal<ContactCommChannelType>;
|
|
11
|
+
$channel: import("@angular/core").InputSignal<ICommChannelListItem>;
|
|
12
|
+
$contactID: import("@angular/core").InputSignal<string>;
|
|
13
|
+
$spaceID: import("@angular/core").InputSignal<string>;
|
|
14
|
+
protected readonly channelID: FormControl<any>;
|
|
15
|
+
readonly $lines: import("@angular/core").InputSignal<"none" | "full" | undefined>;
|
|
16
|
+
protected readonly $saving: import("@angular/core").WritableSignal<boolean>;
|
|
17
|
+
protected readonly contactService: ContactService;
|
|
18
|
+
constructor();
|
|
19
|
+
protected deleteChannel(_event?: Event): void;
|
|
20
|
+
protected saveChanges(_event?: Event): void;
|
|
21
|
+
protected onTypeChanged(event: CustomEvent): void;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CommChannelItemComponent, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CommChannelItemComponent, "sneat-comm-channel-item", never, { "$channelType": { "alias": "$channelType"; "required": true; "isSignal": true; }; "$channel": { "alias": "$channel"; "required": true; "isSignal": true; }; "$contactID": { "alias": "$contactID"; "required": true; "isSignal": true; }; "$spaceID": { "alias": "$spaceID"; "required": true; "isSignal": true; }; "$lines": { "alias": "$lines"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
2
|
+
import { IonButton, IonButtons, IonCard, IonIcon, IonInput, IonItem, IonLabel } from '@ionic/angular/standalone';
|
|
3
|
+
import { ContactCommChannelType, IContactCommChannelProps } from '@sneat/contactus-core';
|
|
4
|
+
import { SneatBaseComponent } from '@sneat/ui';
|
|
5
|
+
import { CommChannelFormComponent } from './comm-channel-form.component';
|
|
6
|
+
import { CommChannelItemComponent, ICommChannelListItem } from './comm-channel-item.component';
|
|
7
|
+
export declare const importsForChannelsListComponent: (typeof IonItem | typeof IonInput | typeof IonButton | typeof IonLabel | typeof IonIcon | typeof IonButtons | typeof CommChannelFormComponent | typeof CommChannelItemComponent | typeof IonCard)[];
|
|
8
|
+
export declare abstract class CommChannelsListComponent extends SneatBaseComponent {
|
|
9
|
+
protected readonly channelType: ContactCommChannelType;
|
|
10
|
+
protected $showAddForm: import("@angular/core").WritableSignal<boolean>;
|
|
11
|
+
protected readonly $channels: Signal<readonly ICommChannelListItem[] | undefined>;
|
|
12
|
+
protected readonly $title: import("@angular/core").WritableSignal<string>;
|
|
13
|
+
protected readonly $placeholder: import("@angular/core").WritableSignal<string>;
|
|
14
|
+
protected constructor(channelType: ContactCommChannelType, title: string, placeholder: string, $channels: Signal<Readonly<Record<string, IContactCommChannelProps>> | undefined>);
|
|
15
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IContactContext } from '@sneat/contactus-core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ContactCommChannelsComponent {
|
|
4
|
+
readonly $contact: import("@angular/core").InputSignal<IContactContext>;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContactCommChannelsComponent, never>;
|
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContactCommChannelsComponent, "sneat-contact-comm-channels", never, { "$contact": { "alias": "$contact"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IContactContext } from '@sneat/contactus-core';
|
|
2
|
+
import { CommChannelsListComponent } from './comm-channels-list.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ContactEmailsComponent extends CommChannelsListComponent {
|
|
5
|
+
readonly $contact: import("@angular/core").InputSignal<IContactContext>;
|
|
6
|
+
constructor();
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContactEmailsComponent, never>;
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContactEmailsComponent, "sneat-contact-emails", never, { "$contact": { "alias": "$contact"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IContactContext } from '@sneat/contactus-core';
|
|
2
|
+
import { CommChannelsListComponent } from './comm-channels-list.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ContactPhonesComponent extends CommChannelsListComponent {
|
|
5
|
+
readonly $contact: import("@angular/core").InputSignal<IContactContext>;
|
|
6
|
+
constructor();
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContactPhonesComponent, never>;
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContactPhonesComponent, "sneat-contact-phones", never, { "$contact": { "alias": "$contact"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './contact-comm-channels.component';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { Gender } from '@sneat/core';
|
|
3
|
+
import { ContactType, IContactContext, IContactWithOptionalDbo } from '@sneat/contactus-core';
|
|
4
|
+
import { IRelatedTo, ISpaceModuleItemRef } from '@sneat/dto';
|
|
5
|
+
import { WithSpaceInput } from '@sneat/space-services';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class ContactDetailsComponent extends WithSpaceInput {
|
|
8
|
+
readonly $contact: import("@angular/core").InputSignal<IContactContext>;
|
|
9
|
+
protected readonly $contactID: import("@angular/core").Signal<string>;
|
|
10
|
+
readonly contactChange: EventEmitter<IContactContext | undefined>;
|
|
11
|
+
protected readonly $relatedTo: import("@angular/core").Signal<IRelatedTo | undefined>;
|
|
12
|
+
protected readonly $showRolesTab: import("@angular/core").Signal<boolean>;
|
|
13
|
+
protected readonly $isMember: import("@angular/core").Signal<boolean>;
|
|
14
|
+
private readonly modalController;
|
|
15
|
+
protected readonly $contactWithBriefAndOptionalDbo: import("@angular/core").Signal<IContactWithOptionalDbo | undefined>;
|
|
16
|
+
protected tab: 'communicationChannels' | 'roles' | 'peers' | 'locations';
|
|
17
|
+
private readonly userService;
|
|
18
|
+
private readonly userSpaceBrief;
|
|
19
|
+
protected $userSpaceContactID: import("@angular/core").Signal<string | null | undefined>;
|
|
20
|
+
protected readonly $relatedToContactOfCurrentUser: import("@angular/core").Signal<ISpaceModuleItemRef | undefined>;
|
|
21
|
+
protected readonly $rolesOfItem: import("@angular/core").Signal<Readonly<import("@sneat/dto").WritableRelationshipRoles> | undefined>;
|
|
22
|
+
protected readonly $relatedToUserAs: import("@angular/core").Signal<"child" | "spouse" | undefined>;
|
|
23
|
+
protected readonly $relatedToUserAsBadgeText: import("@angular/core").Signal<"My son" | "My daughter" | "My husband" | "My wife" | undefined>;
|
|
24
|
+
protected get currentUserID(): string | undefined;
|
|
25
|
+
protected hideForContactTypes(contactTypes: ContactType[]): boolean;
|
|
26
|
+
protected get currentUserId(): string | undefined;
|
|
27
|
+
protected openEditNamesDialog(): Promise<void>;
|
|
28
|
+
private newUpdateContactRequest;
|
|
29
|
+
protected onGenderChanged(gender: Gender): void;
|
|
30
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContactDetailsComponent, never>;
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContactDetailsComponent, "sneat-contact-details", never, { "$contact": { "alias": "$contact"; "required": true; "isSignal": true; }; }, { "contactChange": "contactChange"; }, never, never, true, never>;
|
|
32
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './contact-details.component';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IContactWithCheck } from '@sneat/contactus-core';
|
|
2
|
+
import { IRelatedTo } from '@sneat/dto';
|
|
3
|
+
import { WithSpaceInput } from '@sneat/space-services';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
interface IRelatedGroup {
|
|
6
|
+
readonly title: string;
|
|
7
|
+
readonly maxCount?: number;
|
|
8
|
+
readonly relatedAs: string;
|
|
9
|
+
readonly contacts?: readonly IContactWithCheck[];
|
|
10
|
+
}
|
|
11
|
+
export declare class RelatedContactsComponent extends WithSpaceInput {
|
|
12
|
+
private readonly contactusSpaceService;
|
|
13
|
+
readonly $relatedTo: import("@angular/core").InputSignal<IRelatedTo | undefined>;
|
|
14
|
+
readonly $related: import("@angular/core").Signal<Readonly<Record<string, Readonly<Record<string, Readonly<Record<string, import("@sneat/dto").IRelatedItem>>>>>> | undefined>;
|
|
15
|
+
protected readonly $spaceContacts: import("@angular/core").WritableSignal<readonly IContactWithCheck[] | undefined>;
|
|
16
|
+
protected readonly $relatedItems: import("@angular/core").Signal<Readonly<Record<string, import("@sneat/dto").IRelatedItem>> | undefined>;
|
|
17
|
+
protected readonly $relatedContacts: import("@angular/core").Signal<readonly IContactWithCheck[] | undefined>;
|
|
18
|
+
private subscription?;
|
|
19
|
+
protected $relatedGroups: import("@angular/core").Signal<readonly IRelatedGroup[]>;
|
|
20
|
+
constructor();
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RelatedContactsComponent, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RelatedContactsComponent, "sneat-related-contacts", never, { "$relatedTo": { "alias": "$relatedTo"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IContactContext } from '@sneat/contactus-core';
|
|
2
|
+
import { SneatBaseComponent } from '@sneat/ui';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ContactDobComponent extends SneatBaseComponent {
|
|
5
|
+
readonly $contact: import("@angular/core").InputSignal<IContactContext | undefined>;
|
|
6
|
+
readonly $updating: import("@angular/core").WritableSignal<boolean>;
|
|
7
|
+
protected readonly $dob: import("@angular/core").Signal<string | undefined>;
|
|
8
|
+
protected readonly today: string;
|
|
9
|
+
private readonly contactService;
|
|
10
|
+
protected onDobChanged(dateOfBirth: string | undefined): void;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContactDobComponent, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContactDobComponent, "sneat-contact-dob", never, { "$contact": { "alias": "$contact"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './contact-dob.component';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { ContactDboWithSpaceRef } from '@sneat/contactus-core';
|
|
3
|
+
import { WithSpaceInput } from '@sneat/space-services';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare abstract class ContactFormBaseComponent extends WithSpaceInput {
|
|
6
|
+
readonly $hideRole: import("@angular/core").InputSignal<boolean | undefined>;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContactFormBaseComponent, never>;
|
|
8
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ContactFormBaseComponent, never, never, { "$hideRole": { "alias": "$hideRole"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
9
|
+
}
|
|
10
|
+
export declare abstract class EditContactFormBaseComponent extends ContactFormBaseComponent {
|
|
11
|
+
readonly $contact: import("@angular/core").InputSignal<ContactDboWithSpaceRef>;
|
|
12
|
+
readonly contactChange: EventEmitter<ContactDboWithSpaceRef>;
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EditContactFormBaseComponent, never>;
|
|
14
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<EditContactFormBaseComponent, never, never, { "$contact": { "alias": "$contact"; "required": true; "isSignal": true; }; }, { "contactChange": "contactChange"; }, never, never, true, never>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { IEmail } from '@sneat/contactus-core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
type EmailType = 'personal' | 'work';
|
|
5
|
+
interface emailInput {
|
|
6
|
+
type: EmailType;
|
|
7
|
+
address: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class EmailsFormComponent implements OnChanges {
|
|
10
|
+
readonly types: {
|
|
11
|
+
id: EmailType;
|
|
12
|
+
title: string;
|
|
13
|
+
}[];
|
|
14
|
+
hideHeader: boolean;
|
|
15
|
+
isActiveInWizard: boolean;
|
|
16
|
+
disabled: boolean;
|
|
17
|
+
emailInputs: readonly emailInput[];
|
|
18
|
+
emails?: readonly IEmail[];
|
|
19
|
+
readonly emailsChange: EventEmitter<readonly IEmail[]>;
|
|
20
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
21
|
+
typeChanged(event: Event): void;
|
|
22
|
+
addressChanged(event: Event): void;
|
|
23
|
+
private setEmailsOnInputChanged;
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EmailsFormComponent, never>;
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EmailsFormComponent, "sneat-emails-form", never, { "hideHeader": { "alias": "hideHeader"; "required": false; }; "isActiveInWizard": { "alias": "isActiveInWizard"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "emails": { "alias": "emails"; "required": false; }; }, { "emailsChange": "emailsChange"; }, never, never, true, never>;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './emails-form.component';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './person-forms/age-group';
|
|
2
|
+
export * from './emails-form';
|
|
3
|
+
export * from './person-forms/gender-form';
|
|
4
|
+
export * from './person-forms/names-form';
|
|
5
|
+
export * from './pet-kind-and-breed-form';
|
|
6
|
+
export * from './phones-form';
|
|
7
|
+
export * from './relationship-form';
|
|
8
|
+
export * from './space-related-form.component';
|
|
9
|
+
export * from './roles-form';
|
|
10
|
+
export * from './pesson-wizard';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './location-form.component';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import { IonInput } from '@ionic/angular/standalone';
|
|
4
|
+
import { ContactRole, ContactType, IAddress, IContactWithOptionalDbo, IContactContext } from '@sneat/contactus-core';
|
|
5
|
+
import { ISpaceContext } from '@sneat/space-models';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class LocationFormComponent implements OnChanges {
|
|
8
|
+
private readonly errorLogger;
|
|
9
|
+
private readonly contactService;
|
|
10
|
+
readonly $space: import("@angular/core").InputSignal<ISpaceContext>;
|
|
11
|
+
protected readonly $spaceRef: import("@angular/core").Signal<import("@sneat/core").ISpaceRef>;
|
|
12
|
+
contactRole?: ContactRole;
|
|
13
|
+
countryID: string;
|
|
14
|
+
location?: IContactWithOptionalDbo;
|
|
15
|
+
parentContact?: IContactContext;
|
|
16
|
+
hideSubmitButton: boolean;
|
|
17
|
+
label: string;
|
|
18
|
+
contactType: ContactType;
|
|
19
|
+
readonly locationChange: EventEmitter<IContactWithOptionalDbo>;
|
|
20
|
+
readonly locationCreated: EventEmitter<IContactWithOptionalDbo>;
|
|
21
|
+
titleInput?: IonInput;
|
|
22
|
+
isCreating: boolean;
|
|
23
|
+
protected readonly title: FormControl<string | null>;
|
|
24
|
+
protected readonly form: FormGroup<{
|
|
25
|
+
title: FormControl<string | null>;
|
|
26
|
+
}>;
|
|
27
|
+
addressText: string;
|
|
28
|
+
get disabled(): boolean;
|
|
29
|
+
private readonly setFocusToInput;
|
|
30
|
+
onAddressChanged(address: IAddress): void;
|
|
31
|
+
onTitleChanged(): void;
|
|
32
|
+
private emitContactChange;
|
|
33
|
+
private readonly onContactCreated;
|
|
34
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
35
|
+
private setFocusToTitle;
|
|
36
|
+
submit(): void;
|
|
37
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LocationFormComponent, never>;
|
|
38
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LocationFormComponent, "sneat-location-form", never, { "$space": { "alias": "$space"; "required": true; "isSignal": true; }; "contactRole": { "alias": "contactRole"; "required": false; }; "countryID": { "alias": "countryID"; "required": false; }; "location": { "alias": "location"; "required": false; }; "parentContact": { "alias": "parentContact"; "required": false; }; "hideSubmitButton": { "alias": "hideSubmitButton"; "required": false; }; "label": { "alias": "label"; "required": false; }; "contactType": { "alias": "contactType"; "required": false; }; }, { "locationChange": "locationChange"; "locationCreated": "locationCreated"; }, never, never, true, never>;
|
|
39
|
+
}
|