"""Autogenerated file: DO NOT EDIT!"""
import typing  # noqa: F401
from dazzler.system import Component, Aspect, UNDEFINED  # noqa: F401


class Modal(Component):
    """
    A modal overlay the page with a darkened background.

    :CSS:

        ``dazzler-core-modal``
        - ``modal-overlay``
        - ``modal-active``
        - ``modal-content``
        - ``modal-header``
        - ``modal-closer``
        - ``modal-body``
        - ``modal-footer``
    """
    _aspect_keys = []
    _children = []
    body = Aspect(required=True, children=True, docstring="Main content of the modal. (css: modal-body)")  # noqa: E501
    header = Aspect(children=True, docstring="Appear before the body. (css: modal-header)")  # noqa: E501
    footer = Aspect(children=True, docstring="Appear after the body. (css: modal-footer)")  # noqa: E501
    active = Aspect(docstring="Activate the modal.")
    close_button = Aspect(default=True, docstring="Include a close button in the top right corner of the header. (default=True)")  # noqa: E501
    class_name = Aspect(docstring="CSS class of the modal.")
    style = Aspect(docstring="Style object of outer container.")

    def __init__(
            self,
            body: typing.Union[str, int, float, Component, typing.List[typing.Union[str, int, float, Component]]],  # noqa: E501
            header: typing.Optional[typing.Union[str, int, float, Component, typing.List[typing.Union[str, int, float, Component]]]] = UNDEFINED,  # noqa: E501
            footer: typing.Optional[typing.Union[str, int, float, Component, typing.List[typing.Union[str, int, float, Component]]]] = UNDEFINED,  # noqa: E501
            active: typing.Optional[bool] = UNDEFINED,
            close_button: typing.Optional[bool] = True,
            class_name: typing.Optional[str] = UNDEFINED,
            style: typing.Optional[typing.Dict] = UNDEFINED,
            identity: str = None
    ):
        """
        :param body: Main content of the modal. (css: modal-body)
        :param header: Appear before the body. (css: modal-header)
        :param footer: Appear after the body. (css: modal-footer)
        :param active: Activate the modal.
        :param close_button: Include a close button in the top right corner
            of the header. (default=True)
        :param class_name: CSS class of the modal.
        :param style: Style object of outer container.
        """
        Component.__init__(self, locals(), identity)
