Sha256: d9698f74e13b4aa20a39e3640b1191fb2766b627b295cf52ae7c2761677932f2

Contents?: true

Size: 1.7 KB

Versions: 13

Compression:

Stored size: 1.7 KB

Contents

module UiBibz::Ui::Ux::Tables
  class Actionable < UiBibz::Ui::Base

    def initialize store, options, actions = nil
      @store   = store
      @options = options
      @actions = actions
    end

    def actionable?
      @options[:actionable].nil? ? true : @options[:actionable]
    end

    def header ths
      ths << content_tag(:th, '', class: 'action') if actionable?
      ths
    end

    def body record, tds
      tds << td_action(record) if actionable?
      tds
    end

  private

    def default_actions?
      @options[:default_actions].nil? ? true : @options[:default_actions]
    end

    def dropdown_action record
      unless @actions.nil?
        @actions.format_action.call(record) unless @actions.format_action.nil?
        unless (default_actions? != true && @actions.raw_list.empty?)
          UiBibz::Ui::Core::Dropdowns::Dropdown.new(dropdown_action_name, { position: :right, size: :sm, glyph: actions_glyph }, { class: 'dropdown-action' }).tap do |d|
            actions_links(record).each do |l|
              d.html l.to_s.html_safe
            end
            # Maybe remove this line
            @actions.reset unless @actions.format_action.nil?
          end.render
        end
      end
    end

    def actions_glyph
      { name: 'ellipsis-v', type: 'fw' }
    end

    def dropdown_action_name
      defaults = ["ui_bibz.table.actions.defaults.title", 'Actions']
      UiBibz::Utils::Internationalization.new("ui_bibz.table.actions.#{ @store.model.to_s.underscore }.title", default: defaults).translate
    end

    def actions_links record
      @actions.list.compact.map{ |l| inject_url(l, record) }
    end

    def td_action record
      content_tag :td, dropdown_action(record)
    end

  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
ui_bibz-2.0.0.beta2.5 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.beta2.4 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.beta2.3 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.beta2.2 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.beta2.1 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.beta2 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.alpha32 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.alpha31 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.alpha30 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.alpha29 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.alpha28 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.alpha27 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.0.0.alpha26 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb