@sneat/contactus-internal 0.3.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 +2 -0
- package/esm2022/index.js.map +1 -0
- package/esm2022/lib/contactus-routing.module.js +48 -0
- package/esm2022/lib/contactus-routing.module.js.map +1 -0
- package/esm2022/lib/index.js +3 -0
- package/esm2022/lib/index.js.map +1 -0
- package/esm2022/lib/members/index.js +4 -0
- package/esm2022/lib/members/index.js.map +1 -0
- package/esm2022/lib/members/members-base-page.js +30 -0
- package/esm2022/lib/members/members-base-page.js.map +1 -0
- package/esm2022/lib/members/members-routing.js +32 -0
- package/esm2022/lib/members/members-routing.js.map +1 -0
- package/esm2022/lib/members/pages/member/space-member-page.component.js +95 -0
- package/esm2022/lib/members/pages/member/space-member-page.component.js.map +1 -0
- package/esm2022/lib/members/pages/member-base-page.js +23 -0
- package/esm2022/lib/members/pages/member-base-page.js.map +1 -0
- package/esm2022/lib/members/pages/members/members-page.component.js +155 -0
- package/esm2022/lib/members/pages/members/members-page.component.js.map +1 -0
- package/esm2022/lib/members/pages/new-member/index.js +2 -0
- package/esm2022/lib/members/pages/new-member/index.js.map +1 -0
- package/esm2022/lib/members/pages/new-member/new-member-form.component.js +223 -0
- package/esm2022/lib/members/pages/new-member/new-member-form.component.js.map +1 -0
- package/esm2022/lib/members/pages/new-member/new-member-page.component.js +132 -0
- package/esm2022/lib/members/pages/new-member/new-member-page.component.js.map +1 -0
- package/esm2022/lib/pages/contact/contact-page.component.js +96 -0
- package/esm2022/lib/pages/contact/contact-page.component.js.map +1 -0
- package/esm2022/lib/pages/contact/index.js +2 -0
- package/esm2022/lib/pages/contact/index.js.map +1 -0
- package/esm2022/lib/pages/contact-base-page.js +59 -0
- package/esm2022/lib/pages/contact-base-page.js.map +1 -0
- package/esm2022/lib/pages/contacts/contacts-page.component.js +113 -0
- package/esm2022/lib/pages/contacts/contacts-page.component.js.map +1 -0
- package/esm2022/lib/pages/contacts/index.js +2 -0
- package/esm2022/lib/pages/contacts/index.js.map +1 -0
- package/esm2022/lib/pages/index.js +5 -0
- package/esm2022/lib/pages/index.js.map +1 -0
- package/esm2022/lib/pages/new-contact/index.js +2 -0
- package/esm2022/lib/pages/new-contact/index.js.map +1 -0
- package/esm2022/lib/pages/new-contact/new-contact-page.component.js +104 -0
- package/esm2022/lib/pages/new-contact/new-contact-page.component.js.map +1 -0
- package/esm2022/lib/pages/new-location/index.js +2 -0
- package/esm2022/lib/pages/new-location/index.js.map +1 -0
- package/esm2022/lib/pages/new-location/new-location-page.component.js +55 -0
- package/esm2022/lib/pages/new-location/new-location-page.component.js.map +1 -0
- package/esm2022/sneat-contactus-internal.js +5 -0
- package/esm2022/sneat-contactus-internal.js.map +1 -0
- package/index.d.ts +1 -0
- package/lib/contactus-routing.module.d.ts +2 -0
- package/lib/index.d.ts +2 -0
- package/lib/members/index.d.ts +2 -0
- package/lib/members/members-base-page.d.ts +12 -0
- package/lib/members/members-routing.d.ts +2 -0
- package/lib/members/pages/member/space-member-page.component.d.ts +11 -0
- package/lib/members/pages/member-base-page.d.ts +10 -0
- package/lib/members/pages/members/members-page.component.d.ts +18 -0
- package/lib/members/pages/new-member/index.d.ts +1 -0
- package/lib/members/pages/new-member/new-member-form.component.d.ts +26 -0
- package/lib/members/pages/new-member/new-member-page.component.d.ts +17 -0
- package/lib/pages/contact/contact-page.component.d.ts +15 -0
- package/lib/pages/contact/index.d.ts +1 -0
- package/lib/pages/contact-base-page.d.ts +16 -0
- package/lib/pages/contacts/contacts-page.component.d.ts +22 -0
- package/lib/pages/contacts/index.d.ts +1 -0
- package/lib/pages/index.d.ts +4 -0
- package/lib/pages/new-contact/index.d.ts +1 -0
- package/lib/pages/new-contact/new-contact-page.component.d.ts +24 -0
- package/lib/pages/new-location/index.d.ts +1 -0
- package/lib/pages/new-location/new-location-page.component.d.ts +12 -0
- package/package.json +26 -0
- package/sneat-contactus-internal.d.ts +5 -0
- package/tsconfig.lib.prod.tsbuildinfo +1 -0
package/esm2022/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/contactus/internal/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC","sourcesContent":["export * from './lib';\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { membersRoutes } from './members';
|
|
2
|
+
// import {guardRoute} from '../../utils/guard-route';
|
|
3
|
+
export const contactusRoutes = [
|
|
4
|
+
{
|
|
5
|
+
path: 'contacts',
|
|
6
|
+
data: { title: 'Contacts' },
|
|
7
|
+
loadComponent: () => import('./pages/contacts/contacts-page.component').then((m) => m.ContactsPageComponent),
|
|
8
|
+
// ...guardRoute,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
path: 'new-contact',
|
|
12
|
+
data: { title: 'New Contact' },
|
|
13
|
+
loadComponent: () => import('./pages').then((m) => m.NewContactPageComponent),
|
|
14
|
+
// ...guardRoute,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
path: 'contact/:contactID',
|
|
18
|
+
data: { title: 'Contact' },
|
|
19
|
+
loadComponent: () => import('./pages').then((m) => m.ContactPageComponent),
|
|
20
|
+
// ...guardRoute,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
path: 'contact/:contactID/new-location',
|
|
24
|
+
data: { title: 'New location' },
|
|
25
|
+
loadComponent: () => import('./pages').then((m) => m.NewLocationPageComponent),
|
|
26
|
+
// ...guardRoute,
|
|
27
|
+
},
|
|
28
|
+
...membersRoutes,
|
|
29
|
+
// {
|
|
30
|
+
// path: 'applicants',
|
|
31
|
+
// loadChildren: () => import('./pages/contacts/contacts-page.module')
|
|
32
|
+
// .then(m => m.ContactsPageModule),
|
|
33
|
+
// // ...guardRoute,
|
|
34
|
+
// },
|
|
35
|
+
// {
|
|
36
|
+
// path: 'tenants',
|
|
37
|
+
// loadChildren: () => import('./pages/contacts/contacts-page.module')
|
|
38
|
+
// .then(m => m.ContactsPageModule),
|
|
39
|
+
// // ...guardRoute,
|
|
40
|
+
// },
|
|
41
|
+
// {
|
|
42
|
+
// path: 'landlords',
|
|
43
|
+
// loadChildren: () => import('./pages/contacts/contacts-page.module')
|
|
44
|
+
// .then(m => m.ContactsPageModule),
|
|
45
|
+
// // ...guardRoute,
|
|
46
|
+
// },
|
|
47
|
+
];
|
|
48
|
+
//# sourceMappingURL=contactus-routing.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contactus-routing.module.js","sourceRoot":"","sources":["../../../../../../libs/contactus/internal/src/lib/contactus-routing.module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,sDAAsD;AAEtD,MAAM,CAAC,MAAM,eAAe,GAAY;IACtC;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;QAC3B,aAAa,EAAE,GAAG,EAAE,CAClB,MAAM,CAAC,0CAA0C,CAAC,CAAC,IAAI,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAC/B;QACH,iBAAiB;KAClB;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;QAC9B,aAAa,EAAE,GAAG,EAAE,CAClB,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC;QAC1D,iBAAiB;KAClB;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;QAC1B,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;QAC1E,iBAAiB;KAClB;IACD;QACE,IAAI,EAAE,iCAAiC;QACvC,IAAI,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;QAC/B,aAAa,EAAE,GAAG,EAAE,CAClB,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC;QAC3D,iBAAiB;KAClB;IACD,GAAG,aAAa;IAChB,IAAI;IACJ,uBAAuB;IACvB,uEAAuE;IACvE,sCAAsC;IACtC,qBAAqB;IACrB,KAAK;IACL,IAAI;IACJ,oBAAoB;IACpB,uEAAuE;IACvE,sCAAsC;IACtC,qBAAqB;IACrB,KAAK;IACL,IAAI;IACJ,sBAAsB;IACtB,uEAAuE;IACvE,sCAAsC;IACtC,qBAAqB;IACrB,KAAK;CACN,CAAC","sourcesContent":["import { Route } from '@angular/router';\nimport { membersRoutes } from './members';\n\n// import {guardRoute} from '../../utils/guard-route';\n\nexport const contactusRoutes: Route[] = [\n {\n path: 'contacts',\n data: { title: 'Contacts' },\n loadComponent: () =>\n import('./pages/contacts/contacts-page.component').then(\n (m) => m.ContactsPageComponent,\n ),\n // ...guardRoute,\n },\n {\n path: 'new-contact',\n data: { title: 'New Contact' },\n loadComponent: () =>\n import('./pages').then((m) => m.NewContactPageComponent),\n // ...guardRoute,\n },\n {\n path: 'contact/:contactID',\n data: { title: 'Contact' },\n loadComponent: () => import('./pages').then((m) => m.ContactPageComponent),\n // ...guardRoute,\n },\n {\n path: 'contact/:contactID/new-location',\n data: { title: 'New location' },\n loadComponent: () =>\n import('./pages').then((m) => m.NewLocationPageComponent),\n // ...guardRoute,\n },\n ...membersRoutes,\n // {\n // \tpath: 'applicants',\n // \tloadChildren: () => import('./pages/contacts/contacts-page.module')\n // \t\t.then(m => m.ContactsPageModule),\n // \t// ...guardRoute,\n // },\n // {\n // \tpath: 'tenants',\n // \tloadChildren: () => import('./pages/contacts/contacts-page.module')\n // \t\t.then(m => m.ContactsPageModule),\n // \t// ...guardRoute,\n // },\n // {\n // \tpath: 'landlords',\n // \tloadChildren: () => import('./pages/contacts/contacts-page.module')\n // \t\t.then(m => m.ContactsPageModule),\n // \t// ...guardRoute,\n // },\n];\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/contactus/internal/src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC","sourcesContent":["export * from './contactus-routing.module';\nexport { membersRoutes } from './members/members-routing';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/contactus/internal/src/lib/members/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,0CAA0C;AAC1C,cAAc,mBAAmB,CAAC","sourcesContent":["export * from './members-routing';\n// export * from './pages/member-routing';\nexport * from './members-routing';\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ContactusModuleBaseComponent } from '@sneat/contactus-shared';
|
|
2
|
+
import { isSpaceSupportsMemberGroups } from '@sneat/dto';
|
|
3
|
+
export class MembersBasePage extends ContactusModuleBaseComponent {
|
|
4
|
+
// protected setCurrentUser(dto: IDtoUser) {
|
|
5
|
+
// this.currentUserDto = dto;
|
|
6
|
+
// }
|
|
7
|
+
constructor(contactusTeamService) {
|
|
8
|
+
super(contactusTeamService);
|
|
9
|
+
this.goNewMember = () => {
|
|
10
|
+
// TODO: use it?
|
|
11
|
+
this.navigateForwardToSpacePage('new-member').catch(this.logErrorHandler('failed to navigate to new member page'));
|
|
12
|
+
};
|
|
13
|
+
// this.userService.currentUserLoaded.subscribe(user => this.setCurrentUser(user));
|
|
14
|
+
}
|
|
15
|
+
// goMember = (member: IMemberContext, page?: MemberPages) => {
|
|
16
|
+
// this.navigateForwardToSpacePage(
|
|
17
|
+
// (page || 'member') + '/' + member.id,
|
|
18
|
+
// ).catch(this.logErrorHandler('failed to navigate to team member page'));
|
|
19
|
+
// };
|
|
20
|
+
//
|
|
21
|
+
// goContact = (id: string, event: Event) => {
|
|
22
|
+
// event.stopPropagation();
|
|
23
|
+
// this.navigateForwardToSpacePage(`contact/${id}`)
|
|
24
|
+
// .catch(this.logErrorHandler('failed to navigate to contact page'));
|
|
25
|
+
// };
|
|
26
|
+
get supportsMemberGroups() {
|
|
27
|
+
return (!!this.space?.brief && isSpaceSupportsMemberGroups(this.space.brief.type));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=members-base-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"members-base-page.js","sourceRoot":"","sources":["../../../../../../../libs/contactus/internal/src/lib/members/members-base-page.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAIzD,MAAM,OAAgB,eAAgB,SAAQ,4BAA4B;IAUxE,4CAA4C;IAC5C,iCAAiC;IACjC,IAAI;IAEJ,YAAsB,oBAA2C;QAC/D,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAI9B,gBAAW,GAAG,GAAG,EAAE;YACjB,gBAAgB;YAChB,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC,KAAK,CACjD,IAAI,CAAC,eAAe,CAAC,uCAAuC,CAAC,CAC9D,CAAC;QACJ,CAAC,CAAC;QARA,mFAAmF;IACrF,CAAC;IASD,+DAA+D;IAC/D,oCAAoC;IACpC,0CAA0C;IAC1C,4EAA4E;IAC5E,KAAK;IACL,EAAE;IACF,8CAA8C;IAC9C,4BAA4B;IAC5B,oDAAoD;IACpD,wEAAwE;IACxE,KAAK;IAEL,IAAW,oBAAoB;QAC7B,OAAO,CACL,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1E,CAAC;IACJ,CAAC;CAcF","sourcesContent":["import { SpaceMemberType } from '@sneat/auth-models';\nimport { ContactusModuleBaseComponent } from '@sneat/contactus-shared';\nimport { IIdAndBriefAndOptionalDbo } from '@sneat/core';\nimport { isSpaceSupportsMemberGroups } from '@sneat/dto';\nimport { ContactusSpaceService } from '@sneat/contactus-services';\nimport { IContactBrief, IContactDbo } from '@sneat/contactus-core';\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"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const membersRoutes = [
|
|
2
|
+
{
|
|
3
|
+
path: 'members',
|
|
4
|
+
data: { title: 'Members' },
|
|
5
|
+
loadComponent: () => import('./pages/members/members-page.component').then((m) => m.MembersPageComponent),
|
|
6
|
+
// ...guardRoute,
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
path: 'new-member',
|
|
10
|
+
data: { title: 'New member' },
|
|
11
|
+
loadComponent: () => import('./pages/new-member').then((m) => m.NewMemberPageComponent),
|
|
12
|
+
// ...guardRoute,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
path: 'member/:contactID',
|
|
16
|
+
data: { title: 'Member' },
|
|
17
|
+
loadComponent: () => import('./pages/member/space-member-page.component').then((m) => m.SpaceMemberPageComponent),
|
|
18
|
+
},
|
|
19
|
+
// {
|
|
20
|
+
// path: 'pupils',
|
|
21
|
+
// loadChildren: () => import('./pupils/pupils.module')
|
|
22
|
+
// .then(m => m.PupilsPageModule),
|
|
23
|
+
// // ...guardRoute,
|
|
24
|
+
// },
|
|
25
|
+
// {
|
|
26
|
+
// path: 'staff',
|
|
27
|
+
// loadChildren: () => import('./staff/staff.module')
|
|
28
|
+
// .then(m => m.StaffPageModule),
|
|
29
|
+
// // ...guardRoute,
|
|
30
|
+
// },
|
|
31
|
+
];
|
|
32
|
+
//# sourceMappingURL=members-routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"members-routing.js","sourceRoot":"","sources":["../../../../../../../libs/contactus/internal/src/lib/members/members-routing.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;QAC1B,aAAa,EAAE,GAAG,EAAE,CAClB,MAAM,CAAC,wCAAwC,CAAC,CAAC,IAAI,CACnD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAC9B;QACH,iBAAiB;KAClB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;QAC7B,aAAa,EAAE,GAAG,EAAE,CAClB,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACpE,iBAAiB;KAClB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;QACzB,aAAa,EAAE,GAAG,EAAE,CAClB,MAAM,CAAC,4CAA4C,CAAC,CAAC,IAAI,CACvD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAClC;KACJ;IAED,IAAI;IACJ,mBAAmB;IACnB,wDAAwD;IACxD,oCAAoC;IACpC,qBAAqB;IACrB,KAAK;IACL,IAAI;IACJ,kBAAkB;IAClB,sDAAsD;IACtD,mCAAmC;IACnC,qBAAqB;IACrB,KAAK;CACN,CAAC","sourcesContent":["import { Route } from '@angular/router';\n\nexport const membersRoutes: Route[] = [\n {\n path: 'members',\n data: { title: 'Members' },\n loadComponent: () =>\n import('./pages/members/members-page.component').then(\n (m) => m.MembersPageComponent,\n ),\n // ...guardRoute,\n },\n {\n path: 'new-member',\n data: { title: 'New member' },\n loadComponent: () =>\n import('./pages/new-member').then((m) => m.NewMemberPageComponent),\n // ...guardRoute,\n },\n {\n path: 'member/:contactID',\n data: { title: 'Member' },\n loadComponent: () =>\n import('./pages/member/space-member-page.component').then(\n (m) => m.SpaceMemberPageComponent,\n ),\n },\n\n // {\n // \tpath: 'pupils',\n // \tloadChildren: () => import('./pupils/pupils.module')\n // \t\t.then(m => m.PupilsPageModule),\n // \t// ...guardRoute,\n // },\n // {\n // \tpath: 'staff',\n // \tloadChildren: () => import('./staff/staff.module')\n // \t\t.then(m => m.StaffPageModule),\n // \t// ...guardRoute,\n // },\n];\n"]}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { IonBackButton, IonButton, IonButtons, IonContent, IonHeader, IonIcon, IonMenuButton, IonTitle, IonToolbar, } from '@ionic/angular/standalone';
|
|
4
|
+
import { PersonTitle } from '@sneat/contactus-shared';
|
|
5
|
+
import { ContactService, ContactusServicesModule, } from '@sneat/contactus-services';
|
|
6
|
+
import { ContactDetailsComponent } from '@sneat/contactus-shared';
|
|
7
|
+
import { SpaceServiceModule } from '@sneat/space-services';
|
|
8
|
+
import { ClassName } from '@sneat/ui';
|
|
9
|
+
import { MemberBasePage } from '../member-base-page';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class SpaceMemberPageComponent extends MemberBasePage {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(inject(ContactService));
|
|
14
|
+
}
|
|
15
|
+
// protected setMemberId(memberId: string): void {
|
|
16
|
+
// super.setMemberId(memberId);
|
|
17
|
+
// if (this.currentUserDto && this.communeRealId) {
|
|
18
|
+
// this.setRelatedAs();
|
|
19
|
+
// }
|
|
20
|
+
// }
|
|
21
|
+
// protected setPageCommuneIds(source: string, communeIds: ICommuneIds, communeDto?: ICommuneDto): void {
|
|
22
|
+
// super.setPageCommuneIds(source, communeIds, communeDto);
|
|
23
|
+
// if (this.currentUserDto && this.memberId) {
|
|
24
|
+
// this.setRelatedAs();
|
|
25
|
+
// }
|
|
26
|
+
// }
|
|
27
|
+
// protected setCurrentUser(dto: IUserDto): void {
|
|
28
|
+
// super.setCurrentUser(dto);
|
|
29
|
+
// this.logger.debug('CommuneMemberPage.setCurrentUser()', dto);
|
|
30
|
+
// if (this.memberId && this.communeRealId) {
|
|
31
|
+
// this.setRelatedAs();
|
|
32
|
+
// }
|
|
33
|
+
// }
|
|
34
|
+
removeMember() {
|
|
35
|
+
if (!confirm(`Are you sure you want to remove ${this.member?.brief?.title || this.member?.id} from ${this.space?.brief?.title}?`)) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (!this.space) {
|
|
39
|
+
this.errorLogger.logError('Can not remove team member without team context');
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (!this.member?.id) {
|
|
43
|
+
this.errorLogger.logError('Can not remove team member without knowing member ID');
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.contactService
|
|
47
|
+
.removeSpaceMember({ spaceID: this.space.id, contactID: this.member?.id })
|
|
48
|
+
.subscribe({
|
|
49
|
+
next: () => {
|
|
50
|
+
this.navController
|
|
51
|
+
.pop()
|
|
52
|
+
.catch((err) => this.errorLogger.logError(err, 'Failed to pop navigator state'));
|
|
53
|
+
},
|
|
54
|
+
error: (err) => this.errorLogger.logError(err, 'Failed to remove member'),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
setRelatedAs() {
|
|
58
|
+
// this.logger.debug('CommuneMemberPage.setRelatedAs()', this.currentUserDto);
|
|
59
|
+
// if (!this.currentUserDto) {
|
|
60
|
+
// return;
|
|
61
|
+
// }
|
|
62
|
+
// const userCommunes = this.currentUserDto && this.currentUserDto.communes;
|
|
63
|
+
// if (userCommunes) {
|
|
64
|
+
// const userCommuneInfo = userCommunes.find(c => eq(c.id, this.communeRealId));
|
|
65
|
+
// if (userCommuneInfo && userCommuneInfo.members) {
|
|
66
|
+
// const memberInfo = userCommuneInfo.members[this.memberId];
|
|
67
|
+
// if (memberInfo) {
|
|
68
|
+
// this.relatedAs = memberInfo.relatedAs;
|
|
69
|
+
// }
|
|
70
|
+
// }
|
|
71
|
+
// }
|
|
72
|
+
}
|
|
73
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SpaceMemberPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", 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" }] }); }
|
|
75
|
+
}
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SpaceMemberPageComponent, decorators: [{
|
|
77
|
+
type: Component,
|
|
78
|
+
args: [{ selector: 'sneat-space-member-page', imports: [
|
|
79
|
+
FormsModule,
|
|
80
|
+
ContactDetailsComponent,
|
|
81
|
+
ContactusServicesModule,
|
|
82
|
+
PersonTitle,
|
|
83
|
+
SpaceServiceModule,
|
|
84
|
+
IonHeader,
|
|
85
|
+
IonToolbar,
|
|
86
|
+
IonButtons,
|
|
87
|
+
IonBackButton,
|
|
88
|
+
IonTitle,
|
|
89
|
+
IonIcon,
|
|
90
|
+
IonMenuButton,
|
|
91
|
+
IonContent,
|
|
92
|
+
IonButton,
|
|
93
|
+
], providers: [{ provide: ClassName, useValue: 'SpaceMemberPageComponent' }], 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" }]
|
|
94
|
+
}], ctorParameters: () => [] });
|
|
95
|
+
//# sourceMappingURL=space-member-page.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"space-member-page.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/contactus/internal/src/lib/members/pages/member/space-member-page.component.ts","../../../../../../../../../libs/contactus/internal/src/lib/members/pages/member/space-member-page.component.html"],"names":[],"mappings":"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","sourcesContent":["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/contactus-shared';\nimport {\n ContactService,\n ContactusServicesModule,\n} from '@sneat/contactus-services';\nimport { ContactDetailsComponent } from '@sneat/contactus-shared';\nimport { MemberRelationship } from '@sneat/contactus-core';\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"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ContactBasePage } from '../../pages/contact-base-page';
|
|
2
|
+
export class MemberBasePage extends ContactBasePage {
|
|
3
|
+
constructor(contactService) {
|
|
4
|
+
super(contactService, 'members');
|
|
5
|
+
this.segment = 'summary';
|
|
6
|
+
this.goNew = (
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8
|
+
_event,
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
10
|
+
_type,
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
12
|
+
_relation) => {
|
|
13
|
+
// this.navigateForward(
|
|
14
|
+
// type,
|
|
15
|
+
// { member: this.memberContext, relation },
|
|
16
|
+
// { memberDto: this.memberDto });
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
get member() {
|
|
20
|
+
return this.memberContext;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=member-base-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"member-base-page.js","sourceRoot":"","sources":["../../../../../../../../libs/contactus/internal/src/lib/members/pages/member-base-page.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,MAAM,OAAgB,cAAe,SAAQ,eAAe;IAQ1D,YAAsB,cAA8B;QAClD,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAR5B,YAAO,GAAoC,SAAS,CAAC;QAelD,UAAK,GAAG;QAChB,6DAA6D;QAC7D,MAAa;QACb,6DAA6D;QAC7D,KAAqE;QACrE,6DAA6D;QAC7D,SAAkB,EACZ,EAAE;YACR,wBAAwB;YACxB,SAAS;YACT,6CAA6C;YAC7C,mCAAmC;QACrC,CAAC,CAAC;IAlBF,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CAuFF","sourcesContent":["import { IContactContext } from '@sneat/contactus-core';\nimport { ContactService } from '@sneat/contactus-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"]}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { AsyncPipe } from '@angular/common';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { IonBackButton, IonBadge, IonButton, IonButtons, IonCard, IonContent, IonFooter, IonHeader, IonIcon, IonItem, IonItemDivider, IonItemGroup, IonLabel, IonMenuButton, IonSegment, IonSegmentButton, IonToolbar, } from '@ionic/angular/standalone';
|
|
4
|
+
import { ContactusServicesModule, ContactusSpaceService, } from '@sneat/contactus-services';
|
|
5
|
+
import { FamilyMembersComponent } from '@sneat/contactus-shared';
|
|
6
|
+
import { isSpaceSupportsMemberGroups } from '@sneat/dto';
|
|
7
|
+
import { SpaceComponentBaseParams, SpacePageTitleComponent, } from '@sneat/space-components';
|
|
8
|
+
import { SpaceServiceModule } from '@sneat/space-services';
|
|
9
|
+
import { ClassName } from '@sneat/ui';
|
|
10
|
+
import { MembersBasePage } from '../../members-base-page';
|
|
11
|
+
import { Component, inject } from '@angular/core';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "@angular/forms";
|
|
14
|
+
export class MembersPageComponent extends MembersBasePage {
|
|
15
|
+
constructor() {
|
|
16
|
+
const contactusTeamService = inject(ContactusSpaceService);
|
|
17
|
+
super(contactusTeamService);
|
|
18
|
+
// public loadingStubs?: number[];
|
|
19
|
+
this.segment = 'all';
|
|
20
|
+
// public listMode: 'list' | 'cards' = 'list';
|
|
21
|
+
// public membersByGroupId: { [id: string]: IMemberContext[] } = {};
|
|
22
|
+
this.memberType = 'member';
|
|
23
|
+
}
|
|
24
|
+
goGroup(memberGroup) {
|
|
25
|
+
this.navigateForwardToSpacePage(`group/${memberGroup.id}`, {
|
|
26
|
+
state: { memberGroup },
|
|
27
|
+
}).catch(this.logErrorHandler('failed to navigate to members group page'));
|
|
28
|
+
}
|
|
29
|
+
goNewMemberPage(group) {
|
|
30
|
+
const queryParams = group
|
|
31
|
+
? { group: group.id }
|
|
32
|
+
: undefined;
|
|
33
|
+
this.navigateForwardToSpacePage('new-member', {
|
|
34
|
+
queryParams,
|
|
35
|
+
state: { group },
|
|
36
|
+
}).catch(this.logErrorHandler('failed to navigate to new member page with age parameter'));
|
|
37
|
+
}
|
|
38
|
+
goNew() {
|
|
39
|
+
switch (this.segment) {
|
|
40
|
+
case 'all':
|
|
41
|
+
this.goNewMemberPage();
|
|
42
|
+
break;
|
|
43
|
+
case 'groups':
|
|
44
|
+
this.navigateForwardToSpacePage('new-group').catch(this.logErrorHandler('failed to navigate to new group page'));
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
alert(`Unknown segment: ${this.segment}`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
onSpaceDboChanged() {
|
|
52
|
+
super.onSpaceDboChanged();
|
|
53
|
+
if (!this.space) {
|
|
54
|
+
throw new Error('!this.commune');
|
|
55
|
+
}
|
|
56
|
+
// console.log(`MembersPageComponent.onSpaceDboChanged()`);
|
|
57
|
+
// if (this.team?.dto?.numberOf?.members) {
|
|
58
|
+
// this.loadingStubs = Array(this.team?.dto?.numberOf?.members).fill(1);
|
|
59
|
+
// }
|
|
60
|
+
// if (!isNaN(this.prevMembersCount) && this.prevMembersCount != this.commune.numberOf.members) {
|
|
61
|
+
// this.loadData();
|
|
62
|
+
// }
|
|
63
|
+
this.loadData('onSpaceDboChanged');
|
|
64
|
+
// this.prevMembersCount = this.team?.dto?.numberOf?.members || 0;
|
|
65
|
+
}
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
67
|
+
loadData(_source) {
|
|
68
|
+
// console.log(`MembersPageComponent.loadData(source=${source})`);
|
|
69
|
+
// this.unsubscribe();
|
|
70
|
+
const space = this.space;
|
|
71
|
+
if (!space) {
|
|
72
|
+
throw new Error('!this.team');
|
|
73
|
+
}
|
|
74
|
+
// this.noGroupMembers = this.team?.brief && isTeamSupportsMemberGroups(this.team.brief.type) ? [] : undefined;
|
|
75
|
+
// const contactusTeam = this.teamModuleDto;
|
|
76
|
+
//
|
|
77
|
+
// if (contactusTeam?.dto?.contacts) {
|
|
78
|
+
// this.processContactusSpaceDbo(contactusTeam.dto);
|
|
79
|
+
// } else {
|
|
80
|
+
// this.contactService
|
|
81
|
+
// .watchContactsWithRole(space, 'space_member') // TODO: use constant
|
|
82
|
+
// .pipe(takeUntil(this.spaceIDChanged$))
|
|
83
|
+
// .subscribe({
|
|
84
|
+
// next: (members) => {
|
|
85
|
+
// console.log(
|
|
86
|
+
// `MembersPageComponent.loadData(source=${source}), members =>`,
|
|
87
|
+
// members,
|
|
88
|
+
// );
|
|
89
|
+
// if (members?.length) {
|
|
90
|
+
// // TODO: deep equal
|
|
91
|
+
// members.forEach((m) => {
|
|
92
|
+
// if (m.id) {
|
|
93
|
+
// if (m.dto?.related) {
|
|
94
|
+
// // this.contactsByMember[m.id] = zipMapBriefsWithIDs(
|
|
95
|
+
// // m.dto.relatedContacts,
|
|
96
|
+
// // );
|
|
97
|
+
// } else if (this.contactsByMember[m.id]) {
|
|
98
|
+
// delete this.contactsByMember[m.id];
|
|
99
|
+
// }
|
|
100
|
+
// }
|
|
101
|
+
// });
|
|
102
|
+
// this.members = members;
|
|
103
|
+
// this.processMembers();
|
|
104
|
+
// }
|
|
105
|
+
// },
|
|
106
|
+
// });
|
|
107
|
+
// }
|
|
108
|
+
if (space.type && isSpaceSupportsMemberGroups(space.type)) {
|
|
109
|
+
throw new Error('not implemented yet due to refactoring');
|
|
110
|
+
// this.contactService.watchContactsByRole(team)
|
|
111
|
+
// .subscribe(memberGroups => {
|
|
112
|
+
// if (memberGroups && (!this.memberGroups || memberGroups.length !== this.memberGroups.length)) { // TODO: deep equal
|
|
113
|
+
// this.memberGroups = memberGroups;
|
|
114
|
+
// }
|
|
115
|
+
// });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MembersPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
119
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: MembersPageComponent, isStandalone: true, selector: "sneat-members-page", providers: [
|
|
120
|
+
{ provide: ClassName, useValue: 'MembersPageComponent' },
|
|
121
|
+
SpaceComponentBaseParams,
|
|
122
|
+
], 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" }] }); }
|
|
123
|
+
}
|
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MembersPageComponent, decorators: [{
|
|
125
|
+
type: Component,
|
|
126
|
+
args: [{ imports: [
|
|
127
|
+
FormsModule,
|
|
128
|
+
SpacePageTitleComponent,
|
|
129
|
+
ContactusServicesModule,
|
|
130
|
+
FamilyMembersComponent,
|
|
131
|
+
SpaceServiceModule,
|
|
132
|
+
IonHeader,
|
|
133
|
+
IonToolbar,
|
|
134
|
+
IonButtons,
|
|
135
|
+
IonBackButton,
|
|
136
|
+
IonMenuButton,
|
|
137
|
+
IonContent,
|
|
138
|
+
IonSegment,
|
|
139
|
+
IonSegmentButton,
|
|
140
|
+
IonLabel,
|
|
141
|
+
IonCard,
|
|
142
|
+
AsyncPipe,
|
|
143
|
+
IonItemGroup,
|
|
144
|
+
IonItemDivider,
|
|
145
|
+
IonIcon,
|
|
146
|
+
IonBadge,
|
|
147
|
+
IonItem,
|
|
148
|
+
IonFooter,
|
|
149
|
+
IonButton,
|
|
150
|
+
], providers: [
|
|
151
|
+
{ provide: ClassName, useValue: 'MembersPageComponent' },
|
|
152
|
+
SpaceComponentBaseParams,
|
|
153
|
+
], selector: 'sneat-members-page', 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" }]
|
|
154
|
+
}], ctorParameters: () => [] });
|
|
155
|
+
//# sourceMappingURL=members-page.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"members-page.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/contactus/internal/src/lib/members/pages/members/members-page.component.ts","../../../../../../../../../libs/contactus/internal/src/lib/members/pages/members/members-page.component.html"],"names":[],"mappings":"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","sourcesContent":["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 '@sneat/contactus-services';\nimport { FamilyMembersComponent, MemberGroup } from '@sneat/contactus-shared';\nimport { IMemberGroupContext } from '@sneat/contactus-core';\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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../libs/contactus/internal/src/lib/members/pages/new-member/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC","sourcesContent":["export * from './new-member-page.component';\n"]}
|