lib/formtastic/inputs/time_select_input.rb
# frozen_string_literal: true
module Formtastic
module Inputs
# Outputs a series of select boxes for the fragments that make up a time (hour, minute, second).
# Unless `:ignore_date` is true, it will render hidden inputs for the year, month and day as
# well, defaulting to `Time.current` if the form object doesn't have a value, much like Rails'
# own `time_select`.
#
# @see Formtastic::Inputs::Base::Timeish Timeish module for documentation of date, time and datetime input options.
class TimeSelectInput
include Base
include Base::Timeish
# we don't want year / month / day fragments if :ignore_date => true
def fragments
time_fragments
end
def value_or_default_value
value ? value : Time.current
end
def fragment_value(fragment)
value_or_default_value.send(fragment)
end
def hidden_fragments
if !options[:ignore_date]
date_fragments.map do |fragment|
template.hidden_field_tag(hidden_field_name(fragment), fragment_value(fragment), :id => fragment_id(fragment), :disabled => input_html_options[:disabled] )
end.join.html_safe
else
super
end
end
end
end
end