diff --git a/src/scripts/choices.js b/src/scripts/choices.js index ee8e000..8f015ca 100644 --- a/src/scripts/choices.js +++ b/src/scripts/choices.js @@ -126,7 +126,23 @@ class Choices { this._wasTap = true; this._placeholderValue = this._generatePlaceholderValue(); this._baseId = generateId(this.passedElement.element, 'choices-'); - this._direction = this.passedElement.element.getAttribute('dir') || 'ltr'; + /** + * setting direction in cases where it's explicitly set on passedElement + * or when calculated direction is different from the document + * @type {HTMLElement['dir']} + */ + this._direction = this.passedElement.element.dir; + if (!this._direction) { + const { direction: elementDirection } = window.getComputedStyle( + this.passedElement.element, + ); + const { direction: documentDirection } = window.getComputedStyle( + document.documentElement, + ); + if (elementDirection !== documentDirection) { + this._direction = elementDirection; + } + } this._idNames = { itemChoice: 'item-choice', }; diff --git a/src/scripts/templates.js b/src/scripts/templates.js index fc4bf88..20bf676 100644 --- a/src/scripts/templates.js +++ b/src/scripts/templates.js @@ -15,9 +15,9 @@ export const TEMPLATES = /** @type {Templates} */ ({ ) { const div = Object.assign(document.createElement('div'), { className: containerOuter, - dir, }); div.dataset.type = passedElementType; + if (dir) div.dir = dir; if (isSelectOneElement) div.tabIndex = 0; if (isSelectElement) { div.setAttribute('role', searchEnabled ? 'combobox' : 'listbox'); @@ -98,7 +98,6 @@ export const TEMPLATES = /** @type {Templates} */ ({ choiceList({ list }, isSelectOneElement) { const div = Object.assign(document.createElement('div'), { className: list, - dir: 'ltr', }); if (!isSelectOneElement) div.setAttribute('aria-multiselectable', 'true'); div.setAttribute('role', 'listbox'); diff --git a/src/scripts/templates.test.js b/src/scripts/templates.test.js index 616cc21..702d32a 100644 --- a/src/scripts/templates.test.js +++ b/src/scripts/templates.test.js @@ -223,7 +223,6 @@ describe('templates', () => { const expectedOutput = strToEl(`
@@ -239,7 +238,6 @@ describe('templates', () => { const expectedOutput = strToEl(`