# Исходный код components_derived.settings_form_component

    """Модуль компонента формы ввода и отображения полей настроек. Содержит класс для работы с формами ввода
    и отображения полей настроек,их элементами и проверками."""

    from playwright.sync_api import Page, Locator
    from tools.logger import get_logger
    from locators.settings_form_locators import SettingsFormLocators
    from elements.tooltip_button_element import TooltipButton
    from elements.button_element import Button
    from components.toolbar_component import ToolbarComponent
    from components.base_component import BaseComponent

    logger = get_logger("SETTINGS_FORM")

    class SettingsFormComponent(BaseComponent):
        """Компонент формы ввода и отображения полей настроек. Предоставляет методы для взаимодействия с формой,
        ее содержимым и проверок."""

        def __init__(self, page: Page):
            super().__init__(page)
            self.toolbar = ToolbarComponent(page, "")
            self.content_items = {}
            self.buttons = []

        # Действия:

        def add_content_item(self, name: str, item: object) -> None:
            """Добавляет элемент содержимого в форму по заданному имени."""

            self.content_items[name] = item

        def get_content_item(self, name: str) -> object | None:
            """Возвращает элемент содержимого по имени или None, если не найден."""

            return self.content_items.get(name)

        def add_toolbar_title(self, title: str) -> None:
            """Добавляет заголовок в панель инструментов модального окна."""

            self.toolbar.add_title(title)

        def add_button(self, locator: str, name: str) -> None:
            """Добавляет кнопку в форму."""

            self.buttons.append(Button(self.page, locator, name))

        def add_tooltip_button(self, locator: str, name: str) -> None:
            """Добавляет кнопку в форму."""

            self.buttons.append(TooltipButton(self.page, locator, name))

        def get_button_by_name(self, name: str) -> Button | TooltipButton | None:
            """Ищет и возвращает кнопку по имени или None, если не найдена."""

            for button in self.buttons:
                if button.name == name:
                    return button
            return None

        def click_button(self, name: str) -> None:
            """Кликает по кнопке с заданным именем. Вызывает ошибку, если не найдена."""

            button = self.get_button_by_name(name)
            if button is None:
                assert False, f"Button with name '{name}' not found"
            button.click()

        # Проверки:

        def check_vertical_scrolling(self, locator: str| Locator) -> bool:
            """Проверяет возможность вертикальной прокрутки формы."""

            return self.is_scrollable_vertically(locator)

        def check_button_tooltip(self, name: str, tooltip: str) -> None:
            """Проверяет текст подсказки кнопки. """

            button = self.get_button_by_name(name)
            if button is None:
                raise AssertionError(f"Unsupported button name {name}")
            button.check_tooltip_with_text(tooltip)

        def check_button_visibility(self, name: str) -> None:
            """Проверяет наличие кнопки по имени. Вызывает ошибку, если не найдена."""

            button = self.get_button_by_name(name)
            if button is None:
                assert False, f"Button with name '{name}' not found"
            button.check_visibility(f"Button with name '{name}' is missing")

        def should_be_toolbar(self) -> None:
            """Проверяет наличие тулбара.

            Raises:
                AssertionError: Если тулбар или кнопка редактирования отсутствуют.
            """

            self.toolbar.check_toolbar_presence_by_locator_and_title(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER,
                                                                     "Session settings form toolbar is missing")