UNPKG

mat-contenteditable

Version:

Angular contenteditable directive for Angular forms and Material Design

42 lines 4.99 kB
import { __decorate, __metadata } from "tslib"; import { Directive, Renderer2, ElementRef, AfterContentInit } from '@angular/core'; var FormFieldSizerDirective = /** @class */ (function () { function FormFieldSizerDirective(renderer, elementRef) { this.renderer = renderer; this.elementRef = elementRef; } FormFieldSizerDirective.prototype.ngAfterContentInit = function () { this.updateSize(); }; FormFieldSizerDirective.prototype.updateSize = function () { var _this = this; var infix = this.getElement('mat-form-field-infix'); this.renderer.removeStyle(infix, 'min-height'); setTimeout(function () { var wrapper = _this.getElement('mat-form-field-wrapper'); var offset = _this.elementRef.nativeElement.offsetHeight - wrapper.offsetHeight - parseFloat(getComputedStyle(wrapper).marginTop) - parseFloat(getComputedStyle(wrapper).marginBottom) + parseFloat(getComputedStyle(infix).height); _this.renderer.setStyle(infix, 'min-height', offset + "px"); }); }; FormFieldSizerDirective.prototype.getElement = function (name) { return this.elementRef.nativeElement.getElementsByClassName(name).item(0); }; FormFieldSizerDirective.ctorParameters = function () { return [ { type: Renderer2 }, { type: ElementRef } ]; }; FormFieldSizerDirective = __decorate([ Directive({ selector: '[formFieldSizer]' }), __metadata("design:paramtypes", [Renderer2, ElementRef]) ], FormFieldSizerDirective); return FormFieldSizerDirective; }()); export { FormFieldSizerDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1zaXplci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tYXQtY29udGVudGVkaXRhYmxlLyIsInNvdXJjZXMiOlsibGliL2Zvcm0tZmllbGQtc2l6ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLbkY7SUFFRSxpQ0FDbUIsUUFBbUIsRUFDbkIsVUFBc0I7UUFEdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQ3JDLENBQUM7SUFFTCxvREFBa0IsR0FBbEI7UUFDRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELDRDQUFVLEdBQVY7UUFBQSxpQkFjQztRQWJDLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFL0MsVUFBVSxDQUFDO1lBQ1QsSUFBTSxPQUFPLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQzFELElBQU0sTUFBTSxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVk7Z0JBQ3ZELE9BQU8sQ0FBQyxZQUFZO2dCQUNwQixVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUMvQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDO2dCQUNsRCxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFN0MsS0FBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBSyxNQUFNLE9BQUksQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDRDQUFVLEdBQWxCLFVBQW1CLElBQVk7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7Z0JBMUI0QixTQUFTO2dCQUNQLFVBQVU7O0lBSjlCLHVCQUF1QjtRQUhuQyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsa0JBQWtCO1NBQzdCLENBQUM7eUNBSTZCLFNBQVM7WUFDUCxVQUFVO09BSjlCLHVCQUF1QixDQStCbkM7SUFBRCw4QkFBQztDQUFBLEFBL0JELElBK0JDO1NBL0JZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgUmVuZGVyZXIyLCBFbGVtZW50UmVmLCBBZnRlckNvbnRlbnRJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmb3JtRmllbGRTaXplcl0nXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZFNpemVyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgKSB7IH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTaXplKCk7XG4gIH1cblxuICB1cGRhdGVTaXplKCkge1xuICAgIGNvbnN0IGluZml4ID0gdGhpcy5nZXRFbGVtZW50KCdtYXQtZm9ybS1maWVsZC1pbmZpeCcpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoaW5maXgsICdtaW4taGVpZ2h0Jyk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLmdldEVsZW1lbnQoJ21hdC1mb3JtLWZpZWxkLXdyYXBwZXInKTtcbiAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtXG4gICAgICAgIHdyYXBwZXIub2Zmc2V0SGVpZ2h0IC1cbiAgICAgICAgcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpLm1hcmdpblRvcCkgLVxuICAgICAgICBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUod3JhcHBlcikubWFyZ2luQm90dG9tKSArXG4gICAgICAgIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShpbmZpeCkuaGVpZ2h0KTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbmZpeCwgJ21pbi1oZWlnaHQnLCBgJHtvZmZzZXR9cHhgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWxlbWVudChuYW1lOiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobmFtZSkuaXRlbSgwKTtcbiAgfVxuXG59XG4iXX0=