@qualweb/util
Version:
Utilities module for qualweb
76 lines (75 loc) • 3.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function getValueFromEmbeddedControl(element) {
var _a;
const role = window.AccessibilityUtils.getElementRoleAName(element, '');
const name = (_a = element.getElementTagName()) !== null && _a !== void 0 ? _a : '';
let value = '';
if (role === 'textbox') {
const valueAT = element.getElementAttribute('value');
value = valueAT ? valueAT : '';
}
else if (role === 'combobox') {
const referencedByLabel = element.getElement(`[aria-activedescendant]`);
let aria_descendant, selectedElement, optionSelected;
if (referencedByLabel) {
aria_descendant = referencedByLabel.getElementAttribute('role');
selectedElement = element.getElement(`[id="${aria_descendant}"]`);
}
if (name === 'select') {
optionSelected = element.getElement(`[selected]`);
}
const aria_owns = element.getElementAttribute('[aria-owns]');
const elementsToSelect = window.qwPage.getElement(`[id="${aria_owns}"]`);
let elementWithAriaSelected = null;
if (elementsToSelect) {
elementWithAriaSelected = elementsToSelect.getElement(`[aria-selected="true"]`);
}
if (optionSelected) {
value = window.DomUtils.getTrimmedText(optionSelected);
}
else if (selectedElement) {
value = window.DomUtils.getTrimmedText(selectedElement);
}
else if (elementWithAriaSelected) {
value = window.DomUtils.getTrimmedText(elementWithAriaSelected);
}
}
else if (role === 'listbox') {
const elementsWithId = element.getElements(`[id]`);
const elementWithAriaSelected = element.getElement(`[aria-selected="true"]`);
let selectedElement;
let optionSelected;
for (const elementWithId of elementsWithId) {
if (selectedElement) {
const id = elementWithId.getElementAttribute('id');
selectedElement = element.getElement(`[aria-activedescendant="${id}"]`);
}
}
if (name === 'select') {
optionSelected = element.getElement(`[selected]`);
}
if (selectedElement)
value = window.DomUtils.getTrimmedText(elementsWithId[0]);
else if (elementWithAriaSelected) {
value = window.DomUtils.getTrimmedText(elementWithAriaSelected);
}
else if (optionSelected) {
value = window.DomUtils.getTrimmedText(optionSelected);
}
}
else if (role === 'range' ||
role === 'progressbar' ||
role === 'scrollbar' ||
role === 'slider' ||
role === 'spinbutton') {
const valueTextVar = element.getElementAttribute('aria-valuetext');
const valuenowVar = element.getElementAttribute('aria-valuenow');
if (valueTextVar)
value = valueTextVar;
else if (valuenowVar)
value = valuenowVar;
}
return value;
}
exports.default = getValueFromEmbeddedControl;