UNPKG

@tarienna/ng-tri-state-checkbox

Version:
90 lines 10.6 kB
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=