Merge in switch component
This commit is contained in:
parent
2f61968e2e
commit
8062378016
@ -108,6 +108,7 @@ import { ProfileEditDialogComponent } from './components/common/profile-edit-dia
|
|||||||
import { PdfViewerComponent } from './components/common/pdf-viewer/pdf-viewer.component'
|
import { PdfViewerComponent } from './components/common/pdf-viewer/pdf-viewer.component'
|
||||||
import { DocumentLinkComponent } from './components/common/input/document-link/document-link.component'
|
import { DocumentLinkComponent } from './components/common/input/document-link/document-link.component'
|
||||||
import { PreviewPopupComponent } from './components/common/preview-popup/preview-popup.component'
|
import { PreviewPopupComponent } from './components/common/preview-popup/preview-popup.component'
|
||||||
|
import { SwitchComponent } from './components/common/input/switch/switch.component'
|
||||||
|
|
||||||
import localeAf from '@angular/common/locales/af'
|
import localeAf from '@angular/common/locales/af'
|
||||||
import localeAr from '@angular/common/locales/ar'
|
import localeAr from '@angular/common/locales/ar'
|
||||||
@ -263,6 +264,7 @@ function initializeApp(settings: SettingsService) {
|
|||||||
PdfViewerComponent,
|
PdfViewerComponent,
|
||||||
DocumentLinkComponent,
|
DocumentLinkComponent,
|
||||||
PreviewPopupComponent,
|
PreviewPopupComponent,
|
||||||
|
SwitchComponent,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
<div class="mb-3">
|
||||||
|
<div class="row">
|
||||||
|
@if (horizontal) {
|
||||||
|
<div class="d-flex align-items-center position-relative hidden-button-container col-md-3">
|
||||||
|
<label class="form-label" [class.mb-md-0]="horizontal" [for]="inputId">{{title}}</label>
|
||||||
|
@if (removable) {
|
||||||
|
<button type="button" class="btn btn-sm btn-danger position-absolute left-0" (click)="removed.emit(this)">
|
||||||
|
<svg class="sidebaricon" fill="currentColor">
|
||||||
|
<use xlink:href="assets/bootstrap-icons.svg#x"/>
|
||||||
|
</svg> <ng-container i18n>Remove</ng-container>
|
||||||
|
</button>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
<div [ngClass]="{'col-md-9': horizontal, 'align-items-center': horizontal, 'd-flex': horizontal}">
|
||||||
|
<div class="form-check form-switch">
|
||||||
|
<input #inputField type="checkbox" class="form-check-input" [id]="inputId" [(ngModel)]="value" (change)="onChange(value)" (blur)="onTouched()" [disabled]="disabled">
|
||||||
|
@if (!horizontal) {
|
||||||
|
<label class="form-check-label" [for]="inputId">{{title}}</label>
|
||||||
|
}
|
||||||
|
@if (hint) {
|
||||||
|
<div class="form-text text-muted">{{hint}}</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,39 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing'
|
||||||
|
import { SwitchComponent } from './switch.component'
|
||||||
|
import {
|
||||||
|
FormsModule,
|
||||||
|
NG_VALUE_ACCESSOR,
|
||||||
|
ReactiveFormsModule,
|
||||||
|
} from '@angular/forms'
|
||||||
|
|
||||||
|
describe('SwitchComponent', () => {
|
||||||
|
let component: SwitchComponent
|
||||||
|
let fixture: ComponentFixture<SwitchComponent>
|
||||||
|
let input: HTMLInputElement
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [SwitchComponent],
|
||||||
|
providers: [],
|
||||||
|
imports: [FormsModule, ReactiveFormsModule],
|
||||||
|
}).compileComponents()
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(SwitchComponent)
|
||||||
|
fixture.debugElement.injector.get(NG_VALUE_ACCESSOR)
|
||||||
|
component = fixture.componentInstance
|
||||||
|
fixture.detectChanges()
|
||||||
|
input = component.inputField.nativeElement
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should support use of checkbox', () => {
|
||||||
|
input.checked = true
|
||||||
|
input.dispatchEvent(new Event('change'))
|
||||||
|
fixture.detectChanges()
|
||||||
|
expect(component.value).toBeTruthy()
|
||||||
|
|
||||||
|
input.checked = false
|
||||||
|
input.dispatchEvent(new Event('change'))
|
||||||
|
fixture.detectChanges()
|
||||||
|
expect(component.value).toBeFalsy()
|
||||||
|
})
|
||||||
|
})
|
@ -0,0 +1,21 @@
|
|||||||
|
import { Component, forwardRef } from '@angular/core'
|
||||||
|
import { NG_VALUE_ACCESSOR } from '@angular/forms'
|
||||||
|
import { AbstractInputComponent } from '../abstract-input'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
provide: NG_VALUE_ACCESSOR,
|
||||||
|
useExisting: forwardRef(() => SwitchComponent),
|
||||||
|
multi: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
selector: 'pngx-input-switch',
|
||||||
|
templateUrl: './switch.component.html',
|
||||||
|
styleUrls: ['./switch.component.scss'],
|
||||||
|
})
|
||||||
|
export class SwitchComponent extends AbstractInputComponent<boolean> {
|
||||||
|
constructor() {
|
||||||
|
super()
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user