src/app/core/admin/messages/list-messages/list-messages.component.html
<section class="page-header mb-3">
<div>
<h1 skipTo>Messages</h1>
View and manage messages.
</div>
<system-alert />
</section>
<section class="page-body anchored-page-body">
<div class="table-header d-flex align-items-center">
<div class="table-actions d-flex flex-wrap flex-grow-1">
<div class="mb-3 me-5">
<asy-search-input
placeholder="Search..."
[search]="dataSource.searchEvent$.value"
(applySearch)="dataSource.search($event)"
/>
</div>
<div class="mb-3 ms-auto">
<button
class="btn btn-primary ms-auto"
type="button"
[routerLink]="['/admin/message/']"
>
<span class="fa-solid fa-plus"></span> Create Message
</button>
</div>
</div>
</div>
<div class="table-content">
<table class="table table-striped" asyFilter asySort cdk-table [dataSource]="dataSource">
<ng-container cdkColumnDef="title">
<th cdk-header-cell *cdkHeaderCellDef>
<asy-header-sort>Title</asy-header-sort>
</th>
<td cdk-cell *cdkCellDef="let message">
<a class="btn btn-link p-0" [routerLink]="['/admin/message', message._id]">
{{ message.title }}
</a>
</td>
</ng-container>
<asy-text-column name="type" sortable />
<ng-container cdkColumnDef="body">
<th cdk-header-cell *cdkHeaderCellDef>Body</th>
<td class="hide-overflow" cdk-cell *cdkCellDef="let message">
{{ message.body }}
</td>
</ng-container>
<asy-date-column name="created" sortable />
<asy-date-column name="updated" sortable />
<asy-actions-menu-column scope="user" stickyEnd>
<ng-template
actions-menu-tmp
let-item="item"
let-menuId="menuId"
let-triggerId="triggerId"
>
<div
class="dropdown-menu"
[attr.aria-labelledby]="triggerId"
cdkMenu
[id]="menuId"
>
<a
class="dropdown-item"
cdkMenuItem
[routerLink]="['/admin/message', item._id]"
>Edit</a
>
<a
class="dropdown-item"
cdkMenuItem
(cdkMenuItemTriggered)="previewMessage(item)"
>Preview</a
>
<a
class="dropdown-item"
cdkMenuItem
(cdkMenuItemTriggered)="confirmDeleteMessage(item)"
>Delete</a
>
</div>
</ng-template>
</asy-actions-menu-column>
<tr cdk-header-row *cdkHeaderRowDef="displayedColumns; sticky: true"></tr>
<tr cdk-row *cdkRowDef="let team; columns: displayedColumns"></tr>
</table>
<asy-table-empty-state
emptyText="No messages are available."
filteredText="No messages matched your search."
[dataSource]="dataSource"
(clearFilters)="clearFilters()"
/>
</div>
<div class="table-footer d-flex align-items-center">
<div class="table-footer-pager ms-auto">
<asy-paginator [dataSource]="dataSource" />
</div>
</div>
</section>