Sha256: 05b07ad7a3083f2f205281e3e3da68470693f8f3bc07bf1e241a6d01d54990d0

Contents?: true

Size: 1.71 KB

Versions: 2

Compression:

Stored size: 1.71 KB

Contents

module Weaver
  # Modal dialog feature
  class ModalDialog
    def initialize(page, anchors, id, &block)
      @page = page
      @anchors = anchors
      @id = id || @page.create_anchor('modal')

      @header_content = Elements.new(@page, @anchors)
      @body_content = Elements.new(@page, @anchors)
      @footer_content = Elements.new(@page, @anchors)

      instance_eval(&block) if block
    end

    attr_reader :id

    def header(&block)
      @header_content.instance_eval(&block)
    end

    def body(&block)
      @body_content.instance_eval(&block)
    end

    def footer(&block)
      @footer_content.instance_eval(&block)
    end

    def generate
      elem = Elements.new(@page, @anchors)

      id = @id
      header_content = @header_content
      body_content = @body_content
      footer_content = @footer_content

      elem.instance_eval do
        div class: 'modal fade', id: id, tabindex: -1, role: 'dialog' do
          div class: 'modal-dialog', role: 'document' do
            div class: 'modal-content' do
              div class: 'modal-header' do
                button '×', type: 'button', class: 'close', "data-dismiss": 'modal', "aria-label": 'Close'
                text header_content.generate
              end
              div class: 'modal-body' do
                text body_content.generate
              end
              div class: 'modal-footer' do
                text footer_content.generate
              end
            end
          end
        end
      end

      elem.generate
    end
  end

  # add modal dialog to elements
  class Elements
    def modal(id = nil, &block)
      mm = ModalDialog.new(@page, @anchors, id, &block)
      @inner_content << mm.generate
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
weaver-0.8.2 lib/weaver/element_types/modal_dialog.rb
weaver-0.8.1 lib/weaver/element_types/modal_dialog.rb