Class: LcpRuby::Metadata::ResponsivePolicy
- Inherits:
-
Object
- Object
- LcpRuby::Metadata::ResponsivePolicy
- Defined in:
- lib/lcp_ruby/metadata/responsive_policy.rb
Overview
Resolved responsive-menu policy, exposed via ‘MenuDefinition#responsive`. Merges configurator-supplied `responsive:` YAML over framework defaults so consumers always see a fully-populated hash — no per-key nil-guard sprinkling at call sites.
Constant Summary collapse
- TOP_MENU_DEFAULTS =
{ "mode" => "overflow_more", "breakpoint" => 768, "more" => { "label_key" => "lcp_ruby.nav.more", "icon" => "more-horizontal" } }.freeze
- SIDEBAR_MENU_DEFAULTS =
{ "above_breakpoint" => "rail", "below_breakpoint" => "off_canvas", "breakpoint" => 1024, "user_toggle" => true, "persist" => "cookie", "initial" => "expanded", "auto_inject_toggle" => true }.freeze
Instance Attribute Summary collapse
-
#raw ⇒ Object
readonly
Returns the value of attribute raw.
-
#sidebar_menu ⇒ Object
readonly
Returns the value of attribute sidebar_menu.
-
#top_menu ⇒ Object
readonly
Returns the value of attribute top_menu.
Instance Method Summary collapse
-
#configured? ⇒ Boolean
True when the configurator authored at least some responsive: block; false when defaults are entirely synthesized.
-
#initialize(raw = nil) ⇒ ResponsivePolicy
constructor
A new instance of ResponsivePolicy.
- #sidebar_above_breakpoint ⇒ Object
- #sidebar_auto_inject_toggle? ⇒ Boolean
- #sidebar_below_breakpoint ⇒ Object
- #sidebar_breakpoint ⇒ Object
- #sidebar_initial ⇒ Object
- #sidebar_persist ⇒ Object
- #sidebar_user_toggle? ⇒ Boolean
- #top_menu_breakpoint ⇒ Object
- #top_menu_mode ⇒ Object
- #top_menu_more_icon ⇒ Object
- #top_menu_more_label_key ⇒ Object
Constructor Details
#initialize(raw = nil) ⇒ ResponsivePolicy
Returns a new instance of ResponsivePolicy.
30 31 32 33 34 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 30 def initialize(raw = nil) @raw = normalize(raw) @top_menu = TOP_MENU_DEFAULTS.deep_merge(@raw["top_menu"] || {}).freeze @sidebar_menu = SIDEBAR_MENU_DEFAULTS.merge(@raw["sidebar_menu"] || {}).freeze end |
Instance Attribute Details
#raw ⇒ Object (readonly)
Returns the value of attribute raw.
28 29 30 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 28 def raw @raw end |
#sidebar_menu ⇒ Object (readonly)
Returns the value of attribute sidebar_menu.
28 29 30 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 28 def @sidebar_menu end |
#top_menu ⇒ Object (readonly)
Returns the value of attribute top_menu.
28 29 30 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 28 def @top_menu end |
Instance Method Details
#configured? ⇒ Boolean
True when the configurator authored at least some responsive: block; false when defaults are entirely synthesized. Used by the validator to gate “configured key but mode doesn’t use it” warnings.
83 84 85 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 83 def configured? !@raw.empty? end |
#sidebar_above_breakpoint ⇒ Object
52 53 54 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 52 def @sidebar_menu["above_breakpoint"] end |
#sidebar_auto_inject_toggle? ⇒ Boolean
76 77 78 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 76 def @sidebar_menu["auto_inject_toggle"] end |
#sidebar_below_breakpoint ⇒ Object
56 57 58 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 56 def @sidebar_menu["below_breakpoint"] end |
#sidebar_breakpoint ⇒ Object
60 61 62 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 60 def @sidebar_menu["breakpoint"] end |
#sidebar_initial ⇒ Object
72 73 74 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 72 def @sidebar_menu["initial"] end |
#sidebar_persist ⇒ Object
68 69 70 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 68 def @sidebar_menu["persist"] end |
#sidebar_user_toggle? ⇒ Boolean
64 65 66 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 64 def @sidebar_menu["user_toggle"] end |
#top_menu_breakpoint ⇒ Object
40 41 42 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 40 def @top_menu["breakpoint"] end |
#top_menu_mode ⇒ Object
36 37 38 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 36 def @top_menu["mode"] end |
#top_menu_more_icon ⇒ Object
48 49 50 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 48 def @top_menu.dig("more", "icon") end |
#top_menu_more_label_key ⇒ Object
44 45 46 |
# File 'lib/lcp_ruby/metadata/responsive_policy.rb', line 44 def @top_menu.dig("more", "label_key") end |