Sha256: 9a51f381abf36c50003c054ae0a36ef3809ba12c20e466ddc450c5b2d13cfc85

Contents?: true

Size: 1.56 KB

Versions: 43

Compression:

Stored size: 1.56 KB

Contents

require 'glimmer/swt/widget_proxy'

module Glimmer
  module SWT
    class RadioProxy < WidgetProxy
      # TODO add a create method that ensures passing :radio style in if not there
      STYLE = <<~CSS
        .radio {
          display: inline;
        }
        .radio-label {
          display: inline;
        }
        .radio-container {
        }
      CSS
      
      def text
        label_dom_element.html
      end
      
      def text=(value)
        label_dom_element.html(value)
      end
      
      def selection
        dom_element.prop('checked')
      end
      
      def selection=(value)
        dom_element.prop('checked', value)
      end
      
      def element
        'input'
      end
      
      def label_id
        "#{id}-label"
      end
      
      def label_name
        "#{name}-label"
      end
      
      def label_path
        "#{parent_path} ##{label_id}"
      end
      
      def label_dom_element
        Document.find(label_path)
      end
      
      def container_id
        "#{id}-container"
      end

      def container_name
        "#{name}-container"
      end

      def observation_request_to_event_mapping
        {
          'on_widget_selected' => {
            event: 'change'
          },
        }
      end
      
      def dom
        @dom ||= html {
          span(id: container_id, class: container_name) {
            input(type: 'radio', id: id, class: name, name: parent&.id)
            label(id: label_id, class: label_name, for: id) {
              text
            }
          }
        }.to_s
      end
    end
  end
end

Version data entries

43 entries across 43 versions & 1 rubygems

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