Class: Plutonium::Action::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/plutonium/action/base.rb

Overview

Base class for all actions in the Plutonium framework.

Direct Known Subclasses

Interactive, Simple

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, **options) ⇒ Base

Returns a new instance of Base.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/plutonium/action/base.rb', line 11

def initialize(name, **options)
  @name = name.to_sym
  @label = options[:label] || @name.to_s.titleize
  @description = options[:description]
  @icon = options[:icon] || Phlex::TablerIcons::ChevronRight
  @color = options[:color]
  @confirmation = options[:confirmation]
  @route_options = build_route_options(options[:route_options])
  @turbo = options[:turbo]
  @turbo_frame = options[:turbo_frame]
  @return_to = options[:return_to]
  @bulk_action = options[:bulk_action] || false
  @collection_record_action = options[:collection_record_action] || false
  @record_action = options[:record_action] || false
  @resource_action = options[:resource_action] || false
  @category = ActiveSupport::StringInquirer.new((options[:category] || :secondary).to_s)
  @position = options[:position] || 50
  @modal_mode = options[:modal]
  @modal_size = options[:size]
  validate_modal_mode!
  validate_modal_size!

  freeze
end

Instance Attribute Details

#categoryObject (readonly)

Returns the value of attribute category.



9
10
11
# File 'lib/plutonium/action/base.rb', line 9

def category
  @category
end

#colorObject (readonly)

Returns the value of attribute color.



9
10
11
# File 'lib/plutonium/action/base.rb', line 9

def color
  @color
end

#confirmationObject (readonly)

Returns the value of attribute confirmation.



9
10
11
# File 'lib/plutonium/action/base.rb', line 9

def confirmation
  @confirmation
end

#descriptionObject (readonly)

Returns the value of attribute description.



9
10
11
# File 'lib/plutonium/action/base.rb', line 9

def description
  @description
end

#iconObject (readonly)

Returns the value of attribute icon.



9
10
11
# File 'lib/plutonium/action/base.rb', line 9

def icon
  @icon
end

#labelObject (readonly)

Returns the value of attribute label.



9
10
11
# File 'lib/plutonium/action/base.rb', line 9

def label
  @label
end

#nameObject (readonly)

Returns the value of attribute name.



9
10
11
# File 'lib/plutonium/action/base.rb', line 9

def name
  @name
end

#positionObject (readonly)

Returns the value of attribute position.



9
10
11
# File 'lib/plutonium/action/base.rb', line 9

def position
  @position
end

#return_toObject (readonly)

Returns the value of attribute return_to.



9
10
11
# File 'lib/plutonium/action/base.rb', line 9

def return_to
  @return_to
end

#route_optionsObject (readonly)

Returns the value of attribute route_options.



9
10
11
# File 'lib/plutonium/action/base.rb', line 9

def route_options
  @route_options
end

#turboObject (readonly)

Returns the value of attribute turbo.



9
10
11
# File 'lib/plutonium/action/base.rb', line 9

def turbo
  @turbo
end

Instance Method Details

#bulk_action?Boolean

Returns:

  • (Boolean)


56
# File 'lib/plutonium/action/base.rb', line 56

def bulk_action? = @bulk_action

#collection_record_action?Boolean

Returns:

  • (Boolean)


57
# File 'lib/plutonium/action/base.rb', line 57

def collection_record_action? = @collection_record_action

Resolves to the definition’s ‘modal_mode` when unset on the action.



37
38
39
40
# File 'lib/plutonium/action/base.rb', line 37

def modal_mode(definition = nil)
  return @modal_mode if @modal_mode || definition.nil?
  definition.modal_mode
end

Resolves to the definition’s ‘modal_size` when unset on the action.



43
44
45
46
# File 'lib/plutonium/action/base.rb', line 43

def modal_size(definition = nil)
  return @modal_size if @modal_size || definition.nil?
  definition.modal_size
end

#permitted_by?(policy) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/plutonium/action/base.rb', line 61

def permitted_by?(policy)
  policy.allowed_to?(:"#{name}?")
end

#record_action?Boolean

Returns:

  • (Boolean)


58
# File 'lib/plutonium/action/base.rb', line 58

def record_action? = @record_action

#resource_action?Boolean

Returns:

  • (Boolean)


59
# File 'lib/plutonium/action/base.rb', line 59

def resource_action? = @resource_action

#turbo_frame(definition = nil) ⇒ Object

Downgrades the remote-modal frame to nil when the definition has ‘modal false`, so the link navigates as a full page instead of targeting a frame that won’t exist. Other frames pass through.



51
52
53
54
# File 'lib/plutonium/action/base.rb', line 51

def turbo_frame(definition = nil)
  return nil if definition && targets_remote_modal? && definition.modal_mode == false
  @turbo_frame
end

#with(**overrides) ⇒ Object

Returns a new Action with the given options merged over this one.



66
67
68
# File 'lib/plutonium/action/base.rb', line 66

def with(**overrides)
  self.class.new(name, **to_options.merge(overrides))
end