Валидация параметров

При работе с библиотекой Noty ключевым моментом является корректная настройка параметров уведомлений. Валидация параметров позволяет избежать ошибок во время выполнения и обеспечивает предсказуемое поведение уведомлений. Библиотека поддерживает множество опций, каждая из которых имеет определённый тип данных, допустимые значения и поведение по умолчанию.


Основные параметры и их проверка

  1. text Тип: string Описание: Содержимое уведомления. Валидация: обязательное поле. Если значение отсутствует или не является строкой, уведомление не будет корректно отображаться.

  2. type Тип: string Возможные значения: "alert", "success", "warning", "error", "information" Валидация: если передано значение вне допустимого диапазона, Noty автоматически присваивает "alert".

  3. timeout Тип: number или false Описание: Время в миллисекундах, через которое уведомление исчезнет автоматически. Валидация: значение должно быть положительным числом либо false. Любые другие значения игнорируются, и используется значение по умолчанию (5000 мс).

  4. layout Тип: string Возможные значения: "top", "topLeft", "topRight", "bottom", "bottomLeft", "bottomRight", "center" Валидация: при неверном значении уведомление отображается в "topRight".

  5. theme Тип: string Возможные значения: "mint", "metroui", "relax", "semanticui", "bootstrap-v4", "bootstrap-v3", "nest" Валидация: при указании неподдерживаемого значения библиотека использует тему "mint".

  6. progressBar Тип: boolean Описание: Отображение индикатора прогресса. Валидация: любые значения, кроме true или false, приводят к использованию значения по умолчанию true.

  7. closeWith Тип: array Возможные значения элементов массива: "click", "button", "hover" Валидация: элементы, не относящиеся к допустимым, игнорируются. Пустой массив отключает все способы закрытия.


Пользовательская валидация через колбэки

Noty предоставляет возможность управлять поведением уведомлений через события:

  • onShow
  • onClose
  • onClick
  • onHover

Колбэки могут проверять внутренние данные уведомления перед его показом. Например, проверка длины текста:

new Noty({
  text: "Пример уведомления",
  type: "success",
  timeout: 3000,
  callbacks: {
    onShow: function() {
      if (this.options.text.length > 100) {
        console.warn("Текст слишком длинный");
      }
    }
  }
}).show();

В данном примере используется встроенный механизм событий для дополнительной проверки параметров перед отображением уведомления.


Проверка типов и значения объектов параметров

Для сложных объектов, например, animation или buttons, важно валидировать вложенные свойства.

Пример: параметр animation

animation: {
  open: 'animated bounceInRight',
  close: 'animated bounceOutRight'
}
  • open и close должны быть строками, представляющими CSS-классы.
  • Если переданы некорректные типы, библиотека игнорирует их и использует анимацию по умолчанию.

Пример: параметр buttons

buttons: [
  Noty.button('OK', 'btn btn-success', function () { console.log('OK'); }),
  Noty.button('Cancel', 'btn btn-error', function () { this.close(); })
]
  • Каждый элемент массива должен быть объектом кнопки, созданной через Noty.button.
  • Любые элементы другого типа будут проигнорированы, предотвращая ошибки при отрисовке.

Валидация при динамическом обновлении уведомлений

Метод setText, setType, setTimeout позволяет менять параметры уже отображаемого уведомления. Важно применять те же правила валидации, что и при создании:

let n = new Noty({ text: "Начальный текст" }).show();
n.setText(123); // неверный тип, текст не изменится
n.setText("Обновленный текст"); // корректно

Автоматизация проверки параметров

Для крупных проектов рекомендуется использовать вспомогательные функции проверки:

function validateNotyOptions(options) {
  if (typeof options.text !== 'string') options.text = '';
  if (!['alert','success','warning','error','information'].includes(options.type)) options.type = 'alert';
  if (typeof options.timeout !== 'number' && options.timeout !== false) options.timeout = 5000;
  return options;
}

new Noty(validateNotyOptions({ text: 123, type: 'unknown', timeout: 'fast' })).show();

Такая практика позволяет централизовать контроль и избегать непредсказуемого поведения уведомлений.


Итоговые рекомендации по валидации

  • Проверять тип данных для всех обязательных параметров (text, type).
  • Ограничивать значения полей до допустимых наборов.
  • Использовать колбэки для динамических проверок при показе уведомлений.
  • Валидировать вложенные объекты (animation, buttons) перед передачей в Noty.
  • При динамическом обновлении параметров применять те же правила.

Правильная валидация параметров повышает стабильность и предсказуемость работы уведомлений, предотвращая ошибки и некорректное отображение.