Class: Plutonium::Action::Base
- Inherits:
-
Object
- Object
- Plutonium::Action::Base
- Defined in:
- lib/plutonium/action/base.rb
Overview
Base class for all actions in the Plutonium framework.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#category ⇒ Object
readonly
Returns the value of attribute category.
-
#color ⇒ Object
readonly
Returns the value of attribute color.
-
#confirmation ⇒ Object
readonly
Returns the value of attribute confirmation.
-
#description ⇒ Object
readonly
Returns the value of attribute description.
-
#icon ⇒ Object
readonly
Returns the value of attribute icon.
-
#label ⇒ Object
readonly
Returns the value of attribute label.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#position ⇒ Object
readonly
Returns the value of attribute position.
-
#return_to ⇒ Object
readonly
Returns the value of attribute return_to.
-
#route_options ⇒ Object
readonly
Returns the value of attribute route_options.
-
#turbo ⇒ Object
readonly
Returns the value of attribute turbo.
Instance Method Summary collapse
- #bulk_action? ⇒ Boolean
- #collection_record_action? ⇒ Boolean
-
#initialize(name, **options) ⇒ Base
constructor
A new instance of Base.
-
#modal_mode(definition = nil) ⇒ Object
Resolves to the definition’s ‘modal_mode` when unset on the action.
-
#modal_size(definition = nil) ⇒ Object
Resolves to the definition’s ‘modal_size` when unset on the action.
- #permitted_by?(policy) ⇒ Boolean
- #record_action? ⇒ Boolean
- #resource_action? ⇒ Boolean
-
#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.
-
#with(**overrides) ⇒ Object
Returns a new Action with the given options merged over this one.
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, **) @name = name.to_sym @label = [:label] || @name.to_s.titleize @description = [:description] @icon = [:icon] || Phlex::TablerIcons::ChevronRight @color = [:color] @confirmation = [:confirmation] @route_options = ([:route_options]) @turbo = [:turbo] @turbo_frame = [:turbo_frame] @return_to = [:return_to] @bulk_action = [:bulk_action] || false @collection_record_action = [:collection_record_action] || false @record_action = [:record_action] || false @resource_action = [:resource_action] || false @category = ActiveSupport::StringInquirer.new(([:category] || :secondary).to_s) @position = [:position] || 50 @modal_mode = [:modal] @modal_size = [:size] validate_modal_mode! validate_modal_size! freeze end |
Instance Attribute Details
#category ⇒ Object (readonly)
Returns the value of attribute category.
9 10 11 |
# File 'lib/plutonium/action/base.rb', line 9 def category @category end |
#color ⇒ Object (readonly)
Returns the value of attribute color.
9 10 11 |
# File 'lib/plutonium/action/base.rb', line 9 def color @color end |
#confirmation ⇒ Object (readonly)
Returns the value of attribute confirmation.
9 10 11 |
# File 'lib/plutonium/action/base.rb', line 9 def confirmation @confirmation end |
#description ⇒ Object (readonly)
Returns the value of attribute description.
9 10 11 |
# File 'lib/plutonium/action/base.rb', line 9 def description @description end |
#icon ⇒ Object (readonly)
Returns the value of attribute icon.
9 10 11 |
# File 'lib/plutonium/action/base.rb', line 9 def icon @icon end |
#label ⇒ Object (readonly)
Returns the value of attribute label.
9 10 11 |
# File 'lib/plutonium/action/base.rb', line 9 def label @label end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
9 10 11 |
# File 'lib/plutonium/action/base.rb', line 9 def name @name end |
#position ⇒ Object (readonly)
Returns the value of attribute position.
9 10 11 |
# File 'lib/plutonium/action/base.rb', line 9 def position @position end |
#return_to ⇒ Object (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_options ⇒ Object (readonly)
Returns the value of attribute route_options.
9 10 11 |
# File 'lib/plutonium/action/base.rb', line 9 def @route_options end |
#turbo ⇒ Object (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
56 |
# File 'lib/plutonium/action/base.rb', line 56 def bulk_action? = @bulk_action |
#collection_record_action? ⇒ Boolean
57 |
# File 'lib/plutonium/action/base.rb', line 57 def collection_record_action? = @collection_record_action |
#modal_mode(definition = nil) ⇒ Object
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 |
#modal_size(definition = nil) ⇒ Object
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
61 62 63 |
# File 'lib/plutonium/action/base.rb', line 61 def permitted_by?(policy) policy.allowed_to?(:"#{name}?") end |
#record_action? ⇒ Boolean
58 |
# File 'lib/plutonium/action/base.rb', line 58 def record_action? = @record_action |
#resource_action? ⇒ 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, **.merge(overrides)) end |