# LSK ux subrepo: modal ## Глобальные модалки ### Как выглядит Посмотрите демо: https://lskjs.github.io/ux/?path=/story/modal-global ### Как использовать Как можно раньше в рендере инициализируем провайдер. ```jsx import React from 'react'; import { ModalProvider } from '@lskjs/modal/Global'; const Example = () => ( ... ); ``` В нужном вам месте создайте модалку. В виде хуков: ```js import React, { useContext, useEffect } from 'react'; import { ModalContext } from '@lskjs/modal/Global'; const Example = () => { const modal = useContext(ModalContext); let modalRef; useEffect(() => { modalRef = modal.create('id-modal', { size: 'small' }, (
Контент
)); }, []); return ( ); }; ``` В виде Consumer: ```js import React from 'react'; import { ModalConsumer } from '@lskjs/modal/Global'; const Example = () => (
{(modal) => { let modalRef; setTimeout(() => { modalRef = modal.create('id-modal', { size: 'small' }, (
Контент
)); }, 0); return ( ); }}
); ``` Также контент можно передавать в виде callback'а: ```js modal.create('id', props, ({ id, ref, Modal, methods, ...props // Все пропсы переданные при создании модалки 2 аргументом }) => ( <> Заголовок Контент )) ``` ### Методы контекста | Метод | Аргументы | Описание | |--------|---------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------| | create | `id`: *string* - ID модалки
`props`: *Object* - Props для модалки
`content`: *ReactNode \| Function* - Тело модалки | Создание модалки.
Возвращает `ModalRef`. | | update | `id`: *string* - ID модалки
`props`: *Object* - Props для модалки
`content`: *ReactNode \| Function* - Тело модалки | Обновление модалки.
Возвращает `ModalRef`. | | list | | Список существующих модалок.
Возвращает объект с `{ id: ModalCtx }` | | get | `id`: *string* - ID модалки | Получение существующей модалки.
Возвращает объект `ModalCtx` | | open | `id`: *string* - ID модалки | Открытие существующей модалки.
Вовзращает `id` | | close | `id`: *string* - ID модалки | Закрытие существующей модалки.
Возвращает `id`. Не удаляет инстанс модалки. | | remove | `id`: *string* - ID модалки | Удаление модалки. Возвращает `id`.
Открыть модалку с этим `id` больше не выйдет. |