@tarienna/ng-tri-state-checkbox
Version:
A TriStateCheckbox for Angular 9
86 lines • 9.72 kB
JavaScript
var NgTriStateControlDirective_1;
import { __decorate } from "tslib";
import { Directive, ElementRef, forwardRef, HostListener, Input, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChange, SimpleChanges } from '@angular/core';
import { CheckboxControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
let NgTriStateControlDirective = NgTriStateControlDirective_1 = class NgTriStateControlDirective extends CheckboxControlValueAccessor {
constructor(renderer, elementRef) {
super(renderer, elementRef);
this.renderer = renderer;
this.elementRef = elementRef;
this.checkedValue = null;
this.isDisabled = false;
}
ngOnInit() {
if (!!this.registry) {
this.registry.addControl(this);
}
}
ngOnDestroy() {
if (!!this.registry) {
this.registry.removeControl(this);
}
}
ngOnChanges(changes) {
if (changes && changes.hasOwnProperty('registry') && !changes.registry.firstChange) {
const registerChanged = changes.registry;
if (!!registerChanged.previousValue) {
registerChanged.previousValue.removeControl(this);
}
if (!!registerChanged.currentValue) {
registerChanged.currentValue.addControl(this);
}
}
}
readValue() {
if (this.checkedValue) {
return !!this.value ? this.value : this.checkedValue;
}
return null;
}
writeValue(value) {
super.writeValue(value);
this.checkedValue = value;
this.updateValueOnRegistry();
}
setDisabled(state) {
this.isDisabled = state;
super.setDisabledState(state);
}
updateValueOnRegistry() {
if (!!this.registry) {
this.registry.changeControlValue(this, this.readValue());
}
}
onChangeValue(value) {
this.checkedValue = value;
this.updateValueOnRegistry();
}
};
NgTriStateControlDirective.ctorParameters = () => [
{ type: Renderer2 },
{ type: ElementRef }
];
__decorate([
Input()
], NgTriStateControlDirective.prototype, "value", void 0);
__decorate([
Input('ngTriStateControl')
], NgTriStateControlDirective.prototype, "registry", void 0);
__decorate([
HostListener('change', ['$event.target.checked'])
], NgTriStateControlDirective.prototype, "onChangeValue", null);
NgTriStateControlDirective = NgTriStateControlDirective_1 = __decorate([
Directive({
selector: 'input[type=checkbox][ngTriStateControl]',
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => NgTriStateControlDirective_1),
multi: true
}
],
exportAs: 'ngTriStateControl'
})
], NgTriStateControlDirective);
export { NgTriStateControlDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdHJpLXN0YXRlLWNvbnRyb2wuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhcmllbm5hL25nLXRyaS1zdGF0ZS1jaGVja2JveC8iLCJzb3VyY2VzIjpbImxpYi9uZy10cmktc3RhdGUtY29udHJvbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGFBQWEsRUFDaEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFhakYsSUFBYSwwQkFBMEIsa0NBQXZDLE1BQWEsMEJBQTJCLFNBQVEsNEJBQTRCO0lBWXhFLFlBQXNCLFFBQW1CLEVBQVksVUFBc0I7UUFDdkUsS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQURWLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBWSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBVjNFLGlCQUFZLEdBQVEsSUFBSSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxLQUFLLENBQUM7SUFXbkIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7WUFDaEYsTUFBTSxlQUFlLEdBQWlCLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDdkQsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRTtnQkFDakMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckQ7WUFFRCxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFO2dCQUNoQyxlQUFlLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqRDtTQUNKO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUN4RDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNqQixLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYztRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLHFCQUFxQjtRQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO0lBQ0wsQ0FBQztJQUdELGFBQWEsQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztDQUNKLENBQUE7O1lBMURtQyxTQUFTO1lBQXdCLFVBQVU7O0FBTjNFO0lBREMsS0FBSyxFQUFFO3lEQUNHO0FBSVg7SUFEQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7NERBQ0k7QUF3RC9CO0lBREMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUM7K0RBSWpEO0FBckVRLDBCQUEwQjtJQVh0QyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUseUNBQXlDO1FBQ25ELFNBQVMsRUFBRTtZQUNQO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNEJBQTBCLENBQUM7Z0JBQ3pELEtBQUssRUFBRSxJQUFJO2FBQ2Q7U0FDSjtRQUNELFFBQVEsRUFBRSxtQkFBbUI7S0FDaEMsQ0FBQztHQUNXLDBCQUEwQixDQXNFdEM7U0F0RVksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2ltcGxlQ2hhbmdlLFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJVHJpQ2hlY2tib3hSZWdpc3RlciwgSVRyaVN0YXRlQ2hlY2tib3hDb250cm9sIH0gZnJvbSAnLi90cmktc3RhdGUtY2hlY2tib3gudHlwZXMnO1xuaW1wb3J0IHsgQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHlwZT1jaGVja2JveF1bbmdUcmlTdGF0ZUNvbnRyb2xdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ1RyaVN0YXRlQ29udHJvbERpcmVjdGl2ZSksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBleHBvcnRBczogJ25nVHJpU3RhdGVDb250cm9sJ1xufSlcbmV4cG9ydCBjbGFzcyBOZ1RyaVN0YXRlQ29udHJvbERpcmVjdGl2ZSBleHRlbmRzIENoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIElUcmlTdGF0ZUNoZWNrYm94Q29udHJvbCB7XG4gICAgY2hlY2tlZFZhbHVlOiBhbnkgPSBudWxsO1xuICAgIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgdmFsdWU6IGFueTtcblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ25nVHJpU3RhdGVDb250cm9sJylcbiAgICByZWdpc3RyeTogSVRyaUNoZWNrYm94UmVnaXN0ZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgc3VwZXIocmVuZGVyZXIsIGVsZW1lbnRSZWYpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoISF0aGlzLnJlZ2lzdHJ5KSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdHJ5LmFkZENvbnRyb2wodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5yZWdpc3RyeSkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RyeS5yZW1vdmVDb250cm9sKHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzLmhhc093blByb3BlcnR5KCdyZWdpc3RyeScpICYmICFjaGFuZ2VzLnJlZ2lzdHJ5LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZWdpc3RlckNoYW5nZWQ6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMucmVnaXN0cnk7XG4gICAgICAgICAgICBpZiAoISFyZWdpc3RlckNoYW5nZWQucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyQ2hhbmdlZC5wcmV2aW91c1ZhbHVlLnJlbW92ZUNvbnRyb2wodGhpcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghIXJlZ2lzdGVyQ2hhbmdlZC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZWdpc3RlckNoYW5nZWQuY3VycmVudFZhbHVlLmFkZENvbnRyb2wodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWFkVmFsdWUoKTogYW55IHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tlZFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IHRoaXMuY2hlY2tlZFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGVja2VkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZU9uUmVnaXN0cnkoKTtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZChzdGF0ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSBzdGF0ZTtcbiAgICAgICAgc3VwZXIuc2V0RGlzYWJsZWRTdGF0ZShzdGF0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWYWx1ZU9uUmVnaXN0cnkoKSB7XG4gICAgICAgIGlmICghIXRoaXMucmVnaXN0cnkpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0cnkuY2hhbmdlQ29udHJvbFZhbHVlKHRoaXMsIHRoaXMucmVhZFZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQudGFyZ2V0LmNoZWNrZWQnXSlcbiAgICBvbkNoYW5nZVZhbHVlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWVPblJlZ2lzdHJ5KCk7XG4gICAgfVxufVxuIl19