UNPKG

@coreui/angular

Version:

CoreUI Components Library for Angular

66 lines 7.61 kB
import { booleanAttribute, Directive, HostBinding, Input } from '@angular/core'; import * as i0 from "@angular/core"; export class FormControlDirective { constructor(hostElement) { this.hostElement = hostElement; /** * Size the component small or large. * @type {'sm' | 'lg'} */ this.sizing = ''; /** * Specifies the type of input element. */ this.type = 'text'; /** * Render the component styled as plain text. Removes the default form field styling and preserve the correct margin and padding. Recommend to use alongside `readonly` [docs] */ this.plaintext = false; } get hostClasses() { const isRangeType = this.type === 'range'; return { 'form-control': !isRangeType && !this.plaintext, 'form-control-plaintext': !isRangeType && this.plaintext, 'form-control-color': this.type === 'color', 'form-range': isRangeType, [`form-control-${this.sizing}`]: !!this.sizing && !isRangeType, 'is-valid': this.valid === true, 'is-invalid': this.valid === false }; } get hostTag() { return this.hostElement.nativeElement.tagName; } ngOnInit() { const hostTag = this.hostTag.toLowerCase(); if (hostTag !== 'input' && hostTag !== 'textarea') { console.warn(`CoreUI [cFormControl] works with '<input>' and '<textarea>' - not with '<${hostTag}>'`); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FormControlDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.12", type: FormControlDirective, isStandalone: true, selector: "input[cFormControl], textarea[cFormControl]", inputs: { sizing: "sizing", valid: "valid", type: "type", plaintext: ["plaintext", "plaintext", booleanAttribute] }, host: { properties: { "attr.type": "this.type", "class": "this.hostClasses" } }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FormControlDirective, decorators: [{ type: Directive, args: [{ selector: 'input[cFormControl], textarea[cFormControl]', standalone: true }] }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { sizing: [{ type: Input }], valid: [{ type: Input }], type: [{ type: HostBinding, args: ['attr.type'] }, { type: Input }], plaintext: [{ type: Input, args: [{ transform: booleanAttribute }] }], hostClasses: [{ type: HostBinding, args: ['class'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvZm9ybS9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBUXBHLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsWUFDVSxXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUdqQzs7O1dBR0c7UUFDTSxXQUFNLEdBQStCLEVBQUUsQ0FBQztRQU9qRDs7V0FFRztRQUVNLFNBQUksR0FBMEMsTUFBTSxDQUFDO1FBRTlEOztXQUVHO1FBQ3FDLGNBQVMsR0FBcUIsS0FBSyxDQUFDO0lBdEJ6RSxDQUFDO0lBd0JKLElBQ0ksV0FBVztRQUViLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDO1FBRTFDLE9BQU87WUFDTCxjQUFjLEVBQUUsQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUMvQyx3QkFBd0IsRUFBRSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUztZQUN4RCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU87WUFDM0MsWUFBWSxFQUFFLFdBQVc7WUFDekIsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXO1lBQzlELFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUk7WUFDL0IsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSztTQUNuQyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQ2hELENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQyxJQUFJLE9BQU8sS0FBSyxPQUFPLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQUMsNEVBQTRFLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFDeEcsQ0FBQztJQUNILENBQUM7K0dBckRVLG9CQUFvQjttR0FBcEIsb0JBQW9CLCtLQTBCWCxnQkFBZ0I7OzRGQTFCekIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2Q0FBNkM7b0JBQ3ZELFVBQVUsRUFBRSxJQUFJO2lCQUNqQjsrRUFXVSxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQU1HLElBQUk7c0JBRFosV0FBVzt1QkFBQyxXQUFXOztzQkFDdkIsS0FBSztnQkFLa0MsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFHbEMsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uL2NvcmV1aS50eXBlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W2NGb3JtQ29udHJvbF0sIHRleHRhcmVhW2NGb3JtQ29udHJvbF0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmXG4gICkge31cblxuICAvKipcbiAgICogU2l6ZSB0aGUgY29tcG9uZW50IHNtYWxsIG9yIGxhcmdlLlxuICAgKiBAdHlwZSB7J3NtJyB8ICdsZyd9XG4gICAqL1xuICBASW5wdXQoKSBzaXppbmc/OiAnJyB8ICdzbScgfCAnbGcnIHwgc3RyaW5nID0gJyc7XG4gIC8qKlxuICAgKiBTZXQgY29tcG9uZW50IHZhbGlkYXRpb24gc3RhdGUgdG8gdmFsaWQuXG4gICAqIEB0eXBlIGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHZhbGlkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0eXBlIG9mIGlucHV0IGVsZW1lbnQuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIudHlwZScpXG4gIEBJbnB1dCgpIHR5cGU6IE9taXQ8SW5wdXRUeXBlLCAnY2hlY2tib3gnIHwgJ3JhZGlvJz4gPSAndGV4dCc7XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgY29tcG9uZW50IHN0eWxlZCBhcyBwbGFpbiB0ZXh0LiBSZW1vdmVzIHRoZSBkZWZhdWx0IGZvcm0gZmllbGQgc3R5bGluZyBhbmQgcHJlc2VydmUgdGhlIGNvcnJlY3QgbWFyZ2luIGFuZCBwYWRkaW5nLiBSZWNvbW1lbmQgdG8gdXNlIGFsb25nc2lkZSBgcmVhZG9ubHlgIFtkb2NzXVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHBsYWludGV4dDogc3RyaW5nIHwgYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKTogYW55IHtcblxuICAgIGNvbnN0IGlzUmFuZ2VUeXBlID0gdGhpcy50eXBlID09PSAncmFuZ2UnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICdmb3JtLWNvbnRyb2wnOiAhaXNSYW5nZVR5cGUgJiYgIXRoaXMucGxhaW50ZXh0LFxuICAgICAgJ2Zvcm0tY29udHJvbC1wbGFpbnRleHQnOiAhaXNSYW5nZVR5cGUgJiYgdGhpcy5wbGFpbnRleHQsXG4gICAgICAnZm9ybS1jb250cm9sLWNvbG9yJzogdGhpcy50eXBlID09PSAnY29sb3InLFxuICAgICAgJ2Zvcm0tcmFuZ2UnOiBpc1JhbmdlVHlwZSxcbiAgICAgIFtgZm9ybS1jb250cm9sLSR7dGhpcy5zaXppbmd9YF06ICEhdGhpcy5zaXppbmcgJiYgIWlzUmFuZ2VUeXBlLFxuICAgICAgJ2lzLXZhbGlkJzogdGhpcy52YWxpZCA9PT0gdHJ1ZSxcbiAgICAgICdpcy1pbnZhbGlkJzogdGhpcy52YWxpZCA9PT0gZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGhvc3RUYWcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRhZ05hbWU7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBob3N0VGFnID0gdGhpcy5ob3N0VGFnLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGhvc3RUYWcgIT09ICdpbnB1dCcgJiYgaG9zdFRhZyAhPT0gJ3RleHRhcmVhJykge1xuICAgICAgY29uc29sZS53YXJuKGBDb3JlVUkgW2NGb3JtQ29udHJvbF0gd29ya3Mgd2l0aCAnPGlucHV0PicgYW5kICc8dGV4dGFyZWE+JyAtIG5vdCB3aXRoICc8JHtob3N0VGFnfT4nYCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==