@sneat/extension-contactus 0.13.4 → 0.13.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (13) hide show
  1. package/fesm2022/{sneat-extension-contactus-contacts-page.component-dpcKveLW.mjs → sneat-extension-contactus-contacts-page.component-4EsaJkXj.mjs} +4 -4
  2. package/fesm2022/{sneat-extension-contactus-contacts-page.component-dpcKveLW.mjs.map → sneat-extension-contactus-contacts-page.component-4EsaJkXj.mjs.map} +1 -1
  3. package/fesm2022/{sneat-extension-contactus-index-1vVX7Aa3.mjs → sneat-extension-contactus-index-BoDcqthC.mjs} +7 -7
  4. package/fesm2022/{sneat-extension-contactus-index-1vVX7Aa3.mjs.map → sneat-extension-contactus-index-BoDcqthC.mjs.map} +1 -1
  5. package/fesm2022/{sneat-extension-contactus-index--ZEjpmgM.mjs → sneat-extension-contactus-index-Cp1af1MR.mjs} +11 -11
  6. package/fesm2022/{sneat-extension-contactus-index--ZEjpmgM.mjs.map → sneat-extension-contactus-index-Cp1af1MR.mjs.map} +1 -1
  7. package/fesm2022/{sneat-extension-contactus-members-page.component-CWulwfet.mjs → sneat-extension-contactus-members-page.component-Bv9xVCKk.mjs} +4 -4
  8. package/fesm2022/{sneat-extension-contactus-members-page.component-CWulwfet.mjs.map → sneat-extension-contactus-members-page.component-Bv9xVCKk.mjs.map} +1 -1
  9. package/fesm2022/{sneat-extension-contactus-space-member-page.component-BY_SJdUs.mjs → sneat-extension-contactus-space-member-page.component-Ds2b-oB9.mjs} +4 -4
  10. package/fesm2022/{sneat-extension-contactus-space-member-page.component-BY_SJdUs.mjs.map → sneat-extension-contactus-space-member-page.component-Ds2b-oB9.mjs.map} +1 -1
  11. package/fesm2022/sneat-extension-contactus.mjs +38 -38
  12. package/fesm2022/sneat-extension-contactus.mjs.map +1 -1
  13. package/package.json +1 -1
@@ -146,13 +146,13 @@ class MembersPageComponent extends MembersBasePage {
146
146
  // });
147
147
  }
148
148
  }
149
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MembersPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
150
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: MembersPageComponent, isStandalone: true, selector: "sneat-members-page", providers: [
149
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MembersPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
150
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: MembersPageComponent, isStandalone: true, selector: "sneat-members-page", providers: [
151
151
  { provide: ClassName, useValue: 'MembersPageComponent' },
152
152
  SpaceComponentBaseParams,
153
153
  ], usesInheritance: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\" class=\"with-back-button with-end-buttons\">\n <ion-buttons slot=\"start\">\n <ion-back-button [defaultHref]=\"$defaultBackUrl()\" />\n </ion-buttons>\n <sneat-space-page-title\n [space]=\"space\"\n generalTitle=\"Members\"\n icon=\"\uD83D\uDC6A\"\n [titlesBySpaceType]=\"{\n family: 'Family members',\n }\"\n />\n <ion-buttons slot=\"end\">\n <ion-menu-button menu=\"mainMenu\" />\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"cardy\">\n @if (supportsMemberGroups) {\n <div class=\"segment\">\n <ion-segment [(ngModel)]=\"segment\">\n <ion-segment-button value=\"all\">\n <ion-label>All</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"groups\">\n <ion-label>\n @if (space.type === \"cohabit\") {\n By room\n } @else {\n By group\n }\n </ion-label>\n </ion-segment-button>\n </ion-segment>\n </div>\n }\n\n <!--\t<div class=\"segment\" *ngIf=\"spaceType === 'family'\">-->\n <!--\t\t<ion-segment [(ngModel)]=\"listMode\">-->\n <!--\t\t\t<ion-segment-button value=\"list\">List</ion-segment-button>-->\n <!--\t\t\t<ion-segment-button value=\"cards\">Cards</ion-segment-button>-->\n <!--\t\t</ion-segment>-->\n <!--\t</div>-->\n\n <!--\t<ion-list *ngIf=\"segment === 'all' && teamType === 'family'\">-->\n <!--\t\t<sneat-members-list *ngIf=\"adults\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t\t[team]=\"team\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t\t[allMembers]=\"members\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t\t[contactsByMember]=\"contactsByMember\"-->\n <!--\t\t></sneat-members-list>-->\n <!--\t</ion-list>-->\n\n @if (segment === \"all\" && $spaceType() === \"family\") {\n <ion-card>\n <sneat-family-members\n [$space]=\"$space()\"\n [contactusSpaceDbo]=\"spaceModuleDbo$ | async\"\n (addMember)=\"goNewMemberPage($event)\"\n />\n </ion-card>\n }\n\n @if (segment === \"groups\") {\n @if ($spaceType() === \"cohabit\") {\n @if (memberGroups) {\n @for (group of memberGroups; track group.id) {\n <ion-item-group>\n <ion-item-divider>\n <ion-icon name=\"people\" style=\"margin-right: 0.5em\" />\n <ion-label>\n {{ group.brief?.title }}\n </ion-label>\n @if (group.dbo?.numberOf?.members) {\n <ion-badge color=\"light\">\n {{ group.dbo?.numberOf?.members }} members\n </ion-badge>\n }\n </ion-item-divider>\n <!--\t\t\t\t\t<ng-container *ngIf=\"membersByGroupId[group.id]\">-->\n <!--\t\t\t\t\t\t<sneat-members-list [members]=\"this.membersByGroupId[group.id]\"-->\n <!--\t\t\t\t\t\t></sneat-members-list>-->\n <!--\t\t\t\t\t</ng-container>-->\n </ion-item-group>\n }\n\n <!--\t\t\t\t<ng-container *ngIf=\"noGroupMembers && noGroupMembers.length\">-->\n <!--\t\t\t\t\t<ion-item-divider>-->\n <!--\t\t\t\t\t\t<ion-label>No group members</ion-label>-->\n <!--\t\t\t\t\t</ion-item-divider>-->\n <!--\t\t\t\t\t<sneat-members-list [members]=\"noGroupMembers\"-->\n <!--\t\t\t\t\t></sneat-members-list>-->\n <!--\t\t\t\t</ng-container>-->\n }\n } @else if (memberGroups) {\n @for (group of memberGroups; track group.id) {\n <ion-item-group>\n <ion-item button=\"button\" (click)=\"goGroup(group)\">\n <ion-icon name=\"people\" style=\"margin-right: 0.5em\" />\n <ion-label>\n {{ group.brief?.title }}\n </ion-label>\n @if (group.dbo?.numberOf?.members) {\n <ion-badge color=\"light\">\n {{ group?.dbo?.numberOf?.members }} members\n </ion-badge>\n }\n </ion-item>\n </ion-item-group>\n }\n <!--\t\t\t\t<ng-container *ngIf=\"noGroupMembers && noGroupMembers.length\">-->\n <!--\t\t\t\t\t<ion-item-divider>-->\n <!--\t\t\t\t\t\t<ion-label>No group members</ion-label>-->\n <!--\t\t\t\t\t\t<ion-badge color=\"light\" slot=\"end\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t style=\"margin-right: 1em\">{{noGroupMembers.length}}</ion-badge>-->\n <!--\t\t\t\t\t</ion-item-divider>-->\n <!--\t\t\t\t\t<sneat-members-list-->\n <!--\t\t\t\t\t\t[members]=\"noGroupMembers\"-->\n <!--\t\t\t\t\t\t[contactsByMember]=\"contactsByMember\"-->\n <!--\t\t\t\t\t></sneat-members-list>-->\n <!--\t\t\t\t</ng-container>-->\n }\n }\n</ion-content>\n\n<ion-footer>\n <ion-toolbar color=\"light\">\n @if (space.dbo) {\n @switch (segment) {\n @case (\"all\") {\n <ion-label>\n <b>Total</b>:\n <!--\t\t\t{{ team.dto.numberOf?.members ?? 0 }}-->\n <!--\t\t\t{{ team.dto.numberOf?.members === 1 ? \"member\" : \"members\" }}-->\n </ion-label>\n }\n @case (\"groups\") {\n <ion-label>\n <b>Total</b>:\n <!--\t\t\t{{ team.dto.numberOf?.memberGroups || 0 }}-->\n <!--\t\t\t{{ team.dto.numberOf?.memberGroups === 1 ? \"group\" : \"groups\" }}-->\n </ion-label>\n }\n }\n } @else {\n <ion-label>Loading...</ion-label>\n }\n\n <ion-buttons slot=\"end\">\n <ion-button\n size=\"small\"\n color=\"primary\"\n [disabled]=\"!space.brief\"\n (click)=\"goNew()\"\n [title]=\"segment === 'groups' ? 'Add new group' : 'Add new member'\"\n >\n <ion-icon name=\"add\" />\n <ion-label>Add</ion-label>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-footer>\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: SpacePageTitleComponent, selector: "sneat-space-page-title", inputs: ["icon", "generalTitle", "space", "titlesBySpaceType"] }, { kind: "ngmodule", type: ContactusServicesModule }, { kind: "component", type: FamilyMembersComponent, selector: "sneat-family-members", inputs: ["contactusSpaceDbo"], outputs: ["addMember"] }, { kind: "ngmodule", type: SpaceServiceModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonBackButton, selector: "ion-back-button" }, { kind: "component", type: IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { kind: "component", type: IonSegmentButton, selector: "ion-segment-button", inputs: ["contentId", "disabled", "layout", "mode", "type", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonItemGroup, selector: "ion-item-group" }, { kind: "component", type: IonItemDivider, selector: "ion-item-divider", inputs: ["color", "mode", "sticky"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { 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: IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { 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: "pipe", type: AsyncPipe, name: "async" }] });
154
154
  }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MembersPageComponent, decorators: [{
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MembersPageComponent, decorators: [{
156
156
  type: Component,
157
157
  args: [{ imports: [
158
158
  FormsModule,
@@ -185,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
185
185
  }], ctorParameters: () => [] });
186
186
 
187
187
  export { MembersPageComponent };
188
- //# sourceMappingURL=sneat-extension-contactus-members-page.component-CWulwfet.mjs.map
188
+ //# sourceMappingURL=sneat-extension-contactus-members-page.component-Bv9xVCKk.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sneat-extension-contactus-members-page.component-CWulwfet.mjs","sources":["../../../../../../libs/extensions/contactus/runtime/src/lib/members/members-base-page.ts","../../../../../../libs/extensions/contactus/runtime/src/lib/members/pages/members/members-page.component.ts","../../../../../../libs/extensions/contactus/runtime/src/lib/members/pages/members/members-page.component.html"],"sourcesContent":["import { SpaceMemberType } from '@sneat/auth-models';\nimport { ContactusModuleBaseComponent } from '@sneat/extension-contactus-ui';\nimport { IIdAndBriefAndOptionalDbo } from '@sneat/core';\nimport { isSpaceSupportsMemberGroups } from '@sneat/dto';\nimport { ContactusSpaceService } from '../services';\nimport { IContactBrief, IContactDbo } from '@sneat/extension-contactus-contract';\n\nexport abstract class MembersBasePage extends ContactusModuleBaseComponent {\n public members?: readonly IIdAndBriefAndOptionalDbo<\n IContactBrief,\n IContactDbo\n >[];\n\n // protected currentUserDto: IDtoUser;\n\n abstract get memberType(): SpaceMemberType;\n\n // protected setCurrentUser(dto: IDtoUser) {\n // this.currentUserDto = dto;\n // }\n\n protected constructor(contactusTeamService: ContactusSpaceService) {\n super(contactusTeamService);\n // this.userService.currentUserLoaded.subscribe(user => this.setCurrentUser(user));\n }\n\n goNewMember = () => {\n // TODO: use it?\n this.navigateForwardToSpacePage('new-member').catch(\n this.logErrorHandler('failed to navigate to new member page'),\n );\n };\n\n // goMember = (member: IMemberContext, page?: MemberPages) => {\n // \tthis.navigateForwardToSpacePage(\n // \t\t(page || 'member') + '/' + member.id,\n // \t).catch(this.logErrorHandler('failed to navigate to team member page'));\n // };\n //\n // goContact = (id: string, event: Event) => {\n // \tevent.stopPropagation();\n // \tthis.navigateForwardToSpacePage(`contact/${id}`)\n // \t\t.catch(this.logErrorHandler('failed to navigate to contact page'));\n // };\n\n public get supportsMemberGroups(): boolean {\n return (\n !!this.space?.brief && isSpaceSupportsMemberGroups(this.space.brief.type)\n );\n }\n\n // protected setPageCommuneIds(source: string, communeIds: ICommuneIds, communeDto?: ICommuneDto): void {\n // \tsuper.setPageCommuneIds(source, communeIds, communeDto);\n // \tif (this.communeRealId) {\n // \t\tthis.membersService.selectByType(this.communeRealId, this.memberType)\n // \t\t\t.subscribe(\n // \t\t\t\tmembers => {\n // \t\t\t\t\tthis.members = members;\n // \t\t\t\t},\n // \t\t\t\tthis.errorLogger.logError,\n // \t\t\t);\n // \t}\n // }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Params } from '@angular/router';\nimport {\n IonBackButton,\n IonBadge,\n IonButton,\n IonButtons,\n IonCard,\n IonContent,\n IonFooter,\n IonHeader,\n IonIcon,\n IonItem,\n IonItemDivider,\n IonItemGroup,\n IonLabel,\n IonMenuButton,\n IonSegment,\n IonSegmentButton,\n IonToolbar,\n} from '@ionic/angular/standalone';\nimport { SpaceMemberType } from '@sneat/auth-models';\nimport {\n ContactusServicesModule,\n ContactusSpaceService,\n} from '../../../services';\nimport { FamilyMembersComponent, MemberGroup } from '@sneat/extension-contactus-ui';\nimport { IMemberGroupContext } from '@sneat/extension-contactus-contract';\nimport { isSpaceSupportsMemberGroups } from '@sneat/dto';\nimport {\n SpaceComponentBaseParams,\n SpacePageTitleComponent,\n} from '@sneat/space-components';\nimport { SpaceServiceModule } from '@sneat/space-services';\nimport { ClassName } from '@sneat/ui';\nimport { MembersBasePage } from '../../members-base-page';\nimport { Component, inject } from '@angular/core';\n\n@Component({\n imports: [\n FormsModule,\n SpacePageTitleComponent,\n ContactusServicesModule,\n FamilyMembersComponent,\n SpaceServiceModule,\n IonHeader,\n IonToolbar,\n IonButtons,\n IonBackButton,\n IonMenuButton,\n IonContent,\n IonSegment,\n IonSegmentButton,\n IonLabel,\n IonCard,\n AsyncPipe,\n IonItemGroup,\n IonItemDivider,\n IonIcon,\n IonBadge,\n IonItem,\n IonFooter,\n IonButton,\n ],\n providers: [\n { provide: ClassName, useValue: 'MembersPageComponent' },\n SpaceComponentBaseParams,\n ],\n selector: 'sneat-members-page',\n templateUrl: 'members-page.component.html',\n})\nexport class MembersPageComponent extends MembersBasePage {\n // private readonly memberGroupService = inject(MemberGroupService);\n\n public memberGroups?: readonly IMemberGroupContext[];\n // public loadingStubs?: number[];\n public segment: 'all' | 'groups' = 'all';\n // public listMode: 'list' | 'cards' = 'list';\n // public membersByGroupId: { [id: string]: IMemberContext[] } = {};\n\n readonly memberType: SpaceMemberType = 'member';\n\n constructor() {\n const contactusTeamService = inject(ContactusSpaceService);\n\n super(contactusTeamService);\n }\n\n protected goGroup(memberGroup: IMemberGroupContext): void {\n this.navigateForwardToSpacePage(`group/${memberGroup.id}`, {\n state: { memberGroup },\n }).catch(this.logErrorHandler('failed to navigate to members group page'));\n }\n\n protected goNewMemberPage(group?: MemberGroup): void {\n const queryParams: Params | undefined = group\n ? { group: group.id }\n : undefined;\n this.navigateForwardToSpacePage('new-member', {\n queryParams,\n state: { group },\n }).catch(\n this.logErrorHandler(\n 'failed to navigate to new member page with age parameter',\n ),\n );\n }\n\n public goNew(): void {\n switch (this.segment) {\n case 'all':\n this.goNewMemberPage();\n break;\n case 'groups':\n this.navigateForwardToSpacePage('new-group').catch(\n this.logErrorHandler('failed to navigate to new group page'),\n );\n break;\n default:\n alert(`Unknown segment: ${this.segment}`);\n return;\n }\n }\n\n override onSpaceDboChanged(): void {\n super.onSpaceDboChanged();\n if (!this.space) {\n throw new Error('!this.commune');\n }\n // console.log(`MembersPageComponent.onSpaceDboChanged()`);\n // if (this.team?.dto?.numberOf?.members) {\n // \tthis.loadingStubs = Array(this.team?.dto?.numberOf?.members).fill(1);\n // }\n // if (!isNaN(this.prevMembersCount) && this.prevMembersCount != this.commune.numberOf.members) {\n // this.loadData();\n // }\n this.loadData('onSpaceDboChanged');\n // this.prevMembersCount = this.team?.dto?.numberOf?.members || 0;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private loadData(_source: string): void {\n // console.log(`MembersPageComponent.loadData(source=${source})`);\n\n // this.unsubscribe();\n const space = this.space;\n if (!space) {\n throw new Error('!this.team');\n }\n // this.noGroupMembers = this.team?.brief && isTeamSupportsMemberGroups(this.team.brief.type) ? [] : undefined;\n\n // const contactusTeam = this.teamModuleDto;\n //\n // if (contactusTeam?.dto?.contacts) {\n // \tthis.processContactusSpaceDbo(contactusTeam.dto);\n // } else {\n // \tthis.contactService\n // \t\t.watchContactsWithRole(space, 'space_member') // TODO: use constant\n // \t\t.pipe(takeUntil(this.spaceIDChanged$))\n // \t\t.subscribe({\n // \t\t\tnext: (members) => {\n // \t\t\t\tconsole.log(\n // \t\t\t\t\t`MembersPageComponent.loadData(source=${source}), members =>`,\n // \t\t\t\t\tmembers,\n // \t\t\t\t);\n // \t\t\t\tif (members?.length) {\n // \t\t\t\t\t// TODO: deep equal\n // \t\t\t\t\tmembers.forEach((m) => {\n // \t\t\t\t\t\tif (m.id) {\n // \t\t\t\t\t\t\tif (m.dto?.related) {\n // \t\t\t\t\t\t\t\t// this.contactsByMember[m.id] = zipMapBriefsWithIDs(\n // \t\t\t\t\t\t\t\t// \tm.dto.relatedContacts,\n // \t\t\t\t\t\t\t\t// );\n // \t\t\t\t\t\t\t} else if (this.contactsByMember[m.id]) {\n // \t\t\t\t\t\t\t\tdelete this.contactsByMember[m.id];\n // \t\t\t\t\t\t\t}\n // \t\t\t\t\t\t}\n // \t\t\t\t\t});\n // \t\t\t\t\tthis.members = members;\n // \t\t\t\t\tthis.processMembers();\n // \t\t\t\t}\n // \t\t\t},\n // \t\t});\n // }\n\n if (space.type && isSpaceSupportsMemberGroups(space.type)) {\n throw new Error('not implemented yet due to refactoring');\n // this.contactService.watchContactsByRole(team)\n // \t.subscribe(memberGroups => {\n // \t\tif (memberGroups && (!this.memberGroups || memberGroups.length !== this.memberGroups.length)) { // TODO: deep equal\n // \t\t\tthis.memberGroups = memberGroups;\n // \t\t}\n // \t});\n }\n }\n}\n","<ion-header>\n <ion-toolbar color=\"light\" class=\"with-back-button with-end-buttons\">\n <ion-buttons slot=\"start\">\n <ion-back-button [defaultHref]=\"$defaultBackUrl()\" />\n </ion-buttons>\n <sneat-space-page-title\n [space]=\"space\"\n generalTitle=\"Members\"\n icon=\"👪\"\n [titlesBySpaceType]=\"{\n family: 'Family members',\n }\"\n />\n <ion-buttons slot=\"end\">\n <ion-menu-button menu=\"mainMenu\" />\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"cardy\">\n @if (supportsMemberGroups) {\n <div class=\"segment\">\n <ion-segment [(ngModel)]=\"segment\">\n <ion-segment-button value=\"all\">\n <ion-label>All</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"groups\">\n <ion-label>\n @if (space.type === \"cohabit\") {\n By room\n } @else {\n By group\n }\n </ion-label>\n </ion-segment-button>\n </ion-segment>\n </div>\n }\n\n <!--\t<div class=\"segment\" *ngIf=\"spaceType === 'family'\">-->\n <!--\t\t<ion-segment [(ngModel)]=\"listMode\">-->\n <!--\t\t\t<ion-segment-button value=\"list\">List</ion-segment-button>-->\n <!--\t\t\t<ion-segment-button value=\"cards\">Cards</ion-segment-button>-->\n <!--\t\t</ion-segment>-->\n <!--\t</div>-->\n\n <!--\t<ion-list *ngIf=\"segment === 'all' && teamType === 'family'\">-->\n <!--\t\t<sneat-members-list *ngIf=\"adults\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t\t[team]=\"team\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t\t[allMembers]=\"members\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t\t[contactsByMember]=\"contactsByMember\"-->\n <!--\t\t></sneat-members-list>-->\n <!--\t</ion-list>-->\n\n @if (segment === \"all\" && $spaceType() === \"family\") {\n <ion-card>\n <sneat-family-members\n [$space]=\"$space()\"\n [contactusSpaceDbo]=\"spaceModuleDbo$ | async\"\n (addMember)=\"goNewMemberPage($event)\"\n />\n </ion-card>\n }\n\n @if (segment === \"groups\") {\n @if ($spaceType() === \"cohabit\") {\n @if (memberGroups) {\n @for (group of memberGroups; track group.id) {\n <ion-item-group>\n <ion-item-divider>\n <ion-icon name=\"people\" style=\"margin-right: 0.5em\" />\n <ion-label>\n {{ group.brief?.title }}\n </ion-label>\n @if (group.dbo?.numberOf?.members) {\n <ion-badge color=\"light\">\n {{ group.dbo?.numberOf?.members }} members\n </ion-badge>\n }\n </ion-item-divider>\n <!--\t\t\t\t\t<ng-container *ngIf=\"membersByGroupId[group.id]\">-->\n <!--\t\t\t\t\t\t<sneat-members-list [members]=\"this.membersByGroupId[group.id]\"-->\n <!--\t\t\t\t\t\t></sneat-members-list>-->\n <!--\t\t\t\t\t</ng-container>-->\n </ion-item-group>\n }\n\n <!--\t\t\t\t<ng-container *ngIf=\"noGroupMembers && noGroupMembers.length\">-->\n <!--\t\t\t\t\t<ion-item-divider>-->\n <!--\t\t\t\t\t\t<ion-label>No group members</ion-label>-->\n <!--\t\t\t\t\t</ion-item-divider>-->\n <!--\t\t\t\t\t<sneat-members-list [members]=\"noGroupMembers\"-->\n <!--\t\t\t\t\t></sneat-members-list>-->\n <!--\t\t\t\t</ng-container>-->\n }\n } @else if (memberGroups) {\n @for (group of memberGroups; track group.id) {\n <ion-item-group>\n <ion-item button=\"button\" (click)=\"goGroup(group)\">\n <ion-icon name=\"people\" style=\"margin-right: 0.5em\" />\n <ion-label>\n {{ group.brief?.title }}\n </ion-label>\n @if (group.dbo?.numberOf?.members) {\n <ion-badge color=\"light\">\n {{ group?.dbo?.numberOf?.members }} members\n </ion-badge>\n }\n </ion-item>\n </ion-item-group>\n }\n <!--\t\t\t\t<ng-container *ngIf=\"noGroupMembers && noGroupMembers.length\">-->\n <!--\t\t\t\t\t<ion-item-divider>-->\n <!--\t\t\t\t\t\t<ion-label>No group members</ion-label>-->\n <!--\t\t\t\t\t\t<ion-badge color=\"light\" slot=\"end\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t style=\"margin-right: 1em\">{{noGroupMembers.length}}</ion-badge>-->\n <!--\t\t\t\t\t</ion-item-divider>-->\n <!--\t\t\t\t\t<sneat-members-list-->\n <!--\t\t\t\t\t\t[members]=\"noGroupMembers\"-->\n <!--\t\t\t\t\t\t[contactsByMember]=\"contactsByMember\"-->\n <!--\t\t\t\t\t></sneat-members-list>-->\n <!--\t\t\t\t</ng-container>-->\n }\n }\n</ion-content>\n\n<ion-footer>\n <ion-toolbar color=\"light\">\n @if (space.dbo) {\n @switch (segment) {\n @case (\"all\") {\n <ion-label>\n <b>Total</b>:\n <!--\t\t\t{{ team.dto.numberOf?.members ?? 0 }}-->\n <!--\t\t\t{{ team.dto.numberOf?.members === 1 ? \"member\" : \"members\" }}-->\n </ion-label>\n }\n @case (\"groups\") {\n <ion-label>\n <b>Total</b>:\n <!--\t\t\t{{ team.dto.numberOf?.memberGroups || 0 }}-->\n <!--\t\t\t{{ team.dto.numberOf?.memberGroups === 1 ? \"group\" : \"groups\" }}-->\n </ion-label>\n }\n }\n } @else {\n <ion-label>Loading...</ion-label>\n }\n\n <ion-buttons slot=\"end\">\n <ion-button\n size=\"small\"\n color=\"primary\"\n [disabled]=\"!space.brief\"\n (click)=\"goNew()\"\n [title]=\"segment === 'groups' ? 'Add new group' : 'Add new member'\"\n >\n <ion-icon name=\"add\" />\n <ion-label>Add</ion-label>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-footer>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sneat-extension-contactus-members-page.component-Bv9xVCKk.mjs","sources":["../../../../../../libs/extensions/contactus/runtime/src/lib/members/members-base-page.ts","../../../../../../libs/extensions/contactus/runtime/src/lib/members/pages/members/members-page.component.ts","../../../../../../libs/extensions/contactus/runtime/src/lib/members/pages/members/members-page.component.html"],"sourcesContent":["import { SpaceMemberType } from '@sneat/auth-models';\nimport { ContactusModuleBaseComponent } from '@sneat/extension-contactus-ui';\nimport { IIdAndBriefAndOptionalDbo } from '@sneat/core';\nimport { isSpaceSupportsMemberGroups } from '@sneat/dto';\nimport { ContactusSpaceService } from '../services';\nimport { IContactBrief, IContactDbo } from '@sneat/extension-contactus-contract';\n\nexport abstract class MembersBasePage extends ContactusModuleBaseComponent {\n public members?: readonly IIdAndBriefAndOptionalDbo<\n IContactBrief,\n IContactDbo\n >[];\n\n // protected currentUserDto: IDtoUser;\n\n abstract get memberType(): SpaceMemberType;\n\n // protected setCurrentUser(dto: IDtoUser) {\n // this.currentUserDto = dto;\n // }\n\n protected constructor(contactusTeamService: ContactusSpaceService) {\n super(contactusTeamService);\n // this.userService.currentUserLoaded.subscribe(user => this.setCurrentUser(user));\n }\n\n goNewMember = () => {\n // TODO: use it?\n this.navigateForwardToSpacePage('new-member').catch(\n this.logErrorHandler('failed to navigate to new member page'),\n );\n };\n\n // goMember = (member: IMemberContext, page?: MemberPages) => {\n // \tthis.navigateForwardToSpacePage(\n // \t\t(page || 'member') + '/' + member.id,\n // \t).catch(this.logErrorHandler('failed to navigate to team member page'));\n // };\n //\n // goContact = (id: string, event: Event) => {\n // \tevent.stopPropagation();\n // \tthis.navigateForwardToSpacePage(`contact/${id}`)\n // \t\t.catch(this.logErrorHandler('failed to navigate to contact page'));\n // };\n\n public get supportsMemberGroups(): boolean {\n return (\n !!this.space?.brief && isSpaceSupportsMemberGroups(this.space.brief.type)\n );\n }\n\n // protected setPageCommuneIds(source: string, communeIds: ICommuneIds, communeDto?: ICommuneDto): void {\n // \tsuper.setPageCommuneIds(source, communeIds, communeDto);\n // \tif (this.communeRealId) {\n // \t\tthis.membersService.selectByType(this.communeRealId, this.memberType)\n // \t\t\t.subscribe(\n // \t\t\t\tmembers => {\n // \t\t\t\t\tthis.members = members;\n // \t\t\t\t},\n // \t\t\t\tthis.errorLogger.logError,\n // \t\t\t);\n // \t}\n // }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Params } from '@angular/router';\nimport {\n IonBackButton,\n IonBadge,\n IonButton,\n IonButtons,\n IonCard,\n IonContent,\n IonFooter,\n IonHeader,\n IonIcon,\n IonItem,\n IonItemDivider,\n IonItemGroup,\n IonLabel,\n IonMenuButton,\n IonSegment,\n IonSegmentButton,\n IonToolbar,\n} from '@ionic/angular/standalone';\nimport { SpaceMemberType } from '@sneat/auth-models';\nimport {\n ContactusServicesModule,\n ContactusSpaceService,\n} from '../../../services';\nimport { FamilyMembersComponent, MemberGroup } from '@sneat/extension-contactus-ui';\nimport { IMemberGroupContext } from '@sneat/extension-contactus-contract';\nimport { isSpaceSupportsMemberGroups } from '@sneat/dto';\nimport {\n SpaceComponentBaseParams,\n SpacePageTitleComponent,\n} from '@sneat/space-components';\nimport { SpaceServiceModule } from '@sneat/space-services';\nimport { ClassName } from '@sneat/ui';\nimport { MembersBasePage } from '../../members-base-page';\nimport { Component, inject } from '@angular/core';\n\n@Component({\n imports: [\n FormsModule,\n SpacePageTitleComponent,\n ContactusServicesModule,\n FamilyMembersComponent,\n SpaceServiceModule,\n IonHeader,\n IonToolbar,\n IonButtons,\n IonBackButton,\n IonMenuButton,\n IonContent,\n IonSegment,\n IonSegmentButton,\n IonLabel,\n IonCard,\n AsyncPipe,\n IonItemGroup,\n IonItemDivider,\n IonIcon,\n IonBadge,\n IonItem,\n IonFooter,\n IonButton,\n ],\n providers: [\n { provide: ClassName, useValue: 'MembersPageComponent' },\n SpaceComponentBaseParams,\n ],\n selector: 'sneat-members-page',\n templateUrl: 'members-page.component.html',\n})\nexport class MembersPageComponent extends MembersBasePage {\n // private readonly memberGroupService = inject(MemberGroupService);\n\n public memberGroups?: readonly IMemberGroupContext[];\n // public loadingStubs?: number[];\n public segment: 'all' | 'groups' = 'all';\n // public listMode: 'list' | 'cards' = 'list';\n // public membersByGroupId: { [id: string]: IMemberContext[] } = {};\n\n readonly memberType: SpaceMemberType = 'member';\n\n constructor() {\n const contactusTeamService = inject(ContactusSpaceService);\n\n super(contactusTeamService);\n }\n\n protected goGroup(memberGroup: IMemberGroupContext): void {\n this.navigateForwardToSpacePage(`group/${memberGroup.id}`, {\n state: { memberGroup },\n }).catch(this.logErrorHandler('failed to navigate to members group page'));\n }\n\n protected goNewMemberPage(group?: MemberGroup): void {\n const queryParams: Params | undefined = group\n ? { group: group.id }\n : undefined;\n this.navigateForwardToSpacePage('new-member', {\n queryParams,\n state: { group },\n }).catch(\n this.logErrorHandler(\n 'failed to navigate to new member page with age parameter',\n ),\n );\n }\n\n public goNew(): void {\n switch (this.segment) {\n case 'all':\n this.goNewMemberPage();\n break;\n case 'groups':\n this.navigateForwardToSpacePage('new-group').catch(\n this.logErrorHandler('failed to navigate to new group page'),\n );\n break;\n default:\n alert(`Unknown segment: ${this.segment}`);\n return;\n }\n }\n\n override onSpaceDboChanged(): void {\n super.onSpaceDboChanged();\n if (!this.space) {\n throw new Error('!this.commune');\n }\n // console.log(`MembersPageComponent.onSpaceDboChanged()`);\n // if (this.team?.dto?.numberOf?.members) {\n // \tthis.loadingStubs = Array(this.team?.dto?.numberOf?.members).fill(1);\n // }\n // if (!isNaN(this.prevMembersCount) && this.prevMembersCount != this.commune.numberOf.members) {\n // this.loadData();\n // }\n this.loadData('onSpaceDboChanged');\n // this.prevMembersCount = this.team?.dto?.numberOf?.members || 0;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private loadData(_source: string): void {\n // console.log(`MembersPageComponent.loadData(source=${source})`);\n\n // this.unsubscribe();\n const space = this.space;\n if (!space) {\n throw new Error('!this.team');\n }\n // this.noGroupMembers = this.team?.brief && isTeamSupportsMemberGroups(this.team.brief.type) ? [] : undefined;\n\n // const contactusTeam = this.teamModuleDto;\n //\n // if (contactusTeam?.dto?.contacts) {\n // \tthis.processContactusSpaceDbo(contactusTeam.dto);\n // } else {\n // \tthis.contactService\n // \t\t.watchContactsWithRole(space, 'space_member') // TODO: use constant\n // \t\t.pipe(takeUntil(this.spaceIDChanged$))\n // \t\t.subscribe({\n // \t\t\tnext: (members) => {\n // \t\t\t\tconsole.log(\n // \t\t\t\t\t`MembersPageComponent.loadData(source=${source}), members =>`,\n // \t\t\t\t\tmembers,\n // \t\t\t\t);\n // \t\t\t\tif (members?.length) {\n // \t\t\t\t\t// TODO: deep equal\n // \t\t\t\t\tmembers.forEach((m) => {\n // \t\t\t\t\t\tif (m.id) {\n // \t\t\t\t\t\t\tif (m.dto?.related) {\n // \t\t\t\t\t\t\t\t// this.contactsByMember[m.id] = zipMapBriefsWithIDs(\n // \t\t\t\t\t\t\t\t// \tm.dto.relatedContacts,\n // \t\t\t\t\t\t\t\t// );\n // \t\t\t\t\t\t\t} else if (this.contactsByMember[m.id]) {\n // \t\t\t\t\t\t\t\tdelete this.contactsByMember[m.id];\n // \t\t\t\t\t\t\t}\n // \t\t\t\t\t\t}\n // \t\t\t\t\t});\n // \t\t\t\t\tthis.members = members;\n // \t\t\t\t\tthis.processMembers();\n // \t\t\t\t}\n // \t\t\t},\n // \t\t});\n // }\n\n if (space.type && isSpaceSupportsMemberGroups(space.type)) {\n throw new Error('not implemented yet due to refactoring');\n // this.contactService.watchContactsByRole(team)\n // \t.subscribe(memberGroups => {\n // \t\tif (memberGroups && (!this.memberGroups || memberGroups.length !== this.memberGroups.length)) { // TODO: deep equal\n // \t\t\tthis.memberGroups = memberGroups;\n // \t\t}\n // \t});\n }\n }\n}\n","<ion-header>\n <ion-toolbar color=\"light\" class=\"with-back-button with-end-buttons\">\n <ion-buttons slot=\"start\">\n <ion-back-button [defaultHref]=\"$defaultBackUrl()\" />\n </ion-buttons>\n <sneat-space-page-title\n [space]=\"space\"\n generalTitle=\"Members\"\n icon=\"👪\"\n [titlesBySpaceType]=\"{\n family: 'Family members',\n }\"\n />\n <ion-buttons slot=\"end\">\n <ion-menu-button menu=\"mainMenu\" />\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"cardy\">\n @if (supportsMemberGroups) {\n <div class=\"segment\">\n <ion-segment [(ngModel)]=\"segment\">\n <ion-segment-button value=\"all\">\n <ion-label>All</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"groups\">\n <ion-label>\n @if (space.type === \"cohabit\") {\n By room\n } @else {\n By group\n }\n </ion-label>\n </ion-segment-button>\n </ion-segment>\n </div>\n }\n\n <!--\t<div class=\"segment\" *ngIf=\"spaceType === 'family'\">-->\n <!--\t\t<ion-segment [(ngModel)]=\"listMode\">-->\n <!--\t\t\t<ion-segment-button value=\"list\">List</ion-segment-button>-->\n <!--\t\t\t<ion-segment-button value=\"cards\">Cards</ion-segment-button>-->\n <!--\t\t</ion-segment>-->\n <!--\t</div>-->\n\n <!--\t<ion-list *ngIf=\"segment === 'all' && teamType === 'family'\">-->\n <!--\t\t<sneat-members-list *ngIf=\"adults\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t\t[team]=\"team\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t\t[allMembers]=\"members\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t\t[contactsByMember]=\"contactsByMember\"-->\n <!--\t\t></sneat-members-list>-->\n <!--\t</ion-list>-->\n\n @if (segment === \"all\" && $spaceType() === \"family\") {\n <ion-card>\n <sneat-family-members\n [$space]=\"$space()\"\n [contactusSpaceDbo]=\"spaceModuleDbo$ | async\"\n (addMember)=\"goNewMemberPage($event)\"\n />\n </ion-card>\n }\n\n @if (segment === \"groups\") {\n @if ($spaceType() === \"cohabit\") {\n @if (memberGroups) {\n @for (group of memberGroups; track group.id) {\n <ion-item-group>\n <ion-item-divider>\n <ion-icon name=\"people\" style=\"margin-right: 0.5em\" />\n <ion-label>\n {{ group.brief?.title }}\n </ion-label>\n @if (group.dbo?.numberOf?.members) {\n <ion-badge color=\"light\">\n {{ group.dbo?.numberOf?.members }} members\n </ion-badge>\n }\n </ion-item-divider>\n <!--\t\t\t\t\t<ng-container *ngIf=\"membersByGroupId[group.id]\">-->\n <!--\t\t\t\t\t\t<sneat-members-list [members]=\"this.membersByGroupId[group.id]\"-->\n <!--\t\t\t\t\t\t></sneat-members-list>-->\n <!--\t\t\t\t\t</ng-container>-->\n </ion-item-group>\n }\n\n <!--\t\t\t\t<ng-container *ngIf=\"noGroupMembers && noGroupMembers.length\">-->\n <!--\t\t\t\t\t<ion-item-divider>-->\n <!--\t\t\t\t\t\t<ion-label>No group members</ion-label>-->\n <!--\t\t\t\t\t</ion-item-divider>-->\n <!--\t\t\t\t\t<sneat-members-list [members]=\"noGroupMembers\"-->\n <!--\t\t\t\t\t></sneat-members-list>-->\n <!--\t\t\t\t</ng-container>-->\n }\n } @else if (memberGroups) {\n @for (group of memberGroups; track group.id) {\n <ion-item-group>\n <ion-item button=\"button\" (click)=\"goGroup(group)\">\n <ion-icon name=\"people\" style=\"margin-right: 0.5em\" />\n <ion-label>\n {{ group.brief?.title }}\n </ion-label>\n @if (group.dbo?.numberOf?.members) {\n <ion-badge color=\"light\">\n {{ group?.dbo?.numberOf?.members }} members\n </ion-badge>\n }\n </ion-item>\n </ion-item-group>\n }\n <!--\t\t\t\t<ng-container *ngIf=\"noGroupMembers && noGroupMembers.length\">-->\n <!--\t\t\t\t\t<ion-item-divider>-->\n <!--\t\t\t\t\t\t<ion-label>No group members</ion-label>-->\n <!--\t\t\t\t\t\t<ion-badge color=\"light\" slot=\"end\"-->\n <!--\t\t\t\t\t\t\t\t\t\t\t style=\"margin-right: 1em\">{{noGroupMembers.length}}</ion-badge>-->\n <!--\t\t\t\t\t</ion-item-divider>-->\n <!--\t\t\t\t\t<sneat-members-list-->\n <!--\t\t\t\t\t\t[members]=\"noGroupMembers\"-->\n <!--\t\t\t\t\t\t[contactsByMember]=\"contactsByMember\"-->\n <!--\t\t\t\t\t></sneat-members-list>-->\n <!--\t\t\t\t</ng-container>-->\n }\n }\n</ion-content>\n\n<ion-footer>\n <ion-toolbar color=\"light\">\n @if (space.dbo) {\n @switch (segment) {\n @case (\"all\") {\n <ion-label>\n <b>Total</b>:\n <!--\t\t\t{{ team.dto.numberOf?.members ?? 0 }}-->\n <!--\t\t\t{{ team.dto.numberOf?.members === 1 ? \"member\" : \"members\" }}-->\n </ion-label>\n }\n @case (\"groups\") {\n <ion-label>\n <b>Total</b>:\n <!--\t\t\t{{ team.dto.numberOf?.memberGroups || 0 }}-->\n <!--\t\t\t{{ team.dto.numberOf?.memberGroups === 1 ? \"group\" : \"groups\" }}-->\n </ion-label>\n }\n }\n } @else {\n <ion-label>Loading...</ion-label>\n }\n\n <ion-buttons slot=\"end\">\n <ion-button\n size=\"small\"\n color=\"primary\"\n [disabled]=\"!space.brief\"\n (click)=\"goNew()\"\n [title]=\"segment === 'groups' ? 'Add new group' : 'Add new member'\"\n >\n <ion-icon name=\"add\" />\n <ion-label>Add</ion-label>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-footer>\n"],"names":[],"mappings":"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"}
@@ -97,10 +97,10 @@ class SpaceMemberPageComponent extends MemberBasePage {
97
97
  // }
98
98
  // }
99
99
  }
100
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SpaceMemberPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
101
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SpaceMemberPageComponent, isStandalone: true, selector: "sneat-space-member-page", providers: [{ provide: ClassName, useValue: 'SpaceMemberPageComponent' }], usesInheritance: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-back-button [defaultHref]=\"spacePageUrl('members')\" />\n </ion-buttons>\n <ion-title>\n @switch (space.type) {\n @case (\"family\") {\n @if ($contact(); as contact) {\n Family member: {{ contact | personTitle }}\n } @else {\n Family member\n }\n }\n @case (\"cohabit\") {\n Housemates\n }\n @default {\n <ion-title>Member</ion-title>\n }\n }\n </ion-title>\n <!--<ion-title *ngIf=\"member else titleNoMember\">{{member.title}}</ion-title>-->\n <!--<ng-template #titleNoMember>-->\n <!--<ion-title>Member</ion-title>-->\n <!--</ng-template>-->\n <ion-buttons slot=\"end\">\n @if (member) {\n <ion-button\n [title]=\"\n member.brief?.userID === spaceParams.userService.currentUserID\n ? 'Leave team'\n : 'Remove team member'\n \"\n (click)=\"removeMember()\"\n >\n <ion-icon name=\"trash\" />\n </ion-button>\n }\n <ion-menu-button menu=\"mainMenu\" />\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"cardy\">\n <sneat-contact-details [$contact]=\"$contact()\" [$space]=\"$space()\" />\n</ion-content>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "component", type: ContactDetailsComponent, selector: "sneat-contact-details", inputs: ["$contact"], outputs: ["contactChange"] }, { kind: "ngmodule", type: ContactusServicesModule }, { kind: "ngmodule", type: SpaceServiceModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonBackButton, selector: "ion-back-button" }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { 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: "pipe", type: PersonTitle, name: "personTitle" }] });
100
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: SpaceMemberPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
101
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: SpaceMemberPageComponent, isStandalone: true, selector: "sneat-space-member-page", providers: [{ provide: ClassName, useValue: 'SpaceMemberPageComponent' }], usesInheritance: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-back-button [defaultHref]=\"spacePageUrl('members')\" />\n </ion-buttons>\n <ion-title>\n @switch (space.type) {\n @case (\"family\") {\n @if ($contact(); as contact) {\n Family member: {{ contact | personTitle }}\n } @else {\n Family member\n }\n }\n @case (\"cohabit\") {\n Housemates\n }\n @default {\n <ion-title>Member</ion-title>\n }\n }\n </ion-title>\n <!--<ion-title *ngIf=\"member else titleNoMember\">{{member.title}}</ion-title>-->\n <!--<ng-template #titleNoMember>-->\n <!--<ion-title>Member</ion-title>-->\n <!--</ng-template>-->\n <ion-buttons slot=\"end\">\n @if (member) {\n <ion-button\n [title]=\"\n member.brief?.userID === spaceParams.userService.currentUserID\n ? 'Leave team'\n : 'Remove team member'\n \"\n (click)=\"removeMember()\"\n >\n <ion-icon name=\"trash\" />\n </ion-button>\n }\n <ion-menu-button menu=\"mainMenu\" />\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"cardy\">\n <sneat-contact-details [$contact]=\"$contact()\" [$space]=\"$space()\" />\n</ion-content>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "component", type: ContactDetailsComponent, selector: "sneat-contact-details", inputs: ["$contact"], outputs: ["contactChange"] }, { kind: "ngmodule", type: ContactusServicesModule }, { kind: "ngmodule", type: SpaceServiceModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonBackButton, selector: "ion-back-button" }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { 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: "pipe", type: PersonTitle, name: "personTitle" }] });
102
102
  }
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SpaceMemberPageComponent, decorators: [{
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: SpaceMemberPageComponent, decorators: [{
104
104
  type: Component,
105
105
  args: [{ selector: 'sneat-space-member-page', imports: [
106
106
  FormsModule,
@@ -121,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
121
121
  }], ctorParameters: () => [] });
122
122
 
123
123
  export { SpaceMemberPageComponent };
124
- //# sourceMappingURL=sneat-extension-contactus-space-member-page.component-BY_SJdUs.mjs.map
124
+ //# sourceMappingURL=sneat-extension-contactus-space-member-page.component-Ds2b-oB9.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sneat-extension-contactus-space-member-page.component-BY_SJdUs.mjs","sources":["../../../../../../libs/extensions/contactus/runtime/src/lib/members/pages/member-base-page.ts","../../../../../../libs/extensions/contactus/runtime/src/lib/members/pages/member/space-member-page.component.ts","../../../../../../libs/extensions/contactus/runtime/src/lib/members/pages/member/space-member-page.component.html"],"sourcesContent":["import { IContactContext } from '@sneat/extension-contactus-contract';\nimport { ContactService } from '../../services';\nimport { ContactBasePage } from '../../pages/contact-base-page';\n\nexport abstract class MemberBasePage extends ContactBasePage {\n public segment: 'friends' | 'other' | 'summary' = 'summary';\n\n // override defaultBackUrl = CommuneTopPage.members;\n // public isDeleted?: boolean;\n // protected currentUserDto: IUserDto | undefined;\n private memberContext?: IContactContext;\n\n protected constructor(contactService: ContactService) {\n super(contactService, 'members');\n }\n\n public get member(): IContactContext | undefined {\n return this.memberContext;\n }\n\n protected goNew = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _event: Event,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _type: 'new-contact' | 'new-document' | 'new-liability' | 'new-asset',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _relation?: string,\n ): void => {\n // this.navigateForward(\n // \ttype,\n // \t{ member: this.memberContext, relation },\n // \t{ memberDto: this.memberDto });\n };\n\n // protected setCurrentUser(dto?: IUserDto): void {\n // \tthis.currentUserDto = dto;\n // }\n\n // protected setMemberId(memberId: string): void {\n // \tconsole.log(`CommuneMemberPage.setMemberId(${memberId})`);\n // \tif (this.memberId === memberId) {\n // \t\treturn;\n // \t}\n // \tthis.memberId = memberId;\n // \tif (this.memberInfo && this.memberInfo.id !== memberId) {\n // \t\tthis.memberInfo = undefined;\n // \t}\n // \tif (this.memberDto && this.memberDto.id !== memberId) {\n // \t\tthis.memberDto = undefined;\n // \t}\n // \tthis.subscriptions.push(\n // \t\tthis.membersService.watchById(this.memberId)\n // \t\t\t.subscribe({\n // \t\t\t\tnext: memberDto => {\n // \t\t\t\t\tconsole.log('Loaded memberDto:', memberDto);\n // \t\t\t\t\tthis.setMemberDto(memberDto);\n // \t\t\t\t\tif (!memberDto) {\n // \t\t\t\t\t\treturn;\n // \t\t\t\t\t}\n // \t\t\t\t\tif (!eq(memberDto.communeId, this.communeRealId)) {\n // \t\t\t\t\t\tthis.setPageCommuneIds('MemberPage.memberFromObservable', { real: memberDto.communeId });\n // \t\t\t\t\t}\n // \t\t\t\t},\n // \t\t\t\terror: err => {\n // \t\t\t\t\tthis.errorLogger.logError(err, 'Failed to get member by ID');\n // \t\t\t\t},\n // \t\t\t}));\n // }\n //\n // protected setMemberInfo(memberInfo: ICommuneMemberInfo): void {\n // \tthis.memberInfo = memberInfo;\n // \tif (memberInfo && memberInfo.id && memberInfo.id !== this.memberId) {\n // \t\tthis.setMemberId(memberInfo.id);\n // \t}\n // }\n //\n // protected onCommuneChanged(source?: string): void {\n // \tsuper.onCommuneChanged(source);\n // \tif (!this.commune) {\n // \t\tthrow new Error('!this.commune');\n // \t}\n // \tif (!this.memberId && this.commune.dto.members) {\n // \t\tconst memberInfo = this.commune.dto.members.find(m => !m.id);\n // \t\tif (memberInfo) {\n // \t\t\tthis.setMemberInfo(memberInfo);\n // \t\t}\n // \t}\n // }\n\n // protected setMemberDto(memberDto?: IMemberDto): void {\n // \tconsole.log('setMemberDto', memberDto);\n // \tif (memberDto || this.memberDto) {\n // \t\tthis.isDeleted = !!this.memberDto && !memberDto;\n // \t}\n // \tthis.memberDto = memberDto;\n // \tif (!memberDto) {\n // \t\treturn;\n // \t}\n // \tif (!this.memberInfo || !eq(this.memberInfo.id, memberDto.id)) {\n // \t\tthis.setMemberInfo(newCommuneMemberInfo(memberDto));\n // \t}\n // \tif (memberDto.communeId && !eq(memberDto.communeId, this.communeRealId)) {\n // \t\tthis.setPageCommuneIds('MemberPage.memberFromHistoryState', { real: memberDto.communeId });\n // \t}\n // }\n}\n","import { Component, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n IonBackButton,\n IonButton,\n IonButtons,\n IonContent,\n IonHeader,\n IonIcon,\n IonMenuButton,\n IonTitle,\n IonToolbar,\n} from '@ionic/angular/standalone';\nimport { PersonTitle } from '@sneat/extension-contactus-ui';\nimport {\n ContactService,\n ContactusServicesModule,\n} from '../../../services';\nimport { ContactDetailsComponent } from '@sneat/extension-contactus-ui';\nimport { MemberRelationship } from '@sneat/extension-contactus-contract';\nimport { SpaceServiceModule } from '@sneat/space-services';\nimport { ClassName } from '@sneat/ui';\nimport { MemberBasePage } from '../member-base-page';\n\n@Component({\n selector: 'sneat-space-member-page',\n templateUrl: './space-member-page.component.html',\n imports: [\n FormsModule,\n ContactDetailsComponent,\n ContactusServicesModule,\n PersonTitle,\n SpaceServiceModule,\n IonHeader,\n IonToolbar,\n IonButtons,\n IonBackButton,\n IonTitle,\n IonIcon,\n IonMenuButton,\n IonContent,\n IonButton,\n ],\n providers: [{ provide: ClassName, useValue: 'SpaceMemberPageComponent' }],\n})\nexport class SpaceMemberPageComponent extends MemberBasePage {\n public relatedAs?: MemberRelationship;\n\n public constructor() {\n super(inject(ContactService));\n }\n\n // protected setMemberId(memberId: string): void {\n // \tsuper.setMemberId(memberId);\n // \tif (this.currentUserDto && this.communeRealId) {\n // \t\tthis.setRelatedAs();\n // \t}\n // }\n\n // protected setPageCommuneIds(source: string, communeIds: ICommuneIds, communeDto?: ICommuneDto): void {\n // \tsuper.setPageCommuneIds(source, communeIds, communeDto);\n // \tif (this.currentUserDto && this.memberId) {\n // \t\tthis.setRelatedAs();\n // \t}\n // }\n\n // protected setCurrentUser(dto: IUserDto): void {\n // \tsuper.setCurrentUser(dto);\n // \tthis.logger.debug('CommuneMemberPage.setCurrentUser()', dto);\n // \tif (this.memberId && this.communeRealId) {\n // \t\tthis.setRelatedAs();\n // \t}\n // }\n\n public removeMember() {\n if (\n !confirm(\n `Are you sure you want to remove ${\n this.member?.brief?.title || this.member?.id\n } from ${this.space?.brief?.title}?`,\n )\n ) {\n return;\n }\n if (!this.space) {\n this.errorLogger.logError(\n 'Can not remove team member without team context',\n );\n return;\n }\n if (!this.member?.id) {\n this.errorLogger.logError(\n 'Can not remove team member without knowing member ID',\n );\n return;\n }\n this.contactService\n .removeSpaceMember({ spaceID: this.space.id, contactID: this.member?.id })\n .subscribe({\n next: () => {\n this.navController\n .pop()\n .catch((err) =>\n this.errorLogger.logError(err, 'Failed to pop navigator state'),\n );\n },\n error: (err) =>\n this.errorLogger.logError(err, 'Failed to remove member'),\n });\n }\n\n private setRelatedAs(): void {\n // this.logger.debug('CommuneMemberPage.setRelatedAs()', this.currentUserDto);\n // if (!this.currentUserDto) {\n // \treturn;\n // }\n // const userCommunes = this.currentUserDto && this.currentUserDto.communes;\n // if (userCommunes) {\n // \tconst userCommuneInfo = userCommunes.find(c => eq(c.id, this.communeRealId));\n // \tif (userCommuneInfo && userCommuneInfo.members) {\n // \t\tconst memberInfo = userCommuneInfo.members[this.memberId];\n // \t\tif (memberInfo) {\n // \t\t\tthis.relatedAs = memberInfo.relatedAs;\n // \t\t}\n // \t}\n // }\n }\n}\n","<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-back-button [defaultHref]=\"spacePageUrl('members')\" />\n </ion-buttons>\n <ion-title>\n @switch (space.type) {\n @case (\"family\") {\n @if ($contact(); as contact) {\n Family member: {{ contact | personTitle }}\n } @else {\n Family member\n }\n }\n @case (\"cohabit\") {\n Housemates\n }\n @default {\n <ion-title>Member</ion-title>\n }\n }\n </ion-title>\n <!--<ion-title *ngIf=\"member else titleNoMember\">{{member.title}}</ion-title>-->\n <!--<ng-template #titleNoMember>-->\n <!--<ion-title>Member</ion-title>-->\n <!--</ng-template>-->\n <ion-buttons slot=\"end\">\n @if (member) {\n <ion-button\n [title]=\"\n member.brief?.userID === spaceParams.userService.currentUserID\n ? 'Leave team'\n : 'Remove team member'\n \"\n (click)=\"removeMember()\"\n >\n <ion-icon name=\"trash\" />\n </ion-button>\n }\n <ion-menu-button menu=\"mainMenu\" />\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"cardy\">\n <sneat-contact-details [$contact]=\"$contact()\" [$space]=\"$space()\" />\n</ion-content>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sneat-extension-contactus-space-member-page.component-Ds2b-oB9.mjs","sources":["../../../../../../libs/extensions/contactus/runtime/src/lib/members/pages/member-base-page.ts","../../../../../../libs/extensions/contactus/runtime/src/lib/members/pages/member/space-member-page.component.ts","../../../../../../libs/extensions/contactus/runtime/src/lib/members/pages/member/space-member-page.component.html"],"sourcesContent":["import { IContactContext } from '@sneat/extension-contactus-contract';\nimport { ContactService } from '../../services';\nimport { ContactBasePage } from '../../pages/contact-base-page';\n\nexport abstract class MemberBasePage extends ContactBasePage {\n public segment: 'friends' | 'other' | 'summary' = 'summary';\n\n // override defaultBackUrl = CommuneTopPage.members;\n // public isDeleted?: boolean;\n // protected currentUserDto: IUserDto | undefined;\n private memberContext?: IContactContext;\n\n protected constructor(contactService: ContactService) {\n super(contactService, 'members');\n }\n\n public get member(): IContactContext | undefined {\n return this.memberContext;\n }\n\n protected goNew = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _event: Event,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _type: 'new-contact' | 'new-document' | 'new-liability' | 'new-asset',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _relation?: string,\n ): void => {\n // this.navigateForward(\n // \ttype,\n // \t{ member: this.memberContext, relation },\n // \t{ memberDto: this.memberDto });\n };\n\n // protected setCurrentUser(dto?: IUserDto): void {\n // \tthis.currentUserDto = dto;\n // }\n\n // protected setMemberId(memberId: string): void {\n // \tconsole.log(`CommuneMemberPage.setMemberId(${memberId})`);\n // \tif (this.memberId === memberId) {\n // \t\treturn;\n // \t}\n // \tthis.memberId = memberId;\n // \tif (this.memberInfo && this.memberInfo.id !== memberId) {\n // \t\tthis.memberInfo = undefined;\n // \t}\n // \tif (this.memberDto && this.memberDto.id !== memberId) {\n // \t\tthis.memberDto = undefined;\n // \t}\n // \tthis.subscriptions.push(\n // \t\tthis.membersService.watchById(this.memberId)\n // \t\t\t.subscribe({\n // \t\t\t\tnext: memberDto => {\n // \t\t\t\t\tconsole.log('Loaded memberDto:', memberDto);\n // \t\t\t\t\tthis.setMemberDto(memberDto);\n // \t\t\t\t\tif (!memberDto) {\n // \t\t\t\t\t\treturn;\n // \t\t\t\t\t}\n // \t\t\t\t\tif (!eq(memberDto.communeId, this.communeRealId)) {\n // \t\t\t\t\t\tthis.setPageCommuneIds('MemberPage.memberFromObservable', { real: memberDto.communeId });\n // \t\t\t\t\t}\n // \t\t\t\t},\n // \t\t\t\terror: err => {\n // \t\t\t\t\tthis.errorLogger.logError(err, 'Failed to get member by ID');\n // \t\t\t\t},\n // \t\t\t}));\n // }\n //\n // protected setMemberInfo(memberInfo: ICommuneMemberInfo): void {\n // \tthis.memberInfo = memberInfo;\n // \tif (memberInfo && memberInfo.id && memberInfo.id !== this.memberId) {\n // \t\tthis.setMemberId(memberInfo.id);\n // \t}\n // }\n //\n // protected onCommuneChanged(source?: string): void {\n // \tsuper.onCommuneChanged(source);\n // \tif (!this.commune) {\n // \t\tthrow new Error('!this.commune');\n // \t}\n // \tif (!this.memberId && this.commune.dto.members) {\n // \t\tconst memberInfo = this.commune.dto.members.find(m => !m.id);\n // \t\tif (memberInfo) {\n // \t\t\tthis.setMemberInfo(memberInfo);\n // \t\t}\n // \t}\n // }\n\n // protected setMemberDto(memberDto?: IMemberDto): void {\n // \tconsole.log('setMemberDto', memberDto);\n // \tif (memberDto || this.memberDto) {\n // \t\tthis.isDeleted = !!this.memberDto && !memberDto;\n // \t}\n // \tthis.memberDto = memberDto;\n // \tif (!memberDto) {\n // \t\treturn;\n // \t}\n // \tif (!this.memberInfo || !eq(this.memberInfo.id, memberDto.id)) {\n // \t\tthis.setMemberInfo(newCommuneMemberInfo(memberDto));\n // \t}\n // \tif (memberDto.communeId && !eq(memberDto.communeId, this.communeRealId)) {\n // \t\tthis.setPageCommuneIds('MemberPage.memberFromHistoryState', { real: memberDto.communeId });\n // \t}\n // }\n}\n","import { Component, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n IonBackButton,\n IonButton,\n IonButtons,\n IonContent,\n IonHeader,\n IonIcon,\n IonMenuButton,\n IonTitle,\n IonToolbar,\n} from '@ionic/angular/standalone';\nimport { PersonTitle } from '@sneat/extension-contactus-ui';\nimport {\n ContactService,\n ContactusServicesModule,\n} from '../../../services';\nimport { ContactDetailsComponent } from '@sneat/extension-contactus-ui';\nimport { MemberRelationship } from '@sneat/extension-contactus-contract';\nimport { SpaceServiceModule } from '@sneat/space-services';\nimport { ClassName } from '@sneat/ui';\nimport { MemberBasePage } from '../member-base-page';\n\n@Component({\n selector: 'sneat-space-member-page',\n templateUrl: './space-member-page.component.html',\n imports: [\n FormsModule,\n ContactDetailsComponent,\n ContactusServicesModule,\n PersonTitle,\n SpaceServiceModule,\n IonHeader,\n IonToolbar,\n IonButtons,\n IonBackButton,\n IonTitle,\n IonIcon,\n IonMenuButton,\n IonContent,\n IonButton,\n ],\n providers: [{ provide: ClassName, useValue: 'SpaceMemberPageComponent' }],\n})\nexport class SpaceMemberPageComponent extends MemberBasePage {\n public relatedAs?: MemberRelationship;\n\n public constructor() {\n super(inject(ContactService));\n }\n\n // protected setMemberId(memberId: string): void {\n // \tsuper.setMemberId(memberId);\n // \tif (this.currentUserDto && this.communeRealId) {\n // \t\tthis.setRelatedAs();\n // \t}\n // }\n\n // protected setPageCommuneIds(source: string, communeIds: ICommuneIds, communeDto?: ICommuneDto): void {\n // \tsuper.setPageCommuneIds(source, communeIds, communeDto);\n // \tif (this.currentUserDto && this.memberId) {\n // \t\tthis.setRelatedAs();\n // \t}\n // }\n\n // protected setCurrentUser(dto: IUserDto): void {\n // \tsuper.setCurrentUser(dto);\n // \tthis.logger.debug('CommuneMemberPage.setCurrentUser()', dto);\n // \tif (this.memberId && this.communeRealId) {\n // \t\tthis.setRelatedAs();\n // \t}\n // }\n\n public removeMember() {\n if (\n !confirm(\n `Are you sure you want to remove ${\n this.member?.brief?.title || this.member?.id\n } from ${this.space?.brief?.title}?`,\n )\n ) {\n return;\n }\n if (!this.space) {\n this.errorLogger.logError(\n 'Can not remove team member without team context',\n );\n return;\n }\n if (!this.member?.id) {\n this.errorLogger.logError(\n 'Can not remove team member without knowing member ID',\n );\n return;\n }\n this.contactService\n .removeSpaceMember({ spaceID: this.space.id, contactID: this.member?.id })\n .subscribe({\n next: () => {\n this.navController\n .pop()\n .catch((err) =>\n this.errorLogger.logError(err, 'Failed to pop navigator state'),\n );\n },\n error: (err) =>\n this.errorLogger.logError(err, 'Failed to remove member'),\n });\n }\n\n private setRelatedAs(): void {\n // this.logger.debug('CommuneMemberPage.setRelatedAs()', this.currentUserDto);\n // if (!this.currentUserDto) {\n // \treturn;\n // }\n // const userCommunes = this.currentUserDto && this.currentUserDto.communes;\n // if (userCommunes) {\n // \tconst userCommuneInfo = userCommunes.find(c => eq(c.id, this.communeRealId));\n // \tif (userCommuneInfo && userCommuneInfo.members) {\n // \t\tconst memberInfo = userCommuneInfo.members[this.memberId];\n // \t\tif (memberInfo) {\n // \t\t\tthis.relatedAs = memberInfo.relatedAs;\n // \t\t}\n // \t}\n // }\n }\n}\n","<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-back-button [defaultHref]=\"spacePageUrl('members')\" />\n </ion-buttons>\n <ion-title>\n @switch (space.type) {\n @case (\"family\") {\n @if ($contact(); as contact) {\n Family member: {{ contact | personTitle }}\n } @else {\n Family member\n }\n }\n @case (\"cohabit\") {\n Housemates\n }\n @default {\n <ion-title>Member</ion-title>\n }\n }\n </ion-title>\n <!--<ion-title *ngIf=\"member else titleNoMember\">{{member.title}}</ion-title>-->\n <!--<ng-template #titleNoMember>-->\n <!--<ion-title>Member</ion-title>-->\n <!--</ng-template>-->\n <ion-buttons slot=\"end\">\n @if (member) {\n <ion-button\n [title]=\"\n member.brief?.userID === spaceParams.userService.currentUserID\n ? 'Leave team'\n : 'Remove team member'\n \"\n (click)=\"removeMember()\"\n >\n <ion-icon name=\"trash\" />\n </ion-button>\n }\n <ion-menu-button menu=\"mainMenu\" />\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"cardy\">\n <sneat-contact-details [$contact]=\"$contact()\" [$space]=\"$space()\" />\n</ion-content>\n"],"names":[],"mappings":"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"}
@@ -36,10 +36,10 @@ class ContactGroupService {
36
36
  filter: [{ field: 'status', operator: '==', value: status }],
37
37
  });
38
38
  }
39
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactGroupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactGroupService });
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactGroupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactGroupService });
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactGroupService, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactGroupService, decorators: [{
43
43
  type: Injectable
44
44
  }], ctorParameters: () => [] });
45
45
 
@@ -53,10 +53,10 @@ class ContactNavService {
53
53
  })
54
54
  .catch(this.errorLogger.logErrorHandler('failed to navigate to "new-contact" page'));
55
55
  }
56
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactNavService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
57
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactNavService, providedIn: 'root' });
56
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactNavService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
57
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactNavService, providedIn: 'root' });
58
58
  }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactNavService, decorators: [{
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactNavService, decorators: [{
60
60
  type: Injectable,
61
61
  args: [{ providedIn: 'root' }]
62
62
  }] });
@@ -71,10 +71,10 @@ class ContactusSpaceService extends SpaceModuleService {
71
71
  // console.log(`ContactusSpaceService.watchContactBriefs(${spaceID})`);
72
72
  return this.watchBriefs(spaceID, (dto) => dto?.contacts || {});
73
73
  };
74
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactusSpaceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
75
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactusSpaceService });
74
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactusSpaceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
75
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactusSpaceService });
76
76
  }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactusSpaceService, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactusSpaceService, decorators: [{
78
78
  type: Injectable
79
79
  }], ctorParameters: () => [] });
80
80
 
@@ -192,10 +192,10 @@ class ContactService extends ModuleSpaceItemService {
192
192
  // const request: IContactRequest = { spaceID, contactID };
193
193
  return this.sneatApiService.post('contactus/remove_team_member', request);
194
194
  }
195
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
196
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactService });
195
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
196
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactService });
197
197
  }
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactService, decorators: [{
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactService, decorators: [{
199
199
  type: Injectable
200
200
  }], ctorParameters: () => [] });
201
201
 
@@ -270,10 +270,10 @@ class ContactRoleService {
270
270
  }
271
271
  return of({ id, brief: { title: id } });
272
272
  }
273
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactRoleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
274
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactRoleService });
273
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactRoleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
274
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactRoleService });
275
275
  }
276
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactRoleService, decorators: [{
276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactRoleService, decorators: [{
277
277
  type: Injectable
278
278
  }] });
279
279
 
@@ -293,17 +293,17 @@ class MemberService extends ContactService {
293
293
  validateCreateSpaceMemberRequest(request);
294
294
  return this.sneatApiService.post('contactus/create_member', request);
295
295
  }
296
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MemberService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
297
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MemberService });
296
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MemberService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
297
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MemberService });
298
298
  }
299
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MemberService, decorators: [{
299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MemberService, decorators: [{
300
300
  type: Injectable
301
301
  }] });
302
302
 
303
303
  class ContactusServicesModule {
304
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactusServicesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
305
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: ContactusServicesModule });
306
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactusServicesModule, providers: [
304
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactusServicesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
305
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: ContactusServicesModule });
306
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactusServicesModule, providers: [
307
307
  ContactService,
308
308
  ContactNavService,
309
309
  ContactGroupService,
@@ -312,7 +312,7 @@ class ContactusServicesModule {
312
312
  MemberService,
313
313
  ] });
314
314
  }
315
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactusServicesModule, decorators: [{
315
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactusServicesModule, decorators: [{
316
316
  type: NgModule,
317
317
  args: [{
318
318
  imports: [],
@@ -328,10 +328,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
328
328
  }] });
329
329
 
330
330
  class MemberGroupService {
331
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MemberGroupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
332
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MemberGroupService, providedIn: 'root' });
331
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MemberGroupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
332
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MemberGroupService, providedIn: 'root' });
333
333
  }
334
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MemberGroupService, decorators: [{
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MemberGroupService, decorators: [{
335
335
  type: Injectable,
336
336
  args: [{
337
337
  providedIn: 'root',
@@ -406,10 +406,10 @@ class InviteService {
406
406
  return this.acceptInviteByAuthenticatedUser(inviteInfo);
407
407
  }));
408
408
  }
409
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: InviteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
410
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: InviteService });
409
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: InviteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
410
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: InviteService });
411
411
  }
412
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: InviteService, decorators: [{
412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: InviteService, decorators: [{
413
413
  type: Injectable
414
414
  }] });
415
415
 
@@ -436,10 +436,10 @@ class ContactusNavService {
436
436
  // },
437
437
  // );
438
438
  }
439
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactusNavService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
440
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactusNavService });
439
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactusNavService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
440
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactusNavService });
441
441
  }
442
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContactusNavService, decorators: [{
442
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ContactusNavService, decorators: [{
443
443
  type: Injectable
444
444
  }] });
445
445
 
@@ -477,19 +477,19 @@ const membersRoutes = [
477
477
  {
478
478
  path: 'members',
479
479
  data: { title: 'Members' },
480
- loadComponent: () => import('./sneat-extension-contactus-members-page.component-CWulwfet.mjs').then((m) => m.MembersPageComponent),
480
+ loadComponent: () => import('./sneat-extension-contactus-members-page.component-Bv9xVCKk.mjs').then((m) => m.MembersPageComponent),
481
481
  // ...guardRoute,
482
482
  },
483
483
  {
484
484
  path: 'new-member',
485
485
  data: { title: 'New member' },
486
- loadComponent: () => import('./sneat-extension-contactus-index-1vVX7Aa3.mjs').then((m) => m.NewMemberPageComponent),
486
+ loadComponent: () => import('./sneat-extension-contactus-index-BoDcqthC.mjs').then((m) => m.NewMemberPageComponent),
487
487
  // ...guardRoute,
488
488
  },
489
489
  {
490
490
  path: 'member/:contactID',
491
491
  data: { title: 'Member' },
492
- loadComponent: () => import('./sneat-extension-contactus-space-member-page.component-BY_SJdUs.mjs').then((m) => m.SpaceMemberPageComponent),
492
+ loadComponent: () => import('./sneat-extension-contactus-space-member-page.component-Ds2b-oB9.mjs').then((m) => m.SpaceMemberPageComponent),
493
493
  },
494
494
  // {
495
495
  // path: 'pupils',
@@ -510,25 +510,25 @@ const contactusRoutes = [
510
510
  {
511
511
  path: 'contacts',
512
512
  data: { title: 'Contacts' },
513
- loadComponent: () => import('./sneat-extension-contactus-contacts-page.component-dpcKveLW.mjs').then((m) => m.ContactsPageComponent),
513
+ loadComponent: () => import('./sneat-extension-contactus-contacts-page.component-4EsaJkXj.mjs').then((m) => m.ContactsPageComponent),
514
514
  // ...guardRoute,
515
515
  },
516
516
  {
517
517
  path: 'new-contact',
518
518
  data: { title: 'New Contact' },
519
- loadComponent: () => import('./sneat-extension-contactus-index--ZEjpmgM.mjs').then((m) => m.NewContactPageComponent),
519
+ loadComponent: () => import('./sneat-extension-contactus-index-Cp1af1MR.mjs').then((m) => m.NewContactPageComponent),
520
520
  // ...guardRoute,
521
521
  },
522
522
  {
523
523
  path: 'contact/:contactID',
524
524
  data: { title: 'Contact' },
525
- loadComponent: () => import('./sneat-extension-contactus-index--ZEjpmgM.mjs').then((m) => m.ContactPageComponent),
525
+ loadComponent: () => import('./sneat-extension-contactus-index-Cp1af1MR.mjs').then((m) => m.ContactPageComponent),
526
526
  // ...guardRoute,
527
527
  },
528
528
  {
529
529
  path: 'contact/:contactID/new-location',
530
530
  data: { title: 'New location' },
531
- loadComponent: () => import('./sneat-extension-contactus-index--ZEjpmgM.mjs').then((m) => m.NewLocationPageComponent),
531
+ loadComponent: () => import('./sneat-extension-contactus-index-Cp1af1MR.mjs').then((m) => m.NewLocationPageComponent),
532
532
  // ...guardRoute,
533
533
  },
534
534
  ...membersRoutes,