@hxui/angular
Version:
* * *
76 lines • 5.27 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { Directive, HostListener, ElementRef, HostBinding } from '@angular/core';
export class TextInputDirective {
/**
* @param {?} el
*/
constructor(el) {
this.el = el;
this.styleLabel();
}
/**
* @return {?}
*/
onFocus() {
this.styleLabelAsFloating();
}
/**
* @return {?}
*/
onBlur() {
this.styleLabel();
}
/**
* @return {?}
*/
styleLabel() {
// If the element is empty, style the label like a placeholder otherwise float the label above the input
if (this.el.nativeElement.value.trim().length === 0 && this.el.nativeElement.placeholder.trim().length === 0) {
this.styleLabelAsPlaceholder();
}
else {
this.styleLabelAsFloating();
}
}
/**
* @return {?}
*/
styleLabelAsPlaceholder() {
this.isPlaceholder = true;
this.isLabel = false;
}
/**
* @return {?}
*/
styleLabelAsFloating() {
this.isPlaceholder = false;
this.isLabel = true;
}
}
TextInputDirective.decorators = [
{ type: Directive, args: [{
selector: '[hxaTextInput]'
},] },
];
/** @nocollapse */
TextInputDirective.ctorParameters = () => [
{ type: ElementRef }
];
TextInputDirective.propDecorators = {
isPlaceholder: [{ type: HostBinding, args: ['class.has-label-placeholder',] }],
isLabel: [{ type: HostBinding, args: ['class.has-label-floating',] }],
onFocus: [{ type: HostListener, args: ['focus',] }],
onBlur: [{ type: HostListener, args: ['blur',] }]
};
if (false) {
/** @type {?} */
TextInputDirective.prototype.isPlaceholder;
/** @type {?} */
TextInputDirective.prototype.isLabel;
/** @type {?} */
TextInputDirective.prototype.el;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaHh1aS9hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFLN0UsTUFBTSxPQUFPLGtCQUFrQjs7OztJQUs3QixZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUMxQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7OztJQUdELE9BQU87UUFDSCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDOzs7O0lBR0QsTUFBTTtRQUNGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7O0lBRUQsVUFBVTtRQUNOLHdHQUF3RztRQUN4RyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFJO1lBQzVHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2xDO2FBQU07WUFDSCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUMvQjtJQUNMLENBQUM7Ozs7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQzs7OztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDOzs7WUF2Q0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxnQkFBZ0I7YUFDM0I7Ozs7WUFKOEIsVUFBVTs7OzRCQU94QyxXQUFXLFNBQUMsNkJBQTZCO3NCQUN6QyxXQUFXLFNBQUMsMEJBQTBCO3NCQU1wQyxZQUFZLFNBQUMsT0FBTztxQkFLcEIsWUFBWSxTQUFDLE1BQU07Ozs7SUFadEIsMkNBQW1FOztJQUNuRSxxQ0FBMEQ7O0lBRTVDLGdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbaHhhVGV4dElucHV0XSdcclxuICB9KVxyXG4gIGV4cG9ydCBjbGFzcyBUZXh0SW5wdXREaXJlY3RpdmUge1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhhcy1sYWJlbC1wbGFjZWhvbGRlcicpIGlzUGxhY2Vob2xkZXI6IGJvb2xlYW47XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtbGFiZWwtZmxvYXRpbmcnKSBpc0xhYmVsOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5zdHlsZUxhYmVsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxyXG4gICAgb25Gb2N1cygpIHtcclxuICAgICAgICB0aGlzLnN0eWxlTGFiZWxBc0Zsb2F0aW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignYmx1cicpXHJcbiAgICBvbkJsdXIoKSB7XHJcbiAgICAgICAgdGhpcy5zdHlsZUxhYmVsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3R5bGVMYWJlbCgpIHtcclxuICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBlbXB0eSwgc3R5bGUgdGhlIGxhYmVsIGxpa2UgYSBwbGFjZWhvbGRlciBvdGhlcndpc2UgZmxvYXQgdGhlIGxhYmVsIGFib3ZlIHRoZSBpbnB1dFxyXG4gICAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGxhY2Vob2xkZXIudHJpbSgpLmxlbmd0aCA9PT0gMCApICB7XHJcbiAgICAgICAgICAgIHRoaXMuc3R5bGVMYWJlbEFzUGxhY2Vob2xkZXIoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnN0eWxlTGFiZWxBc0Zsb2F0aW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0eWxlTGFiZWxBc1BsYWNlaG9sZGVyKCkge1xyXG4gICAgICB0aGlzLmlzUGxhY2Vob2xkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzTGFiZWwgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzdHlsZUxhYmVsQXNGbG9hdGluZygpIHtcclxuICAgICAgdGhpcy5pc1BsYWNlaG9sZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNMYWJlbCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuIl19