Skip to content

Commit

Permalink
Adding Phlex::Kit to PhlexUI
Browse files Browse the repository at this point in the history
  • Loading branch information
cirdes committed Jun 22, 2024
1 parent df19452 commit bbe68e9
Show file tree
Hide file tree
Showing 18 changed files with 73 additions and 125 deletions.
20 changes: 19 additions & 1 deletion lib/phlex_ui.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,27 @@
loader.inflector.inflect(
"phlex_ui" => "PhlexUI"
)
loader.setup # ready!

# loader.load("#{__dir__}/lib/pui.rb")

loader.collapse("#{__dir__}/phlex_ui/accordion")
loader.setup # ready!
module PhlexUI
extend Phlex::Kit

autoload :Accordion, "phlex_ui/accordion"
end

module Pui
def self.method_missing(...)
PhlexUI.public_send(...)
rescue NoMethodError
puts "Method #{method_name} is not defined in #{PhlexUI}"
end

def self.respond_to_missing?(name, include_private = false)
PhlexUI.respond_to?(name, include_private) || super
end
end

loader.eager_load
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

module PhlexUI
class Accordion::Content < Base
class AccordionContent < Base
def view_template(&)
div(**attrs, &)
end
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

module PhlexUI
class Accordion::DefaultContent < Base
class AccordionDefaultContent < Base
def view_template(&)
div(**attrs, &)
end
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# frozen_string_literal: true

module PhlexUI
class Accordion::DefaultTrigger < Base
class AccordionDefaultTrigger < Base
def view_template(&block)
div(class: "flex items-center justify-between w-full") do
p(&block)
render ::PhlexUI::Accordion::Icon.new
PhlexUI.AccordionIcon
end
end

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

module PhlexUI
class Accordion::Icon < Base
class AccordionIcon < Base
def view_template(&block)
span(**attrs) do
if block
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

module PhlexUI
class Accordion::Item < Base
class AccordionItem < Base
def initialize(open: false, rotate_icon: 180, **attrs)
@open = open
@rotate_icon = rotate_icon
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

module PhlexUI
class Accordion::Trigger < Base
class AccordionTrigger < Base
def view_template(&)
button(**attrs, &)
end
Expand Down
22 changes: 0 additions & 22 deletions lib/phlex_ui/accordion/builder.rb

This file was deleted.

13 changes: 0 additions & 13 deletions test/phlex_ui/accordion/builder_test.rb

This file was deleted.

13 changes: 0 additions & 13 deletions test/phlex_ui/accordion/content_test.rb

This file was deleted.

13 changes: 0 additions & 13 deletions test/phlex_ui/accordion/default_content_test.rb

This file was deleted.

13 changes: 0 additions & 13 deletions test/phlex_ui/accordion/default_trigger_test.rb

This file was deleted.

13 changes: 0 additions & 13 deletions test/phlex_ui/accordion/icon_test.rb

This file was deleted.

13 changes: 0 additions & 13 deletions test/phlex_ui/accordion/item_test.rb

This file was deleted.

13 changes: 0 additions & 13 deletions test/phlex_ui/accordion/trigger_test.rb

This file was deleted.

35 changes: 31 additions & 4 deletions test/phlex_ui/accordion_test.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,40 @@
# frozen_string_literal: true

require "test_helper"

class PhlexUI::AccordionTest < Minitest::Test
include Phlex::Testing::ViewHelper

def test_render_with_default_attributes
output = render PhlexUI::Accordion.new
def test_render_accordion
output = phlex_context do
PhlexUI.Accordion
end

assert_match(/div class="w-full">/, output)
end

def test_render_default_accordion
output = phlex_context do
PhlexUI.Accordion do
PhlexUI.AccordionItem do
PhlexUI.AccordionDefaultTrigger { "Title" }
PhlexUI.AccordionDefaultContent { "Content" }
end
end
end

assert_match(/<div data-controller="accordion"/, output)
end

def test_render_with_pui_namespace
output = phlex_context do
Pui.Accordion do
Pui.AccordionItem do
Pui.AccordionDefaultTrigger { "Title" }
Pui.AccordionDefaultContent { "Content" }
end
end
end

refute_empty(output)
assert_match(/div class="w-full">/, output)
end
end
5 changes: 5 additions & 0 deletions test/test_context.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class TestContext < Phlex::HTML
def view_template(&)
div(&)
end
end
11 changes: 11 additions & 0 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,14 @@

require "phlex/testing/view_helper"
require "minitest/autorun"

class TestContext < Phlex::HTML
def view_template(&)
div(&)
end
end

def phlex_context(&)
render TestContext.new, &
# puts "PhlexUI::Component.render(context, &block)"
end

0 comments on commit bbe68e9

Please sign in to comment.