DEV: allows select-kit to prevent autofocus of header after onChange (#9718)

This commit is contained in:
Joffrey JAFFEUX 2020-05-09 10:26:23 +02:00 committed by GitHub
parent d653d2f5d9
commit 9bf11a8c68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 5 deletions

View File

@ -12,6 +12,7 @@
options=(hash
popupTitle=b.title
icon=b.icon
focusAfterOnchange=false
)
}}
{{else}}

View File

@ -269,7 +269,8 @@ export default Component.extend(
filterComponent: "select-kit/select-kit-filter",
selectedNameComponent: "selected-name",
castInteger: false,
preventsClickPropagation: false
preventsClickPropagation: false,
focusAfterOnchange: true
},
autoFilterable: computed("content.[]", "selectKit.filter", function() {
@ -428,10 +429,12 @@ export default Component.extend(
this.selectKit.close();
}
this._safeAfterRender(() => {
this._focusFilter();
this.popper && this.popper.update();
});
if (this.selectKit.options.focusAfterOnchange) {
this._safeAfterRender(() => {
this._focusFilter();
this.popper && this.popper.update();
});
}
}
});
},

View File

@ -257,3 +257,41 @@ componentTest("prevents propagating click event on header", {
assert.equal(this.value, DEFAULT_VALUE);
}
});
componentTest("focusAfterOnChange", {
template:
"{{d-button class='focus-me'}}{{single-select options=(hash focusAfterOnchange=focusAfterOnchange) value=value content=content onChange=onChange}}",
beforeEach() {
this.setProperties({
onChange: () => {
find(".focus-me").focus();
this.set("value", "foo");
},
content: DEFAULT_CONTENT,
value: DEFAULT_VALUE
});
},
async test(assert) {
this.set("focusAfterOnchange", true);
await this.subject.expand();
await this.subject.selectRowByIndex(0);
assert.ok(
document.activeElement.classList.contains("single-select-header"),
"it selects the header"
);
this.set("focusAfterOnchange", false);
await this.subject.expand();
await this.subject.selectRowByIndex(0);
assert.notOk(
document.activeElement.classList.contains("single-select-header"),
"it doesnt select the header"
);
}
});