mirror of https://github.com/abpframework/abp
parent
17db513e95
commit
564e79b212
@ -0,0 +1,34 @@
|
||||
import { getLocaleDirection, LocalizationService } from '@abp/ng.core';
|
||||
import { Injectable, Injector } from '@angular/core';
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
import { map, startWith } from 'rxjs/operators';
|
||||
import { LocaleDirection } from '../models/common';
|
||||
|
||||
@Injectable()
|
||||
export class DocumentDirHandlerService {
|
||||
private dir = new BehaviorSubject<LocaleDirection>('ltr');
|
||||
dir$ = this.dir.asObservable();
|
||||
constructor(protected injector: Injector) {
|
||||
this.listenToLanguageChanges();
|
||||
}
|
||||
|
||||
private listenToLanguageChanges() {
|
||||
const l10n = this.injector.get(LocalizationService);
|
||||
|
||||
// will always listen, no need to unsubscribe
|
||||
l10n.languageChange$
|
||||
.pipe(
|
||||
startWith(l10n.currentLang),
|
||||
map(locale => getLocaleDirection(locale)),
|
||||
)
|
||||
.subscribe(dir => {
|
||||
this.dir.next(dir);
|
||||
this.setBodyDir(dir);
|
||||
});
|
||||
}
|
||||
|
||||
private setBodyDir(dir: LocaleDirection) {
|
||||
document.body.dir = dir;
|
||||
document.dir = dir;
|
||||
}
|
||||
}
|
@ -1 +1,2 @@
|
||||
export * from './document-dir.handler';
|
||||
export * from './error.handler';
|
||||
|
Loading…
Reference in new issue