Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(slide-toggle): don't show hover ripples on touch devices #13702

Merged
merged 1 commit into from
Oct 23, 2018

Conversation

crisbeto
Copy link
Member

On touch devices :hover styling persists after the user has tapped. These changes hide the persistent ripple if the user isn't able to hover, in order to avoid confusion with the other ripples.

Related to #13675.

Note: this is the same issue that is fixed in #13700. I'm splitting into separate PRs, because we're blocked on merging style changes for some components, for now.

@crisbeto crisbeto added the target: patch This PR is targeted for the next patch release label Oct 20, 2018
@crisbeto crisbeto requested a review from devversion as a code owner October 20, 2018 07:53
@googlebot googlebot added the cla: yes PR author has agreed to Google's Contributor License Agreement label Oct 20, 2018
// Disable the hover styling if the user's device doesn't support hovering.
@media (hover: none) {
.mat-slide-toggle-bar:hover & {
display: none;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not just opacity: 0 as for the other selectors? Also looks like on touch devices the persistent ripple can be hidden without the :hover right?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wanted to prevent any selectors with a higher specificity from reintroducing the opacity.

Also looks like on touch devices the persistent ripple can be hidden without the :hover right?

I'm not sure I get it. Do you mean using the focus monitor classes?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, just feels a bit odd to use display: none because I personally just use display: none if something needs to be hidden for a longer time-span. But in this case, it can quickly toggle the display because you're only hiding the persistent ripple if the :hover pseudo element is activated.

I'm not sure I get it. Do you mean using the focus monitor classes?

I've meant that we could just set display: none permanently if @media (hover: none) is activated because in no other scenario on touch, the persistent ripple shows up (after #13562)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's what I did initially (always having display: none), but I decided to keep the more specific selector in case the input receives keyboard focus somehow (e.g. programmatically through the FocusMonitor or by pressing the "Next" button on the virtual keyboard).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually thinking about it more, as it is now it allows us to keep the focus indication for hybrid devices that have both a touchscreen and a keyboard.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair enough. Can you add this into a comment? doesn't have to be too detailed.

@devversion devversion added pr: lgtm action: merge The PR is ready for merge by the caretaker labels Oct 20, 2018
On touch devices `:hover` styling persists after the user has tapped. These changes hide the persistent ripple if the user isn't able to hover, in order to avoid confusion with the other ripples.

Related to angular#13675.
@crisbeto crisbeto force-pushed the 13675/slide-toggle-hover branch from 5b59fd4 to 7927d59 Compare October 20, 2018 10:16
@mmalerba mmalerba merged commit e8f8d07 into angular:master Oct 23, 2018
mmalerba pushed a commit that referenced this pull request Oct 23, 2018
On touch devices `:hover` styling persists after the user has tapped. These changes hide the persistent ripple if the user isn't able to hover, in order to avoid confusion with the other ripples.

Related to #13675.
@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Sep 9, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
action: merge The PR is ready for merge by the caretaker cla: yes PR author has agreed to Google's Contributor License Agreement target: patch This PR is targeted for the next patch release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants