feat: add checkbox atom component
This commit is contained in:
@@ -0,0 +1,50 @@
|
|||||||
|
label {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-hidden {
|
||||||
|
position: absolute;
|
||||||
|
opacity: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
height: 0;
|
||||||
|
width: 0;
|
||||||
|
|
||||||
|
&:checked + .checkmark::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: 11px;
|
||||||
|
bottom: 3px;
|
||||||
|
width: 6px;
|
||||||
|
height: 18px;
|
||||||
|
border: solid #0ea5e9;
|
||||||
|
border-width: 0 6px 6px 0;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
box-shadow: 2px 4px 4px -3px #0ea5e9;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:checked + .checkmark::before {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkmark {
|
||||||
|
display: inline-block;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
border: 1px solid #606463;
|
||||||
|
position: relative;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
border-radius: 4px;
|
||||||
|
pointer-events: none;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" class="checkbox-hidden" (change)="checked.emit(checkbox.checked)" #checkbox>
|
||||||
|
<span class="checkmark"></span>
|
||||||
|
</label>
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { CheckboxComponent } from './checkbox.component';
|
||||||
|
|
||||||
|
describe('CheckboxComponent', () => {
|
||||||
|
let component: CheckboxComponent;
|
||||||
|
let fixture: ComponentFixture<CheckboxComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
imports: [CheckboxComponent]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(CheckboxComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import { Component, output } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'mw-checkbox',
|
||||||
|
standalone: true,
|
||||||
|
imports: [],
|
||||||
|
templateUrl: './checkbox.component.html',
|
||||||
|
styleUrl: './checkbox.component.css'
|
||||||
|
})
|
||||||
|
export class CheckboxComponent {
|
||||||
|
checked = output<boolean>()
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user