# frozen_string_literal: true

module PageObjects
  module Pages
    class FormTemplate < PageObjects::Pages::Base
      def visit
        page.visit("/admin/customize/form-templates")
        self
      end

      def visit_new
        page.visit("/admin/customize/form-templates/new")
        self
      end

      # Form Template Index
      def has_form_template_table?
        page.has_selector?("table.form-templates__table")
      end

      def click_view_form_template
        find(".form-templates__table tr:first-child .btn-view-template").click
      end

      def click_toggle_preview
        find(".d-toggle-switch .d-toggle-switch__checkbox-slider", visible: false).click
        self
      end

      def has_form_template?(name)
        find(".form-templates__table tbody tr td", text: name).present?
      end

      def has_no_form_template?(name)
        has_no_css?(".form-templates__table tbody tr td", text: name)
      end

      def has_category_in_template_row?(category_name)
        find(
          ".form-templates__table .categories .badge-category__name",
          text: category_name,
        ).present?
      end

      def has_template_structure?(structure)
        find("code", text: structure).present?
      end

      # Form Template new/edit form related
      def type_in_template_name(input)
        find(".form-templates__form-name-input").fill_in(with: input)
        self
      end

      def click_save_button
        find(".form-templates__form .footer-buttons .btn-primary:enabled", visible: :all).click
      end

      def click_quick_insert(field_type)
        find(".form-templates__form .quick-insert-#{field_type}").click
      end

      def click_validations_button
        find(".form-templates__validations-modal-button").click
      end

      def click_preview_button
        find(".form-templates__preview-button:enabled").click
      end

      def has_input_field?(type)
        find(".form-template-field__#{type}", visible: :all).present?
      end

      def has_preview_modal?
        find(".form-template-form-preview-modal").present?
      end

      def has_validations_modal?
        find(".admin-form-template-validation-options-modal").present?
      end

      def has_name_value?(name)
        find(".form-templates__form-name-input").value == name
      end

      def has_save_button_with_state?(disabled:)
        find_button("Save", disabled:)
      end

      def has_preview_button_with_state?(disabled:)
        find_button("Preview", disabled:)
      end
    end
  end
end