Class: Decidim::Toggle::SettingsTabs
- Inherits:
-
Object
- Object
- Decidim::Toggle::SettingsTabs
- Defined in:
- lib/decidim/toggle/settings_tabs.rb
Overview
Builds a list of settings tabs from registered configurations (same pattern as Decidim::Menu).
Instance Method Summary collapse
-
#add_tab(identifier, label, form:, **options) ⇒ Object
Tab with form + command: common layout renders form.all_fields and submits to generic controller.
- #build_for(context, **options) ⇒ Object
-
#initialize(name) ⇒ SettingsTabs
constructor
A new instance of SettingsTabs.
- #items ⇒ Object
- #remove_tab(identifier) ⇒ Object
Constructor Details
#initialize(name) ⇒ SettingsTabs
Returns a new instance of SettingsTabs.
9 10 11 12 13 |
# File 'lib/decidim/toggle/settings_tabs.rb', line 9 def initialize(name) @name = name @items = [] @removed_items = [] end |
Instance Method Details
#add_tab(identifier, label, form:, **options) ⇒ Object
Tab with form + command: common layout renders form.all_fields and submits to generic controller.
31 32 33 34 35 36 37 38 |
# File 'lib/decidim/toggle/settings_tabs.rb', line 31 def add_tab(identifier, label, form:, **) command = .fetch(:command) = { position: (1 + @items.length) }.merge() module_name = [:module_name] registry.register_form_tab(identifier, form, command, module_name:) @items << SettingsTabItem.new(identifier, label, .merge(form_class: form, command_class: command)) end |
#build_for(context, **options) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/decidim/toggle/settings_tabs.rb', line 15 def build_for(context, **) raise "Settings tabs #{@name} is not registered" if registry.blank? registry.configurations.each do |configuration| context.instance_exec(self, **, &configuration) end registry.mark_configurations_applied! end |
#items ⇒ Object
44 45 46 47 |
# File 'lib/decidim/toggle/settings_tabs.rb', line 44 def items @items.reject! { |item| @removed_items.include?(item.identifier) } @items.select(&:visible?).sort_by(&:position) end |
#remove_tab(identifier) ⇒ Object
40 41 42 |
# File 'lib/decidim/toggle/settings_tabs.rb', line 40 def remove_tab(identifier) @removed_items << identifier end |