Sha256: 63e1874b4182e66ff4cc370323af3d572234deab46acf44583bde9153a089ccc

Contents?: true

Size: 1.63 KB

Versions: 23

Compression:

Stored size: 1.63 KB

Contents

module Plutonium
  module UI
    class FrameNavigatorPanel < Plutonium::UI::Component::Base
      class PanelItem < Plutonium::UI::Component::Base
        def initialize(label:, icon:, **attributes)
          @label = label
          @icon = icon
          @attributes = attributes
        end

        def view_template
          button(
            title: @label,
            style: "display: none",
            class: "text-gray-600 dark:text-gray-300",
            **@attributes
          ) {
            render @icon.new(class: "w-6 h-6")
          }
        end
      end

      class PanelContent < Plutonium::UI::Component::Base
        def initialize(src:)
          @src = src
        end

        def view_template
          DynaFrameHost src: @src, loading: :lazy, data: {"frame-navigator-target": "frame"} do
            SkeletonTable()
          end
        end
      end

      def initialize(title:, src:)
        @title = title
        @src = src
      end

      def view_template
        div(data: {controller: %w[has-many-panel frame-navigator]}) do
          Panel do |panel|
            panel.with_title @title
            panel.with_item PanelItem.new(label: "Home", icon: Phlex::TablerIcons::Home2, data_frame_navigator_target: %(homeButton))
            panel.with_item PanelItem.new(label: "Back", icon: Phlex::TablerIcons::ChevronLeft, data_frame_navigator_target: %(backButton))
            panel.with_item PanelItem.new(label: "Refresh", icon: Phlex::TablerIcons::RefreshDot, data_frame_navigator_target: %(refreshButton))
            panel.with_content PanelContent.new(src: @src)
          end
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
plutonium-0.16.5 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.16.4 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.16.3 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.16.1 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.16.0 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.24 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.23 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.22 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.21 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.20 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.19 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.18 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.17 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.16 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.15 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.14 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.13 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.12 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.11 lib/plutonium/ui/frame_navigator_panel.rb
plutonium-0.15.10 lib/plutonium/ui/frame_navigator_panel.rb