UNPKG

@blox/material

Version:

Material Components for Angular

111 lines 10.9 kB
import { Directive, ElementRef, HostBinding, Input, Renderer2, forwardRef, ContentChild, Inject } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { asBoolean } from '../../utils/value.utils'; import { AbstractMdcRipple } from '../ripple/abstract.mdc.ripple'; import { MdcEventRegistry } from '../../utils/mdc.event.registry'; /** * Directive for the icon of a Floating Action Button * (`mdcFab`). */ export class MdcFabIconDirective { constructor() { this._cls = true; } } MdcFabIconDirective.decorators = [ { type: Directive, args: [{ selector: '[mdcFabIcon]' },] } ]; MdcFabIconDirective.propDecorators = { _cls: [{ type: HostBinding, args: ['class.mdc-fab__icon',] }] }; /** * Directive for the label of an extended Floating Action Button * (`mdcFab`). The label may be placed before or after the icon. * It is also possible to only have a label for an extended Floating Action * Button. */ export class MdcFabLabelDirective { constructor() { this._cls = true; } } MdcFabLabelDirective.decorators = [ { type: Directive, args: [{ selector: '[mdcFabLabel]' },] } ]; MdcFabLabelDirective.propDecorators = { _cls: [{ type: HostBinding, args: ['class.mdc-fab__label',] }] }; /** * Material design Floating Action Button. The element should embed * an icon element with the `mdcFabIcon`, or (to make it an extended floating action button) * a label with the `mdcFabLabel` directive. Extended floating actions button may (in addition * to the label) also add an `mdcFabIcon` before or after the label. */ export class MdcFabDirective extends AbstractMdcRipple { constructor(_elm, renderer, registry, doc) { super(_elm, renderer, registry, doc); this._elm = _elm; /** @internal */ this._cls = true; this._mini = false; this._exited = false; this.addRippleSurface('mdc-fab__ripple'); } ngAfterContentInit() { this.initRipple(); } ngOnDestroy() { this.destroyRipple(); } /** * When this input is defined and does not have value false, the FAB will * be modified to a smaller size. */ get mini() { return this._mini; } set mini(val) { this._mini = asBoolean(val); } /** @docs-private */ get extended() { return !!this._label; } /** * Setting this property to true will animate the FAB out of view. * Setting it to false will animate the FAB back into view. */ get exited() { return this._exited; } set exited(val) { this._exited = asBoolean(val); } } MdcFabDirective.decorators = [ { type: Directive, args: [{ selector: '[mdcFab]', providers: [{ provide: AbstractMdcRipple, useExisting: forwardRef(() => MdcFabDirective) }] },] } ]; MdcFabDirective.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 }, { type: MdcEventRegistry }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } ]; MdcFabDirective.propDecorators = { _cls: [{ type: HostBinding, args: ['class.mdc-fab',] }], _label: [{ type: ContentChild, args: [MdcFabLabelDirective,] }], mini: [{ type: HostBinding, args: ['class.mdc-fab--mini',] }, { type: Input }], extended: [{ type: HostBinding, args: ['class.mdc-fab--extended',] }], exited: [{ type: HostBinding, args: ['class.mdc-fab--exited',] }, { type: Input }] }; export const FAB_DIRECTIVES = [ MdcFabIconDirective, MdcFabLabelDirective, MdcFabDirective ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRjLmZhYi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9mYWIvbWRjLmZhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQWEsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BKLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbEU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLG1CQUFtQjtJQUhoQztRQUlpRCxTQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzdELENBQUM7OztZQUxBLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsY0FBYzthQUMzQjs7O21CQUVJLFdBQVcsU0FBQyxxQkFBcUI7O0FBR3RDOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQUhqQztRQUlrRCxTQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzlELENBQUM7OztZQUxBLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsZUFBZTthQUM1Qjs7O21CQUVJLFdBQVcsU0FBQyxzQkFBc0I7O0FBR3ZDOzs7OztHQUtHO0FBS0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsaUJBQWlCO0lBUWxELFlBQW1CLElBQWdCLEVBQUUsUUFBbUIsRUFBRSxRQUEwQixFQUFvQixHQUFRO1FBQzVHLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFlLENBQUMsQ0FBQztRQURsQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBUG5DLGdCQUFnQjtRQUN1QixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBRzNDLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBSXBCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsR0FBWTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBSUQsb0JBQW9CO0lBQ3BCLElBQTRDLFFBQVE7UUFDaEQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxHQUFZO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OztZQXhESixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLFNBQVMsRUFBRSxDQUFDLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQzthQUM3Rjs7O1lBdkNxQyxVQUFVO1lBQWlDLFNBQVM7WUFJakYsZ0JBQWdCOzRDQTRDa0UsTUFBTSxTQUFDLFFBQVE7OzttQkFOckcsV0FBVyxTQUFDLGVBQWU7cUJBRTNCLFlBQVksU0FBQyxvQkFBb0I7bUJBcUJqQyxXQUFXLFNBQUMscUJBQXFCLGNBQUcsS0FBSzt1QkFZekMsV0FBVyxTQUFDLHlCQUF5QjtxQkFRckMsV0FBVyxTQUFDLHVCQUF1QixjQUFHLEtBQUs7O0FBWWhELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxlQUFlO0NBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBSZW5kZXJlcjIsIGZvcndhcmRSZWYsIENvbnRlbnRDaGlsZCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgYXNCb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsdWUudXRpbHMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdE1kY1JpcHBsZSB9IGZyb20gJy4uL3JpcHBsZS9hYnN0cmFjdC5tZGMucmlwcGxlJztcclxuaW1wb3J0IHsgTWRjRXZlbnRSZWdpc3RyeSB9IGZyb20gJy4uLy4uL3V0aWxzL21kYy5ldmVudC5yZWdpc3RyeSc7XHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlIGZvciB0aGUgaWNvbiBvZiBhIEZsb2F0aW5nIEFjdGlvbiBCdXR0b25cclxuICogKGBtZGNGYWJgKS5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbbWRjRmFiSWNvbl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZGNGYWJJY29uRGlyZWN0aXZlIHtcclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MubWRjLWZhYl9faWNvbicpIHJlYWRvbmx5IF9jbHMgPSB0cnVlO1xyXG59XHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlIGZvciB0aGUgbGFiZWwgb2YgYW4gZXh0ZW5kZWQgRmxvYXRpbmcgQWN0aW9uIEJ1dHRvblxyXG4gKiAoYG1kY0ZhYmApLiBUaGUgbGFiZWwgbWF5IGJlIHBsYWNlZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGljb24uXHJcbiAqIEl0IGlzIGFsc28gcG9zc2libGUgdG8gb25seSBoYXZlIGEgbGFiZWwgZm9yIGFuIGV4dGVuZGVkIEZsb2F0aW5nIEFjdGlvblxyXG4gKiBCdXR0b24uXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW21kY0ZhYkxhYmVsXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1kY0ZhYkxhYmVsRGlyZWN0aXZlIHtcclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MubWRjLWZhYl9fbGFiZWwnKSByZWFkb25seSBfY2xzID0gdHJ1ZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hdGVyaWFsIGRlc2lnbiBGbG9hdGluZyBBY3Rpb24gQnV0dG9uLiBUaGUgZWxlbWVudCBzaG91bGQgZW1iZWRcclxuICogYW4gaWNvbiBlbGVtZW50IHdpdGggdGhlIGBtZGNGYWJJY29uYCwgb3IgKHRvIG1ha2UgaXQgYW4gZXh0ZW5kZWQgZmxvYXRpbmcgYWN0aW9uIGJ1dHRvbilcclxuICogYSBsYWJlbCB3aXRoIHRoZSBgbWRjRmFiTGFiZWxgIGRpcmVjdGl2ZS4gRXh0ZW5kZWQgZmxvYXRpbmcgYWN0aW9ucyBidXR0b24gbWF5IChpbiBhZGRpdGlvblxyXG4gKiB0byB0aGUgbGFiZWwpIGFsc28gYWRkIGFuIGBtZGNGYWJJY29uYCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGxhYmVsLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1ttZGNGYWJdJyxcclxuICAgIHByb3ZpZGVyczogW3twcm92aWRlOiBBYnN0cmFjdE1kY1JpcHBsZSwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWRjRmFiRGlyZWN0aXZlKSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWRjRmFiRGlyZWN0aXZlIGV4dGVuZHMgQWJzdHJhY3RNZGNSaXBwbGUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tZGMtZmFiJykgcmVhZG9ubHkgX2NscyA9IHRydWU7XHJcbiAgICAvKiogQGludGVybmFsICovXHJcbiAgICBAQ29udGVudENoaWxkKE1kY0ZhYkxhYmVsRGlyZWN0aXZlKSBfbGFiZWw/OiBNZGNGYWJMYWJlbERpcmVjdGl2ZTtcclxuICAgIHByaXZhdGUgX21pbmkgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX2V4aXRlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBfZWxtOiBFbGVtZW50UmVmLCByZW5kZXJlcjogUmVuZGVyZXIyLCByZWdpc3RyeTogTWRjRXZlbnRSZWdpc3RyeSwgQEluamVjdChET0NVTUVOVCkgZG9jOiBhbnkpIHtcclxuICAgICAgICBzdXBlcihfZWxtLCByZW5kZXJlciwgcmVnaXN0cnksIGRvYyBhcyBEb2N1bWVudCk7XHJcbiAgICAgICAgdGhpcy5hZGRSaXBwbGVTdXJmYWNlKCdtZGMtZmFiX19yaXBwbGUnKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0UmlwcGxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95UmlwcGxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVuIHRoaXMgaW5wdXQgaXMgZGVmaW5lZCBhbmQgZG9lcyBub3QgaGF2ZSB2YWx1ZSBmYWxzZSwgdGhlIEZBQiB3aWxsXHJcbiAgICAgKiBiZSBtb2RpZmllZCB0byBhIHNtYWxsZXIgc2l6ZS5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tZGMtZmFiLS1taW5pJykgQElucHV0KClcclxuICAgIGdldCBtaW5pKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9taW5pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBtaW5pKHZhbDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX21pbmkgPSBhc0Jvb2xlYW4odmFsKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbWluaTogYm9vbGVhbiB8ICcnO1xyXG5cclxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1kYy1mYWItLWV4dGVuZGVkJykgZ2V0IGV4dGVuZGVkKCkge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMuX2xhYmVsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0dGluZyB0aGlzIHByb3BlcnR5IHRvIHRydWUgd2lsbCBhbmltYXRlIHRoZSBGQUIgb3V0IG9mIHZpZXcuXHJcbiAgICAgKiBTZXR0aW5nIGl0IHRvIGZhbHNlIHdpbGwgYW5pbWF0ZSB0aGUgRkFCIGJhY2sgaW50byB2aWV3LlxyXG4gICAgICovXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1kYy1mYWItLWV4aXRlZCcpIEBJbnB1dCgpXHJcbiAgICBnZXQgZXhpdGVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9leGl0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGV4aXRlZCh2YWw6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9leGl0ZWQgPSBhc0Jvb2xlYW4odmFsKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZXhpdGVkOiBib29sZWFuIHwgJyc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBGQUJfRElSRUNUSVZFUyA9IFtcclxuICAgIE1kY0ZhYkljb25EaXJlY3RpdmUsIE1kY0ZhYkxhYmVsRGlyZWN0aXZlLCBNZGNGYWJEaXJlY3RpdmVcclxuXTtcclxuIl19