Class: Models::Templates::Validation

Inherits:
Base
  • Object
show all
Defined in:
app/components/databasium/models/templates/validation.rb

Constant Summary collapse

TYPES =
{
  presence: "Presence",
  uniqueness: "Uniqueness",
  inclusion: "Inclusion",
  exclusion: "Exclusion",
  validates_associated: "Validates Associated",
  numericality: "Numericality",
  length: "Length",
  acceptance: "Acceptance",
  absence: "Absence",
  confirmation: "Confirmation",
  comparison: "Comparison",
  format: "Format"
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(validation: nil, name: nil) ⇒ Validation

Returns a new instance of Validation.



21
22
23
24
25
26
# File 'app/components/databasium/models/templates/validation.rb', line 21

def initialize(validation: nil, name: nil)
  @validation = validation
  @name = name
  @selected_validation = @validation&.fetch(:type, nil)
  @validation_value = @validation&.fetch(:value, nil)
end

Instance Method Details

#view_templateObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'app/components/databasium/models/templates/validation.rb', line 28

def view_template
  div(
    class: "p-2",
    data: {
      controller: "validation",
      validation_selected_type_value: @selected_validation
    }
  ) do
    div(class: "flex gap-2") do
      render_validation_name_input
      div(class: "relative") do
        render_validation_type_select
        div(
          class: "absolute -top-1.5 -right-[0.5rem]",
          data: {
            action:
              "mouseenter->validation#showBasicInfo mouseleave->validation#hideBasicInfo"
          }
        ) do
          heroicon "information-circle", variant: :solid, options: { class: "w-5 h-5" }
          render_basic_info
        end
      end
      render_acceptance_suggestions
      render_length_suggestions
      render_uniqueness_suggestions
      render_absence_suggestions
      render_confirmation_suggestions
      render_comparison_suggestions
      render_format_suggestions
      render_inclusion_suggestions
      render_exclusion_suggestions
      render_numericality_suggestions
      render_validates_associated_suggestions
      render_presence_suggestions
      render_validation_value_input
      render_x_button(action: "click->validation#remove")
    end
  end
end