diff --git a/lib/phlexy_ui/pagination.rb b/lib/phlexy_ui/pagination.rb new file mode 100644 index 0000000..177ddb6 --- /dev/null +++ b/lib/phlexy_ui/pagination.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +module PhlexyUI + # @component html class="join" + class Pagination < Base + def initialize(*, as: :div, **) + super(*, **) + @as = as + end + + def view_template(&) + generate_classes!( + # "join" + component_html_class: :join, + modifiers_map: modifiers, + base_modifiers:, + options: + ).then do |classes| + public_send(as, class: classes, **options, &) + end + end + + def item(**options, &) + generate_classes!( + # "join-item" + component_html_class: :"join-item", + options: + ).then do |classes| + div(class: classes, **options, &) + end + end + + register_modifiers( + # "sm:join-vertical" + # "@sm:join-vertical" + # "md:join-vertical" + # "@md:join-vertical" + # "lg:join-vertical" + # "@lg:join-vertical" + vertical: "join-vertical", + # "sm:join-horizontal" + # "@sm:join-horizontal" + # "md:join-horizontal" + # "@md:join-horizontal" + # "lg:join-horizontal" + # "@lg:join-horizontal" + horizontal: "join-horizontal" + ) + end +end diff --git a/spec/lib/phlexy_ui/pagination_spec.rb b/spec/lib/phlexy_ui/pagination_spec.rb new file mode 100644 index 0000000..a55984d --- /dev/null +++ b/spec/lib/phlexy_ui/pagination_spec.rb @@ -0,0 +1,98 @@ +require "spec_helper" + +describe PhlexyUI::Pagination do + subject(:output) { render described_class.new } + + it "is expected to match the formatted HTML" do + expected_html = html <<~HTML +
+ HTML + + is_expected.to eq(expected_html) + end + + describe "with item method" do + subject(:output) do + render described_class.new do |p| + p.item { "1" } + p.item { "2" } + p.item { "3" } + end + end + + it "renders items" do + expected_html = html <<~HTML +