Resolve conflict

This commit is contained in:
Josh Johnson 2018-05-28 15:17:43 +01:00
commit a023d92b35
4 changed files with 23 additions and 15 deletions

View file

@ -1954,7 +1954,7 @@ class Choices {
this.choiceList.clear();
if (this.config.resetScrollPosition) {
this.choiceList.scrollToTop();
requestAnimationFrame(() => this.choiceList.scrollToTop());
}
// If we have grouped options

View file

@ -95,16 +95,20 @@ export default class Input {
this.element.value.length >= this._placeholderValue.length / 1.25) ||
enforceWidth
) {
this.element.style.width = this.calcWidth();
this.calcWidth(width => {
this.element.style.width = width;
});
}
} else {
// If there is no placeholder, resize input to contents
this.element.style.width = this.calcWidth();
this.calcWidth(width => {
this.element.style.width = width;
});
}
}
calcWidth() {
return calcWidthOfInput(this.element);
calcWidth(callback) {
return calcWidthOfInput(this.element, callback);
}
setActiveDescendant(activeDescendantID) {

View file

@ -269,7 +269,7 @@ describe('components/input', () => {
const inputWidth = '200px';
beforeEach(() => {
calcWidthStub = stub(instance, 'calcWidth').returns(inputWidth);
calcWidthStub = stub(instance, 'calcWidth').callsArgWith(0, inputWidth);
});
afterEach(() => {

View file

@ -227,10 +227,10 @@ export const strToEl = (function() {
}());
/**
* Sets the width of a passed input based on its value
* @return {Number} Width of input
* Determines the width of a passed input based on its value and passes
* it to the supplied callback function.
*/
export const calcWidthOfInput = (input) => {
export const calcWidthOfInput = (input, callback) => {
const value = input.value || input.placeholder;
let width = input.offsetWidth;
@ -259,14 +259,18 @@ export const calcWidthOfInput = (input) => {
document.body.appendChild(testEl);
if (value && testEl.offsetWidth !== input.offsetWidth) {
width = testEl.offsetWidth + 4;
}
requestAnimationFrame(() => {
if (value && testEl.offsetWidth !== input.offsetWidth) {
width = testEl.offsetWidth + 4;
}
document.body.removeChild(testEl);
document.body.removeChild(testEl);
callback.call(this, `${width}px`);
});
} else {
callback.call(this, `${width}px`);
}
return `${width}px`;
};
/**