@blox/material
Version:
Material Components for Angular
125 lines • 13.8 kB
JavaScript
import { Directive, ElementRef, HostBinding, Renderer2, ContentChildren } from '@angular/core';
import { MDCNotchedOutlineFoundation } from '@material/notched-outline';
/**
* This directive styles the notch of an `mdcNotchedOutline`. It should wrap the (floating)
* label of an input like `mdcTextField` or `mdcSelect`.
*/
export class MdcNotchedOutlineNotchDirective {
constructor(_elm) {
this._elm = _elm;
/** @internal */
this._cls = true;
}
}
MdcNotchedOutlineNotchDirective.decorators = [
{ type: Directive, args: [{
selector: '[mdcNotchedOutlineNotch]'
},] }
];
MdcNotchedOutlineNotchDirective.ctorParameters = () => [
{ type: ElementRef }
];
MdcNotchedOutlineNotchDirective.propDecorators = {
_cls: [{ type: HostBinding, args: ['class.mdc-notched-outline__notch',] }]
};
/**
* The notched outline is a border around all sides of either an `mdcTextField` or an
* `mdcSelect`. It should only be used for the outlined variant of these inputs.
* This directive should wrap an `mdcNotchedOutlineNotch`, which in turn wraps the
* actual label.
*/
export class MdcNotchedOutlineDirective {
constructor(rndr, root) {
this.rndr = rndr;
this.root = root;
/** @internal */
this._cls = true;
this.notchWidth = null;
this.mdcAdapter = {
addClass: (name) => this.rndr.addClass(this.root.nativeElement, name),
removeClass: (name) => this.rndr.removeClass(this.root.nativeElement, name),
setNotchWidthProperty: (width) => this.rndr.setStyle(this.notch._elm.nativeElement, 'width', `${width}px`),
removeNotchWidthProperty: () => this.rndr.removeStyle(this.notch._elm.nativeElement, 'width')
};
this.foundation = null;
this.addSurround('mdc-notched-outline__leading');
}
ngAfterContentInit() {
this.addSurround('mdc-notched-outline__trailing');
if (this.notch)
this.initFoundation();
this._notches.changes.subscribe(() => {
this.destroyFoundation();
if (this._notches.length > 0)
this.initFoundation();
});
}
ngOnDestroy() {
this.destroyFoundation();
}
initFoundation() {
this.foundation = new MDCNotchedOutlineFoundation(this.mdcAdapter);
this.foundation.init();
if (this.notchWidth)
this.foundation.notch(this.notchWidth);
else
this.foundation.closeNotch();
}
destroyFoundation() {
if (this.foundation) {
this.foundation.destroy();
this.foundation = null;
}
}
addSurround(clazz) {
let surround = this.rndr.createElement('span');
this.rndr.addClass(surround, clazz);
this.rndr.appendChild(this.root.nativeElement, surround);
}
get notch() {
var _a;
return (_a = this._notches) === null || _a === void 0 ? void 0 : _a.first;
}
/**
* Opens the notched outline.
*
* @param width The width of the notch.
*/
open(width) {
// TODO we actually want to compare the size here as well as the open/closed state (by dropping !! on both sides)
// but this reduces the width of the label when the input has a non-empty value. Needs investigation.
if (!!this.notchWidth !== !!width) {
this.notchWidth = width;
if (this.foundation)
this.foundation.notch(width);
}
}
/**
* Closes the notched outline.
*/
close() {
if (this.notchWidth != null) {
this.notchWidth = null;
if (this.foundation)
this.foundation.closeNotch();
}
}
}
MdcNotchedOutlineDirective.decorators = [
{ type: Directive, args: [{
selector: '[mdcNotchedOutline]'
},] }
];
MdcNotchedOutlineDirective.ctorParameters = () => [
{ type: Renderer2 },
{ type: ElementRef }
];
MdcNotchedOutlineDirective.propDecorators = {
_cls: [{ type: HostBinding, args: ['class.mdc-notched-outline',] }],
_notches: [{ type: ContentChildren, args: [MdcNotchedOutlineNotchDirective,] }]
};
export const NOTCHED_OUTLINE_DIRECTIVES = [
MdcNotchedOutlineNotchDirective,
MdcNotchedOutlineDirective
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRjLm5vdGNoZWQtb3V0bGluZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ub3RjaGVkLW91dGxpbmUvbWRjLm5vdGNoZWQtb3V0bGluZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxTQUFTLEVBQUUsZUFBZSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3ZJLE9BQU8sRUFBRSwyQkFBMkIsRUFBNEIsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sK0JBQStCO0lBSXhDLFlBQW1CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFIbkMsZ0JBQWdCO1FBQzBDLFNBQUksR0FBRyxJQUFJLENBQUM7SUFHdEUsQ0FBQzs7O1lBUkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwwQkFBMEI7YUFDdkM7OztZQVRxQyxVQUFVOzs7bUJBWTNDLFdBQVcsU0FBQyxrQ0FBa0M7O0FBTW5EOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLDBCQUEwQjtJQWNuQyxZQUFvQixJQUFlLEVBQVUsSUFBZ0I7UUFBekMsU0FBSSxHQUFKLElBQUksQ0FBVztRQUFVLFNBQUksR0FBSixJQUFJLENBQVk7UUFiN0QsZ0JBQWdCO1FBQ21DLFNBQUksR0FBRyxJQUFJLENBQUM7UUFHdkQsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDakMsZUFBVSxHQUE2QjtZQUMzQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQztZQUNyRSxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FB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O1lBQ3ZCLElBQUksSUFBSSxDQUFDLFVBQVU7Z0JBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNwQztJQUNMLENBQUM7OztZQXRGSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjthQUNsQzs7O1lBMUJ5RSxTQUFTO1lBQTdDLFVBQVU7OzttQkE2QjNDLFdBQVcsU0FBQywyQkFBMkI7dUJBRXZDLGVBQWUsU0FBQywrQkFBK0I7O0FBa0ZwRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUN0QywrQkFBK0I7SUFDL0IsMEJBQTBCO0NBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1EQ05vdGNoZWRPdXRsaW5lRm91bmRhdGlvbiwgTURDTm90Y2hlZE91dGxpbmVBZGFwdGVyIH0gZnJvbSAnQG1hdGVyaWFsL25vdGNoZWQtb3V0bGluZSc7XG4gIFxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSBzdHlsZXMgdGhlIG5vdGNoIG9mIGFuIGBtZGNOb3RjaGVkT3V0bGluZWAuIEl0IHNob3VsZCB3cmFwIHRoZSAoZmxvYXRpbmcpXG4gKiBsYWJlbCBvZiBhbiBpbnB1dCBsaWtlIGBtZGNUZXh0RmllbGRgIG9yIGBtZGNTZWxlY3RgLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttZGNOb3RjaGVkT3V0bGluZU5vdGNoXSdcbn0pXG5leHBvcnQgY2xhc3MgTWRjTm90Y2hlZE91dGxpbmVOb3RjaERpcmVjdGl2ZSB7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gnKSByZWFkb25seSBfY2xzID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBfZWxtOiBFbGVtZW50UmVmKSB7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBub3RjaGVkIG91dGxpbmUgaXMgYSBib3JkZXIgYXJvdW5kIGFsbCBzaWRlcyBvZiBlaXRoZXIgYW4gYG1kY1RleHRGaWVsZGAgb3IgYW5cbiAqIGBtZGNTZWxlY3RgLiBJdCBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0aGUgb3V0bGluZWQgdmFyaWFudCBvZiB0aGVzZSBpbnB1dHMuXG4gKiBUaGlzIGRpcmVjdGl2ZSBzaG91bGQgd3JhcCBhbiBgbWRjTm90Y2hlZE91dGxpbmVOb3RjaGAsIHdoaWNoIGluIHR1cm4gd3JhcHMgdGhlXG4gKiBhY3R1YWwgbGFiZWwuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW21kY05vdGNoZWRPdXRsaW5lXSdcbn0pXG5leHBvcnQgY2xhc3MgTWRjTm90Y2hlZE91dGxpbmVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1kYy1ub3RjaGVkLW91dGxpbmUnKSByZWFkb25seSBfY2xzID0gdHJ1ZTtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihNZGNOb3RjaGVkT3V0bGluZU5vdGNoRGlyZWN0aXZlKSBfbm90Y2hlcz86IFF1ZXJ5TGlzdDxNZGNOb3RjaGVkT3V0bGluZU5vdGNoRGlyZWN0aXZlPjtcbiAgICBwcml2YXRlIG5vdGNoV2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgbWRjQWRhcHRlcjogTURDTm90Y2hlZE91dGxpbmVBZGFwdGVyID0ge1xuICAgICAgICBhZGRDbGFzczogKG5hbWUpID0+IHRoaXMucm5kci5hZGRDbGFzcyh0aGlzLnJvb3QubmF0aXZlRWxlbWVudCwgbmFtZSksXG4gICAgICAgIHJlbW92ZUNsYXNzOiAobmFtZSkgPT4gdGhpcy5ybmRyLnJlbW92ZUNsYXNzKHRoaXMucm9vdC5uYXRpdmVFbGVtZW50LCBuYW1lKSxcbiAgICAgICAgc2V0Tm90Y2hXaWR0aFByb3BlcnR5OiAod2lkdGgpID0+IHRoaXMucm5kci5zZXRTdHlsZSh0aGlzLm5vdGNoIS5fZWxtLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3dpZHRofXB4YCksXG4gICAgICAgIHJlbW92ZU5vdGNoV2lkdGhQcm9wZXJ0eTogKCkgPT4gdGhpcy5ybmRyLnJlbW92ZVN0eWxlKHRoaXMubm90Y2ghLl9lbG0ubmF0aXZlRWxlbWVudCwgJ3dpZHRoJylcbiAgICB9O1xuICAgIHByaXZhdGUgZm91bmRhdGlvbjogTURDTm90Y2hlZE91dGxpbmVGb3VuZGF0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJuZHI6IFJlbmRlcmVyMiwgcHJpdmF0ZSByb290OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuYWRkU3Vycm91bmQoJ21kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcnKVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5hZGRTdXJyb3VuZCgnbWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcnKTtcbiAgICAgICAgaWYgKHRoaXMubm90Y2gpXG4gICAgICAgICAgICB0aGlzLmluaXRGb3VuZGF0aW9uKCk7XG4gICAgICAgIHRoaXMuX25vdGNoZXMhLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveUZvdW5kYXRpb24oKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9ub3RjaGVzIS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEZvdW5kYXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveUZvdW5kYXRpb24oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRGb3VuZGF0aW9uKCkge1xuICAgICAgICB0aGlzLmZvdW5kYXRpb24gPSBuZXcgTURDTm90Y2hlZE91dGxpbmVGb3VuZGF0aW9uKHRoaXMubWRjQWRhcHRlcik7XG4gICAgICAgIHRoaXMuZm91bmRhdGlvbi5pbml0KCk7XG4gICAgICAgIGlmICh0aGlzLm5vdGNoV2lkdGgpXG4gICAgICAgICAgICB0aGlzLmZvdW5kYXRpb24ubm90Y2godGhpcy5ub3RjaFdpZHRoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5mb3VuZGF0aW9uLmNsb3NlTm90Y2goKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lGb3VuZGF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5mb3VuZGF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmZvdW5kYXRpb24uZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5mb3VuZGF0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWRkU3Vycm91bmQoY2xheno6IHN0cmluZykge1xuICAgICAgICBsZXQgc3Vycm91bmQgPSB0aGlzLnJuZHIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0aGlzLnJuZHIuYWRkQ2xhc3Moc3Vycm91bmQsY2xhenopO1xuICAgICAgICB0aGlzLnJuZHIuYXBwZW5kQ2hpbGQodGhpcy5yb290Lm5hdGl2ZUVsZW1lbnQsIHN1cnJvdW5kKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBub3RjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vdGNoZXM/LmZpcnN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBub3RjaGVkIG91dGxpbmUuXG4gICAgICogXG4gICAgICogQHBhcmFtIHdpZHRoIFRoZSB3aWR0aCBvZiB0aGUgbm90Y2guXG4gICAgICovXG4gICAgb3Blbih3aWR0aDogbnVtYmVyKSB7XG4gICAgICAgIC8vIFRPRE8gd2UgYWN0dWFsbHkgd2FudCB0byBjb21wYXJlIHRoZSBzaXplIGhlcmUgYXMgd2VsbCBhcyB0aGUgb3Blbi9jbG9zZWQgc3RhdGUgKGJ5IGRyb3BwaW5nICEhIG9uIGJvdGggc2lkZXMpXG4gICAgICAgIC8vIGJ1dCB0aGlzIHJlZHVjZXMgdGhlIHdpZHRoIG9mIHRoZSBsYWJlbCB3aGVuIHRoZSBpbnB1dCBoYXMgYSBub24tZW1wdHkgdmFsdWUuIE5lZWRzIGludmVzdGlnYXRpb24uXG4gICAgICAgIGlmICghIXRoaXMubm90Y2hXaWR0aCAhPT0gISF3aWR0aCkge1xuICAgICAgICAgICAgdGhpcy5ub3RjaFdpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICBpZiAodGhpcy5mb3VuZGF0aW9uKVxuICAgICAgICAgICAgICAgIHRoaXMuZm91bmRhdGlvbi5ub3RjaCh3aWR0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIG5vdGNoZWQgb3V0bGluZS5cbiAgICAgKi9cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubm90Y2hXaWR0aCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGNoV2lkdGggPSBudWxsO1xuICAgICAgICAgICAgaWYgKHRoaXMuZm91bmRhdGlvbilcbiAgICAgICAgICAgICAgICB0aGlzLmZvdW5kYXRpb24uY2xvc2VOb3RjaCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgTk9UQ0hFRF9PVVRMSU5FX0RJUkVDVElWRVMgPSBbXG4gICAgTWRjTm90Y2hlZE91dGxpbmVOb3RjaERpcmVjdGl2ZSxcbiAgICBNZGNOb3RjaGVkT3V0bGluZURpcmVjdGl2ZVxuXTtcbiJdfQ==