Class: OkonomiUiKit::Components::ConfirmationModal

Inherits:
OkonomiUiKit::Component show all
Defined in:
app/helpers/okonomi_ui_kit/components/confirmation_modal.rb

Instance Attribute Summary

Attributes inherited from OkonomiUiKit::Component

#view

Instance Method Summary collapse

Methods inherited from OkonomiUiKit::Component

#combined_styles, config_class?, config_class_name, config_classes, config_namespace, #config_styles_registry, config_styles_registry, deep_merge, #initialize, #internal_styles_registry, internal_styles_registry, #name, parent_styles_registry, register_styles, resolve_config_classes, #style, #styles, #template_path, #theme_name, #tw_merge, #variant_style

Constructor Details

This class inherits a constructor from OkonomiUiKit::Component

Instance Method Details



123
124
125
126
127
# File 'app/helpers/okonomi_ui_kit/components/confirmation_modal.rb', line 123

def modal_data_attributes(options)
  return "" unless options[:data]
  
  options[:data].map { |k, v| "data-#{k.to_s.dasherize}=\"#{v}\"" }.join(" ").html_safe
end


116
117
118
119
120
121
# File 'app/helpers/okonomi_ui_kit/components/confirmation_modal.rb', line 116

def modal_icon_class(variant)
  [
    style(:icon, :class),
    style(:icon, :variants, variant, :icon)
  ].compact.join(" ")
end


109
110
111
112
113
114
# File 'app/helpers/okonomi_ui_kit/components/confirmation_modal.rb', line 109

def modal_icon_wrapper_class(variant)
  [
    style(:icon, :wrapper),
    style(:icon, :variants, variant, :wrapper)
  ].compact.join(" ")
end

Helper methods to build classes from styles



102
103
104
105
106
107
# File 'app/helpers/okonomi_ui_kit/components/confirmation_modal.rb', line 102

def modal_panel_class(size)
  [
    style(:panel, :base),
    style(:panel, :sizes, size)
  ].compact.join(" ")
end

#render(options = {}, &block) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/helpers/okonomi_ui_kit/components/confirmation_modal.rb', line 4

def render(options = {}, &block)
  options = options.with_indifferent_access
  
  # Extract and validate required options
  title = options.fetch(:title) { raise ArgumentError, "title is required" }
  message = options.fetch(:message) { raise ArgumentError, "message is required" }
  
  # Extract optional parameters with defaults
  confirm_text = options.delete(:confirm_text) || "Confirm"
  cancel_text = options.delete(:cancel_text) || "Cancel"
  variant = (options.delete(:variant) || :warning).to_sym
  size = (options.delete(:size) || :md).to_sym
  auto_open = options.delete(:auto_open) || false
  
  # Build component options
  modal_options = {
    title: title,
    message: message,
    confirm_text: confirm_text,
    cancel_text: cancel_text,
    variant: variant,
    size: size,
    auto_open: auto_open,
    has_custom_actions: block_given?,
    data: options.delete(:data) || {}
  }.merge(options)
  
  view.render(template_path, component: self, options: modal_options, &block)
end