Sha256: 8084f4cd0370a355c4c512da6b1cc3e00341d5bcc5133209eddb299fb4928f58

Contents?: true

Size: 1.76 KB

Versions: 50

Compression:

Stored size: 1.76 KB

Contents

require 'glimmer/swt/widget_proxy'

module Glimmer
  module SWT
    class CheckboxProxy < WidgetProxy
      # TODO add a create method that ensures passing :check style in if not there
      STYLE=<<~CSS
        .checkbox {
          display: inline;
        }
        .checkbox-label {
          display: inline;
        }
      CSS
      # TODO consider reuse of logic in Radioproxy
      attr_reader :text
      
      def text=(value)
        @text = value
        dom_element.val(@text)
        label_dom_element.html(@text)
      end

      def selection
        dom_element.prop('checked')
      end
      
      def selection=(value)
        @selection = value
        dom_element.prop('checked', @selection)
      end
      
      def element
        'input'
      end

      def observation_request_to_event_mapping
        {
          'on_widget_selected' => {
            event: 'change'
          },
        }
      end
      
      def label_id
        "#{id}-label"
      end
      
      def label_class
        "#{name}-label"
      end
      
      def label_dom_element
        Element.find("##{label_id}")
      end
      
      def dom
        check_text = @text
        check_id = id
        check_style = css
        check_class = name
        check_selection = @selection
        options = {type: 'checkbox', id: check_id, name: parent.id, style: check_style, class: check_class, value: check_text, style: 'min-width: 27px;'}
        options[checked: 'checked'] if check_selection
        @dom ||= html {
          span {
            input(options) {
            }
            label(id: label_id, class: label_class, for: check_id) {
              check_text
            }
          }
        }.to_s
      end
      
    end
    
    CheckProxy = CheckboxProxy # alias
  end
  
end

Version data entries

50 entries across 50 versions & 1 rubygems

Version Path
glimmer-dsl-opal-0.28.3 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.28.2 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.28.1 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.28.0 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.27.0 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.26.3 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.26.2 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.26.1 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.26.0 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.25.4 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.25.3 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.25.2 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.25.1 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.25.0 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.24.0 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.23.0 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.22.1 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.22.0 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.21.0 lib/glimmer/swt/checkbox_proxy.rb
glimmer-dsl-opal-0.20.1 lib/glimmer/swt/checkbox_proxy.rb