Skip to content

Commit

Permalink
docs(utilities): add 'Interactions' page (#2662)
Browse files Browse the repository at this point in the history
Co-authored-by: Julien Déramond <[email protected]>
  • Loading branch information
louismaximepiton and julien-deramond authored Aug 2, 2024
1 parent 957b7b2 commit 59c798c
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
35 changes: 34 additions & 1 deletion site/content/docs/0.0/utilities/interactions.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,37 @@ aliases:
toc: false
---

{{< callout-soon "page" >}}
## Text selection

Change the way in which the content is selected when the user interacts with it.

{{< example >}}
<p class="user-select-all">This paragraph will be entirely selected when clicked by the user.</p>
<p class="user-select-auto">This paragraph has default select behavior.</p>
<p class="user-select-none">This paragraph will not be selectable when clicked by the user.</p>
{{< /example >}}

## Pointer events

OUDS Web provides `.pe-none` and `.pe-auto` classes to prevent or add element interactions.

{{< example >}}
<p><a href="#" class="pe-none" tabindex="-1" aria-disabled="true">This link</a> can not be clicked.</p>
<p><a href="#" class="pe-auto">This link</a> can be clicked (this is default behavior).</p>
<p class="pe-none"><a href="#" tabindex="-1" aria-disabled="true">This link</a> can not be clicked because the <code>pointer-events</code> property is inherited from its parent. However, <a href="#" class="pe-auto">this link</a> has a <code>pe-auto</code> class and can be clicked.</p>
{{< /example >}}

The `.pe-none` class (and the `pointer-events` CSS property it sets) only prevents interactions with a pointer (mouse, stylus, touch). Links and controls with `.pe-none` are, by default, still focusable and actionable for keyboard users. To ensure that they are completely neutralized even for keyboard users, you may need to add further attributes such as `tabindex="-1"` (to prevent them from receiving keyboard focus) and `aria-disabled="true"` (to convey the fact they are effectively disabled to assistive technologies), and possibly use JavaScript to completely prevent them from being actionable.

If possible, the simpler solution is:

- For form controls, add the `disabled` HTML attribute.
- For links, remove the `href` attribute, making it a non-interactive anchor or placeholder link.

## CSS

### Sass utilities API

Interaction utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})

{{< scss-docs name="utils-interaction" file="scss/_utilities.scss" >}}
1 change: 0 additions & 1 deletion site/data/sidebar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,6 @@
- title: Float
draft: true
- title: Interactions
draft: true
- title: Link
draft: true
- title: Object fit
Expand Down

0 comments on commit 59c798c

Please sign in to comment.