Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/efiand/unimodal

Модальное окно с произвольной разметкой и стилизацией.
https://github.com/efiand/unimodal

npm-package portfolio-project

Last synced: about 21 hours ago
JSON representation

Модальное окно с произвольной разметкой и стилизацией.

Awesome Lists containing this project

README

        

# unimodal [![npm version](https://img.shields.io/npm/v/unimodal.svg)](https://www.npmjs.com/package/unimodal)

Модальное окно с произвольной разметкой и стилизацией.

## Возможности

* Несколько произвольно расположенных открывающих и закрывающих элементов для каждого модального окна.
* Блокирование основной прокрутки с сохранением позиции экрана.
* Собственная прокрутка по правой стороне окна при переполнении контентной части.
* Закрытие по `Esc`.
* Запрет выхода фокуса за пределы содержимого модального окна.

## Установка

`npm i -DE unimodal`

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

### Разметка

Элементы разметки помечаются дата-атрибутами с одинаковым значением:

* `data-modal` - на узел модального окна.
* `data-modal-open` - на все узлы, открывающие это окно.
* `data-modal-close` - на все узлы, закрывающие это окно.

### Стили

Для выравнивания содержимого по вьюпорту рекомендуются следующие стили: [modal.css](https://efiand.github.io/unimodal/modal.css).

Если используются postcss-import и БЭМ-блок `modal`, можно импортировать часть переиспользуемых стилей модального окна:

```css
@import url("../node_modules/unimodal/modal.css");
```

### Использование готового скрипта

```html

window.MODAL_PREFIX = 'modal--'; // modal-- - значение по уполчанию

```

### Кастомное подключение модуля в систему сборки

```js
import Modal from 'unimodal';

for (const modalElement of document.querySelectorAll('[data-modal]')) {
new Modal(modalElement, 'modal--'); // modal-- - значение по уполчанию
}
```

или:

```js
import { initModals } from 'unimodal';

initModals('modal--'); // modal-- - значение по уполчанию

```

Второй параметр конструктора - префикс имён классов-модификаторов:

* `*ready` - для стилизации модальных особенностей. Полезно для прогрессивного улучшения, когда до загрузки JS модальное окно в потоке.
* `*opened` - для стилизации состояния открытого окна.