Class: Satis::DateTimePicker::Component

Inherits:
ApplicationComponent show all
Defined in:
app/components/satis/date_time_picker/component.rb

Instance Attribute Summary collapse

Attributes inherited from ApplicationComponent

#original_view_context

Instance Method Summary collapse

Methods inherited from ApplicationComponent

add_helper, #component_name

Constructor Details

#initialize(form:, attribute:, **options, &block) ⇒ Component

Returns a new instance of Component.



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
33
34
35
36
37
38
39
40
41
# File 'app/components/satis/date_time_picker/component.rb', line 8

def initialize(form:, attribute:, **options, &block)
  super

  @form = form
  @attribute = attribute
  @options = options
  @block = block
  options[:input_html] ||= {}
  @time_picker = options.key?(:time_picker) ? options[:time_picker] : true
  @inline = options.key?(:inline) ? options[:inline] : false
  @clearable = options.key?(:clearable) ? options[:clearable] : true
  @multiple = options.key?(:multiple) ? options[:multiple] : false
  @range = options.key?(:range) ? options[:range] : false

  @format = if options.key?(:format)
    options[:format]
  else
    {weekday: "long", month: "short", year: "numeric", day: "numeric",
     hour: "numeric", minute: "numeric", hour12: false}
  end

  options[:input_html].merge!("data-satis-date-time-picker-target" => "hiddenInput", "data-action" => "change->satis-date-time-picker#hiddenInputChanged")

  # FIXME: deal with ranges and multiples
  hidden_value = options[:input_html][:value]
  hidden_value ||= @form.object.send(attribute)
  hidden_value = if hidden_value.is_a?(String)
    hidden_value&.split(" - ")&.map { |d| Time.parse(d).iso8601 }&.join(" - ")
  else
    hidden_value&.iso8601
  end

  options[:input_html][:value] = hidden_value
end

Instance Attribute Details

#attributeObject (readonly)

Returns the value of attribute attribute.



6
7
8
# File 'app/components/satis/date_time_picker/component.rb', line 6

def attribute
  @attribute
end

#clearableObject (readonly)

Returns the value of attribute clearable.



6
7
8
# File 'app/components/satis/date_time_picker/component.rb', line 6

def clearable
  @clearable
end

#formObject (readonly)

Returns the value of attribute form.



6
7
8
# File 'app/components/satis/date_time_picker/component.rb', line 6

def form
  @form
end

#formatObject (readonly)

Returns the value of attribute format.



6
7
8
# File 'app/components/satis/date_time_picker/component.rb', line 6

def format
  @format
end

#inlineObject (readonly)

Returns the value of attribute inline.



6
7
8
# File 'app/components/satis/date_time_picker/component.rb', line 6

def inline
  @inline
end

#multipleObject (readonly)

Returns the value of attribute multiple.



6
7
8
# File 'app/components/satis/date_time_picker/component.rb', line 6

def multiple
  @multiple
end

#optionsObject (readonly)

Returns the value of attribute options.



6
7
8
# File 'app/components/satis/date_time_picker/component.rb', line 6

def options
  @options
end

#rangeObject (readonly)

Returns the value of attribute range.



6
7
8
# File 'app/components/satis/date_time_picker/component.rb', line 6

def range
  @range
end

#time_pickerObject (readonly)

Returns the value of attribute time_picker.



6
7
8
# File 'app/components/satis/date_time_picker/component.rb', line 6

def time_picker
  @time_picker
end

Instance Method Details

#week_startObject



43
44
45
# File 'app/components/satis/date_time_picker/component.rb', line 43

def week_start
  Date::DAYS_INTO_WEEK[Date.beginning_of_week] || 1
end