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


class Calendar(Component):
    """
    Display a calendar based on the month of a timestamp.

    :CSS:

        ``dazzler-calendar-calendar``
        - ``calendar-header``
        - ``month-label``
        - ``week-labels``
        - ``week-label``
        - ``calendar-day``
        - ``selected-day``
        - ``week-rows``
        - ``calendar-week``
        - ``empty``
    """
    _aspect_keys = []
    _children = []
    month_timestamp = Aspect(docstring="Timestamp of the month to show. If not supplied is today.")  # noqa: E501
    selected = Aspect(docstring="The currently selected day as an object")
    month_format = Aspect(default='MMMM YYYY', docstring="Formatting of the month label (default='MMMM YYYY')")  # noqa: E501
    week_labels = Aspect(default=UNDEFINED, docstring="Labels for the week, starting from sunday. (default=['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'])")  # noqa: E501
    class_name = Aspect()
    style = Aspect()
    use_selected = Aspect(default=True, docstring="Whether to set selected aspect on click/start up.This will disable highlight of day in the calendar. (default=True)")  # noqa: E501

    def __init__(
            self,
            month_timestamp: typing.Optional[typing.Union[float, int]] = UNDEFINED,  # noqa: E501
            selected: typing.Optional[typing.Dict[str, typing.Union[typing.Union[float, int]]]] = UNDEFINED,  # noqa: E501
            month_format: typing.Optional[str] = 'MMMM YYYY',
            week_labels: typing.Optional[typing.List[str]] = UNDEFINED,
            class_name: typing.Optional[str] = UNDEFINED,
            style: typing.Optional[typing.Dict] = UNDEFINED,
            use_selected: typing.Optional[bool] = True,
            identity: str = None
    ):
        """
        :param month_timestamp: Timestamp of the month to show. If not
            supplied is today.
        :param selected: The currently selected day as an object
        :param month_format: Formatting of the month label (default='MMMM
            YYYY')
        :param week_labels: Labels for the week, starting from sunday.
            (default=['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'])
        :param class_name:
        :param style:
        :param use_selected: Whether to set selected aspect on click/start
            up. This will disable highlight of day in the calendar.
            (default=True)
        """
        Component.__init__(self, locals(), identity)
