From 2a500c95c359033253dec429da012b675da60099 Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Wed, 4 Sep 2024 08:35:46 +0200 Subject: [PATCH] Delegate primary_action and secondary_action --- .changeset/chilled-poets-develop.md | 5 +++++ .../primer/open_project/feedback_message.rb | 2 ++ .../open_project/feedback_message_preview.rb | 8 ++++++++ .../primer/open_project/feedback_message_test.rb | 14 ++++++++++++-- 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 .changeset/chilled-poets-develop.md diff --git a/.changeset/chilled-poets-develop.md b/.changeset/chilled-poets-develop.md new file mode 100644 index 0000000000..3bd7f8b1ad --- /dev/null +++ b/.changeset/chilled-poets-develop.md @@ -0,0 +1,5 @@ +--- +'@openproject/primer-view-components': patch +--- + +Delegate calls for `primary_action` and `secondary_action` from FeedbackMessage to the `Blankslate` diff --git a/app/components/primer/open_project/feedback_message.rb b/app/components/primer/open_project/feedback_message.rb index cd0bfeab62..53097fbab2 100644 --- a/app/components/primer/open_project/feedback_message.rb +++ b/app/components/primer/open_project/feedback_message.rb @@ -31,6 +31,8 @@ def initialize(icon_arguments: {}, loading: false, **system_arguments) delegate :description?, :description, :with_description, :with_description_content, :heading?, :heading, :with_heading, :with_heading_content, + :primary_action?, :primary_action, :with_primary_action, :with_primary_action_content, + :secondary_action?, :secondary_action, :with_secondary_action, :with_secondary_action_content, to: :@blankslate private diff --git a/previews/primer/open_project/feedback_message_preview.rb b/previews/primer/open_project/feedback_message_preview.rb index 6b8599d6d0..33fec60abc 100644 --- a/previews/primer/open_project/feedback_message_preview.rb +++ b/previews/primer/open_project/feedback_message_preview.rb @@ -53,6 +53,14 @@ def loading_spinner component.with_heading(tag: :h2) { "Please wait, your request is being processed." } end end + + # @label With secondary action + def secondary_action + render(Primer::OpenProject::FeedbackMessage.new(loading: true)) do |component| + component.with_heading(tag: :h2) { "Please wait, your request is being processed." } + component.with_secondary_action(href: "#").with_content("Skip") + end + end end end end diff --git a/test/components/primer/open_project/feedback_message_test.rb b/test/components/primer/open_project/feedback_message_test.rb index bab6409e94..479e6053ec 100644 --- a/test/components/primer/open_project/feedback_message_test.rb +++ b/test/components/primer/open_project/feedback_message_test.rb @@ -36,11 +36,21 @@ def test_custom_icon end def test_renders_loading_spinner - render_inline(Primer::OpenProject::FeedbackMessage.new(loading: true)) do |dialog| - dialog.with_heading(tag: :h2) { "Ups, something went wrong" } + render_inline(Primer::OpenProject::FeedbackMessage.new(loading: true)) do |component| + component.with_heading(tag: :h2) { "Ups, something went wrong" } end assert_selector("h2", text: "Ups, something went wrong") assert_selector("img.blankslate-image[src^='/assets/loading_indicator']") end + + def test_renders_secondary_action + render_inline(Primer::OpenProject::FeedbackMessage.new) do |component| + component.with_heading(tag: :h2) { "Secondary Action" } + component.with_secondary_action(href: "/blubs").with_content("Skip") + end + + assert_selector("h2", text: "Secondary Action") + assert_selector("a[href='/blubs']", text: "Skip") + end end