Sha256: 6addd2c54174cee942fa40d111539a085cab269830ea69b234e76b1bdbddff76

Contents?: true

Size: 1.56 KB

Versions: 8

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

8 entries across 8 versions & 1 rubygems

Version Path
glimmer-dsl-opal-0.7.5 lib/glimmer/swt/radio_proxy.rb
glimmer-dsl-opal-0.7.4 lib/glimmer/swt/radio_proxy.rb
glimmer-dsl-opal-0.7.3 lib/glimmer/swt/radio_proxy.rb
glimmer-dsl-opal-0.7.2 lib/glimmer/swt/radio_proxy.rb
glimmer-dsl-opal-0.7.1 lib/glimmer/swt/radio_proxy.rb
glimmer-dsl-opal-0.7.0 lib/glimmer/swt/radio_proxy.rb
glimmer-dsl-opal-0.6.1 lib/glimmer/swt/radio_proxy.rb
glimmer-dsl-opal-0.6.0 lib/glimmer/swt/radio_proxy.rb