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