Show "not allowed" message on click

Defining a behavior on hover means making it different for people using
a keyboard or a touchscreen (most of the population, nowadays).

In this case, we had an accessibility issue where the message wouldn't
disappear once it appeared. That meant that, after tabbing through all
the links and buttons in, for instance, the debates index, the page
would be filled with "participation not allowed" messages, and in order
to see the information about how many people have voted, reloading the
page was required.

For touchscreen users the behavior was similar to what we get on hover,
although we've found some inconsistencies when trying to support several
elements on the same page.

We think in proposals it makes sense to hide the "support" button when
users click on it, and the same applies to the buttonsto support and
vote investment projects. However, we aren't hiding the buttons to
agree/disagree with a debate in order to keep the information about the
current number of people agreeing and disagreeing visible.

Note we're removing some support spec methods because after these
changes the duplication isn't as obvious as it was in the past.
This commit is contained in:
Javi Martín
2022-02-19 13:05:56 +01:00
parent 9c4d406a77
commit abec716308
24 changed files with 135 additions and 146 deletions

View File

@@ -5,12 +5,12 @@ describe Proposals::VotesComponent do
let(:component) { Proposals::VotesComponent.new(proposal) }
describe "support proposal button" do
it "is disabled to unverified users" do
it "is shown to unverified users" do
sign_in(create(:user))
render_inline component
expect(page).to have_button "Support", disabled: true
expect(page).to have_button "Support"
end
it "is shown to verified users" do
@@ -38,8 +38,8 @@ describe Proposals::VotesComponent do
it "asks anonymous users to sign in or sign up" do
render_inline component
expect(page).to have_link "sign in", visible: :hidden
expect(page).to have_link "sign up", visible: :hidden
expect(page).to have_link "sign in"
expect(page).to have_link "sign up"
end
it "says voting is not allowed to organizations" do
@@ -58,7 +58,7 @@ describe Proposals::VotesComponent do
render_inline component
expect(page).to have_content "Only verified users can vote on proposals"
expect(page).to have_link "verify your account", visible: :hidden
expect(page).to have_link "verify your account"
expect(page).not_to have_link "sign in", visible: :all
expect(page).not_to have_link "sign up", visible: :all
end