Skip to content

Commit b07b9ba

Browse files
committed
Adds mock condition for window.matchMedia for default case (prevents the test from setting delay to 0 when user has reduced motion set on their system). Removes code paths and mentions of attribute data-reduced-motion because including an escape hatch right now might be a bit confusing.
1 parent 8de1eb2 commit b07b9ba

File tree

3 files changed

+16
-36
lines changed

3 files changed

+16
-36
lines changed

README.md

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,6 @@ window.matchMedia('(prefers-reduced-motion)').matches === true
3131

3232
If this evaluates to true, any content lines provided will be appended immediately rather than being typed out with a delay.
3333

34-
The data attribute `data-reduced-motion` can be used to override the window media value.
35-
36-
```html
37-
<typing-effect
38-
data-lines='["Welcome to GitHub!", "Let’s begin the adventure"]'
39-
data-reduced-motion="true"> <!-- This will NOT animate -->
40-
<span data-target="typing-effect.content"></span>
41-
<span data-target="typing-effect.cursor">|</span>
42-
</typing-effect>
43-
44-
<typing-effect
45-
data-lines='["Welcome to GitHub!", "Let’s begin the adventure"]'
46-
data-reduced-motion="false"> <!-- This WILL animate -->
47-
<span data-target="typing-effect.content"></span>
48-
<span data-target="typing-effect.cursor">|</span>
49-
</typing-effect>
50-
```
51-
5234
## Browser support
5335

5436
Browsers without native [custom element support][support] require a [polyfill][].

src/index.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,7 @@ class TypingEffectElement extends HTMLElement {
4141
}
4242

4343
get prefersReducedMotion(): boolean {
44-
if (this.getAttribute('data-reduced-motion') === 'false') {
45-
return false
46-
} else if (this.getAttribute('data-reduced-motion') === 'true') {
47-
return true
48-
} else {
49-
return window.matchMedia('(prefers-reduced-motion)').matches
50-
}
44+
return window.matchMedia('(prefers-reduced-motion)').matches
5145
}
5246

5347
get characterDelay(): number {

test/test.js

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,23 @@ describe('typing-effect', function () {
6868
})
6969

7070
describe('delay attributes', function () {
71+
let realMatchMedia
72+
before(() => {
73+
realMatchMedia = window.matchMedia
74+
window.matchMedia = mediaString => {
75+
if (mediaString === '(prefers-reduced-motion)') {
76+
return {matches: false}
77+
}
78+
return realMatchMedia(mediaString)
79+
}
80+
})
81+
82+
after(() => {
83+
window.matchMedia = realMatchMedia
84+
})
85+
7186
it('uses defaults when no delays specified', function () {
7287
const typingEffectElement = document.createElement('typing-effect')
73-
typingEffectElement.setAttribute('data-reduced-motion', false)
7488
document.body.append(typingEffectElement)
7589

7690
assert.equal(typingEffectElement.characterDelay, 40)
@@ -102,16 +116,6 @@ describe('typing-effect', function () {
102116
assert.equal(typingEffectElement.characterDelay, 0)
103117
assert.equal(typingEffectElement.lineDelay, 0)
104118
})
105-
106-
it('uses data-reduced-motion attribute to override window media query', function () {
107-
const typingEffectElement = document.createElement('typing-effect')
108-
typingEffectElement.setAttribute('data-reduced-motion', false)
109-
document.body.append(typingEffectElement)
110-
111-
assert.equal(window.matchMedia('(prefers-reduced-motion)').matches, true)
112-
assert.equal(typingEffectElement.characterDelay, 40)
113-
assert.equal(typingEffectElement.lineDelay, 40)
114-
})
115119
})
116120
})
117121

0 commit comments

Comments
 (0)