UNPKG

@blox/material

Version:

Material Components for Angular

125 lines 13.8 kB
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==