Class: PhlexKit::AspectRatio

Inherits:
BaseComponent show all
Defined in:
app/components/phlex_kit/aspect_ratio/aspect_ratio.rb

Overview

Constrains content (typically an ) to a fixed aspect ratio, ported from ruby_ui's RubyUI::AspectRatio. aspect_ratio: is a "w/h" string (e.g. "16/9", "1/1"); the classic padding-bottom box keeps the ratio. Tailwind → vanilla .pk-aspect-ratio* (aspect_ratio.css).

Instance Method Summary collapse

Methods inherited from BaseComponent

#on

Constructor Details

#initialize(aspect_ratio: "16/9", **attrs) ⇒ AspectRatio

Returns a new instance of AspectRatio.



7
8
9
10
11
12
13
# File 'app/components/phlex_kit/aspect_ratio/aspect_ratio.rb', line 7

def initialize(aspect_ratio: "16/9", **attrs)
  unless aspect_ratio.is_a?(String) && aspect_ratio.include?("/")
    raise ArgumentError, %(aspect_ratio must be a "w/h" string (e.g. "16/9"))
  end
  @aspect_ratio = aspect_ratio
  @attrs = attrs
end

Instance Method Details

#view_template(&block) ⇒ Object



15
16
17
18
19
# File 'app/components/phlex_kit/aspect_ratio/aspect_ratio.rb', line 15

def view_template(&block)
  div(class: "pk-aspect-ratio", style: "padding-bottom: #{padding_bottom}%") do
    div(**mix({ class: "pk-aspect-ratio-inner" }, @attrs), &block)
  end
end