mat-contenteditable
Version:
Angular contenteditable directive for Angular forms and Material Design
74 lines (73 loc) • 5.31 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Directive, Renderer2, ElementRef } from '@angular/core';
var FormFieldSizerDirective = /** @class */ (function () {
function FormFieldSizerDirective(renderer, elementRef) {
this.renderer = renderer;
this.elementRef = elementRef;
}
/**
* @return {?}
*/
FormFieldSizerDirective.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
this.updateSize();
};
/**
* @return {?}
*/
FormFieldSizerDirective.prototype.updateSize = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var infix = this.getElement('mat-form-field-infix');
this.renderer.removeStyle(infix, 'min-height');
setTimeout(function () {
/** @type {?} */
var wrapper = _this.getElement('mat-form-field-wrapper');
/** @type {?} */
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");
});
};
/**
* @param {?} name
* @return {?}
*/
FormFieldSizerDirective.prototype.getElement = /**
* @param {?} name
* @return {?}
*/
function (name) {
return this.elementRef.nativeElement.getElementsByClassName(name).item(0);
};
FormFieldSizerDirective.decorators = [
{ type: Directive, args: [{
selector: '[formFieldSizer]'
},] }
];
/** @nocollapse */
FormFieldSizerDirective.ctorParameters = function () { return [
{ type: Renderer2 },
{ type: ElementRef }
]; };
return FormFieldSizerDirective;
}());
export { FormFieldSizerDirective };
if (false) {
/** @type {?} */
FormFieldSizerDirective.prototype.renderer;
/** @type {?} */
FormFieldSizerDirective.prototype.elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1zaXplci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tYXQtY29udGVudGVkaXRhYmxlLyIsInNvdXJjZXMiOlsibGliL2Zvcm0tZmllbGQtc2l6ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQW9CLE1BQU0sZUFBZSxDQUFDOztJQU9qRixpQ0FDbUIsVUFDQTtRQURBLGFBQVEsR0FBUixRQUFRO1FBQ1IsZUFBVSxHQUFWLFVBQVU7S0FDeEI7Ozs7SUFFTCxvREFBa0I7OztJQUFsQjtRQUNFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUNuQjs7OztJQUVELDRDQUFVOzs7SUFBVjtRQUFBLGlCQWNDOztRQWJDLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFL0MsVUFBVSxDQUFDOztZQUNULElBQU0sT0FBTyxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQzs7WUFDMUQsSUFBTSxNQUFNLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWTtnQkFDdkQsT0FBTyxDQUFDLFlBQVk7Z0JBQ3BCLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQy9DLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUM7Z0JBQ2xELFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU3QyxLQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFLLE1BQU0sT0FBSSxDQUFDLENBQUM7U0FDNUQsQ0FBQyxDQUFDO0tBQ0o7Ozs7O0lBRU8sNENBQVU7Ozs7Y0FBQyxJQUFZO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7Z0JBL0I3RSxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7Ozs7Z0JBSm1CLFNBQVM7Z0JBQUUsVUFBVTs7a0NBQXpDOztTQUthLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgUmVuZGVyZXIyLCBFbGVtZW50UmVmLCBBZnRlckNvbnRlbnRJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmb3JtRmllbGRTaXplcl0nXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZFNpemVyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgKSB7IH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTaXplKCk7XG4gIH1cblxuICB1cGRhdGVTaXplKCkge1xuICAgIGNvbnN0IGluZml4ID0gdGhpcy5nZXRFbGVtZW50KCdtYXQtZm9ybS1maWVsZC1pbmZpeCcpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoaW5maXgsICdtaW4taGVpZ2h0Jyk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLmdldEVsZW1lbnQoJ21hdC1mb3JtLWZpZWxkLXdyYXBwZXInKTtcbiAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtXG4gICAgICAgIHdyYXBwZXIub2Zmc2V0SGVpZ2h0IC1cbiAgICAgICAgcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpLm1hcmdpblRvcCkgLVxuICAgICAgICBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUod3JhcHBlcikubWFyZ2luQm90dG9tKSArXG4gICAgICAgIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShpbmZpeCkuaGVpZ2h0KTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbmZpeCwgJ21pbi1oZWlnaHQnLCBgJHtvZmZzZXR9cHhgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWxlbWVudChuYW1lOiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobmFtZSkuaXRlbSgwKTtcbiAgfVxuXG59XG4iXX0=