ng-halfmoon
Version:
Angular Library to build upon the halfmoon-framework
36 lines • 4.71 kB
JavaScript
export class Applier {
constructor(el, renderer, baseClass) {
this.el = el;
this.renderer = renderer;
this.baseClass = baseClass;
}
applyChange(change, el) {
if (Applier.hasValueChanged(change)) {
return;
}
if (!change.isFirstChange()) {
this.removeClass(`${this.baseClass}-${change.previousValue}`, el);
}
this.addClass(`${this.baseClass}-${change.currentValue}`, el);
}
static hasValueChanged(change) {
return !change.currentValue || change.previousValue === change.currentValue;
}
addClass(cls, el) {
this.renderer.addClass(el.nativeElement, cls);
}
removeClass(cls, el) {
this.renderer.removeClass(el.nativeElement, cls);
}
applyAttribute(change, attribute) {
if (change.previousValue === change.currentValue) {
return;
}
if (!change.currentValue) {
this.renderer.removeAttribute(this.el.nativeElement, attribute);
return;
}
this.renderer.setAttribute(this.el.nativeElement, attribute, '');
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWhhbGZtb29uL3NyYy9saWIvdXRpbHMvYXBwbGllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sT0FBTztJQUNsQixZQUNZLEVBQWMsRUFDZCxRQUFtQixFQUNuQixTQUFpQjtRQUZqQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQzFCLENBQUM7SUFFTSxXQUFXLENBQUMsTUFBb0IsRUFBRSxFQUFjO1FBQ3hELElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNuRTtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRVMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFvQjtRQUNuRCxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDOUUsQ0FBQztJQUVTLFFBQVEsQ0FBQyxHQUFXLEVBQUUsRUFBYztRQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFUyxXQUFXLENBQUMsR0FBVyxFQUFFLEVBQWM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRVMsY0FBYyxDQUFDLE1BQW9CLEVBQUUsU0FBaUI7UUFDOUQsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDaEQsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDaEUsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RWxlbWVudFJlZiwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2V9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQXBwbGllciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBlbDogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcm90ZWN0ZWQgYmFzZUNsYXNzOiBzdHJpbmdcbiAgKSB7fVxuXG4gIHByb3RlY3RlZCBhcHBseUNoYW5nZShjaGFuZ2U6IFNpbXBsZUNoYW5nZSwgZWw6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICBpZiAoQXBwbGllci5oYXNWYWx1ZUNoYW5nZWQoY2hhbmdlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghY2hhbmdlLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgdGhpcy5yZW1vdmVDbGFzcyhgJHt0aGlzLmJhc2VDbGFzc30tJHtjaGFuZ2UucHJldmlvdXNWYWx1ZX1gLCBlbCk7XG4gICAgfVxuICAgIHRoaXMuYWRkQ2xhc3MoYCR7dGhpcy5iYXNlQ2xhc3N9LSR7Y2hhbmdlLmN1cnJlbnRWYWx1ZX1gLCBlbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhdGljIGhhc1ZhbHVlQ2hhbmdlZChjaGFuZ2U6IFNpbXBsZUNoYW5nZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhY2hhbmdlLmN1cnJlbnRWYWx1ZSB8fCBjaGFuZ2UucHJldmlvdXNWYWx1ZSA9PT0gY2hhbmdlLmN1cnJlbnRWYWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRDbGFzcyhjbHM6IHN0cmluZywgZWw6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsLm5hdGl2ZUVsZW1lbnQsIGNscyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlQ2xhc3MoY2xzOiBzdHJpbmcsIGVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhlbC5uYXRpdmVFbGVtZW50LCBjbHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFwcGx5QXR0cmlidXRlKGNoYW5nZTogU2ltcGxlQ2hhbmdlLCBhdHRyaWJ1dGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2UucHJldmlvdXNWYWx1ZSA9PT0gY2hhbmdlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghY2hhbmdlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCBhdHRyaWJ1dGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgYXR0cmlidXRlLCAnJyk7XG4gIH1cbn1cbiJdfQ==