Использование в Angular

Библиотека BasicLightbox предоставляет удобный способ для отображения модальных окон с изображениями или контентом. Она не требует множества настроек и отлично работает для создания простых, но стильных всплывающих окон. В этой статье рассмотрим, как интегрировать и использовать BasicLightbox в приложении на Angular.

Установка и подготовка

Для начала необходимо установить саму библиотеку через npm:

npm install basiclightbox

После установки, библиотеку можно подключить в проект. Для этого в компоненте или сервисе, где планируется использование, нужно импортировать соответствующие классы:

import * as basicLightbox from 'basiclightbox';

Основы использования

Создание и открытие модального окна с помощью BasicLightbox в Angular — это достаточно простой процесс. Рассмотрим базовый пример, в котором будет показано изображение в модальном окне.

  1. В компоненте создается метод для открытия модального окна:
import { Component } from '@angular/core';
import * as basicLightbox from 'basiclightbox';

@Component({
  selector: 'app-image-modal',
  templateUrl: './image-modal.component.html',
  styleUrls: ['./image-modal.component.css']
})
export class ImageModalComponent {

  openModal(): void {
    const modal = basicLightbox.create(`
      <img src="path_to_image.jpg" />
    `);
    modal.show();
  }
}
  1. В HTML-шаблоне компонента добавляется кнопка для открытия модального окна:
<button (click)="openModal()">Открыть изображение</button>

Таким образом, при клике на кнопку будет вызван метод openModal, который создаст и откроет модальное окно с изображением.

Подключение стилей

Для корректного отображения модального окна, нужно подключить стили библиотеки BasicLightbox. Один из способов — это импортировать CSS файл в angular.json:

"styles": [
  "src/styles.css",
  "node_modules/basiclightbox/dist/basicLightbox.min.css"
]

Параметры и кастомизация

Библиотека предоставляет множество настроек для кастомизации поведения модальных окон. Рассмотрим несколько полезных параметров:

  • esc — позволяет закрыть окно при нажатии клавиши Esc (по умолчанию включено).
  • overlay — настройка, позволяющая отключить затемнение фона за модальным окном (по умолчанию включено).

Пример использования этих параметров:

openModal(): void {
  const modal = basicLightbox.create(`
    <img src="path_to_image.jpg" />
  `, {
    onShow: () => {
      console.log('Modal is shown');
    },
    onClose: () => {
      console.log('Modal is closed');
    },
    esc: true,
    overlay: true
  });
  modal.show();
}

Вставка HTML-контента

Модальные окна BasicLightbox не ограничиваются только изображениями. В них можно вставлять любой HTML-контент, что делает их универсальными для отображения различных данных. Например, для вывода видео или галереи изображений можно использовать следующий код:

openModal(): void {
  const modal = basicLightbox.create(`
    <div>
      <h2>Заголовок</h2>
      <p>Текстовое содержание модального окна</p>
      <iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
    </div>
  `);
  modal.show();
}

Этот код позволяет вставить не только текст, но и другие элементы, такие как видео с YouTube.

Управление открытием и закрытием

Для контроля над состоянием модального окна можно использовать методы show() и close():

  • show() — открывает модальное окно.
  • close() — закрывает модальное окно.

Пример:

openModal(): void {
  const modal = basicLightbox.create(`
    <img src="path_to_image.jpg" />
  `);
  modal.show();

  setTimeout(() => {
    modal.close();
  }, 5000); // Закрытие модального окна через 5 секунд
}

Обработка событий

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

  • onShow — вызывается при открытии окна.
  • onClose — вызывается при закрытии окна.

Эти события можно привязать в конфигурации модального окна:

openModal(): void {
  const modal = basicLightbox.create(`
    <img src="path_to_image.jpg" />
  `, {
    onShow: () => {
      console.log('Окно открыто');
    },
    onClose: () => {
      console.log('Окно закрыто');
    }
  });
  modal.show();
}

Эти обработчики позволяют отслеживать жизненный цикл модального окна, что полезно для логирования или выполнения дополнительных действий.

Интеграция с Angular формами

BasicLightbox можно использовать и в сложных компонентах, например, в формах. Для этого достаточно интегрировать библиотеку в Angular-форму и работать с ней как с обычным компонентом. Например, модальное окно может отображать информацию о выбранной пользователем записи из формы:

import { Component } from '@angular/core';
import * as basicLightbox from 'basiclightbox';

@Component({
  selector: 'app-user-form',
  templateUrl: './user-form.component.html',
  styleUrls: ['./user-form.component.css']
})
export class UserFormComponent {
  userData = {
    name: 'Иван Иванов',
    email: 'ivan@example.com'
  };

  openUserDataModal(): void {
    const modal = basicLightbox.create(`
      <div>
        <h2>Информация о пользователе</h2>
        <p>Имя: ${this.userData.name}</p>
        <p>Email: ${this.userData.email}</p>
      </div>
    `);
    modal.show();
  }
}

Таким образом, можно динамически подставлять данные в модальное окно.

Анимации и эффекты

Хотя библиотека BasicLightbox изначально не предоставляет встроенные анимации, с помощью CSS можно добавить различные эффекты появления и исчезновения модального окна. Например, можно использовать анимации для плавного появления:

.basicLightbox {
  animation: fadeIn 0.5s ease-in-out;
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

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

Заключение

Интеграция BasicLightbox в проект на Angular не требует сложных настроек, и благодаря простоте использования и возможности кастомизации, эта библиотека является отличным выбором для реализации модальных окон. С её помощью можно легко создавать как простые всплывающие окна с изображениями, так и более сложные интерфейсы с видео, текстом или динамическими данными.