@blox/material
Version:
Material Components for Angular
136 lines • 16 kB
JavaScript
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=