UNPKG

@blox/material

Version:

Material Components for Angular

136 lines 16 kB
import { ContentChild, forwardRef, Directive, ElementRef, HostBinding, Input, Optional, Renderer2, Self } from '@angular/core'; import { NgControl } from '@angular/forms'; import { MDCFormFieldFoundation } from '@material/form-field'; import { AbstractMdcRipple } from '../ripple/abstract.mdc.ripple'; import { AbstractMdcInput } from '../abstract/abstract.mdc.input'; import { AbstractMdcLabel } from '../abstract/abstract.mdc.label'; import { asBoolean } from '../../utils/value.utils'; import { MdcEventRegistry } from '../../utils/mdc.event.registry'; let nextId = 1; export class MdcFormFieldInputDirective extends AbstractMdcInput { constructor(_elm, _cntr) { super(); this._elm = _elm; this._cntr = _cntr; this._id = null; this._disabled = false; } get id() { return this._id; } set id(value) { this._id = value; } get disabled() { return this._cntr ? !!this._cntr.disabled : this._disabled; } set disabled(value) { this._disabled = asBoolean(value); } } MdcFormFieldInputDirective.decorators = [ { type: Directive, args: [{ selector: 'input[mdcFormFieldInput], textarea[mdcFormFieldInput]', providers: [{ provide: AbstractMdcInput, useExisting: forwardRef(() => MdcFormFieldInputDirective) }] },] } ]; MdcFormFieldInputDirective.ctorParameters = () => [ { type: ElementRef }, { type: NgControl, decorators: [{ type: Optional }, { type: Self }] } ]; MdcFormFieldInputDirective.propDecorators = { id: [{ type: HostBinding }, { type: Input }], disabled: [{ type: HostBinding }, { type: Input }] }; export class MdcFormFieldLabelDirective extends AbstractMdcLabel { constructor(_elm) { super(); this._elm = _elm; this.for = null; } } MdcFormFieldLabelDirective.decorators = [ { type: Directive, args: [{ selector: 'label[mdcFormFieldLabel]', providers: [{ provide: AbstractMdcLabel, useExisting: forwardRef(() => MdcFormFieldLabelDirective) }] },] } ]; MdcFormFieldLabelDirective.ctorParameters = () => [ { type: ElementRef } ]; MdcFormFieldLabelDirective.propDecorators = { for: [{ type: HostBinding }, { type: Input }] }; export class MdcFormFieldDirective { constructor(renderer, root, registry) { this.renderer = renderer; this.root = root; this.registry = registry; /** @internal */ this._cls = true; this._alignEnd = false; this.mdcAdapter = { registerInteractionHandler: (type, handler) => { this.registry.listen(this.renderer, type, handler, this.root); }, deregisterInteractionHandler: (type, handler) => { this.registry.unlisten(type, handler); }, activateInputRipple: () => { if (this.rippleChild) this.rippleChild.activateRipple(); }, deactivateInputRipple: () => { if (this.rippleChild) this.rippleChild.deactivateRipple(); } }; this.foundation = null; } ngAfterContentInit() { if (this.mdcInput != null && this.mdcLabel != null) { if (this.mdcInput.id == null && this.mdcLabel.for == null) this.mdcInput.id = this.mdcLabel.for = `mdc-form-input-${nextId++}`; else if (this.mdcInput.id == null) this.mdcInput.id = this.mdcLabel.for; else if (this.mdcLabel.for == null) this.mdcLabel.for = this.mdcInput.id; } this.foundation = new MDCFormFieldFoundation(this.mdcAdapter); this.foundation.init(); } ngOnDestroy() { var _a; (_a = this.foundation) === null || _a === void 0 ? void 0 : _a.destroy(); this.foundation = null; } get alignEnd() { return this._alignEnd; } set alignEnd(val) { this._alignEnd = asBoolean(val); } } MdcFormFieldDirective.decorators = [ { type: Directive, args: [{ selector: '[mdcFormField]' },] } ]; MdcFormFieldDirective.ctorParameters = () => [ { type: Renderer2 }, { type: ElementRef }, { type: MdcEventRegistry } ]; MdcFormFieldDirective.propDecorators = { _cls: [{ type: HostBinding, args: ['class.mdc-form-field',] }], rippleChild: [{ type: ContentChild, args: [AbstractMdcRipple,] }], mdcInput: [{ type: ContentChild, args: [AbstractMdcInput,] }], mdcLabel: [{ type: ContentChild, args: [AbstractMdcLabel,] }], alignEnd: [{ type: Input }, { type: HostBinding, args: ['class.mdc-form-field--align-end',] }] }; export const FORM_FIELD_DIRECTIVES = [ MdcFormFieldInputDirective, MdcFormFieldLabelDirective, MdcFormFieldDirective ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRjLmZvcm0tZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9tZGMuZm9ybS1maWVsZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixZQUFZLEVBQW1CLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFDdEcsS0FBSyxFQUFhLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQXVCLE1BQU0sc0JBQXNCLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQU1mLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBZ0I7SUFJNUQsWUFBbUIsSUFBZ0IsRUFBNkIsS0FBZ0I7UUFDNUUsS0FBSyxFQUFFLENBQUM7UUFETyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQTZCLFVBQUssR0FBTCxLQUFLLENBQVc7UUFIeEUsUUFBRyxHQUFrQixJQUFJLENBQUM7UUFDMUIsY0FBUyxHQUFHLEtBQUssQ0FBQztJQUkxQixDQUFDO0lBRUQsSUFDYSxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJ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aUNBQWlDOztBQVczRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNqQywwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLHFCQUFxQjtDQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIGZvcndhcmRSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCwgT25EZXN0cm95LCBPcHRpb25hbCwgUmVuZGVyZXIyLCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTURDRm9ybUZpZWxkRm91bmRhdGlvbiwgTURDRm9ybUZpZWxkQWRhcHRlciB9IGZyb20gJ0BtYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgQWJzdHJhY3RNZGNSaXBwbGUgfSBmcm9tICcuLi9yaXBwbGUvYWJzdHJhY3QubWRjLnJpcHBsZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0TWRjSW5wdXQgfSBmcm9tICcuLi9hYnN0cmFjdC9hYnN0cmFjdC5tZGMuaW5wdXQnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdE1kY0xhYmVsIH0gZnJvbSAnLi4vYWJzdHJhY3QvYWJzdHJhY3QubWRjLmxhYmVsJztcclxuaW1wb3J0IHsgYXNCb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsdWUudXRpbHMnO1xyXG5pbXBvcnQgeyBNZGNFdmVudFJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vdXRpbHMvbWRjLmV2ZW50LnJlZ2lzdHJ5JztcclxuXHJcbmxldCBuZXh0SWQgPSAxO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ2lucHV0W21kY0Zvcm1GaWVsZElucHV0XSwgdGV4dGFyZWFbbWRjRm9ybUZpZWxkSW5wdXRdJyxcclxuICAgIHByb3ZpZGVyczogW3twcm92aWRlOiBBYnN0cmFjdE1kY0lucHV0LCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNZGNGb3JtRmllbGRJbnB1dERpcmVjdGl2ZSkgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1kY0Zvcm1GaWVsZElucHV0RGlyZWN0aXZlIGV4dGVuZHMgQWJzdHJhY3RNZGNJbnB1dCB7XHJcbiAgICBwcml2YXRlIF9pZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBfZWxtOiBFbGVtZW50UmVmLCBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBfY250cjogTmdDb250cm9sKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoKVxyXG4gICAgQElucHV0KCkgZ2V0IGlkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pZDtcclxuICAgIH1cclxuICBcclxuICAgIHNldCBpZCh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX2lkID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKClcclxuICAgIEBJbnB1dCgpIGdldCBkaXNhYmxlZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY250ciA/ICEhdGhpcy5fY250ci5kaXNhYmxlZCA6IHRoaXMuX2Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gYXNCb29sZWFuKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IGJvb2xlYW4gfCAnJztcclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ2xhYmVsW21kY0Zvcm1GaWVsZExhYmVsXScsXHJcbiAgICBwcm92aWRlcnM6IFt7cHJvdmlkZTogQWJzdHJhY3RNZGNMYWJlbCwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWRjRm9ybUZpZWxkTGFiZWxEaXJlY3RpdmUpIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZGNGb3JtRmllbGRMYWJlbERpcmVjdGl2ZSBleHRlbmRzIEFic3RyYWN0TWRjTGFiZWwge1xyXG4gICAgQEhvc3RCaW5kaW5nKCkgQElucHV0KCkgZm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgX2VsbTogRWxlbWVudFJlZikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbbWRjRm9ybUZpZWxkXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1kY0Zvcm1GaWVsZERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XHJcbiAgICAvKiogQGludGVybmFsICovXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1kYy1mb3JtLWZpZWxkJykgcmVhZG9ubHkgX2NscyA9IHRydWU7XHJcbiAgICBwcml2YXRlIF9hbGlnbkVuZCA9IGZhbHNlO1xyXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChBYnN0cmFjdE1kY1JpcHBsZSkgcmlwcGxlQ2hpbGQ/OiBBYnN0cmFjdE1kY1JpcHBsZTtcclxuICAgIC8qKiBAaW50ZXJuYWwgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoQWJzdHJhY3RNZGNJbnB1dCkgbWRjSW5wdXQ/OiBBYnN0cmFjdE1kY0lucHV0O1xyXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChBYnN0cmFjdE1kY0xhYmVsKSBtZGNMYWJlbD86IEFic3RyYWN0TWRjTGFiZWw7XHJcblxyXG4gICAgcHJpdmF0ZSBtZGNBZGFwdGVyOiBNRENGb3JtRmllbGRBZGFwdGVyID0ge1xyXG4gICAgICAgIHJlZ2lzdGVySW50ZXJhY3Rpb25IYW5kbGVyOiAodHlwZSwgaGFuZGxlcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlZ2lzdHJ5Lmxpc3Rlbih0aGlzLnJlbmRlcmVyLCB0eXBlLCBoYW5kbGVyLCB0aGlzLnJvb3QpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGVyZWdpc3RlckludGVyYWN0aW9uSGFuZGxlcjogKHR5cGUsIGhhbmRsZXIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWdpc3RyeS51bmxpc3Rlbih0eXBlLCBoYW5kbGVyKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFjdGl2YXRlSW5wdXRSaXBwbGU6ICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmlwcGxlQ2hpbGQpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJpcHBsZUNoaWxkLmFjdGl2YXRlUmlwcGxlKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZWFjdGl2YXRlSW5wdXRSaXBwbGU6ICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmlwcGxlQ2hpbGQpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJpcHBsZUNoaWxkLmRlYWN0aXZhdGVSaXBwbGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcHJpdmF0ZSBmb3VuZGF0aW9uOiBNRENGb3JtRmllbGRGb3VuZGF0aW9uIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIHJvb3Q6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVnaXN0cnk6IE1kY0V2ZW50UmVnaXN0cnkpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWRjSW5wdXQgIT0gbnVsbCAmJiB0aGlzLm1kY0xhYmVsICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWRjSW5wdXQuaWQgPT0gbnVsbCAmJiB0aGlzLm1kY0xhYmVsLmZvciA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5tZGNJbnB1dC5pZCA9IHRoaXMubWRjTGFiZWwuZm9yID0gYG1kYy1mb3JtLWlucHV0LSR7bmV4dElkKyt9YDtcclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tZGNJbnB1dC5pZCA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5tZGNJbnB1dC5pZCA9IHRoaXMubWRjTGFiZWwuZm9yO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLm1kY0xhYmVsLmZvciA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5tZGNMYWJlbC5mb3IgPSB0aGlzLm1kY0lucHV0LmlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZvdW5kYXRpb24gPSBuZXcgTURDRm9ybUZpZWxkRm91bmRhdGlvbih0aGlzLm1kY0FkYXB0ZXIpO1xyXG4gICAgICAgIHRoaXMuZm91bmRhdGlvbi5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5mb3VuZGF0aW9uPy5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5mb3VuZGF0aW9uID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzLm1kYy1mb3JtLWZpZWxkLS1hbGlnbi1lbmQnKSBnZXQgYWxpZ25FbmQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsaWduRW5kO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBhbGlnbkVuZCh2YWw6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9hbGlnbkVuZCA9IGFzQm9vbGVhbih2YWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9hbGlnbkVuZDogYm9vbGVhbiB8ICcnO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRk9STV9GSUVMRF9ESVJFQ1RJVkVTID0gW1xyXG4gICAgTWRjRm9ybUZpZWxkSW5wdXREaXJlY3RpdmUsXHJcbiAgICBNZGNGb3JtRmllbGRMYWJlbERpcmVjdGl2ZSxcclxuICAgIE1kY0Zvcm1GaWVsZERpcmVjdGl2ZVxyXG5dO1xyXG4iXX0=