Class: RubyCms::Admin::BaseComponent
- Inherits:
-
Object
- Object
- RubyCms::Admin::BaseComponent
- Includes:
- Phlex::Rails::Helpers::ButtonTo, Phlex::Rails::Helpers::FormAuthenticityToken, Phlex::Rails::Helpers::FormWith, Phlex::Rails::Helpers::LinkTo, Phlex::Rails::Helpers::Sanitize, Phlex::Rails::Helpers::TurboFrameTag
- Defined in:
- app/components/ruby_cms/admin/base_component.rb
Overview
Base component class for admin components Inherits from RubyUI::Base if available, otherwise Phlex::HTML
Direct Known Subclasses
AdminPage, AdminPage::AdminTableContent, AdminPageHeader, AdminResourceCard, RubyCms::Admin::BulkActionTable::BulkActionTable, RubyCms::Admin::BulkActionTable::BulkActionTableActions, RubyCms::Admin::BulkActionTable::BulkActionTableBody, RubyCms::Admin::BulkActionTable::BulkActionTableCheckboxCell, RubyCms::Admin::BulkActionTable::BulkActionTableCheckboxHead, RubyCms::Admin::BulkActionTable::BulkActionTableDeleteModal, RubyCms::Admin::BulkActionTable::BulkActionTableHeader, RubyCms::Admin::BulkActionTable::BulkActionTableHeaderBar, RubyCms::Admin::BulkActionTable::BulkActionTablePagination, RubyCms::Admin::BulkActionTable::BulkActionTableRow, RubyCms::Admin::BulkActionTable::BulkActions
Instance Method Summary collapse
-
#build_classes(*classes) ⇒ Object
Helper method to build CSS classes from hash or array.
-
#conditional_attributes(condition, attributes) ⇒ Object
Helper method to conditionally add attributes.
-
#controller ⇒ Object
Access controller if available.
-
#form_authenticity_token ⇒ Object
Get form authenticity token.
-
#helpers ⇒ Object
Access Rails helpers (works in Phlex and RubyUI contexts).
-
#merge_data_attributes(base_data, additional_data) ⇒ Object
Helper method to merge data attributes.
- #token_from_controller ⇒ Object
- #token_from_controller? ⇒ Boolean
- #token_from_helpers? ⇒ Boolean
Instance Method Details
#build_classes(*classes) ⇒ Object
Helper method to build CSS classes from hash or array
19 20 21 |
# File 'app/components/ruby_cms/admin/base_component.rb', line 19 def build_classes(*classes) classes.flatten.compact.join(" ") end |
#conditional_attributes(condition, attributes) ⇒ Object
Helper method to conditionally add attributes
29 30 31 |
# File 'app/components/ruby_cms/admin/base_component.rb', line 29 def conditional_attributes(condition, attributes) condition ? attributes : {} end |
#controller ⇒ Object
Access controller if available
69 70 71 72 73 74 75 |
# File 'app/components/ruby_cms/admin/base_component.rb', line 69 def controller @controller ||= if respond_to?(:helpers) && helpers.respond_to?(:controller) helpers.controller elsif defined?(ActionController::Base) Thread.current[:phlex_controller] end end |
#form_authenticity_token ⇒ Object
Get form authenticity token
48 49 50 51 52 53 54 |
# File 'app/components/ruby_cms/admin/base_component.rb', line 48 def form_authenticity_token return helpers.form_authenticity_token if token_from_helpers? return super if respond_to?(:form_authenticity_token, true) return token_from_controller if token_from_controller? "" end |
#helpers ⇒ Object
Access Rails helpers (works in Phlex and RubyUI contexts)
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'app/components/ruby_cms/admin/base_component.rb', line 34 def helpers @helpers ||= if respond_to?(:view_context) view_context elsif defined?(Phlex::Rails::ViewContext) Phlex::Rails::ViewContext.current elsif defined?(Phlex::HTML) && respond_to?(:call) Thread.current[:phlex_view_context] || raise("View context not available") else raise("View context not available. Ensure component is rendered from a Rails view.") end end |
#merge_data_attributes(base_data, additional_data) ⇒ Object
Helper method to merge data attributes
24 25 26 |
# File 'app/components/ruby_cms/admin/base_component.rb', line 24 def merge_data_attributes(base_data, additional_data) base_data.merge(additional_data || {}) end |
#token_from_controller ⇒ Object
64 65 66 |
# File 'app/components/ruby_cms/admin/base_component.rb', line 64 def token_from_controller controller&.form_authenticity_token || "" end |
#token_from_controller? ⇒ Boolean
60 61 62 |
# File 'app/components/ruby_cms/admin/base_component.rb', line 60 def token_from_controller? defined?(ActionController::Base) && respond_to?(:controller) end |
#token_from_helpers? ⇒ Boolean
56 57 58 |
# File 'app/components/ruby_cms/admin/base_component.rb', line 56 def token_from_helpers? respond_to?(:helpers) && helpers.respond_to?(:form_authenticity_token) end |