mirror of
https://github.com/groldsf/obsidian_check_plugin.git
synced 2026-07-22 05:37:48 +00:00
67 lines
2.5 KiB
TypeScript
67 lines
2.5 KiB
TypeScript
|
|
import { ValidationError } from "./validation/types";
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Отвечает за создание, стилизацию и обновление
|
|||
|
|
* элемента для отображения ошибок валидации настроек.
|
|||
|
|
*/
|
|||
|
|
export class ErrorDisplay {
|
|||
|
|
private errorElement: HTMLElement;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Создает и стилизует элемент для отображения ошибок внутри контейнера.
|
|||
|
|
* @param container - Родительский HTML-элемент.
|
|||
|
|
*/
|
|||
|
|
constructor(container: HTMLElement) {
|
|||
|
|
this.errorElement = container.createDiv({ cls: 'checkbox-sync-settings-error' });
|
|||
|
|
this.applyStyles();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Применяет стили к элементу ошибок.
|
|||
|
|
*/
|
|||
|
|
private applyStyles(): void {
|
|||
|
|
// Используем стандартные CSS переменные Obsidian для цвета ошибки
|
|||
|
|
this.errorElement.style.color = 'var(--text-error)';
|
|||
|
|
this.errorElement.style.marginTop = '10px';
|
|||
|
|
this.errorElement.style.marginBottom = '10px';
|
|||
|
|
this.errorElement.style.minHeight = '1.5em'; // Резервируем место
|
|||
|
|
this.errorElement.style.whiteSpace = 'pre-wrap'; // Для переноса длинных ошибок
|
|||
|
|
this.errorElement.style.userSelect = 'text'; // Позволяет выделять текст ошибки
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Отображает список ошибок валидации.
|
|||
|
|
* @param errors - Массив объектов ValidationError.
|
|||
|
|
*/
|
|||
|
|
public displayErrors(errors: ValidationError[]): void {
|
|||
|
|
if (errors && errors.length > 0) {
|
|||
|
|
const errorMessage = errors
|
|||
|
|
.map(e => `❌ ${e.field ? `[${e.field}]: ` : ''}${e.message}`)
|
|||
|
|
.join('\n');
|
|||
|
|
this.errorElement.setText(errorMessage); // Используем setText для безопасности
|
|||
|
|
} else {
|
|||
|
|
this.clear(); // Если массив пуст или null/undefined, очищаем
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Отображает одно общее сообщение об ошибке.
|
|||
|
|
* @param message - Строка с сообщением.
|
|||
|
|
*/
|
|||
|
|
public displayMessage(message: string): void {
|
|||
|
|
if (message) {
|
|||
|
|
// Добавляем значок ошибки для консистентности
|
|||
|
|
this.errorElement.setText(`❌ ${message}`);
|
|||
|
|
} else {
|
|||
|
|
this.clear();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Очищает элемент отображения ошибок.
|
|||
|
|
*/
|
|||
|
|
public clear(): void {
|
|||
|
|
this.errorElement.setText('');
|
|||
|
|
}
|
|||
|
|
}
|