"""Модуль checkbox_element содержит класс для работы с чекбоксами.

Класс Checkbox наследует базовый функционал BaseElement и добавляет
специфичные методы для работы с элементами типа 'чекбокс'.
"""

from tools.logger import get_logger
from elements.base_element import BaseElement

logger = get_logger("CHECKBOX")


class Checkbox(BaseElement):
    """Класс для работы с чекбоксами на странице.

    Наследует функциональность BaseElement и добавляет методы для
    взаимодействия с чекбоксами и проверки их состояния.
    """

    @property
    def type_of(self) -> str:
        """Возвращает тип элемента ('чекбокс').

        Returns:
            str: Тип элемента - 'чекбокс'.
        """

        return "checkbox"

    # Действия:
    def check(self, force=False) -> None:
        """Отмечает чекбокс (устанавливает галочку)."""

        logger.info(f"Checking checkbox '{self.name}'")
        if force:
            self.locator.check(force=True)
        else:
            self.locator.check()

    def uncheck(self, force=False) -> None:
        """Снимает отметку с чекбокса (убирает галочку)."""

        logger.info(f"Unchecking checkbox '{self.name}'")
        if force:
            self.locator.uncheck(force=True)
        else:
            self.locator.uncheck()

    # Проверки:
    def is_checked(self) -> bool:
        """Проверяет, отмечен ли чекбокс.

        Returns:
            bool: True если отмечен, False если нет.
        """

        logger.info(f"Checking if checkbox '{self.name}' is checked")
        return self.locator.is_checked()
