@tarienna/ng-tri-state-checkbox
Version:
A TriStateCheckbox for Angular 9
90 lines • 10.6 kB
JavaScript
import { __decorate, __extends } 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';
var NgTriStateControlDirective = /** @class */ (function (_super) {
__extends(NgTriStateControlDirective, _super);
function NgTriStateControlDirective(renderer, elementRef) {
var _this = _super.call(this, renderer, elementRef) || this;
_this.renderer = renderer;
_this.elementRef = elementRef;
_this.checkedValue = null;
_this.isDisabled = false;
return _this;
}
NgTriStateControlDirective_1 = NgTriStateControlDirective;
NgTriStateControlDirective.prototype.ngOnInit = function () {
if (!!this.registry) {
this.registry.addControl(this);
}
};
NgTriStateControlDirective.prototype.ngOnDestroy = function () {
if (!!this.registry) {
this.registry.removeControl(this);
}
};
NgTriStateControlDirective.prototype.ngOnChanges = function (changes) {
if (changes && changes.hasOwnProperty('registry') && !changes.registry.firstChange) {
var registerChanged = changes.registry;
if (!!registerChanged.previousValue) {
registerChanged.previousValue.removeControl(this);
}
if (!!registerChanged.currentValue) {
registerChanged.currentValue.addControl(this);
}
}
};
NgTriStateControlDirective.prototype.readValue = function () {
if (this.checkedValue) {
return !!this.value ? this.value : this.checkedValue;
}
return null;
};
NgTriStateControlDirective.prototype.writeValue = function (value) {
_super.prototype.writeValue.call(this, value);
this.checkedValue = value;
this.updateValueOnRegistry();
};
NgTriStateControlDirective.prototype.setDisabled = function (state) {
this.isDisabled = state;
_super.prototype.setDisabledState.call(this, state);
};
NgTriStateControlDirective.prototype.updateValueOnRegistry = function () {
if (!!this.registry) {
this.registry.changeControlValue(this, this.readValue());
}
};
NgTriStateControlDirective.prototype.onChangeValue = function (value) {
this.checkedValue = value;
this.updateValueOnRegistry();
};
var NgTriStateControlDirective_1;
NgTriStateControlDirective.ctorParameters = function () { return [
{ 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(function () { return NgTriStateControlDirective_1; }),
multi: true
}
],
exportAs: 'ngTriStateControl'
})
], NgTriStateControlDirective);
return NgTriStateControlDirective;
}(CheckboxControlValueAccessor));
export { NgTriStateControlDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdHJpLXN0YXRlLWNvbnRyb2wuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhcmllbm5hL25nLXRyaS1zdGF0ZS1jaGVja2JveC8iLCJzb3VyY2VzIjpbImxpYi9uZy10cmktc3RhdGUtY29udHJvbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osYUFBYSxFQUNoQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWFqRjtJQUFnRCw4Q0FBNEI7SUFZeEUsb0NBQXNCLFFBQW1CLEVBQVksVUFBc0I7UUFBM0UsWUFDSSxrQkFBTSxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQzlCO1FBRnFCLGNBQVEsR0FBUixRQUFRLENBQVc7UUFBWSxnQkFBVSxHQUFWLFVBQVUsQ0FBWTtRQVYzRSxrQkFBWSxHQUFRLElBQUksQ0FBQztRQUN6QixnQkFBVSxHQUFHLEtBQUssQ0FBQzs7SUFXbkIsQ0FBQzttQ0FkUSwwQkFBMEI7SUFnQm5DLDZDQUFRLEdBQVI7UUFDSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVELGdEQUFXLEdBQVg7UUFDSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVELGdEQUFXLEdBQVgsVUFBWSxPQUFzQjtRQUM5QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7WUFDaEYsSUFBTSxlQUFlLEdBQWlCLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDdkQsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRTtnQkFDakMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckQ7WUFFRCxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFO2dCQUNoQyxlQUFlLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqRDtTQUNKO0lBQ0wsQ0FBQztJQUVELDhDQUFTLEdBQVQ7UUFDSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUN4RDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQ0FBVSxHQUFWLFVBQVcsS0FBVTtRQUNqQixpQkFBTSxVQUFVLFlBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGdEQUFXLEdBQVgsVUFBWSxLQUFjO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGlCQUFNLGdCQUFnQixZQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTywwREFBcUIsR0FBN0I7UUFDSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO0lBQ0wsQ0FBQztJQUdELGtEQUFhLEdBQWIsVUFBYyxLQUFLO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQzs7O2dCQXpEK0IsU0FBUztnQkFBd0IsVUFBVTs7SUFOM0U7UUFEQyxLQUFLLEVBQUU7NkRBQ0c7SUFJWDtRQURDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztnRUFDSTtJQXdEL0I7UUFEQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQzttRUFJakQ7SUFyRVEsMEJBQTBCO1FBWHRDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSx5Q0FBeUM7WUFDbkQsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLDRCQUEwQixFQUExQixDQUEwQixDQUFDO29CQUN6RCxLQUFLLEVBQUUsSUFBSTtpQkFDZDthQUNKO1lBQ0QsUUFBUSxFQUFFLG1CQUFtQjtTQUNoQyxDQUFDO09BQ1csMEJBQTBCLENBc0V0QztJQUFELGlDQUFDO0NBQUEsQUF0RUQsQ0FBZ0QsNEJBQTRCLEdBc0UzRTtTQXRFWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElUcmlDaGVja2JveFJlZ2lzdGVyLCBJVHJpU3RhdGVDaGVja2JveENvbnRyb2wgfSBmcm9tICcuL3RyaS1zdGF0ZS1jaGVja2JveC50eXBlcyc7XG5pbXBvcnQgeyBDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0eXBlPWNoZWNrYm94XVtuZ1RyaVN0YXRlQ29udHJvbF0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5nVHJpU3RhdGVDb250cm9sRGlyZWN0aXZlKSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGV4cG9ydEFzOiAnbmdUcmlTdGF0ZUNvbnRyb2wnXG59KVxuZXhwb3J0IGNsYXNzIE5nVHJpU3RhdGVDb250cm9sRGlyZWN0aXZlIGV4dGVuZHMgQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgSVRyaVN0YXRlQ2hlY2tib3hDb250cm9sIHtcbiAgICBjaGVja2VkVmFsdWU6IGFueSA9IG51bGw7XG4gICAgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICB2YWx1ZTogYW55O1xuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnbmdUcmlTdGF0ZUNvbnRyb2wnKVxuICAgIHJlZ2lzdHJ5OiBJVHJpQ2hlY2tib3hSZWdpc3RlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLCBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcihyZW5kZXJlciwgZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMucmVnaXN0cnkpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0cnkuYWRkQ29udHJvbCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAoISF0aGlzLnJlZ2lzdHJ5KSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdHJ5LnJlbW92ZUNvbnRyb2wodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3JlZ2lzdHJ5JykgJiYgIWNoYW5nZXMucmVnaXN0cnkuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyQ2hhbmdlZDogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5yZWdpc3RyeTtcbiAgICAgICAgICAgIGlmICghIXJlZ2lzdGVyQ2hhbmdlZC5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJDaGFuZ2VkLnByZXZpb3VzVmFsdWUucmVtb3ZlQ29udHJvbCh0aGlzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCEhcmVnaXN0ZXJDaGFuZ2VkLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyQ2hhbmdlZC5jdXJyZW50VmFsdWUuYWRkQ29udHJvbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlYWRWYWx1ZSgpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5jaGVja2VkVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiAhIXRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogdGhpcy5jaGVja2VkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmNoZWNrZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlT25SZWdpc3RyeSgpO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkKHN0YXRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHN0YXRlO1xuICAgICAgICBzdXBlci5zZXREaXNhYmxlZFN0YXRlKHN0YXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZhbHVlT25SZWdpc3RyeSgpIHtcbiAgICAgICAgaWYgKCEhdGhpcy5yZWdpc3RyeSkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RyeS5jaGFuZ2VDb250cm9sVmFsdWUodGhpcywgdGhpcy5yZWFkVmFsdWUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudC50YXJnZXQuY2hlY2tlZCddKVxuICAgIG9uQ2hhbmdlVmFsdWUodmFsdWUpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZU9uUmVnaXN0cnkoKTtcbiAgICB9XG59XG4iXX0=