Class: PhlexKit::Spinner

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

Overview

Loading spinner, ported from shadcn/ui's Spinner (a spinning loader icon; not in ruby_ui). Sizes via SIZES.fetch. .pk-spinner (spinner.css).

Constant Summary collapse

SIZES =
{ sm: "sm", md: nil, lg: "lg" }.freeze

Instance Method Summary collapse

Methods inherited from BaseComponent

#on

Constructor Details

#initialize(size: :md, **attrs) ⇒ Spinner

Returns a new instance of Spinner.



7
8
9
10
# File 'app/components/phlex_kit/spinner/spinner.rb', line 7

def initialize(size: :md, **attrs)
  @size = size.to_sym
  @attrs = attrs
end

Instance Method Details

#view_templateObject



12
13
14
15
16
17
18
19
20
# File 'app/components/phlex_kit/spinner/spinner.rb', line 12

def view_template
  # A visible loader, not decoration: role=status + label, aria-hidden off.
  render Icon.new(:loader, size: nil, **mix({
    class: [ "pk-spinner", fetch_option(SIZES, @size, :size) ].compact.join(" "),
    role: "status",
    aria: { label: "Loading" },
    "aria-hidden": false
  }, @attrs))
end