Sha256: 7cbb0a2dfe475b10c79d5bff630d2cfc17c844ae8d5abde6b2a0e1527ea711c6

Contents?: true

Size: 1.71 KB

Versions: 38

Compression:

Stored size: 1.71 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::Forms::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

38 entries across 38 versions & 1 rubygems

Version Path
ui_bibz-2.4.0 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.15 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.14 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.13 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.12 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.11 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.10 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.9 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.8 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.7 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.6 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.5 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.4 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.3 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.2 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.1 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.3.0 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.2.2 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.2.1 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb
ui_bibz-2.2.0 lib/ui_bibz/ui/ux/tables/extensions/actionable.rb