in src/web/utils/FocusManager.ts [259:302]
protected /* static */ _updateComponentFocusRestriction(storedComponent: StoredFocusableComponent): void {
const newAriaHidden = storedComponent.restricted || (storedComponent.limitedCount > 0) ? true : undefined;
const newTabIndex = newAriaHidden || (storedComponent.limitedCountAccessible > 0) ? -1 : undefined;
const restrictionRemoved = newTabIndex === undefined;
if ((storedComponent.curTabIndex !== newTabIndex) || (storedComponent.curAriaHidden !== newAriaHidden)) {
const el = ReactDOM.findDOMNode(storedComponent.component) as HTMLElement | null;
if (el) {
if (storedComponent.curTabIndex !== newTabIndex) {
storedComponent.curTabIndex = newTabIndex;
if (restrictionRemoved) {
FocusManager._setTabIndex(el, storedComponent.origTabIndex);
} else {
const prevTabIndex = FocusManager._setTabIndex(el, newTabIndex);
if (!('origTabIndex' in storedComponent)) {
storedComponent.origTabIndex = prevTabIndex;
}
}
}
if (storedComponent.curAriaHidden !== newAriaHidden) {
storedComponent.curAriaHidden = newAriaHidden;
if (restrictionRemoved) {
FocusManager._setAriaHidden(el, storedComponent.origAriaHidden);
} else {
const prevAriaHidden = FocusManager._setAriaHidden(el, newAriaHidden ? 'true' : undefined);
if (!('origAriaHidden' in storedComponent)) {
storedComponent.origAriaHidden = prevAriaHidden;
}
}
}
if (restrictionRemoved) {
delete storedComponent.origTabIndex;
delete storedComponent.origAriaHidden;
}
}
FocusManager._callFocusableComponentStateChangeCallbacks(storedComponent, !restrictionRemoved);
}
}