Module: AbstractNumeric
- Includes:
- ClassesInput
- Included in:
- FloatCommaInput, FloatInput, IntegerCommaInput, IntegerInput
- Defined in:
- lib/bull/ui_core.rb
Overview
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
Instance Method Summary collapse
Methods included from ClassesInput
Instance Method Details
#format(val) ⇒ Object
211 212 213 |
# File 'lib/bull/ui_core.rb', line 211 def format val val.to_s end |
#render ⇒ Object
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# 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 |