Skip to content

Commit 4302d6c

Browse files
committed
maint(pat-autofocus): Switch to class based patterns.
1 parent 7928880 commit 4302d6c

File tree

2 files changed

+23
-14
lines changed

2 files changed

+23
-14
lines changed

src/pat/autofocus/autofocus.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import Base from "../../core/base";
1+
import { BasePattern } from "../../core/basepattern";
22
import dom from "../../core/dom";
3+
import registry from "../../core/registry";
34

45
let scheduled_task = null;
56

6-
export default Base.extend({
7-
name: "autofocus",
8-
trigger: `
7+
class Pattern extends BasePattern {
8+
static name = "autofocus";
9+
static trigger = `
910
input.pat-autofocus,
1011
input[autofocus],
1112
select.pat-autofocus,
@@ -14,15 +15,15 @@ export default Base.extend({
1415
textarea[autofocus],
1516
button.pat-autofocus,
1617
button[autofocus]
17-
`,
18+
`;
1819

1920
init() {
2021
if (window.self !== window.top) {
2122
// Do not autofocus in iframes.
2223
return;
2324
}
2425
this.set_focus();
25-
},
26+
}
2627

2728
set_focus() {
2829
if (dom.is_visible(this.el) && this.el.value === "") {
@@ -41,5 +42,10 @@ export default Base.extend({
4142
scheduled_task = null;
4243
}, 100);
4344
}
44-
},
45-
});
45+
}
46+
}
47+
48+
registry.register(Pattern);
49+
50+
export default Pattern;
51+
export { Pattern };

src/pat/autofocus/autofocus.test.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,43 @@ import registry from "../../core/registry";
33
import utils from "../../core/utils";
44

55
describe("pat-autofocus", function () {
6-
it("Focus the first element.", async () => {
6+
it("1 - Focus the first element.", async () => {
77
document.body.innerHTML = `
88
<input name="i1" type="text" class="pat-autofocus"/>
99
<input name="i2" type="text" class="pat-autofocus"/>
1010
<input name="i3" type="text" class="pat-autofocus"/>
1111
`;
1212
registry.scan(document.body);
13-
await utils.timeout(100);
13+
await utils.timeout(1); // Wait for async pattern initialization.
14+
await utils.timeout(100); // Wait for autofocus timeout.
1415

1516
const should_be_active = document.querySelector("input[name=i1]");
1617
expect(document.activeElement).toBe(should_be_active);
1718
});
1819

19-
it("Focus the first empty element, if available.", async () => {
20+
it("2 - Focus the first empty element, if available.", async () => {
2021
document.body.innerHTML = `
2122
<input name="i1" type="text" class="pat-autofocus" value="okay"/>
2223
<input name="i2" type="text" class="pat-autofocus"/>
2324
<input name="i3" type="text" class="pat-autofocus"/>
2425
`;
2526
registry.scan(document.body);
26-
await utils.timeout(100);
27+
await utils.timeout(1); // Wait for async pattern initialization.
28+
await utils.timeout(100); // Wait for autofocus timeout.
2729

2830
const should_be_active = document.querySelector("input[name=i2]");
2931
expect(document.activeElement).toBe(should_be_active);
3032
});
3133

32-
it("Don't focus hidden elements.", async () => {
34+
it("3 - Don't focus hidden elements.", async () => {
3335
document.body.innerHTML = `
3436
<input name="i1" type="text" class="pat-autofocus" value="okay"/>
3537
<input name="i2" type="text" class="pat-autofocus" hidden/>
3638
<input name="i3" type="text" class="pat-autofocus"/>
3739
`;
3840
registry.scan(document.body);
39-
await utils.timeout(100);
41+
await utils.timeout(1); // Wait for async pattern initialization.
42+
await utils.timeout(100); // Wait for autofocus timeout.
4043

4144
const should_be_active = document.querySelector("input[name=i3]");
4245
expect(document.activeElement).toBe(should_be_active);

0 commit comments

Comments
 (0)