2 <my-global-icon iconName=
"user" aria-hidden=
"true"></my-global-icon>
3 <ng-container i18n
>Registration requests
</ng-container>
7 [value]=
"registrations" [paginator]=
"totalRecords > 0" [totalRecords]=
"totalRecords" [rows]=
"rowsPerPage" [first]=
"pagination.start"
8 [rowsPerPageOptions]=
"rowsPerPageOptions" [sortField]=
"sort.field" [sortOrder]=
"sort.order" dataKey=
"id"
9 [lazy]=
"true" (onLazyLoad)=
"loadLazy($event)" [lazyLoadOnInit]=
"false"
10 [showCurrentPageReport]=
"true" i18n-currentPageReportTemplate
11 currentPageReportTemplate=
"Showing {{'{first}'}} to {{'{last}'}} of {{'{totalRecords}'}} registrations"
12 [expandedRowKeys]=
"expandedRows"
14 <ng-template pTemplate=
"caption">
17 <my-advanced-input-filter (search)=
"onSearch($event)"></my-advanced-input-filter>
22 <ng-template pTemplate=
"header">
24 <th style=
"width: 40px;"></th>
25 <th style=
"width: 150px;"></th>
29 <th i18n
>Registration reason
</th>
30 <th i18n
pSortableColumn=
"state" style=
"width: 80px;">State
<p-sortIcon field=
"state"></p-sortIcon></th>
31 <th i18n
>Moderation response
</th>
32 <th style=
"width: 150px;" i18n
pSortableColumn=
"createdAt">Requested on
<p-sortIcon field=
"createdAt"></p-sortIcon></th>
36 <ng-template pTemplate=
"body" let-expanded=
"expanded" let-registration
>
38 <td class=
"expand-cell" [pRowToggler]=
"registration">
39 <my-table-expander-icon [expanded]=
"expanded"></my-table-expander-icon>
42 <td class=
"action-cell">
44 [ngClass]=
"{ 'show': expanded }" placement=
"bottom-right top-right left auto" container=
"body"
45 i18n-label
label=
"Actions" [actions]=
"registrationActions" [entry]=
"registration"
46 ></my-action-dropdown>
50 <div class=
"chip two-lines">
52 <span>{{ registration.username }}
</span>
53 <span class=
"muted">{{ registration.accountDisplayName }}
</span>
59 <my-user-email-info [entry]=
"registration" [requiresEmailVerification]=
"requiresEmailVerification"></my-user-email-info>
63 <div class=
"chip two-lines">
65 <span>{{ registration.channelHandle }}
</span>
66 <span class=
"muted">{{ registration.channelDisplayName }}
</span>
71 <td container=
"body" placement=
"left auto" [ngbTooltip]=
"registration.registrationReason">
72 {{ registration.registrationReason }}
75 <td class=
"c-hand abuse-states" [pRowToggler]=
"registration">
76 <my-global-icon *
ngIf=
"isRegistrationAccepted(registration)" [title]=
"registration.state.label" iconName=
"tick"></my-global-icon>
77 <my-global-icon *
ngIf=
"isRegistrationRejected(registration)" [title]=
"registration.state.label" iconName=
"cross"></my-global-icon>
80 <td container=
"body" placement=
"left auto" [ngbTooltip]=
"registration.moderationResponse">
81 {{ registration.moderationResponse }}
84 <td class=
"c-hand" [pRowToggler]=
"registration">{{ registration.createdAt | date: 'short' }}
</td>
88 <ng-template pTemplate=
"rowexpansion" let-registration
>
91 <div class=
"moderation-expanded">
94 <span class=
"moderation-expanded-label" i18n
>Registration reason:
</span>
95 <span class=
"moderation-expanded-text" [innerHTML]=
"registration.registrationReasonHTML"></span>
98 <div *
ngIf=
"registration.moderationResponse">
99 <span class=
"moderation-expanded-label" i18n
>Moderation response:
</span>
100 <span class=
"moderation-expanded-text" [innerHTML]=
"registration.moderationResponseHTML"></span>
108 <ng-template pTemplate=
"emptymessage">
111 <div class=
"no-results">
112 <ng-container *
ngIf=
"search" i18n
>No registrations found matching current filters.
</ng-container>
113 <ng-container *
ngIf=
"!search" i18n
>No registrations found.
</ng-container>
120 <my-process-registration-modal #processRegistrationModal (registrationProcessed)=
"onRegistrationProcessed()"></my-process-registration-modal>