@clr/angular
Version:
Angular components for Clarity
53 lines • 7.02 kB
JavaScript
/*
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
* This software is released under MIT license.
* The full license information can be found in LICENSE in the root directory of this project.
*/
import { Attribute, Directive, Optional, Self } from '@angular/core';
import { WrappedFormControl } from '../common/wrapped-control';
import { ClrCheckboxWrapper, IS_TOGGLE } from './checkbox-wrapper';
import * as i0 from "@angular/core";
import * as i1 from "@angular/forms";
/**
* This implements both the clrCheckbox and clrToggle functionality, since they are both just checkboxes with different
* visual styling. The challenge is that the container needs to know which selector was used, which the @Attribute
* decorator gets for us to determine if the toggle is used, and emits a value to the wrapper container to tell it
* there is a toggle switch instead.
*/
export class ClrCheckbox extends WrappedFormControl {
constructor(vcr, injector, control, renderer, el, toggle) {
super(vcr, ClrCheckboxWrapper, injector, control, renderer, el);
this.control = control;
this.toggle = toggle;
}
get controlDisabled() {
return this.control?.disabled;
}
ngOnInit() {
super.ngOnInit();
const toggleService = this.getProviderFromContainer(IS_TOGGLE, null);
if (toggleService && this.toggle !== null) {
toggleService.next(true);
}
}
}
ClrCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrCheckbox, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: 'clrToggle', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
ClrCheckbox.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]", host: { properties: { "attr.role": "toggle !== null ? \"switch\" : null" } }, usesInheritance: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrCheckbox, decorators: [{
type: Directive,
args: [{
selector: '[clrCheckbox],[clrToggle]',
host: {
'[attr.role]': 'toggle !== null ? "switch" : null',
},
}]
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
type: Self
}, {
type: Optional
}] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: undefined, decorators: [{
type: Attribute,
args: ['clrToggle']
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9jaGVja2JveC9jaGVja2JveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUF3QixRQUFRLEVBQWEsSUFBSSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUl4SCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUVuRTs7Ozs7R0FLRztBQU9ILE1BQU0sT0FBTyxXQUFZLFNBQVEsa0JBQXNDO0lBQ3JFLFlBQ0UsR0FBcUIsRUFDckIsUUFBa0IsRUFHVixPQUFrQixFQUMxQixRQUFtQixFQUNuQixFQUFnQyxFQUNBLE1BQWM7UUFFOUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUx4RCxZQUFPLEdBQVAsT0FBTyxDQUFXO1FBR00sV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUdoRCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVRLFFBQVE7UUFDZixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUEyQixTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFL0YsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDekMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7O3dHQTFCVSxXQUFXLGtMQVNULFdBQVc7NEZBVGIsV0FBVzsyRkFBWCxXQUFXO2tCQU52QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLElBQUksRUFBRTt3QkFDSixhQUFhLEVBQUUsbUNBQW1DO3FCQUNuRDtpQkFDRjs7MEJBS0ksSUFBSTs7MEJBQ0osUUFBUTs7MEJBSVIsU0FBUzsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDI1IEJyb2FkY29tLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhlIHRlcm0gXCJCcm9hZGNvbVwiIHJlZmVycyB0byBCcm9hZGNvbSBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBBdHRyaWJ1dGUsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFNlbGYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBXcmFwcGVkRm9ybUNvbnRyb2wgfSBmcm9tICcuLi9jb21tb24vd3JhcHBlZC1jb250cm9sJztcbmltcG9ydCB7IENsckNoZWNrYm94V3JhcHBlciwgSVNfVE9HR0xFIH0gZnJvbSAnLi9jaGVja2JveC13cmFwcGVyJztcblxuLyoqXG4gKiBUaGlzIGltcGxlbWVudHMgYm90aCB0aGUgY2xyQ2hlY2tib3ggYW5kIGNsclRvZ2dsZSBmdW5jdGlvbmFsaXR5LCBzaW5jZSB0aGV5IGFyZSBib3RoIGp1c3QgY2hlY2tib3hlcyB3aXRoIGRpZmZlcmVudFxuICogdmlzdWFsIHN0eWxpbmcuIFRoZSBjaGFsbGVuZ2UgaXMgdGhhdCB0aGUgY29udGFpbmVyIG5lZWRzIHRvIGtub3cgd2hpY2ggc2VsZWN0b3Igd2FzIHVzZWQsIHdoaWNoIHRoZSBAQXR0cmlidXRlXG4gKiBkZWNvcmF0b3IgZ2V0cyBmb3IgdXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB0b2dnbGUgaXMgdXNlZCwgYW5kIGVtaXRzIGEgdmFsdWUgdG8gdGhlIHdyYXBwZXIgY29udGFpbmVyIHRvIHRlbGwgaXRcbiAqIHRoZXJlIGlzIGEgdG9nZ2xlIHN3aXRjaCBpbnN0ZWFkLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2xyQ2hlY2tib3hdLFtjbHJUb2dnbGVdJyxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5yb2xlXSc6ICd0b2dnbGUgIT09IG51bGwgPyBcInN3aXRjaFwiIDogbnVsbCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENsckNoZWNrYm94IGV4dGVuZHMgV3JhcHBlZEZvcm1Db250cm9sPENsckNoZWNrYm94V3JhcHBlcj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICB2Y3I6IFZpZXdDb250YWluZXJSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBTZWxmKClcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgY29udHJvbDogTmdDb250cm9sLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgZWw6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgQEF0dHJpYnV0ZSgnY2xyVG9nZ2xlJykgcHJpdmF0ZSB0b2dnbGU6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcih2Y3IsIENsckNoZWNrYm94V3JhcHBlciwgaW5qZWN0b3IsIGNvbnRyb2wsIHJlbmRlcmVyLCBlbCk7XG4gIH1cblxuICBnZXQgY29udHJvbERpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2w/LmRpc2FibGVkO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIGNvbnN0IHRvZ2dsZVNlcnZpY2UgPSB0aGlzLmdldFByb3ZpZGVyRnJvbUNvbnRhaW5lcjxCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4+KElTX1RPR0dMRSwgbnVsbCk7XG5cbiAgICBpZiAodG9nZ2xlU2VydmljZSAmJiB0aGlzLnRvZ2dsZSAhPT0gbnVsbCkge1xuICAgICAgdG9nZ2xlU2VydmljZS5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxufVxuIl19