Skip to content

Commit

Permalink
Add Label component
Browse files Browse the repository at this point in the history
  • Loading branch information
davidalejandroaguilar committed Sep 26, 2024
1 parent 1f28ef2 commit 9f0bb56
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
23 changes: 23 additions & 0 deletions lib/phlexy_ui/label.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# frozen_string_literal: true

module PhlexyUI
class Label < Base
def view_template(&)
generate_classes!(
component_html_class: :label,
options:
).then do |classes|
label(class: classes, **options, &)
end
end

def text(as: :span, **options, &)
generate_classes!(
component_html_class: :"label-text",
options:
).then do |classes|
public_send(as, class: classes, **options, &)
end
end
end
end
33 changes: 33 additions & 0 deletions spec/lib/phlexy_ui/label_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require "spec_helper"

describe PhlexyUI::Label do
subject(:output) { render described_class.new }

describe "rendering a label" do
let(:component) do
Class.new(Phlex::HTML) do
def view_template(&)
render PhlexyUI::Label.new do |label|
label.text class: "foo", data: {my: :foos} do
"Username"
end
end
end
end
end

subject(:output) do
render component.new
end

it "is expected to match the formatted HTML" do
expected_html = html <<~HTML
<label class="label">
<span class="label-text foo" data-my="foos">Username</span>
</label>
HTML

is_expected.to eq(expected_html)
end
end
end

0 comments on commit 9f0bb56

Please sign in to comment.