Skip to content

Modal/ModalTrigger

Компонент Modal предоставляет модальные окна для лейаутов. Для вызова нужно использовать компонент ModalTrigger.

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

WARNING

Внимание! Вы должны всегда использовать копоненты внутри лейаута - триггеры в основном слоте лейаута, а модальные окна - распологать в порядке требуемом бизнес-логикой вашего проекта в слоте modals! Атрибут to триггера должен быть указан и соответсвовать id на нужной модали.

WARNING

Внимание! Высота контента передаваемого в слоте controls должна быть 40px и это остается "на проектах"!

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

Небезопасные стили

При необходимости (например, для того чтобы изменить тип отображения элемента-триггера) вы можете передать правила стилевой разметки в хост компонента через атрибут styles. Внимание!!! Это небезопасно! По умолчанию хост элемента отображается как display: inline-flex;;

HTML, Angular, Vue

html
  <ds-layout>
    <div slot="main">
      <ds-modal-trigger
        to="modal"
      >
        <div slot="main">Я - триггер модали!</div>
      </ds-modal-trigger>
    </div>

    <div slot="modals">
      <ds-modal id="modal" text="Button text">
        <div slot="main">
          <div>There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>
        </div>

        <div slot="controls" style="height: 40px;">Controls</div>
      </ds-modal>
    </div>
  </ds-layout>

React

js
import { Layout, ModalTrigger, Modal } from '@rir/ds-library';

function Component() {
  return (
    <>
      <Layout>
        <div slot="main">
          <ModalTrigger
            to="modal"
          >
            <div slot="main">Я - триггер модали!</div>
          </ModalTrigger>
        </div>

        <div slot="modals">
          <Modal id="modal" text="Button text">
            <div slot="main">
              <div>There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>
            </div>

            <div slot="controls" style="height: 40px;">Controls</div>
          </Modal>
        </div>
      </Layout>
    </>
  );
}

export default Component;

API ModalTrigger

Props

NameTypeDescriptionDefault
to[undefined, String]Идентефикатор модали для которой работает триггер.undefined
openStringДинамический ключ для открытия модали по этому триггеру''
closeStringДинамический ключ для закрытия модали по этому триггеру''
allStringДинамический ключ для закрытия всех открытых модалей''
stylesString"Небезопастная" строка для передачи правил CSS в компонент''

Slots

NameDescription
mainОсновной контент триггера

API Modal

Props

NameTypeDescriptionDefault
textStringТекст кнопки назад. Если не задан она не выводится.''
fullStringПропс выключает оборачивание контентов в слотах в компонент Wraper. (Нет отступов по бокам)''

Slots

NameDescription
mainОсновной контент
controlsКонтент управляющей области

Примеры проектов

React

Angular

Vue