Sha256: 1a8b4b45105a6f8e25b6e1b9a8dd2536c74942a708030bc5e81159fc40d3b307

Contents?: true

Size: 1.16 KB

Versions: 3

Compression:

Stored size: 1.16 KB

Contents

require 'glimmer/opal/element_proxy'

module Glimmer
  module Opal
    class InputProxy < ElementProxy
      attr_reader :text
      
      def text=(value)
        @text = value
        redraw
      end

      def observation_request_to_event_mapping
        {
          'on_widget_selected' => {
            event: 'click'
          }, 
          'on_modify_text' => {
            event: 'keyup',
            event_handler: -> (event_listener) {
              -> (event) {
                if args.last[:type] == 'text'
                  @text = event.target.value
                  event_listener.call(event)              
                end
              }
            }
          }
        }
      end
      
      def dom
        input_text = @text
        input_id = id
        input_style = css
        input_args = @args.last
        input_disabled = @enabled ? {} : {'disabled': 'disabled'}
        input_args = input_args.merge(type: 'password') if has_style?(:password)        
        @dom ||= DOM {
          input input_args.merge(id: input_id, style: input_style, value: input_text, style: 'min-width: 27px;').merge(input_disabled)
        }
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
glimmer-dsl-opal-0.0.9 lib/glimmer/opal/input_proxy.rb
glimmer-dsl-opal-0.0.8 lib/glimmer/opal/input_proxy.rb
glimmer-dsl-opal-0.0.7 lib/glimmer/opal/input_proxy.rb