Почтовый кабинет: регистрация, папки, черновики, вложения, грид @jambotron/aria-grid, интерфейс по synthwave-шаблону
Бэкенд: регистрация со входом сразу и /api/config, профиль и смена пароля, свои папки, PATCH письма (прочитано, флажок, перенос; Спам ставит отметку), корзина и очистка, черновики, несколько адресатов и копия, вложения черновика уходят с письмом, вложения и заголовки To/Cc входящих сохраняются, письма заблокированных — в Спам. Исправлено: загрузка файла (415), колонка content_id (500 на любых вложениях), SPA-маршрут с точкой. Фронтенд переписан: все таблицы — грид, оформление — шаблон synthwave-design-showcase.html. α Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { Provider, inject } from '@angular/core';
|
||||
import { JT_GRID_BULK_UI, JtGridBulkUi } from '@jambotron/aria-grid';
|
||||
import { DialogService } from './dialog.service';
|
||||
import { ToastService } from './toast.service';
|
||||
|
||||
/** The grid's bulk actions ask through our glass dialog and report through our toasts. */
|
||||
export function provideMailGrid(): Provider[] {
|
||||
return [{
|
||||
provide: JT_GRID_BULK_UI,
|
||||
useFactory: (): JtGridBulkUi => {
|
||||
const dialogs = inject(DialogService);
|
||||
const toasts = inject(ToastService);
|
||||
return {
|
||||
ask: request => dialogs.ask({
|
||||
title: request.title,
|
||||
message: request.message,
|
||||
confirmLabel: request.confirmLabel,
|
||||
danger: request.danger,
|
||||
...(request.reason ? { input: '', inputLabel: 'Reason', required: true } : {})
|
||||
}),
|
||||
success: message => toasts.ok(message),
|
||||
error: message => toasts.error(message)
|
||||
};
|
||||
}
|
||||
}];
|
||||
}
|
||||
Reference in New Issue
Block a user