{"version":3,"file":"primeng-button.umd.js","sources":["../../src/app/components/button/button.ts","../../src/app/components/button/primeng-button.ts"],"sourcesContent":["import {NgModule,Directive,Component,ElementRef,EventEmitter,AfterViewInit,Output,OnDestroy,Input,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, AfterContentInit, TemplateRef, QueryList} from '@angular/core';\nimport {DomHandler} from 'primeng/dom';\nimport {CommonModule} from '@angular/common';\nimport {RippleModule} from 'primeng/ripple'; \nimport {PrimeTemplate} from 'primeng/api'; \n\n@Directive({\n    selector: '[pButton]'\n})\nexport class ButtonDirective implements AfterViewInit, OnDestroy {\n\n    @Input() iconPos: 'left' | 'right' | 'top' | 'bottom' = 'left';\n            \n    @Input() loadingIcon: string = \"pi pi-spinner pi-spin\";\n\n    public _label: string;\n    \n    public _icon: string;\n\n    public _loading: boolean = false;\n            \n    public initialized: boolean;\n    \n    public _initialStyleClass: string;\n\n    constructor(public el: ElementRef) {}\n    \n    ngAfterViewInit() {\n        this._initialStyleClass = this.el.nativeElement.className;\n        DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());\n\n        if (this.icon) {\n            this.createIconEl();\n        }\n        \n        let labelElement = document.createElement(\"span\");\n        if (this.icon && !this.label) {\n            labelElement.setAttribute('aria-hidden', 'true');\n        }\n        labelElement.className = 'p-button-label';\n\n        if (this.label)\n            labelElement.appendChild(document.createTextNode(this.label));\n        else \n            labelElement.innerHTML = '&nbsp;';\n        \n        this.el.nativeElement.appendChild(labelElement);\n        this.initialized = true;\n    }\n        \n    getStyleClass(): string {\n        let styleClass = 'p-button p-component';\n        if (this.icon && !this.label) {\n            styleClass = styleClass + ' p-button-icon-only';\n        }\n\n        if (this.loading) {\n            styleClass = styleClass + ' p-disabled p-button-loading';\n            if (!this.icon && this.label)\n                styleClass = styleClass + ' p-button-loading-label-only';\n        }\n        \n        return styleClass;\n    }\n\n    setStyleClass() {\n        let styleClass = this.getStyleClass();\n        this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;\n    }\n\n    createIconEl() {\n        let iconElement = document.createElement(\"span\");\n        iconElement.className = 'p-button-icon';\n        iconElement.setAttribute(\"aria-hidden\", \"true\");\n        let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;\n        \n        if (iconPosClass) {\n            DomHandler.addClass(iconElement, iconPosClass);\n        }\n\n        DomHandler.addMultipleClasses(iconElement, this.getIconClass());\n        let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label')\n\n        if (labelEl)\n            this.el.nativeElement.insertBefore(iconElement, labelEl);\n        else\n            this.el.nativeElement.appendChild(iconElement)\n    }\n\n    getIconClass() {\n        return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;\n    }\n\n    setIconClass() {\n        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n        if (iconElement) {\n            if (this.iconPos) \n                iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();\n            else \n                iconElement.className = 'p-button-icon ' + this.getIconClass();\n        }\n        else {\n            this.createIconEl();\n        }\n    }\n\n    removeIconElement() {\n        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n        this.el.nativeElement.removeChild(iconElement)\n    }\n    \n    @Input() get label(): string {\n        return this._label;\n    }\n\n    set label(val: string) {\n        this._label = val;\n        \n        if (this.initialized) {\n            DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || '&nbsp;';\n            this.setStyleClass();\n        }\n    }\n    \n    @Input() get icon(): string {\n        return this._icon;\n    }\n\n    set icon(val: string) {\n        this._icon = val;\n        \n        if (this.initialized) {\n            this.setIconClass();\n            this.setStyleClass();\n        }\n    }\n\n    @Input() get loading(): boolean {\n        return this._loading;\n    }\n\n    set loading(val: boolean) {\n        this._loading = val;\n        \n        if (this.initialized) {\n            if (this.loading || this.icon)\n                this.setIconClass();\n            else \n                this.removeIconElement();\n            \n            this.setStyleClass();\n        }\n    }\n    \n    ngOnDestroy() {\n        this.initialized = false;\n    }\n}\n\n@Component({\n    selector: 'p-button',\n    template: `\n        <button [attr.type]=\"type\" [class]=\"styleClass\" [ngStyle]=\"style\" [disabled]=\"disabled || loading\"\n            [ngClass]=\"{'p-button p-component':true,\n                        'p-button-icon-only': (icon && !label),\n                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,\n                        'p-disabled': this.disabled || this.loading,\n                        'p-button-loading': this.loading,\n                        'p-button-loading-label-only': this.loading && !this.icon && this.label}\"\n                        (click)=\"onClick.emit($event)\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" pRipple>\n            <ng-content></ng-content>\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            <span [ngClass]=\"{'p-button-icon': true,\n                        'p-button-icon-left': iconPos === 'left' && label,\n                        'p-button-icon-right': iconPos === 'right' && label,\n                        'p-button-icon-top': iconPos === 'top' && label,\n                        'p-button-icon-bottom': iconPos === 'bottom' && label}\"\n                        [class]=\"loading ? 'p-button-loading-icon ' + loadingIcon : icon\" *ngIf=\"!contentTemplate && (icon||loading)\" [attr.aria-hidden]=\"true\"></span>\n            <span class=\"p-button-label\" [attr.aria-hidden]=\"icon && !label\" *ngIf=\"!contentTemplate\">{{label||'&nbsp;'}}</span>\n            <span [ngClass]=\"badgeStyleClass()\" [class]=\"badgeClass\" *ngIf=\"!contentTemplate && badge\">{{badge}}</span>\n        </button>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class Button implements AfterContentInit {\n\n    @Input() type: string = \"button\";\n\n    @Input() iconPos: string = 'left';\n\n    @Input() icon: string;\n\n    @Input() badge: string;\n\n    @Input() label: string;\n\n    @Input() disabled: boolean;\n\n    @Input() loading: boolean = false;\n\n    @Input() loadingIcon: string = \"pi pi-spinner pi-spin\";\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() badgeClass: string;\n\n    contentTemplate: TemplateRef<any>;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n                \n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    badgeStyleClass() {\n        return {\n            'p-badge p-component': true,\n            'p-badge-no-gutter': this.badge && String(this.badge).length === 1\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [ButtonDirective,Button],\n    declarations: [ButtonDirective,Button]\n})\nexport class ButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["DomHandler","Directive","Input","EventEmitter","PrimeTemplate","Component","ChangeDetectionStrategy","ViewEncapsulation","ContentChildren","Output","CommonModule","RippleModule","NgModule"],"mappings":"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"}