module AbstractNumeric
class DateInput < React::Component::Base
param :on_change, type: Proc param :value param :format param :valid param :dirty include ClassesInput before_mount do state.value! '' state.year! '' end def date(value, year) begin # opal: undefined method `strptime' for Time Time.strptime(value+year, params.format+'%Y'){|y| y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y} rescue nil end end def render if params.value.nil? value = state.value year = state.year else value = params.value.format params.format year = params.value.year.to_s end span do input(class: valid_class + ' ' + dirty_class, value: value).on(:change) do |event| state.value! event.target.value params.on_change date(event.target.value, year) end input(value: year).on(:change) do |event| state.year! event.target.value params.on_change date(value, event.target.value) end end end
end
Public Instance Methods
format(val)
click to toggle source
# File lib/bull/ui_core.rb, line 211 def format val val.to_s end
render()
click to toggle source
# File lib/bull/ui_core.rb, line 215 def render if parse(state.value) != params.value value = params.value.to_s else value = state.value end span do input(placeholder: params.placeholder, class: valid_class + ' ' + dirty_class, type: :text, value: format(value)){}.on(:change) do |event| state.value! event.target.value if event.target.value == '' params.on_change nil else update_state event end end.on(:keyDown) do |event| if event.key_code == 13 params.on_enter.call event.target.value end end end end