Skip to content

Commit ed9b8e2

Browse files
Fabio BrasileiroFabio Brasileiro
authored andcommitted
ajuste
1 parent dd29a7b commit ed9b8e2

7 files changed

Lines changed: 108 additions & 3 deletions

src/app/app.component.html

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
<router-outlet>
2-
<button (click)="themeSwitch()" class="sun">Sun</button>
3-
<button (click)="themeSwitch()" class="moon">Moon</button>
42
</router-outlet>

src/app/page/button-toggle-dark-light/button-toggle-dark-light.component.css

Whitespace-only changes.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<div class=" rounded-3xl p-1 flex justify-center items-center">
2+
<button (click)="themeSwitch()" class="sun text-white"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
3+
fill="currentColor" class="bi bi-moon-fill" viewBox="0 0 16 16">
4+
<path
5+
d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278" />
6+
</svg></button>
7+
<button (click)="themeSwitch()" class="moon"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
8+
fill="currentColor" class="bi bi-brightness-high-fill" viewBox="0 0 16 16">
9+
<path
10+
d="M12 8a4 4 0 1 1-8 0 4 4 0 0 1 8 0M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708" />
11+
</svg></button>
12+
</div>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { ComponentFixture, TestBed } from '@angular/core/testing';
2+
3+
import { ButtonToggleDarkLightComponent } from './button-toggle-dark-light.component';
4+
5+
describe('ButtonToggleDarkLightComponent', () => {
6+
let component: ButtonToggleDarkLightComponent;
7+
let fixture: ComponentFixture<ButtonToggleDarkLightComponent>;
8+
9+
beforeEach(async () => {
10+
await TestBed.configureTestingModule({
11+
imports: [ButtonToggleDarkLightComponent]
12+
})
13+
.compileComponents();
14+
15+
fixture = TestBed.createComponent(ButtonToggleDarkLightComponent);
16+
component = fixture.componentInstance;
17+
fixture.detectChanges();
18+
});
19+
20+
it('should create', () => {
21+
expect(component).toBeTruthy();
22+
});
23+
});
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import { Component, OnInit, Renderer2 } from '@angular/core';
2+
3+
@Component({
4+
selector: 'app-button-toggle-dark-light',
5+
standalone: true,
6+
imports: [],
7+
templateUrl: './button-toggle-dark-light.component.html',
8+
styleUrl: './button-toggle-dark-light.component.css'
9+
})
10+
export class ButtonToggleDarkLightComponent implements OnInit{
11+
sunIcon: HTMLElement | null = null;
12+
moonIcon: HTMLElement | null = null;
13+
userTheme: string | null = null;
14+
systemTheme!: boolean;
15+
16+
constructor(private renderer: Renderer2) {}
17+
18+
ngOnInit(): void {
19+
this.sunIcon = document.querySelector('.sun');
20+
this.moonIcon = document.querySelector('.moon');
21+
22+
// Verifica o tema do usuário no localStorage
23+
this.userTheme = localStorage.getItem('theme');
24+
25+
// Verifica o esquema de cores preferido do sistema
26+
this.systemTheme = window.matchMedia(
27+
'(prefers-color-scheme: dark)'
28+
).matches;
29+
30+
// Verifica e aplica o tema inicial
31+
this.themeCheck();
32+
}
33+
34+
iconToggle() {
35+
if (this.sunIcon && this.moonIcon) {
36+
this.sunIcon.classList.toggle('display-none');
37+
this.moonIcon.classList.toggle('display-none');
38+
}
39+
}
40+
41+
themeCheck() {
42+
if (this.userTheme === 'dark' || (!this.userTheme && this.systemTheme)) {
43+
this.renderer.addClass(document.documentElement, 'dark');
44+
if (this.moonIcon) this.renderer.addClass(this.moonIcon, 'display-none');
45+
} else {
46+
this.renderer.addClass(document.documentElement, 'light');
47+
if (this.sunIcon) this.renderer.addClass(this.sunIcon, 'display-none');
48+
}
49+
}
50+
51+
themeSwitch() {
52+
if (document.documentElement.classList.contains('dark')) {
53+
this.renderer.removeClass(document.documentElement, 'dark');
54+
this.renderer.addClass(document.documentElement, 'light');
55+
localStorage.setItem('theme', 'light');
56+
} else {
57+
this.renderer.removeClass(document.documentElement, 'light');
58+
this.renderer.addClass(document.documentElement, 'dark');
59+
localStorage.setItem('theme', 'dark');
60+
}
61+
this.iconToggle();
62+
}
63+
64+
chamada() {
65+
if (this.sunIcon && this.moonIcon) {
66+
this.sunIcon.addEventListener('click', () => this.themeSwitch());
67+
this.moonIcon.addEventListener('click', () => this.themeSwitch());
68+
}
69+
}
70+
}

src/app/page/header-landing-page/header-landing-page.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<a href="#" class="flex items-center">
55
<img src="../assets/logo-java-jugle.png" class="h-6 mr-3 sm:h-9 disabled-logo" alt="Java juble Logo" />
66
</a>
7+
<app-button-toggle-dark-light></app-button-toggle-dark-light>
78
<div class="flex items-center lg:order-2">
89
<div class="hidden mt-2 mr-4 sm:inline-block">
910
<a class="github-button" href="https://github.com/JavaAmazonas/java-jungle" data-size="large"

src/app/page/header-landing-page/header-landing-page.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { Component } from '@angular/core';
2+
import { ButtonToggleDarkLightComponent } from '../button-toggle-dark-light/button-toggle-dark-light.component';
23

34
@Component({
45
selector: 'app-header-landing-page',
56
standalone: true,
6-
imports: [],
7+
imports: [ButtonToggleDarkLightComponent],
78
templateUrl: './header-landing-page.component.html',
89
styleUrl: './header-landing-page.component.css',
910
})

0 commit comments

Comments
 (0)