@coreui/angular-pro 5.0.0-alpha.12 → 5.0.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/services/color-mode.service.mjs +14 -23
- package/esm2022/lib/services/public_api.mjs +1 -1
- package/fesm2022/coreui-angular-pro.mjs +18 -26
- package/fesm2022/coreui-angular-pro.mjs.map +1 -1
- package/lib/services/color-mode.service.d.ts +4 -2
- package/lib/services/public_api.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,44 +1,32 @@
|
|
|
1
1
|
import { DOCUMENT } from '@angular/common';
|
|
2
2
|
import { DestroyRef, effect, inject, Injectable, signal } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { ActivatedRoute } from '@angular/router';
|
|
5
4
|
import { tap } from 'rxjs/operators';
|
|
6
5
|
import { LocalStorageService } from './local-storage.service';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
export class ColorModeService {
|
|
9
8
|
#destroyRef;
|
|
10
9
|
#document;
|
|
11
|
-
#window;
|
|
12
|
-
#activatedRoute;
|
|
13
10
|
#localStorage;
|
|
14
11
|
constructor() {
|
|
15
12
|
this.#destroyRef = inject(DestroyRef);
|
|
16
13
|
this.#document = inject(DOCUMENT);
|
|
17
|
-
this.#window = this.#document.defaultView;
|
|
18
|
-
this.#activatedRoute = inject(ActivatedRoute);
|
|
19
14
|
this.#localStorage = inject(LocalStorageService);
|
|
20
15
|
this.eventName = signal('ColorSchemeChange');
|
|
21
16
|
this.localStorageItemName = signal('coreui-angular-color-scheme');
|
|
22
17
|
this.localStorageItemName$ = toObservable(this.localStorageItemName);
|
|
23
|
-
this.colorMode = signal(
|
|
18
|
+
this.colorMode = signal(undefined);
|
|
24
19
|
this.colorModeEffect = effect(() => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.
|
|
20
|
+
const colorMode = this.colorMode() ?? this.getTheme();
|
|
21
|
+
if (colorMode) {
|
|
22
|
+
this.setStoredTheme(this.localStorageItemName(), colorMode);
|
|
23
|
+
this.setTheme(colorMode);
|
|
28
24
|
}
|
|
29
25
|
});
|
|
30
|
-
this.#activatedRoute.queryParams
|
|
31
|
-
.pipe(takeUntilDestroyed(this.#destroyRef), tap(params => {
|
|
32
|
-
const theme = params['theme']?.match(/^[A-Za-z0-9\s]+/)[0];
|
|
33
|
-
if (theme) {
|
|
34
|
-
this.colorMode.set(theme);
|
|
35
|
-
}
|
|
36
|
-
}))
|
|
37
|
-
.subscribe();
|
|
38
26
|
this.localStorageItemName$
|
|
39
|
-
.pipe(
|
|
27
|
+
.pipe(tap(params => {
|
|
40
28
|
this.colorMode.set(this.getPreferredColorScheme(params));
|
|
41
|
-
}))
|
|
29
|
+
}), takeUntilDestroyed(this.#destroyRef))
|
|
42
30
|
.subscribe();
|
|
43
31
|
}
|
|
44
32
|
getStoredTheme(localStorageItemName) {
|
|
@@ -48,16 +36,19 @@ export class ColorModeService {
|
|
|
48
36
|
return this.#localStorage.setItem(localStorageItemName, colorMode);
|
|
49
37
|
}
|
|
50
38
|
getPreferredColorScheme(localStorageItemName) {
|
|
51
|
-
if (this.#
|
|
52
|
-
return
|
|
39
|
+
if (this.#document.defaultView === undefined) {
|
|
40
|
+
return undefined;
|
|
53
41
|
}
|
|
54
42
|
const storedTheme = this.getStoredTheme(localStorageItemName);
|
|
55
43
|
if (storedTheme) {
|
|
56
44
|
return storedTheme;
|
|
57
45
|
}
|
|
58
|
-
return this.#
|
|
46
|
+
return this.#document.defaultView?.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : this.getTheme();
|
|
59
47
|
}
|
|
60
48
|
;
|
|
49
|
+
getTheme() {
|
|
50
|
+
return this.#document.documentElement.dataset['coreuiTheme'] ?? undefined;
|
|
51
|
+
}
|
|
61
52
|
setTheme(colorMode) {
|
|
62
53
|
this.#document.documentElement.dataset['coreuiTheme'] =
|
|
63
54
|
colorMode === 'auto' && this.#document.defaultView?.matchMedia('(prefers-color-scheme: dark)').matches
|
|
@@ -76,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
76
67
|
providedIn: 'root'
|
|
77
68
|
}]
|
|
78
69
|
}], ctorParameters: () => [] });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItbW9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jb2xvci1tb2RlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQU85RCxNQUFNLE9BQU8sZ0JBQWdCO0lBRWxCLFdBQVcsQ0FBa0M7SUFDN0MsU0FBUyxDQUE4QjtJQUN2QyxhQUFhLENBQW9EO0lBZ0IxRTtRQWxCUyxnQkFBVyxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QyxjQUFTLEdBQWEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLGtCQUFhLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWpFLGNBQVMsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN4Qyx5QkFBb0IsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUM3RCwwQkFBcUIsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFaEUsY0FBUyxHQUE4QixNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFekQsb0JBQWUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3JDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEQsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUdELElBQUksQ0FBQyxxQkFBcUI7YUFDdkIsSUFBSSxDQUNILEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxFQUNGLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDckM7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYyxDQUFDLG9CQUE0QjtRQUN6QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGNBQWMsQ0FBQyxvQkFBNEIsRUFBRSxTQUFpQjtRQUM1RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxvQkFBNEI7UUFDbEQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTlELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuSCxDQUFDO0lBQUEsQ0FBQztJQUVGLFFBQVE7UUFDTixPQUFrQixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksU0FBUyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxRQUFRLENBQUMsU0FBb0I7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUNuRCxTQUFTLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLE9BQU87Z0JBQ3RHLENBQUMsQ0FBQyxNQUFNO2dCQUNSLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUFBLENBQUM7OEdBakVTLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERlc3Ryb3lSZWYsIGVmZmVjdCwgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIENvbG9yTW9kZSA9ICdsaWdodCcgfCAnZGFyaycgfCAnYXV0bycgfCBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbG9yTW9kZVNlcnZpY2Uge1xuXG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICByZWFkb25seSAjZG9jdW1lbnQ6IERvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcmVhZG9ubHkgI2xvY2FsU3RvcmFnZTogTG9jYWxTdG9yYWdlU2VydmljZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcblxuICByZWFkb25seSBldmVudE5hbWUgPSBzaWduYWwoJ0NvbG9yU2NoZW1lQ2hhbmdlJyk7XG4gIHJlYWRvbmx5IGxvY2FsU3RvcmFnZUl0ZW1OYW1lID0gc2lnbmFsKCdjb3JldWktYW5ndWxhci1jb2xvci1zY2hlbWUnKTtcbiAgcmVhZG9ubHkgbG9jYWxTdG9yYWdlSXRlbU5hbWUkID0gdG9PYnNlcnZhYmxlKHRoaXMubG9jYWxTdG9yYWdlSXRlbU5hbWUpO1xuXG4gIHJlYWRvbmx5IGNvbG9yTW9kZTogV3JpdGFibGVTaWduYWw8Q29sb3JNb2RlPiA9IHNpZ25hbCh1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IGNvbG9yTW9kZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29sb3JNb2RlID0gdGhpcy5jb2xvck1vZGUoKSA/PyB0aGlzLmdldFRoZW1lKCk7XG4gICAgaWYgKGNvbG9yTW9kZSkge1xuICAgICAgdGhpcy5zZXRTdG9yZWRUaGVtZSh0aGlzLmxvY2FsU3RvcmFnZUl0ZW1OYW1lKCksIGNvbG9yTW9kZSk7XG4gICAgICB0aGlzLnNldFRoZW1lKGNvbG9yTW9kZSk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZUl0ZW1OYW1lJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChwYXJhbXMgPT4ge1xuICAgICAgICAgIHRoaXMuY29sb3JNb2RlLnNldCh0aGlzLmdldFByZWZlcnJlZENvbG9yU2NoZW1lKHBhcmFtcykpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXRTdG9yZWRUaGVtZShsb2NhbFN0b3JhZ2VJdGVtTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI2xvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZUl0ZW1OYW1lKTtcbiAgfVxuXG4gIHNldFN0b3JlZFRoZW1lKGxvY2FsU3RvcmFnZUl0ZW1OYW1lOiBzdHJpbmcsIGNvbG9yTW9kZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI2xvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZUl0ZW1OYW1lLCBjb2xvck1vZGUpO1xuICB9XG5cbiAgZ2V0UHJlZmVycmVkQ29sb3JTY2hlbWUobG9jYWxTdG9yYWdlSXRlbU5hbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLiNkb2N1bWVudC5kZWZhdWx0VmlldyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHN0b3JlZFRoZW1lID0gdGhpcy5nZXRTdG9yZWRUaGVtZShsb2NhbFN0b3JhZ2VJdGVtTmFtZSk7XG5cbiAgICBpZiAoc3RvcmVkVGhlbWUpIHtcbiAgICAgIHJldHVybiBzdG9yZWRUaGVtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jZG9jdW1lbnQuZGVmYXVsdFZpZXc/Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzID8gJ2RhcmsnIDogdGhpcy5nZXRUaGVtZSgpO1xuICB9O1xuXG4gIGdldFRoZW1lKCkge1xuICAgIHJldHVybiA8Q29sb3JNb2RlPnRoaXMuI2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kYXRhc2V0Wydjb3JldWlUaGVtZSddID8/IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNldFRoZW1lKGNvbG9yTW9kZTogQ29sb3JNb2RlKSB7XG4gICAgdGhpcy4jZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRhdGFzZXRbJ2NvcmV1aVRoZW1lJ10gPVxuICAgICAgY29sb3JNb2RlID09PSAnYXV0bycgJiYgdGhpcy4jZG9jdW1lbnQuZGVmYXVsdFZpZXc/Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzXG4gICAgICA/ICdkYXJrJ1xuICAgICAgOiBjb2xvck1vZGU7XG5cbiAgICBjb25zdCBldmVudCA9IG5ldyBFdmVudCh0aGlzLmV2ZW50TmFtZSgpKTtcbiAgICB0aGlzLiNkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbn1cbiJdfQ==
|
|
@@ -4,4 +4,4 @@ export { ClassToggleService } from './class-toggle.service';
|
|
|
4
4
|
export { LocalStorageService } from './local-storage.service';
|
|
5
5
|
export { InMemoryStorageService } from './in-memory-storage.service';
|
|
6
6
|
export { ColorModeService } from './color-mode.service';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvc2VydmljZXMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQTZCLE1BQU0sd0JBQXdCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgSW50ZXJzZWN0aW9uU2VydmljZSwgSUludGVyc2VjdGlvbk9ic2VydmVySW5pdCB9IGZyb20gJy4vaW50ZXJzZWN0aW9uLnNlcnZpY2UnO1xuZXhwb3J0IHsgTGlzdGVuZXJzU2VydmljZSwgSUxpc3RlbmVyc0NvbmZpZyB9IGZyb20gJy4vbGlzdGVuZXJzLnNlcnZpY2UnO1xuZXhwb3J0IHsgQ2xhc3NUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi9jbGFzcy10b2dnbGUuc2VydmljZSc7XG5leHBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0IHsgSW5NZW1vcnlTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vaW4tbWVtb3J5LXN0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgeyBDb2xvck1vZGVTZXJ2aWNlLCBDb2xvck1vZGUgfSBmcm9tICcuL2NvbG9yLW1vZGUuc2VydmljZSc7XG4iXX0=
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, Input,
|
|
2
|
+
import { Directive, Input, inject, ElementRef, Renderer2, booleanAttribute, NgModule, HostBinding, Injectable, Component, EventEmitter, Output, ContentChildren, HostListener, DestroyRef, signal, effect, RendererFactory2, Pipe, computed, numberAttribute, ViewChildren, PLATFORM_ID, Inject, ViewChild, forwardRef, Optional, ContentChild, ChangeDetectionStrategy, NgZone, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
3
3
|
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
4
4
|
import * as i3 from '@angular/common';
|
|
5
5
|
import { NgTemplateOutlet, NgIf, DOCUMENT, NgClass, NgForOf, AsyncPipe, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, isPlatformServer, isPlatformBrowser, CommonModule, formatDate, I18nPluralPipe, JsonPipe } from '@angular/common';
|
|
6
6
|
import * as i1 from '@angular/animations';
|
|
7
|
-
import {
|
|
7
|
+
import { animation, animate, style, useAnimation, trigger, state, transition, group, query } from '@angular/animations';
|
|
8
8
|
import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
9
9
|
import { fromEvent, Subject, BehaviorSubject, Observable, skip, distinctUntilChanged as distinctUntilChanged$1, map as map$1, debounceTime as debounceTime$1 } from 'rxjs';
|
|
10
10
|
import * as i1$1 from '@angular/router';
|
|
11
|
-
import { RouterModule, NavigationEnd,
|
|
12
|
-
import { filter, tap, distinctUntilChanged, take, finalize,
|
|
11
|
+
import { RouterModule, NavigationEnd, RouterLink } from '@angular/router';
|
|
12
|
+
import { filter, tap, distinctUntilChanged, take, finalize, zipWith, withLatestFrom, debounceTime, map, delay, combineLatestWith } from 'rxjs/operators';
|
|
13
13
|
import * as i1$2 from '@angular/cdk/a11y';
|
|
14
14
|
import { FocusMonitor, A11yModule, FocusKeyManager } from '@angular/cdk/a11y';
|
|
15
15
|
import * as i1$3 from '@angular/forms';
|
|
16
|
-
import {
|
|
16
|
+
import { FormGroup, FormControl, Validators, NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
17
17
|
import { createPopper } from '@popperjs/core';
|
|
18
18
|
import * as i1$4 from '@angular/cdk/layout';
|
|
19
19
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
@@ -4166,37 +4166,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
4166
4166
|
class ColorModeService {
|
|
4167
4167
|
#destroyRef;
|
|
4168
4168
|
#document;
|
|
4169
|
-
#window;
|
|
4170
|
-
#activatedRoute;
|
|
4171
4169
|
#localStorage;
|
|
4172
4170
|
constructor() {
|
|
4173
4171
|
this.#destroyRef = inject(DestroyRef);
|
|
4174
4172
|
this.#document = inject(DOCUMENT);
|
|
4175
|
-
this.#window = this.#document.defaultView;
|
|
4176
|
-
this.#activatedRoute = inject(ActivatedRoute);
|
|
4177
4173
|
this.#localStorage = inject(LocalStorageService);
|
|
4178
4174
|
this.eventName = signal('ColorSchemeChange');
|
|
4179
4175
|
this.localStorageItemName = signal('coreui-angular-color-scheme');
|
|
4180
4176
|
this.localStorageItemName$ = toObservable(this.localStorageItemName);
|
|
4181
|
-
this.colorMode = signal(
|
|
4177
|
+
this.colorMode = signal(undefined);
|
|
4182
4178
|
this.colorModeEffect = effect(() => {
|
|
4183
|
-
|
|
4184
|
-
|
|
4185
|
-
this.
|
|
4179
|
+
const colorMode = this.colorMode() ?? this.getTheme();
|
|
4180
|
+
if (colorMode) {
|
|
4181
|
+
this.setStoredTheme(this.localStorageItemName(), colorMode);
|
|
4182
|
+
this.setTheme(colorMode);
|
|
4186
4183
|
}
|
|
4187
4184
|
});
|
|
4188
|
-
this.#activatedRoute.queryParams
|
|
4189
|
-
.pipe(takeUntilDestroyed(this.#destroyRef), tap(params => {
|
|
4190
|
-
const theme = params['theme']?.match(/^[A-Za-z0-9\s]+/)[0];
|
|
4191
|
-
if (theme) {
|
|
4192
|
-
this.colorMode.set(theme);
|
|
4193
|
-
}
|
|
4194
|
-
}))
|
|
4195
|
-
.subscribe();
|
|
4196
4185
|
this.localStorageItemName$
|
|
4197
|
-
.pipe(
|
|
4186
|
+
.pipe(tap(params => {
|
|
4198
4187
|
this.colorMode.set(this.getPreferredColorScheme(params));
|
|
4199
|
-
}))
|
|
4188
|
+
}), takeUntilDestroyed(this.#destroyRef))
|
|
4200
4189
|
.subscribe();
|
|
4201
4190
|
}
|
|
4202
4191
|
getStoredTheme(localStorageItemName) {
|
|
@@ -4206,16 +4195,19 @@ class ColorModeService {
|
|
|
4206
4195
|
return this.#localStorage.setItem(localStorageItemName, colorMode);
|
|
4207
4196
|
}
|
|
4208
4197
|
getPreferredColorScheme(localStorageItemName) {
|
|
4209
|
-
if (this.#
|
|
4210
|
-
return
|
|
4198
|
+
if (this.#document.defaultView === undefined) {
|
|
4199
|
+
return undefined;
|
|
4211
4200
|
}
|
|
4212
4201
|
const storedTheme = this.getStoredTheme(localStorageItemName);
|
|
4213
4202
|
if (storedTheme) {
|
|
4214
4203
|
return storedTheme;
|
|
4215
4204
|
}
|
|
4216
|
-
return this.#
|
|
4205
|
+
return this.#document.defaultView?.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : this.getTheme();
|
|
4217
4206
|
}
|
|
4218
4207
|
;
|
|
4208
|
+
getTheme() {
|
|
4209
|
+
return this.#document.documentElement.dataset['coreuiTheme'] ?? undefined;
|
|
4210
|
+
}
|
|
4219
4211
|
setTheme(colorMode) {
|
|
4220
4212
|
this.#document.documentElement.dataset['coreuiTheme'] =
|
|
4221
4213
|
colorMode === 'auto' && this.#document.defaultView?.matchMedia('(prefers-color-scheme: dark)').matches
|