Введение Струтура компонента Состояние компонента Реализация Ссылки

Alert

Alert отображает заметное сообщение и связанные с ним дополнительные действия. Alert отображает важное краткое сообщение и предлагает действие, которые пользователь может предпринять. Помимо функциональных кнопок alert всегда содержит иконку закрытия. Это нужно, чтобы у пользователя был выбор делать предложенное действие или нет. В нашем случае alert это только текстовая информация и кнопкой действия, функцию всплывающего окна выполняет popup.

Структура компонента

Alert состоит из текста сообщения и кнопки целевого действия. Мы просто оборачиваем эти два элемента в обёртку и выводим в контейнер popup.

Button

Кнопки передают действия, которые пользователи могут совершать. Кнопки должны указывать на то, что они могут инициировать действие, их состояние должно быть чётким, а также их должно быть легко найти среди других элементов интерфейса. Подробнее про кнопки button.

Структура

Вот так выглядит alert с заполненной информацией. В данном примере заголовок и иконка закрытия относятся к компоненту popup, поэтому мы их не выделяем.

Структура

Состояние компонента

Состояние у компонента такое же как и у popup, можешь прочитаать про это подробнее.

Реализация

Так как вся механика закрытия и открытия компонента прописана в popup, в alert мы только прописываем функцию нажатия на кнопку.

import React, { PureComponent } from 'react'
import A_Button from '../../atoms/A_Button/A_Button.jsx'
import './O_Alert.css'

export default class O_Alert extends PureComponent {
  constructor(props) {
    super(props)

    this.handleButtonClick = this.handleButtonClick.bind(this)
  }

  handleButtonClick() {
    console.log('Hello World!')
  }

  render() {
    const { content } = this.props

    return (
      <div className="O_Alert">
        <div className="A_AlertContent">{content}</div>
        <A_Button text="Принять" handleClick={this.handleButtonClick} />
      </div>
    )
  }
}

Затем, в файле O_Alert.css прописываем стили для alert, нужно назначить только стили текста и отступы между кнопкой и параграфом.

.O_Alert {
  width: 570px;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: space-around;
}

.O_Alert .A_AlertContent {
  line-height: 140%;
  font-weight: 200;
  font-size: 16px;
  color: #495151;
}

Мы создали компонент, но описали только его функционал, теперь его нужно отрендерить. Нужно заполнить параграф контентом. Ты можешь увидеть как это делаем мы, а также посмотреть получившийся alert.

import React from 'react'
import ReactDOM from 'react-dom'
import S_Popup from '../../components/superorganisms/S_Popup/S_Popup.jsx'
import O_Alert from '../../components/organisms/O_Alert/O_Alert.jsx'

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

document.addEventListener('DOMContentLoaded', () => {
  ReactDOM.render(
    <S_Popup popupButtonText="Открыть попап" popupTitle="Информация о подписке">
      <O_Alert content={content} />
    </S_Popup>,
    document.body
  )
})

Получаем следующий результат.

Структура Структура

Также для тебя ссылки на Figma с дизайн системой и GitHub с библиотекой компонентов.

Составляющие

В этот компонент часто выводятся следующие компоненты.