Class: Inkpen::StickyToolbar
- Inherits:
-
Object
- Object
- Inkpen::StickyToolbar
- Defined in:
- lib/inkpen/sticky_toolbar.rb
Overview
PORO representing sticky toolbar configuration.
The StickyToolbar provides block and media insertion controls that remain fixed on screen. It’s separate from the text formatting toolbar and focused on inserting new content blocks.
Supports horizontal (bottom) and vertical (left/right) layouts.
Constant Summary collapse
- POSITIONS =
Valid toolbar positions.
%i[bottom left right].freeze
- BLOCK_BUTTONS =
Block insertion buttons.
%i[table code_block blockquote horizontal_rule task_list].freeze
- MEDIA_BUTTONS =
Media insertion buttons.
%i[image youtube embed].freeze
- WIDGET_BUTTONS =
Widget insertion buttons (opens modal picker).
%i[widget].freeze
- PRESET_BLOCKS =
Preset with block buttons only.
BLOCK_BUTTONS.freeze
- PRESET_MEDIA =
Preset with media buttons only.
MEDIA_BUTTONS.freeze
- PRESET_FULL =
Full preset with all buttons.
(BLOCK_BUTTONS + MEDIA_BUTTONS + WIDGET_BUTTONS).freeze
Instance Attribute Summary collapse
-
#buttons ⇒ Array<Symbol>
readonly
List of toolbar buttons.
-
#position ⇒ Symbol
readonly
Toolbar position (:bottom, :left, :right).
- #widget_types ⇒ Object readonly
Instance Method Summary collapse
-
#data_attributes ⇒ Hash
Generate data attributes for Stimulus controller.
-
#enabled? ⇒ Boolean
Check if the sticky toolbar is enabled.
-
#horizontal? ⇒ Boolean
Check if toolbar uses horizontal layout (bottom).
-
#initialize(position: :bottom, buttons: nil, widget_types: nil, enabled: true) ⇒ StickyToolbar
constructor
Initialize a new sticky toolbar configuration.
-
#vertical? ⇒ Boolean
Check if toolbar uses vertical layout (left or right).
Constructor Details
#initialize(position: :bottom, buttons: nil, widget_types: nil, enabled: true) ⇒ StickyToolbar
Initialize a new sticky toolbar configuration.
87 88 89 90 91 92 |
# File 'lib/inkpen/sticky_toolbar.rb', line 87 def initialize(position: :bottom, buttons: nil, widget_types: nil, enabled: true) @position = validate_position(position) @buttons = || PRESET_FULL @widget_types = || @enabled = enabled end |
Instance Attribute Details
#buttons ⇒ Array<Symbol> (readonly)
Returns list of toolbar buttons.
42 |
# File 'lib/inkpen/sticky_toolbar.rb', line 42 attr_reader :position, :buttons, :widget_types |
#position ⇒ Symbol (readonly)
Returns toolbar position (:bottom, :left, :right).
42 43 44 |
# File 'lib/inkpen/sticky_toolbar.rb', line 42 def position @position end |
#widget_types ⇒ Object (readonly)
42 |
# File 'lib/inkpen/sticky_toolbar.rb', line 42 attr_reader :position, :buttons, :widget_types |
Instance Method Details
#data_attributes ⇒ Hash
Generate data attributes for Stimulus controller.
126 127 128 129 130 131 132 133 |
# File 'lib/inkpen/sticky_toolbar.rb', line 126 def data_attributes { "inkpen--sticky-toolbar-position-value" => position.to_s, "inkpen--sticky-toolbar-buttons-value" => .to_json, "inkpen--sticky-toolbar-widget-types-value" => .to_json, "inkpen--sticky-toolbar-vertical-value" => vertical?.to_s } end |
#enabled? ⇒ Boolean
Check if the sticky toolbar is enabled.
99 100 101 |
# File 'lib/inkpen/sticky_toolbar.rb', line 99 def enabled? @enabled end |
#horizontal? ⇒ Boolean
Check if toolbar uses horizontal layout (bottom).
117 118 119 |
# File 'lib/inkpen/sticky_toolbar.rb', line 117 def horizontal? position == :bottom end |
#vertical? ⇒ Boolean
Check if toolbar uses vertical layout (left or right).
108 109 110 |
# File 'lib/inkpen/sticky_toolbar.rb', line 108 def vertical? %i[left right].include?(position) end |