Class: Plutonium::Resource::Definition
- Inherits:
-
Definition::Base
- Object
- Definition::Base
- Plutonium::Resource::Definition
- Defined in:
- lib/plutonium/resource/definition.rb
Constant Summary collapse
- VALID_MODAL_MODES =
[:centered, :slideover, false].freeze
Constants included from Definition::Views
Definition::Views::GRID_LAYOUTS, Definition::Views::GRID_SLOTS, Definition::Views::KNOWN_VIEWS
Class Method Summary collapse
-
.configure_crud_modal_targets! ⇒ Object
Re-derives the default :new / :edit actions so their turbo_frame matches the current ‘modal_mode`.
-
.modal(mode) ⇒ Object
Sets how :new / :edit actions render.
Instance Method Summary collapse
Methods inherited from Definition::Base
#collection_class, #detail_class, #edit_page_class, #form_class, #grid_class, #index_page_class, #initialize, #interactive_action_page_class, #new_page_class, #query_form, #show_page_class
Methods included from Definition::Metadata
Methods included from Definition::Views
#default_view, #defined_grid_columns, #defined_grid_fields, #defined_grid_layout, #defined_views
Methods included from Definition::Search
Methods included from Definition::Scoping
Methods included from Definition::Sorting
Constructor Details
This class inherits a constructor from Plutonium::Definition::Base
Class Method Details
.configure_crud_modal_targets! ⇒ Object
Re-derives the default :new / :edit actions so their turbo_frame matches the current ‘modal_mode`. Called when `.modal` is set and once at Resource::Definition load (so the default :slideover state propagates to the action records). Subclasses inherit those records via DefineableProps#inherited (deep_dup); calling `.modal` on a subclass re-runs this method locally.
26 27 28 29 30 31 32 33 34 |
# File 'lib/plutonium/resource/definition.rb', line 26 def self.configure_crud_modal_targets! target = (modal_mode == false) ? nil : Plutonium::REMOTE_MODAL_FRAME [:new, :edit].each do |name| action = defined_actions[name] next unless action next if action.turbo_frame == target defined_actions[name] = action.with(turbo_frame: target) end end |
.modal(mode) ⇒ Object
Sets how :new / :edit actions render.
-
:slideover (default) — slide-in panel from the right
-
:centered — centered dialog
-
false — no modal; new/edit are full standalone pages
12 13 14 15 16 17 18 |
# File 'lib/plutonium/resource/definition.rb', line 12 def self.modal(mode) unless VALID_MODAL_MODES.include?(mode) raise ArgumentError, "modal must be one of #{VALID_MODAL_MODES.inspect}, got #{mode.inspect}" end self.modal_mode = mode configure_crud_modal_targets! end |
Instance Method Details
#modal ⇒ Object
36 37 38 |
# File 'lib/plutonium/resource/definition.rb', line 36 def modal self.class.modal_mode end |