mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
feat(core): first class a11y support (#8909)
This commit is contained in:
committed by
Nathan Walker
parent
577b1e9dad
commit
f2e21a50a7
35
packages/core/accessibility/accessibility-service-common.ts
Normal file
35
packages/core/accessibility/accessibility-service-common.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { Observable } from '../data/observable';
|
||||
|
||||
export class SharedA11YObservable extends Observable {
|
||||
accessibilityServiceEnabled?: boolean;
|
||||
}
|
||||
|
||||
export const AccessibilityServiceEnabledPropName = 'accessibilityServiceEnabled';
|
||||
|
||||
export class CommonA11YServiceEnabledObservable extends SharedA11YObservable {
|
||||
constructor(sharedA11YObservable: SharedA11YObservable) {
|
||||
super();
|
||||
|
||||
const ref = new WeakRef(this);
|
||||
let lastValue: boolean;
|
||||
|
||||
function callback() {
|
||||
const self = ref?.get();
|
||||
if (!self) {
|
||||
sharedA11YObservable.off(Observable.propertyChangeEvent, callback);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const newValue = !!sharedA11YObservable.accessibilityServiceEnabled;
|
||||
if (newValue !== lastValue) {
|
||||
self.set(AccessibilityServiceEnabledPropName, newValue);
|
||||
lastValue = newValue;
|
||||
}
|
||||
}
|
||||
|
||||
sharedA11YObservable.on(Observable.propertyChangeEvent, callback);
|
||||
|
||||
this.set(AccessibilityServiceEnabledPropName, !!sharedA11YObservable.accessibilityServiceEnabled);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user